На вкладке Главное размещается Предмет задания, указывается Задача и расшифровка задачи.
История выполнения
+
На вкладке История выполнения можно просмотреть информацию о работе исполнителя над задачей (заполняется автоматически).
+
Если задача выполнена или отменена, такую задачу уже невозможно изменить. Обратите внимание, что поле История выполнения заполняется программой автоматически и защищено от редактирования.
Важность
+
Принимает значения Обычная (по умолчанию), Низкая, Высокая.
+
Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выберите соответствующее значение этого поля.
Дата начала выполнения
+
В поле Дата начала можно проставить дату и время, когда задание начало выполняться. Для того чтобы это поле было доступно, в разделе Администрирование - Органайзер необходимо установить флажок Дата начала задач. По данному полю можно будет затем сортировать задачи в списках.
Принятие к исполнению
+
+
Задача, непринятая к исполнению, в списках выделяется жирным шрифтом. Выполните соответствующую команду меню Еще (Все действия), для того чтобы Принять к исполнению задачу. После этого задача исчезает из списков задач других исполнителей, назначенных на ту же роль.
+
+
С помощью соответствующей команды меню Еще (Все действия) можно Отменить принятие к исполнению.
Выполнение задания
+
Задачи могут быть без проверки выполнения. В этом случае проверяющим является сам исполнитель.
+
В поле Результат выполнения задания напишите комментарий о выполнении задания.
+
Подтвердите выполнение (нажав кнопку Выполнено),
+
После этого заполняется дата выполнения, задача закрывается и становится защищенной от редактирования.
Невыполнение
+
В поле Результат выполнения задания напишите причину невыполнения задания.
+
Нажмите кнопку Отменено, что означает невыполнение задачи.
+
После нажатия кнопки заполняется Дата отказа от выполнения, задача закрывается и становится защищенной от редактирования.
Отправка другому исполнителю
+
Задачу можно Перенаправить другому исполнителю с помощью соответствующей кнопки.
+
Для того чтобы использовать подчиненные бизнес-процессы, в разделе Администрирование - Органайзер необходимо установить соответствующий флажок.
+
+
Часто бизнес-процессы создаются не сами по себе, а в рамках продолжения задач других бизнес-процессов. Например, директор поручает руководителям подразделений подготовить ежегодный план-отчет. Руководители на основании этой задачи дают поручения своим исполнителям. Исполнители начинают работать, формировать отчеты, отправлять их на согласование и т.д. Таким образом, от первого поручения директора вырастает целая иерархия бизнес-процессов и задач.
+
+
Для того чтобы запустить один бизнес-процесс на основании другого, в задаче родительского бизнес-процесса выполните команду Создать на основании, из списка выберите вид бизнес-процесса, например, Задание. Заполните необходимые поля.
Напоминание
+
+
Для того чтобы не забыть выполнить задачу, нажмите Напомнить, заполните необходимые поля. В указанный момент времени программа выведет напоминание на экран.
Изменение задания
+
С помощью ссылки Изменить задание можно открыть задание и переработать его (при наличии соответствующих прав). В этом случае задание снова будет направлено исполнителю.
Дополнительные сведения о задаче
+
+
Для просмотра дополнительной информации о задаче выполните команду Еще (Все действия) - Дополнительно.
На вкладке Главное размещается Предмет задания, указывается Задача и расшифровка задачи.
История выполнения
+
На вкладке История выполнения можно просмотреть информацию о работе исполнителя над задачей (заполняется автоматически).
+
Если задача выполнена или отменена, такую задачу уже невозможно изменить. Обратите внимание, что поле История выполнения заполнилось программой автоматически и защищено от редактирования.
Важность
+
Принимает значения Обычная (по умолчанию), Низкая, Высокая.
+
Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выберите соответствующие значения этого поля.
Дата начала выполнения
+
В поле Дата начала можно проставить дату и время, когда задание начало выполняться. Для того чтобы это поле было доступно, в разделе Администрирование - Органайзер необходимо установить флажок Дата начала задач. По данному полю можно будет затем сортировать задачи в списках.
Принятие к исполнению
+
+
Задача, непринятая к исполнению, в списках выделяется жирным шрифтом. Выполните соответствующую команду меню Еще (Все действия), для того чтобы Принять к исполнению задачу. После этого задача исчезает из списков задач других исполнителей, назначенных на ту же роль.
+
+
С помощью соответствующей команды меню Еще (Все действия) можно Отменить принятие к исполнению.
Проверка выполнения
+
В поле Результат проверки задания напишите комментарий о выполнении задачи.
+
Подтвердите выполнение (нажав кнопку Выполнено),
+
После этого заполняется Дата выполнения, задача закрывается и становится защищенной от редактирования.
Невыполнение
+
В поле Результат проверки задания напишите причину невыполнения задания.
+
Нажмите кнопку Отменено, что означает невыполнение задания.
+
После нажатия кнопки заполняется дата отказа от выполнения, задача закрывается и становится защищенной от редактирования.
Возвращение исполнителю на доработку
+
+
В поле Результат проверки укажите причину, по которой задача возвращается на доработку.
+
+
Нажмите Возвращено исполнителю. После этого задача вернется в список задач исполнителя.
Создание подчиненного бизнес-процесса
+
+
Для того чтобы использовать подчиненные бизнес-процессы, в разделе Администрирование - Органайзер необходимо установить соответствующий флажок.
+
+
Часто бизнес-процессы создаются не сами по себе, а в рамках продолжения задач других бизнес-процессов. Например, директор поручает руководителям подразделений подготовить ежегодный план-отчет. Руководители на основании этой задачи дают поручения своим исполнителям. Исполнители начинают работать, формировать отчеты, отправлять их на согласование и т.д. Таким образом, от первого поручения директора вырастает целая иерархия бизнес-процессов и задач.
+
+
Для того чтобы запустить один бизнес-процесс на сновании другого, в задаче родительского бизнес-процесса выполните команду Создать на основании, из списка выберите вид бизнес-процесса, например, Задание. Заполните необходимые поля.
Напоминание
+
+
Для того чтобы не забыть выполнить задачу, нажмите Напомнить, заполните необходимые поля. В указанный момент времени программа выведет напоминание на экран.
Отправка другому исполнителю
+
Задачу можно Перенаправить другому исполнителю с помощью соответствующей кнопки.
+
С помощью ссылки Изменить задание можно открыть задание и переработать его (при наличии соответствующих прав). В этом случае задание снова будет направлено исполнителю.
Дополнительные сведения о задаче
+
+
Для просмотра дополнительной информации о задаче выполните команду Еще (Все действия) - Дополнительно.
\ No newline at end of file
diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form
index a0bb3875c..33c3ca88a 100644
--- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form
+++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form
@@ -93,7 +93,7 @@
UsualGroupAuto
- StrongSeparation
+ NormalSeparationtruetrueAuto
@@ -922,7 +922,7 @@
UsualGroupAuto
- StrongSeparation
+ NormalSeparationtruetrueauto
diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Help/ru.html b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Help/ru.html
new file mode 100644
index 000000000..be9971cc0
--- /dev/null
+++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Help/ru.html
@@ -0,0 +1,31 @@
+
+
Предназначено для постановки и проверки выполнения произвольных задач.
+
Можно запустить из документа программы по команде Создать на основании (из бизнес-процесса также, при соответствующих настройках - такое задание станет подчиненным бизнес-процессом). Также можно начать новый бизнес-процессЗадание по команде Создать в списке Задания.
+
Сведения о задании
+
Главная задача - заполняется программой автоматически, если бизнес-процесс является подчиненным. По ссылке в этом поле можно просмотреть данные о главном бизнес-процессе.
+
Задание - напишите заголовок задания, который будет показан в списках бизнес-процессов. Поле является обязательным для заполнения.
+
Важность - принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выберите соответствующее значение этого поля.
+
Исполнитель - выберите исполнителя из списка пользователей программы или из списка исполнителей. Поля является обязательным для заполнения.
+
Срок - укажите дату и время, когда нужно выполнить задание.
+
Предмет - автоматически проставляется документ программы, на основании которого создано задание.
+
В текстовом поле ниже можно при необходимости более подробно объяснить суть задания. Недоступно для подчиненных бизнес-процессов.
+
+
Включите флажок Проверить выполнение (по умолчанию включен), для того чтобы:
+
+
назначить проверяющего из списка пользователей;
+
+
ввести Срок - дату и время, до которого надо проверить выполнение задания. Если срок не заполнен, то проверка не производится.
+
Автор - автоматически проставляется программой текущий пользователь. Автора можно назначить из списка Пользователи.
+
+
Начато - дата ввода задания. Заполняется программой автоматически. Поле не подлежит редактированию.
Старт бизнес-процесса
+
После того как задание заполнено, нажмите кнопку Стартовать и закрыть, для того чтобы сохранить Задание, начать бизнес-процесс и вернуться в программу.
+
Для того чтобы начать бизнес-процесс, можно также воспользоваться командой Старт. В этом случае программа сохранит задание, начнет бизнес-процесс, но задание останется открытым.
+
Программа автоматически формирует задачи, из которых состоит бизнес-процесс Задание:
+
после выполнения этой задачи в зависимости от настроек задание становится выполненным или формируется задача проверка выполнения.
Для того чтобы записать черновик задания, но не стартовать его, нажмите Записать. Такое задание можно дозаполнить и стартовать позднее, в более подходящий момент времени из списка заданий или открыв задание.
Управление движением бизнес-процесса
+
Для того чтобы Остановить или Продолжить бизнес-процесс, воспользуйтесь соответствующими командами (активна одна из команд). Остановленный бизнес-процесс в списке выделяется значком .
Просмотр карты маршрута
+
Выполните команду Еще (Все действия) - Карта маршрута, для того чтобы посмотреть бизнес-процесс в наглядной форме.
+
Карта маршрута описывает логику бизнес-процесса и весь его жизненный цикл в виде схематического изображения - последовательности прохождения точек маршрута.
Просмотр задач
+
Для того чтобы просмотреть задачи, из которых состоит данный бизнес-процесс, выполните команду Задачи в панели навигации. Если задание не стартовано, то список задач пустой.
Предназначен для управления бизнес-процессами Задание.
+
Этот бизнес-процесс состоит из двух шагов - исполнение и проверка, при этом проверяющий может вернуть задачу на доработку.
+
Формируемые программой по бизнес-процессу Заданиезадачи на исполнение и на проверку адресуются исполнителю не только явно, с использованием персональной адресации, но и с помощью ролевой адресации.
+
Открывается по команде Задания в разделе Бизнес-процессы и задачи.
+
В списке выводится:
+
- важность, принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выбираются соответствующие значения этого поля.
+
- остановленные бизнес-процессы в этой колонке обозначаются значком . Для того чтобы Остановить или Продолжить бизнес-процесс, воспользуйтесь соответствующими кнопками.
+
Номер - номер проставляется программой автоматически, рядом с номером проставляется значок , обозначающий вид бизнес-процесса Задание. Если бизнес-процесс не стартован, значок будет неактивным (серым).
+
Дата - дата и время создания бизнес-процесса Задание.
+
Задание - полное наименование.
+
Срок исполнения - дата и время, к которому Задание должно быть выполнено.
+
Завершено - дата и время выполнения.
Отборы
+
Программа автоматически отбирает задания по полю Автор для текущего пользователя. Можно отобрать задания по любому Автору, для этого выберите его из списка пользователей.
+
Для отбора по полю Исполнитель также можно выбрать нужного из списка пользователей, в случае ролевой адресации становится доступным список исполнителей роли.
Просмотр всех заданий
+
Установите соответствующие флажки, для того чтобы Показывать завершенные и остановленные задания. По умолчанию флажки сняты.
ru
- Группа зависимый курс валют
+ Группа способ установки курса правая колонкаru
- Группа зависимый курс валют
+ Группа способ установки курса правая колонка
- ГруппаЗависимыйКурсВалютExtendedTooltip
- 79
+ ГруппаСпособУстановкиКурсаПраваяКолонкаРасширеннаяПодсказка
+ 109Labeltruetrue
@@ -365,16 +582,15 @@
ru
- Прочее
+ Группа способ установки курсаru
- Прочее
+ Группа способ установки курса
- true
- ПрочееExtendedTooltip
- 77
+ ГруппаСпособУстановкиКурсаРасширеннаяПодсказка
+ 107Labeltruetrue
@@ -384,9 +600,7 @@
UsualGroup
- VerticalAuto
- WeakSeparationtruetrueAuto
@@ -426,7 +640,7 @@
ГруппаСуммаПрописью37
- ГруппаПрописанийЦелойЧасти
+ СклонениеЦелойЧасти9ПолеПрописи4наРусском
@@ -684,8 +898,12 @@
ruЦелая часть
+
+ ru
+ Склонение целой части
+
- ГруппаПрописанийЦелойЧастиExtendedTooltip
+ СклонениеЦелойЧастиРасширеннаяПодсказка84Labeltrue
@@ -713,7 +931,7 @@
ГруппаПараметрыДробнойЧасти55
- ГруппаПрописанийДробнойЧасти
+ СклонениеДробнойЧасти14ПолеПрописи8наРусском
@@ -971,8 +1189,12 @@
ruДробная часть
+
+ ru
+ Склонение дробной части
+
- ГруппаПрописанийДробнойЧастиExtendedTooltip
+ СклонениеДробнойЧастиРасширеннаяПодсказка90Labeltrue
@@ -1691,10 +1913,6 @@
OnReadAtServerПриЧтенииНаСервере
-
- BeforeWrite
- ПередЗаписью
- BeforeWriteAtServerПередЗаписьюНаСервере
diff --git a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html
index 628515bfb..17c1aa730 100644
--- a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Описание свойств используемой валюты.
Валюта широко используется в деятельности любого предприятия: во всех документах, которые имеют дело с денежными суммами (счета, платежные поручения, договоры, накладные) присутствует поле Валюта, явно или по умолчанию. Значение поля Валюта заполняется в зависимости от направления деятельности предприятия: рубль, иностранная валюта или у.е.
Для перевода валютных сумм в рубли используется курс валюты.
Список предназначен для ведения валют, используемых в программе. Необходимые для работы валюты можно подобрать из Общероссийского классификатора валют - ОКВ (рекомендуется) или добавить вручную.
Открыть список валют можно из раздела Нормативно-справочная информация.
В списке выводится:
diff --git a/SSL/src/Catalogs/Валюты/ManagerModule.bsl b/SSL/src/Catalogs/Валюты/ManagerModule.bsl
index 2454728b7..a47b346f0 100644
--- a/SSL/src/Catalogs/Валюты/ManagerModule.bsl
+++ b/SSL/src/Catalogs/Валюты/ManagerModule.bsl
@@ -6,18 +6,29 @@
// Групповое изменение объектов
// Возвращает список реквизитов, которые не нужно редактировать
-// с помощью обработки группового изменения объектов
+// с помощью обработки группового изменения объектов.
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
- Результат.Добавить("ЗагружаетсяИзИнтернета");
+ Результат.Добавить("СпособУстановкиКурса");
Результат.Добавить("Наценка");
Результат.Добавить("ОсновнаяВалюта");
+ Результат.Добавить("ФормулаРасчетаКурса");
Возврат Результат;
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Т.к. справочник реализует свой метод обновления данных.
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
#КонецОбласти
#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Валюты/ObjectModule.bsl b/SSL/src/Catalogs/Валюты/ObjectModule.bsl
index 0a1693302..8b297c4ad 100644
--- a/SSL/src/Catalogs/Валюты/ObjectModule.bsl
+++ b/SSL/src/Catalogs/Валюты/ObjectModule.bsl
@@ -4,27 +4,28 @@
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
- Если ЗагружаетсяИзИнтернета И ЗначениеЗаполнено(ОсновнаяВалюта) Тогда
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
- НСтр("ru = 'Зависимая валюта не может быть загружена с сайта РБК'"));
- Отказ = Истина;
- КонецЕсли;
-
Если ЗначениеЗаполнено(ОсновнаяВалюта.ОсновнаяВалюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Основная валюта не может быть зависимой.'"));
Отказ = Истина;
КонецЕсли;
- Если НЕ ЗначениеЗаполнено(ОсновнаяВалюта) Тогда
+ Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда
ИсключаемыеРеквизиты = Новый Массив;
+ ИсключаемыеРеквизиты.Добавить("ОсновнаяВалюта");
ИсключаемыеРеквизиты.Добавить("Наценка");
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ИсключаемыеРеквизиты);
КонецЕсли;
-
- Если НЕ ЭтоНовый()
- И РаботаСКурсамиВалют.ПолучитьСписокЗависимыхВалют(Ссылка).Количество() > 0
- И ЗначениеЗаполнено(ОсновнаяВалюта) Тогда
+
+ Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда
+ ИсключаемыеРеквизиты = Новый Массив;
+ ИсключаемыеРеквизиты.Добавить("ФормулаРасчетаКурса");
+ ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, ИсключаемыеРеквизиты);
+ КонецЕсли;
+
+ Если Не ЭтоНовый()
+ И СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты
+ И РаботаСКурсамиВалют.ПолучитьСписокЗависимыхВалют(Ссылка).Количество() > 0 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Валюта не может быть подчиненной, так как она является основной для других валют.'"));
Отказ = Истина;
@@ -40,12 +41,12 @@
РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(Ссылка);
- Если ЗначениеЗаполнено(ОсновнаяВалюта) Тогда
- РаботаСКурсамиВалют.ЗаписатьСведенияДляПодчиненногоРегистра(ОсновнаяВалюта, Ссылка);
- КонецЕсли;
-
Если ДополнительныеСвойства.Свойство("ОбновитьКурсы") Тогда
- РаботаСКурсамиВалют.ПриОбновленииКурсовВалютВМоделиСервиса(ЭтотОбъект);
+ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
+ РаботаСКурсамиВалют.ПриОбновленииКурсовВалютВМоделиСервиса(ЭтотОбъект);
+ Иначе
+ ОбновитьКурсВалюты(ЭтотОбъект);
+ КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -56,12 +57,106 @@
Возврат;
КонецЕсли;
- Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
- Если Ссылка.Пустая() Или Ссылка.Код <> Код Или Ссылка.ЗагружаетсяИзИнтернета <> ЗагружаетсяИзИнтернета Тогда
+ Если ЭтоНовый() Тогда
+ ДополнительныеСвойства.Вставить("ОбновитьКурсы");
+ Иначе
+ ПредыдущиеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Код,СпособУстановкиКурса,ОсновнаяВалюта,Наценка,ФормулаРасчетаКурса");
+ Если (ПредыдущиеЗначения.СпособУстановкиКурса <> СпособУстановкиКурса)
+ Или (СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета
+ И ПредыдущиеЗначения.Код <> Код)
+ Или (СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты
+ И (ПредыдущиеЗначения.ОсновнаяВалюта <> ОсновнаяВалюта Или ПредыдущиеЗначения.Наценка <> Наценка))
+ Или (СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле
+ И ПредыдущиеЗначения.ФормулаРасчетаКурса <> ФормулаРасчетаКурса) Тогда
ДополнительныеСвойства.Вставить("ОбновитьКурсы");
КонецЕсли;
КонецЕсли;
+ Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда
+ ОсновнаяВалюта = Справочники.Валюты.ПустаяСсылка();
+ Наценка = 0;
+ КонецЕсли;
+
+ Если СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда
+ ФормулаРасчетаКурса = "";
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Процедура ОбновитьКурсВалюты(ПодчиненнаяВалюта)
+
+ Если СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | КурсыВалют.Период,
+ | КурсыВалют.Валюта,
+ | КурсыВалют.Курс,
+ | КурсыВалют.Кратность
+ |ИЗ
+ | РегистрСведений.КурсыВалют КАК КурсыВалют
+ |ГДЕ
+ | КурсыВалют.Валюта = &ВалютаИсточник";
+ Запрос.УстановитьПараметр("ВалютаИсточник", ПодчиненнаяВалюта.ОсновнаяВалюта);
+
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
+ НаборЗаписей.Отбор.Валюта.Установить(ПодчиненнаяВалюта.Ссылка);
+
+ Наценка = ПодчиненнаяВалюта.Наценка;
+
+ Пока Выборка.Следующий() Цикл
+
+ НоваяЗаписьНабораКурсов = НаборЗаписей.Добавить();
+ НоваяЗаписьНабораКурсов.Валюта = ПодчиненнаяВалюта.Ссылка;
+ НоваяЗаписьНабораКурсов.Кратность = Выборка.Кратность;
+ НоваяЗаписьНабораКурсов.Курс = Выборка.Курс + Выборка.Курс * Наценка / 100;
+ НоваяЗаписьНабораКурсов.Период = Выборка.Период;
+
+ КонецЦикла;
+
+ НаборЗаписей.ДополнительныеСвойства.Вставить("ОтключитьКонтрольПодчиненныхВалют", Истина);
+ НаборЗаписей.Записать();
+
+ ИначеЕсли СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда
+
+ // Получить основные валюты для ПодчиненнаяВалюта
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | Валюты.Ссылка КАК Ссылка
+ |ИЗ
+ | Справочник.Валюты КАК Валюты
+ |ГДЕ
+ | &ФормулаРасчетаКурса ПОДОБНО ""%"" + Валюты.Наименование + ""%""";
+
+ Запрос.УстановитьПараметр("ФормулаРасчетаКурса", ПодчиненнаяВалюта.ФормулаРасчетаКурса);
+ ОсновныеВалюты = Запрос.Выполнить().Выгрузить();
+
+ Если ОсновныеВалюты.Количество() = 0 Тогда
+ ТекстОшибки = НСтр("ru = 'В формуле должна быть использована хотя бы одна основная валюта.'");
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "Объект.ФормулаРасчетаКурса");
+ ВызватьИсключение ТекстОшибки;
+ КонецЕсли;
+
+ ОбновленныеПериоды = Новый Соответствие; // кеш для однократного пересчета курса за один и тот же период
+ // Перезаписать курсы основных валют для обновления курса валюты ПодчиненнаяВалюта
+ Для каждого ЗаписьОсновнойВалюты Из ОсновныеВалюты Цикл
+ НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
+ НаборЗаписей.Отбор.Валюта.Установить(ЗаписьОсновнойВалюты.Ссылка);
+ НаборЗаписей.Прочитать();
+ НаборЗаписей.ДополнительныеСвойства.Вставить("ОбновитьКурсЗависимойВалюты", ПодчиненнаяВалюта.Ссылка);
+ НаборЗаписей.ДополнительныеСвойства.Вставить("ОбновленныеПериоды", ОбновленныеПериоды);
+ НаборЗаписей.Записать();
+ КонецЦикла
+
+ КонецЕсли;
+
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Catalogs/Валюты/Валюты.mdo b/SSL/src/Catalogs/Валюты/Валюты.mdo
index beb89ec70..9d2b4f5c7 100644
--- a/SSL/src/Catalogs/Валюты/Валюты.mdo
+++ b/SSL/src/Catalogs/Валюты/Валюты.mdo
@@ -112,6 +112,7 @@
DontUse
+ trueru
@@ -225,6 +226,7 @@
+ ShowErrorDontUseUse
@@ -256,6 +258,50 @@
UseUse
+
+ ФормулаРасчетаКурса
+
+ ru
+ Формула расчета курса
+
+
+ String
+
+ 100
+
+
+
+ ru
+ Курсы других валют в формуле обозначаются их символьными кодами. Пример:
+(0,55 * USD + 0,45 * EUR) / 2
+
+
+
+ ShowError
+
+ Use
+ Use
+
+
+ СпособУстановкиКурса
+
+ ru
+ Способ установки курса
+
+
+ EnumRef.СпособыУстановкиКурсаВалюты
+
+
+ ru
+ Определяет используемый способ установки курса валюты.
+
+
+
+ ShowError
+
+ Use
+ Use
+ ПодборВалютИзКлассификатора
diff --git a/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Form.form
index b0e683ec4..db8585c86 100644
--- a/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Form.form
+++ b/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Form.form
@@ -1,5 +1,39 @@
+
+ ГруппаПользовательскихНастроек
+ 14
+ true
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 15
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ Список1
@@ -129,10 +163,10 @@
СписокСтрокаПоиска
- 14
+ 16СписокСтрокаПоискаРасширеннаяПодсказка
- 16
+ 18Labeltruetrue
@@ -142,7 +176,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 15
+ 17trueСписок
@@ -152,10 +186,10 @@
СписокСостояниеПросмотра
- 17
+ 19СписокСостояниеПросмотраРасширеннаяПодсказка
- 19
+ 21Labeltruetrue
@@ -165,7 +199,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 18
+ 20trueViewStatusAddition
@@ -176,10 +210,10 @@
СписокУправлениеПоиском
- 20
+ 22СписокУправлениеПоискомРасширеннаяПодсказка
- 22
+ 24Labeltruetrue
@@ -189,7 +223,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 21
+ 23trueSearchControlAddition
@@ -249,6 +283,7 @@
truetrue
+ ГруппаПользовательскихНастроек
diff --git a/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаСписка/Form.form
index 202cfc8f0..17155174e 100644
--- a/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаСписка/Form.form
@@ -1,5 +1,40 @@
+
+ ГруппаПользовательскихНастроек
+ 17
+ true
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 18
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ auto
+ Auto
+ Auto
+
+ Список1
@@ -165,10 +200,10 @@
СписокСтрокаПоиска
- 17
+ 19СписокСтрокаПоискаРасширеннаяПодсказка
- 19
+ 21Labeltruetrue
@@ -178,7 +213,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 18
+ 20trueСписок
@@ -188,10 +223,10 @@
СписокСостояниеПросмотра
- 20
+ 22СписокСостояниеПросмотраРасширеннаяПодсказка
- 22
+ 24Labeltruetrue
@@ -201,7 +236,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 21
+ 23trueViewStatusAddition
@@ -212,10 +247,10 @@
СписокУправлениеПоиском
- 23
+ 25СписокУправлениеПоискомРасширеннаяПодсказка
- 25
+ 27Labeltruetrue
@@ -225,7 +260,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 24
+ 26trueSearchControlAddition
@@ -284,6 +319,7 @@
truetrue
+ ГруппаПользовательскихНастроек
diff --git a/SSL/src/Catalogs/ВариантыОтветовАнкет/Help/ru.html b/SSL/src/Catalogs/ВариантыОтветовАнкет/Help/ru.html
index 09ed12578..bb402cec8 100644
--- a/SSL/src/Catalogs/ВариантыОтветовАнкет/Help/ru.html
+++ b/SSL/src/Catalogs/ВариантыОтветовАнкет/Help/ru.html
@@ -1,9 +1,9 @@
-
-
Ведение списка вариантов ответов анкет
-
Существуют вопросы анкеты с ответами типа Выбор одного варианта ответа из предложенных или Выбор нескольких вариантов ответа из предложенных. В этих случаях ответ респондента сводится к выбору одного или нескольких вариантов ответа из списка с помощью переключателей.
-
Возможные варианты ответов составитель может задать в списке.
-
Как ввести вариант ответа на вопрос
-
Введите один из вариантов ответа в поле Наименование.
-
См. также:
+
+
Ведение списка вариантов ответов на вопросы типов Выбор одного или нескольких вариантов ответа из предложенных.
+
Существуют вопросы анкеты типа Выбор одного варианта ответа из предложенных или Выбор нескольких вариантов ответа из предложенных. В этих случаях ответ респондента сводится к выбору одного или нескольких вариантов ответа из списка с помощью переключателей.
Введите один из вариантов ответа в поле Наименование. Поле является обязательным.
+
Если у варианта ответа на вопрос типа Выбор нескольких вариантов ответа из предложенных установить флажок Требует открытого ответа, то респонденту будет предложено дать развернутый ответ в текстовом поле рядом с вариантом ответа, прокомментировав таким образом свой выбор.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl
index 046281383..3e5ee2c5d 100644
--- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl
@@ -1,14 +1,5 @@
-
#Область ОбработчикиСобытийФормы
-&НаСервере
-Процедура ПриЧтенииНаСервере(ТекущийОбъект)
-
- // Перезаполнение реквизитов, связанных с предопределенным объектом после записи.
- ПрочитатьСвойстваПредопределенного(Ложь);
-
-КонецПроцедуры
-
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
@@ -18,6 +9,12 @@
ОшибкаОткрытия = НСтр("ru = 'Новый вариант отчета можно создать только из формы отчета'");
Возврат;
КонецЕсли;
+ Параметры.Свойство("ОткрытьФормуДополнительногоОтчетаПриОткрытии", ОткрытьФормуДополнительногоОтчетаПриОткрытии);
+ Если ОткрытьФормуДополнительногоОтчетаПриОткрытии Тогда
+ Возврат;
+ КонецЕсли;
+
+ Доступен = ?(Объект.ТолькоДляАвтора, "1", "2");
// Чтение свойств предопределенного;
// Заполнение реквизитов, связанных с предопределенным объектом при открытии.
@@ -26,7 +23,6 @@
ПолныеПраваНаВарианты = ВариантыОтчетов.ПолныеПраваНаВарианты();
Если Объект.ПометкаУдаления Тогда
- Элементы.ВидимостьПоУмолчанию.ТолькоПросмотр = Истина;
Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина;
КонецЕсли;
@@ -39,7 +35,6 @@
ЭтоВнешний = (Объект.ТипОтчета = Перечисления.ТипыОтчетов.Внешний);
Если ЭтоВнешний Тогда
- Элементы.ВидимостьПоУмолчанию.ТолькоПросмотр = Истина;
Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина;
КонецЕсли;
@@ -56,13 +51,21 @@
ИмяОтчета = Объект.Отчет;
КонецЕсли;
- ПерезаполнитьДерево();
+ ПерезаполнитьДерево(Ложь);
ВариантыОтчетов.ДеревоПодсистемДобавитьУсловноеОформление(ЭтотОбъект);
+КонецПроцедуры
+
+&НаСервере
+Процедура ПриЧтенииНаСервере(ТекущийОбъект) // Перезаполнение реквизитов, автоматически очищаемых после записи объекта.
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+ Если ОткрытьФормуДополнительногоОтчетаПриОткрытии Тогда
+ Возврат;
+ КонецЕсли;
- Доступен = ?(Объект.ТолькоДляАвтора, "1", "2");
-
- ВидимостьДоступность(ЭтотОбъект);
+ ПрочитатьСвойстваПредопределенного(Ложь);
КонецПроцедуры
@@ -76,13 +79,21 @@
КонецЕсли;
ПоказатьПредупреждение(, ОшибкаОткрытия);
+ ИначеЕсли ОткрытьФормуДополнительногоОтчетаПриОткрытии Тогда
+ Отказ = Истина;
+
+ ПараметрыОткрытия = Новый Структура;
+ ПараметрыОткрытия.Вставить("Вариант", Объект.Ссылка);
+ ПараметрыОткрытия.Вставить("Отчет", Объект.Отчет);
+ ПараметрыОткрытия.Вставить("КлючВарианта", Объект.КлючВарианта);
+ ВариантыОтчетовКлиент.ОткрытьВариантДополнительногоОтчета(ПараметрыОткрытия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
- Если ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта() Тогда
- ПерезаполнитьДерево();
+ Если Источник <> ЭтотОбъект И ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта() Тогда
+ ПерезаполнитьДерево(Истина);
Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистем.ПолучитьЭлементы()[0].ПолучитьИдентификатор(), Истина);
КонецЕсли;
КонецПроцедуры
@@ -91,10 +102,6 @@
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// Запись свойств, связанных с предопределенным вариантом отчета.
Если ТипЗнч(СвойстваПредопределенного) = Тип("ФиксированнаяСтруктура") Тогда
- Если Объект.ВидимостьПоУмолчанию <> СвойстваПредопределенного.ВидимостьПоУмолчанию Тогда
- Объект.ВидимостьПоУмолчаниюПереопределена = Истина;
- КонецЕсли;
-
Если Не ПустаяСтрока(Объект.Описание) И НРег(СокрЛП(Объект.Описание)) = НРег(СокрЛП(СвойстваПредопределенного.Описание)) Тогда
Объект.Описание = "";
КонецЕсли;
@@ -106,14 +113,14 @@
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
- ВидимостьДоступность(ЭтотОбъект);
+ ПерезаполнитьДерево(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
- ПараметрОповещения = Новый Структура("Ссылка, Наименование, Автор, Описание, ВидимостьПоУмолчанию");
+ ПараметрОповещения = Новый Структура("Ссылка, Наименование, Автор, Описание");//, ВидимостьПоУмолчанию");
ЗаполнитьЗначенияСвойств(ПараметрОповещения, Объект);
- Оповестить(ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта(), ПараметрОповещения, ИмяФормы);
+ Оповестить(ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта(), ПараметрОповещения, ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
@@ -129,12 +136,6 @@
&НаКлиенте
Процедура ДоступенПриИзменении(Элемент)
Объект.ТолькоДляАвтора = (ЭтотОбъект.Доступен = "1");
- ВидимостьДоступность(ЭтотОбъект, "ТолькоДляАвтора");
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ВидимостьПоУмолчаниюПриИзменении(Элемент)
- Объект.ВидимостьПоУмолчаниюПереопределена = Не Объект.ВидимостьПоУмолчаниюПереопределена;
КонецПроцедуры
#КонецОбласти
@@ -155,32 +156,11 @@
#Область СлужебныеПроцедурыИФункции
-&НаКлиентеНаСервереБезКонтекста
-Процедура ВидимостьДоступность(Форма, Изменения = "")
- Объект = Форма.Объект;
- Элементы = Форма.Элементы;
-
- Если Изменения = "" Тогда
- Если Объект.КлючВарианта = "" Тогда
- ПредставлениеТипа = НСтр("ru = 'Отчет'");
- Иначе
- ПредставлениеТипа = НСтр("ru = 'Вариант отчета'");
- КонецЕсли;
- Форма.Заголовок = Объект.Наименование + " (" + ПредставлениеТипа + ")";
- КонецЕсли;
-
- Если Не Форма.ТолькоПросмотр Тогда
- Если Изменения = "" Или Изменения = "ТолькоДляАвтора" Тогда
- Если Не Форма.ЭтоВнешний И Не Объект.ПометкаУдаления Тогда
- Элементы.ВидимостьПоУмолчанию.Доступность = Не Объект.ТолькоДляАвтора;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
-
-КонецПроцедуры
-
&НаСервере
-Функция ПерезаполнитьДерево()
+Функция ПерезаполнитьДерево(Прочитать)
+ Если Прочитать Тогда
+ ЭтотОбъект.Прочитать();
+ КонецЕсли;
ДеревоПриемник = ВариантыОтчетов.ДеревоПодсистемСформировать(ЭтотОбъект, Объект);
ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем");
Возврат Истина;
@@ -188,34 +168,28 @@
&НаСервере
Процедура ПрочитатьСвойстваПредопределенного(ПервоеЧтение)
-
- Если Не ПервоеЧтение И ТипЗнч(СвойстваПредопределенного) <> Тип("ФиксированнаяСтруктура") Тогда
- Возврат;
- КонецЕсли;
-
Если ПервоеЧтение Тогда
- Если Объект.Пользовательский
- Или Объект.ТипОтчета <> Перечисления.ТипыОтчетов.Внутренний
- Или Не ЗначениеЗаполнено(Объект.ПредопределенныйВариант) Тогда
- Возврат;
+ Если Объект.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний
+ И Не Объект.Пользовательский
+ И ЗначениеЗаполнено(Объект.ПредопределенныйВариант) Тогда // Чтение настроек предопределенного.
+ Запрос = Новый Запрос("ВЫБРАТЬ ВидимостьПоУмолчанию, Описание ИЗ Справочник.ПредопределенныеВариантыОтчетов ГДЕ Ссылка = &Ссылка");
+ Запрос.УстановитьПараметр("Ссылка", Объект.ПредопределенныйВариант);
+ РезультатЗапроса = Запрос.Выполнить().Выгрузить()[0];
+ СтруктураСвойствПредопределенного = Новый Структура("ВидимостьПоУмолчанию, Описание");
+ ЗаполнитьЗначенияСвойств(СтруктураСвойствПредопределенного, РезультатЗапроса);
+ СвойстваПредопределенного = Новый ФиксированнаяСтруктура(СтруктураСвойствПредопределенного);
+ Иначе
+ Возврат; // Не предопределенный.
+ КонецЕсли;
+ Иначе
+ Если ТипЗнч(СвойстваПредопределенного) <> Тип("ФиксированнаяСтруктура") Тогда
+ Возврат; // Не предопределенный.
КонецЕсли;
-
- Запрос = Новый Запрос("ВЫБРАТЬ ВидимостьПоУмолчанию, Описание ИЗ Справочник.ПредопределенныеВариантыОтчетов ГДЕ Ссылка = &Ссылка");
- Запрос.УстановитьПараметр("Ссылка", Объект.ПредопределенныйВариант);
- РезультатЗапроса = Запрос.Выполнить().Выгрузить()[0];
- СтруктураСвойствПредопределенного = Новый Структура("ВидимостьПоУмолчанию, Описание");
- ЗаполнитьЗначенияСвойств(СтруктураСвойствПредопределенного, РезультатЗапроса);
- СвойстваПредопределенного = Новый ФиксированнаяСтруктура(СтруктураСвойствПредопределенного);
- КонецЕсли;
-
- Если Объект.ВидимостьПоУмолчаниюПереопределена = Ложь Тогда
- Объект.ВидимостьПоУмолчанию = СвойстваПредопределенного.ВидимостьПоУмолчанию;
КонецЕсли;
Если ПустаяСтрока(Объект.Описание) Тогда
Объект.Описание = СвойстваПредопределенного.Описание;
КонецЕсли;
-
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html b/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html
index ecf91a96b..a37d324b3 100644
--- a/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html
+++ b/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для управления вариантами отчетов, для настройки размещения в панелях отчетов разделов программы.
Программа позволяет сохранять и использовать несколько вариантов одного и того же отчета. Предусмотрены предопределенные варианты отчетов. Также можно создавать свои собственные варианты отчетов, изменяя настройки существующих: настройки формирования и внешнего вида (состав полей, сортировки, группировки, условное оформление).
В программе предусмотрена возможность создавать общие варианты отчетов. Общие варианты отчетов доступны всем пользователям этого отчета.
@@ -52,7 +52,7 @@
В списке Все отчеты также можно воспользоваться двойным щелчком мыши на нужном варианте отчета.
Настройка варианта отчета
-
Выберите нужный вариант отчета, нажмите Изменить, отредактируйте нужные поля.
+
Выберите вариант отчета, нажмите Изменить, отредактируйте необходимые поля.
В списке Варианты отчетов, предназначенном только для администратора, также можно воспользоваться двойным щелчком мыши на нужном варианте отчета.
Удаление варианта отчета
Пользовательский вариант отчета с помощью команды меню Все действия можно Пометить на удаление. Также можно воспользоваться клавишей Del.
diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl b/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl
index 55da50331..ee95365df 100644
--- a/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl
+++ b/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl
@@ -24,6 +24,9 @@
КонецПроцедуры
Процедура ПередЗаписью(Отказ)
+ Если ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда
+ ПроверитьЗаполнениеПредопределенного(Отказ);
+ КонецЕсли;
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
@@ -67,7 +70,7 @@
// Удаление из табличной части подсистем, помеченных на удаление.
МассивУдаляемыхСтрок = Новый Массив;
Для Каждого СтрокаРазмещения Из Размещение Цикл
- Если СтрокаРазмещения.РазделИлиГруппа.ПометкаУдаления = Истина Тогда
+ Если СтрокаРазмещения.Подсистема.ПометкаУдаления = Истина Тогда
МассивУдаляемыхСтрок.Добавить(СтрокаРазмещения);
КонецЕсли;
КонецЦикла;
@@ -105,6 +108,84 @@
КонецЕсли;
КонецПроцедуры
+// Заполняет родителя варианта отчета, основываясь на ссылке отчета и предопределенных настройках.
+Процедура ЗаполнитьРодителя() Экспорт
+ ТекстЗапроса =
+ "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
+ | Предопределенные.Ссылка КАК ПредопределенныйВариант
+ |ПОМЕСТИТЬ втПредопределенные
+ |ИЗ
+ | Справочник.ПредопределенныеВариантыОтчетов КАК Предопределенные
+ |ГДЕ
+ | Предопределенные.Отчет = &Отчет
+ | И Предопределенные.ПометкаУдаления = ЛОЖЬ
+ | И Предопределенные.ГруппироватьПоОтчету
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | Предопределенные.Включен УБЫВ
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
+ | ВариантыОтчетов.Ссылка
+ |ИЗ
+ | втПредопределенные КАК втПредопределенные
+ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ВариантыОтчетов
+ | ПО втПредопределенные.ПредопределенныйВариант = ВариантыОтчетов.ПредопределенныйВариант
+ |ГДЕ
+ | ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ";
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("Отчет", Отчет);
+ Запрос.Текст = ТекстЗапроса;
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ Родитель = Выборка.Ссылка;
+ КонецЕсли;
+КонецПроцедуры
+
+// Базовые проверки корректности данных предопределенных вариантов отчетов.
+Процедура ПроверитьЗаполнениеПредопределенного(Отказ)
+ Если ПометкаУдаления Или Не Предопределенный Тогда
+ Возврат;
+ ИначеЕсли Не ЗначениеЗаполнено(Отчет) Тогда
+ ТекстОшибки = НеЗаполненоПоле("Отчет");
+ ИначеЕсли Не ЗначениеЗаполнено(ТипОтчета) Тогда
+ ТекстОшибки = НеЗаполненоПоле("ТипОтчета");
+ ИначеЕсли Не ТипыОтчетовСовпадают() Тогда
+ ТекстОшибки = ПротиворечивыеЗначенияПолей("ТипОтчета", "Отчет");
+ ИначеЕсли ТипОтчета = Перечисления.ТипыОтчетов.Внутренний
+ И Не ЗначениеЗаполнено(ПредопределенныйВариант) Тогда
+ ТекстОшибки = НеЗаполненоПоле("ПредопределенныйВариант");
+ Иначе
+ Возврат;
+ КонецЕсли;
+ Отказ = Истина;
+ ВариантыОтчетов.ОшибкаПоВарианту(Ссылка, ТекстОшибки);
+КонецПроцедуры
+
+Функция НеЗаполненоПоле(ИмяПоля)
+ Возврат СтрЗаменить(НСтр("ru = 'Не заполнено поле ""%1""'"), "%1", ИмяПоля);
+КонецФункции
+
+Функция ТипыОтчетовСовпадают()
+ Если ТипЗнч(Отчет) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
+ ОжидаемыйТип = Перечисления.ТипыОтчетов.Внутренний;
+ ИначеЕсли ТипЗнч(Отчет) = Тип("Строка") Тогда
+ ОжидаемыйТип = Перечисления.ТипыОтчетов.Внешний;
+ Иначе
+ ОжидаемыйТип = Перечисления.ТипыОтчетов.Дополнительный;
+ КонецЕсли;
+ Возврат ТипОтчета = ОжидаемыйТип;
+КонецФункции
+
+Функция ПротиворечивыеЗначенияПолей(ИмяПоля1, ИмяПоля2)
+ Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Противоречивые значения полей ""%1"" и ""%2""'"),
+ ИмяПоля1,
+ ИмяПоля2
+ );
+КонецФункции
+
#КонецОбласти
#КонецЕсли
diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo b/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo
index dff879b22..873dd1e55 100644
--- a/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo
+++ b/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo
@@ -110,6 +110,8 @@
ruОтчет
+ true
+ HierarchyOfItems2true150
@@ -277,7 +279,7 @@
ВидимостьПоУмолчаниюru
- По умолчанию виден в панели отчетов
+ По умолчанию виден в панелях отчетовBoolean
@@ -293,7 +295,6 @@
true
- IndexUse
@@ -360,7 +361,7 @@
НаименованияПолейru
- Поля
+ Наименования полейString
@@ -368,7 +369,7 @@
ru
- Наименования полей, выведенных в отчете.
+ Поля, выведенные в отчете.
Используется при поиске.
@@ -381,7 +382,7 @@
НаименованияПараметровИОтборовru
- Параметры и отборы
+ Наименования параметров и отборовString
@@ -389,7 +390,7 @@
ru
- Наименования параметров и отборов отчета.
+ Параметры и фильтры, выведенные в отчете.
Используется при поиске.
@@ -482,14 +483,14 @@
ru
-
+ Если флажок снят то отчет не выводится в указанной группе.Use
- РазделИлиГруппа
+ ПодсистемаruРаздел, Группа
@@ -517,7 +518,7 @@
ru
-
+ Если флажок установлен то отчет выделяется жирным шрифтом и выводится в начале группы.
@@ -530,13 +531,12 @@
ruСм также
- Вариант находится в группе "См. также"Booleanru
-
+ Если флажок установлен то отчет выводится в отдельной группе "См. также", расположенной внизу панели отчетов.
@@ -559,7 +559,6 @@
Use
- UseУдалитьНазвание
@@ -702,6 +701,10 @@
CatalogRef.ВариантыОтчетовPictureAndText
+
+ ru
+ Открыть отчет...
+ StdPicture.Report
@@ -720,6 +723,10 @@
MultipletrueAuto
+
+ ru
+ Изменить размещение нескольких отчетов...
+ СброситьНастройкиПользователей
@@ -753,4 +760,24 @@
StdPicture.RestoreValues
+
+ Изменить
+
+ ru
+ Изменить...
+
+ FormCommandBarImportant
+
+ CatalogRef.ВариантыОтчетов
+
+ PictureAndText
+
+ ru
+ Изменить настройки отчета...
+
+
+ StdPicture.Change
+
+ F2
+
diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Form.form b/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Form.form
index 392e8387b..1934e98e9 100644
--- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Form.form
+++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ВерсииФайла/Form.form
@@ -9,7 +9,7 @@
true
- ДеревоВерсий
+ Списокtruefalse
@@ -27,7 +27,7 @@
КартинкаИНаименование67
- СписокИндексКартинки
+ СписокИндексКартинкиТекущий68truetrue
@@ -35,14 +35,14 @@
true
- ДеревоВерсий.ИндексКартинкиТекущий
+ Список.ИндексКартинкиТекущийruПользователь, который добавил версию файла.
- СписокИндексКартинкиExtendedTooltip
+ СписокИндексКартинкиТекущийРасширеннаяПодсказка91Labeltrue
@@ -52,7 +52,7 @@
По окончании редактирования файла (по команде Завершить редактирование в списке файлов) программа рекомендует сохранить версию файла и ввести информацию о данной версии. По умолчанию эта возможность включена (рекомендуется использовать сохранение версий, так как в случае серьезных ошибок, которые привели к порче файла, можно вернуться к более ранней, неиспорченной версии). Впоследствии можно отредактировать комментарий и при необходимости изменить автора версии.
Сведения о версии файла
@@ -28,7 +28,7 @@
Номер версии - нумерация версий ведется программой автоматически при изменениях файла, при этом максимальный номер имеет последняя сохраненная версия.
-
Данные от - дата и время изменения данных версии файла (в местном времени).
+
Дата изменения - дата изменения данных версии файла (местное время).
Кодировка - автоматически выбирается значение По умолчанию.
Просмотр версии файла
Нажмите , для того чтобы открыть выбранную версию файла соответствующим приложением для просмотра или редактирования (также можно открыть версию файла двойным щелчком мыши по нужной строке или по команде Все действия - Открыть).
Предназначен для просмотра и управления версиями файла.
Для просмотра списка всех версий файла откройте его карточку (в списке файлов нажмите F2 или Открыть карточку) и нажмите Версии файлов на панели навигации.
Список версий является иерархическим, для удобства просмотра отображается в виде дерева. В этом случае легко проследить историю редактирования файла. Более поздние версии отображаются подчиненными более ранним. При этом первую версию файла удалить из списка невозможно.
-
По окончании редактирования файла программа рекомендует сохранить версию файла и ввести информацию о данной версии. По умолчанию эта возможность включена (рекомендуется использовать сохранение версий, так как в случае серьезных ошибок, которые привели к порче файла, можно вернуться к более ранней, неиспорченной версии). Впоследствии можно изменить некоторые сведения о версии, например, комментарий.
+
По окончании редактирования файла программа рекомендует сохранить версию файла и ввести информацию о данной версии. По умолчанию эта возможность включена (рекомендуется использовать сохранение версий, так как в случае серьезных ошибок, которые привели к порче файла, можно вернуться к более ранней, неиспорченной версии). Хранение версий можно включить с помощью соответствующего флажка в карточке файла или при загрузке файлов (папок). Впоследствии можно изменить некоторые сведения о версии, например, комментарий.
В списке выводится:
Автор - пользователь, который добавил версию файла. Также в этой колонке в виде картинки отображается тип файла.
diff --git a/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo b/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo
index ef1112561..cf65b0b3f 100644
--- a/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo
+++ b/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo
@@ -144,13 +144,12 @@
ruАвтор
- Автор - пользователь, создавший версиюCatalogRef.Пользователиru
- Пользователь, который добавил версию файла.
+ Пользователь, который добавил версию файла
@@ -168,14 +167,13 @@
ruДата модификации универсальная
- Дата модификации файла - приведенная к Гринвичу (очищенная от смещения летнего времени и смещения зоны)Dateru
- Дата изменения данных версии файла, приведенная к Гринвичу (очищенная от смещения летнего времени и смещения зоны).
+ Дата изменения данных версии файла, приведенная к Гринвичу (очищенная от смещения летнего времени и смещения зоны)
@@ -190,14 +188,13 @@
ruДата модификации файла
- Дата модификации файла - в локальном времениDateru
- Дата изменения данных версии файла (в местном времени).
+ Дата изменения данных версии файла (местное время)
@@ -211,14 +208,13 @@
ruДата создания
- Дата создания версииDateru
- Дата добавления версии файла в базу.
+ Дата добавления версии файла в базу
@@ -235,7 +231,6 @@
ruЗашифрован
- Файл версии зашифрованBoolean
@@ -256,7 +251,6 @@
ruИндекс картинки
- Индекс иконки, соответствующей расширению файла, для показа в спискеNumber
@@ -280,7 +274,6 @@
ruКомментарий
- Комментарий к версииString
@@ -302,7 +295,6 @@
ruНомер версии
- Номер данной версииNumber
@@ -311,7 +303,7 @@
ru
- Номер версии файла.
+ Номер версии файла
@@ -325,7 +317,6 @@
ruПодписан ЭП
- Файл версии подписан ЭПBoolean
@@ -345,7 +336,6 @@
ruПолное наименование
- Полное наименование (длиной до 256 символов)String
@@ -371,7 +361,6 @@
ruПуть к файлу
- Дополнительный путь к файлу на диске (в случае если ТипХраненияФайла - на диске)String
@@ -399,7 +388,7 @@
ru
- Размер данных версии файла.
+ Размер данных версии файла
@@ -416,7 +405,6 @@
ruРасширение
- Расширение файла версииString
@@ -425,7 +413,7 @@
ru
- Расширение версии файла.
+ Расширение версии файла
@@ -440,7 +428,6 @@
ruРодительская версия
- Родительская версия для данной версии - возможна древесная структура версийCatalogRef.ВерсииФайлов
@@ -463,7 +450,6 @@
ruСтатус извлечения текста
- Статус извлечения текста - для фонового задания извлечения текстаEnumRef.СтатусыИзвлеченияТекстаФайлов
@@ -486,7 +472,6 @@
ruТекст
- Текст, извлеченный из файла - для полнотекстового поискаValueStorage
@@ -506,13 +491,12 @@
ruТип хранения файла
- Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на дискеEnumRef.ТипыХраненияФайловru
- Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на диске
+ Где хранятся файлы - в базе как хранилище значения или в каталоге на диске
@@ -526,7 +510,6 @@
ruТом
- Ссылка на том (в случае если ТипХраненияФайла - на диске)CatalogRef.ТомаХраненияФайлов
@@ -547,13 +530,12 @@
ruФайл
- Служебное поле только для обмена файламиValueStorageru
- Файл версии
+ Временное хранилище файла (служебное поле)
@@ -662,7 +644,6 @@
ruОтпечаток
- Отпечаток сертификатаString
@@ -719,7 +700,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form
index 88b794fc6..f1a52fb4b 100644
--- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form
+++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form
@@ -1,5 +1,73 @@
+
+ ГруппаПользовательскихНастроек
+ 11
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 12
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 13
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 14
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -98,10 +166,10 @@
СписокСтрокаПоиска
- 11
+ 15СписокСтрокаПоискаРасширеннаяПодсказка
- 13
+ 17Labeltruetrue
@@ -111,7 +179,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 12
+ 16trueСписок
@@ -121,10 +189,10 @@
СписокСостояниеПросмотра
- 14
+ 18СписокСостояниеПросмотраРасширеннаяПодсказка
- 16
+ 20Labeltruetrue
@@ -134,7 +202,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 15
+ 19trueViewStatusAddition
@@ -145,10 +213,10 @@
СписокУправлениеПоиском
- 17
+ 21СписокУправлениеПоискомРасширеннаяПодсказка
- 19
+ 23Labeltruetrue
@@ -158,7 +226,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 18
+ 22trueSearchControlAddition
@@ -224,13 +292,13 @@
truetruetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1Left
- trueOnCreateAtServer
diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Help/ru.html b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Help/ru.html
new file mode 100644
index 000000000..489b34d32
--- /dev/null
+++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Help/ru.html
@@ -0,0 +1,8 @@
+
+
Список предназначен для выбора вида контактной информации.
Виды контактной информации представляют собой предопределенные группы, каждая из которых соответствует спискам или документам, которые являются носителями контактной информации, а элементы внутри этих групп определяют состав контактной информации этих объектов программы. При этом состав групп не может быть изменен. Список групп имеет иерархическую структуру в виде дерева.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form
index 32510c17f..d9a41f458 100644
--- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form
@@ -1,5 +1,139 @@
+
+ ГруппаПользовательскихНастроек
+ 42
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 43
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 44
+
+ ПереместитьВниз
+ 18
+ true
+ true
+
+ true
+
+ false
+
+ ПереместитьВнизExtendedTooltip
+ 33
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПереместитьЭлементВниз
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+
+ Style.ButtonTextColor
+
+
+ Style.ButtonBackColor
+
+ Auto
+
+
+ ПереместитьВверх
+ 17
+ true
+ true
+
+ true
+
+ false
+
+ ПереместитьВверхExtendedTooltip
+ 32
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПереместитьЭлементВверх
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+
+ Style.ButtonTextColor
+
+
+ Style.ButtonBackColor
+
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 45
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -16,71 +150,114 @@
NoneCreateFolderMoveItem
-
- НомерКартинки
- 28
+
+ Представление
+ 40
+
+ Пиктограмма
+ 28
+
+ ru
+ Пиктограмма
+
+ true
+ true
+
+ true
+
+
+ Список.ИндексПиктограммы
+
+ None
+
+ ПиктограммаРасширеннаяПодсказка
+ 35
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПиктограммаКонтекстноеМеню
+ 29
+ true
+
+ PictureField
+ Enter
+ true
+ Left
+ true
+
+ 2
+ true
+ true
+ true
+ true
+
+
+
+ 1
+
+
+
+
+ Наименование
+ 37
+
+ ru
+ Вид контактной информации
+
+ true
+ true
+
+ true
+
+
+ Список.Description
+
+
+ НаименованиеРасширеннаяПодсказка
+ 39
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НаименованиеКонтекстноеМеню
+ 38
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ truetruetrue
-
- Список.НомерКартинки
-
- None
-
- НомерКартинкиExtendedTooltip
- 35
- Label
- true
- true
-
- Left
-
-
-
- НомерКартинкиКонтекстноеМеню
- 29
- true
-
- PictureField
- Enter
- true
- Left
- true
-
- 2
- true
- 1
- true
- true
- true
-
- CommonPicture.КонтактнаяИнформация
-
-
- 1
-
-
-
-
- Наименование
- 37ru
- Вид контактной информации
+ Представление
- true
- true
-
- true
-
-
- Список.Description
-
+
+ ru
+ Представление
+
- НаименованиеРасширеннаяПодсказка
- 39
+ ПредставлениеРасширеннаяПодсказка
+ 41Labeltruetrue
@@ -88,19 +265,11 @@
Left
-
- НаименованиеКонтекстноеМеню
- 38
- true
-
- LabelField
- Enter
- true
- Left
- true
-
- true
- true
+ ColumnGroup
+
+ InCell
+ auto
+ true
@@ -154,10 +323,10 @@
СписокСтрокаПоиска
- 40
+ 46СписокСтрокаПоискаРасширеннаяПодсказка
- 42
+ 48Labeltruetrue
@@ -167,7 +336,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 41
+ 47trueСписок
@@ -177,10 +346,10 @@
СписокСостояниеПросмотра
- 43
+ 49СписокСостояниеПросмотраРасширеннаяПодсказка
- 45
+ 51Labeltruetrue
@@ -190,7 +359,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 44
+ 50trueViewStatusAddition
@@ -201,10 +370,10 @@
СписокУправлениеПоиском
- 46
+ 52СписокУправлениеПоискомРасширеннаяПодсказка
- 48
+ 54Labeltruetrue
@@ -214,7 +383,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 47
+ 53trueSearchControlAddition
@@ -257,9 +426,6 @@
ExpandAllLevelstruetrue
-
- Список.DefaultPicture
- Style.BorderColor
@@ -275,6 +441,7 @@
true
+ ГруппаПользовательскихНастроекTop
@@ -282,74 +449,7 @@
ФормаКоманднаяПанель-1
-
- ПереместитьВверх
- 17
- true
- true
-
- true
-
- false
-
- ПереместитьВверхExtendedTooltip
- 32
- Label
- true
- true
-
- Left
-
-
- Form.Command.ПереместитьЭлементВверх
- Normal
- Auto
- true
- true
- UserCmds
-
- Style.ButtonTextColor
-
-
- Style.ButtonBackColor
-
- Auto
-
-
- ПереместитьВниз
- 18
- true
- true
-
- true
-
- false
-
- ПереместитьВнизExtendedTooltip
- 33
- Label
- true
- true
-
- Left
-
-
- Form.Command.ПереместитьЭлементВниз
- Normal
- Auto
- true
- true
- UserCmds
-
- Style.ButtonTextColor
-
-
- Style.ButtonBackColor
-
- Auto
- Left
- trueCreateFolderDontBlock
@@ -375,9 +475,15 @@
true
+
+ Список.НомерКартинки
+ Список.Ref
+
+ Список.ИндексПиктограммы
+ Список.РеквизитДопУпорядочивания
@@ -385,15 +491,39 @@
ВЫБРАТЬ
// Выбор индекса в общей картинке "КонтактнаяИнформация"
- ВЫБОР СправочникВидыКонтактнойИнформации.Тип
- КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) ТОГДА 8
- КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) ТОГДА 3
- КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) ТОГДА 4
- КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница) ТОГДА 5
- КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс) ТОГДА 6
- КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое) ТОГДА 7
- ИНАЧЕ 0
- КОНЕЦ КАК НомерКартинки,
+ ВЫБОР
+ КОГДА СправочникВидыКонтактнойИнформации.ЭтоГруппа ТОГДА
+ ВЫБОР
+ КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления ТОГДА 1
+ КОГДА СправочникВидыКонтактнойИнформации.Предопределенный ТОГДА 2
+ ИНАЧЕ 0
+ КОНЕЦ
+
+ КОГДА СправочникВидыКонтактнойИнформации.ПометкаУдаления ТОГДА 4
+
+ КОГДА СправочникВидыКонтактнойИнформации.Предопределенный ТОГДА
+ ВЫБОР СправочникВидыКонтактнойИнформации.Тип
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) ТОГДА 14
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) ТОГДА 15
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница) ТОГДА 16
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс) ТОГДА 17
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое) ТОГДА 18
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) ТОГДА 19
+ ИНАЧЕ 3
+ КОНЕЦ
+
+ ИНАЧЕ
+ ВЫБОР СправочникВидыКонтактнойИнформации.Тип
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон) ТОГДА 7
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) ТОГДА 8
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ВебСтраница) ТОГДА 9
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс) ТОГДА 10
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Другое) ТОГДА 11
+ КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес) ТОГДА 12
+ ИНАЧЕ 3
+ КОНЕЦ
+
+ КОНЕЦ КАК ИндексПиктограммы,
СправочникВидыКонтактнойИнформации.Ссылка,
СправочникВидыКонтактнойИнформации.ПометкаУдаления,
diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Items/Пиктограмма/ValuesPicture.png b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Items/Пиктограмма/ValuesPicture.png
new file mode 100644
index 000000000..e948df5d8
Binary files /dev/null and b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Items/Пиктограмма/ValuesPicture.png differ
diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form
index 325d4c232..4051653f7 100644
--- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form
+++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form
@@ -580,6 +580,40 @@
true
+
+ ВключатьСтрануВПредставление
+ 16
+ true
+ true
+
+ true
+
+
+ Объект.ВключатьСтрануВПредставление
+
+ Right
+
+ ВключатьСтрануВПредставлениеExtendedTooltip
+ 107
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВключатьСтрануВПредставлениеКонтекстноеМеню
+ 17
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+ truetrue
@@ -629,40 +663,6 @@
Auto
-
- ВключатьСтрануВПредставление
- 16
- true
- true
-
- true
-
-
- Объект.ВключатьСтрануВПредставление
-
- Right
-
- ВключатьСтрануВПредставлениеExtendedTooltip
- 107
- Label
- true
- true
-
- Left
-
-
-
- ВключатьСтрануВПредставлениеКонтекстноеМеню
- 17
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
- truetrue
diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html
index ea69eec80..52897bb22 100644
--- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html
@@ -1,10 +1,10 @@
-
+
Описание свойств поля контактной информации.
-
У предопределенных полей контактной информации можно только поменять настройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.
-
Какие типы контактной информации существуют в программе
+
Поставка программы осуществляется c предопределенными полями контактной информации для некоторых документов и списков. У предопределенных полей контактной информации можно только поменять настройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.
+
Типы контактной информации
Программа позволяет хранить следующие типы контактной информации:
-
Адрес - поле с таким типом контактной информации предназначено для хранения адреса в виде произвольной строки или в виде шаблона адреса. Позволяет заполнять адрес с помощью шаблона ввода, используя адресный классификатор. Если адрес заполняется с помощью адресного классификатора, то индекс адреса устанавливается из классификатора автоматически, после окончания ввода адреса. Предопределенные фактический и юридический адреса используются в печатных формах документов.
+
Адрес - поле с таким типом контактной информации предназначено для хранения адреса в виде произвольной строки или в виде шаблона адреса. Позволяет заполнять адрес с помощью шаблона ввода, используя адресный классификатор. Если адрес заполняется с помощью адресного классификатора, то индекс адреса устанавливается из классификатора автоматически, после окончания ввода адреса. Предопределенные фактический и юридический адреса используются в печатных формах документов.
Телефон - поле с таким типом контактной информации предназначено для хранения телефонных номеров в виде произвольной строки, или в соответствии с шаблоном ввода номера телефона. Предопределенный телефон используется в печатных формах документов.
@@ -14,7 +14,7 @@
Факс - поле с таким типом контактной информации предназначено для хранения номеров факсов в виде произвольной строки, или в соответствии с шаблоном ввода номера факса. Реквизит используется в печатных формах документов.
-
Другое - поле с таким типом контактной информации может использоваться для хранения произвольной текстовой контактной информации, например информацию о том, как добраться до организации.
Как добавить поле контактной информации в список или документ
+
Другое - поле с таким типом контактной информации может использоваться для хранения произвольной текстовой контактной информации, например, можно поместить информацию о том, как добраться до организации. Программа позволяет в это поле ввести текст длиной до 1024 символов.
Добавление поля контактной информации в список или документ
Заполните необходимую информацию:
Выберите из списка Тип контактной информации.
@@ -23,15 +23,19 @@
Введите текст Подсказки, которая будет выводиться при наведении курсора на поле контактной информации.
-
Выберите Группу, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.
Какие настройки можно использовать для полей контактной информации
+
Выберите Группу, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.
Настройки полей контактной информации
-
Включите флажок Обязательное заполнение для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.
+
Включите флажок Обязательное заполнение, для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.
-
Включите флажок Разрешить ввод нескольких значений для того чтобы можно было ввести несколько значений. Например, у организации или физического лица может быть несколько адресов электронной почты или номеров телефонов, по которым можно с ними связаться.
+
Включите флажок Разрешить ввод нескольких значений, для того чтобы можно было ввести несколько значений. Например, у организации или физического лица может быть несколько адресов электронной почты или номеров телефонов, по которым можно с ними связаться.
-
Настройка Редактировать только в диалоге используется для типов контактной информации Адрес, Телефон, Факс. Такая настройка позволяет ограничить ввод нового и редактирование существующего адреса, телефона или факса шаблоном ввода, а также выбором адреса из адресного классификатора.
Какие настройки доступны только для поля типа Адрес
-
Включите флажок Только российский для того чтобы запретить выбор другой страны при заполнении адреса. При этом становятся доступными дополнительные настройки:
-
Запрещать ввод некорректных адресов - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - включите флажок Редактировать только в диалоге).
-
Скрывать неактуальные адреса - включите флажок для того чтобы программа не показывала в списках устаревшие адреса. По умолчанию флажок отключен.
-
Включать страну в представление - включите флажок для того чтобы при автоматическом составлении полного адреса в поле Адрес указывалась страна.
Настройка Редактировать только в диалоге используется для типов контактной информации Адрес, Телефон, Факс. Такая настройка позволяет ограничить ввод нового и редактирование существующего адреса, телефона или факса шаблоном ввода, а также выбором адреса из адресного классификатора. При установленном флажке предусмотрена возможность ввести адрес в свободной форме. Это может понадобиться в исключительных случаях, например, если данные адреса в каких либо документах приводятся с ошибкой, но для печати необходимо их проставить. При этом такой адрес будет храниться в программе с пометкой, что он введен в свободной форме, и использоваться с ограничениями. После уточнения адрес можно будет исправить, заполнив по шаблону.
Особенности настройки поля Адрес
+
Включите флажок Только российский, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки:
+
Запрещать ввод некорректных адресов - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок Редактировать только в диалоге).
+
Скрывать неактуальные адреса - включите флажок, для того чтобы программа не показывала в списках устаревшие адреса на момент последней загрузки классификатора адреса. Такие адреса помечены в списках значком . По умолчанию флажок отключен.
+
Включать страну в представление - включите флажок, для того чтобы при автоматическом составлении полного адреса в поле Адрес указывалась страна.
Особенности настройки поля Адрес электронной почты
+
Если у поля установлен тип Адрес электронной почты, то программа проверяет правильность ввода адреса электронной почты. Включите флажок Запрещать ввод некорректных адресов, в этом случае ввести некорректный адрес электронной почты будет невозможно.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html
index e3aa91332..932d9de36 100644
--- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html
+++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html
@@ -1,10 +1,14 @@
-
-
Предназначен для настройки видов контактной информации в документах и списках программы. Программа позволяет хранить и обрабатывать контактную информацию, использующуюся на предприятии.
-
Поставка программы осуществляется c предопределенными группами и элементами списка. Предопределенные группы списка соответствуют спискам или документам программы - носителям контактной информации. Добавление новых групп в список запрещено.
+
+
Предназначен для настройки видов контактной информации в документах и списках программы.
+
Программа позволяет хранить и обрабатывать контактную информацию, использующуюся на предприятии.
+
Работа с контактной информацией в разных списках программы реализована одинаково. Все списки предоставляют одинаковую возможность по работе с адресами или телефонами. В программе также предусмотрена возможность хранения контактной информации в табличных частях документов и загрузка контактной информации. В табличных частях документов можно редактировать контактную информацию. Такая возможность может потребоваться при работе в документах представляемой электронной отчетности. Связано это с необходимостью сохранения в данных документа точной копии представленных в фискальные органы сведений, в том числе адресов и телефонов физических лиц.
+
Поставка программы осуществляется c предопределенными группами и элементами списка. Предопределенные группы списка соответствуют спискам или документам программы - носителям контактной информации. Добавление новых групп в список запрещено. Элементы внутри этих групп определяют состав контактной информации соответствующих объектов программы.
В списках и табличных частях документов программы предусмотрено несколько предопределенных видов контактной информации, кроме того, имеется возможность добавлять новые виды контактной информации.
-
Как добавить новое поле контактной информации в справочник или документ
+
Настройку видов контактной информации рекомендуется выполнить на этапе начального заполнения программы. Эта рекомендация не исключает настройку в процессе ведения контактной информации. Настройку обычно выполняет администратор программы.
+
Список открывается соответствующей командой панели навигации раздела Администрирование - Общие настройки.
+
Добавление нового поля контактной информации в список или документ
-
Выбрав соответствующую группу в списке, нажмите Создать. Заполните необходимые поля.
Можно ли изменить предопределенные виды контактной информации
+
Выбрав соответствующую группу в списке, нажмите Создать. Заполните необходимые поля.
Предопределенные виды контактной информации
У предопределенных элементов списка в отличие от произвольных полей контактной информации можно изменить только настройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.
diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl
index 4cb735c80..c7abddc21 100644
--- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl
@@ -59,6 +59,7 @@
КонецЕсли;
Если Не УровеньДоступа.ПолныеПрава Тогда
ВходВПрограммуРазрешен = Ложь;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь;
КонецЕсли;
Иначе
// Добавление элемента.
@@ -85,6 +86,7 @@
Если УровеньДоступа.ПолныеПрава Тогда
ВходВПрограммуРазрешен = Истина;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -320,6 +322,10 @@
Если Объект.Недействителен Тогда
ВходВПрограммуРазрешен = Ложь;
+ Иначе
+ ВходВПрограммуРазрешен = ВходВПрограммуРазрешенЗначениеПрямогоИзменения
+ И (ПользовательИнфБазыАутентификацияOpenID
+ Или ПользовательИнфБазыАутентификацияСтандартная);
КонецЕсли;
УстановитьДоступностьСвойств();
@@ -356,6 +362,8 @@
НСтр("ru = 'После записи вход в программу сможет разрешить только администратор.'"));
КонецЕсли;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = ВходВПрограммуРазрешен;
+
КонецПроцедуры
&НаКлиенте
@@ -507,11 +515,13 @@
УстановитьДоступностьСвойств();
- Если ВходВПрограммуРазрешен
- И НЕ ПользовательИнфБазыАутентификацияOpenID
+ Если НЕ ПользовательИнфБазыАутентификацияOpenID
И НЕ ПользовательИнфБазыАутентификацияСтандартная Тогда
ВходВПрограммуРазрешен = Ложь;
+
+ ИначеЕсли Не ВходВПрограммуРазрешен Тогда
+ ВходВПрограммуРазрешен = ВходВПрограммуРазрешенЗначениеПрямогоИзменения;
КонецЕсли;
КонецПроцедуры
@@ -729,8 +739,9 @@
ПрочитанныеСвойства = Неопределено;
ОписаниеПользователяИБ = НачальноеОписаниеПользователяИБ();
ПользовательИБСуществует = Ложь;
- ВходВПрограммуРазрешен = Ложь;
ПользовательИБОсновной = Ложь;
+ ВходВПрограммуРазрешен = Ложь;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь;
Если ПриКопированииЭлемента Тогда
@@ -741,6 +752,7 @@
// Сопоставление пользователя ИБ с пользователем в справочнике.
Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда
ВходВПрограммуРазрешен = Истина;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина;
КонецЕсли;
// Копирование свойств и ролей пользователяИБ.
@@ -792,6 +804,7 @@
Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда
ВходВПрограммуРазрешен = Истина;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина;
КонецЕсли;
ЗаполнитьЗначенияСвойств(
diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html b/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html
index 7a2cd872a..64b7bed4e 100644
--- a/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html
+++ b/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для ведения пользователей, которые работают с программой "извне". Их доступ, как правило, сильно ограничен. Внешние пользователи не принимают активного участия в процессах учета, работают обособленно, не взаимодействуют между собой. Например, это сотрудники в кадровой базе, покупатели в интернет-магазине, респонденты в базе для анкетирования.
Открыть список внешних пользователей можно из раздела Администрирование - Настройки пользователей и прав. Также можно его открыть из раздела Анкетирование (Управление доступом).
Внешние пользователи программы разного типа, поэтому информация о них хранится в различных списках программы.
Внешних пользователей можно объединять в группы по разным признакам. Группа внешних пользователей может включать однородных пользователей, например, контрагентов или физические лица. Также можно создать группу внешних пользователей, которая включает различных внешних пользователей со сходными свойствами, например, респондентов или участников опроса. Так удобнее настраивать права доступа.
diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl
index d756c5e22..8a46d00d5 100644
--- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl
@@ -38,8 +38,6 @@
Элементы.Комментарий.Видимость = ЗначениеЗаполнено(ДействияВФорме.СвойстваЭлемента);
Элементы.Состав.Видимость = ЗначениеЗаполнено(ДействияВФорме.СоставГруппы);
Элементы.ОтображениеРолей.Видимость = ЗначениеЗаполнено(ДействияВФорме.Роли);
- Элементы.СоставИРоли.ОтображениеСтраниц = ?(ЗначениеЗаполнено(ДействияВФорме.Роли), ОтображениеСтраницФормы.ЗакладкиСверху, ОтображениеСтраницФормы.Нет);
- Элементы.УчастникиГруппы.Заголовок = ?(ЗначениеЗаполнено(ДействияВФорме.Роли), НСтр("ru = 'В группу включены'"), НСтр("ru = 'Участники группы'"));
Если Объект.ВсеОбъектыАвторизации Тогда
УчастникиГруппы = "ВсеОдногоВида";
@@ -327,6 +325,26 @@
КонецПроцедуры
+&НаКлиенте
+Процедура СортироватьПоВозрастанию(Команда)
+ СоставСортироватьСтроки("ПоВозрастанию");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СортироватьПоУбыванию(Команда)
+ СоставСортироватьСтроки("ПоУбыванию");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПереместитьВверх(Команда)
+ СоставПереместитьСтроку("Вверх");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПереместитьВниз(Команда)
+ СоставПереместитьСтроку("Вниз");
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Для работы интерфейса ролей
@@ -526,9 +544,9 @@
И Элементы.Состав.Доступность;
Элементы.СоставПодобрать.Доступность = ДоступностьКоманд;
- Элементы.КонтекстноеМенюСоставПодобрать.Доступность = ДоступностьКоманд;
+ Элементы.СоставКонтекстноеМенюПодобрать.Доступность = ДоступностьКоманд;
Элементы.СоставДобавить.Доступность = ДоступностьКоманд;
- Элементы.КонтекстноеМенюСоставДобавить.Доступность = ДоступностьКоманд;
+ Элементы.СоставКонтекстноеМенюДобавить.Доступность = ДоступностьКоманд;
Элементы.ПредставлениеТипаОбъектовАвторизации.Видимость =
Не Форма.ЭтоГруппаВсеВнешниеПользователи
@@ -690,6 +708,55 @@
КонецПроцедуры
+&НаСервере
+Процедура СоставСортироватьСтроки(ТипСортировки)
+ Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда
+ Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура();
+ КонецЕсли;
+
+ Если ТипСортировки = "ПоВозрастанию" Тогда
+ Объект.Состав.Сортировать("ВнешнийПользователь Возр");
+ Иначе
+ Объект.Состав.Сортировать("ВнешнийПользователь Убыв");
+ КонецЕсли;
+
+ Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда
+ Отбор = Новый Структура;
+ Отбор.Вставить("Недействителен", Ложь);
+ Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура СоставПереместитьСтроку(НаправлениеПеремещения)
+
+ Строка = Объект.Состав.НайтиПоИдентификатору(Элементы.Состав.ТекущаяСтрока);
+ Если Строка = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИндексТекущейСтроки = Строка.НомерСтроки - 1;
+ Сдвиг = 0;
+
+ Пока Истина Цикл
+ Сдвиг = Сдвиг + ?(НаправлениеПеремещения = "Вверх", -1, 1);
+
+ Если ИндексТекущейСтроки + Сдвиг < 0
+ Или ИндексТекущейСтроки + Сдвиг >= Объект.Состав.Количество() Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Элементы.ПоказыватьНедействительныхПользователей.Пометка
+ Или Объект.Состав[ИндексТекущейСтроки + Сдвиг].Недействителен = Ложь Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ Объект.Состав.Сдвинуть(ИндексТекущейСтроки, Сдвиг);
+ Элементы.Состав.Обновить();
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Для работы интерфейса ролей
diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html
index 944323338..69edb6e91 100644
--- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html
+++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Выделите папку, нажмите Выбрать. Также можно воспользоваться двойным щелчком левой кнопки мыши.
Т.к. групп доступа может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать папки для упрощения поиска нужной группы доступа и понимания ограничений прав доступа в целом.
Т.к. групп доступа может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать папки для упрощения поиска нужной группы доступа и понимания ограничений прав доступа в целом.
Группы доступа можно сгруппировать в папки по различным признакам.
Список групп доступа предназначен для ведения групп доступа и позволяет просмотреть имеющиеся настройки прав с ограничениями.
Список групп доступа открывается по команде Группы доступа из раздела Администрирование - Настройки пользователей и прав. Для быстрого перехода к списку групп доступа, созданных на базе профиля групп доступа, можно воспользоваться командой Группы доступа на панели навигации профиля групп доступа.
Группа доступа определяет совокупность действий с данными программы, которые могут выполнять участники этой группы. Как правило, группы доступа соответствуют различным должностным обязанностям (или видам деятельности) пользователей программы. Пользователь может входить одновременно в одну или несколько групп доступа, которые в совокупности образуют его персональные настройки прав доступа.
Группа доступа определяет совокупность действий с данными программы, которые могут выполнять участники этой группы. Как правило, группы доступа соответствуют различным должностным обязанностям (или видам деятельности) пользователей программы. Пользователь может входить одновременно в одну или несколько групп доступа, которые в совокупности образуют его персональные настройки прав доступа.
С помощью группы доступа можно задавать и администрировать общие настройки прав доступа для некоторой группы пользователей, выполняющих однотипные функции в программе, например, Бухгалтеры.
@@ -38,5 +38,5 @@
В ряде случаев для упрощения настройки прав доступа, в списке разрешенных или запрещенных значений можно указывать не отдельные элементы, а целые группы элементов. Например, для вида доступа Партнеры можно ограничить доступ в разрезе групп доступа партнеров, а не по каждому партнеру в отдельности. Для этого необходимо определить список групп доступа партнеров, и у каждого партнера задать принадлежность к той или иной группе. Эти действия могут быть выполнены не только администратором, но и любым пользователем с соответствующими правами на редактирование списка партнеров.
-
В некоторых группах доступа предусмотрена настройка прав с помощью вида доступа Пользователи (аналогично, вид доступа Внешние пользователи для внешних пользователей). Она распространяется только на документы и другие объекты программы, в полях которых могут быть указаны пользователи, получающие доступ к этим документам ("Ответственный", "Автор", "Исполнитель" и т.п.). Для того чтобы дать участникам группы права доступа ко всем данным, с которыми работает тот или иной пользователь, необходимо включить его в список разрешенных значений для вида доступа Пользователи. Например, доступ к документам Поступление товаров зависит от того, кто указан в поле Ответственный, поэтому любой участник группы доступа получит возможность записывать документы, у которых в этом поле выбран либо он сам, либо один из пользователей из списка разрешенных для вида доступа Пользователи. Аналогично действует запрещающая настройка.
См. также:
+
В некоторых группах доступа предусмотрена настройка прав с помощью вида доступа Пользователи (аналогично, вид доступа Внешние пользователи для внешних пользователей). Настройка может учитываться только в тех документах (и других объектах программы), в полях которых могут быть указаны пользователи, получающие доступ к этим документам ("Ответственный", "Автор", "Исполнитель" и т.п.). Для того чтобы дать участникам группы права доступа ко всем ограниченным данным, с которыми работает тот или иной пользователь, необходимо включить его в список разрешенных значений для вида доступа Пользователи. Например, если доступ к документам Поступление товаров зависит от того, кто указан в поле Ответственный, тогда записывать документы имеет возможность пользователь, который либо выбран в этом поле, либо указан в списке разрешенных для вида доступа Пользователи. Аналогично действует запрещающая настройка.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl
index bb7a5096b..d5ac0d912 100644
--- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl
@@ -33,7 +33,6 @@
// Установка доступности при открытии формы только для просмотра.
Элементы.ПользователиПодобрать.Доступность = НЕ ТолькоПросмотр;
Элементы.КонтекстноеМенюПользователиПодобрать.Доступность = НЕ ТолькоПросмотр;
- Элементы.ВидыДоступаИзменить.Доступность = НЕ ТолькоПросмотр;
Если ОбщегоНазначенияПовтИсп.РазделениеВключено()
И Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда
@@ -49,6 +48,10 @@
ВыполненаПроцедураПриСозданииНаСервере = Истина;
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ Элементы.ПользователиДобавить.ТолькоВоВсехДействиях = Ложь;
+ КонецЕсли;
+
КонецПроцедуры
&НаКлиенте
@@ -101,6 +104,7 @@
Если ЗначениеЗаполнено(ВладелецФормы.Родитель.Параметры.Профиль) Тогда
Объект.Профиль = ВладелецФормы.Родитель.Параметры.Профиль;
+ ПодключитьОбработчикОжидания("ОбработчикОжиданияПрофильПриИзменении", 0.1, Истина);
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -897,6 +901,13 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ОбработчикОжиданияПрофильПриИзменении()
+
+ ПрофильПриИзмененииНаСервере();
+
+КонецПроцедуры
+
&НаСервере
Процедура НачальнаяНастройкаПриЧтенииИСоздании(ТекущийОбъект)
diff --git a/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html b/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html
index 316713c9c..beda6004c 100644
--- a/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html
+++ b/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Группы доступа предназначены для настройки прав и ограничений прав доступа конкретным пользователям и группам пользователей программы.
Программа позволяет настроить доступ пользователей к различным функциям, спискам и документам. Предусмотрены предопределенные наборы ролей. Кроме этого, имеется возможность самостоятельной настройки доступа. Управление доступом осуществляет администратор. При этом пользователь, назначенный ответственным в группе доступа, может изменять состав своей группы доступа.
Набор прав и возможности по их ограничению определяются заданным профилем групп доступа.
Просмотр и редактирование свойств группы пользователей.
Пользователей можно объединять в группы по разным признакам, например, по должностям или в соответствии со структурой предприятия. Это ускоряет настройку прав доступа - можно настроить их одновременно нескольким пользователям, которые выполняют сходные функции.
diff --git a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Module.bsl
index 8eb06ae1b..b6977cd67 100644
--- a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Module.bsl
@@ -1,4 +1,4 @@
-
+
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -114,6 +114,26 @@
КонецПроцедуры
+&НаКлиенте
+Процедура СортироватьПоВозрастанию(Команда)
+ СоставСортироватьСтроки("ПоВозрастанию");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СортироватьПоУбыванию(Команда)
+ СоставСортироватьСтроки("ПоУбыванию");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПереместитьВверх(Команда)
+ СоставПереместитьСтроку("Вверх");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПереместитьВниз(Команда)
+ СоставПереместитьСтроку("Вниз");
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -220,4 +240,55 @@
КонецПроцедуры
+&НаСервере
+Процедура СоставСортироватьСтроки(ТипСортировки)
+
+ Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда
+ Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура();
+ КонецЕсли;
+
+ Если ТипСортировки = "ПоВозрастанию" Тогда
+ Объект.Состав.Сортировать("Пользователь Возр");
+ Иначе
+ Объект.Состав.Сортировать("Пользователь Убыв");
+ КонецЕсли;
+
+ Если Не Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда
+ Отбор = Новый Структура;
+ Отбор.Вставить("Недействителен", Ложь);
+ Элементы.Состав.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СоставПереместитьСтроку(НаправлениеПеремещения)
+
+ Строка = Объект.Состав.НайтиПоИдентификатору(Элементы.Состав.ТекущаяСтрока);
+ Если Строка = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИндексТекущейСтроки = Строка.НомерСтроки - 1;
+ Сдвиг = 0;
+
+ Пока Истина Цикл
+ Сдвиг = Сдвиг + ?(НаправлениеПеремещения = "Вверх", -1, 1);
+
+ Если ИндексТекущейСтроки + Сдвиг < 0
+ Или ИндексТекущейСтроки + Сдвиг >= Объект.Состав.Количество() Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Элементы.ПоказыватьНедействительныхПользователей.Пометка
+ Или Объект.Состав[ИндексТекущейСтроки + Сдвиг].Недействителен = Ложь Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ Объект.Состав.Сдвинуть(ИндексТекущейСтроки, Сдвиг);
+ Элементы.Состав.Обновить();
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html b/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html
index 1dcb2b2dc..a771a6304 100644
--- a/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html
+++ b/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для ведения групп пользователей.
Удобно использовать группы, когда в программе много пользователей:
diff --git a/SSL/src/Catalogs/ГруппыПользователей/ObjectModule.bsl b/SSL/src/Catalogs/ГруппыПользователей/ObjectModule.bsl
index ba76b00f2..c6e18639d 100644
--- a/SSL/src/Catalogs/ГруппыПользователей/ObjectModule.bsl
+++ b/SSL/src/Catalogs/ГруппыПользователей/ObjectModule.bsl
@@ -1,5 +1,8 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+////////////////////////////////////////////////////////////////////////////////
+// СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ
+
Перем СтарыйРодитель; // Значение родителя группы до изменения для использования
// в обработчике события ПриЗаписи.
diff --git a/SSL/src/Catalogs/ГруппыПользователей/ГруппыПользователей.mdo b/SSL/src/Catalogs/ГруппыПользователей/ГруппыПользователей.mdo
index fd0b03fd7..c80abbc17 100644
--- a/SSL/src/Catalogs/ГруппыПользователей/ГруппыПользователей.mdo
+++ b/SSL/src/Catalogs/ГруппыПользователей/ГруппыПользователей.mdo
@@ -112,6 +112,7 @@
Use
+ trueru
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl
index 99559068f..cea75e1e3 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl
@@ -11,12 +11,7 @@
НСтр("ru = 'Быстрый доступ к команде ""%1""'"),
Параметры.ПредставлениеКоманды);
- Для Каждого ПользовательСтрока Из Параметры.ПользователиСБыстрымДоступом Цикл
- НоваяСтрока = ПользователиКороткогоСписка.Добавить();
- НоваяСтрока.Пользователь = ПользовательСтрока.Значение;
- КонецЦикла;
-
- ЗаполнитьТаблицуПользователейСКороткимСписком();
+ ЗаполнитьТаблицы();
КонецПроцедуры
@@ -138,27 +133,19 @@
#Область СлужебныеПроцедурыИФункции
&НаСервере
-Процедура ЗаполнитьТаблицуПользователейСКороткимСписком()
-
- МассивПользователей = ПользователиКороткогоСписка.Выгрузить().ВыгрузитьКолонку("Пользователь");
-
- ТекстЗапроса = "ВЫБРАТЬ
- | Истина КАК Используется,
- | Ссылка КАК Пользователь
- |ИЗ
- | Справочник.Пользователи
- |ГДЕ
- | НЕ ПометкаУдаления
- | И НЕ Ссылка В (&МассивПользователей)";
-
- Запрос = Новый Запрос;
- Запрос.Текст = ТекстЗапроса;
- Запрос.Параметры.Вставить("МассивПользователей", МассивПользователей);
- ЗначениеВРеквизитФормы(Запрос.Выполнить().Выгрузить(), "ВсеПользователи");
-
+Процедура ЗаполнитьТаблицы()
+ СписокВыбранных = Параметры.ПользователиСБыстрымДоступом;
+ Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи ГДЕ НЕ ПометкаУдаления И НЕ Недействителен");
+ Выборка = Запрос.Выполнить().Выбрать();
+ Пока Выборка.Следующий() Цикл
+ Если СписокВыбранных.НайтиПоЗначению(Выборка.Ссылка) = Неопределено Тогда
+ ВсеПользователи.Добавить().Пользователь = Выборка.Ссылка;
+ Иначе
+ ПользователиКороткогоСписка.Добавить().Пользователь = Выборка.Ссылка;
+ КонецЕсли;
+ КонецЦикла;
ВсеПользователи.Сортировать("Пользователь Возр");
ПользователиКороткогоСписка.Сортировать("Пользователь Возр");
-
КонецПроцедуры
&НаКлиенте
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПроверкаДополнительныхОтчетовИОбработок/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПроверкаДополнительныхОтчетовИОбработок/Form.form
new file mode 100644
index 000000000..153de1d7f
--- /dev/null
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПроверкаДополнительныхОтчетовИОбработок/Form.form
@@ -0,0 +1,263 @@
+
+
+
+ ГруппаСообщениеПользователю
+ 7
+
+ КартинкаСообщения
+ 9
+
+ ru
+ Картинка сообщения
+
+ true
+ true
+
+ true
+
+
+ КартинкаСообщенияРасширеннаяПодсказка
+ 11
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаСообщенияКонтекстноеМеню
+ 10
+ true
+
+ 4
+ true
+ 2
+ true
+
+
+ CommonPicture.Информация32
+
+
+
+
+ ТекстСообщения
+ 12
+
+ ru
+ Рекомендуется проверить совместимость дополнительных отчетов и
+обработок с текущей версией программы.
+Устаревшие дополнительные отчеты и обработки могут работать некорректно,
+в этом случае их необходимо обновить (или временно отключить).
+
+ true
+ true
+
+ true
+
+
+ ТекстСообщенияРасширеннаяПодсказка
+ 14
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТекстСообщенияКонтекстноеМеню
+ 13
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ГруппаСообщениеПользователюРасширеннаяПодсказка
+ 8
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ NormalSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+ Bottom
+ true
+
+ ФормаКоманднаяПанель
+ -1
+
+ ФормаПерейтиКСписку
+ 3
+ true
+ true
+
+ true
+
+
+ ФормаПерейтиКСпискуРасширеннаяПодсказка
+ 4
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПерейтиКСписку
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаПроверено
+ 1
+ true
+ true
+
+ true
+
+
+ ФормаПровереноРасширеннаяПодсказка
+ 2
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Проверено
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаЗакрыть
+ 5
+ true
+ true
+
+ true
+
+
+ ФормаЗакрытьРасширеннаяПодсказка
+ 6
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Закрыть
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ Right
+
+ 60
+ LockOwner
+ true
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ Проверено
+
+ ru
+ Проверено
+
+ 1
+
+ ru
+ Не выводить больше это сообщение до следующего обновления программы.
+
+
+ true
+
+
+
+ Проверено
+
+
+ Auto
+ Auto
+
+
+ ПерейтиКСписку
+
+ ru
+ Перейти к списку
+
+ 2
+
+ true
+
+
+
+ ПерейтиКСписку
+
+
+ Auto
+ Auto
+
+
+ Закрыть
+
+ ru
+ Отмена
+
+ 3
+
+ true
+
+
+
+ ЗакрытьФорму
+
+
+ Auto
+ Auto
+
+
+
+
+
+
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПроверкаДополнительныхОтчетовИОбработок/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПроверкаДополнительныхОтчетовИОбработок/Module.bsl
new file mode 100644
index 000000000..8cff25889
--- /dev/null
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПроверкаДополнительныхОтчетовИОбработок/Module.bsl
@@ -0,0 +1,35 @@
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура ПерейтиКСписку(Команда)
+ ПараметрыОтбора = Новый Структура;
+ ПараметрыОтбора.Вставить("ПроверкаДополнительныхОтчетовИОбработок", Истина);
+
+ ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаСписка", ПараметрыОтбора);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗакрытьФорму(Команда)
+ Закрыть();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Проверено(Команда)
+ ОтметитьВыполнениеДела();
+ Закрыть();
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+&НаСервере
+Процедура ОтметитьВыполнениеДела()
+
+ ВерсияМассив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Метаданные.Версия, ".");
+ ТекущаяВерсия = ВерсияМассив[0] + ВерсияМассив[1] + ВерсияМассив[2];
+ ХранилищеОбщихНастроек.Сохранить("ТекущиеДела", "ДополнительныеОтчетыИОбработки", ТекущаяВерсия);
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form
index ac7b56d8d..9197cdac6 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form
@@ -1,5 +1,37 @@
+
+ ГруппаПользовательскихНастроек
+ 78
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 79
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ БыстрыеОтборы22
@@ -271,6 +303,115 @@
Form
+
+ ГруппаИзменениеПубликации
+ 64
+
+ Используется
+ 72
+ true
+ true
+
+ true
+
+
+ ИспользуетсяРасширеннаяПодсказка
+ 73
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПубликацияИспользуется
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ РежимОтладки
+ 76
+ true
+ true
+
+ true
+
+
+ РежимОтладкиРасширеннаяПодсказка
+ 77
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПубликацияРежимОтладки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ Отключена
+ 74
+ true
+ true
+
+ true
+
+
+ ОтключенаРасширеннаяПодсказка
+ 75
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПубликацияОтключена
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Публикация
+
+
+ ГруппаИзменениеПубликацииРасширеннаяПодсказка
+ 65
+ Label
+ true
+ true
+
+ Left
+
+
+ Popup
+
+ Auto
+ Normal
+
+ ЗагрузитьИзФайла56
@@ -348,7 +489,6 @@
trueUserCmdsAuto
- InAdditionalSubmenuСправка
@@ -674,10 +814,10 @@
СписокСтрокаПоиска
- 66
+ 82СписокСтрокаПоискаРасширеннаяПодсказка
- 68
+ 84Labeltruetrue
@@ -687,7 +827,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 67
+ 83trueСписок
@@ -697,10 +837,10 @@
СписокСостояниеПросмотра
- 69
+ 85СписокСостояниеПросмотраРасширеннаяПодсказка
- 71
+ 87Labeltruetrue
@@ -710,7 +850,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 70
+ 86trueViewStatusAddition
@@ -721,10 +861,10 @@
СписокУправлениеПоиском
- 72
+ 88СписокУправлениеПоискомРасширеннаяПодсказка
- 74
+ 90Labeltruetrue
@@ -734,7 +874,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 73
+ 89trueSearchControlAddition
@@ -872,6 +1012,7 @@
true
+ ГруппаПользовательскихНастроекNone
@@ -1082,12 +1223,86 @@
ИзменитьВыделенные
+ FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме
+ Auto
+ Auto
+
+
+ ПубликацияРежимОтладки
+
+ ru
+ Режим отладки
+
+ 4
+
+ true
+
+
+
+ ПубликацияРежимОтладки
+
+
+ Auto
+ Auto
+
+
+ ПубликацияОтключена
+
+ ru
+ Отключена
+
+ 5
+
+ true
+
+
+
+ ПубликацияОтключена
+
+
+ Auto
+ Auto
+
+
+ ПубликацияИспользуется
+
+ ru
+ Используется
+
+ 6
+
+ true
+
+
+
+ ПубликацияИспользуется
+
+ AutoAuto
-
+
+
+ 0
+ FormCommandBarImportant
+ 0
+
+
+
+ 0
+ FormCommandBarImportant
+ 2
+
+
+
+ 0
+ FormCommandBarImportant
+ 1
+
+
+
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl
index 6e8ea29f4..3dac1e745 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl
@@ -77,6 +77,11 @@
Элементы.ИзменитьВыделенныеСписок.Видимость = Ложь;
КонецЕсли;
+ Если Параметры.Свойство("ПроверкаДополнительныхОтчетовИОбработок") Тогда
+ Элементы.Создать.Видимость = Ложь;
+ Элементы.СоздатьГруппу.Видимость = Ложь;
+ КонецЕсли;
+
КонецПроцедуры
&НаСервере
@@ -144,6 +149,21 @@
МодульГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список);
КонецПроцедуры
+&НаКлиенте
+Процедура ПубликацияИспользуется(Команда)
+ ИзменитьПубликацию("Используется");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПубликацияОтключена(Команда)
+ ИзменитьПубликацию("Отключена");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПубликацияРежимОтладки(Команда)
+ ИзменитьПубликацию("РежимОтладки");
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -207,4 +227,101 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ИзменитьПубликацию(ВариантПубликации)
+
+ ОчиститьСообщения();
+ Результат = ИзменениеПубликации(ВариантПубликации);
+
+ Если ТипЗнч(Результат) = Тип("Структура") Тогда
+ СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтотОбъект, Результат);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция ИзменениеПубликации(ВариантПубликации)
+
+ НовыйРезультатВыполнения = СтандартныеПодсистемыКлиентСервер.НовыйРезультатВыполнения();
+ ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
+
+ Если ВыделенныеСтроки.Количество() = 0 Тогда
+ ТекстСообщения = НСтр("ru = 'Не выбран ни один дополнительный отчет (обработка)'");
+ ВыводПредупреждения = НовыйРезультатВыполнения.ВыводПредупреждения;
+ ВыводПредупреждения.Использование = Истина;
+ ВыводПредупреждения.Текст = ТекстСообщения;
+ Возврат НовыйРезультатВыполнения;
+ КонецЕсли;
+
+ Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
+
+ Попытка
+ ЗаблокироватьДанныеДляРедактирования(ВыделеннаяСтрока);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ ВыводПредупреждения = НовыйРезультатВыполнения.ВыводПредупреждения;
+ ВыводПредупреждения.Использование = Истина;
+ ВыводПредупреждения.Текст = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
+
+ Элементы.Список.Обновить();
+ Возврат НовыйРезультатВыполнения;
+ КонецПопытки;
+
+ НачатьТранзакцию();
+
+ Объект = ВыделеннаяСтрока.ПолучитьОбъект();
+ Если ВариантПубликации = "Используется" Тогда
+ Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется;
+ ИначеЕсли ВариантПубликации = "РежимОтладки" Тогда
+ Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки;
+ Иначе
+ Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена;
+ КонецЕсли;
+
+ Объект.ДополнительныеСвойства.Вставить("ПроверкаСписка");
+ Если Не Объект.ПроверитьЗаполнение() Тогда
+ ОтменитьТранзакцию();
+ Элементы.Список.Обновить();
+
+ ПредставлениеОшибки = "";
+ МассивСообщений = ПолучитьСообщенияПользователю(Истина);
+ Для Каждого СообщениеПользователю Из МассивСообщений Цикл
+ ПредставлениеОшибки = ПредставлениеОшибки + СообщениеПользователю.Текст + Символы.ПС;
+ КонецЦикла;
+
+ РазблокироватьДанныеДляРедактирования(ВыделеннаяСтрока);
+
+ ВыводПредупреждения = НовыйРезультатВыполнения.ВыводПредупреждения;
+ ВыводПредупреждения.Использование = Истина;
+ ВыводПредупреждения.Текст = ПредставлениеОшибки;
+ Возврат НовыйРезультатВыполнения;
+ КонецЕсли;
+
+ Объект.Записать();
+
+ ЗафиксироватьТранзакцию();
+ РазблокироватьДанныеДляРедактирования(ВыделеннаяСтрока);
+
+ КонецЦикла;
+
+ Элементы.Список.Обновить();
+
+ Если ВыделенныеСтроки.Количество() = 1 Тогда
+ ИмяОбъекта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВыделенныеСтроки[0], "Наименование");
+ ТекстСообщения = НСтр("ru = 'Изменена публикация дополнительного отчета (обработки) ""%1""'");
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ИмяОбъекта);
+ Иначе
+ ТекстСообщения = НСтр("ru = 'Изменена публикация у %1 дополнительных отчетов (обработок)'");
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ВыделенныеСтроки.Количество());
+ КонецЕсли;
+
+ ВыводОповещения = НовыйРезультатВыполнения.ВыводОповещения;
+ ВыводОповещения.Использование = Истина;
+ ВыводОповещения.Текст = ТекстСообщения;
+ ВыводОповещения.Заголовок = НСтр("ru = 'Изменена публикация'");
+
+ Возврат НовыйРезультатВыполнения;
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form
index fa8c1b5eb..41a3ac877 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form
@@ -79,6 +79,7 @@
Lefttrue
+ TumblerEnum.ВариантыПубликацииДополнительныхОтчетовИОбработок.EnumValue.Используется
@@ -106,10 +107,6 @@
ruГруппа публикация ответственный
-
- ru
- Группа публикация ответственный
- ГруппаПубликацияОтветственныйExtendedTooltip179
@@ -300,10 +297,6 @@
ruТипы форм
-
- ru
- Типы форм
- ТипыФормExtendedTooltip182
@@ -323,621 +316,86 @@
Auto
Часть сведений в карточке дополнительного отчета или обработки программа проставляет по умолчанию, они указаны разработчиком в файле внешней обработки или отчета и их невозможно изменить (список команд и дополнительная информация). Каждая дополнительная обработка может предоставлять одну или несколько команд, размещаемых в окнах объектов программы или в разделах программы.
+
В зависимости от назначения и настроек в дополнительных отчетах и обработках может быть несколько вкладок. Команды, которые являются обязательной частью, в этом случае размещаются на специальной вкладке Команды. Другие вкладки могут иметь разное содержимое и наименования. Также на дополнительных вкладках могут размещаться специальные команды.
Существуют два типа дополнительных отчетов и обработок:
Назначаемые - предназначены для конкретных документов или списков программы, которых может быть несколько, при этом список доступных назначений определен разработчиком заранее и включен в текст дополнительного отчета или разработки. При регистрации можно только выбрать их из списка.
-
Глобальные или общие - содержат команды, вызываемые только из разделов командного интерфейса. Команды не зависят от конкретных объектов программы. Список разделов для размещения команд определен разработчиком заранее и включен в файл дополнительного отчета или обработки, его невозможно изменить.
Какие основные сведения необходимо заполнить
+
Глобальные или общие - содержат команды, вызываемые только из разделов командного интерфейса. Команды не зависят от конкретных объектов программы. Список доступных разделов для размещения команд определен разработчиком заранее и включен в файл дополнительного отчета или обработки, его невозможно изменить.
При регистрации дополнительного отчета или обработки необходимо указать основные параметры:
Наименование - указывается разработчиком и выводится автоматически, при необходимости можно изменить.
-
С помощью поля Публикация можно включить или отключить доступность обработки или отчета для использования. Реквизит может принимать следующие значения:
+
С помощью переключателя Публикация можно включить или отключить доступность обработки или отчета, регулируя использование дополнительных отчетов и обработок. Можно сделать дополнительную обработку или отчет доступной для всех, только для администратора или отключить. Реквизит может принимать следующие значения:
-
используется - обработка доступна для использования;
+
Используется - обработка доступна для использования. Команды обработки доступны в программе для всех пользователей с установленной ролью "Использование дополнительных отчетов и обработок".
-
режим отладки - обработка доступна для использования только пользователю с ролью "Добавление и изменение дополнительных обработок" или ролью "Полные права" (в списке отображается красным цветом);
+
Режим отладки - обработка доступна для использования только пользователю с ролью "Добавление и изменение дополнительных обработок" или ролью "Полные права" (в списке отображается красным цветом). При этом остальным пользователям эти команды не видны. Такой режим удобен, если дополнительный отчет или обработка нуждается в проверке.
-
отключена - обработка недоступна для использования, в списке становится неактивной. Такая возможность удобна, если нужно прекратить использование обработки на время, но не удалять ее, в этом случае все настройки сохраняются и при переводе в другой режим обработка начинает выполняться как раньше.
+
Отключена - обработка недоступна для использования, в списке становится неактивной. Такая возможность удобна, если нужно прекратить использование обработки на время, но не удалять ее, в этом случае все настройки сохраняются и при переводе в другой режим обработка начинает выполняться как раньше.
-
Группа - включите дополнительную обработку или отчет в одну из групп в списке. Группы помогают упорядочить дополнительные отчеты и обработки.
+
Группа - включите дополнительную обработку или отчет в одну из групп списка с помощью кнопки . Выберите нужную группу из списка. Группы помогают упорядочить дополнительные отчеты и обработки.
Ответственный - выберите пользователя, который будет отслеживать состояние дополнительного отчета или обработки, обновлять и т.п. По умолчанию "Администратор".
-
Комментарий - введите подробное описание.
Какие действия возможны при регистрации дополнительных отчетов и обработок
-
С помощью команд Загрузить из файла и Выгрузить в файл можно обновить обработку во внутреннем хранилище программы, а также выгрузить ее из хранилища в файл на диске компьютера. При выполнении команд нужно указать путь к файлу. В некоторых режимах использования программы (например, в модели сервиса) для некоторых обработок команды могут быть не доступны.
+
Комментарий - введите подробное описание.
Загрузка из файла
+
С помощью команды Загрузить из файла можно обновить обработку во внутреннем хранилище программы. Укажите путь к файлу, нажмите Открыть.
+
Выгрузка в файл
+
С помощью команды Выгрузить в файл можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите Сохранить. Имя файлу присваивается автоматически, имеется возможность его переименовать.
Безопасный режим работы
-
Поскольку дополнительные отчеты и обработки представляют собой подключаемые программные модули (разработанные на встроенном языке "1С:Предприятия"), они потенциально могут реализовывать любую функциональность, которая могла бы быть реализована в самой программе - выполнять действия, для выполнения которых недостаточно прав у текущего пользователя программы, а также взаимодействовать с внешними ресурсами (Интернет-ресурсы, стороннее ПО, установленное на сервере и т.д.), что при определенных обстоятельствах может служить причиной уязвимости в программе. Для предотвращения подобной ситуации в программе предусмотрен специальный безопасныйрежим подключения дополнительных отчетов и обработок - при использовании этого режима для дополнительных отчетов и обработок становится недоступным использование Интернет-ресурсов и стороннего ПО, а также выполнение операций с данными, для которых недостаточно прав доступа текущего пользователя программы. Для большинства дополнительных отчетов и обработок достаточно подключения в безопасном режиме.
-
В некоторых случаях дополнительные отчеты и обработки не могут функционировать в безопасном режиме - например, дополнительная обработка, реализующая получение данных с некоторого Интернет-сайта не сможет функционировать без возможности подключения к этому Интернет-сайту. В этом случае дополнительный отчет или обработка может быть подключен к программе без установки безопасного режима (это может сделать только администратор). При загрузке такого дополнительного отчета или обработки будет выведено соответствующее предупреждение - такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит.
-
При использовании клиент-серверного режима работы программы и клиентских и серверных лицензий уровня "КОРП" возможно дополнительно ограничить перечень операций для таких обработок только явно запрошенными с помощью создания для дополнительной обработки "персонального" профиля безопасности. В этом случае, для обработки останутся недоступными все потенциально "небезопасные" операции, за исключением явно одобренных администратором (например, будет предоставлена возможность получения данных только с конкретного Интернет-сайта, и останутся недоступными другие Интернет-ресурсы, внешнее ПО и привилегированный режим).
-
Подробнее о безопасном режиме и профилях безопасности см. документацию по платформе 1С:Предприятие.
+
Как правило, большинство обработок должны выполняться в безопасном режиме. Это гарантирует, что они не содержат "ненадежный" программный код, который выполняется на сервере. Однако некоторые обработки могут требовать выполнения в небезопасном режиме. Об этом программа размещает предупреждение в окне дополнительного отчета или обработки. Такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит.
+
Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.
Особенности регистрации назначаемых дополнительных обработок и отчетов
Для дополнительных обработок или отчетов, предназначенных для работы со списками или документами программы, можно выбрать из списка объекты, в которых будут доступны команды обработки или отчета.
Назначение - для выбора объектов программы нажмите гиперссылку, которая принимает значение Не определено (если ни одного объекта не выбрано) или перечисляет выбранные объекты. С помощью флажков выберите нужные объекты.
Показывать - команды обработок или отчетов могут быть доступны:
из списка выбранных объектов, если установлен флажок В списках;
-
- из окна самого объекта, если установлен флажок В формах элементов справочников и документов. Можно установить оба флажка одновременно.
+
из окна самого объекта, если установлен флажок В формах элементов справочников и документов. Можно установить оба флажка одновременно.
Команды - перечень команд заполняется по умолчанию из списка, заполненного разработчиком. Эти команды становятся доступными в указанном в назначении списке или документе при подключении дополнительного отчета или обработки.
Особенности регистрации глобальных (общих) дополнительных отчетов и обработок
-
Для обработок и отчетов, которые вызываются из командного интерфейса (не прикрепляются к объектам конфигурации),необходимо указать разделы интерфейса, в которых команды обработок будут доступны через команды Дополнительные отчеты и Дополнительные обработки. Перечень команд и их настройки могут размещаться на отдельной вкладке Команды.
-
Размещение - для выбора разделов нажмите гиперссылку, которая принимает значение Не опредено (если ни одного раздела не выбрано) или перечисляет выбранные разделы. С помощью флажков выберите нужные разделы программы.
Для каждой команды можно указать:
-
в колонке Быстрый доступ нажмите и выберите из списка пользователей, для которых команда будет доступна по умолчанию. По умолчанию проставлено значение "Нет".
-
в колонке Расписание для каждой команды глобальных отчетов и обработок, исполняемых в серверном контексте, нажмите и задайте расписание, по которому будет запускаться регламентное задание для выполнения этой команды. Расписание неприменимо для команд с вариантом запуска "Открытие форм".
Для обработок и отчетов, которые вызываются из командного интерфейса (не прикрепляются к объектам конфигурации), необходимо указать разделы интерфейса, в которых команды обработок будут доступны через команды Дополнительные отчеты и Дополнительные обработки. Перечень команд и их настройки могут размещаться на отдельной вкладке Команды.
+
Размещение - для выбора разделов нажмите гиперссылку, которая принимает значение Не определено (если ни одного раздела не выбрано) или перечисляет выбранные разделы. С помощью флажков выберите нужные разделы программы, для подтверждения настройки нажмите ОК.
Для каждой команды можно указать:
+
в колонке Быстрый доступ нажмите или клавишу F4 и выберите из списка пользователей, для которых команда будет доступна по умолчанию. По умолчанию проставлено значение "Нет". Добавьте пользователей в список. Для подтверждения выбора и возвращения к дальнейшей настройке нажмите ОК.
+
в колонке Расписание для каждой команды глобальных отчетов и обработок, исполняемых в серверном контексте, нажмите и задайте расписание, по которому будет запускаться регламентное задание для выполнения этой команды. Расписание неприменимо для команд с вариантом запуска Открытие формы.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl
index 28df447f2..3bcadae6f 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl
@@ -25,8 +25,7 @@
// Ограничение отображения расширенной информации
ОтображениеРасширеннойИнформации = ДополнительныеОтчетыИОбработки.ОтображатьРасширеннуюИнформацию(Объект.Ссылка);
- Элементы.ГруппаДополнительнаяИнформация.Видимость = ОтображениеРасширеннойИнформации;
- Элементы.ДополнительнаяИнформация.Видимость = ОтображениеРасширеннойИнформации;
+ Элементы.СтраницаДополнительнаяИнформация.Видимость = ОтображениеРасширеннойИнформации;
// Ограничение возможности загрузки обработки из файла / сохранения в файл
Элементы.ЗагрузитьИзФайла.Видимость =
@@ -983,7 +982,7 @@
КоличествоВариантов = ВариантыДополнительногоОтчета.Количество();
КоличествоКоманд = Объект.Команды.Количество();
- КоличествоВидимыхЗакладок = 0;
+ КоличествоВидимыхЗакладок = 1;
Если Объект.Вид = ВидДополнительныйОтчет И Объект.ИспользуетХранилищеВариантов Тогда
@@ -1000,7 +999,6 @@
НСтр("ru = 'Варианты отчета (%1)'"),
Формат(КоличествоВариантов, "ЧГ="));
КонецЕсли;
-
Иначе
Элементы.СтраницыВарианты.Видимость = Ложь;
КонецЕсли;
@@ -1070,6 +1068,7 @@
КоличествоВидимыхЗакладок = КоличествоВидимыхЗакладок + 1;
+ Элементы.СтраницыВариантыКомандыРазрешения.ТекущаяСтраница = Элементы.СтраницаРазрешения;
Элементы.СтраницаРазрешения.Видимость = Истина;
Элементы.СтраницаРазрешения.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Разрешения (%1)'"),
@@ -1116,10 +1115,15 @@
Иначе
ПредставлениеНазначения = "";
Для Каждого СтрокаРаздел Из Объект.Разделы Цикл
- Если ПредставлениеНазначения <> "" Тогда
- ПредставлениеНазначения = ПредставлениеНазначения + ", ";
+ ПредставлениеРаздела = ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(СтрокаРаздел.Раздел);
+ Если ПредставлениеРаздела = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ Если ПредставлениеНазначения = "" Тогда
+ ПредставлениеНазначения = ПредставлениеРаздела;
+ Иначе
+ ПредставлениеНазначения = ПредставлениеНазначения + ", " + ПредставлениеРаздела;
КонецЕсли;
- ПредставлениеНазначения = ПредставлениеНазначения + ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(СтрокаРаздел.Раздел);
КонецЦикла;
КонецЕсли;
Иначе
@@ -1128,10 +1132,16 @@
Иначе
ПредставлениеНазначения = "";
Для Каждого СтрокаНазначение Из Объект.Назначение Цикл
- Если ПредставлениеНазначения <> "" Тогда
- ПредставлениеНазначения = ПредставлениеНазначения + ", ";
+ Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтрокаНазначение.ОбъектНазначения, "Наименование, ПометкаУдаления");
+ Если Реквизиты.ПометкаУдаления Тогда
+ Продолжить;
+ КонецЕсли;
+ ПредставлениеОбъекта = Реквизиты.Наименование;
+ Если ПредставлениеНазначения = "" Тогда
+ ПредставлениеНазначения = ПредставлениеОбъекта;
+ Иначе
+ ПредставлениеНазначения = ПредставлениеНазначения + ", " + ПредставлениеОбъекта;
КонецЕсли;
- ПредставлениеНазначения = ПредставлениеНазначения + Строка(СтрокаНазначение.ОбъектНазначения);
КонецЦикла;
КонецЕсли;
КонецЕсли;
@@ -1356,7 +1366,7 @@
Если Менеджер.ТипXDTOПредставленияРазрешений().Имя = СтрокаИсходнойТаблицы.ВидРазрешения Тогда
XDTOПредставления = Новый Массив();
XDTOПредставления.Добавить(СтрокаИсходнойТаблицы.Параметры.Получить());
- Набор = Менеджер.НаборЗаписейИзXDTOПредставления(XDTOПредставления, Истина, Объект.Ссылка, Ложь);
+ Набор = Менеджер.НаборЗаписейИзXDTOПредставления(XDTOПредставления, Объект.Ссылка, Объект.Ссылка, Ложь);
КонецЕсли;
КонецЦикла;
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html
index 6bb965b84..c9405123d 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html
@@ -1,30 +1,48 @@
-
-
Список предназначен для хранения в программе дополнительных отчетов и обработок.
-
Программа позволяет подключать и использовать дополнительные (внешние) отчеты и обработки в режиме 1С:Предприятия. Они позволяют расширять функциональность программы, не внося в нее изменений, что может быть востребовано для оперативного расширения функциональности программы без снятия с поддержки поставщика программы.
+
+
Предназначен для хранения в программе дополнительных отчетов и обработок.
+
Программа позволяет подключать и использовать дополнительные (внешние) отчеты и обработки в режиме 1С:Предприятия. Они позволяют расширять возможности программы, не внося в нее изменений, что может быть востребовано для оперативного решения каких-либо задач без снятия с поддержки поставщика программы.
Дополнительные отчеты и обработки разрабатываются в режиме Конфигуратора, для этого надо обращаться к разработчику. Также можно получить их из интернета.
-
Какие сведения выводятся в списке дополнительных отчетов и обработок
+
Для того чтобы использовать дополнительные отчеты и обработки, воспользуйтесь командой Печатные формы, отчеты и обработки в разделе Администрирование, включите соответствующий флажок. После этого становится доступной команда Дополнительные отчеты и обработки. По умолчанию флажок включен.
+
В списке выводится:
Наименование - полное наименование отчета или обработки.
-
Вид - существует несколько видов дополнительных отчетов и обработок, указывается разработчиком. В зависимости от вида различаются функции.
Публикация - видимость дополнительных отчетов и обработок, также обозначается цветом. Красным цветом выделены дополнительные отчеты и обработки в режиме отладки. Серым цветом отображаются дополнительные отчеты и обработки, которые отключены.
+
Публикация - видимость дополнительных отчетов и обработок, также обозначается цветом. Красным цветом выделены дополнительные отчеты и обработки в режиме отладки, которые доступны только администратору. Серым цветом отображаются дополнительные отчеты и обработки, которые отключены. Помеченные на удаление дополнительные отчеты и обработки также становятся неактивными и отображаются серым цветом, а также специальным значком.
Версия - отображается номер версии данной обработки (указывается разработчиком).
-
Ответственный - отслеживает состояние дополнительного отчета или обработки, обновляет версии и т.п. (по умолчанию "Администратор").
Какие дополнительные сведения можно добавить в список
-
-
Имя объекта - включает вид и другие сведения. Заполняется разработчиком, в программе проставляется по умолчанию.
Как сгруппировать дополнительные отчеты и обработки
-
Если список большой, для удобства его использования можно сгруппировать дополнительные отчеты и обработки по различным признакам. Для этого введите необходимое количество групп:
-
Нажмите и введите наименование группы. Можно подчинить новую группу другой. Для этого в поле Родитель выберите группу из списка.
-
Перетащите в группу нужные дополнительные отчеты и обработки с помощью мыши.
Как отобрать нужные дополнительные отчеты и обработки
+
Ответственный - пользователь программы, который назначен ответственным за данный отчет или обработку. Отслеживает состояние дополнительного отчета или обработки, обновляет версии и т.п. (по умолчанию "Администратор").
С помощью команды Все действия - Изменить форму в список можно добавить дополнительные колонки:
+
Имя объекта - включает вид и другие сведения. Заполняется разработчиком, в программе проставляется по умолчанию.
+
Режим совместимости разрешений - версия программы, для которой обработка используется.
+
Комментарий - подробная информация о дополнительном отчете или обработке;
+
Использует хранилище вариантов - свойство для дополнительных отчетов. Принимает значения "Да", если дополнительный отчет хранит данные в хранилище вариантов программы;
+
Использовать для формы списка - принимает значение "Да", если команда, которая вызывает дополнительный отчет или обработку, располагается в окнах списков;
+
Использовать для формы объекта - принимает значение "Да", если команда, которая вызывает дополнительный отчет или обработку, располагается в окнах элементов списков;
+
Информация - описание дополнительной обработки или отчета, которое было написано разработчиком;
+
Имя файла - расширение и имя файла дополнительной обработки (отчета);
+
Безопасный режим - принимает значение "Да", если дополнительный отчет или обработка выполняется в безопасном режиме. Как правило, большинство обработок должны выполняться в безопасном режиме. Это гарантирует, что они не содержат "ненадежный программный код, который выполняется на сервере. Однако некоторые обработки могут требовать выполнения в небезопасном режиме. Об этом программа размещает предупреждение. Такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит. Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.
Добавление дополнительных отчетов или обработок
+
По команде Создать программа предложит выбрать файл внешнего отчета или обработки на компьютере (укажите путь к каталогу на диске) и настроить его параметры. Набор сведений зависит от назначения обработки или отчета. Если указан неверный файл, то программа выдаст сообщение об ошибке, например, сообщение о том, что дополнительная обработка предназначена для другой версии программы.
Группировка дополнительных отчетов и обработок
+
Если список большой, то для удобства его использования можно сгруппировать дополнительные отчеты и обработки по различным признакам. Для этого введите необходимое количество групп:
+
Нажмите и введите наименование группы. Можно подчинить новую группу другой группе. Для этого в поле Родитель выберите группу из списка.
+
Перетащите в группу нужные дополнительные отчеты и обработки с помощью мыши.
Отборы
Если дополнительных отчетов и обработок в списке много, то для удобства поиска можно воспользоваться отборами:
по полю Вид - нажмите Показать все, выберите один из видов дополнительных отчетов и обработок из списка для отбора, например, "Отчеты".
по полю Публикация - нажмите Показать все, выберите нужное состояние для отбора, например, "Используется".
-
по полям Вид и Публикация - можно сочетать два вида отбора в больших списках.
по полям Вид и Публикация - можно сочетать два вида отбора в больших списках.
Загрузка из файла
+
С помощью команды Загрузить из файла можно обновить обработку во внутреннем хранилище программы. Укажите путь к файлу, нажмите Открыть.
+
Выгрузка в файл
+
С помощью команды Выгрузить в файл можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите Сохранить. Имя файлу присваивается автоматически, имеется возможность его переименовать.
Существует несколько видов дополнительных отчетов и обработок:
+
Глобальные отчеты и обработки - используются независимо от данных программы, также называются общими. Команды для их использования размещаются в разделах программы. С помощью глобальных отчетов и обработок можно загружать данные в программу, производить обновление или очистку индекса полнотекстового поиска и т.д. Они содержат команды, вызываемые только из разделов командного интерфейса. Команды не зависят от конкретных объектов программы. Список доступных разделов для размещения команд определен разработчиком заранее и включен в файл дополнительного отчета или обработки, его невозможно изменить.
+
Назначаемые дополнительные отчеты и обработки - предназначены для конкретных документов или списков программы, которых может быть несколько, при этом список доступных назначений определен разработчиком заранее и включен в текст дополнительного отчета или обработки, поэтому при настройке дополнительного отчета или обработки можно только выбирать из этого списка. К этому типу относятся несколько видов дополнительных отчетов и обработок:
+
Отчет - назначаемый дополнительный отчет. С его помощью можно выдать отчет по определенному объекту программы.
+
Заполнение объекта - назначаемая дополнительная обработка, которая позволяет автоматически заполнить или очистить один или несколько элементов списка.
+
Печатная форма - назначаемая дополнительная обработка, с помощью которой можно расширить количество печатных форм документа.
+
Создание связанных объектов - назначаемая дополнительная обработка, которая позволяет быстро заполнить списки с помощью копирования элементов.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl
index 704e0e271..9702e221e 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl
@@ -1,6 +1,6 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-Перем УстанавливатьПривилегированныйРежим, ЭтоГлобальнаяОбработка;
+Перем ЭтоГлобальнаяОбработка;
#Область ОбработчикиСобытий
@@ -9,6 +9,11 @@
Возврат;
КонецЕсли;
+ ПроверкаЭлемента = Истина;
+ Если ДополнительныеСвойства.Свойство("ПроверкаСписка") Тогда
+ ПроверкаЭлемента = Ложь;
+ КонецЕсли;
+
Если НЕ ДополнительныеОтчетыИОбработки.ПроверитьГлобальнаяОбработка(Вид) Тогда
Если НЕ ИспользоватьДляФормыОбъекта И НЕ ИспользоватьДляФормыСписка
И Публикация <> Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена Тогда
@@ -61,8 +66,8 @@
Если Конфликтующие.Количество() > 0 Тогда
Отказ = Истина;
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ Если ПроверкаЭлемента Тогда
+ ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Имя ""%1"", используемое данным отчетом (обработкой), уже занято другим опубликованным дополнительным отчетом (обработкой).
|
|Для продолжения необходимо изменить вид Публикации с ""%2"" на ""%3"" или ""%4"".'"),
@@ -70,9 +75,15 @@
Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется),
Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки),
Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена)
- ),
- ,
- "Объект.Публикация");
+ );
+ Иначе
+ ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Имя ""%1"", используемое отчетом (обработкой) ""%2"", уже занято другим опубликованным дополнительным отчетом (обработкой).'"),
+ ИмяОбъекта,
+ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотОбъект.Ссылка, "Наименование")
+ );
+ КонецЕсли;
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "Объект.Публикация");
КонецЕсли;
КонецЕсли;
@@ -194,10 +205,8 @@
ПубликацияВключена = (Публикация <> Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена);
- // Регламентные задание необходимо изменять в неразделенном режиме.
- Если УстанавливатьПривилегированныйРежим() Тогда
- УстановитьПривилегированныйРежим(Истина);
- КонецЕсли;
+ // Регламентные задание необходимо изменять в привилегированном режиме.
+ УстановитьПривилегированныйРежим(Истина);
// Очистка заданий по командам, которые были удалены из таблицы.
Если НЕ ЭтоНовый() Тогда
@@ -264,10 +273,6 @@
ДополнительныеСвойства.Вставить("ЗаданияДляОбновления", ЗаданияДляОбновления);
- Если УстанавливатьПривилегированныйРежим() Тогда
- УстановитьПривилегированныйРежим(Ложь);
- КонецЕсли;
-
КонецПроцедуры
Процедура ПриЗаписиГлобальнойОбработки(Отказ)
@@ -278,10 +283,8 @@
ПубликацияВключена = (Публикация <> Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена);
- // Регламентные задание необходимо изменять в неразделенном режиме.
- Если УстанавливатьПривилегированныйРежим() Тогда
- УстановитьПривилегированныйРежим(Истина);
- КонецЕсли;
+ // Регламентные задание необходимо изменять в привилегированном режиме.
+ УстановитьПривилегированныйРежим(Истина);
Для Каждого КлючИЗначение Из ДополнительныеСвойства.ЗаданияДляОбновления Цикл
@@ -309,17 +312,12 @@
КонецЦикла;
- Если УстанавливатьПривилегированныйРежим() Тогда
- УстановитьПривилегированныйРежим(Ложь);
- КонецЕсли;
-
КонецПроцедуры
Процедура ПередУдалениемГлобальнойОбработки(Отказ)
- // Регламентные задание необходимо изменять в неразделенном режиме.
- Если УстанавливатьПривилегированныйРежим() Тогда
- УстановитьПривилегированныйРежим(Истина);
- КонецЕсли;
+
+ // Регламентные задание необходимо изменять в привилегированном режиме.
+ УстановитьПривилегированныйРежим(Истина);
Для Каждого Команда Из Команды Цикл
@@ -331,10 +329,6 @@
КонецЕсли;
КонецЦикла;
- Если УстанавливатьПривилегированныйРежим() Тогда
- УстановитьПривилегированныйРежим(Ложь);
- КонецЕсли;
-
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -363,20 +357,6 @@
КонецФункции
-Функция УстанавливатьПривилегированныйРежим()
-
- Если УстанавливатьПривилегированныйРежим = Неопределено Тогда
- УстанавливатьПривилегированныйРежим = Ложь;
- Если РольДоступна(Метаданные.Роли.ДобавлениеИзменениеДополнительныхОтчетовИОбработок)
- И Не ПравоДоступа("Администрирование", Метаданные) Тогда
- УстанавливатьПривилегированныйРежим = Истина;
- КонецЕсли;
- КонецЕсли;
-
- Возврат УстанавливатьПривилегированныйРежим;
-
-КонецФункции
-
////////////////////////////////////////////////////////////////////////////////
// Назначаемые обработки
diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo
index 64a00f719..ef6d969d1 100644
--- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo
+++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo
@@ -399,6 +399,11 @@
Boolean
+
+ ru
+ Определяет может ли дополнительный отчет выводиться в панелях отчетов.
+Заполняется автоматически при подключении дополнительного отчета/обработки.
+
@@ -415,6 +420,10 @@
EnumRef.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок
+
+ ru
+ Режим совместимости, исходя из которого при подключении дополнительного отчета или обработки определяется способ интерпретации запрошенных разрешений. Задается в качестве версии библиотеки "1С:Библиотека стандартных подсистем".
+
@@ -482,7 +491,7 @@
Представлениеru
- Команда
+ НаименованиеString
@@ -492,7 +501,7 @@
ru
- Представление команды в пользовательском интерфейсе
+ Представление команды в пользовательском интерфейсе.
@@ -526,7 +535,7 @@
String
- 9
+ 256
@@ -603,7 +612,7 @@
ru
-
+ Тип объектов, в списке или карточке которых должна выводиться эта дополнительная обработка.
@@ -657,7 +666,7 @@
ru
-
+ Раздел командного интерфейса, в котором должен выводиться этот дополнительный отчет или обработка.
@@ -716,6 +725,10 @@
255
+
+ ru
+ Строковое представление XDTO-типа, описывающего разрешение (служебное поле).
+ Use
@@ -730,6 +743,10 @@
ValueStorage
+
+ ru
+ Описание разрешения, требуемого для дополнительного отчета или обработки (служебное поле).
+ Use
@@ -777,4 +794,13 @@
PersonalComputerMobileDevice
+
+ ПроверкаДополнительныхОтчетовИОбработок
+
+ ru
+ Проверка дополнительных отчетов и обработок
+
+ PersonalComputer
+ MobileDevice
+
diff --git a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Form.form
index 9d763b25e..e8fc1377b 100644
--- a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Form.form
@@ -1,5 +1,41 @@
+
+ ГруппаПользовательскихНастроек
+ 11
+ true
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 12
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ WeakSeparation
+ true
+ true
+ auto
+ Auto
+ Auto
+
+ Список1
@@ -92,10 +128,10 @@
СписокСтрокаПоиска
- 11
+ 13СписокСтрокаПоискаРасширеннаяПодсказка
- 13
+ 15Labeltruetrue
@@ -105,7 +141,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 12
+ 14trueСписок
@@ -115,10 +151,10 @@
СписокСостояниеПросмотра
- 14
+ 16СписокСостояниеПросмотраРасширеннаяПодсказка
- 16
+ 18Labeltruetrue
@@ -128,7 +164,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 15
+ 17trueViewStatusAddition
@@ -139,10 +175,10 @@
СписокУправлениеПоиском
- 17
+ 19СписокУправлениеПоискомРасширеннаяПодсказка
- 19
+ 21Labeltruetrue
@@ -152,7 +188,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 18
+ 20trueSearchControlAddition
@@ -213,6 +249,7 @@
truetrue
+ ГруппаПользовательскихНастроек
diff --git a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl
index bd0b7d45a..5841932f6 100644
--- a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl
+++ b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl
@@ -20,7 +20,6 @@
"Владелец",
ЭлементОтбора,
ВидСравненияКомпоновкиДанных.Равно);
-
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаЭлемента/Help/ru.html
index 947e77b14..ed912d481 100644
--- a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаЭлемента/Help/ru.html
@@ -1,8 +1,29 @@
-
-
Закладка взаимодействий
-
Справочник Закладки взаимодействий предназначен для настройки и хранения отборов, по которым в дальнейшем можно осуществлять быстрый доступ к группе взаимодействий.
Наименование - краткое описание назначение закладки.
-
Настроить отбор - необходимо указать поля по которым будет происходить отбор, значения полей отбора, при необходимости сгруппировать поля отбора.
-
Пример. Менеджер по продажам начинает свой день с отработки не рассмотренных взаимодействий по не закрытым претензиям клиента. В этом случае рекомендуется создать закладку, указать в ней в качестве отбора Тип предмета - Претензия клиента, Статус претензии - Зарегистрирована или Обрабатывается, Признак Рассмотрено у взаимодействия - Ложь. В качестве наименования закладки указать - Нерассмотренные взаимодействия по претензиям в работе.
\ No newline at end of file
+
+
Предназначена для настройки и хранения отборов, по которым в дальнейшем можно осуществлять быстрый доступ к группе документов взаимодействий.
+
Закладки могут быть только индивидуальными. С помощью закладок можно группировать документы взаимодействий, например, по отделам предприятия, используя различные условия отбора.
Напишите Наименование. Поле является обязательным.
+
Для того чтобы задать новое условие для отбора, нажмите Добавить новый элемент. Условий может быть несколько.
+
В колонке Поле выберите поле документа взаимодействий, по которому будет происходить отбор. Для этого в списке укажите нужное поле, затем нажмите Выбрать. Также можно использовать двойной щелчок мыши.
+
В колонке Вид сравнения выберите операцию сравнения, при этом кроме стандартных операций (например, Больше или равно), имеются нестандартные:
+
С помощью операции сравнения В списке можно задать список возможных значений для отбора. Например, в список можно поместить несколько почтовых ящиков партнера, с которых возможна отправка корреспонденции. Операция сравнения Не в списке является отрицанием предыдущей. Например, в другую папку можно поместить остальные письма, кроме писем, полученных от перечисленных в списке отправителей.
+
С помощью операций Содержит или Не содержит можно использовать поиск по части поля (сочетанию букв) - наименования, темы, адреса, если полностью это поле неизвестно. Например, можно задать шаблон почтовых ящиков контактных лиц определенного партнера, если название сайта партнера известно. В этом случае письма с почтовых адресов с этим сочетанием букв будут в одной закладке.
+
Определить, есть ли в поле значение, можно с помощью операции Заполнено или Не заполнено.
Укажите Значение поля отбора. Для этого в зависимости от выбранного поля и вида сравнения выберите из предложенного списка значений нужное, введите значение или создайте свой список значений.
+
При необходимости можно сгруппировать условия отбора. В этом случае по команде Сгруппировать условия к выделенным условиям необходимо применить логические операции И, ИЛИ, Не.
+
Для того чтобы использовать группировку условий, выделите одно из нужных условий, выполните команду Сгруппировать условия, выберите Тип группы: И, ИЛИ, Не, с помощью кнопки мыши перетащите остальные условия в группу или создайте их внутри группы.
+
Если задается несколько условий без группировки, то по умолчанию к таким условиям применяется логическая операция И.
Нажмите кнопку Записать и закрыть, для того чтобы отборы начали применяться.
Пример использования закладки
+
Менеджер по продажам начинает свой день с отработки нерассмотренных взаимодействий по незакрытым претензиям клиента.
+
+
В этом случае рекомендуется создать закладку.
+
+
В качестве наименования закладки можно указать Нерассмотренные взаимодействия по претензиям в работе.
+
+
Указать в качестве условий отбора:
+
+
Тип предмета - "Претензия клиента",
+
+
Статус претензии - "Зарегистрирована" или "Обрабатывается",
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Help/ru.html b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Help/ru.html
new file mode 100644
index 000000000..e584323c2
--- /dev/null
+++ b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Help/ru.html
@@ -0,0 +1,17 @@
+
+
С помощью закладок можно группировать документы в списке взаимодействий, например, разместить их в группы по отделам предприятия, используя различные условия отбора. Закладки могут быть только индивидуальными.
+
Для того чтобы использовать эту возможность, выберите группировку списка взаимодействий По закладкам.
+
Ввод закладок
+
Выполните команду Создать контекстного меню панели группировки по правой кнопки мыши.
+
Для этого выполните команду контекстного меню панели группировки Создать группу.
+
Введите Наименование группы.
+
По умолчанию программа указывает в качестве Владельца текущего пользователя ( выберите Владельца из списка Пользователи), при этом группа закладок вместе с содержимым видна только своему владельцу.
+
Поле Родитель заполняется автоматически, если эта группа входит в вышестоящую группу. При этом группа и ее содержимое видно только владельцу. При необходимости выберите другую группу.
Введите или перетащите с помощью мыши необходимое количество закладок.
Работа с закладками в списке взаимодействий
+
С помощью команды контекстного меню по правой кнопке мыши Добавить в закладки списка Взаимодействия можно выделить документы в отдельные закладки Избранные взаимодействия.
+
Затем такую закладку можно перетащить в одну из папок.
Работа с закладками в карточке пользователя
+
Все действия с закладками пользователя можно произвести также в карточке пользователя.
+
Например, со своими закладками можно поработать, воспользовавшись командой Сведения о пользователе в панели действий раздела Рабочий стол.
Список предназначен для работы с заметками. В списке находятся все заметки, созданные Вами в программе.
+
Открывается по команде Все заметки в разделе Органайзер.
В программе можно вести заметки - произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа и которая никому больше не должна быть доступна. Заметки доступны только их автору.
В заметки не следует помещать информацию, для хранения которой в программе предусмотрены соответствующие списки или документы.
Заметки можно отмечать цветом, помещать на рабочий стол, объединять в группы. Заметки, которые видны на рабочем столе, в списках отмечены жирным шрифтом.
-
Какие сведения о заметках выводятся в списке
+
В списке выводится:
Тема - заголовок заметки.
Предмет - документ или другой объект программы, по поводу которого вводилась заметка.
-
Дата изменения - дата и время записи заметки.
Как ввести новую заметку
-
Заметку можно ввести по поводу документа или другого объекта программы, например, в списке "Демо: Контрагенты". Нажмите - Создать заметку. В этом случае будет автоматически заполнено поле Предмет.
-
В списках "Мои заметки" рабочего стола или "Все заметки" нажмите Создать, заполните необходимые сведения. В этом случае в поле Предмет программа автоматически проставляет "Не задан".
Как сгруппировать заметки
-
Заметки можно сгруппировать по предметам или по темам.
-
Нажмите , введите наименование группы.
-
Создав необходимое количество групп, перетащите заметки мышью в соответствующие группы.
Как отобрать нужные заметки
-
Если заметок в списке много, то можно отобрать нужные по полям Цвет и Предмет. Выберите нужные значения. Можно использовать оба отбора одновременно.
-
Какие дополнительные возможности предусмотрены
+
Дата изменения - дата и время записи заметки.
Ввод заметки
+
Заметку можно ввести по поводу документа или другого объекта программы. В окне объекта программы нажмите - Создать заметку. В этом случае будет автоматически заполнено поле Предмет.
+
В списках Мои заметки рабочего стола или Все заметки нажмите Создать. В этом случае в поле Предмет программа автоматически проставляет "Не задан".
+
Заметки можно сгруппировать, например, по предметам или по темам.
+
Нажмите Создать группу, заполните необходимые поля.
+
Создав необходимое количество групп, перетащите заметки мышью в соответствующие группы.
Отборы
+
Если заметок в списке много, то можно отобрать их по полям Цвет и Предмет.
+
Выберите нужные значения. Можно использовать два отбора одновременно.
Просмотр помеченных на удаление
+
+
Включите флажок Показывать удаленные для того чтобы показывать заметки, помеченные на удаление. Невозможно показать заметки, которые были окончательно удалены из программы администратором.
Напоминание
-
Включите флажок Показывать удаленные для того чтобы показывать заметки, помеченные на удаление. Невозможно показать заметки, которые были окончательно удалены из программы администратором.
-
Можно ввести напоминание по поводу заметки. Нажмите - Напомнить.
Все заметки, введенные по поводу данного объекта программы, отображаются в этом списке.
+
Открывается из карточки объекта программы по команде Мои заметки панели навигации.
В списках объекты, с которыми связаны заметки, помечены значком .
-
Также заметки можно размещать на рабочем столе программы (для этого в окне заметки предусмотрен флажок), вводить на рабочем столе программы без связи с каким-либо предметом, использовать их вместо записной книжки или "стикеров на краях монитора".
-
Для того чтобы просмотреть все заметки, введенные Вами, нажмите соответствующие командуна панели навигации раздела Органайзер.
-
Какие сведения выводятся в списке
-
Заметки, размещенные на рабочем столе программы выделены в списке жирным шрифтом.
+
Также заметки можно размещать на рабочем столе программы (для этого в окне заметки предусмотрен флажок), вводить на рабочем столе программы без связи с каким-либо предметом, использовать их вместо записной книжки или "стикеров на краях монитора".
+
Для того чтобы просмотреть все заметки, введенные Вами, выполните соответствующую командуна панели навигации раздела Органайзер.
+
Заметки, размещенные на рабочем столе программы, выделены в списке жирным шрифтом.
+
В списке выводится:
Тема - заголовок заметки
-
Автор - все видят только свои заметки. Только администратор может просмотреть заметки всех авторов.
Как ввести заметку по поводу данного объекта программы
+
Автор - поле только для администратора, т.к. все остальные пользователи видят только свои заметки. Только администратор может просмотреть заметки всех авторов.
Ввод заметки по поводу объекта программы
-
В карточке объекта нажмите - Создать заметку. Заполните необходимые сведения.
+
В карточке объекта нажмите - Создать заметку.
-
В списке нажмите Создать.
Какие еще действия возможны в списке
+
В списке заметок, связанных с объектом программы, нажмите Создать.
Для того чтобы ввести напоминание по поводу заметки, нажмите - Напомнить.
-
Включите флажок Показывать удаленные для того чтобы показывать заметки, помеченные на удаление. Заметки, которые были администратором удалены из программы, показать невозможно.
Как увидеть все заметки в списке (только для администратора)
-
Включите флажок Показывать заметки других пользователей для того чтобы увидеть все заметки, введенные по поводу данного объекта.
См. также
+
Для того чтобы ввести напоминание по поводу заметки, нажмите - Напомнить.
Просмотр заметок других авторов (только для администратора)
+
Включите флажок Показывать заметки других пользователей, для того чтобы увидеть все заметки, введенные по поводу данного объекта.
Просмотр помеченных на удаление
+
Включите флажок Показывать удаленные, для того чтобы показывать заметки, помеченные на удаление. Заметки, которые были удалены из программы администратором, показать невозможно.
Некоторые заметки (наиболее важные, непомеченные на удаление, у которых включен флажок Отображать на рабочем столе) могут отображаться в этом списке. Часть заметок в списке введены по поводу объектов программы. На панели навигации таких объектов имеется команда для просмотра всех заметок, связанных с ними. В списках эти объекты помечены значком .
-
Как ввести заметку
-
Нажмите Создать. Введенная заметка будет существовать самостоятельно, без привязки к предмету.
-
Как просмотреть все заметки
-
Нажмите одноименную команду на панели навигации раздела Органайзер.
\ No newline at end of file
+
+
Список размещается на рабочем столе программы, предназначен для работы с заметками.
+
В программе можно вести заметки - произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа и которая никому больше не должна быть доступна. Заметки доступны только их автору.
+
В заметки не следует помещать информацию, для хранения которой в программе предусмотрены соответствующие списки или документы.
+
Заметки можно отмечать цветом.
+
Некоторые заметки (наиболее важные, непомеченные на удаление, у которых включен флажок Отображать на рабочем столе) могут отображаться в этом списке.
+
Часть заметок в списке введены по поводу объектов программы. На панели навигации таких объектов имеется команда Мои заметки для просмотра списка заметок, связанных с ними. В списках эти объекты помечены значком . В этом случае в заметке поле Предмет автоматически заполняется ссылкой на объект программы.
+
Ввод заметки
+
Нажмите Создать. Заполните необходимые поля. Введенная заметка будет существовать самостоятельно, без привязки к предмету.
Просмотр всех заметок
+
Выполните соответствующую команду на панели навигации раздела Органайзер.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Заметки/Forms/ФормаГруппы/Help/ru.html b/SSL/src/Catalogs/Заметки/Forms/ФормаГруппы/Help/ru.html
index 46642f4f9..29d21fc8b 100644
--- a/SSL/src/Catalogs/Заметки/Forms/ФормаГруппы/Help/ru.html
+++ b/SSL/src/Catalogs/Заметки/Forms/ФормаГруппы/Help/ru.html
@@ -1,12 +1,12 @@
-
-
Список Все заметки можно группировать. Для этого нужно создать необходимое количество групп и перетащить в них заметки с помощью мыши. Также при вводе заметки можно выбрать группу, в которую она входит.
-
Как ввести группу заметок
+
Ввод группы заметок
Группировать заметки можно по предметам, по поводу которых они введены, или по темам.
В поле Тема введите наименование группы.
Новую группу можно подчинить одной из уже существующих. Для этого в поле Группа заметок нажмите Показать все, выберите группу из списка.
-
В поле Автор программа по умолчанию проставляет текущего пользователя. Изменить поле невозможно.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Help/ru.html
index 082b47480..dbad152d9 100644
--- a/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Help/ru.html
@@ -1,22 +1,23 @@
-
-
В заметке можно разместить произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа и которая больше никому не должна быть доступна.
-
Заметки доступны в карточке объектов программы или на рабочем столе, поэтому в заметке можно быстро на короткое время записать какую-либо информацию, а затем перенести в более подходящий справочник (например, можно использовать заметку как временное место для быстрой записи адреса во время телефонного разговора с клиентом, чтобы затем не спеша перенести этот адрес в справочник Контрагенты).
+
+
В заметке можно поместить произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа и которая больше никому не должна быть доступна.
+
Заметки доступны в карточке объектов программы или на рабочем столе, поэтому в заметке можно быстро на короткое время записать какую-либо информацию, а затем перенести в более подходящий справочник. Например, можно использовать заметку как временное место для быстрой записи адреса во время телефонного разговора с клиентом, для того чтобы затем не спеша перенести этот адрес в справочник Контрагенты.
Также можно использовать заметки и для хранения информации, которая актуальна в течение длительного времени (например, как записную книжку, в которой можно сделать запись о дне рождения коллеги или важного для вас клиента, при этом можно ввести напоминание по поводу заметки, чтобы не забыть поздравить).
-
Как ввести заметку
-
При вводе заметки по поводу какого-либо объекта программы автоматически проставляется Предмет - ссылка, по которой можно открыть этот объект.
-
При вводе заметки на рабочем столе программы или в списке "Все заметки" в поле Предмет автоматически проставляется "не задан".
-
Напишите текст заметки. Для редактирования текста заметки предусмотрены стандартные команды форматирования. Текст можно оформить двумя способами:
+
Заметки можно отмечать цветом, помещать на рабочий стол, объединять в группы.
+
Ввод заметки
+
При вводе заметки по поводу какого-либо объекта программы автоматически проставляется Предмет - ссылка, по которой можно открыть этот объект.
+
При вводе заметки в списке Мои заметки на рабочем столе программы или в списке Все заметки в поле Предмет автоматически проставляется "не задан".
+
Напишите текст заметки. Для редактирования текста заметки предусмотрены стандартные команды форматирования. Часть из них, чаще употребляемая, для удобства работы выведена в виде кнопок. Остальные можно найти в контекстном меню по правой кнопке мыши или в меню Еще.
+
Текст заметки можно оформить двумя способами:
Ввести весь текст, не выделяя заголовка, тогда почти весь текст будет виден в списках заметок.
-
На первой строке заметки можно ввести краткий заголовок, который будет отображаться в списках заметок. Затем нажать клавишу Enter и ввести остальной текст.
Какие действия возможны с заметкой
-
Заметки можно отмечать цветом, помещать на рабочий стол, объединять в группы.
+
В первой строке заметки можно ввести краткий заголовок, который будет отображаться в списках заметок. Затем нажать клавишу Enter и ввести остальной текст.
Наиболее важные заметки могут отображаться в списке Мои заметки на рабочем столе программы. Установите флажок Отображать на рабочем столе. (По умолчанию флажок установлен).
+
+
Для того чтобы различать заметки, можно их отметить значками разных цветов. В списке Все заметки их можно сортировать по цвету. Выберите Цвет.
+
+
Заметки можно сгруппировать, например, по предметам. Выберите Группу заметок из списка, нажав Показать все. Можно ввести новую группу в списке групп.
+
+
В нижней части заметки отображается состояние записи заметки. Если заметку еще не сохраняли, то поле принимает значение Не записано. В поле Записано программа автоматически проставляет дату и время последнего сохранения заметки.
Напоминание
-
Для того чтобы не забыть о событии, упомянутом в заметке, нажмите - Напомнить. Введите напоминание по поводу заметки.
-
-
Наиболее важные заметки могут отображаться в списке "Мои заметки" на рабочем столе программы. Включите флажок Отображать на рабочем столе. (По умолчанию флажок включен).
-
-
Для того чтобы различать заметки, можно их отметить значками разных цветов. В списке Все заметки их можно сортировать по цвету. Выберите Цвет.
-
-
Заметки можно сгруппировать, например, по предметам. Выберите Группу заметок из списка, нажав Показать все. Можно ввести новую группу в списке групп.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Module.bsl
index f0dd236e9..502d0db64 100644
--- a/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/Заметки/Forms/ФормаЭлемента/Module.bsl
@@ -10,6 +10,7 @@
Если Параметры.Свойство("Предмет") Тогда
Объект.Предмет = Параметры.Предмет;
+ Объект.ПредставлениеПредмета = ОбщегоНазначения.ПредметСтрокой(Объект.Предмет);
КонецЕсли;
Элементы.Предмет.Заголовок = Объект.ПредставлениеПредмета;
diff --git a/SSL/src/Catalogs/Заметки/Help/ru.html b/SSL/src/Catalogs/Заметки/Help/ru.html
index 749729089..c5d8ed870 100644
--- a/SSL/src/Catalogs/Заметки/Help/ru.html
+++ b/SSL/src/Catalogs/Заметки/Help/ru.html
@@ -1,22 +1,35 @@
-
-
Список предназначен для управления заметками, введенными всеми пользователями в программе. Полезен для контроля всех заметок в программе.
-
Относится к внутренним данным для администратора, для работы со своими заметками и ввода заметок используйте списки Все заметки или Мои заметки рабочего стола. Группы, введенные пользователями программы в списке "Все заметки", отражаются также и в этом списке.
-
Какие сведения выводятся в списке заметок
-
В список выводятся все поля заметок:
+
+
Предназначен для управления заметками.
+
Список Заметки относится к внутренним данным для администратора. Полезен для контроля всех заметок в программе, введенными всеми пользователями в программе.
+
Для работы со своими заметками и ввода заметок используйте списки Все заметки или Мои заметки рабочего стола. Группы, введенные в списке Все заметки, отражаются также и в этом списке.
+
Открывается по команде Органайзер - Заметки пользователя - Внутренние данные - Заметки.
+
В программе можно вести заметки - произвольную текстовую информацию, для которой не получается подобрать какого-либо подходящего справочника или документа, и которая никому больше не должна быть доступна. Совместно с напоминаниями заметки хорошо подходят в качестве электронной замены "стикеров на краях монитора".
+
В заметке можно быстро на короткое время записать какую-либо информацию, а затем перенести в более подходящий справочник (например, можно использовать заметку как временное место для быстрой записи адреса во время телефонного разговора с клиентом, для того чтобы затем не спеша перенести этот адрес в справочник Контрагенты). Также можно использовать заметки и для хранения информации, которая актуальна в течение длительного времени (например, как записную книжку, в которой можно сделать запись о дне рождения важного для вас клиента).
+
Заметки можно отмечать цветом, помещать на рабочий стол, объединять в группы. Заметки доступны только их автору.
+
Заметки можно вводить как по поводу каких-либо данных программы (например, заметки можно создать по конкретному партнеру, документу товародвижения и т.д.), так и сами по себе (например, их можно использовать вместо записной книжки).
+
В заметки не следует помещать информацию, для хранения которой в программе предусмотрены соответствующие справочники или документы. Например, в заметки не рекомендуется помещать контактную информацию, информацию о задачах и т.д.
+
В списке выводится:
-
Тема - заголовок заметки
+
Тема - заголовок заметки;
-
Автор - пользователь, который создал заметку
+
Автор - пользователь, который создал заметку;
-
Предмет - полное наименование предмета, по поводу которого сделана заметка
+
Предмет - полное наименование предмета, по поводу которого сделана заметка;
-
Содержание - текст заметки
+
Содержание - текст заметки;
-
Для рабочего стола - флажок включен, если заметка видна на рабочем столе
+
Для рабочего стола - флажок включен, если заметка видна на рабочем столе;
-
Пометка - цвет заметки
+
Пометка - цвет заметки;
-
Дата изменения - дата и время записи заметки
+
Дата изменения - дата и время записи заметки;
-
Предмет - содержимое гиперссылки Предмет в заметке
Предмет - содержимое гиперссылки Предмет в заметке.
Ввод заметки
+
Заметку можно ввести по поводу документа или другого объекта программы. Нажмите - Создать заметку. В этом случае будет автоматически заполнено поле Предмет.
+
В списках Мои заметки рабочего стола или Все заметки нажмите Создать, заполните необходимые поля. В этом случае в поле Предмет программа автоматически проставляет "Не задан".
Группировка заметок
+
Заметки можно сгруппировать, например, по предметам или по темам.
+
Нажмите Создать группу, заполните необходимые поля.
+
Создав необходимое количество групп, перетащите заметки мышью в соответствующие группы.
Напоминание
+
+
Можно ввести напоминание по поводу заметки. Нажмите - Напомнить.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Заметки/ObjectModule.bsl b/SSL/src/Catalogs/Заметки/ObjectModule.bsl
index 2c064d3f7..d071f0419 100644
--- a/SSL/src/Catalogs/Заметки/ObjectModule.bsl
+++ b/SSL/src/Catalogs/Заметки/ObjectModule.bsl
@@ -23,14 +23,21 @@
Позиция = Найти(ТекстСодержания, Символы.ПС);
Если Позиция > 0 Тогда
- Наименование = Сред(ТекстСодержания, 1, Позиция - 1);
+ Тема = Сред(ТекстСодержания, 1, Позиция - 1);
Иначе
- Наименование = ТекстСодержания;
+ Тема = ТекстСодержания;
КонецЕсли;
- Если ПустаяСтрока(Наименование) Тогда
- Наименование = "<" + НСтр("ru = 'Пустая заметка'") + ">";
+ Если ПустаяСтрока(Тема) Тогда
+ Тема = "<" + НСтр("ru = 'Пустая заметка'") + ">";
КонецЕсли;
+
+ МаксимальнаяДлинаНаименования = Метаданные().ДлинаНаименования;
+ Если СтрДлина(Тема) > МаксимальнаяДлинаНаименования Тогда
+ Тема = Лев(Наименование, МаксимальнаяДлинаНаименования - 3) + "...";
+ КонецЕсли;
+
+ Наименование = Тема;
КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/Catalogs/Заметки/Заметки.mdo b/SSL/src/Catalogs/Заметки/Заметки.mdo
index 51cee4d84..0b2789286 100644
--- a/SSL/src/Catalogs/Заметки/Заметки.mdo
+++ b/SSL/src/Catalogs/Заметки/Заметки.mdo
@@ -109,6 +109,7 @@
Use
+ trueru
diff --git a/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ЗапланированноеВзаимодействиеПрисоединенныеФайлы.mdo b/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ЗапланированноеВзаимодействиеПрисоединенныеФайлы.mdo
index c2835885e..aeb81a4a2 100644
--- a/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ЗапланированноеВзаимодействиеПрисоединенныеФайлы.mdo
+++ b/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ЗапланированноеВзаимодействиеПрисоединенныеФайлы.mdo
@@ -94,7 +94,7 @@
- Use
+ DontUseManagedUse
@@ -115,7 +115,6 @@
ruАвтор
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -180,7 +179,6 @@
ruДата создания
- Дата добавления файла в базуDate
@@ -223,7 +221,6 @@
ruИзменил
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -247,7 +244,6 @@
ruИндекс картинки
- Индекс иконки, соответствующей расширению файла, для показа в спискеNumber
@@ -271,7 +267,6 @@
ruОписание
- Описание файлаString
@@ -312,7 +307,6 @@
ruПуть к файлу
- Дополнительный путь к файлу на диске (в случае если тип хранения файла - на диске)String
@@ -333,7 +327,6 @@
ruРазмер
- Размер файлаNumber
@@ -424,7 +417,6 @@
ruТекст
- Текст, извлеченный из файла - для полнотекстового поискаValueStorage
@@ -444,7 +436,6 @@
ruТип хранения файла
- Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на дискеEnumRef.ТипыХраненияФайлов
@@ -464,7 +455,6 @@
ruТом
- Ссылка на том (в случае если тип хранения файла - на диске)CatalogRef.ТомаХраненияФайлов
@@ -484,7 +474,6 @@
ruФайл хранилище
- Служебное поле для обмена файлами в РИБValueStorage
@@ -600,7 +589,6 @@
ruОтпечаток
- Отпечаток сертификатаString
@@ -656,7 +644,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
@@ -737,7 +724,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаГруппы/Help/ru.html b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаГруппы/Help/ru.html
new file mode 100644
index 000000000..dfacff322
--- /dev/null
+++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаГруппы/Help/ru.html
@@ -0,0 +1,5 @@
+
+
Укажите Наименование значения дополнительного реквизита (сведения).
+
+
С помощью поля Входит в группу новое значение можно включить в одну из групп. Для ввода новой группы нажмите Создать (клавишу F8), введите наименование. Для выбора из имеющихся групп нажмите Показать все (клавишу F4), выберите нужную группу из списка.
+
+
В случае если для дополнительного реквизита (сведения) включен флажок Значения дополнительно характеризуются весовым коэффициентом, введите числовое значение в поле Весовой коэффициент.
+
+
Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования этого поля необходимо продумывать самостоятельно. Например, для значений свойства "Надежность" можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html
index 59510dc74..75b03d27c 100644
--- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html
+++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html
@@ -1,14 +1,15 @@
-
+
В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение программа предлагает ввести значения в этот список. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений. С помощью этого типа данных можно описывать различные свойства объектов программы.
+
В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение программа предлагает ввести значения в этот список. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений. С помощью этого типа данных можно описывать различные свойства объектов программы.
Тип данных Дополнительное значение часто используется, при этом ввод информации сводится к выбору значений из списка, что ускоряет процесс ввода и снижает количество ошибок.
-
Применяется как обычный список значений, так и сгруппированный.
-
Ввод значений
-
Наименование - укажите наименование значения дополнительного реквизита (сведения).
-
Входит в группу - если список значений большой, то можно создать группы и разнести значения по ним. Нажмите Показать все, выберите группу из списка. Для ввода новой группы нажмите Создать, введите наименование.
-
-
Вес - в случае, если для дополнительного реквизита (сведения) включен флажок Значения дополнительно характеризуются весовым коэффициентом, введите числовое значение. Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования этого поля пользователю необходимо продумывать самостоятельно. Например, для значений свойства "Надежность" можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).
Как сгруппировать значения
+
Применяется как обычный список значений, так и сгруппированный.
+
Выбор значений
+
Выделите нужный элемент.
+
Нажмите Выбрать.
+
Также можно воспользоваться двойным щелчком мыши.
Ввод значений
+
Для ввода значений нажмите Создать, заполните необходимые поля.
+
Группировка значений
Если значений много, список можно сгруппировать. Для этого введите необходимое количество групп. Группы могут существовать независимо друг от друга или подчиняться друг другу.
-
Для ввода группы в список нажмите , введите наименование.
-
Перетащите значения мышью в соответствующие группы.
Укажите Наименование значения дополнительного реквизита (сведения).
+
+
С помощью поля Входит в группу можно подчинить новый элемент одному из имеющихся в списке. Для ввода нового вышестоящего элемента нажмите Создать (клавишу F8). Для выбора из имеющихся элементов нажмите Показать все (клавишу F4), выберите нужный элемент из списка.
+
+
В случае если для дополнительного реквизита (сведения) включен флажок Значения дополнительно характеризуются весовым коэффициентом, введите числовое значение в поле Весовой коэффициент.
+
+
Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования весового коэффициента необходимо продумывать самостоятельно. Например, для значений свойства "Надежность" можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html
index 0e92b79c3..45729dace 100644
--- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html
+++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html
@@ -1,12 +1,13 @@
-
+
В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение (иерархия) программа предлагает ввести значения в этот список. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений. С помощью этого типа данных можно описывать различные свойства объектов программы.
-
Тип данных Дополнительное значение (иерархия) часто используется, при этом ввод информации сводится к выбору значений из списка, что ускоряет процесс ввода и снижает количество ошибок.
+
В программе предусмотрена возможность использовать дополнительные реквизиты (сведения) нескольких типов. Тип данных выбирается при настройке дополнительных реквизитов (сведений). При выборе типа данных Дополнительное значение (иерархия) программа предлагает ввести значения в этот список. При этом для каждого дополнительного реквизита или сведения данного типа используется свой список значений.
+
Тип данных Дополнительное значение (иерархия) часто используется, при этом ввод информации сводится к выбору значений из списка, что ускоряет процесс ввода и снижает количество ошибок. С помощью этого типа данных можно описывать различные свойства объектов программы.
В списке можно использовать иерархию значений. Элементы в таком списке имеют одинаковые свойства, но могут иметь подчиненные элементы. При этом иерархия может быть довольно сложной.
-
При вводе можно выбрать любой элемент иерархии, в отличие от сгруппированного списка дополнительных значений, в котором наименования групп выбрать в качестве значения невозможно.
-
Ввод значений
-
Наименование - укажите наименование значения дополнительного реквизита (сведения).
-
Входит в группу - можно подчинить новый элемент одному из имеющихся в списке. Для ввода нового вышестоящего элемента нажмите Создать (клавишу F8), введите наименование. Для выбора из имеющихся элементов нажмите Показать все (клавишу F4), выберите нужный элемент из списка.
-
-
Вес - в случае, если для дополнительного реквизита (сведения) включен флажок Значения дополнительно характеризуются весовым коэффициентом, введите числовое значение. Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования этого поля пользователю необходимо продумывать самостоятельно. Например, для значений свойства "Надежность" можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).
Можно выбрать любой элемент иерархии, в отличие от сгруппированного списка дополнительных значений, в котором наименования групп выбрать в качестве значения невозможно.
+
Выбор значений
+
Выделите нужный элемент.
+
Нажмите Выбрать.
+
Также можно воспользоваться двойным щелчком мыши.
Ввод значений
+
Для ввода значений нажмите Создать. Заполните необходимые поля.
Просмотр свойств идентификатора объекта метаданных.
Заполняется автоматически при первом запуске (и каждом обновлении) конфигурации, согласно метаданным конфигурации, а также автоматически актуализируется при каждом обновлении версии конфигурации (учитываются переименованные, добавленные и удаленные объекты метаданных).
Предназначен для хранения и просмотра идентификаторов объектов метаданных. Данные списка не редактируются, предназначены для обеспечения работы программы.
Список заполняется автоматически при первом запуске (и каждом обновлении) конфигурации, согласно метаданным конфигурации, а также автоматически актуализируется при каждом обновлении версии конфигурации (учитываются переименованные, добавленные и удаленные объекты метаданных).
В списке в виде дерева выводятся все объекты программы, сгруппированные по типам. По умолчанию выводится поле Синоним объекта. По команде Все действия - Изменить форму можно добавить в список поля Полное имя и Идентификатор.
Нажмите для просмотра подробных сведений об идентификаторе выбранного объекта.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl
index 020594c76..a1a49f55a 100644
--- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl
+++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl
@@ -66,19 +66,38 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Пакетная загрузка данных в этот справочник небезопасна
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Возвращает Истина, если проверка, обновление и замена дублей заверешена.
-Функция ДанныеОбновлены() Экспорт
+//
+// Параметры:
+// Сообщить - Булево - если передать Истина, тогда будет вызвано исключение
+// по ошибке обращения к необновленным параметрам работы программы.
+//
+Функция ДанныеОбновлены(Сообщить = Ложь) Экспорт
- Отказ = Ложь;
+ Если Сообщить Тогда
+ Отказ = Неопределено;
+ Иначе
+ Отказ = Ложь;
+ КонецЕсли;
СтандартныеПодсистемыСервер.ПроверитьОбновлениеПараметровРаботыПрограммы(
"ПараметрыБазовойФункциональности", "ИдентификаторыОбъектовМетаданных", Отказ);
- Возврат Не Отказ;
+ Возврат Отказ <> Истина;
КонецФункции
@@ -94,7 +113,7 @@
//
// ТолькоПроверка - Булево (возвращаемое значение) - не производит никаких изменений,
// а лишь выполняет установку флажков ЕстьИзменения, ЕстьУдаленные,
-// ЕстьКритичныеИзменения, ТребуетсяОбновитьКэш.
+// ЕстьКритичныеИзменения.
//
// ЕстьКритичныеИзменения - (возвращаемое значение) - в этот параметр возвращается
// значение Истина, если найдены критичные изменения, иначе не изменяется.
@@ -103,22 +122,22 @@
// - добавление нового элемента справочника.
// В общем случае, критичные изменения требуют монопольный режим.
//
-// ТребуетсяОбновитьКэш - Булево (возвращаемое значение) - в этот параметр возвращается
-// значение Истина, если кэш идентификаторов объектов метаданных
-// в константе ПараметрыБазовойФункциональности нужно обновить.
-//
// СписокКритичныхИзменений - Строка (возвращаемое значение) - содержит полные имена
// объектов метаданных, которые добавлены или требуется добавить,
// а также объектов метаданных, полные имена которых изменены или требуется изменить.
//
-Процедура ВыполнитьОбновлениеДанных(ЕстьИзменения = Ложь, ЕстьУдаленные = Ложь, ТолькоПроверка = Ложь, ЕстьКритичныеИзменения = Ложь,
- ТребуетсяОбновитьКэш = Ложь, СписокКритичныхИзменений = "") Экспорт
+Процедура ВыполнитьОбновлениеДанных(ЕстьИзменения = Ложь, ЕстьУдаленные = Ложь, ТолькоПроверка = Ложь,
+ ЕстьКритичныеИзменения = Ложь, СписокКритичныхИзменений = "") Экспорт
ПроверкаИспользования();
УстановитьПривилегированныйРежим(Истина);
- ЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке(ТолькоПроверка, ЕстьИзменения);
+ ЕстьТекущиеИзменения = Ложь;
+ ЗаменитьДублиПодчиненногоУзлаНайденныеПриЗагрузке(ТолькоПроверка, ЕстьТекущиеИзменения);
+ Если ЕстьТекущиеИзменения Тогда
+ ЕстьИзменения = Истина;
+ КонецЕсли;
СвойстваОбъектовМетаданных = СвойстваОбъектовМетаданных();
СправочникМенеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени("Справочник.ИдентификаторыОбъектовМетаданных");
@@ -138,8 +157,6 @@
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ИдентификаторыОбъектовМетаданных");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
- ЭлементБлокировки = Блокировка.Добавить("Константа.ПараметрыБазовойФункциональности");
- ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
СнятьМонопольныйРежим = Ложь;
НачатьТранзакцию();
@@ -280,18 +297,8 @@
+ Символы.ПС + СписокНовыхОбъектовМетаданных + Символы.ПС;
КонецЕсли;
- Если НЕ (ТолькоПроверка ИЛИ МонопольныйРежим()) Тогда
- // Если кэш нужно обновить, тогда тоже нужен монопольный режим.
- ТребуетсяОбновитьТекущийКэш = Ложь;
- ОбновитьКэшИдентификаторов(Выгрузка, ТребуетсяОбновитьТекущийКэш, Истина);
- Если ТребуетсяОбновитьТекущийКэш Тогда
- ТребуетсяОбновитьКэш = Истина;
- КонецЕсли;
- КонецЕсли;
-
Если НЕ (ТолькоПроверка ИЛИ МонопольныйРежим())
- И ( ЕстьТекущиеКритичныеИзменения = Истина
- ИЛИ ТребуетсяОбновитьТекущийКэш = Истина) Тогда
+ И ЕстьТекущиеКритичныеИзменения Тогда
ЗафиксироватьТранзакцию();
Попытка
@@ -341,6 +348,7 @@
Продолжить;
КонецЕсли;
+ ЕстьТекущиеИзменения = Истина;
ЕстьИзменения = Истина;
Если ТолькоПроверка Тогда
ЗафиксироватьТранзакцию();
@@ -349,12 +357,11 @@
ЗаполнитьЗначенияСвойств(ТаблицаОбъект, Свойства);
ТаблицаОбъект.КлючОбъектаМетаданных = Новый ХранилищеЗначения(Свойства.КлючОбъектаМетаданных);
- ТаблицаОбъект.ДополнительныеСвойства.Вставить("ВыполняетсяАвтоматическоеОбновлениеДанныхСправочника");
+ ТаблицаОбъект.ОбменДанными.Загрузка = Истина;
+ ПроверитьОбъектПередЗаписью(ТаблицаОбъект, Истина);
ТаблицаОбъект.Записать();
КонецЦикла;
- ОбновитьКэшИдентификаторов(Выгрузка, ЕстьИзменения, ТолькоПроверка);
-
Если ЗначениеЗаполнено(СписокКритичныхИзменений) Тогда
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Идентификаторы объектов метаданных.Выполнены критичные изменения'",
@@ -386,6 +393,11 @@
УстановитьМонопольныйРежим(Ложь);
КонецЕсли;
+ Если Не ТолькоПроверка Или Не ЕстьТекущиеИзменения Тогда
+ СтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы(
+ "ПараметрыБазовойФункциональности", "ИдентификаторыОбъектовМетаданных");
+ КонецЕсли;
+
КонецПроцедуры
// Возвращает реквизиты справочника, которые образуют естественный ключ
@@ -713,25 +725,6 @@
КонецФункции
-// Только для внутреннего использования.
-Функция ПолноеИмяИспользуется(ПолноеИмя, КромеИдентификатора = Неопределено) Экспорт
-
- Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("ПолноеИмя", ПолноеИмя);
- Запрос.УстановитьПараметр("Ссылка", КромеИдентификатора);
- Запрос.Текст =
- "ВЫБРАТЬ ПЕРВЫЕ 1
- | ИСТИНА КАК ЗначениеИстина
- |ИЗ
- | Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных
- |ГДЕ
- | ИдентификаторыОбъектовМетаданных.Ссылка <> &Ссылка
- | И ИдентификаторыОбъектовМетаданных.ПолноеИмя = &ПолноеИмя";
-
- Возврат НЕ Запрос.Выполнить().Пустой();
-
-КонецФункции
-
// Только для внутреннего использования.
// ПолноеИмя в объекте должно быть уже установлено и корректно.
//
@@ -1050,14 +1043,74 @@
КонецФункции
-// Только для внутреннего использования
-Функция ЭтоКоллекция(Ссылка) Экспорт
+// Только для внутреннего использования.
+Процедура ПроверитьОбъектПередЗаписью(Объект, АвтоматическоеОбновление = Ложь) Экспорт
- Возврат СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(
- ).Найти(Ссылка, "ИдентификаторКоллекции") <> Неопределено;
+ Если НЕ АвтоматическоеОбновление Тогда
+
+ Если Объект.ЭтоНовый() Тогда
+
+ ВызватьИсключениеПоОшибке(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Создание нового идентификатора объекта метаданных
+ |возможно только автоматически при обновлении данных справочника.'"),
+ Объект.ПолноеИмя));
+
+ ИначеЕсли ЗапрещеноИзменятьПолноеИмя(Объект) Тогда
+
+ ВызватьИсключениеПоОшибке(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'При изменении идентификатора объекта метаданных указано
+ |полное имя ""%1"", которое может быть
+ |установлено только автоматически при обновлении данных справочника.'"),
+ Объект.ПолноеИмя));
+
+ ИначеЕсли ПолноеИмяИспользуется(Объект.ПолноеИмя, Объект.Ссылка) Тогда
+
+ ВызватьИсключениеПоОшибке(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'При изменении идентификатора объекта метаданных указано
+ |полное имя ""%1"",
+ |которое уже используется в справочнике.'"),
+ Объект.ПолноеИмя));
+
+ КонецЕсли;
+
+ ОбновитьСвойстваИдентификатора(Объект);
+ КонецЕсли;
-КонецФункции
+ Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
+
+ Если Объект.ЭтоНовый()
+ И Не ЭтоКоллекция(Объект.ПолучитьСсылкуНового()) Тогда
+
+ ВызватьИсключениеПоОшибке(
+ НСтр("ru = 'Добавление новых элементов может быть выполнено
+ |только в главном узле распределенной информационной базы.'"));
+ КонецЕсли;
+
+ Если Не Объект.ПометкаУдаления
+ И Не ЭтоКоллекция(Объект.Ссылка) Тогда
+
+ Если ВРег(Объект.ПолноеИмя) <> ВРег(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "ПолноеИмя")) Тогда
+ ВызватьИсключениеПоОшибке(
+ НСтр("ru = 'Изменение реквизита ""Полное имя"" может быть выполнено
+ |только в главном узле распределенной информационной базы.'"));
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+// Только для внутреннего использования.
+Процедура ВызватьИсключениеПоОшибке(ТекстОшибки) Экспорт
+
+ ВызватьИсключение
+ НСтр("ru = 'Ошибка при работе со справочником ""Идентификаторы объектов метаданных"".'") + "
+ |
+ |" + ТекстОшибки;
+
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// Вспомогательные процедуры и функции
Функция ВыгрузкаВсехИдентификаторов()
@@ -1433,86 +1486,6 @@
КонецФункции
-Процедура ОбновитьКэшИдентификаторов(Выгрузка, ЕстьИзменения, ТолькоПроверка);
-
- // Обновление параметра работы программы ИдентификаторыОбъектовМетаданных,
- // используемого, как кэш для ускорения работы программы.
- ПоПолнымИменам = Новый Соответствие; // Идентификатор по полному имени.
- ПоТипам = Новый Соответствие; // Идентификатор по типам (основным).
- ТипыПоИдентификаторам = Новый Соответствие; // Один из типов по идентификатору.
- ПолныеИменаПоИдентификаторам = Новый Соответствие; // Полное имя по идентификатору.
-
- НайденныеСтроки = Выгрузка.НайтиСтроки(Новый Структура("ПометкаУдаления", Ложь));
- Для каждого Свойства Из НайденныеСтроки Цикл
-
- Если Свойства.ОбъектМетаданных = Неопределено Тогда
- Продолжить;
- КонецЕсли;
-
- // Параметры для быстрого поиска идентификатора.
- ПоПолнымИменам.Вставить(Свойства.ПолноеИмя, Свойства.Ссылка);
-
- Если НЕ Свойства.БезДанных
- И НЕ Метаданные.Константы.Содержит(Свойства.ОбъектМетаданных) Тогда
-
- ТипСсылки = СтандартныеПодсистемыСервер.ТипСсылкиИлиКлючаЗаписиОбъектаМетаданных(
- Свойства.ОбъектМетаданных);
-
- ТипОбъекта = СтандартныеПодсистемыСервер.ТипОбъектаИлиНабораЗаписейОбъектаМетаданных(
- Свойства.ОбъектМетаданных);
-
- ПоТипам.Вставить(ТипСсылки, Свойства.Ссылка);
- ПоТипам.Вставить(ТипОбъекта, Свойства.Ссылка);
- КонецЕсли;
-
- // Параметры для быстрого поиска объекта метаданных.
- ПолныеИменаПоИдентификаторам.Вставить(Свойства.Ссылка, Свойства.ПолноеИмя);
-
- Если Свойства.КлючОбъектаМетаданных <> Неопределено
- И Свойства.КлючОбъектаМетаданных <> Тип("Неопределено") Тогда
-
- ТипыПоИдентификаторам.Вставить(Свойства.Ссылка, Свойства.КлючОбъектаМетаданных);
- КонецЕсли;
- КонецЦикла;
-
- КэшИдентификаторов = Новый Структура;
- КэшИдентификаторов.Вставить("ПоПолнымИменам", ПоПолнымИменам);
- КэшИдентификаторов.Вставить("ПоТипам", ПоТипам);
- КэшИдентификаторов.Вставить("ТипыПоИдентификаторам", ТипыПоИдентификаторам);
- КэшИдентификаторов.Вставить("ПолныеИменаПоИдентификаторам", ПолныеИменаПоИдентификаторам);
-
- КэшИдентификаторов = ОбщегоНазначения.ФиксированныеДанные(КэшИдентификаторов);
-
- Параметры = СтандартныеПодсистемыСервер.ПараметрыРаботыПрограммы(
- "ПараметрыБазовойФункциональности");
-
- Сохраненные = Неопределено;
-
- Если Параметры.Свойство("ИдентификаторыОбъектовМетаданных") Тогда
- Сохраненные = Параметры.ИдентификаторыОбъектовМетаданных;
-
- Если НЕ ОбщегоНазначения.ДанныеСовпадают(КэшИдентификаторов, Сохраненные) Тогда
- Сохраненные = Неопределено;
- КонецЕсли;
- КонецЕсли;
-
- Если Сохраненные = Неопределено Тогда
- ЕстьИзменения = Истина;
- Если ТолькоПроверка Тогда
- Возврат;
- КонецЕсли;
- СтандартныеПодсистемыСервер.УстановитьПараметрРаботыПрограммы(
- "ПараметрыБазовойФункциональности",
- "ИдентификаторыОбъектовМетаданных",
- КэшИдентификаторов);
-
- КонецЕсли;
-
- СтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы(
- "ПараметрыБазовойФункциональности", "ИдентификаторыОбъектовМетаданных");
-
-КонецПроцедуры
-
Функция МетаданныеНайтиПоПолномуИмени(ПолноеИмя)
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
@@ -1581,6 +1554,31 @@
КонецФункции
+Функция ПолноеИмяИспользуется(ПолноеИмя, КромеИдентификатора = Неопределено)
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("ПолноеИмя", ПолноеИмя);
+ Запрос.УстановитьПараметр("Ссылка", КромеИдентификатора);
+ Запрос.Текст =
+ "ВЫБРАТЬ ПЕРВЫЕ 1
+ | ИСТИНА КАК ЗначениеИстина
+ |ИЗ
+ | Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных
+ |ГДЕ
+ | ИдентификаторыОбъектовМетаданных.Ссылка <> &Ссылка
+ | И ИдентификаторыОбъектовМетаданных.ПолноеИмя = &ПолноеИмя";
+
+ Возврат НЕ Запрос.Выполнить().Пустой();
+
+КонецФункции
+
+Функция ЭтоКоллекция(Ссылка)
+
+ Возврат СтандартныеПодсистемыПовтИсп.СвойстваКоллекцийОбъектовМетаданных(
+ ).Найти(Ссылка, "ИдентификаторКоллекции") <> Неопределено;
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции замены идентификатора в базе данных
diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl
index 06fda95e7..5fab0ddfa 100644
--- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl
+++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl
@@ -7,7 +7,7 @@
//
Процедура ПередЗаписью(Отказ)
- Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования();
+ СтандартныеПодсистемыПовтИсп.СправочникИдентификаторыОбъектовМетаданныхПроверкаИспользования();
// Отключение механизма регистрации объектов.
ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
@@ -21,63 +21,14 @@
Возврат;
КонецЕсли;
- Если НЕ ДополнительныеСвойства.Свойство("ВыполняетсяАвтоматическоеОбновлениеДанныхСправочника") Тогда
-
- Если ЭтоНовый() Тогда
-
- ВызватьИсключениеПоОшибке(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Создание нового идентификатора объекта метаданных
- |возможно только автоматически при обновлении данных справочника.'"),
- ПолноеИмя));
-
- ИначеЕсли Справочники.ИдентификаторыОбъектовМетаданных.ЗапрещеноИзменятьПолноеИмя(ЭтотОбъект) Тогда
-
- ВызватьИсключениеПоОшибке(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'При изменении идентификатора объекта метаданных указано
- |полное имя ""%1"", которое может быть
- |установлено только автоматически при обновлении данных справочника.'"),
- ПолноеИмя));
-
- ИначеЕсли Справочники.ИдентификаторыОбъектовМетаданных.ПолноеИмяИспользуется(ПолноеИмя, Ссылка) Тогда
-
- ВызватьИсключениеПоОшибке(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'При изменении идентификатора объекта метаданных указано
- |полное имя ""%1"",
- |которое уже используется в справочнике.'"),
- ПолноеИмя));
-
- КонецЕсли;
-
- Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьСвойстваИдентификатора(ЭтотОбъект);
- КонецЕсли;
-
- Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
-
- Если ЭтоНовый()
- И Не Справочники.ИдентификаторыОбъектовМетаданных.ЭтоКоллекция(ПолучитьСсылкуНового()) Тогда
-
- ВызватьИсключениеПоОшибке(
- НСтр("ru = 'Добавление новых элементов может быть выполнено
- |только в главном узле распределенной информационной базы.'"));
- КонецЕсли;
-
- Если Не ПометкаУдаления
- И Не Справочники.ИдентификаторыОбъектовМетаданных.ЭтоКоллекция(Ссылка) Тогда
-
- Если ВРег(ПолноеИмя) <> ВРег(ОбщегоНазначения.ПолучитьЗначениеРеквизита(Ссылка, "ПолноеИмя")) Тогда
- ВызватьИсключениеПоОшибке(
- НСтр("ru = 'Изменение реквизита ""Полное имя"" может быть выполнено
- |только в главном узле распределенной информационной базы.'"));
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
+ Справочники.ИдентификаторыОбъектовМетаданных.ПроверитьОбъектПередЗаписью(ЭтотОбъект);
КонецПроцедуры
// Предотвращает удаление идентификаторов объектов метаданных не помеченных на удаление.
Процедура ПередУдалением(Отказ)
- Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования();
+ СтандартныеПодсистемыПовтИсп.СправочникИдентификаторыОбъектовМетаданныхПроверкаИспользования();
// Отключение механизма регистрации объектов.
// Ссылки идентификаторов удаляются независимо во всех узлах
@@ -89,25 +40,13 @@
КонецЕсли;
Если НЕ ПометкаУдаления Тогда
- ВызватьИсключениеПоОшибке(
+ Справочники.ИдентификаторыОбъектовМетаданных.ВызватьИсключениеПоОшибке(
НСтр("ru = 'Удаление идентификаторов объектов метаданных, у которых значение
|реквизита ""Пометка удаления"" установлено Ложь недопустимо.'"));
КонецЕсли;
КонецПроцедуры
-////////////////////////////////////////////////////////////////////////////////
-// Вспомогательные процедуры и функции
-
-Процедура ВызватьИсключениеПоОшибке(ТекстОшибки);
-
- ВызватьИсключение
- НСтр("ru = 'Ошибка при работе со справочником ""Идентификаторы объектов метаданных"".'") + "
- |
- |" + ТекстОшибки;
-
-КонецПроцедуры
-
#КонецОбласти
#КонецЕсли
diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo
index 8204c110a..b3da75810 100644
--- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo
+++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo
@@ -121,7 +121,7 @@
Managedru
- Идентификатор объекта метаданых
+ Идентификатор объекта метаданныхru
diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form
index 070590f11..0ce7f1f4f 100644
--- a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Form.form
@@ -1,5 +1,99 @@
+
+ ГруппаПользовательскихНастроек
+ 34
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 35
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 32
+
+ СписокИзменитьВыделенные
+ 30
+ true
+ true
+
+ true
+
+
+ СписокИзменитьВыделенныеРасширеннаяПодсказка
+ 31
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ИзменитьВыделенные
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 33
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -237,10 +331,10 @@
СписокСтрокаПоиска
- 32
+ 36СписокСтрокаПоискаРасширеннаяПодсказка
- 34
+ 38Labeltruetrue
@@ -250,7 +344,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 33
+ 37trueСписок
@@ -260,10 +354,10 @@
СписокСостояниеПросмотра
- 35
+ 39СписокСостояниеПросмотраРасширеннаяПодсказка
- 37
+ 41Labeltruetrue
@@ -273,7 +367,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 36
+ 40trueViewStatusAddition
@@ -284,10 +378,10 @@
СписокУправлениеПоиском
- 38
+ 42СписокУправлениеПоискомРасширеннаяПодсказка
- 40
+ 44Labeltruetrue
@@ -297,7 +391,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 39
+ 43trueSearchControlAddition
@@ -358,39 +452,13 @@
truetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1
-
- СписокИзменитьВыделенные
- 30
- true
- true
-
- true
-
-
- СписокИзменитьВыделенныеРасширеннаяПодсказка
- 31
- Label
- true
- true
-
- Left
-
-
- Form.Command.ИзменитьВыделенные
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Left
- trueOnCreateAtServer
diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl
index a432556cd..0cc5bfe57 100644
--- a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl
+++ b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl
@@ -16,8 +16,7 @@
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ВладелецГрафика", , ВидСравненияКомпоновкиДанных.НеЗаполнено, , ,
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
-
+ РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Help/ru.html
index f01194021..3d14959b2 100644
--- a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Help/ru.html
@@ -1,41 +1,28 @@
-
-
Сведения о графике работы
-
Необходимо ввести нужное количество графиков работы на основании производственного календаря. Можно использовать графики работы как для предприятия в целом, так и для его подразделений (например, график работы склада).
-
В зависимости от производственной необходимости или в зависимости от потребностей тех подразделений, для которых график работы предназначен, графики работы могут настраиваться на весь год или на определенный период. Также настройка графика работы может проводиться время от вермени в течение всего года, на некоторое количество дней вперед.
-
Как ввести новый график работы
-
Введите Наименование.
-
Укажите Период заполнения графика, например, с 01.01.2014 по 31.07.2014. Для этого можно:
+
+
Сведения о графике работы.
+
График работы вводится на основании производственного календаря. Графики работы можно ввести как для предприятия в целом, так и для его подразделений (например, график работы склада).
+
В зависимости от производственной необходимости или от потребностей тех подразделений, для которых график работы предназначен, графики работы могут настраиваться на весь год или на определенный период. Также настройка графика работы может проводиться время от времени в течение всего года, на некоторое количество дней вперед.
+
Ввод нового графика работы
+
Введите Наименование, например, "График работы отдела информационных технологий".
+
Укажите Период заполнения графика, например, с 01.01.2014 по 31.07.2014.
+
Для этого можно:
написать необходимые даты вручную.
-
выбрать из календаря, нажав на .
-
по умолчанию началом периода является 1 января текущего года.
-
если в качестве конца периода выбран конец года, то это поле можно не заполнять.
Выберите Производственный календарь, на основании которого будет настраиваться график. Если производственный календарь на предприятии единственный, то он будет проставлен по умолчанию.
-
Выберите Способ заполнения. В зависимости от способа заполнения графики работы могут быть двух видов:
-
Недельные (почасовые) - способ заполнения По неделям.
-
Циклические (с циклами произвольной длины) - способ заполнения По циклам.
-
введите длину цикла, например, длиной 5 дней.
-
введите начало цикла, например, начиная с 01.01.2014.
Составьте Шаблон заполнения. Это можно сделать двумя способами:
-
Укажите флажками рабочие дни. Этого достаточно, чтобы в графике работы отразились рабочие и выходные дни.
-
Введите расписание работы для каждого рабочего дня с помощью гиперссылки Заполнить расписание. После заполнения в гиперссылке будут указано общее количество часов и режим работы.
-
Заполните Расписание работы для каждого рабочего дня недели или цикла с помощью кнопки Добавить. Введите Время начала и Время окончания. Если в работе предусмотрены перерывы, то расписание необходимо заполнить в несколько строк.
-
В расписание работы помещается только рабочее время. Выходные дни не заполняются.
При необходимости включите флажок Учитывать праздники. В этом случае из состава рабочих дней будут исключаться дни, выпадающие на праздники, указанные в выбранном производственном календаре.
-
Eсли в графике работы учитываются праздники и расписание предпраздничного дня будет отличаться, с помощью гиперссылки Заполнить расписание заполните Расписание предпраздничного дня по аналогии с расписанием работы.
-
Введите Горизонт планирования - если он заполнен, то программа сравнивает период заполнения графика с числом месяцев горизонта планирования, и выдает предупреждение, если график не был заполнен до нужной даты.
+
выбрать из календаря, нажав .
по умолчанию началом периода является 1 января текущего года.
+
если концом периода является 31 декабря, то это поле можно не заполнять - по умолчанию программа заполняет график до конца года.
Выберите из спискаПроизводственный календарь, на основании которого будет настраиваться график. Их может быть несколько, т.к. в разных регионах предусмотрен разный состав праздничных дней и соответственно переносов. Если производственный календарь на предприятии единственный, то он проставляется программой по умолчанию.
+
Выберите Способ заполнения:
+
По неделям - недельный или почасовой график работы привязан к дням недели. Это самый простой график работы, наиболее часто встречающийся. К этому виду принадлежат графики "40-часовая рабочая неделя" и другие. Вариантами недельного графика являются пятидневка, шестидневка, два дня в неделю и т.д. Различаются они только количеством отработанного времени или отработанных дней.
+
По циклам - такой график привязан к числам месяца, т.к. в качестве начала цикла указывается определенная дата, от которой отсчитываются дни цикла. Дни недели на этот график не влияют, очень редко учитываются праздничные дни. Вариантами циклических графиков являются сменные графики, а также графики со скользящими выходными: сутки через трое, два через два и т.д.
+
В качестве примера рассмотрим график работы склада, который получает и выдает товар круглосуточно в течение 4 дней. На одни сутки склад закрывается для профилактики оборудования и дезинфекции. В этом случае длина цикла составляет 5 дней.
+
Укажите длину цикла, например, По циклам длиной 5 дней. Поле является обязательным.
+
Укажите начало цикла, например, начиная с 03.01.2014. Поле является обязательным, заполняется программой автоматически. По умолчанию цикл начинается с начала Периода заполнения графика (например, с 01.01.2014), при необходимости можно указать другое число.
Составьте Шаблон заполнения. Это можно сделать двумя способами:
+
Укажите флажками рабочие дни. Этого достаточно, чтобы в графике работы отразились рабочие и выходные дни. После этого можно перейти к следующим шагам заполнения графика работы, просмотреть результат заполнения и сохранить график работы.
+
Введите расписание работы для каждого рабочего дня с помощью гиперссылки Заполнить расписание. Обычно предприятие и его подразделения работают по определенному расписанию.
+
Заполните Расписание работы для каждого рабочего дня недели или цикла с помощью кнопки Добавить. Введите Время начала и Время окончания рабочего дня.
+
В расписание работы помещается только рабочее время. Если в работе предусмотрены перерывы, то расписание необходимо заполнить в несколько строк, т.к. перерывы в рабочее время не входят. Выходные дни не заполняются.
+
После заполнения расписания нажмите ОК. В гиперссылке будет указано общее количество часов и режим работы, флажки у рабочих дней проставляются по умолчанию.
При необходимости включите флажок Учитывать праздники. В этом случае из состава рабочих дней будут исключаться дни, выпадающие на праздники, указанные в выбранном производственном календаре.
+
Если в графике работы учитываются праздники и расписание предпраздничного дня будет отличаться, с помощью гиперссылки Заполнить расписание заполните Расписание предпраздничного дня по аналогии с расписанием работы.
Укажите Горизонт планирования - введите количество месяцев, на которое график должен быть заполнен вперед. Если горизонт планирования заполнен, то программа сравнивает период заполнения графика с числом месяцев горизонта планирования, и выдает предупреждение, если график не был заполнен до нужной даты.
+
В информационном поле под полем Горизонт планирования программа указывает, до какого числа заполнен график работы.
Напишите Описание - заполните подробную информацию о введенном графике. Это поможет найти нужный график работы в списке, когда их будет много.
Как просмотреть новый график работы
-
Нажмите Результат заполнения. Будут показаны рабочие и выходные дни по месяцам. Нажмите Настройка заполнения для того чтобы закончить просмотр и продолжать работу над графиком работы.
Недельный или почасовой график работы привязан к дням недели. Это самый простой график работы, наиболее часто встречающийся. К этому виду принадлежат графики "40-часовая рабочая неделя" и другие. Вариантами недельного графика являются пятидневка, шестидневка, два дня в неделю и т.д.
-
Для составления такого графика выберите Способ заполнения "По неделям", заполните Расписание работы для рабочих дней недели.
-
Особенности заполнения графиков работы с циклами произвольной длины
-
Такой график привязан к числам месяца, т.к. в качестве начала цикла указывается определенная дата, от которой отсчитываются дни цикла. Дни недели на этот график не влияют, очень редко учитываются праздничные дни.
-
Вариантами циклических графиков являются сменные графики, а также графики со скользящими выходными: сутки через трое, два через два и т.д.
-
В качестве примера рассмотрим график работы склада, который получает и выдает товар круглосуточно в течение 4 дней. На одни сутки склад закрывается для профилактики оборудования и дезинфекции. В этом случае длина цикла составляет 5 дней.
-
-
Выберите Способ заполнения "По циклам".
-
-
Укажите длину цикла, например, 5 дней.
-
-
Укажите начало цикла, например, начиная с 03.01.2014. По умолчанию цикл начинается с начала периода заполнения графика (т.е. с 01.01.2014) , при необходимости можно указать другое число.
-
-
Составьте Шаблон заполнения, введите Расписание работы для рабочих дней цикла.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Календари/Help/ru.html b/SSL/src/Catalogs/Календари/Help/ru.html
index bd5daea7e..6034340de 100644
--- a/SSL/src/Catalogs/Календари/Help/ru.html
+++ b/SSL/src/Catalogs/Календари/Help/ru.html
@@ -1,28 +1,30 @@
-
-
Список предназначен для ведения графиков работы, которые используются на предприятии.
-
Графики работы формируются на основе производственных календарей. Можно использовать графики работы как для предприятия в целом, так и для его подразделений (например, график работы склада). В графике работы подразделения содержится информация о рабочих днях этого подразделения.
+
+
Список предназначен для ведения графиков работы.
+
Программа позволяет формировать и хранить графики работы, которые используются на предприятии. Графики работы формируются на основе производственных календарей. Можно использовать графики работы как для предприятия в целом, так и для его подразделений (например, график работы склада). В графике работы подразделения содержится информация о рабочих днях этого подразделения. Например, если склад предприятия работает на прием товара от поставщиков по вторникам и четвергам, то рабочими днями для графика работы "Прием товара на складе" будут являться вторники и четверги.
В зависимости от производственной необходимости или в зависимости от потребностей тех подразделений, для которых график работы предназначен, графики работы могут настраиваться на весь год или на определенный период. Также настройка графика работы может проводиться время от времени в течение всего года, на некоторое количество дней вперед.
-
В списке красным цветом выделяются графики, которые неправильно заполнены.
-
Как настроить графики работы
-
Необходимо ввести нужное количество графиков работы на основании производственного календаря.
-
Для каждого графика работы необходимо указать, какие дни являются в нем рабочими. График работы необходимо заполнять на столько дней вперед, на сколько это необходимо тем, кто его использует.
-
В конце года необходимо заполнить имеющийся график работы несколько вперед на основании данных прошлого года на следующий год, чтобы не было ошибок при расчетах различных документов (на период до выхода общегосударственного календаря на следующий год).
Какие сведения о графиках работы выводятся в списке
+
В списке выводится:
Наименование - заполняется при вводе графика;
Производственный календарь - при вводе указывается, на каком основании введен график работы.
-
Способ заполнения - вид графика;
+
Способ заполнения - вид графика. В зависимости от способа заполнения графики могут быть двух видов:
+
+
По неделям (почасовые) - такой график жестко привязан к дням недели. Это самый простой график работы, наиболее часто встречающийся. К этому виду принадлежат графики "40-часовая рабочая неделя" и другие. Различаются они только количеством отработанного времени или отработанных дней. Пятидневка, шестидневка, два рабочих дня в неделю - варианты этого графика работы.
+
По циклам произвольной длины. Такой график жестко привязан к числам месяца, т.к. в качестве начала цикла указывается определенная дата, от которой отсчитывается дни цикла. Дни недели на этот график не влияют, очень редко учитываются праздничные дни. Вариантами циклических графиков являются сменные графики, а также графики со скользящими выходными: сутки через трое, два через два и прочие.
Возможная причина - результат проверки правильности заполнения графика. Выводится предупреждение об ошибках при заполнении графика работы.
-
Описание - подробное описание заполняется при вводе.
Как ввести новый график работы
+
Описание - подробное описание заполняется при вводе.
Красным цветом выделяются графики, которые неправильно заполнены.
+
Настройка графиков работы
+
Необходимо ввести нужное количество графиков работы на основании производственного календаря.
+
Для каждого графика работы необходимо указать, какие дни являются в нем рабочими. График работы необходимо заполнять на столько дней вперед, на сколько это необходимо тем, кто его использует.
+
В конце года необходимо заполнить имеющийся график работы несколько вперед на основании данных прошлого года на следующий год, чтобы не было ошибок при расчетах различных документов (на период до выхода общегосударственного календаря на следующий год).
Если графиков работы в списке много, полезно разбить их на группы. Графики работы можно сгруппировать по разным признакам, например, по способу заполнения.
Для ввода группы нажмите , введите наименование группы. Можно подчинить одну группу другой. Для этого при вводе выберите вышестоящую группу.
Введите необходимое количество групп, с помощью мыши перетащите графики работы в соответствующие группы.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Календари/Календари.mdo b/SSL/src/Catalogs/Календари/Календари.mdo
index c2677be99..5a417d16b 100644
--- a/SSL/src/Catalogs/Календари/Календари.mdo
+++ b/SSL/src/Catalogs/Календари/Календари.mdo
@@ -106,6 +106,7 @@
Use
+ trueru
diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Help/ru.html b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Help/ru.html
index 050c72122..bcd0d125c 100644
--- a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Help/ru.html
+++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Help/ru.html
@@ -1,14 +1,28 @@
-
+
+
Программа позволяет загружать классификатор банков РФ с сайта агентства "РосБизнесКонсалтинг" (www.rbc.ru). При этом программа учитывает недействующие банки (в карточке такого банка включен соответствующий флажок).
Выберите источник для загрузки классификатора банков:
+
С помощью переключателя выберите Вариант загрузки:
-
с сайта агенства "РосбизнесКонсалтинг" (при работе в веб-клиенте возможна загрузка только с сайта РБК);
+
с сайта агентства "РосбизнесКонсалтинг" (при работе в веб-клиенте возможна загрузка только с сайта РБК);
с диска "Информационно-технологическое сопровождение" - загрузка будет производиться из поставляемого на диске 1С:ИТС "Общероссийского классификатора банков" (ОКБ).
укажите Путь к диску ИТС.
Нажмите Загрузить.
-
После успешной загрузки нажмите Закрыть.
Загрузка банков может производиться автоматически, для этого необходимо настроить регламентное задание "Загрузка классификатора банков". При автоматической загрузке программа позволяет всегда поддерживать классификатор в актуальном состоянии.
После успешной загрузки программа выводит сообщение о количестве загруженных банков. Нажмите Закрыть.
Повторная загрузка
+
+
При повторной загрузке перезаписываются только измененные сведения классификатора.
+
+
При этом если был изменен БИК банка, то будет создана новая запись о банке.
+
+
Если были изменены другие поля, то при повторной загрузке они будут перезаписаны (кроме полей Адрес и Телефоны в случае, когда классификатор перезагружается с сайта РБК).
Особенности загрузки классификатора банков в веб-клиенте
+
+
В веб-клиенте также производится проверка актуальности классификатора банков и выводится сообщение с предложением его обновления.
+
+
Если в программе до публикации в веб-клиенте был загружен классификатор банков, то при работе в веб-клиенте необходимо будет его только обновить.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl
index 3f05de952..530292207 100644
--- a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl
+++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl
@@ -210,9 +210,25 @@
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗадания()
- //Унифицированная процедура проверки выполнения фонового задания
-
- Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда
+ ЗаданиеВыполнено = Неопределено;
+ Попытка
+ ЗаданиеВыполнено = ЗаданиеВыполнено(ИдентификаторЗадания);
+ Исключение
+ ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(НСтр("ru = 'Загрузка классификатора банков'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
+ "Ошибка", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), , Истина);
+
+ Элементы.ПоясняющийТекст.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Загрузка классификатора банков прервана по причине:
+ |%1
+ |Подробности см. в журнале регистрации.'"),
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
+
+ Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаРезультат;
+ УстановитьИзмененияВИнтерфейсе();
+ Возврат;
+ КонецПопытки;
+
+ Если ЗаданиеВыполнено Тогда
ЗагрузитьРезультат();
Иначе
ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
@@ -336,9 +352,7 @@
&НаСервереБезКонтекста
Функция ЗаданиеВыполнено(ИдентификаторЗадания)
-
Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
-
КонецФункции
&НаСервере
@@ -400,22 +414,16 @@
ВызватьИсключение ТекстЗагрузкаЗапрещена();
КонецЕсли;
- Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
- АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
- РаботаСБанками.ПолучитьДанныеРБК(ПараметрыЗагрузкиФайловРБК, АдресХранилища);
- Результат = Новый Структура("ЗаданиеВыполнено,АдресХранилища", Истина, АдресХранилища);
- Иначе
- НаименованиеЗадания = НСтр("ru = 'Загрузка классификатора банков РФ'");
-
- Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
- УникальныйИдентификатор,
- "РаботаСБанками.ПолучитьДанныеРБК",
- ПараметрыЗагрузкиФайловРБК,
- НаименованиеЗадания);
- КонецЕсли;
+ НаименованиеЗадания = НСтр("ru = 'Загрузка классификатора банков РФ'");
+
+ Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
+ УникальныйИдентификатор,
+ "РаботаСБанками.ПолучитьДанныеРБК",
+ ПараметрыЗагрузкиФайловРБК,
+ НаименованиеЗадания);
Возврат Результат;
-
+
КонецФункции
////////////////////////////////////////////////////////////////////////////////
diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаВыбора/Help/ru.html b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаВыбора/Help/ru.html
new file mode 100644
index 000000000..34e4c2ea8
--- /dev/null
+++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаВыбора/Help/ru.html
@@ -0,0 +1,25 @@
+
+
Предназначена для выбора сведений о банках, которые используются при заполнении реквизитов банковских счетов, в документах и других объектах программы.
Банки, деятельность которых прекращена, по умолчанию скрыты. Для того чтобы увидеть в списке эти банки, выполните команду Все действия (в интерфейсе Такси Еще) - Показывать недействующие банки.
Деятельность банка прекращена - программа учитывает недействующие банки и автоматически включает флажок для таких банков. Также можно его включить вручную, если получены сведения о закрытии банка.
+
Наименование банка - полное наименование банка.
-
БИК - БИК банка.
+
+
Корр. счет - корреспондентский счет.
БИК - БИК банка.
+
Город - город, в котором находится банк.
-
Корр. счет - корреспондентский счет.
+
+
Группа банков - по умолчанию регион, в котором находится банк. Можно включить банк в новую группу, для этого выберите из списка нужную группу, нажав Показать все, для ввода новой группы нажмите Создать.
-
Город - город, в котором находится банк.
-
-
Адрес - полный адрес банка.
-
Деятельность банка прекращена - программа учитывает недействующие банки и автоматически включает флажок для таких банков. Также можно его включить вручную, если получены сведения о закрытии банка.
-
-
Группа банков - по умолчанию регион, в котором находится банк. Можно включить банк в новую группу, для этого выберите из списка нужную группу, нажав Показать все, для ввода новой группы нажмите Создать.
+
+
Адрес - полный адрес банка.
Телефоны - адреса и телефоны банков можно загрузить только с диска 1С:ИТС или ввести вручную.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html b/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html
index 634c61b4b..47742d52a 100644
--- a/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html
+++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html
@@ -1,9 +1,11 @@
-
-
В классификаторе банков РФ хранятся сведения о банках, которые используются при заполнении реквизитов банковских счетов, в документах и других объектах программы.
+
+
В классификаторе банков РФ хранятся сведения о банках, которые используются при заполнении реквизитов банковских счетов, в документах и других объектах программы.
+
Классификатор может быть заполнен автоматически с использованием Общероссийского классификатора банков. При использовании автоматической загрузки классификатора банков существенно снижается трудоемкость ввода информации, ввод информации о банке в различных документах сводится к выбору из классификатора, соответственно сводится к минимуму количество ошибок в отчетности, и кроме того, программа позволяет всегда поддерживать классификатор в актуальном состоянии.
Банки, деятельность которых прекращена, в списке становятся неактивными.
Следует иметь в виду, что сведения об адресах и телефонах банков загружаются только с диска 1С:ИТС.
-
Группировка банков
+
С помощью команды Все действия (в интерфейсе Такси Еще) - Изменить форму можно вывести дополнительную информацию:
+
+
Деятельность банка прекращена - программа учитывает недействующие банки и автоматически включает флажок для таких банков. Также можно его включить вручную, если получены сведения о закрытии банка.
+
+
Группа банков - по умолчанию регион, в котором находится банк.
+
+
Телефоны - адреса и телефоны банков можно загрузить только с диска 1С:ИТС.
Группировка банков
Банки в списке сгруппированы по регионам, при входе в список видны только регионы банков. Выберите нужный регион для просмотра банков этого региона.
-
Также можно внутри регионов ввести свою группировку. Для этого нажмите , введите наименование группы и перетащите в группу нужные банки с помощью мыши.
Загрузка классификатора банков
+
Также можно внутри регионов ввести свою группировку. Для этого нажмите Создать группу, введите наименование группы и перетащите в группу нужные банки с помощью мыши.
Загрузка классификатора банков
Программа поставляется с загруженным классификатором банков.
После запуска программы производится проверка актуальности классификатора банков и в случае неактуальности (если классификатор не обновлялся в течение тридцати дней) выводится сообщение с предложением обновить классификатор банков. Перейдите по гиперссылке Обновить классификатор банков.
@@ -24,6 +32,10 @@
По команде Загрузить классификатор можно обновить сведения о банках.
-
Также можно настроить обновление классификатора с сайта РБК автоматически по расписанию с помощью регламентного задания "Загрузка классификатора банков".
См. также:
+
Также можно настроить обновление классификатора с сайта РБК автоматически по расписанию с помощью регламентного задания "Загрузка классификатора банков".
+
+
В карточку банка может загружаться не вся информация. Поля Адрес и Телефоны не заполняются, если классификатор загружается с сайта РБК.
+
+
При повторной загрузке перезаписываются только измененные сведения классификатора. При этом если был изменен БИК банка, то будет создана новая запись о банке. Если были изменены другие поля, то они при повторной загрузке будут перезаписаны (кроме полей Адрес и Телефоны в случае, когда классификатор перезагружается с сайта РБК).
В программе имеются предопределенные ключевые операции. При необходимости можно добавить новые. В качестве ключевых операций могут выступать различные операции программы, например, проведение документа, формирование отчета и т.п. Для того чтобы оценивать производительность программы, необходимо в начале работы программы заполнить параметры ключевых операций (после установки программы параметры ключевых операций не заполнены).
Предназначен для хранения параметров ключевых операций.
Параметры ключевых операций необходимы для оценки производительности работы программы. В программе предусмотрены встроенные средства для сбора и анализа данных о производительности работы по APDEX, которая является международным стандартом оценки производительности информационных систем.
Список открывается по команде Ключевые операции раздела Сервисные подсистемы.
Предназначена для просмотра набора дополнительных реквизитов и сведений.
+
Выводится Наименование набора, указывается группа справочника, которой соответствует данный набор.
+
Включает в себя списки дополнительных реквизитов и сведений, входящих в набор. Списки предназначены только для просмотра, изменить в них ничего невозможно. Для изменения воспользуйтесь командами Дополнительные реквизиты или Дополнительные сведения в разделах Администрирование - Общие настройки.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html
index e2bf34444..731df42b3 100644
--- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html
+++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html
@@ -1,37 +1,53 @@
-
-
Предназначен для настройки наборов дополнительных реквизитов (сведений)
-
Администратор программы может настроить наборы дополнительных свойств для определенных объектов программы. Способ хранения дополнительного свойства в программе и место размещения в окне объекта программы зависит от типа свойства: дополнительный реквизит или сведение.
-
Предопределенные наборы соответствуют объектам программы (спискам или документам), в которых можно использовать дополнительные реквизиты и сведения. Добавление новых наборов в этом списке невозможно.
-
Программа позволяет создать набор дополнительных реквизитов (сведений) как для всех элементов списка, так и для части. В этом случае список программы является группой, а элементами группы являются реквизиты списка или значения реквизитов списка (в этом случае количество элементов группы будет равно количеству значений реквизита). Наборы автоматически создаются при создании групп в соответствующих списках.
-
Какие сведения выводятся в списке
-
Список Дополнительные реквизиты (сведения) представляет собой таблицу из двух частей:
-
в левой части располагаются Наборы дополнительных реквизитов (сведений), назначенных справочнику или документу, которые показаны в виде групп. Если в списке имеются группы, то Наборы дополнительных реквизитов (сведений) соответствуют группам справочника.
-
В правой части списка в виде таблицы располагается список дополнительных реквизитов (сведений), входящих в выделенный набор. Жирным шрифтом в списке дополнительных реквизитов (сведений) отражаются реквизиты (сведения), обязательные для заполнения. В таблице выводятся сведения:
+
+
Предназначен для настройки наборов дополнительных свойств.
+
Можно настроить наборы дополнительных свойств для определенных объектов программы.
+
Способ хранения дополнительного свойства в программе и место размещения в окне объекта программы зависит от типа свойства:
+
Дополнительные реквизиты - хранятся в самом элементе справочника или документе (могут размещаться в специальном разделе или на специальной вкладке). Создаются для реализации таких свойств, которые являются неотъемлемой частью объекта, вводятся при его редактировании и доступны для редактирования тем же пользователям, которым доступен и сам объект со свойствами.
+
Дополнительные сведения - предназначены для хранения сведений об элементе справочника или документе, которые не являются его неотъемлемой частью. Доступны, как правило, для просмотра и/или редактирования пользователям, которые не имеют доступа к самому объекту. Редактируются в отдельном окне, которое можно открыть из окна объекта.
Для разных объектов программы может быть предусмотрено использование дополнительных реквизитов и сведений в разных сочетаниях: или дополнительных реквизитов и сведений, или дополнительных реквизитов, или дополнительных сведений.
+
Для того чтобы использовать дополнительные свойства, необходимо включить флажок Дополнительные реквизиты и сведения в разделе Администрирование - Общие настройки. После этого становятся доступными соответствующие команды.
+
Работа с дополнительными реквизитами (сведениями) осуществляется в соответствующих списках, которые открываются по команде Дополнительные реквизиты или Дополнительные сведения в разделах Администрирование - Общие настройки.
+
Список наборов дополнительных реквизитов можно также открыть из объектов программы, для которых они настроены, по команде Все действия (в интерфейсе Такси Еще) - Изменить состав дополнительных реквизитов.
+
Список наборов дополнительных сведений можно также открыть по команде Все действия (в интерфейсе Такси Еще) - Изменить состав дополнительных сведений из окна Дополнительные сведения объекта программы.
+
Список Дополнительные реквизиты (сведения) представляет собой таблицу из двух частей:
+
В левой части располагаются Наборы дополнительных реквизитов (сведений), назначенных справочникам или документам, которые показаны в виде групп. Если в справочнике имеются группы, то Наборы дополнительных реквизитов (сведений) соответствуют группам справочника.
+
В правой части в виде таблицы располагается список дополнительных реквизитов (сведений), входящих в выделенный набор. Жирным шрифтом в списке дополнительных реквизитов (сведений) отражаются реквизиты (сведения), обязательные для заполнения. В таблице выводятся сведения:
Дополнительный реквизит (сведение) - включает перечень наименований дополнительных реквизитов (сведений);
-
Тип значения - указывается тип дополнительных реквизитов (сведений) и количество значений.
Как назначить новый дополнительный реквизит (сведение) списку или документу
-
В зависимости от настройки может быть два способа ввода новых реквизитов (сведений):
-
Выберите соответствующий этому списку или документу набор, нажмите Создать. По умолчанию дополнительный реквизит (сведение) может быть добавлен только в один набор.
-
Выберите соответствующий этому списку или документу набор, нажмите Добавить - Новый. (Аналогична команде Создать) С помощью этой команды дополнительный реквизит (сведение) может быть добавлен только в один набор.
Общие наборы дополнительных реквизитов (сведений)
-
Для некоторых списков программы (например, Демо: Номенклатура и Демо: Партнеры) предусмотрены предопределенные наборы Общие. Введенные в такой набор дополнительные реквизиты и сведения по умолчанию становятся общими для всех элементов этих списков.
+
Тип значения - указывается тип дополнительных реквизитов (сведений) и количество значений.
Предопределенные наборы дополнительных реквизитов (сведений) соответствуют объектам программы (справочникам или документам), в которых можно использовать дополнительные реквизиты и сведения. Добавление новых наборов в этом списке невозможно. Наборы автоматически создаются при создании групп в соответствующих справочниках.
+
Программа позволяет создать набор дополнительных реквизитов (сведений) как для всех элементов справочника, так и для части. В этом случае справочник является группой, а элементами группы являются реквизиты справочника или значения реквизитов справочника (в этом случае количество элементов группы будет равно количеству значений реквизита).
+
Назначение нового дополнительного реквизита (сведения) справочнику или документу
+
В зависимости от настройки может быть доступна одна из команд ввода новых реквизитов (сведений):
+
Выберите соответствующий этому справочнику или документу набор, нажмите Создать. По умолчанию дополнительный реквизит (сведение) может быть добавлен только в один набор. Заполните необходимые поля.
+
Выберите соответствующий этому справочнику или документу набор, нажмите Добавить - Новый (Новое). (Аналогична команде Создать) С помощью этой команды дополнительный реквизит (сведение) может быть добавлен только в один набор. Заполните необходимые поля.
Общие наборы дополнительных реквизитов (сведений)
+
Для некоторых справочников предусмотрены предопределенные наборы Общие. Введенные в такой набор дополнительные реквизиты и сведения по умолчанию становятся общими для всех элементов этих справочников.
Выберите набор Общий.
-
Нажмите Создать или Добавить - Новый.
Как добавить дополнительные реквизиты (сведения) по образцу
-
можно использовать ранее введенные дополнительные реквизиты и сведения из других наборов. Можно добавлять реквизиты с общим списком значений сразу для нескольких однотипных реквизитов (например, Цвет двери по образцу реквизита Цвет). Список значений в этом случае используется из реквизита-образца. Удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов.
+
Нажмите Создать или Добавить - Новый. Заполните необходимые поля.
Добавление по образцу
+
Для того чтобы использовать эту возможность, необходимо включить флажок Реквизиты и сведения с общим списком значений в разделе Администрирование - Общие настройки.
+
Можно использовать ранее введенные дополнительные реквизиты и сведения из других наборов, добавлять реквизиты с общим списком значений сразу для нескольких однотипных реквизитов (например, Цвет двери по образцу реквизита Цвет). Список значений в этом случае используется из реквизита-образца. Удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов.
Выберите набор из списка.
-
Нажмите Добавить - По образцу.
+
Нажмите Добавить - По образцу.
-
выберите дополнительный реквизит (сведение) из списка уже существующих в программе.
Как добавить общие дополнительные реквизиты (сведения)
-
Общий реквизит входит в несколько наборов. Этот вариант подходит для тех случаев, когда общим должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных списков и документов общие реквизиты группируются и выводятся как один реквизит в одной колонке или поле. Например, с помощью общего реквизита Цвет можно отобрать всю желтую одежду и обувь.
-
-
Выберите набор из списка.
+
Выберите дополнительный реквизит (сведение) из списка уже существующих в программе. Тип и все значения выбранного в качестве образца дополнительного реквизита (сведения) будут скопированы в новый элемент. Заполните все необходимые поля. По умолчанию реквизит становится общим с набором, из которого был использован образец. Ввод новых значений в этом случае невозможен. Программа выводит напоминание, что список значений является общим с другим реквизитом.
Добавление общих дополнительных реквизитов (сведений)
+
Для того чтобы использовать эту возможность, необходимо включить флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки.
+
Общий реквизит входит в несколько наборов. Этот вариант подходит для тех случаев, когда общим должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных справочников и документов общие реквизиты группируются и выводятся как один реквизит в одной колонке или поле. Например, с помощью общего реквизита Цвет можно отобрать всю желтую одежду и обувь.
-
Нажмите Добавить - Общий(Общее)
+
Выберите набор из списка.
-
Выберите из списка уже существующий общий дополнительный реквизит(сведение). Если в списке нет нужного реквизита, нажмите Создать.
-
Особенности удаления дополнительных реквизитов (сведений):
-
При пометке на удаление свойства в наборе, значения свойства сохраняется в объектах до тех пор, пока не будут очищены. При этом свойство, помеченное на удаление в наборе, будет отображаться в окне объекта или окне дополнительных сведений особым образом. При необходимости можно снять пометку удаления.
Выберите из списка уже существующий общий дополнительный реквизит (сведение). Если в списке нет нужного реквизита, нажмите Создать. Заполните необходимые поля.
+
+
Для того чтобы добавить общий реквизит в несколько наборов, повторите эти действия для каждого набора.
Особенности удаления дополнительных реквизитов (сведений)
+
+
+
Для того чтобы удалить общий дополнительный реквизит (сведение), необходимо удалить его из всех наборов, в который входил данный реквизит. Возможно, для окончательного удаления придется очистить дополнительные реквизиты от значений.
+
+
+
При пометке на удаление свойства в наборе, значения свойства сохраняется в объектах до тех пор, пока не будут очищены. При этом свойство, помеченное на удаление в наборе, будет отображаться в окне объекта или окне дополнительных сведений особым образом.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo
index 5c5e860b2..848369585 100644
--- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo
+++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo
@@ -359,6 +359,11 @@
ruФорма элемента
+
+
+ ru
+
+ PersonalComputerMobileDevice
diff --git a/SSL/src/Catalogs/НазначенияСертификатовЭП/Help/ru.html b/SSL/src/Catalogs/НазначенияСертификатовЭП/Help/ru.html
new file mode 100644
index 000000000..c594499cf
--- /dev/null
+++ b/SSL/src/Catalogs/НазначенияСертификатовЭП/Help/ru.html
@@ -0,0 +1,15 @@
+
+
Предназначен для просмотра и редактирования назначений сертификатов ЭП.
+
В ходе генерации сертификата ЭП сертификату присваивается Код (числовое выражение) и Назначение (строка на английском языке). Для того чтобы назначение сертификата отображалось в программе в понятном виде, в списке необходимо ввести представление на русском языке.
+
В списке содержится перечень назначений сертификатов ЭП (в колонке Наименование) и соответствующие этим назначениям Коды.
Наименование - название организации, которое будет использоваться в программе при выборе организации.
+
Префикс - уникальный префикс, который будет автоматически добавляться программой в начало номера (или кода) при вводе новых документов (элементов списков). Элементы списков, документы и другие объекты программы нумеруются последовательно. Для того чтобы документы по различным организациям отличались по номерам, а элементы списков - по кодам, используется префикс.
Если в программе используется список Виды контактной информации, то для организации будут доступны предопределенные реквизиты для хранения контактной информации:
+
Поля Почтовый, Юридический, Фактический адрес можно заполнить вручную или по шаблону (только для российских адресов, при этом для ввода по шаблону необходимо загрузить адресный классификатор). Для заполнения по шаблону нажмите Выбрать, заполните адрес, нажмите ОК. Если адреса повторяются, то можно заполнить один из адресов, затем с помощью кнопки скопировать его в остальные адресные поля.
+
Поля Телефон и Факс можно ввести вручную или по шаблону;
+
В поле E-mail введите адрес электронной почты организации. Программа проверяет правильность ввода. С помощью кнопки можно отправить по введенному адресу исходящее электронное письмо.
+
В текстовое поле Другое длиной 1024 символа можно ввести какую-либо дополнительную информацию об организации, например, как добраться до офиса, в котором она находится.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Module.bsl
index 57685d18d..0c7805f8e 100644
--- a/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Module.bsl
@@ -52,6 +52,22 @@
КонецПроцедуры
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовШапкиФормы
+
+&НаКлиенте
+Процедура ПрефиксПриИзменении(Элемент)
+ Если Найти(Объект.Префикс, "-") > 0 Тогда
+ ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Нельзя в префиксе организации использовать символ ""-"".'"));
+ Объект.Префикс = СтрЗаменить(Объект.Префикс, "-", "");
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ ПОДСИСТЕМЫ "КОНТАКТНАЯ ИНФОРМАЦИЯ"
diff --git a/SSL/src/Catalogs/Организации/Help/ru.html b/SSL/src/Catalogs/Организации/Help/ru.html
new file mode 100644
index 000000000..8708ef4d8
--- /dev/null
+++ b/SSL/src/Catalogs/Организации/Help/ru.html
@@ -0,0 +1,10 @@
+
+
Предназначен для описания формальной структуры предприятия, которая может состоять из нескольких хозяйствующих субъектов, фактически принадлежащих одному и тому же собственнику (группе собственников), и которые действуют согласованно в целях увеличения прибыли.
+
Открывается по команде Организации в разделе Справочники.
+
В списке выводится:
+
Наименование - полное наименование организации;
+
Код - присваивается программой автоматически;
+
Префикс - для каждой организации при вводе задается уникальный префикс, который будет автоматически добавляться программой в начало номера (или кода) при вводе новых документов (элементов списков), для того чтобы документы по различным организациям отличались по номерам, а элементы списков - по кодам.
Заполните Наименование папки. Поле является обязательным;
-
Одна папка может входить в другую. При необходимости в поле В папке выберите вышестоящую папку из списка;
+
Одна папка может входить в другую. При необходимости в поле В папке выберите вышестоящую папку из списка;
Поле Полный путь заполняется программой автоматически;
В поле Описание напишите подробную информацию о папке;
В поле Ответственный выберите из спискапользователя, ответственного за папку файлов;
diff --git a/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html b/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html
index 4f0b212c1..5c61c99f3 100644
--- a/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html
+++ b/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html
@@ -1,10 +1,10 @@
-
+
Все файлы хранятся в структуре папок, которую удобно вести, например:
в соответствии с организационной структурой Вашего предприятия;
по типам файлов (например, "Договоры", "Приказы", "Служебные записки");
по уровню доступа (например, "Общие", "Конфиденциальные").
Папкам можно назначать различные права доступа (команда Права доступа в карточке папки).
В списке имеются предопределенные папки, которые нельзя удалить, например, Шаблоны файлов.
-
Список папок имеет иерархическую структуру, предназначен для выбора. Имеется возможность изменить выбранную папку (при наличии соответствующих прав). Ввести новую папку можно в спискеФайлы с помощью команды Создать контекстного меню по правой кнопке мыши.
+
Список папок имеет иерархическую структуру, предназначен для выбора. Имеется возможность Изменить выбранную папку (при наличии соответствующих прав). Ввести новую папку можно в спискеФайлы с помощью команды Создать контекстного меню по правой кнопке мыши.
Выбор папки
Выделите папку, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши.
Открывается по кнопке Выбрать, например, из окна папки.
+
Шесть папок для каждой учетной записи являются предопределенными и не могут быть удалены и изменены:
+
Входящие - в эту папку попадают по умолчанию все входящие письма.
+
Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма.
+
Нежелательная почта - в данную папку попадают письма, которые почтовый сервер опознал как спам (подробнее см. документацию почтового сервера).
+
Отправленные - в эту папку по умолчанию попадают все отправленные письма.
+
Удаленные - в эту папку попадают все помеченные к удалению письма.
+
Черновики - папка, в которой находятся письма, редактирование которых не завершено.
Правила, по которым письмам назначаются папки, можно установить при помощи Правил обработки электронной почты. К работе с правилами можно перейти из панели навигации Учетной записи электронной почты.
+
В каждую папку письма попадают автоматически при получении или смене статуса, а также при применении правил обработки.
+
Ввод папки
+
+
Помимо предопределенных папок электронной почты можно создавать собственные папки.
+
+
Собственные папки можно создать и в предопределенных папках, тогда можно рассортировать имеющуюся в них почту.
+
+
Для ввода новой папки нажмите Создать, заполните необходимые поля.
Группировка папок
+
Новую папку можно подчинить другой папке во время ввода (редактирования) или с помощью перетаскивания мышью.
Справочник Папки электронных писем предназначен для категоризации входящей и исходящей почтовой корреспонденции. Владельцем папки является Учетная запись электронной почты.
-
Шесть папок для каждой учетной записи являются предопределенными и не могут быть удалены и изменены:
Входящие - в эту папку попадают по умолчанию все входящие письма.
Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма.
-
Нежелательная почта в данную папку попадают письма, которые почтовый сервер опознал как спам.
+
Нежелательная почта - в данную папку попадают письма, которые почтовый сервер опознал как спам.
Отправленные - в эту папку по умолчанию попадают все отправленные письма.
Удаленные - в эту папку попадают все помеченные к удалению письма.
-
Черновики - папка, в которой находятся письма, редактирование которых не завершено.
Правила, по которым письмам назначаются папки можно установить при помощи Правил обработки электронной почты, к которым можно перейти из панели навигации формы Учетной записи электронной почты.
-
Для не предопределенных папок доступно указание наименования и родительской папки.
-
\ No newline at end of file
+
Черновики - папка, в которой находятся письма, редактирование которых не завершено.
Правила, по которым письмам назначаются папки, можно установить при помощи Правил обработки электронной почты, к которым можно перейти из панели навигации Учетной записи электронной почты.
+
Ввод папки
+
Помимо предопределенных папок электронной почты можно создавать собственные папки. Собственные папки можно создать и в предопределенных папках, тогда можно рассортировать имеющуюся в них почту.
+
+
При необходимости выберите предопределенную или собственную папку, в которой необходимо создать новую папку.
+
Введите Наименование папки.
+
Если предварительно была выбрана папка, Родительская папка проставляется программой по умолчанию. При необходимости выберите из списка.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Help/ru.html b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Help/ru.html
new file mode 100644
index 000000000..603323a29
--- /dev/null
+++ b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Help/ru.html
@@ -0,0 +1,22 @@
+
+
Предназначен для категоризации входящей и исходящей почтовой корреспонденции. Владельцем папок является Учетная запись электронной почты.
+
Открывается по команде Папки электронных писем панели навигации учетной записи электронной почты. Также работать с папками электронной почты можно в списке взаимодействий, выбрав группировку По папкам.
+
Шесть папок для каждой учетной записи являются предопределенными и не могут быть удалены и изменены:
+
Входящие - в эту папку попадают по умолчанию все входящие письма.
+
Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма.
+
Нежелательная почта - в данную папку попадают письма, которые почтовый сервер опознал как спам (подробнее см. документацию почтового сервера).
+
Отправленные - в эту папку по умолчанию попадают все отправленные письма.
+
Удаленные - в эту папку попадают все помеченные к удалению письма.
+
Черновики - папка, в которой находятся письма, редактирование которых не завершено.
Правила, по которым письмам назначаются папки, можно установить при помощи Правил обработки электронной почты. К работе с правилами можно перейти из панели навигации Учетной записи электронной почты.
+
В каждую папку письма попадают автоматически при получении или смене статуса, а также при применении правил обработки.
+
Ввод папки
+
+
Помимо предопределенных папок электронной почты можно создавать собственные папки.
+
+
Собственные папки можно создать и в предопределенных папках, тогда можно рассортировать имеющуюся в них почту.
+
+
Для ввода новой папки нажмите Создать, заполните необходимые поля.
Группировка папок
+
Новую папку можно подчинить другой папке во время ввода (редактирования) или с помощью перетаскивания мышью.
При записи пользователя (или внешнего пользователя) вместе с ним автоматически создается или изменяется соответствующий ему пользователь ИБ. Однако есть ряд ситуаций, когда список пользователей ИБ становится несогласованным со списком пользователей. Тогда с помощью данного списка могут быть решены следующие задачи:
Ответственный за список может выполнять ограниченное ведение списка пользователей, настройку пользователя до разрешения входа в программу администратором, может редактировать списки Пользователи и Группы пользователей, а также права доступа пользователей.
В остальных случаях доступен только просмотр сведений о себе, а также возможность изменить свой Пароль (в зависимости от настроек администратора), язык программы и контактную информацию.
diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl
index 92d5ee095..df97eb2df 100644
--- a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl
@@ -89,6 +89,7 @@
Если Не УровеньДоступа.ПолныеПрава Тогда
ВходВПрограммуРазрешен = Ложь;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь;
КонецЕсли;
Иначе
// Добавление элемента.
@@ -106,6 +107,7 @@
Если УровеньДоступа.ПолныеПрава Тогда
ВходВПрограммуРазрешен = Истина;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -330,6 +332,11 @@
Если Объект.Недействителен Тогда
ВходВПрограммуРазрешен = Ложь;
+ Иначе
+ ВходВПрограммуРазрешен = ВходВПрограммуРазрешенЗначениеПрямогоИзменения
+ И (ПользовательИнфБазыАутентификацияOpenID
+ Или ПользовательИнфБазыАутентификацияСтандартная
+ Или ПользовательИнфБазыАутентификацияОС);
КонецЕсли;
УстановитьДоступностьСвойств(ЭтотОбъект);
@@ -371,6 +378,8 @@
НСтр("ru = 'После записи вход в программу сможет разрешить только администратор.'"));
КонецЕсли;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = ВходВПрограммуРазрешен;
+
КонецПроцедуры
&НаКлиенте
@@ -867,12 +876,14 @@
УстановитьДоступностьСвойств(ЭтотОбъект);
- Если ВходВПрограммуРазрешен
- И НЕ ПользовательИнфБазыАутентификацияOpenID
+ Если НЕ ПользовательИнфБазыАутентификацияOpenID
И НЕ ПользовательИнфБазыАутентификацияСтандартная
И НЕ ПользовательИнфБазыАутентификацияОС Тогда
ВходВПрограммуРазрешен = Ложь;
+
+ ИначеЕсли Не ВходВПрограммуРазрешен Тогда
+ ВходВПрограммуРазрешен = ВходВПрограммуРазрешенЗначениеПрямогоИзменения;
КонецЕсли;
КонецПроцедуры
@@ -1185,8 +1196,9 @@
ПрочитанныеСвойства = Неопределено;
ОписаниеПользователяИБ = НачальноеОписаниеПользователяИБ();
ПользовательИБСуществует = Ложь;
- ВходВПрограммуРазрешен = Ложь;
ПользовательИБОсновной = Ложь;
+ ВходВПрограммуРазрешен = Ложь;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Ложь;
Если ПриКопированииЭлемента Тогда
@@ -1197,6 +1209,7 @@
// Сопоставление пользователя ИБ с пользователем в справочнике.
Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда
ВходВПрограммуРазрешен = Истина;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина;
КонецЕсли;
// Копирование свойств и ролей пользователяИБ.
@@ -1238,6 +1251,7 @@
Если Пользователи.ВходВПрограммуРазрешен(ПрочитанныеСвойства) Тогда
ВходВПрограммуРазрешен = Истина;
+ ВходВПрограммуРазрешенЗначениеПрямогоИзменения = Истина;
КонецЕсли;
ЗаполнитьЗначенияСвойств(
diff --git a/SSL/src/Catalogs/Пользователи/Help/ru.html b/SSL/src/Catalogs/Пользователи/Help/ru.html
index ffb43ad26..fc8aa2eda 100644
--- a/SSL/src/Catalogs/Пользователи/Help/ru.html
+++ b/SSL/src/Catalogs/Пользователи/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для ведения пользователей, которые работают с программой.
Открыть список пользователей можно из раздела Администрирование - Настройки пользователей и прав или Управление доступом с помощью команды Пользователи.
Ведение списка пользователей может осуществлять как администратор, так и ответственный за список внешних пользователей.
diff --git a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl
index 1607a1abf..9e56c0a7b 100644
--- a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl
+++ b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl
@@ -17,6 +17,16 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Пакетная загрузка данных в этот справочник небезопасна
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
#КонецОбласти
#КонецЕсли
diff --git a/SSL/src/Catalogs/Пользователи/ObjectModule.bsl b/SSL/src/Catalogs/Пользователи/ObjectModule.bsl
index f6731505d..41f30476a 100644
--- a/SSL/src/Catalogs/Пользователи/ObjectModule.bsl
+++ b/SSL/src/Catalogs/Пользователи/ObjectModule.bsl
@@ -47,8 +47,6 @@
#КонецОбласти
-#Область ОбработчикиСобытий
-
////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ
@@ -58,6 +56,8 @@
Перем ЭтоНовый; // Показывает, что был записан новый объект.
// Используются в обработчике события ПриЗаписи.
+#Область ОбработчикиСобытий
+
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
diff --git a/SSL/src/Catalogs/Пользователи/Пользователи.mdo b/SSL/src/Catalogs/Пользователи/Пользователи.mdo
index 87a894c2a..b3e30ae6a 100644
--- a/SSL/src/Catalogs/Пользователи/Пользователи.mdo
+++ b/SSL/src/Catalogs/Пользователи/Пользователи.mdo
@@ -154,8 +154,9 @@
ru
- Пользователь недействителен, оставлен для истории,
-его не требуется выбирать в документах и других местах.
+ Пользователь больше не работает в программе, но сведения о нем сохранены.
+Недействительные пользователи скрываются из всех списков
+при выборе или подборе в документах и других местах программы.
diff --git a/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl b/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl
index 983baeba5..d0cab1c61 100644
--- a/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl
+++ b/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl
@@ -11,6 +11,16 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Пакетная загрузка данных в этот справочник небезопасна
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
#КонецОбласти
#КонецЕсли
diff --git a/SSL/src/Catalogs/ПоставляемыеДанные/ПоставляемыеДанные.mdo b/SSL/src/Catalogs/ПоставляемыеДанные/ПоставляемыеДанные.mdo
index cc0ba2749..eb57263b3 100644
--- a/SSL/src/Catalogs/ПоставляемыеДанные/ПоставляемыеДанные.mdo
+++ b/SSL/src/Catalogs/ПоставляемыеДанные/ПоставляемыеДанные.mdo
@@ -198,7 +198,6 @@
ruТом
- Ссылка на том (в случае если ТипХраненияФайла - на диске)CatalogRef.ТомаХраненияФайлов
@@ -218,7 +217,6 @@
ruТип хранения файла
- Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на дискеEnumRef.ТипыХраненияФайлов
diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ПрименениеПравил/Help/ru.html b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ПрименениеПравил/Help/ru.html
index 7cbc62866..f14ddc683 100644
--- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ПрименениеПравил/Help/ru.html
+++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ПрименениеПравил/Help/ru.html
@@ -1,13 +1,22 @@
-
-
Правила применяются автоматически, но иногда их необходимо применить вручную. Например, когда создано новое правило, и необходимо применить его к уже имеющимся письмам.
Для писем в папке - укажите папку, для писем которой необходимо применить новое правило.
-
Включая подчиненные - если данный флаг установлен, то будут обработаны письма и в дочерних папках.
-
Установите флажки у тех правил, которые должны быть применены.
-
Настройте порядок применения правил. Первыми будут применяться те правила, которые находятся выше в списке. Изменить порядок можно при помощи кнопок Вверх и Вниз в командной панели списка.
-
Выполните команду Применить.
-
Пример. Было создано два новых правила обработки входящей корреспонденции. Необходимо применить их к неотсортированным письмам, находящимся в папке Входящие. Укажите в качестве папки для обработки Входящие, флаг Включая подчиненные не включен. Выберите в списке правил новые и выполните команду Применить.
Правила применяются автоматически, но иногда их необходимо применить вручную. Например, когда создано новое правило, и необходимо применить его к уже имеющимся письмам.
+
Открывается по команде Применить правила из окна Правила обработки электронной почты или из списка взаимодействий (группировка по папкам) по команде Применить правила обработки контекстного меню по правой кнопке мыши в панели группировки.
+
В списке выводится:
+
+
Условие - наименование условия.
+
+
Помещать в папку - папка, к которой применяется данное условие.
Применение правил
+
В поле Для писем в папке укажите папку, для писем которой необходимо применить новое правило.
+
Если включить флажок Включая подчиненные, то будут обработаны письма и в дочерних папках.
+
Включите флажки у тех правил, которые должны быть применены. С помощью кнопки можно выбрать все правила. С помощью кнопки можно снять все флажки.
+
Настройте порядок применения правил. Первыми будут применяться те правила, которые находятся выше в списке. Изменить порядок можно при помощи кнопок Вверх и Вниз в командной панели списка.
+
Выполните команду Применить. Отмеченные в списке флажками правила будут применены к письмам указанной папки.
+
В нижней части окна программа выводит Сообщения о выполнении обработки писем.
+
Пример
+
Было создано два новых правила обработки входящей корреспонденции. Необходимо применить их к неотсортированным письмам, находящимся в папке Входящие.
+
Укажите в качестве папки для обработки Входящие.
+
Флажок Включая подчиненные не включать.
+
Выберите в списке правил новые и выполните команду Применить.
Справочник Правила обработки электронной почты предназначен для создания и хранения условий автоматического распределения входящей и исходящей корреспонденции по папкам. Правила настраиваются для Учетной записи электронной почты.
-
Порядок, в котором правила отсортированы в списке используется при определении папки для письма. Первыми применятся правила, расположенные в верхней части списка. Если при применении первого правила письмо будет определено в папку, то последующие правила для него выполняться не будут. Если ни одно из правил не определило папку для письма, то оно будет помещено в папку по умолчанию:
-
Входящие - в эту папку попадают по умолчанию все входящие письма.
-
Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма.
-
Нежелательная почта в данную папку попадают письма, которые почтовый сервер опознал как спам.
-
Отправленные - в эту папку по умолчанию попадают все отправленные письма.
-
Удаленные - в эту папку попадают все помеченные к удалению письма.
-
Черновики - папка, в которой находятся письма, редактирование которых не завершено.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html
index aa4d6c9db..e8574f63c 100644
--- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html
@@ -1,8 +1,35 @@
-
-
Правило обработки электронной почты
-
Справочник Правила обработки электронной почты предназначен для создания и хранения условий автоматического распределения входящей и исходящей корреспонденции по папкам. Правила настраиваются для Учетной записи электронной почты.
Условие - текстовое описание условия, по которому будут отбираться письма. Текст может быть сформирован автоматически, исходя из настроенных условий.
-
Помещать в папку папка, в которую будут помещены письма, которые соответствуют условию.
-
Условия - указываются поля, по которым будет происходить отбор, значения полей отбора, при необходимости группируются поля отбора.
В поле Условие необходимо выбрать наименование созданного правила - текстовое описание условия, по которому будут отбираться письма.
+
Текст может быть сформирован автоматически, исходя из настроенных условий.
+
Выберите наименование из выпадающего списка, после того как будут сформированы условия правила.
+
Если такое наименование слишком длинно, можно написать свое наименование. Поле является обязательным для заполнения.
+
В поле Помещать в папку укажите с помощью кнопки Выбрать, в какую папку попадут письма, удовлетворяющие заданным условиям. Поле является обязательным для заполнения.
Ввод условий
+
Условия размещаются в списке, в котором указываются поля, по которым будет происходить отбор, значения полей отбора, при необходимости группируются поля отбора.
+
+
Задать новое условие можно по команде Добавить новый элемент. Условий может быть несколько.
+
+
В колонке Поле выберите поле электронного письма, по которому будет производиться отбор. Для этого укажите нужное поле, затем нажмите кнопку Выбрать.
+
+
В колонке Вид сравнения можно выбрать операцию сравнения, при этом кроме стандартных операций, например, Больше или равно, имеются нестандартные, например, В списке.
+
+
С помощью операции сравнения В списке можно задать список возможных значений для отбора, например, сюда можно поместить несколько почтовых ящиков партнера, с которых возможна отправка корреспонденции. Операция сравнения Не в списке является отрицанием предыдущей. Например, в другую папку нужно поместить остальные письма, кроме писем, полученных от перечисленных в списке отправителей.
+
+
С помощью операции Содержит или Не содержит можно использовать поиск по части поля (сочетанию букв) - наименования, темы, адреса, если полностью это поле неизвестно. Например, можно задать шаблон почтовых ящиков контактных лиц определенного партнера, если название сайта партнера известно. В этом случае письма с почтовых адресов с таким сочетанием букв будут помещены в одну папку.
+
+
Определить, есть ли в поле значение, можно с помощью операции Заполнено или Не заполнено. Например, с помощью такого условия можно в отдельную папку поместить письма, в которых не указана тема.
+
Затем настройте Значение. Для этого в зависимости от выбранного поля и вида сравнения нажмите кнопку Выбрать и выберите из предложенного списка значений нужное, введите значение или создайте свой список значений, например, список из нескольких адресов партнера
+
+
Можно использовать несколько условий для более тонкого отбора. Это позволит облегчить работу с почтой, если на почтовый ящик компании поступает много электронных писем.
+
+
В этом случае по команде Сгруппировать условия к выделенным условиям необходимо применить логические операции И, Или, Не. Например, для того чтобы в папку определенного партнера попадали его письма, можно создать правило для папки партнера, а в условиях указать все адреса электронной почты партнера и объединить условия в группу по логической операции Или.
+
+
Если известно, что письма от данного клиента приходят только определенному сотруднику или с определенных адресов, то можно создать более точное условие для отбора почты также с помощью логической операции Или.
+
+
Для того чтобы использовать группировку условий, выделите одно из нужных условий, выполните команду Сгруппировать условия, выберите Тип группы - И, Или, Не. С помощью мыши перетащите остальные условия в группу или создайте их внутри группы.
+
+
Если в правиле задается несколько условий без группировки, то по умолчанию к таким условиям применяется логическая операция И.
+
Нажмите кнопку Записать и закрыть, после этого созданные правила начнут применяться для всех новых писем учетной записи (при получении писем и при изменении статуса писем, например, с нового на черновик и т.д.). Воспользуйтесь соответствующей командой в списке правил обработки электронной почты, для того чтобы применить правила к старым письмам.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Help/ru.html b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Help/ru.html
index 8f7bb1c2d..43c8f9ff9 100644
--- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Help/ru.html
+++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Help/ru.html
@@ -1,4 +1,29 @@
-
-
Правила обработки электронной почты
-
Справочник Правила обработки электронной почты предназначен для создания и хранения условий автоматического распределения входящей и исходящей корреспонденции по папкам. Правила настраиваются для Учетной записи электронной почты.
-
\ No newline at end of file
+
+
Предназначен для создания и хранения условий автоматического распределения входящей и исходящей корреспонденции по папкам. Правила настраиваются для учетной записи электронной почты.
+
Для писем учетной записи можно задать правила обработки электронной почты, по которым письма будут автоматически размещаться в той или иной папке. Задавать правила обработки имеет смысл, если на учетную запись приходит много корреспонденции.
+
Открывается соответствующей командой в панели навигации учетной записи электронной почты.
+
В списке выводится:
+
+
Условие - наименование условия.
+
+
Помещать в папку - указывается папка, в которую будут помещены письма, удовлетворяющие условию.
Порядок применения правил
+
+
С помощью кнопок и можно перемещать условия в списке.
+
+
Порядок, в котором правила отсортированы в списке, используется при определении папки для письма.
+
+
Первыми применяются правила, расположенные в верхней части списка.
+
+
Если при применении первого правила письмо будет определено в папку, то последующие правила для него выполняться не будут.
Если ни одно из правил не определило папку для письма, то оно будет помещено в папку по умолчанию:
+
Входящие - в эту папку попадают по умолчанию все входящие письма.
+
Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма.
+
Нежелательная почта в данную папку попадают письма, которые почтовый сервер опознал как спам.
+
Отправленные - в эту папку по умолчанию попадают все отправленные письма.
+
Удаленные - в эту папку попадают все помеченные к удалению письма.
+
Черновики - папка, в которой находятся письма, редактирование которых не завершено.
Ввод правила
+
Для того чтобы задать правила обработки, в списке выберите команду Создать.
+
Применение правил
+
Для того чтобы отсортировать по новым правилам письма, которые уже существовали в программе на момент создания правила, нужно выделить условия, затем воспользоваться командой списка правил Применить правила.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl
index 8f7e1e4b7..7b1eeec68 100644
--- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl
+++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl
@@ -1,8 +1,16 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
-
-&НаСервере
+
+// Применяет правила обработки писем
+//
+// Параметры:
+// ПараметрыВыгрузки - Структура - содержит следующие поля
+// - ДляПисемВПапке - Справочник.ПапкиЭлектронныхПисем - письма, которые находятся в этой папке будут обработаны.
+// - ВключаяПодчиненные - Булево - признак, того что должны обрабатываться письма в подчиненных папках.
+// - ТаблицаПравил - ТаблицаЗначений - таблица правил, которые должны быть применены.
+// АдресХранилища - Строка - сообщение о результате применения правил.
+//
Процедура ПрименитьПравила(ПараметрыВыгрузки, АдресХранилища) Экспорт
ТаблицаСоответствий = Новый ТаблицаЗначений;
diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ПравилаОбработкиЭлектроннойПочты.mdo b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ПравилаОбработкиЭлектроннойПочты.mdo
index fc89fa1b9..604a2ba46 100644
--- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ПравилаОбработкиЭлектроннойПочты.mdo
+++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ПравилаОбработкиЭлектроннойПочты.mdo
@@ -240,11 +240,6 @@
ruФорма списка
-
-
- ru
-
- PersonalComputerMobileDevice
diff --git a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ObjectModule.bsl b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ObjectModule.bsl
index af9696c21..f7ca348a2 100644
--- a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ObjectModule.bsl
+++ b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ObjectModule.bsl
@@ -3,15 +3,34 @@
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
+ Если ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда
+ ПроверитьЗаполнениеПредопределенного(Отказ);
+ КонецЕсли;
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
-
- Если НЕ ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда
+ Если Не ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") Тогда
ВызватьИсключение НСтр("ru = 'Справочник ""Предопределенные варианты отчетов"" изменяется только при автоматическом заполнении его данных.'");
КонецЕсли;
КонецПроцедуры
+// Базовые проверки корректности данных предопределенных вариантов отчетов.
+Процедура ПроверитьЗаполнениеПредопределенного(Отказ)
+ Если ПометкаУдаления Тогда
+ Возврат;
+ ИначеЕсли Не ЗначениеЗаполнено(Отчет) Тогда
+ ТекстОшибки = НеЗаполненоПоле("Отчет");
+ Иначе
+ Возврат;
+ КонецЕсли;
+ Отказ = Истина;
+ ВариантыОтчетов.ОшибкаПоВарианту(Ссылка, ТекстОшибки);
+КонецПроцедуры
+
+Функция НеЗаполненоПоле(ИмяПоля)
+ Возврат СтрЗаменить(НСтр("ru = 'Не заполнено поле ""%1""'"), "%1", ИмяПоля);
+КонецФункции
+
#КонецОбласти
#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo
index 27742e972..274f0aba7 100644
--- a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo
+++ b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ПредопределенныеВариантыОтчетов.mdo
@@ -103,6 +103,8 @@
ruПредопределенный вариант отчета
+ true
+ HierarchyOfItems2true150
@@ -172,10 +174,10 @@
Use
- ВыводитьТолькоОтчет
+ ГруппироватьПоОтчетуru
- Выводить только отчет
+ Группировать по отчетуBoolean
diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html
index beade0c5f..902691f07 100644
--- a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html
@@ -1,7 +1,32 @@
-
-
Виды дней производственного календаря выделены разными цветами:
+
+
Просмотр или формирование производственного календаря.
+
Производственный календарь - это своеобразный классификатор, постоянные сведения, которые не меняются в течение года.
+
Производственный календарь РФ (который является общегосударственным) входит в поставляемые данные программы и обновляется по мере утверждения календаря и переносов праздников в РФ.
+
При необходимости можно ввести несколько производственных календарей. Их может быть несколько, т.к. в разных регионах предусмотрен разный состав праздничных дней и соответственно переносов.
+
Рекомендуется в начале года ввести производственный календарь на основании общегосударственного календаря на весь год сразу. Это поможет избежать ошибок в расчетах в течение года.
+
Производственный календарь сам по себе не используются в учете. На основании производственного календаря формируются графики работы подразделений, а также графики работы сотрудников.
С помощью команды Изменить день расставьте дни календаря.
+
Виды дней производственного календаря обозначаются разными цветами:
черным – рабочий день,
темно-красным – суббота,
красным – воскресенье,
темно-синим – предпраздничный,
-
фиолетовым – праздник.
\ No newline at end of file
+
фиолетовым – праздник.
По умолчанию новый производственный календарь заполнен выходными днями.
Перенос праздничного дня на другой день
+
Пользоваться этой возможностью имеет смысл в том случае, если данные календаря нужны, но официально он еще не принят и в программе его еще нет, т.к. не все переносы правительство утвердило. Можно заполнить переносы раньше, а потом, когда данные общегосударственного календаря будут утверждены и войдут в поставку программы, переносы автоматически корректируются.
+
Выделите в производственном календаре праздничный день, который необходимо перенести.
+
Сведения о переносах дней отображаются в правой части производственного календаря в списке Переносы дней.
Заполнение по умолчанию
+
С помощью команды Заполнить по умолчанию можно заполнить календарь на основании общегосударственного производственного календаря, входящего в поставку программы.
+
На текущий год автоматическое формирование производственного календаря производится на основании уже утвержденных сведений о рабочих днях, праздниках и переносах праздничных дней, на будущие годы - согласно ТК РФ (для российского производственного календаря).
Печать производственного календаря
+
Нажмите Печать, для того чтобы вывести сводные сведения о производственном календаре на указанный год.
+
Предусмотрен вывод сведений о годовом балансе рабочего времени, а также по месяцам, за квартал, полугодие.
+
Выводится статистика по количеству календарных дней, рабочих, выходных и праздничных дней, а также рабочее время в часах при 40-часовой, 36-часовой и 24-часовой рабочей неделе.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl
index 5c217cec0..7b914ded0 100644
--- a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl
@@ -153,18 +153,21 @@
&НаКлиенте
Процедура Печать(Команда)
- ПараметрыПечати = Новый Структура;
- ПараметрыПечати.Вставить("ПроизводственныйКалендарь", Объект.Ссылка);
- ПараметрыПечати.Вставить("НомерГода", НомерТекущегоГода);
-
- ПараметрКоманды = Новый Массив;
- ПараметрКоманды.Добавить(Объект.Ссылка);
-
- Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
- МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент");
- МодульУправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Справочник.ПроизводственныеКалендари", "ПроизводственныйКалендарь",
- ПараметрКоманды, ЭтотОбъект, ПараметрыПечати);
+ Если Объект.Ссылка.Пустая() Тогда
+ Обработчик = Новый ОписаниеОповещения("ПечатьЗавершение", ЭтотОбъект);
+ ПоказатьВопрос(
+ Обработчик,
+ НСтр("ru = 'Данные производственного календаря еще не записаны.
+ |Печать возможна только после записи данных.
+ |
+ |Записать?'"),
+ РежимДиалогаВопрос.ДаНет,
+ ,
+ КодВозвратаДиалога.Да);
+ Возврат;
КонецЕсли;
+
+ ПечатьЗавершение(-1);
КонецПроцедуры
@@ -179,10 +182,11 @@
НастроитьПолеКалендаря();
+ СсылкаНаКалендарь = Объект.Ссылка;
Если ЗначениеЗаполнено(ЗначениеКопирования) Тогда
СсылкаНаКалендарь = ЗначениеКопирования;
- Иначе
- СсылкаНаКалендарь = Объект.Ссылка;
+ Объект.Наименование = Неопределено;
+ Объект.Код = Неопределено;
КонецЕсли;
ПрочитатьДанныеПроизводственногоКалендаря(СсылкаНаКалендарь, НомерТекущегоГода);
@@ -431,4 +435,32 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ПечатьЗавершение(ОтветНаПредложениеЗаписать, ПараметрыВыполнения = Неопределено) Экспорт
+
+ Если ОтветНаПредложениеЗаписать <> -1 Тогда
+ Если ОтветНаПредложениеЗаписать <> КодВозвратаДиалога.Да Тогда
+ Возврат;
+ КонецЕсли;
+ Записан = Записать();
+ Если Не Записан Тогда
+ Возврат;
+ КонецЕсли;
+ КонецЕсли;
+
+ ПараметрыПечати = Новый Структура;
+ ПараметрыПечати.Вставить("ПроизводственныйКалендарь", Объект.Ссылка);
+ ПараметрыПечати.Вставить("НомерГода", НомерТекущегоГода);
+
+ ПараметрКоманды = Новый Массив;
+ ПараметрКоманды.Добавить(Объект.Ссылка);
+
+ Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
+ МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент");
+ МодульУправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Справочник.ПроизводственныеКалендари", "ПроизводственныйКалендарь",
+ ПараметрКоманды, ЭтотОбъект, ПараметрыПечати);
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/Help/ru.html b/SSL/src/Catalogs/ПроизводственныеКалендари/Help/ru.html
new file mode 100644
index 000000000..33ed4540f
--- /dev/null
+++ b/SSL/src/Catalogs/ПроизводственныеКалендари/Help/ru.html
@@ -0,0 +1,10 @@
+
+
Предназначен для формирования и хранения производственных календарей.
+
Открывается по соответствующей команде в разделе Справочники.
+
Производственный календарь - это своеобразный классификатор, постоянные сведения, которые не меняются в течение года. Их может быть несколько, т.к. в разных регионах предусмотрен разный состав праздничных дней и соответственно переносов.
+
Производственный календарь РФ (который является общегосударственным) входит в поставляемые данные программы и обновляется по мере утверждения календаря и переносов праздников в РФ. При необходимости можно ввести несколько производственных календарей. Рекомендуется ввести производственный календарь в начале года на основании общегосударственного календаря на весь год сразу. Это поможет избежать ошибок в расчетах в течение года.
+
Производственные календари сами по себе не используются в учете. На основании производственного календаря формируются графики работы подразделений, а также графики работы сотрудников.
Выделите папку, нажмите Выбрать. Также можно воспользоваться двойным щелчком левой кнопки мыши.
Т.к. профилей групп доступа может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать папки для упрощения поиска нужного профиля групп доступа и понимания ограничений прав доступа в целом.
diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Module.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Module.bsl
index 5c5df988e..3d61b61fb 100644
--- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Module.bsl
+++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Module.bsl
@@ -13,6 +13,5 @@
// Отбор не помеченных на удаление.
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ПометкаУдаления", Ложь, , , Истина,
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
-
+ РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецПроцедуры
diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form
index e4e26bd55..2e557dfec 100644
--- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form
+++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form
@@ -16,7 +16,7 @@
Наименование группы (папки)
- НаименованиеExtendedTooltip
+ НаименованиеРасширеннаяПодсказка5Labeltrue
@@ -65,7 +65,7 @@
Вышестоящая группа (папка), объединяющая группы (папки) для удобства поиска
- РодительExtendedTooltip
+ РодительРасширеннаяПодсказка6Labeltrue
diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Help/ru.html b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Help/ru.html
index a14f8c9d9..cb2a42b20 100644
--- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Help/ru.html
+++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Профилей групп доступа может быть много и с похожим назначением, поэтому предусмотрена возможность создавать папки (группы) для упрощения поиска нужного профиля и понимания принципов их формирования.
Предназначен для управлениия профилями групп доступа.
+
+
Предназначен для управления профилями групп доступа.
Профилей групп доступа может быть много и с похожим назначением, поэтому предусмотрена возможность создавать папки для упрощения поиска нужного профиля и понимания принципов их формирования.
Список открывается по команде Профили групп доступа в разделе Администрирование - Настройка пользователей и прав.
Основной профиль описывает некоторую совокупность прав доступа, достаточную для выполнения в программе определенного участка работ.
С помощью дополнительных профилей пользователям могут быть выданы какие-либо вспомогательные права дополнительно к основному профилю.
Например, дополнительно к основным профилям Бухгалтер и Кладовщик предусмотрены профили Ведение переписки с контрагентами и Печать непроведенных документов.
Рекомендации по созданию основных профилей групп доступа
-
В основных профилях важно предусмотреть такой набор ролей, который с одной стороны, не будет давать избыточного (нежелательного) доступа к функциям и данным программы, а с другой - будет достаточным для работы пользователей в рамках их круга задач и обязанностей. В частности, в основном профиле следует предусмотреть ряд вспомогательных ролей, которые напрямую не связаны с основной деятельностью пользователей, но тем не менее, необходимы для нее. Например, для оператора по вводу документов помимо роли на добавление и изменение этих документов нужно также не забыть включить в профиль следующие роли:
-
роль для входа в программу с помощью тонкого, толстого иои веб-клиента;
+
В основных профилях важно предусмотреть такой набор ролей, который с одной стороны, не будет давать избыточного (нежелательного) доступа к функциям и данным программы, а с другой - будет достаточным для работы пользователей в рамках их круга задач и обязанностей. В частности, в основном профиле следует предусмотреть ряд вспомогательных ролей, которые напрямую не связаны с основной деятельностью пользователей, но, тем не менее, необходимы для нее. Например, для оператора по вводу документов помимо роли на добавление и изменение этих документов нужно также не забыть включить в профиль следующие роли:
+
роль для входа в программу с помощью тонкого, толстого или веб-клиента;
предопределенные роли Базовые права и Базовые права УТ;
роли для просмотра справочников, элементы которых требуется выбирать в полях документов;
-
роли для просмотра отчетов подвижениям документов и т.п.
Например, в профиль Аудитор помимо основной роли Чтение физических лиц, разрешающей просмотр сведений о физических лицах, необходимо включить также ряд вспомогательных ролей, обеспечивающих базовые возможности для работы в программе (например, Базовые права, Запуск тонкого клиента и т.п.).
+
роли для просмотра отчетов по движениям документов и т.п.
Например, в профиль Аудитор помимо основной роли Чтение физических лиц, разрешающей просмотр сведений о физических лицах, необходимо включить также ряд вспомогательных ролей, обеспечивающих базовые возможности для работы в программе (например, Базовые права, Запуск тонкого клиента и т.п.).
В программе существуют предопределенные профили групп доступа. В ряде случаев предустановленных профилей групп доступа оказывается недостаточно для осуществления требуемой настройки прав доступа пользователей. В таких случаях администратор имеет возможность добавить новые или изменить предустановленные профили групп доступа.
Профиль групп доступа объединяет в себе, как правило, несколько ролей, а также содержит описание видов доступа, в разрезе которых администратор может настраивать права с помощью групп доступа. Таким образом, профиль представляет собой определенный шаблон, в соответствии с которым администратор ведет группы доступа.
Как правило, настройка профилей групп доступа обычно выполняется при внедрении и конфигурировании прикладного решения. Они предназначены для создания готовых подборок разрешенных действий (ролей), содержащих права доступа к объектам программы, и "разрезов" ограничения этих прав (видов доступа), которые предполагается использовать в группах доступа.
В ряде случаев предустановленных профилей групп доступа оказывается недостаточно для осуществления требуемой настройки прав доступа пользователей. В таких случаях администратор имеет возможность добавить новые или изменить предустановленные профили групп доступа.
С помощью профилей становится возможным:
diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl
index 528b032fb..721b951ad 100644
--- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl
+++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl
@@ -309,6 +309,65 @@
КонецПроцедуры
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь
+ // не делается проверка существования подсистемы.
+ МодульТекущиеДелаСлужебныйПовтИсп = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСлужебныйПовтИсп");
+
+ ПринадлежностьОбъектов = МодульТекущиеДелаСлужебныйПовтИсп.ПринадлежностьОбъектовРазделамКомандногоИнтерфейса();
+ Разделы = ПринадлежностьОбъектов[Метаданные.Справочники.ПрофилиГруппДоступа.ПолноеИмя()];
+
+ Если Разделы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Для Каждого Раздел Из Разделы Цикл
+
+ КоличествоНесовместимыхПрофилейГруппДоступа = КоличествоНесовместимыхПрофилейГруппДоступа();
+
+ ИдентификаторПрофиля = "НеСовместимыСТекущейВерсией" + СтрЗаменить(Раздел.ПолноеИмя(), ".", "");
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = ИдентификаторПрофиля;
+ Дело.ЕстьДела = КоличествоНесовместимыхПрофилейГруппДоступа > 0;
+ Дело.Представление = НСтр("ru = 'Не совместимы с текущей версией'");
+ Дело.Количество = КоличествоНесовместимыхПрофилейГруппДоступа;
+ Дело.Владелец = Раздел;
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ПрофилиГруппДоступа";
+ Дело.ЕстьДела = КоличествоНесовместимыхПрофилейГруппДоступа > 0;
+ Дело.Важное = Истина;
+ Дело.Представление = НСтр("ru = 'Профили групп доступа'");
+ Дело.Количество = КоличествоНесовместимыхПрофилейГруппДоступа;
+ Дело.Форма = "Справочник.ПрофилиГруппДоступа.Форма.ФормаСписка";
+ Дело.ПараметрыФормы= Новый Структура("ПрофилиСРолямиПомеченнымиНаУдаление", Истина);
+ Дело.Владелец = ИдентификаторПрофиля;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -751,8 +810,8 @@
ОписанияПрофилей, ПараметрыОбновления);
ЗаголовокОшибки =
- НСтр("ru = 'Ошибка в процедуре ПриЗаполненииПоставляемыхПрофилейГруппДоступа
- |модуля УправлениеДоступомПереопределяемый.
+ НСтр("ru = 'Заданы недопустимые значения в процедуре ПриЗаполненииПоставляемыхПрофилейГруппДоступа
+ |общего модуля УправлениеДоступомПереопределяемый.
|
|'");
@@ -760,7 +819,7 @@
И НЕ ПараметрыОбновления.ОбновлятьИзмененныеПрофили Тогда
ВызватьИсключение ЗаголовокОшибки +
- НСтр("ru = 'Когда в переменной ПараметрыОбновления свойство
+ НСтр("ru = 'Когда в параметре ПараметрыОбновления свойство
|ОбновлятьИзмененныеПрофили установлено Ложь,
|тогда свойство ЗапретитьИзменениеПрофилей тоже
|должно быть установлено Ложь.'");
@@ -1117,6 +1176,23 @@
КонецФункции
+Функция КоличествоНесовместимыхПрофилейГруппДоступа()
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ПрофилиГруппДоступа.Ссылка
+ |ИЗ
+ | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
+ |ГДЕ
+ | ПрофилиГруппДоступа.Роли.Роль.ПометкаУдаления = ИСТИНА";
+
+ Результат = Запрос.Выполнить().Выгрузить();
+
+ Возврат Результат.Количество();
+
+КонецФункции
+
#КонецОбласти
#КонецЕсли
diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl
index 95d014335..774226452 100644
--- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl
+++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl
@@ -92,56 +92,7 @@
Возврат;
КонецЕсли;
- // Проверка однозначности поставляемых данных.
- Если ИдентификаторПоставляемыхДанных <> Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
- УстановитьПривилегированныйРежим(Истина);
-
- Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("ИдентификаторПоставляемыхДанных", ИдентификаторПоставляемыхДанных);
- Запрос.Текст =
- "ВЫБРАТЬ
- | ПрофилиГруппДоступа.Ссылка КАК Ссылка,
- | ПрофилиГруппДоступа.Наименование КАК Наименование
- |ИЗ
- | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
- |ГДЕ
- | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных = &ИдентификаторПоставляемыхДанных";
-
- Выборка = Запрос.Выполнить().Выбрать();
- Если Выборка.Количество() > 1 Тогда
-
- КраткоеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при записи профиля ""%1"".
- |Поставляемый профиль уже существует:'"),
- Наименование);
-
- ПодробноеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при записи профиля ""%1"".
- |Идентификатор поставляемых данных ""%2"" уже используется в профиле:'"),
- Наименование,
- Строка(ИдентификаторПоставляемыхДанных));
-
- Пока Выборка.Следующий() Цикл
- Если Выборка.Ссылка <> Ссылка Тогда
-
- КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки
- + Символы.ПС + """" + Выборка.Наименование + """.";
-
- ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки
- + Символы.ПС + """" + Выборка.Наименование + """ ("
- + Строка(Выборка.Ссылка.УникальныйИдентификатор())+ ")."
- КонецЕсли;
- КонецЦикла;
-
- ЗаписьЖурналаРегистрации(
- НСтр("ru = 'Управление доступом.Нарушение однозначности поставляемого профиля'",
- ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки);
-
- ВызватьИсключение КраткоеПредставлениеОшибки;
- КонецЕсли;
- УстановитьПривилегированныйРежим(Ложь);
- КонецЕсли;
+ ПроверитьОднозначностьПоставляемыхДанных();
ОбъектыМетаданных = ОбновитьРолиПользователейПриИзмененииРолейПрофиля();
@@ -198,19 +149,27 @@
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
+ Если ЭтоГруппа Тогда
+ Возврат;
+ КонецЕсли;
+
Если ДополнительныеСвойства.Свойство("ПроверенныеРеквизитыОбъекта") Тогда
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(
ПроверяемыеРеквизиты, ДополнительныеСвойства.ПроверенныеРеквизитыОбъекта);
КонецЕсли;
+ ПроверитьОднозначностьПоставляемыхДанных(Истина, Отказ);
+
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
- Если НЕ ЭтоГруппа Тогда
- ИдентификаторПоставляемыхДанных = Неопределено;
+ Если ЭтоГруппа Тогда
+ Возврат;
КонецЕсли;
+ ИдентификаторПоставляемыхДанных = Неопределено;
+
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -295,6 +254,65 @@
КонецФункции
+Процедура ПроверитьОднозначностьПоставляемыхДанных(ПроверкаЗаполнения = Ложь, Отказ = Ложь)
+
+ // Проверка однозначности поставляемых данных.
+ Если ИдентификаторПоставляемыхДанных <> Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
+ УстановитьПривилегированныйРежим(Истина);
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("ИдентификаторПоставляемыхДанных", ИдентификаторПоставляемыхДанных);
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ПрофилиГруппДоступа.Ссылка КАК Ссылка,
+ | ПрофилиГруппДоступа.Наименование КАК Наименование
+ |ИЗ
+ | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
+ |ГДЕ
+ | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных = &ИдентификаторПоставляемыхДанных";
+
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Количество() > 1 Тогда
+
+ КраткоеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при записи профиля ""%1"".
+ |Поставляемый профиль уже существует:'"),
+ Наименование);
+
+ ПодробноеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при записи профиля ""%1"".
+ |Идентификатор поставляемых данных ""%2"" уже используется в профиле:'"),
+ Наименование,
+ Строка(ИдентификаторПоставляемыхДанных));
+
+ Пока Выборка.Следующий() Цикл
+ Если Выборка.Ссылка <> Ссылка Тогда
+
+ КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки
+ + Символы.ПС + """" + Выборка.Наименование + """.";
+
+ ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки
+ + Символы.ПС + """" + Выборка.Наименование + """ ("
+ + Строка(Выборка.Ссылка.УникальныйИдентификатор())+ ")."
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ПроверкаЗаполнения Тогда
+ Отказ = Истина;
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = КраткоеПредставлениеОшибки;
+ Сообщение.Сообщить();
+ Иначе
+ ЗаписьЖурналаРегистрации(
+ НСтр("ru = 'Управление доступом.Нарушение однозначности поставляемого профиля'",
+ ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
+ УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
#КонецЕсли
diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo b/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo
index 00d4b2378..4b46346d7 100644
--- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo
+++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo
@@ -106,6 +106,7 @@
Use
+ trueru
diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl
index b05d37f04..6bd359999 100644
--- a/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl
+++ b/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl
@@ -61,7 +61,7 @@
Если Результат.Статус = "ВыполненоУспешно" Тогда
СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(Форма, Результат.Детали);
ИначеЕсли Результат.Статус = "Исключение" Тогда
- ТекстПредупреждения = НСтр("ru = 'Рассылки не выполнены из-за ошибки,
+ ТекстПредупреждения = НСтр("ru = 'Не удалось выполнить рассылку отчетов.
|Подробности см. в журнале регистрации.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
ИначеЕсли Результат.Статус = "Выполняется" Тогда
diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html
index dc7b1666d..94fe97667 100644
--- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html
+++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html
@@ -1,21 +1,14 @@
-
-
Позволяет указать параметры, необходимые для подключения к FTP ресурсу. Поле "Сервер и каталог" является обязательным для заполнения, остальные поля не обязательны.
Позволяет указать параметры, необходимые для подключения к FTP-ресурсу при рассылке отчетов. Поле Сервер и каталог является обязательным для заполнения, остальные поля не обязательны.
Открывается из рассылки отчетов по гиперссылке Укажите получателей.
+
Список состоит из колонок:
+
Получатель - выбранный элемент соответствующего списка, например, Пользователи, через запятую приводится его электронная почта.
+
Исключен - с помощью флажка в этой колонке можно на время отключить получателя, если в данный момент рассылка ему не нужна (например, он ушел в отпуск), однако в списке он останется и при необходимости рассылку можно возобновить.
Выбор нескольких получателей
+
С помощью кнопки Подобрать выберите несколько элементов списка. Подбор осуществляется из выбранного в рассылке списка получателей, например, Пользователи.
Выбор одного получателя
+
Выполните команду Еще (Все действия) - Добавить, выберите один элемент списка. Также можно найти эту команду в контекстном меню по правой кнопке мыши.
Добавление из буфера обмена
+
Нажмите кнопку , для того чтобы вставить в список данные из буфера обмена программы.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Module.bsl
index 0096bf812..b2786531d 100644
--- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Module.bsl
+++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Module.bsl
@@ -11,8 +11,7 @@
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ЭтоГруппа", Истина,
ВидСравненияКомпоновкиДанных.Равно, , ,
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
-
+ РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html
index 9ed788007..9269dee40 100644
--- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html
+++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html
@@ -1 +1,6 @@
-Позволяет задать Наименование и Группу для группы рассылок отчетов.
\ No newline at end of file
+
+
Предназначена для автоматического формирования отчетов и доставки сформированных отчетов получателям.
+
Рассылки отчетов позволяют автоматизировать процесс получения отчетов так, что, не открывая программу, можно получить в нужное время готовый отчет на свою электронную почту или в определенный каталог в виде файла.
- все способы доставки (по электронной почте и публикация).
+
в поле Получатели выберите тип получателей - один из списков программы (например, Пользователи).
Свой отчет для каждого получателя - только по электронной почте, но доступны параметры персонализации.
+
в поле Получатели выберите тип получателей.
Отчеты
+
На этой вкладке можно выбрать для рассылки один или несколько отчетов из списка с помощью кнопки Подобрать.
+
С помощью кнопки Просмотр можно сформировать выбранный отчет.
+
Настройки отчета - выводятся настройки отчета, с помощью флажков можно выбрать нужные настройки и указать значения, по которым будет выведен отчет.
+
Если выбран вид рассылки Свой отчет для каждого получателя, то с помощью соответствующей кнопки для каждого отчета можно Указать получателя рассылки из соответствующего списка.
+
В заголовке вкладки ведется количество отчетов, входящих в рассылку.
Расписание
+
+
Для автоматической отправки отчетов с некоторым интервалом или в некоторые дни недели на вкладке можно описать, по каким дням, и в какое время программа должна отправлять эту рассылку. На основании каждой рассылки отчетов в программе формируются одноименные регламентные задания "Рассылка отчетов".
+
+
Включите флажок Выполнять по расписанию.
+
+
Имеется возможность автоматического составления расписания с помощью кнопки Заполнить по шаблону. Выберите нужное расписание из списка, например, в первый день месяца. Расписание заполнится автоматически.
+
+
Кроме этого, в программе предусмотрена возможность самостоятельно выбрать периодичность расписания (определяет частотность срабатывания рассылки, переключение данного параметра влияет на все настройки расписания):
+
Ежедневно - рассылка будет выполняться с заданной частотой в днях.
+
Ежемесячно - по выбранным месяцам в требуемый день месяца.
+
Выберите месяцы с помощью флажков, укажите номер дня с начала или с конца месяца, в который будет производиться рассылка.
Произвольное - позволяет детально настроить каждый параметр расписания. Открывается окно Расписание для детальной разработки своего расписания. При этом необязательно заполнять его сразу, после закрытия окна становится доступной кнопка Изменить, по которой можно вернуться к настройке расписания в любое время. В этом случае Время начала настраивается также в окне Расписание.
В поле Автор выберите пользователя из списка. По умолчанию программа выбирает в качестве автора текущего пользователя, который создает рассылку.
+
При запуске по расписанию рассылка выполняется от имени автора.
Доставка
+
На вкладке описываются все возможные способы доставки настраиваемой рассылки. Содержимое вкладки может меняться, в зависимости от вида рассылки.
+
Если выбрана личная рассылка автора, то доставка выполняется только по электронной почте по единственному адресу, который указывается в поле Почтовый адрес.
+
Если выбран Свой отчет для каждого получателя, то доставка также выполняется только по электронной почте, но уже не одному, а нескольким получателям. Тип получателей выбирается в поле Получатели. Получатели для каждого отчета выбираются из соответствующего списка.
+
Если выбраны Отчеты указанным получателям, то кроме доставки по почте появляется возможность сохранить (опубликовать) готовые отчеты. Для этого включите флажок Публиковать - признак необходимости публикации рассылки. Выберите соответствующее значение:
+
В папку - отчеты будут сохранены в указанную папку подсистемы "Работа с файлами".
+
В сетевой каталог - отчеты будут сохранены в выбранный сетевой каталог. Запись производится с сервера, поэтому рекомендуется указывать сетевой путь в формате UNC, например: \\server\folder\. Укажите адрес этого каталога в поле Windows (если вы работаете на компьютере под управлением этой операционной системы) или в поле Linux (если вы работаете на компьютере под управлением Linux).
+
Укажите получателей - нажмите на гиперссылку, для того чтобы заполнить список получателей и исключений из получателей рассылки. Можно выбирать элементы или группы получателей. После заполнения гиперссылка принимает вид списка получателей: указывается первый получатель списка.
+
Проверить - проверка учетной записи электронной почты путем отправки тестового сообщения. Тест считается успешным, если ошибок не возникло.
+
Если используются оба способа доставки (и публикация, и отправка по почте), то можно указать, что по почте нужно Отправлять только уведомление о том, что отчет сформирован. Сами отчеты не будут присоединяться к письму, а будут помещаться в каталог публикации. В этом случае письмо-уведомление будет содержать адрес, по которому находится сформированный отчет.
+
После установки флажка Отправлять по электронной почте становятся доступными Тема и текст письма. Могут содержать шаблоны параметров рассылки. По умолчанию шаблон письма уже сформирован автоматически. Для добавления параметров в письмо нажмите Параметр, выберите нужное значение:
+
[ДатаВыполнения] - дата рассылки. Параметр может быть указан в имени архива.
+
[НаименованиеРассылки] - наименование рассылки. Параметр может быть указан в имени архива.
+
+
[СформированныеОтчеты] - список отчетов и форматов, в которые они были сохранены.
+
+
[ЗаголовокСистемы] - заголовок информационной базы 1С:Предприятие для всех пользователей. Устанавливается в разделе Администрирование - Общие настройки.
+
+
[СпособДоставки] - представление ресурса, на котором был опубликован отчет.
+
По умолчанию установлен формат письма HTML, можно изменить его на Обычный. В формате HTML доступны стандартные команды форматирования текста (часть из них размещена в виде кнопок, остальные можно найти в меню Еще или Все действия).
В таблице ниже для каждого отчета можно задать свой набор форматов в колонке Форматы.
+
В колонке Отправлять пустой установите флажок для отправки сформированного отчета, даже если он пустой. По умолчанию флажок снят. Отчеты с графикой всегда считаются не пустыми.
+
Установите флажок Архивировать в ZIP, для того чтобы архивировать сформированные отчеты в формате .zip. Рекомендуется включать архивацию, если отчеты отправляются по электронной почте, для снижения объема вложений.
+
Становится доступным поле Наименование архива (наименование архива формируется автоматически по указанному в поле шаблону).
+
С помощью команды Параметр контекстного меню по правой кнопке мыши в поле Наименование архива можно изменить шаблон наименования. Для изменения доступны параметры:
+
Дата рассылки;
+
Наименование рассылки.
При необходимости напишите Пароль архива.
В поле Адрес ответа укажите E-mail адрес, на который будут высылаться ответы на рассылку.
+
Включите флажок Отправлять письма через скрытые копии, для того чтобы получатели не знали, кто еще получает отчеты из данной рассылки.
+
Группа - рассылки можно сгруппировать по различным признакам. Для того чтобы поместить рассылку в группу, выберите ее из списка.
Выполнение рассылки
+
+
Нажмите Выполнить сейчас, для того чтобы выполнить рассылку от имени текущего пользователя. Рассылка будет выполнена, если у нее установлен флажок Подготовлена.
Просмотр событий рассылки
+
+
Нажмите События рассылки, для того чтобы открыть журнал регистрации, предварительно отфильтровав его по событиям рассылки со времени последнего запуска.
Отчеты указанным получателям - все способы доставки (по электронной почте и публикация). Свой отчет для каждого получателя - только по электронной почте, но доступны параметры персонализации. Только мне (личная рассылка автора) - только по электронной почте, заполняется минимальное количество полей.
определяет частотность срабатывания рассылки. Переключение данного параметра влияет на все настройки расписания.
-
-
Ежедневно - рассылка будет выполняться с заданной частотой в днях. Еженедельно - по выбранным дням недели. Ежемесячно - по выбранным месяцам в требуемый день месяца. Расширенные параметры - позволяет детально настроить каждый параметр расписания.
В папку - отчеты будут сохранены в указанную папку подсистемы "Работа с файлами". В сетевой каталог - отчеты будут сохранены в каталог файловой системы. Запись производится с сервера, поэтому рекомендуется указывать сетевой путь в формате UNC, например: \\server\folder\. На FTP ресурс - отчеты будут сохранены на ftp сервере.
[ДатаВыполнения] - дата рассылки. Параметр может быть указан в имени архива. [Автор] - пользователь, запустивший рассылку. [Получатель] - представление получателя рассылки. Доступен только для вида рассылки свой отчет для каждого получателя. [НаименованиеРассылки] - наименование рассылки. Параметр может быть указан в имени архива. [СформированныеОтчеты] - список отчетов и форматов, в которые они были сохранены. [ЗаголовокСистемы] - заголовок информационной базы 1С:Предприятие для всех пользователей. [СпособДоставки] - представление ресурса, на котором был опубликован отчет.
Позволят выполнить выбранные рассылки или группы рассылок от имени текущего пользователя. Выполняться будут только те рассылки, у которых установлен флажок подготовленности.
При работе информационной базы в клиент-серверном режиме необходимо иметь в виду, что рассылка выполняется на сервере 1С:Предприятия.
-
Путь к одному ресурсу может отличаться для клиента и сервера, в зависимости от их сетевого расположения и операционных систем.
-
Если сервер 1С:Предприятия работает под Windows, то необходимо убедиться, что сетевой каталог Windows доступен для чтения и записи пользователю операционной системы, от имени которого запущен сервер 1С:Предприятия. Если это не так, то необходимо дать этому пользователю необходимые права, или выбрать другого пользователя для запуска сервера 1С:Предприятия с необходимыми правами к сетевому каталогу. Эти же рекомендации актуальны и для доступа к ресурсам FTP и электронной почты.
-
Поле сетевой каталог Linux предназначено для серверов 1С:Предприятия работающих под управлением ОС Linux. В этом поле можно указать только локальный путь, например /home/path. Чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора (root) сделайте следующее:
-
mkdir folder --- вместо folder напишите имя каталога. например в каталоге /home делаем mkdir shared - создаст каталог shared с полным путем /home/shared.
-
mount -t cifs //server/share folder -o //domain/user, password=pwd - где //server/share - UNC путь к другому компьютеру , folder - путь каталога на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если нужно, pwd - пароль пользователя (если нужно).
-
Если имя и пароль не нужны, команда выглядит так: mount -t cifs //server/share folder
-
После этого в пути к тому указываем folder, например /home/shared
-
Подробнее об администрировании сервера 1С:Предприятия см. документацию к платформе 1С:Предприятие.
При работе программы в клиент-серверном режиме необходимо иметь в виду, что рассылка выполняется на сервере 1С:Предприятия.
+
Путь к одному ресурсу может отличаться для клиента и сервера, в зависимости от их сетевого расположения и операционных систем.
+
Если сервер 1С:Предприятия работает под Windows, то необходимо убедиться, что сетевой каталог Windows доступен для чтения и записи пользователю операционной системы, от имени которого запущен сервер 1С:Предприятия. Если это не так, то необходимо дать этому пользователю необходимые права, или выбрать другого пользователя для запуска сервера 1С:Предприятия с необходимыми правами к сетевому каталогу. Эти же рекомендации актуальны и для доступа к ресурсам FTP и электронной почты.
+
Поле сетевой каталог Linux предназначено для серверов 1С:Предприятия, работающих под управлением ОС Linux. В этом поле можно указать только локальный путь, например, /home/path.
+
Для того чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора (root) сделайте следующее:
+
mkdir folder --- вместо folder напишите имя каталога. например в каталоге /home выполните команду mkdir shared, для того чтобы создать каталог shared с полным путем /home/shared.
+
mount -t cifs //server/share folder -o //domain/user, password=pwd - где //server/share - UNC путь к другому компьютеру , folder - путь каталога на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если нужно, pwd - пароль пользователя (если нужно).
+
Если имя и пароль не нужны, команда выглядит так: mount -t cifs //server/share folder
+
После этого в пути к тому указываем folder, например /home/shared.
Подробнее об администрировании сервера 1С:Предприятия см. документацию к платформе 1С:Предприятие.
Предназначен для подготовки рассылок с целью автоматического формирования отчетов и доставки сформированных отчетов получателям.
+
Открывается по команде Рассылки отчетов из раздела Сервисные подсистемы.
+
Программа содержит большое количество отчетов. Зачастую пользователям нужно периодически получать один и тот же отчет. Например, в начале каждого рабочего дня менеджеру нужно видеть текущее состояние взаиморасчетов со своими клиентами. Или в конце каждой недели директор хочет видеть состояние основных финансовых показателей фирмы.
+
Рассылка отчетов позволяет автоматизировать этот процесс так, что, не открывая программу, можно получить в нужное время готовый отчет на свою электронную почту или в определенный каталог в виде файла.
+
Возможность создать несколько рассылок упрощает работу. Каждая отдельная рассылка, как правило, объединяет несколько отчетов, или несколько получателей, или имеет особенную периодичность доставки.
+
Например, одна рассылка может быть предназначена исключительно для директора и руководства фирмы. Другая рассылка может содержать отчеты, которые ежедневно отправляются некоторым сотрудникам. Третья рассылка может содержать отчеты, формируемые для контрагентов по их требованию.
+
Подготовленные рассылки отчетов могут выполняться автоматически по расписанию с помощью регламентного задания "Рассылка отчетов" или запускаться вручную.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl b/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl
index 7333232ad..b60825e2b 100644
--- a/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl
+++ b/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl
@@ -134,15 +134,14 @@
Возврат;
КонецЕсли;
- // Создание регламентное задание (получение уникального идентификатора)
+ // Создание регламентного задания - пустышки (для хранения его идентификатора в данных).
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(РегламентноеЗадание);
Если Задание = Неопределено Тогда
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов);
Задание.ИмяПользователя = РассылкаОтчетов.ПолучитьИмяПользователяИБ(Автор);
- Задание.Использование = ВыполнятьПоРасписанию;
+ Задание.Использование = Ложь;
Задание.Наименование = ПредставлениеЗаданияПоРассылке(Наименование);
- Задание.Расписание = ДополнительныеСвойства.Расписание;
Задание.Записать();
РегламентноеЗадание = Задание.УникальныйИдентификатор;
@@ -237,7 +236,7 @@
Если ЗаданиеИзменено Тогда
Задание.Записать();
- КонецЕсли;
+ КонецЕсли;
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
diff --git a/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo b/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo
index 26777f487..cddc18447 100644
--- a/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo
+++ b/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo
@@ -109,6 +109,7 @@
Use
+ trueru
@@ -144,289 +145,6 @@
Catalog.РассылкиОтчетов.Form.ФормаСпискаCatalog.РассылкиОтчетов.Form.ФормаСпискаCatalog.РассылкиОтчетов.Form.ФормаВыбораГруппы
-
- Автор
-
- ru
- Автор
-
-
- CatalogRef.Пользователи
-
-
- ru
- При выполнении по расписанию отчеты формируются с правами автора рассылки
-
-
-
- ShowError
-
- Index
- Use
- Use
-
-
- Подготовлена
-
- ru
- Подготовлена
-
-
- Boolean
-
-
- ru
- Готовность рассылки к выполнению
-
-
-
- true
-
- true
-
- Index
- Use
-
-
- Личная
-
- ru
- Личная
-
-
- Boolean
-
-
- ru
-
-
-
-
-
- Index
- Use
-
-
- Персонализирована
-
- ru
- Персонализирована
-
-
- Boolean
-
-
- ru
-
-
-
-
-
- Use
- Use
-
-
- ВыполнятьПоРасписанию
-
- ru
- Выполнять по расписанию
-
-
- Boolean
-
-
- ru
- Рассылка будет выполняться автоматически по заданному расписанию
-
-
-
-
- Index
- Use
-
-
- ПериодичностьРасписания
-
- ru
- Периодичность расписания
-
-
- EnumRef.ПериодичностиРасписанийРассылокОтчетов
-
-
- ru
- Периодичность, с которой требуется выполнять рассылку по расписанию
-
-
-
- ShowError
-
- Enum.ПериодичностиРасписанийРассылокОтчетов.EmptyRef
-
- Use
- Use
-
-
- РегламентноеЗадание
-
- ru
- Регламентное задание
-
-
- UUID
-
-
- ru
-
-
-
-
-
- Use
-
-
- ИспользоватьПапку
-
- ru
- Использовать папку
-
-
- Boolean
-
-
- ru
- Флажок доставки в папку программы
-
-
-
-
- Use
- Use
-
-
- Папка
-
- ru
- Папка
-
-
- CatalogRef.ПапкиФайлов
-
-
- ru
- Папка программы для доставки отчетов
-
-
-
- ShowError
-
- Use
-
-
- ИспользоватьСетевойКаталог
-
- ru
- Использовать сетевой каталог
-
-
- Boolean
-
-
- ru
- Флажок доставки в сетевой каталог
-
-
-
-
- Use
- Use
-
-
- СетевойКаталогWindows
-
- ru
- Сетевой каталог windows
-
-
- String
-
- 200
-
-
-
- ru
- Сетевой каталог для доставки отчетов (используется серверами кластера под управлением ОС Windows).
-
-
-
- ShowError
-
- Use
-
-
- СетевойКаталогLinux
-
- ru
- Сетевой каталог linux
-
-
- String
-
- 200
-
-
-
- ru
- Сетевой каталог для доставки отчетов (используется серверами кластера под управлением ОС Linux).
-
-
-
- ShowError
-
- Use
-
-
- ИспользоватьFTPРесурс
-
- ru
- Использовать FTP ресурс
-
-
- Boolean
-
-
- ru
- Флажок доставки на FTP ресурс
-
-
-
-
- Use
- Use
-
-
- FTPСервер
-
- ru
- Сервер
-
-
- String
-
- 100
-
-
-
- ru
-
-
-
-
- ShowError
-
- Use
- Use
- FTPКаталог
@@ -441,7 +159,7 @@
ru
-
+ Каталог на FTP сервере, в который публикуются отчеты.
@@ -450,6 +168,69 @@
UseUse
+
+ FTPЛогин
+
+ ru
+ Логин
+
+
+ String
+
+ 50
+
+
+
+ ru
+ Имя пользователя FTP сервера.
+
+
+
+
+ Use
+
+
+ FTPПароль
+
+ ru
+ Пароль
+
+
+ String
+
+ 50
+
+
+ true
+
+ ru
+ Пароль FTP сервера.
+
+
+
+
+ Use
+
+
+ FTPПассивноеСоединение
+
+ ru
+ Пассивное соединение
+
+
+ Boolean
+
+
+ ru
+ Если флажок установлен то при соединении по FTP сервер открывает порт и ожидает подключения клиента.
+Рекомендуется включать, когда клиент не может принять входящее TCP-соединение. Например, если входящие соединения блокируются сетевым экраном.
+
+
+
+
+ Use
+ Use
+ FTPПорт
@@ -480,287 +261,50 @@
Use
-
- FTPЛогин
+
+ FTPСерверru
- Логин
+ СерверString
- 50
+ 100ru
-
-
-
-
-
- Use
-
-
- FTPПароль
-
- ru
- Пароль
-
-
- String
-
- 50
-
-
- true
-
- ru
-
-
-
-
-
- Use
-
-
- FTPПассивноеСоединение
-
- ru
- Пассивное соединение
-
-
- Boolean
-
-
- ru
-
-
-
-
-
- Use
- Use
-
-
- ИспользоватьЭлектроннуюПочту
-
- ru
- Отправлять по электронной почте
-
-
- Boolean
-
-
- ru
- Флажок доставки по электронной почте
-
-
-
- true
-
- true
-
- Use
- Use
-
-
- ТолькоУведомить
-
- ru
- Отправлять только уведомления (не присоединять сформированные отчеты)
-
-
- Boolean
-
-
- ru
- "Да" - отчеты будут опубликованы, а в письмах будет указан только адрес их публикации.
-"Нет" - отчеты будут присоединены к письмам как вложения.
-
-
-
-
- Use
- Use
-
-
- УчетнаяЗапись
-
- ru
- От
-
-
- CatalogRef.УчетныеЗаписиЭлектроннойПочты
-
-
- ru
- Учетная запись отправителя
+ FTP Сервер.ShowError
- Use
- DontUse
-
- Use
-
-
- ПисьмоВФорматеHTML
-
- ru
- Письмо в формате HTML
-
-
- Boolean
-
-
- ru
-
-
-
-
- true
-
- true
-
- Use
-
-
- ТекстПисьмаВФорматеHTML
-
- ru
- Текст письма в формате HTML
-
-
- String
-
-
-
- ru
-
-
-
-
-
- Use
-
-
- КартинкиПисьмаВФорматеHTML
-
- ru
- Картинки письма в формате HTML
-
-
- ValueStorage
-
-
- ru
-
-
-
-
-
- Use
-
-
- ТекстПисьма
-
- ru
- Текст письма
-
-
- String
-
-
-
- ru
-
-
-
- UseUse
-
- ТемаПисьма
+
+ Авторru
- Тема
+ Автор
- String
-
+ CatalogRef.Пользователиru
-
-
-
-
-
- Use
- Use
-
-
- ТипПолучателейРассылки
-
- ru
- Кому
-
-
- CatalogRef.ИдентификаторыОбъектовМетаданных
-
-
- ru
-
-
-
-
-
- Use
-
-
- ВидПочтовогоАдресаПолучателей
-
- ru
- Почтовый адрес
-
-
- CatalogRef.ВидыКонтактнойИнформации
-
-
- ru
- Вид почтового адреса получателей рассылки
+ При выполнении по расписанию отчеты формируются с правами автора рассылкиShowError
- Use
- DontUse
+ IndexUseUse
-
- СкрытыеКопии
-
- ru
- Отправлять письма получателям через скрытые копии
-
-
- Boolean
-
-
- ru
- Если "Да", то получатели не увидят других получателей письма (увидят только себя).
-
-
-
-
- Use
- АдресОтвета
@@ -804,6 +348,47 @@
Use
+
+ ВидПочтовогоАдресаПолучателей
+
+ ru
+ Почтовый адрес
+
+
+ CatalogRef.ВидыКонтактнойИнформации
+
+
+ ru
+ Вид почтового адреса получателей рассылки
+
+
+
+ ShowError
+ Use
+ DontUse
+
+ Use
+ Use
+
+
+ ВыполнятьПоРасписанию
+
+ ru
+ Выполнять по расписанию
+
+
+ Boolean
+
+
+ ru
+ Рассылка будет выполняться автоматически по заданному расписанию
+
+
+
+
+ Index
+ Use
+ ИмяАрхива
@@ -826,6 +411,141 @@
UseUse
+
+ ИспользоватьFTPРесурс
+
+ ru
+ Использовать FTP ресурс
+
+
+ Boolean
+
+
+ ru
+ Флажок доставки на FTP ресурс
+
+
+
+
+ Use
+ Use
+
+
+ ИспользоватьПапку
+
+ ru
+ Использовать папку
+
+
+ Boolean
+
+
+ ru
+ Флажок доставки в папку программы
+
+
+
+
+ Use
+ Use
+
+
+ ИспользоватьСетевойКаталог
+
+ ru
+ Использовать сетевой каталог
+
+
+ Boolean
+
+
+ ru
+ Флажок доставки в сетевой каталог
+
+
+
+
+ Use
+ Use
+
+
+ ИспользоватьЭлектроннуюПочту
+
+ ru
+ Отправлять по электронной почте:
+
+
+ Boolean
+
+
+ ru
+ Флажок доставки по электронной почте
+
+
+
+ true
+
+ true
+
+ Use
+ Use
+
+
+ КартинкиПисьмаВФорматеHTML
+
+ ru
+ Картинки письма в формате HTML
+
+
+ ValueStorage
+
+
+ ru
+ Структура картинок, которые выводятся в теле письма.
+
+
+
+
+ Use
+
+
+ Личная
+
+ ru
+ Личная
+
+
+ Boolean
+
+
+ ru
+ Если флажок установлен, то рассылка отчетов доступна только автору и администратору программы.
+
+
+
+
+ Index
+ Use
+
+
+ Папка
+
+ ru
+ Папка
+
+
+ CatalogRef.ПапкиФайлов
+
+
+ ru
+ Папка программы для доставки отчетов
+
+
+
+ ShowError
+
+ Use
+ ПарольАрхива
@@ -848,6 +568,288 @@
Use
+
+ ПериодичностьРасписания
+
+ ru
+ Периодичность расписания
+
+
+ EnumRef.ПериодичностиРасписанийРассылокОтчетов
+
+
+ ru
+ Периодичность, с которой требуется выполнять рассылку по расписанию
+
+
+
+ ShowError
+
+ Enum.ПериодичностиРасписанийРассылокОтчетов.EmptyRef
+
+ Use
+ Use
+
+
+ Персонализирована
+
+ ru
+ Персонализирована
+
+
+ Boolean
+
+
+ ru
+ Если флажок установлен, то рассыла работает в режиме "Свой отчет для каждого получателя".
+
+
+
+
+ Use
+ Use
+
+
+ ПисьмоВФорматеHTML
+
+ ru
+ Письмо в формате HTML
+
+
+ Boolean
+
+
+ ru
+ Если флажок установлен, то в теле письма можно использовать оформление текста и картинки.
+
+
+
+ true
+
+ true
+
+ Use
+
+
+ Подготовлена
+
+ ru
+ Подготовлена
+
+
+ Boolean
+
+
+ ru
+ Готовность рассылки к выполнению
+
+
+
+ true
+
+ true
+
+ Index
+ Use
+
+
+ РегламентноеЗадание
+
+ ru
+ Регламентное задание
+
+
+ UUID
+
+
+ ru
+ Идентификатор регламентного задания, которое будет запускать эту рассылку отчетов.
+
+
+
+
+ Use
+
+
+ СетевойКаталогLinux
+
+ ru
+ Сетевой каталог linux
+
+
+ String
+
+ 200
+
+
+
+ ru
+ Сетевой каталог для доставки отчетов (используется серверами кластера под управлением ОС Linux).
+
+
+
+ ShowError
+
+ Use
+
+
+ СетевойКаталогWindows
+
+ ru
+ Сетевой каталог windows
+
+
+ String
+
+ 200
+
+
+
+ ru
+ Сетевой каталог для доставки отчетов (используется серверами кластера под управлением ОС Windows).
+
+
+
+ ShowError
+
+ Use
+
+
+ СкрытыеКопии
+
+ ru
+ Отправлять письма через скрытые копии
+
+
+ Boolean
+
+
+ ru
+ Если флажок установлен, то получатели не увидят других получателей письма (увидят только себя).
+
+
+
+
+ Use
+
+
+ ТекстПисьма
+
+ ru
+ Текст письма
+
+
+ String
+
+
+
+ ru
+ Текст письма рассылки отчетов.
+
+
+
+
+ Use
+ Use
+
+
+ ТекстПисьмаВФорматеHTML
+
+ ru
+ Текст письма в формате HTML
+
+
+ String
+
+
+
+ ru
+ Тело письма рассылки отчетов с возможностью форматирования текста и вставки картинок.
+
+
+
+
+ Use
+
+
+ ТемаПисьма
+
+ ru
+ Тема
+
+
+ String
+
+
+
+ ru
+ Тема письма рассылки отчетов.
+
+
+
+
+ Use
+ Use
+
+
+ ТипПолучателейРассылки
+
+ ru
+ Кому
+
+
+ CatalogRef.ИдентификаторыОбъектовМетаданных
+
+
+ ru
+ Тип получателей рассылки отчетов.
+
+
+
+
+ Use
+
+
+ ТолькоУведомить
+
+ ru
+ Отправлять только уведомления
+
+
+ Boolean
+
+
+ ru
+ Если флажок установлен, то отчеты будут опубликованы, а в письмах будет указан только адрес их публикации.
+Если флажок снят, то отчеты будут присоединены к письмам как вложения.
+
+
+
+
+ Use
+ Use
+
+
+ УчетнаяЗапись
+
+ ru
+ От
+
+
+ CatalogRef.УчетныеЗаписиЭлектроннойПочты
+
+
+ ru
+ Учетная запись отправителя
+
+
+
+ ShowError
+ Use
+ DontUse
+
+ Use
+
@@ -892,14 +894,14 @@
ОтправлятьЕслиПустойru
- Отправлять, если пустой
+ Отправлять пустойBooleanru
- Отправлять результат формирования отчета даже если он не содержит данных.
+ Отправлять отчет даже если он не содержит данных.
@@ -1063,6 +1065,20 @@
PersonalComputerMobileDevice
+
+ ПолучателиРассылки
+
+ ru
+ Получатели рассылки
+
+
+
+ ru
+
+
+ PersonalComputer
+ MobileDevice
+ ФормаВыбораГруппы
diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Form.form
index 40492de5c..50fe1e3ed 100644
--- a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Form.form
+++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Form.form
@@ -1,5 +1,70 @@
+
+ КоманднаяПанель
+ 26
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 27
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+
+
+ ГруппаПользовательскихНастроек
+ 28
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+ false
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 29
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ Список1
@@ -241,10 +306,10 @@
СписокСтрокаПоиска
- 26
+ 30СписокСтрокаПоискаРасширеннаяПодсказка
- 28
+ 32Labeltruetrue
@@ -254,7 +319,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 27
+ 31trueСписок
@@ -264,10 +329,10 @@
СписокСостояниеПросмотра
- 29
+ 33СписокСостояниеПросмотраРасширеннаяПодсказка
- 31
+ 35Labeltruetrue
@@ -277,7 +342,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 30
+ 34trueViewStatusAddition
@@ -288,10 +353,10 @@
СписокУправлениеПоиском
- 32
+ 36СписокУправлениеПоискомРасширеннаяПодсказка
- 34
+ 38Labeltruetrue
@@ -301,7 +366,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 33
+ 37trueSearchControlAddition
@@ -361,6 +426,7 @@
truetrue
+ ГруппаПользовательскихНастроек
@@ -406,6 +472,8 @@
Normal
+ None
+ falseФормаКоманднаяПанель-1
diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Help/ru.html b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Help/ru.html
new file mode 100644
index 000000000..a5b74474d
--- /dev/null
+++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Help/ru.html
@@ -0,0 +1,16 @@
+
+
Предназначен для выбора роли исполнителя.
+
Открывается по кнопке Выбрать из поля Роль исполнителябизнес-процессов и окон подбора ролей исполнителей.
+
Роли исполнителей могут использоваться бизнес-процессами для ролевой маршрутизации задач. В этом случае поручение выдается не персонально исполнителю, а некоторой роли (например, Старший по залу), а соответствие пользователей ролям задается в списке Роли и исполнители и используется программой для доставки поручений конкретным пользователям. В определенных случаях роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации. Например, у роли Руководитель проектов могут присутствовать основной объект адресации Подразделение и дополнительный объект Проект. Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача.
+
Соответствие исполнителей ролям и объектам адресации задается перед началом работы с бизнес-процессами и задачами, используется программой для доставки поручений конкретным исполнителям.
+
Список ролей поставляется в составе программы, но может быть расширен при необходимости.
+
Роли, на которые не назначено ни одного исполнителя, выделяются красным. Не следует допускать таких ситуаций, так как это может привести к возникновению задач, не исполненных в срок. Для контроля таких задач предназначен отчет Зависшие задачи.
+
В списке выводится:
+
Наименование - полное наименование роли;
+
Краткое представление - сокращенное наименование роли для удобства использования. По умолчанию в это поле автоматически копируется Код;
+
Код - проставляется автоматически.
+
Комментарий - описание роли, выводится в нижней части списка.
Выбор роли исполнителя
+
Выделите нужную роль, нажмите Выбрать.
+
Также для выбора роли можно воспользоваться двойным щелчком мыши.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Module.bsl
index ef4f388a0..c84f0ad99 100644
--- a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Module.bsl
+++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаВыбора/Module.bsl
@@ -10,6 +10,5 @@
Если Параметры.Свойство("ТолькоПростыеРоли", ТолькоПростыеРоли) И ТолькоПростыеРоли = Истина Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ВнешняяРоль", Истина, , , Истина);
- КонецЕсли;
-
+ КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаСписка/Form.form
index 81eb2cfa4..bca21f0d7 100644
--- a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаСписка/Form.form
@@ -1,5 +1,70 @@
+
+ ГруппаПользовательскихНастроек
+ 30
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+ false
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 31
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 32
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 33
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -297,7 +362,6 @@
LabelFieldEntertrue
- trueLefttrue
@@ -341,10 +405,10 @@
СписокСтрокаПоиска
- 30
+ 34СписокСтрокаПоискаРасширеннаяПодсказка
- 32
+ 36Labeltruetrue
@@ -354,7 +418,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 31
+ 35trueСписок
@@ -364,10 +428,10 @@
СписокСостояниеПросмотра
- 33
+ 37СписокСостояниеПросмотраРасширеннаяПодсказка
- 35
+ 39Labeltruetrue
@@ -377,7 +441,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 34
+ 38trueViewStatusAddition
@@ -388,10 +452,10 @@
СписокУправлениеПоиском
- 36
+ 40СписокУправлениеПоискомРасширеннаяПодсказка
- 38
+ 42Labeltruetrue
@@ -401,7 +465,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 37
+ 41trueSearchControlAddition
@@ -459,8 +523,11 @@
truetrue
+ ГруппаПользовательскихНастроек
+ None
+ falseФормаКоманднаяПанель-1
diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form
index 59c4fddb8..1f8c81945 100644
--- a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form
+++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form
@@ -190,7 +190,7 @@
28ru
- Внешняя роль, исполнители которой определены в другой информационной базе:
+ Внешняя роль, исполнители которой определены в другой программе:truetrue
@@ -315,6 +315,10 @@
ИспользуетсяБезКонтекстаДругихИзмеренийАдресации5
+
+ ru
+ Роль может назначаться исполнителям без указания уточняющих объектов
+ truetrue
@@ -350,32 +354,72 @@
true
+
+ ИспользуетсяВКонтекстеДругихИзмеренийАдресации
+ 7
+
+ ru
+ Роль назначается исполнителям с обязательным уточнением
+
+ true
+ true
+
+ true
+
+
+ Объект.ИспользуетсяСОбъектамиАдресации
+
+ Right
+
+ ru
+ Роль может назначаться исполнителям с указанием определенных объектов адресации.
+
+ Button
+
+ OnChange
+ ИспользуетсяВКонтекстеДругихИзмеренийАдресацииПриИзменении
+
+
+ ИспользуетсяВКонтекстеДругихИзмеренийАдресацииExtendedTooltip
+ 50
+
+ ru
+ В ряде случаев, роли исполнителя бывает недостаточно, чтобы точно определить круг исполнителей задач.
+Для этого можно указать уточняющие основные и дополнительные объекты адресации.
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИспользуетсяВКонтекстеДругихИзмеренийАдресацииКонтекстноеМеню
+ 8
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+ ГруппаАдресацииДополнительно38
-
- ИспользуетсяВКонтекстеДругихИзмеренийАдресации
- 7
+
+ Пояснение
+ 36truetruetrue
-
- Объект.ИспользуетсяСОбъектамиАдресации
-
- Right
-
- ru
- Роль может назначаться исполнителям с указанием определенных объектов адресации.
-
-
- OnChange
- ИспользуетсяВКонтекстеДругихИзмеренийАдресацииПриИзменении
-
- ИспользуетсяВКонтекстеДругихИзмеренийАдресацииExtendedTooltip
- 50
+ ПояснениеExtendedTooltip
+ 54Labeltruetrue
@@ -384,16 +428,19 @@
- ИспользуетсяВКонтекстеДругихИзмеренийАдресацииКонтекстноеМеню
- 8
+ ПояснениеКонтекстноеМеню
+ 37true
- CheckBoxField
- Enter
- true
- Left
- true
-
+ Label
+ true
+ true
+
+ Style.ПоясняющийТекст
+
+
+ Left
+ ГруппаТипыОбъектовАдресации
@@ -480,44 +527,6 @@
Normal
-
- Пояснение
- 36
-
- ru
- В ряде случаев, роли исполнителя бывает недостаточно, чтобы точно определить круг исполнителей задач.
-Для этого можно указать уточняющие основные и дополнительные объекты адресации.
-
- true
- true
-
- true
-
-
- ПояснениеExtendedTooltip
- 54
- Label
- true
- true
-
- Left
-
-
-
- ПояснениеКонтекстноеМеню
- 37
- true
-
- Label
- true
- true
-
- Style.ПоясняющийТекст
-
-
- Left
-
- truetrue
@@ -564,9 +573,7 @@
UsualGroup
- VerticalAuto
- NormalSeparationtruetrueAuto
@@ -596,7 +603,7 @@
VerticalAuto
- StrongSeparation
+ NormalSeparationtruetrueauto
diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Help/ru.html
new file mode 100644
index 000000000..2752e7726
--- /dev/null
+++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Help/ru.html
@@ -0,0 +1,17 @@
+
+
Описание свойств роли исполнителя.
+
Роли исполнителей могут использоваться бизнес-процессами для ролевой маршрутизации задач. В этом случае поручение выдается не персонально исполнителю, а некоторой роли (например, Старший по залу), а соответствие пользователей ролям задается в списке Роли и исполнители задач и используется программой для доставки поручений конкретным пользователям.
+
В определенных случаях роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации. Например, у роли Руководитель проектов могут присутствовать основной объект адресации Подразделение и дополнительный объект Проект. Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача.
+
Список ролей поставляется в составе программы, но может быть расширен при необходимости.
+
Сведения о роли исполнителя
+
В поле Наименование напишите полное наименование роли;
+
Код - проставляется автоматически.
+
В поле Краткое представление напишите сокращенное наименование роли для удобства использования. По умолчанию в это поле автоматически копируется Код.
Адресация задач исполнителям
+
Включите соответствующий флажок, если Роль может назначаться исполнителям без указания уточняющих объектов;
+
Для того чтобы выбрать объекты адресации, включите флажок Роль назначается исполнителям с обязательным уточнением.
+
В поле Основные объекты адресации выберите из списка значение Все объекты адресации или конкретный объект адресации задач.
+
Поле Дополнительные объекты адресации заполняется аналогично.
В поле Комментарий напишите дополнительные сведения о роли исполнителя.
Исполнители роли
+
+
Выполните соответствующую команду в панели навигации, для того чтобы просмотреть списокИсполнители роли, а также назначить исполнителей на эту роль.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html b/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html
index 4ddf38d4d..24632ac55 100644
--- a/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html
+++ b/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html
@@ -1,28 +1,35 @@
-
-
Роли исполнителей могут использоваться бизнес-процессами для ролевой маршрутизации задач. В этом случае поручение выдается не персонально исполнителю, а некоторой роли (например, "Старший по залу"), а соответствие пользователей ролям задается в списке "Роли и исполнители" и используется программой для доставки поручений конкретным пользователям. В определенных случаях, роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации.
-
Роли, на которые не назначено ни одного исполнителя, подсвечиваются красным цветом.
-
Признак "Внешняя роль" указывает на то, что учет исполнителей этой роли ведется в другой информационной базе. Роли с установленным признаком "Внешняя роль" используются для интеграции различных информационных баз между собой.
-
Предопределенная роль "Координатор выполнения задач" может использоваться для получения уведомлений о просроченных и зависших задачах по всем или выбранным объектам адресации. По умолчанию, пользователи, назначенные на роль "Координатор выполнения задач", получают уведомления по всем таким задачам, адресованным любым исполнителям. Если же требуется отслеживать просроченные и зависшие задачи только по определенным объектам адресации, то необходимо назначить себя на роль "Координатор выполнения задач" только по выбранным объектам адресации. Пример:
-
+
+
Предназначен для управления ролями исполнителей.
+
Открывается по команде Роли исполнителей в разделе Бизнес-процессы и задачи.
+
Роли исполнителей могут использоваться бизнес-процессами для ролевой маршрутизации задач. В этом случае поручение выдается не персонально исполнителю, а некоторой роли (например, Старший по залу), а соответствие пользователей ролям задается в списке Роли и исполнители задач и используется программой для доставки поручений конкретным пользователям. В определенных случаях роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации. Например, у роли Руководитель проектов могут присутствовать основной объект адресации Подразделение и дополнительный объект Проект. Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача.
+
Соответствие исполнителей ролям и объектам адресации задается перед началом работы с бизнес-процессами и задачами, используется программой для доставки поручений конкретным исполнителям.
+
Список ролей поставляется в составе программы, но может быть расширен при необходимости.
+
Не следует допускать, чтобы в списке существовали роли, на которые не назначено ни одного исполнителя (выделяются красным), так как это может привести к возникновению задач, не исполненных в срок. Для контроля таких задач предназначен отчет Зависшие задачи.
+
Признак Внешняя роль указывает на то, что учет исполнителей этой роли ведется в другой информационной базе. Роли с установленным признаком Внешняя роль используются для интеграции различных информационных баз между собой.
+
Предопределенная роль Координатор выполнения задач может использоваться для получения уведомлений о просроченных и зависших задачах по всем или выбранным объектам адресации. По умолчанию, пользователи, назначенные на роль Координатор выполнения задач, получают уведомления по всем таким задачам, адресованным любым исполнителям. Если же требуется отслеживать просроченные и зависшие задачи только по определенным объектам адресации, то необходимо назначить себя на роль Координатор выполнения задач только по выбранным объектам адресации.
+
Программа отправляет уведомления Координаторам выполнения задач по электронной почте по адресу, указанному в контактной информации пользователя.
+
В списке выводится:
+
Наименование - полное наименование роли;
+
Краткое представление - сокращенное наименование роли для удобства использования. По умолчанию в это поле автоматически копируется Код;
+
Код - проставляется автоматически.
Пример использования ролей
Роль исполнителя
Основной объект адресации (тип, значение)
Дополнительный объект адресации (тип, значение)
Пользователь
-
Пояснение
Координатор выполнения задач
+
Пояснение
Координатор выполнения задач
-
-
Федоров К.
-
Федоров К. получает уведомления по всем просроченным и зависшим задачам, кроме тех, которые поступают Иванову И. и Петрову А.
Координатор выполнения задач
+
Федоров К. получает уведомления по всем просроченным и зависшим задачам, кроме тех, которые поступают Иванову И. и Петрову А.
Координатор выполнения задач
Структурное подразделение, Отдел бухгалтерии
-
Иванов И.
-
Федоров К. получает уведомления по всем просроченным и зависшим задачам по структурному поздразделению "Отдел бухгалтерии", кроме тех, которые поступают Петрову А.*
Координатор выполнения задач
+
Федоров К. получает уведомления по всем просроченным и зависшим задачам по структурному подразделению "Отдел бухгалтерии", кроме тех, которые поступают Петрову А.*
Координатор выполнения задач
Структурное подразделение, Отдел бухгалтерии
Проект, Проект по внедрению системы бухучета
Петров А.
-
Петров А. получает уведомления по всем просроченным и зависшим задачам по структурному поздразделению "Отдел бухгалтерии" и проекту "Проект по внедрению системы бухучета".*
-
* если исключить Иванова И. и Петрова А. из роли "Координатор выполнения задач", то Федоров К. будет получать уведомления также и по их объектам адресации.
-
Система отправляет уведомления "Координаторам выполнения задач" по электронной почте по адресу, указанному в контактной информации пользователя.
Петров А. получает уведомления по всем просроченным и зависшим задачам по структурному подразделению "Отдел бухгалтерии" и проекту "Проект по внедрению системы бухучета".*
+
* если исключить Иванова И. и Петрова А. из роли Координатор выполнения задач, то Федоров К. будет получать уведомления также и по их объектам адресации.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/РолиИсполнителей/РолиИсполнителей.mdo b/SSL/src/Catalogs/РолиИсполнителей/РолиИсполнителей.mdo
index 611d57937..b41a54752 100644
--- a/SSL/src/Catalogs/РолиИсполнителей/РолиИсполнителей.mdo
+++ b/SSL/src/Catalogs/РолиИсполнителей/РолиИсполнителей.mdo
@@ -320,6 +320,11 @@
ruФорма элемента
+
+
+ ru
+
+ PersonalComputerMobileDevice
@@ -338,6 +343,11 @@
ruФорма выбора
+
+
+ ru
+
+ PersonalComputerMobileDevice
diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Form.form
deleted file mode 100644
index c3cc0d311..000000000
--- a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Form.form
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
- None
- false
-
- ФормаКоманднаяПанель
- -1
- Left
- true
-
-
- OnCreateAtServer
- ПриСозданииНаСервере
-
- DontBlock
- true
- true
- true
- Vertical
- true
- true
- true
- UseIfNecessary
- auto
- true
-
-
-
-
-
diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Module.bsl
deleted file mode 100644
index 7ba88b9bd..000000000
--- a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Module.bsl
+++ /dev/null
@@ -1,15 +0,0 @@
-
-#Область ОбработчикиСобытийФормы
-
-&НаСервере
-Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
-
- Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
- Возврат;
- КонецЕсли;
-
- ПрисоединенныеФайлы.ВызватьИсключениеОткрытияФормы(ЭтотОбъект);
-
-КонецПроцедуры
-
-#КонецОбласти
diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Form.form
deleted file mode 100644
index 15a72967d..000000000
--- a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Form.form
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- ФормаКоманднаяПанель
- -1
- Left
-
-
- OnCreateAtServer
- ПриСозданииНаСервере
-
- LockOwner
- true
- true
- true
- Vertical
- true
- true
- true
- UseIfNecessary
- auto
- true
-
- Ключ
-
- ru
- Ключ
-
- 1
-
- AnyRef
-
-
- true
-
-
- true
-
-
-
- ПерейтиКФормеФайла1
-
- ru
- Перейти к форме файла1
-
- 1
-
- ru
- Перейти к форме файла1
-
-
- true
-
-
-
- ПерейтиКФормеФайла
-
-
- Auto
- Auto
-
-
-
-
-
-
diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Module.bsl
deleted file mode 100644
index 37494d69d..000000000
--- a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Module.bsl
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#Область ОбработчикиСобытийФормы
-&НаСервере
-Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
-
- Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
- Возврат;
- КонецЕсли;
-
- ПрисоединенныеФайлы.ПриСозданииНаСервереПрисоединенныйФайл(ЭтотОбъект);
-
-КонецПроцедуры
-
-#КонецОбласти
-
-#Область ОбработчикиКомандФормы
-&НаКлиенте
-Процедура ПерейтиКФормеФайла(Команда)
-
- ПрисоединенныеФайлыКлиент.ПерейтиКФормеПрисоединенногоФайла(ЭтотОбъект);
-
-КонецПроцедуры
-
-#КонецОбласти
diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/СообщениеSMSПрисоединенныеФайлы.mdo b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/СообщениеSMSПрисоединенныеФайлы.mdo
index 854ddc61a..72f39eebc 100644
--- a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/СообщениеSMSПрисоединенныеФайлы.mdo
+++ b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/СообщениеSMSПрисоединенныеФайлы.mdo
@@ -94,7 +94,7 @@
- Use
+ DontUseManagedUse
@@ -109,16 +109,12 @@
AsDescriptionInDialogBothWays
- Catalog.СообщениеSMSПрисоединенныеФайлы.Form.ФормаЭлемента
- Catalog.СообщениеSMSПрисоединенныеФайлы.Form.ФормаСписка
- Catalog.СообщениеSMSПрисоединенныеФайлы.Form.ФормаСпискаАвторruАвтор
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -183,7 +179,6 @@
ruДата создания
- Дата добавления файла в базуDate
@@ -226,7 +221,6 @@
ruИзменил
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -250,7 +244,6 @@
ruИндекс картинки
- Индекс иконки, соответствующей расширению файла, для показа в спискеNumber
@@ -274,7 +267,6 @@
ruОписание
- Описание файлаString
@@ -314,7 +306,6 @@
ruПуть к файлу
- Дополнительный путь к файлу на диске (в случае если ТипХраненияФайла - на диске)String
@@ -335,7 +326,6 @@
ruРазмер
- Размер файлаNumber
@@ -426,7 +416,6 @@
ruТекст
- Текст, извлеченный из файла - для полнотекстового поискаValueStorage
@@ -446,7 +435,6 @@
ruТип хранения файла
- Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на дискеEnumRef.ТипыХраненияФайлов
@@ -466,7 +454,6 @@
ruТом
- Ссылка на том (в случае если ТипХраненияФайла - на диске)CatalogRef.ТомаХраненияФайлов
@@ -486,7 +473,6 @@
ruФайл хранилище
- Служебное поле для обмена файлами в РИБValueStorage
@@ -602,7 +588,6 @@
ruОтпечаток
- Отпечаток сертификатаString
@@ -658,7 +643,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
@@ -739,7 +723,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
@@ -753,22 +736,4 @@
Use
-
- ФормаСписка
-
- ru
- Форма списка
-
- PersonalComputer
- MobileDevice
-
-
- ФормаЭлемента
-
- ru
- Форма элемента
-
- PersonalComputer
- MobileDevice
-
diff --git a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Form.form b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Form.form
index c89a80223..5d509baca 100644
--- a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Form.form
+++ b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Form.form
@@ -54,8 +54,10 @@
Lefttrue
+ 12truetrue
+ falsetruetruetrue
@@ -94,6 +96,7 @@
Lefttrue
+ 5truetruetrue
@@ -134,6 +137,7 @@
Lefttrue
+ 10truetruetrue
@@ -174,6 +178,7 @@
Lefttrue
+ 10truetruetrue
@@ -771,7 +776,7 @@
ПриСозданииНаСервере100
- 32
+ 12LockOwnertruetrue
diff --git a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Help/ru.html b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Help/ru.html
index d67c0b1eb..bdcceca18 100644
--- a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Help/ru.html
+++ b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Help/ru.html
@@ -1,15 +1,15 @@
+
Общероссийский классификатор стран мира (ОКСМ)
-
Общероссийский классификатор стран мира (ОКСМ) ходит в состав Единой системы классификации и кодирования технико-экономической и социальной информации (ЕСКК) в Российской Федерации.
+
Общероссийский классификатор стран мира (ОКСМ) входит в состав Единой системы классификации и кодирования технико-экономической и социальной информации (ЕСКК) в Российской Федерации.
ОКСМ гармонизирован с Международным стандартом ИСО 3166-97 «Коды для представления наименований стран», разработанным Международной организацией по стандартизации (ИСО), и Межгосударственным классификатором стран мира MK (ИСО 3166) 004-97.
ОКСМ предназначен для идентификации стран мира и используется в процессе обмена информацией при решении различных задач.
В отличие от стандартов ISO 3166 и ГОСТ 7.67, в ОКСМ, согласно приказу [1] Ростехрегулирования, с 1 января 2009 года входят республики Абхазия и Южная Осетия, которые признаны Россией [2].
@@ -18,9 +18,14 @@ SUP {
наименований,
буквенной идентификации.
Блок цифровой идентификации содержит трёхзначный цифровой код страны мира, построенный с использованием порядкового метода кодирования.
Блок наименований включает краткое наименование и полное официальное наименование страны мира. Отсутствие в позиции классификатора полного наименования страны мира означает его совпадение с кратким наименованием.
-
Блок буквенной идентификации стран мира содержит двухзначный (альфа-2) и трёхзначный (альфа-3) буквенные коды, знаками которых являются буквы латинского алфавита. Эти коды преднахназначены для идентификации государств и зависимых территорий, основных административных образований внутри государств, согласно ГОСТ 7.67 и ISO 3166.
-
Цифровой код имеет приоретет перед буквенными кодами, заключающийся в том, что на него не влияют изменения в наименованиях стран мира, которые могут повлечь за собой изменения кодов альфа-2 и альфа-3
-
Примечания:
+
Блок буквенной идентификации стран мира содержит двухзначный (альфа-2) и трёхзначный (альфа-3) буквенные коды, знаками которых являются буквы латинского алфавита. Эти коды предназначены для идентификации государств и зависимых территорий, основных административных образований внутри государств согласно ГОСТ 7.67 и ISO 3166.
+
Цифровой код имеет приоритет перед буквенными кодами, заключающийся в том, что на него не влияют изменения в наименованиях стран мира, которые могут повлечь за собой изменения кодов альфа-2 и альфа-3.
Изменение 8/2008 ОКСМ. Принято и введено в действие Приказом Федерального агентства по техническому регулированию и метрологии от 03.12.2008 N 352-ст. Дата введения — 01.01.2009 ↩
Указ Президента Российской Федерации от 26.08.2008 № 1260 «О признании Республики Абхазия» ↩
Справочник хранит информацию о странах мира, таможенных союзах стран, либо регионах или части страны. Данные справочника используются, например, при указании страны адреса контактной информации, страны происхождения товара.
Поле "Код" содержит трёхзначный цифровой код страны мира, позволяющий однозначно идентифицировать страну согласно ОКСМ. Для стран, таможенных союзов и прочих данных, не относящихся к классификатору стран (например Евросоюз), в это поле рекомендуется вводить "--"
-
Поле "Наименование" и "Полное наименование" предназначены для хранения соответственно краткого и полного официального наименования страны мира. Для представления страны, в том числе и при печати, будет использовано по умолчанию краткое наименование.
-
Поля "Код Альфа-2" и "Код Альфа-3" содержат двухзначный (альфа-2) и трёхзначный (альфа-3) коды для идентификации государств и зависимых территорий, основных административных образований внутри государств, согласно ГОСТ 7.67 и ISO 3166.
\ No newline at end of file
+
+
Предназначен для хранения информации о странах мира, таможенных союзах стран, либо регионах или частях стран. Данные справочника используются, например, при указании страны адреса контактной информации, страны происхождения товара.
+
Открывается по команде Страны мира на панели навигации раздела Справочники. В списке можно хранить только несколько необходимых для работы стран.
Поля Наименование и Полное наименование предназначены для хранения соответственно краткого и полного официального наименования страны мира. Для представления страны, в том числе и при печати, будет использовано по умолчанию краткое наименование. Отсутствие в позиции списка полного наименования страны мира означает его совпадение с кратким наименованием.
+
+
Поле Код содержит трёхзначный цифровой код страны мира, позволяющий однозначно идентифицировать страну согласно ОКСМ. Для стран, таможенных союзов и прочих данных, не относящихся к классификатору стран (например, Евросоюз), в это поле рекомендуется вводить "--".
+
+
Поля Код Альфа-2 и Код Альфа-3 содержат двухзначный (альфа-2) и трёхзначный (альфа-3) коды для идентификации государств и зависимых территорий, основных административных образований внутри государств, согласно ГОСТ 7.67 и ISO 3166.
Для удобства работы со списком можно добавлять страны в список из классификатора по мере необходимости. В случае необходимости в списке можно отредактировать страну, если данные о ней изменились, и классификатор еще не обновляется.
+
Ввод вручную
+
В некоторых случаях необходимо ввести какую-нибудь область, или содружество стран, например, Евросоюз.
+
Для того чтобы добавить новую страну в список стран, нажмите Создать.
+
Не рекомендуется вводить вручную страны, имеющиеся в классификаторе, так как ручной ввод увеличивает возможность ошибок.
+
Программа предлагает выбрать страну из классификатора. Подтвердите свой выбор, в ответ на вопрос программы нажав кнопку Да.
+
Для того чтобы ввести страну вручную, например, "Евросоюз", нажмите Нет. Заполните необходимые поля. Вместо цифрового кода автоматически предлагается значение "--", так как это значение используется в печатных формах для стран, отсутствующих в классификаторе (см., например, Письмо Минфина России от 10.02.12 № 03-07-09/06).
\ No newline at end of file
diff --git a/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl
index d60791bcf..dc5f60444 100644
--- a/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl
+++ b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl
@@ -9,10 +9,14 @@
// Наименование - Строка - наименование страны. Если не указано, то поиск по наименованию не производится
//
// Возвращаемое значение:
-// Структура - содержит поля "Ссылка", "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3".
-// Если страна не найдена в справочнике, но найдена в классфикаторе, то поле "Ссылка" не заполнено
-//
-// Если страна не найдена ни в адресе, ни в классификаторе, то возвращается значение Неопределено
+// Структура - поля:
+// * Код - Строка - реквизит найденной страны
+// * Наименование - Строка - реквизит найденной страны
+// * НаименованиеПолное - Строка - реквизит найденной страны
+// * КодАльфа2 - Строка - реквизит найденной страны
+// * КодАльфа3 - Строка - реквизит найденной страны
+// * Ссылка - СправочникаСсылка.СтраныМира - реквизит найденной страны
+// Неопределено - страна не найдена
//
Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт
Если КодСтраны=Неопределено И Наименование=Неопределено Тогда
@@ -70,8 +74,13 @@
// КодСтраны - Строка, Число - код ОКСМ страны
//
// Возвращаемое значение:
-// Структура, Неопределено - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3".
-// В случае отсуствия страны в классфикаторе - Неопределено
+// Структура - поля:
+// * Код - Строка - реквизит найденной страны
+// * Наименование - Строка - реквизит найденной страны
+// * НаименованиеПолное - Строка - реквизит найденной страны
+// * КодАльфа2 - Строка - реквизит найденной страны
+// * КодАльфа3 - Строка - реквизит найденной страны
+// Неопределено - страна не найдена
//
Функция ДанныеКлассификатораСтранМираПоКоду(Знач КодСтраны) Экспорт
@@ -93,8 +102,13 @@
// Наименование - Строка - наименование страны
//
// Возвращаемое значение:
-// Структура, Неопределено - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3".
-// В случае отсуствия страны в классфикаторе - Неопределено
+// Структура - поля:
+// * Код - Строка - реквизит найденной страны
+// * Наименование - Строка - реквизит найденной страны
+// * НаименованиеПолное - Строка - реквизит найденной страны
+// * КодАльфа2 - Строка - реквизит найденной страны
+// * КодАльфа3 - Строка - реквизит найденной страны
+// Неопределено - страна не найдена
//
Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт
ДанныеКлассификатора = ТаблицаКлассификатора();
@@ -114,7 +128,7 @@
//
// Параметры:
// Добавлять - Булево - если Истина, то добавляются страны, которые есть в классфикаторе,
-// но отсутствуют в справочнике стран мира.
+// но отсутствуют в справочнике стран мира.
//
Процедура ОбновитьСтраныМираПоКлассификатору(Знач Добавлять = Ложь) Экспорт
ВсеОшибки = "";
@@ -172,11 +186,12 @@
// Создает или возвращает существующую ссылку по данным классификатора
//
// Параметры:
-// Отбор - Структура - содержит поле Код для поиска страны в классфикаторе
-// Данные - Структура - для заполнения оставшихся полей создаваемого объекта.
+// Отбор - Структура - содержит поле:
+// * Код - Строка - для поиска страны в классфикаторе
+// Данные - Структура - для заполнения одноименных оставшихся полей создаваемого объекта.
//
// Возвращаемое значение:
-// СправочникСсылка - ссылка на созданый элемент
+// СправочникСсылка.СтраныМира - ссылка на созданый элемент
//
Функция СсылкаПоДаннымКлассификатора(Знач Отбор, Знач ДополнительныеДанные = Неопределено) Экспорт
@@ -216,10 +231,10 @@
//
// Возвращаемое значение:
// Массив - содержит структуры с полями:
-// Имя - Строка - имя реквизита поиска
-// ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
-// например: "%1.Наменование (%1.Код)". Здесь "Наименование" и "Код" - имена реквизитов,
-// "%1" - заполнитель для передачи псевдонима таблицы
+// * Имя - Строка - имя реквизита поиска
+// * ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
+// например: "%1.Наменование (%1.Код)". Здесь "Наименование" и "Код" - имена реквизитов,
+// "%1" - заполнитель для передачи псевдонима таблицы
//
Функция ПоляПоиска() Экспорт
Результат = Новый Массив;
@@ -261,11 +276,11 @@
//
// Возвращаемое значение:
// ТаблицаЗначений - данные классифкатора с колонками:
-// Код - Строка(3, Переменная),
-// Наименование - Строка(60, Переменная),
-// НаименованиеПолное - Строка(100, Переменная),
-// КодАльфа2 - Строка(2, Переменная),
-// КодАльфа3 - Строка(3, Переменная)
+// * Код - Строка - данные страны
+// * Наименование - Строка - данные страны
+// * НаименованиеПолное - Строка - данные страны
+// * КодАльфа2 - Строка - данные страны
+// * КодАльфа3 - Строка - данные страны
//
// Таблица значений проиндексирована по полям "Код", "Наименование"
//
@@ -502,6 +517,18 @@
КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Т.к. данный справочник реализует свой метод загрузки данные из макета
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
+
#КонецЕсли
#КонецОбласти
diff --git a/SSL/src/Catalogs/СтраныМира/ObjectModule.bsl b/SSL/src/Catalogs/СтраныМира/ObjectModule.bsl
index 6efd87684..b4e8b4c8e 100644
--- a/SSL/src/Catalogs/СтраныМира/ObjectModule.bsl
+++ b/SSL/src/Catalogs/СтраныМира/ObjectModule.bsl
@@ -1,10 +1,19 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
-//
// Контролирует уникальность элемента в базе
-// Возвращает структуру - описание элемента, существующего в базе
+//
+// Возвращаемое значение:
+// Неопределено - нет ошибок
+// Структура - описание элемента, существующего в базе. Поля:
+// * ОписаниеОшибки - Строка - текст ошибки
+// * Код - Строка - реквизит уже существующего элемента
+// * Наименование - Строка - реквизит уже существующего элемента
+// * НаименованиеПолное - Строка - реквизит уже существующего элемента
+// * КодАльфа2 - Строка - реквизит уже существующего элемента
+// * КодАльфа3 - Строка - реквизит уже существующего элемента
+// * Ссылка - СправочникаСсылка.СтраныМира - реквизит уже существующего элемента
//
Функция СуществующийЭлемент() Экспорт
Результат = Неопределено;
@@ -32,7 +41,7 @@
| Справочник.СтраныМира
|ГДЕ
| Код=&Код
- | И Ссылка<>&Ссылка
+ | И Ссылка <> &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Код", КодПоиска);
diff --git a/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl b/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl
index 971060863..6df2b8312 100644
--- a/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl
+++ b/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl
@@ -15,6 +15,16 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Пакетная загрузка данных в этот справочник небезопасна
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
#КонецОбласти
#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаСписка/Form.form
index 810b9d13e..9bc6473c5 100644
--- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаСписка/Form.form
@@ -1,5 +1,91 @@
+
+ ГруппаПользовательскихНастроек
+ 22
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 23
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 24
+
+ ФормаВключитьОтключитьРегламентноеЗадание
+ 12
+ true
+ true
+
+ true
+
+
+ ФормаВключитьОтключитьРегламентноеЗаданиеExtendedTooltip
+ 14
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ВключитьОтключитьРегламентноеЗадание
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 25
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -148,10 +234,10 @@
СписокСтрокаПоиска
- 22
+ 26СписокСтрокаПоискаРасширеннаяПодсказка
- 24
+ 28Labeltruetrue
@@ -161,7 +247,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 23
+ 27trueСписок
@@ -171,10 +257,10 @@
СписокСостояниеПросмотра
- 25
+ 29СписокСостояниеПросмотраРасширеннаяПодсказка
- 27
+ 31Labeltruetrue
@@ -184,7 +270,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 26
+ 30trueViewStatusAddition
@@ -195,10 +281,10 @@
СписокУправлениеПоиском
- 28
+ 32СписокУправлениеПоискомРасширеннаяПодсказка
- 30
+ 34Labeltruetrue
@@ -208,7 +294,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 29
+ 33trueSearchControlAddition
@@ -291,39 +377,13 @@
truetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1
-
- ФормаВключитьОтключитьРегламентноеЗадание
- 12
- true
- true
-
- true
-
-
- ФормаВключитьОтключитьРегламентноеЗаданиеExtendedTooltip
- 14
- Label
- true
- true
-
- Left
-
-
- Form.Command.ВключитьОтключитьРегламентноеЗадание
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Left
- trueDontBlocktrue
diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form
index 2d2c5ba9c..bc50f30d9 100644
--- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form
+++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form
@@ -807,7 +807,7 @@
OnCreateAtServerПриСозданииНаСервере
- LockOwner
+ DontBlocktruetruetrue
diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Help/ru.html
index 07be766fe..c7adb3a8d 100644
--- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Основное назначение сценария - это выполнение синхронизации данных автоматически по заданному расписанию. Сценарий необходим для задания расписания и порядка отправки и получения данных.
Не рекомендуется выполнять только отправку данных или только получение данных, хотя сценарий позволяет это сделать. Рекомендуется выполнять полноценную синхронизацию данных в одном сценарии.
Настройка сценария синхронизации
@@ -12,4 +12,5 @@
Напишите Комментарий - краткое описание сценария.
Выполнение сценария
Нажмите Выполнить сценарий. Будет предпринята попытка синхронизации данных. Перечисленные в сценарии действия будут выполняться последовательно. После того как синхронизация данных проведена, неудачные получения или отправки данных отмечаются значком в колонке Информационная база.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Help/ru.html b/SSL/src/Catalogs/СценарииОбменовДанными/Help/ru.html
index 9001b1c9f..9b6efa70f 100644
--- a/SSL/src/Catalogs/СценарииОбменовДанными/Help/ru.html
+++ b/SSL/src/Catalogs/СценарииОбменовДанными/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для настройки и хранения сценариев синхронизации данных.
Открыть список можно из раздела Синхронизация данных по соответствующей команде. Также можно открыть список сценариев из списка Синхронизация данных по соответствующей команде меню Все действия.
Если сервер 1С:Предприятия работает под Linux, то путь к тому хранения файлов можно указать только локальный, например /home/path. Чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора сделайте следующее:
mkdir folder --- вместо folder напишите имя каталога. например в каталоге /home делаем mkdir shared - создаст каталог shared с полным путем /home/shared.
mount -t cifs //server/share folder -o //domain/user, password=pwd - где //server/share - UNC путь к другому компьютеру , folder - путь каталога на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если нужно, pwd - пароль пользователя (если нужно). Если имя и пароль не нужны, команда выглядит так: mount -t cifs //server/share folder
-
После этого в пути к тому указываем folder, например /home/shared
\ No newline at end of file
+
+
Описание свойств тома хранения файлов.
+
При создании нового тома автоматически проверяется доступ к указанному в поле Полный путь каталогу, в случае ошибки выводится соответствующее сообщение. Уже созданному тому нельзя поменять пути.
+
Для каждого тома необходимо указать:
+
Наименование - полное наименование тома для хранения файлов;
+
Код - заполняется автоматически;
+
Полный путь
+
Для сервера 1С:Предприятия под управлением Microsoft Windows - напишите путь к каталогу тома для сервера под управлением Microsoft Windows в формате UNC - \\Имя компьютера\Наименование папки\Наименование файла\;
или
+
Для сервера 1С:Предприятия под управлением Linux - напишите путь к каталогу для сервера под управлением Linux;
Порядок заполнения - введите целое число, по умолчанию равно 1. Заполнение томов осуществляется по порядку заполнения (по возрастанию) до полного заполнения тома. Эту особенность можно использовать, например, для временного отключения тома путем увеличения ему порядка заполнения.
+
Максимальный размер - можно указать максимальный размер всех файлов на томе (квота тома). Если суммарный размер файлов в томе превышает установленную квоту, то будет использован следующий по порядку том. Если ни на одном из доступных томов не будет достаточно места для размещения файла, то информация об этом будет записана в журнал регистрации и будет выдано сообщение об ошибке. Если квота установлена равной нулю, то при размещении файлов в томе она не проверяется;
+
Текущий размер, Мб - проставляется программой автоматически по мере наполнения тома, показывает, насколько том заполнен;
+
В поле Комментарий напишите подробную информацию о томе.
Особенности заполнения поля Полный путь для Linux
+
Если сервер 1С:Предприятия работает под Linux, то путь к тому хранения файлов можно указать только локальный, например /home/path. Для того чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора сделайте следующее:
+
выполните команду вида mkdir folder, где вместо "folder" напишите имя своего каталога. Например, в каталоге /home выполните команду mkdir shared - будет создан каталог shared с полным путем /home/shared.
+
выполните команду вида mount -t cifs //server/share folder -o //domain/user, password=pwd, где - где //server/share - UNC путь к другому компьютеру , folder - путь к каталогу на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если необходимо, pwd - пароль пользователя (если необходимо).
+
Если имя и пароль не нужны, команда выглядит так: mount -t cifs //server/share folder.
После этого в пути к тому указываем folder, например /home/shared.
Просмотр списка файлов в томе
+
В каждом томе файлы хранятся в подкаталогах. На каждую дату создания версии файла создается свой подкаталог. Все файлы хранятся с оригинальным именем и расширением, между ними добавляется номер версии, например "Приказ.2.txt".
+
Для того чтобы просмотреть список файлов в томе, выполните команду Файлы в томе на панели навигации тома.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html b/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html
index 9875e0137..9e684f798 100644
--- a/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html
+++ b/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html
@@ -1,13 +1,25 @@
-
-
Используется в том случае, если установлен режим хранения файлов "В томах на диске" (см. Настройка системы). В этом справочнике нужно указать один или несколько каталогов на жестком диске сервера, на котором работает система или других серверов в сети, которые будут использоваться для хранения в них всех файлов.
-
Для каждого тома необходимо указать его наименование, порядок заполнения и UNC-путь к каталогу тома для сервера под управлением Microsoft Windows и/или путь к каталогу для сервера под управлением Linux.
-
Также можно указать максимальный размер всех файлов на томе (квота тома). Если квота установлена равной нулю, то при размещении файлов в томе, она не проверяется. При установленном ненулевом свойстве «Максимальный размер», если суммарный размер файлов на томе уже превышает установленную квоту, то будет использован следующий по порядку заполнения том. Если ни на одном из доступных томов не будет достаточно места для размещения файла, то информация об этом будет записана в журнал регистрации и пользователю будет выдана ошибка.
-
При создании нового тома автоматически проверяется доступ к указанному в поле "Полный путь" каталогу.
-
Заполнение томов осуществляется по порядку (по возрастанию) до полного заполнения тома. Эту особенность можно использовать для временного отключения тома путем увеличения ему порядка заполнения. Уже созданному тому нельзя поменять пути. Созданный том нельзя удалить до тех пор, пока на него ссылаются какие-либо версии файлов.
-
Ошибки доступа к томам помещаются в журнал регистрации и могут быть просмотрены администратором системы.
-
В каждом томе файлы хранятся в подкаталогах по дате так, что на каждый день создается свой подкаталог.
-
Все файлы в томах хранятся с оригинальным именем и расширением, между которыми добавляется номер версии, например "Приказ.1.txt".
-
После переключения режима хранения файлов (например в значение "В томах на диске") все ранее накопленные файлы не перемещаются в тома - только вновь добавленные файлы будут размещаться в соответствии с настройкой. Чтобы перенести ранее накопленные файлы из информационной базы в тома, воспользуйтесь обработкой "Перенос файлов в тома".
-
+
+
Предназначен для управления томами хранения файлов.
+
Используется в том случае, если установлен режим хранения файлов В томах на диске. Для этого в разделе Администрирование - Настройки работы с файлами включите флажок Хранить файлы в томах на диске, после этого в разделах Администрирование - Настройки работы с файлами и Органайзер становится доступной команда Тома хранения файлов, по которой открывается список.
+
В списке выводится:
+
Наименование - наименование тома хранения файлов;
+
Порядок заполнения - целое число. Заполнение томов осуществляется по порядку заполнения по возрастанию до полного заполнения тома;
+
Максимальный размер - можно указать максимальный размер всех файлов в томе (квота тома). Если квота установлена равной нулю, то при размещении файлов в томе она не проверяется. При установленном ненулевом значении Максимальный размер, если суммарный размер файлов в томе уже превышает установленную квоту, то будет использован следующий по порядку заполнения том. Если ни в одном из доступных томов не будет достаточно места для размещения файла, то информация об этом записывается в журнал регистрации и выводится сообщение об ошибке;
+
Полный путь Microsoft Windows - путь к каталогу тома для сервера под управлением Microsoft Windows в формате UNC: \\Имя компьютера\Наименование папки\Наименование файла\;
+
Полный путь Linux - путь к каталогу для сервера под управлением Linux;
+
Необходимо указать один или несколько каталогов на жестком диске сервера, на котором работает программа, или других серверов в сети, которые будут использоваться для хранения в них всех файлов.
+
Работа с томами хранения файлов
+
При создании нового тома автоматически проверяется доступ к указанному в поле Полный путь каталогу, в случае ошибки выводится соответствующее сообщение.
+
Заполнение томов осуществляется по порядку (по возрастанию) до полного заполнения тома. Эту особенность можно использовать для временного отключения тома путем увеличения ему порядка заполнения.
+
Уже созданному тому нельзя поменять пути.
+
Созданный том нельзя удалить до тех пор, пока на него ссылаются какие-либо версии файлов.
+
Ошибки доступа к томам помещаются в журнал регистрации и могут быть просмотрены администратором программы.
+
В каждом томе файлы хранятся в подкаталогах по дате так, что на каждый день создается свой подкаталог. Все файлы в томах хранятся с оригинальным именем и расширением, между которыми добавляется номер версии, например "Приказ.1.txt".
+
После переключения режима хранения файлов (например, в значение В томах на диске) все ранее накопленные файлы не перемещаются в тома - только вновь добавленные файлы будут размещаться в соответствии с настройкой. Для того чтобы перенести ранее накопленные файлы из информационной базы в тома, воспользуйтесь командой Перенос файлов в тома панели действий в разделе Органайзер.
+
Если используется синхронизация данных между программой-источником и программой-приемником и при этом в программе-источнике используется хранение файлов в томах на дисках, то в процессе создания начального образа необходимо будет создать архивный файл с томами хранимых файлов.
+
В процессе получения начального образа в программу-приемник необходимо будет указать и расположение архивного файла с томами хранимых файлов. Для получения файлов в томах из архива выполните команду Разместить файлы начального образа панели действий раздела Органайзер.
-
Примечание Для использования томов, расположенных на сетевых дисках сервер 1С:Предприятия 8 нужно запускать от лица доменного пользователя вида domain1\user1, имеющего права доступа к тому, указанному в виде UNC пути. Этот пользователь должен входить в группу Users локального компьютера, иметь права "Run as service" и "Run as batch job" и права на каталоги, в которых сервер 1С:Предприятия 8 хранит служебные файлы - журнал регистрации, каталог временных файлов и пр.
\ No newline at end of file
+
Примечание Для использования томов, расположенных на сетевых дисках, сервер 1С:Предприятия 8 нужно запускать от лица доменного пользователя вида domain1\user1, имеющего права доступа к тому, указанному в виде UNC пути. Этот пользователь должен входить в группу Users локального компьютера, иметь права "Run as service" и "Run as batch job" и права на каталоги, в которых сервер 1С:Предприятия 8 хранит служебные файлы - журнал регистрации, каталог временных файлов и пр.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl b/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl
index 78290d3aa..2e5d1ce45 100644
--- a/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl
+++ b/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl
@@ -14,6 +14,16 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Пакетная загрузка данных в этот справочник небезопасна
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git a/SSL/src/Catalogs/ТомаХраненияФайлов/ТомаХраненияФайлов.mdo b/SSL/src/Catalogs/ТомаХраненияФайлов/ТомаХраненияФайлов.mdo
index 500f151ad..0b52e8350 100644
--- a/SSL/src/Catalogs/ТомаХраненияФайлов/ТомаХраненияФайлов.mdo
+++ b/SSL/src/Catalogs/ТомаХраненияФайлов/ТомаХраненияФайлов.mdo
@@ -133,7 +133,6 @@
ruКомментарий
- Описание томаString
@@ -153,9 +152,8 @@
МаксимальныйРазмерru
- Максимальный размер
+ Предел, МБ
- Максимальный размер файлов на томе, в МбNumber
@@ -164,7 +162,7 @@
ru
- Максимальный размер файлов на томе, в Мб
+ Максимальный размер всех файлов в томе в мегабайтах.
@@ -218,9 +216,8 @@
ПорядокЗаполненияru
- Порядок заполнения
+ Порядок
- Определяет порядок заполнения томов - начинаем с наименьшегоNumber
@@ -230,7 +227,8 @@
ru
- Определяет порядок заполнения томов - начинаем с наименьшего
+ Порядок заполнения томов файлами,
+начиная с наименьшего значения.
diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl
index a8f0c8928..d91705f74 100644
--- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl
+++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl
@@ -489,16 +489,17 @@
ПроверкаЗавершиласьСОшибками = Ложь;
- СообщениеСервераИсходящейПочты = "";
- Если ИспользоватьДляОтправки Тогда
- СообщениеСервераИсходящейПочты = ПроверитьПодключениеКСерверуИсходящейПочты();
- КонецЕсли;
-
СообщениеСервераВходящейПочты = "";
Если ИспользоватьДляПолучения Тогда
СообщениеСервераВходящейПочты = ПроверитьПодключениеКСерверуВходящейПочты();
КонецЕсли;
+ СообщениеСервераИсходящейПочты = "";
+ Если ИспользоватьДляОтправки Тогда
+ СообщениеСервераИсходящейПочты = ПроверитьПодключениеКСерверуИсходящейПочты();
+ КонецЕсли;
+
+ ТекстОшибки = "";
Если Не ПустаяСтрока(СообщениеСервераИсходящейПочты) Тогда
ТекстОшибки = НСтр("ru = 'Не удалось подключиться к серверу исходящей почты:'" + Символы.ПС)
+ СообщениеСервераИсходящейПочты + Символы.ПС;
@@ -548,7 +549,7 @@
Функция ИнтернетПочтовыйПрофиль(ДляПолучения = Ложь)
Профиль = Новый ИнтернетПочтовыйПрофиль;
- Если ДляПолучения Тогда
+ Если ДляПолучения Или ТребуетсяВходНаСерверПередОтправкой Тогда
Если Протокол = "IMAP" Тогда
Профиль.АдресСервераIMAP = СерверВходящейПочты;
Профиль.ИспользоватьSSLIMAP = ИспользоватьЗащищенноеСоединениеДляВходящейПочты;
@@ -564,7 +565,9 @@
Профиль.ПортPOP3 = ПортСервераВходящейПочты;
Профиль.ТолькоЗащищеннаяАутентификацияPOP3 = ИспользоватьБезопасныйВходНаСерверВходящейПочты;
КонецЕсли;
- Иначе
+ КонецЕсли;
+
+ Если Не ДляПолучения Тогда
Профиль.POP3ПередSMTP = ТребуетсяВходНаСерверПередОтправкой;
Профиль.АдресСервераSMTP = СерверИсходящейПочты;
Профиль.ИспользоватьSSLSMTP = ИспользоватьЗащищенноеСоединениеДляИсходящейПочты;
diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form
index 38c96ae23..2f5a6e199 100644
--- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form
+++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form
@@ -1,5 +1,103 @@
+
+ ГруппаПользовательскихНастроек
+ 27
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 29
+
+ ФормаСправочникУчетныеЗаписиЭлектроннойПочтыПроверитьУчетнуюЗапись
+ 22
+ true
+ true
+
+ true
+
+
+ Items.Список.CurrentData.Ref
+
+
+ ФормаСправочникУчетныеЗаписиЭлектроннойПочтыПроверитьУчетнуюЗаписьРасширеннаяПодсказка
+ 23
+ Label
+ true
+ true
+
+ Left
+
+
+ Catalog.УчетныеЗаписиЭлектроннойПочты.Command.ПроверитьУчетнуюЗапись
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 30
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -182,10 +280,10 @@
СписокСтрокаПоиска
- 27
+ 31СписокСтрокаПоискаРасширеннаяПодсказка
- 29
+ 33Labeltruetrue
@@ -195,7 +293,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 28
+ 32trueСписок
@@ -205,10 +303,10 @@
СписокСостояниеПросмотра
- 30
+ 34СписокСостояниеПросмотраРасширеннаяПодсказка
- 32
+ 36Labeltruetrue
@@ -218,7 +316,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 31
+ 35trueViewStatusAddition
@@ -229,10 +327,10 @@
СписокУправлениеПоиском
- 33
+ 37СписокУправлениеПоискомРасширеннаяПодсказка
- 35
+ 39Labeltruetrue
@@ -242,7 +340,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 34
+ 38trueSearchControlAddition
@@ -299,43 +397,13 @@
truetrue
+ ГруппаПользовательскихНастроекФорма_КоманднаяПанель-1
-
- ФормаСправочникУчетныеЗаписиЭлектроннойПочтыПроверитьУчетнуюЗапись
- 22
- true
- true
-
- true
-
-
- Items.Список.CurrentData.Ref
-
-
- ФормаСправочникУчетныеЗаписиЭлектроннойПочтыПроверитьУчетнуюЗаписьРасширеннаяПодсказка
- 23
- Label
- true
- true
-
- Left
-
-
- Catalog.УчетныеЗаписиЭлектроннойПочты.Command.ПроверитьУчетнуюЗапись
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
- Left
- trueDontBlocktrue
diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form
index 5fe7982aa..759b345f9 100644
--- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form
+++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form
@@ -1240,6 +1240,10 @@
Объект.ОставлятьКопииСообщенийНаСервереRight
+
+ OnChange
+ ОставлятьКопииПисемНаСервереПриИзменении
+ ОставлятьКопииПисемНаСервереРасширеннаяПодсказка132
@@ -1263,26 +1267,27 @@
- УдалятьПисьмаССервера
- 141
+ НастройкаПериодаХраненияПисем
+ 214
- УдалятьПисьмаССервераЧерез
- 133
-
- ru
- Удалять письма с сервера через
-
+ УдалятьПисьмаССервера
+ 216truetruetrue
- Объект.ПериодХраненияСообщенийНаСервере
+ УдалятьПисьмаССервера
+ Right
+
+ OnChange
+ УдалятьПисьмаССервераПриИзменении
+
- УдалятьПисьмаССервераЧерезРасширеннаяПодсказка
- 135
+ УдалятьПисьмаССервераРасширеннаяПодсказка
+ 218Labeltruetrue
@@ -1291,8 +1296,42 @@
- УдалятьПисьмаССервераЧерезКонтекстноеМеню
- 134
+ УдалятьПисьмаССервераКонтекстноеМеню
+ 217
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ПериодХраненияСообщенийНаСервере
+ 219
+ true
+ true
+
+ true
+
+
+ Объект.ПериодХраненияСообщенийНаСервере
+
+ None
+
+ ПериодХраненияСообщенийНаСервереРасширеннаяПодсказка
+ 221
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПериодХраненияСообщенийНаСервереКонтекстноеМеню
+ 220trueInputField
@@ -1316,7 +1355,7 @@
НадписьДней
- 146
+ 222ruдней
@@ -1328,7 +1367,7 @@
НадписьДнейРасширеннаяПодсказка
- 148
+ 224Labeltruetrue
@@ -1338,7 +1377,7 @@
НадписьДнейКонтекстноеМеню
- 147
+ 223trueLabel
@@ -1355,15 +1394,15 @@
ru
- Удалять письма с сервера
+ Настройка периода хранения писемru
- Удалять письма с сервера
+ Настройка периода хранения писем
- УдалятьПисьмаССервераРасширеннаяПодсказка
- 142
+ НастройкаПериодаХраненияПисемРасширеннаяПодсказка
+ 215Labeltruetrue
@@ -1743,6 +1782,10 @@
Left
+
+ OnOpen
+ ПриОткрытии
+ BeforeCloseПередЗакрытием
@@ -1779,6 +1822,24 @@
truetrue
+
+ УдалятьПисьмаССервера
+
+ ru
+ Удалять письма с сервера через:
+
+ 2
+
+ Boolean
+
+
+ true
+
+
+ true
+
+ true
+ ЗаписатьИЗакрыть
diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html
index ded21a7f4..ff3e3780d 100644
--- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html
+++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Описание свойств учетной записи электронной почты
При вводе учетной записи большинство параметров проставляется программой по умолчанию в зависимости от настроек почтовых серверов учетной записи электронной почты.
Для системных учетных записей рекомендуется запомнить пароль, для того чтобы программа могла рассылать сообщения от такой учетной записи без участия пользователя. Тем не менее, решение о хранении паролей в информационной базе принимается в каждом случае индивидуально.
Если один или несколько выбранных файлов превышают предельно допустимый размер, то программа выводит предупреждение со списком файлов, которые невозможно загрузить.
Нажмите Продолжить, для того чтобы:
-
загрузить остальные файлы из перечисленных в списке для загрузки, которые проходят по размеру;
-
получить отчет об ошибках с перечнем файлов, по которым импорт не состоялся.
Нажмите Отмена для возврата в программу без продолжения попыток. Если в списке для загрузки было перечислено несколько файлов и другие файлы удовлетворяли условиям, они также не будут загружены в программу.
-
Предельно допустимый размера файлов можно увеличить в настройках программы. Для этого в разделе Администрирование - Настройки работы с файлами укажите Максимальный размер файла. По умолчанию равен 50 Мб.
\ No newline at end of file
+
загрузить остальные файлы, перечисленные в списке для загрузки, которые проходят по размеру;
+
получить отчет об ошибках с перечнем файлов, по которым импорт не состоялся.
Нажмите Отмена для возврата в программу без продолжения попыток. Если планировалось загрузить несколько файлов и другие файлы удовлетворяли условиям, они также не будут загружены в программу.
+
Предельно допустимый размер файлов можно увеличить в настройках программы. Для этого в разделе Администрирование - Настройки работы с файлами укажите Максимальный размер файла. По умолчанию равен 50 Мб.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form b/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form
index ed5ac3e5c..d252758ed 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form
+++ b/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form
@@ -254,7 +254,7 @@
OnCreateAtServerПриСозданииНаСервере
Кодировка – это числовая схема, где каждому текстовому знаку соответствует определенное числовое значение. Разные языки обычно состоят из разных наборов знаков, поэтому существует много разных стандартов кодировки. То, что отображается на экране в виде текста, на самом деле хранится в текстовом файле как числовое значение. Компьютер, используя стандарт кодировки, преобразует эти числовые значения и показывает пользователю готовый текст.
-
-
Как изменить кодировку текстового файла
-
Чтобы изменить кодировку текстового файла:
-
Выполните команду Изменить кодировку меню Все действия
-
Выберите кодировку из списка
-
Если нужная кодировка отсутствует, снимите флаг с поля Показывать только основные кодировки
-
Будет сформирован список всех известных кодировок
-
Выберите нужную кодировку из списка
-
Нажмите ОК, чтобы сохранить настройку
Если после открытия файла вместо текста вы увидели набор незнакомых знаков, измените кодировку. Основными кодировками для работы с текстовыми файлами на русском языке являются:
-
IBM866 (Кириллица Dos)
-
KOI8-R (Кириллица KOI8-R)
-
Windows-1251 (Кириллица Windows
-
Общие сведения
-
Чтобы избежать проблем, связанных с кодированием и раскодированием файлов, можно сохранять файлы в кодировке Юникод. Юникод включает наборы знаков для большинства языков, которые в наши дни используются на компьютерах.
Кодировка – это числовая схема, где каждому текстовому знаку соответствует определенное числовое значение. Разные языки обычно состоят из разных наборов знаков, поэтому существует много разных стандартов кодировки. То, что отображается на экране в виде текста, на самом деле хранится в текстовом файле как числовое значение. Компьютер, используя стандарт кодировки, преобразует эти числовые значения и показывает пользователю готовый текст.
+
Выбор кодировки текстового файла производится по соответствующей команде при загрузке файла (загрузке папки) с диска в список файлов. Для загрузки файла или папки предназначены соответствующие команды контекстного меню списка по правой кнопке мыши.
+
Также можно Изменить кодировку уже существующего файла во встроенном текстовом редакторе программы по соответствующей команде меню Все действия.
+
Выбор кодировки текстового файла
+
Выберите кодировку из списка;
+
Если нужная кодировка отсутствует, снимите флажок Показывать только основные кодировки;
+
Будет сформирован список всех известных кодировок;
+
Выберите нужную кодировку из списка всех кодировок;
Нажмите Выбрать, для того чтобы сохранить настройку.
Если после открытия файла вместо текста вы увидели набор незнакомых знаков, измените кодировку. Основными кодировками для работы с текстовыми файлами на русском языке являются:
+
IBM866 (Кириллица Dos);
+
KOI8-R (Кириллица KOI8-R);
+
Windows-1251 (Кириллица Windows.
Общие сведения
+
Для того чтобы избежать проблем, связанных с кодированием и раскодированием файлов, можно сохранять файлы в кодировке Юникод. Юникод включает наборы знаков для большинства языков, которые в наши дни используются на компьютерах.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ВыборСохраненияШифрованногоФайла/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ВыборСохраненияШифрованногоФайла/Help/ru.html
index ee1e14ce5..c72e4ad36 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ВыборСохраненияШифрованногоФайла/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Forms/ВыборСохраненияШифрованногоФайла/Help/ru.html
@@ -1,4 +1,4 @@
-
+
В форме выбирается способ сохранения шифрованного файла при выполнении команды "Сохранить как".
Если выбран режим сохранения "Сохранить шифрованный файл", то файл просто сохраняется нерасшифрованным.
Если выбран режим "Расшифровать и сохранить", то файл при сохранении расшифровывается. В этом случае требуется ввести пароль для расшифровки.
diff --git a/SSL/src/Catalogs/Файлы/Forms/ВыборУстройстваСканирования/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ВыборУстройстваСканирования/Help/ru.html
new file mode 100644
index 000000000..b02f921d2
--- /dev/null
+++ b/SSL/src/Catalogs/Файлы/Forms/ВыборУстройстваСканирования/Help/ru.html
@@ -0,0 +1,4 @@
+
+
Устройство сканирования должно быть подключено к компьютеру. Выберите наименование устройства из программе имеется список возможных устройств сканирования, она предлагает выбрать из выпадающего списка.
+
Нажмите кнопку Выбрать, для того чтобы подтвердить свой выбор.
Установить компоненту сканирования - устанавливает компоненту сканирования. Если на Вашем компьютере нет сканера, устанавливать компоненту не нужно. Если компонента уже установлена, то вместо этой кнопки отображается версия установленной компоненты.
-
Имя сканера - позволяет выбрать используемый сканер из списка доступных устройств, подключенных к компьютеру.
-
Использовать ImageMagick для преобразования в PDF - если установлена, то преобразует отсканированные изображения в pdf с помощью программы ImageMagick (на клиентском компьютере, где находится сканер, должны быть установлены бесплатные программы ImageMagick (используйте вариант: Win32 dynamic at 8 bits-per-pixel) и Ghostscript).
-
Путь к программе преобразования в PDF - путь к исполняемому файлу программы ImageMagick (по умолчанию "convert.exe"). Если это имя конфликтует с другими программами, нужно указать полный путь, вида C:\Program Files\ImageMagick-6.6.3-Q8\convert.exe.
-
Формат одностраничного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF, PDF) для помещения в информационную базу.
-
Формат многостраничного изображения - позволяет выбрать один из поддерживаемых форматов (TIF, PDF) для помещения в информационную базу. Применяется когда выбрана команда "Принять все как один файл".
-
Тип сканированного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF) для изображений, которые будут получены со сканера. Опция доступна, если формат одностраничного изображения - PDF.
-
Качество - если выбран формат JPG, то можно настроить его качество (100 - максимальное качество и максимальный размер, 1 - минимальное качество и минимальный размер.). По умолчанию - 100.
-
Сжатие - если выбран формат TIF, можно настроить сжатие. Возможные варианты: LZW, RLE, CCITT3, CCITT4, Без сжатия. По умолчанию: Без сжатия.
-
Разрешение - позволяет выбрать разрешение сканирования (DPI). Список доступных разрешений зависит от выбранного сканера.
-
Цветность - выбор цветности изображений, которые будут получены со сканера (Монохромное, Градации Серого, Цветное).
-
Поворот изображения - позволяет выбрать один из вариантов поворота изображений после сканирования. Для некоторых моделей сканеров это свойство недоступно.
-
Размер бумаги - позволяет выбрать размер бумаги, которая помещена в сканер. Для некоторых моделей сканеров это свойство недоступно.
-
Двустороннее сканирование - если установлено, будут отсканированы обе стороны бумаги. Для некоторых моделей сканеров это свойство недоступно.
-
Показывать диалог сканера - если Истина, перед сканированием будет показан диалог для расширенной настройки сканирования (например, выбор области сканирования на листе бумаги).
-
Открыть номера отсканированных файлов - открывает список последних использованных номеров, из которых автоматически создаются имена отсканированных файлов для каждого владельца (папка файла или Входящий, Исходящий, Внутренний документ)
+
+
Программа позволяет хранить файлы, полученные напрямую со сканера. Для работы со сканером в программе необходимо произвести настройку сканирования.
+
Открывается из окна персональных настроек программы (страница Работа с файлами) по соответствующей команде.
+
Перед выполнением настроек к компьютеру необходимо подключить сканер, при этом в зависимости от возможностей подключенного сканера будут доступны те или иные параметры. Для подтверждения настроек нажмите ОК.
+
Компонента сканирования
+
Перед настройкой сканирования нажмите Установить компоненту сканирования.
+
Если на Вашем компьютере нет сканера, устанавливать компоненту не нужно.
+
Если компонента уже установлена, то вместо этой кнопки отображается Версия установленной компоненты сканирования.
Имя сканера
+
В поле Имя сканера выберите используемый сканер из списка доступных устройств, подключенных к компьютеру.
+
Возможность преобразования в PDF
+
Включите флажок, для того чтобы Использовать ImageMagick для преобразования в PDF. В этом случае отсканированные изображения можно преобразовать в формат PDF с помощью программы ImageMagick. На клиентском компьютере, к которому подключен сканер, должны быть установлены бесплатные программы ImageMagick (используйте вариант Win32 dynamic at 8 bits-per-pixel) и Ghostscript.
+
Укажите Путь к программе преобразования в PDF - путь к исполняемому файлу программы ImageMagick (по умолчанию "convert.exe"). Если это имя конфликтует с другими программами, с помощью кнопки Выбрать нужно указать полный путь вида "C:\Program Files\ImageMagick-6.6.3-Q8\convert.exe".
Параметры изображений
+
+
Формат одностраничного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF, PDF) для помещения файла в информационную базу. Если флажок Использовать ImageMagick для преобразования в PDF включен, то в списке становится доступным также формат PDF (в этом случае можно выбрать PDF для хранения, остальные форматы - для сканирования).
+
Качество - если выбран формат JPG, то можно настроить его качество (100 - максимальное качество и максимальный размер, 1 - минимальное качество и минимальный размер). По умолчанию - 100.
+
Сжатие - если выбран формат TIF, можно настроить сжатие. Возможные варианты: LZW, RLE, CCITT3, CCITT4, Без сжатия. По умолчанию: Без сжатия.
+
Тип сканированного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF) для изображений, которые будут получены со сканера. Опция доступна, если выбран формат одностраничного изображения PDF. В этом случае формат PDF используется для хранения.
Формат многостраничного изображения - параметр становится доступным, если флажок Использовать ImageMagick для преобразования в PDF включен. Позволяет выбрать один из поддерживаемых форматов (TIF, PDF) для помещения многостраничного файла в информационную базу. Применяется, когда при работе с Помощником сканирования для нескольких отсканированных изображений выбрана команда Принять все как один файл.
Параметры сканирования
+
Зависят от возможностей выбранного сканера, который подключен к программе. Некоторые из них могут быть недоступны.
+
Выберите Разрешение сканирования (DPI). Список доступных разрешений зависит от выбранного сканера.
+
Выберите Цветность изображений, которые будут получены со сканера (Монохромное, Градации Серого, Цветное). Зависит от возможностей сканера.
+
Выберите один из вариантов Поворота изображения после сканирования. Для некоторых моделей сканеров это свойство недоступно.
+
Выберите Размер бумаги, которая помещена в сканер. Для некоторых моделей сканеров это свойство недоступно.
+
Включите флажок Двустороннее сканирование. В этом случае будут отсканированы обе стороны бумаги. Для некоторых моделей сканеров это свойство недоступно.
Диалог сканера
+
Показывать диалог сканера перед сканированием - если флажок включен, перед сканированием будет показан диалог для расширенной настройки сканирования (например, выбор области сканирования на листе бумаги). По умолчанию флажок включен.
+
Установка параметров по умолчанию
+
Нажмите Установить стандартные параметры для установки настроек сканера по умолчанию. Если программ преобразования в формат PDF на компьютере нет, следует оставить форматы, рекомендуемые программой по умолчанию.
-
Примечание: при работе под управлением ОС Windows Server 2008, для использования сканера вам нужно установить компоненту Возможности рабочего стола (Desktop Experience).
\ No newline at end of file
+
Примечание: при работе под управлением ОС Windows Server 2008 для использования сканера вам нужно установить компоненту Возможности рабочего стола (Desktop Experience).
В форме выполняется настройка сканирования на данный сеанс сканирования (эти настройки не будут сохранены). Форма открывается из формы сканирования.
-
Формат одностраничного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF, PDF) для помещения в информационную базу.
-
Формат многостраничного изображения - позволяет выбрать один из поддерживаемых форматов (TIF, PDF) для помещения в информационную базу. Применяется когда выбрана команда "Принять все как один файл".
-
Тип сканированного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF) для изображений, которые будут получены со сканера. Опция доступна, если формат одностраничного изображения - PDF.
-
Качество - если выбран формат JPG, то можно настроить его качество (100 - максимальное качество и максимальный размер, 1 - минимальное качество и минимальный размер.). По умолчанию - 100.
-
Сжатие - если выбран формат TIF, можно настроить сжатие. Возможные варианты: LZW, RLE, CCITT3, CCITT4, Без сжатия. По умолчанию: Без сжатия.
-
Разрешение - позволяет выбрать разрешение сканирования (DPI). Список доступных разрешений зависит от выбранного сканера.
-
Цветность - выбор цветности изображений, которые будут получены со сканера (Монохромное, Градации Серого, Цветное).
-
Поворот изображения - позволяет выбрать один из вариантов поворота изображений после сканирования. Для некоторых моделей сканеров это свойство недоступно.
-
Размер бумаги - позволяет выбрать размер бумаги, которая помещена в сканер. Для некоторых моделей сканеров это свойство недоступно.
-
Двустороннее сканирование - если установлено, будут отсканированы обе стороны бумаги. Для некоторых моделей сканеров это свойство недоступно.
-
Показывать диалог сканера - если Истина, перед сканированием будет показан диалог для расширенной настройки сканирования (например, выбор области сканирования на листе бумаги).
\ No newline at end of file
+
+
Предназначена для настройки на данный сеанс сканирования (эти настройки не будут сохранены). Открывается из Помощника сканирования по команде Настройка.
+
В зависимости от возможностей сканера, а также долговременных настроек сканирования, некоторые параметры могут быть скрыты. Например, если преобразование в PDF отключено, то поменять формат многостраничного изображения невозможно, по умолчанию будет выбран формат TIF.
+
Параметры изображений
+
Формат одностраничного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF, PDF) для помещения в информационную базу.
+
Формат многостраничного изображения - позволяет выбрать один из поддерживаемых форматов (TIF, PDF) для помещения в информационную базу. Применяется когда выбрана команда Принять все как один файл.
+
Тип сканированного изображения - позволяет выбрать один из поддерживаемых форматов (BMP, JPG, GIF, PNG, TIF) для изображений, которые будут получены со сканера. Опция доступна, если формат одностраничного изображения - PDF.
+
Качество - если выбран формат JPG, то можно настроить его качество (100 - максимальное качество и максимальный размер, 1 - минимальное качество и минимальный размер.). По умолчанию - 100.
+
Сжатие - если выбран формат TIF, можно настроить сжатие. Возможные варианты: LZW, RLE, CCITT3, CCITT4, Без сжатия. По умолчанию: Без сжатия.
Параметры сканирования
+
Разрешение - позволяет выбрать разрешение сканирования (DPI). Список доступных разрешений зависит от выбранного сканера.
+
Цветность - выбор цветности изображений, которые будут получены со сканера (Монохромное, Градации Серого, Цветное).
+
Поворот изображения - позволяет выбрать один из вариантов поворота изображений после сканирования. Для некоторых моделей сканеров это свойство недоступно.
+
Размер бумаги - позволяет выбрать размер бумаги, которая помещена в сканер. Для некоторых моделей сканеров это свойство недоступно.
+
Двустороннее сканирование - если установлено, будут отсканированы обе стороны бумаги. Для некоторых моделей сканеров это свойство недоступно.
+
Показывать диалог сканера - если флажок включен, перед сканированием будет показан диалог для расширенной настройки сканирования (например, выбор области сканирования на листе бумаги).
Во встроенном редакторе текстовых файлов можно просмотреть и отредактировать файл, изменить кодировку, открыть дерево процессов и задач, в которых задействован файл, сравнить с исходным вариантом в процессе редактирования, при необходимости открыть при помощи стандартного приложения.
Как открыть файл во встроенном редакторе текстовых файлов
-
По умолчанию во встроенном редакторе открываются текстовые файлы с расширением txt, ini, xml. Вы можете дополнить список расширений файлов в персональных настройках программы. Для этого:
-
Перейдите в раздел Настройка и администрирование.
-
Выполните команду Персональные настройки командной панели.
-
В персональных настройках программы перейдите на закладку Работа с файлами.
-
Во встроенном редакторе текстовых файлов можно просмотреть и отредактировать файл, изменить кодировку, открыть дерево процессов и задач, в которых задействован файл, сравнить с исходным вариантом в процессе редактирования, при необходимости открыть при помощи стандартного приложения.
+
Открывается из спискаФайлы по команде Открыть или Редактировать файл, в случае если в персональных настройках программы имеется соответствующая настройка.
+
По умолчанию во встроенном редакторе открываются текстовые файлы с расширением TXT, INI, XML. Вы можете дополнить список расширений файлов в персональных настройках программы. На закладке Работа с файлами в таблице Настройки открытия файлов можно указать Расширения файлов для работы во встроенном текстовом редакторе (перечисляются через пробел). Также можно указать Способ открытия - Стандартным приложением или Во встроенном редакторе (установка по умолчанию).
+
-
Как открыть файл в стандартной программе
-
Если вы хотите, чтобы текстовые файлы c определенными расширениями по умолчанию открывались во внешнем приложении, то внесите изменения в персональные настройки программы. Для этого:
-
Перейдите в раздел Настройка и администрирование.
-
Выполните команду Персональные настройки панели действий.
-
В персональных настройках программы перейдите на закладку Работа с файлами.
-
В колонке Способ открытия выберите пункт Во внешнем приложении.
-
Принцип работы встроенного редактора текстовых файлов такой же как и у внешнего приложения. Файл копируется на локальный компьютер и помечается как занятый в информационной базе. До тех пор пока вы не нажмете на кнопку Закончить редактирование созданная версия файла не будет доступна другим пользователям.
Если файл открыт в режиме просмотра, кнопки Записать и закрыть и Записать недоступны. Нажмите Редактировать, для того чтобы изменить файл.
+
+
+
Принцип работы встроенного редактора текстовых файлов такой же, как и у внешнего приложения. Файл копируется на локальный компьютер и помечается как занятый в информационной базе. До тех пор пока вы не нажмете Все действия - Закончить редактирование,созданная версия файла не будет доступна другим пользователям.
+
После окончания редактирования файла нажмите Все действия - Закончить редактирование, для того чтобы снять с него пометку занятости для редактирования. В зависимости от настроек команда также сохраняет версию файла или обновляет файл в хранилище. По умолчанию создается новая версия файла. Для изменения настройки при создании версии снимите соответствующий флажок.
Просмотр задач
+
С помощью команды Все действия - Задачи можно просмотреть список задач, которые были созданы на основании данного файла.
+
Просмотр карточки файла
+
Нажмите Все действия - Открыть карточку, для того чтобы просмотреть сведения о файле.
+
Сравнение версий
+
Нажмите Все действия - Показать отличия, для того чтобы произвести сравнение версий файлов. Если программа для сравнения версий не была выбрана заранее в персональных настройках программы (вкладка Работа с файлами), предлагается ее выбрать. Доступны Microsoft Word или OpenOffice.org Writer.
+
Сохранение файла
+
Нажмите Все действия - Сохранить как, для того чтобы сохранить файл в указанный каталог на жестком или сетевом диске
+
Открытие файла в стандартной программе
+
Нажмите Все действия -Открыть стандартным приложением, для того чтобы перейти во внешнее приложение (Блокнот Windows) для редактирования файла.
+
Если необходимо, чтобы текстовые файлы c определенными расширениями по умолчанию открывались во внешнем приложении, внесите изменения в персональные настройки программы. Для этого:
+
В персональных настройках программы перейдите на закладку Работа с файлами.
+
Измените Настройки открытия файлов. В колонке Способ открытия выберите Стандартным приложением.
Изменение кодировки текстового файла
+
Текстовые файлы могут быть сохранены в разных кодировках. Основными кодировками для работы с текстовыми файлами на русском языке являются:
+
+
IBM866 (Кириллица DOS),
+
+
KOI8-R (Кириллица KOI8-R),
+
+
Windows-1251 (Кириллица Windows.
Если после открытия текстового файла вместо текста виден набор бессмысленных знаков, выполните команду Все действия - изменить кодировку, выберите другую кодировку из списка.
В этом списке отображаются только файлы, занятые Вами для редактирования. Редактировать файлы можно в списке файлов или в списке присоединенных файлов объектов программы.
+
Открывается по команде Редактируемые файлы панели навигации раздела Органайзер.
+
В списке выводятся сведения:
+
Файл - наименование файла
+
Где лежит - папка, в которой находится файл или объект, к которому присоединен файл.
Доступные действия:
+
Открыть файл - Открыть файл для просмотра;
+
Закончить редактирование - сохраняет версию файла и освобождает файл для других пользователей.
+
Программа указывает путь к файлу в рабочем каталоге.
+
С помощью переключателя выберите режим сохранения файла:
+
На основе файла в рабочем каталоге (рекомендуется).
+
На основе файла в хранилище файлов.
Нажмите Сохранить файл.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Form.form b/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Form.form
index 62b2b02e0..383563e62 100644
--- a/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Form.form
+++ b/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Form.form
@@ -255,6 +255,7 @@
50true
+ 10truetruetrue
@@ -377,7 +378,7 @@
Lefttrue
- 50
+ 75true2true
@@ -631,8 +632,6 @@
OnCloseПриЗакрытии
- 90
- 30LockOwnertruetrue
diff --git a/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Help/ru.html
index d08ceeee6..be7c0bae7 100644
--- a/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Forms/РезультатСканирования/Help/ru.html
@@ -1,9 +1,13 @@
-
-
Помощник сканирования
-
В этой форме вы можете отсканировать одно или несколько изображений.
-
Доступны следующие команды:
-
Принять - создает Файл на основании изображения (доступна, если отсканировано одно изображение).
-
Пересканировать - удаляет текущее изображение и сканирует заново.
-
Принять все как один файл - создает многостраничный файл (TIF или PDF) на основании всех изображений (доступна, если отсканировано два и более изображений).
-
Принять все как отдельные файлы - создает отдельный Файл на основании каждого из изображений (доступна, если отсканировано два и более изображений).
-
Настройка - вызывает диалог настроек сканирования на сеанс. Ранее отсканированные изображения не удаляются.
\ No newline at end of file
+
+
В этом окне вы можете отсканировать одно или несколько изображений.
+
Сканирование изображений производится по команде Создать файл - Со сканера в спискеФайлы (Присоединенные файлы).
+
Работа с отсканированными изображениями
+
После того как первое изображение отсканировано, оно показывается в окне Помощника,в информационной строке под изображением выводится формат и другие параметры изображения. Становятся доступными команды:
+
Сканировать еще - выполните эту команду, если необходимо отсканировать сразу несколько документов.
+
Пересканировать - удаляет текущее изображение и сканирует заново.
+
Принять - создает файл на основании изображения (команда доступна, если отсканировано одно изображение). Автоматически создается карточка файла и выводится на экран, окно помощника закрывается.
+
Принять все как один файл - команда становится доступной, если отсканировано два и более изображения, создает многостраничный файл (TIF или PDF) на основании всех изображений. Автоматически создается карточка файла и выводится на экран, окно помощника закрывается.
+
Принять все как отдельные файлы - команда становится доступной, если отсканировано два и более изображения, создает отдельный файл на основании каждого из изображений. Автоматически создаются карточки файла, окно помощника закрывается.
+
Отмена - отказаться от продолжения сканирования и выйти без сохранения отсканированных изображений.
+
Настройка - выполните эту команду, для того чтобы в этом сеансе сканирования изменить параметры сканирования, установленные в персональных настройках программы. Установите параметры на этот сеанс и нажмите кнопку ОК. Ранее отсканированные изображения не удаляются.
В этом списке при завершении работы отображаются файлы, занятые Вами для редактирования.
+
Для того чтобы отменить открытие списка занятых файлов при завершении работы, выключите флажок Показывать занятые файлы при завершении работы. Также это можно сделать в персональных настройках программы на закладке Работа с файлами.
+
В списке выводятся сведения:
+
Наименование - наименование файла;
+
Описание - подробные сведения о файле (из карточки файла).
Доступные действия:
+
Открыть файл - открывает файл внешним приложением для редактирования. Также можно открыть файл двойным щелчком мыши или с помощью клавиши Enter.
+
Закончить редактирование - сохраняет версию файла и освобождает файл для других пользователей.
+
В программе существует возможность хранить файлы в программе без привязки к конкретному объекту.
-
Список открывается по команде Файлы в разделе Органайзер.
-
Работа со списком организована аналогично работе в Проводнике Windows. Левая часть списка содержит иерархическую структуру папок. В правой части располагается список файлов в выделенной папке. С помощью соответствующих команд в список можно добавлять новые файлы, копировать, изменять или удалять их.
+
+
В программе существует возможность хранить файлы в информационной базе без привязки к конкретному объекту. Список предназначен для управления этими файлами.
+
Открывается по команде Файлы в разделе Органайзер.
+
Работа со списком организована аналогично работе в Проводнике Windows.
+
Левая часть списка содержит иерархическую структуру папок. В списке имеются предопределенные папки, которые нельзя удалить, например, папка Шаблоны файлов.
+
В правой части располагается список файлов в выбранной папке. С помощью соответствующих команд в список можно добавлять новые файлы и папки, копировать, изменять или удалять их.
+
Для работы с реквизитами файла (автор, наименование, описание и т.д.) используется карточка (Открыть карточку), а для работы с самим файлом (Открыть или Редактировать файл) - соответствующее приложение, установленное на компьютере.
+
При редактировании файла его предыдущая версия автоматически сохраняется в информационной базе (эта настройка установлена по умолчанию, отменять не рекомендуется, т.к. если файл был испорчен во время редактирования, в этом случае имеется возможность вернуться к одной из его предыдущих версий).
+
Зеленым цветом отображаются файлы, занятые Вами для редактирования, а серым цветом - файлы, занятые другими пользователями программы.
В списке выводится:
- подписан ЭП.
- зашифрован.
@@ -14,24 +18,62 @@
Отредактировал - пользователь, который добавил версию файла.
Автор - пользователь, который добавил файл.
С помощью команды Изменить форму можно добавить дополнительные поля, например:
-
Данные от - дата изменения данных версии файла (местное время).
+
Дата изменения - дата изменения данных версии файла (местное время).
-
Текущая версия - код текущей версии и т.д.
Зеленым цветом отображаются файлы, занятые Вами для редактирования, а серым цветом - файлом, занятые другими пользователями программы.
-
Управление просмотром списка файлов
+
Текущая версия - код текущей версии и т.д.
Добавление файлов
+
Для добавления нового файла в программу:
+
+
Выберите нужную папку;
+
+
Нажмите Создать (клавишу Insert);
+
+
Выберите способ создания:
+
+
Из файла на диске
+
+
Для того чтобы прикрепить к объекту или поместить в папку уже имеющийся на компьютере файл, укажите путь к файлу на диске, нажмите кнопку Открыть.
+
+
После этого программа сохранит файл, автоматически создаст и откроет Карточку файла.
+
Из шаблона
+
+
Выделите шаблон файла в списке выбора, затем нажмите кнопку Выбрать.
+
+
Программой будет автоматически создана и открыта Карточка файла.
+
Со сканера
+
+
Вариант создания файла Со сканера становится доступным, если к компьютеру подключен сканер (более подробно см. документацию к сканеру) и на компьютере подключена компонента для работы со сканером. Также необходимо настроить сканирование.
+
+
Если все условия соблюдены и настройки выполнены, можно получить файл со сканера.
После того как документ отсканирован, выполните команду Принять, после этого файлу автоматически присваивается код и создается карточка файла, которая выводится на экран. В поле Наименование также автоматически проставляется код. Отредактируйте нужные поля, нажмите Записать и закрыть, для того чтобы сохранить карточку файла.
Шаблоны файлов
+
Программа поставляется с предопределенной папкой Шаблоны файлов. В папке можно разместить файлы, которые будут использоваться при создании новых файлов в качестве шаблона. Например, в эту папку можно поместить файл-заготовку с текстом договора и в дальнейшем использовать его при создании договоров для конкретных контрагентов.
+
Для того чтобы поместить в папку новый шаблон, откройте папку Шаблоны файлов, нажмите Создать, с помощью переключателя выберите Из файла на диске. Затем выберите нужный файл.
+
Программа автоматически создает и выводит на просмотр карточку файла. Заполните описание шаблона, поле Папка по умолчанию заполнено - Шаблоны файлов.
Управление просмотром списка файлов
С помощью кнопки Использовать иерархию можно изменить вид списка и увидеть все файлы, находящиеся в разных папках, в одном списке.
Размещение файлов в папках
-
Файлы можно перемещать в различные папки списка с помощью перетаскивания мышью.
-
В списке можно создать необходимое количество папок и хранить в них файлы, непривязанные к конкретным объектам программы. Создать папку можно с помощью соответствующей команды списка или контекстного меню.
Права доступа к папкам
+
В списке можно Создать необходимое количество папок и хранить в них файлы, непривязанные к конкретным объектам программы.
+
Создать папку можно также с помощью соответствующей команды меню Все действия или контекстного меню по правой кнопке мыши.
+
Файлы можно перемещать в различные папки списка с помощью перетаскивания мышью. Также для выделенных файлов можно воспользоваться командой Все действия - Перенести в папку.
+
С помощью мыши можно также перетаскивать папки, подчиняя их друг другу.
Права доступа к папкам
Папкам можно назначать различные права доступа.
-
Права доступа к папкам файлов настраиваются администратором программы или пользователем, имеющим право на управление правами той или иной папки.
С помощью команды контекстного меню по правой кнопке мыши Загрузить файлы можно в одной из папок списка файлы с жесткого или сетевого диска.
-
Для того чтобы поместить папку с жесткого или сетевого диска в одну из папок списка Файлы, выполните команду контекстного меню по правой кнопке мыши Загрузить папку.
Выгрузка папок
+
Права доступа к папкам файлов настраиваются администратором программы или пользователем, имеющим право на управление правами той или иной папки.
Загрузка файлов
+
С помощью команды контекстного меню по правой кнопке мыши Загрузить файлы можно разместить в одной из папок списка файлы с жесткого или сетевого диска.
+
В открывшемся Проводнике Windows укажите путь к файлу, нажмите Открыть.
+
Для того чтобы поместить папку с жесткого или сетевого диска в одну из папок списка Файлы, выберите папку, выполните команду контекстного меню по правой кнопке мыши Загрузить папку.
+
+
В открывшемся Проводнике Windows укажите путь к папке, нажмите Выбор папки.
Загрузка файлов и папок с помощью перетаскивания мышью
+
+
Если нужно загрузить один или несколько файлов (папок), можно использовать перетаскивание мышью - просто перетащите файл (папку) или несколько выбранных файлов (папок) мышкой из Проводника Windows в нужную папку списка файлов программы.
+
+
Один файл сразу записывается в список файлов, автоматически создается карточка файла.
+
+
При перетаскивании нескольких файлов, папки или нескольких папок заполните необходимые сведения.
Выгрузка папок
Команда Сохранить папку (расположена в контекстном меню папки) позволяет скопировать выбранную папку с файлами на жесткий диск. При этом копируются только активные версии файлов.
-
Шаблоны файлов
-
В списке имеются предопределенные папки, которые нельзя удалить, например, папка Шаблоны файлов.
-
Программа поставляется с предопределенной папкой Шаблоны файлов. В папке можно разместить файлы, которые будут использоваться при создании новых файлов в качестве шаблона. Например, в эту папку можно поместить файл-заготовку с текстом договора и в дальнейшем использовать его при создании договоров для конкретных контрагентов.
-
Для того чтобы поместить в папку новый шаблон, откройте папку Шаблоны файлов, нажмите Создать, с помощью переключателя выберите Из файла на диске. Затем выберите нужный файл.
-
Программа автоматически создает и выводит на просмотр карточку файла. Заполните описание шаблона, поле Папка по умолчанию заполнено - Шаблоны файлов.
Основной рабочий каталог - специальный каталог на Вашем компьютере в котором система размещает просматриваемые и редактируемые Вами файлы.
-
Для удаления ненужных файлов из рабочего каталога используйте команду "Удалить". При этом будут удалены только те файлы, в которые Вами не вносились какие-либо изменения.
-
Для того, чтобы освободить занятые Вами файлы, используйте команду "Отменить редактирование".
\ No newline at end of file
+
+
Основной рабочий каталог - специальный каталог на Вашем компьютере, в котором программа размещает просматриваемые и редактируемые Вами файлы. Список предназначен для управления файлами в рабочем каталоге.
+
Вызывается из персональных настроек программы (закладка Работа с файлами) по команде Настройка основного рабочего каталога - Открыть список файлов.
+
В списке выводится:
+
Файл - наименование файла;
+
Размер(Кб);
+
Дата изменения;
+
На редактирование - флажок включен, если файл редактируется.
С помощью команды Все действия - Изменить форму можно добавить в список дополнительные поля.
+
Доступные действия
+
Для удаления ненужных файлов из рабочего каталога нажмите Удалить. При этом будут удалены только те файлы, в которые Вами не вносились какие-либо изменения.
+
Для того чтобы освободить занятые Вами файлы, используйте команду Отменить редактирование.
+
Для того чтобы сохранить изменения в файле и освободить его для других пользователей, нажмите Закончить редактирование.
+
Нажмите Открыть каталог файла, для того чтобы просмотреть папку, в которой хранится редактируемый файл.
+
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl
index 2b35511ae..08b3a6736 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl
+++ b/SSL/src/Catalogs/Файлы/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl
@@ -8,53 +8,53 @@
Возврат;
КонецЕсли;
- ЗаполнитьСписокФайлов();
+ ЗаполнитьСписок();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
- ЗаполнитьСписокФайловВФорме();
+ ЗаполнитьСписокВФорме();
КонецПроцедуры
#КонецОбласти
-#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокФайлов
+#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
-Процедура СписокФайловПриАктивизацииСтроки(Элемент)
+Процедура СписокПриАктивизацииСтроки(Элемент)
- Если Элементы.СписокФайлов.ТекущиеДанные = Неопределено Тогда
+ Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
ДоступностьКоманд = Ложь;
Иначе
ДоступностьКоманд = Истина;
КонецЕсли;
- Элементы.УдалитьИзЛокальногоКэшаФайлов.Доступность = ДоступностьКоманд;
- Элементы.КонтекстноеМенюСписокФайловУдалитьИзЛокальногоКэшаФайлов.Доступность = ДоступностьКоманд;
+ Элементы.ФормаУдалитьИзЛокальногоКэшаФайлов.Доступность = ДоступностьКоманд;
+ Элементы.СписокКонтекстноеМенюУдалитьИзЛокальногоКэшаФайлов.Доступность = ДоступностьКоманд;
- Элементы.ЗакончитьРедактирование.Доступность = ДоступностьКоманд;
- Элементы.КонтекстноеМенюСписокФайловЗакончитьРедактирование.Доступность = ДоступностьКоманд;
+ Элементы.ФормаЗакончитьРедактирование.Доступность = ДоступностьКоманд;
+ Элементы.СписокКонтекстноеМенюЗакончитьРедактирование.Доступность = ДоступностьКоманд;
- Элементы.Освободить.Доступность = ДоступностьКоманд;
- Элементы.КонтекстноеМенюСписокФайловОсвободить.Доступность = ДоступностьКоманд;
+ Элементы.ФормаОсвободить.Доступность = ДоступностьКоманд;
+ Элементы.СписокКонтекстноеМенюОсвободить.Доступность = ДоступностьКоманд;
- Элементы.ОткрытьКаталогФайла.Доступность = ДоступностьКоманд;
- Элементы.КонтекстноеМенюСписокФайловОткрытьКаталогФайла.Доступность = ДоступностьКоманд;
+ Элементы.ФормаОткрытьКаталогФайла.Доступность = ДоступностьКоманд;
+ Элементы.СписокКонтекстноеМенюОткрытьКаталогФайла.Доступность = ДоступностьКоманд;
Элементы.ФормаОткрытьКарточку.Доступность = ДоступностьКоманд;
- Элементы.СписокФайловКонтекстноеМенюОткрытьКарточку.Доступность = ДоступностьКоманд;
+ Элементы.СписокКонтекстноеМенюОткрытьКарточку.Доступность = ДоступностьКоманд;
КонецПроцедуры
&НаКлиенте
-Процедура СписокФайловПередНачаломИзменения(Элемент, Отказ)
+Процедура СписокПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
ОткрытьКарточкуВыполнить();
КонецПроцедуры
&НаКлиенте
-Процедура СписокФайловПередУдалением(Элемент, Отказ)
+Процедура СписокПередУдалением(Элемент, Отказ)
Отказ = Истина;
УдалитьИзЛокальногоКэшаФайловВыполнить();
КонецПроцедуры
@@ -71,7 +71,7 @@
&НаКлиенте
Процедура ЗакончитьРедактирование(Команда)
- СтрокаТаблицы = Элементы.СписокФайлов.ТекущиеДанные;
+ СтрокаТаблицы = Элементы.Список.ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -98,7 +98,7 @@
&НаКлиенте
Процедура ОткрытьКаталогФайлаВыполнить()
- СтрокаТаблицы = Элементы.СписокФайлов.ТекущиеДанные;
+ СтрокаТаблицы = Элементы.Список.ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -118,8 +118,8 @@
&НаКлиенте
Процедура ЗакончитьРедактированиеЗавершение(Результат, ПараметрыВыполнения) Экспорт
- ЗаполнитьСписокФайлов();
- ЗаполнитьСписокФайловВФорме();
+ ЗаполнитьСписок();
+ ЗаполнитьСписокВФорме();
КонецПроцедуры
@@ -129,8 +129,8 @@
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("МассивСсылок", Новый Массив);
- Для Каждого Элемент Из Элементы.СписокФайлов.ВыделенныеСтроки Цикл
- ДанныеСтроки = Элементы.СписокФайлов.ДанныеСтроки(Элемент);
+ Для Каждого Элемент Из Элементы.Список.ВыделенныеСтроки Цикл
+ ДанныеСтроки = Элементы.Список.ДанныеСтроки(Элемент);
Ссылка = ДанныеСтроки.Версия;
ПараметрыВыполнения.МассивСсылок.Добавить(Ссылка);
КонецЦикла;
@@ -170,8 +170,8 @@
КонецЕсли;
КонецЦикла;
- ЗаполнитьСписокФайлов();
- ЗаполнитьСписокФайловВФорме();
+ ЗаполнитьСписок();
+ ЗаполнитьСписокВФорме();
КонецПроцедуры
@@ -185,25 +185,25 @@
КонецПроцедуры
&НаКлиенте
-Процедура ЗаполнитьСписокФайловВФорме()
+Процедура ЗаполнитьСписокВФорме()
РабочийКаталогПользователя = ФайловыеФункцииСлужебныйКлиент.РабочийКаталогПользователя();
- СписокФайлов.Очистить();
+ Список.Очистить();
Для Каждого Строка Из СписокЗначенийФайловВРегистре Цикл
ПолныйПуть = РабочийКаталогПользователя + Строка.Значение.ЧастичныйПуть;
Файл = Новый Файл(ПолныйПуть);
Если Файл.Существует() Тогда
- НоваяСтрока = СписокФайлов.Добавить();
- НоваяСтрока.ДатаИзмененияФайла = МестноеВремя(Строка.Значение.ДатаМодификацииУниверсальная);
- НоваяСтрока.ИмяФайла = Строка.Значение.ПолноеНаименование;
- НоваяСтрока.ИндексКартинки = Строка.Значение.ИндексКартинки;
- НоваяСтрока.Размер = Формат(Строка.Значение.Размер / 1024, "ЧЦ=10; ЧН=0"); // в КБ
- НоваяСтрока.Версия = Строка.Значение.Ссылка;
- НоваяСтрока.Редактирует = Строка.Значение.Редактирует;
- НоваяСтрока.НаРедактирование = ЗначениеЗаполнено(Строка.Значение.Редактирует);
+ НоваяСтрока = Список.Добавить();
+ НоваяСтрока.ДатаИзменения = МестноеВремя(Строка.Значение.ДатаМодификацииУниверсальная);
+ НоваяСтрока.ИмяФайла = Строка.Значение.ПолноеНаименование;
+ НоваяСтрока.ИндексКартинки = Строка.Значение.ИндексКартинки;
+ НоваяСтрока.Размер = Формат(Строка.Значение.Размер / 1024, "ЧЦ=10; ЧН=0"); // в КБ
+ НоваяСтрока.Версия = Строка.Значение.Ссылка;
+ НоваяСтрока.Редактирует = Строка.Значение.Редактирует;
+ НоваяСтрока.НаРедактирование = ЗначениеЗаполнено(Строка.Значение.Редактирует);
КонецЕсли;
КонецЦикла;
@@ -212,13 +212,13 @@
&НаКлиенте
Процедура УдалитьПоСсылке(СсылкаДляУдаления)
- КоличествоЭлементов = СписокФайлов.Количество();
+ КоличествоЭлементов = Список.Количество();
Для Номер = 0 По КоличествоЭлементов - 1 Цикл
- Строка = СписокФайлов[Номер];
+ Строка = Список[Номер];
Ссылка = Строка.Версия;
Если Ссылка = СсылкаДляУдаления Тогда
- СписокФайлов.Удалить(Номер);
+ Список.Удалить(Номер);
Возврат;
КонецЕсли;
КонецЦикла;
@@ -226,12 +226,12 @@
КонецПроцедуры
&НаСервере
-Процедура ЗаполнитьСписокФайлов()
+Процедура ЗаполнитьСписок()
- СписокФайловВРегистре = СписокФайловВРегистре();
+ СписокВРегистре = СписокВРегистре();
СписокЗначенийФайловВРегистре.Очистить();
- Для Каждого Строка Из СписокФайловВРегистре Цикл
+ Для Каждого Строка Из СписокВРегистре Цикл
СписокЗначенийФайловВРегистре.Добавить(Строка);
КонецЦикла;
@@ -255,8 +255,8 @@
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("МассивСсылок", Новый Массив);
- Для Каждого НомерЦикла Из Элементы.СписокФайлов.ВыделенныеСтроки Цикл
- ДанныеСтроки = Элементы.СписокФайлов.ДанныеСтроки(НомерЦикла);
+ Для Каждого НомерЦикла Из Элементы.Список.ВыделенныеСтроки Цикл
+ ДанныеСтроки = Элементы.Список.ДанныеСтроки(НомерЦикла);
ПараметрыВыполнения.МассивСсылок.Добавить(ДанныеСтроки.Версия);
КонецЦикла;
@@ -280,7 +280,7 @@
ПараметрыВыполнения.Ссылка = ПараметрыВыполнения.МассивСсылок[Индекс];
Если ФайлЗанят(ПараметрыВыполнения.Ссылка) Тогда
- Строки = СписокФайлов.НайтиСтроки(Новый Структура("Версия", ПараметрыВыполнения.Ссылка));
+ Строки = Список.НайтиСтроки(Новый Структура("Версия", ПараметрыВыполнения.Ссылка));
Строки[0].НаРедактирование = Истина;
ПараметрыВыполнения.ЕстьЗанятыеФайлы = Истина;
ПараметрыВыполнения.АсинхронныйДиалог.Открыт = Ложь;
@@ -315,7 +315,7 @@
|занятые для редактирования.'"));
КонецЕсли;
- Элементы.СписокФайлов.Обновить();
+ Элементы.Список.Обновить();
КонецПроцедуры
@@ -342,7 +342,7 @@
&НаКлиенте
Процедура ОткрытьКарточкуВыполнить()
- СтрокаТаблицы = Элементы.СписокФайлов.ТекущиеДанные;
+ СтрокаТаблицы = Элементы.Список.ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -353,7 +353,7 @@
КонецПроцедуры
&НаСервере
-Функция СписокФайловВРегистре()
+Функция СписокВРегистре()
УстановитьПривилегированныйРежим(Истина);
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаВозвратаФайла/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаВозвратаФайла/Help/ru.html
index c85b1d932..89fb726f6 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаВозвратаФайла/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаВозвратаФайла/Help/ru.html
@@ -1,5 +1,15 @@
-
-
При выполнении команд "Сохранить изменения" или "Закончить редактирование" можно указать краткий комментарий, характеризующий внесенные Вами изменения в файл.
-
Если флажок "Создать новую версию" не установлен, то при обновлении в хранилище новая версия запишется поверх предыдущей.
Программа выводит имя сохраняемого файла под заголовком окна.
+
+
В поле Комментарий к версии можно написать краткий комментарий, характеризующий внесенные Вами изменения в файл.
+
+
Если флажок Создать новую версию не установлен, то при обновлении в хранилище новая версия запишется поверх предыдущей. Рекомендуется создавать версии, т.к. в случае порчи файла при редактировании можно вернуться к более ранней неиспорченной версии. По умолчанию флажок включен. Изменить настройку можно с помощью флажка Хранить версии в карточке файла или при загрузке файлов (папок).
Предназначен для выбора шаблона файла. Выбор осуществляется из папкиШаблоны файлов.
+
Программа поставляется с предопределенной папкой Шаблоны файлов. В папке размещаются файлы, которые используются при создании новых файлов в качестве шаблона. Например, в эту папку можно поместить файл-заготовку с текстом договора и в дальнейшем использовать его при создании договоров для конкретных контрагентов.
Список состоит из двух частей: слева папкаШаблоны файлов, справа - список шаблонов файлов, которые в ней находятся. Список состоит из колонок:
+
+
- подписан ЭП;
+
+
- зашифрован;
+
+
Наименование - имя файла.
Создание файла из шаблона
+
+
Выделите нужный шаблон в списке, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши.
+
+
Программа автоматически создает и выводит на просмотр карточку файла. Заполните необходимые поля, нажмите Записать и закрыть.
Добавление шаблона файлов
+
Для того чтобы поместить в папку Шаблоны новый шаблон, нажмите Создать, с помощью переключателя выберите Из файла на диске. Затем выберите нужный файл.
+
Программа автоматически создает и выводит на просмотр карточку файла. Заполните описание шаблона, поле Папка по умолчанию заполнено - Шаблоны файлов.
Просмотр сведений о файле
+
Нажмите , для того чтобы просмотреть карточку файла.
клавишу Enter - требуется выбор режима открытия файла, если не было иных настроек;
+
двойной щелчок левой кнопкой мыши - так же, как и в предыдущем случае;
+
Кнопку Открыть файл;
+
Команду Редактировать (F4).
Варианты открытия файла
+
С помощью переключателя выберите режим открытия файла:
+
Только для просмотра - файл не будет помечен как занятый Вами для редактирования и откроется внешним приложением в режиме "только просмотр".
+
Для редактирования - файл будет помечен как занятый Вами для редактирования и откроется внешним приложением с возможностью внесения и сохранения изменений.
Для подтверждения выбора нажмите Открыть файл.
Отключение выбора режима открытия
+
+
Если для текстовых файлов в персональных настройках программы установлен способ открытия Во встроенном редакторе, то выбор режима открытия файла не требуется, редактор открывается сразу и переключение между режимами открытия производится уже в самом редакторе.
+
Если файл был занят для редактирования, то выбора режима открытия файла не требуется, файл открывается в режиме редактирования.
+
+
+
Для того чтобы больше не производить выбор режима открытия, после выбора варианта открытия файла включите флажок Больше не спрашивать.
+
+
Включить выбор режима можно в персональных настройках программы на закладке Работа с файлами.
+
+
В персональных настройках программы (закладка Работа с файлами) можно выбрать Действие при выборе файла:
+
+
Открывать файл (установка по умолчанию);
+
+
+
Включите флажок Выбор режима открытия при выборе файла. По умолчанию флажок включен.
+
Открывать карточку файла - в этом случае по клавише Enter или двойному щелчку мыши открывается карточка файла, выбор режима открытия файла не производится.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаГруповаяОперацияНаПапке/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаГруповаяОперацияНаПапке/Help/ru.html
new file mode 100644
index 000000000..9ae112f6f
--- /dev/null
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаГруповаяОперацияНаПапке/Help/ru.html
@@ -0,0 +1 @@
+Предназначена
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаПапки/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаПапки/Help/ru.html
index 014a945fa..83896c1e5 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаПапки/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаПапки/Help/ru.html
@@ -1,10 +1,23 @@
-
-
Загрузка папки
-
Для загрузки папки с жесткого или сетевого диска просто перетащите его мышкой в нужную папку файлов системы или выполните следующие действия:
-
-
Выберите папку
+
+
Предназначена для загрузки папки с диска на компьютере.
+
Открывается из списка файлов по команде Загрузить папку контекстного меню по правой кнопке мыши после выбора папки в открывшемся Проводнике Windows. В проводнике укажите путь к папке, нажмите Выбор папки.
+
Заполните необходимые для загрузки папки сведения:
+
+
Поле Каталог на диске заполняется автоматически, при необходимости можно выбрать другую папку.
+
В поле Папка автоматически проставляется выбранная папка в списке файлов, в которую будет загружена папка с диска на компьютере. При необходимости можно выбрать другую папку;
-
Выполните команду контекстного меню папки "Загрузить папку"
+
Для экономии места на диске включите флажок Удалять файлы после добавления (по умолчанию выключен);
-
Укажите каталог на диске и следуйте инструкциям программы
Включите флажок, для того чтобы Хранить версии (рекомендуется, по умолчанию флажок включен);
+
+
Для текстовых файлов можно Выбрать кодировку из списка.
+
+
Для подтверждения нажмите Загрузить папку. Если выбранная для загрузки папка пуста, то программа выводит сообщение "Нет файлов для добавления".
Также можно использовать перетаскивание мышью для загрузки папки с жесткого или сетевого диска - просто перетащите папку мышкой из Проводника Windows в нужную папку списка файлов программы.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Form.form b/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Form.form
index f07784129..b03ff39a5 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Form.form
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Form.form
@@ -363,7 +363,7 @@
50truetrue
- 8
+ 6trueMultiRow1
@@ -535,7 +535,7 @@
Lefttrue
- 3
+ 2truetruetrue
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Help/ru.html
index 328598b4e..5bd45b1c0 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаИмпортаФайлов/Help/ru.html
@@ -1,4 +1,21 @@
-
-
Загрузка файлов
-
Для загрузки файлов с жесткого или сетевого диска просто перетащите их мышкой в нужную папку системы или используйте команду "Загрузить файлы" контекстного меню папки.
Предназначена для загрузки файлов с диска на компьютере.
+
Открывается из списка файлов по команде Загрузить файлы контекстного меню по правой кнопке мыши после выбора файла (файлов) в открывшемся Проводнике Windows. В проводнике выделите один или несколько файлов, нажмите Открыть.
+
Выводится список загружаемых файлов. Можно заменить весь список с помощью кнопки Выбрать (дополнить список невозможно, при выборе новых файлов старые удаляются) - открыть Проводник Windows и выбрать другие файлы.
+
Заполните необходимые для загрузки файлов сведения:
+
В поле Папка автоматически проставляется выбранная папка в списке файлов, в которую будет загружены файлы с диска на компьютере. При необходимости можно выбрать другую папку;
+
+
Для экономии места на диске включите флажок Удалять файлы после добавления (по умолчанию выключен);
+
+
Напишите Описание для создаваемых файлов;
+
+
Включите флажок, для того чтобы Хранить версии (рекомендуется, по умолчанию флажок включен);
+
+
Для текстовых файлов можно Выбрать кодировку из списка.
+
+
Для подтверждения нажмите Загрузить файл.
Также можно использовать перетаскивание мышью для загрузки файлов с жесткого или сетевого диска - просто перетащите файлы мышкой из Проводника Windows в нужную папку списка файлов программы.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаНового/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаНового/Help/ru.html
index 1c043c60d..ce0f32b22 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаНового/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаНового/Help/ru.html
@@ -1,6 +1,11 @@
-
-
Варианты создания нового файла:
-
Из шаблона
-
Новый файл будет создан на основе выбранного шаблона
Из файла
-
Новый файл будет создан из существующего на локальном или сетевом диске файла
Из шаблона - новый файл будет создан на основе выбранного шаблона;
+
Из файла на диске - новый файл будет создан из существующего на локальном или сетевом диске файла;
+
Со сканера - предусмотрена возможность создать новый файл, получив графический файл со сканера (этот вариант доступен, если к компьютеру подключен сканер). Для загрузки файлов со сканера необходимо также настроить сканирование.
Нажмите кнопку Создать для перехода к добавлению файла.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаОтчета/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаОтчета/Help/ru.html
new file mode 100644
index 000000000..b7110f4e7
--- /dev/null
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаОтчета/Help/ru.html
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаПеретаскивания/Form.form b/SSL/src/Catalogs/Файлы/Forms/ФормаПеретаскивания/Form.form
index d498b9106..f057e1c79 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаПеретаскивания/Form.form
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаПеретаскивания/Form.form
@@ -336,6 +336,7 @@
truetruetrue
+ 6truetrueMultiRow
@@ -507,6 +508,7 @@
Lefttrue
+ 2truetruetrue
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаПеретаскивания/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаПеретаскивания/Help/ru.html
new file mode 100644
index 000000000..4c80420d5
--- /dev/null
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаПеретаскивания/Help/ru.html
@@ -0,0 +1,33 @@
+
+
Предназначена для загрузки файлов и папок в список файлов с помощью перетаскивания мышью.
+
Загрузка файлов и папок с помощью перетаскивания мышью
+
+
Если нужно загрузить один или несколько файлов (папок), можно использовать перетаскивание мышью - просто перетащите файл (папку) или несколько выбранных файлов (папок) мышкой из Проводника Windows в нужную папку списка файлов программы.
+
+
Один файл сразу помещается в список файлов, автоматически создается карточка файла.
+
+
+
При перетаскивании нескольких файлов, папки или нескольких папок необходимо заполнить сведения:
+
+
+
Файлы, которые перетаскивались мышью для загрузки, выводятся в виде списка. Папки, которые перетаскивались мышью для загрузки, выводятся в виде дерева. При этом можно раскрыть каждую папку и просмотреть файлы, которые в нее входят.
+
+
+
С помощью флажков можно указать папки и файлы, которые будут загружены в программу.
В поле Папка автоматически проставляется выбранная папка в списке файлов, в которую будет загружены файлы с диска на компьютере. При необходимости можно выбрать из списка другую папку;
+
+
Для экономии места на диске включите флажок Удалять файлы после добавления (по умолчанию выключен);
+
+
Напишите Описание для создаваемых файлов;
+
+
Включите флажок, для того чтобы Хранить версии (рекомендуется, по умолчанию флажок включен);
+
+
Для текстовых файлов можно Выбрать кодировку из списка.
Предназначен для управления файлами, присоединенными к объекту программы.
Открывается по команде Присоединенные файлы панели навигации объекта программы. С помощью соответствующих команд в список можно добавлять новые файлы, копировать, изменять или удалять их.
+
Зеленым цветом отображаются файлы, занятые Вами для редактирования, а серым цветом - файлы, занятые другими пользователями программы.
В списке выводится:
- подписан ЭП.
- зашифрован.
Наименование - полное наименование файла. Значок рядом с наименованием указывает тип файла.
Описание - подробное описание файла.
-
Данные от - дата изменения данных версии файла (местное время);
+
Дата изменения - дата изменения данных версии файла (местное время);
Автор - пользователь, который добавил версию файла;
-
Размер (байт) - размер данных версии файла;
С помощью команды Все действия - Изменить форму можно добавить сведения:
+
Размер (КБ) - размер данных версии файла;
С помощью команды Все действия - Изменить форму можно добавить сведения:
Расширение - формат файла, рядом значок, который также показывает формат;
-
Редактирует - пользователь, который занял файл для редактирования и т.д.
См. также:
+
Редактирует - пользователь, который занял файл для редактирования и т.д.
Загрузка файлов
+
С помощью команды Все действия -Загрузить файлы можно разместить в списке файлы с жесткого или сетевого диска.
+
В открывшемся Проводнике Windows укажите путь к файлу, нажмите Открыть.
+
Также можно перетащить один или несколько файлов из Проводника Windows с помощью мыши. Если был добавлен один файл, автоматически создается и открывается карточка файла. При добавлении нескольких файлов карточки файлов автоматически создаются, но не открываются.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаСпискаПрисоединенныхФайлов/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/ФормаСпискаПрисоединенныхФайлов/Module.bsl
index 782814818..47047c365 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаСпискаПрисоединенныхФайлов/Module.bsl
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаСпискаПрисоединенныхФайлов/Module.bsl
@@ -21,20 +21,26 @@
РаботаСФайламиСлужебныйВызовСервера.ЗаполнитьУсловноеОформлениеСпискаФайлов(Список);
Если РаботаСФайламиСлужебныйВызовСервера.ПолучитьИспользоватьЭлектронныеПодписиИШифрование() = Ложь Тогда
- Элементы.ПодписанЭП.Видимость = Ложь;
- Элементы.Зашифрован.Видимость = Ложь;
+ Элементы.СписокНомерКартинкиПодписанЗашифрован.Видимость = Ложь;
КонецЕсли;
ПоказыватьКолонкуРазмер = РаботаСФайламиСлужебныйВызовСервера.ПолучитьПоказыватьКолонкуРазмер();
Если ПоказыватьКолонкуРазмер = Ложь Тогда
- Элементы.ТекущаяВерсияРазмер.Видимость = Ложь;
+ Элементы.СписокТекущаяВерсияРазмер.Видимость = Ложь;
+ КонецЕсли;
+
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ Элементы.ФормаИзменить.Видимость = Ложь;
+ Элементы.ФормаИзменить82.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
- Элементы.СоздатьФайлСоСканера.Видимость = РаботаСФайламиСлужебныйКлиент.ДоступнаКомандаСканировать();
+
+ Элементы.ФормаСоздатьСоСканера.Видимость = РаботаСФайламиСлужебныйКлиент.ДоступнаКомандаСканировать();
+
КонецПроцедуры
&НаКлиенте
@@ -651,32 +657,32 @@
&НаКлиенте
Процедура УстановитьДоступностьКоманд(РедактируетТекущийПользователь, Редактирует, ПодписанЭП, Зашифрован)
- Элементы.ЗакончитьРедактирование.Доступность = РедактируетТекущийПользователь;
- Элементы.СписокКонтекстноеМеню.ПодчиненныеЭлементы.КонтекстноеМенюСписокЗакончитьРедактирование.Доступность = РедактируетТекущийПользователь;
+ Элементы.ФормаЗакончитьРедактирование.Доступность = РедактируетТекущийПользователь;
+ Элементы.СписокКонтекстноеМенюЗакончитьРедактирование.Доступность = РедактируетТекущийПользователь;
- Элементы.СохранитьИзменения.Доступность = РедактируетТекущийПользователь;
- Элементы.СписокКонтекстноеМеню.ПодчиненныеЭлементы.КонтекстноеМенюСписокСохранитьИзменения.Доступность = РедактируетТекущийПользователь;
+ Элементы.ФормаСохранитьИзменения.Доступность = РедактируетТекущийПользователь;
+ Элементы.СписокКонтекстноеМенюСохранитьИзменения.Доступность = РедактируетТекущийПользователь;
- Элементы.Освободить.Доступность = Не Редактирует.Пустая();
- Элементы.СписокКонтекстноеМеню.ПодчиненныеЭлементы.КонтекстноеМенюСписокОсвободить.Доступность = Не Редактирует.Пустая();
+ Элементы.ФормаОсвободить.Доступность = Не Редактирует.Пустая();
+ Элементы.СписокКонтекстноеМенюОсвободить.Доступность = Не Редактирует.Пустая();
- Элементы.Занять.Доступность = Редактирует.Пустая() И НЕ (ПодписанЭП ИЛИ Зашифрован);
- Элементы.СписокКонтекстноеМеню.ПодчиненныеЭлементы.КонтекстноеМенюСписокЗанять.Доступность = Редактирует.Пустая() И НЕ (ПодписанЭП ИЛИ Зашифрован);
+ Элементы.ФормаЗанять.Доступность = Редактирует.Пустая() И НЕ (ПодписанЭП ИЛИ Зашифрован);
+ Элементы.СписокКонтекстноеМенюЗанять.Доступность = Редактирует.Пустая() И НЕ (ПодписанЭП ИЛИ Зашифрован);
- Элементы.Редактировать.Доступность = НЕ (ПодписанЭП ИЛИ Зашифрован);
- Элементы.СписокКонтекстноеМеню.ПодчиненныеЭлементы.КонтекстноеМенюСписокРедактировать.Доступность = НЕ (ПодписанЭП ИЛИ Зашифрован);
+ Элементы.ФормаРедактировать.Доступность = НЕ (ПодписанЭП ИЛИ Зашифрован);
+ Элементы.СписокКонтекстноеМенюРедактировать.Доступность = НЕ (ПодписанЭП ИЛИ Зашифрован);
Элементы.ФормаПодписать.Доступность = Редактирует.Пустая();
- Элементы.ФормаПодписатьКонтекст.Доступность = Редактирует.Пустая();
+ Элементы.СписокКонтекстноеМенюПодписать.Доступность = Редактирует.Пустая();
Элементы.ФормаСохранитьВместеСПодписью.Доступность = ПодписанЭП;
- Элементы.ФормаСохранитьВместеСПодписьюКонтекст.Доступность = ПодписанЭП;
+ Элементы.СписокКонтекстноеМенюСохранитьВместеСПодписью.Доступность = ПодписанЭП;
Элементы.ФормаЗашифровать.Доступность = Редактирует.Пустая() И НЕ Зашифрован;
- Элементы.ФормаЗашифроватьКонтекст.Доступность = Редактирует.Пустая() И НЕ Зашифрован;
+ Элементы.СписокКонтекстноеМенюЗашифровать.Доступность = Редактирует.Пустая() И НЕ Зашифрован;
Элементы.ФормаРасшифровать.Доступность = Зашифрован;
- Элементы.ФормаРасшифроватьКонтекст.Доступность = Зашифрован;
+ Элементы.СписокКонтекстноеМенюРасшифровать.Доступность = Зашифрован;
КонецПроцедуры
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаЭкспортаПапки/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ФормаЭкспортаПапки/Help/ru.html
index b31b34415..5cb39dd3e 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаЭкспортаПапки/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаЭкспортаПапки/Help/ru.html
@@ -1,3 +1,10 @@
-
-
Сохранение папки
-
Команда "Сохранить папку..." позволяет скопировать выбранную папку с файлами из информационной базы на жесткий диск. При этом копируются только активные версии файлов.
\ No newline at end of file
+
+
Позволяет скопировать выбранную папку с файлами из информационной базы на жесткий диск. При этом копируются только активные версии файлов.
+
Вызывается из списка файлов по команде контекстного меню папки по правой кнопке мыши Сохранить папку.
+
Сохранение папки
+
+
Выберите на компьютере каталог, в который будет копироваться папка.
Для открытия карточки файла используйте клавишу F2 или кнопку Изменить командной панели списка файлов. Карточку можно также открыть из полнотекстового поиска или из отчетов.
-
Карточка файла содержит различные сведения о файле и его текущей версии и кнопки для выполнения основных действий с файлом. Дополнительные команды для работы с файлом находятся в меню Все действия командной панели формы файла.
+
+
Карточка файла содержит различные сведения о файле и его текущей версии и кнопки для выполнения основных действий с файлом. Дополнительные команды для работы с файлом находятся в меню Все действия.
Наименование - полное наименование файла. Значок рядом с наименованием указывает тип файла.
+
Наименование - полное наименование файла.
Описание - подробное описание файла.
+
Создан - время и дата добавления файла в базу.
Автор - пользователь, который добавил файл.
Редактирует - пользователь, который занял файл для редактирования.
-
Дата - дата добавления версии файла в базу.
-
Отредактировал - пользователь, который добавил версию файла.
-
Папка - папка, в которой сохранен файл. С помощью кнопки можно выбрать другую папку.
+
с - дата и время начала редактирования файла.
+
Папка - папка, в которой сохранен файл. С помощью кнопки можно выбрать другую папку.
Код - код файла.
Текущая версия
Номер - номер версии файла.
-
Автор - пользователь, который добавил версию файла;
-
Создана - дата добавления версии файла в базу;
-
Данные от - дата изменения данных версии файла (местное время);
-
-
Размер (байт) - размер данных версии файла;
-
-
Расширение - формат файла, рядом значок, который также показывает формат;
-
-
Кодировка - кодировка файла, выбирается при сохранении версии. Можно выбрать кодировку По умолчанию.
-
ЭП
-
На вкладке размещаются сведения об электронной подписи файла
-
Зашифрован для
+
Автор - пользователь, который добавил версию файла.
+
Создана - дата добавления версии файла в базу.
+
Дата изменения - дата изменения данных версии файла (местное время).
-
На вкладке размещаются сведения о шифровании файла.
Из карточки файла можно перейти к просмотру и редактированию связанных с файлом сведений:
+
Размер (байт) - размер данных версии файла.
+
+
Расширение - формат файла, рядом значок, который также показывает формат.
Хранение версий
+
+
Включите флажок Хранить версии, для того чтобы при завершении редактирования создавалась новая версия файла. При снятом флажке обновляется файл в хранилище. Рекомендуется хранить версии, т.к. при порче файла во время редактирования можно восстановить файл из его версии. По умолчанию флажок включен.
При использовании ЭП и шифрования становятся доступными вкладки:
Автор подписи - пользователь, который подписал файл;
+
Дата подписи - дата подписания файла;
+
Комментарий - напишите дополнительные сведения о подписи;
+
Статус - истинность подписи.
С помощью соответствующих команд можно:
+
Подписать файл;
+
Открыть подпись - открыть окно с основными свойствами сертификата ЭП выделенного файла: кому и кем выдан, назначение и срок действия сертификата, на основе которого создана подпись;
+
Проверить, изменялся ли кем-либо подписанный файл, с помощью одного или всех сертификатов ЭП. Для этого выделите одну или несколько подписей. Если ЭП хранимого файла не соответствует какому-либо сертификату ЭП, то такая ЭП после проверки будет выделена в списке красным цветом, а в колонке Статус у такой ЭП будет указано Не верна;
+
Проверить все - проверить все подписи;
+
Сохранить ЭП в файл на диск;
+
Удалить у файла ЭП.
Зашифрован для
+
+
На вкладке размещаются сведения о шифровании файла:
+
+
В списке на этой вкладке отображаются сертификаты, с помощью которых зашифрован файл. Двойным щелчком мыши или с помощью соответствующей команды можно Открыть сертификат ЭП и просмотреть его основные свойства: кому и кем выдан, назначение и срок действия сертификата.
Из карточки файла можно перейти к просмотру и редактированию связанных с файлом сведений:
\ No newline at end of file
diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl
index 950178f82..920b1fe85 100644
--- a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl
@@ -125,6 +125,12 @@
КонецЕсли;
КонецЕсли;
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(
+ ЭтотОбъект, "ГруппаСведения");
+
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(
+ ЭтотОбъект, "ГруппаВерсия");
+
КонецПроцедуры
&НаКлиенте
@@ -1058,17 +1064,20 @@
ДоступныДействияСФайлом = Не Объект.ТекущаяВерсия.Пустая() И Не Объект.Ссылка.Пустая();
Элементы.ХранитьВерсии.Доступность = ДоступныДействияСФайлом И Не Объект.ПометкаУдаления;
- Элементы.ОтменитьРедактирование.Доступность = Не Объект.Редактирует.Пустая();
- Элементы.ОткрытьКаталогФайла.Доступность = ДоступныДействияСФайлом;
- Элементы.СохранитьКак.Доступность = ДоступныДействияСФайлом;
- Элементы.Редактировать.Доступность = НЕ Объект.ПодписанЭП;
- Элементы.ЗакончитьРедактирование.Доступность = Не Объект.Редактирует.Пустая();
+ Элементы.ФормаОтменитьРедактирование.Доступность = Не Объект.Редактирует.Пустая();
+ Элементы.ФормаОткрытьКаталогФайла.Доступность = ДоступныДействияСФайлом;
+ Элементы.ФормаСохранитьКак.Доступность = ДоступныДействияСФайлом;
+
+ Элементы.ФормаРедактировать.Доступность = НЕ Объект.ПодписанЭП;
+ Элементы.ФормаЗакончитьРедактирование.Доступность = Не Объект.Редактирует.Пустая();
+
Элементы.ПолноеНаименование.ТолькоПросмотр = НЕ Объект.Редактирует.Пустая();
- Элементы.Занять.Доступность = Объект.Редактирует.Пустая() И (ДоступныДействияСФайлом) И НЕ Объект.ПодписанЭП;
- Элементы.СохранитьИзменения.Доступность = Не Объект.Редактирует.Пустая();
- Элементы.ОбновитьИзФайлаНаДиске.Доступность = ДоступныДействияСФайлом И НЕ Объект.ПодписанЭП;
+ Элементы.ФормаЗанять.Доступность = Объект.Редактирует.Пустая() И (ДоступныДействияСФайлом) И НЕ Объект.ПодписанЭП;
+ Элементы.ФормаСохранитьИзменения.Доступность = Не Объект.Редактирует.Пустая();
+
+ Элементы.ФормаОбновитьИзФайлаНаДиске.Доступность = ДоступныДействияСФайлом И НЕ Объект.ПодписанЭП;
Элементы.ФормаПодписать.Доступность = (ДоступныДействияСФайлом И Объект.Редактирует.Пустая()) ИЛИ НЕ ДоступныДействияСФайлом;
Элементы.ФормаЗашифровать.Доступность = (ДоступныДействияСФайлом И Объект.Редактирует.Пустая() И НЕ Объект.Зашифрован) ИЛИ НЕ ДоступныДействияСФайлом;
@@ -1109,13 +1118,12 @@
КонецЦикла;
КонецЕсли;
- Если СертификатыШифрования.Количество() = 0 Тогда
- ТекстЗаголовка = НСтр("ru = 'Зашифрован для'");
- Иначе
- ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Зашифрован для (%1)'"),
- Формат(СертификатыШифрования.Количество(), "ЧГ="));
+ ТекстЗаголовка = НСтр("ru = 'Разрешено расшифровывать'");
+
+ Если СертификатыШифрования.Количество() <> 0 Тогда
+ ТекстЗаголовка =ТекстЗаголовка + " (" + Формат(СертификатыШифрования.Количество(), "ЧГ=") + ")";
КонецЕсли;
+
Элементы.ГруппаШифрование.Заголовок = ТекстЗаголовка;
КонецПроцедуры
@@ -1172,13 +1180,13 @@
КонецЕсли;
Если ТаблицаПодписей.Количество() = 0 Тогда
- ТекстЗаголовка = НСтр("ru = 'ЭП'");
+ ТекстЗаголовка = НСтр("ru = 'Электронные подписи'");
Иначе
ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'ЭП (%1)'"),
+ НСтр("ru = 'Электронные подписи (%1)'"),
Формат(ТаблицаПодписей.Количество(), "ЧГ="));
КонецЕсли;
- Элементы.ГруппаЭП.Заголовок = ТекстЗаголовка;
+ Элементы.ГруппаЭлектронныеПодписи.Заголовок = ТекстЗаголовка;
КонецПроцедуры
@@ -1190,31 +1198,31 @@
ПапкаРодитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Ссылка, "ВладелецФайла");
Если ЗначениеЗаполнено(ПапкаРодитель) Тогда
-
+
ПолныйПуть = "";
Пока ЗначениеЗаполнено(ПапкаРодитель) Цикл
Если Не ПустаяСтрока(ПолныйПуть) Тогда
ПолныйПуть = "\" + ПолныйПуть;
- КонецЕсли;
+ КонецЕсли;
ПолныйПуть = Строка(ПапкаРодитель) + ПолныйПуть;
ПапкаРодитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПапкаРодитель, "Родитель");
Если Не ЗначениеЗаполнено(ПапкаРодитель) Тогда
Прервать;
- КонецЕсли;
+ КонецЕсли;
КонецЦикла;
-
+
Элементы.Владелец.Подсказка = ПолныйПуть;
- КонецЕсли;
-
- КонецЕсли;
+ КонецЕсли;
+
+ КонецЕсли;
-КонецПроцедуры
+КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФайлВыполнить()
diff --git a/SSL/src/Catalogs/Файлы/Help/ru.html b/SSL/src/Catalogs/Файлы/Help/ru.html
index 5a59c95dd..cc3b485d4 100644
--- a/SSL/src/Catalogs/Файлы/Help/ru.html
+++ b/SSL/src/Catalogs/Файлы/Help/ru.html
@@ -1,54 +1,60 @@
-
+
-
Программа предоставляет возможность хранения файлов произвольного формата. В отличие от хранения файлов на дисках или в корпоративных программах документооборота, файлы связываются с данными программы. Так удобно хранить файлы, непосредственно связанные с данными. Объектами-хранителями файлов в программе могут быть различные списки, документы, бизнес-процессы и т.д. Работа с файлами, прикрепленными к объекту, осуществляется в списке Присоединенные файлы. Список можно открыть соответствующей командой на панели навигации документа или другого объекта программы. Существует также возможность хранить файлы без привязки к конкретному объекту.
-
Для работы с реквизитами файла (автор, название, описание и т.д.) используется карточка ("Открыть карточку"), а для работы с самим файлом - соответствующее приложение, установленное на компьютере. При редактировании файла его предыдущая версия автоматически сохраняется в информационной базе.
-
Создание файлов
-
-
Для создания нового файла
-
Откройте список файлов;
-
Выберите нужную папку;
-
Нажмите клавишу Insert или используйте команду Создать;
-
Выберите способ создания:
-
из шаблона
-
из файла на диске
-
Со сканера
-
Вариант создания файла Со сканера становится доступным, если к компьютеру подключен сканер и на компьютере подключена компонента для работы со сканером.
-
Из шаблона
-
Выберите соответствующее положение переключателя.
-
Выделите шаблон файла в списке, затем нажмите кнопку Выбрать.
-
Программой будет автоматически создана и открыта карточка файла.
-
Из имеющегося файла на диске
-
Для того чтобы прикрепить к объекту или поместить в папку уже имеющийся на компьютере файл, укажите путь к файлу на диске, нажмите кнопку Открыть.
-
После этого программа сохранит файл и откроет для заполнения Карточку файла.
-
Получение файла со сканера
-
Важно! Для того чтобы был доступен вариант получения файла путем сканирования изображения, необходимо подключить сканер к компьютеру (более подробно см. документацию к сканеру, а также настроить сканирование).Если все условия соблюдены и настройки выполнены, можно получить файл со сканера. Для этого необходимо выбрать соответствующий вариант создания файла и следовать инструкциям Помощника сканирования.
-
После того как документ отсканирован, выполните команду Принять, после этого файлу автоматически присваивается код и создается карточка файла, которая выводится на экран. Нажмите записать и закрыть. чтобы файл был сохранен.
-
Можно выполнить команду сканировать еще, если необходимо отсканировать сразу несколько документов. Также можно Пересканировать документ, если качество сканирования не устраивает.
-
Для того чтобы изменить параметры сканирования, выполните команду Настройка, установите новые параметры и нажмите кнопку ОК.
+
Программа предоставляет возможность хранения файлов произвольного формата. В отличие от хранения файлов на дисках или в корпоративных программах документооборота, файлы связываются с данными программы. Так удобно хранить файлы, непосредственно связанные с данными. Объектами-хранителями файлов в программе могут быть различные списки, документы, бизнес-процессы и т.д. Работа с файлами, прикрепленными к объекту, осуществляется в списке Присоединенные файлы. Список можно открыть соответствующей командой на панели навигации документа или другого объекта программы. Существует также возможность хранить файлы без привязки к конкретному объекту в списке файлов.
+
Для работы с реквизитами файла (автор, название, описание и т.д.) используется карточка файла, а для работы с самим файлом - соответствующее приложение, установленное на компьютере. При редактировании файла его предыдущая версия автоматически сохраняется в информационной базе.
Работа с файлами
-
Для работы с файлами используйте команды, расположенные на командной панели или в подменю "Все действия" в списке файлов или карточке файла:
+
Для работы с файлами используйте команды, расположенные на командной панели или в меню Все действия в списке файлов, в контекстном меню по правой кнопке мыши или карточке файла:
Команда
-
Описание
Редактировать (F4)
-
Помечает файл как занятый для редактирования и открывает его внешним приложением.
Закончить редактирование
-
Обновляет файл в хранилище и снимает с него пометку занятости для редактирования
Сохранить версию
+
Описание
Создать (Insert)
+
Добавляет новый файл в программу. Возможные способы создания файла: из шаблона, из файла на диске, со сканера.
Открыть (Просмотреть)
+
Открывает файл внешним приложением для просмотра или редактирования, в зависимости от того, помечен ли файл как занятый текущим пользователем для редактирования.
Редактировать (F4)
+
Помечает файл как занятый для редактирования и открывает его внешним приложением.
Клавиша Enter (двойной щелчок мыши)
+
По умолчанию необходимо выбрать, как открыть файл - для просмотра или для редактирования. Действие настраивается в персональных настройках программы на закладке Работа с файлами.
Закончить редактирование
+
Обновляет файл в хранилище и снимает с него пометку занятости для редактирования.
Сохранить изменения
Сохраняет версию редактируемого файла в хранилище, но оставляет его занятым текущим пользователем для редактирования
Занять
Помечает файл в хранилище как занятый текущим пользователем для редактирования, но не открывает внешнее приложение. Приступить непосредственно к редактированию можно будет позже.
Отменить редактирование
-
Снимает с файла пометку занятости для редактирования
Открыть
-
Открывает файл внешним приложением для просмотра или редактирования, в зависимости от того, помечен ли файл как занятый текущим пользователем для редактирования.
Сохранить как
-
Сохраняет файл файл в указанный каталог на жестком или сетевом диске
Обновить из файла на диске
-
Обновляет файл в информационной базе выбранным файлом на жестком диске.
Подписать
-
Открывает диалог для выбора сертификата и установки подписи.
Добавить ЭП из файла
-
Добавляет выбранный файл подписи к подписям файла
Сохранить вместе с ЭП
-
Сохраняет файл в указанный каталог на жестком или сетевом диске, а также сохраняет подписи файла - все или выбранные, в зависимости от настройки "Действия при сохранении с ЭП"
Открыть подпись
-
Открывает форму для просмотра информации о подписи: кому выдан сертификат, кто установил подпись, дату установки подписи, комментарий к подписи
Проверить
-
Проверяет истинность выделенных подписей
Проверить все
-
Проверяет истинность всех подписей
Сохранить
-
Сохраняет выбранную подпись в файл
Удалить
-
Удаляет выделенные подписи
-
Примечание: Если файл зашифрован, полнотекстовый поиск по его содержимому не работает.
Снимает с файла пометку занятости для редактирования.
Изменить
+
Открыть карточку файла, в которой хранятся сведения о файле.
Сохранить как
+
Сохраняет файл в указанный каталог на жестком или сетевом диске.
Открыть каталог файла
+
Открыть папку в Проводнике Windows, в которой находится файл.
Обновить из файла на диске
+
Обновляет файл в информационной базе выбранным файлом на жестком диске. При этом программа проверяет даты файлов, при попытке заменить файл старой версией выводится предупреждение, действие не выполняется.
Подписать
+
Создает ЭП для файла. Перед созданием ЭП программа предлагает выбрать сертификат ЭП из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком . Подписанный файл можно скопировать, при этом программа задаст вопрос - копировать файл с подписью или без.
Добавить ЭП из файла
+
Добавляет выбранный файл подписи к подписям файла. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
Сохранить вместе с ЭП
+
Сохраняет файл в указанный каталог на жестком или сетевом диске, а также сохраняет подписи файла - все или выбранные, в зависимости от настройки Действия при сохранении с ЭП. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
Зашифровать
+
Шифрование файла. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Выберите нужные из списка с помощью флажков. Зашифрованный файл в списках отображается со значком . В отличие от подписания пароль к закрытому ключу в процессе шифрования вводить не нужно. Зашифрованный файл доступен для редактирования. Шифруются все версии файла. Для зашифрованных файлов не работает полнотекстовый поиск. Зашифрованный файл можно скопировать. При этом новый, скопированный файл останется зашифрованным. Зашифрованный файл нельзя подписать. Подписанный файл зашифровать можно, при этом перед проверкой ЭП у зашифрованного файла программа запросит пароль для предварительной расшифровки файла.
Расшифровать
+
По команде происходит расшифровка файла. Для расшифровки нужно ввести пароль к закрытому ключу.
Примечание: Если файл зашифрован, полнотекстовый поиск по его содержимому не работает.
Для того чтобы прикрепить к объекту или поместить в папку уже имеющийся на компьютере файл, укажите путь к файлу на диске, нажмите кнопку Открыть.
+
+
После этого программа сохранит файл, автоматически создаст и откроет Карточку файла.
+
Из шаблона
+
+
Выделите шаблон файла в списке выбора, затем нажмите кнопку Выбрать.
+
+
Программой будет автоматически создана и открыта Карточка файла.
+
Со сканера
+
+
Вариант создания файла Со сканера становится доступным, если к компьютеру подключен сканер (более подробно см. документацию к сканеру) и на компьютере подключена компонента для работы со сканером. Также необходимо настроить сканирование.
+
+
Если все условия соблюдены и настройки выполнены, можно получить файл со сканера.
После того как документ отсканирован, выполните команду Принять, после этого файлу автоматически присваивается код и создается карточка файла, которая выводится на экран. В поле Наименование также автоматически проставляется код. Отредактируйте нужные поля, нажмите Записать и закрыть, для того чтобы сохранить карточку файла.
Форма мастера табличных вопросов предназначена для редактирования табличных вопросов.
-
-
На первой странице мастера необходимо выбрать тип табличного вопроса. Табличные вопросы могут быть четырех типов:
-
-
Составной табличный вопрос
-
Табличный вопрос с предопределенными ответами в колонках
-
Табличный вопрос с предопределенными ответами в строках
-
Табличный вопрос с предопределенными ответами в строках и колонках
-
Составной табличный вопрос:
-
Для составного табличного вопроса задается состав вопросов. Заданные вопросы будут отображаться в качестве заголовков колонок таблицы. Респондент, отвечающий на вопросы анкеты, будет иметь возможность добавить произвольное количество строкв таблицу при ответе.
-
-
Табличный вопрос с предопределенными ответами в строках:
-
Для данного типа табличного вопроса создается состав вопросов. Заданные вопросы будут отображаться в качестве заголовков колонок таблицы. Для первого вопроса, составитель анкеты должен будет задать предопределенные ответы. Данные предопределенные ответы будут отображаться в строках первой колонки таблицы. При ответе, респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству предопределенных ответов.
-
-
Табличный вопрос с предопределенными ответами в колонках:
-
Для данного типа табличного вопроса создается состав вопросов. Заданные вопросы будут в строках первой колонки таблицы. Для первого вопроса, составитель анкеты должен будет задать предопределенные ответы. Данные предопределенные ответы будут отображаться в качестве заголовков колонок таблицы. При ответе, респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству вопросов, уменьшенному на один.
-
-
Табличный вопрос с предопределенными ответами в строках и колонках:
-
Для данного типа табличного вопроса задается три вопроса. Для первых двух вопросов составитель анкеты должен будет задать предопределенные ответы. Предопределенные ответы на первый вопрос будут расположены в строках первой колонки. Предопределенные ответы на второй вопрос будут отражать в качестве заголовков колонок. Ответы на третий вопрос пользователь и должен будет указывать в ячейках таблицы. При ответе, респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству предопределенных ответов на первый вопрос.
\ No newline at end of file
+
+
Мастер предназначен для ввода и редактирования табличных вопросов анкеты.
+
Открывается по команде Добавить - табличный вопрос из шаблона анкеты.
+
Выбор типа табличного вопроса
+
+
На первой странице мастера напишите Формулировку вопроса, например, "Укажите близких родственников".
+
+
С помощью переключателя выберите тип табличного вопроса. Табличные вопросы могут быть четырех типов:
В правой части окна располагается рисунок с примером выбранного типа табличного вопроса.
+
+
Нажмите кнопку Далее для подбора вопросов.
+
+
Для работы с вопросами используйте команды меню Еще (Все действия) или контекстное меню по правой кнопке мыши.
+
+
Если заранее подготовить вопросы типа Выбор одного или нескольких вариантов ответа из предложенных, то можно будет использовать предопределенные ответы в табличных вопросах, кроме этого, можно быстро добавить варианты ответов.
Для данного типа табличного вопроса на второй странице помощника задается состав вопросов.
+
+
Нажмите Добавить, выберите как минимум два вопроса из списка.
+
Заданные вопросы будут отображаться в качестве заголовков колонок таблицы в анкете респондента.
+
Число строк в таблице фиксировано, при ответе респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству предопределенных ответов.
+
+
Для первого вопроса на третьей странице помощника задайте предопределенные ответы, которые будут отображаться в строках первой колонки таблицы. Нажмите Добавить. Для добавления воспользуйтесь одним из способов:
+
+
Напишите варианты ответов для первого вопроса вручную.
+
+
Если был выбран вопрос типа Выбор одного или нескольких вариантов ответа из предложенных, то для того чтобы быстро перечислить возможные варианты ответов для первого введенного вопроса, можно воспользоваться кнопкой Заполнить варианты ответов.
Этот тип табличного вопроса является вариантом предыдущего.
+
+
Для данного типа табличного вопроса задается состав вопросов. Заданные вопросы будут выведены в строках первой колонки таблицы. С помощью кнопки Добавить введите как минимум два вопроса.
+
+
+
На третьей странице помощника составитель анкеты указывает предопределенные ответы на первый вопрос для колонок таблицы. Для этого нажмите Добавить. Для добавления воспользуйтесь одним из способов:
+
+
Напишите варианты ответов для первого вопроса вручную.
+
Если был выбран вопрос типа Выбор одного или нескольких вариантов ответа из предложенных, то для того чтобы быстро перечислить все варианты, выбрав их из первого введенного вопроса, можно воспользоваться кнопкой Заполнить варианты ответов.
Данные предопределенные ответы будут отображаться в качестве заголовков колонок таблицы. При ответе респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству вопросов, уменьшенному на один (ответы на первый вопрос - это заголовки колонок, при этом первый вопрос в таблице не отображается).
Для данного типа табличного вопроса задается три вопроса. Нажмите Добавить, выберите вопросы из списка.
+
+
На третьей странице помощника необходимо задать предопределенные ответы на первые два вопроса.
+
+
Предопределенные ответы на первый вопрос будут отражаться в качестве заголовков строк таблицы.
+
+
Предопределенные ответы на второй вопрос будут отражаться в качестве заголовков колонок.
+
Ответы на третий вопрос респондент должен будет указывать в ячейках таблицы.
+
+
Нажмите кнопку Добавить. Для добавления предопределенных вариантов ответов на первые два вопроса воспользуйтесь одним из способов:
+
+
Напишите варианты ответов вручную.
+
Если были заранее созданы вопросы типа Выбор одного или нескольких вариантов ответа из предложенных, то для того чтобы быстро перечислить все ответы, можно воспользоваться кнопкой Заполнить варианты ответов.
+
+
При ответе респондент не сможет добавить или удалить строки из таблицы. Количество строк таблицы будет равно количеству предопределенных ответов на первый вопрос.
На последней странице помощника для просмотра выводится таблица в том виде, в каком она будет выглядеть в анкете респондента. Если необходимо поменять состав вопросов или их расположение в таблице, можно вернуться на предыдущие шаги с помощью кнопки Назад.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl
index 86474cbf5..487382031 100644
--- a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl
+++ b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl
@@ -20,13 +20,20 @@
Для каждого ЭлементМетаданных Из Метаданные.Перечисления.ТипыТабличныхВопросов.ЗначенияПеречисления Цикл
Элементы.ТипТабличногоВопроса.СписокВыбора.Добавить(Перечисления.ТипыТабличныхВопросов[ЭлементМетаданных.Имя],ЭлементМетаданных.Синоним);
КонецЦикла;
-
- //Установим первую страницу
- Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса;
-
+
//Примем параметры формы владельца
ОбработатьПараметрыФормыВладельца();
+ //Установим страницу
+ Если Параметры.ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПустаяСсылка() Тогда
+ Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаТипТабличногоВопроса;
+ Иначе
+ СформироватьРезультирующуюТаблицу();
+ Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаРезультирующаяТаблица;
+ КонецЕсли;
+
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект, "ГруппаОсновныеСтраницы");
+
КонецПроцедуры
#КонецОбласти
@@ -298,6 +305,8 @@
КонецЕсли;
КонецЕсли;
+ Элементы.ГруппаОсновныеСтраницы.Заголовок = ИнформацияШапка;
+
КонецПроцедуры
// Управляет доступностью реквизитов формы
@@ -445,11 +454,11 @@
СтандартнаяОбработка = ЛОЖЬ;
- МассивОтбора = Новый Массив;
- МассивОтбора.Добавить(АнкетированиеКлиент.СоздатьСтруктуруПараметраОтбора(Тип("ЭлементОтбораКомпоновкиДанных"),"Владелец",ВидСравненияКомпоновкиДанных.Равно,ЭтотОбъект[Элемент.СвязьПоТипу.ПутьКДанным]));
- МассивОтбора.Добавить(АнкетированиеКлиент.СоздатьСтруктуруПараметраОтбора(Тип("ЭлементОтбораКомпоновкиДанных"),"ПометкаУдаления",ВидСравненияКомпоновкиДанных.Равно,ЛОЖЬ));
+ ПараметрыОтбора = Новый Структура;
+ ПараметрыОтбора.Вставить("Владелец", ЭтотОбъект[Элемент.СвязьПоТипу.ПутьКДанным]);
+ ПараметрыОтбора.Вставить("ПометкаУдаления", Ложь);
- ОткрытьФорму("Справочник.ВариантыОтветовАнкет.Форма.ФормаВыбора",Новый Структура("МассивОтбора",МассивОтбора),Элемент);
+ ОткрытьФорму("Справочник.ВариантыОтветовАнкет.Форма.ФормаВыбора",Новый Структура("Отбор",ПараметрыОтбора),Элемент);
КонецЕсли;
@@ -610,19 +619,66 @@
Элементы.ОтветыКолонкиОтветыВСтрокахИКолонках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляКолонок);
Элементы.ОтветыСтрокиОтветыВСтрокахИКолонках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляСтрок);
+ УстановитьСвязиПараметровВыбораОтветовИВопросов();
ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках") Тогда
Элементы.ОтветыСтрокиОтветыВСтроках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляСтрок);
+ УстановитьСвязиПараметровВыбораОтветовИВопросов();
ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках") Тогда
Элементы.ОтветыКолонкиОтветыВКолонках.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭлементарныйВопрос",ВопросДляКолонок);
+ УстановитьСвязиПараметровВыбораОтветовИВопросов();
КонецЕсли;
+
КонецПроцедуры
+&НаСервере
+Процедура УстановитьСвязиПараметровВыбораОтветовИВопросов()
+
+ Если ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках") Тогда
+
+ УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыКолонкиОтветыВСтрокахИКолонкахОтвет", "ВопросДляКолонок");
+ УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыСтрокиОтветыВСтрокахИКолонкахОтвет", "ВопросДляСтрок");
+
+ ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках") Тогда
+
+ УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыСтрокиОтветыВСтрокахОтвет", "ВопросДляСтрок");
+
+ ИначеЕсли ТипТабличногоВопроса = ПредопределенноеЗначение("Перечисление.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках") Тогда
+
+ УстановитьСвязьПараметраВыбораОтветаИВопроса("ОтветыКолонкиОтветыВКолонкахОтвет", "ВопросДляКолонок");
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура УстановитьСвязьПараметраВыбораОтветаИВопроса(ИмяПоляОтвета, ИмяРеквизитаВопрос)
+
+ НайденныеВопросы = Вопросы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос", ЭтотОбъект[ИмяРеквизитаВопрос]));
+ Если НайденныеВопросы.Количество() > 0 Тогда
+ НайденныйВопрос = НайденныеВопросы[0];
+ Если НайденныйВопрос.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.ОдинВариантИз
+ ИЛИ НайденныйВопрос.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.НесколькоВариантовИз Тогда
+ МассивПараметровВыбора = Новый Массив;
+ СвязьПараметраВыбора = Новый СвязьПараметраВыбора("Отбор.Владелец", ИмяРеквизитаВопрос, РежимИзмененияСвязанногоЗначения.Очищать);
+ МассивПараметровВыбора.Добавить(СвязьПараметраВыбора);
+ СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
+ Элементы[ИмяПоляОтвета].СвязиПараметровВыбора = СвязиПараметровВыбора;
+ Иначе
+ Элементы[ИмяПоляОтвета].СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив);
+ КонецЕсли;
+ Иначе
+ Элементы[ИмяПоляОтвета].СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив);
+ КонецЕсли;
+
+КонецПроцедуры
+
+
// Вызывается при изменении элементов форма, связанных с таблицей ответов
// Параметры
// Элемент - ТаблицаФормы - ЭлементКоторыйВызвал изменение
diff --git a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаПростыхВопросов/Form.form b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаПростыхВопросов/Form.form
index f9db9666e..eded30927 100644
--- a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаПростыхВопросов/Form.form
+++ b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаПростыхВопросов/Form.form
@@ -4,20 +4,114 @@
ruВопрос шаблона анкеты
-
- ЭлементарныйВопрос
- 3
+
+ ГруппаЭлементарныйОбязательный
+ 5
+
+ ЭлементарныйВопрос
+ 3
+ true
+ true
+
+ true
+
+
+ ЭлементарныйВопрос
+
+
+ ЭлементарныйВопросExtendedTooltip
+ 15
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЭлементарныйВопросКонтекстноеМеню
+ 4
+ true
+
+ InputField
+ true
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ ЭлементарныйВопросНачалоВыбора
+
+
+ ChoiceProcessing
+ ЭлементарныйВопросОбработкаВыбора
+
+ 37
+ true
+ true
+ false
+ true
+ Items
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ Обязательный
+ 6
+ true
+ true
+
+ true
+
+
+ Обязательный
+
+ Right
+
+ ОбязательныйExtendedTooltip
+ 18
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОбязательныйКонтекстноеМеню
+ 7
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+ truetruetrue
-
- ЭлементарныйВопрос
-
+
+ ru
+ Группа элементарный обязательный
+
+
+ ru
+ Группа элементарный обязательный
+
+ false
- ЭлементарныйВопросExtendedTooltip
- 15
+ ГруппаЭлементарныйОбязательныйРасширеннаяПодсказка
+ 17Labeltruetrue
@@ -25,35 +119,13 @@
Left
-
- ЭлементарныйВопросКонтекстноеМеню
- 4
- true
-
- InputField
- true
- Enter
- true
- Left
- true
-
-
- StartChoice
- ЭлементарныйВопросНачалоВыбора
-
-
- ChoiceProcessing
- ЭлементарныйВопросОбработкаВыбора
-
- true
- true
- true
- Items
- true
- true
- true
- true
- Normal
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
@@ -99,105 +171,21 @@
Normal
-
- ГруппаВысотаОбязательный
- 5
-
- Обязательный
- 6
- true
- true
-
- true
-
-
- Обязательный
-
- Right
-
- ОбязательныйExtendedTooltip
- 18
- Label
- true
- true
-
- Left
-
-
-
- ОбязательныйКонтекстноеМеню
- 7
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
-
-
- ВысотаЭлементаФормулировкиВопроса
- 13
- true
- true
-
- true
-
-
- ВысотаЭлементаФормулировкиВопроса
-
-
- ru
- О - высота устанавливается автоматически, значение отличное от нуля задает высоту элемента в явном виде
-
-
- ВысотаЭлементаФормулировкиВопросаExtendedTooltip
- 19
- Label
- true
- true
-
- Left
-
-
-
- ВысотаЭлементаФормулировкиВопросаКонтекстноеМеню
- 14
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
- Normal
-
-
+
+ Заметки
+ 24truetruetrue
-
- ru
- Группа высота обязательный
-
-
- ru
- Группа высота обязательный
-
- false
+
+ Заметки
+
+ Left
- ГруппаВысотаОбязательныйExtendedTooltip
- 17
+ ЗаметкиРасширеннаяПодсказка
+ 26Labeltruetrue
@@ -205,13 +193,31 @@
Left
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
+
+ ЗаметкиКонтекстноеМеню
+ 25
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ ЗаметкиНачалоВыбора
+
+ true
+ true
+ false
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
@@ -455,18 +461,15 @@
- ВысотаЭлементаФормулировкиВопроса
+ Заметкиru
- Высота элемента формулировки вопроса
+ Заметки
- 7
+ 6
- Number
-
- 2
- true
-
+ String
+ true
@@ -474,6 +477,7 @@
true
+ trueПеренестиВШаблон
diff --git a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаПростыхВопросов/Help/ru.html b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаПростыхВопросов/Help/ru.html
new file mode 100644
index 000000000..7d15507a4
--- /dev/null
+++ b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаПростыхВопросов/Help/ru.html
@@ -0,0 +1,10 @@
+
+
Предназначена для ввода простого вопроса в шаблон анкеты.
+
Открывается по команде Добавить - простой вопрос из шаблона анкеты.
+
Ввод простого вопроса в шаблон анкеты
+
В поле Элементарный вопрос выберите вопрос из ранее подготовленного списка вопросов для анкетирования, после выбора вопроса в этом поле отражается его наименование. Можно создать вопрос в списке выбора, если нужного вопроса не нашлось.
+
Поле Формулировка после выборе вопроса для анкетирования автоматически заполняется текстом формулировки вопроса. Здесь же можно изменить формулировку вопроса, которая будет видна респондентам в анкетах этого шаблона.
+
Если флажок Обязательный установлен, то респондент не сможет завершить анкетирование, не ответив на этот вопрос.
+
Напишите Заметки по поводу вопроса - уточняющую информацию, которая будет выводиться в нижней части шаблона анкеты.
Подготовка анкет осуществляется в два этапа. Вначале необходимо подготовить вопросы, из которых будет состоять предполагаемая анкета. Затем, используя подготовленные вопросы, нужно составить шаблон анкеты. В дальнейшем по этому шаблону программа автоматически создает анкету в тот момент, когда респондент начинает ее заполнять.
+
Укажите Наименование шаблона. Поле Наименование отображается в списке шаблонов.
+
Шаблон анкеты состоит из двух вкладок - Заголовки и Вопросы.
+
Заголовки
+
Укажите Заголовок, который будет отображаться в анкете при ее заполнении респондентом.
+
+
Анкета может состоять из нескольких разделов, при этом два раздела, Вступление и Заключение, являются обязательными и присутствуют в любой анкете.
+
+
Напишите Вступление. В этом разделе можно поприветствовать респондента, объяснить ему особенности заполнения анкеты. Текст будет показан респонденту в начале анкетирования.
+
+
Напишите Заключение. В этом разделе можно поблагодарить респондента за заполненную анкету. Текст будет показан респонденту при завершении анкетирования.
Вопросы
+
В любой анкете содержится как минимум один раздел с вопросами.
+
Сформируйте список вопросов анкеты. Список вопросов состоит из колонок:
+
Вопрос - выводится наименование разделов и вопросов анкеты;
+
Обязательный - выводится Да, если у вопроса установлен флажок Обязательный, Нет - если не установлен;
+
Заметки - выводится , если введены дополнительные сведения о вопросе. Для того чтобы просмотреть заметки в нижней части списка, выделите вопрос.
По соответствующей кнопке можно Добавить новый элемент в анкету (также можно воспользоваться контекстным меню по правой кнопке мыши). Выберите Тип элемента:
+
Раздел
+
Задайте Имя раздела. В поле Заметки напишите уточняющую информацию о разделе, которая будет отображаться в нижней части шаблона или анкеты. Необходимо добавить хотя бы один раздел. Для того чтобы добавить раздел, также можно нажать Ctrl+F9.
Если анкета состоит из большого количества вопросов, то для удобства работы респондента с анкетой рекомендуется сгруппировать вопросы по нескольким разделам. Для комфортной работы респондента с анкетой рекомендуется включать в раздел не более 10-15 вопросов.
+
+
С помощью кнопок Переместить вверх и Переместить вниз можно установить порядок следования вопросов в разделе и самих разделов в анкете. Порядком следования можно управлять при помощи перетаскивания мышью разделов и вопросов. При помощи перетаскивания мышью можно переносить вопросы из раздела в раздел.
+
+
При удалении раздела вместе с ним удаляются вопросы, входящие в него.
Просмотр анкеты
+
+
При выборе в разделах шаблона анкеты табличного вопроса можно увидеть его внешний вид в нижней части шаблона. Для того чтобы получить представление о том, каким образом будет выглядеть вся анкета при заполнении ее респондентом, можно воспользоваться командой Форма заполнения.
Сохранение шаблона анкеты
+
Если работу над шаблоном планируется продолжить, нажмите Записать и закрыть.
Запрет редактирования шаблона
+
После того как список вопросов в шаблоне анкеты окончательно сформирован, можно запретить возможность его редактирования в дальнейшем. Для этого нажмите Закончить редактирование.
+
Если по шаблону анкеты программой была создана хотя бы одна анкета, то шаблон анкеты автоматически становится недоступным для редактирования. Для корректного анализа ответов на анкеты в отчетах необходимо, чтобы шаблон анкеты остался неизменным, так как анализ данных производится для всех анкет, в которых указано, что они заполнены по данному шаблону.
Нажмите Добавить - Простой вопрос, для того чтобы подобрать в шаблон вопрос из списка Вопросы для анкетирования. Также можно использовать сочетание клавиш Shift+F6.
+
Заполните следующие поля, для того чтобы создать Вопрос шаблона анкеты:
+
В поле Элементарный вопрос выберите вопрос из ранее подготовленного списка вопросов для анкетирования. В этом поле отражается наименование вопроса. Можно создать вопрос в списке выбора, если нужного вопроса не нашлось.
+
Поле Формулировка автоматически заполняется текстом формулировки вопроса после выбора вопроса для анкетирования. Здесь же можно изменить формулировку вопроса, которая будет видна респондентам в анкетах этого шаблона.
+
Обязательный - если флажок установлен, то респондент не сможет завершить анкетирование, не ответив на этот вопрос.
+
В поле Заметки напишите по поводу вопроса уточняющую информацию, которая будет выводиться в нижней части анкеты.
В таблицах удобно вводить однотипные структурированные данные. Например, сведения о составе семьи удобно поместить в таблицу. В столбцах будут вопросы о членах семьи, в строках будут перечислены по порядку члены семьи и их характеристики будут размещены в порядке вопросов таблицы.
+
Команда Добавить - Табличный вопрос открывает Помощник табличных вопросов. Следуйте инструкциям помощника, для того чтобы ввести табличный вопрос.
Существуют ситуации, когда респонденту нет смысла задавать вопрос, если не выполняется какое-либо условие. Например, нет смысла задавать вопросы респонденту о том, как часто он пользуется автосервисом и автомобильной мойкой, если у респондента нет автомобиля.
+
В таком случае при составлении шаблона анкеты можно создать вопрос с условием, например, о наличии у респондента автомобиля и дополнительно перечислить подчиненные вопросы, например, об автосервисе и автомойке.
+
При положительном ответе на вопрос с условием респонденту будет также предложено ответить и на подчиненные вопросы. В противном случае подчиненные вопросы останутся недоступными.
+
Для создания вопросов с условием можно воспользоваться командой Добавить - Вопрос с условием, также можно воспользоваться сочетанием клавиш Shift+F8. Вопросами с условием могут быть только вопросы типа Булево (Да/Нет).
+
К каждому вопросу с условием необходимо добавить один или несколько подчиненных вопросов с помощью команд Добавить - Простой вопрос, Добавить - Табличный вопрос. При этом подчиненные вопросы выводятся под своим родительским условным вопросом.
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ШаблоныАнкет/ШаблоныАнкет.mdo b/SSL/src/Catalogs/ШаблоныАнкет/ШаблоныАнкет.mdo
index 76fc7a13a..ab703a082 100644
--- a/SSL/src/Catalogs/ШаблоныАнкет/ШаблоныАнкет.mdo
+++ b/SSL/src/Catalogs/ШаблоныАнкет/ШаблоныАнкет.mdo
@@ -107,6 +107,11 @@
Use
+
+
+ ru
+
+ ManagedUse
@@ -215,6 +220,11 @@
ruФорма элемента
+
+
+ ru
+
+ PersonalComputerMobileDevice
@@ -247,6 +257,11 @@
ruФорма простых вопросов
+
+
+ ru
+
+ PersonalComputerMobileDevice
@@ -256,6 +271,11 @@
ruФорма выбора
+
+
+ ru
+
+ PersonalComputerMobileDevice
diff --git a/SSL/src/Catalogs/ШаблоныЗаданийОчереди/ManagerModule.bsl b/SSL/src/Catalogs/ШаблоныЗаданийОчереди/ManagerModule.bsl
new file mode 100644
index 000000000..65ca5a2a3
--- /dev/null
+++ b/SSL/src/Catalogs/ШаблоныЗаданийОчереди/ManagerModule.bsl
@@ -0,0 +1,17 @@
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+
+#Область ПрограммныйИнтерфейс
+
+////////////////////////////////////////////////////////////////////////////////
+// Загрузка данных из файла
+
+// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла"
+// Пакетная загрузка данных в этот справочник небезопасна
+//
+Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
+ Возврат Ложь;
+КонецФункции
+
+#КонецОбласти
+
+#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.mdo b/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.mdo
index acc963cec..1e0242aef 100644
--- a/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.mdo
+++ b/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.mdo
@@ -94,7 +94,7 @@
- Use
+ DontUseManagedUse
@@ -115,7 +115,6 @@
ruАвтор
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -180,7 +179,6 @@
ruДата создания
- Дата добавления файла в базуDate
@@ -223,7 +221,6 @@
ruИзменил
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -247,7 +244,6 @@
ruИндекс картинки
- Индекс иконки, соответствующей расширению файла, для показа в спискеNumber
@@ -271,7 +267,6 @@
ruОписание
- Описание файлаString
@@ -312,7 +307,6 @@
ruПуть к файлу
- Дополнительный путь к файлу на диске (в случае если тип хранения файла - на диске)String
@@ -333,7 +327,6 @@
ruРазмер
- Размер файлаNumber
@@ -424,7 +417,6 @@
ruТекст
- Текст, извлеченный из файла - для полнотекстового поискаValueStorage
@@ -444,7 +436,6 @@
ruТип хранения файла
- Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на дискеEnumRef.ТипыХраненияФайлов
@@ -464,7 +455,6 @@
ruТом
- Ссылка на том (в случае если тип хранения файла - на диске)CatalogRef.ТомаХраненияФайлов
@@ -484,7 +474,6 @@
ruФайл хранилище
- Служебное поле для обмена файлами в РИБValueStorage
@@ -621,7 +610,6 @@
ruОтпечаток
- Отпечаток сертификатаString
@@ -677,7 +665,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
@@ -758,7 +745,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
diff --git a/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.mdo b/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.mdo
index e8dd616dd..279a4f6dc 100644
--- a/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.mdo
+++ b/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.mdo
@@ -94,7 +94,7 @@
- Use
+ DontUseManagedUse
@@ -115,7 +115,6 @@
ruАвтор
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -180,7 +179,6 @@
ruДата создания
- Дата добавления файла в базуDate
@@ -223,7 +221,6 @@
ruИзменил
- Автор - пользователь, добавивший файлCatalogRef.Пользователи
@@ -247,7 +244,6 @@
ruИндекс картинки
- Индекс иконки, соответствующей расширению файла, для показа в спискеNumber
@@ -271,7 +267,6 @@
ruОписание
- Описание файлаString
@@ -311,7 +306,6 @@
ruПуть к файлу
- Дополнительный путь к файлу на диске (в случае если тип хранения файла - на диске)String
@@ -332,7 +326,6 @@
ruРазмер
- Размер файлаNumber
@@ -423,7 +416,6 @@
ruТекст
- Текст, извлеченный из файла - для полнотекстового поискаValueStorage
@@ -443,7 +435,6 @@
ruТип хранения файла
- Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на дискеEnumRef.ТипыХраненияФайлов
@@ -463,7 +454,6 @@
ruТом
- Ссылка на том (в случае если тип хранения файла - на диске)CatalogRef.ТомаХраненияФайлов
@@ -483,7 +473,6 @@
ruФайл хранилище
- Служебное поле для обмена файлами в РИБValueStorage
@@ -620,7 +609,6 @@
ruОтпечаток
- Отпечаток сертификатаString
@@ -676,7 +664,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
@@ -757,7 +744,6 @@
ruСертификат
- Двоичные данные сертификатаValueStorage
diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаВыбора/Form.form b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаВыбора/Form.form
index cb50e8a06..77bf4b01c 100644
--- a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаВыбора/Form.form
+++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаВыбора/Form.form
@@ -48,8 +48,10 @@
Lefttrue
+ 10truetrue
+ false
@@ -86,6 +88,7 @@
Lefttrue
+ 30truetrue
diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаВыбора/Help/ru.html b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаВыбора/Help/ru.html
new file mode 100644
index 000000000..6ffe3031b
--- /dev/null
+++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаВыбора/Help/ru.html
@@ -0,0 +1,17 @@
+
+
Одним из важных этапов подготовки анкет является составление вопросов.
+
В общем списке содержатся вопросы, которые могут быть включены в любую анкету. Эти вопросы называются элементарными, т.к. могут использоваться в качестве элементов более сложных конструкций.
+
В списке выводится:
+
Код - проставляется автоматически;
+
Наименование - краткое наименование вопроса.
Выбор вопроса
+
+
Выделите вопрос, нажмите Выбрать.
+
+
Также можно выбирать вопросы двойным щелчком мыши.
Ввод нового вопроса
+
Для того чтобы добавить в список отсутствующий вопрос, нажмите Создать, заполните необходимые поля.
Группировка вопросов
+
Вопросы в списке можно группировать, например, по темам анкет.
+
Нажмите Создать группу, введите Наименование группы. Можно подчинить эту группу одной из имеющихся. Для этого в поле Родитель выберите группу из списка.
+
Введите необходимое количество групп. Перетащите вопросы в соответствующие группы или введите вопросы в выбранную группу.
Одним из важных этапов подготовки анкет является составление вопросов.
+
Данный вопрос называется элементарным, т.к. может использоваться в качестве элементов более сложных конструкций.
+
Ввод вопроса
+
В поле Наименование введите краткое представление вопроса, которое выводится при подборе вопросов в шаблоны анкет.
+
Для того чтобы поместить вопрос в одну из групп, в поле Родитель выберите группу из списка.
+
В поле Формулировка можно ввести развернутый текст вопроса, который будет затем выведен в соответствующее поле шаблона анкеты. По умолчанию, текст автоматически подставляется из поля Наименование.
+
Содержание и формы ответов респондента зависят от значения поля Тип ответа, которое может быть одним из следующих:
+
Строка - в этом случае от респондента требуется ввести ответ в виде текстовой строки,
+
В поле Длина строки задайтеограничение по количеству символов строки. Поле является обязательным.
Текст - ответ вводится респондентов в текстовом поле длиной до 1024 символов. Длинный ответ можно ввести в отдельном окне.
+
Число - при ответе на вопрос этого типа респондент вводит число.
+
В поле Длина задайте количество знаков числа. Поле является обязательным.
+
В поле Точность задайте количество знаков после запятой. По умолчанию равна 0.
+
Можно задать Минимальное и Максимальное значение числа. При попытке ввода респондентом числа, которое не удовлетворяет ограничению, указанного в полях Минимальное значение и Максимальное значение, будет выдано предупреждение о вводе некорректных данных.
+
Включите флажок Агрегировать сумму в отчетах, для того чтобы в отчете Анализ опроса выводилась общая сумму по всем анкетам, в которых заполнен ответ на этот вопрос.
Дата - при ответе на вопрос этого типа респондент вводит дату.
+
Булево - респонденту доступен выбор одного из двух значений: Да или Нет.
+
Выбор одного варианта ответа из предложенных - с помощью этого типа ответа можно предложить респонденту выбрать один из вариантов ответа с помощью переключателей. Возможные варианты ответов составитель может задать в списке.
+
Выбор нескольких вариантов ответа из предложенных - респондент может отметить произвольное количество вариантов ответа с помощью флажков. Возможные варианты ответов составитель может задать в списке.
+
Если в списке у варианта ответа установить флажок Требует открытого ответа, то респонденту будет предложено дать развернутый ответ в текстовом поле рядом с вариантом ответа, прокомментировав таким образом свой выбор.
Помимо перечисленных типов ответов, также имеется возможность выбрать в качестве типа ответа один из некоторых списков программы. В этом случае респондент будет выбирать в качестве ответа на вопрос элемент списка программы.
Установка флажка Требуется комментарий на этапе подготовки вопроса позволит респонденту при заполнении анкеты в текстовом поле рядом с ответом разъяснить свой ответ.
+
В случае установки флажка в поле Пояснение комментария нужно указать текст, который будет выводиться перед текстовым полем разъяснения респондента. Поле является обязательным.
+
Флажок Требуется комментарий недоступен при выборе типа ответа Текст и Выбор нескольких вариантов ответа из предложенных. В ответе типа Текст и так можно дать развернутый ответ. Для ответа типа Выбор нескольких вариантов ответа из предложенных при необходимости предусмотрен вывод поля с комментарием для каждого варианта ответа.
\ No newline at end of file
diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl
index 951a81653..3344629de 100644
--- a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl
@@ -147,6 +147,14 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+
+ ОповещениеОЗакрытии = Новый ОписаниеОповещения("РедактированиеФормулировкиПриЗакрытии", ЭтотОбъект);
+ ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(ОповещениеОЗакрытии, Элемент.ТекстРедактирования, НСтр("ru = 'Формулировка'"));
+
+КонецПроцедуры
+
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -229,7 +237,6 @@
Объект.ПояснениеКомментария = "";
КонецЕсли;
ДоступностьНеобходимостьПояснениеКомментария();
- Элементы.ЗаполнятьАвтоматически.Видимость = Объект.Предопределенный;
Если Объект.ТипОтвета = ПредопределенноеЗначение("Перечисление.ТипыОтветовНаВопрос.Строка") Тогда
@@ -372,4 +379,15 @@
КонецПроцедуры
+&НаКлиенте
+Процедура РедактированиеФормулировкиПриЗакрытии(ТекстВозврата, ДополнительныеПараметры) Экспорт
+
+ Если Объект.Формулировка <> ТекстВозврата Тогда
+ Объект.Формулировка = ТекстВозврата;
+ Модифицированность = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+
#КонецОбласти
diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Help/ru.html b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Help/ru.html
new file mode 100644
index 000000000..cbc01257b
--- /dev/null
+++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Help/ru.html
@@ -0,0 +1,14 @@
+
+
Подготовка вопросов для анкетирования.
+
Открывается по команде Вопросы для анкетирования в разделе Анкетирование.
+
Одним из важных этапов подготовки анкет является составление вопросов.
+
В общем списке содержатся вопросы, которые могут быть включены в любую анкету. Эти вопросы называются элементарными, т.к. могут использоваться в качестве элементов более сложных конструкций.
Вопросы в списке можно группировать, например, по темам анкет.
+
Нажмите Создать группу, введите Наименование группы. Можно подчинить эту группу одной из имеющихся. Для этого в поле Родитель выберите группу из списка.
+
Введите необходимое количество групп. Перетащите вопросы в соответствующие группы или введите вопросы в выбранную группу.
Открывается из списка Наборы дополнительных реквизитов (сведений) с помощью команд Добавить - По образцу или Добавить - Общее (Общий).
+
Добавление по образцу
+
Можно использовать ранее введенные дополнительные реквизиты и сведения из других наборов, добавлять реквизиты с общим списком значений сразу для нескольких однотипных реквизитов (например, Цвет двери по образцу реквизита Цвет). Список значений в этом случае используется из реквизита-образца. Удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов.
Также можно воспользоваться двойным щелчком мыши.
+
Тип и все значения выбранного в качестве образца дополнительного реквизита (сведения) будут скопированы в новый элемент.
Добавление общих дополнительных реквизитов (сведений)
+
Общий реквизит входит в несколько наборов. Этот вариант подходит для тех случаев, когда общим должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных справочников и документов общие реквизиты группируются и выводятся как один реквизит в одной колонке или поле. Например, с помощью общего реквизита Цвет можно отобрать всю желтую одежду и обувь.
+
Выделите уже существующий дополнительный реквизит (сведение). Если в списке нет нужного реквизита, нажмите Создать. Заполните необходимые поля.
+
Открывается по команде Добавить или Создать в списке Дополнительные реквизиты (сведения).
+
Заполните необходимые поля:
+
Напишите краткое Наименование свойства, которое будет указываться в окнах объектов программы.
+
Для того чтобы дополнительный реквизит при заполнении справочников или документов не оставался пустым, включите флажок Заполнять обязательно. Для дополнительных сведений флажок не предусмотрен.
+
Заполните поля на вкладке Главная:
+
Выберите из списка с помощью флажка Тип значения дополнительного реквизита (сведения);
+
Для того чтобы уточнить формат дополнительных реквизитов типа Число, Дата, Булево, перейдите в Конструктор форматной строки по гиперссылке Формат по умолчанию (для дополнительных сведений не предусмотрено).
+
Установите при необходимости значение в поле Язык (Страна), для того чтобы изменить стандартные настройки.
+
Выберите необходимые параметры для установки форматов.
+
В строке Пример для наглядности производятся соответствующие этим параметрам изменения.
+
Для подтверждения выбранных параметров нажмите ОК.
+
После уточнения формата гиперссылка меняет значение на Формат установлен.
+
Заполните поле Всплывающая подсказка,для того чтобы объяснить, как заполняется дополнительное сведение или реквизит. Содержимое поля будет выводиться на экран при наведении мыши на поле дополнительного реквизита (сведения).
Заполните поле Комментарий, для того чтобы при подборе дополнительного реквизита (сведения) в наборы в нижней части списка выбора выводилось его описание. Для заполнения перейдите на вкладку Комментарий.
Добавление по образцу
+
В программе имеется возможность использовать ранее введенные дополнительные реквизиты и сведения из других наборов. Можно добавлять реквизиты с общим списком значений По образцу сразу для нескольких однотипных реквизитов. С помощью этого варианта ввода удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов. Будет открыт список всех дополнительных реквизитов (сведений), уже существующих в программе. Добавить объекту новый дополнительный реквизит (сведение) можно из этого списка с помощью команды Выбрать.
+
Тип и все значения выбранного в качестве образца дополнительного реквизита (сведения) будут скопированы в новый элемент. Заполните все необходимые поля.
+
По умолчанию реквизит становится общим с набором, из которого был использован образец. Ввод новых значений в этом случае невозможен. Программа выводит напоминание, что список значений является общим с другим реквизитом. После сохранения дополнительного реквизита (сведения) с помощью гиперссылки можно просмотреть реквизит-образец и добавить значения, если необходимо.
+
Реквизит, созданный по образцу, который имеет общий список значений с другим реквизитом, можно сделать отдельным реквизитом.
+
Для этого нужно нажать кнопку Изменить, в открывшемся окне Изменить настройку дополнительного реквизита (сведения) выбрать переключатель Реквизит со своим списком значений и записать изменения. Список значений будет скопирован с заменой ссылок в документах. После этого станет доступным ввод списка значений.
+
Внимание: данную перенастройку для уже действующих реквизитов (использованных для ввода в документы) следует применять с осторожностью. Перенастройка реквизита является необратимой, может выполняться автоматически, но занимает много времени и может закончиться некорректно. Можно заменить значения в уже существующих документах вручную, очистив старые значения и добавив новые (рекомендуется).
Добавление общих дополнительных реквизитов (сведений)
+
Общий дополнительный реквизит (сведение) входит в несколько наборов. Этот вариант подходит для тех случаев, когда общим должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных справочников и документов, общие реквизиты группируются и выводятся как один реквизит, в одной колонке или поле. Вводится по команде Добавить - Общий (Общее). Для того чтобы добавить общий реквизит в несколько наборов, выделите каждый из наборов, выполните команду.
+
В предлагаемом списке можно выбрать уже существующий общий дополнительный реквизит (общее дополнительное сведение) или Создать. Ввод осуществляется по общим правилам. Заполните необходимые поля.
+
Заголовок окна содержит пояснение (Общий дополнительный реквизит) или (Общее дополнительное сведение).
+
В нижней части окна общего дополнительного реквизита (сведения) при размещении в одном или нескольких наборах появляется гиперссылка Общий реквизит (Общее сведение) входит в набор с перечнем наборов.
+
С помощью кнопки Изменить (находится рядом с гиперссылкой) можно общий реквизит сделать отдельным реквизитом с собственным списком значений.
+
В открывшемся окне Изменить настройку дополнительного реквизита (сведения), нажмите переключатель Реквизит со своим списком значений и записать изменения. Список значений будет скопирован с заменой ссылок в документах.
+
Внимание! Перенастройка дополнительного реквизита (сведения) необратима и может занять длительное время, в зависимости от числа документов, в которых заполнен этот реквизит. Вместо этого можно добавить новый реквизит со своим списком значений и выполнить вручную постепенный переход от использования этого реквизита к новому (очистить значения этого реквизита и заполнить значения нового).
Тип значения дополнительных реквизитов и сведений меняется исходя из логики использования. Возможны следующие типы дополнительного реквизита или сведения:
+
Строка - Определите Длину строки, выберите параметр Фиксированная или Переменная (если введенная строка получится меньше предполагаемой длины, то количество знаков, отведенное под это значение, будет автоматически уменьшено до фактической). Максимальная длина строки в этом случае 1024 символа. Также можно включить флажок Неограниченная, если планируется вводить большой объем текстовой информации.
+
Для дополнительного реквизита типа Строка в программе предлагается возможность сделать поле многострочным. Для этого включите флажок Многострочное поле ввода и введите количество строк.
Число - выберите Длину числа и его Точность. По умолчанию программа предлагает длину числа 15 и точность 3. В зависимости от вводимых данных эти цифры могут меняться. Необходимо учитывать, что в количество знаков Длины числа входит количество знаков целой части, и десятичная точка, и количество знаков дробной части. При необходимости включите флажок Неотрицательное.
+
При вводе дополнительного реквизита типа Число предусмотрена возможность более точного выбора формата числа.
+
При вводе значений в поля Длина и Точность в Конструкторе форматной строки число будет округляться до этого количества знаков.
+
Можно выбрать Сдвиг.
+
Можно поменять Разделитель дробной части (по умолчанию - запятая), определить Разделитель групп (по умолчанию пробел), также определить Группировку.
+
Можно выбрать Представление нуля, например, для того чтобы напомнить о необходимости ввода значения в это поле.
+
Также можно указать Представление отрицательных чисел.
+
При необходимости включите флажок Выводить лидирующие нули. В этом случае при подгонке под указанную Длину числа, если число меньше, будут проставлены нули в разрядах.
Дата - выберите состав даты: Дата, Время или Дата и Время.
+
Для дополнительных реквизитов можно задать формат даты, для этого перейдите по гиперссылке Формат по умолчанию. Можно выбрать формат dd.mm.yyyy или yyyy-MM-dd, а также Локальный формат даты (например, 22 мая 2013), задать Представление пустой даты (в незаполненном поле появится предупреждение, например, Нет даты).
Составной тип данных - этот тип значения предоставляет возможность окончательно выбрать тип данных уже при вводе информации в справочник. Включите флажок Составной тип данных, затем включите флажки для типов значений, из которых можно будет выбирать.
+
Например, дату основания фирмы иногда невозможно указать точно. В этом случае можно предоставить возможность выбора типа данных (Дата или Строка) во время ввода. Если точная дата известна, то можно будет выбрать тип Дата и ввести, если неизвестна, то можно будет ввести дату в виде строки типа "Начало 19 в.".
+
При этом для всех частей составного типа данных можно произвести их обычные настройки, например, настроить формат даты и определить параметры строки.
+
При вводе значений дополнительных реквизитов (сведений) составного типа данных сначала предлагается выбрать тип данных.
Булево - обычно это значения типа Истина и Ложь, Да или Нет.
+
Для дополнительных реквизитов в Конструкторе форматной строки можно установить другой формат этих значений. Можно написать Представления значения булево Ложь и булево Истина. В этом случае при вводе вместо обычного Да или Нет для выбора будут предложены значения, введенные при настройке дополнительного реквизита.
Дополнительное значение - этот тип данных часто используется, при этом ввод информации сводится к выбору значений из списка. Предлагается программой по умолчанию. Применяется как обычный список значений, так и сгруппированный. С помощью дополнительных реквизитов (сведений) типа Дополнительное значение можно описывать различные свойства объектов программы.
+
Дополнительное значение (иерархия) - такая структура списков также широко используется, ее называют иерархией элементов. Элементы в таком списке имеют одинаковые свойства, но могут иметь подчиненные элементы. При этом иерархия может быть довольно сложной.
+
Пользователь - в программе предусмотрена возможность использования значений списка Пользователи в качестве дополнительного реквизита (сведения).
Особенности ввода дополнительных сведений типа Дополнительное значение или Дополнительное значение (иерархия)
+
Кроме обычных полей доступны:
+
Значения дополнительно характеризуются весовым коэффициентом - включите флажок, для того чтобы использовать эту возможность. Поле затем можно использовать для анализа в отчетах. Логику использования этого поля необходимо продумывать самостоятельно. Поле не является обязательным.
+
Заголовок формы выбора значения - введите заголовок окон выбора значений (окон выбора значений с иерархией). Применение индивидуальных заголовков для окон ввода дополнительных реквизитов и сведений и выбора значений позволяет сделать процесс ввода более удобным и понятным.
После выбора типа данных и заполнения поля Наименование нажмите кнопку Записать. После этого становится доступным для работы список значений. Для ввода значений нажмите Создать. Введите необходимые поля.
+
Если данные не были записаны перед выполнением команды Создать, то программа выдает предупреждение. Для перехода к вводу значений нажмите кнопку Записать.
Изменение формата дополнительных реквизитов и сведений
+
Любые изменения типов значений и формата дополнительных реквизитов и сведений после сохранения невозможны. Для этого придется сначала удалить созданные дополнительные реквизиты и сведения, затем уже заново создать дополнительные реквизиты и сведения с новыми типами значений.
\ No newline at end of file
diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl
index b78fa24e6..ba6bfcf33 100644
--- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl
+++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Module.bsl
@@ -35,6 +35,10 @@
КонецЕсли;
КонецЕсли;
+ Если Объект.Предопределенный И НЕ ЗначениеЗаполнено(Объект.Заголовок) Тогда
+ Объект.Заголовок = Объект.Наименование;
+ КонецЕсли;
+
ЭтоДополнительноеСведение = ?(Объект.ЭтоДополнительноеСведение, 1, 0);
ОбновитьСоставЭлементовФормы();
@@ -375,10 +379,9 @@
ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
ПараметрыФормы.Вставить("ЭтоДополнительныйРеквизит", Объект.ЭтоДополнительноеСведение);
- ОткрытьФорму(
- "ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.РазблокированиеРеквизитов",
- ПараметрыФормы,
- ЭтотОбъект);
+ Оповещение = Новый ОписаниеОповещения("ОбновитьФормуДляРедактирования", ЭтотОбъект);
+ ОткрытьФорму("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Форма.РазблокированиеРеквизитов",
+ ПараметрыФормы, ЭтотОбъект,,,, Оповещение);
Иначе
ЗапретРедактированияРеквизитовОбъектовКлиент.ПоказатьПредупреждениеВсеВидимыеРеквизитыРазблокированы();
КонецЕсли;
@@ -389,6 +392,13 @@
#Область СлужебныеПроцедурыИФункции
+&НаКлиенте
+Процедура ОбновитьФормуДляРедактирования(Результат, Параметр) Экспорт
+ #Если ВебКлиент Тогда
+ ОбновитьОтображениеДанных();
+ #КонецЕсли
+КонецПроцедуры
+
&НаКлиенте
Процедура ПослеОтветаНаВопросКогдаНаименованиеУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт
diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Help/ru.html b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Help/ru.html
index 5e6943483..ae42e65b8 100644
--- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Help/ru.html
+++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Help/ru.html
@@ -1,6 +1,7 @@
-
-
Дополнительные реквизиты и дополнительные сведения используются в наборах свойств. Все дополнительные реквизиты и сведения объектов можно вывести в отчетах и списках.
+
+
Дополнительные реквизиты и сведения используются в наборах свойств. Все дополнительные реквизиты и сведения объектов можно вывести в отчетах и списках.
При выборе вида дополнительного свойства нужно руководствоваться следующими соображениями:
-
Дополнительные реквизиты являются неотъемлемой частью «объекта со свойствами». Они хранятся в табличной части объекта и доступны тем же пользователям, которым доступен и сам «объект со свойствами». Дополнительные реквизиты редактируются в форме объекта наряду с его остальными реквизитами.
-
Дополнительные сведения предназначены для хранения сведений об объекте, которые не являются неотъемлемой частью объекта. Дополнительные сведения, как правило, доступны для просмотра и/или редактирования пользователям, которые не имеют доступа к самому «объекту со свойствами». Дополнительные сведения редактируются в отдельной форме, которую можно открыть из формы «объекта со свойствами».
При выборе типа значения Значения свойств объектов или Значения свойств объектов (иерархия), можно задать список возможных значений дополнительного реквизита или сведения. Для этого нужно воспользоваться командой на панели навигации дополнительного реквизита или сведения.
-
Для удобства, дополнительные свойства могут быть объединены в группы свойств.
\ No newline at end of file
+
Дополнительные реквизиты являются неотъемлемой частью «объекта со свойствами». Они хранятся в табличной части объекта и доступны тем же пользователям, которым доступен и сам «объект со свойствами». Дополнительные реквизиты редактируются в окне объекта наряду с его остальными реквизитами.
+
Дополнительные сведения предназначены для хранения сведений об объекте, которые не являются неотъемлемой частью объекта. Дополнительные сведения, как правило, доступны для просмотра и/или редактирования пользователям, которые не имеют доступа к самому «объекту со свойствами». Дополнительные сведения редактируются в отдельном окне, которое можно открыть из окна «объекта со свойствами».
Открывается по соответствующей команде раздела Бизнес-процессы и задачи.
+
В списке выводится:
+
Наименование - полное наименование объекта адресации;
+
Тип значения - тип значения объекта адресации.
В зависимости от специфики бизнес-процессов задачи могут быть адресованы исполнителю или группе исполнителей как персонально (персональная адресация), так и для некоторых бизнес-процессов с использованием ролей бизнес-процесса (ролевая адресация).
+
При ролевой адресации поручение выдается не персонально исполнителю, а некоторой роли бизнес-процесса (например, Старший по залу). Могут использоваться "уточняющие" объекты адресации, основные и дополнительные. Например, у роли Руководитель проектов могут присутствовать основной объект адресации Подразделение и дополнительный объект Проект. Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача. Соответствие исполнителей ролям и объектам адресации задается перед началом работы с бизнес-процессами и задачами, используется программой для доставки поручений конкретным исполнителям.
+
Предопределенный элемент Все объекты адресации обозначает все доступные объекты адресации программы.
Для удобства работы с контактами программа формирует единую адресную книгу на основании контактной информации.
+
Открывается по кнопке Выбрать из полей Кому, Копии, Скрытые исходящего письма.
+
Состоит из двух частей:
+
Левая часть содержит набор вкладок для выбора контактов:
+
Поиск контактов - если контактов много, то на вкладке можно осуществить поиск нужного контакта в программе по нескольким признакам:
+
По адресу электронной почты (По email);
+
По доменному имени почтового сервера;
+
По строке, входящей в наименование контакта. Для поиска контактов по строке используется полнотекстовый поиск программы (в этом случае поиск осуществляется по всем реквизитам контактов);
+
В нижней части окна поиска выводится информация об актуальности индекса полнотекстового поиска и кнопка Обновить, которая становится активной, если индекс неактуален.
+
по начальным символам наименования контакта (Начинается с).
Выберите способ поиска, напишите выражение для поиска и нажмите кнопку Найти. Будут подобраны контакты, удовлетворяющие условию.
Вкладки могут включать и другие списки, например, список партнеров.
+
Если в списке много элементов, можно использовать команду Найти. Можно работать со списком и использовать его возможности, вводить элементы.
Контакты по предмету - вкладка становится доступной, если в исходящем электронном письме заполнено поле Предмет. Программа автоматически подбирает контакты, связанные с предметом. Данная вкладка содержит список контактов, которые фигурируют в самом предмете, а также во всех документах взаимодействий, где этот предмет указан.
Двойной щелчок мыши по нужному контакту добавит запись о нем в правую часть адресной книги. Также можно использовать стрелки ">" и "<" или "<<" для добавления или удаления контактов.
Правая часть содержит список контактов для добавления в исходящее электронное письмо.
+
Список состоит из колонок:
+
В колонке Группа можно изменить поле письма, в которое будут добавлены контакты (Кому, Копии, Скрытые, Получатели ответа). По умолчанию установлена группа Кому.
+
В колонке Адрес проставляется адрес электронной почты добавленного контакта. Если адреса электронной почты в программе нет, можно добавить его в этой колонке.
+
В колонке Представление проставляется наименование контакта.
С помощью контекстного меню правой части адресной книги нужные контакты можно Найти в списке, Найти по адресу, Найти по представлению, Установить адрес контакта (поиск осуществляется в левой части адресной книги), а также разместить адреса в нужные группы.
Если контакт не найден в программе, то его можно Добавить в список вручную, указав адрес электронной почты и представление контакта. Добавить строку в список можно также клавишей Ins.
+
С помощью соответствующих команд меню Все действия (в интерфейсе Такси Еще) можно Удалить контакт из списка или поменять контакты местами.
Добавление контактов в исходящее электронное письмо
+
Для того чтобы добавить контакт в соответствующее поле исходящего письма, выделите нужную строку, нажмите кнопку Выбрать. Также можно воспользоваться двойным щелчком мыши.
+
Для одновременного добавления нескольких контактов выделите их и нажмите кнопку Выбрать.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Form.form b/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Form.form
index 253ef3653..0f148849c 100644
--- a/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Form.form
+++ b/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Form.form
@@ -9,7 +9,7 @@
6ru
- Для удобной работы с программой предлагается установить расширение работы с файлами.
+ Для удобной работы с программой предлагается установить расширение для веб-клиента 1С:Предприятие.
Установить?true
@@ -147,6 +147,7 @@
RetrySaveValuesYes
+ 70LockOwnertruetrue
@@ -183,7 +184,7 @@
1ru
- Установить расширение работы с файлами и продолжить
+ Установить расширение для веб-клиента 1С:Предприятие и продолжитьtrue
@@ -205,7 +206,7 @@
2ru
- Продолжить без установки расширения работы с файлами
+ Продолжить без установки расширения для веб-клиента 1С:Предприятиеtrue
diff --git a/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Module.bsl b/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Module.bsl
index b118d60ed..0f1a19ad0 100644
--- a/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Module.bsl
+++ b/SSL/src/CommonForms/ВопросОбУстановкеРасширенияРаботыСФайлами/Module.bsl
@@ -15,7 +15,7 @@
ИначеЕсли Не Параметры.ВозможноПродолжениеБезУстановки Тогда
Элементы.ДекорацияПояснение.Заголовок =
- НСтр("ru = 'Для выполнения действия требуется установить расширение работы с файлами.
+ НСтр("ru = 'Для выполнения действия требуется установить расширение для веб-клиента 1С:Предприятие.
|Установить?'");
КонецЕсли;
diff --git a/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Help/ru.html b/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Help/ru.html
index 4476b5c9d..2cb0543fe 100644
--- a/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Help/ru.html
+++ b/SSL/src/CommonForms/ВосстановлениеСвязиСГлавнымУзлом/Help/ru.html
@@ -1,5 +1,5 @@
-
+
Нажмите кнопку Восстановить, чтобы восстановить главный узел перед продолжением запуска. Это требуется после отмены главного узла для загрузки в подчиненный узел конфигурации главного узла в процессе восстановления распределенной информационной базы (недопустимо загружать конфигурацию более ранней версии).
Нажмите кнопку Отключить, чтобы безвозвратно отключить связь с главным узлом перед продолжением запуска. Это требуется после отмены главного узла в следующих случаях: - при создании главного узла из копии подчиненного узла; - при создании самостоятельной информационной базы из подчиненного узла (или его копии).
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ВыборДаты/Help/ru.html b/SSL/src/CommonForms/ВыборДаты/Help/ru.html
new file mode 100644
index 000000000..e46de611d
--- /dev/null
+++ b/SSL/src/CommonForms/ВыборДаты/Help/ru.html
@@ -0,0 +1,6 @@
+
+
В поставку программы входит общегосударственный производственный календарь с утвержденными правительством сведениями о рабочих днях, праздниках и переносах праздничных дней.
+
Однако иногда (как правило, в начале года) необходимо временно заполнить данные самостоятельно. Это имеет смысл, если данные календаря нужны, но официально он еще не принят и в программе его еще нет, т.к. еще не все переносы правительство утвердило. Можно заполнить переносы раньше, а потом, когда данные общегосударственного календаря будут утверждены и войдут в поставку программы, переносы автоматически корректируются.
+
Открывается по команде Перенести день в производственном календаре.
В качестве исполнителя можно выбирать конкретного пользователя или роль, предназначенную для создаваемого бизнес-процесса.
+
+
Предназначен для выбора исполнителя бизнес-процесса (например, Задания).
+
Открывается из бизнес-процесса по кнопке выбора в поле Исполнитель.
+
В зависимости от специфики бизнес-процессов задачи могут быть адресованы исполнителю или группе исполнителей как персонально (персональная адресация - в качестве исполнителя можно выбирать конкретного пользователя), так и для некоторых бизнес-процессов с использованием ролей бизнес-процесса (ролевая адресация).
Если выбирается исполнитель, то бизнес-процесс будет адресован этому исполнителю. Если выполняется выбор роли, то бизнес-процесс адресуется тому исполнителю, который в момент рассмотрения задачи назначен исполнителем этой роли. В процессе работы роли могут быть переназначены. В этом случае задача автоматически переадресуется новым исполнителям.
При ролевой адресации поручение выдается не персонально исполнителю, а некоторой роли бизнес-процесса (например, Старший по залу).
+
+
Могут использоваться "уточняющие" объекты адресации, основные и дополнительные. Например, у роли Руководитель проектов могут присутствовать основной объект адресации Подразделение и дополнительный объект Проект.
+
+
Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача.
+
Выделите нужную роль исполнителя, нажмите Выбрать.
+
+
Также можно воспользоваться двойным щелчком мыши.
+
+
При необходимости выберите объект адресации. Нажмите ОК.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ВыборКонтакта/Help/ru.html b/SSL/src/CommonForms/ВыборКонтакта/Help/ru.html
new file mode 100644
index 000000000..fa276e977
--- /dev/null
+++ b/SSL/src/CommonForms/ВыборКонтакта/Help/ru.html
@@ -0,0 +1,19 @@
+
+
Поле Контакт всегда присутствует во всех документах взаимодействий, однако представление контактов в документах различается:
+
В документах Встреча и Запланированное взаимодействие присутствует список участников, в который необходимо добавить все контакты, которые будут участвовать в запланированном мероприятии или встрече.
+
В документе Сообщение SMS присутствует список адресатов, в который необходимо добавить контакты для рассылки сообщения.
+
Окно Выбор контактов открывается при заполнении поля Контакт документа взаимодействий.
+
Содержит вкладки:
+
Поиск контактов - поиск контактов в программе по нескольким признакам:
+
По адресу электронной почты (По e-mail);
+
По доменному имени почтового сервера;
+
По телефону;
+
По строке, входящей в наименование контакта.
+
Для поиска контактов по строке используется полнотекстовый поиск программы, в этом случае поиск осуществляется по всем реквизитам контактов.
+
В нижней части окна поиска выводится информация об актуальности индекса полнотекстового поиска и кнопка Обновить, которая становится активной, если индекс неактуален.
по начальным символам наименования контакта (Начинается с).
Выберите способ поиска, напишите выражение для поиска и нажмите кнопку Найти. Будут подобраны контакты, удовлетворяющие условию.
Вкладки могут включать и другие списки, например, список партнеров.
+
Если в списке много элементов, используйте команду Найти. Можно работать со списком и использовать его возможности, вводить элементы.
Контакты по предмету - вкладка становится доступной, если в документе взаимодействий заполнено поле Предмет. Программа автоматически подбирает контакты, связанные с предметом. Данная вкладка содержит список контактов, которые фигурируют в самом предмете, а также во всех документах взаимодействий, где этот предмет указан.
Добавление контактов в документы взаимодействий
+
Двойной щелчок по контакту добавляет его в документ взаимодействия. Также можно использовать кнопку Выбрать.
+
Для одновременного добавления нескольких контактов из списка выделите их и нажмите кнопку Выбрать.
В форме выбираются подписи, которые требуется сохранять вместе с файлом.
-
При выполнении команды "Сохранить с ЭП", если персональная настройка "Действия при сохранении с ЭП" установлена в "Спрашивать", открывается данная форма.
-
Установите флажки для подписей, которые надо сохранить вместе с файлом, и нажмите "OK".
-
Чтобы не видеть эту форму и всегда сохранять все подписи, установите галочку "Больше не спрашивать".
Предназначена для ввода пути к архиву с файлами начального образа (при хранении файлов в томах).
+
Если для хранения файлов используются тома на диске, то вместе с созданием начального образа автоматически будет создан архив с файлами, хранящимися в томах.
+
Затем в процессе создания информационной базы подчиненного узла из начального образа в программе-приемнике следует получить файлы из этого архива. Для этого необходимо воспользоваться командой Разместить файлы начального образа в панели действий раздела Органайзер. В последующих итерациях синхронизации данных файлы в томах будут участвовать автоматически.
+
В одном из полей укажите Путь к архиву с файлами начального образа:
+
Для сервера 1С:Предприятия под управлением Microsoft Windows - укажите путь к архиву с помощью кнопки ;
или
+
Для сервера 1С:Предприятия под управлением Linux - напишите путь к архиву.
Назначение - цель использования сертификата ЭП, например, "Защищенная электронная почта", "Проверка подлинности сервера". Для того чтобы просмотреть подробную информацию о назначении сертификата, наведите мышку на нужную ячейку.
Шифрование файла
+
Могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей.
+
Перед шифрованием необходимо включить флажки у сертификатов пользователей, для которых файл будет зашифрован.
+
Строки с выбранными сертификатами становятся недоступными, выключить флажки уже невозможно при шифровании всех файлов списка.
+
Для подтверждения выбора нажмите Зашифровать.
+
Если у файла несколько версий, будут зашифрованы все версии, для шифрования потребуется некоторое время.
+
Перед шифрованием в этом случае программа выводит сообщение. Для подтверждения нажмите Да.
Использованные для шифрования сертификаты указываются в карточке файла на вкладке Зашифрован для. Команда Зашифровать после этого становится неактивной.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ВыборУзловПлановОбмена/Help/ru.html b/SSL/src/CommonForms/ВыборУзловПлановОбмена/Help/ru.html
index 27f32d431..028704297 100644
--- a/SSL/src/CommonForms/ВыборУзловПлановОбмена/Help/ru.html
+++ b/SSL/src/CommonForms/ВыборУзловПлановОбмена/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для выбора узлов плана обмена (информационных баз).
Вызывается по команде Подобрать или Добавить из других объектов программы, например, при установке Даты запрета загрузки данных.
Предназначена для добавления подписи к файлу. Эту возможность можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ДополнительныеПараметрыПроксиСервера/Form.form b/SSL/src/CommonForms/ДополнительныеПараметрыПроксиСервера/Form.form
index f35e7134a..e647f5544 100644
--- a/SSL/src/CommonForms/ДополнительныеПараметрыПроксиСервера/Form.form
+++ b/SSL/src/CommonForms/ДополнительныеПараметрыПроксиСервера/Form.form
@@ -453,7 +453,7 @@
VerticalAuto
- StrongSeparation
+ NormalSeparationtruetrueLeftWide
@@ -701,7 +701,7 @@
VerticalAuto
- StrongSeparation
+ NormalSeparationtruetrueauto
diff --git a/SSL/src/CommonForms/ДополнительныеПараметрыПроксиСервера/Help/ru.html b/SSL/src/CommonForms/ДополнительныеПараметрыПроксиСервера/Help/ru.html
new file mode 100644
index 000000000..03c83b4de
--- /dev/null
+++ b/SSL/src/CommonForms/ДополнительныеПараметрыПроксиСервера/Help/ru.html
@@ -0,0 +1,12 @@
+
+
Настраиваются для механизмов, которые работают с веб-сервисами.
+
При необходимости укажите адреса прокси-серверов для отдельных протоколов и адреса интернет-серверов, к которым должен использоваться прямой доступ.
+
По умолчанию включен флажок Использовать прокси-сервер по умолчанию для всех протоколов.
+
Основные параметры настройки (Адрес сервера и Порт) по умолчанию будут также использованы в качестве дополнительных параметров.
+
Настройка дополнительных параметров
+
Для того чтобы указать адреса прокси-серверов для отдельных протоколов, выключите флажок Использовать прокси-сервер по умолчанию для всех протоколов;
+
В соответствующем поле - HTTP, HTTPS, FTP - откорректируйте имя прокси-сервера, который будет использоваться для каждого протокола;
+
При необходимости укажите Порт.
+
В списке Не использовать прокси-сервер для адресов с помощью кнопки Добавить укажите адреса, к которым будет осуществляться прямой доступ.
+
Для подтверждения введенных параметров нажмите ОК.
Предназначена для настройки параметров основного рабочего каталога.
Основной рабочий каталог - папка на Вашем персональном компьютере, в которой временно хранятся файлы, полученные из программы для просмотра или редактирования.
Для перехода к настройке параметров нажмите Настройка основного рабочего каталога в персональных настройках программы (вкладка Работа с файлами).
При заключении договора получателю услуги предоставляются идентификационные данные: Логин и Пароль. Их неоходимо указать в соответствующих полях на форме.
-
В поле Провайдер необходимо выбрать поставщика услуги, с которым заключен договор.
\ No newline at end of file
+
+
Предназначена для настройки параметров отправки SMS.
+
Открывается по команде Настройка отправки SMS раздела Администрирование - Органайзер.
+
С помощью SMS можно организовать:
+
Информирование технических специалистов о неполадках баз данных 1С;
+
Автоматическое подтверждение совершенных клиентом платежей и других операций;
+
Информирование клиента о событиях: день рождения, дата очередного платежа и прочее;
+
Массовое оповещение клиентов о товарах, услугах, акциях и специальных предложениях.
Для возможности отправки SMS необходимо заключить договор с провайдером на оказание соответствующей услуги. Подробности об услуге можно узнать на сайтах провайдеров:
В форме выполняется настройка параметров для использования средств криптографии: электронной подписи (ЭП) и шифрования. Для работы с криптографией вам потребуется установить стороннюю программу - криптопровайдер.
-
В случае распределенной информационной базы эти настройки могут быть изменены только в главном узле.
-
-
Настройка
-
Описание
Провайдер ЭП
-
-
Строка, идентифицирующая провайдера ЭП, например: "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider".
-
Ниже перечислены некоторые наиболее распространенные криптопровайдеры (название, имя и тип криптопровайдера для указания в диалоге настроек криптографии):
-
КриптоПро CSP: "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" (тип 75),
-
ViPNet CSP: "Infotecs Cryptographic Service Provider" (тип 2),
-
Microsoft CSP: "Microsoft Enhanced Cryptographic Provider v1.0" (тип 1).
Если вашего криптопровайдера нет в этом списке, вам надо связаться с фирмой-производителем криптопровайдера и получить необходимую информацию.
Тип провайдера ЭП
-
Число, указывающее тип провайдера ЭП. Например, для криптопровайдеров, поддерживающих ГОСТ Р 34.10-2001 - 75.
Выполнять проверку ЭП на сервере
-
Если настройка установлена, то проверка ЭП выполняется на сервере, иначе - на клиенте.
Путь модуля криптографии (для сервера 1С:Предприятия под управлением Linux)
-
Путь к модулю криптографии. Имеет смысл, если установлена настройка "Выполнять проверку ЭП на сервере".
Алгоритм подписи
-
Указывается алгоритм подписи. Выбирается из списка выбора, предоставляемого провайдером ЭП.
Алгоритм хеширования
-
Указывается алгоритм хеширования. Выбирается из списка выбора, предоставляемого провайдером ЭП.
Алгоритм шифрования
-
Указывается алгоритм шифрования. Выбирается из списка выбора, предоставляемого провайдером ЭП.
-
\ No newline at end of file
+
+
Настройка параметров для использования средств криптографии: электронной подписи (ЭП) и шифрования.
+
Открывается по команде Настройки криптографии раздела Администрирование - Настройки работы с файлами.
+
Для работы с криптографией вам потребуется установить стороннюю программу - криптопровайдер.
+
Для того чтобы использовать ЭП, необходимо включить соответствующий флажок в разделе Администрирование - Настройки работы с файлами. После этого становится доступной команда Настройки криптографии.
+
Электронная подпись - реквизит любого электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для подписи необходимо иметь сертификат ключа ЭП. Сертификат ключа ЭП можно получить с помощью криптографических сервисов (провайдеров) или операционной системы.
+
До начала использования ЭП следует определить, какие ЭП будут использоваться в программе: юридически значимые или нет.
+
Для юридически значимых ЭП необходимо приобрести специальную программу - криптопровайдер, поддерживающий ГОСТ Р 34.10-2001, например, Крипто Про, и установить его на компьютеры с программой 1С:Предприятие. Кроме того, потребуется заключить договор с удостоверяющим центром - для получения сертификатов.
+
Если юридически значимая ЭП не нужна (например, для использования ЭП только внутри предприятия), то можно использовать любой криптопровайдер, например, Microsoft Enhanced Cryptographic Provider v1.0. Указанный криптопровайдер входит в состав ОС Windows и его не нужно приобретать отдельно. Сертификаты можно получить с помощью домена контроллера Windows Server 2003 или 2008 (с помощью утилиты certmgr.msc, выполнив команду All tasks - Request new certificate). Более подробно описание утилиты см. справку к ОС Windows, а также сайт фирмы Microsoft http://technet.microsoft.com/en-us/library/cc754122%28WS.10%29.aspx.
+
В случае использования распределенной информационной базы эти настройки могут быть изменены только в главном узле.
+
Настройки криптографии
+
Провайдер ЭП - строка, идентифицирующая провайдера ЭП, например: "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" - идентификатор криптографического провайдера от компании Крипто Про.
+
Ниже перечислены некоторые наиболее распространенные криптопровайдеры (название, имя и тип криптопровайдера для указания в диалоге настроек криптографии):
+
КриптоПро CSP: "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" (тип 75);
+
ViPNet CSP: "Infotecs Cryptographic Service Provider" (тип 2);
+
Microsoft CSP: "Microsoft Enhanced Cryptographic Provider v1.0" (тип 1).
Если вашего криптопровайдера нет в этом списке, вам надо связаться с фирмой-производителем криптопровайдера и получить необходимую информацию.
Тип провайдера ЭП - число, указывающее тип провайдера ЭП. Например, для криптопровайдеров, поддерживающих ГОСТ Р 34.10-2001, выберите тип 75.
+
Алгоритм подписи - выберите значение из списка, предоставляемого провайдером ЭП.
+
Алгоритм хеширования - выберите значение из списка, предоставляемого провайдером ЭП.
+
Алгоритм шифрования - выберите значение из списка, предоставляемого провайдером ЭП.
+
Выполнять проверку ЭП на сервере - если флажок установлен, то проверка ЭП выполняется на сервере, иначе - на клиенте.
+
Путь модуля криптографии (для сервера 1С:Предприятия под управлением Linux) - путь к модулю криптографии для операций с файлами (расшифровка, подписание, проверка подписи, просмотр сертификата). Данная настройка становится доступной, если установлен флажок Выполнять проверку ЭП на сервере. Необходимо заполнить параметры:
+
Имя компьютера - напишите сетевое имя компьютера;
+
Путь модуля криптографии - напишите путь к модулю криптографии на этом компьютере;
+
Комментарий - напишите дополнительные сведения.
Назначения сертификатов ЭП
+
+
Для перехода к настройке представлений для кодов назначений сертификатов ЭП воспользуйтесь ссылкой Назначения сертификатов ЭП.
Предназначено для настройки синхронизации данных и хранения существующих настроек синхронизации данных.
Окно Синхронизация данных можно найти на Рабочем столе программы или открыть в разделе Синхронизация данных по соответствующей команде. Если настроек синхронизации еще нет или существует только одна настройка, то окно приобретает вид панели. В этом случае меню Все действия скрыто и все необходимые команды и поля выведены на панель. Окно принимает вид списка, если настроек синхронизации две и более.
В окне выводится:
diff --git a/SSL/src/CommonForms/ОбменыДанными/Module.bsl b/SSL/src/CommonForms/ОбменыДанными/Module.bsl
index 38ebca6ae..c96f03eb0 100644
--- a/SSL/src/CommonForms/ОбменыДанными/Module.bsl
+++ b/SSL/src/CommonForms/ОбменыДанными/Module.bsl
@@ -142,52 +142,43 @@
Процедура ВыполнитьОбменДанными(Команда)
ОбновитьДанныеМонитора();
-
- Если КоличествоСинхронизаций = 1 Тогда
-
- УзелОбмена = СписокСостоянияУзлов[0].УзелИнформационнойБазы;
- АвтоматическаяСинхронизация = (СписокСостоянияУзлов[0].ВариантОбменаДанными = "Синхронизация");
-
- Иначе
-
- ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные;
-
- Если ТекущиеДанные = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- УзелОбмена = ТекущиеДанные.УзелИнформационнойБазы;
- АвтоматическаяСинхронизация = (ТекущиеДанные.ВариантОбменаДанными = "Синхронизация");
-
+
+ ТекущиеДанные = ?(КоличествоСинхронизаций = 1, СписокСостоянияУзлов[0], Элементы.СписокСостоянияУзлов.ТекущиеДанные);
+
+ Если ТекущиеДанные = Неопределено Тогда
+ Возврат;
КонецЕсли;
- ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(УзелОбмена, ЭтотОбъект,, АвтоматическаяСинхронизация);
+ УзелОбмена = ТекущиеДанные.УзелИнформационнойБазы;
+
+ ДополнительныеПараметры = Новый Структура;
+ ДополнительныеПараметры.Вставить("УзелОбмена", УзелОбмена);
+ ДополнительныеПараметры.Вставить("АвтоматическаяСинхронизация", (ТекущиеДанные.ВариантОбменаДанными = "Синхронизация"));
+ ДополнительныеПараметры.Вставить("ИнтерактивнаяОтправка", Ложь);
+
+ ОписаниеПродолжения = Новый ОписаниеОповещения("ПродолжитьВыполнениеСинхронизации", ЭтотОбъект, ДополнительныеПараметры);
+ ПроверитьСовместимостьПравилКонвертации(УзелОбмена, ОписаниеПродолжения);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьОбменДаннымиИнтерактивно(Команда)
- Если КоличествоСинхронизаций = 1 Тогда
-
- УзелОбмена = СписокСостоянияУзлов[0].УзелИнформационнойБазы;
-
- Иначе
-
- ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные;
-
- Если ТекущиеДанные = Неопределено Тогда
-
- Возврат;
-
- КонецЕсли;
-
- УзелОбмена = ТекущиеДанные.УзелИнформационнойБазы;
-
+ ТекущиеДанные = ?(КоличествоСинхронизаций = 1, СписокСостоянияУзлов[0], Элементы.СписокСостоянияУзлов.ТекущиеДанные);
+
+ Если ТекущиеДанные = Неопределено Тогда
+ Возврат;
КонецЕсли;
- ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные;
- ОбменДаннымиКлиент.ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(УзелОбмена, ЭтотОбъект);
+ УзелОбмена = ТекущиеДанные.УзелИнформационнойБазы;
+
+ ДополнительныеПараметры = Новый Структура;
+ ДополнительныеПараметры.Вставить("УзелОбмена", УзелОбмена);
+ ДополнительныеПараметры.Вставить("ИнтерактивнаяОтправка", Истина);
+
+ ОписаниеПродолжения = Новый ОписаниеОповещения("ПродолжитьВыполнениеСинхронизации", ЭтотОбъект, ДополнительныеПараметры);
+
+ ПроверитьСовместимостьПравилКонвертации(УзелОбмена, ОписаниеПродолжения);
КонецПроцедуры
@@ -399,10 +390,47 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ЗагрузитьПравилаСинхронизацииДанных(Команда)
+
+ ТекущиеДанные = ?(КоличествоСинхронизаций = 1, СписокСостоянияУзлов[0], Элементы.СписокСостоянияУзлов.ТекущиеДанные);
+
+ Если ТекущиеДанные = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ УзелОбмена = ТекущиеДанные.УзелИнформационнойБазы;
+ СведенияОПланеОбмена = СведенияОПланеОбмена(УзелОбмена);
+
+ Если СведенияОПланеОбмена.ИспользуютсяПравилаКонвертации Тогда
+ ОбменДаннымиКлиент.ЗагрузитьПравилаСинхронизацииДанных(СведенияОПланеОбмена.ИмяПланаОбмена);
+ Иначе
+
+ ВидПравил = ПредопределенноеЗначение("Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов");
+
+ Отбор = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, ВидПравил);
+ ЗначенияЗаполнения = Новый Структура("ИмяПланаОбмена, ВидПравил", СведенияОПланеОбмена.ИмяПланаОбмена, ВидПравил);
+ ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, ЗначенияЗаполнения,
+ "ПравилаДляОбменаДанными", УзелОбмена, "ПравилаРегистрацииОбъектов");
+
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
+&НаСервере
+Функция СведенияОПланеОбмена(Знач УзелИнформационнойБазы)
+
+ Результат = Новый Структура("ИмяПланаОбмена,ИспользуютсяПравилаКонвертации");
+ Результат.ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы);
+ Результат.ИспользуютсяПравилаКонвертации = ОбменДаннымиПовтИсп.ЕстьМакетПланаОбмена(Результат.ИмяПланаОбмена, "ПравилаОбмена");
+ Возврат Результат;
+
+КонецФункции
+
&НаКлиенте
Процедура ОбновитьДанныеМонитора()
@@ -534,6 +562,9 @@
КонецЕсли;
+ Элементы.СтраницаРасписание.Картинка = ?(НастроеннаяСинхронизация.РасписаниеНастроено,
+ БиблиотекаКартинок.РегламентноеЗадание, Новый Картинка);
+
ЗаголовокФормы = НСтр("ru = 'Синхронизация данных с ""%Программа%""'");
ЗаголовокФормы = СтрЗаменить(ЗаголовокФормы, "%Программа%", НастроеннаяСинхронизация.УзелИнформационнойБазы.Наименование);
Заголовок = ЗаголовокФормы;
@@ -854,4 +885,171 @@
КонецФункции
+&НаКлиенте
+Процедура ПродолжитьВыполнениеСинхронизации(Результат, ДополнительныеПараметры) Экспорт
+
+ Если ДополнительныеПараметры.ИнтерактивнаяОтправка Тогда
+
+ ОбменДаннымиКлиент.ОткрытьПомощникСопоставленияОбъектовОбработкаКоманды(ДополнительныеПараметры.УзелОбмена, ЭтотОбъект);
+
+ Иначе
+
+ ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(ДополнительныеПараметры.УзелОбмена,
+ ЭтотОбъект,, ДополнительныеПараметры.АвтоматическаяСинхронизация);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПроверитьСовместимостьПравилКонвертации(Знач ИмяПланаОбмена, ОбработкаПродолжения)
+
+ ОписаниеОшибки = Неопределено;
+ Если ПравилаКонвертацииСовместимыСТекущейВерсией(ИмяПланаОбмена, ОписаниеОшибки) Тогда
+
+ ВыполнитьОбработкуОповещения(ОбработкаПродолжения);
+
+ Иначе
+
+ Кнопки = Новый СписокЗначений;
+ Кнопки.Добавить("ПерейтиКЗагрузкеПравил", Нстр("ru = 'Загрузить правила'"));
+ Если ОписаниеОшибки.ВидОшибки <> "НекорректнаяКонфигурация" Тогда
+ Кнопки.Добавить("Продолжить", Нстр("ru = 'Продолжить'"));
+ КонецЕсли;
+ Кнопки.Добавить("Отмена", Нстр("ru = 'Отмена'"));
+
+ ДополнительныеПараметры = Новый Структура;
+ ДополнительныеПараметры.Вставить("ОбработкаПродолжения", ОбработкаПродолжения);
+ ДополнительныеПараметры.Вставить("ИмяПланаОбмена", ИмяПланаОбмена);
+ Оповещение = Новый ОписаниеОповещения("ПослеПроверкиПравилКонвертацииНаСовместимость", ЭтотОбъект, ДополнительныеПараметры);
+
+ ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
+ ПараметрыФормы.Картинка = ОписаниеОшибки.Картинка;
+ ПараметрыФормы.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
+ Если ОписаниеОшибки.ВидОшибки = "НекорректнаяКонфигурация" Тогда
+ ПараметрыФормы.Заголовок = Нстр("ru = 'Синхронизация данных не может быть выполнена'");
+ Иначе
+ ПараметрыФормы.Заголовок = Нстр("ru = 'Синхронизация данных может быть выполнена некорректно'");
+ КонецЕсли;
+
+ СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Оповещение, ОписаниеОшибки.ТекстОшибки, Кнопки, ПараметрыФормы);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеПроверкиПравилКонвертацииНаСовместимость(Результат, ДополнительныеПараметры) Экспорт
+
+ Если Результат <> Неопределено Тогда
+
+ Если Результат.Значение = "Продолжить" Тогда
+
+ ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОбработкаПродолжения);
+
+ ИначеЕсли Результат.Значение = "ПерейтиКЗагрузкеПравил" Тогда
+
+ ОбменДаннымиКлиент.ЗагрузитьПравилаСинхронизацииДанных(ДополнительныеПараметры.ИмяПланаОбмена);
+
+ КонецЕсли; // При "Отмена" ничего не делаем
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция ПравилаКонвертацииСовместимыСТекущейВерсией(ИмяПланаОбмена, ОписаниеОшибки)
+
+ ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(ИмяПланаОбмена);
+ ИнформацияОПравилах = Неопределено;
+
+ Если ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена, "ПредупреждатьОНесоответствииВерсийПравилОбмена")
+ И ПравилаКонвертацииЗагруженыИзФайла(ИмяПланаОбмена, ИнформацияОПравилах) Тогда
+
+ Если ИнформацияОПравилах.ИмяКонфигурации <> Метаданные.Имя Тогда
+
+ ОписаниеОшибки = Новый Структура;
+ ОписаниеОшибки.Вставить("ТекстОшибки", Нстр("ru = 'Синхронизация данных не может быть выполнена, так как используются правила, предназначенные для программы ""%1"". Следует использовать правила из конфигурации или загрузить корректный комплект правил из файла.'"));
+ ОписаниеОшибки.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеОшибки.ТекстОшибки,
+ ИнформацияОПравилах.СинонимКонфигурацииВПравилах);
+ ОписаниеОшибки.Вставить("ВидОшибки", "НекорректнаяКонфигурация");
+ ОписаниеОшибки.Вставить("Картинка", БиблиотекаКартинок.Ошибка32);
+ Возврат Ложь;
+
+ КонецЕсли;
+
+ ВерсияВПравилахБезСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ИнформацияОПравилах.ВерсияКонфигурации);
+ ВерсияКонфигурацииБезСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(Метаданные.Версия);
+ РезультатСравнения = ОбменДаннымиСервер.СравнитьВерсииБезНомераСборки(ВерсияВПравилахБезСборки, ВерсияКонфигурацииБезСборки);
+
+ Если РезультатСравнения <> 0 Тогда
+
+ Если РезультатСравнения < 0 Тогда
+
+ ТекстОшибки = Нстр("ru = 'Синхронизация данных может быть выполнена некорректно, так как используются правила, предназначенные для предыдущей версии программы ""%1"" (%2). Рекомендуется использовать правила из конфигурации или загрузить комплект правил, предназначенный для текущей версии программы (%3).'");
+ ВидОшибки = "УстаревшаяВерсияКонфигурации";
+
+ Иначе
+
+ ТекстОшибки = Нстр("ru = 'Синхронизация данных может быть выполнена некорректно, так как используются правила, предназначенные для более новой версии программы ""%1"" (%2). Рекомендуется обновить версию программы или использовать комплект правил, предназначенный для текущей версии программы (%3).'");
+ ВидОшибки = "УстаревшиеПравила";
+
+ КонецЕсли;
+
+ ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Метаданные.Синоним,
+ ВерсияВПравилахБезСборки, ВерсияКонфигурацииБезСборки);
+
+ ОписаниеОшибки = Новый Структура;
+ ОписаниеОшибки.Вставить("ТекстОшибки", ТекстОшибки);
+ ОписаниеОшибки.Вставить("ВидОшибки", ВидОшибки);
+ ОписаниеОшибки.Вставить("Картинка", БиблиотекаКартинок.Предупреждение32);
+ Возврат Ложь;
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Возврат Истина;
+
+КонецФункции
+
+&НаСервере
+Функция ПравилаКонвертацииЗагруженыИзФайла(ИмяПланаОбмена, ИнформацияОПравилах)
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ПравилаЗачитанные,
+ | ПравилаДляОбменаДанными.ВидПравил
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена
+ | И ПравилаДляОбменаДанными.ИсточникПравил = ЗНАЧЕНИЕ(Перечисление.ИсточникиПравилДляОбменаДанными.Файл)
+ | И ПравилаДляОбменаДанными.ПравилаЗагружены = ИСТИНА
+ | И ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов)";
+
+ Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена);
+
+ Результат = Запрос.Выполнить();
+
+ Если Не Результат.Пустой() Тогда
+
+ Выборка = Результат.Выбрать();
+ Выборка.Следующий();
+
+ СтруктураПравил = Выборка.ПравилаЗачитанные.Получить().Конвертация;
+
+ ИнформацияОПравилах = Новый Структура;
+ ИнформацияОПравилах.Вставить("ИмяКонфигурации", СтруктураПравил.Источник);
+ ИнформацияОПравилах.Вставить("ВерсияКонфигурации", СтруктураПравил.ВерсияКонфигурацииИсточника);
+ ИнформацияОПравилах.Вставить("СинонимКонфигурацииВПравилах", СтруктураПравил.СинонимКонфигурацииИсточника);
+
+ Возврат Истина;
+
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form
index e2621f7c5..ad5bc5db7 100644
--- a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form
+++ b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form
@@ -99,7 +99,107 @@
VerticalAuto
- StrongSeparation
+ NormalSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаОтключеныРегламентныеЗадания
+ 53
+
+ КартинкаОтключеныРегламентныеЗадания
+ 58
+ true
+ true
+
+ true
+
+
+ КартинкаОтключеныРегламентныеЗаданияРасширеннаяПодсказка
+ 60
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаОтключеныРегламентныеЗаданияКонтекстноеМеню
+ 59
+ true
+
+ 2
+ true
+ 1
+ true
+
+
+ CommonPicture.Информация
+
+
+
+
+ ОтключеныРегламентныеЗадания
+ 55
+
+ ru
+ При выполнения обновления была установлена блокировка выполнения регламентных заданий.
+Для разблокировки требуется <link перезапустить>перезапустить</> программу.
+
+ true
+ true
+
+ true
+
+
+ ОтключеныРегламентныеЗаданияРасширеннаяПодсказка
+ 57
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОтключеныРегламентныеЗаданияКонтекстноеМеню
+ 56
+ true
+
+ true
+ Label
+ true
+ true
+
+
+ URLProcessing
+ ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылки
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ГруппаОтключеныРегламентныеЗаданияРасширеннаяПодсказка
+ 54
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ AutotruetrueAuto
@@ -140,62 +240,6 @@
AutoInCommandBarAndInAdditionalSubmenu
-
- ИзменитьФорму
- 19
- true
- true
-
- true
-
-
- ИзменитьФормуExtendedTooltip
- 33
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.CustomizeForm
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- Сохранить
- 7
-
- ru
- Сохранить как...
-
- true
- true
-
- true
-
-
- СохранитьExtendedTooltip
- 34
- Label
- true
- true
-
- Left
-
-
- Form.Item.ОписаниеОбновлений.StandardCommand.Save
- Normal
- PictureAndText
- true
- true
- UserCmds
- Auto
- РазвернутьВсеГруппы21
@@ -216,7 +260,7 @@
Form.Item.ОписаниеОбновлений.StandardCommand.ExpandAllGroupsNormal
- Auto
+ PicturetruetrueUserCmds
@@ -224,16 +268,16 @@
InCommandBarAndInAdditionalSubmenu
- Печать
- 15
+ ОписаниеОбновленийСвернутьВсеГруппы
+ 45truetruetrue
- ПечатьExtendedTooltip
- 36
+ ОписаниеОбновленийСвернутьВсеГруппыРасширеннаяПодсказка
+ 46Labeltruetrue
@@ -241,7 +285,171 @@
Left
- Form.Item.ОписаниеОбновлений.StandardCommand.Print
+ Form.Item.ОписаниеОбновлений.StandardCommand.CollapseAllGroups
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ОписаниеОбновленийГруппа
+ 51
+
+ Сохранить
+ 7
+
+ ru
+ Сохранить как...
+
+ true
+ true
+
+ true
+
+
+ СохранитьExtendedTooltip
+ 34
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОписаниеОбновлений.StandardCommand.Save
+ Normal
+ PictureAndText
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ Печать
+ 15
+ true
+ true
+
+ true
+
+
+ ПечатьExtendedTooltip
+ 36
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОписаниеОбновлений.StandardCommand.Print
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ОписаниеОбновленийПредварительныйПросмотр
+ 47
+ true
+ true
+
+ true
+
+
+ ОписаниеОбновленийПредварительныйПросмотрРасширеннаяПодсказка
+ 48
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОписаниеОбновлений.StandardCommand.Preview
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ОписаниеОбновленийПараметрыСтраницы
+ 49
+ true
+ true
+
+ true
+
+
+ ОписаниеОбновленийПараметрыСтраницыРасширеннаяПодсказка
+ 50
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОписаниеОбновлений.StandardCommand.PageSetup
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Описание обновлений группа
+
+
+ ru
+ Описание обновлений группа
+
+
+ ОписаниеОбновленийГруппаРасширеннаяПодсказка
+ 52
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ИзменитьФорму
+ 19
+ true
+ true
+
+ true
+
+
+ ИзменитьФормуExtendedTooltip
+ 33
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CustomizeFormNormalAutotrue
@@ -410,6 +618,7 @@
ruТехническая информация о результатах обновления
+ truetruetrue
@@ -418,9 +627,14 @@
Role.ПолныеПрава
+ ButtonТехническаяИнформацияОРезультатахОбновленияExtendedTooltip42
+
+ ru
+ Техническая информация из журнала регистрации для обращения в службу технической поддержки.
+ Labeltruetrue
diff --git a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html
index 9c1c5e144..38c9dc286 100644
--- a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html
+++ b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Описание обновлений включает в себя список изменений в последней версии программы, а также историю изменений в предыдущих версиях.
Выводится однократно после завершения обновления на новую версию. Описание обновлений можно просмотреть позднее по команде Описание изменений программы в панели Информация на рабочем столе.
Доступные действия
diff --git a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl
index 759922a0b..1d3d3223d 100644
--- a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl
+++ b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl
@@ -1,4 +1,3 @@
-
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -58,13 +57,10 @@
ОписаниеОбновлений.Вывести(ДокументОписаниеОбновлений);
СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы();
- Если СведенияОбОбновлении <> Неопределено Тогда
- ВремяНачалаОбновления = СведенияОбОбновлении.ВремяНачалаОбновления;
- ВремяОкончанияОбновления = СведенияОбОбновлении.ВремяОкончанияОбновления;
- КонецЕсли;
+ ВремяНачалаОбновления = СведенияОбОбновлении.ВремяНачалаОбновления;
+ ВремяОкончанияОбновления = СведенияОбОбновлении.ВремяОкончанияОбновления;
Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных()
- Или СведенияОбОбновлении = Неопределено
Или СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно <> Неопределено
Или СведенияОбОбновлении.ДеревоОбработчиков <> Неопределено
И СведенияОбОбновлении.ДеревоОбработчиков.Строки.Количество() = 0 Тогда
@@ -88,10 +84,24 @@
ИначеЕсли Пользователи.ЭтоПолноправныйПользователь() И Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
Элементы.АдресФормыВПрограмме.ВысотаЗаголовка = 2;
Элементы.ТехническаяИнформацияОРезультатахОбновления.Видимость = Истина;
+ Иначе
+ Элементы.ТехническаяИнформацияОРезультатахОбновления.Видимость = Ложь;
КонецЕсли;
КлиентСервернаяБаза = Не ОбщегоНазначения.ИнформационнаяБазаФайловая();
+ // Отображение информации о блокировке регламентных заданий.
+ Если Не КлиентСервернаяБаза
+ И Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
+ ПараметрЗапускаКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска");
+ ВыполненоОтключениеРегламентныхЗаданий = Найти(ПараметрЗапускаКлиента, "РегламентныеЗаданияОтключены") <> 0;
+ Если Не ВыполненоОтключениеРегламентныхЗаданий Тогда
+ Элементы.ГруппаОтключеныРегламентныеЗадания.Видимость = Ложь;
+ КонецЕсли;
+ Иначе
+ Элементы.ГруппаОтключеныРегламентныеЗадания.Видимость = Ложь;
+ КонецЕсли;
+
КонецПроцедуры
&НаКлиенте
@@ -172,4 +182,25 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+
+ Оповещение = Новый ОписаниеОповещения("ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылкиЗавершение", ЭтотОбъект);
+ ТекстВопроса = НСтр("ru = 'Перезапустить программу?'");
+ ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОтключеныРегламентныеЗаданияОбработкаНавигационнойСсылкиЗавершение(Результат, ДополнительныеПараметры) Экспорт
+
+ Если Результат = КодВозвратаДиалога.Да Тогда
+ НовыйПараметрЗапуска = СтрЗаменить(ПараметрЗапуска, "РегламентныеЗаданияОтключены", "");
+ НовыйПараметрЗапуска = СтрЗаменить(НовыйПараметрЗапуска, "ЗапуститьОбновлениеИнформационнойБазы", "");
+ НовыйПараметрЗапуска = "/C """ + НовыйПараметрЗапуска + """";
+ ПрекратитьРаботуСистемы(Истина, НовыйПараметрЗапуска);
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html b/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html
index d45b88a60..355a4adcd 100644
--- a/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html
+++ b/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначена для отправки электронного сообщения.
Предусмотрены кнопки Написать письмо или Отправить для отправки электронных сообщений из различных объектов программы, например, из окна пользователя программы и т.п.
Выводит варианты отчетов, размещенные в разделе или группах раздела.
Открыть панель отчетов можно по соответствующей команде из раздела программы.
Панель отчетов позволяет работать с отчетами из одного места и группирует варианты отчетов по группам командного интерфейса. Работа с панелью отчетов ведется в двух режимах:
diff --git a/SSL/src/CommonForms/ПанельОтчетов/Module.bsl b/SSL/src/CommonForms/ПанельОтчетов/Module.bsl
index f1b8bab91..85c8166d0 100644
--- a/SSL/src/CommonForms/ПанельОтчетов/Module.bsl
+++ b/SSL/src/CommonForms/ПанельОтчетов/Module.bsl
@@ -9,10 +9,31 @@
КартинкаБыстрыйДоступ = БиблиотекаКартинок.БыстрыйДоступ;
ЦветСкрытыхВариантов = ЦветаСтиля.СкрытыйВариантОтчетаЦвет;
ЦветВидимыхВариантов = ЦветаСтиля.ВидимыйВариантОтчетаЦвет;
- ЦветГруппыВариантовОтчетов = ЦветаСтиля.ГруппаВариантовОтчетовЦвет;
ЦветПодсветкиНайденныхСлов = WebЦвета.Желтый;
ЦветПодсказки = ЦветаСтиля.ПоясняющийТекст;
- ШрифтЖирный = Новый Шрифт(, , Истина);
+ ШрифтВажнойНадписи = Новый Шрифт(, , Истина);
+
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ Элементы.КоманднаяПанель.Ширина = 25;
+ Элементы.СтрокаПоиска.Ширина = 35;
+ ЦветГруппыВариантовОтчетов = ЦветаСтиля.ГруппаВариантовОтчетовЦвет82;
+ ЦветРаздела = ЦветГруппыВариантовОтчетов;
+ ШрифтВажнойГруппы = Новый Шрифт("MS Shell Dlg", 10, Истина, Ложь, Ложь, Ложь, 100);
+ ШрифтОбычнойГруппы = Новый Шрифт("MS Shell Dlg", 8, Истина, Ложь, Ложь, Ложь, 100);
+ ШрифтРаздела = Новый Шрифт("MS Shell Dlg", 12, Истина, Ложь, Ложь, Ложь, 100);
+ Иначе // Такси.
+ ЦветГруппыВариантовОтчетов = ЦветаСтиля.ГруппаВариантовОтчетовЦвет;
+ ЦветРаздела = ЦветГруппыВариантовОтчетов;
+ //ЦветРаздела = ЦветаСтиля.ЦветТекстаФормы;
+ ШрифтВажнойГруппы = Новый Шрифт("Arial", 12, Ложь, Ложь, Ложь, Ложь, 100);
+ ШрифтОбычнойГруппы = Новый Шрифт("Arial", 12, Ложь, Ложь, Ложь, Ложь, 90);
+ ШрифтРаздела = Новый Шрифт("Arial", 12, Истина, Ложь, Ложь, Ложь, 100);
+ КонецЕсли;
+
+ Элементы.БыстрыйДоступШапкаНадпись.Шрифт = ШрифтВажнойГруппы;
+ Элементы.БыстрыйДоступШапкаНадпись.ЦветТекста = ЦветГруппыВариантовОтчетов;
+ Элементы.СмТакже.ШрифтЗаголовка = ШрифтВажнойГруппы;
+ Элементы.СмТакже.ЦветТекстаЗаголовка = ЦветГруппыВариантовОтчетов;
ЗаполнитьИнформациюОПодсистемахИУстановитьЗаголовок();
@@ -92,9 +113,7 @@
Вариант = Найденные[0];
ПараметрыОткрытия = Новый Структура;
- Если ЗначениеЗаполнено(Вариант.КлючВарианта) Тогда
- ПараметрыОткрытия.Вставить("КлючВарианта", Вариант.КлючВарианта);
- КонецЕсли;
+ ПараметрыОткрытия.Вставить("КлючВарианта", Вариант.КлючВарианта);
ПараметрыОткрытия.Вставить("Раздел", ТекущийРазделСсылка);
ПараметрыОткрытия.Вставить("Подсистема", Вариант.Подсистема);
@@ -190,11 +209,6 @@
КонецЕсли;
КонецПроцедуры
-&НаКлиенте
-Процедура ОтборАвторПриИзменении(Элемент)
- ОбновитьПанельОтчетов();
-КонецПроцедуры
-
&НаКлиенте
Процедура ИскатьВоВсехРазделахПриИзменении(Элемент)
Если ЗначениеЗаполнено(СтрокаПоиска) Тогда
@@ -293,7 +307,7 @@
КонецЕсли;
Вариант = Найденные[0];
- ПоказатьЗначение(, Вариант.Ссылка);
+ ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Вариант.Ссылка);
КонецПроцедуры
&НаКлиенте
@@ -340,12 +354,11 @@
Процедура ПоказатьСкрытьВариант(Вариант, Элемент, Показать)
Вариант.Видимость = Показать;
Вариант.ИзмененПользователем = Истина;
- Вариант.СвоиНастройки = Истина;
Элемент.ЦветТекста = ?(Показать, ЦветВидимыхВариантов, ЦветСкрытыхВариантов);
ЭтотОбъект["Флажок_"+ Вариант.НадписьИмя] = Показать;
Если Вариант.Важный Тогда
Если Показать Тогда
- Элемент.Шрифт = ШрифтЖирный;
+ Элемент.Шрифт = ШрифтВажнойНадписи;
Иначе
Элемент.Шрифт = Новый Шрифт;
КонецЕсли;
@@ -361,7 +374,6 @@
// Регистрация результата для записи
Вариант.БыстрыйДоступ = БыстрыйДоступ;
Вариант.ИзмененПользователем = Истина;
- Вариант.СвоиНастройки = Истина;
// Связанное действие: если добавляемый в быстрый доступ вариант не видим - показываем его
Если БыстрыйДоступ И Не Вариант.Видимость Тогда
@@ -394,10 +406,10 @@
Элемент.Шрифт = Новый Шрифт;
ГруппаДляПереноса = ПодгруппаСНаименьшимКоличествомЭлементов(Элементы.СмТакже);
ИначеЕсли Вариант.БезГруппы Тогда
- Элемент.Шрифт = ?(Вариант.Важный, ШрифтЖирный, Новый Шрифт);
+ Элемент.Шрифт = ?(Вариант.Важный, ШрифтВажнойНадписи, Новый Шрифт);
ГруппаДляПереноса = ПодгруппаСНаименьшимКоличествомЭлементов(Элементы.БезГруппы);
Иначе
- Элемент.Шрифт = ?(Вариант.Важный, ШрифтЖирный, Новый Шрифт);
+ Элемент.Шрифт = ?(Вариант.Важный, ШрифтВажнойНадписи, Новый Шрифт);
Найденные = ПодсистемыПрограммы.НайтиСтроки(Новый Структура("Ссылка", Вариант.Подсистема));
Подсистема = Найденные[0];
@@ -480,11 +492,10 @@
КонецЕсли;
Элементы.ИскатьВоВсехРазделах.Видимость = Не РежимНастройки И ЗначениеЗаполнено(СтрокаПоиска);
- Элементы.ОтборАвтор.Видимость = РежимНастройки;
- Элементы.ГруппаПоказыватьПодсказки.Видимость = РежимНастройки;
+ Элементы.ПоказыватьПодсказки.Видимость = РежимНастройки;
Элементы.БыстрыйДоступШапкаНадпись.ОтображениеПодсказки = ?(РежимНастройки, ОтображениеПодсказки.Кнопка, ОтображениеПодсказки.Нет);
Элементы.РезультатыПоискаИзДругихРазделовГруппа.Видимость = (ИскатьВоВсехРазделах = 1);
- Элементы.Настроить.Заголовок = ?(РежимНастройки, НСтр("ru = 'Вернуться к режиму просмотра'"), "");
+ Элементы.Настроить.Пометка = РежимНастройки;
// Заголовок.
СуффиксРежимаНастройки = " (" + НСтр("ru = 'настройка'") + ")";
@@ -565,14 +576,15 @@
Возврат;
КонецЕсли;
Отбор = Новый Структура("ИзмененПользователем", Истина);
- Колонки = "Ссылка, Подсистема, Видимость, БыстрыйДоступ";
- ИзмененныеНастройки = ДобавленныеВарианты.Выгрузить(Отбор, Колонки);
- Если ИзмененныеНастройки.Количество() = 0 Тогда
+
+ ПакетНастроек = ДобавленныеВарианты.Выгрузить(Отбор, "Ссылка, Подсистема, Видимость, БыстрыйДоступ");
+ Если ПакетНастроек.Количество() = 0 Тогда
Возврат;
КонецЕсли;
- ИзмененныеНастройки.Колонки.Ссылка.Имя = "Вариант";
- ИзмененныеНастройки.Колонки.Подсистема.Имя = "РазделИлиГруппа";
- РегистрыСведений.НастройкиВариантовОтчетов.СохранитьНастройкиПользователяВРазделе(ИзмененныеНастройки);
+ ПакетНастроек.Колонки.Ссылка.Имя = "Вариант";
+ Измерения = Новый Структура("Пользователь", Пользователи.ТекущийПользователь());
+ Ресурсы = Новый Структура;
+ РегистрыСведений.НастройкиВариантовОтчетов.ЗаписатьПакетНастроек(ПакетНастроек, Измерения, Ресурсы, Ложь);
КонецПроцедуры
&НаСервере
@@ -636,6 +648,14 @@
КонецЦикла;
КонецЦикла;
+ Если ТекущийРазделСсылка = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Раздел ""%1"" не подключен к подсистеме ""%2"".
+ |См. модуль ВариантыОтчетовПереопределяемый, процедуру ОпределитьРазделыСВариантамиОтчетов.'"),
+ Параметры.ПутьКПодсистеме,
+ ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(Неопределено));
+ КонецЕсли;
+
КлючНазначенияИспользования = "Раздел_" + Строка(ТекущийРазделСсылка.УникальныйИдентификатор());
КонецПроцедуры
@@ -712,7 +732,7 @@
ЗаголовокНадписи = СтрЗаменить(ЗаголовокНадписи, "%1", ПараметрыЗаполнения.ПределВывода);
Надпись = Элементы.Вставить("ПределВыводаПревышен", Тип("ДекорацияФормы"), Элементы.РезультатыПоискаИзДругихРазделов);
Надпись.Заголовок = ЗаголовокНадписи;
- Надпись.Шрифт = ШрифтЖирный;
+ Надпись.Шрифт = ШрифтВажнойНадписи;
Надпись.Высота = 2;
КонецЕсли;
КонецЕсли;
@@ -807,13 +827,13 @@
ПараметрыЗаполнения.КонтекстноеМеню.Изменить = Новый Структура("Видимость", Истина);
КонецЕсли;
- ПараметрыЗаполнения.Вставить("ГруппыИнтерфейса", Новый Массив);
- ПараметрыЗаполнения.ГруппыИнтерфейса.Добавить("БыстрыйДоступ");
- ПараметрыЗаполнения.ГруппыИнтерфейса.Добавить("БезГруппы");
- ПараметрыЗаполнения.ГруппыИнтерфейса.Добавить("СГруппой");
- ПараметрыЗаполнения.ГруппыИнтерфейса.Добавить("СмТакже");
+ ПараметрыЗаполнения.Вставить("ГруппыВажности", Новый Массив);
+ ПараметрыЗаполнения.ГруппыВажности.Добавить("БыстрыйДоступ");
+ ПараметрыЗаполнения.ГруппыВажности.Добавить("БезГруппы");
+ ПараметрыЗаполнения.ГруппыВажности.Добавить("СГруппой");
+ ПараметрыЗаполнения.ГруппыВажности.Добавить("СмТакже");
- Для Каждого ИмяГруппы Из ПараметрыЗаполнения.ГруппыИнтерфейса Цикл
+ Для Каждого ИмяГруппы Из ПараметрыЗаполнения.ГруппыВажности Цикл
ПараметрыЗаполнения.Вставить(ИмяГруппы, Новый Структура("Отбор, Варианты, Количество"));
КонецЦикла;
@@ -841,32 +861,12 @@
|;
|
|////////////////////////////////////////////////////////////////////////////////
- |ВЫБРАТЬ
- | ДобавленныеВарианты.Ссылка,
- | ДобавленныеВарианты.Подсистема,
- | ДобавленныеВарианты.Видимость,
- | ДобавленныеВарианты.БыстрыйДоступ
- |ПОМЕСТИТЬ втНастройки
- |ИЗ
- | &ДобавленныеВарианты КАК ДобавленныеВарианты
- |ГДЕ
- | ДобавленныеВарианты.ИзмененПользователем = ИСТИНА
- |;
- |
- |////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВариантыОтчетов.Ссылка,
| ПредопределенныеРазмещение.Подсистема,
| ПредопределенныеРазмещение.Важный,
| ПредопределенныеРазмещение.СмТакже,
| ВЫБОР
- | КОГДА ВариантыОтчетов.Автор = &ТекущийПользователь
- | ТОГДА ИСТИНА
- | КОГДА ВариантыОтчетов.ВидимостьПоУмолчаниюПереопределена
- | ТОГДА ВариантыОтчетов.ВидимостьПоУмолчанию
- | ИНАЧЕ ПредопределенныеРазмещение.Ссылка.ВидимостьПоУмолчанию
- | КОНЕЦ КАК ВидимостьПоУмолчанию,
- | ВЫБОР
| КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """"
| ТОГДА ВЫРАЗИТЬ(ПредопределенныеРазмещение.Ссылка.Описание КАК СТРОКА(1000))
| ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000))
@@ -875,7 +875,9 @@
| ВариантыОтчетов.Отчет,
| ВариантыОтчетов.ТипОтчета,
| ВариантыОтчетов.КлючВарианта,
- | ВариантыОтчетов.Автор
+ | ВариантыОтчетов.Автор,
+ | ВариантыОтчетов.ВидимостьПоУмолчанию,
+ | ВариантыОтчетов.Родитель
|ПОМЕСТИТЬ втПредопределенные
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
@@ -892,40 +894,34 @@
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВариантыРазмещение.Ссылка,
- | ВариантыРазмещение.РазделИлиГруппа,
+ | ВариантыРазмещение.Подсистема,
| ВариантыРазмещение.Использование,
| ВариантыРазмещение.Важный,
| ВариантыРазмещение.СмТакже,
| ВЫБОР
- | КОГДА ВариантыРазмещение.Ссылка.Автор = &ТекущийПользователь
- | ТОГДА ИСТИНА
- | КОГДА ВариантыРазмещение.Ссылка.ВидимостьПоУмолчаниюПереопределена
- | ИЛИ ВариантыРазмещение.Ссылка.Пользовательский
- | ИЛИ ВариантыРазмещение.Ссылка.ПредопределенныйВариант = ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка)
- | ТОГДА ВариантыРазмещение.Ссылка.ВидимостьПоУмолчанию
- | ИНАЧЕ ВариантыРазмещение.Ссылка.ПредопределенныйВариант.ВидимостьПоУмолчанию
- | КОНЕЦ КАК ВидимостьПоУмолчанию,
- | ВЫБОР
| КОГДА ПОДСТРОКА(ВариантыРазмещение.Ссылка.Описание, 1, 1) = """"
| И НЕ ВариантыРазмещение.Ссылка.Пользовательский
| ТОГДА ВЫРАЗИТЬ(ВариантыРазмещение.Ссылка.ПредопределенныйВариант.Описание КАК СТРОКА(1000))
| ИНАЧЕ ВЫРАЗИТЬ(ВариантыРазмещение.Ссылка.Описание КАК СТРОКА(1000))
| КОНЕЦ КАК Описание,
+ | ВариантыРазмещение.Ссылка.ТолькоДляАвтора,
| ВариантыРазмещение.Ссылка.Наименование,
| ВариантыРазмещение.Ссылка.Отчет,
| ВариантыРазмещение.Ссылка.ТипОтчета,
| ВариантыРазмещение.Ссылка.КлючВарианта,
- | ВариантыРазмещение.Ссылка.Автор
+ | ВариантыРазмещение.Ссылка.Автор,
+ | ВариантыРазмещение.Ссылка.Родитель,
+ | ВариантыРазмещение.Ссылка.ВидимостьПоУмолчанию
|ПОМЕСТИТЬ втВарианты
|ИЗ
| Справочник.ВариантыОтчетов.Размещение КАК ВариантыРазмещение
|ГДЕ
| (ВариантыРазмещение.Ссылка В (&ВариантыНайденныеПоиском)
- | ИЛИ ВариантыРазмещение.РазделИлиГруппа В (&ПодсистемыНайденныеПоиском))
+ | ИЛИ ВариантыРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))
| И (НЕ ВариантыРазмещение.Ссылка.ТолькоДляАвтора
| ИЛИ ВариантыРазмещение.Ссылка.Автор = &ТекущийПользователь)
| И ВариантыРазмещение.Ссылка.ПометкаУдаления = ЛОЖЬ
- | И ВариантыРазмещение.РазделИлиГруппа В(&МассивПодсистем)
+ | И ВариантыРазмещение.Подсистема В(&МассивПодсистем)
| И ВариантыРазмещение.Ссылка.Отчет В(&ОтчетыПользователя)
| И НЕ ВариантыРазмещение.Ссылка.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
|;
@@ -933,7 +929,7 @@
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ЕСТЬNULL(втВарианты.Ссылка, втПредопределенные.Ссылка) КАК Ссылка,
- | ЕСТЬNULL(втВарианты.РазделИлиГруппа, втПредопределенные.Подсистема) КАК Подсистема,
+ | ЕСТЬNULL(втВарианты.Подсистема, втПредопределенные.Подсистема) КАК Подсистема,
| ЕСТЬNULL(втВарианты.Важный, втПредопределенные.Важный) КАК Важный,
| ЕСТЬNULL(втВарианты.СмТакже, втПредопределенные.СмТакже) КАК СмТакже,
| ЕСТЬNULL(втВарианты.Наименование, втПредопределенные.Наименование) КАК Наименование,
@@ -942,13 +938,19 @@
| ЕСТЬNULL(втВарианты.Отчет, втПредопределенные.Отчет) КАК Отчет,
| ЕСТЬNULL(втВарианты.ТипОтчета, втПредопределенные.ТипОтчета) КАК ТипОтчета,
| ЕСТЬNULL(втВарианты.КлючВарианта, втПредопределенные.КлючВарианта) КАК КлючВарианта,
- | ЕСТЬNULL(втВарианты.ВидимостьПоУмолчанию, втПредопределенные.ВидимостьПоУмолчанию) КАК ВидимостьПоУмолчанию
+ | ЕСТЬNULL(втВарианты.ВидимостьПоУмолчанию, втПредопределенные.ВидимостьПоУмолчанию) КАК ВидимостьПоУмолчанию,
+ | ЕСТЬNULL(втВарианты.Родитель, втПредопределенные.Родитель) КАК Родитель,
+ | ВЫБОР
+ | КОГДА ЕСТЬNULL(втВарианты.Родитель, втПредопределенные.Родитель) = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЛОЖЬ
+ | КОНЕЦ КАК ВерхнийУровень
|ПОМЕСТИТЬ втВсеВарианты
|ИЗ
| втПредопределенные КАК втПредопределенные
| ПОЛНОЕ СОЕДИНЕНИЕ втВарианты КАК втВарианты
| ПО втПредопределенные.Ссылка = втВарианты.Ссылка
- | И втПредопределенные.Подсистема = втВарианты.РазделИлиГруппа
+ | И втПредопределенные.Подсистема = втВарианты.Подсистема
|ГДЕ
| (втВарианты.Использование = ИСТИНА
| ИЛИ втВарианты.Использование ЕСТЬ NULL )
@@ -974,14 +976,8 @@
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК Дополнительный,
- | ВЫБОР
- | КОГДА втНастройки.Видимость ЕСТЬ NULL
- | И НастройкиВариантовОтчетов.Видимость ЕСТЬ NULL
- | ТОГДА ЛОЖЬ
- | ИНАЧЕ ИСТИНА
- | КОНЕЦ КАК СвоиНастройки,
- | ЕСТЬNULL(втНастройки.Видимость, ЕСТЬNULL(НастройкиВариантовОтчетов.Видимость, втВсеВарианты.ВидимостьПоУмолчанию)) КАК Видимость,
- | ЕСТЬNULL(втНастройки.БыстрыйДоступ, ЕСТЬNULL(НастройкиВариантовОтчетов.БыстрыйДоступ, ЛОЖЬ)) КАК БыстрыйДоступ,
+ | ЕСТЬNULL(ЛичныеНастройки.Видимость, втВсеВарианты.ВидимостьПоУмолчанию) КАК Видимость,
+ | ЕСТЬNULL(ЛичныеНастройки.БыстрыйДоступ, ЛОЖЬ) КАК БыстрыйДоступ,
| ВЫБОР
| КОГДА втВсеВарианты.ТипОтчета = &ТипВнутренний
| ТОГДА втВсеВарианты.Отчет.Имя
@@ -994,20 +990,19 @@
| втВсеВарианты.Автор,
| втВсеВарианты.Отчет,
| втВсеВарианты.ТипОтчета,
- | втВсеВарианты.КлючВарианта
+ | втВсеВарианты.КлючВарианта,
+ | втВсеВарианты.Родитель,
+ | втВсеВарианты.ВерхнийУровень КАК ВерхнийУровень
|ИЗ
| втВсеВарианты КАК втВсеВарианты
| ЛЕВОЕ СОЕДИНЕНИЕ втПодсистемы КАК втПодсистемы
| ПО втВсеВарианты.Подсистема = втПодсистемы.Подсистема
- | ЛЕВОЕ СОЕДИНЕНИЕ втНастройки КАК втНастройки
- | ПО втВсеВарианты.Ссылка = втНастройки.Ссылка
- | И втВсеВарианты.Подсистема = втНастройки.Подсистема
- | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК НастройкиВариантовОтчетов
- | ПО втВсеВарианты.Подсистема = НастройкиВариантовОтчетов.РазделИлиГруппа
- | И втВсеВарианты.Ссылка = НастройкиВариантовОтчетов.Вариант
- | И (НастройкиВариантовОтчетов.Пользователь = &ТекущийПользователь)
+ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ЛичныеНастройки
+ | ПО втВсеВарианты.Подсистема = ЛичныеНастройки.Подсистема
+ | И втВсеВарианты.Ссылка = ЛичныеНастройки.Вариант
+ | И (ЛичныеНастройки.Пользователь = &ТекущийПользователь)
|ГДЕ
- | ЕСТЬNULL(втНастройки.Видимость, ЕСТЬNULL(НастройкиВариантовОтчетов.Видимость, втВсеВарианты.ВидимостьПоУмолчанию))
+ | ЕСТЬNULL(ЛичныеНастройки.Видимость, втВсеВарианты.ВидимостьПоУмолчанию)
|
|УПОРЯДОЧИТЬ ПО
| ПодсистемаПриоритет,
@@ -1027,9 +1022,6 @@
Если ИспользоватьПодсветку Тогда
ПараметрыПоиска.Вставить("СтрокаПоиска", СтрокаПоиска);
КонецЕсли;
- Если РежимНастройки И ЗначениеЗаполнено(ОтборАвтор) Тогда
- ПараметрыПоиска.Вставить("Автор", ОтборАвтор);
- КонецЕсли;
Если ТолькоТекущийРаздел Тогда
ПараметрыПоиска.Вставить("Подсистемы", МассивПодсистем);
КонецЕсли;
@@ -1040,7 +1032,6 @@
Запрос.УстановитьПараметр("МассивПодсистем", МассивПодсистем);
Запрос.УстановитьПараметр("ТаблицаПодсистем", ТаблицаПодсистем);
Запрос.УстановитьПараметр("РазделСсылка", ТекущийРазделСсылка);
- Запрос.УстановитьПараметр("ДобавленныеВарианты", ДобавленныеВарианты.Выгрузить(, "Ссылка, Подсистема, Видимость, БыстрыйДоступ, ИзмененПользователем"));
Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.ТекущийПользователь());
Запрос.УстановитьПараметр("ТипВнутренний", Перечисления.ТипыОтчетов.Внутренний);
Запрос.УстановитьПараметр("ТипДополнительный", Перечисления.ТипыОтчетов.Дополнительный);
@@ -1058,7 +1049,7 @@
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
"(ВариантыРазмещение.Ссылка В (&ВариантыНайденныеПоиском)
- | ИЛИ ВариантыРазмещение.РазделИлиГруппа В (&ПодсистемыНайденныеПоиском))",
+ | ИЛИ ВариантыРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском))",
"ВариантыРазмещение.Ссылка В (&ВариантыНайденныеПоиском)");
Запрос.Текст = СтрЗаменить(
Запрос.Текст,
@@ -1075,14 +1066,16 @@
КонецЕсли;
Если РежимНастройки Или ИспользоватьПодсветку Тогда
- Запрос.Текст = СтрЗаменить(Запрос.Текст,
+ УдаляемыйФрагмент =
"ГДЕ
- | ЕСТЬNULL(втНастройки.Видимость, ЕСТЬNULL(НастройкиВариантовОтчетов.Видимость, втВсеВарианты.ВидимостьПоУмолчанию))",
- "");
+ | ЕСТЬNULL(ЛичныеНастройки.Видимость, втВсеВарианты.ВидимостьПоУмолчанию)";
+ Запрос.Текст = СтрЗаменить(Запрос.Текст, УдаляемыйФрагмент, "");
КонецЕсли;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
+ ТаблицаРезультат.Колонки.Добавить("ВыводитсяВместеСОсновным", Новый ОписаниеТипов("Булево"));
+ ТаблицаРезультат.Колонки.Добавить("КоличествоПодчиненных", Новый ОписаниеТипов("Число"));
Если ИспользоватьПодсветку Тогда
Для Каждого КлючИЗначение Из РезультатПоиска.ВариантыСвязанныеСПодсистемами Цикл
@@ -1134,12 +1127,13 @@
Если ПараметрыЗаполнения.ВариантыКоличество = 0 Тогда
// Вывод надписи, поясняющей почему нет вариантов (только для текущего раздела).
Если ПараметрыЗаполнения.ВыводятсяВариантыТекущегоРаздела Тогда
- Надпись = Элементы.Вставить("СписокОтчетовПуст", Тип("ДекорацияФормы"), Элементы.БыстрыйДоступКолонка1);
- Если ЗначениеЗаполнено(СтрокаПоиска) Или ЗначениеЗаполнено(ОтборАвтор) Тогда
+ Надпись = Элементы.Вставить("СписокОтчетовПуст", Тип("ДекорацияФормы"), Элементы.БезГруппыКолонка1);
+ Если ЗначениеЗаполнено(СтрокаПоиска) Тогда
Если ПараметрыЗаполнения.ТолькоТекущийРаздел Тогда
Надпись.Заголовок = НСтр("ru = 'Отчеты не найдены.'");
Иначе
Надпись.Заголовок = НСтр("ru = 'Отчеты в текущем разделе не найдены.'");
+ Надпись.Высота = 2;
КонецЕсли;
Иначе
Надпись.Заголовок = НСтр("ru = 'В панели отчетов этого раздела не размещено ни одного отчета.'");
@@ -1161,8 +1155,8 @@
КонецЕсли;
ПодсистемыРаздела.Сортировать("Приоритет ВОЗР"); // Сортировка по иерархии
- ПараметрыЗаполнения.Вставить("РазделСсылка", РазделСсылка);
- ПараметрыЗаполнения.Вставить("ПодсистемыРаздела", ПодсистемыРаздела);
+ ПараметрыЗаполнения.Вставить("РазделСсылка", РазделСсылка);
+ ПараметрыЗаполнения.Вставить("ПодсистемыРаздела", ПодсистемыРаздела);
ОпределитьГруппыИДекорацииДляВыводаВариантов(ПараметрыЗаполнения);
@@ -1172,7 +1166,7 @@
Возврат;
КонецЕсли;
- Для Каждого ИмяГруппы Из ПараметрыЗаполнения.ГруппыИнтерфейса Цикл
+ Для Каждого ИмяГруппы Из ПараметрыЗаполнения.ГруппыВажности Цикл
ПараметрыГруппы = ПараметрыЗаполнения[ИмяГруппы];
Если ПараметрыЗаполнения.ОсталосьВывести <= 0 Тогда
ПараметрыГруппы.Варианты = Новый Массив;
@@ -1206,11 +1200,11 @@
КонецЕсли;
ПараметрыЗаполнения.ИмяГруппы = ИмяГруппы;
- Если ИмяГруппы = "СГруппой" Тогда
+ //Если ИмяГруппы = "СГруппой" Тогда
ВывестиВариантыСГруппой(ПараметрыЗаполнения);
- Иначе
- ВывестиВариантыБезГруппы(ПараметрыЗаполнения);
- КонецЕсли;
+ //Иначе
+ // ВывестиВариантыБезГруппы(ПараметрыЗаполнения);
+ //КонецЕсли;
КонецЦикла;
ЕстьБыстрыйДоступ = (ПараметрыЗаполнения.БыстрыйДоступ.Количество > 0);
@@ -1282,8 +1276,8 @@
ЗаголовокРаздела = ГруппаРаздела.РасширеннаяПодсказка;
ЗаголовокРаздела.Заголовок = РазделЗаголовок;
- ЗаголовокРаздела.Шрифт = Новый Шрифт(ШрифтЖирный, , 10);
- ЗаголовокРаздела.ЦветТекста = ЦветГруппыВариантовОтчетов;
+ ЗаголовокРаздела.Шрифт = ШрифтРаздела;
+ ЗаголовокРаздела.ЦветТекста = ЦветРаздела;
ЗаголовокРаздела.Высота = 2;
ЗаголовокРаздела.Гиперссылка = Истина;
ЗаголовокРаздела.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Верх;
@@ -1304,7 +1298,7 @@
СкопироватьЭлемент(ПараметрыЗаполнения.Префикс, ГруппаРаздела, "Колонки", 2);
Элементы.Удалить(Элементы[ПараметрыЗаполнения.Префикс + "БыстрыйДоступПодсказкаКогдаНеНастроен"]);
- Элементы[ПараметрыЗаполнения.Префикс + "БыстрыйДоступШапкаНадпись"].РасширеннаяПодсказка.Заголовок = "";
+ Элементы[ПараметрыЗаполнения.Префикс + "БыстрыйДоступШапка"].РасширеннаяПодсказка.Заголовок = "";
КонецПроцедуры
&НаСервере
@@ -1331,63 +1325,6 @@
Возврат НовыйЭлемент;
КонецФункции
-&НаСервере
-Процедура ВывестиВариантыБезГруппы(ПараметрыЗаполнения)
- ПараметрыГруппы = ПараметрыЗаполнения[ПараметрыЗаполнения.ИмяГруппы];
- Варианты = ПараметрыГруппы.Варианты;
- КоличествоВариантов = ПараметрыГруппы.Количество;
-
- // Базовые свойства группы 2 уровня
- ГруппаУровня2 = Элементы.Найти(ПараметрыЗаполнения.Префикс + ПараметрыЗаполнения.ИмяГруппы);
- ВБыстрыйДоступ = (ПараметрыЗаполнения.ИмяГруппы = "БыстрыйДоступ");
- ВКореньПодсистемы = (ПараметрыЗаполнения.ИмяГруппы = "БезГруппы");
-
- Если РежимНастройки Тогда
- ПараметрыЗаполнения.КонтекстноеМеню.УбратьИзБыстрогоДоступа.Видимость = ВБыстрыйДоступ;
- ПараметрыЗаполнения.КонтекстноеМеню.ПереместитьВБыстрыйДоступ.Видимость = Не ВБыстрыйДоступ;
- КонецЕсли;
-
- // Сортировка вариантов
- Если ВКореньПодсистемы Тогда
- Варианты.Сортировать("Важный УБЫВ, Наименование ВОЗР"); // Есть важные
- Иначе
- Варианты.Сортировать("Наименование ВОЗР"); // Нет важных
- КонецЕсли;
-
- // Переменные для поддержки динамики групп 3 уровня
- КоличествоКолонок = ГруппаУровня2.ПодчиненныеЭлементы.Количество();
- ГруппаУровня3Отсечка = Цел(КоличествоВариантов / КоличествоКолонок); // Количество вариантов для вывода в одной колонке
- ГруппаУровня3Добавка = КоличествоВариантов - ГруппаУровня3Отсечка * КоличествоКолонок; // Остаток распределения вариантов по колонкам
-
- ГруппаУровня3Индекс = 0; // Индекс текущей колонки
- ГруппаУровня3НомерЭлемента = 0; // Номер текущего варианта в текущей колонке
- ГруппаУровня3 = ГруппаУровня2.ПодчиненныеЭлементы.Получить(ГруппаУровня3Индекс); // Текущая колонка
-
- ДобавляемыеРеквизиты = Новый Массив;
- Для Каждого Вариант Из Варианты Цикл
- ГруппаУровня3НомерЭлемента = ГруппаУровня3НомерЭлемента + 1;
-
- // Переход к следующей группе верхнего уровня
- Если ГруппаУровня3НомерЭлемента > ГруппаУровня3Отсечка + ?(ГруппаУровня3Добавка > 0, 1, 0) Тогда
- ГруппаУровня3НомерЭлемента = 1;
- ГруппаУровня3Индекс = ГруппаУровня3Индекс + 1;
- ГруппаУровня3 = ГруппаУровня2.ПодчиненныеЭлементы.Получить(ГруппаУровня3Индекс);
- ГруппаУровня3Добавка = ГруппаУровня3Добавка - 1;
- КонецЕсли;
-
- ДобавитьЭлементыВариантаОтчета(ПараметрыЗаполнения, Вариант, ГруппаУровня3);
-
- КонецЦикла;
-
- Если КоличествоВариантов > 1 И КоличествоВариантов < КоличествоКолонок Тогда
- Для ГруппаУровня3Индекс = КоличествоВариантов По КоличествоКолонок - 1 Цикл
- ГруппаУровня3 = ГруппаУровня2.ПодчиненныеЭлементы.Получить(ГруппаУровня3Индекс);
- ДобавитьПустуюДекорацию(ПараметрыЗаполнения, ГруппаУровня3);
- КонецЦикла;
- КонецЕсли;
-
-КонецПроцедуры
-
&НаСервере
Процедура ВывестиВариантыСГруппой(ПараметрыЗаполнения)
ПараметрыГруппы = ПараметрыЗаполнения[ПараметрыЗаполнения.ИмяГруппы];
@@ -1401,8 +1338,28 @@
ГруппаУровня2Имя = ПараметрыЗаполнения.ИмяГруппы;
ГруппаУровня2 = Элементы.Найти(ПараметрыЗаполнения.Префикс + ГруппаУровня2Имя);
+ ВыводБезГрупп = (ГруппаУровня2Имя = "БыстрыйДоступ" Или ГруппаУровня2Имя = "СмТакже");
+
// Сортировка вариантов
- Варианты.Сортировать("ПодсистемаПриоритет ВОЗР, Важный УБЫВ, Наименование ВОЗР"); // Есть группы и важные
+ Варианты.Сортировать("ПодсистемаПриоритет ВОЗР, Важный УБЫВ, Наименование ВОЗР"); // Есть группы и важные // ВерхнийУровень УБЫВ,
+ НайденныеРодители = Варианты.НайтиСтроки(Новый Структура("ВерхнийУровень", Истина));
+ Для Каждого ВариантРодитель Из НайденныеРодители Цикл
+ НайденныеПодчиненные = Варианты.НайтиСтроки(Новый Структура("Родитель, Подсистема", ВариантРодитель.Ссылка, ВариантРодитель.Подсистема));
+ ТекущийИндекс = Варианты.Индекс(ВариантРодитель);
+ Для Каждого ВариантПодчиненный Из НайденныеПодчиненные Цикл
+ ВариантРодитель.КоличествоПодчиненных = ВариантРодитель.КоличествоПодчиненных + 1;
+ ВариантПодчиненный.ВыводитсяВместеСОсновным = Истина;
+ ИндексПодчиненного = Варианты.Индекс(ВариантПодчиненный);
+ Если ИндексПодчиненного < ТекущийИндекс Тогда
+ Варианты.Сдвинуть(ИндексПодчиненного, ТекущийИндекс - ИндексПодчиненного);
+ ИначеЕсли ИндексПодчиненного = ТекущийИндекс Тогда
+ ТекущийИндекс = ТекущийИндекс + 1;
+ Иначе
+ Варианты.Сдвинуть(ИндексПодчиненного, ТекущийИндекс - ИндексПодчиненного + 1);
+ ТекущийИндекс = ТекущийИндекс + 1;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
// Моделирование распределения вариантов с учетом вложенности подсистем
ДеревоРаспределения = Новый ДеревоЗначений;
@@ -1415,6 +1372,7 @@
ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхПодсистем", Новый ОписаниеТипов("Число"));
ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхПустыхСтрок", Новый ОписаниеТипов("Число"));
ДеревоРаспределения.Колонки.Добавить("УровеньВложенности", Новый ОписаниеТипов("Число"));
+ ДеревоРаспределения.Колонки.Добавить("ВерхнийУровень", Новый ОписаниеТипов("Булево"));
МаксимальныйУровеньВложенности = 0;
ТекущаяПодсистема = Неопределено;
@@ -1430,7 +1388,16 @@
СтрокаДерева.Подсистема = Подсистема;
СтрокаДерева.ПодсистемаСсылка = Подсистема.Ссылка;
- СтрокаДерева.Варианты = Варианты.НайтиСтроки(Новый Структура("Подсистема", Подсистема.Ссылка));
+
+ Если ВыводБезГрупп Тогда
+ Если Подсистема.Ссылка = ПараметрыЗаполнения.РазделСсылка Тогда
+ Для Каждого Вариант Из Варианты Цикл
+ СтрокаДерева.Варианты.Добавить(Вариант);
+ КонецЦикла;
+ КонецЕсли;
+ Иначе
+ СтрокаДерева.Варианты = Варианты.НайтиСтроки(Новый Структура("Подсистема", Подсистема.Ссылка));
+ КонецЕсли;
СтрокаДерева.КоличествоВариантов = СтрокаДерева.Варианты.Количество();
ЕстьВарианты = СтрокаДерева.КоличествоВариантов > 0;
@@ -1460,14 +1427,16 @@
ДеревоРаспределения.Колонки.Добавить("ГруппаФормы");
ДеревоРаспределения.Колонки.Добавить("НачатВывод", Новый ОписаниеТипов("Булево"));
КорневаяСтрока = ДеревоРаспределения.Строки[0];
- КоличествоСтрок = КорневаяСтрока.ВсегоВложенныхВариантов + КорневаяСтрока.ВсегоВложенныхПодсистем + Макс(КорневаяСтрока.ВсегоВложенныхПустыхСтрок - 2, 0);
+ КоличествоСтрок = КорневаяСтрока.КоличествоВариантов + КорневаяСтрока.ВсегоВложенныхВариантов + КорневаяСтрока.ВсегоВложенныхПодсистем + Макс(КорневаяСтрока.ВсегоВложенныхПустыхСтрок - 2, 0);
// Переменные для поддержки динамики групп 3 уровня
КоличествоКолонок = ГруппаУровня2.ПодчиненныеЭлементы.Количество();
- Если КоличествоКолонок > 1 И КорневаяСтрока.ВсегоВложенныхВариантов <= 5 Тогда
- КоличествоКолонок = 1;
- ИначеЕсли КоличествоКолонок > 2 И КорневаяСтрока.ВсегоВложенныхВариантов <= 10 Тогда
- КоличествоКолонок = 2;
+ Если КорневаяСтрока.КоличествоВариантов = 0 Тогда
+ Если КоличествоКолонок > 1 И КорневаяСтрока.ВсегоВложенныхВариантов <= 5 Тогда
+ КоличествоКолонок = 1;
+ ИначеЕсли КоличествоКолонок > 2 И КорневаяСтрока.ВсегоВложенныхВариантов <= 10 Тогда
+ КоличествоКолонок = 2;
+ КонецЕсли;
КонецЕсли;
ГруппаУровня3Отсечка = Макс(Цел(КоличествоСтрок / КоличествоКолонок), 2); // Количество вариантов для вывода в одной колонке
@@ -1492,14 +1461,10 @@
Рекурсия.Вставить("ГруппаУровня3Отсечка", ГруппаУровня3Отсечка);
Рекурсия.Вставить("НомерТекущейКолонки", 1);
Рекурсия.Вставить("ЭтоПоследняяКолонка", Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок Или КоличествоСтрок <= 6);
- Рекурсия.Вставить("СвободноСтрок", ГруппаУровня3Отсечка);// + ?(ГруппаУровня3Добавка > 0, 1, 0);
+ Рекурсия.Вставить("СвободноСтрок", ГруппаУровня3Отсечка);
Рекурсия.Вставить("НачатВыводВТекущейКолонке", Ложь);
- ПараметрыЗаполнения.Вставить("Рекурсия", Рекурсия);
- //ПараметрыЗаполнения.Вставить("ВариантыСГруппой", Варианты);
-
- // Заполнение порядка вывода по данным дерева распределения.
- ЗаполнитьПорядокВывода(ПорядокВывода, КорневаяСтрока, ПараметрыЗаполнения);
+ ЗаполнитьПорядокВывода(ПорядокВывода, Неопределено, КорневаяСтрока, Рекурсия, ПараметрыЗаполнения);
// Вывод в форму
НомерТекущейКолонки = 0;
@@ -1515,20 +1480,31 @@
Если СтрокаПорядкаВывода.ЭтоПодсистема Тогда
- ТекущийУровеньВложенности = СтрокаПорядкаВывода.УровеньВложенности;
- ВГруппу = ТекущиеГруппыПоУровнямВложенности.Получить(СтрокаПорядкаВывода.УровеньВложенности - 1);
- ТекущаяГруппа = ДобавитьГруппуПодсистемы(ПараметрыЗаполнения, СтрокаПорядкаВывода, ВГруппу);
- ТекущиеГруппыПоУровнямВложенности.Вставить(ТекущийУровеньВложенности, ТекущаяГруппа);
+ Если СтрокаПорядкаВывода.ПодсистемаСсылка = ПараметрыЗаполнения.РазделСсылка Тогда
+ ТекущийУровеньВложенности = 0;
+ ТекущаяГруппа = ТекущиеГруппыПоУровнямВложенности.Получить(0);
+ Иначе
+ ТекущийУровеньВложенности = СтрокаПорядкаВывода.УровеньВложенности;
+ ВГруппу = ТекущиеГруппыПоУровнямВложенности.Получить(СтрокаПорядкаВывода.УровеньВложенности - 1);
+ ТекущаяГруппа = ДобавитьГруппуПодсистемы(ПараметрыЗаполнения, СтрокаПорядкаВывода, ВГруппу);
+ ТекущиеГруппыПоУровнямВложенности.Вставить(ТекущийУровеньВложенности, ТекущаяГруппа);
+ КонецЕсли;
ИначеЕсли СтрокаПорядкаВывода.ЭтоВариант Тогда
- Если ТекущийУровеньВложенности > СтрокаПорядкаВывода.УровеньВложенности Тогда
+ Если ТекущийУровеньВложенности <> СтрокаПорядкаВывода.УровеньВложенности Тогда
ТекущийУровеньВложенности = СтрокаПорядкаВывода.УровеньВложенности;
ТекущаяГруппа = ТекущиеГруппыПоУровнямВложенности.Получить(ТекущийУровеньВложенности);
КонецЕсли;
ДобавитьЭлементыВариантаОтчета(ПараметрыЗаполнения, СтрокаПорядкаВывода.Вариант, ТекущаяГруппа, СтрокаПорядкаВывода.УровеньВложенности);
+ Если СтрокаПорядкаВывода.Вариант.КоличествоПодчиненных > 0 Тогда
+ ТекущийУровеньВложенности = ТекущийУровеньВложенности + 1;
+ ТекущаяГруппа = ДобавитьГруппуСОтступом(ПараметрыЗаполнения, СтрокаПорядкаВывода, ТекущаяГруппа);
+ ТекущиеГруппыПоУровнямВложенности.Вставить(ТекущийУровеньВложенности, ТекущаяГруппа);
+ КонецЕсли;
+
ИначеЕсли СтрокаПорядкаВывода.ЭтоПустаяСтрока Тогда
ВГруппу = ТекущиеГруппыПоУровнямВложенности.Получить(СтрокаПорядкаВывода.УровеньВложенности - 1);
@@ -1549,128 +1525,117 @@
КонецПроцедуры
&НаСервере
-Процедура ЗаполнитьПорядокВывода(ПорядокВывода, СтрокаРодителя, ПараметрыЗаполнения)
+Процедура ЗаполнитьПорядокВывода(ПорядокВывода, СтрокаРодителя, СтрокаДерева, Рекурсия, ПараметрыЗаполнения)
- Рекурсия = ПараметрыЗаполнения.Рекурсия;
+ Если Не Рекурсия.ЭтоПоследняяКолонка И Рекурсия.СвободноСтрок <= 0 Тогда // текущая колонка исчерпана
+ // Переход к новой колонке.
+ Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1; // Пустая группа, которую не надо выводить.
+ Рекурсия.НомерТекущейКолонки = Рекурсия.НомерТекущейКолонки + 1;
+ Рекурсия.ЭтоПоследняяКолонка = (Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок);
+ СвободноКолонок = Рекурсия.КоличествоКолонок - Рекурсия.НомерТекущейКолонки + 1;
+ Рекурсия.ГруппаУровня3Отсечка = Макс(Цел(Рекурсия.ВсегоОсталосьВывести / СвободноКолонок), 2); // Количество вариантов для вывода в одной колонке
+ Рекурсия.СвободноСтрок = Рекурсия.ГруппаУровня3Отсечка; // Количество вариантов для вывода в одной колонке
+
+ // Вывод иерархии / Повтор иерархии с добавкой "(продолжение)" если вывод строк текущего родителя уже был начат в предыдущей колонке.
+ ТекущийРодитель = СтрокаРодителя;
+ Пока ТекущийРодитель <> Неопределено И ТекущийРодитель.ПодсистемаСсылка <> ПараметрыЗаполнения.РазделСсылка Цикл
+
+ // Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк.
+ ВывестиПодсистему = ПорядокВывода.Добавить();
+ ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки;
+ ВывестиПодсистему.ЭтоПодсистема = Истина;
+ ВывестиПодсистему.ЭтоПродолжение = СтрокаРодителя.НачатВывод;
+ ВывестиПодсистему.СтрокаДерева = СтрокаДерева;
+ ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
+ ЗаполнитьЗначенияСвойств(ВывестиПодсистему, ТекущийРодитель, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
+
+ ТекущийРодитель = ТекущийРодитель.Родитель;
+ КонецЦикла;
+
+ Рекурсия.НачатВыводВТекущейКолонке = Ложь;
+
+ КонецЕсли;
- Для Каждого СтрокаДерева Из СтрокаРодителя.Строки Цикл
+ Если (СтрокаДерева.КоличествоВариантов > 0 Или СтрокаДерева.ВсегоВложенныхВариантов > 0) И Рекурсия.НачатВыводВТекущейКолонке И СтрокаРодителя.НачатВывод Тогда
+ // Вывод пустой строки.
+ Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1;
+ ВывестиПустуюСтроку = ПорядокВывода.Добавить();
+ ВывестиПустуюСтроку.НомерКолонки = Рекурсия.НомерТекущейКолонки;
+ ВывестиПустуюСтроку.ЭтоПустаяСтрока = Истина;
+ ВывестиПустуюСтроку.СтрокаДерева = СтрокаДерева;
+ ВывестиПустуюСтроку.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
+ ЗаполнитьЗначенияСвойств(ВывестиПустуюСтроку, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
- Если Не Рекурсия.ЭтоПоследняяКолонка И Рекурсия.СвободноСтрок <= 0 Тогда // текущая колонка исчерпана
- // Переход к новой колонке.
- Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1; // Пустая группа, которую не надо выводить.
- Рекурсия.НомерТекущейКолонки = Рекурсия.НомерТекущейКолонки + 1;
- Рекурсия.ЭтоПоследняяКолонка = (Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок);
- СвободноКолонок = Рекурсия.КоличествоКолонок - Рекурсия.НомерТекущейКолонки + 1;
- Рекурсия.ГруппаУровня3Отсечка = Макс(Цел(Рекурсия.ВсегоОсталосьВывести / СвободноКолонок), 2); // Количество вариантов для вывода в одной колонке
- Рекурсия.СвободноСтрок = Рекурсия.ГруппаУровня3Отсечка; // Количество вариантов для вывода в одной колонке
-
- // Вывод иерархии / Повтор иерархии с добавкой "(продолжение)" если вывод строк текущего родителя уже был начат в предыдущей колонке.
- ТекущийРодитель = СтрокаРодителя;
- Пока ТекущийРодитель.ПодсистемаСсылка <> ПараметрыЗаполнения.РазделСсылка Цикл
-
- // Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк.
- ВывестиПодсистему = ПорядокВывода.Добавить();
- ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки;
- ВывестиПодсистему.ЭтоПодсистема = Истина;
- ВывестиПодсистему.ЭтоПродолжение = СтрокаРодителя.НачатВывод;
- ВывестиПодсистему.СтрокаДерева = СтрокаДерева;
- ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
- ЗаполнитьЗначенияСвойств(ВывестиПодсистему, ТекущийРодитель, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
-
- ТекущийРодитель = ТекущийРодитель.Родитель;
- КонецЦикла;
-
- Рекурсия.НачатВыводВТекущейКолонке = Ложь;
-
- КонецЕсли;
-
- Если (СтрокаДерева.КоличествоВариантов > 0 Или СтрокаДерева.ВсегоВложенныхВариантов > 0) И Рекурсия.НачатВыводВТекущейКолонке И СтрокаРодителя.НачатВывод Тогда
- // Вывод пустой строки.
- Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1;
- ВывестиПустуюСтроку = ПорядокВывода.Добавить();
- ВывестиПустуюСтроку.НомерКолонки = Рекурсия.НомерТекущейКолонки;
- ВывестиПустуюСтроку.ЭтоПустаяСтрока = Истина;
- ВывестиПустуюСтроку.СтрокаДерева = СтрокаДерева;
- ВывестиПустуюСтроку.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
- ЗаполнитьЗначенияСвойств(ВывестиПустуюСтроку, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
-
- // Учет строк, занятых пустой строкой
- Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1;
- КонецЕсли;
-
- // Вывод группы.
+ // Учет строк, занятых пустой строкой
+ Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1;
+ КонецЕсли;
+
+ // Вывод группы.
+ Если СтрокаРодителя <> Неопределено Тогда
ВывестиПодсистему = ПорядокВывода.Добавить();
ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки;
ВывестиПодсистему.ЭтоПодсистема = Истина;
ВывестиПодсистему.СтрокаДерева = СтрокаДерева;
ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
ЗаполнитьЗначенияСвойств(ВывестиПодсистему, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
+ КонецЕсли;
+
+ Если СтрокаДерева.КоличествоВариантов > 0 Тогда
- Если СтрокаДерева.КоличествоВариантов > 0 Тогда
+ // Учет строки, занятой группой.
+ Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1;
+ Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1;
+
+ СтрокаДерева.НачатВывод = Истина;
+ Рекурсия.НачатВыводВТекущейКолонке = Истина;
+
+ Если Рекурсия.ЭтоПоследняяКолонка
+ Или СтрокаРодителя <> Неопределено
+ И (СтрокаДерева.КоличествоВариантов <= 5
+ Или СтрокаДерева.КоличествоВариантов - 2 <= Рекурсия.СвободноСтрок + 2) Тогда
- // Учет строки, занятой группой.
- Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1;
- Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1;
+ // Вывод всех в текущую колонку.
+ ВозможноПродолжение = Ложь;
+ КоличествоВТекущуюКолонку = СтрокаДерева.КоличествоВариантов;
- СтрокаДерева.НачатВывод = Истина;
- Рекурсия.НачатВыводВТекущейКолонке = Истина;
+ Иначе
- Если Рекурсия.ЭтоПоследняяКолонка
- Или СтрокаДерева.КоличествоВариантов <= 5
- Или СтрокаДерева.КоличествоВариантов - 2 <= Рекурсия.СвободноСтрок + 2 Тогда
-
- // Вывод всех в текущую колонку.
- НачалоСПродолжением = Ложь;
- КоличествоВТекущуюКолонку = СтрокаДерева.КоличествоВариантов;
-
- Иначе
-
- // Частичный вывод в текущую колонку с продолжением в следующей.
- НачалоСПродолжением = Истина;
- КоличествоВТекущуюКолонку = Макс(Рекурсия.СвободноСтрок + 2, 3);
-
- КонецЕсли;
+ // Частичный вывод в текущую колонку с продолжением в следующей.
+ ВозможноПродолжение = Истина;
+ КоличествоВТекущуюКолонку = Макс(Рекурсия.СвободноСтрок + 2, 3);
- // Регистрация вариантов в текущей колонке / Довывод вариантов в новой колонке.
- ВариантовВыведено = 0;
- Для Каждого Вариант Из СтрокаДерева.Варианты Цикл
- // СтрокаДерева.Варианты - это результат поиска по таблице значений.
- // Код рассчитан на то, что сортировка результата поиска не отличается от сортировки строк.
- // Если это не так, то исходную таблицу необходимо скопировать
- // с фильтром по подсистеме и отсортировать по наименованию.
+ КонецЕсли;
+
+ // Регистрация вариантов в текущей колонке / Довывод вариантов в новой колонке.
+ ВариантовВыведено = 0;
+ Для Каждого Вариант Из СтрокаДерева.Варианты Цикл
+ // СтрокаДерева.Варианты - это результат поиска по таблице значений.
+ // Код рассчитан на то, что сортировка результата поиска не отличается от сортировки строк.
+ // Если это не так, то исходную таблицу необходимо скопировать
+ // с фильтром по подсистеме и отсортировать по наименованию.
+
+ Если ВозможноПродолжение
+ И Не Рекурсия.ЭтоПоследняяКолонка
+ И Не Вариант.ВыводитсяВместеСОсновным
+ И ВариантовВыведено >= КоличествоВТекущуюКолонку Тогда
+ // Переход к новой колонке.
+ Рекурсия.НомерТекущейКолонки = Рекурсия.НомерТекущейКолонки + 1;
+ Рекурсия.ЭтоПоследняяКолонка = (Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок);
+ СвободноКолонок = Рекурсия.КоличествоКолонок - Рекурсия.НомерТекущейКолонки + 1;
+ Рекурсия.ГруппаУровня3Отсечка = Макс(Цел(Рекурсия.ВсегоОсталосьВывести / СвободноКолонок), 2); // Количество вариантов для вывода в одной колонке
+ Рекурсия.СвободноСтрок = Рекурсия.ГруппаУровня3Отсечка; // Количество вариантов для вывода в одной колонке
- Если НачалоСПродолжением И ВариантовВыведено = КоличествоВТекущуюКолонку Тогда
- // Переход к новой колонке.
- Рекурсия.НомерТекущейКолонки = Рекурсия.НомерТекущейКолонки + 1;
- Рекурсия.ЭтоПоследняяКолонка = (Рекурсия.НомерТекущейКолонки = Рекурсия.КоличествоКолонок);
- СвободноКолонок = Рекурсия.КоличествоКолонок - Рекурсия.НомерТекущейКолонки + 1;
- Рекурсия.ГруппаУровня3Отсечка = Макс(Цел(Рекурсия.ВсегоОсталосьВывести / СвободноКолонок), 2); // Количество вариантов для вывода в одной колонке
- Рекурсия.СвободноСтрок = Рекурсия.ГруппаУровня3Отсечка; // Количество вариантов для вывода в одной колонке
+ Если Рекурсия.ЭтоПоследняяКолонка Тогда
+ КоличествоВТекущуюКолонку = -1;
+ Иначе
+ КоличествоВТекущуюКолонку = Макс(Мин(Рекурсия.СвободноСтрок, СтрокаДерева.КоличествоВариантов - ВариантовВыведено), 3);
+ КонецЕсли;
+ ВариантовВыведено = 0;
+
+ // Повтор иерархии с добавкой "(продолжение)".
+ ТекущийРодитель = СтрокаРодителя;
+ Пока ТекущийРодитель <> Неопределено И ТекущийРодитель.ПодсистемаСсылка <> ПараметрыЗаполнения.РазделСсылка Цикл
- Если Рекурсия.ЭтоПоследняяКолонка Тогда
- КоличествоВТекущуюКолонку = -1;
- Иначе
- КоличествоВТекущуюКолонку = Макс(Мин(Рекурсия.СвободноСтрок, СтрокаДерева.КоличествоВариантов - ВариантовВыведено), 3);
- КонецЕсли;
- ВариантовВыведено = 0;
-
- // Повтор иерархии с добавкой "(продолжение)".
- ТекущийРодитель = СтрокаРодителя;
- Пока ТекущийРодитель.ПодсистемаСсылка <> ПараметрыЗаполнения.РазделСсылка Цикл
-
- // Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк.
- ВывестиПодсистему = ПорядокВывода.Добавить();
- ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки;
- ВывестиПодсистему.ЭтоПодсистема = Истина;
- ВывестиПодсистему.ЭтоПродолжение = Истина;
- ВывестиПодсистему.СтрокаДерева = СтрокаДерева;
- ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
- ЗаполнитьЗначенияСвойств(ВывестиПодсистему, ТекущийРодитель, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
-
- ТекущийРодитель = ТекущийРодитель.Родитель;
- КонецЦикла;
-
- // Вывод группы с добавкой "(продолжение)".
// Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк.
ВывестиПодсистему = ПорядокВывода.Добавить();
ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки;
@@ -1678,40 +1643,60 @@
ВывестиПодсистему.ЭтоПродолжение = Истина;
ВывестиПодсистему.СтрокаДерева = СтрокаДерева;
ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
- ЗаполнитьЗначенияСвойств(ВывестиПодсистему, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
+ ЗаполнитьЗначенияСвойств(ВывестиПодсистему, ТекущийРодитель, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
- // Учет строки, занятой группой.
- Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1;
- КонецЕсли;
+ ТекущийРодитель = ТекущийРодитель.Родитель;
+ КонецЦикла;
- Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1;
- ВывестиВариант = ПорядокВывода.Добавить();
- ВывестиВариант.НомерКолонки = Рекурсия.НомерТекущейКолонки;
- ВывестиВариант.ЭтоВариант = Истина;
- ВывестиВариант.СтрокаДерева = СтрокаДерева;
- ВывестиВариант.Вариант = Вариант;
- ВывестиВариант.ВариантСсылка = Вариант.Ссылка;
- ВывестиВариант.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
- ЗаполнитьЗначенияСвойств(ВывестиВариант, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
+ // Вывод группы с добавкой "(продолжение)".
+ // Рекурсия.ВсегоОсталосьВывести при этом не уменьшается, т.к. вывод продолжения увеличивает количество строк.
+ ВывестиПодсистему = ПорядокВывода.Добавить();
+ ВывестиПодсистему.НомерКолонки = Рекурсия.НомерТекущейКолонки;
+ ВывестиПодсистему.ЭтоПодсистема = Истина;
+ ВывестиПодсистему.ЭтоПродолжение = Истина;
+ ВывестиПодсистему.СтрокаДерева = СтрокаДерева;
+ ВывестиПодсистему.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
+ ЗаполнитьЗначенияСвойств(ВывестиПодсистему, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
- ВариантовВыведено = ВариантовВыведено + 1;
-
- // Учет строк, занятых вариантами.
+ // Учет строки, занятой группой.
Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1;
- КонецЦикла;
+ КонецЕсли;
- КонецЕсли;
-
- // Регистрация вложенных строк.
- ЗаполнитьПорядокВывода(ПорядокВывода, СтрокаДерева, ПараметрыЗаполнения);
+ Рекурсия.ВсегоОсталосьВывести = Рекурсия.ВсегоОсталосьВывести - 1;
+ ВывестиВариант = ПорядокВывода.Добавить();
+ ВывестиВариант.НомерКолонки = Рекурсия.НомерТекущейКолонки;
+ ВывестиВариант.ЭтоВариант = Истина;
+ ВывестиВариант.СтрокаДерева = СтрокаДерева;
+ ВывестиВариант.Вариант = Вариант;
+ ВывестиВариант.ВариантСсылка = Вариант.Ссылка;
+ ВывестиВариант.ПодсистемаПриоритет = СтрокаДерева.Подсистема.Приоритет;
+ ЗаполнитьЗначенияСвойств(ВывестиВариант, СтрокаДерева, "Подсистема, ПодсистемаСсылка, УровеньВложенности");
+ Если Вариант.ВыводитсяВместеСОсновным Тогда
+ ВывестиВариант.УровеньВложенности = ВывестиВариант.УровеньВложенности + 1;
+ КонецЕсли;
+
+ ВариантовВыведено = ВариантовВыведено + 1;
+
+ // Учет строк, занятых вариантами.
+ Рекурсия.СвободноСтрок = Рекурсия.СвободноСтрок - 1;
+ КонецЦикла;
+ КонецЕсли;
+
+ // Регистрация вложенных строк.
+ Для Каждого СтрокаПодчиненного Из СтрокаДерева.Строки Цикл
+ ЗаполнитьПорядокВывода(ПорядокВывода, СтрокаДерева, СтрокаПодчиненного, Рекурсия, ПараметрыЗаполнения);
// Проброс НачатВывод вверх по иерархии.
- Если СтрокаДерева.НачатВывод Тогда
- СтрокаРодителя.НачатВывод = Истина;
+ Если СтрокаПодчиненного.НачатВывод Тогда
+ СтрокаДерева.НачатВывод = Истина;
КонецЕсли;
-
КонецЦикла;
+ //// Проброс НачатВывод вверх по иерархии.
+ //Если СтрокаДерева.НачатВывод Тогда
+ // СтрокаРодителя.НачатВывод = Истина;
+ //КонецЕсли;
+
КонецПроцедуры
&НаСервере
@@ -1721,7 +1706,7 @@
Если СтрокаДерева.КоличествоВариантов = 0 И СтрокаДерева.ВсегоВложенныхВариантов = 0 Тогда
Возврат ВГруппу;
КонецЕсли;
- УвеличениеРазмераШрифта = ПараметрыЗаполнения.МаксимальныйУровеньВложенности - СтрокаПорядкаВывода.УровеньВложенности;
+ //УвеличениеРазмераШрифта = ПараметрыЗаполнения.МаксимальныйУровеньВложенности - СтрокаПорядкаВывода.УровеньВложенности;
ПодсистемаПредставление = Подсистема.Представление;
Подсистема.НомерЭлемента = Подсистема.НомерЭлемента + 1;
@@ -1747,6 +1732,10 @@
// Подмена группы верхнего уровня.
ВГруппу = ГруппаОтступа;
+
+ ШрифтЗаголовка = ШрифтОбычнойГруппы;
+ Иначе
+ ШрифтЗаголовка = ШрифтВажнойГруппы;
КонецЕсли;
ГруппаПодсистемы = Элементы.Вставить(ГруппаПодсистемыИмя, Тип("ГруппаФормы"), ВГруппу);
@@ -1766,7 +1755,7 @@
КонецЕсли;
КонецЕсли;
- ШрифтЗаголовка = Новый Шрифт(ШрифтЖирный, , 8 + 2*УвеличениеРазмераШрифта);
+ //ШрифтЗаголовка = Новый Шрифт(ШрифтВажнойГруппы, , ШрифтВажнойГруппы.Размер + 2*УвеличениеРазмераШрифта);
Если ТребуетсяПодсветка Тогда
Если СтрокаПорядкаВывода.ЭтоПродолжение Тогда
Суффикс = НСтр("ru = '(продолжение)'");
@@ -1803,6 +1792,38 @@
Возврат ГруппаПодсистемы;
КонецФункции
+&НаСервере
+Функция ДобавитьГруппуСОтступом(ПараметрыЗаполнения, СтрокаПорядкаВывода, ВГруппу)
+ ВыведеноЭлементовВариантов = ВыведеноЭлементовВариантов + 1;
+
+ ГруппаОтступаИмя = "ГруппаОтступа_" + Формат(ВыведеноЭлементовВариантов, "ЧГ=0");
+ КартинкаОтступаИмя = "КартинкаОтступа_" + Формат(ВыведеноЭлементовВариантов, "ЧГ=0");
+ ГруппаВыводаИмя = "ГруппаВывода_" + Формат(ВыведеноЭлементовВариантов, "ЧГ=0");
+
+ // Отступ.
+ ГруппаОтступа = Элементы.Вставить(ГруппаОтступаИмя, Тип("ГруппаФормы"), ВГруппу);
+ ГруппаОтступа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ГруппаОтступа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ ГруппаОтступа.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ГруппаОтступа.ОтображатьЗаголовок = Ложь;
+ ГруппаОтступа.РастягиватьПоГоризонтали = Истина;
+
+ // Картинка.
+ КартинкаОтступа = Элементы.Вставить(КартинкаОтступаИмя, Тип("ДекорацияФормы"), ГруппаОтступа);
+ ЗаполнитьЗначенияСвойств(КартинкаОтступа, ПараметрыЗаполнения.Шаблоны.КартинкаОтступа);
+ КартинкаОтступа.Ширина = 1;
+
+ // Вывод.
+ ГруппаВывода = Элементы.Вставить(ГруппаВыводаИмя, Тип("ГруппаФормы"), ГруппаОтступа);
+ ГруппаВывода.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ГруппаВывода.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ГруппаВывода.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ГруппаВывода.ОтображатьЗаголовок = Ложь;
+ ГруппаВывода.РастягиватьПоГоризонтали = Истина;
+
+ Возврат ГруппаВывода;
+КонецФункции
+
&НаСервере
Функция ДобавитьЭлементыВариантаОтчета(ПараметрыЗаполнения, Вариант, ВГруппу, УровеньВложенности = 0)
@@ -1849,7 +1870,7 @@
Если Вариант.Важный
И ПараметрыЗаполнения.ИмяГруппы <> "СмТакже"
И ПараметрыЗаполнения.ИмяГруппы <> "БыстрыйДоступ" Тогда
- Надпись.Шрифт = ШрифтЖирный;
+ Надпись.Шрифт = ШрифтВажнойНадписи;
КонецЕсли;
СоставПодсказки = Новый Массив;
@@ -1873,12 +1894,12 @@
КонецЕсли;
// Регистрация добавленной надписи
- Найденные = ДобавленныеВарианты.НайтиСтроки(Новый Структура("Ссылка, Подсистема", Вариант.Ссылка, Вариант.Подсистема));
- Если Найденные.Количество() > 0 Тогда
- СтрокаТаблицы = Найденные[0];
- Иначе
+ //Найденные = ДобавленныеВарианты.НайтиСтроки(Новый Структура("Ссылка, Подсистема", Вариант.Ссылка, Вариант.Подсистема));
+ //Если Найденные.Количество() > 0 Тогда
+ // СтрокаТаблицы = Найденные[0];
+ //Иначе
СтрокаТаблицы = ДобавленныеВарианты.Добавить();
- КонецЕсли;
+ //КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Вариант);
СтрокаТаблицы.ГруппаУровня2Имя = ПараметрыЗаполнения.ИмяГруппы;
СтрокаТаблицы.НадписьИмя = НадписьИмя;
@@ -1889,7 +1910,7 @@
&НаСервере
Процедура ОпределитьСоставПодсказкиВарианта(ПараметрыЗаполнения, Вариант, СоставПодсказки, Надпись)
- ОписаниеВыведено = Ложь;
+ ПодсказкаВыведена = Ложь;
Если ПараметрыЗаполнения.ИспользоватьПодсветку Тогда
ПараметрыПодсветки = ПараметрыЗаполнения.РезультатПоиска.ПодсветкаВариантов.Получить(Вариант.Ссылка);
Если ПараметрыПодсветки <> Неопределено Тогда
@@ -1898,7 +1919,16 @@
КонецЕсли;
Если ПараметрыПодсветки.Описание.КоличествоНайденныхСлов > 0 Тогда
СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.Описание, СоставПодсказки);
- ОписаниеВыведено = Истина;
+ ПодсказкаВыведена = Истина;
+ КонецЕсли;
+ Если ПараметрыПодсветки.ПредставлениеАвтора.КоличествоНайденныхСлов > 0 Тогда
+ Если СоставПодсказки.Количество() > 0 Тогда
+ СоставПодсказки.Добавить(Символы.ПС);
+ КонецЕсли;
+ СоставПодсказки.Добавить(НСтр("ru = 'Автор:'") + " ");
+ СформироватьСтрокуСПодсветкой(ПараметрыПодсветки.ПредставлениеАвтора, СоставПодсказки);
+ СоставПодсказки.Добавить(".");
+ ПодсказкаВыведена = Истина;
КонецЕсли;
Если ПараметрыПодсветки.НаименованияПользовательскихНастроек.КоличествоНайденныхСлов > 0 Тогда
Если СоставПодсказки.Количество() > 0 Тогда
@@ -1926,12 +1956,8 @@
КонецЕсли;
КонецЕсли;
КонецЕсли;
- ПоказыватьОписание = (ПоказыватьПодсказки <> 0 И Не ПустаяСтрока(Вариант.Описание));
- Если Не ОписаниеВыведено И ПоказыватьОписание Тогда
- Если СоставПодсказки.Количество() > 0 Тогда
- СоставПодсказки.Добавить(Символы.ПС);
- КонецЕсли;
- СоставПодсказки.Добавить(СокрЛП(Вариант.Описание));
+ Если Не ПодсказкаВыведена И ПоказыватьПодсказки Тогда
+ СоставПодсказки.Добавить(СокрЛП(Надпись.Подсказка));
КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Form.form b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Form.form
index a9f5e075f..cfdba3b3c 100644
--- a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Form.form
+++ b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Form.form
@@ -1045,99 +1045,22 @@
Auto
-
- ГруппаКоманднойПанели
- 107
-
- КоманднаяПанель
- 105
-
- OK
- 30
- true
- true
-
- true
-
-
- OKРасширеннаяПодсказка
- 40
- Label
- true
- true
-
- Left
-
-
- Form.Command.OK
- Auto
- true
- true
- true
- UserCmds
- Auto
-
-
- Справка
- 23
- true
- true
-
- true
-
- false
-
- СправкаExtendedTooltip
- 42
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Help
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- Отмена
- 112
- true
- true
-
- true
-
-
- ОтменаРасширеннаяПодсказка
- 113
- Label
- true
- true
-
- Left
-
-
- Form.Command.Отмена
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
+ Bottom
+ true
+
+ ФормаКоманднаяПанель
+ -1
+
+ OK
+ 30truetruetrue
- КоманднаяПанельРасширеннаяПодсказка
- 106
+ OKРасширеннаяПодсказка
+ 40Labeltruetrue
@@ -1145,41 +1068,67 @@
Left
- CommandBar
-
- Right
-
-
- true
- true
-
- true
-
-
- ГруппаКоманднойПанелиРасширеннаяПодсказка
- 108
- Label
+ Form.Command.OK
+ Auto
+ truetruetrue
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
- Bottom
- true
-
- ФормаКоманднаяПанель
- -1
+ UserCmds
+ Auto
+
+
+ Справка
+ 23
+ true
+ true
+
+ true
+
+ false
+
+ СправкаExtendedTooltip
+ 42
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Help
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Отмена
+ 112
+ true
+ true
+
+ true
+
+
+ ОтменаРасширеннаяПодсказка
+ 113
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Отмена
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ Right
diff --git a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Help/ru.html b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Help/ru.html
index 55f2a0746..f6949f790 100644
--- a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Help/ru.html
+++ b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначена для указания параметров доступа к кластеру серверов. Параметры необходимы для выполнения различных административных действий с клиент-серверной информационной базой:
имя и пароль Администратора информационной базы для выполнения блокировки регламентных и фоновых заданий от его имени. В простейшем случае, это могут быть Ваши имя и пароль, которые Вы используете для входа в программу. В целях безопасности рекомендуется создать отдельного служебного пользователя с административными правами. Следует иметь в виду, что имя и пароль хранятся непосредственно в самой базе, и могут быть прочитаны, если злоумышленник получит полный доступ к базе.
имя и пароль одного из Администраторов кластера серверов, от имени которого выполняется принудительное завершение (отключение) сеансов пользователей. Не задается, если в кластере серверов не задан ни один администратор;
diff --git a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl
index b4c88093b..bf337cee1 100644
--- a/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl
+++ b/SSL/src/CommonForms/ПараметрыАдминистрированияПрограммы/Module.bsl
@@ -188,7 +188,9 @@
&НаКлиенте
Процедура ПроверитьПараметрыАдминистрирования(ПараметрыАдминистрирования)
- Если ТипПодключения = "COM" Тогда
+ КлиентПодключенЧерезВебСервер = ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер();
+
+ Если Не КлиентПодключенЧерезВебСервер И ТипПодключения = "COM" Тогда
ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель(Ложь);
КонецЕсли;
@@ -198,13 +200,15 @@
Иначе
- Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда
+ Если КлиентПодключенЧерезВебСервер Тогда
+
ПроверитьПараметрыАдминистрированияНаСервере();
+
Иначе
АдминистрированиеКластераКлиентСервер.ПроверитьПараметрыАдминистрирования(ПараметрыАдминистрирования,,
Параметры.ЗапрашиватьПараметрыАдминистрированияКластера, Параметры.ЗапрашиватьПараметрыАдминистрированияИБ);
КонецЕсли;
-
+
КонецЕсли;
КонецПроцедуры
@@ -279,8 +283,6 @@
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
СтрокаПодключения = "Usr=""" + ИмяАдминистратораИнформационнойБазы + """;Pwd=""" + ПарольАдминистратораИнформационнойБазы + """";
- ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель(Ложь);
-
ComConnector = Новый COMОбъект(ИмяCOMСоединителя);
СтрокаСоединенияИнформационнойБазы = СтрокаСоединения + СтрокаПодключения;
Соединение = ComConnector.Connect(СтрокаСоединенияИнформационнойБазы);
diff --git a/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html b/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html
index a6b61880f..d48376508 100644
--- a/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html
+++ b/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html
@@ -1,4 +1,21 @@
-
+
+
Предназначена для настройки параметров прокси-сервера.
+
Программа предоставляет возможности для получения файлов из сети Интернет по протоколам HTTP, HTTPS, FTP и сохранения полученных файлов на клиенте, сервере или во временном хранилище.
+
При работе с программой для выполнения определенных операций (таких, как загрузка курсов валют, загрузка адресного классификатора, обмен данными через FTP-ресурс, обновление конфигурации с веб-сайта поставщика и т.п.) может потребоваться доступ к сети Интернет.
+
В случае если доступ в Интернет осуществляется через прокси-сервер, в программе необходимо указать параметры прокси-сервера. При этом существуют клиентские и серверные настройки прокси-сервера.
+
В общем случае, параметры прокси-сервера нужны для работы механизмов, которые получают файлы из Интернета по протоколам HTTP, HTTPS и FTP. Настройка прокси-сервера на сервере нужна для работы механизмов на сервере.
+
А для клиентских механизмов (например, загрузка курсов валют в тонком и толстом клиенте) нужна настройка на рабочем месте. В то же время, для работы в программе с электронной почтой настраивать прокси-сервер не требуется. Как правило, параметры прокси-сервера указываются для каждого рабочего места по отдельности, поскольку настройки доступа к сети Интернет могут различаться для разных рабочих мест.
+
Но если в организации используется клиент-серверная версия 1С:Предприятия, то параметры прокси-сервера необходимо указать и на сервере 1С:Предприятия(из раздела Администрирование - Общие настройки). При этом параметры прокси-сервера для рабочего места и сервера 1С:Предприятия могут различаться.
Для доступа в Интернет с клиентских компьютеров параметры прокси‑сервера задаются на каждом клиентском рабочем месте (по команде Персональные настройки в разделе Администрирование).
-
При использовании клиент‑серверной версии 1С:Предприятия параметры прокси‑сервера также указываются и для сервера 1С:Предприятия (из раздела Настройка и администрирование - Общие настройки). В общем случае, параметры прокси-сервера для клиентских рабочих мест и сервера 1С:Предприятия могут различаться.
-
Внимание: при работе с включенными профилями безопасности для настройки параметров прокси-сервера можно использовать только конфигурационный файл inetcfg.xml.
\ No newline at end of file
+
Внимание: при работе с включенными профилями безопасности для настройки параметров прокси-сервера можно использовать только конфигурационный файл inetcfg.xml.
+
Настройка параметров прокси-сервера
+
Выберите вариант использования прокси-сервера с помощью переключателя:
+
Не использовать прокси-сервер - значение по умолчанию при первом запуске программы;
+
Использовать системные настройки прокси-сервера - настройки заполняются автоматически значениями из настроек прокси-сервера операционной системы. В этом случае заполненные настройки недоступны для редактирования.
+
Использовать другие настройки прокси-сервера - настройки задаются вручную:
+
Напишите Адрес сервера и Порт сервера (одинаковый параметр для сервера 1С:Предприятия и рабочих мест).
+
Для каждого рабочего места и сервера укажите Пользователя прокси-сервера и его Пароль (в общем случае могут быть различными, зависит от сетевой политики в организации).
+
Установка флажка Не использовать прокси для локальных адресов позволит снизить нагрузку на прокси-сервер при работе в локальной сети организации.
Для подтверждения параметров прокси-сервера нажмите ОК.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ПерсональныеНастройкиЭП/Help/ru.html b/SSL/src/CommonForms/ПерсональныеНастройкиЭП/Help/ru.html
index 9ae6b1c3a..0c2673f0b 100644
--- a/SSL/src/CommonForms/ПерсональныеНастройкиЭП/Help/ru.html
+++ b/SSL/src/CommonForms/ПерсональныеНастройкиЭП/Help/ru.html
@@ -1,16 +1,20 @@
-
-
В форме выполняются персональные настройки электронной подписи (ЭП).
-
-
Настройка
-
Описание
Действия при сохранении с ЭП
-
-
Задает поведение при выполнении команды "Сохранить с ЭП":
-
Сохранять все подписи - все подписи сохраняются;
-
Спрашивать - выбор сохраняемых подписей осуществляется в форме.
Расширение для зашифрованных файлов
-
Задает расширение для зашифрованных файлов при отправке по почте, при выполнении команды "Сохранить как" и при экспорте папки. По умолчанию "p7m".
Путь модуля криптографии (для веб клиента под управлением Linux)
-
Задает путь модуля криптографии для операций с файлами (расшифровка, подписание, проверка подписи, просмотр сертификата).
Личный сертификат для шифрования
-
-
Персональный сертификат электронной подписи (ЭП) для шифрования данных. При выборе сертификатов для шифрования данный сертификат будет всегда отмечен. Это нужно для того, чтобы нельзя было зашифровать данные без возможности их расшифровки.
Открывается из персональных настроек программы (вкладка Работа с файлами) по ссылке Настройка ЭП.
+
Персональные настройки электронной подписи (ЭП)
+
+
С помощью переключателя Действия при сохранении с ЭП задайте поведение программы при выполнении команды Сохранить с ЭП:
+
Сохранять все подписи - все подписи сохраняются;
+
Спрашивать - выбор сохраняемых подписей осуществляется из списка.
+
Задайте Расширение для зашифрованных файлов при отправке по почте, при выполнении команды Сохранить как и при экспорте папки (по умолчанию .p7m).
+
+
Напишите Расширение для файлов подписи (по умолчанию .p7s).
+
+
Напишите Путь модуля криптографии (для веб-клиента под управлением Linux) для операций с файлами (расшифровка, подписание, проверка подписи, просмотр сертификата).
+
+
Выберите из спискаЛичный сертификат для шифрования - персональный сертификат электронной подписи (ЭП) для шифрования данных. При выборе сертификатов для шифрования данный сертификат будет всегда отмечен. Это нужно для того, чтобы нельзя было зашифровать данные без возможности их расшифровки.
Предназначена для просмотра, редактирования и печати сформированных печатных форм, а также для отправки печатной формы по электронной почте и сохранения в файл.
Вызывается из документов и списков документов программы по команде Печать.
Предусмотрены следующие возможности:
diff --git a/SSL/src/CommonForms/ПечатьДокументов/Module.bsl b/SSL/src/CommonForms/ПечатьДокументов/Module.bsl
index 3f02ee91f..b574c71ad 100644
--- a/SSL/src/CommonForms/ПечатьДокументов/Module.bsl
+++ b/SSL/src/CommonForms/ПечатьДокументов/Module.bsl
@@ -1,4 +1,3 @@
-
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -16,10 +15,10 @@
Если Не ЗначениеЗаполнено(Параметры.ИсточникДанных) Тогда
ОбщегоНазначенияКлиентСервер.Проверить(ТипЗнч(Параметры.ПараметрКоманды) = Тип("Массив") Или ОбщегоНазначения.ЗначениеСсылочногоТипа(Параметры.ПараметрКоманды),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Недопустимое значение параметра ПараметрКоманды при вызове метода УправлениеПечатьюКлиент.ВыполнитьКомандуПечати.
- |Ожидалось: Массив, ЛюбаяСсылка.
- |Передано: %1'"), ТипЗнч(Параметры.ПараметрКоманды)));
+ |Ожидалось: Массив, ЛюбаяСсылка.
+ |Передано: %1'"), ТипЗнч(Параметры.ПараметрКоманды)));
КонецЕсли;
-
+
// поддержка обратной совместимости с 2.1.3
ПараметрыПечати = Параметры.ПараметрыПечати;
Если Параметры.ПараметрыПечати = Неопределено Тогда
@@ -153,10 +152,17 @@
Процедура КопийПриИзменении(Элемент)
Если НастройкиПечатныхФорм.Количество() = 1 Тогда
НастройкиПечатныхФорм[0].Количество = Копий;
- ЭтотОбъект[НастройкиПечатныхФорм[0].ИмяРеквизита].КоличествоЭкземпляров = НастройкиПечатныхФорм[0].Количество;
КонецЕсли;
КонецПроцедуры
+&НаКлиенте
+Процедура Подключаемый_ПолеТабличногоДокументаПриАктивизацииОбласти(Элемент)
+ //Если НастройкиОтчета.ВыводитьСуммуВыделенныхЯчеек Тогда
+ ИнтервалОжидания = ?(ПолучитьСкоростьКлиентскогоСоединения() = СкоростьКлиентскогоСоединения.Низкая, 1, 0.2);
+ ПодключитьОбработчикОжидания("Подключаемый_РассчитатьСуммуЯчеек", ИнтервалОжидания, Истина);
+ //КонецЕсли;
+КонецПроцедуры
+
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНастройкиПечатныхФорм
@@ -180,9 +186,12 @@
Элементы.КнопкаПечатьКоманднаяПанель.Доступность = МожноПечатать;
Элементы.КнопкаПечатьВсеДействия.Доступность = МожноПечатать;
- Элементы.КнопкаСохранить.Доступность = МожноСохранять;
- Элементы.КнопкаОтправить.Доступность = МожноСохранять;
+ Элементы.КнопкаСохранить.Доступность = МожноСохранять;
+ Элементы.КнопкаСохранитьВсеДействия.Доступность = МожноСохранять;
+
+ Элементы.КнопкаОтправить.Доступность = МожноСохранять;
+ Элементы.КнопкаОтправитьВсеДействия.Доступность = МожноСохранять;
КонецПроцедуры
&НаКлиенте
@@ -190,12 +199,6 @@
УстановитьТекущуюСтраницу();
КонецПроцедуры
-&НаКлиенте
-Процедура НастройкиПечатныхФормКоличествоПриИзменении(Элемент)
- НастройкаПечатнойФормы = ТекущаяНастройкаПечатнойФормы();
- ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита].КоличествоЭкземпляров = НастройкаПечатнойФормы.Количество;
-КонецПроцедуры
-
&НаКлиенте
Процедура НастройкиПечатныхФормКоличествоРегулирование(Элемент, Направление, СтандартнаяОбработка)
НастройкаПечатнойФормы = ТекущаяНастройкаПечатнойФормы();
@@ -254,16 +257,10 @@
&НаКлиенте
Процедура Печать(Команда)
- ТабличныеДокументы = Новый СписокЗначений;
-
- Для Каждого НастройкаПечатнойФормы Из НастройкиПечатныхФорм Цикл
- Если Элементы[НастройкаПечатнойФормы.ИмяРеквизита].Вывод = ИспользованиеВывода.Разрешить И НастройкаПечатнойФормы.Печатать Тогда
- ТабличныеДокументы.Добавить(ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита], НастройкаПечатнойФормы.Представление);
- КонецЕсли;
- КонецЦикла;
+ ТабличныеДокументы = ТабличныеДокументыДляПечати();
УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(ТабличныеДокументы, ОбъектыПечати,
- ПараметрыВывода.ДоступнаПечатьПоКомплектно, ?(НастройкиПечатныхФорм.Количество() > 1, Копий, 1));
+ ТабличныеДокументы.Количество() > 1, ?(НастройкиПечатныхФорм.Количество() > 1, Копий, 1));
КонецПроцедуры
@@ -297,6 +294,15 @@
ПереключитьРедактированиеТекущейПечатнойФормы();
КонецПроцедуры
+&НаКлиенте
+Процедура ВычислитьСумму(Команда)
+ НастройкаПечатнойФормы = ТекущаяНастройкаПечатнойФормы();
+ Если НастройкаПечатнойФормы <> Неопределено Тогда
+ ТабличныйДокумент = ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита];
+ СуммаВыделенныхЯчеек = ВычислитьСуммуСервер(ТабличныйДокумент, ВыделенныеОбласти(ТабличныйДокумент));
+ КонецЕсли;
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -335,8 +341,11 @@
Отказ = Истина;
КонецЕсли;
Иначе
+ ТипыОбъектовПечати = Новый Массив;
+ Параметры.ПараметрыПечати.Свойство("ТипыОбъектовПечати", ТипыОбъектовПечати);
УправлениеПечатью.СформироватьПечатныеФормы(Параметры.ИмяМенеджераПечати, ИменаМакетов,
- Параметры.ПараметрКоманды, Параметры.ПараметрыПечати.ДополнительныеПараметры, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
+ Параметры.ПараметрКоманды, Параметры.ПараметрыПечати, КоллекцияПечатныхФорм,
+ ОбъектыПечати, ПараметрыВывода, ТипыОбъектовПечати);
КонецЕсли;
// установка признака сохранения печатной формы в файл (не открывать форму, сразу сохранять в файл)
@@ -415,6 +424,7 @@
НоваяНастройкаПечатнойФормы.ПозицияПоУмолчанию = НомерПечатнойФормы;
НоваяНастройкаПечатнойФормы.Название = ОписаниеПечатнойФормы.СинонимМакета;
НоваяНастройкаПечатнойФормы.ПутьКМакету = ОписаниеПечатнойФормы.ПолныйПутьКМакету;
+ НоваяНастройкаПечатнойФормы.ИмяФайлаПечатнойФормы = ОбщегоНазначения.ЗначениеВСтрокуXML(ОписаниеПечатнойФормы.ИмяФайлаПечатнойФормы);
РанееДобавленнаяНастройкаПечатнойФормы = ДобавленныеНастройкиПечатныхФорм[ОписаниеПечатнойФормы.ИмяМакета];
Если РанееДобавленнаяНастройкаПечатнойФормы = Неопределено Тогда
@@ -437,8 +447,9 @@
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовыйЭлемент.ПутьКДанным = ИмяРеквизита;
НовыйЭлемент.Вывод = ВычислитьИспользованиеВывода(ОписаниеПечатнойФормы.ТабличныйДокумент);
- НовыйЭлемент.Редактирование = НовыйЭлемент.Вывод = ИспользованиеВывода.Разрешить;
+ НовыйЭлемент.Редактирование = НовыйЭлемент.Вывод = ИспользованиеВывода.Разрешить И Не ОписаниеПечатнойФормы.ТабличныйДокумент.ТолькоПросмотр;
НовыйЭлемент.Защита = ОписаниеПечатнойФормы.ТабличныйДокумент.Защита;
+ НовыйЭлемент.УстановитьДействие("ПриАктивизацииОбласти", "Подключаемый_ПолеТабличногоДокументаПриАктивизацииОбласти");
// таблица настроек печатных форм (продолжение)
НоваяНастройкаПечатнойФормы.ИмяСтраницы = ИмяСтраницы;
@@ -477,10 +488,16 @@
ЕстьДанныеДляПечати = ЕстьДанныеДляПечати();
Элементы.КнопкаПерейтиКДокументу.Видимость = ОбъектыПечати.Количество() > 1;
+
Элементы.КнопкаСохранить.Видимость = ЕстьДанныеДляПечати и ЕстьРазрешенныйВывод И ЕстьРазрешенноеРедактирование;
+ Элементы.КнопкаСохранитьВсеДействия.Видимость = Элементы.КнопкаСохранить.Видимость;
+
Элементы.КнопкаОтправить.Видимость = ВозможнаОтправкаПоПочте и ЕстьДанныеДляПечати И ЕстьРазрешенноеРедактирование;
+ Элементы.КнопкаОтправитьВсеДействия.Видимость = Элементы.КнопкаОтправить.Видимость;
+
Элементы.КнопкаПечатьКоманднаяПанель.Видимость = ЕстьРазрешенныйВывод И ЕстьДанныеДляПечати;
- Элементы.КнопкаПечатьВсеДействия.Видимость = ЕстьРазрешенныйВывод И ЕстьДанныеДляПечати;
+ Элементы.КнопкаПечатьВсеДействия.Видимость = Элементы.КнопкаПечатьКоманднаяПанель.Видимость;
+
Элементы.Копий.Видимость = ЕстьРазрешенныйВывод И ЕстьДанныеДляПечати;
Элементы.КнопкаРедактирование.Видимость = ЕстьРазрешенныйВывод И ЕстьДанныеДляПечати И ЕстьРазрешенноеРедактирование;
@@ -634,7 +651,6 @@
ИндексСтроки = НастройкиПечатныхФорм.Индекс(НастройкаПечатнойФормы);
НастройкиПечатныхФорм.Сдвинуть(ИндексСтроки, НастройкиПечатныхФорм.Количество()-1 - ИндексСтроки); // сдвиг в конец
НастройкаПечатнойФормы.Количество = СохраненнаяНастройка.Количество;
- ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита].КоличествоЭкземпляров = НастройкаПечатнойФормы.Количество;
НастройкаПечатнойФормы.Печатать = НастройкаПечатнойФормы.Количество > 0;
КонецЦикла;
КонецЦикла;
@@ -687,33 +703,45 @@
Продолжить;
КонецЕсли;
- Для Каждого ТипФайла Из ВыбранныеФорматыСохранения Цикл
- НастройкиФормата = ТаблицаФорматов.НайтиСтроки(Новый Структура("ТипФайлаТабличногоДокумента", ТипФайла))[0];
-
- ИмяФайла = ПолучитьИмяВременногоФайлаДляПечатнойФормы(НастройкаПечатнойФормы.Название,НастройкиФормата.Расширение,ИспользованныеИменаФайлов);
- ПолноеИмяФайла = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + ИмяФайла;
-
- ПечатнаяФорма.Записать(ПолноеИмяФайла, ТипФайла);
-
- Если ТипФайла = ТипФайлаТабличногоДокумента.HTML Тогда
- ВставитьКартинкиВHTML(ПолноеИмяФайла);
- КонецЕсли;
-
- Если ЗаписьZipФайла <> Неопределено Тогда
- ЗаписьZipФайла.Добавить(ПолноеИмяФайла);
- Иначе
- ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяФайла);
- ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор);
- ОписаниеФайла = Новый Структура;
- ОписаниеФайла.Вставить("Представление", ИмяФайла);
- ОписаниеФайла.Вставить("АдресВоВременномХранилище", ПутьВоВременномХранилище);
- Если ТипФайла = ТипФайлаТабличногоДокумента.ANSITXT Тогда
- ОписаниеФайла.Вставить("Кодировка", "windows-1251");
+ ПечатныеФормыПоОбъектам = ПечатныеФормыПоОбъектам(ПечатнаяФорма);
+ Для Каждого СоответствиеОбъектаПечатнойФорме Из ПечатныеФормыПоОбъектам Цикл
+ ПечатнаяФорма = СоответствиеОбъектаПечатнойФорме.Значение;
+ Для Каждого ТипФайла Из ВыбранныеФорматыСохранения Цикл
+ НастройкиФормата = ТаблицаФорматов.НайтиСтроки(Новый Структура("ТипФайлаТабличногоДокумента", ТипФайла))[0];
+
+ Если СоответствиеОбъектаПечатнойФорме.Ключ <> "ОбъектыПечатиНеЗаданы" Тогда
+ ИмяФайла = ИмяФайлаПечатнойФормыОбъекта(СоответствиеОбъектаПечатнойФорме.Ключ, ОбщегоНазначения.ЗначениеИзСтрокиXML(НастройкаПечатнойФормы.ИмяФайлаПечатнойФормы));
+ Если ИмяФайла = Неопределено Тогда
+ ИмяФайла = ИмяФайлаПечатнойФормыПоУмолчанию(СоответствиеОбъектаПечатнойФорме.Ключ, НастройкаПечатнойФормы.Название);
+ КонецЕсли;
+ ИмяФайла = ИмяФайла + "." + НастройкиФормата.Расширение;
+ ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла);
+ Иначе
+ ИмяФайла = ПолучитьИмяВременногоФайлаДляПечатнойФормы(НастройкаПечатнойФормы.Название,НастройкиФормата.Расширение,ИспользованныеИменаФайлов);
КонецЕсли;
- Результат.Добавить(ОписаниеФайла);
- КонецЕсли;
+
+ ПолноеИмяФайла = УникальноеИмяФайла(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + ИмяФайла);
+ ПечатнаяФорма.Записать(ПолноеИмяФайла, ТипФайла);
+
+ Если ТипФайла = ТипФайлаТабличногоДокумента.HTML Тогда
+ ВставитьКартинкиВHTML(ПолноеИмяФайла);
+ КонецЕсли;
+
+ Если ЗаписьZipФайла <> Неопределено Тогда
+ ЗаписьZipФайла.Добавить(ПолноеИмяФайла);
+ Иначе
+ ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяФайла);
+ ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтотОбъект.УникальныйИдентификатор);
+ ОписаниеФайла = Новый Структура;
+ ОписаниеФайла.Вставить("Представление", ИмяФайла);
+ ОписаниеФайла.Вставить("АдресВоВременномХранилище", ПутьВоВременномХранилище);
+ Если ТипФайла = ТипФайлаТабличногоДокумента.ANSITXT Тогда
+ ОписаниеФайла.Вставить("Кодировка", "windows-1251");
+ КонецЕсли;
+ Результат.Добавить(ОписаниеФайла);
+ КонецЕсли;
+ КонецЦикла;
КонецЦикла;
-
КонецЦикла;
// если архив подготовлен, записываем и помещаем его во временное хранилище
@@ -734,6 +762,27 @@
КонецФункции
+&НаСервере
+Функция ПечатныеФормыПоОбъектам(ПечатнаяФорма)
+ Если ОбъектыПечати.Количество() = 0 Тогда
+ Возврат Новый Структура("ОбъектыПечатиНеЗаданы", ПечатнаяФорма);
+ КонецЕсли;
+
+ Результат = Новый Соответствие;
+ Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
+ ИмяОбласти = ОбъектПечати.Представление;
+ Область = ПечатнаяФорма.Области.Найти(ИмяОбласти);
+ Если Область = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ ТабличныйДокумент = ПечатнаяФорма.ПолучитьОбласть(Область.Верх, , Область.Низ);
+ ЗаполнитьЗначенияСвойств(ТабличныйДокумент, ПечатнаяФорма,
+ "АвтоМасштаб,Вывод,ВысотаСтраницы,ДвусторонняяПечать,Защита,ИмяПринтера,КодЯзыкаМакета,КоличествоЭкземпляров,МасштабПечати,ОриентацияСтраницы,ПолеСверху,ПолеСлева,ПолеСнизу,ПолеСправа,РазборПоКопиям,РазмерКолонтитулаСверху,РазмерКолонтитулаСнизу,РазмерСтраницы,ТочностьПечати,ЧерноБелаяПечать,ШиринаСтраницы,ЭкземпляровНаСтранице");
+ Результат.Вставить(ОбъектПечати.Значение, ТабличныйДокумент);
+ КонецЦикла;
+ Возврат Результат;
+КонецФункции
+
&НаСервере
Процедура ВставитьКартинкиВHTML(ИмяФайлаHTML)
@@ -762,30 +811,37 @@
КонецПроцедуры
&НаСервере
-Функция ПолучитьИмяВременногоФайлаДляПечатнойФормы(ИмяМакета, Расширение, ИспользованныеИменаФайлов)
+Функция ИмяФайлаПечатнойФормыОбъекта(ОбъектПечати, ИмяФайлаПечатнойФормы)
+ Если ТипЗнч(ИмяФайлаПечатнойФормы) = Тип("Соответствие") Тогда
+ Возврат Строка(ИмяФайлаПечатнойФормы[ОбъектПечати]);
+ ИначеЕсли ТипЗнч(ИмяФайлаПечатнойФормы) = Тип("Строка") И Не ПустаяСтрока(ИмяФайлаПечатнойФормы) Тогда
+ Возврат ИмяФайлаПечатнойФормы;
+ Иначе
+ Возврат Неопределено;
+ КонецЕсли;
+КонецФункции
+
+&НаСервере
+Функция ИмяФайлаПечатнойФормыПоУмолчанию(ОбъектПечати, НазваниеПечатнойФормы)
- ШаблонИмениФайла = "%1%2.%3";
-
- ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИмениФайла, ИмяМакета, "", Расширение));
-
- НомерИспользования = ?(ИспользованныеИменаФайлов[ИмяВременногоФайла] <> Неопределено,
- ИспользованныеИменаФайлов[ИмяВременногоФайла] + 1,
- 1);
-
- ИспользованныеИменаФайлов.Вставить(ИмяВременногоФайла, НомерИспользования);
-
- // если имя уже было ранее использовано, прибавляем счетчик в конце имени
- Если НомерИспользования > 1 Тогда
- ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- ШаблонИмениФайла,
- ИмяМакета,
- " (" + НомерИспользования + ")",
- Расширение));
+ Если ОбщегоНазначения.ЭтоДокумент(Метаданные.НайтиПоТипу(ТипЗнч(ОбъектПечати))) Тогда
+ ПараметрыДляВставки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОбъектПечати, "Дата,Номер");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрефиксацияОбъектов") Тогда
+ МодульПрефиксацияОбъектовКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПрефиксацияОбъектовКлиентСервер");
+ ПараметрыДляВставки.Номер = МодульПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ПараметрыДляВставки.Номер);
+ КонецЕсли;
+ ПараметрыДляВставки.Дата = Формат(ПараметрыДляВставки.Дата, "ДЛФ=D");
+ ПараметрыДляВставки.Вставить("НазваниеПечатнойФормы", НазваниеПечатнойФормы);
+ Шаблон = НСтр("ru = '[НазваниеПечатнойФормы] № [Номер] от [Дата]'");
+ Иначе
+ ПараметрыДляВставки = Новый Структура;
+ ПараметрыДляВставки.Вставить("НазваниеПечатнойФормы",НазваниеПечатнойФормы);
+ ПараметрыДляВставки.Вставить("ПредставлениеОбъекта", ОбщегоНазначения.ПредметСтрокой(ОбъектПечати));
+ ПараметрыДляВставки.Вставить("ТекущаяДата",Формат(ТекущаяДатаСеанса(), "ДЛФ=D"));
+ Шаблон = НСтр("ru = '[НазваниеПечатнойФормы] - [ПредставлениеОбъекта] - [ТекущаяДата]'");
КонецЕсли;
- Возврат ИмяВременногоФайла;
+ Возврат СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(Шаблон, ПараметрыДляВставки);
КонецФункции
@@ -840,7 +896,7 @@
КонецПроцедуры
&НаКлиенте
-Процедура СохранитьПечатныеФормыВПапку(СписокФайловВоВременномХранилище, Папка = "")
+Процедура СохранитьПечатныеФормыВПапку(СписокФайловВоВременномХранилище, Знач Папка = "")
#Если ВебКлиент Тогда
Для Каждого ФайлДляЗаписи Из СписокФайловВоВременномХранилище Цикл
@@ -849,46 +905,32 @@
Возврат;
#КонецЕсли
- ДополнительныеПараметры = Новый Структура("СписокФайловВоВременномХранилище, Папка", СписокФайловВоВременномХранилище, Папка);
- Если НайтиФайлы(Папка,"*").Количество() > 0 Тогда
- ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Папка ""%1"" не пустая.
- |Перезаписывать файлы при совпадении имен?'"),
- Папка);
- Кнопки = Новый СписокЗначений;
- Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Перезаписывать'"));
- Кнопки.Добавить(КодВозвратаДиалога.Отмена);
-
- ОписаниеОповещения = Новый ОписаниеОповещения("СохранитьПечатныеФормыВПапкуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
-
- ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , КодВозвратаДиалога.Отмена, НСтр("ru = 'Сохранение печатной формы'"));
- Иначе
- СохранитьПечатныеФормыВПапкуЗавершение(КодВозвратаДиалога.Да, ДополнительныеПараметры);
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура СохранитьПечатныеФормыВПапкуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
-
- Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
- Возврат;
- КонецЕсли;
-
- СписокФайловВоВременномХранилище = ДополнительныеПараметры.СписокФайловВоВременномХранилище;
- Папка = ДополнительныеПараметры.Папка;
-
+ Папка = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Папка);
Для Каждого ФайлДляЗаписи Из СписокФайловВоВременномХранилище Цикл
- ПолноеИмяФайла = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Папка) + ФайлДляЗаписи.Представление;
-
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлДляЗаписи.АдресВоВременномХранилище);
- ДвоичныеДанные.Записать(ПолноеИмяФайла);
+ ДвоичныеДанные.Записать(УникальноеИмяФайла(Папка + ФайлДляЗаписи.Представление));
КонецЦикла;
-
+
Состояние(НСтр("ru = 'Сохранение успешно завершено'"), , НСтр("ru = 'в папку:'") + " " + Папка);
КонецПроцедуры
+&НаКлиентеНаСервереБезКонтекста
+Функция УникальноеИмяФайла(ИмяФайла)
+ Файл = Новый Файл(ИмяФайла);
+ ИмяБезРасширения = Файл.ИмяБезРасширения;
+ Расширение = Файл.Расширение;
+ Папка = Файл.Путь;
+
+ Счетчик = 1;
+ Пока Файл.Существует() Цикл
+ Счетчик = Счетчик + 1;
+ Файл = Новый Файл(Папка + ИмяБезРасширения + " (" + Счетчик + ")" + Расширение);
+ КонецЦикла;
+
+ Возврат Файл.ПолноеИмя;
+КонецФункции
+
&НаСервере
Процедура ПрисоединитьПечатныеФормыКОбъекту(ФайлыВоВременномХранилище, ОбъектДляПрисоединения)
Для Каждого Файл Из ФайлыВоВременномХранилище Цикл
@@ -1136,4 +1178,224 @@
КонецПроцедуры
+&НаСервере
+Функция ПолучитьИмяВременногоФайлаДляПечатнойФормы(ИмяМакета, Расширение, ИспользованныеИменаФайлов)
+
+ ШаблонИмениФайла = "%1%2.%3";
+
+ ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИмениФайла, ИмяМакета, "", Расширение));
+
+ НомерИспользования = ?(ИспользованныеИменаФайлов[ИмяВременногоФайла] <> Неопределено,
+ ИспользованныеИменаФайлов[ИмяВременногоФайла] + 1,
+ 1);
+
+ ИспользованныеИменаФайлов.Вставить(ИмяВременногоФайла, НомерИспользования);
+
+ // если имя уже было ранее использовано, прибавляем счетчик в конце имени
+ Если НомерИспользования > 1 Тогда
+ ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ ШаблонИмениФайла,
+ ИмяМакета,
+ " (" + НомерИспользования + ")",
+ Расширение));
+ КонецЕсли;
+
+ Возврат ИмяВременногоФайла;
+
+КонецФункции
+
+&НаСервере
+Функция ТабличныеДокументыДляПечати()
+ ТабличныеДокументы = Новый СписокЗначений;
+
+ Для Каждого НастройкаПечатнойФормы Из НастройкиПечатныхФорм Цикл
+ Если Элементы[НастройкаПечатнойФормы.ИмяРеквизита].Вывод = ИспользованиеВывода.Разрешить И НастройкаПечатнойФормы.Печатать Тогда
+ ПечатнаяФорма = ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита];
+ ТабличныйДокумент = Новый ТабличныйДокумент;
+ ТабличныйДокумент.Вывести(ПечатнаяФорма);
+ ЗаполнитьЗначенияСвойств(ТабличныйДокумент, ПечатнаяФорма, "АвтоМасштаб,Вывод,ВысотаСтраницы,ДвусторонняяПечать,Защита,ИмяПринтера,КодЯзыкаМакета,КоличествоЭкземпляров,МасштабПечати,ОриентацияСтраницы,ПолеСверху,ПолеСлева,ПолеСнизу,ПолеСправа,РазборПоКопиям,РазмерКолонтитулаСверху,РазмерКолонтитулаСнизу,РазмерСтраницы,ТочностьПечати,ЧерноБелаяПечать,ШиринаСтраницы,ЭкземпляровНаСтранице");
+ ТабличныйДокумент.КоличествоЭкземпляров = НастройкаПечатнойФормы.Количество;
+ ТабличныеДокументы.Добавить(ТабличныйДокумент, НастройкаПечатнойФормы.Представление);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат ТабличныеДокументы;
+КонецФункции
+
+// автосумма
+
+&НаКлиенте
+Процедура Подключаемый_РассчитатьСуммуЯчеек()
+ НастройкаПечатнойФормы = ТекущаяНастройкаПечатнойФормы();
+ Если НастройкаПечатнойФормы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ТабличныйДокумент = ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита];
+
+ Сумма = РассчитатьСуммуВыделенныхЯчеек(ТабличныйДокумент, Неопределено);
+ Если ТипЗнч(Сумма) = Тип("Число") Тогда
+ СуммаВыделенныхЯчеек = Формат(Сумма, "ЧН=0");
+ Иначе
+ СуммаВыделенныхЯчеек = "-";
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервереБезКонтекста
+Функция ВычислитьСуммуСервер(Знач ТабличныйДокумент, Знач ВыделенныеОбласти)
+ Сумма = РассчитатьСуммуВыделенныхЯчеек(ТабличныйДокумент, ВыделенныеОбласти);
+ Возврат Формат(Сумма, "ЧН=0");
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция РассчитатьСуммуВыделенныхЯчеек(ТабличныйДокумент, ВыделенныеОбласти)
+
+ #Если Клиент Тогда
+ ВыделенныеОбласти = ТабличныйДокумент.ВыделенныеОбласти;
+ #КонецЕсли
+
+ #Если Клиент И Не ТолстыйКлиентОбычноеПриложение Тогда
+ КоличествоВыделенныхОбластей = ВыделенныеОбласти.Количество();
+ Если КоличествоВыделенныхОбластей = 0 Тогда
+ Возврат 0;
+ ИначеЕсли КоличествоВыделенныхОбластей >= 100 Тогда
+ Возврат Неопределено; // Нужен вызов сервера.
+ КонецЕсли;
+ КоличествоВыделенныхЯчеек = 0;
+ #КонецЕсли
+
+ Сумма = 0;
+ ПроверенныеЯчейки = Новый Соответствие;
+
+ Для Каждого ВыделеннаяОбласть Из ВыделенныеОбласти Цикл
+ #Если Клиент Тогда
+ Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
+ Продолжить;
+ КонецЕсли;
+ #КонецЕсли
+
+ ВыделеннаяОбластьВерх = ВыделеннаяОбласть.Верх;
+ ВыделеннаяОбластьНиз = ВыделеннаяОбласть.Низ;
+ ВыделеннаяОбластьЛево = ВыделеннаяОбласть.Лево;
+ ВыделеннаяОбластьПраво = ВыделеннаяОбласть.Право;
+
+ Если ВыделеннаяОбластьВерх = 0 Тогда
+ ВыделеннаяОбластьВерх = 1;
+ КонецЕсли;
+
+ Если ВыделеннаяОбластьНиз = 0 Тогда
+ ВыделеннаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы;
+ КонецЕсли;
+
+ Если ВыделеннаяОбластьЛево = 0 Тогда
+ ВыделеннаяОбластьЛево = 1;
+ КонецЕсли;
+
+ Если ВыделеннаяОбластьПраво = 0 Тогда
+ ВыделеннаяОбластьПраво = ТабличныйДокумент.ШиринаТаблицы;
+ КонецЕсли;
+
+ Если ВыделеннаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Колонки Тогда
+ ВыделеннаяОбластьВерх = ВыделеннаяОбласть.Низ;
+ ВыделеннаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы;
+ КонецЕсли;
+
+ ВыделеннаяОбластьВысота = ВыделеннаяОбластьНиз - ВыделеннаяОбластьВерх;
+ ВыделеннаяОбластьШирина = ВыделеннаяОбластьПраво - ВыделеннаяОбластьЛево;
+
+ #Если Клиент И Не ТолстыйКлиентОбычноеПриложение Тогда
+ КоличествоВыделенныхЯчеек = КоличествоВыделенныхЯчеек + ВыделеннаяОбластьШирина * ВыделеннаяОбластьВысота;
+ Если КоличествоВыделенныхЯчеек >= 1000 Тогда
+ Возврат Неопределено; // Нужен вызов сервера.
+ КонецЕсли;
+ #КонецЕсли
+
+ Для НомерКолонки = ВыделеннаяОбластьЛево По ВыделеннаяОбластьПраво Цикл
+ Для НомерСтроки = ВыделеннаяОбластьВерх По ВыделеннаяОбластьНиз Цикл
+ Ячейка = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
+ Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
+ ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
+ Иначе
+ Продолжить;
+ КонецЕсли;
+
+ Если Ячейка.Видимость = Истина Тогда
+ Если Ячейка.ТипОбласти <> ТипОбластиЯчеекТабличногоДокумента.Колонки
+ И Ячейка.СодержитЗначение И ТипЗнч(Ячейка.Значение) = Тип("Число") Тогда
+ Сумма = Сумма + Ячейка.Значение;
+ ИначеЕсли ЗначениеЗаполнено(Ячейка.Текст) Тогда
+ Сумма = Сумма + СтрокаВЧисло(Ячейка.Текст);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+ КонецЦикла;
+
+ Возврат Сумма;
+
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция СтрокаВЧисло(ИсходнаяСтрока)
+ // Превращает строку в число без вызова исключений. Стандартная функция преобразования
+ // Число() строго контролирует отсутствие каких-либо символов кроме числовых.
+
+ Результат = 0;
+ ЗнаковПослеЗапятой = -1;
+ ЗнакОтрицательный = Ложь;
+ Для НомерСимвола = 1 По СтрДлина(ИсходнаяСтрока) Цикл
+ КодСимвола = КодСимвола(ИсходнаяСтрока, НомерСимвола);
+ Если КодСимвола = 32 Или КодСимвола = 160 Тогда // Пробел или неразрывный пробел.
+ // Пропуск (действие не требуется).
+ ИначеЕсли КодСимвола = 45 Тогда // Минус.
+ Если Результат <> 0 Тогда
+ Возврат 0;
+ КонецЕсли;
+ ЗнакОтрицательный = Истина;
+ ИначеЕсли КодСимвола = 44 Или КодСимвола = 46 Тогда // Запятая или точка.
+ Если ЗнаковПослеЗапятой <> -1 Тогда
+ Возврат 0; // Разделитель уже был, следовательно это не число.
+ КонецЕсли;
+ ЗнаковПослеЗапятой = 0; // Запуск отсчета знаков после запятой.
+ ИначеЕсли КодСимвола > 47 И КодСимвола < 58 Тогда // Число.
+ Если ЗнаковПослеЗапятой <> -1 Тогда
+ ЗнаковПослеЗапятой = ЗнаковПослеЗапятой + 1;
+ КонецЕсли;
+ Число = КодСимвола - 48;
+ Результат = Результат * 10 + Число;
+ Иначе
+ Возврат 0;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ЗнаковПослеЗапятой > 0 Тогда
+ Результат = Результат / Pow(10, ЗнаковПослеЗапятой);
+ КонецЕсли;
+ Если ЗнакОтрицательный Тогда
+ Результат = -Результат;
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Функция ВыделенныеОбласти(ТабличныйДокумент)
+ Результат = Новый Массив;
+ Для Каждого ВыделеннаяОбласть Из ТабличныйДокумент.ВыделенныеОбласти Цикл
+ Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
+ Продолжить;
+ КонецЕсли;
+ Структура = Новый Структура("Верх, Низ, Лево, Право, ТипОбласти");
+ ЗаполнитьЗначенияСвойств(Структура, ВыделеннаяОбласть);
+ Результат.Добавить(Структура);
+ КонецЦикла;
+ Возврат Результат;
+КонецФункции
+
#КонецОбласти
+
+
+
+
diff --git a/SSL/src/CommonForms/ПодключениеКонечнойТочки/Form.form b/SSL/src/CommonForms/ПодключениеКонечнойТочки/Form.form
index a918a799c..01570a936 100644
--- a/SSL/src/CommonForms/ПодключениеКонечнойТочки/Form.form
+++ b/SSL/src/CommonForms/ПодключениеКонечнойТочки/Form.form
@@ -236,7 +236,7 @@
VerticalAuto
- StrongSeparation
+ NormalSeparationtruetrueauto
@@ -477,7 +477,7 @@
VerticalAuto
- StrongSeparation
+ NormalSeparationtruetrueauto
diff --git a/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl b/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl
index 5d99720d6..413849732 100644
--- a/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl
+++ b/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl
@@ -10,6 +10,8 @@
СобытиеЖурналаРегистрацииПодключениеКонечнойТочки = ОбменСообщениямиВнутренний.СобытиеЖурналаРегистрацииПодключениеКонечнойТочки();
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект);
+
КонецПроцедуры
&НаКлиенте
diff --git a/SSL/src/CommonForms/ПодписьЭП/Form.form b/SSL/src/CommonForms/ПодписьЭП/Form.form
index bd2b20c7d..f65d984e9 100644
--- a/SSL/src/CommonForms/ПодписьЭП/Form.form
+++ b/SSL/src/CommonForms/ПодписьЭП/Form.form
@@ -303,7 +303,7 @@
ПриСозданииНаСервере60
- DontBlock
+ LockOwnertruetruetrue
diff --git a/SSL/src/CommonForms/ПодписьЭП/Help/ru.html b/SSL/src/CommonForms/ПодписьЭП/Help/ru.html
index 1856062bd..7988ea243 100644
--- a/SSL/src/CommonForms/ПодписьЭП/Help/ru.html
+++ b/SSL/src/CommonForms/ПодписьЭП/Help/ru.html
@@ -1,8 +1,15 @@
-
-
Форма предназначена для просмотра основных свойств электронной подписи (ЭП).
-
В ней можно посмотреть основные свойства подписи: кому выдан сертификат, кто установил подпись, дату установки подписи, комментарий к подписи.
-
По команде "Открыть сертификат" открывается форма просмотра сертификата.
Предназначена для просмотра основных свойств электронной подписи (ЭП).
+
Открывается по команде Открыть подпись (также можно воспользоваться двойным щелчком мыши) в списке электронных подписей на вкладке Электронные подписикарточки файла (карточки присоединенного файла).
+
Электронная подпись - реквизит любого электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Контроль неизменности электронного документа осуществляется в результате проверки соответствия ЭП документа и сертификата ключа ЭП. Если ЭП соответствует сертификату, это является гарантией того, что документ не был изменен кем-либо с момента его подписания. Контроль неизменности электронного документа можно выполнить в любой момент времени.
+
С помощью ЭП можно:
+
Подписывать объекты программы (например, в документе поля Наименование и Краткое содержание);
+
Подписывать содержимое хранимых файлов.
Сведения о подписи
+
Кому выдан сертификат - данные о том, кому был выдан сертификат;
+
Установивший подпись - программа автоматически выводит пользователя, который установил подпись;
+
Дата подписи - дата и время установки подписи;
+
Комментарий - дополнительная информация о подписи.
Выгрузка подписи
+
Нажмите Выгрузить, укажите папку на сетевом или локальном диске, для того чтобы сохранить ЭП на компьютер.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html
index 5b0d416bd..d7164a4e9 100644
--- a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html
+++ b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначена для ввода пароля учетной записи электронной почты. Открывается при отправке письма с учетных записей, в которых пароль не задан.
Ввод пароля и отправка письма
Для отправки письма введите Пароль и его Подтверждение;
diff --git a/SSL/src/CommonForms/ПраваДоступа/Help/ru.html b/SSL/src/CommonForms/ПраваДоступа/Help/ru.html
index faa9beb25..4c4fea42a 100644
--- a/SSL/src/CommonForms/ПраваДоступа/Help/ru.html
+++ b/SSL/src/CommonForms/ПраваДоступа/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Открывается по команде Права доступа на панели навигации пользователя (внешнего пользователя).
Каждому пользователю, посредством профилей и групп доступа, может быть назначена одна или несколько ролей, которые в совокупности образуют его персональные настройки прав доступа.
Настройка прав доступа пользователей осуществляется с помощью профилей. Профиль определяет некоторую совокупность действий с данными программы, которые может выполнять пользователь. Как правило, профили соответствуют различным должностным обязанностям (или видам деятельности) пользователей программы. Пользователю могут быть назначены одновременно несколько профилей, которые в совокупности образуют его персональные настройки прав доступа.
укажите список разрешенных значений - такой способ настройки подходит в тех случаях, когда стоит задача предоставить доступ только к определенной области данных.
укажите список тех значений, которые не должны быть доступны. Такой способ настройки удобен тогда, когда требуется закрыть доступ к заранее известной области данных, а для всех новых значений, вводимых в программу, должны по умолчанию действовать разрешительные правила. Например, если с помощью вида доступа Организации задано правило, запрещающее работать с документами по организации "Далекая перспектива", то на новую организацию "Новые технологии", введенную в программе позднее, эти ограничения распространяться не будут. При этом следует учитывать, что разрешающие настройки имеют приоритет над запрещающими. Если в приведенном выше примере пользователю будет разрешен ввод документов по организации "Далекая перспектива" в какой-либо другой группе с этим же профилем, то в итоге он получит доступ ко всем документам по этой организации.
Для указания исключений нажмите Добавить и выберите из списка значений нужные.
В ряде случаев для упрощения настройки прав доступа в списке разрешенных или запрещенных значений можно указывать не отдельные элементы, а целые группы элементов. Например, для вида доступа Партнеры можно ограничить доступ в разрезе групп доступа партнеров, а не по каждому партнеру в отдельности. Для этого необходимо определить список групп доступа партнеров, и у каждого партнера задать принадлежность к той или иной группе. Эти действия могут быть выполнены не только администратором, но и любым пользователем с соответствующими правами на редактирование списка партнеров.
-
Для некоторых профилей предусмотрена настройка прав с помощью вида доступа Пользователи (Вид доступа Внешние пользователи для внешних пользователей). Она распространяется только на документы и другие объекты программы, в полях которых могут быть указаны пользователи, получающие доступ к этим документам ("Ответственный", "Автор", "Исполнитель" и т.п.). Для того чтобы дать доступ ко всем данным, с которыми работает тот или иной пользователь, необходимо включить его в список разрешенных значений для вида доступа Пользователи. Например, доступ к документам поступления товаров и услуг зависит от того, кто указан в поле "Ответственный", поэтому пользователь имеет возможность записывать документы, у которых в этом поле выбран либо он сам, либо один из пользователей из списка разрешенных для вида доступа Пользователи. Аналогичным образом действует запрещающая настройка.
+
Для некоторых профилей предусмотрена настройка прав с помощью вида доступа Пользователи (Вид доступа Внешние пользователи для внешних пользователей). Настройка может учитываться только в тех документах (и других объектах программы), в полях которых могут быть указаны пользователи, получающие доступ к этим документам ("Ответственный", "Автор", "Исполнитель" и т.п.). Для того чтобы дать доступ ко всем ограниченным данным, с которыми работает тот или иной пользователь, необходимо включить его в список разрешенных значений для вида доступа Пользователи. Например, если доступ к документам поступления товаров и услуг зависит от того, кто указан в поле "Ответственный", тогда записывать документы имеет возможность пользователь, который либо выбран в этом поле, либо указан в списке разрешенных для вида доступа Пользователи. Аналогичным образом действует запрещающая настройка.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl b/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl
index fc16776ed..983f6fe10 100644
--- a/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl
+++ b/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl
@@ -66,6 +66,8 @@
ЗапретИзмененияАдминистративногоДоступа = НЕ ДействияСПользователемСервиса.ИзменениеАдминистративногоДоступа;
КонецЕсли;
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект, "Доступ");
+
КонецПроцедуры
&НаКлиенте
@@ -836,11 +838,10 @@
И НЕ Форма.ТолькоПросмотр;
КонецЕсли;
- Элементы.НадписьПрофиль.Доступность = ТекущиеДанные <> Неопределено И ТекущиеДанные.Пометка;
+ Элементы.Доступ.Доступность = ТекущиеДанные <> Неопределено И ТекущиеДанные.Пометка;
Элементы.ВидыДоступа.ТолькоПросмотр = НЕ РедактированиеТекущихОграничений;
- Элементы.НадписьВидДоступа.Доступность = ТекущиеДанные <> Неопределено И ТекущиеДанные.Пометка;
+ Элементы.ЗначенияДоступаПоВидуДоступа.Доступность = ТекущиеДанные <> Неопределено И ТекущиеДанные.Пометка;
Элементы.ЗначенияДоступа.ТолькоПросмотр = НЕ РедактированиеТекущихОграничений;
- Элементы.ВидыДоступаИзменить.Доступность = РедактированиеТекущихОграничений;
Элементы.ВидыДоступаКонтекстноеМенюИзменить.Доступность = РедактированиеТекущихОграничений;
Если Форма.ТекущийПрофиль = Неопределено Тогда
@@ -852,7 +853,13 @@
Если Элементы.ВидыДоступа.ОтборСтрок = Неопределено
ИЛИ Элементы.ВидыДоступа.ОтборСтрок.ГруппаДоступа <> Форма.ТекущаяГруппаДоступа Тогда
- Элементы.ВидыДоступа.ОтборСтрок = Новый ФиксированнаяСтруктура("ГруппаДоступа", Форма.ТекущаяГруппаДоступа);
+ Если Элементы.ВидыДоступа.ОтборСтрок = Неопределено Тогда
+ ОтборСтрок = Новый Структура;
+ Иначе
+ ОтборСтрок = Новый Структура(Элементы.ВидыДоступа.ОтборСтрок);
+ КонецЕсли;
+ ОтборСтрок.Вставить("ГруппаДоступа", Форма.ТекущаяГруппаДоступа);
+ Элементы.ВидыДоступа.ОтборСтрок = Новый ФиксированнаяСтруктура(ОтборСтрок);
ТекущиеВидыДоступа = ВидыДоступа.НайтиСтроки(Новый Структура("ГруппаДоступа", Форма.ТекущаяГруппаДоступа));
Если ТекущиеВидыДоступа.Количество() = 0 Тогда
Элементы.ЗначенияДоступа.ОтборСтрок = Новый ФиксированнаяСтруктура("ГруппаДоступа, ВидДоступа", Форма.ТекущаяГруппаДоступа, "");
diff --git a/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Form.form b/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Form.form
index 5b629e3b1..9288b4a58 100644
--- a/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Form.form
+++ b/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Form.form
@@ -48,47 +48,6 @@
ОсновнаяГруппа3
-
- Декорация1
- 29
-
- ru
- Дополнительные действия при завершении работы:
-
- true
- true
-
- true
-
-
- Декорация1ExtendedTooltip
- 36
- Label
- true
- true
-
- Left
-
-
-
- Декорация1КонтекстноеМеню
- 30
- true
-
- Label
- true
- true
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
-
- Left
-
- truetrue
@@ -96,12 +55,9 @@
ru
- Основная группа
+ Дополнительные действия при завершении работы:
-
- ru
- Основная группа
-
+ Ctrl+StrueОсновнаяГруппаExtendedTooltip
@@ -119,6 +75,7 @@
Autotruetrue
+ autoAutoAuto
diff --git a/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl b/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl
index 1a2f4a87d..edd19480b 100644
--- a/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl
+++ b/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl
@@ -8,7 +8,16 @@
Возврат;
КонецЕсли;
+ Ключ = "";
+ Для Каждого Предупреждение Из Параметры.Предупреждения Цикл
+ Ключ = Ключ + Предупреждение.ДействиеПриУстановленномФлажке.Форма + Предупреждение.ДействиеПриНажатииГиперссылки.Форма;
+ КонецЦикла;
+ Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
+ Хеш.Добавить(Ключ);
+ КлючСохраненияПоложенияОкна = "ПредупрежденияПриЗавершенииРаботы" + СтрЗаменить(Хеш.ХешСумма, " ", "");
+
ИнициализироватьЭлементыВФорме(Параметры.Предупреждения);
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект);
КонецПроцедуры
@@ -16,10 +25,8 @@
#Область ОбработчикиСобытийЭлементовШапкиФормы
-// Обработчик нажатия на гиперссылку.
-//
&НаКлиенте
-Процедура НажатиеНаГиперСсылку(Элемент)
+Процедура НажатиеНаГиперссылку(Элемент)
ИмяЭлемента = Элемент.Имя;
Для Каждого СтрокаВопроса Из МассивСоотношенияЭлементовИПараметров Цикл
@@ -38,10 +45,9 @@
КонецПроцедуры
-// Инициализирует массив будущих задач, которые необходимо выполнить при закрытии.
-//
&НаКлиенте
-Процедура ИзменитьМассивБудущихЗадач(Элемент)
+Процедура ФлажокПриИзменении(Элемент)
+
ИмяЭлемента = Элемент.Имя;
НайденныйЭлемент = Элементы.Найти(ИмяЭлемента);
@@ -95,17 +101,19 @@
// Создает элементы формы по передаваемым вопросам пользователю.
//
// Параметры:
-// Вопросы - Массив - Содержит структуры с параметрами значений вопросов.
+// Вопросы - Массив - структуры с параметрами значений вопросов.
+// См. СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииСпискаПредупрежденийЗавершенияРаботы
//
&НаСервере
Процедура ИнициализироватьЭлементыВФорме(Знач Предупреждения)
// Добавляем возможно не указанные значения по умолчанию
- ТаблицаПредупреждений = ПреобразоватьМассивСтруктурВТаблицуЗначений(Предупреждения);
+ ТаблицаПредупреждений = МассивСтруктурВТаблицуЗначений(Предупреждения);
Для Каждого ТекущееПредупреждение Из ТаблицаПредупреждений Цикл
- // Элемент на форму добавляем только если указаны или текст для флага, или текст для гиперссылки, но не одновременно
- НужнаСсылка = Не ПустаяСтрока(ТекущееПредупреждение.ТекстГиперСсылки);
+
+ // Элемент на форму добавляем только если указаны или текст для флага, или текст для Гиперссылки, но не одновременно
+ НужнаСсылка = Не ПустаяСтрока(ТекущееПредупреждение.ТекстГиперссылки);
НуженФлаг = Не ПустаяСтрока(ТекущееПредупреждение.ТекстФлажка);
Если НужнаСсылка И НуженФлаг Тогда
@@ -121,7 +129,7 @@
КонецЦикла;
- // Окончательно располагаем элементы
+ // Подвал.
ТекстНадписи = НСтр("ru = 'Завершить работу с программой?'");
ИмяНадписи = ОпределитьИмяНадписиВФорме("НадписьВопроса");
@@ -135,25 +143,19 @@
КонецПроцедуры
&НаСервере
-Функция ПреобразоватьМассивСтруктурВТаблицуЗначений(Знач Предупреждения)
+Функция МассивСтруктурВТаблицуЗначений(Знач Предупреждения)
// Формируем таблицу, содержащую значения по умолчанию
ТаблицаПредупреждений = Новый ТаблицаЗначений;
КолонкиПредупреждений = ТаблицаПредупреждений.Колонки;
-
КолонкиПредупреждений.Добавить("ПоясняющийТекст");
-
КолонкиПредупреждений.Добавить("ТекстФлажка");
КолонкиПредупреждений.Добавить("ДействиеПриУстановленномФлажке");
-
КолонкиПредупреждений.Добавить("ТекстГиперссылки");
КолонкиПредупреждений.Добавить("ДействиеПриНажатииГиперссылки");
-
КолонкиПредупреждений.Добавить("Приоритет");
КолонкиПредупреждений.Добавить("ВывестиОдноПредупреждение");
-
КолонкиПредупреждений.Добавить("РасширеннаяПодсказка");
- КолонкиПредупреждений.Добавить("ОтображениеРасширеннойПодсказки");
ОдиночныеПредупреждения = Новый Массив;
@@ -171,16 +173,15 @@
ТаблицаПредупреждений = ТаблицаПредупреждений.Скопировать(ОдиночныеПредупреждения);
КонецЕсли;
+ // Чем больше приоритет, тем выше в списке выводится предупреждение.
ТаблицаПредупреждений.Сортировать("Приоритет УБЫВ");
Возврат ТаблицаПредупреждений;
КонецФункции
-// Формирует на форме группу и возвращает её.
-// Является дочерней группой для "ОсновнойГруппы".
-//
&НаСервере
Функция СформироватьГруппуЭлементовФормы()
+
ИмяГруппы = ОпределитьИмяНадписиВФорме("ГруппаВФорме");
Группа = Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"), Элементы.ОсновнаяГруппа);
@@ -191,93 +192,74 @@
Группа.Отображение = ОтображениеОбычнойГруппы.Нет;
Возврат Группа;
+
КонецФункции
-// Формирует на форме гиперссылку с поясняющим текстом.
-//
-// Параметры:
-// СтруктураВопроса - Структура - данные вопроса для формирования
-//
&НаСервере
-Процедура СоздатьГиперСсылкуНаФорме(СтруктураВопроса)
+Процедура СоздатьГиперссылкуНаФорме(СтруктураВопроса)
+
Группа = СформироватьГруппуЭлементовФормы();
- Если СтруктураВопроса.ПоясняющийТекст <> Неопределено Тогда
- Если Не ПустаяСтрока(СтруктураВопроса.ПоясняющийТекст) Тогда
- ИмяНадписи = ОпределитьИмяНадписиВФорме("НадписьВопроса");
- ТипНадписи = Тип("ДекорацияФормы");
-
- РодительНадписи = Группа;
-
- ЭлементПоясняющегоТекста = Элементы.Добавить(ИмяНадписи, ТипНадписи, РодительНадписи);
- ЭлементПоясняющегоТекста.Заголовок = СтруктураВопроса.ПоясняющийТекст;
- КонецЕсли;
+ Если Не ПустаяСтрока(СтруктураВопроса.ПоясняющийТекст) Тогда
+ ИмяНадписи = ОпределитьИмяНадписиВФорме("НадписьВопроса");
+ ТипНадписи = Тип("ДекорацияФормы");
+
+ РодительНадписи = Группа;
+
+ ЭлементПоясняющегоТекста = Элементы.Добавить(ИмяНадписи, ТипНадписи, РодительНадписи);
+ ЭлементПоясняющегоТекста.Заголовок = СтруктураВопроса.ПоясняющийТекст;
КонецЕсли;
- Если ПустаяСтрока(СтруктураВопроса.ТекстГиперСсылки) Тогда
+ Если ПустаяСтрока(СтруктураВопроса.ТекстГиперссылки) Тогда
Возврат;
КонецЕсли;
// Конструируем гиперссылку
- ИмяГиперСсылки = ОпределитьИмяНадписиВФорме("НадписьВопроса");
- ТипГиперСсылки = Тип("ДекорацияФормы");
+ ИмяГиперссылки = ОпределитьИмяНадписиВФорме("НадписьВопроса");
+ ТипГиперссылки = Тип("ДекорацияФормы");
- РодительГиперСсылки = Группа;
+ РодительГиперссылки = Группа;
- ЭлементГиперСсылки = Элементы.Добавить(ИмяГиперСсылки, ТипГиперСсылки, РодительГиперСсылки);
- ЭлементГиперСсылки.Гиперссылка = Истина;
- ЭлементГиперСсылки.Заголовок = СтруктураВопроса.ТекстГиперСсылки;
- ЭлементГиперСсылки.УстановитьДействие("Нажатие", "НажатиеНаГиперСсылку");
+ ЭлементГиперссылки = Элементы.Добавить(ИмяГиперссылки, ТипГиперссылки, РодительГиперссылки);
+ ЭлементГиперссылки.Гиперссылка = Истина;
+ ЭлементГиперссылки.Заголовок = СтруктураВопроса.ТекстГиперссылки;
+ ЭлементГиперссылки.УстановитьДействие("Нажатие", "НажатиеНаГиперссылку");
- УстановитьРасширеннуюПодсказку(ЭлементГиперСсылки, СтруктураВопроса);
+ УстановитьРасширеннуюПодсказку(ЭлементГиперссылки, СтруктураВопроса);
- ФормаГиперСсылки = Неопределено;
- ДействиеГиперСсылки = Неопределено;
- Если СтруктураВопроса.ДействиеПриНажатииГиперссылки <> Неопределено Тогда
-
- СтруктураОбработки = СтруктураВопроса.ДействиеПриНажатииГиперссылки;
- Если СтруктураОбработки.Свойство("Форма", ФормаГиперСсылки) Тогда
- СтруктураМассива = Новый Структура;
- СтруктураМассива.Вставить("Имя", ИмяГиперСсылки);
- СтруктураМассива.Вставить("Форма", ФормаГиперСсылки);
-
- ПараметрыФормы = Неопределено;
- Если СтруктураОбработки.Свойство("ПараметрыФормы", ПараметрыФормы) Тогда
- Если ТипЗнч(ПараметрыФормы) = Тип("Структура") Тогда
- ПараметрыФормы.Вставить("ЗавершениеРаботыПрограммы", Истина);
- ИначеЕсли ПараметрыФормы = Неопределено Тогда
- ПараметрыФормы = Новый Структура;
- ПараметрыФормы.Вставить("ЗавершениеРаботыПрограммы", Истина);
- КонецЕсли;
- СтруктураМассива.Вставить("ПараметрыФормы", ПараметрыФормы);
- КонецЕсли;
-
- МассивСоотношенияЭлементовИПараметров.Добавить(СтруктураМассива);
- КонецЕсли;
+ СтруктураОбработки = СтруктураВопроса.ДействиеПриНажатииГиперссылки;
+ Если ПустаяСтрока(СтруктураОбработки.Форма) Тогда
+ Возврат;
КонецЕсли;
+ ПараметрыОткрытияФормы = Новый Структура;
+ ПараметрыОткрытияФормы.Вставить("Имя", ИмяГиперссылки);
+ ПараметрыОткрытияФормы.Вставить("Форма", СтруктураОбработки.Форма);
+
+ ПараметрыФормы = СтруктураОбработки.ПараметрыФормы;
+ Если ПараметрыФормы = Неопределено Тогда
+ ПараметрыФормы = Новый Структура;
+ КонецЕсли;
+ ПараметрыФормы.Вставить("ЗавершениеРаботыПрограммы", Истина);
+ ПараметрыОткрытияФормы.Вставить("ПараметрыФормы", ПараметрыФормы);
+
+ МассивСоотношенияЭлементовИПараметров.Добавить(ПараметрыОткрытияФормы);
КонецПроцедуры
-// Формирует на форме флажок с поясняющим текстом.
-//
-// Параметры:
-// СтруктураВопроса - структура передаваемого вопроса.
-//
&НаСервере
Процедура СоздатьФлажокНаФорме(СтруктураВопроса)
+
ЗначениеПоУмолчанию = Истина;
Группа = СформироватьГруппуЭлементовФормы();
- Если СтруктураВопроса.ПоясняющийТекст <> Неопределено Тогда
- Если Не ПустаяСтрока(СтруктураВопроса.ПоясняющийТекст) Тогда
- ИмяНадписи = ОпределитьИмяНадписиВФорме("НадписьВопроса");
- ТипНадписи = Тип("ДекорацияФормы");
-
- РодительНадписи = Группа;
-
- ЭлементПоясняющегоТекста = Элементы.Добавить(ИмяНадписи, ТипНадписи, РодительНадписи);
- ЭлементПоясняющегоТекста.Заголовок = СтруктураВопроса.ПоясняющийТекст;
- КонецЕсли;
+ Если Не ПустаяСтрока(СтруктураВопроса.ПоясняющийТекст) Тогда
+ ИмяНадписи = ОпределитьИмяНадписиВФорме("НадписьВопроса");
+ ТипНадписи = Тип("ДекорацияФормы");
+
+ РодительНадписи = Группа;
+
+ ЭлементПоясняющегоТекста = Элементы.Добавить(ИмяНадписи, ТипНадписи, РодительНадписи);
+ ЭлементПоясняющегоТекста.Заголовок = СтруктураВопроса.ПоясняющийТекст;
КонецЕсли;
Если ПустаяСтрока(СтруктураВопроса.ТекстФлажка) Тогда
@@ -309,95 +291,50 @@
УстановитьРасширеннуюПодсказку(НовоеПолеФормы, СтруктураВопроса);
- // Инициализация элемента в массиве.
- ФормаЭлемента = Неопределено;
- СтруктураДействия = Неопределено;
-
- Если СтруктураВопроса.ДействиеПриУстановленномФлажке <> Неопределено Тогда
- СтруктураДействия = СтруктураВопроса.ДействиеПриУстановленномФлажке;
- Если СтруктураДействия.Свойство("Форма", ФормаЭлемента) Тогда
- НовоеПолеФормы.УстановитьДействие("ПриИзменении", "ИзменитьМассивБудущихЗадач");
-
- СтруктураМассива = Новый Структура;
- СтруктураМассива.Вставить("Имя", ИмяФлажка);
- СтруктураМассива.Вставить("Форма", ФормаЭлемента);
- СтруктураМассива.Вставить("Использование", ЗначениеПоУмолчанию);
-
- ПараметрыФормы = Неопределено;
- Если СтруктураДействия.Свойство("ПараметрыФормы", ПараметрыФормы) Тогда
- СтруктураМассива.Вставить("ПараметрыФормы", ПараметрыФормы);
- КонецЕсли;
-
- МассивЗадачНаВыполнениеПослеЗакрытия.Добавить(СтруктураМассива);
- КонецЕсли;
+ Если ПустаяСтрока(СтруктураВопроса.ДействиеПриУстановленномФлажке.Форма) Тогда
+ Возврат;
КонецЕсли;
+ СтруктураДействия = СтруктураВопроса.ДействиеПриУстановленномФлажке;
+
+ НовоеПолеФормы.УстановитьДействие("ПриИзменении", "ФлажокПриИзменении");
+
+ ПараметрыОткрытияФормы = Новый Структура;
+ ПараметрыОткрытияФормы.Вставить("Имя", ИмяФлажка);
+ ПараметрыОткрытияФормы.Вставить("Форма", СтруктураДействия.Форма);
+ ПараметрыОткрытияФормы.Вставить("Использование", ЗначениеПоУмолчанию);
+
+ ПараметрыФормы = СтруктураДействия.ПараметрыФормы;
+ Если ПараметрыФормы = Неопределено Тогда
+ ПараметрыФормы = Новый Структура;
+ КонецЕсли;
+ ПараметрыФормы.Вставить("ЗавершениеРаботыПрограммы", Истина);
+ ПараметрыОткрытияФормы.Вставить("ПараметрыФормы", ПараметрыФормы);
+
+ МассивЗадачНаВыполнениеПослеЗакрытия.Добавить(ПараметрыОткрытияФормы);
+
КонецПроцедуры
-// Устанавливает расширенную подсказку и ее отображение для элемента
-//
&НаСервере
Процедура УстановитьРасширеннуюПодсказку(ЭлементФормы, Знач СтрокаОписания)
- ОписаниеРасширеннойПодсказки = СтрокаОписания.РасширеннаяПодсказка;
- Если ОписаниеРасширеннойПодсказки = Неопределено Тогда
+ ОписаниеРасширеннойПодсказки = СтрокаОписания.РасширеннаяПодсказка;
+ Если ОписаниеРасширеннойПодсказки = "" Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(ОписаниеРасширеннойПодсказки) <> Тип("Строка") Тогда
// Устанавливаем в расширенную подсказку
ЗаполнитьЗначенияСвойств(ЭлементФормы.РасширеннаяПодсказка, ОписаниеРасширеннойПодсказки);
- Если СтрокаОписания.ОтображениеРасширеннойПодсказки <> Неопределено Тогда
- ЭлементФормы.ОтображениеПодсказки = ОтображениеПодсказки[СтрокаОписания.ОтображениеРасширеннойПодсказки];
- КонецЕсли;
-
+ ЭлементФормы.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
Возврат;
КонецЕсли;
- // Добавляем как простой поясняющий текст снизу
- ТипУправляемаяФорма = Тип("УправляемаяФорма");
- ФормаТекущегоЭлемента = ЭлементФормы;
- Пока ТипЗнч(ФормаТекущегоЭлемента) <> ТипУправляемаяФорма Цикл
- ФормаТекущегоЭлемента = ФормаТекущегоЭлемента.Родитель;
- КонецЦикла;
- ЭлементыФормы = ФормаТекущегоЭлемента.Элементы;
- ИмяТекущегоЭлемента = ЭлементФормы.Имя;
+ ЭлементФормы.РасширеннаяПодсказка.Заголовок = ОписаниеРасширеннойПодсказки;
+ ЭлементФормы.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
- ГруппаЭлемента = ЭлементыФормы.Добавить(ИмяТекущегоЭлемента + "ГруппаПоясняющийТекст", Тип("ГруппаФормы"), ЭлементФормы.Родитель);
- ГруппаЭлемента.Вид = ВидГруппыФормы.ОбычнаяГруппа;
- ГруппаЭлемента.РастягиватьПоГоризонтали = Истина;
- ГруппаЭлемента.РастягиватьПоВертикали = Истина;
- ГруппаЭлемента.ОтображатьЗаголовок = Ложь;
- ГруппаЭлемента.Отображение = ОтображениеОбычнойГруппы.Нет;
- ГруппаЭлемента.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
-
- ВыравнивающаяГруппа = ЭлементыФормы.Добавить(ИмяТекущегоЭлемента + "ГруппаПоясняющийТекстВыравнивание", Тип("ГруппаФормы"), ГруппаЭлемента);
- ВыравнивающаяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
- ВыравнивающаяГруппа.РастягиватьПоГоризонтали = Истина;
- ВыравнивающаяГруппа.РастягиватьПоВертикали = Истина;
- ВыравнивающаяГруппа.ОтображатьЗаголовок = Ложь;
- ВыравнивающаяГруппа.Отображение = ОтображениеОбычнойГруппы.Нет;
- ВыравнивающаяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
-
- ОтступТекста = ЭлементыФормы.Добавить(ИмяТекущегоЭлемента + "ГруппаПоясняющийТекстОтступ", Тип("ДекорацияФормы"), ВыравнивающаяГруппа);
- ОтступТекста.Вид = ВидДекорацииФормы.Надпись;
- ОтступТекста.Ширина = 1;
-
- ПоясняющийТекст = ЭлементыФормы.Добавить(ИмяТекущегоЭлемента + "ПоясняющийТекст", Тип("ДекорацияФормы"), ВыравнивающаяГруппа);
- ПоясняющийТекст.Вид = ВидДекорацииФормы.Надпись;
- ПоясняющийТекст.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;
- ПоясняющийТекст.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Верх;
- ПоясняющийТекст.РастягиватьПоВертикали = Истина;
- ПоясняющийТекст.Заголовок = ОписаниеРасширеннойПодсказки;
-
- ЭлементыФормы.Переместить(ЭлементФормы, ГруппаЭлемента, ВыравнивающаяГруппа);
КонецПроцедуры
-// Формирует имя надписи в форме по заголовку.
-//
-// Параметры:
-// ЗаголовокЭлемента - Строка - заголовок.
-//
&НаСервере
Функция ОпределитьИмяНадписиВФорме(ЗаголовокЭлемента)
Индекс = 0;
@@ -431,8 +368,6 @@
Возврат Неопределено;
КонецФункции
-// Выполняет необходимые задачи.
-//
&НаКлиенте
Процедура ВыполнениеЗадачПриЗакрытии(Результат = Неопределено, НачальныйНомерЗадачи = Неопределено) Экспорт
diff --git a/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form b/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form
index 5dd63f3ff..310730d34 100644
--- a/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form
+++ b/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form
@@ -4,6 +4,1030 @@
ruПрисоединенные файлы
+
+ ГруппаПользовательскихНастроек
+ 240
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+ false
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 241
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ WeakSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 242
+
+ ФормаВыбрать
+ 220
+ true
+ true
+
+ true
+
+
+ ФормаВыбратьРасширеннаяПодсказка
+ 221
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Choose
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаСоздать
+ 1
+ true
+ true
+
+ true
+
+
+ ФормаСоздатьExtendedTooltip
+ 103
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Создать
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаИзменить
+ 102
+ true
+ true
+
+ true
+
+
+ ФормаИзменитьРасширеннаяПодсказка
+ 122
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОткрытьСвойстваФайла
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаГруппаКомандОсновные
+ 33
+
+ ФормаОткрыть
+ 3
+ true
+ true
+
+ true
+
+
+ ФормаОткрытьРасширеннаяПодсказка
+ 105
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОткрытьФайлДляПросмотра
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаРедактировать
+ 34
+ true
+ true
+
+ true
+
+
+ ФормаРедактироватьExtendedTooltip
+ 107
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Редактировать
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаЗакончитьРедактирование
+ 43
+ true
+ true
+
+ true
+
+
+ ФормаЗакончитьРедактированиеExtendedTooltip
+ 108
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ЗакончитьРедактирование
+ Normal
+ Picture
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Форма группа команд основные
+
+
+ ФормаГруппаКомандОсновныеРасширеннаяПодсказка
+ 106
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаГлобальныеКоманды
+ 218
+ true
+ true
+
+ true
+
+
+ ru
+ Форма глобальные команды
+
+
+ ru
+ Форма глобальные команды
+
+ None
+
+ ФормаГлобальныеКомандыРасширеннаяПодсказка
+ 219
+ Label
+ true
+ true
+
+ Left
+
+
+
+ FormCommandPanelGlobalCommands
+
+
+
+ ФормаГруппаКомандЭлектроннаяПодписьИШифрование
+ 72
+
+ ФормаЭППодписать
+ 75
+ true
+ true
+
+ true
+
+
+ ФормаЭППодписатьРасширеннаяПодсказка
+ 111
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ЭППодписать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаСохранитьВместеСЭП
+ 73
+ true
+ true
+
+ true
+
+
+ ФормаСохранитьВместеСЭПРасширеннаяПодсказка
+ 112
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СохранитьВместеСЭП
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаДобавитьЭПИзФайла
+ 74
+ true
+ true
+
+ true
+
+
+ ФормаДобавитьЭПИзФайлаРасширеннаяПодсказка
+ 113
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ДобавитьЭПИзФайла
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаГруппаКомандШифрование
+ 78
+
+ ФормаЗашифровать
+ 76
+ true
+ true
+
+ true
+
+
+ ФормаЗашифроватьExtendedTooltip
+ 115
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Зашифровать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаРасшифровать
+ 77
+ true
+ true
+
+ true
+
+
+ ФормаРасшифроватьExtendedTooltip
+ 116
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Расшифровать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Форма группа команд шифрование
+
+
+ ФормаГруппаКомандШифрованиеРасширеннаяПодсказка
+ 114
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+ true
+ true
+
+
+ true
+ Role.ИспользованиеЭП
+
+
+ true
+ Role.ПолныеПрава
+
+
+
+ ru
+ Электронная подпись и шифрование
+
+
+ ru
+ Электронная подпись и шифрование
+
+
+ ФормаГруппаКомандЭлектроннаяПодписьИШифрованиеРасширеннаяПодсказка
+ 110
+ Label
+ true
+ true
+
+ Left
+
+
+ Popup
+
+
+ CommonPicture.ПодписанЗашифрованЗаголовок
+
+ Picture
+ Normal
+
+
+
+ ФормаГруппаКомандДополнительные
+ 18
+
+ ФормаИзменить82
+ 238
+ true
+
+ true
+
+
+ ФормаИзменить82РасширеннаяПодсказка
+ 239
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОткрытьСвойстваФайла
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаСкопировать
+ 19
+ true
+ true
+
+ true
+
+
+ ФормаСкопироватьExtendedTooltip
+ 118
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Скопировать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаУстановитьПометкуУдаления
+ 21
+ true
+ true
+
+ true
+
+
+ ФормаУстановитьПометкуУдаленияExtendedTooltip
+ 119
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.УстановитьПометкуУдаления
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаСохранитьКак
+ 4
+ true
+ true
+
+ true
+
+
+ ФормаСохранитьКакExtendedTooltip
+ 120
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СохранитьКак
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаОсвободить
+ 49
+ true
+ true
+
+ true
+
+
+ ФормаОсвободитьExtendedTooltip
+ 109
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Освободить
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаОбновитьИзФайлаНаДиске
+ 51
+ true
+ true
+
+ true
+
+
+ ФормаОбновитьИзФайлаНаДискеExtendedTooltip
+ 121
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОбновитьИзФайлаНаДиске
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+
+ CommonPicture.ОбновитьФайлИзФайлаНаДиске
+
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаОткрытьКаталогФайла
+ 2
+ true
+ true
+
+ true
+
+
+ ФормаОткрытьКаталогФайлаExtendedTooltip
+ 123
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОткрытьКаталогФайла
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Форма группа команд дополнительные
+
+
+ ФормаГруппаКомандДополнительныеРасширеннаяПодсказка
+ 117
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаГруппаКомандПоиска
+ 12
+
+ ФормаНайти
+ 10
+ true
+
+ true
+
+
+ ФормаНайтиExtendedTooltip
+ 125
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Find
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаОтменитьПоиск
+ 11
+ true
+
+ true
+
+
+ ФормаОтменитьПоискExtendedTooltip
+ 126
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CancelSearch
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Форма группа команд поиска
+
+
+ ru
+ Форма группа команд поиска
+
+
+ ФормаГруппаКомандПоискаРасширеннаяПодсказка
+ 124
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаГруппаДополнительно
+ 216
+
+ ФормаОбновить
+ 222
+ true
+ true
+
+ true
+
+
+ ФормаОбновитьРасширеннаяПодсказка
+ 223
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Refresh
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаГруппаНастройкаСписка
+ 236
+
+ ФормаНастройкаСписка
+ 234
+ true
+ true
+
+ true
+
+
+ ФормаНастройкаСпискаРасширеннаяПодсказка
+ 235
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.ListSettings
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаЗагрузитьНастройкиДинамическогоСписка
+ 224
+ true
+ true
+
+ true
+
+
+ ФормаЗагрузитьНастройкиДинамическогоСпискаРасширеннаяПодсказка
+ 225
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.LoadDynamicListSettings
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаСохранитьНастройкиДинамическогоСписка
+ 226
+ true
+ true
+
+ true
+
+
+ ФормаСохранитьНастройкиДинамическогоСпискаРасширеннаяПодсказка
+ 227
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.SaveDynamicListSettings
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаСтандартныеНастройкиДинамическогоСписка
+ 228
+ true
+ true
+
+ true
+
+
+ ФормаСтандартныеНастройкиДинамическогоСпискаРасширеннаяПодсказка
+ 229
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.DynamicListStandardSettings
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Форма группа настройка списка
+
+
+ ru
+ Форма группа настройка списка
+
+
+ ФормаГруппаНастройкаСпискаРасширеннаяПодсказка
+ 237
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаВывестиСписок
+ 230
+ true
+ true
+
+ true
+
+
+ ФормаВывестиСписокРасширеннаяПодсказка
+ 231
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.OutputList
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаИзменитьФорму
+ 232
+ true
+ true
+
+ true
+
+
+ ФормаИзменитьФормуРасширеннаяПодсказка
+ 233
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CustomizeForm
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Дополнительно
+
+ None
+
+ ФормаГруппаДополнительноРасширеннаяПодсказка
+ 217
+ Label
+ true
+ true
+
+ Left
+
+
+ Popup
+
+ Auto
+ Normal
+
+
+
+ ФормаСправка
+ 9
+ true
+ true
+
+ true
+
+
+ ФормаСправкаExtendedTooltip
+ 131
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Help
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 243
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+
+ Список6
@@ -17,193 +1041,24 @@
None
- СписокПодписанЭП
- 88
+ СписокНомерКартинкиПодписанЗашифрован
+ 206truetruetrue
- Список.ПодписанЭП
+ Список.НомерКартинкиПодписанЗашифрованNone
-
- СписокПодписанЭПРасширеннаяПодсказка
- 157
- Label
- true
- true
-
- Left
-
-
-
- СписокПодписанЭПКонтекстноеМеню
- 89
- true
-
- PictureField
- Enter
- true
-
- CommonPicture.ПодписанЭП
-
- Left
- true
-
- true
- true
- true
- true
-
- CommonPicture.ПодписанЭП
-
-
-
- 1
-
-
-
-
- СписокЗашифрован
- 90
- true
- true
-
- true
-
-
- Список.Зашифрован
-
- None
-
- СписокЗашифрованExtendedTooltip
- 158
- Label
- true
- true
-
- Left
-
-
-
- СписокЗашифрованКонтекстноеМеню
- 91
- true
-
- PictureField
- Enter
- true
-
- CommonPicture.Зашифрован
-
- Left
- true
-
- true
- true
- true
- true
-
- CommonPicture.Зашифрован
-
-
-
- 1
-
-
-
-
- СписокНаименование
- 86
- true
- true
-
- true
-
-
- Список.Наименование
-
-
- СписокНаименованиеExtendedTooltip
- 159
- Label
- true
- true
-
- Left
-
-
-
- СписокНаименованиеКонтекстноеМеню
- 87
- true
-
- LabelField
- Enter
- true
- Left
- true
-
- true
- true
-
-
-
- СписокОписание
- 92
- true
- true
-
- true
-
-
- Список.Описание
-
-
- СписокОписаниеExtendedTooltip
- 160
- Label
- true
- true
-
- Left
-
-
-
- СписокОписаниеКонтекстноеМеню
- 93
- true
-
- LabelField
- Enter
- true
- Left
- true
-
- 30
- true
- 1
- true
-
-
-
- СписокДатаСоздания
- 94
- true
- true
-
-
- Список.ДатаСоздания
- ru
- Дата добавления файла в базу.
+ Наличие электронной подписи или шифрования
- СписокДатаСозданияExtendedTooltip
- 161
+ СписокНомерКартинкиПодписанЗашифрованРасширеннаяПодсказка
+ 208Labeltruetrue
@@ -212,42 +1067,149 @@
- СписокДатаСозданияКонтекстноеМеню
- 95
+ СписокНомерКартинкиПодписанЗашифрованКонтекстноеМеню
+ 207true
- LabelField
+ PictureField
+ trueEntertrue
+
+ CommonPicture.ПодписанЗашифрованЗаголовок
+ Lefttrue
-
+
+ 2truetrue
+ true
+ true
+
+ CommonPicture.ПодписанЗашифрованСостояния
+
+
+
+ 1
+
-
- СписокДатаИзменения
- 100
+
+ СписокГруппаИмяОписание
+ 204
+
+ СписокНаименование
+ 86
+
+ ru
+ Наименование
+
+ true
+ true
+
+ true
+
+
+ Список.Наименование
+
+
+ ru
+ Имя файла (без расширения)
+
+
+ СписокНаименованиеExtendedTooltip
+ 159
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокНаименованиеКонтекстноеМеню
+ 87
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ true
+ Left
+ true
+
+ 20
+ true
+ true
+
+
+
+ СписокОписание
+ 168
+
+ ru
+ Описание
+
+ true
+ true
+
+ true
+
+
+ Список.Описание
+
+ None
+
+ ru
+ Краткое описание файла
+
+
+ СписокОписаниеРасширеннаяПодсказка
+ 170
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокОписаниеКонтекстноеМеню
+ 169
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ true
+ Left
+ true
+
+ 5
+ true
+ true
+
+
+ true
+ true
+
+ true
+ ru
- Данные от
+ Список группа имя описание
- true
- true
-
- true
-
-
- Список.ДатаИзменения
- ru
- Дата изменения данных файла (местное время).
+ Список группа имя описание
+ None
- СписокДатаИзмененияExtendedTooltip
- 162
+ СписокГруппаИмяОписаниеРасширеннаяПодсказка
+ 205Labeltruetrue
@@ -255,39 +1217,127 @@
Left
-
- СписокДатаИзмененияКонтекстноеМеню
- 101
- true
-
- LabelField
- Enter
- true
- Left
- true
-
- true
- true
+ ColumnGroup
+
+ InCell
+ auto
+ true
-
- СписокАвтор
- 96
+
+ СписокВажныеРеквизиты
+ 214
+
+ СписокАвтор
+ 182
+
+ ru
+ Автор
+
+ true
+ true
+
+ true
+
+
+ Список.Автор
+
+
+ ru
+ Пользователь, который добавил файл в список
+
+
+ СписокАвторРасширеннаяПодсказка
+ 184
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокАвторКонтекстноеМеню
+ 183
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ Left
+ true
+
+ 15
+ true
+ true
+ false
+
+
+
+ СписокДатаИзменения
+ 100
+
+ ru
+ Дата изменения
+
+ true
+ true
+
+ true
+
+
+ Список.ДатаИзменения
+
+
+ ru
+ Дата изменения данных файла (местное время)
+
+
+ СписокДатаИзмененияРасширеннаяПодсказка
+ 162
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокДатаИзмененияКонтекстноеМеню
+ 101
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ Left
+ true
+
+ 15
+ true
+ true
+ false
+
+ truetruetrue
-
- Список.Автор
-
+
+ ru
+ Список важные реквизиты
+ ru
- Пользователь, который добавил файл.
+ Список важные реквизиты
+ None
- СписокАвторExtendedTooltip
- 163
+ СписокВажныеРеквизитыРасширеннаяПодсказка
+ 215Labeltruetrue
@@ -295,19 +1345,10 @@
Left
-
- СписокАвторКонтекстноеМеню
- 97
- true
-
- LabelField
- Enter
- true
- Left
- true
-
- true
- true
+ ColumnGroup
+
+ auto
+ true
@@ -315,19 +1356,17 @@
98ru
- Размер (байт)
+ Размер (КБ)truetrue
-
- true
-
+ Список.Размерru
- Размер данных файла.
+ Размер данных файлаСписокРазмерExtendedTooltip
@@ -349,6 +1388,135 @@
trueLefttrue
+
+ 10
+ true
+ true
+ false
+
+ ru
+ ЧЦ=10; ЧН=0
+
+
+
+
+ СписокРедактирует
+ 199
+ true
+ true
+
+
+ Список.Редактирует
+
+
+ ru
+ Пользователь, который занял файл для редактирования
+
+
+ СписокРедактируетРасширеннаяПодсказка
+ 201
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокРедактируетКонтекстноеМеню
+ 200
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ СписокДатаСоздания
+ 179
+
+ ru
+ Дата создания
+
+ true
+ true
+
+
+ Список.ДатаСоздания
+
+
+ ru
+ Дата добавления файла в список
+
+
+ СписокДатаСозданияРасширеннаяПодсказка
+ 181
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокДатаСозданияКонтекстноеМеню
+ 180
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ Left
+ true
+
+ 15
+ true
+ true
+ false
+
+
+
+ СписокОтредактировал
+ 191
+ true
+ true
+
+
+ Список.Отредактировал
+
+
+ ru
+ Пользователь, который отредактировал файл последним
+
+
+ СписокОтредактировалРасширеннаяПодсказка
+ 193
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокОтредактировалКонтекстноеМеню
+ 192
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ Left
+ truetruetrue
@@ -384,6 +1552,7 @@
Lefttrue
+ 1truetrue
@@ -421,10 +1590,10 @@
СписокСтрокаПоиска
- 168
+ 244СписокСтрокаПоискаРасширеннаяПодсказка
- 170
+ 246Labeltruetrue
@@ -434,7 +1603,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 169
+ 245trueСписок
@@ -444,10 +1613,10 @@
СписокСостояниеПросмотра
- 171
+ 247СписокСостояниеПросмотраРасширеннаяПодсказка
- 173
+ 249Labeltruetrue
@@ -457,7 +1626,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 172
+ 248trueViewStatusAddition
@@ -468,10 +1637,10 @@
СписокУправлениеПоиском
- 174
+ 250СписокУправлениеПоискомРасширеннаяПодсказка
- 176
+ 252Labeltruetrue
@@ -481,7 +1650,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 175
+ 251trueSearchControlAddition
@@ -529,11 +1698,37 @@
UserCmdsAuto
+
+ СписокКонтекстноеМенюИзменить
+ 202
+ true
+ true
+
+ true
+
+
+ СписокКонтекстноеМенюИзменитьРасширеннаяПодсказка
+ 203
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОткрытьСвойстваФайла
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
- СписокКонтекстноеМенюГруппаКомандВажное
+ СписокКонтекстноеМенюГруппаКомандОсновные55
- СписокКонтекстноеМенюОткрытьФайлДляПросмотра
+ СписокКонтекстноеМенюОткрыть56truetrue
@@ -541,7 +1736,7 @@
true
- СписокКонтекстноеМенюОткрытьФайлДляПросмотраExtendedTooltip
+ СписокКонтекстноеМенюОткрытьРасширеннаяПодсказка134Labeltrue
@@ -558,34 +1753,6 @@
UserCmdsAuto
- true
- true
-
- true
-
-
- ru
- Список контекстное меню группа команд важное
-
-
- ru
- Список контекстное меню группа команд важное
-
-
- СписокКонтекстноеМенюГруппаКомандВажноеExtendedTooltip
- 133
- Label
- true
- true
-
- Left
-
-
-
-
-
- СписокКонтекстноеМенюГруппаКомандСовместныйДоступ
- 57СписокКонтекстноеМенюРедактировать58
@@ -638,32 +1805,6 @@
UserCmdsAuto
-
- СписокКонтекстноеМенюОсвободить
- 60
- true
- true
-
- true
-
-
- СписокКонтекстноеМенюОсвободитьExtendedTooltip
- 138
- Label
- true
- true
-
- Left
-
-
- Form.Command.Освободить
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- truetrue
@@ -671,15 +1812,15 @@
ru
- Список контекстное меню группа команд совместный доступ
+ Список контекстное меню группа команд основныеru
- Список контекстное меню группа команд совместный доступ
+ Список контекстное меню группа команд основные
- СписокКонтекстноеМенюГруппаКомандСовместныйДоступExtendedTooltip
- 135
+ СписокКонтекстноеМенюГруппаКомандОсновныеРасширеннаяПодсказка
+ 133Labeltruetrue
@@ -690,7 +1831,207 @@
- СписокКонтекстноеМенюГруппаКомандСтандартные
+ СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрование
+ 79
+
+ СписокКонтекстноеМенюЭППодписать
+ 80
+ true
+ true
+
+ true
+
+
+ СписокКонтекстноеМенюЭППодписатьРасширеннаяПодсказка
+ 150
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ЭППодписать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СписокКонтекстноеМенюДобавитьЭПИзФайла
+ 81
+ true
+ true
+
+ true
+
+
+ СписокКонтекстноеМенюДобавитьЭПИзФайлаРасширеннаяПодсказка
+ 151
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ДобавитьЭПИзФайла
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СписокКонтекстноеМенюСохранитьВместеСЭП
+ 82
+ true
+ true
+
+ true
+
+
+ СписокКонтекстноеМенюСохранитьВместеСЭПРасширеннаяПодсказка
+ 152
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СохранитьВместеСЭП
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СписокКонтекстноеМенюГруппаКомандШифрование
+ 83
+
+ СписокКонтекстноеМенюЗашифровать
+ 84
+ true
+ true
+
+ true
+
+
+ СписокКонтекстноеМенюЗашифроватьExtendedTooltip
+ 154
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Зашифровать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СписокКонтекстноеМенюРасшифровать
+ 85
+ true
+ true
+
+ true
+
+
+ СписокКонтекстноеМенюРасшифроватьExtendedTooltip
+ 155
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Расшифровать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Список контекстное меню группа команд шифрование
+
+
+ ru
+ Список контекстное меню группа команд шифрование
+
+
+ СписокКонтекстноеМенюГруппаКомандШифрованиеРасширеннаяПодсказка
+ 153
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+ true
+ true
+
+
+ true
+ Role.ИспользованиеЭП
+
+
+ true
+ Role.ПолныеПрава
+
+
+
+ ru
+ Электронная подпись и шифрование
+
+
+ ru
+ Электронная подпись и шифрование
+
+
+ СписокКонтекстноеМенюГруппаКомандЭлектроннаяПодписьИШифрованиеРасширеннаяПодсказка
+ 149
+ Label
+ true
+ true
+
+ Left
+
+
+ Popup
+
+
+ CommonPicture.ПодписанЗашифрованЗаголовок
+
+ Auto
+ Normal
+
+
+
+ СписокКонтекстноеМенюГруппаКомандДополнительные61СписокКонтекстноеМенюСкопировать
@@ -770,6 +2111,32 @@
UserCmdsAuto
+
+ СписокКонтекстноеМенюОсвободить
+ 60
+ true
+ true
+
+ true
+
+
+ СписокКонтекстноеМенюОсвободитьExtendedTooltip
+ 138
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Освободить
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ СписокКонтекстноеМенюОбновитьИзФайлаНаДиске66
@@ -797,20 +2164,16 @@
Auto
- СписокКонтекстноеМенюИзменить
- 67
-
- ru
- Свойства файла
-
+ СписокКонтекстноеМенюОткрытьКаталогФайла
+ 68truetruetrue
- СписокКонтекстноеМенюИзменитьExtendedTooltip
- 144
+ СписокКонтекстноеМенюОткрытьКаталогФайлаExtendedTooltip
+ 145Labeltruetrue
@@ -818,15 +2181,12 @@
Left
- 0
+ Form.Command.ОткрытьКаталогФайлаNormalAutotruetrueUserCmds
-
- StdPicture.Properties
- Autotrue
@@ -836,14 +2196,10 @@
ru
- Список контекстное меню группа команд стандартные
+ Список контекстное меню группа команд дополнительные
-
- ru
- Список контекстное меню группа команд стандартные
-
- СписокКонтекстноеМенюГруппаКомандСтандартныеExtendedTooltip
+ СписокКонтекстноеМенюГруппаКомандДополнительныеРасширеннаяПодсказка139Labeltrue
@@ -854,32 +2210,6 @@
-
- СписокКонтекстноеМенюОткрытьКаталогФайла
- 68
- true
- true
-
- true
-
-
- СписокКонтекстноеМенюОткрытьКаталогФайлаExtendedTooltip
- 145
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОткрытьКаталогФайла
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- СписокКонтекстноеМенюГруппаКомандОтСписка69
@@ -960,210 +2290,15 @@
-
- СписокКонтекстноеМенюГруппаКомандЭП
- 79
-
- СписокКонтекстноеМенюЭППодписать
- 80
- true
- true
-
- true
-
-
- СписокКонтекстноеМенюЭППодписатьРасширеннаяПодсказка
- 150
- Label
- true
- true
-
- Left
-
-
- Form.Command.ЭППодписать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- СписокКонтекстноеМенюДобавитьЭПИзФайла
- 81
- true
- true
-
- true
-
-
- СписокКонтекстноеМенюДобавитьЭПИзФайлаРасширеннаяПодсказка
- 151
- Label
- true
- true
-
- Left
-
-
- Form.Command.ДобавитьЭПИзФайла
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- СписокКонтекстноеМенюСохранитьВместеСЭП
- 82
- true
- true
-
- true
-
-
- СписокКонтекстноеМенюСохранитьВместеСЭПРасширеннаяПодсказка
- 152
- Label
- true
- true
-
- Left
-
-
- Form.Command.СохранитьВместеСЭП
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- СписокКонтекстноеМенюГруппаКомандШифрования
- 83
-
- СписокКонтекстноеМенюЗашифровать
- 84
- true
- true
-
- true
-
-
- СписокКонтекстноеМенюЗашифроватьExtendedTooltip
- 154
- Label
- true
- true
-
- Left
-
-
- Form.Command.Зашифровать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- СписокКонтекстноеМенюРасшифровать
- 85
- true
- true
-
- true
-
-
- СписокКонтекстноеМенюРасшифроватьExtendedTooltip
- 155
- Label
- true
- true
-
- Left
-
-
- Form.Command.Расшифровать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- true
- true
-
- true
-
-
- ru
- Список контекстное меню группа команд шифрования
-
-
- ru
- Список контекстное меню группа команд шифрования
-
-
- СписокКонтекстноеМенюГруппаКомандШифрованияExtendedTooltip
- 153
- Label
- true
- true
-
- Left
-
-
-
-
- true
- true
-
-
- true
- Role.ИспользованиеЭП
-
-
- true
- Role.ПолныеПрава
-
-
-
- ru
- ЭП и шифрование
-
-
- ru
- Список контекстное меню группа команд ЭП
-
-
- СписокКонтекстноеМенюГруппаКомандЭПРасширеннаяПодсказка
- 149
- Label
- true
- true
-
- Left
-
-
- Popup
-
- Auto
- Normal
-
- HierarchicalListtruetruetrue
+ 8truetrue
+ trueMultiRowtrue1
@@ -1197,791 +2332,12 @@
truetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1
-
- ФормаСоздать
- 1
- true
- true
-
- true
-
-
- ФормаСоздатьExtendedTooltip
- 103
- Label
- true
- true
-
- Left
-
-
- Form.Command.Создать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ГруппаКомандВажное
- 16
-
- ФормаОткрытьФайлДляПросмотра
- 3
- true
- true
-
- true
-
-
- ФормаОткрытьФайлДляПросмотраExtendedTooltip
- 105
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОткрытьФайлДляПросмотра
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- true
- true
-
- true
-
-
- ru
- Группа команд важное
-
-
- ru
- Группа команд важное
-
-
- ГруппаКомандВажноеExtendedTooltip
- 104
- Label
- true
- true
-
- Left
-
-
-
-
-
- ГруппаКомандСовместныйДоступ
- 33
-
- ФормаРедактировать
- 34
- true
- true
-
- true
-
-
- ФормаРедактироватьExtendedTooltip
- 107
- Label
- true
- true
-
- Left
-
-
- Form.Command.Редактировать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаЗакончитьРедактирование
- 43
- true
- true
-
- true
-
-
- ФормаЗакончитьРедактированиеExtendedTooltip
- 108
- Label
- true
- true
-
- Left
-
-
- Form.Command.ЗакончитьРедактирование
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаОсвободить
- 49
- true
- true
-
- true
-
-
- ФормаОсвободитьExtendedTooltip
- 109
- Label
- true
- true
-
- Left
-
-
- Form.Command.Освободить
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
- true
- true
-
- true
-
-
- ru
- Группа команд важное
-
-
- ГруппаКомандСовместныйДоступExtendedTooltip
- 106
- Label
- true
- true
-
- Left
-
-
-
-
-
- ГруппаКомандЭП
- 72
-
- ФормаЭППодписать
- 75
- true
- true
-
- true
-
-
- ФормаЭППодписатьРасширеннаяПодсказка
- 111
- Label
- true
- true
-
- Left
-
-
- Form.Command.ЭППодписать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаСохранитьВместеСЭП
- 73
- true
- true
-
- true
-
-
- ФормаСохранитьВместеСЭПРасширеннаяПодсказка
- 112
- Label
- true
- true
-
- Left
-
-
- Form.Command.СохранитьВместеСЭП
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаДобавитьЭПИзФайла
- 74
- true
- true
-
- true
-
-
- ФормаДобавитьЭПИзФайлаРасширеннаяПодсказка
- 113
- Label
- true
- true
-
- Left
-
-
- Form.Command.ДобавитьЭПИзФайла
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ГруппаКнопокШифрования
- 78
-
- ФормаЗашифровать
- 76
- true
- true
-
- true
-
-
- ФормаЗашифроватьExtendedTooltip
- 115
- Label
- true
- true
-
- Left
-
-
- Form.Command.Зашифровать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаРасшифровать
- 77
- true
- true
-
- true
-
-
- ФормаРасшифроватьExtendedTooltip
- 116
- Label
- true
- true
-
- Left
-
-
- Form.Command.Расшифровать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- true
- true
-
- true
-
-
- ru
- Группа кнопок шифрования
-
-
- ru
- Группа кнопок шифрования
-
-
- ГруппаКнопокШифрованияExtendedTooltip
- 114
- Label
- true
- true
-
- Left
-
-
-
-
- true
- true
-
-
- true
- Role.ИспользованиеЭП
-
-
- true
- Role.ПолныеПрава
-
-
-
- ru
- ЭП и шифрование
-
-
- ru
- Группа команд ЭП
-
-
- ГруппаКомандЭПРасширеннаяПодсказка
- 110
- Label
- true
- true
-
- Left
-
-
- Popup
-
- Auto
- Normal
-
-
-
- ГруппаКомандСтандартные
- 18
-
- ФормаСкопировать
- 19
- true
- true
-
- true
-
-
- ФормаСкопироватьExtendedTooltip
- 118
- Label
- true
- true
-
- Left
-
-
- Form.Command.Скопировать
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаУстановитьПометкуУдаления
- 21
- true
- true
-
- true
-
-
- ФормаУстановитьПометкуУдаленияExtendedTooltip
- 119
- Label
- true
- true
-
- Left
-
-
- Form.Command.УстановитьПометкуУдаления
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаСохранитьКак
- 4
- true
- true
-
- true
-
-
- ФормаСохранитьКакExtendedTooltip
- 120
- Label
- true
- true
-
- Left
-
-
- Form.Command.СохранитьКак
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаОбновитьИзФайлаНаДиске
- 51
- true
- true
-
- true
-
-
- ФормаОбновитьИзФайлаНаДискеExtendedTooltip
- 121
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОбновитьИзФайлаНаДиске
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаОткрытьСвойстваФайла
- 102
- true
- true
-
- true
-
-
- ФормаОткрытьСвойстваФайлаExtendedTooltip
- 122
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОткрытьСвойстваФайла
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- true
- true
-
- true
-
-
- ru
- Группа команд важное
-
-
- ru
- Группа команд важное
-
-
- ГруппаКомандСтандартныеExtendedTooltip
- 117
- Label
- true
- true
-
- Left
-
-
-
-
-
- ФормаОткрытьКаталогФайла
- 2
- true
- true
-
- true
-
-
- ФормаОткрытьКаталогФайлаExtendedTooltip
- 123
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОткрытьКаталогФайла
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ГруппаКомандОтСписка
- 12
-
- ФормаНайти
- 10
- true
- true
-
- true
-
-
- ФормаНайтиExtendedTooltip
- 125
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Find
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаОтменитьПоиск
- 11
- true
- true
-
- true
-
-
- ФормаОтменитьПоискExtendedTooltip
- 126
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.CancelSearch
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаНастройкаСписка
- 13
- true
- true
-
- true
-
-
- ФормаНастройкаСпискаExtendedTooltip
- 127
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.ListSettings
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаВывестиСписок
- 14
- true
- true
-
- true
-
-
- ФормаВывестиСписокExtendedTooltip
- 128
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.OutputList
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаОбновить
- 15
- true
- true
-
- true
-
-
- ФормаОбновитьExtendedTooltip
- 129
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Refresh
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаИзменитьФорму
- 53
- true
- true
-
- true
-
-
- ФормаИзменитьФормуExtendedTooltip
- 130
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.CustomizeForm
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
- true
- true
-
- true
-
-
- ru
- Группа команд от списка
-
-
- ru
- Группа команд от списка
-
-
- ГруппаКомандОтСпискаExtendedTooltip
- 124
- Label
- true
- true
-
- Left
-
-
-
-
-
- ФормаСправка
- 9
- true
- true
-
- true
-
-
- ФормаСправкаExtendedTooltip
- 131
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Help
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Left
@@ -1996,6 +2352,7 @@
OnCreateAtServerПриСозданииНаСервере
+ 70DontBlocktruetrue
@@ -2040,6 +2397,9 @@
Список.Ссылка
+
+ Список.ФайлРедактируетДругойПользователь
+ Список.ФайлРедактируетТекущийПользователь
@@ -2054,15 +2414,19 @@
1 КАК ИндексКартинки,
ВЫРАЗИТЬ("" КАК Строка(150)) КАК Наименование,
ВЫРАЗИТЬ("" КАК Строка(500)) КАК Описание,
- ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаСоздания,
- ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаИзменения,
ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Автор,
+ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаСоздания,
+ ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Отредактировал,
+ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаРедактирования,
+ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаИзменения,
0 КАК Размер,
ЛОЖЬ КАК ПодписанЭП,
ЛОЖЬ КАК Зашифрован,
+ -1 КАК НомерКартинкиПодписанЗашифрован,
ЛОЖЬ КАК ФайлРедактируется,
- ЛОЖЬ КАК ФайлРедактируетТекущийПользователь
-
+ ЛОЖЬ КАК ФайлРедактируетТекущийПользователь,
+ ЛОЖЬ КАК ФайлРедактируетДругойПользователь,
+ ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Редактирует
truetruetrue
@@ -2103,7 +2467,7 @@
ОткрытьФайлДляПросмотраru
- Открыть
+ Просмотреть2
@@ -2165,9 +2529,6 @@
true
-
- CommonPicture.Папка
- ОткрытьКаталогФайла
@@ -2334,7 +2695,7 @@
СохранитьВместеСЭПru
- Сохранить вместе с ЭП...
+ Сохранить вместе с электронными подписями...11
@@ -2357,7 +2718,7 @@
ДобавитьЭПИзФайлаru
- Добавить ЭП из файла...
+ Добавить электронные подписи из файла...12
@@ -2429,19 +2790,19 @@
ОткрытьСвойстваФайлаru
- Свойства файла
+ Открыть карточку1ru
- Открыть свойства файла
+ Изменить (или открыть) текущий элементtrueF2
- StdPicture.Properties
+ StdPicture.Change
@@ -2456,12 +2817,12 @@
Создатьru
- Добавить...
+ Создать ...6ru
- Добавить файл
+ Создать из файла на дискеtrue
diff --git a/SSL/src/CommonForms/ПрисоединенныеФайлы/Help/ru.html b/SSL/src/CommonForms/ПрисоединенныеФайлы/Help/ru.html
index 2e36bf66a..f04411455 100644
--- a/SSL/src/CommonForms/ПрисоединенныеФайлы/Help/ru.html
+++ b/SSL/src/CommonForms/ПрисоединенныеФайлы/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для работы с файлами, присоединенными к объекту программы.
Открывается по команде Присоединенные файлы панели навигации объекта программы.
В списке выводится:
@@ -6,10 +6,10 @@
- зашифрован.
Наименование - полное имя файла. Значок рядом с наименованием указывает тип файла.
Описание - подробные сведения о файле.
-
Данные от - дата изменения данных файла (местное время);
+
Дата изменения - дата изменения данных файла (местное время);
Автор - пользователь, который добавил файл;
-
Размер (байт) - размер данных файла;
С помощью команды Все действия - Изменить форму можно добавить сведения:
+
Размер (КБ) - размер данных файла;
С помощью команды Все действия - Изменить форму можно добавить сведения:
Расширение - формат файла, рядом ставится значок, который также показывает формат;
Редактирует - пользователь, который занял файл для редактирования и т.д.
Добавление нового файла
@@ -50,15 +50,15 @@
Команда Все действия -Отменить редактирование освобождает файл, не сохраняя произведенные в нем изменения в программе, и снимает пометку занятости для редактирования. Команда может быть полезна, если необходимо отказаться от результатов редактирования файла (например, при редактировании в файл были внесены нежелательные изменения или ошибки).
ЭП и шифрование
В выпадающем меню ЭП и шифрование доступны команды для работы с электронной подписью файлов:
-
Подписать - создает ЭП для файла. Перед созданием ЭП программа предлагает выбрать сертификат ЭП из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком .
+
Подписать - создает ЭП для файла. Перед созданием ЭП программа предлагает выбрать сертификат ЭП из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком .
-
Добавить ЭП из файла - добавляет подпись к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
+
Добавить ЭП из файла - добавляет подпись к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
-
Сохранить вместе с ЭП - сохраняет подпись в файл на диске. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
+
Сохранить вместе с ЭП - сохраняет подпись в файл на диске. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
-
Зашифровать - по команде происходит шифрование файла. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком .
+
Зашифровать - по команде происходит шифрование файла. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком .
-
Расшифровать - по команде происходит расшифровка файла. Для расшифровки нужно ввести пароль к закрытому ключу.
+
Расшифровать - по команде происходит расшифровка файла. Для расшифровки нужно ввести пароль к закрытому ключу.
Имя файла - полное имя файла. Автоматически заполняется программой во время присоединения файла и создания карточки файла, можно изменить;
Описание - напишите подробные сведения о файле;
@@ -10,7 +11,7 @@
Редактирует - пользователь, который занял файл для редактирования;
Создан - дата добавления файла в базу;
-
Данные от - дата изменения данных файла;
+
Дата изменения - дата изменения данных файла (местное время);
Размер (байт) - размер данных файла.
Редактирование присоединенного файла
@@ -38,15 +39,15 @@
С помощью команды Все действия - Обновить из файла на диске можно обновить файл из оригинального файла на диске (из которого изначально был создан файл в программе).
ЭП и шифрование
При использовании ЭП становится доступным выпадающее меню ЭП и шифрование, которое содержит команды для работы с электронной подписью файлов:
-
Подписать - создает ЭП для файла. Перед созданием ЭП программа предлагает выбрать сертификат ЭП из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком .
+
Подписать - создает ЭП для файла. Перед созданием ЭП программа предлагает выбрать сертификат ЭП из имеющихся на компьютере. Выбор сертификата можно сделать и во время персональных настроек программы. Подписанный файл становится недоступным для редактирования и отображается в списках со значком .
-
Добавить ЭП из файла - добавляет подпись к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
+
Добавить ЭП из файла - добавляет подпись к файлу. Команду можно использовать, например, если подпись (файл подписи) была получена позже, чем подписанный файл.
-
Сохранить вместе с ЭП - сохраняет подпись в файл на диске. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
+
Сохранить вместе с ЭП - сохраняет подпись в файл на диске. Команду можно использовать, например, если необходимо передать подписанный файл другому лицу.
-
Зашифровать - по команде происходит шифрование файла. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком .
+
Зашифровать - по команде происходит шифрование файла. В отличие от подписания могут использоваться несколько сертификатов, например, если необходимо зашифровать файл для нескольких пользователей. Зашифрованный файл в списках отображается со значком .
-
Расшифровать - по команде происходит расшифровка файла. Для расшифровки нужно ввести пароль к закрытому ключу.
При использовании ЭП и шифрования становятся доступными вкладки:
+
Расшифровать - по команде происходит расшифровка файла. Для расшифровки нужно ввести пароль к закрытому ключу.
При использовании ЭП и шифрования становятся доступными вкладки:
ЭП
На вкладке размещаются сведения об электронной подписи файла:
Предназначен для просмотра и ввода значений дополнительных сведений. Ввод значений дополнительных сведений, как правило, осуществляется в отдельном окне, в отличие от дополнительных реквизитов.
Наименование - наименование поля дополнительного сведения;
+
Поле Значение предназначено для просмотра или ввода значений дополнительного сведения.
Ввод значений
+
Для перехода в режим ввода или редактирования значения дополнительного сведения можно дважды щелкнуть мышью по нужному полю.
+
Способ ввода значения зависит от типа дополнительного сведения (подробнее о типах дополнительных реквизитов и сведений см. здесь).
+
Дополнительные сведения могут иметь выбор только из двух значений, например, Да или Нет. В этом случае ввод новых значений не предусмотрен.
+
Если для ввода предусмотрен список значений, нажмите Показать все (клавишу F4). Затем выберите нужное значение из предлагаемого списка. В зависимости от настроек список значений может быть с иерархией или без иерархии. При необходимости в эти списки можно добавлять значения.
+
Выбор значений (в зависимости от настроек) может осуществляться также из справочников программы.
+
В зависимости от настроек дополнительных сведений может потребоваться Выбрать тип данных.
Изменение состава дополнительных сведений
+
При наличии соответствующих прав можно настроить новое дополнительное сведение или изменить некоторые настройки уже существующих дополнительных сведений. Для этого выполните команду Все действия (в интерфейсе Такси Еще) - Изменить состав дополнительных сведений.
+
Удаленные дополнительные сведения
+
Дополнительное сведение, которое было помечено на удаление, изображается со значком . Для того чтобы окончательно удалить дополнительное сведение, возможно, придется Очистить значения. Дважды щелкните мышью по значению, для того чтобы перейти в режим редактирования.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/РедактированиеДополнительныхСведений/РедактированиеДополнительныхСведений.mdo b/SSL/src/CommonForms/РедактированиеДополнительныхСведений/РедактированиеДополнительныхСведений.mdo
index f04363545..1ebabac59 100644
--- a/SSL/src/CommonForms/РедактированиеДополнительныхСведений/РедактированиеДополнительныхСведений.mdo
+++ b/SSL/src/CommonForms/РедактированиеДополнительныхСведений/РедактированиеДополнительныхСведений.mdo
@@ -5,6 +5,11 @@
ruРедактирование дополнительных сведений
+
+
+ ru
+
+ PersonalComputerMobileDevicetrue
diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form
index 59a4553db..de4056f3a 100644
--- a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form
+++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form
@@ -1362,7 +1362,7 @@
UsualGroupAuto
- StrongSeparation
+ NormalSeparationtruetrueAuto
diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Help/ru.html b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Help/ru.html
index fb189b1f0..5dc7fb74c 100644
--- a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Help/ru.html
+++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначена для редактирования табличного документа.
Для редактирования табличного документа или макета нажмите Открыть макет для редактирования командной панели печатной формы или табличного документа.
Важно: при редактировании макетов печатных форм необходимо иметь в виду, что изменение имен областей, а также параметров макета может привести к потере работоспособности печатной формы. Восстановление стандартной печатной формы выполняется в списке Макеты печатных форм.
Предназначена для просмотра основных свойств сертификата электронной подписи (ЭП).
+
Электронная подпись - реквизит любого электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для подписи необходимо иметь сертификат ключа ЭП. Контроль неизменности электронного документа осуществляется в результате проверки соответствия ЭП документа и сертификата ключа ЭП. Если ЭП соответствует сертификату, это является гарантией того, что документ не был изменен кем-либо с момента его подписания. Контроль неизменности электронного документа можно выполнить в любой момент времени.
+
Открывается с помощью кнопки Открыть сертификат (также можно воспользоваться двойным щелчком мыши) в списке сертификатов на вкладке Разрешено расшифровыватькарточки файла (карточки присоединенного файла). Также можно открыть сертификат с помощью соответствующей команды из окна Подпись ЭП.
+
Основные сведения о сертификате ЭП
+
Кому выдан - личные данные владельца ЭП;
+
Кем выдан - данные об Удостоверяющем центре, который выдал ЭП;
+
Действителен до - дата, до которой действует ЭП;
+
Назначение - перечень назначений сертификата.
Выгрузка сертификата
+
Нажмите Выгрузить и укажите папку, для того чтобы сохранить сертификат на компьютер.
+
Проверка сертификата
+
Нажмите Проверить, для того чтобы проверить действительность сертификата.
В этой форме вам надо указать параметры файловой или клиент-серверной базы, где будет создан начальный образ базы для обмена РИБ. Если у вас есть файлы в томах, вам также потребуется указать путь к файлу, в который будет записан архив (zip) со всеми файлами в томах. При первом запуске в базе филиала вам нужно будет выполнить команду "Разместить файлы начального образа", указав в ней путь к файлу архива.
\ No newline at end of file
+
+
Предназначена для указания параметров файловой или клиент-серверной базы при создании начального образа РИБ. При настройке синхронизации РИБ (внешние файлы) необходимо указать, где будет создан начальный образ РИБ. Если файлы хранятся в томах, также потребуется указать путь к файлу, в который будет записан архив (.zip) со всеми файлами в томах.
+
Открывается по команде Создать начальный образ из Помощника создания синхронизации данных при настройке синхронизации РИБ (внешние файлы). Также можно в списке Синхронизация данных с помощью кнопки открыть настройку синхронизации РИБ (внешние файлы), нажать кнопку Создание начального образа подчиненного узла распределенной информационной базы.
+
Параметры информационной базы
+
Укажите с помощью переключателя, где будет создаваться начальный образ информационной базы:
+
+
На данном компьютере или на компьютере в локальной сети.
+
+
Задайте Параметры информационной базы:
+
+
В поле Язык (Страна) выберите нужное значение из списка. По умолчанию предлагаются параметры, которые были заданы при создании синхронизации данных.
+
+
Задайте Полное имя файловой базы:
+
+
Для сервера 1С:Предприятия под управлением Microsoft Windows - с помощью кнопки укажите путь к папке, в которой будет размещен файл.
+
или
+
+
Для сервера 1С:Предприятия под управлением Linux - напишите путь к папке, в которой будет размещен файл начального образа.
+
На сервере 1С:Предприятия.
+
+
Задайте Параметры информационной базы:
+
+
Укажите Кластер серверов 1С:Предприятия;
+
+
Напишите Имя информационной базы в кластере;
+
+
В поле Защищенное соединение выберите значение из списка (Выключено, Установка соединения, Постоянно);
+
+
Выберите из списка Тип СУБД (Microcoft SQL Server, PostgreSQL, IBM DB2, Oracle Database);
+
+
Укажите Сервер базы данных;
+
+
Напишите Имя базы данных;
+
+
Напишите имя Пользователя базы данных и Пароль Пользователя;
+
+
Выберите Смещение дат (по умолчанию 0);
+
+
В поле Язык (Страна) выберите значение из списка. По умолчанию предлагаются параметры, которые были заданы при создании синхронизации данных;
+
+
При необходимости включите флажок Установить блокировку регламентных заданий (по умолчанию выключен).
Путь к архиву с файлами томов
+
Укажите Полное имя архива с файлами томов:
+
+
Для сервера 1С:Предприятия под управлением Microsoft Windows - укажите с помощью кнопки путь к каталогу
или
+
+
Для сервера 1С:Предприятия под управлением Linux - напишите путь к папке, в которой будет размещен архив с файлами томов.
Для продолжения нажмите Создать начальный образ.
+
Через некоторое время программа выводит сообщение об успешном создании начального образа подчиненного узла распределенной информационной базы. Нажмите ОК для возвращения в программу.
+
Для того чтобы загрузить файлы в томах в базе филиала, при первом запуске необходимо выполнить команду Разместить файлы начального образа панели действий в разделе Органайзер, указав путь к файлу архива с файлами в томах.
\ No newline at end of file
diff --git a/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Module.bsl b/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Module.bsl
index 4a40166b4..c576c580c 100644
--- a/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Module.bsl
+++ b/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Module.bsl
@@ -59,15 +59,8 @@
Элементы.ГруппаПутьКАрхивуСФайламиТомов.Видимость = Ложь;
КонецЕсли;
- Если СтандартныеПодсистемыВызовСервера.ПараметрыРаботыКлиента().ИнформационнаяБазаФайловая Тогда
-
- Элементы.ПолноеИмяФайловойБазы.Заголовок =
- НСтр("ru = 'Для сервера 1С:Предприятия под управлением Microsoft Windows'");
-
- Элементы.ПутьКАрхивуСФайламиТомов.Заголовок =
- НСтр("ru = 'Для сервера 1С:Предприятия под управлением Microsoft Windows'");
- Иначе
- Элементы.ПолноеИмяФайловойБазы.КнопкаВыбора = Ложь;
+ Если Не СтандартныеПодсистемыВызовСервера.ПараметрыРаботыКлиента().ИнформационнаяБазаФайловая Тогда
+ Элементы.ПутьКАрхивуСФайламиТомов.ПодсказкаВвода = НСтр("ru = '\\имя сервера\resource\files.zip'");
Элементы.ПутьКАрхивуСФайламиТомов.КнопкаВыбора = Ложь;
КонецЕсли;
@@ -85,15 +78,10 @@
Страницы.ТекущаяСтраница = Страницы.ПодчиненныеЭлементы[ВидБазы];
Если ЭтотОбъект.ВидБазы = 0 Тогда
- Элементы.ПутьКАрхивуСФайламиТомов.Заголовок =
- НСтр("ru = 'Для сервера 1С:Предприятия под управлением Microsoft Windows'");
-
+ Элементы.ПутьКАрхивуСФайламиТомов.ПодсказкаВвода = "";
Элементы.ПутьКАрхивуСФайламиТомов.КнопкаВыбора = Истина;
Иначе
- Элементы.ПутьКАрхивуСФайламиТомов.Заголовок =
- НСтр("ru = 'Для сервера 1С:Предприятия под управлением Microsoft Windows,
- |(вида ""\\имя сервера\resource\files.zip"")'");
-
+ Элементы.ПутьКАрхивуСФайламиТомов.ПодсказкаВвода = НСтр("ru = '\\имя сервера\resource\files.zip'");
Элементы.ПутьКАрхивуСФайламиТомов.КнопкаВыбора = Ложь;
КонецЕсли;
diff --git a/SSL/src/CommonForms/СозданиеРезервнойКопии/Form.form b/SSL/src/CommonForms/СозданиеРезервнойКопии/Form.form
index 3d459b262..ea2a19e35 100644
--- a/SSL/src/CommonForms/СозданиеРезервнойКопии/Form.form
+++ b/SSL/src/CommonForms/СозданиеРезервнойКопии/Form.form
@@ -382,7 +382,7 @@
OnCreateAtServerПриСозданииНаСервере
- LockOwner
+ LockWholeInterfacetruetruetrue
diff --git a/SSL/src/CommonForms/СохранениеПечатнойФормы/Help/ru.html b/SSL/src/CommonForms/СохранениеПечатнойФормы/Help/ru.html
index 78d555002..ad3b4aef3 100644
--- a/SSL/src/CommonForms/СохранениеПечатнойФормы/Help/ru.html
+++ b/SSL/src/CommonForms/СохранениеПечатнойФормы/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначена для сохранения печатной формы. Имеется возможность сохранить печатные формы в нужных форматах на компьютере или присоединить к документу.
С помощью переключателя выберите, как сохранить печатную форму:
Сохранить в папку на компьютер.
diff --git a/SSL/src/CommonForms/СтруктураПодчиненности/Form.form b/SSL/src/CommonForms/СтруктураПодчиненности/Form.form
index ee6fe65c5..9081d6b02 100644
--- a/SSL/src/CommonForms/СтруктураПодчиненности/Form.form
+++ b/SSL/src/CommonForms/СтруктураПодчиненности/Form.form
@@ -1,5 +1,5 @@
-
+ruСтруктура подчиненности
@@ -110,9 +110,6 @@
truetrueUserCmds
-
- StdPicture.Refresh
- Auto
Отчёт Структура подчиненности предназначен для вывода родительских и подчиненных документов. Документ, для котого сформирован отчёт отображается жирным шрифтом. Дерево родительских документов строится вверх-вправо от документа, для которого формируется отчёт. Дерево дочерних документов строится вниз-вправо от документа, для которого формируется отчёт.
При помощи двойного клика на любом выведенном в отчёт документе можно открыть данный документ для просмотра.
Воспользовашись кнопкой Вывести для текущего можно сформировать отчёт Структура подчиненности для документа, на котором мы на данный момент спозиционировались.
Электронная подпись - реквизит любого электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для подписи необходимо иметь сертификат ключа ЭП. Контроль неизменности электронного документа осуществляется в результате проверки соответствия ЭП документа и сертификата ключа ЭП. Если ЭП соответствует сертификату, это является гарантией того, что документ не был изменен кем-либо с момента его подписания. Контроль неизменности электронного документа можно выполнить в любой момент времени.
+
Подписание данных
+
Подписывать файл могут разные пользователи, при этом для каждого будет создана своя подпись.
+
Для подписания выберите один сертификат.
+
Напишите Пароль к закрытому ключу (вводится в процессе создания сертификата).
+
При необходимости можно ввести Комментарий к подписи - дополнительную информацию о подписи.
+
Для выполнения подписи нажмите Подписать.
+
Данные будут подписаны с использованием указанного сертификата ЭП.
+
Созданная ЭП хранится в программе. Подписанный файл становится недоступным для редактирования и отображается в списках со значком .
\ No newline at end of file
diff --git a/SSL/src/CommonForms/УточнениеКонтактов/Help/ru.html b/SSL/src/CommonForms/УточнениеКонтактов/Help/ru.html
new file mode 100644
index 000000000..446956306
--- /dev/null
+++ b/SSL/src/CommonForms/УточнениеКонтактов/Help/ru.html
@@ -0,0 +1,15 @@
+
+
Также можно сопоставить и обновить адреса электронной почты, содержащиеся в письме, с контактами и их текущей контактной информацией в программе.
+
Открывается по гиперссылке Уточнить контакты во входящем электронном письме. Если контакты были сопоставлены автоматически, гиперссылка не выводится. В этом случае можно воспользоваться командой Уточнить контакты меню Все действия (в интерфейсе Такси Еще)
+
Список состоит из колонок:
+
Адрес в письме - в колонку помещаются все адреса электронной почты, которые фигурируют во входящем письме.
+
Сохранить в контактах:
+
Контакт - выберите контакт из списков программы для сопоставления. Если контакт еще не сопоставлен, то открывается окно Выбор контакта. С его помощью можно подобрать соответствующий список программы.
+
Вид эл.почты контакта - подбирается из контакта автоматически.
Сопоставление контактов
+
Если адрес был ранее сопоставлен с контактом, то он будет отображен в списке.
+
Если адрес не был ранее сопоставлен с контактом, или если необходимо сопоставить адрес с другим контактом, или записать адрес в другое поле контактной информации, то в поле Контакт можно выбрать контакт, в который будет записан новый адрес электронной почты. В поле Вид эл. почты контакта можно уточнить, в какое именно поле будет записан электронный адрес контакта.
+
С помощью кнопки Записать и закрыть для указанных контактов адреса будут перезаписаны в указанный вид электронной почты.
+
После сопоставления к адресу электронной почты (его представлению) в письме будет добавлено наименование контакта.
+
Если у контакта в программе указан адрес электронной почты, то при получении письма от такого контакта сопоставление контакта с адресом электронной почты произойдет автоматически.
Предназначен для просмотра файлов, которые хранятся в томе на диске.
В каждом томе файлы хранятся в подкаталогах. На каждую дату создания версии файла создается свой подкаталог. Все файлы хранятся с оригинальным именем и расширением, между ними добавляется номер версии, например, Приказ2.2.txt.
Список вызывается по команде Файлы в томе панели навигации Тома.
В списке выводится:
-
Путь к файлу - подкаталог, в котором хранится файл;
+
Путь к файлу - полное имя файла, включает подкаталог, в котором хранится файл;
Размер - объем в байтах;
-
Автор - пользователь, который добавил файл;
-
Ссылка.
Файлы можно отобрать по объекту программы, к которому они относятся. Для этого в поле Владелец файлов выберите соответствующий объект программы.
+
Автор - пользователь, который добавил файл.
Отбор файлов
+
Файлы можно отобрать по объекту программы, к которому они относятся. Для этого в поле Владелец файлов выберите из списка соответствующее значение. Например, можно в качестве владельца выбрать Присоединенные файлы (Встреча) - будут выведены все файлы, которые присоединены к документам Встреча.
+
Файлы могут храниться в программе без привязки к каким-либо объектам. Информацию о них можно посмотреть в списке файлов. Для того чтобы просмотреть файлы из этого списка, выберите в качестве владельца Версии файлов.
Просмотр информации о файле
+
Для того чтобы просмотреть информацию о файле, воспользуйтесь двойным щелчком мыши. В зависимости от владельца (указывается в поле Владелец файлов) открывается карточка присоединенного файла или карточка версии файла.
-
- КомпоновщикНастроекПользовательскиеНастройкиСтрокаПоискаКонтекстноеМеню
- 12
- true
-
- КомпоновщикНастроекПользовательскиеНастройки
-
- true
+ Page
+
+ Vertical
+ auto
-
-
- КомпоновщикНастроекПользовательскиеНастройкиСостояниеПросмотра
- 14
+
+
+ СтраницаВсеНастройки
+ 15
+
+ ВсеНастройкиТаблица
+ 1
+ true
+ true
+
+ true
+
+
+ Отчет.SettingsComposer.UserSettings
+
+ None
+ HierarchicalList
+ List
+ Tree
+ None
+
+ ВсеНастройкиТаблицаКоманднаяПанель
+ 3
+ Left
+ true
+
+
+ OnChange
+ КомпоновщикНастроекПользовательскиеНастройкиПриИзменении
+
+
+ ВсеНастройкиТаблицаСтрокаПоиска
+ 137
+
+ ВсеНастройкиТаблицаСтрокаПоискаРасширеннаяПодсказка
+ 139
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВсеНастройкиТаблицаСтрокаПоискаКонтекстноеМеню
+ 138
+ true
+
+ ВсеНастройкиТаблица
+
+ true
+
+
+
+ ВсеНастройкиТаблицаСостояниеПросмотра
+ 140
+
+ ВсеНастройкиТаблицаСостояниеПросмотраРасширеннаяПодсказка
+ 142
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВсеНастройкиТаблицаСостояниеПросмотраКонтекстноеМеню
+ 141
+ true
+
+ ViewStatusAddition
+ ВсеНастройкиТаблица
+
+ true
+
+
+
+ ВсеНастройкиТаблицаУправлениеПоиском
+ 143
+
+ ВсеНастройкиТаблицаУправлениеПоискомРасширеннаяПодсказка
+ 145
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВсеНастройкиТаблицаУправлениеПоискомКонтекстноеМеню
+ 144
+ true
+
+ SearchControlAddition
+ ВсеНастройкиТаблица
+
+ true
+
+
+
+ ВсеНастройкиТаблицаРасширеннаяПодсказка
+ 10
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВсеНастройкиТаблицаКонтекстноеМеню
+ 2
+ true
+
+ HierarchicalList
+ true
+ true
+ true
+ true
+ true
+ true
+ MultiRow
+ true
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ Auto
+ Auto
+ true
+ true
+ None
+ None
+ None
+ true
+ All
+ Show
+
+ true
+ true
+
+ true
+
+
+ ru
+
+
+
+ ru
+
+
+ true
- КомпоновщикНастроекПользовательскиеНастройкиСостояниеПросмотраРасширеннаяПодсказка
+ СтраницаВсеНастройкиРасширеннаяПодсказка16Labeltrue
@@ -66,44 +596,29 @@
Left
-
- КомпоновщикНастроекПользовательскиеНастройкиСостояниеПросмотраКонтекстноеМеню
- 15
- true
-
- ViewStatusAddition
- КомпоновщикНастроекПользовательскиеНастройки
-
- true
+ Page
+
+ Vertical
+ auto
-
-
- КомпоновщикНастроекПользовательскиеНастройкиУправлениеПоиском
- 17
-
- КомпоновщикНастроекПользовательскиеНастройкиУправлениеПоискомРасширеннаяПодсказка
- 19
- Label
- true
- true
-
- Left
-
-
-
- КомпоновщикНастроекПользовательскиеНастройкиУправлениеПоискомКонтекстноеМеню
- 18
- true
-
- SearchControlAddition
- КомпоновщикНастроекПользовательскиеНастройки
-
- true
-
-
+
+ true
+ true
+
+ true
+
+
+ ru
+
+
+
+ ru
+
+
+ true
- КомпоновщикНастроекПользовательскиеНастройкиExtendedTooltip
- 10
+ СтраницыФормыРасширеннаяПодсказка
+ 12Labeltruetrue
@@ -111,130 +626,527 @@
Left
-
- КомпоновщикНастроекПользовательскиеНастройкиКонтекстноеМеню
- 2
- true
-
- HierarchicalList
- true
- true
- true
- true
- true
- true
- MultiRow
- true
- 1
- 1
- AutoUse
- AutoUse
- true
- true
- false
- Auto
- Auto
- true
- true
- None
- None
- None
- true
- All
- Show
+ Pages
+
+ Auto
+
+
+
+ КомандыФормы
+ 73
+
+ КомандыФормы_Левая
+ 82
+
+ ГруппаПользовательскиеНастройки_Левая
+ 90
+
+ ВариантыПользовательскихНастроек_Левая
+ 92
+ true
+ true
+
+ true
+
+
+ ru
+ Варианты пользовательских настроек левая
+
+
+ ru
+ Варианты пользовательских настроек левая
+
+ true
+
+ ВариантыПользовательскихНастроек_ЛеваяРасширеннаяПодсказка
+ 93
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ СброситьНастройки_Левая
+ 94
+ true
+ true
+
+ true
+
+
+ СброситьНастройки_ЛеваяРасширеннаяПодсказка
+ 95
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.НастройкиПоУмолчанию
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Выбрать
+
+
+ ru
+ Выбрать настройки
+
+ true
+
+ ГруппаПользовательскиеНастройки_ЛеваяРасширеннаяПодсказка
+ 91
+ Label
+ true
+ true
+
+ Left
+
+
+ Popup
+
+
+ StdPicture.LoadReportSettings
+
+ PictureAndText
+ Normal
+
+
+
+ СохранитьНастройкиОтчета
+ 96
+
+ ru
+ Сохранить...
+
+ true
+ true
+
+ true
+
+
+ СохранитьНастройкиОтчетаРасширеннаяПодсказка
+ 97
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.SaveReportSettings
+ Normal
+ PictureAndText
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+
+
+
+ ru
+
+
+ true
+
+ КомандыФормы_ЛеваяРасширеннаяПодсказка
+ 83
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+
+
+
+ КомандыФормы_Правая
+ 80
+
+ ФормаГруппа4
+ 71
+
+ ВыбратьНастройки
+ 67
+ true
+ true
+
+ true
+
+
+ ВыбратьНастройкиРасширеннаяПодсказка
+ 68
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.LoadReportSettings
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ СохранитьНастройки
+ 69
+ true
+ true
+
+ true
+
+
+ СохранитьНастройкиРасширеннаяПодсказка
+ 70
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.SaveReportSettings
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ФормаГруппа4РасширеннаяПодсказка
+ 72
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаГруппа2
+ 31
+
+ Сформировать
+ 21
+ true
+ true
+
+ true
+
+
+ СформироватьРасширеннаяПодсказка
+ 22
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Сформировать
+ true
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ Закрыть
+ 4
+ true
+ true
+
+ true
+
+
+ ЗакрытьРасширеннаяПодсказка
+ 7
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Закрыть
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ФормироватьСразу
+ 27
+ true
+ true
+
+ true
+
+
+ ФормироватьСразуРасширеннаяПодсказка
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ФормироватьСразу
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+ true
+
+ ФормаГруппа2РасширеннаяПодсказка
+ 32
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаГруппа3
+ 33
+
+ ВсеНастройки
+ 25
+ true
+ true
+
+ true
+
+
+ ВсеНастройкиРасширеннаяПодсказка
+ 26
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ВсеНастройки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ИзменитьСоставНастроек
+ 19
+ true
+ true
+
+ true
+
+
+ ИзменитьСоставНастроекРасширеннаяПодсказка
+ 20
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.ChangeSettingsStructure
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+ true
+
+ ФормаГруппа3РасширеннаяПодсказка
+ 34
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ИзменитьФорму
+ 135
+ true
+
+ true
+
+
+ ИзменитьФормуРасширеннаяПодсказка
+ 136
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CustomizeForm
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+
+
+
+ ru
+
+
+ true
+
+ КомандыФормы_ПраваяРасширеннаяПодсказка
+ 81
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Right
+
+
+ true
+ true
+
+ true
+
+
+ ru
+
+
+
+ ru
+
+
+ true
+
+ КомандыФормыРасширеннаяПодсказка
+ 74
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+ BottomtrueФормаКоманднаяПанель-1
-
- ЗавершитьРедактирование
- 4
- true
- true
-
- true
-
-
- ЗавершитьРедактированиеExtendedTooltip
- 7
- Label
- true
- true
-
- Left
-
-
- Form.Command.ЗавершитьРедактирование
- Auto
- true
- true
- true
- UserCmds
- Auto
-
-
- ФормаЗавершитьРедактирование
- 5
- true
-
- true
-
-
- ФормаЗавершитьРедактированиеExtendedTooltip
- 8
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.EndEdit
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаОтмена
- 6
- true
- true
-
- true
-
-
- ФормаОтменаExtendedTooltip
- 9
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.CancelEdit
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Right
- true
+
+ OnOpen
+ ПриОткрытии
+ OnCreateAtServerПриСозданииНаСервере
+
+ OnClose
+ ПриЗакрытии
+
+ 15LockOwnertrue
- truetrueVerticaltrue
@@ -257,16 +1169,571 @@
true
-
- ЗавершитьРедактирование
+
+ НастройкиОтчетаru
- Завершить редактирование
+ Настройки отчета
+
+ 2
+
+
+ true
+
+
+
+
+ ПостоянныеКоманды
+
+ ru
+ Постоянные команды
+
+ 3
+
+ ValueList
+
+
+
+
+
+
+
+
+ ПостоянныеРеквизиты
+
+ ru
+ Постоянные реквизиты
+
+ 4
+
+ ValueList
+
+
+
+
+
+
+
+
+ ЕстьДругиеОтчеты
+
+ ru
+ Есть другие отчеты
+
+ 5
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ЕстьОбычныеНастройки
+
+ ru
+ Есть обычные настройки
+
+ 6
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ЕстьБыстрыеНастройки
+
+ ru
+ Есть быстрые настройки
+
+ 7
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ВидимостьКомандВариантовОтчетов
+
+ ru
+ Видимость команд вариантов отчетов
+
+ 8
+
+ Boolean
+
+
+
+
+
+ ВариантыПанелиКлючТекущегоВарианта
+
+ ru
+ Варианты панели ключ текущего варианта
+
+ 9
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ВариантыПанелиНомерЭлемента
+
+ ru
+ Варианты панели номер элемента
+
+ 10
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ОтчетНаименованиеТекущегоВарианта
+
+ ru
+ Вариант отчета
+
+ 11
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ФормаОткрыта
+
+ ru
+ Форма открыта
+
+ 12
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ВариантСсылка
+
+ ru
+ Вариант ссылка
+
+ 13
+
+ CatalogRef.ВариантыОтчетов
+
+
+ true
+
+
+ true
+
+
+
+ ВариантыПанели
+
+ ru
+ Варианты панели
+
+ 15
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+ Ссылка
+
+ ru
+ Ссылка
+
+ 1
+
+ CatalogRef.ВариантыОтчетов
+
+
+ true
+
+
+ true
+
+
+
+ Отчет
+
+ ru
+ Отчет
+
+ 2
+
+ String
+ CatalogRef.ДополнительныеОтчетыИОбработки
+ CatalogRef.ИдентификаторыОбъектовМетаданных
+
+
+
+ true
+
+
+ true
+
+
+
+ Наименование
+
+ ru
+ Наименование
+
+ 3
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Описание
+
+ ru
+ Описание
+
+ 4
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ КлючВарианта
+
+ ru
+ Ключ варианта
+
+ 5
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ НадписьИмя
+
+ ru
+ Надпись имя
+
+ 7
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Автор
+
+ ru
+ Автор
+
+ 6
+
+ CatalogRef.Пользователи
+
+
+ true
+
+
+ true
+
+
+
+ Дополнительный
+
+ ru
+ Дополнительный
+
+ 8
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ИмяОтчета
+
+ ru
+ Имя отчета
+
+ 9
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ИмяГруппы
+
+ ru
+ Имя группы
+
+ 10
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+
+ ХранимыеСпискиВыбора
+
+ ru
+ Хранимые списки выбора
+
+ 16
+
+
+
+
+
+ НеобходимоОбновитьНастройки
+
+ ru
+ Необходимо обновить настройки
+
+ 17
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ БыстрыйПоискИменОбъектовМетаданных
+
+ ru
+ Быстрый поиск имен объектов метаданных
+
+ 18
+
+
+ true
+
+
+ true
+
+
+
+ БыстрыйПоискОтключаемыхСвязей
+
+ ru
+ Быстрый поиск отключаемых связей
+
+ 19
+
+
+ true
+
+
+ true
+
+
+
+ БыстрыйПоискПользовательскихНастроек
+
+ ru
+ Быстрый поиск пользовательских настроек
+
+ 20
+
+
+ true
+
+
+ true
+
+
+
+ ФормаЗакрываетсяСПараметрами
+
+ ru
+ Форма закрывается с параметрами
+
+ 14
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ГруппыПодсистем
+
+ ru
+ Группы подсистем
+
+ 21
+
+ ValueList
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+ ЦветГруппыВариантовОтчетов
+
+ ru
+ Цвет группы вариантов отчетов
+
+ 22
+
+ Color
+
+
+ true
+
+
+ true
+
+
+
+ ШрифтОбычнойГруппы
+
+ ru
+ Шрифт обычной группы
+
+ 23
+
+ Font
+
+
+ true
+
+
+ true
+
+
+
+ РежимСовместимости
+
+ ru
+ Режим совместимости
+
+ 24
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Закрыть
+
+ ru
+ Закрыть1ru
- Завершить редактирование
+ Завершить редактирование настроек и закрытьtrue
@@ -279,11 +1746,114 @@
AutoAuto
+
+ Сформировать
+
+ ru
+ Закрыть и сформировать
+
+ 2
+
+ ru
+ Сформировать
+
+
+ true
+
+
+ StdPicture.GenerateReport
+
+
+
+ Сформировать
+
+
+ Auto
+ Auto
+
+
+ ВсеНастройки
+
+ ru
+ Все настройки
+
+ 3
+
+ ru
+ Все настройки
+
+
+ true
+
+
+
+ ВсеНастройки
+
+
+ Auto
+ Auto
+
+
+ ФормироватьСразу
+
+ ru
+ Формировать сразу
+
+ 4
+
+ ru
+ Формировать сразу
+
+
+ true
+
+ Auto
+ Auto
+
+
+ НастройкиПоУмолчанию
+
+ ru
+ Стандартные настройки
+
+ 5
+
+ ru
+ Настройки по умолчанию
+
+
+ true
+
+
+
+ НастройкиПоУмолчанию
+
+
+ Auto
+ Auto
+
+
+ OnLoadUserSettingsAtServer
+ ПриЗагрузкеПользовательскихНастроекНаСервере
+
+
+ OnLoadVariantAtServer
+ ПриЗагрузкеВариантаНаСервере
+
+
+ OnSaveUserSettingsAtServer
+ ПриСохраненииПользовательскихНастроекНаСервере
+
+
+ OnUpdateUserSettingSetAtServer
+ ПриОбновленииСоставаПользовательскихНастроекНаСервере
+ Settings
+ ОтчетНаименованиеТекущегоВарианта
diff --git a/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl b/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl
index b649907e4..e6f4e338a 100644
--- a/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl
+++ b/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl
@@ -1,19 +1,952 @@
+&НаКлиенте
+Перем ПеременныеКлиента;
#Область ОбработчикиСобытийФормы
+////////////////////////////////////////////////////////////////////////////////
+// Форма
+
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
- Если Параметры.Свойство("ПредставлениеВарианта") И ЗначениеЗаполнено(Параметры.ПредставлениеВарианта) Тогда
- АвтоЗаголовок = Ложь;
- Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Изменение настроек отчета ""%1""'"),
- Параметры.ПредставлениеВарианта);
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ ЦветГруппыВариантовОтчетов = ЦветаСтиля.ГруппаВариантовОтчетовЦвет82;
+ ШрифтОбычнойГруппы = Новый Шрифт("MS Shell Dlg", 8, Истина, Ложь, Ложь, Ложь, 100);
+ Иначе // Такси.
+ ЦветГруппыВариантовОтчетов = ЦветаСтиля.ГруппаВариантовОтчетовЦвет;
+ ШрифтОбычнойГруппы = Новый Шрифт("Arial", 12, Ложь, Ложь, Ложь, Ложь, 90);
+ КонецЕсли;
+ Элементы.ГруппаДругиеВариантыОтчета.ЦветТекстаЗаголовка = ЦветГруппыВариантовОтчетов;
+ Элементы.ГруппаДругиеВариантыОтчета.ШрифтЗаголовка = ШрифтОбычнойГруппы;
+
+ Если Не Параметры.Свойство("НастройкиОтчета", НастройкиОтчета) Тогда
+ РежимСовместимости = Истина;
+ НастройкиОтчета = ФункцииОтчетовКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию();
+ ОтчетМетаданные = РеквизитФормыВЗначение("Отчет").Метаданные();
+ Если ОтчетМетаданные.ХранилищеНастроек = Неопределено Тогда
+ НастройкиОтчета.Вставить("ХранилищеПользовательскихНастроек", Неопределено);
+ Иначе
+ НастройкиОтчета.Вставить("ХранилищеПользовательскихНастроек", ОтчетМетаданные.ХранилищеНастроек.ПолноеИмя());
+ КонецЕсли;
+ КонецЕсли;
+ Если Параметры.Свойство("КлючОбъекта") Тогда
+ НастройкиОтчета.Вставить("КлючОбъекта", Параметры.КлючОбъекта);
+ Иначе
+ НастройкиОтчета.Вставить("КлючОбъекта", РеквизитФормыВЗначение("Отчет").Метаданные().ПолноеИмя());
+ КонецЕсли;
+ Если Параметры.Свойство("ОтчетСсылка") Тогда
+ НастройкиОтчета.Вставить("Ссылка", Параметры.ОтчетСсылка);
+ Иначе
+ НастройкиОтчета.Вставить("Ссылка", НастройкиОтчета.КлючОбъекта);
+ КонецЕсли;
+ Если Параметры.Свойство("НаименованиеОтчета") Тогда
+ НастройкиОтчета.Вставить("Наименование", Параметры.НаименованиеОтчета);
+ Иначе
+ НастройкиОтчета.Вставить("Наименование", РеквизитФормыВЗначение("Отчет").Метаданные().Представление());
+ КонецЕсли;
+ Если Параметры.Свойство("Подсистема") Тогда
+ НастройкиОтчета.Вставить("Подсистема", Параметры.Подсистема);
+ НастройкиОтчета.Вставить("ПодсистемаПредставление", Параметры.ПодсистемаПредставление);
+ Иначе
+ НастройкиОтчета.Вставить("Подсистема", Неопределено);
+ НастройкиОтчета.Вставить("ПодсистемаПредставление", "");
+ КонецЕсли;
+ Если Не Параметры.Свойство("ВариантСсылка", ВариантСсылка) Тогда
+ ВариантСсылка = ВариантыОтчетов.ПолучитьСсылку(НастройкиОтчета.Ссылка, КлючТекущегоВарианта);
КонецЕсли;
+ // Регистрация команд и реквизитов формы, которые не удаляются при перезаполнении быстрых настроек.
+ НаборРеквизитов = ПолучитьРеквизиты();
+ Для Каждого Реквизит Из НаборРеквизитов Цикл
+ ПостоянныеРеквизиты.Добавить(ПолноеИмяРеквизита(Реквизит));
+ КонецЦикла;
+ Для Каждого Команда Из Команды Цикл
+ ПостоянныеКоманды.Добавить(Команда.Имя);
+ КонецЦикла;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ПриЗагрузкеВариантаНаСервере(НовыеНастройкиКД)
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
+ НеобходимоОбновитьНастройки = Истина;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(НовыеПользовательскиеНастройкиКД)
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если НеобходимоОбновитьНастройки Тогда
+ ПриОбновленииСоставаПользовательскихНастроекНаСервере(Истина);
+ Иначе
+ НеобходимоОбновитьНастройки = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ПриОбновленииСоставаПользовательскихНастроекНаСервере(СтандартнаяОбработка)
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
+ СтандартнаяОбработка = Ложь;
+ НеобходимоОбновитьНастройки = Ложь;
+
+ ПараметрыЗаполнения = Новый Структура;
+ ПараметрыЗаполнения.Вставить("Событие", Новый Структура);
+ ПараметрыЗаполнения.Событие.Вставить("Имя", "ПриОбновленииСоставаПользовательскихНастроекНаСервере");
+ ПараметрыЗаполнения.Событие.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
+ БыстрыеНастройкиЗаполнить(ПараметрыЗаполнения);
+ Если ПараметрыЗаполнения.Событие.СтандартнаяОбработка <> СтандартнаяОбработка Тогда
+ СтандартнаяОбработка = ПараметрыЗаполнения.Событие.СтандартнаяОбработка;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриОткрытии(Отказ)
+ ПеременныеКлиента = Новый Структура;
+КонецПроцедуры
+
+&НаСервере
+Процедура ПриСохраненииПользовательскихНастроекНаСервере(ПользовательскиеНастройкиКД)
+ ВариантыОтчетов.ПриСохраненииПользовательскихНастроекНаСервере(ЭтотОбъект, ПользовательскиеНастройкиКД);
+
+ // Сохранение выбранных значений в дополнительных свойствах.
+ Если ПользовательскиеНастройкиКД.ДополнительныеСвойства.Свойство("ЭлементыФормы") Тогда
+ ДополнительныеНастройкиЭлементов = ПользовательскиеНастройкиКД.ДополнительныеСвойства.ЭлементыФормы;
+ Для Каждого КлючИЗначение Из ДополнительныеНастройкиЭлементов Цикл
+ ИдентификаторЭлемента = КлючИЗначение.Ключ;
+ НастройкиЭлемента = КлючИЗначение.Значение;
+ ИмяРеквизита = ХранимыеСпискиВыбора.Получить(ИдентификаторЭлемента);
+ Если ИмяРеквизита = Неопределено Тогда
+ ДополнительныеНастройкиЭлементов.Удалить(ИдентификаторЭлемента);
+ Продолжить;
+ КонецЕсли;
+ НастройкиЭлемента.ЗначенияДляВыбора = ЭтотОбъект[ИмяРеквизита].ВыгрузитьЗначения();
+ КонецЦикла;
+ КонецЕсли;
+
+ ЗаполнитьКомандыВыбораПользовательскихНастроек();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриЗакрытии()
+ Если Не РежимСовместимости
+ И Не ФормаЗакрываетсяСПараметрами
+ И ВладелецФормы <> Неопределено Тогда
+ ВладелецФормы.ОбработкаВыбора(РезультатВыбора(Ложь), ЭтотОбъект);
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовШапкиФормы
+
+////////////////////////////////////////////////////////////////////////////////
+// Подключаемые
+
+&НаКлиенте
+Процедура ВариантНажатие(Элемент)
+ Найденные = ВариантыПанели.НайтиСтроки(Новый Структура("НадписьИмя", Элемент.Имя));
+ Если Найденные.Количество() <> 1 Тогда
+ Возврат;
+ КонецЕсли;
+ Вариант = Найденные[0];
+
+ ПараметрыОткрытия = Новый Структура;
+ ПараметрыОткрытия.Вставить("КлючВарианта", Вариант.КлючВарианта);
+ ПараметрыОткрытия.Вставить("Подсистема", НастройкиОтчета.Подсистема);
+ ПараметрыОткрытия.Вставить("ПодсистемаПредставление", НастройкиОтчета.ПодсистемаПредставление);
+
+ // Открытие
+ Если Вариант.Дополнительный Тогда
+
+ ПараметрыОткрытия.Вставить("Вариант", Вариант.Ссылка);
+ ПараметрыОткрытия.Вставить("Отчет", Вариант.Отчет);
+ ВариантыОтчетовКлиент.ОткрытьВариантДополнительногоОтчета(ПараметрыОткрытия);
+
+ ИначеЕсли Не ЗначениеЗаполнено(Вариант.ИмяОтчета) Тогда
+
+ ТекстПредупреждения = СтрЗаменить(НСтр("ru = 'Не заполнено имя отчета для варианта ""%1"".'"), "%1", Вариант.Наименование);
+ ПоказатьПредупреждение(, ТекстПредупреждения);
+
+ Иначе
+
+ Уникальность = "Отчет." + Вариант.ИмяОтчета;
+ Если ЗначениеЗаполнено(Вариант.КлючВарианта) Тогда
+ Уникальность = Уникальность + "/КлючВарианта." + Вариант.КлючВарианта;
+ КонецЕсли;
+
+ ПараметрыОткрытия.Вставить("КлючПараметровПечати", Уникальность);
+ ПараметрыОткрытия.Вставить("КлючСохраненияПоложенияОкна", Уникальность);
+
+ ОткрытьФорму("Отчет." + Вариант.ИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Уникальность);
+
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ФлажокИспользование_ПриИзменении(Элемент)
+ ИдентификаторЭлемента = Прав(Элемент.Имя, 32);
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ ПользовательскаяНастройкаКД.Использование = ЭтотОбъект[Элемент.Имя];
+
+ ВсеСвязиВедущего = БыстрыйПоискОтключаемыхСвязей.Получить(ИдентификаторЭлемента);
+ Если ВсеСвязиВедущего <> Неопределено Тогда
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ Значение = ПользовательскаяНастройкаКД.Значение;
+ Иначе
+ Значение = ПользовательскаяНастройкаКД.ПравоеЗначение;
+ КонецЕсли;
+ ОбновитьСвязиВедущегоСПодчиненными(ИдентификаторЭлемента, Значение, ПользовательскаяНастройкаКД.Использование, ВсеСвязиВедущего, Ложь);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ПолеВвода_ПриИзменении(Элемент)
+ ЗначениеИмя = Элемент.Имя;
+ ИдентификаторЭлемента = Прав(ЗначениеИмя, 32);
+ СвойстваНастройкиТип = Лев(ЗначениеИмя, Найти(ЗначениеИмя, "_Значение_")-1);
+
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+ Значение = ЭтотОбъект[ЗначениеИмя];
+
+ Если ТипЗнч(Значение) = Тип("ОписаниеТипов") Тогда
+ МассивТипов = Значение.Типы();
+ Если МассивТипов.Количество() > 0 Тогда
+ Значение = МассивТипов[0];
+ КонецЕсли;
+ КонецЕсли;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ ПользовательскаяНастройкаКД.Значение = Значение;
+ Иначе
+ ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(Значение) И Не ПользовательскаяНастройкаКД.Использование Тогда
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ Если Элементы.Найти(ИспользованиеИмя) <> Неопределено Тогда
+ ЭтотОбъект[ИспользованиеИмя] = Истина;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если ПользовательскаяНастройкаКД.Использование Тогда
+ // Включение связей когда был включен флажок "Использование".
+ // Когда связи включены - очистка значений при изменении значения.
+ ВсеСвязиВедущего = БыстрыйПоискОтключаемыхСвязей.Получить(ИдентификаторЭлемента);
+ Если ВсеСвязиВедущего <> Неопределено Тогда
+ ОбновитьСвязиВедущегоСПодчиненными(ИдентификаторЭлемента, Значение, ПользовательскаяНастройкаКД.Использование, ВсеСвязиВедущего, Истина);
+ КонецЕсли;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ТаблицаПорядка_Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+
+ ИмяКолонки = Поле.Имя;
+ Если Лев(ИмяКолонки, 23) = "Порядок_КолонкаПорядок_" Тогда // Изменение порядка.
+
+ СтандартнаяОбработка = Ложь;
+
+ ИзменитьНаправлениеСортировкиТаблицы(ИмяКолонки, Неопределено);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ТаблицаПорядка_КолонкаИспользование_ПриИзменении(Элемент)
+
+ КолонкаИспользованиеИмя = Элемент.Имя;
+
+ ТаблицаИмя = СтрЗаменить(КолонкаИспользованиеИмя, "_КолонкаИспользование_", "_Таблица_");
+ СтрокаТаблицы = Элементы[ТаблицаИмя].ТекущиеДанные;
+ Если СтрокаТаблицы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(КолонкаИспользованиеИмя);
+
+ // Отражение изменений флажка элемента таблицы в соответствующей пользовательской настройке.
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
+ ИндексСтрокиТаблицы = ЭтотОбъект[ТаблицаИмя].Индекс(СтрокаТаблицы);
+ ПолеГруппировки = ПользовательскаяНастройкаКД.Структура.Получить(ИндексСтрокиТаблицы);
+ ПолеГруппировки.Использование = СтрокаТаблицы.Использование;
+ ПолеГруппировки.Состояние = СостояниеЭлементаНастройкиКомпоновкиДанных[?(СтрокаТаблицы.Использование, "Включен", "Отключен")];
+ Иначе //ВыбранныеПоляКомпоновкиДанных, ПорядокКомпоновкиДанных
+ СтрокаПользовательскойНастройки = ФункцииОтчетовКлиентСервер.НайтиВложеннуюПользовательскуюНастройку(ПользовательскаяНастройкаКД, СтрокаТаблицы.Идентификатор);
+ Если СтрокаПользовательскойНастройки <> Неопределено Тогда
+ СтрокаПользовательскойНастройки.Использование = СтрокаТаблицы.Использование;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+
+ ИдентификаторЭлемента = Прав(Элемент.Имя, 32);
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ ДополнительныеНастройки = НайтиДополнительныеНастройкиЭлемента(ИдентификаторЭлемента);
+ Если ДополнительныеНастройки = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыФормы = Новый Структура("Отмеченные");
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ ПараметрыФормы.Отмеченные = ЗначенияСписком(ПользовательскаяНастройкаКД.ПравоеЗначение);
+ Иначе
+ ПараметрыФормы.Отмеченные = ЗначенияСписком(ПользовательскаяНастройкаКД.Значение);
+ КонецЕсли;
+ ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыФормы, ДополнительныеНастройки, Истина);
+
+ ПараметрыФормы.Вставить("ПараметрыВыбора", Новый Массив);
+
+ // Добавление фиксированных параметров выбора.
+ Для Каждого ПараметрВыбора Из Элемент.ПараметрыВыбора Цикл
+ Если ПустаяСтрока(ПараметрВыбора.Имя) Тогда
+ Продолжить;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ПараметрВыбора.Имя) Тогда
+ ПараметрыФормы.ПараметрыВыбора.Добавить(ПараметрВыбора);
+ КонецЕсли;
+ КонецЦикла;
+
+ // Добавление динамических параметров выбора (от ведущих).
+ Для Каждого СвязьПараметраВыбора Из Элемент.СвязиПараметровВыбора Цикл
+ Если ПустаяСтрока(СвязьПараметраВыбора.Имя) Тогда
+ Продолжить;
+ КонецЕсли;
+ ВедущийЗначение = ЭтотОбъект[СвязьПараметраВыбора.ПутьКДанным];
+ ПараметрыФормы.ПараметрыВыбора.Добавить(Новый ПараметрВыбора(СвязьПараметраВыбора.Имя, ВедущийЗначение));
+ КонецЦикла;
+
+ ПараметрыОбработчика = Новый Структура;
+ ПараметрыОбработчика.Вставить("ИдентификаторЭлемента", ИдентификаторЭлемента);
+ ПараметрыОбработчика.Вставить("ФлажокИмя", СтрЗаменить(Элемент.Имя, "_Значение_", "_Использование_"));
+ Обработчик = Новый ОписаниеОповещения("Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора_Завершение", ЭтотОбъект, ПараметрыОбработчика);
+
+ Блокировать = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
+
+ ОткрытьФорму("ОбщаяФорма.ВводЗначенийСпискомСФлажками", ПараметрыФормы, ЭтотОбъект, , , , Обработчик, Блокировать);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора_Завершение(РезультатВыбора, ПараметрыОбработчика) Экспорт
+ Если ТипЗнч(РезультатВыбора) <> Тип("СписокЗначений") Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПользовательскиеНастройкиМодифицированы = Истина;
+ ИдентификаторЭлемента = ПараметрыОбработчика.ИдентификаторЭлемента;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ ДополнительныеНастройки = НайтиДополнительныеНастройкиЭлемента(ИдентификаторЭлемента);
+
+ // Загрузка выбранных значений в 2 списка.
+ Отмеченные = Новый СписокЗначений;
+ Если Не ДополнительныеНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ДополнительныеНастройки.ЗначенияДляВыбора = Новый Массив;
+ КонецЕсли;
+ Для Каждого ЭлементСписка Из РезультатВыбора Цикл
+ Значение = ЭлементСписка.Значение;
+ Если ЭлементСписка.Пометка Тогда
+ Если ТипЗнч(Значение) = Тип("ОписаниеТипов") Тогда
+ Значение = Значение.Типы()[0];
+ КонецЕсли;
+ Отмеченные.Добавить().Значение = Значение;
+ ИначеЕсли Не ДополнительныеНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ДополнительныеНастройки.ЗначенияДляВыбора.Добавить(Значение); // Не отмечен, но выбран.
+ КонецЕсли;
+ КонецЦикла;
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ ПользовательскаяНастройкаКД.ПравоеЗначение = Отмеченные;
+ Иначе
+ ПользовательскаяНастройкаКД.Значение = Отмеченные;
+ КонецЕсли;
+
+ // Включение флажка Использование.
+ ЭтотОбъект[ПараметрыОбработчика.ФлажокИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// Подключаемые - Стандартный период
+
+&НаКлиенте
+Процедура Подключаемый_СтандартныйПериод_Вид_ПриИзменении(Элемент)
+
+ ВидПериодаИмя = Элемент.Имя;
+ ИдентификаторЭлемента = Прав(ВидПериодаИмя, 32);
+ СвойстваНастройкиТип = Лев(ВидПериодаИмя, Найти(ВидПериодаИмя, "_Вид_")-1);
+
+ СтраницыИмя = СвойстваНастройкиТип + "_Страницы_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ПериодПредставлениеИмя = СвойстваНастройкиТип + "_Представление_" + ИдентификаторЭлемента;
+ СтраницаПроизвольныйИмя = СвойстваНастройкиТип + "_СтраницаПроизвольный_" + ИдентификаторЭлемента;
+ СтраницаСтандартныйИмя = СвойстваНастройкиТип + "_СтраницаСтандартный_" + ИдентификаторЭлемента;
+
+ Значение = ЭтотОбъект[ПериодЗначениеИмя];
+
+ ВидПериода = ЭтотОбъект[ВидПериодаИмя];
+
+ ВыбранПроизвольный = ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.ПроизвольныйПериод");
+
+ Если ВыбранПроизвольный Тогда
+
+ // Переключение страницы.
+ Элементы[СтраницыИмя].ТекущаяСтраница = Элементы[СтраницаПроизвольныйИмя];
+
+ Значение.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод;
+
+ Иначе
+
+ // Переключение страницы.
+ Элементы[СтраницыИмя].ТекущаяСтраница = Элементы[СтраницаСтандартныйИмя];
+
+ // Приведение значения периода в соответствие с выбранным видом.
+ НачалоПериода = НачалоДня(Значение.ДатаНачала);
+ Если НЕ ЗначениеЗаполнено(НачалоПериода) Тогда
+ НачалоПериода = НачалоДня(ОбщегоНазначенияКлиент.ДатаСеанса());
+ КонецЕсли;
+ НачалоПериода = ФункцииОтчетовКлиентСервер.НачалоПериодаОтчета(ВидПериода, НачалоПериода);
+ КонецПериода = ФункцииОтчетовКлиентСервер.КонецПериодаОтчета(ВидПериода, НачалоПериода);
+
+ Значение.ДатаНачала = НачалоПериода;
+ Значение.ДатаОкончания = КонецПериода;
+
+ КонецЕсли;
+
+ Представление = ФункцииОтчетовКлиентСервер.ПредставлениеСтандартногоПериода(Значение, ВидПериода);
+ ЭтотОбъект[ПериодПредставлениеИмя] = Представление;
+ ЭтотОбъект[ПериодЗначениеИмя] = Значение;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ ПользовательскаяНастройкаКД.Значение = Значение;
+ Иначе
+ ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
+ КонецЕсли;
+
+ Если Элементы.Найти(ИспользованиеИмя) <> Неопределено Тогда
+ ЭтотОбъект[ИспользованиеИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СтандартныйПериод_Значение_НачалоВыбора(Элемент, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+
+ // Формирование сведений по элементу.
+ ПериодПредставлениеИмя = Элемент.Имя;
+ ИдентификаторЭлемента = Прав(ПериодПредставлениеИмя, 32);
+ СвойстваНастройкиТип = Лев(ПериодПредставлениеИмя, Найти(ПериодПредставлениеИмя, "_Представление_")-1);
+
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ВидПериодаИмя = СвойстваНастройкиТип + "_Вид_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+
+ Значение = ЭтотОбъект[ПериодЗначениеИмя];
+ ВидПериода = ЭтотОбъект[ВидПериодаИмя];
+
+ НачалоПериода = Значение.ДатаНачала;
+ Если НачалоПериода = '00010101' тогда
+ НачалоПериода = ФункцииОтчетовКлиентСервер.НачалоПериодаОтчета(ВидПериода, ОбщегоНазначенияКлиент.ДатаСеанса());
+ КонецЕсли;
+
+ // Параметры для чтения из обработчиков:
+ ПараметрыВыбора = Новый Структура;
+ // Для выбора значения:
+ ПараметрыВыбора.Вставить("Значение", Значение);
+ ПараметрыВыбора.Вставить("Элемент", Элемент);
+ // Для загрузки значения:
+ ПараметрыВыбора.Вставить("ИдентификаторЭлемента", ИдентификаторЭлемента);
+ ПараметрыВыбора.Вставить("ПериодПредставлениеИмя", ПериодПредставлениеИмя);
+ ПараметрыВыбора.Вставить("ПериодЗначениеИмя", ПериодЗначениеИмя);
+ ПараметрыВыбора.Вставить("ИспользованиеИмя", ИспользованиеИмя);
+ ПараметрыВыбора.Вставить("ВидПериода", ВидПериода);
+ ПараметрыВыбора.Вставить("ЭтоПараметр", СвойстваНастройкиТип = "ЗначениеПараметраНастроек");
+
+ ВыборПериодаИзВыпадающегоСписка(-1, ПараметрыВыбора);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СтандартныйПериод_НачалоПериода_ПриИзменении(Элемент)
+
+ // Формирование сведений по элементу.
+ ПериодНачалоИмя = Элемент.Имя;
+ ИдентификаторЭлемента = Прав(ПериодНачалоИмя, 32);
+ СвойстваНастройкиТип = Лев(ПериодНачалоИмя, Найти(ПериодНачалоИмя, "_Начало_")-1);
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+
+ Значение = ЭтотОбъект[ПериодЗначениеИмя];
+
+ Если Значение.ДатаНачала <> '00010101' Тогда
+ Значение.ДатаНачала = НачалоДня(Значение.ДатаНачала);
+ КонецЕсли;
+
+ // Запись значения в пользовательские настройки компоновки данных.
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ ПользовательскаяНастройкаКД.Значение = Значение;
+ Иначе
+ ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
+ КонецЕсли;
+
+ Если Значение.ДатаНачала <> '00010101' И Элементы.Найти(ИспользованиеИмя) <> Неопределено Тогда
+ ЭтотОбъект[ИспользованиеИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СтандартныйПериод_КонецПериода_ПриИзменении(Элемент)
+
+ // Формирование сведений по элементу.
+ ПериодОкончаниеИмя = Элемент.Имя;
+ ИдентификаторЭлемента = Прав(ПериодОкончаниеИмя, 32);
+ СвойстваНастройкиТип = Лев(ПериодОкончаниеИмя, Найти(ПериодОкончаниеИмя, "_Окончание_")-1);
+
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+
+ Значение = ЭтотОбъект[ПериодЗначениеИмя];
+
+ Если Значение.ДатаОкончания <> '00010101' Тогда
+ Значение.ДатаОкончания = КонецДня(Значение.ДатаОкончания);
+ КонецЕсли;
+
+ // Запись значения в пользовательские настройки компоновки данных.
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ ПользовательскаяНастройкаКД.Значение = Значение;
+ Иначе
+ ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
+ КонецЕсли;
+
+ Если Значение.ДатаОкончания <> '00010101' И Элементы.Найти(ИспользованиеИмя) <> Неопределено Тогда
+ ЭтотОбъект[ИспользованиеИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СтандартныйПериод_Значение_Очистка(Элемент, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// Подключаемые - Список значений с кнопкой "Подбор"
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_ПриИзменении(Элемент)
+ // Обновление выбранных значений в данных СКД.
+ ПользовательскиеНастройкиМодифицированы = Истина;
+
+ ТаблицаИмя = Элемент.Имя;
+ ИдентификаторЭлемента = Прав(ТаблицаИмя, 32);
+
+ СписокЗначенийВФорме = ЭтотОбъект[ТаблицаИмя];
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+
+ ДополнительныеНастройки = НайтиДополнительныеНастройкиЭлемента(ИдентификаторЭлемента);
+ Если Не ДополнительныеНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ДополнительныеНастройки.ЗначенияДляВыбора = Новый Массив;
+ КонецЕсли;
+
+ СписокЗначенийВСКД = Новый СписокЗначений;
+ Для Каждого ЭлементСпискаВФорме Из СписокЗначенийВФорме Цикл
+ ЗначениеВФорме = ЭлементСпискаВФорме.Значение;
+ Если ЭлементСпискаВФорме.Пометка Тогда
+ Если ТипЗнч(ЗначениеВФорме) = Тип("ОписаниеТипов") Тогда
+ ЗначениеВСКД = ЗначениеВФорме.Типы()[0];
+ Иначе
+ ЗначениеВСКД = ЗначениеВФорме;
+ КонецЕсли;
+ ДобавитьУникальноеЗначениеВСписок(СписокЗначенийВСКД, ЗначениеВСКД, ЭлементСпискаВФорме.Представление, Истина);
+ ИначеЕсли Не ДополнительныеНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ДополнительныеНастройки.ЗначенияДляВыбора.Добавить(ЗначениеВФорме); // Не отмечен, но выбран.
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ ПользовательскаяНастройкаКД.Значение = СписокЗначенийВСКД;
+ Иначе
+ ПользовательскаяНастройкаКД.ПравоеЗначение = СписокЗначенийВСКД;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_Использование_ПриИзменении(Элемент)
+ // Включение флажка Использование если пользователь включил флажок в строке таблицы.
+ КолонкаИспользованиеИмя = Элемент.Имя;
+ ИдентификаторЭлемента = Прав(КолонкаИспользованиеИмя, 32);
+ СвойстваНастройкиТип = Лев(КолонкаИспользованиеИмя, Найти(КолонкаИспользованиеИмя, "_Колонка_Использование_")-1);
+
+ ТаблицаИмя = СвойстваНастройкиТип + "_СписокЗначений_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+
+ ЭлементСпискаВФорме = Элементы[ТаблицаИмя].ТекущиеДанные;
+ Если ЭлементСпискаВФорме <> Неопределено И ЭлементСпискаВФорме.Пометка Тогда
+ Если Элементы.Найти(ИспользованиеИмя) <> Неопределено Тогда
+ ЭтотОбъект[ИспользованиеИмя] = Истина;
+ КонецЕсли;
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_ОбработкаВыбора(Элемент, РезультатВыбора, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+ ПользовательскиеНастройкиМодифицированы = Истина;
+
+ // Списки в данных формы.
+ СписокЗначенийВФорме = ЭтотОбъект[Элемент.Имя];
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(Элемент.Имя);
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ СписокЗначенийВСКД = ЗначенияСписком(ПользовательскаяНастройкаКД.Значение);
+ Иначе
+ СписокЗначенийВСКД = ЗначенияСписком(ПользовательскаяНастройкаКД.ПравоеЗначение);
+ КонецЕсли;
+
+ // Добавление выбранных элементов с контролем уникальности.
+ Если ТипЗнч(РезультатВыбора) = Тип("Массив") Тогда
+ Для Каждого Значение Из РезультатВыбора Цикл
+ ДобавитьУникальноеЗначениеВСписок(СписокЗначенийВФорме, Значение, Неопределено, Истина);
+ ДобавитьУникальноеЗначениеВСписок(СписокЗначенийВСКД, Значение, Неопределено, Истина);
+ КонецЦикла;
+ Иначе
+ ДобавитьУникальноеЗначениеВСписок(СписокЗначенийВФорме, РезультатВыбора, Неопределено, Истина);
+ ДобавитьУникальноеЗначениеВСписок(СписокЗначенийВСКД, РезультатВыбора, Неопределено, Истина);
+ КонецЕсли;
+
+ // Включение флажка Использование.
+ ИспользованиеИмя = СтрЗаменить(Элемент.Имя, "_СписокЗначений_", "_Использование_");
+ Если Элементы.Найти(ИспользованиеИмя) <> Неопределено Тогда
+ ЭтотОбъект[ИспользованиеИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_ПередНачаломИзменения(Элемент, Отказ)
+ СтрокаИдентификатор = Элемент.ТекущаяСтрока;
+ Если СтрокаИдентификатор = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ СписокЗначенийВФорме = ЭтотОбъект[Элемент.Имя];
+ ЭлементСпискаВФорме = СписокЗначенийВФорме.НайтиПоИдентификатору(СтрокаИдентификатор);
+
+ ТекущаяСтрока = Элемент.ТекущиеДанные;
+ Если ТекущаяСтрока = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ ЭлементСпискаДоНачалаИзменения = Новый Структура("Идентификатор, Пометка, Значение, Представление");
+ ЗаполнитьЗначенияСвойств(ЭлементСпискаДоНачалаИзменения, ЭлементСпискаВФорме);
+ ЭлементСпискаДоНачалаИзменения.Идентификатор = СтрокаИдентификатор;
+ ПеременныеКлиента.Вставить("ЭлементСпискаДоНачалаИзменения", ЭлементСпискаДоНачалаИзменения);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_ПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаНачалаРедактирования, ОтменаЗавершенияРедактирования)
+ Если ОтменаНачалаРедактирования Тогда
+ Возврат;
+ КонецЕсли;
+
+ СтрокаИдентификатор = Элемент.ТекущаяСтрока;
+ Если СтрокаИдентификатор = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ СписокЗначенийВФорме = ЭтотОбъект[Элемент.Имя];
+ ЭлементСпискаВФорме = СписокЗначенийВФорме.НайтиПоИдентификатору(СтрокаИдентификатор);
+
+ Значение = ЭлементСпискаВФорме.Значение;
+ Если Значение = Неопределено
+ Или Значение = Тип("Неопределено")
+ Или Значение = Новый ОписаниеТипов("Неопределено")
+ Или Не ЗначениеЗаполнено(Значение) Тогда
+ ОтменаЗавершенияРедактирования = Истина; // Запрет пустых значений.
+ Иначе
+ Для Каждого ЭлементСпискаДубльВФорме Из СписокЗначенийВФорме Цикл
+ Если ЭлементСпискаДубльВФорме.Значение = Значение И ЭлементСпискаДубльВФорме <> ЭлементСпискаВФорме Тогда
+ Состояние(НСтр("ru = 'Обнаружены дублирующиеся записи. Редактирование отменено.'"));
+ ОтменаЗавершенияРедактирования = Истина; // Запрет дублей.
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ Если ОтменаЗавершенияРедактирования Тогда
+ // Откат значений.
+ ЭлементСпискаДоНачалаИзменения = ВариантыОтчетовКлиентСервер.СвойствоСтруктуры(ПеременныеКлиента, "ЭлементСпискаДоНачалаИзменения");
+ Если ЭлементСпискаДоНачалаИзменения <> Неопределено
+ И ЭлементСпискаДоНачалаИзменения.Идентификатор = СтрокаИдентификатор Тогда
+ ЗаполнитьЗначенияСвойств(ЭлементСпискаВФорме, ЭлементСпискаДоНачалаИзменения);
+ КонецЕсли;
+ // Перезапуск события "ПередОкончаниемРедактирования" с ОтменаНачалаРедактирования = Истина.
+ Элемент.ЗакончитьРедактированиеСтроки(Истина);
+ Иначе
+ ЭлементСпискаВФорме.Представление = ""; // Автозаполнение представления.
+ ПользовательскиеНастройкиМодифицированы = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_Подбор(Команда)
+
+ КнопкаПодборИмя = Команда.Имя;
+
+ ИдентификаторЭлемента = Прав(КнопкаПодборИмя, 32);
+ СвойстваНастройкиТип = Лев(КнопкаПодборИмя, Найти(КнопкаПодборИмя, "_Подбор_")-1);
+
+ ТаблицаИмя = СвойстваНастройкиТип + "_СписокЗначений_" + ИдентификаторЭлемента;
+ КолонкаЗначениеИмя = СвойстваНастройкиТип + "_Колонка_Значение_" + ИдентификаторЭлемента;
+ КоманднаяПанельИмя = СвойстваНастройкиТип + "_КоманднаяПанель_" + ИдентификаторЭлемента;
+
+ ТаблицаЗначение = ЭтотОбъект[ТаблицаИмя];
+ КолонкаЗначениеЭлемент = Элементы[КолонкаЗначениеИмя];
+
+ ПараметрыЭлемента = Новый Структура;
+ ПараметрыЭлемента.Вставить("ИдентификаторЭлемента", ИдентификаторЭлемента);
+ ПараметрыЭлемента.Вставить("ВыбранныйТип", Неопределено);
+ ПараметрыЭлемента.Вставить("КолонкаЗначениеЭлемент", КолонкаЗначениеЭлемент);
+ ПараметрыЭлемента.Вставить("ТаблицаЭлемент", Элементы[ТаблицаИмя]);
+ ПараметрыЭлемента.Вставить("ВыборТолькоГрупп", КолонкаЗначениеЭлемент.ВыборГруппИЭлементов = ГруппыИЭлементы.Группы);
+
+ Если ЗначениеЗаполнено(КолонкаЗначениеЭлемент.СвязьПоТипу.ПутьКДанным) Тогда
+ ЗначениеВедущего = ЭтотОбъект[КолонкаЗначениеЭлемент.СвязьПоТипу.ПутьКДанным];
+ Если ЗначениеЗаполнено(ЗначениеВедущего) Тогда
+ ТипВедущего = ТипЗнч(ЗначениеВедущего);
+ Если ТаблицаЗначение.ТипЗначения.СодержитТип(ТипВедущего) Тогда
+ // Тип определен ведущим.
+ ПараметрыЭлемента.ВыбранныйТип = ТипВедущего;
+ ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента);
+ Возврат;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Выбор типа из списка.
+ СписокВыбора = Новый СписокЗначений;
+
+ ПростыеТипы = Новый Соответствие;
+ ПростыеТипы.Вставить(Тип("Строка"), Истина);
+ ПростыеТипы.Вставить(Тип("Дата"), Истина);
+ ПростыеТипы.Вставить(Тип("Число"), Истина);
+
+ МассивТипов = ТаблицаЗначение.ТипЗначения.Типы();
+ Для Каждого Тип Из МассивТипов Цикл
+ // Исключение типов, для которых нет групп.
+ Если ПараметрыЭлемента.ВыборТолькоГрупп Тогда
+ ИмяОбъектаМетаданных = БыстрыйПоискИменОбъектовМетаданных.Получить(Тип);
+ ВидОбъектаМетаданных = ВРег(Лев(ИмяОбъектаМетаданных, Найти(ИмяОбъектаМетаданных, ".")-1));
+ Если ВидОбъектаМетаданных <> "СПРАВОЧНИК" И ВидОбъектаМетаданных <> "ПЛАНВИДОВХАРАКТЕРИСТИК" И ВидОбъектаМетаданных <> "ПЛАНСЧЕТОВ" Тогда
+ Продолжить;
+ КонецЕсли;
+ КонецЕсли;
+ // Исключение простых типов.
+ Если ПростыеТипы[Тип] = Истина Тогда
+ Продолжить;
+ КонецЕсли;
+ // Добавление типа в список выбора.
+ СписокВыбора.Добавить(Тип, Строка(Тип));
+ КонецЦикла;
+
+ Если СписокВыбора.Количество() = 0 Тогда
+ ПараметрыЭлемента.ТаблицаЭлемент.ДобавитьСтроку();
+ Возврат;
+ ИначеЕсли СписокВыбора.Количество() = 1 Тогда
+ // Один тип - выбор не требуется.
+ ПараметрыЭлемента.ВыбранныйТип = СписокВыбора[0].Значение;
+ ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента);
+ Иначе
+ // Более одного типа.
+ Обработчик = Новый ОписаниеОповещения("Подключаемый_СписокСПодбором_Подбор_ПослеВыбораТипа", ЭтотОбъект, ПараметрыЭлемента);
+ ПоказатьВыборИзМеню(Обработчик, СписокВыбора, Элементы[КоманднаяПанельИмя]);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_Подбор_ПослеВыбораТипа(ВыбранныйЭлемент, ПараметрыЭлемента) Экспорт
+ Если ВыбранныйЭлемент <> Неопределено Тогда
+ ПараметрыЭлемента.ВыбранныйТип = ВыбранныйЭлемент.Значение;
+ ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_ВставитьИзБуфера(Команда)
+ КнопкаВставитьИмя = Команда.Имя;
+
+ ИдентификаторЭлемента = Прав(КнопкаВставитьИмя, 32);
+ СвойстваНастройкиТип = Лев(КнопкаВставитьИмя, Найти(КнопкаВставитьИмя, "_")-1);
+
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+ ТаблицаИмя = СвойстваНастройкиТип + "_СписокЗначений_" + ИдентификаторЭлемента;
+ КолонкаЗначениеИмя = СвойстваНастройкиТип + "_Колонка_Значение_" + ИдентификаторЭлемента;
+
+ Список = ЭтотОбъект[ТаблицаИмя];
+ СписокЭлемент = Элементы[ТаблицаИмя];
+ КолонкаЗначениеЭлемент = Элементы[КолонкаЗначениеИмя];
+
+ ПараметрыПоиска = Новый Структура;
+ ПараметрыПоиска.Вставить("ОписаниеТипов", ОписаниеТиповУдалитьПримитивные(Список.ТипЗначения));
+ ПараметрыПоиска.Вставить("ПараметрыВыбора", КолонкаЗначениеЭлемент.ПараметрыВыбора);
+ ПараметрыПоиска.Вставить("ПредставлениеПоля", СписокЭлемент.Заголовок);
+ ПараметрыПоиска.Вставить("Сценарий", "ВставкаИзБуфераОбмена");
+
+ ПараметрыВыполнения = Новый Структура;
+ ПараметрыВыполнения.Вставить("ИдентификаторЭлемента", ИдентификаторЭлемента);
+ ПараметрыВыполнения.Вставить("ТаблицаИмя", ТаблицаИмя);
+ ПараметрыВыполнения.Вставить("ФлажокИмя", ИспользованиеИмя);
+ Обработчик = Новый ОписаниеОповещения("Подключаемый_СписокСПодбором_ВставитьИзБуфера_Завершение", ЭтотОбъект, ПараметрыВыполнения);
+
+ МодульЗагрузкаДанныхИзФайлаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗагрузкаДанныхИзФайлаКлиент");
+ МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_ВставитьИзБуфера_Завершение(НайденныеОбъекты, ПараметрыВыполнения) Экспорт
+ Если НайденныеОбъекты = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПользовательскиеНастройкиМодифицированы = Истина;
+ ИдентификаторЭлемента = ПараметрыВыполнения.ИдентификаторЭлемента;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ ДополнительныеНастройки = НайтиДополнительныеНастройкиЭлемента(ИдентификаторЭлемента);
+
+ Список = ЭтотОбъект[ПараметрыВыполнения.ТаблицаИмя];
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ Отмеченные = ПользовательскаяНастройкаКД.ПравоеЗначение;
+ Иначе
+ Отмеченные = ПользовательскаяНастройкаКД.Значение;
+ КонецЕсли;
+ Для Каждого Значение Из НайденныеОбъекты Цикл
+ ДобавитьУникальноеЗначениеВСписок(Список, Значение, Неопределено, Истина);
+ ДобавитьУникальноеЗначениеВСписок(Отмеченные, Значение, Неопределено, Истина);
+ КонецЦикла;
+
+ // Включение флажка Использование.
+ Если Элементы.Найти(ПараметрыВыполнения.ФлажокИмя) <> Неопределено Тогда
+ ЭтотОбъект[ПараметрыВыполнения.ФлажокИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента)
+ КолонкаЗначениеЭлемент = ПараметрыЭлемента.КолонкаЗначениеЭлемент;
+
+ // Полное имя формы выбора.
+ // Свойство "ФормаВыбора" недоступно на клиенте даже для чтения,
+ // поэтому для хранения предустановленных имен форм выбора используется коллекция БыстрыйПоискИменОбъектовМетаданных.
+ ПутьКФорме = БыстрыйПоискИменОбъектовМетаданных.Получить(ПараметрыЭлемента.ИдентификаторЭлемента);
+ Если Не ЗначениеЗаполнено(ПутьКФорме) Тогда
+ ИмяОбъектаМетаданных = БыстрыйПоискИменОбъектовМетаданных.Получить(ПараметрыЭлемента.ВыбранныйТип);
+ Если ПараметрыЭлемента.ВыборТолькоГрупп Тогда
+ ВидОбъектаМетаданных = ВРег(Лев(ИмяОбъектаМетаданных, Найти(ИмяОбъектаМетаданных, ".")-1));
+ Если ВидОбъектаМетаданных = "СПРАВОЧНИК" Или ВидОбъектаМетаданных = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
+ ПутьКФорме = ИмяОбъектаМетаданных + ".ФормаВыбораГруппы";
+ Иначе
+ ПутьКФорме = ИмяОбъектаМетаданных + ".ФормаВыбора";
+ КонецЕсли;
+ Иначе
+ ПутьКФорме = ИмяОбъектаМетаданных + ".ФормаВыбора";
+ КонецЕсли;
+ КонецЕсли;
+
+ ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуИспользованиеГруппИЭлементов(КолонкаЗначениеЭлемент.ВыборГруппИЭлементов);
+
+ ПараметрыФормыВыбора = Новый Структура;
+ // Стандартные параметры формы.
+ ПараметрыФормыВыбора.Вставить("ЗакрыватьПриВыборе", Ложь);
+ ПараметрыФормыВыбора.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина);
+ ПараметрыФормыВыбора.Вставить("Отбор", Новый Структура);
+ // Стандартные параметры формы выбора (см. Расширение управляемой формы для динамического списка).
+ ПараметрыФормыВыбора.Вставить("ВыборГруппИЭлементов", ВыборГруппИЭлементов);
+ ПараметрыФормыВыбора.Вставить("МножественныйВыбор", Истина);
+ ПараметрыФормыВыбора.Вставить("РежимВыбора", Истина);
+ // Предполагаемые реквизиты.
+ ПараметрыФормыВыбора.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+ ПараметрыФормыВыбора.Вставить("РазрешитьНачалоПеретаскивания", Ложь);
+
+ // Добавление фиксированных параметров выбора.
+ Для Каждого ПараметрВыбора Из КолонкаЗначениеЭлемент.ПараметрыВыбора Цикл
+ Если ПустаяСтрока(ПараметрВыбора.Имя) Тогда
+ Продолжить;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ПараметрВыбора.Имя) Тогда
+ Если ВРег(Лев(ПараметрВыбора.Имя, 6)) = ВРег("Отбор.") Тогда
+ ПараметрыФормыВыбора.Отбор.Вставить(Сред(ПараметрВыбора.Имя, 7), ПараметрВыбора.Значение);
+ Иначе
+ ПараметрыФормыВыбора.Вставить(ПараметрВыбора.Имя, ПараметрВыбора.Значение);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ // Добавление динамических параметров выбора (от ведущих).
+ Для Каждого СвязьПараметраВыбора Из КолонкаЗначениеЭлемент.СвязиПараметровВыбора Цикл
+ Если ПустаяСтрока(СвязьПараметраВыбора.Имя) Тогда
+ Продолжить;
+ КонецЕсли;
+ ВедущийЗначение = ЭтотОбъект[СвязьПараметраВыбора.ПутьКДанным];
+ Если ВРег(Лев(СвязьПараметраВыбора.Имя, 6)) = ВРег("Отбор.") Тогда
+ ПараметрыФормыВыбора.Отбор.Вставить(Сред(СвязьПараметраВыбора.Имя, 7), ВедущийЗначение);
+ Иначе
+ ПараметрыФормыВыбора.Вставить(СвязьПараметраВыбора.Имя, ВедущийЗначение);
+ КонецЕсли;
+ КонецЦикла;
+
+ ОткрытьФорму(ПутьКФорме, ПараметрыФормыВыбора, ПараметрыЭлемента.ТаблицаЭлемент);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокСПодбором_Добавить(Команда)
+
+ КнопкаПодборИмя = Команда.Имя;
+
+ ИдентификаторЭлемента = Прав(КнопкаПодборИмя, 32);
+ СвойстваНастройкиТип = Лев(КнопкаПодборИмя, Найти(КнопкаПодборИмя, "_Подбор_") - 1);
+
+ ТаблицаИмя = СвойстваНастройкиТип + "_СписокЗначений_" + ИдентификаторЭлемента;
+
+ Элементы[ТаблицаИмя].ДобавитьСтроку();
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ФиксированныйСписок_ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
+ Отказ = Истина;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ФиксированныйСписок_ПередУдалением(Элемент, Отказ)
+ Отказ = Истина;
КонецПроцедуры
#КонецОбласти
@@ -29,30 +962,3379 @@
#Область ОбработчикиКомандФормы
+////////////////////////////////////////////////////////////////////////////////
+// Штатные команды
+
+&НаКлиенте
+Процедура Сформировать(Команда)
+ ЗаписатьИЗакрыть(Истина);
+КонецПроцедуры
+
&НаКлиенте
Процедура ЗавершитьРедактирование(Команда)
- Если МодальныйРежим
+ ЗаписатьИЗакрыть(Ложь);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура НастройкиПоУмолчанию(Команда)
+ ПараметрыЗаполнения = Новый Структура;
+ ПараметрыЗаполнения.Вставить("Событие", Новый Структура);
+ ПараметрыЗаполнения.Событие.Вставить("Имя", "НастройкиПоУмолчанию");
+ ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Истина);
+
+ БыстрыеНастройкиЗаполнить(ПараметрыЗаполнения);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВсеНастройки(Команда)
+ ПоказыватьВсеНастройки = Не Элементы.ВсеНастройки.Пометка;
+ Элементы.ВсеНастройки.Пометка = ПоказыватьВсеНастройки;
+ Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказыватьВсеНастройки", ПоказыватьВсеНастройки);
+ ПользовательскиеНастройкиМодифицированы = Истина;
+ ВидимостьДоступностьКорректность("ВсеНастройки");
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// Подключаемые команды
+
+&НаКлиенте
+Процедура Подключаемый_Команда(Команда)
+ // Механизмы расширения
+ Результат = Ложь;
+ Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда
+ МодульРассылкаОтчетовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РассылкаОтчетовКлиент");
+ МодульРассылкаОтчетовКлиент.ФормаОтчетаОбработчикКоманды(ЭтотОбъект, Команда, Результат);
+ КонецЕсли;
+ ФормаОтчетаКлиентПереопределяемый.ОбработчикКоманды(ЭтотОбъект, Команда, Результат);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ТаблицаПорядка_ПереместитьВверх(Команда)
+ Направление = -1;
+ ТаблицаИмя = СтрЗаменить(Команда.Имя, "_Команда_ПереместитьВверх_", "_Таблица_");
+ ПереместитьСтрокуТаблицы(Направление, ТаблицаИмя);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ТаблицаПорядка_ПереместитьВниз(Команда)
+ Направление = 1;
+ ТаблицаИмя = СтрЗаменить(Команда.Имя, "_Команда_ПереместитьВниз_", "_Таблица_");
+ ПереместитьСтрокуТаблицы(Направление, ТаблицаИмя);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ТаблицаПорядка_СортироватьПоВозрастанию(Команда)
+
+ // Установка направления сортировки.
+ ИзменитьНаправлениеСортировкиТаблицы(Команда.Имя, НаправлениеСортировкиКомпоновкиДанных.Возр);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ТаблицаПорядка_СортироватьПоУбыванию(Команда)
+
+ // Установка направления сортировки.
+ ИзменитьНаправлениеСортировкиТаблицы(Команда.Имя, НаправлениеСортировкиКомпоновкиДанных.Убыв);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ЗагрузитьПользовательскуюНастройку(Команда)
+ КнопкаИдентификатор = Прав(Команда.Имя, 32);
+ КнопкаУникальныйИдентификатор = ПривестиИмяКИдентификатору(КнопкаИдентификатор);
+ НеобходимоОбновитьНастройки = Истина;
+ УстановитьТекущиеПользовательскиеНастройки(КнопкаУникальныйИдентификатор);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Клиент
+
+&НаКлиенте
+Процедура ЗаписатьИЗакрыть(Переформировать)
+ ФормаЗакрываетсяСПараметрами = Истина;
+ Если РежимСовместимости
+ Или МодальныйРежим
Или РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс
Или ВладелецФормы = Неопределено Тогда
Закрыть(Истина);
Иначе
- РезультатВыбора = Новый Структура;
- РезультатВыбора.Вставить("ВариантМодифицирован", Ложь);
- РезультатВыбора.Вставить("ПользовательскиеНастройкиМодифицированы", Ложь);
-
- Если ВариантМодифицирован Тогда
- РезультатВыбора.ВариантМодифицирован = Истина;
- РезультатВыбора.Вставить("НастройкиКД", Отчет.КомпоновщикНастроек.Настройки);
- КонецЕсли;
-
- ПользовательскиеНастройкиМодифицированы = Истина; // Для 8.3.4 и ниже.
- Если ВариантМодифицирован Или ПользовательскиеНастройкиМодифицированы Тогда
- РезультатВыбора.ПользовательскиеНастройкиМодифицированы = Истина;
- РезультатВыбора.Вставить("ПользовательскиеНастройкиКД", Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);
- КонецЕсли;
-
- ОповеститьОВыборе(РезультатВыбора);
+ ОповеститьОВыборе(РезультатВыбора(Переформировать));
КонецЕсли;
КонецПроцедуры
+&НаКлиенте
+Функция РезультатВыбора(Переформировать)
+ РезультатВыбора = Новый Структура;
+ РезультатВыбора.Вставить("Переформировать", Переформировать);
+ РезультатВыбора.Вставить("ВариантМодифицирован", Ложь);
+ РезультатВыбора.Вставить("ПользовательскиеНастройкиМодифицированы", Ложь);
+
+ Если ВариантМодифицирован Тогда
+ РезультатВыбора.ВариантМодифицирован = Истина;
+ РезультатВыбора.Вставить("НастройкиКД", Отчет.КомпоновщикНастроек.Настройки);
+ КонецЕсли;
+
+ ПользовательскиеНастройкиМодифицированы = Истина; // Для 8.3.4 и ниже.
+ Если ВариантМодифицирован Или ПользовательскиеНастройкиМодифицированы Тогда
+ РезультатВыбора.ПользовательскиеНастройкиМодифицированы = Истина;
+ РезультатВыбора.Вставить("ПользовательскиеНастройкиКД", Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);
+ КонецЕсли;
+
+ Возврат РезультатВыбора;
+КонецФункции
+
+&НаКлиенте
+Процедура ВыборПериодаИзВыпадающегоСписка(Результат, ПараметрыВыбора) Экспорт
+ Если Результат = Неопределено Тогда
+ Возврат; // Отмена выбора.
+ КонецЕсли;
+
+ Если Результат = -1 Тогда // Начало выбора.
+ // Чтение параметров для формирования списка из сохраненного значения периода.
+ ПараметрыВыбора.Вставить("НачалоПериода", ПараметрыВыбора.Значение.ДатаНачала);
+ ПараметрыВыбора.Вставить("Вариант", ПараметрыВыбора.Значение.Вариант);
+ ИндексНачальногоЗначения = Неопределено;
+ ИначеЕсли ТипЗнч(Результат.Значение) = Тип("Структура") Тогда
+ // Чтение параметров для формирования списка из выбранного значения.
+ ПараметрыВыбора.Вставить("НачалоПериода", Результат.Значение.НачалоПериода);
+ ПараметрыВыбора.Вставить("Вариант", Результат.Значение.Вариант);
+ ИндексНачальногоЗначения = Результат.Значение.ИндексНачальногоЗначения;
+ Иначе
+ // Загрузка результата выбора.
+ ЗагрузитьРезультатВыбораПериодаИзВыпадающегоСписка(Результат, ПараметрыВыбора);
+ Возврат;
+ КонецЕсли;
+
+ // Формирование списка выбора.
+ Если ПараметрыВыбора.Вариант = Неопределено Или ПараметрыВыбора.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод Тогда
+
+ СписокПериодов = ФункцииОтчетовКлиентСервер.СписокФиксированныхПериодов(ПараметрыВыбора.НачалоПериода, ПараметрыВыбора.ВидПериода);
+
+ Если ИндексНачальногоЗначения = Неопределено Тогда
+ ИндексНачальногоЗначения = СписокПериодов.НайтиПоЗначению(ПараметрыВыбора.НачалоПериода);
+ КонецЕсли;
+
+ ОписаниеНавигационногоЭлемента = Новый Структура;
+ ОписаниеНавигационногоЭлемента.Вставить("НачалоПериода", СписокПериодов[0].Значение);
+ ОписаниеНавигационногоЭлемента.Вставить("Вариант", Неопределено);
+ ОписаниеНавигационногоЭлемента.Вставить("ИндексНачальногоЗначения", 0);
+ СписокПериодов[0].Значение = ОписаниеНавигационногоЭлемента;
+
+ ОписаниеНавигационногоЭлемента = Новый Структура;
+ ОписаниеНавигационногоЭлемента.Вставить("НачалоПериода", СписокПериодов[8].Значение);
+ ОписаниеНавигационногоЭлемента.Вставить("Вариант", Неопределено);
+ ОписаниеНавигационногоЭлемента.Вставить("ИндексНачальногоЗначения", 8);
+ СписокПериодов[8].Значение = ОписаниеНавигационногоЭлемента;
+
+ Если Не ПараметрыВыбора.Свойство("ВариантСтандартногоПериодаПоВиду") Тогда
+ ПараметрыВыбора.Вставить("ВариантСтандартногоПериодаПоВиду", ВариантСтандартногоПериодаПоВиду(ПараметрыВыбора.ВидПериода));
+ КонецЕсли;
+
+ ОписаниеНавигационногоЭлемента = Новый Структура;
+ ОписаниеНавигационногоЭлемента.Вставить("НачалоПериода", ПараметрыВыбора.НачалоПериода);
+ ОписаниеНавигационногоЭлемента.Вставить("Вариант", ПараметрыВыбора.ВариантСтандартногоПериодаПоВиду);
+ ОписаниеНавигационногоЭлемента.Вставить("ИндексНачальногоЗначения", Неопределено);
+ СписокПериодов.Добавить(ОписаниеНавигационногоЭлемента, НСтр("ru = 'Относительный...'"));
+
+ Иначе
+
+ СписокПериодов = ФункцииОтчетовКлиентСервер.СписокВычисляемыхПериодов(ПараметрыВыбора.ВидПериода);
+
+ Если ИндексНачальногоЗначения = Неопределено Тогда
+ ИндексНачальногоЗначения = СписокПериодов.НайтиПоЗначению(ПараметрыВыбора.Вариант);
+ КонецЕсли;
+
+ ОписаниеНавигационногоЭлемента = Новый Структура;
+ ОписаниеНавигационногоЭлемента.Вставить("НачалоПериода", ПараметрыВыбора.НачалоПериода);
+ ОписаниеНавигационногоЭлемента.Вставить("Вариант", Неопределено);
+ ОписаниеНавигационногоЭлемента.Вставить("ИндексНачальногоЗначения", Неопределено);
+ СписокПериодов.Добавить(ОписаниеНавигационногоЭлемента, НСтр("ru = 'Фиксированный...'"));
+
+ КонецЕсли;
+
+ Если ИндексНачальногоЗначения = Неопределено Тогда
+ ИндексНачальногоЗначения = СписокПериодов.Количество() - 1;
+ КонецЕсли;
+
+ ПеременныеКлиента.Вставить("ВыборПериодаИзВыпадающегоСписка", Новый Структура);
+ ПеременныеКлиента.ВыборПериодаИзВыпадающегоСписка.Вставить("ПараметрыВыбора", ПараметрыВыбора);
+ ПеременныеКлиента.ВыборПериодаИзВыпадающегоСписка.Вставить("СписокПериодов", СписокПериодов);
+ ПеременныеКлиента.ВыборПериодаИзВыпадающегоСписка.Вставить("ИндексНачальногоЗначения", ИндексНачальногоЗначения);
+ Если Результат = -1 Тогда
+ НачатьВыборПериодаИзВыпадающегоСписка();
+ Иначе
+ ПодключитьОбработчикОжидания("НачатьВыборПериодаИзВыпадающегоСписка", 0.1, Истина);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура НачатьВыборПериодаИзВыпадающегоСписка()
+ Если ПеременныеКлиента.Свойство("ВыборПериодаИзВыпадающегоСписка") Тогда
+ Контекст = ПеременныеКлиента.ВыборПериодаИзВыпадающегоСписка;
+ ПеременныеКлиента.Удалить("ВыборПериодаИзВыпадающегоСписка");
+ Обработчик = Новый ОписаниеОповещения("ВыборПериодаИзВыпадающегоСписка", ЭтотОбъект, Контекст.ПараметрыВыбора);
+ ПоказатьВыборИзСписка(Обработчик, Контекст.СписокПериодов, Контекст.ПараметрыВыбора.Элемент, Контекст.ИндексНачальногоЗначения);
+ КонецЕслИ;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗагрузитьРезультатВыбораПериодаИзВыпадающегоСписка(Результат, ПараметрыВыбора)
+ Значение = ПараметрыВыбора.Значение;
+
+ // Запись результата выбора в данные формы и пользовательские настройки КД.
+ Если ТипЗнч(Результат.Значение) = Тип("ВариантСтандартногоПериода") Тогда
+ ЭтотОбъект[ПараметрыВыбора.ПериодПредставлениеИмя] = ?(ПустаяСтрока(Результат.Представление), Строка(Результат.Значение), Результат.Представление);
+ Значение.Вариант = Результат.Значение;
+ Иначе
+ НачалоПериода = ФункцииОтчетовКлиентСервер.НачалоПериодаОтчета(ПараметрыВыбора.ВидПериода, Результат.Значение);
+ КонецПериода = ФункцииОтчетовКлиентСервер.КонецПериодаОтчета(ПараметрыВыбора.ВидПериода, Результат.Значение);
+
+ ЭтотОбъект[ПараметрыВыбора.ПериодПредставлениеИмя] = Результат.Представление;
+
+ Значение.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод;
+ Значение.ДатаНачала = НачалоПериода;
+ Значение.ДатаОкончания = КонецПериода;
+ КонецЕсли;
+
+ ЭтотОбъект[ПараметрыВыбора.ПериодЗначениеИмя] = Значение;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ПараметрыВыбора.ИдентификаторЭлемента);
+ Если ПараметрыВыбора.ЭтоПараметр Тогда
+ ПользовательскаяНастройкаКД.Значение = Значение;
+ Иначе
+ ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
+ КонецЕсли;
+
+ Если Элементы.Найти(ПараметрыВыбора.ИспользованиеИмя) <> Неопределено Тогда
+ ЭтотОбъект[ПараметрыВыбора.ИспользованиеИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Функция ВариантСтандартногоПериодаПоВиду(ВидПериода)
+ Если ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.День") Тогда
+ Возврат ВариантСтандартногоПериода.Сегодня;
+ ИначеЕсли ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.Неделя") Тогда
+ Возврат ВариантСтандартногоПериода.ЭтаНеделя;
+ ИначеЕсли ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.Декада") Тогда
+ Возврат ВариантСтандартногоПериода.ЭтаДекада;
+ ИначеЕсли ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.Месяц") Тогда
+ Возврат ВариантСтандартногоПериода.ЭтотМесяц;
+ ИначеЕсли ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.Квартал") Тогда
+ Возврат ВариантСтандартногоПериода.ЭтотКвартал;
+ ИначеЕсли ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.Полугодие") Тогда
+ Возврат ВариантСтандартногоПериода.ЭтоПолугодие;
+ ИначеЕсли ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.Год") Тогда
+ Возврат ВариантСтандартногоПериода.ЭтотГод;
+ КонецЕсли;
+КонецФункции
+
+&НаКлиенте
+Процедура ПереместитьСтрокуТаблицы(Направление, ТаблицаИмя)
+
+ СтрокаТаблицы = Элементы[ТаблицаИмя].ТекущиеДанные;
+ Если СтрокаТаблицы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Таблица = ЭтотОбъект[ТаблицаИмя];
+ ИндексСтрокиТаблицы = Таблица.Индекс(СтрокаТаблицы);
+ Если ИндексСтрокиТаблицы + Направление < 0 ИЛИ ИндексСтрокиТаблицы + Направление >= Таблица.Количество() Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ТаблицаИмя);
+ СтрокаПользовательскойНастройки = ФункцииОтчетовКлиентСервер.НайтиВложеннуюПользовательскуюНастройку(ПользовательскаяНастройкаКД, СтрокаТаблицы.Идентификатор);
+
+ ПользовательскаяНастройкаКД.Элементы.Сдвинуть(СтрокаПользовательскойНастройки, Направление);
+ Таблица.Сдвинуть(ИндексСтрокиТаблицы, Направление);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ИзменитьНаправлениеСортировкиТаблицы(ИмяЭлемента, Направление)
+
+ // Формирование сведений о таблице.
+ ИдентификаторЭлемента = Прав(ИмяЭлемента, 32);
+ СвойстваНастройкиТип = Лев(ИмяЭлемента, Найти(ИмяЭлемента, "_")-1);
+ ТаблицаИмя = СвойстваНастройкиТип + "_Таблица_" + ИдентификаторЭлемента;
+
+ // Получение данных.
+ СтрокаТаблицы = Элементы[ТаблицаИмя].ТекущиеДанные;
+ Если СтрокаТаблицы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ СтрокаПользовательскойНастройки = ФункцииОтчетовКлиентСервер.НайтиВложеннуюПользовательскуюНастройку(ПользовательскаяНастройкаКД, СтрокаТаблицы.Идентификатор);
+ Если СтрокаПользовательскойНастройки = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Заполнение необязательных параметров.
+ Если Направление = Неопределено Тогда
+ Если СтрокаПользовательскойНастройки.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр Тогда
+ Направление = НаправлениеСортировкиКомпоновкиДанных.Убыв;
+ Иначе
+ Направление = НаправлениеСортировкиКомпоновкиДанных.Возр;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Изменение направления сортировки.
+ СтрокаПользовательскойНастройки.ТипУпорядочивания = Направление;
+ СтрокаТаблицы.Направление = Направление;
+
+КонецПроцедуры
+
+&НаКлиенте
+Функция НайтиПользовательскуюНастройкуЭлемента(ИмяИлиИдентификаторЭлемента)
+ // Для пользовательских настроек хранятся идентификаторы компоновки данных,
+ // поскольку они не могут храниться по ссылке (происходит копирование значения).
+ Если СтрДлина(ИмяИлиИдентификаторЭлемента) = 32 Тогда
+ ИдентификаторЭлемента = ИмяИлиИдентификаторЭлемента;
+ Иначе
+ ИдентификаторЭлемента = Прав(ИмяИлиИдентификаторЭлемента, 32);
+ КонецЕсли;
+ ИдентификаторКД = БыстрыйПоискПользовательскихНастроек.Получить(ИдентификаторЭлемента);
+ Возврат Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(ИдентификаторКД);
+КонецФункции
+
+&НаКлиенте
+Функция НайтиДополнительныеНастройкиЭлемента(ИмяИлиИдентификаторЭлемента)
+ // Для пользовательских настроек хранятся идентификаторы компоновки данных,
+ // поскольку они не могут храниться по ссылке (происходит копирование значения).
+ Если СтрДлина(ИмяИлиИдентификаторЭлемента) = 32 Тогда
+ ИдентификаторЭлемента = ИмяИлиИдентификаторЭлемента;
+ Иначе
+ ИдентификаторЭлемента = Прав(ИмяИлиИдентификаторЭлемента, 32);
+ КонецЕсли;
+
+ ВсеДополнительныеНастройки = Неопределено;
+ Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Свойство("ЭлементыФормы", ВсеДополнительныеНастройки);
+ Если ВсеДополнительныеНастройки = Неопределено Тогда
+ Возврат Неопределено
+ Иначе
+ Возврат ВсеДополнительныеНастройки[ИдентификаторЭлемента];
+ КонецЕсли;
+КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Клиент или сервер
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ПривестиИдентификаторКИмени(Идентификатор)
+ Возврат СтрЗаменить(Строка(Идентификатор), "-", "");
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ПривестиИмяКИдентификатору(Имя)
+ Возврат Лев(Имя, 8) + "-" + Сред(Имя, 9, 4) + "-" + Сред(Имя, 13, 4) + "-" + Сред(Имя, 17, 4) + "-" + Сред(Имя, 21);
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ОписаниеТиповУдалитьПримитивные(ИсходноеОписаниеТипов)
+ ВычитаемыеТипы = Новый Массив;
+ Если ИсходноеОписаниеТипов.СодержитТип(Тип("Строка")) Тогда
+ ВычитаемыеТипы.Добавить(Тип("Строка"));
+ КонецЕсли;
+ Если ИсходноеОписаниеТипов.СодержитТип(Тип("Дата")) Тогда
+ ВычитаемыеТипы.Добавить(Тип("Дата"));
+ КонецЕсли;
+ Если ИсходноеОписаниеТипов.СодержитТип(Тип("Число")) Тогда
+ ВычитаемыеТипы.Добавить(Тип("Число"));
+ КонецЕсли;
+ Если ВычитаемыеТипы.Количество() = 0 Тогда
+ Возврат ИсходноеОписаниеТипов;
+ КонецЕсли;
+ Возврат Новый ОписаниеТипов(ИсходноеОписаниеТипов, , ВычитаемыеТипы);
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ДобавитьУникальноеЗначениеВСписок(СписокЗначений, Значение, Представление, Использование)
+ Если Не ЗначениеЗаполнено(Значение) И Не ЗначениеЗаполнено(Представление) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+ ЭлементСписка = СписокЗначений.НайтиПоЗначению(Значение);
+ Если ЭлементСписка = Неопределено Тогда
+ ЭлементСписка = СписокЗначений.Добавить();
+ ЭлементСписка.Значение = Значение;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(Представление) Тогда
+ ЭлементСписка.Представление = Представление;
+ ИначеЕсли Не ЗначениеЗаполнено(ЭлементСписка.Представление) Тогда
+ ЭлементСписка.Представление = Строка(Значение);
+ КонецЕсли;
+ Если Использование И Не ЭлементСписка.Пометка Тогда
+ ЭлементСписка.Пометка = Истина;
+ КонецЕсли;
+ Возврат ЭлементСписка;
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ЗначенияСписком(Значения)
+ Если ТипЗнч(Значения) = Тип("СписокЗначений") Тогда
+ Возврат Значения;
+ Иначе
+ СписокЗначений = Новый СписокЗначений;
+ ДобавитьУникальноеЗначениеВСписок(СписокЗначений, Значения, Неопределено, Ложь);
+ Значения = СписокЗначений;
+ Возврат СписокЗначений;
+ КонецЕсли;
+КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Вызов сервера
+
+&НаСервере
+Процедура БыстрыеНастройкиЗаполнить(Знач ПараметрыЗаполнения)
+
+ // Вставка значений по умолчанию для обязательных ключей параметров заполнения.
+ БыстрыеНастройкиДозаполнитьПараметры(ПараметрыЗаполнения);
+
+ Если НастройкиОтчета.События.ПередЗаполнениемПанелиБыстрыхНастроек
+ Или НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек Тогда
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ КонецЕсли;
+
+ // Вызов переопределяемого модуля.
+ Если НастройкиОтчета.События.ПередЗаполнениемПанелиБыстрыхНастроек Тогда
+ ОтчетОбъект.ПередЗаполнениемПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПередЗаполнениемПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ КонецЕсли;
+
+ // Запись новых настроек варианта и пользовательских настроек в компоновщик.
+ БыстрыеНастройкиЗагрузитьНастройкиВКомпоновщик(ПараметрыЗаполнения);
+
+ // Чтение настроек отчета, не связанных с полями СКД.
+ ПрочитатьНастройкиНеСвязанныеСПолями();
+
+ // Удаление элементов старых настроек.
+ БыстрыеНастройкиУдалитьСтарыеЭлементыИКоманды(ПараметрыЗаполнения);
+
+ // Добавление элементов актуальных настроек и загрузка значений.
+ БыстрыеНастройкиСоздатьЭлементыУправленияИЗагрузитьЗначения(ПараметрыЗаполнения);
+
+ // Обработка дополнительных настроек.
+ ПослеИзмененияКлючевыхСостояний(ПараметрыЗаполнения);
+
+ // Заголовок и свойства элементов.
+ ВидимостьДоступностьКорректность();
+
+ // Вызов переопределяемого модуля.
+ Если НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек Тогда
+ ОтчетОбъект.ПослеЗаполненияПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПослеЗаполненияПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ВидимостьДоступностьКорректность(Изменения = "")
+ // Быстрые настройки
+ Если Изменения = "" Тогда
+ // Вычисление параметров отображения.
+ ПользовательскиеНастройкиКД = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
+ ЕстьМедленныеНастройки = ПользовательскиеНастройкиКД.Элементы.Количество() > 0;
+
+ // Применение параметров отображения.
+ Если ВариантыПанелиКлючТекущегоВарианта <> КлючТекущегоВарианта Тогда
+ ВариантыПанелиКлючТекущегоВарианта = КлючТекущегоВарианта;
+ ЗаполнитьКомандыВыбораПользовательскихНастроек();
+ ЗаполнитьПанельОтчетов();
+ КонецЕсли;
+ Если ЕстьОбычныеНастройки Или ЕстьДругиеОтчеты Тогда
+ Элементы.СтраницыНастроек.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху;
+ Элементы.НадписьНетНастроек.Видимость = Ложь;
+ ИначеЕсли ЕстьБыстрыеНастройки Тогда
+ Элементы.СтраницыНастроек.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
+ Элементы.НадписьНетНастроек.Видимость = Ложь;
+ Иначе
+ Элементы.СтраницыНастроек.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
+ Элементы.НадписьНетНастроек.Видимость = Истина;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Заголовок
+ Если Изменения = "" Или Изменения = "ВсеНастройки" Тогда
+ Если ЗначениеЗаполнено(ОтчетНаименованиеТекущегоВарианта) Тогда
+ Заголовок = ОтчетНаименованиеТекущегоВарианта;
+ Иначе
+ Заголовок = НастройкиОтчета.Наименование;
+ Конецесли;
+ Если Элементы.ВсеНастройки.Пометка Тогда
+ Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВсеНастройки;
+ Заголовок = НСтр("ru = 'Все настройки отчета'") + " """ + Заголовок + """";
+ Иначе
+ Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаНастройкиИДругиеОтчеты;
+ Заголовок = НСтр("ru = 'Настройки отчета'") + " """ + Заголовок + """";
+ Конецесли;
+ Элементы.ГруппаДругиеВариантыОтчета.Заголовок = НастройкиОтчета.Наименование + " (" + НСтр("ru = 'варианты отчета'") + "):";
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ОбновитьСвязиВедущегоСПодчиненными(ИдентификаторЭлемента, Значение, Использование, ВсеСвязиВедущего, ЗначениеИзменено)
+
+ // Если ведущий используется, тогда связь регистрируется в элементе подчиненного в соответствии с выбранным типом.
+ Если ВсеСвязиВедущего.Свойство("ПараметрыВыбораПодчиненныхПоТипуВедущего") Тогда
+ ЗначениеТип = ТипЗнч(Значение);
+ Для Каждого СтрокаСвязиОтбора Из ВсеСвязиВедущего.ПараметрыВыбораПодчиненныхПоТипуВедущего Цикл
+ СвязьВключена = Использование И ЗначениеТип = СтрокаСвязиОтбора.ВедущийТип;
+ ПодчиненныйЭлемент = Элементы[СтрокаСвязиОтбора.ПодчиненныйИмяЭлемента];
+ УстановитьСвязьПараметровВыбора(ПодчиненныйЭлемент, СтрокаСвязиОтбора, СвязьВключена);
+ КонецЦикла;
+ КонецЕсли;
+
+ Если ВсеСвязиВедущего.Свойство("ПараметрыВыбораПодчиненных") Тогда
+ Для Каждого СтрокаСвязиОтбора Из ВсеСвязиВедущего.ПараметрыВыбораПодчиненных Цикл
+ ПодчиненныйЭлемент = Элементы[СтрокаСвязиОтбора.ПодчиненныйИмяЭлемента];
+ УстановитьСвязьПараметровВыбора(ПодчиненныйЭлемент, СтрокаСвязиОтбора, Использование);
+ Если ЗначениеИзменено = Истина
+ И СтрокаСвязиОтбора.Действие = РежимИзмененияСвязанногоЗначения.Очищать Тогда
+ Если Не ПустаяСтрока(СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита) Тогда
+ ЗначениеРеквизита = ЗначениеРеквизита(СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита);
+ Если ЗначениеРеквизита <> Неопределено Тогда
+ Если ТипЗнч(ЗначениеРеквизита) = Тип("СписокЗначений") Тогда
+ ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита].Очистить();
+ Иначе
+ ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита] = Неопределено;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ Если Не ПустаяСтрока(СтрокаСвязиОтбора.ПодчиненныйИмяФлажка)
+ И ЗначениеРеквизита(СтрокаСвязиОтбора.ПодчиненныйИмяФлажка) <> Неопределено Тогда
+ ИдентификаторКД = БыстрыйПоискПользовательскихНастроек.Получить(СтрокаСвязиОтбора.ПодчиненныйИдентификатор);
+ ПользовательскаяНастройка = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(ИдентификаторКД);
+ ПользовательскаяНастройка.Использование = Ложь;
+ ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяФлажка] = Ложь;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// Сервер
+
+&НаСервере
+Процедура БыстрыеНастройкиДозаполнитьПараметры(ПараметрыЗаполнения)
+ Если Не ПараметрыЗаполнения.Свойство("Событие") Тогда
+ ПараметрыЗаполнения.Вставить("Событие", Новый Структура("Имя", ""));
+ КонецЕсли;
+ Если Не ПараметрыЗаполнения.Свойство("ВариантМодифицирован") Тогда
+ ПараметрыЗаполнения.Вставить("ВариантМодифицирован", Ложь);
+ КонецЕсли;
+ Если Не ПараметрыЗаполнения.Свойство("ПользовательскиеНастройкиМодифицированы") Тогда
+ ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Ложь);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура БыстрыеНастройкиЗагрузитьНастройкиВКомпоновщик(ПараметрыЗаполнения)
+ Если ПараметрыЗаполнения.Свойство("КомпоновщикНастроекКД") Тогда
+ Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПараметрыЗаполнения.КомпоновщикНастроекКД.Настройки);
+ Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПараметрыЗаполнения.КомпоновщикНастроекКД.ПользовательскиеНастройки);
+ КонецЕсли;
+
+ Если ПараметрыЗаполнения.Свойство("НастройкиКД") Тогда
+ Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПараметрыЗаполнения.НастройкиКД);
+ КонецЕсли;
+
+ Если ПараметрыЗаполнения.Свойство("ПользовательскиеНастройкиКД") Тогда
+ Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПараметрыЗаполнения.ПользовательскиеНастройкиКД);
+ КонецЕсли;
+
+ Если ПараметрыЗаполнения.Событие.Имя = "НастройкиПоУмолчанию" Тогда
+ ПустойКомпоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
+ Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПустойКомпоновщик.ПользовательскиеНастройки);
+ КонецЕсли;
+
+ Если ПараметрыЗаполнения.ВариантМодифицирован Тогда
+ ВариантМодифицирован = Истина;
+ КонецЕсли;
+
+ Если ПараметрыЗаполнения.ПользовательскиеНастройкиМодифицированы Тогда
+ ПользовательскиеНастройкиМодифицированы = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ПрочитатьНастройкиНеСвязанныеСПолями()
+ ПользовательскиеНастройкиКД = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
+
+ ФормироватьСразу = Неопределено;
+ ПользовательскиеНастройкиКД.ДополнительныеСвойства.Свойство("ФормироватьСразу", ФормироватьСразу);
+ Если ТипЗнч(ФормироватьСразу) <> Тип("Булево") Тогда
+ ФормироватьСразу = Ложь;
+ КонецЕсли;
+ Элементы.ФормироватьСразу.Пометка = ФормироватьСразу;
+
+ ПоказыватьВсеНастройки = Неопределено;
+ ПользовательскиеНастройкиКД.ДополнительныеСвойства.Свойство("ПоказыватьВсеНастройки", ПоказыватьВсеНастройки);
+ Если ТипЗнч(ПоказыватьВсеНастройки) <> Тип("Булево") Тогда
+ ПоказыватьВсеНастройки = Ложь;
+ КонецЕсли;
+ Элементы.ВсеНастройки.Пометка = ПоказыватьВсеНастройки;
+КонецПроцедуры
+
+&НаСервере
+Процедура БыстрыеНастройкиУдалитьСтарыеЭлементыИКоманды(ПараметрыЗаполнения)
+ // Удаление элементов.
+ УдаляемыеЭлементы = Новый Массив;
+ ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.БыстрыеНастройки.ПодчиненныеЭлементы);
+ ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.СтраницаГлавное.ПодчиненныеЭлементы);
+ ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.СтраницаДополнительноШапка.ПодчиненныеЭлементы);
+ ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.СтраницаДополнительноПодвал.ПодчиненныеЭлементы);
+ ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.СтраницаДополнительноГруппировки.ПодчиненныеЭлементы);
+ Для Каждого СтраницаНастроек Из Элементы.СтраницыНастроек.ПодчиненныеЭлементы Цикл
+ Если СтраницаНастроек <> Элементы.СтраницаГлавное
+ И СтраницаНастроек <> Элементы.СтраницаДополнительно
+ И СтраницаНастроек <> Элементы.СтраницаДругиеОтчеты
+ И СтраницаНастроек <> Элементы.СтраницаНеОтсортированное Тогда
+ ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, СтраницаНастроек.ПодчиненныеЭлементы);
+ УдаляемыеЭлементы.Добавить(СтраницаНастроек);
+ КонецЕсли;
+ КонецЦикла;
+ Для Каждого Элемент Из УдаляемыеЭлементы Цикл
+ Элементы.Удалить(Элемент);
+ КонецЦикла;
+
+ // Удаление команд
+ УдаляемыеКоманды = Новый Массив;
+ Для Каждого Команда Из Команды Цикл
+ Если ПостоянныеКоманды.НайтиПоЗначению(Команда.Имя) = Неопределено Тогда
+ УдаляемыеКоманды.Добавить(Команда);
+ КонецЕсли;
+ КонецЦикла;
+ Для Каждого Команда Из УдаляемыеКоманды Цикл
+ Команды.Удалить(Команда);
+ КонецЦикла;
+КонецПроцедуры
+
+&НаСервере
+Процедура ДобавитьПодчиненныеЭлементы(Куда, Откуда)
+ Для Каждого ПодчиненныйЭлемент Из Откуда Цикл
+ Если ТипЗнч(ПодчиненныйЭлемент) = Тип("ГруппаФормы")
+ Или ТипЗнч(ПодчиненныйЭлемент) = Тип("ТаблицаФормы") Тогда
+ ДобавитьПодчиненныеЭлементы(Куда, ПодчиненныйЭлемент.ПодчиненныеЭлементы);
+ КонецЕсли;
+ Куда.Добавить(ПодчиненныйЭлемент);
+ КонецЦикла;
+КонецПроцедуры
+
+&НаСервере
+Процедура БыстрыеНастройкиСоздатьЭлементыУправленияИЗагрузитьЗначения(ПараметрыЗаполнения)
+ // Кэши для быстрого поиска с клиента.
+ СоответствиеПользовательскихНастроек = Новый Соответствие;
+ СоответствиеИменОбъектовМетаданных = Новый Соответствие;
+ СоответствиеОтключаемыхСвязей = Новый Соответствие;
+
+ СоответствиеХранимыхСписковВыбора = Новый Соответствие;
+
+ ЕстьБыстрыеНастройки = Ложь;
+ ЕстьОбычныеНастройки = Ложь;
+
+ // Удаление реквизитов
+ ПараметрыЗаполнения.Вставить("Реквизиты", Новый Структура);
+ ПараметрыЗаполнения.Реквизиты.Вставить("Добавляемые", Новый Массив);
+ ПараметрыЗаполнения.Реквизиты.Вставить("Удаляемые", Новый Массив);
+ ПараметрыЗаполнения.Реквизиты.Вставить("Существующие", Новый Соответствие);
+ ОписаниеТиповТаблицаЗначений = Новый ОписаниеТипов("ТаблицаЗначений");
+ ВсеРеквизиты = ПолучитьРеквизиты();
+ Для Каждого Реквизит Из ВсеРеквизиты Цикл
+ РеквизитПолноеИмя = ПолноеИмяРеквизита(Реквизит);
+ Если ПостоянныеРеквизиты.НайтиПоЗначению(РеквизитПолноеИмя) = Неопределено Тогда
+ ПараметрыЗаполнения.Реквизиты.Существующие.Вставить(РеквизитПолноеИмя, Реквизит.ТипЗначения);
+ Подчиненные = ПолучитьРеквизиты(РеквизитПолноеИмя);
+ Если ОписанияТиповСовпадают(Реквизит.ТипЗначения, ОписаниеТиповТаблицаЗначений) Тогда
+ Для Каждого Подчиненный Из Подчиненные Цикл
+ ПодчиненныйПолноеИмя = ПолноеИмяРеквизита(Подчиненный);
+ ПараметрыЗаполнения.Реквизиты.Существующие.Вставить(ПодчиненныйПолноеИмя, Подчиненный.ТипЗначения);
+ КонецЦикла;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ // Локальные переменные для установки значений и свойств после создания реквизитов.
+ ДобавленныеПоляВвода = Новый Структура;
+ ДобавленныеСпискиЗначений = Новый Массив;
+ ДобавленныеТаблицыСФлажками = Новый Массив;
+ ДобавленныеСтандартныеПериоды = Новый Массив;
+
+ // Структура связей.
+ Связи = СоздатьСтруктуруТаблицСвязей();
+
+ ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных = Новый Соответствие;
+ ИменаОсновныхРеквизитовФормы = Новый Соответствие;
+ ИменаЭлементовДляУстановкиСвязей = Новый Соответствие;
+ ИменаФлажковИспользование = Новый Соответствие;
+ НастройкиСВидомСравненияРавно = Новый Соответствие;
+
+ КомпоновщикНастроекКД = Отчет.КомпоновщикНастроек;
+ ПользовательскиеНастройкиКД = КомпоновщикНастроекКД.ПользовательскиеНастройки;
+ НастройкиКД = КомпоновщикНастроекКД.ПолучитьНастройки();
+
+ Если ПользовательскиеНастройкиКД.ДополнительныеСвойства.Свойство("ЭлементыФормы") Тогда
+ ДополнительныеНастройкиЭлементов = ПользовательскиеНастройкиКД.ДополнительныеСвойства.ЭлементыФормы;
+ Иначе
+ ДополнительныеНастройкиЭлементов = Новый Соответствие;
+ КонецЕсли;
+
+ Режимы = РежимОтображенияЭлементаНастройкиКомпоновкиДанных;
+
+ ШаблонНастройки = Новый Структура("Тип, Подтип, Шаблон, СтрокаДерева,
+ |ПользовательскаяСКД, ИдентификаторСКД, ВариантаСКД, ДоступнаяСКД");
+ ШаблонНастройки.Вставить("Иерархия", Ложь);
+ ШаблонНастройки.Вставить("ФлажокИспользование", Ложь);
+ ШаблонНастройки.Вставить("ВыводВЗакладке", Ложь);
+ ШаблонНастройки.Вставить("ВводСписком", Ложь);
+ ШаблонНастройки.Вставить("ОграничиватьВыборУказаннымиЗначениями", Ложь);
+ ШаблонНастройки = Новый ФиксированнаяСтруктура(ШаблонНастройки);
+
+ ГруппыВывода = Новый Структура;
+ ГруппыВывода.Вставить("Быстрые", Новый Структура("Порядок, Размер", Новый Массив, 0));
+ ГруппыВывода.Вставить("Основные", Новый Структура("Порядок, Размер", Новый Массив, 0));
+ ГруппыВывода.Вставить("ДополнительныеШапка", Новый Структура("Порядок, Размер", Новый Массив, 0));
+ ГруппыВывода.Вставить("ДополнительныеПодвал", Новый Структура("Порядок, Размер", Новый Массив, 0));
+ ГруппыВывода.Вставить("ДополнительныеЗакладки", Новый СписокЗначений);
+ ДополнительныеЗакладкиПоиск = Новый Соответствие;
+
+ ОтчетОбъект = Неопределено;
+
+ ДеревоВарианта = Новый ДеревоЗначений;
+ ДеревоВарианта.Колонки.Добавить("Настройка");
+ ДеревоВарианта.Колонки.Добавить("ТипНастройки", Новый ОписаниеТипов("Строка"));
+ ДеревоВарианта.Колонки.Добавить("Заголовок", Новый ОписаниеТипов("Строка"));
+ ДеревоВарианта.Колонки.Добавить("ЕстьСтруктура", Новый ОписаниеТипов("Булево"));
+ ДеревоВарианта.Колонки.Добавить("ЕстьПоляИОформление", Новый ОписаниеТипов("Булево"));
+
+ ДеревоВариантаЗарегистрироватьЭлемент(НастройкиКД, ДеревоВарианта.Строки);
+
+ ГруппаСортировки = Элементы.СтраницаНеОтсортированное;
+
+ ЕстьЗагрузкаДанныхИзФайла = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла");
+
+ // Перебор коллекций пользовательских настроек.
+ // Отдельный цикл верхнего уровня нужен для поддержки сценария,
+ // когда коллекция отборов выведена в пользовательские настройки
+ // и можно добавлять новые отборы не меняя настроек варианта.
+ НаборыПользовательскихНастроек = Новый СписокЗначений;
+ НаборыПользовательскихНастроек.Добавить(ПользовательскиеНастройкиКД.Элементы, "Отчет.КомпоновщикНастроек.ПользовательскиеНастройки");
+ Пока Истина Цикл
+ Если НаборыПользовательскихНастроек.Количество() = 0 Тогда
+ Прервать;
+ КонецЕсли;
+
+ НаборПользовательскихНастроек = НаборыПользовательскихНастроек[0].Значение;
+ ПутьПользовательскихНастроек = НаборыПользовательскихНастроек[0].Представление;
+ НаборыПользовательскихНастроек.Удалить(0);
+ ЭтоНаборОтбора = (ТипЗнч(НаборПользовательскихНастроек) = Тип("КоллекцияЭлементовОтбораКомпоновкиДанных"));
+
+ // Перебор пользовательских настроек.
+ Для Каждого ПользовательскаяНастройка Из НаборПользовательскихНастроек Цикл
+ РежимОтображения = ПользовательскаяНастройка.РежимОтображения;
+ Если РежимОтображения = Режимы.Недоступный Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ИндексЭлемента = НаборПользовательскихНастроек.Индекс(ПользовательскаяНастройка);
+ ИдентификаторСКД = ПользовательскаяНастройка.ИдентификаторПользовательскойНастройки;
+ Если Не ЗначениеЗаполнено(ИдентификаторСКД) Тогда
+ Продолжить;
+ КонецЕсли;
+ ИдентификаторЭлемента = ПривестиИдентификаторКИмени(ИдентификаторСКД);
+
+ СоответствиеПользовательскихНастроек.Вставить(ИдентификаторЭлемента, ПользовательскиеНастройкиКД.ПолучитьИдентификаторПоОбъекту(ПользовательскаяНастройка));
+
+ СвойстваНастройки = Новый Структура(ШаблонНастройки);
+ СвойстваНастройки.Тип = ТипНастройкиСтрокой(ТипЗнч(ПользовательскаяНастройка));
+ СвойстваНастройки.ПользовательскаяСКД = ПользовательскаяНастройка;
+ СвойстваНастройки.ИдентификаторСКД = ИдентификаторСКД;
+
+ //СвойстваНастройки.СтрокаДерева = Неопределено;
+ Если ЭтоНаборОтбора Тогда
+ СвойстваНастройки.ВариантаСКД = ПользовательскаяНастройка;
+ Иначе
+ ДеревоВариантаНайти(ДеревоВарианта, СвойстваНастройки);
+ //СвойстваНастройки.ВариантаСКД = ДеревоВариантаНайти(ДеревоВарианта, СвойстваНастройки, СвойстваНастройки.СтрокаДерева);
+ //Если СвойстваНастройки.ВариантаСКД = Неопределено Тогда
+ // Продолжить;
+ //КонецЕсли;
+ КонецЕсли;
+
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+ //НаборыПользовательскихНастроек.Добавить(ПользовательскаяНастройка.Элементы);
+ //Продолжить;
+ КонецЕсли;
+
+ Если РежимОтображения = Режимы.Авто Тогда
+ РежимОтображения = СвойстваНастройки.ВариантаСКД.РежимОтображения;
+ КонецЕсли;
+ Если РежимОтображения = Режимы.БыстрыйДоступ Тогда
+ ЭтоБыстраяНастройка = Истина;
+ ЕстьБыстрыеНастройки = Истина;
+ ИначеЕсли РежимОтображения = Режимы.Обычный Тогда
+ ЭтоБыстраяНастройка = Ложь;
+ ЕстьОбычныеНастройки = Истина;
+ Иначе
+ Продолжить;
+ КонецЕсли;
+
+ //СвойстваНастройки.ДоступнаяСКД = ФункцииОтчетовКлиентСервер.НайтиДоступнуюНастройку(НастройкиКД, СвойстваНастройки.ВариантаСКД);
+
+ СтруктураПредставлений = Новый Структура("Представление, ПредставлениеПользовательскойНастройки", "", "");
+ ЗаполнитьЗначенияСвойств(СтруктураПредставлений, СвойстваНастройки.ВариантаСКД);
+ Если ЗначениеЗаполнено(СтруктураПредставлений.ПредставлениеПользовательскойНастройки) Тогда
+ ЭлементЗаголовок = СтруктураПредставлений.ПредставлениеПользовательскойНастройки;
+ ИначеЕсли ЗначениеЗаполнено(СтруктураПредставлений.Представление) Тогда
+ ЭлементЗаголовок = СтруктураПредставлений.Представление;
+ ИначеЕсли СвойстваНастройки.ДоступнаяСКД <> Неопределено И ЗначениеЗаполнено(СвойстваНастройки.ДоступнаяСКД.Заголовок) Тогда
+ ЭлементЗаголовок = СвойстваНастройки.ДоступнаяСКД.Заголовок;
+ Иначе
+ ЭлементЗаголовок = ПредставлениеПользовательскойНастройки(СвойстваНастройки);
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(СтруктураПредставлений.Представление) Тогда
+ СвойстваНастройки.Тип = "ФиксированныйОтбор"; // Виртуальный тип.
+ КонецЕсли;
+
+ Если СвойстваНастройки.Тип = "ГруппаЭлементовОтбора"
+ Или СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта"
+ Или СвойстваНастройки.Тип = "ФиксированныйОтбор"
+ Или СвойстваНастройки.Тип = "Группировка"
+ Или СвойстваНастройки.Тип = "ФиксированныйОтбор"
+ Или СвойстваНастройки.Тип = "Таблица"
+ Или СвойстваНастройки.Тип = "ГруппировкаТаблицы"
+ Или СвойстваНастройки.Тип = "Диаграмма"
+ Или СвойстваНастройки.Тип = "ГруппировкаДиаграммы"
+ Или СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+
+ СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование";
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+
+ Если СвойстваНастройки.ДоступнаяСКД = Неопределено Тогда
+ Продолжить; // Имя параметра изменилось или параметр был удален.
+ КонецЕсли;
+
+ СвойстваНастройки.ФлажокИспользование = СвойстваНастройки.ДоступнаяСКД.Использование <> ИспользованиеПараметраКомпоновкиДанных.Всегда;
+ Если ТипЗнч(ПользовательскаяНастройка.Значение) = Тип("СтандартныйПериод") Тогда
+ СвойстваНастройки.Шаблон = "СтандартныйПериод";
+ ИначеЕсли СвойстваНастройки.ДоступнаяСКД.ДоступенСписокЗначений Тогда
+ СвойстваНастройки.ВводСписком = Истина;
+ Если ЭтоБыстраяНастройка Тогда
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
+ Иначе
+ СвойстваНастройки.Шаблон = "СписокСПодбором";
+ КонецЕсли;
+ Иначе
+ СвойстваНастройки.Шаблон = "ПолеВвода";
+ КонецЕсли;
+
+ АнализТиповИСвязей(ИдентификаторЭлемента, СвойстваНастройки, СоответствиеИменОбъектовМетаданных, Связи); // Определение типа значения настройки.
+
+ Если СвойстваНастройки.Шаблон = "ПолеВвода" Тогда
+ НастройкиСВидомСравненияРавно.Вставить(ИдентификаторЭлемента, Истина);
+ КонецЕсли;
+
+ Если Не СвойстваНастройки.ФлажокИспользование Тогда
+ ПользовательскаяНастройка.Использование = Истина;
+ КонецЕсли;
+
+ ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(СвойстваНастройки.ВариантаСКД.Параметр));
+ ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных.Вставить(ПолеКД, ИдентификаторЭлемента);
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+
+ Если СвойстваНастройки.ДоступнаяСКД = Неопределено Тогда
+ Продолжить; // Имя поля изменилось или поле было удалено.
+ КонецЕсли;
+
+ СвойстваНастройки.ФлажокИспользование = Истина;
+ Если ТипЗнч(ПользовательскаяНастройка.ПравоеЗначение) = Тип("СтандартныйПериод") Тогда
+ СвойстваНастройки.Шаблон = "СтандартныйПериод";
+ ИначеЕсли ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено
+ Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено Тогда
+ СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование";
+ ЭлементЗаголовок = ЭлементЗаголовок + ": " + НРег(Строка(ПользовательскаяНастройка.ВидСравнения));
+ ИначеЕсли ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке
+ Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии
+ Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке
+ Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда
+ СвойстваНастройки.ВводСписком = Истина;
+ Если ЭтоБыстраяНастройка Тогда
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
+ Иначе
+ СвойстваНастройки.Шаблон = "СписокСПодбором";
+ Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке
+ Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда
+ ЭлементЗаголовок = ЭлементЗаголовок + " (" + НСтр("ru = 'за исключением выбранных'") + ")";
+ КонецЕсли;
+ КонецЕсли;
+ СвойстваНастройки.Вставить("ВыборГруппИЭлементов", ГруппыИЭлементы.ГруппыИЭлементы);
+ Иначе
+ СвойстваНастройки.Шаблон = "ПолеВвода";
+ Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Тогда
+ НастройкиСВидомСравненияРавно.Вставить(ИдентификаторЭлемента, Истина);
+ КонецЕсли;
+ Если ПользовательскаяНастройка.ВидСравнения <> ВидСравненияКомпоновкиДанных.Равно
+ И ПользовательскаяНастройка.ВидСравнения <> ВидСравненияКомпоновкиДанных.Содержит Тогда
+ ЭлементЗаголовок = ЭлементЗаголовок + " (" + НРег(Строка(ПользовательскаяНастройка.ВидСравнения)) + ")";
+ КонецЕсли;
+ Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии
+ Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии Тогда
+ СвойстваНастройки.Вставить("ВыборГруппИЭлементов", ГруппыИЭлементы.Группы);
+ КонецЕсли;
+ КонецЕсли;
+
+ АнализТиповИСвязей(ИдентификаторЭлемента, СвойстваНастройки, СоответствиеИменОбъектовМетаданных, Связи); // Определение типа значения настройки.
+
+ ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных.Вставить(СвойстваНастройки.ВариантаСКД.ЛевоеЗначение, ИдентификаторЭлемента);
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками";
+ СвойстваНастройки.Иерархия = Истина;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+
+ СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками";
+
+ Иначе
+
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
+
+ КонецЕсли;
+
+ // Определение группы для вывода.
+ Если ЭтоБыстраяНастройка Тогда
+ ГруппаВывода = ГруппыВывода.Быстрые;
+ Иначе
+ // Определение раздела.
+ КорневаяСтрокаДереваВарианта = Неопределено;
+ ТекущаяСтрока = СвойстваНастройки.СтрокаДерева;
+ Пока ТекущаяСтрока <> Неопределено Цикл
+ Если ЗначениеЗаполнено(ТекущаяСтрока.Заголовок) И ТекущаяСтрока.Настройка <> НастройкиКД Тогда
+ КорневаяСтрокаДереваВарианта = ТекущаяСтрока;
+ КонецЕсли;
+ ТекущаяСтрока = ТекущаяСтрока.Родитель;
+ КонецЦикла;
+ Если КорневаяСтрокаДереваВарианта = Неопределено Тогда // Раздел не найден. Вывод в основную часть.
+ Если СвойстваНастройки.Шаблон = "СписокСПодбором" Тогда
+ ГруппаВывода = ГруппыВывода.Основные;
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек"
+ Или СвойстваНастройки.Тип = "ЭлементОтбора"
+ Или СвойстваНастройки.Тип = "ФиксированныйОтбор" Тогда
+ ГруппаВывода = ГруппыВывода.Основные;
+ ИначеЕсли СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками" Тогда
+ // Действие не требуется, т.к. каждая таблица "падает" на свою закладку.
+ ИначеЕсли СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком" Тогда
+ ГруппаВывода = ГруппыВывода.ДополнительныеПодвал;
+ Иначе
+ ГруппаВывода = ГруппыВывода.ДополнительныеШапка;
+ КонецЕсли;
+ Иначе // Раздел найден. Вывод в группу на закладке "Дополнительно":
+ СвойстваНастройки.ВыводВЗакладке = Истина;
+ ЗаголовокЗакладки = КорневаяСтрокаДереваВарианта.Заголовок;
+ ГруппаВывода = ДополнительныеЗакладкиПоиск.Получить(ЗаголовокЗакладки);
+ Если ГруппаВывода = Неопределено Тогда
+ ГруппаВывода = Новый Структура("Порядок, Размер", Новый Массив, 0);
+ ГруппаВывода.Вставить("Заголовок", ЗаголовокЗакладки);
+ ГруппаВывода.Вставить("ИмяФлажка", "");
+ ГруппыВывода.ДополнительныеЗакладки.Добавить(ГруппаВывода, ЗаголовокЗакладки);
+ ДополнительныеЗакладкиПоиск.Вставить(ЗаголовокЗакладки, ГруппаВывода);
+ КонецЕсли;
+ Если СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками" Тогда // Вместо большой таблицы с флажками...
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком"; //... выводится поле ввода, связанное с СКД.
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Параметры выбора: условия, ограничения и список значений.
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек"
+ Или СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ // Значение списка.
+ Если СвойстваНастройки.ВводСписком Тогда
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ОтмеченныеЗначения = ЗначенияСписком(ПользовательскаяНастройка.Значение);
+ Иначе
+ ОтмеченныеЗначения = ЗначенияСписком(ПользовательскаяНастройка.ПравоеЗначение);
+ КонецЕсли;
+ СвойстваНастройки.Вставить("ОтмеченныеЗначения", ОтмеченныеЗначения);
+ КонецЕсли;
+
+ // Формирование параметров и текста запроса.
+ СвойстваНастройки.Вставить("ЗначенияДляВыбора", Новый СписокЗначений);
+ СвойстваНастройки.Вставить("ЗапросЗначенийВыбора", Новый Запрос);
+
+ Если ТипЗнч(СвойстваНастройки.ДоступнаяСКД.ДоступныеЗначения) = Тип("СписокЗначений") И СвойстваНастройки.ДоступнаяСКД.ДоступныеЗначения.Количество() > 0 Тогда
+ // Разработчик ограничил выбор списком доступных значений.
+ СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями = Истина;
+ Для Каждого ЭлементСписка Из СвойстваНастройки.ДоступнаяСКД.ДоступныеЗначения Цикл
+ ЗначениеВСКД = ЭлементСписка.Значение;
+ Если Не ЗначениеЗаполнено(ЭлементСписка.Представление)
+ И (ЗначениеВСКД = Неопределено
+ Или ЗначениеВСКД = Тип("Неопределено")
+ Или ЗначениеВСКД = Новый ОписаниеТипов("Неопределено")
+ Или Не ЗначениеЗаполнено(ЗначениеВСКД)) Тогда
+ Продолжить; // Запрет пустых значений.
+ КонецЕсли;
+ Если ТипЗнч(ЗначениеВСКД) = Тип("Тип") Тогда
+ МассивТипов = Новый Массив;
+ МассивТипов.Добавить(ЗначениеВСКД);
+ ЗначениеВФорме = Новый ОписаниеТипов(МассивТипов);
+ Иначе
+ ЗначениеВФорме = ЗначениеВСКД;
+ КонецЕсли;
+ ДобавитьУникальноеЗначениеВСписок(СвойстваНастройки.ЗначенияДляВыбора, ЗначениеВФорме, ЭлементСписка.Представление, Ложь);
+ КонецЦикла;
+ Иначе
+ Если Не СвойстваНастройки.ФлажокИспользование
+ И СвойстваНастройки.СодержитТипБулево
+ И СвойстваНастройки.КоличествоТипов = 1
+ И Не СвойстваНастройки.ВводСписком Тогда
+ СвойстваНастройки.Шаблон = "ТолькоФлажокЗначения"; // Замена поля "Да/Нет" на флажок.
+ КонецЕсли;
+ // Чтение сохраненных ранее настроек.
+ НастройкиСохраненныеРанее = ДополнительныеНастройкиЭлементов[ИдентификаторЭлемента];
+ Если НастройкиСохраненныеРанее <> Неопределено
+ И НастройкиСохраненныеРанее.Свойство("ЗначенияДляВыбора")
+ И ТипЗнч(НастройкиСохраненныеРанее.ЗначенияДляВыбора) = Тип("Массив") Тогда
+ // Фильтр выбранных если изменилось описание типов.
+ Если НастройкиСохраненныеРанее.Свойство("ОписаниеТипов")
+ И ТипЗнч(НастройкиСохраненныеРанее.ОписаниеТипов) = Тип("ОписаниеТипов")
+ И Не ОписанияТиповСовпадают(СвойстваНастройки.ОписаниеТипов, НастройкиСохраненныеРанее.ОписаниеТипов) Тогда
+ Количество = НастройкиСохраненныеРанее.ЗначенияДляВыбора.Количество();
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+ ЗначениеВФорме = НастройкиСохраненныеРанее.ЗначенияДляВыбора[ОбратныйИндекс];
+ Если СвойстваНастройки.ОписаниеТипов.СодержитТип(ТипЗнч(ЗначениеВФорме)) Тогда
+ ДобавитьУникальноеЗначениеВСписок(СвойстваНастройки.ЗначенияДляВыбора, ЗначениеВФорме, Неопределено, Ложь);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Текст для автоматического заполнения значений настройки.
+ Если СвойстваНастройки.КоличествоПеречислений > 0 Тогда
+ // Разработчик не ограничил выбор...
+ // И есть возможность автоматически заполнить список.
+ ШаблонЗапросаПеречислений = "ВЫБРАТЬ Ссылка ИЗ &ИмяПеречисления";
+ ТекстЗапроса = "";
+ Для Каждого ПеречислениеПолноеИмя Из СвойстваНастройки.Перечисления Цикл
+ Если ТекстЗапроса <> "" Тогда
+ ТекстЗапроса = ТекстЗапроса + Символы.ПС + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС + Символы.ПС;
+ КонецЕсли;
+ ТекстЗапроса = ТекстЗапроса + СтрЗаменить(ШаблонЗапросаПеречислений, "&ИмяПеречисления", ПеречислениеПолноеИмя);
+ КонецЦикла;
+ СвойстваНастройки.ЗапросЗначенийВыбора.Текст = ТекстЗапроса;
+ Если СвойстваНастройки.КоличествоПеречислений = СвойстваНастройки.КоличествоТипов Тогда
+ СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями = Истина; // Выбираются только значения перечислений.
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Механизмы расширения.
+ ФормаОтчетаПереопределяемый.ПриОпределенииПараметровВыбора(ЭтотОбъект, СвойстваНастройки); // Глобальные настройки вывода типов...
+ Если НастройкиОтчета.События.ПриОпределенииПараметровВыбора Тогда // ... можно переопределить локально для отчета.
+ Если ОтчетОбъект = Неопределено Тогда
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ КонецЕсли;
+ ОтчетОбъект.ПриОпределенииПараметровВыбора(ЭтотОбъект, СвойстваНастройки);
+ КонецЕсли;
+
+ // Автоматическое заполнение.
+ Если СвойстваНастройки.ЗапросЗначенийВыбора.Текст <> "" Тогда
+ ДобавляемыеЗначения = СвойстваНастройки.ЗапросЗначенийВыбора.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
+ Для Каждого ЗначениеВФорме Из ДобавляемыеЗначения Цикл
+ ДобавитьУникальноеЗначениеВСписок(СвойстваНастройки.ЗначенияДляВыбора, ЗначениеВФорме, Неопределено, Ложь);
+ КонецЦикла;
+ СвойстваНастройки.ЗначенияДляВыбора.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
+ КонецЕсли;
+
+ // Сохранение параметров выбора настройки в дополнительных свойствах пользовательских настроек.
+ НастройкиЭлемента = Новый Структура("ОписаниеТипов, ОграничиватьВыборУказаннымиЗначениями, ПараметрыВыбора");
+ ЗаполнитьЗначенияСвойств(НастройкиЭлемента, СвойстваНастройки);
+ НастройкиЭлемента.Вставить("ЗначенияДляВыбора", СвойстваНастройки.ЗначенияДляВыбора.ВыгрузитьЗначения());
+ НастройкиЭлемента.Вставить("ПредставлениеПоля", ЭлементЗаголовок);
+ ДополнительныеНастройкиЭлементов.Вставить(ИдентификаторЭлемента, НастройкиЭлемента);
+ КонецЕсли;
+
+ ЭлементВывода = Новый Структура("Размер, ИмяЭлемента1, ИмяЭлемента2");
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // Генератор
+
+ Если СвойстваНастройки.ВыводВЗакладке
+ И (СвойстваНастройки.Шаблон = "СписокСПодбором"
+ Или СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками") Тогда
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
+ КонецЕсли;
+
+ Если СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование" Или СвойстваНастройки.Шаблон = "ТолькоФлажокЗначения" Тогда
+
+ Если СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование" Тогда
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ДействиеПриИзменении = "Подключаемый_ФлажокИспользование_ПриИзменении";
+ Иначе
+ ФлажокИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
+ ДействиеПриИзменении = "Подключаемый_ПолеВвода_ПриИзменении";
+ КонецЕсли;
+
+ // Настройки вывода.
+ Если СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование"
+ И СвойстваНастройки.ВыводВЗакладке
+ И (СвойстваНастройки.Тип = "Группировка"
+ Или СвойстваНастройки.Тип = "Таблица"
+ Или СвойстваНастройки.Тип = "Диаграмма")
+ И ГруппаВывода.ИмяФлажка = ""
+ И СвойстваНастройки.СтрокаДерева = КорневаяСтрокаДереваВарианта Тогда
+
+ ГруппаВывода.ИмяФлажка = ФлажокИмя;
+
+ Иначе
+
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
+
+ КонецЕсли;
+
+ // Реквизиты.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
+
+ // Флажок.
+ ИспользованиеОтбора = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), ГруппаСортировки);
+ ИспользованиеОтбора.Вид = ВидПоляФормы.ПолеФлажка;
+ ИспользованиеОтбора.Заголовок = ЭлементЗаголовок;
+ ИспользованиеОтбора.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
+ ИспользованиеОтбора.УстановитьДействие("ПриИзменении", ДействиеПриИзменении);
+
+ // Значения.
+ Если СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование" Тогда
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
+ Иначе
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Значение);
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком" Тогда
+
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ЗначениеИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
+
+ // Настройки вывода.
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента2 = ЗначениеИмя;
+
+ Путь = ПутьПользовательскихНастроек + "[" + ИндексЭлемента + "]";
+
+ ИменаОсновныхРеквизитовФормы.Вставить(ИдентификаторЭлемента, ПутьПользовательскихНастроек + ".Элементы[" + ИндексЭлемента + "].Значение");
+ ИменаЭлементовДляУстановкиСвязей.Вставить(ИдентификаторЭлемента, ЗначениеИмя);
+ ИменаФлажковИспользование.Вставить(ИдентификаторЭлемента, ?(СвойстваНастройки.ФлажокИспользование, ФлажокИмя, ""));
+
+ // Группа с флажком.
+ Если СвойстваНастройки.ФлажокИспользование Тогда
+
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
+
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
+
+ // Флажок
+ ПолеФлажка = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), ГруппаСортировки);
+ ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
+ ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
+ ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
+ ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
+
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
+
+ КонецЕсли;
+
+ ПолеВвода = Элементы.Добавить(ЗначениеИмя, Тип("ПолеФормы"), ГруппаСортировки);
+ ПолеВвода.Вид = ВидПоляФормы.ПолеВвода;
+ ПолеВвода.Заголовок = ЭлементЗаголовок;
+ ПолеВвода.ПутьКДанным = Путь + ".Значение";
+ ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+
+ Если СвойстваНастройки.ВводСписком Тогда
+ ПолеВвода.УстановитьДействие("НачалоВыбора", "Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора");
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Шаблон = "СтандартныйПериод" Тогда
+
+ ГруппаИмя = СвойстваНастройки.Тип + "_Группа_" + ИдентификаторЭлемента;
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ВидПериодаИмя = СвойстваНастройки.Тип + "_Вид_" + ИдентификаторЭлемента;
+ ПериодЗначениеИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
+ ПериодПредставлениеИмя = СвойстваНастройки.Тип + "_Представление_" + ИдентификаторЭлемента;
+ ПериодНачалоИмя = СвойстваНастройки.Тип + "_Начало_" + ИдентификаторЭлемента;
+ ПериодОкончаниеИмя = СвойстваНастройки.Тип + "_Окончание_" + ИдентификаторЭлемента;
+ ДекорацияИмя = СвойстваНастройки.Тип + "_Декорация_" + ИдентификаторЭлемента;
+ СтраницыИмя = СвойстваНастройки.Тип + "_Страницы_" + ИдентификаторЭлемента;
+ СтраницаСтандартныйИмя = СвойстваНастройки.Тип + "_СтраницаСтандартный_" + ИдентификаторЭлемента;
+ СтраницаПроизвольныйИмя = СвойстваНастройки.Тип + "_СтраницаПроизвольный_" + ИдентификаторЭлемента;
+
+ // Настройки вывода.
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента2 = ГруппаИмя;
+
+ // Реквизиты.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ВидПериодаИмя, "ПеречислениеСсылка.ДоступныеПериодыОтчета");
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ПериодПредставлениеИмя, "Строка");
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ПериодЗначениеИмя, "СтандартныйПериод");
+
+ // Основная Группа
+ Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), ГруппаСортировки);
+ Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ Группа.Отображение = ОтображениеОбычнойГруппы.Нет;
+ Группа.ОтображатьЗаголовок = Ложь;
+ Группа.Заголовок = ЭлементЗаголовок;
+
+ Если СвойстваНастройки.ФлажокИспользование Тогда
+
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
+
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
+
+ // Флажок
+ ПолеФлажка = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), ГруппаСортировки);
+ ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
+ ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
+ ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
+ ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
+
+ // Значение флажка.
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
+
+ КонецЕсли;
+
+ // Вид периода - Элемент.
+ ВидПериодаЭлемент = Элементы.Добавить(ВидПериодаИмя, Тип("ПолеФормы"), Группа);
+ ВидПериодаЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+ ВидПериодаЭлемент.Заголовок = ЭлементЗаголовок;
+ ВидПериодаЭлемент.РежимВыбораИзСписка = Истина;
+ ВидПериодаЭлемент.РастягиватьПоГоризонтали = Ложь;
+ ВидПериодаЭлемент.Ширина = 11;
+ ВидПериодаЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ ВидПериодаЭлемент.УстановитьДействие("ПриИзменении", "Подключаемый_СтандартныйПериод_Вид_ПриИзменении");
+
+ // Вид периода - Список выбора.
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ МинимальнаяПериодичность = НастройкиОтчета.СоответствиеПериодичностиПараметров[СвойстваНастройки.ВариантаСКД.Параметр];
+ Иначе
+ МинимальнаяПериодичность = НастройкиОтчета.СоответствиеПериодичностиПараметров[СвойстваНастройки.ВариантаСКД.ЛевоеЗначение];
+ КонецЕсли;
+ Если МинимальнаяПериодичность = Неопределено Тогда
+ МинимальнаяПериодичность = Перечисления.ДоступныеПериодыОтчета.День;
+ КонецЕсли;
+
+ ДоступныеПериоды = ФункцииОтчетовКлиентСервер.ПолучитьСписокДоступныхПериодов();
+ Для Индекс = ДоступныеПериоды.Найти(МинимальнаяПериодичность) По ДоступныеПериоды.ВГраница() Цикл
+ ВидПериодаЭлемент.СписокВыбора.Добавить(ДоступныеПериоды[Индекс]);
+ КонецЦикла;
+
+ // Страницы.
+ ГруппаСтраниц = Элементы.Добавить(СтраницыИмя, Тип("ГруппаФормы"), Группа);
+ ГруппаСтраниц.Вид = ВидГруппыФормы.Страницы;
+ ГруппаСтраниц.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
+ ГруппаСтраниц.Ширина = 24;
+ ГруппаСтраниц.РастягиватьПоГоризонтали = Ложь;
+
+ // Страница СтандартныйПериод.
+ СтраницаСтандартныйПериод = Элементы.Добавить(СтраницаСтандартныйИмя, Тип("ГруппаФормы"), ГруппаСтраниц);
+ СтраницаСтандартныйПериод.Вид = ВидГруппыФормы.Страница;
+ СтраницаСтандартныйПериод.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ СтраницаСтандартныйПериод.ОтображатьЗаголовок = Ложь;
+
+ // Страница Произвольный.
+ СтраницаПроизвольныйПериод = Элементы.Добавить(СтраницаПроизвольныйИмя, Тип("ГруппаФормы"), ГруппаСтраниц);
+ СтраницаПроизвольныйПериод.Вид = ВидГруппыФормы.Страница;
+ СтраницаПроизвольныйПериод.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ СтраницаПроизвольныйПериод.ОтображатьЗаголовок = Ложь;
+
+ // Стандартный период.
+ Период = Элементы.Добавить(ПериодПредставлениеИмя, Тип("ПолеФормы"), СтраницаСтандартныйПериод);
+ Период.Вид = ВидПоляФормы.ПолеВвода;
+ Период.Заголовок = НСтр("ru = 'Период'");
+ Период.РастягиватьПоГоризонтали = Истина;
+ Период.КнопкаВыбора = Истина;
+ Период.КнопкаОткрытия = Ложь;
+ Период.КнопкаОчистки = Ложь;
+ Период.КнопкаРегулирования = Ложь;
+ Период.РедактированиеТекста = Ложь;
+ Период.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ Период.УстановитьДействие("Очистка", "Подключаемый_СтандартныйПериод_Значение_Очистка");
+ Период.УстановитьДействие("НачалоВыбора", "Подключаемый_СтандартныйПериод_Значение_НачалоВыбора");
+
+ // Начало произвольного периода
+ ПериодНачало = Элементы.Добавить(ПериодНачалоИмя, Тип("ПолеФормы"), СтраницаПроизвольныйПериод);
+ ПериодНачало.Вид = ВидПоляФормы.ПолеВвода;
+ ПериодНачало.РастягиватьПоГоризонтали = Истина;
+ ПериодНачало.КнопкаВыбора = Истина;
+ ПериодНачало.КнопкаОткрытия = Ложь;
+ ПериодНачало.КнопкаОчистки = Ложь;
+ ПериодНачало.КнопкаРегулирования = Ложь;
+ ПериодНачало.РедактированиеТекста = Истина;
+ ПериодНачало.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ ПериодНачало.УстановитьДействие("ПриИзменении", "Подключаемый_СтандартныйПериод_НачалоПериода_ПриИзменении");
+
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ПериодНачало.АвтоОтметкаНезаполненного = СвойстваНастройки.ДоступнаяСКД.ЗапрещатьНезаполненныеЗначения;
+ КонецЕсли;
+
+ Тире = Элементы.Добавить(ДекорацияИмя, Тип("ДекорацияФормы"), СтраницаПроизвольныйПериод);
+ Тире.Вид = ВидДекорацииФормы.Надпись;
+ Тире.Заголовок = "–";
+
+ // Окончание произвольного периода.
+ ПериодОкончание = Элементы.Добавить(ПериодОкончаниеИмя, Тип("ПолеФормы"), СтраницаПроизвольныйПериод);
+ ПериодОкончание.Вид = ВидПоляФормы.ПолеВвода;
+ ЗаполнитьЗначенияСвойств(ПериодОкончание, ПериодНачало, "РастягиватьПоГоризонтали, Ширина, ПоложениеЗаголовка,
+ |РедактированиеТекста, КнопкаВыбора, КнопкаОткрытия, КнопкаОчистки, КнопкаРегулирования, АвтоОтметкаНезаполненного");
+ ПериодОкончание.УстановитьДействие("ПриИзменении", "Подключаемый_СтандартныйПериод_КонецПериода_ПриИзменении");
+
+ // Значения.
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ Значение = ПользовательскаяНастройка.Значение;
+ Иначе
+ Значение = ПользовательскаяНастройка.ПравоеЗначение;
+ КонецЕсли;
+ НачалоПериода = Значение.ДатаНачала;
+ КонецПериода = Значение.ДатаОкончания;
+ ВидПериода = ФункцииОтчетовКлиентСервер.ПолучитьВидСтандартногоПериода(Значение, ВидПериодаЭлемент.СписокВыбора);
+ Представление = ФункцииОтчетовКлиентСервер.ПредставлениеСтандартногоПериода(Значение, ВидПериода);
+
+ СвойстваНастройки.Вставить("ПериодЗначениеИмя", ПериодЗначениеИмя);
+ СвойстваНастройки.Вставить("ВидПериодаИмя", ВидПериодаИмя);
+ СвойстваНастройки.Вставить("ПериодНачалоИмя", ПериодНачалоИмя);
+ СвойстваНастройки.Вставить("ПериодОкончаниеИмя", ПериодОкончаниеИмя);
+ СвойстваНастройки.Вставить("ПериодПредставлениеИмя", ПериодПредставлениеИмя);
+ СвойстваНастройки.Вставить("Значение", Значение);
+ СвойстваНастройки.Вставить("ВидПериода", ВидПериода);
+ СвойстваНастройки.Вставить("Представление", Представление);
+ ДобавленныеСтандартныеПериоды.Добавить(СвойстваНастройки);
+
+ // Активация страницы.
+ Если ВидПериода = Перечисления.ДоступныеПериодыОтчета.ПроизвольныйПериод Тогда
+ ГруппаСтраниц.ТекущаяСтраница = СтраницаПроизвольныйПериод;
+ Иначе
+ ГруппаСтраниц.ТекущаяСтраница = СтраницаСтандартныйПериод;
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Шаблон = "ПолеВвода" Тогда
+
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ЗначениеИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
+
+ // Настройки вывода.
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента2 = ЗначениеИмя;
+
+ ИменаОсновныхРеквизитовФормы.Вставить(ИдентификаторЭлемента, ЗначениеИмя);
+ ИменаЭлементовДляУстановкиСвязей.Вставить(ИдентификаторЭлемента, ЗначениеИмя);
+ ИменаФлажковИспользование.Вставить(ИдентификаторЭлемента, ?(СвойстваНастройки.ФлажокИспользование, ФлажокИмя, ""));
+
+ // Группа с флажком.
+ Если СвойстваНастройки.ФлажокИспользование Тогда
+
+ // Настройки вывода.
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
+
+ // Регистрация реквизита формы.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
+
+ // Флажок
+ ПолеФлажка = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), ГруппаСортировки);
+ ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
+ ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
+ ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
+ ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
+
+ // Значение флажка.
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
+
+ КонецЕсли;
+
+ // Регистрация реквизита формы.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ЗначениеИмя, СвойстваНастройки.ОписаниеТипов);
+
+ // Поле ввода.
+ ПолеВвода = Элементы.Добавить(ЗначениеИмя, Тип("ПолеФормы"), ГруппаСортировки);
+ ПолеВвода.Вид = ВидПоляФормы.ПолеВвода;
+ ПолеВвода.Заголовок = ЭлементЗаголовок;
+ ПолеВвода.КнопкаОткрытия = Ложь;
+ ПолеВвода.КнопкаРегулирования = Ложь;
+ ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ ПолеВвода.УстановитьДействие("ПриИзменении", "Подключаемый_ПолеВвода_ПриИзменении");
+
+ ЗаполнитьЗначенияСвойств(ПолеВвода, СвойстваНастройки.ДоступнаяСКД, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования");
+
+ Если СвойстваНастройки.Свойство("ВыборГруппИЭлементов") Тогда
+ ПолеВвода.ВыборГруппИЭлементов = СвойстваНастройки.ВыборГруппИЭлементов;
+ Иначе
+ ПолеВвода.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(СвойстваНастройки.ДоступнаяСКД.ВыборГруппИЭлементов);
+ КонецЕсли;
+
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ПолеВвода.АвтоОтметкаНезаполненного = СвойстваНастройки.ДоступнаяСКД.ЗапрещатьНезаполненныеЗначения;
+ КонецЕсли;
+
+ // Поля ввода следующих типов не растягиваются по горизонтали и не имеют кнопки очистки:
+ // Дата, Булево, Число, Тип.
+ ПолеВвода.КнопкаОчистки = СвойстваНастройки.СодержитДругиеТипы;
+ ПолеВвода.РастягиватьПоГоризонтали = СвойстваНастройки.СодержитДругиеТипы;
+ Для Каждого ЭлементСпискаВФорме Из СвойстваНастройки.ЗначенияДляВыбора Цикл
+ ЗаполнитьЗначенияСвойств(ПолеВвода.СписокВыбора.Добавить(), ЭлементСпискаВФорме);
+ КонецЦикла;
+ Если СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ПолеВвода.РежимВыбораИзСписка = Истина;
+ ПолеВвода.КнопкаСоздания = Ложь;
+ ПолеВвода.РастягиватьПоГоризонтали = Истина;
+ КонецЕсли;
+
+ // Фиксированные параметры выбора.
+ Если СвойстваНастройки.Свойство("ПараметрыВыбора") Тогда
+ ПолеВвода.ПараметрыВыбора = Новый ФиксированныйМассив(СвойстваНастройки.ПараметрыВыбора);
+ КонецЕсли;
+
+ // Значение реквизита.
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ Значение = ПользовательскаяНастройка.Значение;
+ Иначе
+ Значение = ПользовательскаяНастройка.ПравоеЗначение;
+ КонецЕсли;
+ Если ТипЗнч(Значение) = Тип("СтандартнаяДатаНачала") Тогда
+ Значение = Дата(Значение);
+ ИначеЕсли ТипЗнч(Значение) = Тип("Тип") Тогда
+ МассивТипов = Новый Массив;
+ МассивТипов.Добавить(Значение);
+ Значение = Новый ОписаниеТипов(МассивТипов);
+ КонецЕсли;
+ ДобавленныеПоляВвода.Вставить(ЗначениеИмя, Значение);
+
+ ИначеЕсли СвойстваНастройки.Шаблон = "СписокСПодбором" Тогда
+
+ ГруппаИмя = СвойстваНастройки.Тип + "_Группа_" + ИдентификаторЭлемента;
+ ГруппаЗаголовокИмя = СвойстваНастройки.Тип + "_ГруппаЗаголовка_" + ИдентификаторЭлемента;
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ДекорацияИмя = СвойстваНастройки.Тип + "_Декорация_" + ИдентификаторЭлемента;
+ ТаблицаИмя = СвойстваНастройки.Тип + "_СписокЗначений_" + ИдентификаторЭлемента;
+ ГруппаКолонокИмя = СвойстваНастройки.Тип + "_ГруппаКолонок_" + ИдентификаторЭлемента;
+ КолонкаИспользованиеИмя = СвойстваНастройки.Тип + "_Колонка_Использование_" + ИдентификаторЭлемента;
+ КолонкаЗначениеИмя = СвойстваНастройки.Тип + "_Колонка_Значение_" + ИдентификаторЭлемента;
+ КоманднаяПанельИмя = СвойстваНастройки.Тип + "_КоманднаяПанель_" + ИдентификаторЭлемента;
+ КнопкаПодборИмя = СвойстваНастройки.Тип + "_Подбор_" + ИдентификаторЭлемента;
+ КнопкаВставитьИмя = СвойстваНастройки.Тип + "_ВставитьИзБуфера_" + ИдентификаторЭлемента;
+
+ // Настройки вывода.
+ ЭлементВывода.Размер = 5;
+ ЭлементВывода.ИмяЭлемента1 = ГруппаИмя;
+
+ ИменаОсновныхРеквизитовФормы.Вставить(ИдентификаторЭлемента, ТаблицаИмя);
+ ИменаЭлементовДляУстановкиСвязей.Вставить(ИдентификаторЭлемента, КолонкаЗначениеИмя);
+ ИменаФлажковИспользование.Вставить(ИдентификаторЭлемента, ?(СвойстваНастройки.ФлажокИспользование, ФлажокИмя, ""));
+
+ // Добавление основной группы
+ Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), ГруппаСортировки);
+ Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ Группа.Отображение = ОтображениеОбычнойГруппы.Нет;
+ Группа.Заголовок = ЭлементЗаголовок;
+ Группа.ОтображатьЗаголовок = Ложь;
+
+ // Группа-строка для заголовка и командной панели таблицы.
+ Если СвойстваНастройки.ФлажокИспользование И СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ГруппаЗаголовокТаблицы = Группа;
+ Иначе
+ ГруппаЗаголовокТаблицы = Элементы.Добавить(ГруппаЗаголовокИмя, Тип("ГруппаФормы"), Группа);
+ ГруппаЗаголовокТаблицы.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ГруппаЗаголовокТаблицы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ ГруппаЗаголовокТаблицы.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ГруппаЗаголовокТаблицы.ОтображатьЗаголовок = Ложь;
+ КонецЕсли;
+
+ // Флажок.
+ Если СвойстваНастройки.ФлажокИспользование Тогда
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
+
+ ПолеФлажка = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), ГруппаЗаголовокТаблицы);
+ ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
+ ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
+ ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
+ ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
+
+ // Значение флажка
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
+ КонецЕсли;
+
+ // Заголовок / Пустая декорация.
+ Если Не СвойстваНастройки.ФлажокИспользование Или Не СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ПустаяДекорация = Элементы.Добавить(ДекорацияИмя, Тип("ДекорацияФормы"), ГруппаЗаголовокТаблицы);
+ ПустаяДекорация.Вид = ВидДекорацииФормы.Надпись;
+ ПустаяДекорация.Заголовок = ?(СвойстваНастройки.ФлажокИспользование, " ", ЭлементЗаголовок + ":");
+ ПустаяДекорация.РастягиватьПоГоризонтали = Истина;
+ КонецЕсли;
+
+ // Подбор.
+ Если Не СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ТаблицаКоманднаяПанель = Элементы.Добавить(КоманднаяПанельИмя, Тип("ГруппаФормы"), ГруппаЗаголовокТаблицы);
+ ТаблицаКоманднаяПанель.Вид = ВидГруппыФормы.КоманднаяПанель;
+ ТаблицаКоманднаяПанель.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;
+ ТаблицаКоманднаяПанель.РастягиватьПоГоризонтали = Ложь;
+ ТаблицаКоманднаяПанель.Ширина = 0;
+
+ Если СвойстваНастройки.СодержитСсылочныеТипы Тогда
+ КомандаПодбор = Команды.Добавить(КнопкаПодборИмя);
+ КомандаПодбор.Действие = "Подключаемый_СписокСПодбором_Подбор";
+ КомандаПодбор.Заголовок = НСтр("ru = 'Подбор'");
+ КомандаПодбор.Отображение = ОтображениеКнопки.Текст;
+ Иначе
+ КомандаПодбор = Команды.Добавить(КнопкаПодборИмя);
+ КомандаПодбор.Действие = "Подключаемый_СписокСПодбором_Добавить";
+ КомандаПодбор.Заголовок = НСтр("ru = 'Добавить'");
+ КомандаПодбор.Отображение = ОтображениеКнопки.Текст;
+ КомандаПодбор.Картинка = БиблиотекаКартинок.СоздатьЭлементСписка;
+ КонецЕсли;
+
+ КнопкаПодбор = Элементы.Добавить(КнопкаПодборИмя, Тип("КнопкаФормы"), ТаблицаКоманднаяПанель);
+ КнопкаПодбор.ИмяКоманды = КнопкаПодборИмя;
+
+ Если ЕстьЗагрузкаДанныхИзФайла Тогда
+ КомандаВставить = Команды.Добавить(КнопкаВставитьИмя);
+ КомандаВставить.Действие = "Подключаемый_СписокСПодбором_ВставитьИзБуфера";
+ КомандаВставить.Заголовок = НСтр("ru = 'Вставить из буфера обмена...'");
+ КомандаВставить.Картинка = БиблиотекаКартинок.ЗаполнитьФорму;
+ КомандаВставить.Отображение = ОтображениеКнопки.Картинка;
+
+ КнопкаВставить = Элементы.Добавить(КнопкаВставитьИмя, Тип("КнопкаФормы"), ТаблицаКоманднаяПанель);
+ КнопкаВставить.ИмяКоманды = КнопкаВставитьИмя;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Таблица.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя, "СписокЗначений");
+
+ ТаблицаФормы = Элементы.Добавить(ТаблицаИмя, Тип("ТаблицаФормы"), Группа);
+ ТаблицаФормы.Отображение = ОтображениеТаблицы.Список;
+ ТаблицаФормы.Заголовок = ЭлементЗаголовок;
+ ТаблицаФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
+ ТаблицаФормы.ВертикальныеЛинии = Ложь;
+ ТаблицаФормы.ГоризонтальныеЛинии = Ложь;
+ ТаблицаФормы.Шапка = Ложь;
+ ТаблицаФормы.Подвал = Ложь;
+ ТаблицаФормы.ИзменятьПорядокСтрок = Истина;
+ ТаблицаФормы.РастягиватьПоГоризонтали = Истина;
+ ТаблицаФормы.РастягиватьПоВертикали = Истина;
+ ТаблицаФормы.Высота = 3;
+
+ // Группа колонок "в ячейке".
+ ГруппаКолонок = Элементы.Добавить(ГруппаКолонокИмя, Тип("ГруппаФормы"), ТаблицаФормы);
+ ГруппаКолонок.Вид = ВидГруппыФормы.ГруппаКолонок;
+ ГруппаКолонок.Группировка = ГруппировкаКолонок.ВЯчейке;
+
+ // Колонка "Использование".
+ КолонкаИспользованиеЭлемент = Элементы.Добавить(КолонкаИспользованиеИмя, Тип("ПолеФормы"), ГруппаКолонок);
+ КолонкаИспользованиеЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
+
+ // Колонка "Значение".
+ КолонкаЗначениеЭлемент = Элементы.Добавить(КолонкаЗначениеИмя, Тип("ПолеФормы"), ГруппаКолонок);
+ КолонкаЗначениеЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+
+ ЗаполнитьЗначенияСвойств(КолонкаЗначениеЭлемент, СвойстваНастройки.ДоступнаяСКД, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования");
+
+ Если СвойстваНастройки.Свойство("ВыборГруппИЭлементов") Тогда
+ КолонкаЗначениеЭлемент.ВыборГруппИЭлементов = СвойстваНастройки.ВыборГруппИЭлементов;
+ Иначе
+ КолонкаЗначениеЭлемент.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(СвойстваНастройки.ДоступнаяСКД.ВыборГруппИЭлементов);
+ КонецЕсли;
+
+ Если СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ КолонкаЗначениеЭлемент.ТолькоПросмотр = Истина;
+ КонецЕсли;
+
+ // Заполнение имен объектов метаданных в разрезах типов и идентификаторов элементов (для предустановленных).
+ // Используется при клике по кнопке "Подбор" для получения имени формы подбора.
+ Если ЗначениеЗаполнено(КолонкаЗначениеЭлемент.ФормаВыбора) Тогда
+ СоответствиеИменОбъектовМетаданных.Вставить(ИдентификаторЭлемента, КолонкаЗначениеЭлемент.ФормаВыбора);
+ КонецЕсли;
+
+ // Фиксированные параметры выбора.
+ Если СвойстваНастройки.Свойство("ПараметрыВыбора") Тогда
+ КолонкаЗначениеЭлемент.ПараметрыВыбора = Новый ФиксированныйМассив(СвойстваНастройки.ПараметрыВыбора);
+ КонецЕсли;
+
+ Если Не СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ СоответствиеХранимыхСписковВыбора.Вставить(ИдентификаторЭлемента, ТаблицаИмя);
+ КонецЕсли;
+
+ СвойстваНастройки.Вставить("ИмяТаблицы", ТаблицаИмя);
+ СвойстваНастройки.Вставить("ИмяКолонкиЗначение", КолонкаЗначениеИмя);
+ СвойстваНастройки.Вставить("ИмяКолонкиИспользование", КолонкаИспользованиеИмя);
+ ДобавленныеСпискиЗначений.Добавить(СвойстваНастройки);
+
+ ИначеЕсли СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками" Тогда
+
+ ГруппаИмя = СвойстваНастройки.Тип + "_Группа_" + ИдентификаторЭлемента;
+ ТаблицаИмя = СвойстваНастройки.Тип + "_Таблица_" + ИдентификаторЭлемента;
+ КолонкаИспользованиеИмя = СвойстваНастройки.Тип + "_КолонкаИспользование_" + ИдентификаторЭлемента;
+ КолонкаПредставлениеИмя = СвойстваНастройки.Тип + "_КолонкаПредставление_" + ИдентификаторЭлемента;
+ КолонкаПорядокИмя = СвойстваНастройки.Тип + "_КолонкаПорядок_" + ИдентификаторЭлемента;
+ КоманднаяПанельИмя = СвойстваНастройки.Тип + "_КоманднаяПанель_" + ИдентификаторЭлемента;
+ КомандаПереместитьВверхИмя = СвойстваНастройки.Тип + "_Команда_ПереместитьВверх_" + ИдентификаторЭлемента;
+ КомандаПереместитьВнизИмя = СвойстваНастройки.Тип + "_Команда_ПереместитьВниз_" + ИдентификаторЭлемента;
+ КомандаСортироватьПоВозрастаниюИмя = СвойстваНастройки.Тип + "_Команда_СортироватьПоВозрастанию_" + ИдентификаторЭлемента;
+ КомандаСортироватьПоУбываниюИмя = СвойстваНастройки.Тип + "_Команда_СортироватьПоУбыванию_" + ИдентификаторЭлемента;
+
+ // Реквизиты.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя, "ТаблицаЗначений");
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Идентификатор", "Строка");
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Использование", "Булево");
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Представление", "Строка");
+
+ Если СвойстваНастройки.Тип = "Порядок" Тогда
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Направление", "НаправлениеСортировкиКомпоновкиДанных");
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".ЭтоГруппа", "Булево");
+ КонецЕсли;
+
+ // Группы и элементы
+ Группа = Элементы.Вставить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.СтраницыНастроек, Элементы.СтраницаДополнительно);
+ Группа.Вид = ВидГруппыФормы.Страница;
+ Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ Группа.Заголовок = ЭлементЗаголовок;
+ Если СвойстваНастройки.Тип = "Порядок" Тогда
+ Группа.Картинка = БиблиотекаКартинок.ПорядокКомпоновкиДанных;
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+ Группа.Картинка = БиблиотекаКартинок.ВыборКомпоновкиДанных;
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+ Группа.Картинка = БиблиотекаКартинок.ПоляГруппировкиКомпоновкиДанных;
+ КонецЕсли;
+
+ ТаблицаФормы = Элементы.Добавить(ТаблицаИмя, Тип("ТаблицаФормы"), Группа);
+ ТаблицаФормы.Отображение = ОтображениеТаблицы.Список;
+ ТаблицаФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
+ ТаблицаФормы.ВертикальныеЛинии = Ложь;
+ ТаблицаФормы.ГоризонтальныеЛинии = Ложь;
+ ТаблицаФормы.Шапка = Ложь;
+ ТаблицаФормы.Подвал = Ложь;
+ ТаблицаФормы.ИзменятьПорядокСтрок = Истина;
+ ТаблицаФормы.РастягиватьПоГоризонтали = Истина;
+ ТаблицаФормы.РастягиватьПоВертикали = Истина;
+ ТаблицаФормы.Высота = 3;
+ ТаблицаФормы.ИзменятьСоставСтрок = Ложь;
+ ТаблицаФормы.ИзменятьПорядокСтрок = Ложь;
+ ТаблицаФормы.РежимВыделения = РежимВыделенияТаблицы.Одиночный;
+
+ КолонкаИспользование = Элементы.Добавить(КолонкаИспользованиеИмя, Тип("ПолеФормы"), ТаблицаФормы);
+ КолонкаИспользование.Вид = ВидПоляФормы.ПолеФлажка;
+ КолонкаИспользование.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
+ КолонкаИспользование.УстановитьДействие("ПриИзменении", "Подключаемый_ТаблицаПорядка_КолонкаИспользование_ПриИзменении");
+
+ КолонкаПредставление = Элементы.Добавить(КолонкаПредставлениеИмя, Тип("ПолеФормы"), ТаблицаФормы);
+ КолонкаПредставление.Вид = ВидПоляФормы.ПолеВвода;
+ КолонкаПредставление.ТолькоПросмотр = Истина;
+
+ // Командная панель
+ ТаблицаКоманднаяПанель = Элементы.Добавить(КоманднаяПанельИмя, Тип("ГруппаФормы"), Группа);
+ ТаблицаКоманднаяПанель.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ТаблицаКоманднаяПанель.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ТаблицаКоманднаяПанель.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ТаблицаКоманднаяПанель.ОтображатьЗаголовок = Ложь;
+
+ // Команды
+ КомандаПереместитьВверх = Команды.Добавить(КомандаПереместитьВверхИмя);
+ КомандаПереместитьВверх.Действие = "Подключаемый_ТаблицаПорядка_ПереместитьВверх";
+ КомандаПереместитьВверх.Картинка = БиблиотекаКартинок.ПереместитьВверх;
+ КомандаПереместитьВверх.Отображение = ОтображениеКнопки.Картинка;
+
+ КомандаПереместитьВниз = Команды.Добавить(КомандаПереместитьВнизИмя);
+ КомандаПереместитьВниз.Действие = "Подключаемый_ТаблицаПорядка_ПереместитьВниз";
+ КомандаПереместитьВниз.Картинка = БиблиотекаКартинок.ПереместитьВниз;
+ КомандаПереместитьВниз.Отображение = ОтображениеКнопки.Картинка;
+
+ // Кнопки
+ КнопкаПереместитьВверх = Элементы.Добавить(КомандаПереместитьВверхИмя, Тип("КнопкаФормы"), ТаблицаКоманднаяПанель);
+ КнопкаПереместитьВверх.ИмяКоманды = КомандаПереместитьВверхИмя;
+ КнопкаПереместитьВверх.Заголовок = НСтр("ru = 'Переместить строку вверх'");
+
+ КнопкаПереместитьВниз = Элементы.Добавить(КомандаПереместитьВнизИмя, Тип("КнопкаФормы"), ТаблицаКоманднаяПанель);
+ КнопкаПереместитьВниз.ИмяКоманды = КомандаПереместитьВнизИмя;
+ КнопкаПереместитьВниз.Заголовок = НСтр("ru = 'Переместить строку вниз'");
+
+ Если СвойстваНастройки.Тип = "Порядок" Тогда
+
+ КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Поднять приоритет сортировки по колонке'");
+ КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Понизить приоритет сортировки по колонке'");
+
+ КолонкаПорядок = Элементы.Добавить(КолонкаПорядокИмя, Тип("ПолеФормы"), ТаблицаФормы);
+ КолонкаПорядок.Вид = ВидПоляФормы.ПолеВвода;
+ КолонкаПорядок.ТолькоПросмотр = Истина;
+ //КолонкаПорядок.РастягиватьПоГоризонтали = Ложь;
+ //КолонкаПорядок.Ширина = 11;
+ КолонкаПорядок.ГиперссылкаЯчейки = Истина;
+
+ // Команды
+ КомандаПереместитьВверх = Команды.Добавить(КомандаСортироватьПоВозрастаниюИмя);
+ КомандаПереместитьВверх.Действие = "Подключаемый_ТаблицаПорядка_СортироватьПоВозрастанию";
+ КомандаПереместитьВверх.Картинка = БиблиотекаКартинок.СортироватьСписокПоВозрастанию;
+ КомандаПереместитьВверх.Отображение = ОтображениеКнопки.Картинка;
+
+ КомандаПереместитьВниз = Команды.Добавить(КомандаСортироватьПоУбываниюИмя);
+ КомандаПереместитьВниз.Действие = "Подключаемый_ТаблицаПорядка_СортироватьПоУбыванию";
+ КомандаПереместитьВниз.Картинка = БиблиотекаКартинок.СортироватьСписокПоУбыванию;
+ КомандаПереместитьВниз.Отображение = ОтображениеКнопки.Картинка;
+
+ // Кнопки
+ КнопкаПереместитьВверх = Элементы.Добавить(КомандаСортироватьПоВозрастаниюИмя, Тип("КнопкаФормы"), ТаблицаФормы.КонтекстноеМеню);
+ КнопкаПереместитьВверх.ИмяКоманды = КомандаСортироватьПоВозрастаниюИмя;
+ КнопкаПереместитьВверх.Заголовок = НСтр("ru = 'Сортировать по возрастанию'");
+
+ КнопкаПереместитьВниз = Элементы.Добавить(КомандаСортироватьПоУбываниюИмя, Тип("КнопкаФормы"), ТаблицаФормы.КонтекстноеМеню);
+ КнопкаПереместитьВниз.ИмяКоманды = КомандаСортироватьПоУбываниюИмя;
+ КнопкаПереместитьВниз.Заголовок = НСтр("ru = 'Сортировать по убыванию'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Переместить поле выше или левее'");
+ КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Переместить поле ниже или правее'");
+
+ // Условное оформление для групп
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+ ЭлементУсловногоОформления.Использование = Истина;
+
+ ОтборОформления = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ОтборОформления.Использование = Истина;
+ ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ТаблицаИмя + ".ЭтоГруппа");
+ ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ ОтборОформления.ПравоеЗначение = Истина;
+
+ ПолеОформление = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформление.Использование = Истина;
+ ПолеОформление.Поле = Новый ПолеКомпоновкиДанных(ТаблицаИмя);
+
+ ШрифтОформления = ЭлементУсловногоОформления.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Шрифт"));
+ ШрифтОформления.Значение = Новый Шрифт(ШрифтОформления.Значение, , , Истина, , Истина, );
+ ШрифтОформления.Использование = Истина;
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Переместить поле вверх'");
+ КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Переместить поле вниз'");
+
+ КонецЕсли;
+
+ // Значения.
+ СвойстваНастройки.Вставить("ИмяГруппы", ГруппаИмя);
+ СвойстваНастройки.Вставить("ИмяТаблицы", ТаблицаИмя);
+ СвойстваНастройки.Вставить("ИмяКолонкиИспользование", КолонкаИспользованиеИмя);
+ СвойстваНастройки.Вставить("ИмяКолонкиПредставление", КолонкаПредставлениеИмя);
+ СвойстваНастройки.Вставить("ИмяКолонкиПорядок", КолонкаПорядокИмя);
+ ДобавленныеТаблицыСФлажками.Добавить(СвойстваНастройки);
+
+ КонецЕсли;
+
+ Если ЭлементВывода.Размер <> Неопределено Тогда
+ Если ЭлементВывода.ИмяЭлемента1 = Неопределено Тогда // Заголовок
+ ЭлементВывода.ИмяЭлемента1 = СвойстваНастройки.Тип + "_Заголовок_" + ИдентификаторЭлемента;
+ ПолеНадписи = Элементы.Добавить(ЭлементВывода.ИмяЭлемента1, Тип("ДекорацияФормы"), Элементы.БыстрыеНастройки);
+ ПолеНадписи.Вид = ВидДекорацииФормы.Надпись;
+ ПолеНадписи.Заголовок = ЭлементЗаголовок + ":";
+ КонецЕсли;
+ Если СвойстваНастройки.Шаблон = "СтандартныйПериод" Тогда
+ ГруппаВывода.Порядок.Вставить(0, ЭлементВывода);
+ Иначе
+ ГруппаВывода.Порядок.Добавить(ЭлементВывода);
+ КонецЕсли;
+ ГруппаВывода.Размер = ГруппаВывода.Размер + ЭлементВывода.Размер;
+ КонецЕсли;
+
+ КонецЦикла;
+ КонецЦикла;
+
+ ВывестиПоПорядку(ГруппыВывода.Быстрые, Элементы.БыстрыеНастройки, 2, Ложь);
+ ВывестиПоПорядку(ГруппыВывода.Основные, Элементы.СтраницаГлавное, 2, Ложь);
+ ВывестиПоПорядку(ГруппыВывода.ДополнительныеШапка, Элементы.СтраницаДополнительноШапка, 1);
+ ВывестиПоПорядку(ГруппыВывода.ДополнительныеПодвал, Элементы.СтраницаДополнительноПодвал, 1);
+
+ НомерДополнительнойГруппы = 0;
+ Для Каждого ОписаниеЗакладки Из ГруппыВывода.ДополнительныеЗакладки Цикл
+ НомерДополнительнойГруппы = НомерДополнительнойГруппы + 1;
+ ГруппаВывода = ОписаниеЗакладки.Значение;
+
+ ГруппаИмя = "ГруппаНастроек_" + Строка(НомерДополнительнойГруппы);
+ КолонкиИмя = "ГруппаНастроек_Колонки_" + Строка(НомерДополнительнойГруппы);
+ ОтступИмя = "ГруппаНастроек_Отступ_" + Строка(НомерДополнительнойГруппы);
+
+ ТекущаяГруппа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.СтраницаДополнительноГруппировки);
+ ТекущаяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ТекущаяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ТекущаяГруппа.Заголовок = ГруппаВывода.Заголовок;
+ ТекущаяГруппа.Отображение = ОтображениеОбычнойГруппы.Нет;
+
+ Если ГруппаВывода.ИмяФлажка = "" Тогда
+ ТекущаяГруппа.ОтображатьЗаголовок = Истина;
+ Иначе
+ ТекущаяГруппа.ОтображатьЗаголовок = Ложь;
+ Флажок = Элементы[ГруппаВывода.ИмяФлажка];
+ Флажок.Заголовок = ГруппаВывода.Заголовок;
+ Элементы.Переместить(Флажок, ТекущаяГруппа);
+ КонецЕсли;
+
+ Если ГруппаВывода.Размер > 0 Тогда
+ Колонки = Элементы.Добавить(КолонкиИмя, Тип("ГруппаФормы"), ТекущаяГруппа);
+ Колонки.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ Колонки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ Колонки.Отображение = ОтображениеОбычнойГруппы.Нет;
+ Колонки.ОтображатьЗаголовок = Ложь;
+
+ Отступ = Элементы.Добавить(ОтступИмя, Тип("ДекорацияФормы"), Колонки);
+ Отступ.Вид = ВидДекорацииФормы.Надпись;
+ Отступ.Заголовок = " ";
+
+ ВывестиПоПорядку(ГруппаВывода, Колонки, 1);
+ КонецЕсли;
+ КонецЦикла;
+
+ // Удаление старых и добавление новых реквизитов.
+ Для Каждого КлючИЗначение Из ПараметрыЗаполнения.Реквизиты.Существующие Цикл
+ ПараметрыЗаполнения.Реквизиты.Удаляемые.Добавить(КлючИЗначение.Ключ);
+ КонецЦикла;
+ ИзменитьРеквизиты(ПараметрыЗаполнения.Реквизиты.Добавляемые, ПараметрыЗаполнения.Реквизиты.Удаляемые);
+
+ // Поля ввода (установка значений и связей).
+ Для Каждого КлючИЗначение Из ДобавленныеПоляВвода Цикл
+ ИмяРеквизита = КлючИЗначение.Ключ;
+ ЭтотОбъект[ИмяРеквизита] = КлючИЗначение.Значение;
+ Элементы[ИмяРеквизита].ПутьКДанным = ИмяРеквизита;
+ КонецЦикла;
+
+ // Стандартные периоды (установка значений и связей).
+ Для Каждого ОписаниеРеквизита Из ДобавленныеСтандартныеПериоды Цикл
+ ЭтотОбъект[ОписаниеРеквизита.ПериодЗначениеИмя] = ОписаниеРеквизита.Значение;
+ ЭтотОбъект[ОписаниеРеквизита.ВидПериодаИмя] = ОписаниеРеквизита.ВидПериода;
+ ЭтотОбъект[ОписаниеРеквизита.ПериодПредставлениеИмя] = ОписаниеРеквизита.Представление;
+ Элементы[ОписаниеРеквизита.ВидПериодаИмя].ПутьКДанным = ОписаниеРеквизита.ВидПериодаИмя;
+ Элементы[ОписаниеРеквизита.ПериодПредставлениеИмя].ПутьКДанным = ОписаниеРеквизита.ПериодПредставлениеИмя;
+ Элементы[ОписаниеРеквизита.ПериодНачалоИмя].ПутьКДанным = ОписаниеРеквизита.ПериодЗначениеИмя + ".ДатаНачала";
+ Элементы[ОписаниеРеквизита.ПериодОкончаниеИмя].ПутьКДанным = ОписаниеРеквизита.ПериодЗначениеИмя + ".ДатаОкончания";
+ КонецЦикла;
+
+ // Поля подбора (установка значений и связей).
+ Для Каждого СвойстваНастройки Из ДобавленныеСпискиЗначений Цикл
+ ИмяТаблицы = СвойстваНастройки.ИмяТаблицы;
+ ТаблицаФормы = Элементы[ИмяТаблицы];
+ КолонкаИспользование = Элементы[СвойстваНастройки.ИмяКолонкиИспользование];
+ КолонкаЗначение = Элементы[СвойстваНастройки.ИмяКолонкиЗначение];
+ СписокСФлажками = Новый СписокЗначений;
+
+ ТипНеопределено = Тип("Неопределено");
+ ОписаниеТиповНеопределено = Новый ОписаниеТипов("Неопределено");
+ Количество = СвойстваНастройки.ОтмеченныеЗначения.Количество();
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+ ЭлементСписка = СвойстваНастройки.ОтмеченныеЗначения[ОбратныйИндекс];
+ Значение = ЭлементСписка.Значение;
+ Если Не ЗначениеЗаполнено(ЭлементСписка.Представление)
+ И (Значение = Неопределено
+ Или Значение = ТипНеопределено
+ Или Значение = ОписаниеТиповНеопределено
+ Или Не ЗначениеЗаполнено(Значение)) Тогда
+ СвойстваНастройки.ОтмеченныеЗначения.Удалить(ОбратныйИндекс);
+ Продолжить; // Запрет пустых значений.
+ КонецЕсли;
+ Если ТипЗнч(Значение) = Тип("Тип") Тогда
+ МассивТипов = Новый Массив;
+ МассивТипов.Добавить(Значение);
+ Значение = Новый ОписаниеТипов(МассивТипов);
+ КонецЕсли;
+ Если СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями
+ И СвойстваНастройки.ЗначенияДляВыбора.НайтиПоЗначению(Значение) = Неопределено Тогда
+ СвойстваНастройки.ОтмеченныеЗначения.Удалить(ОбратныйИндекс);
+ Продолжить; // Выбранное значение не входит в список доступных для выбора.
+ КонецЕсли;
+ ДобавитьУникальноеЗначениеВСписок(СписокСФлажками, Значение, ЭлементСписка.Представление, Истина);
+ КонецЦикла;
+
+ Для Каждого ЭлементСписка Из СвойстваНастройки.ЗначенияДляВыбора Цикл
+ ДобавитьУникальноеЗначениеВСписок(СписокСФлажками, ЭлементСписка.Значение, Неопределено, Ложь);
+ КонецЦикла;
+
+ СписокСФлажками.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
+
+ ЭтотОбъект[ИмяТаблицы] = СписокСФлажками;
+ ЭтотОбъект[ИмяТаблицы].ТипЗначения = СвойстваНастройки.ОписаниеТипов;
+ ТаблицаФормы.ПутьКДанным = ИмяТаблицы;
+ КолонкаЗначение.ПутьКДанным = ИмяТаблицы + ".Значение";
+ КолонкаИспользование.ПутьКДанным = ИмяТаблицы + ".Пометка";
+
+ // Некоторые обработчики событий можно подключить только после установки связи элементов с данными.
+ ТаблицаФормы.УстановитьДействие("ПередНачаломИзменения", "Подключаемый_СписокСПодбором_ПередНачаломИзменения");
+ ТаблицаФормы.УстановитьДействие("ПередОкончаниемРедактирования", "Подключаемый_СписокСПодбором_ПередОкончаниемРедактирования");
+ ТаблицаФормы.УстановитьДействие("ПриИзменении", "Подключаемый_СписокСПодбором_ПриИзменении");
+ Если СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ТаблицаФормы.УстановитьДействие("ПередНачаломДобавления", "Подключаемый_ФиксированныйСписок_ПередНачаломДобавления");
+ ТаблицаФормы.УстановитьДействие("ПередУдалением", "Подключаемый_ФиксированныйСписок_ПередУдалением");
+ Иначе
+ ТаблицаФормы.УстановитьДействие("ОбработкаВыбора", "Подключаемый_СписокСПодбором_ОбработкаВыбора");
+ КонецЕсли;
+ КолонкаИспользование.УстановитьДействие("ПриИзменении", "Подключаемый_СписокСПодбором_Использование_ПриИзменении");
+ КонецЦикла;
+
+ // Установка значений и связей таблиц порядка с флажками.
+ Для Каждого СвойстваНастройки Из ДобавленныеТаблицыСФлажками Цикл
+ ПользовательскаяНастройка = СвойстваНастройки.ПользовательскаяСКД;
+ Таблица = ЭтотОбъект[СвойстваНастройки.ИмяТаблицы];
+ Таблица.Очистить();
+
+ Если СвойстваНастройки.Тип = "Порядок" Тогда
+
+ Для Каждого ЭлементПорядка Из ПользовательскаяНастройка.Элементы Цикл
+ Если ТипЗнч(ЭлементПорядка) = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
+ ДоступноеПоле = ФункцииОтчетовКлиентСервер.ПолучитьДоступноеПоле(НастройкиКД.ДоступныеПоляПорядка, ЭлементПорядка.Поле);
+ Если ДоступноеПоле = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ СтрокаПорядка = Таблица.Добавить();
+ СтрокаПорядка.Использование = ЭлементПорядка.Использование;
+ СтрокаПорядка.Идентификатор = ПользовательскаяНастройка.ПолучитьИдентификаторПоОбъекту(ЭлементПорядка);
+ СтрокаПорядка.Представление = ДоступноеПоле.Заголовок;
+ СтрокаПорядка.Направление = ЭлементПорядка.ТипУпорядочивания;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ ФункцииОтчетовКлиентСервер.ДобавитьЭлементыНастройки(
+ ЭтотОбъект,
+ Таблица,
+ ПользовательскаяНастройка,
+ ПользовательскаяНастройка,
+ Истина);
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ Для Каждого ЭлементСтруктуры Из ПользовательскаяНастройка.Структура Цикл
+ Представление = "";
+ Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных")
+ ИЛИ ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаТаблицыКомпоновкиДанных")
+ ИЛИ ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
+ Для Каждого ПолеГруппировки Из ЭлементСтруктуры.ПоляГруппировки.Элементы Цикл
+ Если НЕ ПолеГруппировки.Использование Тогда
+ Продолжить;
+ КонецЕсли;
+ ДоступноеПоле = ФункцииОтчетовКлиентСервер.ПолучитьДоступноеПоле(НастройкиКД.ДоступныеПоляГруппировок, ПолеГруппировки.Поле);
+ Если ДоступноеПоле = Неопределено Тогда
+ Представление = Строка(ПолеГруппировки.Поле);
+ ИначеЕсли ДоступноеПоле.Родитель <> Неопределено Тогда
+ Представление = Представление + СтрЗаменить(СтрЗаменить(ДоступноеПоле.Заголовок, ДоступноеПоле.Родитель.Заголовок, ""), ".", "")+ ", ";
+ ИНаче
+ Представление = Представление + ДоступноеПоле.Заголовок + ", ";
+ КонецЕсли;
+ КонецЦикла;
+ Представление = Лев(Представление, СтрДлина(Представление) - 2);
+ Иначе
+ Представление = НСтр("ru = 'Таблица / диаграмма'");
+ КонецЕсли;
+ СтрокиГруппировки = Таблица.Добавить();
+ СтрокиГруппировки.Идентификатор = ЭлементСтруктуры.ИдентификаторПользовательскойНастройки;
+ СтрокиГруппировки.Использование = ЭлементСтруктуры.Использование;
+ СтрокиГруппировки.Представление = Представление;
+ КонецЦикла;
+ КонецЕсли;
+
+ Если Таблица.Количество() = 0 Тогда
+ Элементы[СвойстваНастройки.ИмяГруппы].Видимость = Ложь;
+ Иначе
+ Элементы[СвойстваНастройки.ИмяТаблицы].ПутьКДанным = СвойстваНастройки.ИмяТаблицы;
+ Элементы[СвойстваНастройки.ИмяКолонкиИспользование].ПутьКДанным = СвойстваНастройки.ИмяТаблицы + ".Использование";
+ Элементы[СвойстваНастройки.ИмяКолонкиПредставление].ПутьКДанным = СвойстваНастройки.ИмяТаблицы + ".Представление";
+ Если СвойстваНастройки.Тип = "Порядок" Тогда
+ Элементы[СвойстваНастройки.ИмяКолонкиПорядок].ПутьКДанным = СвойстваНастройки.ИмяТаблицы + ".Направление";
+ Элементы[СвойстваНастройки.ИмяТаблицы].УстановитьДействие("Выбор", "Подключаемый_ТаблицаПорядка_Выбор");
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ // Регистрация связи параметров выбора (динамическая связь, отключаемая флажком Использование).
+ Найденные = Связи.ОбъектовМетаданных.НайтиСтроки(Новый Структура("ЕстьПодчиненные, ЕстьВедущие", Истина, Истина));
+ Для Каждого СтрокаТаблицы Из Найденные Цикл
+ ПодчиненныйИмяТипа = СтрЗаменить(СтрокаТаблицы.ПодчиненныйПолноеИмя, ".", "Ссылка.");
+ ВедущийИмяТипа = СтрЗаменить(СтрокаТаблицы.ВедущийПолноеИмя, ".", "Ссылка.");
+ Для Каждого ВедущийИдентификатор Из СтрокаТаблицы.ВедущийМассивИдентификаторов Цикл
+ // Если ведущий - отбор, который имеет вид сравнения не равно, тогда связь игнорируется.
+ Если НастройкиСВидомСравненияРавно.Получить(ВедущийИдентификатор) <> Истина Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ВсеСвязиВедущего = СоответствиеОтключаемыхСвязей.Получить(ВедущийИдентификатор);
+ Если ВсеСвязиВедущего = Неопределено Тогда
+ ВсеСвязиВедущего = Новый Структура;
+ КонецЕсли;
+ Если ВсеСвязиВедущего.Свойство("ПараметрыВыбораПодчиненныхПоТипуВедущего") Тогда
+ ПараметрыВыбораПодчиненныхПоТипуВедущего = ВсеСвязиВедущего.ПараметрыВыбораПодчиненныхПоТипуВедущего;
+ Иначе
+ ПараметрыВыбораПодчиненныхПоТипуВедущего = Новый Массив;
+ КонецЕсли;
+
+ ВедущийИдентификаторКД = СоответствиеПользовательскихНастроек.Получить(ВедущийИдентификатор);
+ ВедущийПользовательскаяНастройкаКД = ПользовательскиеНастройкиКД.ПолучитьОбъектПоИдентификатору(ВедущийИдентификаторКД);
+ Для Каждого ПодчиненныйИдентификатор Из СтрокаТаблицы.ПодчиненныйМассивИдентификаторов Цикл
+
+ // Если ведущий может отключаться (используется НЕ всегда),
+ // то связь регистрируется в таблице связей.
+ // Связь должна включаться/отключаться из события ПриИзменении флажка Использование
+ // Если связь типизирована по владельцу
+ // - владелец имеет несколько типов
+ // - связь задана для конкретного типа
+ // тогда связь должна включаться/отключаться также и из обработчика события ПриИзменении.
+ ОписаниеСвязи = Новый Структура;
+ ОписаниеСвязи.Вставить("ВедущийТип", СтрокаТаблицы.ВедущийТип);
+ ОписаниеСвязи.Вставить("ВедущийИмяРеквизита", ИменаОсновныхРеквизитовФормы[ВедущийИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИдентификатор", ПодчиненныйИдентификатор);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяРеквизита", ИменаОсновныхРеквизитовФормы[ПодчиненныйИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяЭлемента", ИменаЭлементовДляУстановкиСвязей[ПодчиненныйИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяПараметраФормы", "Отбор." + СтрокаТаблицы.ПодчиненныйРеквизит);
+ ОписаниеСвязи.Вставить("Действие", РежимИзмененияСвязанногоЗначения.НеИзменять);
+
+ ПараметрыВыбораПодчиненныхПоТипуВедущего.Добавить(ОписаниеСвязи);
+
+ // Если ведущий используется, тогда связь регистрируется в элементе подчиненного в соответствии с выбранным типом.
+ Если ВедущийПользовательскаяНастройкаКД.Использование
+ И ТипЗнч(ЭтотОбъект[ОписаниеСвязи.ВедущийИмяРеквизита]) = ОписаниеСвязи.ВедущийТип Тогда
+ ПодчиненныйЭлемент = Элементы.Найти(ОписаниеСвязи.ПодчиненныйИмяЭлемента);
+ Если ПодчиненныйЭлемент <> Неопределено Тогда
+ УстановитьСвязьПараметровВыбора(ПодчиненныйЭлемент, ОписаниеСвязи, Истина);
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ВсеСвязиВедущего.Вставить("ПараметрыВыбораПодчиненныхПоТипуВедущего", ПараметрыВыбораПодчиненныхПоТипуВедущего);
+ СоответствиеОтключаемыхСвязей.Вставить(ВедущийИдентификатор, ВсеСвязиВедущего);
+ КонецЦикла;
+ КонецЦикла;
+
+ ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных = Неопределено;
+
+ // Связи по типу
+ Для Каждого СтрокаТаблицы Из Связи.ПоТипу Цикл
+
+ ВедущийИдентификатор = ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных.Получить(СтрокаТаблицы.ВедущийПолеКД);
+ ПодчиненныйИдентификатор = СтрокаТаблицы.ПодчиненныйИдентификатор;
+ ПодчиненныйИмяЭлемента = ИменаЭлементовДляУстановкиСвязей[ПодчиненныйИдентификатор];
+ Если Не ЗначениеЗаполнено(ПодчиненныйИмяЭлемента) Тогда
+ Продолжить; // Подчиненный имеет такой вид сравнения ("Заполнено" или "Не заполнено"), при котором его связи отключаются.
+ КонецЕсли;
+ ПодчиненныйЭлемент = Элементы[ПодчиненныйИмяЭлемента];
+
+ Если ВедущийИдентификатор = Неопределено Тогда // Ведущий не выведен в настройки.
+
+ // Инициализация соответствия для быстрого поиска значений обычных настроек.
+ Если ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных = Неопределено Тогда
+ ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных = Новый Соответствие;
+ РекурсивныйАнализНастроекКД(Неопределено, ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных); // Заполнение соответствия.
+ КонецЕсли;
+
+ // Поиск значения ведущего.
+ ВедущийЗначение = ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных.Получить(СтрокаТаблицы.ВедущийПолеКД);
+ Если ВедущийЗначение = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ // Установка фиксированного ограничения типа.
+ МассивТипов = Новый Массив;
+ МассивТипов.Добавить(ТипЗнч(ВедущийЗначение));
+ ПодчиненныйЭлемент.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
+
+ Иначе // Ведущий выведен в быстрые настройки.
+
+ // Регистрация отключаемой связи ведущего с подчиненным (по типу).
+ ВсеСвязиВедущего = СоответствиеОтключаемыхСвязей.Получить(ВедущийИдентификатор);
+ Если ВсеСвязиВедущего = Неопределено Тогда
+ ВсеСвязиВедущего = Новый Структура;
+ КонецЕсли;
+ Если ВсеСвязиВедущего.Свойство("СвязиСПодчиненнымиПоТипу") Тогда
+ СвязиСПодчиненнымиПоТипу = ВсеСвязиВедущего.СвязиСПодчиненнымиПоТипу;
+ Иначе
+ СвязиСПодчиненнымиПоТипу = Новый Массив;
+ КонецЕсли;
+
+ ВедущийИдентификаторКД = СоответствиеПользовательскихНастроек.Получить(ВедущийИдентификатор);
+ ВедущийПользовательскаяНастройкаКД = ПользовательскиеНастройкиКД.ПолучитьОбъектПоИдентификатору(ВедущийИдентификаторКД);
+ Если ТипЗнч(ВедущийПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных")
+ И ВедущийПользовательскаяНастройкаКД.ВидСравнения <> ВидСравненияКомпоновкиДанных.ВСписке
+ И ВедущийПользовательскаяНастройкаКД.ВидСравнения <> ВидСравненияКомпоновкиДанных.Равно Тогда
+ Продолжить; // Ведущий имеет такой вид сравнения ("Заполнено" или "Не заполнено"), при котором его связи отключаются.
+ КонецЕсли;
+
+ ОписаниеСвязи = Новый Структура;
+ ОписаниеСвязи.Вставить("ВедущийИмяРеквизита", ИменаОсновныхРеквизитовФормы[ВедущийИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИдентификатор", ПодчиненныйИдентификатор);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяРеквизита", ИменаОсновныхРеквизитовФормы[ПодчиненныйИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяЭлемента", ПодчиненныйИмяЭлемента);
+ ОписаниеСвязи.Вставить("НомерСубконто", СтрокаТаблицы.НомерСубконто);
+
+ СвязиСПодчиненнымиПоТипу.Добавить(ОписаниеСвязи);
+
+ ВсеСвязиВедущего.Вставить("СвязиСПодчиненнымиПоТипу", СвязиСПодчиненнымиПоТипу);
+ СоответствиеОтключаемыхСвязей.Вставить(ВедущийИдентификатор, ВсеСвязиВедущего);
+
+ // Если ведущий используется, тогда связь регистрируется в элементе подчиненного в соответствии с выбранным типом.
+ Если ВедущийПользовательскаяНастройкаКД.Использование
+ И Элементы.Найти(ОписаниеСвязи.ВедущийИмяРеквизита) <> Неопределено Тогда
+ ПодчиненныйЭлемент.СвязьПоТипу = Новый СвязьПоТипу(ОписаниеСвязи.ВедущийИмяРеквизита, ОписаниеСвязи.НомерСубконто);
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ // Связи параметров выбора
+ Для Каждого СтрокаТаблицы Из Связи.ПараметровВыбора Цикл
+
+ ВедущийИдентификатор = ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных.Получить(СтрокаТаблицы.ВедущийПолеКД);
+ ПодчиненныйИдентификатор = СтрокаТаблицы.ПодчиненныйИдентификатор;
+ ПодчиненныйИмяЭлемента = ИменаЭлементовДляУстановкиСвязей[ПодчиненныйИдентификатор];
+ Если Не ЗначениеЗаполнено(ПодчиненныйИмяЭлемента) Тогда
+ Продолжить; // Подчиненный имеет такой вид сравнения ("Заполнено" или "Не заполнено"), при котором его связи отключаются.
+ КонецЕсли;
+ ПодчиненныйЭлемент = Элементы[ПодчиненныйИмяЭлемента];
+
+ Если ВедущийИдентификатор = Неопределено Тогда // Ведущий не выведен в быстрые настройки.
+
+ // Инициализация соответствия для быстрого поиска значений обычных настроек.
+ Если ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных = Неопределено Тогда
+ ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных = Новый Соответствие;
+ РекурсивныйАнализНастроекКД(Неопределено, ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных);
+ КонецЕсли;
+
+ // Поиск значения ведущего.
+ ВедущийЗначение = ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных.Получить(СтрокаТаблицы.ВедущийПолеКД);
+ Если ВедущийЗначение = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ // Установка фиксированного значения параметра подчиненного.
+ МассивТипов = Новый Массив;
+ МассивТипов.Добавить(ТипЗнч(ВедущийЗначение));
+ ПодчиненныйЭлемент.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
+
+ Иначе // Ведущий выведен в быстрые настройки.
+
+ // Регистрация отключаемой связи ведущего с подчиненными (параметров выбора).
+ ВсеСвязиВедущего = СоответствиеОтключаемыхСвязей.Получить(ВедущийИдентификатор);
+ Если ВсеСвязиВедущего = Неопределено Тогда
+ ВсеСвязиВедущего = Новый Структура;
+ КонецЕсли;
+ Если ВсеСвязиВедущего.Свойство("ПараметрыВыбораПодчиненных") Тогда
+ ПараметрыВыбораПодчиненных = ВсеСвязиВедущего.ПараметрыВыбораПодчиненных;
+ Иначе
+ ПараметрыВыбораПодчиненных = Новый Массив;
+ КонецЕсли;
+
+ ВедущийИдентификаторКД = СоответствиеПользовательскихНастроек.Получить(ВедущийИдентификатор);
+ ВедущийПользовательскаяНастройкаКД = ПользовательскиеНастройкиКД.ПолучитьОбъектПоИдентификатору(ВедущийИдентификаторКД);
+ Если ТипЗнч(ВедущийПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных")
+ И ВедущийПользовательскаяНастройкаКД.ВидСравнения <> ВидСравненияКомпоновкиДанных.ВСписке
+ И ВедущийПользовательскаяНастройкаКД.ВидСравнения <> ВидСравненияКомпоновкиДанных.Равно Тогда
+ Продолжить; // Ведущий имеет такой вид сравнения ("Заполнено" или "Не заполнено"), при котором его связи отключаются.
+ КонецЕсли;
+
+ ОписаниеСвязи = Новый Структура;
+ ОписаниеСвязи.Вставить("ВедущийИмяРеквизита", ИменаОсновныхРеквизитовФормы[ВедущийИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИдентификатор", ПодчиненныйИдентификатор);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяРеквизита", ИменаОсновныхРеквизитовФормы[ПодчиненныйИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяФлажка", ИменаФлажковИспользование[ПодчиненныйИдентификатор]);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяЭлемента", ПодчиненныйИмяЭлемента);
+ ОписаниеСвязи.Вставить("ПодчиненныйИмяПараметраФормы", СтрокаТаблицы.ПодчиненныйИмяПараметра);
+ ОписаниеСвязи.Вставить("Действие", СтрокаТаблицы.Действие);
+
+ ПараметрыВыбораПодчиненных.Добавить(ОписаниеСвязи);
+
+ ВсеСвязиВедущего.Вставить("ПараметрыВыбораПодчиненных", ПараметрыВыбораПодчиненных);
+ СоответствиеОтключаемыхСвязей.Вставить(ВедущийИдентификатор, ВсеСвязиВедущего);
+
+ // Если ведущий используется, тогда связь регистрируется в элементе подчиненного в соответствии с выбранным типом.
+ Если ВедущийПользовательскаяНастройкаКД.Использование Тогда
+ УстановитьСвязьПараметровВыбора(ПодчиненныйЭлемент, ОписаниеСвязи, Истина);
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ // Сохранение соответствий для быстрого поиска в данные формы.
+ БыстрыйПоискПользовательскихНастроек = Новый ФиксированноеСоответствие(СоответствиеПользовательскихНастроек);
+ БыстрыйПоискИменОбъектовМетаданных = Новый ФиксированноеСоответствие(СоответствиеИменОбъектовМетаданных);
+ БыстрыйПоискОтключаемыхСвязей = Новый ФиксированноеСоответствие(СоответствиеОтключаемыхСвязей);
+
+ ХранимыеСпискиВыбора = Новый ФиксированноеСоответствие(СоответствиеХранимыхСписковВыбора);
+
+ ПользовательскиеНастройкиКД.ДополнительныеСвойства.Вставить("ЭлементыФормы", ДополнительныеНастройкиЭлементов);
+КонецПроцедуры
+
+&НаСервере
+Процедура ВывестиПоПорядку(ГруппаВывода, Родитель, КоличествоКолонок, ГибкаяБалансировка = Истина)
+ Если ГибкаяБалансировка Тогда
+ Если ГруппаВывода.Размер <= 7 Тогда
+ КоличествоКолонок = 1;
+ КонецЕсли;
+ КонецЕсли;
+
+ РодительИмя = Родитель.Имя;
+
+ НомерКолонки = 0;
+ ОсталосьКолонок = КоличествоКолонок + 1;
+ ОсталосьМестаВсего = ГруппаВывода.Размер;
+ ОсталосьМестаВКолонке = 0;
+
+ Для Каждого ЭлементВывода Из ГруппаВывода.Порядок Цикл
+ Если ОсталосьКолонок > 0
+ И ЭлементВывода.Размер > ОсталосьМестаВКолонке*4 Тогда // Текущий шаг больше оставшегося места.
+ НомерКолонки = НомерКолонки + 1;
+ ОсталосьКолонок = ОсталосьКолонок - 1;
+ ОсталосьМестаВКолонке = ОсталосьМестаВсего/ОсталосьКолонок;
+
+ КолонкаВерхнегоУровня = Элементы.Добавить(РодительИмя + НомерКолонки, Тип("ГруппаФормы"), Элементы[РодительИмя]);
+ КолонкаВерхнегоУровня.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ КолонкаВерхнегоУровня.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ КолонкаВерхнегоУровня.Отображение = ОтображениеОбычнойГруппы.Нет;
+ КолонкаВерхнегоУровня.ОтображатьЗаголовок = Ложь;
+
+ НомерПодгруппы = 0;
+ ТекущаяГруппа1 = Неопределено;
+ ТекущаяГруппа2 = Неопределено;
+ КонецЕсли;
+
+ Если ЭлементВывода.ИмяЭлемента2 = Неопределено Тогда // Вывод в одну колонку.
+ Если ТекущаяГруппа2 <> Неопределено Тогда
+ ТекущаяГруппа2 = Неопределено;
+ КонецЕсли;
+ Элементы.Переместить(Элементы[ЭлементВывода.ИмяЭлемента1], КолонкаВерхнегоУровня);
+ Иначе
+ Если ТекущаяГруппа2 = Неопределено Тогда
+ НомерПодгруппы = НомерПодгруппы + 1;
+
+ Колонки = Элементы.Добавить(РодительИмя + НомерКолонки + "_" + НомерПодгруппы, Тип("ГруппаФормы"), КолонкаВерхнегоУровня);
+ Колонки.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ Колонки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ Колонки.Отображение = ОтображениеОбычнойГруппы.Нет;
+ Колонки.ОтображатьЗаголовок = Ложь;
+
+ ТекущаяГруппа1 = Элементы.Добавить(РодительИмя + НомерКолонки + "_" + НомерПодгруппы + "_1", Тип("ГруппаФормы"), Колонки);
+ ТекущаяГруппа1.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ТекущаяГруппа1.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ТекущаяГруппа1.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ТекущаяГруппа1.ОтображатьЗаголовок = Ложь;
+
+ ТекущаяГруппа2 = Элементы.Добавить(РодительИмя + НомерКолонки + "_" + НомерПодгруппы + "_2", Тип("ГруппаФормы"), Колонки);
+ ТекущаяГруппа2.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ТекущаяГруппа2.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ТекущаяГруппа2.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ТекущаяГруппа2.ОтображатьЗаголовок = Ложь;
+ КонецЕсли;
+ Элементы.Переместить(Элементы[ЭлементВывода.ИмяЭлемента1], ТекущаяГруппа1);
+ Элементы.Переместить(Элементы[ЭлементВывода.ИмяЭлемента2], ТекущаяГруппа2);
+ КонецЕсли;
+
+ ОсталосьМестаВсего = ОсталосьМестаВсего - ЭлементВывода.Размер;
+ ОсталосьМестаВКолонке = ОсталосьМестаВКолонке - ЭлементВывода.Размер;
+ КонецЦикла;
+КонецПроцедуры
+
+&НаСервере
+Процедура БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, РеквизитПолноеИмя, ТипРеквизита)
+ Если ТипЗнч(ТипРеквизита) = Тип("ОписаниеТипов") Тогда
+ ТипыДобавляемого = ТипРеквизита;
+ ИначеЕсли ТипЗнч(ТипРеквизита) = Тип("Строка") Тогда
+ ТипыДобавляемого = Новый ОписаниеТипов(ТипРеквизита);
+ ИначеЕсли ТипЗнч(ТипРеквизита) = Тип("Массив") Тогда
+ ТипыДобавляемого = Новый ОписаниеТипов(ТипРеквизита);
+ ИначеЕсли ТипЗнч(ТипРеквизита) = Тип("Тип") Тогда
+ МассивТипов = Новый Массив;
+ МассивТипов.Добавить(ТипРеквизита);
+ ТипыДобавляемого = Новый ОписаниеТипов(МассивТипов);
+ Иначе
+ Возврат;
+ КонецЕсли;
+
+ ТипыСуществующего = ПараметрыЗаполнения.Реквизиты.Существующие.Получить(РеквизитПолноеИмя);
+ Если ОписанияТиповСовпадают(ТипыСуществующего, ТипыДобавляемого) Тогда
+ ПараметрыЗаполнения.Реквизиты.Существующие.Удалить(РеквизитПолноеИмя);
+ Иначе
+ ПозицияТочки = Найти(РеквизитПолноеИмя, ".");
+ Если ПозицияТочки = 0 Тогда
+ ПутьКРеквизиту = "";
+ КраткоеИмяРеквизита = РеквизитПолноеИмя;
+ Иначе
+ ПутьКРеквизиту = Лев(РеквизитПолноеИмя, ПозицияТочки - 1);
+ КраткоеИмяРеквизита = Сред(РеквизитПолноеИмя, ПозицияТочки + 1);
+ КонецЕсли;
+
+ ПараметрыЗаполнения.Реквизиты.Добавляемые.Добавить(Новый РеквизитФормы(КраткоеИмяРеквизита, ТипыДобавляемого, ПутьКРеквизиту));
+ Если ТипыСуществующего <> Неопределено Тогда
+ ПараметрыЗаполнения.Реквизиты.Удаляемые.Добавить(РеквизитПолноеИмя);
+ ПараметрыЗаполнения.Реквизиты.Существующие.Удалить(РеквизитПолноеИмя);
+ КонецЕсли;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Функция ОписанияТиповСовпадают(ОписаниеТипов1, ОписаниеТипов2)
+ Если ОписаниеТипов1 = Неопределено Или ОписаниеТипов2 = Неопределено Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ Возврат ОписаниеТипов1 = ОписаниеТипов2
+ Или ОбщегоНазначения.ЗначениеВСтрокуXML(ОписаниеТипов1) = ОбщегоНазначения.ЗначениеВСтрокуXML(ОписаниеТипов2);
+КонецФункции
+
+&НаСервереБезКонтекста
+Процедура АнализТиповИСвязей(ИдентификаторЭлемента, СвойстваНастройки, ИменаОбъектовМетаданных, Связи)
+
+ КоличествоИзвестныхТипов = 0;
+
+ ИсходноеОписаниеТипов = СвойстваНастройки.ДоступнаяСКД.ТипЗначения;
+ ДобавляемыеТипы = Новый Массив;
+ ВычитаемыеТипы = Новый Массив;
+
+ СвойстваНастройки.Вставить("СодержитТипТип", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипДата", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипБулево", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипЧисло", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипПериод", Ложь);
+ СвойстваНастройки.Вставить("СодержитДругиеТипы", Ложь);
+ СвойстваНастройки.Вставить("СодержитСсылочныеТипы", Ложь);
+
+ СвойстваНастройки.Вставить("КоличествоТипов", 0);
+ СвойстваНастройки.Вставить("КоличествоПримитивныхТипов", 0);
+ СвойстваНастройки.Вставить("КоличествоПеречислений", 0);
+ СвойстваНастройки.Вставить("КоличествоПрочихСсылочныхТипов", 0);
+
+ СвойстваНастройки.Вставить("Перечисления", Новый Массив);
+
+ ДоступнаяНастройкаТипы = ИсходноеОписаниеТипов.Типы();
+ Для Каждого Тип Из ДоступнаяНастройкаТипы Цикл
+ Если Тип = Тип("ПолеКомпоновкиДанных") Тогда
+ ВычитаемыеТипы.Добавить(Тип);
+ Продолжить;
+ КонецЕсли;
+ СвойстваНастройки.КоличествоТипов = СвойстваНастройки.КоличествоТипов + 1;
+
+ Если Тип = Тип("Тип") Тогда
+ СвойстваНастройки.СодержитТипТип = Истина;
+ ДобавляемыеТипы.Добавить(Тип("ОписаниеТипов"));
+ ВычитаемыеТипы.Добавить(Тип("Тип"));
+ ИначеЕсли Тип = Тип("Дата") Тогда
+ СвойстваНастройки.СодержитТипДата = Истина;
+ СвойстваНастройки.КоличествоПримитивныхТипов = СвойстваНастройки.КоличествоПримитивныхТипов + 1;
+ ИначеЕсли Тип = Тип("Булево") Тогда
+ СвойстваНастройки.СодержитТипБулево = Истина;
+ СвойстваНастройки.КоличествоПримитивныхТипов = СвойстваНастройки.КоличествоПримитивныхТипов + 1;
+ ИначеЕсли Тип = Тип("Число") Тогда
+ СвойстваНастройки.СодержитТипЧисло = Истина;
+ СвойстваНастройки.КоличествоПримитивныхТипов = СвойстваНастройки.КоличествоПримитивныхТипов + 1;
+ ИначеЕсли Тип = Тип("СтандартныйПериод") Тогда
+ СвойстваНастройки.СодержитТипПериод = Истина;
+ Иначе
+ СвойстваНастройки.СодержитДругиеТипы = Истина;
+
+ ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
+ Если ОбъектМетаданных <> Неопределено Тогда
+ СвойстваНастройки.СодержитСсылочныеТипы = Истина;
+
+ ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
+
+ Если ВРег(Лев(ПолноеИмя, 13)) = "ПЕРЕЧИСЛЕНИЕ." Тогда
+ СвойстваНастройки.Перечисления.Добавить(ПолноеИмя);
+ СвойстваНастройки.КоличествоПеречислений = СвойстваНастройки.КоличествоПеречислений + 1;
+ Иначе
+ СвойстваНастройки.КоличествоПрочихСсылочныхТипов = СвойстваНастройки.КоличествоПрочихСсылочныхТипов + 1;
+ КонецЕсли;
+
+ // Регистрация имени объекта метаданных.
+ ИменаОбъектовМетаданных.Вставить(Тип, ПолноеИмя);
+
+ // Поиск типа в глобальных связях среди подчиненных.
+ Найденные = Связи.ОбъектовМетаданных.НайтиСтроки(Новый Структура("ПодчиненныйТип", Тип));
+ Для Каждого СтрокаТаблицы Из Найденные Цикл // Регистрация настройки как подчиненной.
+ СтрокаТаблицы.ЕстьПодчиненные = Истина;
+ СтрокаТаблицы.ПодчиненныйПолноеИмя = ПолноеИмя;
+ СтрокаТаблицы.ПодчиненныйМассивИдентификаторов.Добавить(ИдентификаторЭлемента);
+ КонецЦикла;
+
+ // Поиск типа в глобальных связях среди ведущих.
+ Найденные = Связи.ОбъектовМетаданных.НайтиСтроки(Новый Структура("ВедущийТип", Тип));
+ Для Каждого СтрокаТаблицы Из Найденные Цикл // Регистрация настройки как ведущей.
+ СтрокаТаблицы.ЕстьВедущие = Истина;
+ СтрокаТаблицы.ВедущийПолноеИмя = ПолноеИмя;
+ СтрокаТаблицы.ВедущийМассивИдентификаторов.Добавить(ИдентификаторЭлемента);
+ КонецЦикла;
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ОписаниеТипов = Новый ОписаниеТипов(ИсходноеОписаниеТипов, ДобавляемыеТипы, ВычитаемыеТипы);
+ СвойстваНастройки.Вставить("ОписаниеТипов", ОписаниеТипов);
+
+ ПараметрыВыбора = Новый Массив;
+
+ Если ЗначениеЗаполнено(СвойстваНастройки.ДоступнаяСКД.СвязьПоТипу) Тогда
+
+ СтрокаСвязи = Связи.ПоТипу.Добавить();
+ СтрокаСвязи.ПодчиненныйИдентификатор = ИдентификаторЭлемента;
+ СтрокаСвязи.ВедущийПолеКД = СвойстваНастройки.ДоступнаяСКД.СвязьПоТипу.Поле;
+ СтрокаСвязи.НомерСубконто = СвойстваНастройки.ДоступнаяСКД.СвязьПоТипу.ЭлементСвязи;
+
+ КонецЕсли;
+
+ Для Каждого СтрокаСвязи Из СвойстваНастройки.ДоступнаяСКД.ПолучитьСвязиПараметровВыбора() Цикл
+
+ Если Не ПустаяСтрока(Строка(СтрокаСвязи.Поле)) Тогда
+ СтрокаСвязиПараметров = Связи.ПараметровВыбора.Добавить();
+ СтрокаСвязиПараметров.ПодчиненныйИдентификатор = ИдентификаторЭлемента;
+ СтрокаСвязиПараметров.ПодчиненныйИмяПараметра = СтрокаСвязи.Имя;
+ СтрокаСвязиПараметров.ВедущийПолеКД = СтрокаСвязи.Поле;
+ СтрокаСвязиПараметров.Действие = СтрокаСвязи.ИзменениеЗначения;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Для Каждого ПараметрВыбораКД Из СвойстваНастройки.ДоступнаяСКД.ПолучитьПараметрыВыбора() Цикл
+ ПараметрыВыбора.Добавить(Новый ПараметрВыбора(ПараметрВыбораКД.Имя, ПараметрВыбораКД.Значение));
+ КонецЦикла;
+
+ Если ПараметрыВыбора.Количество() > 0 Тогда
+ СвойстваНастройки.Вставить("ПараметрыВыбора", ПараметрыВыбора);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервереБезКонтекста
+Процедура УстановитьСвязьПараметровВыбора(ПодчиненныйЭлемент, СтруктураСвязи, ВключитьСвязь)
+ Если ПустаяСтрока(СтруктураСвязи.ПодчиненныйИмяПараметраФормы) Тогда
+ Возврат;
+ КонецЕсли;
+ Если СтрЧислоВхождений(СтруктураСвязи.ПодчиненныйИмяПараметраФормы, ".") > 1 Тогда
+ Возврат; // Механика связей предъявляет особые требования: путь к данным может держать не более одной точки.
+ КонецЕсли;
+ Если СтрЧислоВхождений(СтруктураСвязи.ВедущийИмяРеквизита, ".") > 2 Тогда
+ Возврат; // Связи с СКД не поддерживаются.
+ КонецЕсли;
+
+ СвязьНайдена = Ложь;
+
+ МассивЭлементов = Новый Массив;
+ Для Каждого СвязьПараметра Из ПодчиненныйЭлемент.СвязиПараметровВыбора Цикл
+ Если СвязьПараметра.ПутьКДанным = СтруктураСвязи.ВедущийИмяРеквизита
+ И СвязьПараметра.Имя = СтруктураСвязи.ПодчиненныйИмяПараметраФормы
+ И СвязьПараметра.ИзменениеЗначения = СтруктураСвязи.Действие Тогда
+ Если ВключитьСвязь Тогда
+ Возврат; // Включать не требуется - связь найдена.
+ Иначе
+ СвязьНайдена = Истина;
+ КонецЕсли;
+ Иначе
+ МассивЭлементов.Добавить(СвязьПараметра);
+ КонецЕсли;
+ КонецЦикла;
+
+ Если Не ВключитьСвязь И Не СвязьНайдена Тогда
+ Возврат; // Отключать не требуется - связь не найдена.
+ КонецЕсли;
+
+ Если ВключитьСвязь Тогда
+ МассивЭлементов.Добавить(Новый СвязьПараметраВыбора(СтруктураСвязи.ПодчиненныйИмяПараметраФормы, СтруктураСвязи.ВедущийИмяРеквизита, СтруктураСвязи.Действие));
+ КонецЕсли;
+
+ ПодчиненныйЭлемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивЭлементов);
+КонецПроцедуры
+
+&НаСервере
+Функция СоздатьСтруктуруТаблицСвязей()
+ // Связи из СКД.
+ ТаблицаСвязейПоТипу = Новый ТаблицаЗначений;
+ ТаблицаСвязейПоТипу.Колонки.Добавить("ПодчиненныйИдентификатор");
+ ТаблицаСвязейПоТипу.Колонки.Добавить("ВедущийПолеКД");
+ ТаблицаСвязейПоТипу.Колонки.Добавить("НомерСубконто");
+
+ ТаблицаСвязейПараметровВыбора = Новый ТаблицаЗначений;
+ ТаблицаСвязейПараметровВыбора.Колонки.Добавить("ПодчиненныйИдентификатор");
+ ТаблицаСвязейПараметровВыбора.Колонки.Добавить("ВедущийПолеКД");
+ ТаблицаСвязейПараметровВыбора.Колонки.Добавить("ПодчиненныйИмяПараметра");
+ ТаблицаСвязейПараметровВыбора.Колонки.Добавить("Действие");
+
+ // Связи из метаданных.
+ ТаблицаСвязейОбъектовМетаданных = Новый ТаблицаЗначений;
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ПодчиненныйРеквизит", Новый ОписаниеТипов("Строка"));
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ПодчиненныйТип", Новый ОписаниеТипов("Тип"));
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ВедущийТип", Новый ОписаниеТипов("Тип"));
+
+ // Механизмы расширения.
+ ФормаОтчетаПереопределяемый.ДополнитьСвязиОбъектовМетаданных(ТаблицаСвязейОбъектовМетаданных); // Глобальные связи...
+ Если НастройкиОтчета.События.ДополнитьСвязиОбъектовМетаданных Тогда // ... можно переопределить локально для отчета.
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ ОтчетОбъект.ДополнитьСвязиОбъектовМетаданных(ТаблицаСвязейОбъектовМетаданных);
+ КонецЕсли;
+
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ЕстьПодчиненные", Новый ОписаниеТипов("Булево"));
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ПодчиненныйПолноеИмя", Новый ОписаниеТипов("Строка"));
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ПодчиненныйМассивИдентификаторов", Новый ОписаниеТипов("Массив"));
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ЕстьВедущие", Новый ОписаниеТипов("Булево"));
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ВедущийПолноеИмя", Новый ОписаниеТипов("Строка"));
+ ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ВедущийМассивИдентификаторов", Новый ОписаниеТипов("Массив"));
+
+ Связи = Новый Структура;
+ Связи.Вставить("ПоТипу", ТаблицаСвязейПоТипу);
+ Связи.Вставить("ПараметровВыбора", ТаблицаСвязейПараметровВыбора);
+ Связи.Вставить("ОбъектовМетаданных", ТаблицаСвязейОбъектовМетаданных);
+
+ Возврат Связи;
+КонецФункции
+
+&НаСервере
+Процедура РекурсивныйАнализНастроекКД(Коллекция, Соответствие)
+ Если Коллекция = Неопределено Тогда
+ РекурсивныйАнализНастроекКД(Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы, Соответствие);
+ РекурсивныйАнализНастроекКД(Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, Соответствие);
+ РекурсивныйАнализНастроекКД(Отчет.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы, Соответствие);
+ РекурсивныйАнализНастроекКД(Отчет.КомпоновщикНастроек.ФиксированныеНастройки.ПараметрыДанных.Элементы, Соответствие);
+ Иначе
+ // Регистрация значений включенных отборов и параметров КД, не выведенных в быстрый доступ.
+ Для Каждого НастройкаВарианта Из Коллекция Цикл
+ // ЭлементОтбораКомпоновкиДанных, ГруппаЭлементовОтбораКомпоновкиДанных,
+ // ЗначениеПараметраКомпоновкиДанных, ЗначениеПараметраНастроекКомпоновкиДанных.
+ Если ТипЗнч(НастройкаВарианта) = Тип("ЗначениеПараметраКомпоновкиДанных") Тогда
+ Значение = НастройкаВарианта.Значение;
+ Если ЗначениеИлиПолеКомпоновкиДанныхЗаполнено(Значение) Тогда
+ ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(НастройкаВарианта.Параметр));
+ Соответствие.Вставить(ПолеКД, Значение);
+ КонецЕсли;
+ РекурсивныйАнализНастроекКД(НастройкаВарианта.ЗначенияВложенныхПараметров, Соответствие);
+ Продолжить;
+ КонецЕсли;
+
+ Если НастройкаВарианта.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ
+ И ЗначениеЗаполнено(НастройкаВарианта.ИдентификаторПользовательскойНастройки) Тогда
+ Продолжить;
+ КонецЕсли;
+ Если НастройкаВарианта.Использование <> Истина Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если ТипЗнч(НастройкаВарианта) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ РекурсивныйАнализНастроекКД(НастройкаВарианта.Элементы, Соответствие);
+ Продолжить;
+ КонецЕсли;
+
+ Если ТипЗнч(НастройкаВарианта) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ Значение = НастройкаВарианта.ПравоеЗначение;
+ Если ЗначениеИлиПолеКомпоновкиДанныхЗаполнено(Значение) Тогда
+ ПолеКД = НастройкаВарианта.ЛевоеЗначение;
+ Соответствие.Вставить(ПолеКД, Значение);
+ КонецЕсли;
+ ИначеЕсли ТипЗнч(НастройкаВарианта) = Тип("ЗначениеПараметраКомпоновкиДанных") Тогда
+ Значение = НастройкаВарианта.ПравоеЗначение;
+ Если ЗначениеИлиПолеКомпоновкиДанныхЗаполнено(Значение) Тогда
+ ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(НастройкаВарианта.Параметр));
+ Соответствие.Вставить(ПолеКД, Значение);
+ КонецЕсли;
+ РекурсивныйАнализНастроекКД(НастройкаВарианта.ЗначенияВложенныхПараметров, Соответствие);
+ КонецЕсли;
+
+ КонецЦикла;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция ЗначениеИлиПолеКомпоновкиДанныхЗаполнено(Значение)
+ Если ТипЗнч(Значение) = Тип("ПолеКомпоновкиДанных") Тогда
+ Возврат ЗначениеЗаполнено(Строка(Значение));
+ Иначе
+ Возврат ЗначениеЗаполнено(Значение);
+ КонецЕсли;
+КонецФункции
+
+&НаСервере
+Процедура ЗаполнитьКомандыВыбораПользовательскихНастроек()
+ Если ЗначениеЗаполнено(НастройкиОтчета.ХранилищеПользовательскихНастроек) Тогда
+ МенеджерХранилища = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(НастройкиОтчета.ХранилищеПользовательскихНастроек);
+ Иначе
+ МенеджерХранилища = ХранилищеПользовательскихНастроекОтчетов;
+ КонецЕсли;
+ КлючНастроек = НастройкиОтчета.КлючОбъекта + "/" + КлючТекущегоВарианта;
+ СписокНастроек = МенеджерХранилища.ПолучитьСписок(КлючНастроек);
+ СписокНастроек.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
+
+ Группа = Элементы.ВариантыПользовательскихНастроек_Левая;
+ КнопкиГруппы = Группа.ПодчиненныеЭлементы;
+
+ Количество = КнопкиГруппы.Количество();
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+
+ Кнопка = КнопкиГруппы[ОбратныйИндекс];
+ Команда = Команды[Кнопка.Имя];
+
+ КнопкаИдентификатор = Прав(Кнопка.Имя, 32);
+ КнопкаУникальныйИдентификатор = ПривестиИмяКИдентификатору(КнопкаИдентификатор);
+
+ ОписаниеНастройки = СписокНастроек.НайтиПоЗначению(КнопкаУникальныйИдентификатор);
+ Если ОписаниеНастройки = Неопределено Тогда
+ Элементы.Удалить(Кнопка);
+ Команды.Удалить(Команда);
+ Иначе
+ ОписаниеНастройки.Значение = Кнопка;
+ Команда.Заголовок = ОписаниеНастройки.Представление;
+ КонецЕсли;
+ КонецЦикла;
+
+ Для Каждого ОписаниеНастройки Из СписокНастроек Цикл
+ Если ТипЗнч(ОписаниеНастройки.Значение) = Тип("КнопкаФормы") Тогда
+ Элементы.Переместить(ОписаниеНастройки.Значение, Группа); // Сортировка.
+ Продолжить;
+ КонецЕсли;
+
+ КомандаИмя = "ЗагрузитьПользовательскуюНастройку_" + ПривестиИдентификаторКИмени(ОписаниеНастройки.Значение);
+
+ Команда = Команды.Добавить(КомандаИмя);
+ Команда.Действие = "Подключаемый_ЗагрузитьПользовательскуюНастройку";
+ Команда.Заголовок = ОписаниеНастройки.Представление;
+
+ Кнопка = Элементы.Добавить(КомандаИмя, Тип("КнопкаФормы"), Группа);
+ Кнопка.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
+ Кнопка.ИмяКоманды = КомандаИмя;
+
+ ПостоянныеКоманды.Добавить(КомандаИмя);
+ КонецЦикла;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗаполнитьПанельОтчетов()
+ ЕстьДругиеОтчеты = Ложь;
+
+ ТаблицаВывода = РеквизитФормыВЗначение("ВариантыПанели");
+ ТаблицаВывода.Колонки.Добавить("ЭлементНадоДобавить", Новый ОписаниеТипов("Булево"));
+ ТаблицаВывода.Колонки.Добавить("ЭлементНадоОставить", Новый ОписаниеТипов("Булево"));
+ ТаблицаВывода.Колонки.Добавить("Группа");
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ РАЗРЕШЕННЫЕ
+ | ВариантыОтчетов.Ссылка,
+ | ВариантыОтчетов.Отчет,
+ | ВариантыОтчетов.КлючВарианта,
+ | ВариантыОтчетов.Наименование КАК Наименование,
+ | ВЫБОР
+ | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """"
+ | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.ПредопределенныйВариант.Описание КАК СТРОКА(1000))
+ | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000))
+ | КОНЕЦ КАК Описание,
+ | ВариантыОтчетов.Автор,
+ | ВариантыОтчетов.ТипОтчета,
+ | ВариантыОтчетов.Отчет.Имя КАК ИмяОтчета
+ |ИЗ
+ | Справочник.ВариантыОтчетов КАК ВариантыОтчетов
+ |ГДЕ
+ | ВариантыОтчетов.Отчет = &Отчет
+ | И ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ
+ | И (ВариантыОтчетов.ТолькоДляАвтора = ЛОЖЬ
+ | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь)
+ | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
+ | И ВариантыОтчетов.КлючВарианта <> """"
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | Наименование";
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("Отчет", НастройкиОтчета.Ссылка);
+ Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.ТекущийПользователь());
+ Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
+ Запрос.Текст = ТекстЗапроса;
+
+ ОбщиеНастройки = ВариантыОтчетов.ОбщиеНастройкиПанели();
+ ПоказыватьПодсказки = ОбщиеНастройки.ПоказыватьПодсказки = 1;
+
+ ТаблицаВариантов = Запрос.Выполнить().Выгрузить();
+ Для Каждого СтрокаТаблицы Из ТаблицаВариантов Цикл
+ // Только другие варианты.
+ Если СтрокаТаблицы.Ссылка = ВариантСсылка Тогда
+ Продолжить;
+ КонецЕсли;
+ ЕстьДругиеОтчеты = Истина;
+ ВывестиГиперссылкуВПанель(ТаблицаВывода, СтрокаТаблицы, Элементы.ГруппаДругиеВариантыОтчета, ПоказыватьПодсказки);
+ КонецЦикла;
+ Элементы.ГруппаДругиеВариантыОтчета.Видимость = (ТаблицаВариантов.Количество() > 0);
+
+ ВидимостьГруппыПохожиеОтчеты = Ложь;
+ Если ЗначениеЗаполнено(НастройкиОтчета.Подсистема) Тогда
+ Подсистемы = Подсистемы();
+
+ ПараметрыПоиска = Новый Структура;
+ ПараметрыПоиска.Вставить("Подсистемы", Подсистемы);
+ ПараметрыПоиска.Вставить("ТолькоВидимыеВПанелиОтчетов", Истина);
+ ПараметрыПоиска.Вставить("ПолучатьИтоговуюТаблицу", Истина);
+ ПараметрыПоиска.Вставить("ПометкаУдаления", Ложь);
+
+ РезультатПоиска = ВариантыОтчетов.НайтиСсылки(ПараметрыПоиска);
+
+ ТаблицаВариантов = РезультатПоиска.ТаблицаЗначений;
+ ТаблицаВариантов.Колонки.НаименованиеВарианта.Имя = "Наименование";
+ ТаблицаВариантов.Сортировать("Наименование");
+
+ // Удаление строк, соответствующих текущему (открытому сейчас) варианту.
+ Найденные = ТаблицаВариантов.НайтиСтроки(Новый Структура("Ссылка", ВариантСсылка));
+ Для Каждого СтрокаТаблицы Из Найденные Цикл
+ ТаблицаВариантов.Удалить(СтрокаТаблицы);
+ КонецЦикла;
+
+ // Обход подсистем и вывод найденных вариантов.
+ Для Каждого ПодсистемаСсылка Из Подсистемы Цикл
+ Найденные = ТаблицаВариантов.НайтиСтроки(Новый Структура("Подсистема", ПодсистемаСсылка));
+ Если Найденные.Количество() = 0 Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Группа = ОпределитьГруппуВывода(Найденные[0].НаименованиеПодсистемы);
+ Для Каждого СтрокаТаблицы Из Найденные Цикл
+ ЕстьДругиеОтчеты = Истина;
+ ВывестиГиперссылкуВПанель(ТаблицаВывода, СтрокаТаблицы, Группа, ПоказыватьПодсказки);
+ КонецЦикла;
+ КонецЦикла;
+ КонецЕсли;
+
+ НайденныеДляУдаления = ТаблицаВывода.НайтиСтроки(Новый Структура("ЭлементНадоОставить", Ложь)); //ВариантыПанелиНомерЭлемента
+ Для Каждого СтрокаТаблицы Из НайденныеДляУдаления Цикл
+ ЭлементВарианта = Элементы.Найти(СтрокаТаблицы.НадписьИмя);
+ Если ЭлементВарианта <> Неопределено Тогда
+ Элементы.Удалить(ЭлементВарианта);
+ КонецЕсли;
+ ТаблицаВывода.Удалить(СтрокаТаблицы);
+ КонецЦикла;
+
+ ТаблицаВывода.Колонки.Удалить("ЭлементНадоОставить");
+ ТаблицаВывода.Колонки.Удалить("Группа");
+ ЗначениеВРеквизитФормы(ТаблицаВывода, "ВариантыПанели");
+КонецПроцедуры
+
+&НаСервере
+Процедура ВывестиГиперссылкуВПанель(ТаблицаВывода, Вариант, Группа, ПоказыватьПодсказки)
+
+ Найденные = ТаблицаВывода.НайтиСтроки(Новый Структура("Ссылка, Группа", Вариант.Ссылка, Группа.Имя));
+ Если Найденные.Количество() > 0 Тогда
+ СтрокаВывода = Найденные[0];
+ СтрокаВывода.ЭлементНадоОставить = Истина;
+ Возврат;
+ КонецЕсли;
+
+ СтрокаВывода = ТаблицаВывода.Добавить();
+ ЗаполнитьЗначенияСвойств(СтрокаВывода, Вариант);
+ ВариантыПанелиНомерЭлемента = ВариантыПанелиНомерЭлемента + 1;
+ СтрокаВывода.НадписьИмя = "Вариант" + Формат(ВариантыПанелиНомерЭлемента, "ЧГ=");
+ СтрокаВывода.Дополнительный = (Вариант.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный);
+ СтрокаВывода.ИмяГруппы = Группа.Имя;
+ СтрокаВывода.ЭлементНадоОставить = Истина;
+ СтрокаВывода.Группа = Группа;
+
+ // Добавление надписи-гиперссылки варианта отчета
+ Надпись = Элементы.Вставить(СтрокаВывода.НадписьИмя, Тип("ДекорацияФормы"), СтрокаВывода.Группа);
+ Надпись.Вид = ВидДекорацииФормы.Надпись;
+ Надпись.Гиперссылка = Истина;
+ Надпись.РастягиватьПоГоризонтали = Истина;
+ Надпись.РастягиватьПоВертикали = Ложь;
+ Надпись.Высота = 1;
+ Надпись.ЦветТекста = ЦветаСтиля.ВидимыйВариантОтчетаЦвет;
+ Надпись.Заголовок = СокрЛП(Строка(Вариант.Ссылка));
+ Если ЗначениеЗаполнено(Вариант.Описание) Тогда
+ Надпись.Подсказка = СокрЛП(Вариант.Описание);
+ КонецЕсли;
+ Если ЗначениеЗаполнено(Вариант.Автор) Тогда
+ Надпись.Подсказка = СокрЛ(Надпись.Подсказка + Символы.ПС) + НСтр("ru = 'Автор:'") + " " + СокрЛП(Строка(Вариант.Автор));
+ КонецЕсли;
+ Если ПоказыватьПодсказки Тогда
+ Надпись.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
+ Надпись.РасширеннаяПодсказка.РастягиватьПоГоризонтали = Истина;
+ Надпись.РасширеннаяПодсказка.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;
+ КонецЕсли;
+ Надпись.УстановитьДействие("Нажатие", "ВариантНажатие");
+
+КонецПроцедуры
+
+&НаСервере
+Функция Подсистемы()
+ Результат = Новый Массив;
+ Результат.Добавить(НастройкиОтчета.Подсистема);
+
+ ДеревоПодсистем = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя();
+ Найденные = ДеревоПодсистем.Строки.НайтиСтроки(Новый Структура("Ссылка", НастройкиОтчета.Подсистема), Истина);
+ Пока Найденные.Количество() > 0 Цикл
+ КоллекцияСтрок = Найденные[0].Строки;
+ Найденные.Удалить(0);
+ Для Каждого СтрокаДерева Из КоллекцияСтрок Цикл
+ Результат.Добавить(СтрокаДерева.Ссылка);
+ Найденные.Добавить(СтрокаДерева);
+ КонецЦикла;
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+
+&НаСервере
+Функция ОпределитьГруппуВывода(ПодсистемаПредставление)
+ ЭлементСписка = ГруппыПодсистем.НайтиПоЗначению(ПодсистемаПредставление);
+ Если ЭлементСписка <> Неопределено Тогда
+ Возврат Элементы.Найти(ЭлементСписка.Представление);
+ КонецЕсли;
+
+ НомерГруппы = ГруппыПодсистем.Количество() + 1;
+ ДекорацияИмя = "ОтступПодсистемы_" + НомерГруппы;
+ ГруппаИмя = "ГруппаПодсистемы_" + НомерГруппы;
+
+ Если ЕстьДругиеОтчеты Тогда
+ Декорация = Элементы.Добавить(ДекорацияИмя, Тип("ДекорацияФормы"), Элементы.СтраницаДругиеОтчеты);
+ Декорация.Вид = ВидДекорацииФормы.Надпись;
+ Декорация.Заголовок = " ";
+ КонецЕсли;
+
+ Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.СтраницаДругиеОтчеты);
+ Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ Группа.Заголовок = ПодсистемаПредставление;
+ Группа.ОтображатьЗаголовок = Истина;
+ Группа.ЦветТекстаЗаголовка = ЦветГруппыВариантовОтчетов;
+ Группа.ШрифтЗаголовка = ШрифтОбычнойГруппы;
+
+ ГруппыПодсистем.Добавить(ПодсистемаПредставление, ГруппаИмя);
+ Возврат Группа;
+КонецФункции
+
+&НаСервере
+Процедура ПослеИзмененияКлючевыхСостояний(ПараметрыЗаполнения)
+ Если ПараметрыЗаполнения.Событие.Имя <> "ПослеФормирования" Тогда
+ Если ФормаОткрыта
+ И НастройкиОтчета.ФормироватьСразу
+ И ПараметрыЗаполнения.Событие.Имя = "ПриОбновленииСоставаПользовательскихНастроекНаСервере" Тогда
+ НадоСформировать = Истина;
+ КонецЕсли;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ДеревоВариантаЗарегистрироватьЭлемент(ЭлементСтруктурыСКД, НаборСтрокДерева)
+ СтрокаДерева = НаборСтрокДерева.Добавить();
+ СтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ СтрокаДерева.ТипНастройки = ТипНастройкиСтрокой(ТипЗнч(ЭлементСтруктурыСКД));
+ Если СтрокаДерева.ТипНастройки = "Настройки" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Группировка" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Таблица" Тогда
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ // Колонки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Колонки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Колонки Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ // Строки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Строки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Строки Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Диаграмма" Тогда
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ // Серии:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Серии";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Серии Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ // Точки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Точки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Точки Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "НастройкиВложенногоОбъекта" Тогда
+ ДеревоВариантаЗарегистрироватьЭлемент(ЭлементСтруктурыСКД.Настройки, СтрокаДерева.Строки);
+ ИначеЕсли СтрокаДерева.ТипНастройки = "ГруппировкаТаблицы" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "ГруппировкаДиаграммы" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ Иначе
+ Возврат;
+ КонецЕсли;
+
+ Если СтрокаДерева.ТипНастройки = "НастройкиВложенногоОбъекта" Тогда
+ ПараметрыВывода = ЭлементСтруктурыСКД.Настройки.ПараметрыВывода;
+ Иначе
+ ПараметрыВывода = ЭлементСтруктурыСКД.ПараметрыВывода;
+ КонецЕсли;
+ ПараметрЗаголовок = ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок"));
+ Если ПараметрЗаголовок <> Неопределено И ПараметрЗаголовок.Использование Тогда
+ СтрокаДерева.Заголовок = ПараметрЗаголовок.Значение;
+ КонецЕсли;
+
+ Если СтрокаДерева.ЕстьСтруктура Тогда
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Структура Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, СтрокаДерева.Строки);
+ КонецЦикла;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Функция ТипНастройкиСтрокой(ТипНастройки)
+ Если ТипНастройки = Тип("НастройкиКомпоновкиДанных") Тогда
+ Возврат "Настройки";
+ ИначеЕсли ТипНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
+ Возврат "НастройкиВложенногоОбъекта";
+
+ ИначеЕсли ТипНастройки = Тип("ОтборКомпоновкиДанных") Тогда
+ Возврат "Отбор";
+ ИначеЕсли ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ Возврат "ЭлементОтбора";
+ ИначеЕсли ТипНастройки = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ Возврат "ГруппаЭлементовОтбора";
+
+ ИначеЕсли ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ Возврат "ЗначениеПараметраНастроек";
+
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаКомпоновкиДанных") Тогда
+ Возврат "Группировка";
+ ИначеЕсли ТипНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
+ Возврат "Порядок";
+ ИначеЕсли ТипНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
+ Возврат "ВыбранныеПоля";
+
+ ИначеЕсли ТипНастройки = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
+ Возврат "УсловноеОформление";
+ ИначеЕсли ТипНастройки = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
+ Возврат "ЭлементУсловногоОформления";
+
+ ИначеЕсли ТипНастройки = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
+ Возврат "СтруктураНастроек";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыНастроек";
+
+ ИначеЕсли ТипНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
+ Возврат "Таблица";
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
+ Возврат "ГруппировкаТаблицы";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыТаблицы";
+
+ ИначеЕсли ТипНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
+ Возврат "Диаграмма";
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
+ Возврат "ГруппировкаДиаграммы";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыДиаграммы";
+
+ ИначеЕсли ТипНастройки = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
+ Возврат "ПолеГруппировки";
+ ИначеЕсли ТипНастройки = Тип("ПоляГруппировкиКомпоновкиДанных") Тогда
+ Возврат "ПоляГруппировки";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияПолейГруппировкиКомпоновкиДанных") Тогда
+ Возврат "КоллекцияПолейГруппировки";
+
+ Иначе
+ Возврат "";
+ КонецЕсли;
+КонецФункции
+
+&НаСервере
+Функция ДеревоВариантаНайти(ДеревоВарианта, СвойстваНастройки)
+ ИдентификаторСКД = СвойстваНастройки.ИдентификаторСКД;
+
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+
+ //Настройки, свойство Отбор
+ //Группировка, свойство Отбор
+ //ГруппировкаТаблицы, свойство Отбор
+ //ГруппировкаДиаграммы, свойство Отбор
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Отбор.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Отбор;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора"
+ Или СвойстваНастройки.Тип = "ГруппаЭлементовОтбора" Тогда
+
+ //Настройки, свойство Отбор.Элементы
+ //Группировка, свойство Отбор.Элементы
+ //ГруппировкаТаблицы, свойство Отбор.Элементы
+ //ГруппировкаДиаграммы, свойство Отбор.Элементы
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ НайденныйЭлемент = НайтиПоИдентификатору(СтрокаДерева.Настройка.Отбор.Элементы, ИдентификаторСКД);
+ Если НайденныйЭлемент <> Неопределено Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = НайденныйЭлемент;
+ Если СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ СвойстваНастройки.ДоступнаяСКД = СтрокаДерева.Настройка.Отбор.ДоступныеПоляОтбора.НайтиПоле(НайденныйЭлемент.ЛевоеЗначение);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+
+ //Настройки, свойство Порядок
+ //Группировка, свойство Порядок
+ //ГруппировкаТаблицы, свойство Порядок
+ //ГруппировкаДиаграммы, свойство Порядок
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Порядок.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Порядок;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ //Настройки, свойство Выбор
+ //Таблица, свойство Выбор
+ //Диаграмма, свойство Выбор
+ //Группировка, свойство Выбор
+ //ГруппировкаДиаграммы, свойство Выбор
+ //ГруппировкаТаблицы, свойство Выбор
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Выбор.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Выбор;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "УсловноеОформление" Тогда
+
+ //Настройки, свойство УсловноеОформление
+ //Таблица, свойство УсловноеОформление
+ //Диаграмма, свойство УсловноеОформление
+ //Группировка, свойство УсловноеОформление
+ //ГруппировкаДиаграммы, свойство УсловноеОформление
+ //ГруппировкаТаблицы, свойство УсловноеОформление
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.УсловноеОформление.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.УсловноеОформление;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+
+ //Настройки, свойство УсловноеОформление.Элементы
+ //Таблица, свойство УсловноеОформление.Элементы
+ //Диаграмма, свойство УсловноеОформление.Элементы
+ //Группировка, свойство УсловноеОформление.Элементы
+ //ГруппировкаДиаграммы, свойство УсловноеОформление.Элементы
+ //ГруппировкаТаблицы, свойство УсловноеОформление.Элементы
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Для Каждого ЭлементУО Из СтрокаДерева.Настройка.УсловноеОформление.Элементы Цикл
+ Если ЭлементУО.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЭлементУО;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+
+ ПараметрКД = СвойстваНастройки.ПользовательскаяСКД.Параметр;
+
+ //ПараметрКомпоновкиДанных содержится в КоллекцияЗначенийПараметровКомпоновкиДанных, которая в свою очередь:
+ // ЗначенияПараметровДанныхКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Настройки, свойство ПараметрыДанных
+ // ЗначенияПараметровВыводаКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Настройки, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Группировка, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиТаблицыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ГруппировкаТаблицы, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаТаблицыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Таблица, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаДиаграммыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Диаграмма, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиДиаграммыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ГруппировкаДиаграммы, свойство ПараметрыВывода
+ // ОформлениеКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ЭлементОбластиМакетаОформленияКомпоновкиДанных, свойство Оформление
+ // ЭлементУсловногоОформленияКомпоновкиДанных, свойство Оформление
+ // ПолеНабораДанныхСхемыКомпоновкиДанных, свойство Оформление
+ // ВычисляемоеПолеСхемыКомпоновкиДанных, свойство Оформление
+ // ЗначениеПараметраКомпоновкиДанных, свойство ЗначенияВложенныхПараметров
+
+ //Настройки, свойство ПараметрыДанных, метод НайтиЗначениеПараметра()
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Настройки"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ ЗначениеПараметра = СтрокаДерева.Настройка.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКД);
+ Если ЗначениеПараметра <> Неопределено
+ И ЗначениеПараметра.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЗначениеПараметра;
+ ДоступныеПараметры = СтрокаДерева.Настройка.ПараметрыДанных.ДоступныеПараметры;
+ Если ДоступныеПараметры <> Неопределено Тогда
+ СвойстваНастройки.ДоступнаяСКД = ДоступныеПараметры.НайтиПараметр(ПараметрКД);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Настройки, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Группировка, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Таблица, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Диаграмма, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //ГруппировкаТаблицы, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //ГруппировкаДиаграммы, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ ЗначениеПараметра = СтрокаДерева.Настройка.ПараметрыВывода.НайтиЗначениеПараметра(ПараметрКД);
+ Если ЗначениеПараметра <> Неопределено
+ И ЗначениеПараметра.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Тип = "ЗначениеПараметраВывода"; // Подмена типа...
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЗначениеПараметра;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Группировка"
+ Или СвойстваНастройки.Тип = "ГруппировкаТаблицы"
+ Или СвойстваНастройки.Тип = "ГруппировкаДиаграммы"
+ Или СвойстваНастройки.Тип = "Таблица"
+ Или СвойстваНастройки.Тип = "Диаграмма"
+ Или СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+
+ // Прямо в структуре.
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", СвойстваНастройки.Тип), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Если СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+ СвойстваНастройки.ДоступнаяСКД = Отчет.КомпоновщикНастроек.Настройки.ДоступныеОбъекты.Элементы.Найти(СтрокаДерева.Настройка.ИдентификаторОбъекта);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если СвойстваНастройки.Тип = "Группировка" Тогда
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "ГруппировкаТаблицы"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ГруппировкаТаблицы";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "ГруппировкаДиаграммы"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ГруппировкаДиаграммы";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ //Настройки, свойство Структура
+ //Группировка, свойство Структура
+ //ГруппировкаТаблицы, свойство Структура
+ //ГруппировкаДиаграммы, свойство Структура
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Структура.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "Структура";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Структура;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Таблица, свойство Колонки
+ //Таблица, свойство Строки
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Таблица"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Строки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ТаблицаСтроки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Строки;
+ Возврат Истина;
+ ИначеЕсли СтрокаДерева.Настройка.Колонки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ТаблицаКолонки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Колонки;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Диаграмма, свойство Серии
+ //Диаграмма, свойство Точки
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Диаграмма"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Серии.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ДиаграммаСерии";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Серии;
+ Возврат Истина;
+ ИначеЕсли СтрокаДерева.Настройка.Точки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ДиаграммаТочки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Точки;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
+&НаСервере
+Функция НайтиПоИдентификатору(ЭлементыСКД, ИдентификаторСКД)
+ Для Каждого ЭлементСКД Из ЭлементыСКД Цикл
+ Если ЭлементСКД.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ Возврат ЭлементСКД;
+ ИначеЕсли ТипЗнч(ЭлементСКД) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ Найденный = НайтиПоИдентификатору(ЭлементСКД.Элементы, ИдентификаторСКД);
+ Если Найденный <> Неопределено Тогда
+ Возврат Найденный;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Неопределено;
+КонецФункции
+
+&НаСервереБезКонтекста
+Функция ПредставлениеПользовательскойНастройки(СвойстваНастройки)
+ ЭлементЗаголовок = "";
+
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Отбор'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппаЭлементовОтбора" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ПользовательскаяСКД.ТипГруппы);
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ВариантаСКД.ЛевоеЗначение);
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Сортировка'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Поля'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "УсловноеОформление" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Оформление'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+ ПредставлениеЗначения = Строка(СвойстваНастройки.ПользовательскаяСКД.Оформление);
+ ПредставлениеТипа = НСтр("ru = 'Элемент оформления'");
+ Если ПустаяСтрока(ПредставлениеЗначения) Тогда
+ ЭлементЗаголовок = ПредставлениеТипа;
+ Иначе
+ ЭлементЗаголовок = ПредставлениеЗначения +" ("+ НРег(ПредставлениеТипа) +")";
+ КонецЕсли;
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ВариантаСКД.Параметр);
+
+ ИначеЕсли СвойстваНастройки.Тип = "Группировка" Тогда
+ Суффикс = СокрЛП(Строка(СвойстваНастройки.ВариантаСКД.ПоляГруппировки));
+ ЭлементЗаголовок = НСтр("ru = 'Группировка'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппировкаТаблицы" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Группировка таблицы'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппировкаДиаграммы" Тогда
+ Суффикс = СокрЛП(Строка(СвойстваНастройки.ВариантаСКД.ПоляГруппировки));
+ ЭлементЗаголовок = НСтр("ru = 'Группировка диаграммы'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "Таблица" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Таблица'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "Диаграмма" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Диаграмма'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+ ЭлементЗаголовок = СтрЗаменить(НСтр("ru = 'Вложенная группировка ''%1'''"), "%1", Строка(СвойстваНастройки.ПользовательскаяСКД));
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ Если СвойстваНастройки.Подтип = "ТаблицаСтроки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Строки'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ТаблицаКолонки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Колонки'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ДиаграммаСерии" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Серии'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ДиаграммаТочки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Точки'");
+
+ Иначе
+ ЭлементЗаголовок = НСтр("ru = 'Структура'");
+
+ КонецЕсли;
+
+ Иначе
+ ЭлементЗаголовок = Строка(СвойстваНастройки.Тип);
+
+ КонецЕсли;
+
+ Возврат СокрЛП(ЭлементЗаголовок);
+КонецФункции
+
+&НаСервере
+Функция ПолноеИмяРеквизита(Реквизит)
+ Возврат ?(ПустаяСтрока(Реквизит.Путь), "", Реквизит.Путь + ".") + Реквизит.Имя;
+КонецФункции
+
+&НаСервере
+Функция ЗначениеРеквизита(Имя)
+ Структура = Новый Структура(Имя);
+ ЗаполнитьЗначенияСвойств(Структура, ЭтотОбъект);
+ Возврат Структура[Имя];
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonForms/ФормаОтчета/Form.form b/SSL/src/CommonForms/ФормаОтчета/Form.form
index c790cc247..cbc4dab77 100644
--- a/SSL/src/CommonForms/ФормаОтчета/Form.form
+++ b/SSL/src/CommonForms/ФормаОтчета/Form.form
@@ -1,93 +1,24 @@
- ВыборВариантаОтчета
- 1
-
- ОтчетНаименованиеТекущегоВарианта
- 2
- true
- true
-
- true
-
-
- ОтчетНаименованиеТекущегоВарианта
-
- Left
-
- ОтчетНаименованиеТекущегоВариантаExtendedTooltip
- 113
- Label
- true
- true
-
- Left
-
-
-
- ОтчетНаименованиеТекущегоВариантаКонтекстноеМеню
- 3
- true
-
- InputField
- true
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
- Normal
-
-
-
- ЗагрузитьВариант
- 4
- true
- true
-
- true
-
-
- ЗагрузитьВариантExtendedTooltip
- 114
- Label
- true
- true
-
- Left
-
-
- UsualButton
- Form.StandardCommand.LoadVariant
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
+ БыстрыеНастройки
+ 416
+ truetruetrueru
- Выбор варианта отчета
+ Быстрые настройкиru
- Выбор варианта отчета
+ Быстрые настройки
- ВыборВариантаОтчетаExtendedTooltip
- 112
+ БыстрыеНастройкиРасширеннаяПодсказка
+ 417Labeltruetrue
@@ -105,22 +36,22 @@
- ОсновнаяКоманднаяПанель
+ Кнопки44
- ЛеваяЧастьКоманднойПанели
+ КомандыЛевая49
- СформироватьОтчет
- 100
+ СформироватьОтчет_Левая
+ 412truetruetrue
- СформироватьОтчетExtendedTooltip
- 117
+ СформироватьОтчет_ЛеваяРасширеннаяПодсказка
+ 413Labeltruetrue
@@ -129,7 +60,6 @@
Form.Command.ОтчетСкомпоноватьРезультат
- Autotruetruetrue
@@ -137,15 +67,16 @@
Auto
- КнопкаСформировать
- 48
+ ВсеНастройки_Левая
+ 500
+ truetruetrue
- КнопкаСформироватьExtendedTooltip
- 118
+ ВсеНастройки_ЛеваяРасширеннаяПодсказка
+ 501Labeltruetrue
@@ -153,28 +84,35 @@
Left
- Form.StandardCommand.Generate
+ Form.Command.ВсеНастройкиNormal
- AutotruetrueUserCmdsAuto
- КнопкиТабличногоДокумента
- 88
-
- Найти
- 62
+ ГруппаПользовательскиеНастройки_Левая
+ 358
+
+ ВариантыПользовательскихНастроек_Левая
+ 360truetruetrue
+
+ ru
+ Варианты пользовательских настроек левая
+
+
+ ru
+ Варианты пользовательских настроек левая
+
- НайтиExtendedTooltip
- 120
+ ВариантыПользовательскихНастроек_ЛеваяРасширеннаяПодсказка
+ 361Labeltruetrue
@@ -182,26 +120,19 @@
Left
- Form.Item.ОтчетТабличныйДокумент.StandardCommand.Find
- Normal
- PictureAndText
- true
- true
- UserCmds
- Auto
- InCommandBarAndInAdditionalSubmenu
+
- СвернутьВсеГруппы
- 60
+ СброситьНастройки_Левая
+ 382truetruetrue
- СвернутьВсеГруппыExtendedTooltip
- 121
+ СброситьНастройки_ЛеваяРасширеннаяПодсказка
+ 383Labeltruetrue
@@ -209,41 +140,13 @@
Left
- Form.Item.ОтчетТабличныйДокумент.StandardCommand.CollapseAllGroups
+ Form.Command.НастройкиПоУмолчаниюNormalAutotruetrueUserCmdsAuto
- InCommandBarAndInAdditionalSubmenu
-
-
- РазвернутьВсеГруппы
- 61
- true
- true
-
- true
-
-
- РазвернутьВсеГруппыExtendedTooltip
- 122
- Label
- true
- true
-
- Left
-
-
- Form.Item.ОтчетТабличныйДокумент.StandardCommand.ExpandAllGroups
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InCommandBarAndInAdditionalSubmenutruetrue
@@ -252,15 +155,15 @@
ru
- Кнопки табличного документа
+ Выбрать настройкиru
- Кнопки табличного документа
+ Выбрать настройки
- КнопкиТабличногоДокументаExtendedTooltip
- 119
+ ГруппаПользовательскиеНастройки_ЛеваяРасширеннаяПодсказка
+ 359Labeltruetrue
@@ -268,92 +171,97 @@
Left
-
-
-
- ГруппаПечать
- 103
-
- Печать
- 56
- true
- true
-
- true
-
-
- ПечатьExtendedTooltip
- 124
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Print
- Normal
+ Popup
+
+
+ StdPicture.LoadReportSettings
+ Picture
- true
- true
- UserCmds
- Auto
- InCommandBarAndInAdditionalSubmenu
-
-
- ПредварительныйПросмотр
- 102
- true
- true
-
- true
-
-
- ПредварительныйПросмотрExtendedTooltip
- 125
- Label
- true
- true
-
- Left
-
-
- Form.Item.ОтчетТабличныйДокумент.StandardCommand.Preview
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InCommandBarAndInAdditionalSubmenu
-
- true
- true
-
- true
-
-
- ru
- Печать
-
-
- ru
-
-
-
- ГруппаПечатьExtendedTooltip
- 123
- Label
- true
- true
-
- Left
-
-
-
+ Normal
+
- Сохранить
+ Найти_Левая
+ 62
+ true
+ true
+
+ true
+
+
+ Найти_ЛеваяРасширеннаяПодсказка
+ 120
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОтчетТабличныйДокумент.StandardCommand.Find
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ Печать_Левая
+ 56
+ true
+ true
+
+ true
+
+
+ Печать_ЛеваяРасширеннаяПодсказка
+ 124
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Print
+ Normal
+ Picture
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ПредварительныйПросмотр_Левая
+ 102
+ true
+ true
+
+ true
+
+
+ ПредварительныйПросмотр_ЛеваяРасширеннаяПодсказка
+ 125
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОтчетТабличныйДокумент.StandardCommand.Preview
+ Normal
+ Picture
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ Сохранить_Левая57ru
@@ -365,7 +273,7 @@
true
- СохранитьExtendedTooltip
+ Сохранить_ЛеваяРасширеннаяПодсказка126Labeltrue
@@ -376,7 +284,7 @@
Form.StandardCommand.SaveNormal
- Auto
+ PicturetruetrueUserCmds
@@ -395,7 +303,7 @@
true
- ОтправитьПоЭлектроннойПочтеExtendedTooltip
+ ОтправитьПоЭлектроннойПочтеРасширеннаяПодсказка128Labeltrue
@@ -406,7 +314,7 @@
Form.Command.ОтправитьПоЭлектроннойПочтеNormal
- PictureAndText
+ PicturetruetrueUserCmds
@@ -427,7 +335,7 @@
Отправить отчет по электронной почте
- ОтправитьExtendedTooltip
+ ОтправитьРасширеннаяПодсказка127Labeltrue
@@ -441,10 +349,64 @@
CommonPicture.ЭлектронноеПисьмо
- Auto
+ PictureNormal
+
+ СвернутьВсеГруппы_Левая
+ 60
+ true
+ true
+
+ true
+
+
+ СвернутьВсеГруппы_ЛеваяРасширеннаяПодсказка
+ 121
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОтчетТабличныйДокумент.StandardCommand.CollapseAllGroups
+ Normal
+ Picture
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ РазвернутьВсеГруппы_Левая
+ 61
+ true
+ true
+
+ true
+
+
+ РазвернутьВсеГруппы_ЛеваяРасширеннаяПодсказка
+ 122
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОтчетТабличныйДокумент.StandardCommand.ExpandAllGroups
+ Normal
+ Picture
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+ truetrue
@@ -452,14 +414,14 @@
ru
- Левая часть командной панели
+ Команды леваяru
- Левая часть командной панели
+ Команды левая
- ЛеваяЧастьКоманднойПанелиExtendedTooltip
+ КомандыЛеваяРасширеннаяПодсказка116Labeltrue
@@ -474,10 +436,10 @@
- ГруппаСумма
+ АвтоСуммаГруппа110
- ВычислитьСумму
+ АвтоСуммаКнопка111truetrue
@@ -485,7 +447,7 @@
true
- ВычислитьСуммуExtendedTooltip
+ АвтоСуммаКнопкаРасширеннаяПодсказка130Labeltrue
@@ -504,7 +466,7 @@
Auto
- Сумма
+ АвтоСуммаНадпись105truetrue
@@ -520,7 +482,7 @@
Сумма чисел выделенных ячеек
- СуммаExtendedTooltip
+ АвтоСуммаНадписьРасширеннаяПодсказка131Labeltrue
@@ -530,12 +492,11 @@
- СуммаКонтекстноеМеню
+ АвтоСуммаНадписьКонтекстноеМеню106trueInputField
- trueEntertrueLeft
@@ -544,6 +505,8 @@
10truetrue
+ false
+ falsetrueru
@@ -551,7 +514,6 @@
truetrue
- trueStyle.FormBackColor
@@ -575,7 +537,7 @@
- ГруппаСуммаExtendedTooltip
+ АвтоСуммаГруппаРасширеннаяПодсказка129Labeltrue
@@ -593,313 +555,20 @@
Auto
-
- ПустаяДекорация1
- 84
- true
-
- true
-
-
- ПустаяДекорация1ExtendedTooltip
- 132
- Label
- true
- true
-
- Left
-
-
-
- ПустаяДекорация1КонтекстноеМеню
- 85
- true
-
- Label
- true
- true
- true
- false
-
- Center
-
-
- ПраваяЧастьКоманднойПанели
+ КомандыЕще5
-
- КомандыВажные
- 50
-
- ФормаОтчетСкомпоноватьРезультат
- 101
- true
- true
-
- true
-
-
- ФормаОтчетСкомпоноватьРезультатExtendedTooltip
- 135
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОтчетСкомпоноватьРезультат
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаСформировать
- 46
- true
-
- true
-
-
- ФормаСформироватьExtendedTooltip
- 136
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Generate
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаГруппаПечать
- 93
-
- ФормаПечать
- 52
- true
- true
-
- true
-
-
- ФормаПечатьExtendedTooltip
- 138
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Print
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаПредварительныйПросмотр
- 90
- true
- true
-
- true
-
-
- ФормаПредварительныйПросмотрExtendedTooltip
- 139
- Label
- true
- true
-
- Left
-
-
- Form.Item.ОтчетТабличныйДокумент.StandardCommand.Preview
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаПараметрыСтраницы
- 94
- true
- true
-
- true
-
-
- ФормаПараметрыСтраницыExtendedTooltip
- 140
- Label
- true
- true
-
- Left
-
-
- Form.Item.ОтчетТабличныйДокумент.StandardCommand.PageSetup
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
- true
- true
-
- true
-
-
- ru
- Печать
-
-
- ru
-
-
-
- ФормаГруппаПечатьExtendedTooltip
- 137
- Label
- true
- true
-
- Left
-
-
-
-
-
- ФормаСохранить
- 51
-
- ru
- Сохранить...
-
- true
- true
-
- true
-
-
- ФормаСохранитьExtendedTooltip
- 141
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Save
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ОтправитьВсеДействия
- 74
-
- ОтправитьПоЭлектроннойПочтеВсеДействия
- 98
- true
- true
-
- true
-
-
- ОтправитьПоЭлектроннойПочтеВсеДействияExtendedTooltip
- 143
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОтправитьПоЭлектроннойПочте
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
- true
- true
-
- true
-
-
- ru
- Отправить
-
-
- ru
- Отправить отчет по электронной почте
-
-
- ОтправитьВсеДействияExtendedTooltip
- 142
- Label
- true
- true
-
- Left
-
-
- Popup
-
-
- CommonPicture.ОтправитьЭлектронноеПисьмо
-
- Auto
- Normal
-
-
+
+ СформироватьОтчет
+ 101truetruetrue
-
- ru
- Команды важные
-
-
- ru
- Команды важные
-
- КомандыВажныеExtendedTooltip
- 134
+ СформироватьОтчетРасширеннаяПодсказка
+ 135Labeltruetrue
@@ -907,65 +576,48 @@
Left
-
+ Form.Command.ОтчетСкомпоноватьРезультат
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормироватьСразу
+ 468
+ true
+ true
+
+ true
+
+
+ ФормироватьСразуРасширеннаяПодсказка
+ 469
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ФормироватьСразу
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
- ГруппаСкрытьПоказатьБыстрыеНастройки
+ ГруппаПользовательскиеНастройки104
-
- СкрытьПоказатьНастройкиИДругиеОтчеты
- 273
- true
- true
-
- true
-
-
- СкрытьПоказатьНастройкиИДругиеОтчетыРасширеннаяПодсказка
- 274
- Label
- true
- true
-
- Left
-
-
- Form.Command.СкрытьПоказатьНастройкиИДругиеОтчеты
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InCommandBarAndInAdditionalSubmenu
-
-
- СкрытьПоказатьБыстрыеНастройки
- 13
- true
- true
-
-
- СкрытьПоказатьБыстрыеНастройкиExtendedTooltip
- 145
- Label
- true
- true
-
- Left
-
-
- Form.Command.СкрытьПоказатьБыстрыеНастройки
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- ВсеНастройки
- 12
+ 458truetrue
@@ -973,7 +625,7 @@
ВсеНастройкиРасширеннаяПодсказка
- 147
+ 459Labeltruetrue
@@ -983,56 +635,23 @@
Form.Command.ВсеНастройкиNormal
- Picture
+ AutotruetrueUserCmdsAuto
- InAdditionalSubmenu
- true
- true
-
- true
-
-
- ru
-
-
-
- ru
-
-
-
- ГруппаСкрытьПоказатьБыстрыеНастройкиExtendedTooltip
- 144
- Label
- true
- true
-
- Left
-
-
-
-
-
- КомандыВариантовПользовательскихНастроек
- 36
- ФормаЗагрузитьНастройкиОтчета
- 38
-
- ru
- Загрузить настройки...
-
+ ВыбратьНастройки
+ 462truetruetrue
- ФормаЗагрузитьНастройкиОтчетаExtendedTooltip
- 148
+ ВыбратьНастройкиРасширеннаяПодсказка
+ 463Labeltruetrue
@@ -1050,20 +669,16 @@
InAdditionalSubmenu
- ФормаСохранитьНастройкиОтчета
- 37
-
- ru
- Сохранить настройки...
-
+ СохранитьНастройки
+ 460truetruetrue
- ФормаСохранитьНастройкиОтчетаExtendedTooltip
- 149
+ СохранитьНастройкиРасширеннаяПодсказка
+ 461Labeltruetrue
@@ -1078,92 +693,7 @@
trueUserCmdsAuto
- InAdditionalSubmenu
-
-
- ДополнительныеКомандыВариантовПользовательскихНастроек
- 11
-
- ФормаСтандартныеНастройки
- 39
-
- ru
- Сбросить настройки
-
- true
-
- true
-
-
- ФормаСтандартныеНастройкиExtendedTooltip
- 151
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.StandardSettings
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- СброситьНастройки
- 87
- true
- true
-
- true
-
-
- СброситьНастройкиExtendedTooltip
- 152
- Label
- true
- true
-
- Left
-
-
- Form.Command.СброситьНастройки
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
- true
- true
-
- true
-
-
- ru
- Дополнительные команды вариантов пользовательских настроек
-
-
- ru
-
-
-
- ДополнительныеКомандыВариантовПользовательскихНастроекExtendedTooltip
- 150
- Label
- true
- true
-
- Left
-
-
-
+ InCommandBarAndInAdditionalSubmenutruetrue
@@ -1172,15 +702,15 @@
ru
- Команды вариантов пользовательских настроек
+ ru
- Команды вариантов пользовательских настроек
+
- КомандыВариантовПользовательскихНастроекExtendedTooltip
- 146
+ ГруппаПользовательскиеНастройкиРасширеннаяПодсказка
+ 144Labeltruetrue
@@ -1191,17 +721,19 @@
- ГруппаСкрытьПоказатьПанельОтчетов
- 238
+ ГруппаПечать
+ 93
- СкрытьПоказатьПанельОтчетов
- 217
+ Печать
+ 52truetrue
-
+
+ true
+
- СкрытьПоказатьПанельОтчетовРасширеннаяПодсказка
- 218
+ ПечатьРасширеннаяПодсказка
+ 138Labeltruetrue
@@ -1209,7 +741,7 @@
Left
- Form.Command.СкрытьПоказатьПанельОтчетов
+ Form.StandardCommand.PrintNormalAutotrue
@@ -1217,6 +749,60 @@
UserCmdsAuto
+
+ ПредварительныйПросмотр
+ 90
+ true
+ true
+
+ true
+
+
+ ПредварительныйПросмотрРасширеннаяПодсказка
+ 139
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОтчетТабличныйДокумент.StandardCommand.Preview
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ПараметрыСтраницы
+ 94
+ true
+ true
+
+ true
+
+
+ ПараметрыСтраницыРасширеннаяПодсказка
+ 140
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ОтчетТабличныйДокумент.StandardCommand.PageSetup
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+ truetrue
@@ -1224,15 +810,15 @@
ru
-
+ Печатьru
- ГруппаСкрытьПоказатьПанельОтчетовРасширеннаяПодсказка
- 239
+ ГруппаПечатьРасширеннаяПодсказка
+ 137Labeltruetrue
@@ -1242,20 +828,113 @@
+
+ Сохранить
+ 51
+
+ ru
+ Сохранить...
+
+ true
+ true
+
+ true
+
+
+ СохранитьРасширеннаяПодсказка
+ 141
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Save
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
- КомандыВариантовОтчета
- 32
+ ОтправитьВсеДействия
+ 74
- ИзменитьВариантОтчета
- 86
+ ОтправитьПоЭлектроннойПочтеВсеДействия
+ 98truetruetrue
- ИзменитьВариантОтчетаExtendedTooltip
- 154
+ ОтправитьПоЭлектроннойПочтеВсеДействияРасширеннаяПодсказка
+ 143
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОтправитьПоЭлектроннойПочте
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Отправить
+
+
+ ru
+ Отправить отчет по электронной почте
+
+
+ ОтправитьВсеДействияРасширеннаяПодсказка
+ 142
+ Label
+ true
+ true
+
+ Left
+
+
+ Popup
+
+
+ CommonPicture.ОтправитьЭлектронноеПисьмо
+
+ Auto
+ Normal
+
+
+
+ КомандыВариантовОтчета
+ 450
+
+ ИзменитьВариант
+ 452
+ true
+ true
+
+ true
+
+
+ ИзменитьВариантРасширеннаяПодсказка
+ 453Labeltruetrue
@@ -1273,38 +952,8 @@
InAdditionalSubmenu
- ФормаИзменитьВариант
- 33
-
- ru
- Изменить вариант отчета...
-
- true
-
- true
-
-
- ФормаИзменитьВариантExtendedTooltip
- 155
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.ChangeVariant
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаЗагрузитьВариант
- 35
+ ВыбратьВариант
+ 454ruВыбрать вариант отчета...
@@ -1315,8 +964,8 @@
true
- ФормаЗагрузитьВариантExtendedTooltip
- 156
+ ВыбратьВариантРасширеннаяПодсказка
+ 455Labeltruetrue
@@ -1334,8 +983,8 @@
InAdditionalSubmenu
- ФормаСохранитьВариант
- 34
+ СохранитьВариант
+ 456ruСохранить вариант отчета...
@@ -1346,8 +995,8 @@
true
- ФормаСохранитьВариантExtendedTooltip
- 157
+ СохранитьВариантРасширеннаяПодсказка
+ 457Labeltruetrue
@@ -1377,91 +1026,10 @@
ruКоманды вариантов отчета
+ true
- КомандыВариантовОтчетаExtendedTooltip
- 153
- Label
- true
- true
-
- Left
-
-
-
-
-
- КомандыСмТакже
- 40
-
- ФормаНовоеОкно
- 41
- true
- true
-
- true
-
-
- ФормаНовоеОкноExtendedTooltip
- 159
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.NewWindow
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаИзменитьФорму
- 42
- true
- true
-
- true
-
-
- ФормаИзменитьФормуExtendedTooltip
- 160
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.CustomizeForm
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
- true
- true
-
- true
-
-
- ru
- Команды см также
-
-
- ru
- Команды см также
-
-
- КомандыСмТакжеExtendedTooltip
- 158
+ КомандыВариантовОтчетаРасширеннаяПодсказка
+ 451Labeltruetrue
@@ -1472,7 +1040,61 @@
- ФормаСправка
+ НовоеОкно
+ 41
+ true
+ true
+
+ true
+
+
+ НовоеОкноРасширеннаяПодсказка
+ 159
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.NewWindow
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ИзменитьФорму
+ 42
+ true
+ true
+
+ true
+
+
+ ИзменитьФормуРасширеннаяПодсказка
+ 160
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CustomizeForm
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ Справка43truetrue
@@ -1480,7 +1102,7 @@
true
- ФормаСправкаExtendedTooltip
+ СправкаРасширеннаяПодсказка161Labeltrue
@@ -1505,17 +1127,16 @@
ru
- Правая часть командной панели
+ Команды ещеru
- Правая часть командной панели
+ Команды еще
- 35
+ 10false
- false
- ПраваяЧастьКоманднойПанелиExtendedTooltip
+ КомандыЕщеРасширеннаяПодсказка133Labeltrue
@@ -1527,7 +1148,6 @@
CommandBarRight
- Formtrue
@@ -1537,14 +1157,14 @@
ru
- Основная командная панель
+ Кнопкиru
- Основная командная панель
+ Кнопки
- ОсновнаяКоманднаяПанельExtendedTooltip
+ КнопкиРасширеннаяПодсказка115Labeltrue
@@ -1562,412 +1182,21 @@
Auto
-
- РезультатИБыстрыеНастройки
- 6
-
- ОтчетТабличныйДокумент
- 7
- true
- true
-
- true
-
-
- ОтчетТабличныйДокумент
-
- None
-
- ОтчетТабличныйДокументExtendedTooltip
- 163
- Label
- true
- true
-
- Left
-
-
-
- ОтчетТабличныйДокументКонтекстноеМеню
- 8
-
- ОтчетТабличныйДокументКонтекстноеМенюОтчетСкомпоноватьРезультат
- 168
- true
- true
-
- true
-
-
- ОтчетТабличныйДокументКонтекстноеМенюОтчетСкомпоноватьРезультатРасширеннаяПодсказка
- 169
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОтчетСкомпоноватьРезультат
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- true
-
- SpreadsheetDocumentField
- Enter
- true
- Left
- true
-
-
- AdditionalDetailProcessing
- ОтчетТабличныйДокументОбработкаДополнительнойРасшифровки
-
-
- OnActivate
- ОтчетТабличныйДокументПриАктивизацииОбласти
-
-
- DetailProcessing
- ОтчетТабличныйДокументОбработкаРасшифровки
-
- 60
- true
- 15
- true
- true
- true
- Special
- ScrollAlways
- ScrollAlways
- Always
- Auto
- true
- true
- true
-
-
-
- ПраваяПанель
- 275
-
- СтраницаБыстрыеНастройки
- 277
-
- Периоды
- 170
- true
- true
-
- true
-
-
- ru
- Периоды
-
-
- ru
- Периоды
-
-
- ПериодыРасширеннаяПодсказка
- 171
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
-
- БыстрыеНастройки
- 172
- true
- true
-
- true
-
-
- ru
- Быстрые настройки
-
-
- ru
- Быстрые настройки
-
-
- БыстрыеНастройкиРасширеннаяПодсказка
- 173
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
- true
- true
-
- true
-
-
- ru
- Настройки
-
-
- ru
-
-
-
- СтраницаБыстрыеНастройкиРасширеннаяПодсказка
- 278
- Label
- true
- true
-
- Left
-
-
- Page
-
-
- CommonPicture.БыстрыеНастройкиОтчета
-
- Vertical
- auto
-
-
-
- СтраницаДругиеОтчеты
- 279
-
- ГруппаДругиеВариантыОтчета
- 240
- true
- true
-
- true
-
-
- ru
- Варианты отчета
-
-
- Style.ГруппаВариантовОтчетовЦвет
-
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
-
- ru
-
-
-
- ГруппаДругиеВариантыОтчетаРасширеннаяПодсказка
- 241
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- auto
- Auto
- Auto
-
-
-
- РазделительГруппВариантов
- 242
-
- ru
-
-
- true
- true
-
- true
-
-
- РазделительГруппВариантовРасширеннаяПодсказка
- 244
- Label
- true
- true
-
- Left
-
-
-
- РазделительГруппВариантовКонтекстноеМеню
- 243
- true
-
- Label
- true
- true
-
- Left
-
-
-
- ГруппаПохожиеОтчеты
- 245
- true
- true
-
- true
-
-
- ru
- Отчеты группы
-
-
- Style.ГруппаВариантовОтчетовЦвет
-
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
-
- ГруппаПохожиеОтчетыРасширеннаяПодсказка
- 246
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- auto
- Auto
- Auto
-
-
- true
- true
-
- true
-
-
- ru
- Другие отчеты
-
-
- ru
- Страница другие отчеты
-
-
- СтраницаДругиеОтчетыРасширеннаяПодсказка
- 280
- Label
- true
- true
-
- Left
-
-
- Page
-
-
- StdPicture.Report
-
- Vertical
- auto
-
-
- true
- true
-
- true
-
-
- ru
- Правая панель
-
-
- ru
- Правая панель
-
- true
- true
-
- ПраваяПанельРасширеннаяПодсказка
- 276
- Label
- true
- true
-
- Left
-
-
- Pages
-
- TabsOnTop
- Auto
-
-
+
+ ОтчетТабличныйДокумент
+ 7truetruetrue
-
- ru
- Результат и быстрые настройки
-
-
- ru
-
-
+
+ ОтчетТабличныйДокумент
+
+ None
- РезультатИБыстрыеНастройкиExtendedTooltip
- 162
+ ОтчетТабличныйДокументExtendedTooltip
+ 163Labeltruetrue
@@ -1975,13 +1204,69 @@
Left
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
+
+ ОтчетТабличныйДокументКонтекстноеМеню
+ 8
+
+ ОтчетТабличныйДокументКонтекстноеМенюОтчетСкомпоноватьРезультат
+ 168
+ true
+ true
+
+ true
+
+
+ ОтчетТабличныйДокументКонтекстноеМенюОтчетСкомпоноватьРезультатРасширеннаяПодсказка
+ 169
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОтчетСкомпоноватьРезультат
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+
+ SpreadsheetDocumentField
+ Enter
+ true
+ Left
+ true
+
+
+ AdditionalDetailProcessing
+ ОтчетТабличныйДокументОбработкаДополнительнойРасшифровки
+
+
+ OnActivate
+ ОтчетТабличныйДокументПриАктивизацииОбласти
+
+
+ DetailProcessing
+ ОтчетТабличныйДокументОбработкаРасшифровки
+
+ 60
+ true
+ 15
+ true
+ true
+ true
+ Special
+ ScrollAlways
+ ScrollAlways
+ Always
+ Auto
+ true
+ true
+ trueNone
@@ -2133,24 +1418,6 @@
-
- ВерсияСтандартныхФункцийОтчетов
-
- ru
- Версия стандартных функций отчетов
-
- 11
-
- String
-
-
-
- true
-
-
- true
-
- КлючОбъекта
@@ -2692,11 +1959,90 @@
true
+
+ ЕстьОбычныеНастройки
+
+ ru
+ Есть обычные настройки
+
+ 31
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ФормаОткрыта
+
+ ru
+ Форма открыта
+
+ 11
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ НадоСформировать
+
+ ru
+ Надо сформировать
+
+ 32
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ХранимыеСпискиВыбора
+
+ ru
+ Хранимые списки выбора
+
+ 33
+
+
+
+
+
+ ПервоеЧтениеПользовательскихНастроек
+
+ ru
+ Первое чтение пользовательских настроек
+
+ 34
+
+ Boolean
+
+
+ true
+
+
+ true
+
+ ВсеНастройкиru
- Все настройки...
+ Настройки...1
@@ -2718,28 +2064,6 @@
AutoAuto
-
- СкрытьПоказатьБыстрыеНастройки
-
- ru
- Настройки
-
- 2
-
- true
-
-
- CommonPicture.БыстрыеНастройкиОтчета
-
-
-
- СкрытьПоказатьБыстрыеНастройки
-
-
- TextPicture
- Auto
- Auto
- ИзменитьВариантОтчета
@@ -2754,6 +2078,7 @@
true
+ Ctrl+F2ИзменитьВариантОтчета
@@ -2763,22 +2088,22 @@
Auto
- СброситьНастройки
+ НастройкиПоУмолчаниюru
- Сбросить настройки
+ Стандартные настройки7ru
- Сбросить настройки
+ Настройки по умолчаниюtrue
- СброситьНастройки
+ НастройкиПоУмолчаниюAuto
@@ -2823,6 +2148,7 @@
true
+ F5StdPicture.GenerateReport
@@ -2831,7 +2157,7 @@
ОтчетСкомпоноватьРезультат
- TextPicture
+ TextAutoAuto
@@ -2862,51 +2188,24 @@
Auto
- СкрытьПоказатьПанельОтчетов
+ ФормироватьСразуru
- Отчеты
+ Формировать сразу
- 8
+ 2ru
- Скрыть показать панель отчетов
-
-
- true
-
-
- StdPicture.Report
-
-
-
- СкрытьПоказатьОтчеты
-
-
- TextPicture
- Auto
- Auto
-
-
- СкрытьПоказатьНастройкиИДругиеОтчеты
-
- ru
- Настройки и другие отчеты
-
- 9
-
- ru
- Скрыть показать настройки и другие отчеты
+ Формировать сразуtrue
- СкрытьПоказатьНастройкиИДругиеОтчеты
+ ФормироватьСразу
- TextPictureAutoAuto
diff --git a/SSL/src/CommonForms/ФормаОтчета/Help/ru.html b/SSL/src/CommonForms/ФормаОтчета/Help/ru.html
index f9b58b4d7..c3b8c444b 100644
--- a/SSL/src/CommonForms/ФормаОтчета/Help/ru.html
+++ b/SSL/src/CommonForms/ФормаОтчета/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Для просмотра отчета необходимо нажать кнопку Сформировать, предварительно задав параметры (если они предусмотрены). В клиент-серверном варианте работы программы предусмотрено формирование отчетов в фоновом режиме.
Просмотр отчета
По умолчанию форма отчета состоит из двух частей: в левой части выводятся сведения отчета, в правой части располагаются быстрые настройки.
diff --git a/SSL/src/CommonForms/ФормаОтчета/Module.bsl b/SSL/src/CommonForms/ФормаОтчета/Module.bsl
index 706a87cbe..adbf7c12b 100644
--- a/SSL/src/CommonForms/ФормаОтчета/Module.bsl
+++ b/SSL/src/CommonForms/ФормаОтчета/Module.bsl
@@ -6,6 +6,9 @@
#Область ОбработчикиСобытийФормы
+////////////////////////////////////////////////////////////////////////////////
+// Форма
+
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
@@ -14,6 +17,10 @@
ПанельОтчетовКлючВарианта = " - ";
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ Элементы.КомандыЕще.Ширина = 11;
+ КонецЕсли;
+
// Локальные переменные
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
ОтчетМетаданные = ОтчетОбъект.Метаданные();
@@ -24,30 +31,6 @@
НаименованиеОтчета = СокрЛП(ОтчетМетаданные.Представление());
ПравоВывода = ПравоДоступа("Вывод", Метаданные);
- // Реквизиты
- ВерсияСтандартныхФункцийОтчетов = "";
- Попытка
- ВерсияСтандартныхФункцийОтчетов = ОтчетОбъект.ВерсияСтандартныхФункцийОтчетов();
- Исключение
- // Обработка не требуется. Отчет не имеет программного интерфейса для тесной интеграции с формой отчета.
- КонецПопытки;
-
- // Параметры по умолчанию
- Если ВерсияСтандартныхФункцийОтчетов = "1" Тогда
- НастройкиОтчета = ОтчетОбъект.ПолучитьНастройкиОтчета();
- Иначе
- НастройкиОтчета = ФункцииОтчетовКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию();
- КонецЕсли;
-
- Если НастройкиОтчета.Свойство("ВыводитьСуммуВыделенныхЯчеек") И Не НастройкиОтчета.ВыводитьСуммуВыделенныхЯчеек Тогда
- Элементы.ГруппаСумма.Видимость = Ложь;
- Элементы.ОтчетТабличныйДокумент.УстановитьДействие("ПриАктивизацииОбласти", "");
- КонецЕсли;
- Элементы.ПустаяДекорация1.Видимость = Не Элементы.ГруппаСумма.Видимость;
-
- // Параметры печати печати и сохранения положения окна.
- УстановитьКлючиФормы();
-
// Параметры формы
ФормаПараметры = Новый Структура(
"КлючНазначенияИспользования, КлючПользовательскихНастроек,
@@ -63,29 +46,55 @@
КонецЕсли;
КонецЕсли;
- ФормаПараметры = Новый ФиксированнаяСтруктура(ФормаПараметры);
-
ВариантСсылка = ВариантыОтчетов.ПолучитьСсылку(ФормаПараметры.ОтчетСсылка, КлючТекущегоВарианта);
+ // Реквизиты
+ НастройкиОтчета = ФункцииОтчетовКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию();
+ НастройкиОтчета.Вставить("Отбор", Новый Структура);
+ НастройкиОтчета.Вставить("ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек", Истина);
+ Если ТипЗнч(Параметры.Отбор) = Тип("Структура") Тогда
+ ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(НастройкиОтчета.Отбор, Параметры.Отбор, Истина);
+ Параметры.Отбор.Очистить();
+ КонецЕсли;
+ Если ВариантыОтчетовПовтИсп.ОтчетыСНастройками().Найти(ФормаПараметры.ОтчетСсылка) <> Неопределено Тогда
+ ОтчетОбъект.ОпределитьНастройкиФормы(ЭтотОбъект, КлючТекущегоВарианта, НастройкиОтчета);
+ КонецЕсли;
+ Если ОтчетМетаданные.ХранилищеНастроек = Неопределено Тогда
+ НастройкиОтчета.Вставить("ХранилищеПользовательскихНастроек", Неопределено);
+ Иначе
+ НастройкиОтчета.Вставить("ХранилищеПользовательскихНастроек", ОтчетМетаданные.ХранилищеНастроек.ПолноеИмя());
+ КонецЕсли;
+
+ Если Параметры.Свойство("СформироватьПриОткрытии") И Параметры.СформироватьПриОткрытии = Истина Тогда
+ Параметры.СформироватьПриОткрытии = Ложь;
+ НастройкиОтчета.ФормироватьСразу = Истина;
+ НастройкиОтчета.ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек = Ложь;
+ КонецЕсли;
+
+ // Параметры по умолчанию
+ Если НастройкиОтчета.Свойство("ВыводитьСуммуВыделенныхЯчеек") И Не НастройкиОтчета.ВыводитьСуммуВыделенныхЯчеек Тогда
+ Элементы.АвтоСуммаГруппа.Видимость = Ложь;
+ Элементы.ОтчетТабличныйДокумент.УстановитьДействие("ПриАктивизацииОбласти", "");
+ КонецЕсли;
+
// Скрытие команд вариантов
Если Не Параметры.Свойство("ВидимостьКомандВариантовОтчетов", ВидимостьКомандВариантовОтчетов) Тогда
ВидимостьКомандВариантовОтчетов = ВариантыОтчетовПовтИсп.ПравоДобавления();
КонецЕсли;
- // Регистрация элементов, команд и реквизитов формы, которые не удаляются при перезаполнении быстрых настроек
+ // Регистрация команд и реквизитов формы, которые не удаляются при перезаполнении быстрых настроек.
НаборРеквизитов = ПолучитьРеквизиты();
Для Каждого Реквизит Из НаборРеквизитов Цикл
ПолноеИмяРеквизита = Реквизит.Имя + ?(ПустаяСтрока(Реквизит.Путь), "", "." + Реквизит.Путь);
ПостоянныеРеквизиты.Добавить(ПолноеИмяРеквизита);
КонецЦикла;
-
Для Каждого Команда Из Команды Цикл
ПостоянныеКоманды.Добавить(Команда.Имя);
КонецЦикла;
// Скрытие кнопки выбора варианта из расшифровки.
Если РежимРасшифровки Тогда
- Элементы.ФормаЗагрузитьВариант.Видимость = Ложь;
+ Элементы.ВыбратьВариант.Видимость = Ложь;
Если ЗначениеЗаполнено(ОтчетНаименованиеТекущегоВарианта) Тогда
РежимРасшифровкиПредставлениеВладельца = ОтчетНаименованиеТекущегоВарианта;
КонецЕсли;
@@ -94,14 +103,16 @@
// Приведение зависимых элементов формы к кондиции
ВидимостьДоступностьКорректность();
- Элементы.ГруппаДругиеВариантыОтчета.Заголовок = НаименованиеОтчета + " (" + НСтр("ru = 'варианты отчета'") + "):";
-
// Механизмы расширения
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда
МодульРассылкаОтчетов = ОбщегоНазначения.ОбщийМодуль("РассылкаОтчетов");
МодульРассылкаОтчетов.ФормаОтчетаДобавитьКоманды(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецЕсли;
- ФормаОтчетаПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
+ Если НастройкиОтчета.События.ПриСозданииНаСервере Тогда
+ ОтчетОбъект.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
+ КонецЕсли;
// Если в подменю одна команда, то выпадающий список не отображается.
Если Элементы.Отправить.ПодчиненныеЭлементы.Количество() = 1 Тогда
@@ -113,18 +124,22 @@
Элементы.ОтправитьПоЭлектроннойПочтеВсеДействия.Заголовок = Элементы.ОтправитьВсеДействия.Заголовок + "...";
КонецЕсли;
+ ФормаПараметры = Новый ФиксированнаяСтруктура(ФормаПараметры);
+
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПеременныеКлиента = Новый Структура;
- Если НеобходимоОбновитьНастройки Тогда
- ПриОбновленииСоставаПользовательскихНастроекНаСервере(Истина);
+ СформироватьПриНеобходимости();
+ Если Не Отказ Тогда
+ ФормаОткрыта = Истина;
КонецЕсли;
+ ПодключитьОбработчикОжидания("СформироватьПриНеобходимости", 1, Ложь);
КонецПроцедуры
&НаКлиенте
-Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
+Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) Экспорт
Результат = Ложь;
СуффиксФормыИсточника = ИсточникВыбора.ИмяФормы;
@@ -146,6 +161,7 @@
Если ИзмененияИзФормыВариантаОтчета <> Неопределено Тогда
БыстрыеНастройкиЗаполнить(ВыбранноеЗначение);
+ СформироватьПриНеобходимости();
Результат = Истина;
КонецЕсли;
@@ -178,7 +194,12 @@
НеобходимоОбновитьНастройки = Истина;
// Вызов переопределяемого модуля
- ФормаОтчетаПереопределяемый.ПередЗагрузкойВариантаНаСервере(ЭтотОбъект, НовыеНастройкиКД);
+ Если НастройкиОтчета.События.ПередЗагрузкойВариантаНаСервере Тогда
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ ОтчетОбъект.ПередЗагрузкойВариантаНаСервере(ЭтотОбъект, НовыеНастройкиКД);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПередЗагрузкойВариантаНаСервере(ЭтотОбъект, НовыеНастройкиКД);
+ КонецЕсли;
// Загрузка фиксированных настроек для режима расшифровки.
Если РежимРасшифровки Тогда
@@ -187,6 +208,43 @@
Отчет.КомпоновщикНастроек.ФиксированныеНастройки.ДополнительныеСвойства.Вставить("РежимРасшифровки", Истина);
КонецЕсли;
КонецЕсли;
+ Если ТипЗнч(НастройкиОтчета.Отбор) = Тип("Структура") Тогда
+ ПараметрыКД = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных;
+ ОтборыКД = Отчет.КомпоновщикНастроек.Настройки.Отбор;
+ Недоступный = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
+ Для Каждого КлючИЗначение Из НастройкиОтчета.Отбор Цикл
+ Имя = КлючИЗначение.Ключ;
+ Значение = КлючИЗначение.Значение;
+ Если ТипЗнч(Значение) = Тип("ФиксированныйМассив") Тогда
+ Значение = Новый Массив(Значение);
+ КонецЕсли;
+ Если ТипЗнч(Значение) = Тип("Массив") Тогда
+ Список = Новый СписокЗначений;
+ Список.ЗагрузитьЗначения(Значение);
+ Значение = Список;
+ КонецЕсли;
+ ПараметрКД = ПараметрыКД.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(Имя));
+ Если ТипЗнч(ПараметрКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ ПараметрКД.ИдентификаторПользовательскойНастройки = "";
+ ПараметрКД.Использование = Истина;
+ ПараметрКД.РежимОтображения = Недоступный;
+ ПараметрКД.Значение = Значение;
+ Продолжить;
+ КонецЕсли;
+ ДоступноеПолеКД = ОтборыКД.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных(Имя));
+ Если ТипЗнч(ДоступноеПолеКД) = Тип("ДоступноеПолеОтбораКомпоновкиДанных") Тогда
+ Если ТипЗнч(Значение) = Тип("СписокЗначений") Тогда
+ ВидСравненияКД = ВидСравненияКомпоновкиДанных.ВСписке;
+ Иначе
+ ВидСравненияКД = ВидСравненияКомпоновкиДанных.Равно;
+ КонецЕсли;
+ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ОтборыКД, Имя, Значение, ВидСравненияКД, , Истина, Недоступный, "");
+ Продолжить;
+ КонецЕсли;
+ ТекстОшибки = НСтр("ru = 'Не удалось установить фиксированный отбор ""%1"".'");
+ ВариантыОтчетов.ОшибкаПоВарианту(ВариантСсылка, ТекстОшибки, Имя);
+ КонецЦикла;
+ КонецЕсли;
// Параметры печати печати и сохранения положения окна.
УстановитьКлючиФормы();
@@ -196,7 +254,11 @@
ВариантСсылка = ВариантыОтчетов.ПолучитьСсылку(ФормаПараметры.ОтчетСсылка, КлючТекущегоВарианта);
// Вызов переопределяемого модуля
- ФормаОтчетаПереопределяемый.ПриЗагрузкеВариантаНаСервере(ЭтотОбъект, НовыеНастройкиКД);
+ Если НастройкиОтчета.События.ПриЗагрузкеВариантаНаСервере Тогда
+ ОтчетОбъект.ПриЗагрузкеВариантаНаСервере(ЭтотОбъект, НовыеНастройкиКД);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПриЗагрузкеВариантаНаСервере(ЭтотОбъект, НовыеНастройкиКД);
+ КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -209,16 +271,33 @@
&НаСервере
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(НовыеПользовательскиеНастройкиКД)
-
- НеобходимоОбновитьНастройки = Истина;
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
// Вызов переопределяемого модуля
- ФормаОтчетаПереопределяемый.ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтотОбъект, НовыеПользовательскиеНастройкиКД);
+ Если НастройкиОтчета.События.ПриЗагрузкеПользовательскихНастроекНаСервере Тогда
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ ОтчетОбъект.ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтотОбъект, НовыеПользовательскиеНастройкиКД);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтотОбъект, НовыеПользовательскиеНастройкиКД);
+ КонецЕсли;
+
+ Если НеобходимоОбновитьНастройки Тогда
+ ПриОбновленииСоставаПользовательскихНастроекНаСервере(Истина);
+ Иначе
+ НеобходимоОбновитьНастройки = Истина;
+ КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриОбновленииСоставаПользовательскихНастроекНаСервере(СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
НеобходимоОбновитьНастройки = Ложь;
ПараметрыЗаполнения = Новый Структура;
@@ -232,8 +311,25 @@
КонецПроцедуры
&НаСервере
-Процедура ПриСохраненииПользовательскихНастроекНаСервере(Настройки)
- ВариантыОтчетов.ПриСохраненииПользовательскихНастроекНаСервере(ЭтотОбъект, Настройки);
+Процедура ПриСохраненииПользовательскихНастроекНаСервере(ПользовательскиеНастройкиКД)
+ ВариантыОтчетов.ПриСохраненииПользовательскихНастроекНаСервере(ЭтотОбъект, ПользовательскиеНастройкиКД);
+
+ // Сохранение выбранных значений в дополнительных свойствах.
+ Если ПользовательскиеНастройкиКД.ДополнительныеСвойства.Свойство("ЭлементыФормы") Тогда
+ ДополнительныеНастройкиЭлементов = ПользовательскиеНастройкиКД.ДополнительныеСвойства.ЭлементыФормы;
+ Для Каждого КлючИЗначение Из ДополнительныеНастройкиЭлементов Цикл
+ ИдентификаторЭлемента = КлючИЗначение.Ключ;
+ НастройкиЭлемента = КлючИЗначение.Значение;
+ ИмяРеквизита = ХранимыеСпискиВыбора.Получить(ИдентификаторЭлемента);
+ Если ИмяРеквизита = Неопределено Тогда
+ ДополнительныеНастройкиЭлементов.Удалить(ИдентификаторЭлемента);
+ Продолжить;
+ КонецЕсли;
+ НастройкиЭлемента.ЗначенияДляВыбора = ЭтотОбъект[ИмяРеквизита].ВыгрузитьЗначения();
+ КонецЦикла;
+ КонецЕсли;
+
+ ЗаполнитьКомандыВыбораПользовательскихНастроек();
КонецПроцедуры
&НаКлиенте
@@ -294,9 +390,9 @@
Процедура Подключаемый_ПолеВвода_ПриИзменении(Элемент)
ЗначениеИмя = Элемент.Имя;
ИдентификаторЭлемента = Прав(ЗначениеИмя, 32);
- ШаблонГенерацииПрефикс = Лев(ЗначениеИмя, Найти(ЗначениеИмя, "_Значение_")-1);
+ СвойстваНастройкиТип = Лев(ЗначениеИмя, Найти(ЗначениеИмя, "_Значение_")-1);
- ИспользованиеИмя = ШаблонГенерацииПрефикс + "_Использование_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
Значение = ЭтотОбъект[ЗначениеИмя];
Если ТипЗнч(Значение) = Тип("ОписаниеТипов") Тогда
@@ -331,45 +427,92 @@
КонецПроцедуры
&НаКлиенте
-Процедура Подключаемый_ТаблицаПорядка_Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+Процедура Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
- ИмяКолонки = Поле.Имя;
- Если Лев(ИмяКолонки, 39) = "ПорядокКомпоновкиДанных_КолонкаПорядок_" Тогда // Изменение порядка.
-
- СтандартнаяОбработка = Ложь;
-
- ИзменитьНаправлениеСортировкиТаблицы(ИмяКолонки, Неопределено);
-
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_ТаблицаПорядка_КолонкаИспользование_ПриИзменении(Элемент)
-
- КолонкаИспользованиеИмя = Элемент.Имя;
-
- ТаблицаИмя = СтрЗаменить(КолонкаИспользованиеИмя, "_КолонкаИспользование_", "_Таблица_");
- СтрокаТаблицы = Элементы[ТаблицаИмя].ТекущиеДанные;
- Если СтрокаТаблицы = Неопределено Тогда
+ ИдентификаторЭлемента = Прав(Элемент.Имя, 32);
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ ДополнительныеНастройки = НайтиДополнительныеНастройкиЭлемента(ИдентификаторЭлемента);
+ Если ДополнительныеНастройки = Неопределено Тогда
Возврат;
КонецЕсли;
- ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(КолонкаИспользованиеИмя);
+ ПараметрыФормы = Новый Структура("Отмеченные");
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ ПараметрыФормы.Отмеченные = ЗначенияСписком(ПользовательскаяНастройкаКД.ПравоеЗначение);
+ Иначе
+ ПараметрыФормы.Отмеченные = ЗначенияСписком(ПользовательскаяНастройкаКД.Значение);
+ КонецЕсли;
+ ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыФормы, ДополнительныеНастройки, Истина);
- // Отражение изменений флажка элемента таблицы в соответствующей пользовательской настройке.
- Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
- ИндексСтрокиТаблицы = ЭтотОбъект[ТаблицаИмя].Индекс(СтрокаТаблицы);
- ПолеГруппировки = ПользовательскаяНастройкаКД.Структура.Получить(ИндексСтрокиТаблицы);
- ПолеГруппировки.Использование = СтрокаТаблицы.Использование;
- ПолеГруппировки.Состояние = СостояниеЭлементаНастройкиКомпоновкиДанных[?(СтрокаТаблицы.Использование, "Включен", "Отключен")];
- Иначе //ВыбранныеПоляКомпоновкиДанных, ПорядокКомпоновкиДанных
- СтрокаПользовательскойНастройки = ФункцииОтчетовКлиентСервер.НайтиВложеннуюПользовательскуюНастройку(ПользовательскаяНастройкаКД, СтрокаТаблицы.Идентификатор);
- Если СтрокаПользовательскойНастройки <> Неопределено Тогда
- СтрокаПользовательскойНастройки.Использование = СтрокаТаблицы.Использование;
+ ПараметрыФормы.Вставить("ПараметрыВыбора", Новый Массив);
+
+ // Добавление фиксированных параметров выбора.
+ Для Каждого ПараметрВыбора Из Элемент.ПараметрыВыбора Цикл
+ Если ПустаяСтрока(ПараметрВыбора.Имя) Тогда
+ Продолжить;
КонецЕсли;
+ Если ЗначениеЗаполнено(ПараметрВыбора.Имя) Тогда
+ ПараметрыФормы.ПараметрыВыбора.Добавить(ПараметрВыбора);
+ КонецЕсли;
+ КонецЦикла;
+
+ // Добавление динамических параметров выбора (от ведущих).
+ Для Каждого СвязьПараметраВыбора Из Элемент.СвязиПараметровВыбора Цикл
+ Если ПустаяСтрока(СвязьПараметраВыбора.Имя) Тогда
+ Продолжить;
+ КонецЕсли;
+ ВедущийЗначение = ЭтотОбъект[СвязьПараметраВыбора.ПутьКДанным];
+ ПараметрыФормы.ПараметрыВыбора.Добавить(Новый ПараметрВыбора(СвязьПараметраВыбора.Имя, ВедущийЗначение));
+ КонецЦикла;
+
+ ПараметрыОбработчика = Новый Структура;
+ ПараметрыОбработчика.Вставить("ИдентификаторЭлемента", ИдентификаторЭлемента);
+ ПараметрыОбработчика.Вставить("ФлажокИмя", СтрЗаменить(Элемент.Имя, "_Значение_", "_Использование_"));
+ Обработчик = Новый ОписаниеОповещения("Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора_Завершение", ЭтотОбъект, ПараметрыОбработчика);
+
+ Блокировать = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
+
+ ОткрытьФорму("ОбщаяФорма.ВводЗначенийСпискомСФлажками", ПараметрыФормы, ЭтотОбъект, , , , Обработчик, Блокировать);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора_Завершение(РезультатВыбора, ПараметрыОбработчика) Экспорт
+ Если ТипЗнч(РезультатВыбора) <> Тип("СписокЗначений") Тогда
+ Возврат;
КонецЕсли;
+ ПользовательскиеНастройкиМодифицированы = Истина;
+ ИдентификаторЭлемента = ПараметрыОбработчика.ИдентификаторЭлемента;
+
+ ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
+ ДополнительныеНастройки = НайтиДополнительныеНастройкиЭлемента(ИдентификаторЭлемента);
+
+ // Загрузка выбранных значений в 2 списка.
+ Отмеченные = Новый СписокЗначений;
+ Если Не ДополнительныеНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ДополнительныеНастройки.ЗначенияДляВыбора = Новый Массив;
+ КонецЕсли;
+ Для Каждого ЭлементСписка Из РезультатВыбора Цикл
+ Значение = ЭлементСписка.Значение;
+ Если ЭлементСписка.Пометка Тогда
+ Если ТипЗнч(Значение) = Тип("ОписаниеТипов") Тогда
+ Значение = Значение.Типы()[0];
+ КонецЕсли;
+ Отмеченные.Добавить().Значение = Значение;
+ ИначеЕсли Не ДополнительныеНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
+ ДополнительныеНастройки.ЗначенияДляВыбора.Добавить(Значение); // Не отмечен, но выбран.
+ КонецЕсли;
+ КонецЦикла;
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ ПользовательскаяНастройкаКД.ПравоеЗначение = Отмеченные;
+ Иначе
+ ПользовательскаяНастройкаКД.Значение = Отмеченные;
+ КонецЕсли;
+
+ // Включение флажка Использование.
+ ЭтотОбъект[ПараметрыОбработчика.ФлажокИмя] = Истина;
+ ПользовательскаяНастройкаКД.Использование = Истина;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -380,21 +523,24 @@
ВидПериодаИмя = Элемент.Имя;
ИдентификаторЭлемента = Прав(ВидПериодаИмя, 32);
- ШаблонГенерацииПрефикс = Лев(ВидПериодаИмя, Найти(ВидПериодаИмя, "_Вид_")-1);
+ СвойстваНастройкиТип = Лев(ВидПериодаИмя, Найти(ВидПериодаИмя, "_Вид_")-1);
- СтраницыИмя = ШаблонГенерацииПрефикс + "_Страницы_" + ИдентификаторЭлемента;
- ИспользованиеИмя = ШаблонГенерацииПрефикс + "_Использование_" + ИдентификаторЭлемента;
- ПериодЗначениеИмя = ШаблонГенерацииПрефикс + "_Значение_" + ИдентификаторЭлемента;
- ПериодПредставлениеИмя = ШаблонГенерацииПрефикс + "_Представление_" + ИдентификаторЭлемента;
+ СтраницыИмя = СвойстваНастройкиТип + "_Страницы_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ПериодПредставлениеИмя = СвойстваНастройкиТип + "_Представление_" + ИдентификаторЭлемента;
+ СтраницаПроизвольныйИмя = СвойстваНастройкиТип + "_СтраницаПроизвольный_" + ИдентификаторЭлемента;
+ СтраницаСтандартныйИмя = СвойстваНастройкиТип + "_СтраницаСтандартный_" + ИдентификаторЭлемента;
Значение = ЭтотОбъект[ПериодЗначениеИмя];
ВидПериода = ЭтотОбъект[ВидПериодаИмя];
- Если ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.ПроизвольныйПериод") Тогда
+ ВыбранПроизвольный = ВидПериода = ПредопределенноеЗначение("Перечисление.ДоступныеПериодыОтчета.ПроизвольныйПериод");
+
+ Если ВыбранПроизвольный Тогда
// Переключение страницы.
- СтраницаПроизвольныйИмя = ШаблонГенерацииПрефикс + "_СтраницаПроизвольный_" + ИдентификаторЭлемента;
Элементы[СтраницыИмя].ТекущаяСтраница = Элементы[СтраницаПроизвольныйИмя];
Значение.Вариант = ВариантСтандартногоПериода.ПроизвольныйПериод;
@@ -402,7 +548,6 @@
Иначе
// Переключение страницы.
- СтраницаСтандартныйИмя = ШаблонГенерацииПрефикс + "_СтраницаСтандартный_" + ИдентификаторЭлемента;
Элементы[СтраницыИмя].ТекущаяСтраница = Элементы[СтраницаСтандартныйИмя];
// Приведение значения периода в соответствие с выбранным видом.
@@ -423,7 +568,7 @@
ЭтотОбъект[ПериодЗначениеИмя] = Значение;
ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
- Если ШаблонГенерацииПрефикс = "Параметр" Тогда
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
ПользовательскаяНастройкаКД.Значение = Значение;
Иначе
ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
@@ -443,11 +588,11 @@
// Формирование сведений по элементу.
ПериодПредставлениеИмя = Элемент.Имя;
ИдентификаторЭлемента = Прав(ПериодПредставлениеИмя, 32);
- ШаблонГенерацииПрефикс = Лев(ПериодПредставлениеИмя, Найти(ПериодПредставлениеИмя, "_Представление_")-1);
+ СвойстваНастройкиТип = Лев(ПериодПредставлениеИмя, Найти(ПериодПредставлениеИмя, "_Представление_")-1);
- ПериодЗначениеИмя = ШаблонГенерацииПрефикс + "_Значение_" + ИдентификаторЭлемента;
- ВидПериодаИмя = ШаблонГенерацииПрефикс + "_Вид_" + ИдентификаторЭлемента;
- ИспользованиеИмя = ШаблонГенерацииПрефикс + "_Использование_" + ИдентификаторЭлемента;
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ВидПериодаИмя = СвойстваНастройкиТип + "_Вид_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
Значение = ЭтотОбъект[ПериодЗначениеИмя];
ВидПериода = ЭтотОбъект[ВидПериодаИмя];
@@ -468,7 +613,7 @@
ПараметрыВыбора.Вставить("ПериодЗначениеИмя", ПериодЗначениеИмя);
ПараметрыВыбора.Вставить("ИспользованиеИмя", ИспользованиеИмя);
ПараметрыВыбора.Вставить("ВидПериода", ВидПериода);
- ПараметрыВыбора.Вставить("ЭтоПараметр", (ШаблонГенерацииПрефикс = "Параметр"));
+ ПараметрыВыбора.Вставить("ЭтоПараметр", СвойстваНастройкиТип = "ЗначениеПараметраНастроек");
ВыборПериодаИзВыпадающегоСписка(-1, ПараметрыВыбора);
КонецПроцедуры
@@ -479,9 +624,9 @@
// Формирование сведений по элементу.
ПериодНачалоИмя = Элемент.Имя;
ИдентификаторЭлемента = Прав(ПериодНачалоИмя, 32);
- ШаблонГенерацииПрефикс = Лев(ПериодНачалоИмя, Найти(ПериодНачалоИмя, "_Начало_")-1);
- ПериодЗначениеИмя = ШаблонГенерацииПрефикс + "_Значение_" + ИдентификаторЭлемента;
- ИспользованиеИмя = ШаблонГенерацииПрефикс + "_Использование_" + ИдентификаторЭлемента;
+ СвойстваНастройкиТип = Лев(ПериодНачалоИмя, Найти(ПериодНачалоИмя, "_Начало_")-1);
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
Значение = ЭтотОбъект[ПериодЗначениеИмя];
@@ -491,7 +636,7 @@
// Запись значения в пользовательские настройки компоновки данных.
ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
- Если ШаблонГенерацииПрефикс = "Параметр" Тогда
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
ПользовательскаяНастройкаКД.Значение = Значение;
Иначе
ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
@@ -510,10 +655,10 @@
// Формирование сведений по элементу.
ПериодОкончаниеИмя = Элемент.Имя;
ИдентификаторЭлемента = Прав(ПериодОкончаниеИмя, 32);
- ШаблонГенерацииПрефикс = Лев(ПериодОкончаниеИмя, Найти(ПериодОкончаниеИмя, "_Окончание_")-1);
+ СвойстваНастройкиТип = Лев(ПериодОкончаниеИмя, Найти(ПериодОкончаниеИмя, "_Окончание_")-1);
- ПериодЗначениеИмя = ШаблонГенерацииПрефикс + "_Значение_" + ИдентификаторЭлемента;
- ИспользованиеИмя = ШаблонГенерацииПрефикс + "_Использование_" + ИдентификаторЭлемента;
+ ПериодЗначениеИмя = СвойстваНастройкиТип + "_Значение_" + ИдентификаторЭлемента;
+ ИспользованиеИмя = СвойстваНастройкиТип + "_Использование_" + ИдентификаторЭлемента;
Значение = ЭтотОбъект[ПериодЗначениеИмя];
@@ -523,7 +668,7 @@
// Запись значения в пользовательские настройки компоновки данных.
ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
- Если ШаблонГенерацииПрефикс = "Параметр" Тогда
+ Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
ПользовательскаяНастройкаКД.Значение = Значение;
Иначе
ПользовательскаяНастройкаКД.ПравоеЗначение = Значение;
@@ -541,202 +686,30 @@
СтандартнаяОбработка = Ложь;
КонецПроцедуры
-////////////////////////////////////////////////////////////////////////////////
-// Подключаемые - Список значений с кнопкой "Подбор"
-
-&НаКлиенте
-Процедура Подключаемый_СписокСПодбором_ПриИзменении(Элемент)
-
- ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(Элемент.Имя);
- Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
- ПользовательскаяНастройкаКД.Значение = ЭтотОбъект[Элемент.Имя];
- Иначе
- ПользовательскаяНастройкаКД.ПравоеЗначение = ЭтотОбъект[Элемент.Имя];
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_СписокСПодбором_ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
- СтандартнаяОбработка = Ложь;
-
- // Добавление выбранных элементов с контролем уникальности.
- СписокЗначений = ЭтотОбъект[Элемент.Имя];
- Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
- Для Каждого ЭлементМассива Из ВыбранноеЗначение Цикл
- Если СписокЗначений.НайтиПоЗначению(ЭлементМассива) = Неопределено Тогда
- СписокЗначений.Добавить(ЭлементМассива);
- КонецЕсли;
- КонецЦикла;
- Иначе
- Если СписокЗначений.НайтиПоЗначению(ВыбранноеЗначение) = Неопределено Тогда
- СписокЗначений.Добавить(ВыбранноеЗначение);
- КонецЕсли;
- КонецЕсли;
-
- // Отражение изменений в пользовательской настройке.
- ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(Элемент.Имя);
- Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
- ПользовательскаяНастройкаКД.Значение = СписокЗначений;
- Иначе
- ПользовательскаяНастройкаКД.ПравоеЗначение = СписокЗначений;
- КонецЕсли;
-
- // Включение флажка Использование.
- ИспользованиеИмя = СтрЗаменить(Элемент.Имя, "_СписокЗначений_", "_Использование_");
- Если Элементы.Найти(ИспользованиеИмя) <> Неопределено Тогда
- ЭтотОбъект[ИспользованиеИмя] = Истина;
- КонецЕсли;
- ПользовательскаяНастройкаКД.Использование = Истина;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_СписокСТипомТип_ПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
- Если ОтменаРедактирования Тогда
- Возврат;
- КонецЕсли;
-
- СписокЗначений = ЭтотОбъект[Элемент.Имя];
- ТекущееЗначение = Элемент.ТекущиеДанные.Значение;
- Если ТекущееЗначение = Новый ОписаниеТипов("Неопределено") Тогда
- Отказ = Истина; // Запрет пустых значений для типа "Тип".
- Иначе
- Для Каждого ЭлементСписка Из СписокЗначений Цикл
- Если ЭлементСписка.Значение = ТекущееЗначение И ЭлементСписка.ПолучитьИдентификатор() <> Элемент.ТекущаяСтрока Тогда
- Отказ = Истина; // Запрет дублей.
- Прервать;
- КонецЕсли;
- КонецЦикла;
- КонецЕсли;
-
- Если Отказ Тогда
- Элемент.ЗакончитьРедактированиеСтроки(Истина); // Перезапуск события "ПередОкончаниемРедактирования" с ОтменаРедактирования = Истина.
- КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_СписокСТипомТип_ПриИзменении(Элемент)
-
- ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(Элемент.Имя);
- СписокЗначений = ЭтотОбъект[Элемент.Имя];
- СписокЗначенийДляСКД = Новый СписокЗначений;
- ТипОписаниеТипов = Тип("ОписаниеТипов");
- ОписаниеТиповНеопределено = Новый ОписаниеТипов("Неопределено");
-
- Для Каждого ЭлементСписка Из СписокЗначений Цикл
- ЗначениеЭлемента = ЭлементСписка.Значение;
- Если ТипЗнч(ЗначениеЭлемента) = ТипОписаниеТипов Тогда
- Если ЗначениеЭлемента = ОписаниеТиповНеопределено Тогда
- Продолжить; // Запрет пустых значений для типа "Тип".
- КонецЕсли;
- ЗначениеЭлемента = ЗначениеЭлемента.Типы()[0];
- КонецЕсли;
- СписокЗначенийДляСКД.Добавить(ЗначениеЭлемента);
- КонецЦикла;
-
- Если ТипЗнч(ПользовательскаяНастройкаКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
- ПользовательскаяНастройкаКД.Значение = СписокЗначенийДляСКД;
- Иначе
- ПользовательскаяНастройкаКД.ПравоеЗначение = СписокЗначенийДляСКД;
- КонецЕсли;
-
-КонецПроцедуры
-
#КонецОбласти
#Область ОбработчикиКомандФормы
-&НаКлиенте
-Процедура СкрытьПоказатьНастройкиИДругиеОтчеты(Команда)
- СостояниеДоИзменения = Новый Структура("Видимость, ДополнительныйРежимОтображения, Картинка, Текст");
- ЗаполнитьЗначенияСвойств(СостояниеДоИзменения, Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния);
-
- Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ВидимостьПравойПанели", Не Элементы.ПраваяПанель.Видимость);
- ВидимостьДоступностьКорректность("СкрытьПоказатьНастройкиИДругиеОтчеты");
-
- ЗаполнитьЗначенияСвойств(Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния, СостояниеДоИзменения);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура СкрытьПоказатьБыстрыеНастройки(Команда)
- СостояниеДоИзменения = Новый Структура("Видимость, ДополнительныйРежимОтображения, Картинка, Текст");
- ЗаполнитьЗначенияСвойств(СостояниеДоИзменения, Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния);
-
- Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ВидимостьБыстрыхНастроек", Не Элементы.ПанельБыстрыхНастроек.Видимость);
- Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ВидимостьПанелиОтчетов", Ложь);
- ВидимостьДоступностьКорректность("СкрытьПоказатьБыстрыеНастройки");
-
- ЗаполнитьЗначенияСвойств(Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния, СостояниеДоИзменения);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура СкрытьПоказатьОтчеты(Команда)
- СостояниеДоИзменения = Новый Структура("Видимость, ДополнительныйРежимОтображения, Картинка, Текст");
- ЗаполнитьЗначенияСвойств(СостояниеДоИзменения, Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния);
-
- Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ВидимостьБыстрыхНастроек", Ложь);
- Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ВидимостьПанелиОтчетов", Не Элементы.ПанельОтчетов.Видимость);
- ВидимостьДоступностьКорректность("СкрытьПоказатьПанельОтчетов");
-
- ЗаполнитьЗначенияСвойств(Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния, СостояниеДоИзменения);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ВариантНажатие(Элемент)
- Найденные = ВариантыПанели.НайтиСтроки(Новый Структура("НадписьИмя", Элемент.Имя));
- Если Найденные.Количество() <> 1 Тогда
- Возврат;
- КонецЕсли;
- Вариант = Найденные[0];
-
- ПараметрыОткрытия = Новый Структура;
- ПараметрыОткрытия.Вставить("КлючВарианта", Вариант.КлючВарианта);
- ПараметрыОткрытия.Вставить("Раздел", ФормаПараметры.Раздел);
- ПараметрыОткрытия.Вставить("Подсистема", ФормаПараметры.Подсистема);
- ПараметрыОткрытия.Вставить("ПодсистемаПредставление", ФормаПараметры.ПодсистемаПредставление);
-
- // Открытие
- Если Вариант.Дополнительный Тогда
-
- ПараметрыОткрытия.Вставить("Вариант", Вариант.Ссылка);
- ПараметрыОткрытия.Вставить("Отчет", Вариант.Отчет);
- ВариантыОтчетовКлиент.ОткрытьВариантДополнительногоОтчета(ПараметрыОткрытия);
-
- ИначеЕсли Не ЗначениеЗаполнено(Вариант.ИмяОтчета) Тогда
-
- ТекстПредупреждения = СтрЗаменить(НСтр("ru = 'Не заполнено имя отчета для варианта ""%1"".'"), "%1", Вариант.Наименование);
- ПоказатьПредупреждение(, ТекстПредупреждения);
-
- Иначе
-
- Уникальность = "Отчет." + Вариант.ИмяОтчета;
- Если ЗначениеЗаполнено(Вариант.КлючВарианта) Тогда
- Уникальность = Уникальность + "/КлючВарианта." + Вариант.КлючВарианта;
- КонецЕсли;
-
- ПараметрыОткрытия.Вставить("КлючПараметровПечати", Уникальность);
- ПараметрыОткрытия.Вставить("КлючСохраненияПоложенияОкна", Уникальность);
-
- ОткрытьФорму("Отчет." + Вариант.ИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Уникальность);
-
- КонецЕсли;
-КонецПроцедуры
-
&НаКлиенте
Процедура ВсеНастройки(Команда)
ПараметрыФормы = Новый Структура;
- Для Каждого КлючИЗначение Из ФормаПараметры Цикл
- ПараметрыФормы.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
- КонецЦикла;
- ПараметрыФормы.Вставить("Вариант", Отчет.КомпоновщикНастроек.Настройки);
- ПараметрыФормы.Вставить("КлючВарианта", Строка(КлючТекущегоВарианта));
- ПараметрыФормы.Вставить("ПользовательскиеНастройки", Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);
- ПараметрыФормы.Вставить("ПредставлениеВарианта", Строка(ОтчетНаименованиеТекущегоВарианта));
+
+ ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыФормы, ФормаПараметры, Истина);
+
+ ПараметрыФормы.Вставить("Вариант", Отчет.КомпоновщикНастроек.Настройки);
+ ПараметрыФормы.Вставить("КлючОбъекта", Строка(КлючОбъекта));
+ ПараметрыФормы.Вставить("КлючВарианта", Строка(КлючТекущегоВарианта));
+ ПараметрыФормы.Вставить("ВариантСсылка", ВариантСсылка);
+ ПараметрыФормы.Вставить("НастройкиОтчета", НастройкиОтчета);
+ ПараметрыФормы.Вставить("НаименованиеОтчета", НаименованиеОтчета);
+ ПараметрыФормы.Вставить("ПредставлениеВарианта", Строка(ОтчетНаименованиеТекущегоВарианта));
+ ПараметрыФормы.Вставить("ПользовательскиеНастройки", Отчет.КомпоновщикНастроек.ПользовательскиеНастройки);
ПараметрыФормы.Вставить("ПредставлениеПользовательскихНастроек", "");
- ОткрытьФорму(КлючОбъекта + ".ФормаНастроек", ПараметрыФормы, ЭтотОбъект);
+ Режим = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
+
+ ОткрытьФорму(КлючОбъекта + ".ФормаНастроек", ПараметрыФормы, ЭтотОбъект, , , , , Режим);
КонецПроцедуры
@@ -758,12 +731,11 @@
КонецПроцедуры
&НаКлиенте
-Процедура СброситьНастройки(Команда)
+Процедура НастройкиПоУмолчанию(Команда)
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Событие", Новый Структура);
- ПараметрыЗаполнения.Событие.Вставить("Имя", "СброситьНастройки");
+ ПараметрыЗаполнения.Событие.Вставить("Имя", "НастройкиПоУмолчанию");
ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Истина);
- ПараметрыЗаполнения.Вставить("СброситьНастройки", Истина);
БыстрыеНастройкиЗаполнить(ПараметрыЗаполнения);
КонецПроцедуры
@@ -805,6 +777,23 @@
СуммаВыделенныхЯчеек = ВычислитьСуммуСервер(ОтчетТабличныйДокумент, ВыделенныеОбласти());
КонецПроцедуры
+&НаКлиенте
+Процедура ФормироватьСразу(Команда)
+
+ ФормироватьСразу = Не НастройкиОтчета.ФормироватьСразу;
+ НастройкиОтчета.ФормироватьСразу = ФормироватьСразу;
+ Элементы.ФормироватьСразу.Пометка = ФормироватьСразу;
+
+ СостояниеДоИзменения = Новый Структура("Видимость, ДополнительныйРежимОтображения, Картинка, Текст");
+ ЗаполнитьЗначенияСвойств(СостояниеДоИзменения, Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния);
+
+ Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ФормироватьСразу", ФормироватьСразу);
+ ПользовательскиеНастройкиМодифицированы = Истина;
+
+ ЗаполнитьЗначенияСвойств(Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния, СостояниеДоИзменения);
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Подключаемые
@@ -820,123 +809,11 @@
КонецПроцедуры
&НаКлиенте
-Процедура Подключаемый_СписокСПодбором_Подбор(Команда)
-
- КнопкаПодборИмя = Команда.Имя;
-
- ИдентификаторЭлемента = Прав(КнопкаПодборИмя, 32);
- ШаблонГенерацииПрефикс = Лев(КнопкаПодборИмя, Найти(КнопкаПодборИмя, "_Подбор_")-1);
-
- ТаблицаИмя = ШаблонГенерацииПрефикс + "_СписокЗначений_" + ИдентификаторЭлемента;
- КолонкаЗначениеИмя = ШаблонГенерацииПрефикс + "_Колонка_Значение_" + ИдентификаторЭлемента;
- КоманднаяПанельИмя = ШаблонГенерацииПрефикс + "_КоманднаяПанель_" + ИдентификаторЭлемента;
-
- ТаблицаЗначение = ЭтотОбъект[ТаблицаИмя];
- КолонкаЗначениеЭлемент = Элементы[КолонкаЗначениеИмя];
-
- ПараметрыЭлемента = Новый Структура;
- ПараметрыЭлемента.Вставить("ИдентификаторЭлемента", ИдентификаторЭлемента);
- ПараметрыЭлемента.Вставить("ВыбранныйТип", Неопределено);
- ПараметрыЭлемента.Вставить("КолонкаЗначениеЭлемент", КолонкаЗначениеЭлемент);
- ПараметрыЭлемента.Вставить("ТаблицаЭлемент", Элементы[ТаблицаИмя]);
- ПараметрыЭлемента.Вставить("ВыборТолькоГрупп", КолонкаЗначениеЭлемент.ВыборГруппИЭлементов = ГруппыИЭлементы.Группы);
-
- Если ЗначениеЗаполнено(КолонкаЗначениеЭлемент.СвязьПоТипу.ПутьКДанным) Тогда
- ЗначениеВедущего = ЭтотОбъект[КолонкаЗначениеЭлемент.СвязьПоТипу.ПутьКДанным];
- Если ЗначениеЗаполнено(ЗначениеВедущего) Тогда
- ТипВедущего = ТипЗнч(ЗначениеВедущего);
- Если ТаблицаЗначение.ТипЗначения.СодержитТип(ТипВедущего) Тогда
- // Тип определен ведущим.
- ПараметрыЭлемента.ВыбранныйТип = ТипВедущего;
- ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента);
- Возврат;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
-
- // Выбор типа из списка.
- СписокВыбора = Новый СписокЗначений;
-
- ПростыеТипы = Новый Соответствие;
- ПростыеТипы.Вставить(Тип("Строка"), Истина);
- ПростыеТипы.Вставить(Тип("Дата"), Истина);
- ПростыеТипы.Вставить(Тип("Число"), Истина);
-
- МассивТипов = ТаблицаЗначение.ТипЗначения.Типы();
- Для Каждого Тип Из МассивТипов Цикл
- // Исключение типов, для которых нет групп.
- Если ПараметрыЭлемента.ВыборТолькоГрупп Тогда
- ИмяОбъектаМетаданных = БыстрыйПоискИменОбъектовМетаданных.Получить(Тип);
- ВидОбъектаМетаданных = ВРег(Лев(ИмяОбъектаМетаданных, Найти(ИмяОбъектаМетаданных, ".")-1));
- Если ВидОбъектаМетаданных <> "СПРАВОЧНИК" И ВидОбъектаМетаданных <> "ПЛАНВИДОВХАРАКТЕРИСТИК" И ВидОбъектаМетаданных <> "ПЛАНСЧЕТОВ" Тогда
- Продолжить;
- КонецЕсли;
- КонецЕсли;
- // Исключение простых типов.
- Если ПростыеТипы[Тип] = Истина Тогда
- Продолжить;
- КонецЕсли;
- // Добавление типа в список выбора.
- СписокВыбора.Добавить(Тип, Строка(Тип));
- КонецЦикла;
-
- Если СписокВыбора.Количество() = 0 Тогда
- ПараметрыЭлемента.ТаблицаЭлемент.ДобавитьСтроку();
- Возврат;
- ИначеЕсли СписокВыбора.Количество() = 1 Тогда
- // Один тип - выбор не требуется.
- ПараметрыЭлемента.ВыбранныйТип = СписокВыбора[0].Значение;
- ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента);
- Иначе
- // Более одного типа.
- Обработчик = Новый ОписаниеОповещения("ПоказатьДиалогПодбораДляСпискаПослеВыбораТипа", ЭтотОбъект, ПараметрыЭлемента);
- ПоказатьВыборИзМеню(Обработчик, СписокВыбора, Элементы[КоманднаяПанельИмя]);
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_СписокСПодбором_Добавить(Команда)
-
- КнопкаПодборИмя = Команда.Имя;
-
- ИдентификаторЭлемента = Прав(КнопкаПодборИмя, 32);
- ШаблонГенерацииПрефикс = Лев(КнопкаПодборИмя, Найти(КнопкаПодборИмя, "_Подбор_") - 1);
-
- ТаблицаИмя = ШаблонГенерацииПрефикс + "_СписокЗначений_" + ИдентификаторЭлемента;
-
- Элементы[ТаблицаИмя].ДобавитьСтроку();
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_ТаблицаПорядка_ПереместитьВверх(Команда)
- Направление = -1;
- ТаблицаИмя = СтрЗаменить(Команда.Имя, "_Команда_ПереместитьВверх_", "_Таблица_");
- ПереместитьСтрокуТаблицы(Направление, ТаблицаИмя);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_ТаблицаПорядка_ПереместитьВниз(Команда)
- Направление = 1;
- ТаблицаИмя = СтрЗаменить(Команда.Имя, "_Команда_ПереместитьВниз_", "_Таблица_");
- ПереместитьСтрокуТаблицы(Направление, ТаблицаИмя);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_ТаблицаПорядка_СортироватьПоВозрастанию(Команда)
-
- // Установка направления сортировки.
- ИзменитьНаправлениеСортировкиТаблицы(Команда.Имя, НаправлениеСортировкиКомпоновкиДанных.Возр);
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_ТаблицаПорядка_СортироватьПоУбыванию(Команда)
-
- // Установка направления сортировки.
- ИзменитьНаправлениеСортировкиТаблицы(Команда.Имя, НаправлениеСортировкиКомпоновкиДанных.Убыв);
-
+Процедура Подключаемый_ЗагрузитьПользовательскуюНастройку(Команда)
+ КнопкаИдентификатор = Прав(Команда.Имя, 32);
+ КнопкаУникальныйИдентификатор = ПривестиИмяКИдентификатору(КнопкаИдентификатор);
+ НеобходимоОбновитьНастройки = Истина;
+ УстановитьТекущиеПользовательскиеНастройки(КнопкаУникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
@@ -1094,63 +971,6 @@
КонецЕсли;
КонецФункции
-&НаКлиенте
-Процедура ПереместитьСтрокуТаблицы(Направление, ТаблицаИмя)
-
- СтрокаТаблицы = Элементы[ТаблицаИмя].ТекущиеДанные;
- Если СтрокаТаблицы = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- Таблица = ЭтотОбъект[ТаблицаИмя];
- ИндексСтрокиТаблицы = Таблица.Индекс(СтрокаТаблицы);
- Если ИндексСтрокиТаблицы + Направление < 0 ИЛИ ИндексСтрокиТаблицы + Направление >= Таблица.Количество() Тогда
- Возврат;
- КонецЕсли;
-
- ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ТаблицаИмя);
- СтрокаПользовательскойНастройки = ФункцииОтчетовКлиентСервер.НайтиВложеннуюПользовательскуюНастройку(ПользовательскаяНастройкаКД, СтрокаТаблицы.Идентификатор);
-
- ПользовательскаяНастройкаКД.Элементы.Сдвинуть(СтрокаПользовательскойНастройки, Направление);
- Таблица.Сдвинуть(ИндексСтрокиТаблицы, Направление);
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ИзменитьНаправлениеСортировкиТаблицы(ИмяЭлемента, Направление)
-
- // Формирование сведений о таблице.
- ИдентификаторЭлемента = Прав(ИмяЭлемента, 32);
- ШаблонГенерацииПрефикс = Лев(ИмяЭлемента, Найти(ИмяЭлемента, "_")-1);
- ТаблицаИмя = ШаблонГенерацииПрефикс + "_Таблица_" + ИдентификаторЭлемента;
-
- // Получение данных.
- СтрокаТаблицы = Элементы[ТаблицаИмя].ТекущиеДанные;
- Если СтрокаТаблицы = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- ПользовательскаяНастройкаКД = НайтиПользовательскуюНастройкуЭлемента(ИдентификаторЭлемента);
- СтрокаПользовательскойНастройки = ФункцииОтчетовКлиентСервер.НайтиВложеннуюПользовательскуюНастройку(ПользовательскаяНастройкаКД, СтрокаТаблицы.Идентификатор);
- Если СтрокаПользовательскойНастройки = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- // Заполнение необязательных параметров.
- Если Направление = Неопределено Тогда
- Если СтрокаПользовательскойНастройки.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр Тогда
- Направление = НаправлениеСортировкиКомпоновкиДанных.Убыв;
- Иначе
- Направление = НаправлениеСортировкиКомпоновкиДанных.Возр;
- КонецЕсли;
- КонецЕсли;
-
- // Изменение направления сортировки.
- СтрокаПользовательскойНастройки.ТипУпорядочивания = Направление;
- СтрокаТаблицы.Направление = Направление;
-
-КонецПроцедуры
-
&НаКлиенте
Функция НайтиПользовательскуюНастройкуЭлемента(ИмяИлиИдентификаторЭлемента)
// Для пользовательских настроек хранятся идентификаторы компоновки данных,
@@ -1164,6 +984,25 @@
Возврат Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(ИдентификаторКД);
КонецФункции
+&НаКлиенте
+Функция НайтиДополнительныеНастройкиЭлемента(ИмяИлиИдентификаторЭлемента)
+ // Для пользовательских настроек хранятся идентификаторы компоновки данных,
+ // поскольку они не могут храниться по ссылке (происходит копирование значения).
+ Если СтрДлина(ИмяИлиИдентификаторЭлемента) = 32 Тогда
+ ИдентификаторЭлемента = ИмяИлиИдентификаторЭлемента;
+ Иначе
+ ИдентификаторЭлемента = Прав(ИмяИлиИдентификаторЭлемента, 32);
+ КонецЕсли;
+
+ ВсеДополнительныеНастройки = Неопределено;
+ Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Свойство("ЭлементыФормы", ВсеДополнительныеНастройки);
+ Если ВсеДополнительныеНастройки = Неопределено Тогда
+ Возврат Неопределено
+ Иначе
+ Возврат ВсеДополнительныеНастройки[ИдентификаторЭлемента];
+ КонецЕсли;
+КонецФункции
+
&НаКлиенте
Функция ВыполнитьКонтекстныйВызовСервера(КлючОперации, ПараметрыОперации) Экспорт // Исключение из стандартов разработки
// Программный интерфейс для контекстного вызова сервера из клиентского общего модуля.
@@ -1230,79 +1069,14 @@
КонецПроцедуры
&НаКлиенте
-Процедура ПоказатьДиалогПодбораДляСпискаПослеВыбораТипа(ВыбранныйЭлемент, ПараметрыЭлемента) Экспорт
- Если ВыбранныйЭлемент <> Неопределено Тогда
- ПараметрыЭлемента.ВыбранныйТип = ВыбранныйЭлемент.Значение;
- ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента);
+Процедура СформироватьПриНеобходимости()
+ Если НеобходимоОбновитьНастройки Тогда
+ ПриОбновленииСоставаПользовательскихНастроекНаСервере(Истина);
КонецЕсли;
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПоказатьДиалогПодбораДляСписка(ПараметрыЭлемента)
- КолонкаЗначениеЭлемент = ПараметрыЭлемента.КолонкаЗначениеЭлемент;
-
- // Полное имя формы выбора.
- // Свойство "ФормаВыбора" недоступно на клиенте даже для чтения,
- // поэтому для хранения предустановленных имен форм выбора используется коллекция БыстрыйПоискИменОбъектовМетаданных.
- ПутьКФорме = БыстрыйПоискИменОбъектовМетаданных.Получить(ПараметрыЭлемента.ИдентификаторЭлемента);
- Если Не ЗначениеЗаполнено(ПутьКФорме) Тогда
- ИмяОбъектаМетаданных = БыстрыйПоискИменОбъектовМетаданных.Получить(ПараметрыЭлемента.ВыбранныйТип);
- Если ПараметрыЭлемента.ВыборТолькоГрупп Тогда
- ВидОбъектаМетаданных = ВРег(Лев(ИмяОбъектаМетаданных, Найти(ИмяОбъектаМетаданных, ".")-1));
- Если ВидОбъектаМетаданных = "СПРАВОЧНИК" Или ВидОбъектаМетаданных = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда
- ПутьКФорме = ИмяОбъектаМетаданных + ".ФормаВыбораГруппы";
- Иначе
- ПутьКФорме = ИмяОбъектаМетаданных + ".ФормаВыбора";
- КонецЕсли;
- Иначе
- ПутьКФорме = ИмяОбъектаМетаданных + ".ФормаВыбора";
- КонецЕсли;
+ Если НадоСформировать Тогда
+ НадоСформировать = Ложь;
+ ОтчетСкомпоноватьРезультат(Неопределено);
КонецЕсли;
-
- ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуИспользованиеГруппИЭлементов(КолонкаЗначениеЭлемент.ВыборГруппИЭлементов);
-
- ПараметрыФормыВыбора = Новый Структура;
- // Стандартные параметры формы.
- ПараметрыФормыВыбора.Вставить("ЗакрыватьПриВыборе", Ложь);
- ПараметрыФормыВыбора.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина);
- ПараметрыФормыВыбора.Вставить("Отбор", Новый Структура);
- // Стандартные параметры формы выбора (см. Расширение управляемой формы для динамического списка).
- ПараметрыФормыВыбора.Вставить("ВыборГруппИЭлементов", ВыборГруппИЭлементов);
- ПараметрыФормыВыбора.Вставить("МножественныйВыбор", Истина);
- ПараметрыФормыВыбора.Вставить("РежимВыбора", Истина);
- // Предполагаемые реквизиты.
- ПараметрыФормыВыбора.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
- ПараметрыФормыВыбора.Вставить("РазрешитьНачалоПеретаскивания", Ложь);
-
- // Добавление фиксированных параметров выбора.
- Для Каждого ПараметрВыбора Из КолонкаЗначениеЭлемент.ПараметрыВыбора Цикл
- Если ПустаяСтрока(ПараметрВыбора.Имя) Тогда
- Продолжить;
- КонецЕсли;
- Если ЗначениеЗаполнено(ПараметрВыбора.Имя) Тогда
- Если ВРег(Лев(ПараметрВыбора.Имя, 6)) = ВРег("Отбор.") Тогда
- ПараметрыФормыВыбора.Отбор.Вставить(Сред(ПараметрВыбора.Имя, 7), ПараметрВыбора.Значение);
- Иначе
- ПараметрыФормыВыбора.Вставить(ПараметрВыбора.Имя, ПараметрВыбора.Значение);
- КонецЕсли;
- КонецЕсли;
- КонецЦикла;
-
- // Добавление динамических параметров выбора (от ведущих).
- Для Каждого СвязьПараметраВыбора Из КолонкаЗначениеЭлемент.СвязиПараметровВыбора Цикл
- Если ПустаяСтрока(СвязьПараметраВыбора.Имя) Тогда
- Продолжить;
- КонецЕсли;
- ВедущийЗначение = ЭтотОбъект[СвязьПараметраВыбора.ПутьКДанным];
- Если ВРег(Лев(СвязьПараметраВыбора.Имя, 6)) = ВРег("Отбор.") Тогда
- ПараметрыФормыВыбора.Отбор.Вставить(Сред(СвязьПараметраВыбора.Имя, 7), ВедущийЗначение);
- Иначе
- ПараметрыФормыВыбора.Вставить(СвязьПараметраВыбора.Имя, ВедущийЗначение);
- КонецЕсли;
- КонецЦикла;
-
- ОткрытьФорму(ПутьКФорме, ПараметрыФормыВыбора, ПараметрыЭлемента.ТаблицаЭлемент);
-
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -1310,7 +1084,12 @@
&НаКлиентеНаСервереБезКонтекста
Функция ПривестиИдентификаторКИмени(Идентификатор)
- Возврат СтрЗаменить(Строка(Идентификатор), "-", "");
+ Возврат СтрЗаменить(СтрЗаменить(Строка(Идентификатор), "-", ""), ".", "_");
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ПривестиИмяКИдентификатору(Имя)
+ Возврат Лев(Имя, 8) + "-" + Сред(Имя, 9, 4) + "-" + Сред(Имя, 13, 4) + "-" + Сред(Имя, 17, 4) + "-" + Сред(Имя, 21);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
@@ -1413,11 +1192,16 @@
КодСимвола = КодСимвола(ИсходнаяСтрока, НомерСимвола);
Если КодСимвола = 32 Или КодСимвола = 160 Тогда // Пробел или неразрывный пробел.
// Пропуск (действие не требуется).
- ИначеЕсли КодСимвола = 45 Тогда // Минус.
+ ИначеЕсли КодСимвола = 45 Или КодСимвола = 40 Тогда // Минус или открывающая скобка.
Если Результат <> 0 Тогда
Возврат 0;
КонецЕсли;
ЗнакОтрицательный = Истина;
+ ИначеЕсли КодСимвола = 41 Тогда // Закрывающая скобка.
+ Если Не ЗнакОтрицательный Или Результат = 0 Тогда // Не было открывающей скобки или нет числа.
+ Возврат 0;
+ КонецЕсли;
+ // Пропуск (действие не требуется).
ИначеЕсли КодСимвола = 44 Или КодСимвола = 46 Тогда // Запятая или точка.
Если ЗнаковПослеЗапятой <> -1 Тогда
Возврат 0; // Разделитель уже был, следовательно это не число.
@@ -1444,16 +1228,46 @@
Возврат Результат;
КонецФункции
+&НаКлиентеНаСервереБезКонтекста
+Функция ДобавитьУникальноеЗначениеВСписок(СписокЗначений, Значение, Представление, Использование)
+ Если Не ЗначениеЗаполнено(Значение) И Не ЗначениеЗаполнено(Представление) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+ ЭлементСписка = СписокЗначений.НайтиПоЗначению(Значение);
+ Если ЭлементСписка = Неопределено Тогда
+ ЭлементСписка = СписокЗначений.Добавить();
+ ЭлементСписка.Значение = Значение;
+ КонецЕсли;
+ Если ЗначениеЗаполнено(Представление) Тогда
+ ЭлементСписка.Представление = Представление;
+ ИначеЕсли Не ЗначениеЗаполнено(ЭлементСписка.Представление) Тогда
+ ЭлементСписка.Представление = Строка(Значение);
+ КонецЕсли;
+ Если Использование И Не ЭлементСписка.Пометка Тогда
+ ЭлементСписка.Пометка = Истина;
+ КонецЕсли;
+ Возврат ЭлементСписка;
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция ЗначенияСписком(Значения)
+ Если ТипЗнч(Значения) = Тип("СписокЗначений") Тогда
+ Возврат Значения;
+ Иначе
+ СписокЗначений = Новый СписокЗначений;
+ ДобавитьУникальноеЗначениеВСписок(СписокЗначений, Значения, Неопределено, Ложь);
+ Значения = СписокЗначений;
+ Возврат СписокЗначений;
+ КонецЕсли;
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Вызов сервера
&НаСервере
Процедура ВидимостьДоступностьКорректность(Изменения = "")
// Быстрые настройки
- Если Изменения = ""
- Или Изменения = "СкрытьПоказатьБыстрыеНастройки"
- Или Изменения = "СкрытьПоказатьПанельОтчетов"
- Или Изменения = "СкрытьПоказатьНастройкиИДругиеОтчеты" Тогда
+ Если Изменения = "" Тогда
// Вычисление параметров отображения.
ПользовательскиеНастройкиКД = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
@@ -1463,42 +1277,17 @@
// Применение параметров отображения.
Элементы.ВсеНастройки.Видимость = ЕстьМедленныеНастройки;
Элементы.КомандыВариантовОтчета.Видимость = ПоказыватьКомандыВариантовОтчетов;
- Элементы.КомандыВариантовПользовательскихНастроек.Видимость = ПоказыватьКомандыВариантовОтчетов И ЕстьМедленныеНастройки;
+ Элементы.ГруппаПользовательскиеНастройки_Левая.Видимость = ПоказыватьКомандыВариантовОтчетов И ЕстьМедленныеНастройки;
+ Элементы.ГруппаПользовательскиеНастройки.Видимость = ПоказыватьКомандыВариантовОтчетов И ЕстьМедленныеНастройки;
- Если ПоказыватьКомандыВариантовОтчетов Тогда
- ЗаполнитьПанельОтчета();
+ Если ВариантыПанелиКлючТекущегоВарианта <> КлючТекущегоВарианта Тогда
+ ВариантыПанелиКлючТекущегоВарианта = КлючТекущегоВарианта;
+ ЗаполнитьКомандыВыбораПользовательскихНастроек();
КонецЕсли;
- ВидимостьПравойПанели = Неопределено;
- ПользовательскиеНастройкиКД.ДополнительныеСвойства.Свойство("ВидимостьПравойПанели", ВидимостьПравойПанели);
- Если ТипЗнч(ВидимостьПравойПанели) <> Тип("Булево") Тогда
- ВидимостьПравойПанели = Истина;
- КонецЕсли;
-
- Элементы.СтраницаБыстрыеНастройки.Видимость = ЕстьБыстрыеНастройки;
- Элементы.СтраницаДругиеОтчеты.Видимость = ЕстьДругиеОтчеты;
- Если ЕстьБыстрыеНастройки И ЕстьДругиеОтчеты Тогда
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Видимость = Истина;
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Заголовок = НСтр("ru = 'Настройки и другие отчеты'");
- Элементы.ПраваяПанель.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху;
- ИначеЕсли ЕстьБыстрыеНастройки Тогда
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Видимость = Истина;
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Заголовок = НСтр("ru = 'Настройки'");
- Элементы.ПраваяПанель.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
- ИначеЕсли ЕстьДругиеОтчеты Тогда
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Видимость = Истина;
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Заголовок = НСтр("ru = 'Другие отчеты'");
- Элементы.ПраваяПанель.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
- Иначе
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Видимость = Ложь;
- ВидимостьПравойПанели = Ложь;
- КонецЕсли;
-
- Если Элементы.ПраваяПанель.Видимость <> ВидимостьПравойПанели Тогда
- Элементы.ПраваяПанель.Видимость = ВидимостьПравойПанели;
- КонецЕсли;
- Элементы.СкрытьПоказатьНастройкиИДругиеОтчеты.Пометка = ВидимостьПравойПанели;
-
+ //Элементы.ВсеНастройки_Левая.Видимость = ЕстьОбычныеНастройки Или ЕстьДругиеОтчеты;
+ //Элементы.ВсеНастройки.Видимость = ЕстьОбычныеНастройки Или ЕстьДругиеОтчеты;
+ Элементы.ФормироватьСразу.Пометка = НастройкиОтчета.ФормироватьСразу;
КонецЕсли;
// Заголовок
@@ -1513,13 +1302,30 @@
Заголовок = РежимРасшифровкиПредставлениеВладельца + " (" + НРег(Заголовок) + ")";
КонецЕсли;
КонецЕсли;
+
КонецПроцедуры
&НаСервере
Процедура БыстрыеНастройкиЗаполнить(Знач ПараметрыЗаполнения)
+ Если ПараметрыЗаполнения.Свойство("Переформировать") И ПараметрыЗаполнения.Переформировать Тогда
+ НадоСформировать = Истина;
+ КонецЕсли;
+
+ // Вставка значений по умолчанию для обязательных ключей параметров заполнения.
+ БыстрыеНастройкиДозаполнитьПараметры(ПараметрыЗаполнения);
+
+ Если НастройкиОтчета.События.ПередЗаполнениемПанелиБыстрыхНастроек
+ Или НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек Тогда
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ КонецЕсли;
+
// Вызов переопределяемого модуля.
- ФормаОтчетаПереопределяемый.ПередЗаполнениемПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ Если НастройкиОтчета.События.ПередЗаполнениемПанелиБыстрыхНастроек Тогда
+ ОтчетОбъект.ПередЗаполнениемПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПередЗаполнениемПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ КонецЕсли;
// Запись новых настроек варианта и пользовательских настроек в компоновщик.
БыстрыеНастройкиЗагрузитьНастройкиВКомпоновщик(ПараметрыЗаполнения);
@@ -1530,18 +1336,30 @@
// Добавление элементов актуальных настроек и загрузка значений.
БыстрыеНастройкиСоздатьЭлементыУправленияИЗагрузитьЗначения(ПараметрыЗаполнения);
+ // Обработка дополнительных настроек.
+ ПослеИзмененияКлючевыхСостояний(ПараметрыЗаполнения);
+
// Заголовок и свойства элементов.
ВидимостьДоступностьКорректность();
// Вызов переопределяемого модуля.
- ФормаОтчетаПереопределяемый.ПослеЗаполненияПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ Если НастройкиОтчета.События.ПослеЗаполненияПанелиБыстрыхНастроек Тогда
+ ОтчетОбъект.ПослеЗаполненияПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ Иначе
+ ФормаОтчетаПереопределяемый.ПослеЗаполненияПанелиБыстрыхНастроек(ЭтотОбъект, ПараметрыЗаполнения);
+ КонецЕсли;
КонецПроцедуры
&НаСервере
Функция КонтекстныйВызовСервера(КлючОперации, ПараметрыОперации)
РезультатВызова = Новый Структура;
- ФормаОтчетаПереопределяемый.КонтекстныйВызовСервера(ЭтотОбъект, КлючОперации, ПараметрыОперации, РезультатВызова);
+ Если НастройкиОтчета.События.КонтекстныйВызовСервера Тогда
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ ОтчетОбъект.КонтекстныйВызовСервера(ЭтотОбъект, КлючОперации, ПараметрыОперации, РезультатВызова);
+ Иначе
+ ФормаОтчетаПереопределяемый.КонтекстныйВызовСервера(ЭтотОбъект, КлючОперации, ПараметрыОперации, РезультатВызова);
+ КонецЕсли;
Возврат РезультатВызова;
КонецФункции
@@ -1552,10 +1370,7 @@
// Формирование отчета.
ДопСвойства.Вставить("КлючВарианта", КлючТекущегоВарианта);
-
- ПараметрыПечатиДоФормирования = НастройкиОтчета.ПараметрыПечатиПоУмолчанию;
- ЗаполнитьЗначенияСвойств(ПараметрыПечатиДоФормирования, ОтчетТабличныйДокумент);
-
+ НастройкиПечатиСохранить();
ИнформацияОбОшибке = Неопределено;
Попытка
СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
@@ -1563,8 +1378,7 @@
ИнформацияОбОшибке = ИнформацияОбОшибке();
КонецПопытки;
ДопСвойства.Удалить("КлючВарианта");
-
- ЗаполнитьЗначенияСвойств(ОтчетТабличныйДокумент, ПараметрыПечатиДоФормирования);
+ НастройкиПечатиВосстановить();
Если ИнформацияОбОшибке <> Неопределено Тогда
ПоказатьОшибкиФормирования(ИнформацияОбОшибке);
@@ -1687,13 +1501,23 @@
Для Каждого СтрокаСвязиОтбора Из ВсеСвязиВедущего.ПараметрыВыбораПодчиненных Цикл
ПодчиненныйЭлемент = Элементы[СтрокаСвязиОтбора.ПодчиненныйИмяЭлемента];
УстановитьСвязьПараметровВыбора(ПодчиненныйЭлемент, СтрокаСвязиОтбора, Использование);
- Если ЗначениеИзменено = Истина И СтрокаСвязиОтбора.Действие = РежимИзмененияСвязанногоЗначения.Очищать Тогда
- Если ТипЗнч(ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита]) = Тип("СписокЗначений") Тогда
- ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита].Очистить();
- Иначе
- ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита] = Неопределено;
+ Если ЗначениеИзменено = Истина
+ И СтрокаСвязиОтбора.Действие = РежимИзмененияСвязанногоЗначения.Очищать Тогда
+ Если Не ПустаяСтрока(СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита) Тогда
+ ЗначениеРеквизита = ЗначениеРеквизита(СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита);
+ Если ЗначениеРеквизита <> Неопределено Тогда
+ Если ТипЗнч(ЗначениеРеквизита) = Тип("СписокЗначений") Тогда
+ ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита].Очистить();
+ Иначе
+ ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяРеквизита] = Неопределено;
+ КонецЕсли;
+ КонецЕсли;
КонецЕсли;
- Если Не ПустаяСтрока(СтрокаСвязиОтбора.ПодчиненныйИмяФлажка) Тогда
+ Если Не ПустаяСтрока(СтрокаСвязиОтбора.ПодчиненныйИмяФлажка)
+ И ЗначениеРеквизита(СтрокаСвязиОтбора.ПодчиненныйИмяФлажка) <> Неопределено Тогда
+ ИдентификаторКД = БыстрыйПоискПользовательскихНастроек.Получить(СтрокаСвязиОтбора.ПодчиненныйИдентификатор);
+ ПользовательскаяНастройка = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(ИдентификаторКД);
+ ПользовательскаяНастройка.Использование = Ложь;
ЭтотОбъект[СтрокаСвязиОтбора.ПодчиненныйИмяФлажка] = Ложь;
КонецЕсли;
КонецЕсли;
@@ -1706,14 +1530,20 @@
// Сервер
&НаСервере
-Процедура БыстрыеНастройкиЗагрузитьНастройкиВКомпоновщик(ПараметрыЗаполнения)
+Процедура БыстрыеНастройкиДозаполнитьПараметры(ПараметрыЗаполнения)
+ Если Не ПараметрыЗаполнения.Свойство("Событие") Тогда
+ ПараметрыЗаполнения.Вставить("Событие", Новый Структура("Имя", ""));
+ КонецЕсли;
Если Не ПараметрыЗаполнения.Свойство("ВариантМодифицирован") Тогда
ПараметрыЗаполнения.Вставить("ВариантМодифицирован", Ложь);
КонецЕсли;
Если Не ПараметрыЗаполнения.Свойство("ПользовательскиеНастройкиМодифицированы") Тогда
ПараметрыЗаполнения.Вставить("ПользовательскиеНастройкиМодифицированы", Ложь);
КонецЕсли;
-
+КонецПроцедуры
+
+&НаСервере
+Процедура БыстрыеНастройкиЗагрузитьНастройкиВКомпоновщик(ПараметрыЗаполнения)
Если ПараметрыЗаполнения.Свойство("КомпоновщикНастроекКД") Тогда
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПараметрыЗаполнения.КомпоновщикНастроекКД.Настройки);
Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПараметрыЗаполнения.КомпоновщикНастроекКД.ПользовательскиеНастройки);
@@ -1727,7 +1557,7 @@
Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПараметрыЗаполнения.ПользовательскиеНастройкиКД);
КонецЕсли;
- Если ПараметрыЗаполнения.Свойство("СброситьНастройки") И ПараметрыЗаполнения.СброситьНастройки = Истина Тогда
+ Если ПараметрыЗаполнения.Событие.Имя = "НастройкиПоУмолчанию" Тогда
ПустойКомпоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПустойКомпоновщик.ПользовательскиеНастройки);
КонецЕсли;
@@ -1740,26 +1570,24 @@
ПользовательскиеНастройкиМодифицированы = Истина;
КонецЕсли;
- Если ПараметрыЗаполнения.ВариантМодифицирован
- Или ПараметрыЗаполнения.ПользовательскиеНастройкиМодифицированы Тогда
- Если ПараметрыЗаполнения.Свойство("Событие") И ПараметрыЗаполнения.Событие.Имя = "ПослеФормирования" Тогда
- Возврат;
- КонецЕсли;
- ОтображениеСостояния = Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния;
- ОтображениеСостояния.Видимость = Истина;
- ОтображениеСостояния.Текст = НСтр("ru = 'Отчет не сформирован. Нажмите ""Сформировать"" для получения отчета.'");
- ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.Неактуальность;
+ Если НастройкиОтчета.ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек Тогда
+ НастройкиОтчета.ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек = Ложь;
+ НастройкиОтчета.ФормироватьСразу = ВариантыОтчетовКлиентСервер.СвойствоСтруктуры(
+ Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства,
+ "ФормироватьСразу",
+ НастройкиОтчета.ФормироватьСразу);
КонецЕсли;
-
КонецПроцедуры
&НаСервере
Процедура БыстрыеНастройкиУдалитьСтарыеЭлементыИКоманды(ПараметрыЗаполнения)
-
// Удаление элементов.
УдаляемыеЭлементы = Новый Массив;
- ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.Периоды.ПодчиненныеЭлементы);
ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.БыстрыеНастройки.ПодчиненныеЭлементы);
+ //ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.БыстрыеНастройкиКолонка1.ПодчиненныеЭлементы);
+ //ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.БыстрыеНастройкиКолонка2.ПодчиненныеЭлементы);
+ //ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.БыстрыеНастройкиКолонка3.ПодчиненныеЭлементы);
+ //ДобавитьПодчиненныеЭлементы(УдаляемыеЭлементы, Элементы.БыстрыеНастройкиКолонка4.ПодчиненныеЭлементы);
Для Каждого Элемент Из УдаляемыеЭлементы Цикл
Элементы.Удалить(Элемент);
КонецЦикла;
@@ -1774,7 +1602,6 @@
Для Каждого Команда Из УдаляемыеКоманды Цикл
Команды.Удалить(Команда);
КонецЦикла;
-
КонецПроцедуры
&НаСервере
@@ -1795,7 +1622,10 @@
СоответствиеИменОбъектовМетаданных = Новый Соответствие;
СоответствиеОтключаемыхСвязей = Новый Соответствие;
+ СоответствиеХранимыхСписковВыбора = Новый Соответствие;
+
ЕстьБыстрыеНастройки = Ложь;
+ ЕстьОбычныеНастройки = Ложь;
// Удаление реквизитов
ПараметрыЗаполнения.Вставить("Реквизиты", Новый Структура);
@@ -1812,8 +1642,6 @@
// Локальные переменные для установки значений и свойств после создания реквизитов.
ДобавленныеПоляВвода = Новый Структура;
- ДобавленныеСпискиЗначений = Новый Массив;
- ДобавленныеТаблицыСФлажками = Новый Массив;
ДобавленныеСтандартныеПериоды = Новый Массив;
// Структура связей.
@@ -1829,30 +1657,62 @@
ПользовательскиеНастройкиКД = КомпоновщикНастроекКД.ПользовательскиеНастройки;
НастройкиКД = КомпоновщикНастроекКД.ПолучитьНастройки();
+ Если ПользовательскиеНастройкиКД.ДополнительныеСвойства.Свойство("ЭлементыФормы") Тогда
+ ДополнительныеНастройкиЭлементов = ПользовательскиеНастройкиКД.ДополнительныеСвойства.ЭлементыФормы;
+ Иначе
+ ДополнительныеНастройкиЭлементов = Новый Соответствие;
+ КонецЕсли;
+
Режимы = РежимОтображенияЭлементаНастройкиКомпоновкиДанных;
+ ШаблонНастройки = Новый Структура("Тип, Подтип, Шаблон, СтрокаДерева,
+ |ПользовательскаяСКД, ИдентификаторСКД, ВариантаСКД, ДоступнаяСКД");
+ ШаблонНастройки.Вставить("Иерархия", Ложь);
+ ШаблонНастройки.Вставить("ФлажокИспользование", Ложь);
+ ШаблонНастройки.Вставить("ВыводВЗакладке", Ложь);
+ ШаблонНастройки.Вставить("ВводСписком", Ложь);
+ ШаблонНастройки.Вставить("ОграничиватьВыборУказаннымиЗначениями", Ложь);
+ ШаблонНастройки = Новый ФиксированнаяСтруктура(ШаблонНастройки);
+
+ ГруппыВывода = Новый Структура;
+ ГруппыВывода.Вставить("Быстрые", Новый Структура("Порядок, Размер", Новый Массив, 0));
+
+ ОтчетОбъект = Неопределено;
+
+ ДеревоВарианта = Новый ДеревоЗначений;
+ ДеревоВарианта.Колонки.Добавить("Настройка");
+ ДеревоВарианта.Колонки.Добавить("ТипНастройки", Новый ОписаниеТипов("Строка"));
+ ДеревоВарианта.Колонки.Добавить("Заголовок", Новый ОписаниеТипов("Строка"));
+ ДеревоВарианта.Колонки.Добавить("ЕстьСтруктура", Новый ОписаниеТипов("Булево"));
+ ДеревоВарианта.Колонки.Добавить("ЕстьПоляИОформление", Новый ОписаниеТипов("Булево"));
+ ДеревоВариантаЗарегистрироватьЭлемент(НастройкиКД, ДеревоВарианта.Строки);
+
+ ЕстьЗагрузкаДанныхИзФайла = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла");
+
// Перебор коллекций пользовательских настроек.
// Отдельный цикл верхнего уровня нужен для поддержки сценария,
// когда коллекция отборов выведена в пользовательские настройки
// и можно добавлять новые отборы не меняя настроек варианта.
- НаборыПользовательскихНастроек = Новый Массив;
- НаборыПользовательскихНастроек.Добавить(ПользовательскиеНастройкиКД.Элементы);
+ НаборыПользовательскихНастроек = Новый СписокЗначений;
+ НаборыПользовательскихНастроек.Добавить(ПользовательскиеНастройкиКД.Элементы, "Отчет.КомпоновщикНастроек.ПользовательскиеНастройки");
Пока Истина Цикл
Если НаборыПользовательскихНастроек.Количество() = 0 Тогда
Прервать;
КонецЕсли;
- НаборПользовательскихНастроек = НаборыПользовательскихНастроек[0];
+
+ НаборПользовательскихНастроек = НаборыПользовательскихНастроек[0].Значение;
+ ПутьПользовательскихНастроек = НаборыПользовательскихНастроек[0].Представление;
НаборыПользовательскихНастроек.Удалить(0);
ЭтоНаборОтбора = (ТипЗнч(НаборПользовательскихНастроек) = Тип("КоллекцияЭлементовОтбораКомпоновкиДанных"));
// Перебор пользовательских настроек.
Для Каждого ПользовательскаяНастройка Из НаборПользовательскихНастроек Цикл
-
- Если ПользовательскаяНастройка.РежимОтображения = Режимы.Недоступный
- Или ПользовательскаяНастройка.РежимОтображения = Режимы.Обычный Тогда
+ РежимОтображения = ПользовательскаяНастройка.РежимОтображения;
+ Если РежимОтображения = Режимы.Недоступный Тогда
Продолжить;
КонецЕсли;
+ ИндексЭлемента = НаборПользовательскихНастроек.Индекс(ПользовательскаяНастройка);
ИдентификаторСКД = ПользовательскаяНастройка.ИдентификаторПользовательскойНастройки;
Если Не ЗначениеЗаполнено(ИдентификаторСКД) Тогда
Продолжить;
@@ -1861,154 +1721,121 @@
СоответствиеПользовательскихНастроек.Вставить(ИдентификаторЭлемента, ПользовательскиеНастройкиКД.ПолучитьИдентификаторПоОбъекту(ПользовательскаяНастройка));
+ СвойстваНастройки = Новый Структура(ШаблонНастройки);
+ СвойстваНастройки.Тип = ТипНастройкиСтрокой(ТипЗнч(ПользовательскаяНастройка));
+ СвойстваНастройки.ПользовательскаяСКД = ПользовательскаяНастройка;
+ СвойстваНастройки.ИдентификаторСКД = ИдентификаторСКД;
+
+ //СвойстваНастройки.СтрокаДерева = Неопределено;
Если ЭтоНаборОтбора Тогда
- ОбщаяНастройка = ПользовательскаяНастройка;
+ СвойстваНастройки.ВариантаСКД = ПользовательскаяНастройка;
Иначе
- ОбщаяНастройка = ФункцииОтчетовКлиентСервер.ПолучитьОбъектПоПользовательскомуИдентификатору(НастройкиКД, ИдентификаторСКД);
- Если ОбщаяНастройка = Неопределено Тогда
+ ДеревоВариантаНайти(ДеревоВарианта, СвойстваНастройки);
+ //СвойстваНастройки.ВариантаСКД = ДеревоВариантаНайти(ДеревоВарианта, СвойстваНастройки, СвойстваНастройки.СтрокаДерева);
+ Если СвойстваНастройки.ВариантаСКД = Неопределено Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
- ТипОбщейНастройки = ТипЗнч(ОбщаяНастройка);
- Если ТипОбщейНастройки = Тип("ОтборКомпоновкиДанных") Тогда
- НаборыПользовательскихНастроек.Добавить(ПользовательскаяНастройка.Элементы);
- Продолжить;
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+ //НаборыПользовательскихНастроек.Добавить(ПользовательскаяНастройка.Элементы);
+ //Продолжить;
КонецЕсли;
- Если Не ЭтоНаборОтбора
- И ПользовательскаяНастройка.РежимОтображения = Режимы.Авто
- И ОбщаяНастройка.РежимОтображения <> Режимы.БыстрыйДоступ Тогда
+
+ Если РежимОтображения = Режимы.Авто Тогда
+ РежимОтображения = СвойстваНастройки.ВариантаСКД.РежимОтображения;
+ КонецЕсли;
+ Если РежимОтображения = Режимы.БыстрыйДоступ Тогда
+ ЭтоБыстраяНастройка = Истина;
+ ИначеЕсли РежимОтображения = Режимы.Обычный Тогда
+ ЕстьОбычныеНастройки = Истина;
+ Продолжить;
+ Иначе
Продолжить;
КонецЕсли;
- ДоступнаяНастройка = ФункцииОтчетовКлиентСервер.НайтиДоступнуюНастройку(НастройкиКД, ОбщаяНастройка);
+ //СвойстваНастройки.ДоступнаяСКД = ФункцииОтчетовКлиентСервер.НайтиДоступнуюНастройку(НастройкиКД, СвойстваНастройки.ВариантаСКД);
СтруктураПредставлений = Новый Структура("Представление, ПредставлениеПользовательскойНастройки", "", "");
- ЗаполнитьЗначенияСвойств(СтруктураПредставлений, ОбщаяНастройка);
+ ЗаполнитьЗначенияСвойств(СтруктураПредставлений, СвойстваНастройки.ВариантаСКД);
Если ЗначениеЗаполнено(СтруктураПредставлений.ПредставлениеПользовательскойНастройки) Тогда
ЭлементЗаголовок = СтруктураПредставлений.ПредставлениеПользовательскойНастройки;
ИначеЕсли ЗначениеЗаполнено(СтруктураПредставлений.Представление) Тогда
ЭлементЗаголовок = СтруктураПредставлений.Представление;
- ИначеЕсли ДоступнаяНастройка <> Неопределено И ЗначениеЗаполнено(ДоступнаяНастройка.Заголовок) Тогда
- ЭлементЗаголовок = ДоступнаяНастройка.Заголовок;
+ ИначеЕсли СвойстваНастройки.ДоступнаяСКД <> Неопределено И ЗначениеЗаполнено(СвойстваНастройки.ДоступнаяСКД.Заголовок) Тогда
+ ЭлементЗаголовок = СвойстваНастройки.ДоступнаяСКД.Заголовок;
Иначе
- ЭлементЗаголовок = ПредставлениеПользовательскойНастройки(ПользовательскаяНастройка, ОбщаяНастройка, ТипОбщейНастройки);
+ ЭлементЗаголовок = ПредставлениеПользовательскойНастройки(СвойстваНастройки);
КонецЕсли;
- СменитьТипНаГруппуЭлементовОтбора = ЗначениеЗаполнено(СтруктураПредставлений.Представление);
+ Если ЗначениеЗаполнено(СтруктураПредставлений.Представление) Тогда
+ СвойстваНастройки.Тип = "ФиксированныйОтбор"; // Виртуальный тип.
+ КонецЕсли;
- Если ТипОбщейНастройки = Тип("ГруппаЭлементовОтбораКомпоновкиДанных")
- ИЛИ ТипОбщейНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных")
- ИЛИ СменитьТипНаГруппуЭлементовОтбора Тогда
+ Если СвойстваНастройки.Тип = "ГруппаЭлементовОтбора"
+ Или СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта"
+ Или СвойстваНастройки.Тип = "ФиксированныйОтбор"
+ Или СвойстваНастройки.Тип = "Группировка"
+ Или СвойстваНастройки.Тип = "ФиксированныйОтбор"
+ Или СвойстваНастройки.Тип = "Таблица"
+ Или СвойстваНастройки.Тип = "ГруппировкаТаблицы"
+ Или СвойстваНастройки.Тип = "Диаграмма"
+ Или СвойстваНастройки.Тип = "ГруппировкаДиаграммы"
+ Или СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Тип", "ТолькоФлажокИспользование");
- ШаблонГенерации.Вставить("Префикс", "ГруппаОтбора");
+ СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование";
- ИначеЕсли ТипОбщейНастройки = Тип("ГруппировкаКомпоновкиДанных")
- ИЛИ ТипОбщейНастройки = Тип("ТаблицаКомпоновкиДанных")
- ИЛИ ТипОбщейНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных")
- ИЛИ ТипОбщейНастройки = Тип("ДиаграммаКомпоновкиДанных")
- ИЛИ ТипОбщейНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Тип", "ТолькоФлажокИспользование");
- ШаблонГенерации.Вставить("Префикс", "ЭлементСтруктуры");
-
- ИначеЕсли ТипОбщейНастройки = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
-
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Тип", "ТолькоФлажокИспользование");
- ШаблонГенерации.Вставить("Префикс", "УсловноеОформление");
-
- ИначеЕсли ТипОбщейНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
-
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Тип", "ТаблицаПорядкаСФлажками");
- ШаблонГенерации.Вставить("Префикс", "ВыбранныеПоляКомпоновкиДанных");
- ШаблонГенерации.Вставить("Иерархия", Истина);
-
- ИначеЕсли ТипОбщейНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
-
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Тип", "ТаблицаПорядкаСФлажками");
- ШаблонГенерации.Вставить("Префикс", "ПорядокКомпоновкиДанных");
- ШаблонГенерации.Вставить("Иерархия", Ложь);
-
- ИначеЕсли ТипОбщейНастройки = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
-
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Тип", "ТаблицаПорядкаСФлажками");
- ШаблонГенерации.Вставить("Префикс", "СтруктураНастроекКомпоновкиДанных");
- ШаблонГенерации.Вставить("Иерархия", Ложь);
-
- ИначеЕсли ТипОбщейНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
-
- Если ДоступнаяНастройка = Неопределено Тогда
+ Если СвойстваНастройки.ДоступнаяСКД = Неопределено Тогда
Продолжить; // Имя параметра изменилось или параметр был удален.
КонецЕсли;
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Префикс", "Параметр");
-
- АнализТиповИСвязей(ИдентификаторЭлемента, ДоступнаяНастройка, ШаблонГенерации, СоответствиеИменОбъектовМетаданных, Связи); // Определение типа значения настройки.
-
- ШаблонГенерации.Вставить("ФлажокИспользование", ДоступнаяНастройка.Использование <> ИспользованиеПараметраКомпоновкиДанных.Всегда);
+ СвойстваНастройки.ФлажокИспользование = СвойстваНастройки.ДоступнаяСКД.Использование <> ИспользованиеПараметраКомпоновкиДанных.Всегда;
Если ТипЗнч(ПользовательскаяНастройка.Значение) = Тип("СтандартныйПериод") Тогда
- ШаблонГенерации.Вставить("Тип", "СтандартныйПериод");
- ИначеЕсли ДоступнаяНастройка.ДоступенСписокЗначений Тогда
- ШаблонГенерации.Вставить("Тип", "СписокСПодбором");
- НастройкиСВидомСравненияРавно.Вставить(ИдентификаторЭлемента, Истина);
- ИначеЕсли Не ШаблонГенерации.ФлажокИспользование И ШаблонГенерации.СодержитТипБулево И ШаблонГенерации.КоличествоТипов = 1 Тогда
- ШаблонГенерации.Вставить("Тип", "ТолькоФлажокЗначения"); // Замена поля "Да/Нет" на флажок.
+ СвойстваНастройки.Шаблон = "СтандартныйПериод";
+ ИначеЕсли СвойстваНастройки.ДоступнаяСКД.ДоступенСписокЗначений Тогда
+ СвойстваНастройки.ВводСписком = Истина;
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
Иначе
- ШаблонГенерации.Вставить("Тип", "ПолеВвода");
+ СвойстваНастройки.Шаблон = "ПолеВвода";
+ КонецЕсли;
+
+ АнализТиповИСвязей(ИдентификаторЭлемента, СвойстваНастройки, СоответствиеИменОбъектовМетаданных, Связи); // Определение типа значения настройки.
+
+ Если СвойстваНастройки.Шаблон = "ПолеВвода" Тогда
НастройкиСВидомСравненияРавно.Вставить(ИдентификаторЭлемента, Истина);
КонецЕсли;
- Если ТипЗнч(ДоступнаяНастройка.ДоступныеЗначения) = Тип("СписокЗначений") И ДоступнаяНастройка.ДоступныеЗначения.Количество() > 0 Тогда
- ШаблонГенерации.Вставить("ВыборИзСписка", Истина);
- Иначе
- ШаблонГенерации.Вставить("ВыборИзСписка", Ложь);
- КонецЕсли;
-
- Если Не ШаблонГенерации.ФлажокИспользование Тогда
+ Если Не СвойстваНастройки.ФлажокИспользование Тогда
ПользовательскаяНастройка.Использование = Истина;
КонецЕсли;
- ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(ОбщаяНастройка.Параметр));
+ ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(СвойстваНастройки.ВариантаСКД.Параметр));
ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных.Вставить(ПолеКД, ИдентификаторЭлемента);
- ИначеЕсли ТипОбщейНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
- Если ДоступнаяНастройка = Неопределено Тогда
+ Если СвойстваНастройки.ДоступнаяСКД = Неопределено Тогда
Продолжить; // Имя поля изменилось или поле было удалено.
КонецЕсли;
- ШаблонГенерации = Новый Структура;
- ШаблонГенерации.Вставить("Префикс", "Отбор");
- ШаблонГенерации.Вставить("ФлажокИспользование", Истина);
-
- АнализТиповИСвязей(ИдентификаторЭлемента, ДоступнаяНастройка, ШаблонГенерации, СоответствиеИменОбъектовМетаданных, Связи); // Определение типа значения настройки.
-
+ СвойстваНастройки.ФлажокИспользование = Истина;
Если ТипЗнч(ПользовательскаяНастройка.ПравоеЗначение) = Тип("СтандартныйПериод") Тогда
- ШаблонГенерации.Вставить("Тип", "СтандартныйПериод");
+ СвойстваНастройки.Шаблон = "СтандартныйПериод";
ИначеЕсли ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено
Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено Тогда
- ШаблонГенерации.Вставить("Тип", "ТолькоФлажокИспользование");
+ СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование";
ЭлементЗаголовок = ЭлементЗаголовок + ": " + НРег(Строка(ПользовательскаяНастройка.ВидСравнения));
ИначеЕсли ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке
Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии
Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке
Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда
- ШаблонГенерации.Вставить("Тип", "СписокСПодбором");
- Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке
- Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда
- ЭлементЗаголовок = ЭлементЗаголовок + " (" + НСтр("ru = 'за исключением выбранных'") + ")";
- КонецЕсли;
- ШаблонГенерации.Вставить("ВыборГруппИЭлементов", ГруппыИЭлементы.ГруппыИЭлементы);
+ СвойстваНастройки.ВводСписком = Истина;
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
+ СвойстваНастройки.Вставить("ВыборГруппИЭлементов", ГруппыИЭлементы.ГруппыИЭлементы);
Иначе
- ШаблонГенерации.Вставить("Тип", "ПолеВвода");
+ СвойстваНастройки.Шаблон = "ПолеВвода";
Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Тогда
НастройкиСВидомСравненияРавно.Вставить(ИдентификаторЭлемента, Истина);
КонецЕсли;
@@ -2018,39 +1845,163 @@
КонецЕсли;
Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии
Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии Тогда
- ШаблонГенерации.Вставить("ВыборГруппИЭлементов", ГруппыИЭлементы.Группы);
+ СвойстваНастройки.Вставить("ВыборГруппИЭлементов", ГруппыИЭлементы.Группы);
КонецЕсли;
КонецЕсли;
- ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных.Вставить(ОбщаяНастройка.ЛевоеЗначение, ИдентификаторЭлемента);
+ АнализТиповИСвязей(ИдентификаторЭлемента, СвойстваНастройки, СоответствиеИменОбъектовМетаданных, Связи); // Определение типа значения настройки.
- Если ТипЗнч(ДоступнаяНастройка.ДоступныеЗначения) = Тип("СписокЗначений") И ДоступнаяНастройка.ДоступныеЗначения.Количество() > 0 Тогда
- ШаблонГенерации.Вставить("ВыборИзСписка", Истина);
- Иначе
- ШаблонГенерации.Вставить("ВыборИзСписка", Ложь);
- КонецЕсли;
+ ПоискИдентификаторовБыстрыхНастроекПоПолюКомпоновкиДанных.Вставить(СвойстваНастройки.ВариантаСКД.ЛевоеЗначение, ИдентификаторЭлемента);
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками";
+ СвойстваНастройки.Иерархия = Истина;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+
+ СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками";
Иначе
- Продолжить;
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
КонецЕсли;
- ЕстьБыстрыеНастройки = Истина;
+ Если ЭтоБыстраяНастройка И СвойстваНастройки.Шаблон = "ТаблицаПорядкаСФлажками" Тогда
+ СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком";
+ КонецЕсли;
+
+ // Параметры выбора: условия, ограничения и список значений.
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек"
+ Или СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ // Значение списка.
+ Если СвойстваНастройки.ВводСписком Тогда
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ОтмеченныеЗначения = ЗначенияСписком(ПользовательскаяНастройка.Значение);
+ Иначе
+ ОтмеченныеЗначения = ЗначенияСписком(ПользовательскаяНастройка.ПравоеЗначение);
+ КонецЕсли;
+ СвойстваНастройки.Вставить("ОтмеченныеЗначения", ОтмеченныеЗначения);
+ КонецЕсли;
+
+ // Формирование параметров и текста запроса.
+ СвойстваНастройки.Вставить("ЗначенияДляВыбора", Новый СписокЗначений);
+ СвойстваНастройки.Вставить("ЗапросЗначенийВыбора", Новый Запрос);
+
+ Если ТипЗнч(СвойстваНастройки.ДоступнаяСКД.ДоступныеЗначения) = Тип("СписокЗначений") И СвойстваНастройки.ДоступнаяСКД.ДоступныеЗначения.Количество() > 0 Тогда
+ // Разработчик ограничил выбор списком доступных значений.
+ СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями = Истина;
+ Для Каждого ЭлементСписка Из СвойстваНастройки.ДоступнаяСКД.ДоступныеЗначения Цикл
+ ЗначениеВСКД = ЭлементСписка.Значение;
+ Если Не ЗначениеЗаполнено(ЭлементСписка.Представление)
+ И (ЗначениеВСКД = Неопределено
+ Или ЗначениеВСКД = Тип("Неопределено")
+ Или ЗначениеВСКД = Новый ОписаниеТипов("Неопределено")
+ Или Не ЗначениеЗаполнено(ЗначениеВСКД)) Тогда
+ Продолжить; // Запрет пустых значений.
+ КонецЕсли;
+ Если ТипЗнч(ЗначениеВСКД) = Тип("Тип") Тогда
+ МассивТипов = Новый Массив;
+ МассивТипов.Добавить(ЗначениеВСКД);
+ ЗначениеВФорме = Новый ОписаниеТипов(МассивТипов);
+ Иначе
+ ЗначениеВФорме = ЗначениеВСКД;
+ КонецЕсли;
+ ДобавитьУникальноеЗначениеВСписок(СвойстваНастройки.ЗначенияДляВыбора, ЗначениеВФорме, ЭлементСписка.Представление, Ложь);
+ КонецЦикла;
+ Иначе
+ Если Не СвойстваНастройки.ФлажокИспользование
+ И СвойстваНастройки.СодержитТипБулево
+ И СвойстваНастройки.КоличествоТипов = 1
+ И Не СвойстваНастройки.ВводСписком Тогда
+ СвойстваНастройки.Шаблон = "ТолькоФлажокЗначения"; // Замена поля "Да/Нет" на флажок.
+ КонецЕсли;
+ // Чтение сохраненных ранее настроек.
+ НастройкиСохраненныеРанее = ДополнительныеНастройкиЭлементов[ИдентификаторЭлемента];
+ Если НастройкиСохраненныеРанее <> Неопределено
+ И НастройкиСохраненныеРанее.Свойство("ЗначенияДляВыбора")
+ И ТипЗнч(НастройкиСохраненныеРанее.ЗначенияДляВыбора) = Тип("Массив") Тогда
+ // Фильтр выбранных если изменилось описание типов.
+ Если НастройкиСохраненныеРанее.Свойство("ОписаниеТипов")
+ И ТипЗнч(НастройкиСохраненныеРанее.ОписаниеТипов) = Тип("ОписаниеТипов")
+ И Не ОписанияТиповСовпадают(СвойстваНастройки.ОписаниеТипов, НастройкиСохраненныеРанее.ОписаниеТипов) Тогда
+ Количество = НастройкиСохраненныеРанее.ЗначенияДляВыбора.Количество();
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+ ЗначениеВФорме = НастройкиСохраненныеРанее.ЗначенияДляВыбора[ОбратныйИндекс];
+ Если СвойстваНастройки.ОписаниеТипов.СодержитТип(ТипЗнч(ЗначениеВФорме)) Тогда
+ ДобавитьУникальноеЗначениеВСписок(СвойстваНастройки.ЗначенияДляВыбора, ЗначениеВФорме, Неопределено, Ложь);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Текст для автоматического заполнения значений настройки.
+ Если СвойстваНастройки.КоличествоПеречислений > 0 Тогда
+ // Разработчик не ограничил выбор...
+ // И есть возможность автоматически заполнить список.
+ ШаблонЗапросаПеречислений = "ВЫБРАТЬ Ссылка ИЗ &ИмяПеречисления";
+ ТекстЗапроса = "";
+ Для Каждого ПеречислениеПолноеИмя Из СвойстваНастройки.Перечисления Цикл
+ Если ТекстЗапроса <> "" Тогда
+ ТекстЗапроса = ТекстЗапроса + Символы.ПС + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС + Символы.ПС;
+ КонецЕсли;
+ ТекстЗапроса = ТекстЗапроса + СтрЗаменить(ШаблонЗапросаПеречислений, "&ИмяПеречисления", ПеречислениеПолноеИмя);
+ КонецЦикла;
+ СвойстваНастройки.ЗапросЗначенийВыбора.Текст = ТекстЗапроса;
+ Если СвойстваНастройки.КоличествоПеречислений = СвойстваНастройки.КоличествоТипов Тогда
+ СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями = Истина; // Выбираются только значения перечислений.
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ // Механизмы расширения.
+ ФормаОтчетаПереопределяемый.ПриОпределенииПараметровВыбора(ЭтотОбъект, СвойстваНастройки); // Глобальные настройки вывода типов...
+ Если НастройкиОтчета.События.ПриОпределенииПараметровВыбора Тогда // ... можно переопределить локально для отчета.
+ Если ОтчетОбъект = Неопределено Тогда
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ КонецЕсли;
+ ОтчетОбъект.ПриОпределенииПараметровВыбора(ЭтотОбъект, СвойстваНастройки);
+ КонецЕсли;
+
+ // Автоматическое заполнение.
+ Если СвойстваНастройки.ЗапросЗначенийВыбора.Текст <> "" Тогда
+ ДобавляемыеЗначения = СвойстваНастройки.ЗапросЗначенийВыбора.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
+ Для Каждого ЗначениеВФорме Из ДобавляемыеЗначения Цикл
+ ДобавитьУникальноеЗначениеВСписок(СвойстваНастройки.ЗначенияДляВыбора, ЗначениеВФорме, Неопределено, Ложь);
+ КонецЦикла;
+ СвойстваНастройки.ЗначенияДляВыбора.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
+ КонецЕсли;
+
+ // Сохранение параметров выбора настройки в дополнительных свойствах пользовательских настроек.
+ НастройкиЭлемента = Новый Структура("ОписаниеТипов, ОграничиватьВыборУказаннымиЗначениями, ПараметрыВыбора");
+ ЗаполнитьЗначенияСвойств(НастройкиЭлемента, СвойстваНастройки);
+ НастройкиЭлемента.Вставить("ЗначенияДляВыбора", СвойстваНастройки.ЗначенияДляВыбора.ВыгрузитьЗначения());
+ НастройкиЭлемента.Вставить("ПредставлениеПоля", ЭлементЗаголовок);
+ ДополнительныеНастройкиЭлементов.Вставить(ИдентификаторЭлемента, НастройкиЭлемента);
+ КонецЕсли;
+
+ // Определение группы для вывода.
+ ЭлементВывода = Новый Структура("Размер, ИмяЭлемента1, ИмяЭлемента2");
////////////////////////////////////////////////////////////////////////////////
- // Генерация
- //
- Если ШаблонГенерации.Тип = "ТолькоФлажокИспользование" Или ШаблонГенерации.Тип = "ТолькоФлажокЗначения" Тогда
+ // Генератор
+
+ Если СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование" Или СвойстваНастройки.Шаблон = "ТолькоФлажокЗначения" Тогда
- Если ШаблонГенерации.Тип = "ТолькоФлажокИспользование" Тогда
- ФлажокИмя = ШаблонГенерации.Префикс + "_Использование_" + ИдентификаторЭлемента;
+ Если СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование" Тогда
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
ДействиеПриИзменении = "Подключаемый_ФлажокИспользование_ПриИзменении";
Иначе
- ФлажокИмя = ШаблонГенерации.Префикс + "_Значение_" + ИдентификаторЭлемента;
+ ФлажокИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
ДействиеПриИзменении = "Подключаемый_ПолеВвода_ПриИзменении";
КонецЕсли;
+ // Настройки вывода.
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
+
// Реквизиты.
БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
@@ -2062,24 +2013,72 @@
ИспользованиеОтбора.УстановитьДействие("ПриИзменении", ДействиеПриИзменении);
// Значения.
- Если ШаблонГенерации.Тип = "ТолькоФлажокИспользование" Тогда
+ Если СвойстваНастройки.Шаблон = "ТолькоФлажокИспользование" Тогда
ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
Иначе
ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Значение);
КонецЕсли;
- ИначеЕсли ШаблонГенерации.Тип = "СтандартныйПериод" Тогда
+ ИначеЕсли СвойстваНастройки.Шаблон = "СвязьСКомпоновщиком" Тогда
- ГруппаИмя = ШаблонГенерации.Префикс + "_Группа_" + ИдентификаторЭлемента;
- ИспользованиеИмя = ШаблонГенерации.Префикс + "_Использование_" + ИдентификаторЭлемента;
- ВидПериодаИмя = ШаблонГенерации.Префикс + "_Вид_" + ИдентификаторЭлемента;
- ПериодЗначениеИмя = ШаблонГенерации.Префикс + "_Значение_" + ИдентификаторЭлемента;
- ПериодПредставлениеИмя = ШаблонГенерации.Префикс + "_Представление_" + ИдентификаторЭлемента;
- ПериодНачалоИмя = ШаблонГенерации.Префикс + "_Начало_" + ИдентификаторЭлемента;
- ПериодОкончаниеИмя = ШаблонГенерации.Префикс + "_Окончание_" + ИдентификаторЭлемента;
- СтраницыИмя = ШаблонГенерации.Префикс + "_Страницы_" + ИдентификаторЭлемента;
- СтраницаСтандартныйИмя = ШаблонГенерации.Префикс + "_СтраницаСтандартный_" + ИдентификаторЭлемента;
- СтраницаПроизвольныйИмя = ШаблонГенерации.Префикс + "_СтраницаПроизвольный_" + ИдентификаторЭлемента;
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ЗначениеИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
+
+ // Настройки вывода.
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента2 = ЗначениеИмя;
+
+ Путь = ПутьПользовательскихНастроек + "[" + ИндексЭлемента + "]";
+
+ ИменаОсновныхРеквизитовФормы.Вставить(ИдентификаторЭлемента, ЗначениеИмя);
+ ИменаЭлементовДляУстановкиСвязей.Вставить(ИдентификаторЭлемента, ЗначениеИмя);
+ ИменаФлажковИспользование.Вставить(ИдентификаторЭлемента, ?(СвойстваНастройки.ФлажокИспользование, ФлажокИмя, ""));
+
+ // Группа с флажком.
+ Если СвойстваНастройки.ФлажокИспользование Тогда
+
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
+
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
+
+ // Флажок
+ ПолеФлажка = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), Элементы.БыстрыеНастройки);
+ ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
+ ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
+ ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
+ ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
+
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
+
+ КонецЕсли;
+
+ ПолеВвода = Элементы.Добавить(ЗначениеИмя, Тип("ПолеФормы"), Элементы.БыстрыеНастройки);
+ ПолеВвода.Вид = ВидПоляФормы.ПолеВвода;
+ ПолеВвода.Заголовок = ЭлементЗаголовок;
+ ПолеВвода.ПутьКДанным = Путь + ".Значение";
+ ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+
+ Если СвойстваНастройки.ВводСписком Тогда
+ ПолеВвода.УстановитьДействие("НачалоВыбора", "Подключаемый_СписокКомпоновщика_Значение_НачалоВыбора");
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Шаблон = "СтандартныйПериод" Тогда
+
+ ГруппаИмя = СвойстваНастройки.Тип + "_Группа_" + ИдентификаторЭлемента;
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ВидПериодаИмя = СвойстваНастройки.Тип + "_Вид_" + ИдентификаторЭлемента;
+ ПериодЗначениеИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
+ ПериодПредставлениеИмя = СвойстваНастройки.Тип + "_Представление_" + ИдентификаторЭлемента;
+ ПериодНачалоИмя = СвойстваНастройки.Тип + "_Начало_" + ИдентификаторЭлемента;
+ ПериодОкончаниеИмя = СвойстваНастройки.Тип + "_Окончание_" + ИдентификаторЭлемента;
+ ДекорацияИмя = СвойстваНастройки.Тип + "_Декорация_" + ИдентификаторЭлемента;
+ СтраницыИмя = СвойстваНастройки.Тип + "_Страницы_" + ИдентификаторЭлемента;
+ СтраницаСтандартныйИмя = СвойстваНастройки.Тип + "_СтраницаСтандартный_" + ИдентификаторЭлемента;
+ СтраницаПроизвольныйИмя = СвойстваНастройки.Тип + "_СтраницаПроизвольный_" + ИдентификаторЭлемента;
+
+ // Настройки вывода.
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента2 = ГруппаИмя;
// Реквизиты.
БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ВидПериодаИмя, "ПеречислениеСсылка.ДоступныеПериодыОтчета");
@@ -2087,7 +2086,7 @@
БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ПериодЗначениеИмя, "СтандартныйПериод");
// Основная Группа
- ГруппаСтрок = ?(ШаблонГенерации.Префикс = "Параметр", Элементы.Периоды, Элементы.БыстрыеНастройки);
+ ГруппаСтрок = Элементы.БыстрыеНастройки;
Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), ГруппаСтрок);
Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
@@ -2095,19 +2094,21 @@
Группа.ОтображатьЗаголовок = Ложь;
Группа.Заголовок = ЭлементЗаголовок;
- Если ШаблонГенерации.ФлажокИспользование Тогда
+ Если СвойстваНастройки.ФлажокИспользование Тогда
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ИспользованиеИмя, "Булево");
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
+
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
// Флажок
- ПолеФлажка = Элементы.Добавить(ИспользованиеИмя, Тип("ПолеФормы"), Группа);
+ ПолеФлажка = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), Элементы.БыстрыеНастройки);
ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
// Значение флажка.
- ДобавленныеПоляВвода.Вставить(ИспользованиеИмя, ПользовательскаяНастройка.Использование);
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
КонецЕсли;
@@ -2117,20 +2118,15 @@
ВидПериодаЭлемент.Заголовок = ЭлементЗаголовок;
ВидПериодаЭлемент.РежимВыбораИзСписка = Истина;
ВидПериодаЭлемент.РастягиватьПоГоризонтали = Ложь;
- ВидПериодаЭлемент.Ширина = 12;
+ ВидПериодаЭлемент.Ширина = 11;
+ ВидПериодаЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ВидПериодаЭлемент.УстановитьДействие("ПриИзменении", "Подключаемый_СтандартныйПериод_Вид_ПриИзменении");
- Если ШаблонГенерации.ФлажокИспользование Тогда
- ВидПериодаЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- Иначе
- ВидПериодаЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево;
- КонецЕсли;
-
// Вид периода - Список выбора.
- Если ШаблонГенерации.Префикс = "Параметр" Тогда
- МинимальнаяПериодичность = НастройкиОтчета.СоответствиеПериодичностиПараметров[ОбщаяНастройка.Параметр];
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ МинимальнаяПериодичность = НастройкиОтчета.СоответствиеПериодичностиПараметров[СвойстваНастройки.ВариантаСКД.Параметр];
Иначе
- МинимальнаяПериодичность = НастройкиОтчета.СоответствиеПериодичностиПараметров[ОбщаяНастройка.ЛевоеЗначение];
+ МинимальнаяПериодичность = НастройкиОтчета.СоответствиеПериодичностиПараметров[СвойстваНастройки.ВариантаСКД.ЛевоеЗначение];
КонецЕсли;
Если МинимальнаяПериодичность = Неопределено Тогда
МинимальнаяПериодичность = Перечисления.ДоступныеПериодыОтчета.День;
@@ -2145,6 +2141,8 @@
ГруппаСтраниц = Элементы.Добавить(СтраницыИмя, Тип("ГруппаФормы"), Группа);
ГруппаСтраниц.Вид = ВидГруппыФормы.Страницы;
ГруппаСтраниц.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
+ ГруппаСтраниц.Ширина = 24;
+ ГруппаСтраниц.РастягиватьПоГоризонтали = Ложь;
// Страница СтандартныйПериод.
СтраницаСтандартныйПериод = Элементы.Добавить(СтраницаСтандартныйИмя, Тип("ГруппаФормы"), ГруппаСтраниц);
@@ -2160,43 +2158,47 @@
// Стандартный период.
Период = Элементы.Добавить(ПериодПредставлениеИмя, Тип("ПолеФормы"), СтраницаСтандартныйПериод);
- Период.Вид = ВидПоляФормы.ПолеВвода;
- Период.Заголовок = НСтр("ru = 'Период'");
- Период.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- Период.КнопкаВыбора = Истина;
- Период.КнопкаОткрытия = Ложь;
- Период.КнопкаОчистки = Ложь;
+ Период.Вид = ВидПоляФормы.ПолеВвода;
+ Период.Заголовок = НСтр("ru = 'Период'");
+ Период.РастягиватьПоГоризонтали = Истина;
+ Период.КнопкаВыбора = Истина;
+ Период.КнопкаОткрытия = Ложь;
+ Период.КнопкаОчистки = Ложь;
Период.КнопкаРегулирования = Ложь;
Период.РедактированиеТекста = Ложь;
+ Период.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Период.УстановитьДействие("Очистка", "Подключаемый_СтандартныйПериод_Значение_Очистка");
Период.УстановитьДействие("НачалоВыбора", "Подключаемый_СтандартныйПериод_Значение_НачалоВыбора");
// Начало произвольного периода
ПериодНачало = Элементы.Добавить(ПериодНачалоИмя, Тип("ПолеФормы"), СтраницаПроизвольныйПериод);
- ПериодНачало.Вид = ВидПоляФормы.ПолеВвода;
- ПериодНачало.РастягиватьПоГоризонтали = Истина;
- ПериодНачало.КнопкаВыбора = Истина;
- ПериодНачало.КнопкаОткрытия = Ложь;
- ПериодНачало.КнопкаОчистки = Ложь;
- ПериодНачало.КнопкаРегулирования = Ложь;
- ПериодНачало.РедактированиеТекста = Истина;
- ПериодНачало.Заголовок = НСтр("ru = 'с'");
+ ПериодНачало.Вид = ВидПоляФормы.ПолеВвода;
+ ПериодНачало.РастягиватьПоГоризонтали = Истина;
+ ПериодНачало.КнопкаВыбора = Истина;
+ ПериодНачало.КнопкаОткрытия = Ложь;
+ ПериодНачало.КнопкаОчистки = Ложь;
+ ПериодНачало.КнопкаРегулирования = Ложь;
+ ПериодНачало.РедактированиеТекста = Истина;
+ ПериодНачало.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ПериодНачало.УстановитьДействие("ПриИзменении", "Подключаемый_СтандартныйПериод_НачалоПериода_ПриИзменении");
- Если ШаблонГенерации.Префикс = "Параметр" Тогда
- ПериодНачало.АвтоОтметкаНезаполненного = ДоступнаяНастройка.ЗапрещатьНезаполненныеЗначения;
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ПериодНачало.АвтоОтметкаНезаполненного = СвойстваНастройки.ДоступнаяСКД.ЗапрещатьНезаполненныеЗначения;
КонецЕсли;
+ Тире = Элементы.Добавить(ДекорацияИмя, Тип("ДекорацияФормы"), СтраницаПроизвольныйПериод);
+ Тире.Вид = ВидДекорацииФормы.Надпись;
+ Тире.Заголовок = "–";
+
// Окончание произвольного периода.
ПериодОкончание = Элементы.Добавить(ПериодОкончаниеИмя, Тип("ПолеФормы"), СтраницаПроизвольныйПериод);
ПериодОкончание.Вид = ВидПоляФормы.ПолеВвода;
- ЗаполнитьЗначенияСвойств(ПериодОкончание, ПериодНачало, "РастягиватьПоГоризонтали, РедактированиеТекста,
- |КнопкаВыбора, КнопкаОткрытия, КнопкаОчистки, КнопкаРегулирования, АвтоОтметкаНезаполненного");
- ПериодОкончание.Заголовок = НСтр("ru = 'по'");
+ ЗаполнитьЗначенияСвойств(ПериодОкончание, ПериодНачало, "РастягиватьПоГоризонтали, Ширина, ПоложениеЗаголовка,
+ |РедактированиеТекста, КнопкаВыбора, КнопкаОткрытия, КнопкаОчистки, КнопкаРегулирования, АвтоОтметкаНезаполненного");
ПериодОкончание.УстановитьДействие("ПриИзменении", "Подключаемый_СтандартныйПериод_КонецПериода_ПриИзменении");
// Значения.
- Если ШаблонГенерации.Префикс = "Параметр" Тогда
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
Значение = ПользовательскаяНастройка.Значение;
Иначе
Значение = ПользовательскаяНастройка.ПравоеЗначение;
@@ -2206,16 +2208,15 @@
ВидПериода = ФункцииОтчетовКлиентСервер.ПолучитьВидСтандартногоПериода(Значение, ВидПериодаЭлемент.СписокВыбора);
Представление = ФункцииОтчетовКлиентСервер.ПредставлениеСтандартногоПериода(Значение, ВидПериода);
- ОписаниеРеквизита = Новый Структура;
- ОписаниеРеквизита.Вставить("ПериодЗначениеИмя", ПериодЗначениеИмя);
- ОписаниеРеквизита.Вставить("ВидПериодаИмя", ВидПериодаИмя);
- ОписаниеРеквизита.Вставить("ПериодНачалоИмя", ПериодНачалоИмя);
- ОписаниеРеквизита.Вставить("ПериодОкончаниеИмя", ПериодОкончаниеИмя);
- ОписаниеРеквизита.Вставить("ПериодПредставлениеИмя", ПериодПредставлениеИмя);
- ОписаниеРеквизита.Вставить("Значение", Значение);
- ОписаниеРеквизита.Вставить("ВидПериода", ВидПериода);
- ОписаниеРеквизита.Вставить("Представление", Представление);
- ДобавленныеСтандартныеПериоды.Добавить(ОписаниеРеквизита);
+ СвойстваНастройки.Вставить("ПериодЗначениеИмя", ПериодЗначениеИмя);
+ СвойстваНастройки.Вставить("ВидПериодаИмя", ВидПериодаИмя);
+ СвойстваНастройки.Вставить("ПериодНачалоИмя", ПериодНачалоИмя);
+ СвойстваНастройки.Вставить("ПериодОкончаниеИмя", ПериодОкончаниеИмя);
+ СвойстваНастройки.Вставить("ПериодПредставлениеИмя", ПериодПредставлениеИмя);
+ СвойстваНастройки.Вставить("Значение", Значение);
+ СвойстваНастройки.Вставить("ВидПериода", ВидПериода);
+ СвойстваНастройки.Вставить("Представление", Представление);
+ ДобавленныеСтандартныеПериоды.Добавить(СвойстваНастройки);
// Активация страницы.
Если ВидПериода = Перечисления.ДоступныеПериодыОтчета.ПроизвольныйПериод Тогда
@@ -2224,102 +2225,84 @@
ГруппаСтраниц.ТекущаяСтраница = СтраницаСтандартныйПериод;
КонецЕсли;
- ИначеЕсли ШаблонГенерации.Тип = "ПолеВвода" Тогда
+ ИначеЕсли СвойстваНастройки.Шаблон = "ПолеВвода" Тогда
- ГруппаИмя = ШаблонГенерации.Префикс + "_Группа_" + ИдентификаторЭлемента;
- ИспользованиеИмя = ШаблонГенерации.Префикс + "_Использование_" + ИдентификаторЭлемента;
- ЗначениеИмя = ШаблонГенерации.Префикс + "_Значение_" + ИдентификаторЭлемента;
+ ФлажокИмя = СвойстваНастройки.Тип + "_Использование_" + ИдентификаторЭлемента;
+ ЗначениеИмя = СвойстваНастройки.Тип + "_Значение_" + ИдентификаторЭлемента;
+
+ // Настройки вывода.
+ ЭлементВывода.Размер = 1;
+ ЭлементВывода.ИмяЭлемента2 = ЗначениеИмя;
ИменаОсновныхРеквизитовФормы.Вставить(ИдентификаторЭлемента, ЗначениеИмя);
ИменаЭлементовДляУстановкиСвязей.Вставить(ИдентификаторЭлемента, ЗначениеИмя);
- ИменаФлажковИспользование.Вставить(ИдентификаторЭлемента, ?(ШаблонГенерации.ФлажокИспользование, ИспользованиеИмя, ""));
+ ИменаФлажковИспользование.Вставить(ИдентификаторЭлемента, ?(СвойстваНастройки.ФлажокИспользование, ФлажокИмя, ""));
// Группа с флажком.
- Если ШаблонГенерации.ФлажокИспользование Тогда
+ Если СвойстваНастройки.ФлажокИспользование Тогда
- // Добавление основной группы
- Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.БыстрыеНастройки);
- Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
- Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
- Группа.Отображение = ОтображениеОбычнойГруппы.Нет;
- Группа.Заголовок = ЭлементЗаголовок;
- Группа.ОтображатьЗаголовок = Ложь;
+ // Настройки вывода.
+ ЭлементВывода.ИмяЭлемента1 = ФлажокИмя;
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ИспользованиеИмя, "Булево");
+ // Регистрация реквизита формы.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ФлажокИмя, "Булево");
// Флажок
- ПолеФлажка = Элементы.Добавить(ИспользованиеИмя, Тип("ПолеФормы"), Группа);
+ ПолеФлажка = Элементы.Добавить(ФлажокИмя, Тип("ПолеФормы"), Элементы.БыстрыеНастройки);
ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
// Значение флажка.
- ДобавленныеПоляВвода.Вставить(ИспользованиеИмя, ПользовательскаяНастройка.Использование);
-
- Иначе
-
- Группа = Элементы.БыстрыеНастройки;
+ ДобавленныеПоляВвода.Вставить(ФлажокИмя, ПользовательскаяНастройка.Использование);
КонецЕсли;
- // Реквизит
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ЗначениеИмя, ШаблонГенерации.ОписаниеТипов);
+ // Регистрация реквизита формы.
+ БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ЗначениеИмя, СвойстваНастройки.ОписаниеТипов);
- ПолеВвода = Элементы.Добавить(ЗначениеИмя, Тип("ПолеФормы"), Группа);
+ // Поле ввода.
+ ПолеВвода = Элементы.Добавить(ЗначениеИмя, Тип("ПолеФормы"), Элементы.БыстрыеНастройки);
ПолеВвода.Вид = ВидПоляФормы.ПолеВвода;
ПолеВвода.Заголовок = ЭлементЗаголовок;
ПолеВвода.КнопкаОткрытия = Ложь;
ПолеВвода.КнопкаРегулирования = Ложь;
+ ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ПолеВвода.УстановитьДействие("ПриИзменении", "Подключаемый_ПолеВвода_ПриИзменении");
- ЗаполнитьЗначенияСвойств(ПолеВвода, ДоступнаяНастройка, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования");
+ ЗаполнитьЗначенияСвойств(ПолеВвода, СвойстваНастройки.ДоступнаяСКД, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования");
- Если ШаблонГенерации.ФлажокИспользование Тогда
- ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ Если СвойстваНастройки.Свойство("ВыборГруппИЭлементов") Тогда
+ ПолеВвода.ВыборГруппИЭлементов = СвойстваНастройки.ВыборГруппИЭлементов;
Иначе
- ПолеВвода.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
+ ПолеВвода.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(СвойстваНастройки.ДоступнаяСКД.ВыборГруппИЭлементов);
КонецЕсли;
- Если ШаблонГенерации.Свойство("ВыборГруппИЭлементов") Тогда
- ПолеВвода.ВыборГруппИЭлементов = ШаблонГенерации.ВыборГруппИЭлементов;
- Иначе
- ПолеВвода.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(ДоступнаяНастройка.ВыборГруппИЭлементов);
- КонецЕсли;
-
- Если ШаблонГенерации.Префикс = "Параметр" Тогда
- ПолеВвода.АвтоОтметкаНезаполненного = ДоступнаяНастройка.ЗапрещатьНезаполненныеЗначения;
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ПолеВвода.АвтоОтметкаНезаполненного = СвойстваНастройки.ДоступнаяСКД.ЗапрещатьНезаполненныеЗначения;
КонецЕсли;
// Поля ввода следующих типов не растягиваются по горизонтали и не имеют кнопки очистки:
// Дата, Булево, Число, Тип.
- ПолеВвода.КнопкаОчистки = ШаблонГенерации.СодержитДругиеТипы;
- ПолеВвода.РастягиватьПоГоризонтали = ШаблонГенерации.СодержитДругиеТипы;
-
- Если ШаблонГенерации.ВыборИзСписка Тогда
+ ПолеВвода.КнопкаОчистки = СвойстваНастройки.СодержитДругиеТипы;
+ ПолеВвода.РастягиватьПоГоризонтали = СвойстваНастройки.СодержитДругиеТипы;
+ Для Каждого ЭлементСпискаВФорме Из СвойстваНастройки.ЗначенияДляВыбора Цикл
+ ЗаполнитьЗначенияСвойств(ПолеВвода.СписокВыбора.Добавить(), ЭлементСпискаВФорме);
+ КонецЦикла;
+ Если СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями Тогда
ПолеВвода.РежимВыбораИзСписка = Истина;
+ ПолеВвода.КнопкаСоздания = Ложь;
ПолеВвода.РастягиватьПоГоризонтали = Истина;
- Для Каждого ЭлементСписка Из ДоступнаяНастройка.ДоступныеЗначения Цикл
- Если ЭлементСписка.Значение = Тип("Неопределено") Тогда
- Продолжить; // Запрет пустых значений для типа "Тип".
- КонецЕсли;
- ЭлементСпискаВыбора = ПолеВвода.СписокВыбора.Добавить();
- ЗаполнитьЗначенияСвойств(ЭлементСпискаВыбора, ЭлементСписка);
- Если ТипЗнч(ЭлементСпискаВыбора.Значение) = Тип("Тип") Тогда
- МассивТипов = Новый Массив;
- МассивТипов.Добавить(ЭлементСпискаВыбора.Значение);
- ЭлементСпискаВыбора.Значение = Новый ОписаниеТипов(МассивТипов);
- КонецЕсли;
- КонецЦикла;
КонецЕсли;
// Фиксированные параметры выбора.
- Если ШаблонГенерации.Свойство("ПараметрыВыбора") Тогда
- ПолеВвода.ПараметрыВыбора = Новый ФиксированныйМассив(ШаблонГенерации.ПараметрыВыбора);
+ Если СвойстваНастройки.Свойство("ПараметрыВыбора") Тогда
+ ПолеВвода.ПараметрыВыбора = Новый ФиксированныйМассив(СвойстваНастройки.ПараметрыВыбора);
КонецЕсли;
// Значение реквизита.
- Если ШаблонГенерации.Префикс = "Параметр" Тогда
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
Значение = ПользовательскаяНастройка.Значение;
Иначе
Значение = ПользовательскаяНастройка.ПравоеЗначение;
@@ -2333,338 +2316,45 @@
КонецЕсли;
ДобавленныеПоляВвода.Вставить(ЗначениеИмя, Значение);
- ИначеЕсли ШаблонГенерации.Тип = "СписокСПодбором" Тогда
-
- ГруппаИмя = ШаблонГенерации.Префикс + "_Группа_" + ИдентификаторЭлемента;
- ГруппаЗаголовокИмя = ШаблонГенерации.Префикс + "_ГруппаЗаголовка_" + ИдентификаторЭлемента;
- ИспользованиеИмя = ШаблонГенерации.Префикс + "_Использование_" + ИдентификаторЭлемента;
- ДекорацияИмя = ШаблонГенерации.Префикс + "_Декорация_" + ИдентификаторЭлемента;
- ТаблицаИмя = ШаблонГенерации.Префикс + "_СписокЗначений_" + ИдентификаторЭлемента;
- КолонкаЗначениеИмя = ШаблонГенерации.Префикс + "_Колонка_Значение_" + ИдентификаторЭлемента;
- КоманднаяПанельИмя = ШаблонГенерации.Префикс + "_КоманднаяПанель_" + ИдентификаторЭлемента;
- КнопкаПодборИмя = ШаблонГенерации.Префикс + "_Подбор_" + ИдентификаторЭлемента;
-
- ИменаОсновныхРеквизитовФормы.Вставить(ИдентификаторЭлемента, ТаблицаИмя);
- ИменаЭлементовДляУстановкиСвязей.Вставить(ИдентификаторЭлемента, КолонкаЗначениеИмя);
- ИменаФлажковИспользование.Вставить(ИдентификаторЭлемента, ?(ШаблонГенерации.ФлажокИспользование, ИспользованиеИмя, ""));
-
- // Добавление основной группы
- Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.БыстрыеНастройки);
- Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
- Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
- Группа.Отображение = ОтображениеОбычнойГруппы.Нет;
- Группа.Заголовок = ЭлементЗаголовок;
- Группа.ОтображатьЗаголовок = Ложь;
-
- // Группа-строка для заголовка и командной панели таблицы.
- ГруппаЗаголовокТаблицы = Элементы.Добавить(ГруппаЗаголовокИмя, Тип("ГруппаФормы"), Группа);
- ГруппаЗаголовокТаблицы.Вид = ВидГруппыФормы.ОбычнаяГруппа;
- ГруппаЗаголовокТаблицы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
- ГруппаЗаголовокТаблицы.Отображение = ОтображениеОбычнойГруппы.Нет;
- ГруппаЗаголовокТаблицы.ОтображатьЗаголовок = Ложь;
-
- // Флажок.
- Если ШаблонГенерации.ФлажокИспользование Тогда
-
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ИспользованиеИмя, "Булево");
-
- ПолеФлажка = Элементы.Добавить(ИспользованиеИмя, Тип("ПолеФормы"), ГруппаЗаголовокТаблицы);
- ПолеФлажка.Вид = ВидПоляФормы.ПолеФлажка;
- ПолеФлажка.Заголовок = ЭлементЗаголовок + ":";
- ПолеФлажка.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
- ПолеФлажка.УстановитьДействие("ПриИзменении", "Подключаемый_ФлажокИспользование_ПриИзменении");
-
- // Значение флажка
- ДобавленныеПоляВвода.Вставить(ИспользованиеИмя, ПользовательскаяНастройка.Использование);
-
- КонецЕсли;
-
- // Заголовок / Пустая декорация.
- ПустаяДекорация = Элементы.Добавить(ДекорацияИмя, Тип("ДекорацияФормы"), ГруппаЗаголовокТаблицы);
- ПустаяДекорация.Вид = ВидДекорацииФормы.Надпись;
- ПустаяДекорация.Заголовок = ?(ШаблонГенерации.ФлажокИспользование, " ", ЭлементЗаголовок + ":");
- ПустаяДекорация.РастягиватьПоГоризонтали = Истина;
-
- // Подбор.
- ТаблицаКоманднаяПанель = Элементы.Добавить(КоманднаяПанельИмя, Тип("ГруппаФормы"), ГруппаЗаголовокТаблицы);
- ТаблицаКоманднаяПанель.Вид = ВидГруппыФормы.КоманднаяПанель;
- ТаблицаКоманднаяПанель.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;
- ТаблицаКоманднаяПанель.РастягиватьПоГоризонтали = Ложь;
- ТаблицаКоманднаяПанель.Ширина = 10;
-
- Если ШаблонГенерации.СодержитСсылочныеТипы Тогда
- КомандаПодбор = Команды.Добавить(КнопкаПодборИмя);
- КомандаПодбор.Действие = "Подключаемый_СписокСПодбором_Подбор";
- КомандаПодбор.Заголовок = НСтр("ru = 'Подбор'");
- КомандаПодбор.Отображение = ОтображениеКнопки.Текст;
- Иначе
- КомандаПодбор = Команды.Добавить(КнопкаПодборИмя);
- КомандаПодбор.Действие = "Подключаемый_СписокСПодбором_Добавить";
- КомандаПодбор.Заголовок = НСтр("ru = 'Добавить'");
- КомандаПодбор.Отображение = ОтображениеКнопки.Текст;
- КомандаПодбор.Картинка = БиблиотекаКартинок.СоздатьЭлементСписка;
- КонецЕсли;
-
- КнопкаПодбор = Элементы.Добавить(КнопкаПодборИмя, Тип("КнопкаФормы"), ТаблицаКоманднаяПанель);
- КнопкаПодбор.ИмяКоманды = КнопкаПодборИмя;
-
- // Таблица.
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя, "СписокЗначений");
-
- ТаблицаФормы = Элементы.Добавить(ТаблицаИмя, Тип("ТаблицаФормы"), Группа);
- ТаблицаФормы.Отображение = ОтображениеТаблицы.Список;
- ТаблицаФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
- ТаблицаФормы.ВертикальныеЛинии = Ложь;
- ТаблицаФормы.ГоризонтальныеЛинии = Ложь;
- ТаблицаФормы.Шапка = Ложь;
- ТаблицаФормы.Подвал = Ложь;
- ТаблицаФормы.ИзменятьПорядокСтрок = Истина;
- ТаблицаФормы.РастягиватьПоГоризонтали = Истина;
- ТаблицаФормы.РастягиватьПоВертикали = Истина;
- ТаблицаФормы.Высота = 3;
-
- // Колонка "Значение".
- КолонкаЗначениеЭлемент = Элементы.Добавить(КолонкаЗначениеИмя, Тип("ПолеФормы"), ТаблицаФормы);
- КолонкаЗначениеЭлемент.Вид = ВидПоляФормы.ПолеВвода;
-
- ЗаполнитьЗначенияСвойств(КолонкаЗначениеЭлемент, ДоступнаяНастройка, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования");
-
- Если ШаблонГенерации.Свойство("ВыборГруппИЭлементов") Тогда
- КолонкаЗначениеЭлемент.ВыборГруппИЭлементов = ШаблонГенерации.ВыборГруппИЭлементов;
- Иначе
- КолонкаЗначениеЭлемент.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(ДоступнаяНастройка.ВыборГруппИЭлементов);
- КонецЕсли;
-
- Если ШаблонГенерации.ВыборИзСписка Тогда
- КолонкаЗначениеЭлемент.РежимВыбораИзСписка = Истина;
- Для Каждого ЭлементСписка Из ДоступнаяНастройка.ДоступныеЗначения Цикл
- Если ЭлементСписка.Значение = Тип("Неопределено") Тогда
- Продолжить;
- КонецЕсли;
- ЭлементСпискаВыбора = КолонкаЗначениеЭлемент.СписокВыбора.Добавить();
- ЗаполнитьЗначенияСвойств(ЭлементСпискаВыбора, ЭлементСписка);
- Если ТипЗнч(ЭлементСпискаВыбора.Значение) = Тип("Тип") Тогда
- МассивТипов = Новый Массив;
- МассивТипов.Добавить(ЭлементСпискаВыбора.Значение);
- ЭлементСпискаВыбора.Значение = Новый ОписаниеТипов(МассивТипов);
- КонецЕсли;
- КонецЦикла;
- КонецЕсли;
-
- // Заполнение имен объектов метаданных в разрезах типов и идентификаторов элементов (для предустановленных).
- // Используется при клике по кнопке "Подбор" для получения имени формы подбора.
- Если ЗначениеЗаполнено(КолонкаЗначениеЭлемент.ФормаВыбора) Тогда
- СоответствиеИменОбъектовМетаданных.Вставить(ИдентификаторЭлемента, КолонкаЗначениеЭлемент.ФормаВыбора);
- КонецЕсли;
-
- // Фиксированные параметры выбора.
- Если ШаблонГенерации.Свойство("ПараметрыВыбора") Тогда
- КолонкаЗначениеЭлемент.ПараметрыВыбора = Новый ФиксированныйМассив(ШаблонГенерации.ПараметрыВыбора);
- КонецЕсли;
-
- // Некоторые обработчики событий можно подключить только после установки связи элементов с данными.
- СобытияТаблицы = Новый Структура;
- Если ШаблонГенерации.СодержитТипТип Тогда
- СобытияТаблицы.Вставить("ПередОкончаниемРедактирования", "Подключаемый_СписокСТипомТип_ПередОкончаниемРедактирования");
- СобытияТаблицы.Вставить("ПриИзменении", "Подключаемый_СписокСТипомТип_ПриИзменении");
- Иначе
- СобытияТаблицы.Вставить("ПриИзменении", "Подключаемый_СписокСПодбором_ПриИзменении");
- СобытияТаблицы.Вставить("ОбработкаВыбора", "Подключаемый_СписокСПодбором_ОбработкаВыбора");
- КонецЕсли;
-
- // Значение списка.
- Если ШаблонГенерации.Префикс = "Параметр" Тогда
- СписокЗначений = ПользовательскаяНастройка.Значение;
- Иначе
- СписокЗначений = ПользовательскаяНастройка.ПравоеЗначение;
- КонецЕсли;
-
- ОписаниеРеквизита = Новый Структура;
- ОписаниеРеквизита.Вставить("ИмяТаблицы", ТаблицаИмя);
- ОписаниеРеквизита.Вставить("СобытияТаблицы", СобытияТаблицы);
- ОписаниеРеквизита.Вставить("ИмяКолонкиЗначение", КолонкаЗначениеИмя);
- ОписаниеРеквизита.Вставить("Значение", СписокЗначений);
- ОписаниеРеквизита.Вставить("ОписаниеТипов", ШаблонГенерации.ОписаниеТипов);
- ОписаниеРеквизита.Вставить("СодержитТипТип", ШаблонГенерации.СодержитТипТип);
- ДобавленныеСпискиЗначений.Добавить(ОписаниеРеквизита);
-
- ИначеЕсли ШаблонГенерации.Тип = "ТаблицаПорядкаСФлажками" Тогда
-
- ГруппаИмя = ШаблонГенерации.Префикс + "_Группа_" + ИдентификаторЭлемента;
- ТаблицаИмя = ШаблонГенерации.Префикс + "_Таблица_" + ИдентификаторЭлемента;
- КолонкаИспользованиеИмя = ШаблонГенерации.Префикс + "_КолонкаИспользование_" + ИдентификаторЭлемента;
- КолонкаПредставлениеИмя = ШаблонГенерации.Префикс + "_КолонкаПредставление_" + ИдентификаторЭлемента;
- КолонкаПорядокИмя = ШаблонГенерации.Префикс + "_КолонкаПорядок_" + ИдентификаторЭлемента;
- КоманднаяПанельИмя = ШаблонГенерации.Префикс + "_КоманднаяПанель_" + ИдентификаторЭлемента;
- КомандаПереместитьВверхИмя = ШаблонГенерации.Префикс + "_Команда_ПереместитьВверх_" + ИдентификаторЭлемента;
- КомандаПереместитьВнизИмя = ШаблонГенерации.Префикс + "_Команда_ПереместитьВниз_" + ИдентификаторЭлемента;
- КомандаСортироватьПоВозрастаниюИмя = ШаблонГенерации.Префикс + "_Команда_СортироватьПоВозрастанию_" + ИдентификаторЭлемента;
- КомандаСортироватьПоУбываниюИмя = ШаблонГенерации.Префикс + "_Команда_СортироватьПоУбыванию_" + ИдентификаторЭлемента;
-
- // Реквизиты.
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя, "ТаблицаЗначений");
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Идентификатор", "Строка");
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Использование", "Булево");
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Представление", "Строка");
-
- Если ШаблонГенерации.Префикс = "ПорядокКомпоновкиДанных" Тогда
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".Направление", "НаправлениеСортировкиКомпоновкиДанных");
- ИначеЕсли ШаблонГенерации.Префикс = "ВыбранныеПоляКомпоновкиДанных" Тогда
- БыстрыеНастройкиДобавитьРеквизит(ПараметрыЗаполнения, ТаблицаИмя + ".ЭтоГруппа", "Булево");
- КонецЕсли;
-
- // Группы и элементы
- Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.БыстрыеНастройки);
- Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
- Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
- Группа.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение;
- Группа.ОтображатьЗаголовок = Истина;
- Группа.РастягиватьПоГоризонтали = Истина;
- Группа.Заголовок = ЭлементЗаголовок + ":";
-
- ТаблицаФормы = Элементы.Добавить(ТаблицаИмя, Тип("ТаблицаФормы"), Группа);
- ТаблицаФормы.Отображение = ОтображениеТаблицы.Список;
- ТаблицаФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
- ТаблицаФормы.ВертикальныеЛинии = Ложь;
- ТаблицаФормы.ГоризонтальныеЛинии = Ложь;
- ТаблицаФормы.Шапка = Ложь;
- ТаблицаФормы.Подвал = Ложь;
- ТаблицаФормы.ИзменятьПорядокСтрок = Истина;
- ТаблицаФормы.РастягиватьПоГоризонтали = Истина;
- ТаблицаФормы.РастягиватьПоВертикали = Истина;
- ТаблицаФормы.Высота = 3;
- ТаблицаФормы.ИзменятьСоставСтрок = Ложь;
- ТаблицаФормы.ИзменятьПорядокСтрок = Ложь;
- ТаблицаФормы.РежимВыделения = РежимВыделенияТаблицы.Одиночный;
-
- КолонкаИспользование = Элементы.Добавить(КолонкаИспользованиеИмя, Тип("ПолеФормы"), ТаблицаФормы);
- КолонкаИспользование.Вид = ВидПоляФормы.ПолеФлажка;
- КолонкаИспользование.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
- КолонкаИспользование.УстановитьДействие("ПриИзменении", "Подключаемый_ТаблицаПорядка_КолонкаИспользование_ПриИзменении");
-
- КолонкаПредставление = Элементы.Добавить(КолонкаПредставлениеИмя, Тип("ПолеФормы"), ТаблицаФормы);
- КолонкаПредставление.Вид = ВидПоляФормы.ПолеВвода;
- КолонкаПредставление.ТолькоПросмотр = Истина;
-
- // Командная панель
- ТаблицаКоманднаяПанель = Элементы.Добавить(КоманднаяПанельИмя, Тип("ГруппаФормы"), Группа);
- ТаблицаКоманднаяПанель.Вид = ВидГруппыФормы.ОбычнаяГруппа;
- ТаблицаКоманднаяПанель.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
- ТаблицаКоманднаяПанель.Отображение = ОтображениеОбычнойГруппы.Нет;
- ТаблицаКоманднаяПанель.ОтображатьЗаголовок = Ложь;
-
- // Команды
- КомандаПереместитьВверх = Команды.Добавить(КомандаПереместитьВверхИмя);
- КомандаПереместитьВверх.Действие = "Подключаемый_ТаблицаПорядка_ПереместитьВверх";
- КомандаПереместитьВверх.Картинка = БиблиотекаКартинок.ПереместитьВверх;
- КомандаПереместитьВверх.Отображение = ОтображениеКнопки.Картинка;
-
- КомандаПереместитьВниз = Команды.Добавить(КомандаПереместитьВнизИмя);
- КомандаПереместитьВниз.Действие = "Подключаемый_ТаблицаПорядка_ПереместитьВниз";
- КомандаПереместитьВниз.Картинка = БиблиотекаКартинок.ПереместитьВниз;
- КомандаПереместитьВниз.Отображение = ОтображениеКнопки.Картинка;
-
- // Кнопки
- КнопкаПереместитьВверх = Элементы.Добавить(КомандаПереместитьВверхИмя, Тип("КнопкаФормы"), ТаблицаКоманднаяПанель);
- КнопкаПереместитьВверх.ИмяКоманды = КомандаПереместитьВверхИмя;
- КнопкаПереместитьВверх.Заголовок = НСтр("ru = 'Переместить строку вверх'");
-
- КнопкаПереместитьВниз = Элементы.Добавить(КомандаПереместитьВнизИмя, Тип("КнопкаФормы"), ТаблицаКоманднаяПанель);
- КнопкаПереместитьВниз.ИмяКоманды = КомандаПереместитьВнизИмя;
- КнопкаПереместитьВниз.Заголовок = НСтр("ru = 'Переместить строку вниз'");
-
- Если ШаблонГенерации.Префикс = "ПорядокКомпоновкиДанных" Тогда
-
- КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Поднять приоритет сортировки по колонке'");
- КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Понизить приоритет сортировки по колонке'");
-
- КолонкаПорядок = Элементы.Добавить(КолонкаПорядокИмя, Тип("ПолеФормы"), ТаблицаФормы);
- КолонкаПорядок.Вид = ВидПоляФормы.ПолеВвода;
- КолонкаПорядок.ТолькоПросмотр = Истина;
- КолонкаПорядок.РастягиватьПоГоризонтали = Ложь;
- КолонкаПорядок.Ширина = 11;
- КолонкаПорядок.ГиперссылкаЯчейки = Истина;
-
- // Команды
- КомандаПереместитьВверх = Команды.Добавить(КомандаСортироватьПоВозрастаниюИмя);
- КомандаПереместитьВверх.Действие = "Подключаемый_ТаблицаПорядка_СортироватьПоВозрастанию";
- КомандаПереместитьВверх.Картинка = БиблиотекаКартинок.СортироватьСписокПоВозрастанию;
- КомандаПереместитьВверх.Отображение = ОтображениеКнопки.Картинка;
-
- КомандаПереместитьВниз = Команды.Добавить(КомандаСортироватьПоУбываниюИмя);
- КомандаПереместитьВниз.Действие = "Подключаемый_ТаблицаПорядка_СортироватьПоУбыванию";
- КомандаПереместитьВниз.Картинка = БиблиотекаКартинок.СортироватьСписокПоУбыванию;
- КомандаПереместитьВниз.Отображение = ОтображениеКнопки.Картинка;
-
- // Кнопки
- КнопкаПереместитьВверх = Элементы.Добавить(КомандаСортироватьПоВозрастаниюИмя, Тип("КнопкаФормы"), ТаблицаФормы.КонтекстноеМеню);
- КнопкаПереместитьВверх.ИмяКоманды = КомандаСортироватьПоВозрастаниюИмя;
- КнопкаПереместитьВверх.Заголовок = НСтр("ru = 'Сортировать по возрастанию'");
-
- КнопкаПереместитьВниз = Элементы.Добавить(КомандаСортироватьПоУбываниюИмя, Тип("КнопкаФормы"), ТаблицаФормы.КонтекстноеМеню);
- КнопкаПереместитьВниз.ИмяКоманды = КомандаСортироватьПоУбываниюИмя;
- КнопкаПереместитьВниз.Заголовок = НСтр("ru = 'Сортировать по убыванию'");
-
- ИначеЕсли ШаблонГенерации.Префикс = "ВыбранныеПоляКомпоновкиДанных" Тогда
-
- КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Переместить поле выше или левее'");
- КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Переместить поле ниже или правее'");
-
- // Условное оформление для групп
- ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
- ЭлементУсловногоОформления.Использование = Истина;
-
- ОтборОформления = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
- ОтборОформления.Использование = Истина;
- ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ТаблицаИмя + ".ЭтоГруппа");
- ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
- ОтборОформления.ПравоеЗначение = Истина;
-
- ПолеОформление = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
- ПолеОформление.Использование = Истина;
- ПолеОформление.Поле = Новый ПолеКомпоновкиДанных(ТаблицаИмя);
-
- ШрифтОформления = ЭлементУсловногоОформления.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Шрифт"));
- ШрифтОформления.Значение = Новый Шрифт(ШрифтОформления.Значение, , , Истина, , Истина, );
- ШрифтОформления.Использование = Истина;
-
- ИначеЕсли ШаблонГенерации.Префикс = "СтруктураНастроекКомпоновкиДанных" Тогда
-
- КомандаПереместитьВверх.Подсказка = НСтр("ru = 'Переместить поле вверх'");
- КомандаПереместитьВниз.Подсказка = НСтр("ru = 'Переместить поле вниз'");
-
- КонецЕсли;
-
- // Значения.
- ОписаниеРеквизита = Новый Структура;
- ОписаниеРеквизита.Вставить("ИмяГруппы", ГруппаИмя);
- ОписаниеРеквизита.Вставить("ИмяТаблицы", ТаблицаИмя);
- ОписаниеРеквизита.Вставить("ИмяКолонкиИспользование", КолонкаИспользованиеИмя);
- ОписаниеРеквизита.Вставить("ИмяКолонкиПредставление", КолонкаПредставлениеИмя);
- ОписаниеРеквизита.Вставить("ИмяКолонкиПорядок", КолонкаПорядокИмя);
- ОписаниеРеквизита.Вставить("ПользовательскаяНастройка", ПользовательскаяНастройка);
- ДобавленныеТаблицыСФлажками.Добавить(ОписаниеРеквизита);
-
+ Иначе
+ Продолжить;
КонецЕсли;
+
+ Если ЭлементВывода.Размер <> Неопределено Тогда
+ Если ЭлементВывода.ИмяЭлемента1 = Неопределено Тогда // Заголовок
+ ЭлементВывода.ИмяЭлемента1 = СвойстваНастройки.Тип + "_Заголовок_" + ИдентификаторЭлемента;
+ ПолеНадписи = Элементы.Добавить(ЭлементВывода.ИмяЭлемента1, Тип("ДекорацияФормы"), Элементы.БыстрыеНастройки);
+ ПолеНадписи.Вид = ВидДекорацииФормы.Надпись;
+ ПолеНадписи.Заголовок = ЭлементЗаголовок + ":";
+ КонецЕсли;
+ ГруппаВывода = ГруппыВывода.Быстрые;
+ Если СвойстваНастройки.Шаблон = "СтандартныйПериод" Тогда
+ ГруппаВывода.Порядок.Вставить(0, ЭлементВывода);
+ Иначе
+ ГруппаВывода.Порядок.Добавить(ЭлементВывода);
+ КонецЕсли;
+ ГруппаВывода.Размер = ГруппаВывода.Размер + ЭлементВывода.Размер;
+ КонецЕсли;
+
КонецЦикла;
КонецЦикла;
+ ВывестиПоПорядку(ГруппыВывода.Быстрые, Элементы.БыстрыеНастройки, 2);
+
// Удаление старых и добавление новых реквизитов.
Для Каждого КлючИЗначение Из ПараметрыЗаполнения.Реквизиты.Существующие Цикл
ПараметрыЗаполнения.Реквизиты.Удаляемые.Добавить(КлючИЗначение.Ключ);
КонецЦикла;
ИзменитьРеквизиты(ПараметрыЗаполнения.Реквизиты.Добавляемые, ПараметрыЗаполнения.Реквизиты.Удаляемые);
- // Установка значений и связей полей ввода.
+ // Поля ввода (установка значений и связей).
Для Каждого КлючИЗначение Из ДобавленныеПоляВвода Цикл
ИмяРеквизита = КлючИЗначение.Ключ;
ЭтотОбъект[ИмяРеквизита] = КлючИЗначение.Значение;
Элементы[ИмяРеквизита].ПутьКДанным = ИмяРеквизита;
КонецЦикла;
- // Установка значений и связей списков значений.
+ // Стандартные периоды (установка значений и связей).
Для Каждого ОписаниеРеквизита Из ДобавленныеСтандартныеПериоды Цикл
ЭтотОбъект[ОписаниеРеквизита.ПериодЗначениеИмя] = ОписаниеРеквизита.Значение;
ЭтотОбъект[ОписаниеРеквизита.ВидПериодаИмя] = ОписаниеРеквизита.ВидПериода;
@@ -2675,112 +2365,6 @@
Элементы[ОписаниеРеквизита.ПериодОкончаниеИмя].ПутьКДанным = ОписаниеРеквизита.ПериодЗначениеИмя + ".ДатаОкончания";
КонецЦикла;
- // Установка значений и связей списков значений.
- Для Каждого ОписаниеРеквизита Из ДобавленныеСпискиЗначений Цикл
- ИмяТаблицы = ОписаниеРеквизита.ИмяТаблицы;
- ТаблицаФормы = Элементы[ИмяТаблицы];
- Если ОписаниеРеквизита.СодержитТипТип И ТипЗнч(ОписаниеРеквизита.Значение) = Тип("СписокЗначений") Тогда
- СписокЗначений = Новый СписокЗначений;
- Для Каждого ЭлементСпискаСКД Из ОписаниеРеквизита.Значение Цикл
- ЭлементСписка = СписокЗначений.Добавить();
- ЗаполнитьЗначенияСвойств(ЭлементСписка, ЭлементСпискаСКД);
- Если ТипЗнч(ЭлементСписка.Значение) = Тип("Тип") Тогда
- МассивТипов = Новый Массив;
- МассивТипов.Добавить(ЭлементСписка.Значение);
- ЭлементСписка.Значение = Новый ОписаниеТипов(МассивТипов);
- КонецЕсли;
- КонецЦикла;
- ЭтотОбъект[ИмяТаблицы] = СписокЗначений;
- Иначе
- ЭтотОбъект[ИмяТаблицы] = ОписаниеРеквизита.Значение;
- КонецЕсли;
- ЭтотОбъект[ИмяТаблицы].ТипЗначения = ОписаниеРеквизита.ОписаниеТипов;
- ТаблицаФормы.ПутьКДанным = ИмяТаблицы;
- Элементы[ОписаниеРеквизита.ИмяКолонкиЗначение].ПутьКДанным = ИмяТаблицы + ".Значение";
- // Некоторые обработчики событий можно подключить только после установки связи элементов с данными.
- Для Каждого КлючИЗначение Из ОписаниеРеквизита.СобытияТаблицы Цикл
- ТаблицаФормы.УстановитьДействие(КлючИЗначение.Ключ, КлючИЗначение.Значение);
- КонецЦикла;
- КонецЦикла;
-
- // Установка значений и связей таблиц порядка с флажками.
- Для Каждого ОписаниеРеквизита Из ДобавленныеТаблицыСФлажками Цикл
-
- ИмяТаблицы = ОписаниеРеквизита.ИмяТаблицы;
- Таблица = ЭтотОбъект[ИмяТаблицы];
- Таблица.Очистить();
- ПользовательскаяНастройка = ОписаниеРеквизита.ПользовательскаяНастройка;
- ТипОбщейНастройки = ТипЗнч(ПользовательскаяНастройка);
-
- Если ТипОбщейНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
-
- ФункцииОтчетовКлиентСервер.ДобавитьЭлементыНастройки(ЭтотОбъект, Таблица, ПользовательскаяНастройка, ПользовательскаяНастройка, Истина);
-
- ИначеЕсли ТипОбщейНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
-
- Для Каждого ЭлементПорядка Из ПользовательскаяНастройка.Элементы Цикл
- Если ТипЗнч(ЭлементПорядка) = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
- ДоступноеПоле = ФункцииОтчетовКлиентСервер.ПолучитьДоступноеПоле(НастройкиКД.ДоступныеПоляПорядка, ЭлементПорядка.Поле);
- Если ДоступноеПоле = Неопределено Тогда
- Продолжить;
- КонецЕсли;
- СтрокаПорядка = Таблица.Добавить();
- СтрокаПорядка.Использование = ЭлементПорядка.Использование;
- СтрокаПорядка.Идентификатор = ПользовательскаяНастройка.ПолучитьИдентификаторПоОбъекту(ЭлементПорядка);
- СтрокаПорядка.Представление = ДоступноеПоле.Заголовок;
- СтрокаПорядка.Направление = ЭлементПорядка.ТипУпорядочивания;
- КонецЕсли;
- КонецЦикла;
-
- ИначеЕсли ТипОбщейНастройки = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
-
- Для Каждого ЭлементСтруктуры Из ПользовательскаяНастройка.Структура Цикл
- Представление = "";
- Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных")
- ИЛИ ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаТаблицыКомпоновкиДанных")
- ИЛИ ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
-
- Для Каждого ПолеГруппировки Из ЭлементСтруктуры.ПоляГруппировки.Элементы Цикл
- Если НЕ ПолеГруппировки.Использование Тогда
- Продолжить;
- КонецЕсли;
- ДоступноеПоле = ФункцииОтчетовКлиентСервер.ПолучитьДоступноеПоле(НастройкиКД.ДоступныеПоляГруппировок, ПолеГруппировки.Поле);
- Если ДоступноеПоле = Неопределено Тогда
- Представление = Строка(ПолеГруппировки.Поле);
- ИначеЕсли ДоступноеПоле.Родитель <> Неопределено Тогда
- Представление = Представление + СтрЗаменить(СтрЗаменить(ДоступноеПоле.Заголовок, ДоступноеПоле.Родитель.Заголовок, ""), ".", "")+ ", ";
- ИНаче
- Представление = Представление + ДоступноеПоле.Заголовок + ", ";
- КонецЕсли;
- КонецЦикла;
-
- Представление = Лев(Представление, СтрДлина(Представление) - 2);
- Иначе
- Представление = НСтр("ru = 'Таблица / диаграмма'");
- КонецЕсли;
-
- СтрокиГруппировки = Таблица.Добавить();
- СтрокиГруппировки.Идентификатор = ЭлементСтруктуры.ИдентификаторПользовательскойНастройки;
- СтрокиГруппировки.Использование = ЭлементСтруктуры.Использование;
- СтрокиГруппировки.Представление = Представление;
- КонецЦикла;
-
- КонецЕсли;
-
- Если Таблица.Количество() = 0 Тогда
- Элементы[ОписаниеРеквизита.ИмяГруппы].Видимость = Ложь;
- Иначе
- Элементы[ИмяТаблицы].ПутьКДанным = ИмяТаблицы;
- Элементы[ОписаниеРеквизита.ИмяКолонкиИспользование].ПутьКДанным = ИмяТаблицы + ".Использование";
- Элементы[ОписаниеРеквизита.ИмяКолонкиПредставление].ПутьКДанным = ИмяТаблицы + ".Представление";
- Если ТипОбщейНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
- Элементы[ОписаниеРеквизита.ИмяКолонкиПорядок].ПутьКДанным = ИмяТаблицы + ".Направление";
- Элементы[ИмяТаблицы].УстановитьДействие("Выбор", "Подключаемый_ТаблицаПорядка_Выбор");
- КонецЕсли;
- КонецЕсли;
-
- КонецЦикла;
-
// Регистрация связи параметров выбора (динамическая связь, отключаемая флажком Использование).
Найденные = Связи.ОбъектовМетаданных.НайтиСтроки(Новый Структура("ЕстьПодчиненные, ЕстьВедущие", Истина, Истина));
Для Каждого СтрокаТаблицы Из Найденные Цикл
@@ -2853,7 +2437,7 @@
КонецЕсли;
ПодчиненныйЭлемент = Элементы[ПодчиненныйИмяЭлемента];
- Если ВедущийИдентификатор = Неопределено Тогда // Ведущий не выведен в быстрые настройки.
+ Если ВедущийИдентификатор = Неопределено Тогда // Ведущий не выведен в настройки.
// Инициализация соответствия для быстрого поиска значений обычных настроек.
Если ПоискЗначенийОбычныхНастроекПоПолюКомпоновкиДанных = Неопределено Тогда
@@ -2906,7 +2490,8 @@
СоответствиеОтключаемыхСвязей.Вставить(ВедущийИдентификатор, ВсеСвязиВедущего);
// Если ведущий используется, тогда связь регистрируется в элементе подчиненного в соответствии с выбранным типом.
- Если ВедущийПользовательскаяНастройкаКД.Использование Тогда
+ Если ВедущийПользовательскаяНастройкаКД.Использование
+ И Элементы.Найти(ОписаниеСвязи.ВедущийИмяРеквизита) <> Неопределено Тогда
ПодчиненныйЭлемент.СвязьПоТипу = Новый СвязьПоТипу(ОписаниеСвязи.ВедущийИмяРеквизита, ОписаниеСвязи.НомерСубконто);
КонецЕсли;
@@ -2988,17 +2573,77 @@
КонецЦикла;
- Если Элементы.Периоды.ПодчиненныеЭлементы.Количество() > 0 Тогда
- Элементы.БыстрыеНастройки.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение;
- Иначе
- Элементы.БыстрыеНастройки.Отображение = ОтображениеОбычнойГруппы.Нет;
- КонецЕсли;
-
// Сохранение соответствий для быстрого поиска в данные формы.
БыстрыйПоискПользовательскихНастроек = Новый ФиксированноеСоответствие(СоответствиеПользовательскихНастроек);
БыстрыйПоискИменОбъектовМетаданных = Новый ФиксированноеСоответствие(СоответствиеИменОбъектовМетаданных);
БыстрыйПоискОтключаемыхСвязей = Новый ФиксированноеСоответствие(СоответствиеОтключаемыхСвязей);
+ ХранимыеСпискиВыбора = Новый ФиксированноеСоответствие(СоответствиеХранимыхСписковВыбора);
+
+ ПользовательскиеНастройкиКД.ДополнительныеСвойства.Вставить("ЭлементыФормы", ДополнительныеНастройкиЭлементов);
+КонецПроцедуры
+
+&НаСервере
+Процедура ВывестиПоПорядку(ГруппаВывода, Родитель, КоличествоКолонок)
+ РодительИмя = Родитель.Имя;
+
+ НомерКолонки = 0;
+ ОсталосьКолонок = КоличествоКолонок + 1;
+ ОсталосьМестаВсего = ГруппаВывода.Размер;
+ ОсталосьМестаВКолонке = 0;
+
+ Для Каждого ЭлементВывода Из ГруппаВывода.Порядок Цикл
+ Если ОсталосьКолонок > 1
+ И ЭлементВывода.Размер > ОсталосьМестаВКолонке*4 Тогда // Текущий шаг больше оставшегося места.
+ НомерКолонки = НомерКолонки + 1;
+ ОсталосьКолонок = ОсталосьКолонок - 1;
+ ОсталосьМестаВКолонке = ОсталосьМестаВсего/ОсталосьКолонок;
+
+ КолонкаВерхнегоУровня = Элементы.Добавить(РодительИмя + НомерКолонки, Тип("ГруппаФормы"), Родитель);
+ КолонкаВерхнегоУровня.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ КолонкаВерхнегоУровня.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ КолонкаВерхнегоУровня.Отображение = ОтображениеОбычнойГруппы.Нет;
+ КолонкаВерхнегоУровня.ОтображатьЗаголовок = Ложь;
+
+ НомерПодгруппы = 0;
+ ТекущаяГруппа1 = Неопределено;
+ ТекущаяГруппа2 = Неопределено;
+ КонецЕсли;
+
+ Если ЭлементВывода.ИмяЭлемента2 = Неопределено Тогда // Вывод в одну колонку.
+ Если ТекущаяГруппа2 <> Неопределено Тогда
+ ТекущаяГруппа2 = Неопределено;
+ КонецЕсли;
+ Элементы.Переместить(Элементы[ЭлементВывода.ИмяЭлемента1], КолонкаВерхнегоУровня);
+ Иначе
+ Если ТекущаяГруппа2 = Неопределено Тогда
+ НомерПодгруппы = НомерПодгруппы + 1;
+
+ Колонки = Элементы.Добавить(РодительИмя + НомерКолонки + "_" + НомерПодгруппы, Тип("ГруппаФормы"), КолонкаВерхнегоУровня);
+ Колонки.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ Колонки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ Колонки.Отображение = ОтображениеОбычнойГруппы.Нет;
+ Колонки.ОтображатьЗаголовок = Ложь;
+
+ ТекущаяГруппа1 = Элементы.Добавить(РодительИмя + НомерКолонки + "_" + НомерПодгруппы + "_1", Тип("ГруппаФормы"), Колонки);
+ ТекущаяГруппа1.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ТекущаяГруппа1.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ТекущаяГруппа1.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ТекущаяГруппа1.ОтображатьЗаголовок = Ложь;
+
+ ТекущаяГруппа2 = Элементы.Добавить(РодительИмя + НомерКолонки + "_" + НомерПодгруппы + "_2", Тип("ГруппаФормы"), Колонки);
+ ТекущаяГруппа2.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ ТекущаяГруппа2.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ТекущаяГруппа2.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ТекущаяГруппа2.ОтображатьЗаголовок = Ложь;
+ КонецЕсли;
+ Элементы.Переместить(Элементы[ЭлементВывода.ИмяЭлемента1], ТекущаяГруппа1);
+ Элементы.Переместить(Элементы[ЭлементВывода.ИмяЭлемента2], ТекущаяГруппа2);
+ КонецЕсли;
+
+ ОсталосьМестаВсего = ОсталосьМестаВсего - ЭлементВывода.Размер;
+ ОсталосьМестаВКолонке = ОсталосьМестаВКолонке - ЭлементВывода.Размер;
+ КонецЦикла;
КонецПроцедуры
&НаСервере
@@ -3018,7 +2663,7 @@
КонецЕсли;
ТипыСуществующего = ПараметрыЗаполнения.Реквизиты.Существующие.Получить(ПолноеИмяРеквизита);
- Если ОписанияТиповСовпадает(ТипыСуществующего, ТипыДобавляемого) Тогда
+ Если ОписанияТиповСовпадают(ТипыСуществующего, ТипыДобавляемого) Тогда
ПараметрыЗаполнения.Реквизиты.Существующие.Удалить(ПолноеИмяРеквизита);
Иначе
ПозицияТочки = Найти(ПолноеИмяРеквизита, ".");
@@ -3039,7 +2684,7 @@
КонецПроцедуры
&НаСервере
-Функция ОписанияТиповСовпадает(ОписаниеТипов1, ОписаниеТипов2)
+Функция ОписанияТиповСовпадают(ОписаниеТипов1, ОписаниеТипов2)
Если ОписаниеТипов1 = Неопределено Или ОписаниеТипов2 = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
@@ -3058,11 +2703,21 @@
КлючСохраненияПоложенияОкна = Уникальность;
- НастройкиОтчета.ПараметрыПечатиПоУмолчанию.Вставить("КлючПараметровПечати", Уникальность);
- ЗаполнитьЗначенияСвойств(ОтчетТабличныйДокумент, НастройкиОтчета.ПараметрыПечатиПоУмолчанию);
+ НастройкиОтчета.Печать.Вставить("КлючПараметровПечати", Уникальность);
+ НастройкиПечатиВосстановить();
КонецЕсли;
КонецПроцедуры
+&НаСервере
+Процедура НастройкиПечатиСохранить()
+ ЗаполнитьЗначенияСвойств(НастройкиОтчета.Печать, ОтчетТабличныйДокумент);
+КонецПроцедуры
+
+&НаСервере
+Процедура НастройкиПечатиВосстановить()
+ ЗаполнитьЗначенияСвойств(ОтчетТабличныйДокумент, НастройкиОтчета.Печать);
+КонецПроцедуры
+
&НаСервере
Процедура ФоновоеЗаданиеЗагрузитьРезультат()
@@ -3080,12 +2735,9 @@
Иначе
- ПараметрыПечатиДоФормирования = НастройкиОтчета.ПараметрыПечатиПоУмолчанию;
- ЗаполнитьЗначенияСвойств(ПараметрыПечатиДоФормирования, ОтчетТабличныйДокумент);
-
+ НастройкиПечатиСохранить();
ОтчетТабличныйДокумент = РезультатФормирования.ОтчетТабличныйДокумент;
-
- ЗаполнитьЗначенияСвойств(ОтчетТабличныйДокумент, ПараметрыПечатиДоФормирования);
+ НастройкиПечатиВосстановить();
Если ЗначениеЗаполнено(ОтчетДанныеРасшифровки) И ЭтоАдресВременногоХранилища(ОтчетДанныеРасшифровки) Тогда
УдалитьИзВременногоХранилища(ОтчетДанныеРасшифровки);
@@ -3122,94 +2774,68 @@
КонецПроцедуры
&НаСервереБезКонтекста
-Функция ПредставлениеПользовательскойНастройки(ПользовательскаяНастройка, ОбщаяНастройка, ТипОбщейНастройки)
-
- Если ТипОбщейНастройки = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
- ЭлементЗаголовок = Строка(ПользовательскаяНастройка.ТипГруппы);
- ИначеЕсли ТипОбщейНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
- ЭлементЗаголовок = Строка(ОбщаяНастройка.ЛевоеЗначение);
- ИначеЕсли ТипОбщейНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
- ЭлементЗаголовок = Строка(ОбщаяНастройка.Параметр);
- ИначеЕсли ТипОбщейНастройки = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Оформление'");
- Если НЕ ПустаяСтрока(Строка(ПользовательскаяНастройка.Оформление)) Тогда
- ЭлементЗаголовок = ЭлементЗаголовок +" ("+ НРег(Строка(ПользовательскаяНастройка.Оформление)) +")";
- КонецЕсли;
- ИначеЕсли ТипОбщейНастройки = Тип("ГруппировкаКомпоновкиДанных") Тогда
- Суффикс = СокрЛП(Строка(ОбщаяНастройка.ПоляГруппировки));
- ЭлементЗаголовок = НСтр("ru = 'Группировка'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
- ИначеЕсли ТипОбщейНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
- Суффикс = СокрЛП(Строка(ОбщаяНастройка.ПоляГруппировки));
- ЭлементЗаголовок = НСтр("ru = 'Группировка диаграммы'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
- ИначеЕсли ТипОбщейНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Выбранные поля'");
- ИначеЕсли ТипОбщейНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Сортировка'");
- ИначеЕсли ТипОбщейНастройки = Тип("ОтборКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Отбор'");
- ИначеЕсли ТипОбщейНастройки = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Условное оформление'");
- ИначеЕсли ТипОбщейНастройки = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Структура настроек'");
- ИначеЕсли ТипОбщейНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Таблица'");
- ИначеЕсли ТипОбщейНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Группировка таблицы'");
- ИначеЕсли ТипОбщейНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Диаграмма'");
- ИначеЕсли ТипОбщейНастройки = Тип("ГруппировкаДиаграммыМакетаКомпоновкиДанных") Тогда
- ЭлементЗаголовок = НСтр("ru = 'Группировка диаграммы макета'");
- ИначеЕсли ТипОбщейНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
- ЭлементЗаголовок = СтрЗаменить(НСтр("ru = 'Вложенная группировка ''%1'''"), "%1", Строка(ПользовательскаяНастройка));
- Иначе
- ЭлементЗаголовок = Строка(ПользовательскаяНастройка);
- КонецЕсли;
-
- Возврат СокрЛП(ЭлементЗаголовок);
-КонецФункции
-
-&НаСервереБезКонтекста
-Процедура АнализТиповИСвязей(ИдентификаторЭлемента, ДоступнаяНастройка, ШаблонГенерации, ИменаОбъектовМетаданных, Связи)
+Процедура АнализТиповИСвязей(ИдентификаторЭлемента, СвойстваНастройки, ИменаОбъектовМетаданных, Связи)
КоличествоИзвестныхТипов = 0;
- ИсходноеОписаниеТипов = ДоступнаяНастройка.ТипЗначения;
+ ИсходноеОписаниеТипов = СвойстваНастройки.ДоступнаяСКД.ТипЗначения;
ДобавляемыеТипы = Новый Массив;
ВычитаемыеТипы = Новый Массив;
- ШаблонГенерации.Вставить("СодержитТипТип", Ложь);
- ШаблонГенерации.Вставить("СодержитТипДата", Ложь);
- ШаблонГенерации.Вставить("СодержитТипБулево", Ложь);
- ШаблонГенерации.Вставить("СодержитТипЧисло", Ложь);
- ШаблонГенерации.Вставить("СодержитТипПериод", Ложь);
- ШаблонГенерации.Вставить("СодержитДругиеТипы", Ложь);
- ШаблонГенерации.Вставить("СодержитСсылочныеТипы", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипТип", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипДата", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипБулево", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипЧисло", Ложь);
+ СвойстваНастройки.Вставить("СодержитТипПериод", Ложь);
+ СвойстваНастройки.Вставить("СодержитДругиеТипы", Ложь);
+ СвойстваНастройки.Вставить("СодержитСсылочныеТипы", Ложь);
+
+ СвойстваНастройки.Вставить("КоличествоТипов", 0);
+ СвойстваНастройки.Вставить("КоличествоПримитивныхТипов", 0);
+ СвойстваНастройки.Вставить("КоличествоПеречислений", 0);
+ СвойстваНастройки.Вставить("КоличествоПрочихСсылочныхТипов", 0);
+
+ СвойстваНастройки.Вставить("Перечисления", Новый Массив);
ДоступнаяНастройкаТипы = ИсходноеОписаниеТипов.Типы();
Для Каждого Тип Из ДоступнаяНастройкаТипы Цикл
Если Тип = Тип("ПолеКомпоновкиДанных") Тогда
ВычитаемыеТипы.Добавить(Тип);
- ИначеЕсли Тип = Тип("Тип") Тогда
- ШаблонГенерации.СодержитТипТип = Истина;
+ Продолжить;
+ КонецЕсли;
+ СвойстваНастройки.КоличествоТипов = СвойстваНастройки.КоличествоТипов + 1;
+
+ Если Тип = Тип("Тип") Тогда
+ СвойстваНастройки.СодержитТипТип = Истина;
ДобавляемыеТипы.Добавить(Тип("ОписаниеТипов"));
ВычитаемыеТипы.Добавить(Тип("Тип"));
ИначеЕсли Тип = Тип("Дата") Тогда
- ШаблонГенерации.СодержитТипДата = Истина;
+ СвойстваНастройки.СодержитТипДата = Истина;
+ СвойстваНастройки.КоличествоПримитивныхТипов = СвойстваНастройки.КоличествоПримитивныхТипов + 1;
ИначеЕсли Тип = Тип("Булево") Тогда
- ШаблонГенерации.СодержитТипБулево = Истина;
+ СвойстваНастройки.СодержитТипБулево = Истина;
+ СвойстваНастройки.КоличествоПримитивныхТипов = СвойстваНастройки.КоличествоПримитивныхТипов + 1;
ИначеЕсли Тип = Тип("Число") Тогда
- ШаблонГенерации.СодержитТипЧисло = Истина;
+ СвойстваНастройки.СодержитТипЧисло = Истина;
+ СвойстваНастройки.КоличествоПримитивныхТипов = СвойстваНастройки.КоличествоПримитивныхТипов + 1;
ИначеЕсли Тип = Тип("СтандартныйПериод") Тогда
- ШаблонГенерации.СодержитТипПериод = Истина;
+ СвойстваНастройки.СодержитТипПериод = Истина;
Иначе
- ШаблонГенерации.СодержитДругиеТипы = Истина;
+ СвойстваНастройки.СодержитДругиеТипы = Истина;
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
Если ОбъектМетаданных <> Неопределено Тогда
- ШаблонГенерации.СодержитСсылочныеТипы = Истина;
+ СвойстваНастройки.СодержитСсылочныеТипы = Истина;
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
+ Если ВРег(Лев(ПолноеИмя, 13)) = "ПЕРЕЧИСЛЕНИЕ." Тогда
+ СвойстваНастройки.Перечисления.Добавить(ПолноеИмя);
+ СвойстваНастройки.КоличествоПеречислений = СвойстваНастройки.КоличествоПеречислений + 1;
+ Иначе
+ СвойстваНастройки.КоличествоПрочихСсылочныхТипов = СвойстваНастройки.КоличествоПрочихСсылочныхТипов + 1;
+ КонецЕсли;
+
// Регистрация имени объекта метаданных.
ИменаОбъектовМетаданных.Вставить(Тип, ПолноеИмя);
@@ -3234,23 +2860,20 @@
КонецЦикла;
ОписаниеТипов = Новый ОписаниеТипов(ИсходноеОписаниеТипов, ДобавляемыеТипы, ВычитаемыеТипы);
+ СвойстваНастройки.Вставить("ОписаниеТипов", ОписаниеТипов);
- ШаблонГенерации.Вставить("ОписаниеТипов", ОписаниеТипов);
- ШаблонГенерации.Вставить("КоличествоТипов", ОписаниеТипов.Типы().Количество());
-
- // Переменные цикла
ПараметрыВыбора = Новый Массив;
- Если ЗначениеЗаполнено(ДоступнаяНастройка.СвязьПоТипу) Тогда
+ Если ЗначениеЗаполнено(СвойстваНастройки.ДоступнаяСКД.СвязьПоТипу) Тогда
СтрокаСвязи = Связи.ПоТипу.Добавить();
СтрокаСвязи.ПодчиненныйИдентификатор = ИдентификаторЭлемента;
- СтрокаСвязи.ВедущийПолеКД = ДоступнаяНастройка.СвязьПоТипу.Поле;
- СтрокаСвязи.НомерСубконто = ДоступнаяНастройка.СвязьПоТипу.ЭлементСвязи;
+ СтрокаСвязи.ВедущийПолеКД = СвойстваНастройки.ДоступнаяСКД.СвязьПоТипу.Поле;
+ СтрокаСвязи.НомерСубконто = СвойстваНастройки.ДоступнаяСКД.СвязьПоТипу.ЭлементСвязи;
КонецЕсли;
- Для Каждого СтрокаСвязи Из ДоступнаяНастройка.ПолучитьСвязиПараметровВыбора() Цикл
+ Для Каждого СтрокаСвязи Из СвойстваНастройки.ДоступнаяСКД.ПолучитьСвязиПараметровВыбора() Цикл
Если Не ПустаяСтрока(Строка(СтрокаСвязи.Поле)) Тогда
СтрокаСвязиПараметров = Связи.ПараметровВыбора.Добавить();
@@ -3262,19 +2885,18 @@
КонецЦикла;
- Для Каждого ПараметрВыбораКД Из ДоступнаяНастройка.ПолучитьПараметрыВыбора() Цикл
+ Для Каждого ПараметрВыбораКД Из СвойстваНастройки.ДоступнаяСКД.ПолучитьПараметрыВыбора() Цикл
ПараметрыВыбора.Добавить(Новый ПараметрВыбора(ПараметрВыбораКД.Имя, ПараметрВыбораКД.Значение));
КонецЦикла;
Если ПараметрыВыбора.Количество() > 0 Тогда
- ШаблонГенерации.Вставить("ПараметрыВыбора", ПараметрыВыбора);
+ СвойстваНастройки.Вставить("ПараметрыВыбора", ПараметрыВыбора);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьСвязьПараметровВыбора(ПодчиненныйЭлемент, СтруктураСвязи, ВключитьСвязь)
-
Если ПустаяСтрока(СтруктураСвязи.ПодчиненныйИмяПараметраФормы) Тогда
Возврат;
КонецЕсли;
@@ -3305,27 +2927,21 @@
КонецЕсли;
ПодчиненныйЭлемент.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивЭлементов);
-
КонецПроцедуры
&НаСервере
Функция СоздатьСтруктуруТаблицСвязей()
-
- Связи = Новый Структура;
-
// Связи из СКД.
ТаблицаСвязейПоТипу = Новый ТаблицаЗначений;
ТаблицаСвязейПоТипу.Колонки.Добавить("ПодчиненныйИдентификатор");
ТаблицаСвязейПоТипу.Колонки.Добавить("ВедущийПолеКД");
ТаблицаСвязейПоТипу.Колонки.Добавить("НомерСубконто");
- Связи.Вставить("ПоТипу", ТаблицаСвязейПоТипу);
ТаблицаСвязейПараметровВыбора = Новый ТаблицаЗначений;
ТаблицаСвязейПараметровВыбора.Колонки.Добавить("ПодчиненныйИдентификатор");
ТаблицаСвязейПараметровВыбора.Колонки.Добавить("ВедущийПолеКД");
ТаблицаСвязейПараметровВыбора.Колонки.Добавить("ПодчиненныйИмяПараметра");
ТаблицаСвязейПараметровВыбора.Колонки.Добавить("Действие");
- Связи.Вставить("ПараметровВыбора", ТаблицаСвязейПараметровВыбора);
// Связи из метаданных.
ТаблицаСвязейОбъектовМетаданных = Новый ТаблицаЗначений;
@@ -3333,7 +2949,12 @@
ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ПодчиненныйТип", Новый ОписаниеТипов("Тип"));
ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ВедущийТип", Новый ОписаниеТипов("Тип"));
- ФормаОтчетаПереопределяемый.ДополнитьСвязиОбъектовМетаданных(ТаблицаСвязейОбъектовМетаданных);
+ // Механизмы расширения.
+ ФормаОтчетаПереопределяемый.ДополнитьСвязиОбъектовМетаданных(ТаблицаСвязейОбъектовМетаданных); // Глобальные связи...
+ Если НастройкиОтчета.События.ДополнитьСвязиОбъектовМетаданных Тогда // ... можно переопределить локально для отчета.
+ ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
+ ОтчетОбъект.ДополнитьСвязиОбъектовМетаданных(ТаблицаСвязейОбъектовМетаданных);
+ КонецЕсли;
ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ЕстьПодчиненные", Новый ОписаниеТипов("Булево"));
ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ПодчиненныйПолноеИмя", Новый ОписаниеТипов("Строка"));
@@ -3341,10 +2962,13 @@
ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ЕстьВедущие", Новый ОписаниеТипов("Булево"));
ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ВедущийПолноеИмя", Новый ОписаниеТипов("Строка"));
ТаблицаСвязейОбъектовМетаданных.Колонки.Добавить("ВедущийМассивИдентификаторов", Новый ОписаниеТипов("Массив"));
+
+ Связи = Новый Структура;
+ Связи.Вставить("ПоТипу", ТаблицаСвязейПоТипу);
+ Связи.Вставить("ПараметровВыбора", ТаблицаСвязейПараметровВыбора);
Связи.Вставить("ОбъектовМетаданных", ТаблицаСвязейОбъектовМетаданных);
Возврат Связи;
-
КонецФункции
&НаСервере
@@ -3356,45 +2980,45 @@
РекурсивныйАнализНастроекКД(Отчет.КомпоновщикНастроек.ФиксированныеНастройки.ПараметрыДанных.Элементы, Соответствие);
Иначе
// Регистрация значений включенных отборов и параметров КД, не выведенных в быстрый доступ.
- Для Каждого ОбщаяНастройка Из Коллекция Цикл
+ Для Каждого НастройкаВарианта Из Коллекция Цикл
// ЭлементОтбораКомпоновкиДанных, ГруппаЭлементовОтбораКомпоновкиДанных,
// ЗначениеПараметраКомпоновкиДанных, ЗначениеПараметраНастроекКомпоновкиДанных.
- Если ТипЗнч(ОбщаяНастройка) = Тип("ЗначениеПараметраКомпоновкиДанных") Тогда
- Значение = ОбщаяНастройка.Значение;
+ Если ТипЗнч(НастройкаВарианта) = Тип("ЗначениеПараметраКомпоновкиДанных") Тогда
+ Значение = НастройкаВарианта.Значение;
Если ЗначениеИлиПолеКомпоновкиДанныхЗаполнено(Значение) Тогда
- ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(ОбщаяНастройка.Параметр));
+ ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(НастройкаВарианта.Параметр));
Соответствие.Вставить(ПолеКД, Значение);
КонецЕсли;
- РекурсивныйАнализНастроекКД(ОбщаяНастройка.ЗначенияВложенныхПараметров, Соответствие);
+ РекурсивныйАнализНастроекКД(НастройкаВарианта.ЗначенияВложенныхПараметров, Соответствие);
Продолжить;
КонецЕсли;
- Если ОбщаяНастройка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ
- И ЗначениеЗаполнено(ОбщаяНастройка.ИдентификаторПользовательскойНастройки) Тогда
+ Если НастройкаВарианта.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ
+ И ЗначениеЗаполнено(НастройкаВарианта.ИдентификаторПользовательскойНастройки) Тогда
Продолжить;
КонецЕсли;
- Если ОбщаяНастройка.Использование <> Истина Тогда
+ Если НастройкаВарианта.Использование <> Истина Тогда
Продолжить;
КонецЕсли;
- Если ТипЗнч(ОбщаяНастройка) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
- РекурсивныйАнализНастроекКД(ОбщаяНастройка.Элементы, Соответствие);
+ Если ТипЗнч(НастройкаВарианта) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ РекурсивныйАнализНастроекКД(НастройкаВарианта.Элементы, Соответствие);
Продолжить;
КонецЕсли;
- Если ТипЗнч(ОбщаяНастройка) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
- Значение = ОбщаяНастройка.ПравоеЗначение;
+ Если ТипЗнч(НастройкаВарианта) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ Значение = НастройкаВарианта.ПравоеЗначение;
Если ЗначениеИлиПолеКомпоновкиДанныхЗаполнено(Значение) Тогда
- ПолеКД = ОбщаяНастройка.ЛевоеЗначение;
+ ПолеКД = НастройкаВарианта.ЛевоеЗначение;
Соответствие.Вставить(ПолеКД, Значение);
КонецЕсли;
- ИначеЕсли ТипЗнч(ОбщаяНастройка) = Тип("ЗначениеПараметраКомпоновкиДанных") Тогда
- Значение = ОбщаяНастройка.ПравоеЗначение;
+ ИначеЕсли ТипЗнч(НастройкаВарианта) = Тип("ЗначениеПараметраКомпоновкиДанных") Тогда
+ Значение = НастройкаВарианта.ПравоеЗначение;
Если ЗначениеИлиПолеКомпоновкиДанныхЗаполнено(Значение) Тогда
- ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(ОбщаяНастройка.Параметр));
+ ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(НастройкаВарианта.Параметр));
Соответствие.Вставить(ПолеКД, Значение);
КонецЕсли;
- РекурсивныйАнализНастроекКД(ОбщаяНастройка.ЗначенияВложенныхПараметров, Соответствие);
+ РекурсивныйАнализНастроекКД(НастройкаВарианта.ЗначенияВложенныхПараметров, Соответствие);
КонецЕсли;
КонецЦикла;
@@ -3412,154 +3036,570 @@
КонецФункции
&НаСервере
-Процедура ЗаполнитьПанельОтчета()
- Если ВариантыПанелиКлючТекущегоВарианта = КлючТекущегоВарианта Тогда
- Возврат;
+Процедура ЗаполнитьКомандыВыбораПользовательскихНастроек()
+ Если ЗначениеЗаполнено(НастройкиОтчета.ХранилищеПользовательскихНастроек) Тогда
+ МенеджерХранилища = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(НастройкиОтчета.ХранилищеПользовательскихНастроек);
+ Иначе
+ МенеджерХранилища = ХранилищеПользовательскихНастроекОтчетов;
КонецЕсли;
- ВариантыПанелиКлючТекущегоВарианта = КлючТекущегоВарианта;
+ КлючНастроек = КлючОбъекта + "/" + КлючТекущегоВарианта;
+ СписокНастроек = МенеджерХранилища.ПолучитьСписок(КлючНастроек);
+ СписокНастроек.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
- ТаблицаВывода = РеквизитФормыВЗначение("ВариантыПанели");
- ТаблицаВывода.Колонки.Добавить("ЭлементНадоДобавить", Новый ОписаниеТипов("Булево"));
- ТаблицаВывода.Колонки.Добавить("ЭлементНадоОставить", Новый ОписаниеТипов("Булево"));
- ТаблицаВывода.Колонки.Добавить("Группа");
+ Группа = Элементы.ВариантыПользовательскихНастроек_Левая;
+ КнопкиГруппы = Группа.ПодчиненныеЭлементы;
- ТекстЗапроса =
- "ВЫБРАТЬ РАЗРЕШЕННЫЕ
- | ВариантыОтчетов.Ссылка,
- | ВариантыОтчетов.Отчет,
- | ВариантыОтчетов.КлючВарианта,
- | ВариантыОтчетов.Наименование КАК Наименование,
- | ВЫБОР
- | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """"
- | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.ПредопределенныйВариант.Описание КАК СТРОКА(1000))
- | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000))
- | КОНЕЦ КАК Описание,
- | ВариантыОтчетов.Автор,
- | ВариантыОтчетов.ТипОтчета,
- | ВариантыОтчетов.Отчет.Имя КАК ИмяОтчета
- |ИЗ
- | Справочник.ВариантыОтчетов КАК ВариантыОтчетов
- |ГДЕ
- | ВариантыОтчетов.Отчет = &Отчет
- | И ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ
- | И (ВариантыОтчетов.ТолькоДляАвтора = ЛОЖЬ
- | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь)
- | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
- | И ВариантыОтчетов.КлючВарианта <> """"
- |
- |УПОРЯДОЧИТЬ ПО
- | Наименование";
+ Количество = КнопкиГруппы.Количество();
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+
+ Кнопка = КнопкиГруппы[ОбратныйИндекс];
+ Команда = Команды[Кнопка.Имя];
+
+ КнопкаИдентификатор = Прав(Кнопка.Имя, 32);
+ КнопкаУникальныйИдентификатор = ПривестиИмяКИдентификатору(КнопкаИдентификатор);
+
+ ОписаниеНастройки = СписокНастроек.НайтиПоЗначению(КнопкаУникальныйИдентификатор);
+ Если ОписаниеНастройки = Неопределено Тогда
+ Элементы.Удалить(Кнопка);
+ Команды.Удалить(Команда);
+ Иначе
+ ОписаниеНастройки.Значение = Кнопка;
+ Команда.Заголовок = ОписаниеНастройки.Представление;
+ КонецЕсли;
+ КонецЦикла;
- Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("Отчет", ФормаПараметры.ОтчетСсылка);
- Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.ТекущийПользователь());
- Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
- Запрос.Текст = ТекстЗапроса;
-
- ОбщиеНастройки = ВариантыОтчетов.ОбщиеНастройкиПанели();
- ПоказыватьПодсказки = ОбщиеНастройки.ПоказыватьПодсказки = 1;
-
- ВидимостьГруппыВариантыОтчета = Ложь;
- ТаблицаВариантов = Запрос.Выполнить().Выгрузить();
- Для Каждого СтрокаТаблицы Из ТаблицаВариантов Цикл
- // Только другие варианты.
- Если СтрокаТаблицы.Ссылка = ВариантСсылка Тогда
+ Для Каждого ОписаниеНастройки Из СписокНастроек Цикл
+ Если ТипЗнч(ОписаниеНастройки.Значение) = Тип("КнопкаФормы") Тогда
+ Элементы.Переместить(ОписаниеНастройки.Значение, Группа); // Сортировка.
Продолжить;
КонецЕсли;
- ВидимостьГруппыВариантыОтчета = Истина;
- ВывестиГиперссылкуВПанель(ТаблицаВывода, СтрокаТаблицы, Элементы.ГруппаДругиеВариантыОтчета, ПоказыватьПодсказки);
+
+ КомандаИмя = "ЗагрузитьПользовательскуюНастройку_" + ПривестиИдентификаторКИмени(ОписаниеНастройки.Значение);
+
+ Команда = Команды.Добавить(КомандаИмя);
+ Команда.Действие = "Подключаемый_ЗагрузитьПользовательскуюНастройку";
+ Команда.Заголовок = ОписаниеНастройки.Представление;
+
+ Кнопка = Элементы.Добавить(КомандаИмя, Тип("КнопкаФормы"), Группа);
+ Кнопка.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
+ Кнопка.ИмяКоманды = КомандаИмя;
+
+ ПостоянныеКоманды.Добавить(КомандаИмя);
КонецЦикла;
- ВидимостьГруппыПохожиеОтчеты = Ложь;
- Если ЗначениеЗаполнено(ФормаПараметры.Подсистема) Тогда
- Элементы.ГруппаПохожиеОтчеты.Заголовок = ФормаПараметры.ПодсистемаПредставление;
- ПараметрыПоиска = Новый Структура;
- ПараметрыПоиска.Вставить("Подсистемы", Новый Массив);
- ПараметрыПоиска.Подсистемы.Добавить(ФормаПараметры.Подсистема);
- ПараметрыПоиска.Вставить("ТолькоВидимыеВПанелиОтчетов", Истина);
- ПараметрыПоиска.Вставить("ПолучатьИтоговуюТаблицу", Истина);
- ПараметрыПоиска.Вставить("ПометкаУдаления", Ложь);
-
- РезультатПоиска = ВариантыОтчетов.НайтиСсылки(ПараметрыПоиска);
-
- ТаблицаВариантов = РезультатПоиска.ТаблицаЗначений;
- ТаблицаВариантов.Колонки.НаименованиеВарианта.Имя = "Наименование";
- ТаблицаВариантов.Сортировать("Наименование");
- Для Каждого СтрокаТаблицы Из ТаблицаВариантов Цикл
- // Только другие варианты.
- Если СтрокаТаблицы.Ссылка = ВариантСсылка Тогда
- Продолжить;
- КонецЕсли;
- // Также не показывать вариант "по умолчанию" этого отчета.
- Если СтрокаТаблицы.КлючВарианта = "" И СтрокаТаблицы.Отчет = ФормаПараметры.ОтчетСсылка Тогда
- Продолжить;
- КонецЕсли;
- ВидимостьГруппыПохожиеОтчеты = Истина;
- ВывестиГиперссылкуВПанель(ТаблицаВывода, СтрокаТаблицы, Элементы.ГруппаПохожиеОтчеты, ПоказыватьПодсказки);
- КонецЦикла;
- КонецЕсли;
-
- Элементы.ГруппаДругиеВариантыОтчета.Видимость = ВидимостьГруппыВариантыОтчета;
- Элементы.ГруппаПохожиеОтчеты.Видимость = ВидимостьГруппыПохожиеОтчеты;
- Элементы.РазделительГруппВариантов.Видимость = ВидимостьГруппыВариантыОтчета И ВидимостьГруппыПохожиеОтчеты;
-
- НайденныеДляУдаления = ТаблицаВывода.НайтиСтроки(Новый Структура("ЭлементНадоОставить", Ложь)); //ВариантыПанелиНомерЭлемента
- Для Каждого СтрокаТаблицы Из НайденныеДляУдаления Цикл
- ЭлементВарианта = Элементы.Найти(СтрокаТаблицы.НадписьИмя);
- Если ЭлементВарианта <> Неопределено Тогда
- Элементы.Удалить(ЭлементВарианта);
- КонецЕсли;
- ТаблицаВывода.Удалить(СтрокаТаблицы);
- КонецЦикла;
-
- ЕстьДругиеОтчеты = ВидимостьГруппыВариантыОтчета Или ВидимостьГруппыПохожиеОтчеты;
-
- ТаблицаВывода.Колонки.Удалить("ЭлементНадоОставить");
- ТаблицаВывода.Колонки.Удалить("Группа");
- ЗначениеВРеквизитФормы(ТаблицаВывода, "ВариантыПанели");
КонецПроцедуры
&НаСервере
-Процедура ВывестиГиперссылкуВПанель(ТаблицаВывода, Вариант, Группа, ПоказыватьПодсказки)
-
- Найденные = ТаблицаВывода.НайтиСтроки(Новый Структура("Ссылка", Вариант.Ссылка));
- Если Найденные.Количество() > 0 Тогда
- СтрокаВывода = Найденные[0];
- СтрокаВывода.ЭлементНадоОставить = Истина;
+Процедура ПослеИзмененияКлючевыхСостояний(ПараметрыЗаполнения)
+ Если ПараметрыЗаполнения.Событие.Имя <> "ПослеФормирования" Тогда
+ Если НастройкиОтчета.ФормироватьСразу Тогда
+ НадоСформировать = Истина;
+ ИначеЕсли ПараметрыЗаполнения.ВариантМодифицирован
+ Или ПараметрыЗаполнения.ПользовательскиеНастройкиМодифицированы
+ Или ПараметрыЗаполнения.Событие.Имя = "НастройкиПоУмолчанию" Тогда
+ ОтображениеСостояния = Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния;
+ ОтображениеСостояния.Видимость = Истина;
+ ОтображениеСостояния.Текст = НСтр("ru = 'Отчет не сформирован. Нажмите ""Сформировать"" для получения отчета.'");
+ ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.Неактуальность;
+ КонецЕсли;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ДеревоВариантаЗарегистрироватьЭлемент(ЭлементСтруктурыСКД, НаборСтрокДерева)
+ СтрокаДерева = НаборСтрокДерева.Добавить();
+ СтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ СтрокаДерева.ТипНастройки = ТипНастройкиСтрокой(ТипЗнч(ЭлементСтруктурыСКД));
+ Если СтрокаДерева.ТипНастройки = "Настройки" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Группировка" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Таблица" Тогда
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ // Колонки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Колонки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Колонки Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ // Строки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Строки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Строки Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Диаграмма" Тогда
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ // Серии:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Серии";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Серии Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ // Точки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Точки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Точки Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "НастройкиВложенногоОбъекта" Тогда
+ ДеревоВариантаЗарегистрироватьЭлемент(ЭлементСтруктурыСКД.Настройки, СтрокаДерева.Строки);
+ ИначеЕсли СтрокаДерева.ТипНастройки = "ГруппировкаТаблицы" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "ГруппировкаДиаграммы" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ Иначе
Возврат;
КонецЕсли;
- СтрокаВывода = ТаблицаВывода.Добавить();
- ЗаполнитьЗначенияСвойств(СтрокаВывода, Вариант);
- ВариантыПанелиНомерЭлемента = ВариантыПанелиНомерЭлемента + 1;
- СтрокаВывода.НадписьИмя = "Вариант" + Формат(ВариантыПанелиНомерЭлемента, "ЧГ=");
- СтрокаВывода.Дополнительный = (Вариант.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный);
- СтрокаВывода.ИмяГруппы = Группа.Имя;
- СтрокаВывода.ЭлементНадоОставить = Истина;
- СтрокаВывода.Группа = Группа;
+ Если СтрокаДерева.ТипНастройки <> "НастройкиВложенногоОбъекта" Тогда
+ ПараметрЗаголовок = ЭлементСтруктурыСКД.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок"));
+ Если ПараметрЗаголовок <> Неопределено И ПараметрЗаголовок.Использование Тогда
+ СтрокаДерева.Заголовок = ПараметрЗаголовок.Значение;
+ КонецЕсли;
+ КонецЕсли;
- // Добавление надписи-гиперссылки варианта отчета
- Надпись = Элементы.Вставить(СтрокаВывода.НадписьИмя, Тип("ДекорацияФормы"), СтрокаВывода.Группа);
- Надпись.Вид = ВидДекорацииФормы.Надпись;
- Надпись.Гиперссылка = Истина;
- Надпись.РастягиватьПоГоризонтали = Истина;
- Надпись.РастягиватьПоВертикали = Ложь;
- Надпись.Высота = 1;
- Надпись.ЦветТекста = ЦветаСтиля.ВидимыйВариантОтчетаЦвет;
- Надпись.Заголовок = СокрЛП(Строка(Вариант.Ссылка));
- Если ЗначениеЗаполнено(Вариант.Описание) Тогда
- Надпись.Подсказка = СокрЛП(Вариант.Описание);
+ Если СтрокаДерева.ЕстьСтруктура Тогда
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Структура Цикл
+ ДеревоВариантаЗарегистрироватьЭлемент(ВложенныйЭлемент, СтрокаДерева.Строки);
+ КонецЦикла;
КонецЕсли;
- Если ЗначениеЗаполнено(Вариант.Автор) Тогда
- Надпись.Подсказка = СокрЛ(Надпись.Подсказка + Символы.ПС) + НСтр("ru = 'Автор:'") + " " + СокрЛП(Строка(Вариант.Автор));
- КонецЕсли;
- Если ПоказыватьПодсказки Тогда
- Надпись.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
- Надпись.РасширеннаяПодсказка.РастягиватьПоГоризонтали = Истина;
- Надпись.РасширеннаяПодсказка.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;
- КонецЕсли;
- Надпись.УстановитьДействие("Нажатие", "ВариантНажатие");
-
КонецПроцедуры
+&НаСервере
+Функция ТипНастройкиСтрокой(ТипНастройки)
+ Если ТипНастройки = Тип("НастройкиКомпоновкиДанных") Тогда
+ Возврат "Настройки";
+ ИначеЕсли ТипНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
+ Возврат "НастройкиВложенногоОбъекта";
+
+ ИначеЕсли ТипНастройки = Тип("ОтборКомпоновкиДанных") Тогда
+ Возврат "Отбор";
+ ИначеЕсли ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ Возврат "ЭлементОтбора";
+ ИначеЕсли ТипНастройки = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ Возврат "ГруппаЭлементовОтбора";
+
+ ИначеЕсли ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ Возврат "ЗначениеПараметраНастроек";
+
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаКомпоновкиДанных") Тогда
+ Возврат "Группировка";
+ ИначеЕсли ТипНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
+ Возврат "Порядок";
+ ИначеЕсли ТипНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
+ Возврат "ВыбранныеПоля";
+
+ ИначеЕсли ТипНастройки = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
+ Возврат "УсловноеОформление";
+ ИначеЕсли ТипНастройки = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
+ Возврат "ЭлементУсловногоОформления";
+
+ ИначеЕсли ТипНастройки = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
+ Возврат "СтруктураНастроек";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыНастроек";
+
+ ИначеЕсли ТипНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
+ Возврат "Таблица";
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
+ Возврат "ГруппировкаТаблицы";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыТаблицы";
+
+ ИначеЕсли ТипНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
+ Возврат "Диаграмма";
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
+ Возврат "ГруппировкаДиаграммы";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыДиаграммы";
+
+ ИначеЕсли ТипНастройки = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
+ Возврат "ПолеГруппировки";
+ ИначеЕсли ТипНастройки = Тип("ПоляГруппировкиКомпоновкиДанных") Тогда
+ Возврат "ПоляГруппировки";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияПолейГруппировкиКомпоновкиДанных") Тогда
+ Возврат "КоллекцияПолейГруппировки";
+
+ Иначе
+ Возврат "";
+ КонецЕсли;
+КонецФункции
+
+&НаСервере
+Функция ДеревоВариантаНайти(ДеревоВарианта, СвойстваНастройки)
+ ИдентификаторСКД = СвойстваНастройки.ИдентификаторСКД;
+
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+
+ //Настройки, свойство Отбор
+ //Группировка, свойство Отбор
+ //ГруппировкаТаблицы, свойство Отбор
+ //ГруппировкаДиаграммы, свойство Отбор
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Отбор.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Отбор;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора"
+ Или СвойстваНастройки.Тип = "ГруппаЭлементовОтбора" Тогда
+
+ //Настройки, свойство Отбор.Элементы
+ //Группировка, свойство Отбор.Элементы
+ //ГруппировкаТаблицы, свойство Отбор.Элементы
+ //ГруппировкаДиаграммы, свойство Отбор.Элементы
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ НайденныйЭлемент = НайтиПоИдентификатору(СтрокаДерева.Настройка.Отбор.Элементы, ИдентификаторСКД);
+ Если НайденныйЭлемент <> Неопределено Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = НайденныйЭлемент;
+ Если СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ СвойстваНастройки.ДоступнаяСКД = СтрокаДерева.Настройка.Отбор.ДоступныеПоляОтбора.НайтиПоле(НайденныйЭлемент.ЛевоеЗначение);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+
+ //Настройки, свойство Порядок
+ //Группировка, свойство Порядок
+ //ГруппировкаТаблицы, свойство Порядок
+ //ГруппировкаДиаграммы, свойство Порядок
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Порядок.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Порядок;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ //Настройки, свойство Выбор
+ //Таблица, свойство Выбор
+ //Диаграмма, свойство Выбор
+ //Группировка, свойство Выбор
+ //ГруппировкаДиаграммы, свойство Выбор
+ //ГруппировкаТаблицы, свойство Выбор
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Выбор.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Выбор;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "УсловноеОформление" Тогда
+
+ //Настройки, свойство УсловноеОформление
+ //Таблица, свойство УсловноеОформление
+ //Диаграмма, свойство УсловноеОформление
+ //Группировка, свойство УсловноеОформление
+ //ГруппировкаДиаграммы, свойство УсловноеОформление
+ //ГруппировкаТаблицы, свойство УсловноеОформление
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.УсловноеОформление.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.УсловноеОформление;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+
+ //Настройки, свойство УсловноеОформление.Элементы
+ //Таблица, свойство УсловноеОформление.Элементы
+ //Диаграмма, свойство УсловноеОформление.Элементы
+ //Группировка, свойство УсловноеОформление.Элементы
+ //ГруппировкаДиаграммы, свойство УсловноеОформление.Элементы
+ //ГруппировкаТаблицы, свойство УсловноеОформление.Элементы
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Для Каждого ЭлементУО Из СтрокаДерева.Настройка.УсловноеОформление.Элементы Цикл
+ Если ЭлементУО.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЭлементУО;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+
+ ПараметрКД = СвойстваНастройки.ПользовательскаяСКД.Параметр;
+
+ //ПараметрКомпоновкиДанных содержится в КоллекцияЗначенийПараметровКомпоновкиДанных, которая в свою очередь:
+ // ЗначенияПараметровДанныхКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Настройки, свойство ПараметрыДанных
+ // ЗначенияПараметровВыводаКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Настройки, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Группировка, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиТаблицыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ГруппировкаТаблицы, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаТаблицыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Таблица, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаДиаграммыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Диаграмма, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиДиаграммыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ГруппировкаДиаграммы, свойство ПараметрыВывода
+ // ОформлениеКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ЭлементОбластиМакетаОформленияКомпоновкиДанных, свойство Оформление
+ // ЭлементУсловногоОформленияКомпоновкиДанных, свойство Оформление
+ // ПолеНабораДанныхСхемыКомпоновкиДанных, свойство Оформление
+ // ВычисляемоеПолеСхемыКомпоновкиДанных, свойство Оформление
+ // ЗначениеПараметраКомпоновкиДанных, свойство ЗначенияВложенныхПараметров
+
+ //Настройки, свойство ПараметрыДанных, метод НайтиЗначениеПараметра()
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Настройки"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ ЗначениеПараметра = СтрокаДерева.Настройка.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКД);
+ Если ЗначениеПараметра <> Неопределено
+ И ЗначениеПараметра.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЗначениеПараметра;
+ ДоступныеПараметры = СтрокаДерева.Настройка.ПараметрыДанных.ДоступныеПараметры;
+ Если ДоступныеПараметры <> Неопределено Тогда
+ СвойстваНастройки.ДоступнаяСКД = ДоступныеПараметры.НайтиПараметр(ПараметрКД);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Настройки, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Группировка, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Таблица, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Диаграмма, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //ГруппировкаТаблицы, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //ГруппировкаДиаграммы, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ ЗначениеПараметра = СтрокаДерева.Настройка.ПараметрыВывода.НайтиЗначениеПараметра(ПараметрКД);
+ Если ЗначениеПараметра <> Неопределено
+ И ЗначениеПараметра.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Тип = "ЗначениеПараметраВывода"; // Подмена типа...
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЗначениеПараметра;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Группировка"
+ Или СвойстваНастройки.Тип = "ГруппировкаТаблицы"
+ Или СвойстваНастройки.Тип = "ГруппировкаДиаграммы"
+ Или СвойстваНастройки.Тип = "Таблица"
+ Или СвойстваНастройки.Тип = "Диаграмма"
+ Или СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+
+ // Прямо в структуре.
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", СвойстваНастройки.Тип), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Если СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+ СвойстваНастройки.ДоступнаяСКД = Отчет.КомпоновщикНастроек.Настройки.ДоступныеОбъекты.Элементы.Найти(СтрокаДерева.Настройка.ИдентификаторОбъекта);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если СвойстваНастройки.Тип = "Группировка" Тогда
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "ГруппировкаТаблицы"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ГруппировкаТаблицы";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "ГруппировкаДиаграммы"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ГруппировкаДиаграммы";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ //Настройки, свойство Структура
+ //Группировка, свойство Структура
+ //ГруппировкаТаблицы, свойство Структура
+ //ГруппировкаДиаграммы, свойство Структура
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Структура.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "Структура";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Структура;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Таблица, свойство Колонки
+ //Таблица, свойство Строки
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Таблица"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Строки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ТаблицаСтроки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Строки;
+ Возврат Истина;
+ ИначеЕсли СтрокаДерева.Настройка.Колонки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ТаблицаКолонки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Колонки;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Диаграмма, свойство Серии
+ //Диаграмма, свойство Точки
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Диаграмма"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Серии.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ДиаграммаСерии";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Серии;
+ Возврат Истина;
+ ИначеЕсли СтрокаДерева.Настройка.Точки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ДиаграммаТочки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Точки;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
+&НаСервере
+Функция НайтиПоИдентификатору(ЭлементыСКД, ИдентификаторСКД)
+ Для Каждого ЭлементСКД Из ЭлементыСКД Цикл
+ Если ЭлементСКД.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ Возврат ЭлементСКД;
+ ИначеЕсли ТипЗнч(ЭлементСКД) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ Найденный = НайтиПоИдентификатору(ЭлементСКД.Элементы, ИдентификаторСКД);
+ Если Найденный <> Неопределено Тогда
+ Возврат Найденный;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Неопределено;
+КонецФункции
+
+&НаСервереБезКонтекста
+Функция ПредставлениеПользовательскойНастройки(СвойстваНастройки)
+ ЭлементЗаголовок = "";
+
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Отбор'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппаЭлементовОтбора" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ПользовательскаяСКД.ТипГруппы);
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ВариантаСКД.ЛевоеЗначение);
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Сортировка'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Поля'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "УсловноеОформление" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Оформление'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+ ПредставлениеЗначения = Строка(СвойстваНастройки.ПользовательскаяСКД.Оформление);
+ ПредставлениеТипа = НСтр("ru = 'Элемент оформления'");
+ Если ПустаяСтрока(ПредставлениеЗначения) Тогда
+ ЭлементЗаголовок = ПредставлениеТипа;
+ Иначе
+ ЭлементЗаголовок = ПредставлениеЗначения +" ("+ НРег(ПредставлениеТипа) +")";
+ КонецЕсли;
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ВариантаСКД.Параметр);
+
+ ИначеЕсли СвойстваНастройки.Тип = "Группировка" Тогда
+ Суффикс = СокрЛП(Строка(СвойстваНастройки.ВариантаСКД.ПоляГруппировки));
+ ЭлементЗаголовок = НСтр("ru = 'Группировка'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппировкаТаблицы" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Группировка таблицы'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппировкаДиаграммы" Тогда
+ Суффикс = СокрЛП(Строка(СвойстваНастройки.ВариантаСКД.ПоляГруппировки));
+ ЭлементЗаголовок = НСтр("ru = 'Группировка диаграммы'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "Таблица" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Таблица'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "Диаграмма" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Диаграмма'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+ ЭлементЗаголовок = СтрЗаменить(НСтр("ru = 'Вложенная группировка ''%1'''"), "%1", Строка(СвойстваНастройки.ПользовательскаяСКД));
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ Если СвойстваНастройки.Подтип = "ТаблицаСтроки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Строки'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ТаблицаКолонки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Колонки'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ДиаграммаСерии" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Серии'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ДиаграммаТочки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Точки'");
+
+ Иначе
+ ЭлементЗаголовок = НСтр("ru = 'Структура'");
+
+ КонецЕсли;
+
+ Иначе
+ ЭлементЗаголовок = Строка(СвойстваНастройки.Тип);
+
+ КонецЕсли;
+
+ Возврат СокрЛП(ЭлементЗаголовок);
+КонецФункции
+
+&НаСервере
+Функция ЗначениеРеквизита(Имя)
+ Структура = Новый Структура(Имя);
+ ЗаполнитьЗначенияСвойств(Структура, ЭтотОбъект);
+ Возврат Структура[Имя];
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl b/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl
index bd75d9f35..86a5cf742 100644
--- a/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl
@@ -27,26 +27,32 @@
КонецПроцедуры
-// Переопределяет действие перед авторизацией пользователя,
-// выполняемой при начале работы системы (в процессе получения
-// параметров работы клиента при запуске).
-//
-// Можно заполнить состав пользователей и выполнить перезапуск.
+// Настраивает автономное рабочее место при первом запуске.
+// Заполняет состав пользователей и другие настройки.
+// Вызывается перед авторизацией пользователя. Может потребоваться перезапуск.
//
-// Требуется, например, при настройке автономного рабочего места.
-//
-// Параметры:
-// Перезапустить - Булево, начальное значение Ложь. Если указать
-// Истина, тогда работа системы будет прекращена.
-//
-Процедура ПередАвторизациейТекущегоПользователяПриНачалеРаботыСистемы(Перезапустить) Экспорт
+Функция ПродолжитьНастройкуАвтономногоРабочегоМеста(Параметры) Экспорт
- Если НеобходимоВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске() Тогда
- ВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске();
- Перезапустить = Истина;
+ Если Не НеобходимоВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске() Тогда
+ Возврат Ложь;
КонецЕсли;
+
+ Попытка
+ ВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске();
+ Параметры.Вставить("ПерезапуститьПослеНастройкиАвтономногоРабочегоМеста");
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+
+ ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(),
+ УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
+
+ Параметры.Вставить("ОшибкаПриНастройкеАвтономногоРабочегоМеста",
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
+ КонецПопытки;
-КонецПроцедуры
+ Возврат Истина;
+
+КонецФункции
////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ, ИСПОЛЬЗУЕМЫЕ НА СТОРОНЕ СЕРВИСА
@@ -539,18 +545,25 @@
// Правила обмена не мигрируют в РИБ, поэтому выполняем загрузку правил
ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными();
-
ЗагрузитьДанныеНачальногоОбраза();
-
ЗагрузитьПараметрыИзНачальногоОбраза();
+ УстановитьПривилегированныйРежим(Ложь);
+
+ ПриПродолженииНастройкиАвтономногоРабочегоМеста();
+
+КонецПроцедуры
+
+Процедура ПриПродолженииНастройкиАвтономногоРабочегоМеста()
+ УстановитьПривилегированныйРежим(Истина);
+ ПользователиСлужебный.ОчиститьИдентификаторыНесуществующихПользователейИБ();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный");
МодульРаботаСПочтовымиСообщениямиСлужебный.ОтключитьИспользованиеУчетныхЗаписей();
КонецЕсли;
-
КонецПроцедуры
+
// Для внутреннего использования
//
Процедура ОтключитьАвтоматическуюСинхронизациюДанныхСПриложениемВИнтернете() Экспорт
@@ -571,9 +584,7 @@
Функция НеобходимоВыполнитьНастройкуАвтономногоРабочегоМестаПриПервомЗапуске() Экспорт
УстановитьПривилегированныйРежим(Истина);
-
- Возврат Не Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить()
- И ЭтоАвтономноеРабочееМесто();
+ Возврат Не Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить() И ЭтоАвтономноеРабочееМесто();
КонецФункции
@@ -726,8 +737,9 @@
УзелПриложенияВСервисе.ДополнительныеСвойства.Вставить("ПолучениеСообщенияОбмена");
УзелПриложенияВСервисе.Записать();
- // Назначаем созданный узел главным
+ // Назначение созданного узла главным.
ПланыОбмена.УстановитьГлавныйУзел(УзелПриложенияВСервисе.Ссылка);
+ СтандартныеПодсистемыСервер.СохранитьГлавныйУзел();
НачатьТранзакцию();
Попытка
diff --git a/SSL/src/CommonModules/АвтономнаяРаботаСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/АвтономнаяРаботаСлужебныйКлиент/Module.bsl
new file mode 100644
index 000000000..7daeaf8ee
--- /dev/null
+++ b/SSL/src/CommonModules/АвтономнаяРаботаСлужебныйКлиент/Module.bsl
@@ -0,0 +1,42 @@
+////////////////////////////////////////////////////////////////////////////////
+// Подсистема "Обмен данными в модели сервиса".
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#Область СлужебныеПроцедурыИФункции
+
+// Проверяет настройку автономного рабочего места и уведомляет об ошибке.
+Процедура ПередНачаломРаботыСистемы(Параметры) Экспорт
+
+ ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
+
+ Если ПараметрыКлиента.Свойство("ПерезапуститьПослеНастройкиАвтономногоРабочегоМеста") Тогда
+ Параметры.Отказ = Истина;
+ Параметры.Перезапустить = Истина;
+ Возврат;
+ КонецЕсли;
+
+ Если НЕ ПараметрыКлиента.Свойство("ОшибкаПриНастройкеАвтономногоРабочегоМеста") Тогда
+ Возврат;
+ КонецЕсли;
+
+ Параметры.Отказ = Истина;
+ Параметры.ИнтерактивнаяОбработка = Новый ОписаниеОповещения(
+ "ИнтерактивнаяОбработкаПриПроверкеНастройкиАвтономногоРабочегоМеста", ЭтотОбъект);
+
+КонецПроцедуры
+
+///////////////////////////////////////////////////////////////////////////////
+// Обработчики оповещений.
+
+// Предупреждает об ошибке настройки автономного рабочего места.
+Процедура ИнтерактивнаяОбработкаПриПроверкеНастройкиАвтономногоРабочегоМеста(Параметры, Неопределен) Экспорт
+
+ ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
+
+ СтандартныеПодсистемыКлиент.ПоказатьПредупреждениеИПродолжить(
+ Параметры, ПараметрыКлиента.ОшибкаПриНастройкеАвтономногоРабочегоМеста);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/CommonModules/АвтономнаяРаботаСлужебныйКлиент/АвтономнаяРаботаСлужебныйКлиент.mdo b/SSL/src/CommonModules/АвтономнаяРаботаСлужебныйКлиент/АвтономнаяРаботаСлужебныйКлиент.mdo
new file mode 100644
index 000000000..9c7e397de
--- /dev/null
+++ b/SSL/src/CommonModules/АвтономнаяРаботаСлужебныйКлиент/АвтономнаяРаботаСлужебныйКлиент.mdo
@@ -0,0 +1,10 @@
+
+
+ АвтономнаяРаботаСлужебныйКлиент
+
+ ru
+ Автономная работа служебный клиент
+
+ true
+ true
+
diff --git a/SSL/src/CommonModules/АдминистрированиеКластераCOMКлиентСервер/Module.bsl b/SSL/src/CommonModules/АдминистрированиеКластераCOMКлиентСервер/Module.bsl
index 43f773f99..bb1d499ef 100644
--- a/SSL/src/CommonModules/АдминистрированиеКластераCOMКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/АдминистрированиеКластераCOMКлиентСервер/Module.bsl
@@ -1024,7 +1024,7 @@
Функция СоединениеСРабочимПроцессом(COMСоединитель, СоединениеСАгентомСервера, Кластер)
Для Каждого РабочийПроцесс Из СоединениеСАгентомСервера.GetWorkingProcesses(Кластер) Цикл
- Если РабочийПроцесс.Running Тогда
+ Если РабочийПроцесс.Running И РабочийПроцесс.IsEnable Тогда
СтрокаСоединенияСРабочимПроцессом = РабочийПроцесс.HostName + ":" + Формат(РабочийПроцесс.MainPort, "ЧГ=");
Возврат COMСоединитель.ConnectWorkingProcess(СтрокаСоединенияСРабочимПроцессом);
КонецЕсли;
@@ -1225,40 +1225,31 @@
Соединения = Новый Массив();
Словарь = СловарьСвойствСоединений();
- Для Каждого РабочийПроцесс Из СоединениеСАгентомСервера.GetWorkingProcesses(Кластер) Цикл
+ СоединениеСРабочимПроцессом = СоединениеСРабочимПроцессом(COMСоединитель, СоединениеСАгентомСервера, Кластер);
+
+ СоединениеСРабочимПроцессом.AddAuthentication(ИмяАдминистратораИБ, ПарольАдминистратораИБ);
+
+ Для Каждого ИнформационнаяБаза Из СоединениеСРабочимПроцессом.GetInfoBases() Цикл
- Если РабочийПроцесс.Running Тогда
+ Если ИнформационнаяБаза.Name = ИмяВКластере Тогда
- СтрокаСоединенияСРабочимПроцессом = РабочийПроцесс.HostName + ":" + Формат(РабочийПроцесс.MainPort, "ЧГ=");
- СоединениеСРабочимПроцессом = COMСоединитель.ConnectWorkingProcess(СтрокаСоединенияСРабочимПроцессом);
-
- СоединениеСРабочимПроцессом.AddAuthentication(ИмяАдминистратораИБ, ПарольАдминистратораИБ);
-
- Для Каждого ИнформационнаяБаза Из СоединениеСРабочимПроцессом.GetInfoBases() Цикл
+ Для Каждого Соединение Из СоединениеСРабочимПроцессом.GetInfoBaseConnections(ИнформационнаяБаза) Цикл
- Если ИнформационнаяБаза.Name = ИмяВКластере Тогда
-
- Для Каждого Соединение Из СоединениеСРабочимПроцессом.GetInfoBaseConnections(ИнформационнаяБаза) Цикл
-
- ОписаниеСоединения = ОписаниеОбъектаОбъектнойМоделиCOMАдминистратора(Соединение, Словарь);
-
- Если АдминистрированиеКластераКлиентСервер.ПроверитьУсловияФильтра(ОписаниеСоединения, Фильтр) Тогда
-
- Если Описания Тогда
- Соединения.Добавить(ОписаниеСоединения);
- Иначе
- Соединения.Добавить(Новый Структура("СоединениеСРабочимПроцессом, Соединение", СоединениеСРабочимПроцессом, Соединение));
- КонецЕсли;
-
- КонецЕсли;
-
- КонецЦикла;
+ ОписаниеСоединения = ОписаниеОбъектаОбъектнойМоделиCOMАдминистратора(Соединение, Словарь);
+
+ Если АдминистрированиеКластераКлиентСервер.ПроверитьУсловияФильтра(ОписаниеСоединения, Фильтр) Тогда
+ Если Описания Тогда
+ Соединения.Добавить(ОписаниеСоединения);
+ Иначе
+ Соединения.Добавить(Новый Структура("СоединениеСРабочимПроцессом, Соединение", СоединениеСРабочимПроцессом, Соединение));
+ КонецЕсли;
КонецЕсли;
-
+
КонецЦикла;
+
КонецЕсли;
КонецЦикла;
diff --git a/SSL/src/CommonModules/АдминистрированиеКластераRASКлиентСервер/Module.bsl b/SSL/src/CommonModules/АдминистрированиеКластераRASКлиентСервер/Module.bsl
index 0f8a71f67..ff3645d7e 100644
--- a/SSL/src/CommonModules/АдминистрированиеКластераRASКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/АдминистрированиеКластераRASКлиентСервер/Module.bsl
@@ -794,7 +794,7 @@
ПотокВывода = ВыполнитьКоманду(Шаблон, ПараметрыАдминистрированияКластера, Параметры);
РабочиеПроцессыСервера = ПарсерВывода(ПотокВывода, Неопределено, Фильтр);
Для Каждого РабочийПроцесс Из РабочиеПроцессыСервера Цикл
- Если РабочийПроцесс.Получить("running") Тогда
+ Если РабочийПроцесс.Получить("running") = "yes" И РабочийПроцесс.Получить("is-enable") = "yes" Тогда
Результат.Добавить(РабочийПроцесс);
КонецЕсли;
КонецЦикла;
diff --git a/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl
index f490d640a..ae5cc0e01 100644
--- a/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl
+++ b/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl
@@ -6,16 +6,24 @@
#Область ПрограммныйИнтерфейс
// Возвращает версии адресных объектов, записанные при последнем обновлении.
-// Если записи об адресном объекте нет - возвращается дата 01.09.2008
+// Если записи об адресном объекте нет - возвращается пустая дата
//
-// Возвращаемое значение
-// СписокЗначений - в ключе помещается номер адресного объекта, в значении - дата выпуска версии.
+// Возвращаемое значение:
+// СписокЗначений - в представлении - номер адресного объекта, в значении - UTC дата выпуска версии.
//
Функция ВерсииАдресныхОбъектов() Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
- | Регион.КодАдресногоОбъектаВКоде КАК АдресныйОбъект
+ | Версии.АдресныйОбъект КАК АдресныйОбъект,
+ | Версии.ДатаВыпускаВерсии КАК ДатаВерсии
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектовАдресногоКлассификатора КАК Версии
+ |;
+ |////////////////////////////////////////////////////////////////////////////////
+ |
+ |ВЫБРАТЬ
+ | Регион.КодАдресногоОбъектаВКоде КАК КодРегиона
|ИЗ
| РегистрСведений.АдресныйКлассификатор КАК Регион
|ГДЕ
@@ -27,46 +35,39 @@
| ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныйКлассификатор ГДЕ КодАдресногоОбъектаВКоде=Регион.КодАдресногоОбъектаВКоде И ТипАдресногоЭлемента = 5
| ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныйКлассификатор ГДЕ КодАдресногоОбъектаВКоде=Регион.КодАдресногоОбъектаВКоде И ТипАдресногоЭлемента = 6
| )
- |УПОРЯДОЧИТЬ ПО
- | АдресныйОбъект
- |;
- |
- |////////////////////////////////////////////////////////////////////////////////
- |ВЫБРАТЬ
- | Версии.АдресныйОбъект КАК АдресныйОбъект,
- | Версии.ДатаВыпускаВерсии КАК ДатаВыпускаВерсии
- |ИЗ
- | РегистрСведений.ВерсииОбъектовАдресногоКлассификатора КАК Версии
|");
РезультатЗапроса= Запрос.ВыполнитьПакет();
- АдресныеОбъекты = РезультатЗапроса[0].Выгрузить().ВыгрузитьКолонку("АдресныйОбъект");
- УстановленныеВерсии = РезультатЗапроса[1].Выгрузить();
+ ТекущиеВерсии = РезультатЗапроса[0].Выгрузить();
+ ТекущиеВерсии.Индексы.Добавить("АдресныйОбъект");
- Результат = Новый СписокЗначений;
+ ДатаВерсии = '00000000';
+ Результат = Новый СписокЗначений;
- Для Каждого АдресныйОбъект Из АдресныеОбъекты Цикл
- ДобавитьВерсиюВСписок(Формат(АдресныйОбъект, "ЧЦ=2; ЧВН=; ЧГ=0"), УстановленныеВерсии, Результат);
+ Для Каждого КодРегиона Из РезультатЗапроса[1].Выгрузить().ВыгрузитьКолонку("КодРегиона") Цикл
+ КодСтрокой = Формат(КодРегиона, "ЧЦ=2; ЧН=; ЧВН=");
+ СтрокаВерсии = ТекущиеВерсии.Найти(КодСтрокой, "АдресныйОбъект");
+ Результат.Добавить( ?(СтрокаВерсии = Неопределено, ДатаВерсии, СтрокаВерсии.ДатаВерсии), КодСтрокой);
КонецЦикла;
Если Результат.Количество() > 0 Тогда
- ДобавитьВерсиюВСписок("AL", УстановленныеВерсии, Результат);
- ДобавитьВерсиюВСписок("SO", УстановленныеВерсии, Результат);
+ Результат.Добавить(ДатаВерсии, "AL");
+ Результат.Добавить(ДатаВерсии, "SO");
КонецЕсли;
Возврат Результат;
-
КонецФункции
// Процедура для загрузки данных в КЛАДР
//
// Параметры:
-// КодАдресногоОбъекта - Строка - код адресного объекта в формате NN
-// ПутьКДаннымНаСервере - Строка - путь к каталогу на сервере, в котором хранятся файлы кладр
-// ЗагрузкаСВеб - Булево - если Истина, данные загружаются с веб сервера 1С
+// КодАдресногоОбъекта - Строка - Код адресного объекта в формате NN
+// ПутьКДаннымНаСервере - Строка - Путь к каталогу на сервере, в котором хранятся файлы кладр
+// ЗагрузкаСВеб - Булево - Если Истина, данные загружаются с веб сервера 1С (другое формирование имени файла)
+// Версия - Дата - Дата и время загружаемой версии
//
-Процедура ЗагрузитьКлассификаторПоАдресномуОбъекту(Знач КодАдресногоОбъекта, ПутьКДаннымНаСервере, ЗагрузкаСВеб) Экспорт
+Процедура ЗагрузитьКлассификаторПоАдресномуОбъекту(Знач КодАдресногоОбъекта, Знач ПутьКДаннымНаСервере, Знач ЗагрузкаСВеб, Знач Версия) Экспорт
КодАдресногоОбъекта = Лев(КодАдресногоОбъекта, 2);
@@ -117,18 +118,28 @@
ЗаполнитьАльтернативныеНазвания(ПутьКДаннымНаСервере + ИмяФайлаАльтернативныхНазваний + Постфикс,
АдресныеСведения, АльтернативныеНазвания, ЗагрузкаСВеб);
- // Записываем классификатор с выравниванием кода
+ // Выравнивание кода - для совместимости
АдресныеСведения.Индексы.Удалить(ИндексПоКоду);
Для Каждого Элемент Из АдресныеСведения Цикл
Элемент.Код = Лев(Строка(Элемент.Код) + "000000000000000000000", 21);
КонецЦикла;
- НаборАдресныхСведений = РегистрыСведений.АдресныйКлассификатор.СоздатьНаборЗаписей();
- НаборАдресныхСведений.Отбор.КодАдресногоОбъектаВКоде.Использование = Истина;
- НаборАдресныхСведений.Отбор.КодАдресногоОбъектаВКоде.Значение = Число(КодАдресногоОбъекта);
- НаборАдресныхСведений.Загрузить(АдресныеСведения);
- НаборАдресныхСведений.Записать();
-
+ // Запись в одной транзакции с версией
+ НачатьТранзакцию();
+ Попытка
+ НаборАдресныхСведений = РегистрыСведений.АдресныйКлассификатор.СоздатьНаборЗаписей();
+ НаборАдресныхСведений.Отбор.КодАдресногоОбъектаВКоде.Установить( Число(КодАдресногоОбъекта) );
+ НаборАдресныхСведений.Загрузить(АдресныеСведения);
+ НаборАдресныхСведений.Записать();
+
+ УстановитьВерсиюКлассификатора(КодАдресногоОбъекта, Версия);
+
+ ЗафиксироватьТранзакцию();
+ Исключение
+ ОтменитьТранзакцию();
+ ВызватьИсключение;
+ КонецПопытки;
+
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации, УровеньЖурналаРегистрации.Информация, , ,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Загружен адресный классификатор по региону %1, %2 записей.'"),
@@ -136,7 +147,7 @@
));
КонецПроцедуры
-// Процедура очищает адресные сведений по переданным адресным объектам.
+// Очищает адресные сведений по переданным адресным объектам.
//
// Параметры:
// МассивАдресныхОбъектов - Массив - каждый элемент - строка, номер адресного объекта в формате NN
@@ -144,11 +155,20 @@
Процедура УдалитьАдресныеСведения(Знач МассивАдресныхОбъектов) Экспорт
Для Каждого КодАдресногоОбъекта Из МассивАдресныхОбъектов Цикл
- НаборАдресныхСведений = РегистрыСведений.АдресныйКлассификатор.СоздатьНаборЗаписей();
- НаборАдресныхСведений.Отбор.КодАдресногоОбъектаВКоде.Использование = Истина;
- НаборАдресныхСведений.Отбор.КодАдресногоОбъектаВКоде.Значение = Число(КодАдресногоОбъекта);
- НаборАдресныхСведений.Записать();
- УстановитьВерсиюКлассификатора(КодАдресногоОбъекта);
+
+ НачатьТранзакцию();
+ Попытка
+ НаборАдресныхСведений = РегистрыСведений.АдресныйКлассификатор.СоздатьНаборЗаписей();
+ НаборАдресныхСведений.Отбор.КодАдресногоОбъектаВКоде.Установить( Число(КодАдресногоОбъекта) );
+ НаборАдресныхСведений.Записать();
+
+ УстановитьВерсиюКлассификатора(КодАдресногоОбъекта);
+ ЗафиксироватьТранзакцию();
+ Исключение
+ ОтменитьТранзакцию();
+ ВызватьИсключение;
+ КонецПопытки;
+
КонецЦикла;
КонецПроцедуры
@@ -156,7 +176,7 @@
// Функция возвращает число адресных объектов по которым заполнены адресные сведения
//
// Возвращаемое значение:
-// Число заполненных адресных объектов.
+// Число - Количество заполненных адресных объектов.
//
Функция ЧислоЗаполненныхАдресныхОбъектов() Экспорт
@@ -218,50 +238,71 @@
КонецФункции
+// Функция сообщает, загружен ли адресный классификатор
+//
+// Возвращаемое значение:
+// Булево - Истина, если адресный классификатор загружен, Ложь - в противном случае.
+//
+Функция КлассификаторЗагружен() Экспорт
+ Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
+ | АдресныйКлассификатор.КодАдресногоОбъектаВКоде КАК КодАдресногоОбъектаВКоде
+ |ИЗ
+ | РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
+ |ГДЕ
+ | АдресныйКлассификатор.ТипАдресногоЭлемента > 1");
+
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Возврат Ложь;
+КонецФункции
+
+
// Возвращает структуру, содержащую информацию по адресному объекту
//
// Параметры
// КодАдресногоОбъекта - Строка - номер адресного объекта от 1 до 89 + 99 в формате NN
//
-// Возвращаемое значение
-// Структура, с ключами:
-// КодАдресногоОбъекта - Строка - код адресного объекта.
-// Наименование - Строка - наименование адресного объекта.
-// Сокращение - Строка - сокращение адресного объекта.
-// Индекс - Строка - индекс.
+// Возвращаемое значение:
+// Структура - описание адресного объекта, содержит ключи:
+// * КодАдресногоОбъекта - Строка - код адресного объекта.
+// * Наименование - Строка - наименование адресного объекта.
+// * Сокращение - Строка - сокращение адресного объекта.
+// * Индекс - Строка - индекс.
//
-Функция ИнформацияПоАдресномуОбъекту(КодАдресногоОбъекта) Экспорт
-
- КлассификаторАдресныхОбъектовXML = РегистрыСведений.АдресныйКлассификатор.ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст();
-
- КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторАдресныхОбъектовXML).Данные;
+Функция ИнформацияПоАдресномуОбъекту(Знач КодАдресногоОбъекта) Экспорт
Результат = Новый Структура("КодАдресногоОбъекта, Наименование, Сокращение, Индекс");
Если КодАдресногоОбъекта = "AL" Тогда
- //
Результат.КодАдресногоОбъекта = "AL";
Результат.Наименование = НСтр("ru = 'Альтернативные названия'");
Результат.Сокращение = "";
Результат.Индекс = "";
- //
+
ИначеЕсли КодАдресногоОбъекта = "SO" Тогда
- //
Результат.КодАдресногоОбъекта = "SO";
Результат.Наименование = НСтр("ru = 'Адресные сокращения'");
Результат.Сокращение = "";
Результат.Индекс = "";
- Иначе
- Для Каждого АдресныйОбъект Из КлассификаторТаблица Цикл
- Если Лев(АдресныйОбъект.Code, 2) = КодАдресногоОбъекта Тогда
- Прервать;
- КонецЕсли;
- КонецЦикла;
- Результат.КодАдресногоОбъекта = АдресныйОбъект.Code;
- Результат.Наименование = АдресныйОбъект.Name;
- Результат.Сокращение = АдресныйОбъект.Socr;
- Результат.Индекс = АдресныйОбъект.Index;
+ Иначе
+ Классификатор = РегистрыСведений.АдресныйКлассификатор.КлассификаторСубъектовРФ();
+ Если ТипЗнч(КодАдресногоОбъекта) = Тип("Строка") Тогда
+ ТипЧисло = Новый ОписаниеТипов("Число");
+ КодАдресногоОбъекта = ТипЧисло.ПривестиЗначение(КодАдресногоОбъекта);
+ КонецЕсли;
+
+ АдресныйОбъект = Классификатор.Найти(КодАдресногоОбъекта, "КодСубъектаРФ");
+ Если АдресныйОбъект <> Неопределено ТОгда
+ Результат.КодАдресногоОбъекта = Формат(АдресныйОбъект.КодСубъектаРФ, "ЧЦ=2; ЧН=; ЧВН=");
+ Результат.Наименование = АдресныйОбъект.Наименование;
+ Результат.Сокращение = АдресныйОбъект.Сокращение;
+ Результат.Индекс = АдресныйОбъект.ПочтовыйИндекс;
+ КонецЕсли;
+
КонецЕсли;
Возврат Результат;
@@ -276,12 +317,12 @@
// Индекс - Строка - индекс, по которому будет производиться поиск
//
// Возвращаемое значение:
-// Структура с полями:
-// Количество - Число - количество найденных вариантов
-// НайденныйРегион - Строка - если найден один регион
-// НайденныйРайон - Строка - если найден один район
-// ПризнакАктуальности - Число - признак актуальности если найден один вариант
-// АдресВХранилище - Строка - идентификатор сохраненной в хранилище таблицы с найденными вариантами
+// Структура - описание найденного. Содержит поля:
+// * Количество - Число - количество найденных вариантов
+// * НайденныйРегион - Строка - если найден один регион
+// * НайденныйРайон - Строка - если найден один район
+// * ПризнакАктуальности - Число - признак актуальности если найден один вариант
+// * АдресВХранилище - Строка - идентификатор сохраненной в хранилище таблицы с найденными вариантами
//
Функция НайтиЗаписиПоИндексу(Индекс) Экспорт
@@ -474,9 +515,9 @@
// Получить компоненты адресного элемента по его коду
//
// Параметры:
-// КодАдресногоЭлемента - Число - код адресного элемента, по которому ищутся компоненты адреса
-// Результат - структура с полями, в которую выгружается результат поиска:
-// ПризнакАктуальности - Число - признак актуальности найденного адреса
+// КодАдресногоЭлемента - Число - код адресного элемента, по которому ищутся компоненты адреса
+// Результат - Структура - заполняется результатами поиска. Поля:
+// ПризнакАктуальности - Число - признак актуальности найденного адреса
// Регион - Строка - наименование найденного региона
// Район - Строка - наименование найденного района
// Город - Строка - наименование найденного города
@@ -585,7 +626,7 @@
// Квартира - Строка - номер квартиры, если требуется
//
// Возвращаемое значение:
-// Структура - с полями:
+// Структура - описание результата с полями:
// * Индекс - Строка - индекс адреса по переданным параметрам
// * Регион - Строка - регион по переданному коду
// * Район - Строка - район по переданному коду
@@ -634,14 +675,14 @@
// Определяет индекс по переданным региону, району, городу, населенному пункту, улице, дому и корпусу.
//
// Параметры:
-// НазваниеРегиона - название региона с сокращением
-// НазваниеРайона - название района с сокращением
-// НазваниеГорода - название города с сокращением
-// НазваниеНаселенногоПункта - название населенного пункта с сокращением
-// Улица - название улицы с сокращением
-// НомерДома - номер дома, для которого необходимо получить индекс
-// НомерКорпуса - номер корпуса
-// РодительИндекса - переменная, в которой сохраняется структура найденного адресного элемента
+// НазваниеРегиона - Строка - название региона с сокращением
+// НазваниеРайона - Строка - название района с сокращением
+// НазваниеГорода - Строка - название города с сокращением
+// НазваниеНаселенногоПункта - Строка - название населенного пункта с сокращением
+// Улица - Строка - название улицы с сокращением
+// НомерДома - Строка - номер дома, для которого необходимо получить индекс
+// НомерКорпуса - Строка - номер корпуса
+// РодительИндекса - Структура - заполняется данными найденного адресного элемента
//
// Возвращаемое значение:
// Строка - шестизначный почтовый индекс
@@ -710,7 +751,8 @@
// ПризнакАктуальности - Число - признак актуальности элемента.
//
// Возвращаемое значение:
-// СписокЗначений или Неопределено
+// СписокЗначений - данные для автоподбора
+// Неопределено - в случае отсутствия данных
//
Функция АвтоПодборТекстВАдресномЭлементе(Текст, Регион, Район, Город, НаселенныйПункт, УровеньЭлемента, ПризнакАктуальности = 0) Экспорт
@@ -757,7 +799,7 @@
// НомерКорпуса - Строка - номер корпуса (строения, литеры)
//
// Возвращаемое значение:
-// Структура с полями:
+// Структура - описание результата проверки:
// Индекс - Структура - структура полей найденного индекса
// Регион - Структура - структура полей найденного региона
// Район - Структура - структура полей найденного района
@@ -973,11 +1015,11 @@
//
// Возвращаемое значение:
// Структура - Результаты анализа. Содержит поля
-// * Ошибки - Структура - Описание ошибок, ключ - идентификатор части адреса (имя поля из ОбъектАдреса),
-// значение - текст ошибки. Если нет ошибок, то возвращается пустая структура
-// * Варианты - ТаблицаЗначений - Варианты адресных объектов, успешно прошедших проверку. Колонки:
-// ** Код - Число - код адресного объекта
-// ** Индекс - Строка - почтовый индекс адресного объекта
+// * Ошибки - Структура - Описание ошибок, ключ - идентификатор части адреса (имя поля из ОбъектАдреса), значение - текст ошибки.
+// Если нет ошибок, то возвращается пустая структура
+// * Варианты - ТаблицаЗначений - Описание найденных вариантов. Содержит колонки:
+// ** Код - Число - Код классификатора объекта - варианта
+// ** Индекс - Строка - Почтовый индекс объекта - варианта
//
Функция АнализСоответствияАдресаКлассификатору(Знач ОбъектАдреса) Экспорт
Результат = Новый Структура("Варианты, Ошибки", Новый ТаблицаЗначений, Новый Структура);
@@ -1755,16 +1797,16 @@
// Возвращает структуру ограничений по переданным параметрам со значениями адресных полей.
//
// Параметры:
-// НазваниеРегиона - название региона с сокращением
-// НазваниеРайона - название района с сокращением
-// НазваниеГорода - название города с сокращением
-// НазваниеНаселенногоПункта - название населенного пункта с сокращением
-// НазваниеУлицы - название улицы с сокращением
-// КодРодителя - Число - код родительского элемента
-// Уровень - Число - текущий уровень элемента
+// НазваниеРегиона - Строка - название региона с сокращением
+// НазваниеРайона - Строка - название района с сокращением
+// НазваниеГорода - Строка - название города с сокращением
+// НазваниеНаселенногоПункта - Строка - название населенного пункта с сокращением
+// НазваниеУлицы - Строка - название улицы с сокращением
+// КодРодителя - Число - код родительского элемента
+// Уровень - Число - текущий уровень элемента
//
// Возвращаемое значение:
-// Структура со следующими полями:
+// Структура - описание ограничений со следующими полями:
// КодАдресногоОбъектаВКоде - Строка - код региона для ограничения
// КодРайонаВКоде - Строка - код района для ограничения
// КодГородаВКоде - Строка - код города для ограничения
@@ -1805,14 +1847,14 @@
// Возвращает строку(структуру) адресного классификатора по значениям адресных элементов
//
// Параметры:
-// НазваниеРегиона - название региона с сокращением
-// НазваниеРайона - название района с сокращением
-// НазваниеГорода - название города с сокращением
-// НазваниеНаселенногоПункта - название населенного пункта с сокращением
-// НазваниеУлицы - название улицы с сокращением
+// НазваниеРегиона - Строка - название региона с сокращением
+// НазваниеРайона - Строка - название района с сокращением
+// НазваниеГорода - Строка - название города с сокращением
+// НазваниеНаселенногоПункта - Строка - название населенного пункта с сокращением
+// НазваниеУлицы - Строка - название улицы с сокращением
//
// Возвращаемое значение:
-// Структура полей по найденому адресному элементу (см. функцию "АдресныйКлассификаторКлиентСервер.ПустаяСтруктураАдреса()")
+// Структура - описание полей по найденому адресному элементу (см. функцию "АдресныйКлассификаторКлиентСервер.ПустаяСтруктураАдреса()")
//
Функция ВернутьСтруктуруАдресногоКлассификатораПоАдреснымЭлементам(Знач НазваниеРегиона, Знач НазваниеРайона, Знач НазваниеГорода, Знач НазваниеНаселенногоПункта, Знач НазваниеУлицы) Экспорт
@@ -1854,14 +1896,14 @@
// Процедура очищает потомков определенного адресного элемента
//
// Параметры:
-// Регион - строка - строка, куда будет помещено строковое представление "родительского" региона.
-// Район - строка - строка, куда будет помещено строковое представление "родительского" района.
-// Город - строка - строка, куда будет помещено строковое представление "родительского" города.
-// НаселенныйПункт - строка - строка, куда будет помещено строковое представление "родительского" населенного пункта.
-// Улица - строка - строка, куда будет помещено строковое представление "родительской" улицы.
-// Дом - строка - строка, куда будет помещено строковое представление "родительского" номера дома.
-// Корпус - строка - строка, куда будет помещено строковое представление "родительского" номера корпуса дома.
-// Квартира - строка - строка, куда будет помещено строковое представление "родительского" номера квартиры.
+// Регион - Строка - строка, куда будет помещено строковое представление "родительского" региона.
+// Район - Строка - строка, куда будет помещено строковое представление "родительского" района.
+// Город - Строка - строка, куда будет помещено строковое представление "родительского" города.
+// НаселенныйПункт - Строка - строка, куда будет помещено строковое представление "родительского" населенного пункта.
+// Улица - Строка - строка, куда будет помещено строковое представление "родительской" улицы.
+// Дом - Строка - строка, куда будет помещено строковое представление "родительского" номера дома.
+// Корпус - Строка - строка, куда будет помещено строковое представление "родительского" номера корпуса дома.
+// Квартира - Строка - строка, куда будет помещено строковое представление "родительского" номера квартиры.
// Уровень - Число - уровень адресного элемента.
//
Процедура ОчиститьПотомковПоУровнюАдресногоЭлемента(Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус, Квартира, Уровень) Экспорт
@@ -1974,8 +2016,8 @@
// при создании информационной базы или обновлении программы.
//
// Параметры:
-// ЗапросыРазрешений - Массив - список значений, возвращенных функцией
-// РаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов().
+// ЗапросыРазрешений - Массив - перечень значений, возвращенных функцией
+// РаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов().
//
Процедура ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам(ЗапросыРазрешений) Экспорт
@@ -1989,7 +2031,10 @@
КонецПроцедуры
-// Возвращает базовое имя события для регистрации в журнале событий
+// Базовое имя события для регистрации в журнале событий
+//
+// Возвращаемое значение:
+// Строка - имя
//
Функция СобытиеЖурналаРегистрации() Экспорт
Возврат НСтр("ru='Адресный классификатор'",
@@ -2053,7 +2098,7 @@
Обработчик.ОбщиеДанные = Истина;
Обработчик = Обработчики.Добавить();
- Обработчик.Версия = "2.2.2.44";
+ Обработчик.Версия = "2.2.3.5";
Обработчик.Процедура = "АдресныйКлассификатор.ЗагрузитьАдресныеОбъектыПервогоУровня";
Обработчик.ОбщиеДанные = Истина;
@@ -2063,25 +2108,7 @@
//
Процедура ЗагрузитьАдресныеОбъектыПервогоУровня() Экспорт
- КлассификаторАдресныхОбъектовXML = РегистрыСведений.АдресныйКлассификатор.ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст();
-
- КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторАдресныхОбъектовXML).Данные;
-
- НаборЗаписей = РегистрыСведений.АдресныйКлассификатор.СоздатьНаборЗаписей();
- НаборЗаписей.Отбор.ТипАдресногоЭлемента.Установить(1);
-
- Для Каждого АдресныйОбъект Из КлассификаторТаблица Цикл
- МенеджерЗаписи = НаборЗаписей.Добавить();
-
- МенеджерЗаписи.Код = АдресныйОбъект.Code;
- МенеджерЗаписи.ТипАдресногоЭлемента = 1;
- МенеджерЗаписи.Наименование = АдресныйОбъект.Name;
- МенеджерЗаписи.Сокращение = АдресныйОбъект.Socr;
- МенеджерЗаписи.Индекс = АдресныйОбъект.Index;
- МенеджерЗаписи.КодАдресногоОбъектаВКоде = Лев(АдресныйОбъект.Code,2);
- КонецЦикла;
-
- НаборЗаписей.Записать();
+ РегистрыСведений.АдресныйКлассификатор.ОбновитьСоставСубъектовРФПоКлассификатору();
КонецПроцедуры
@@ -2128,14 +2155,15 @@
// Загружает адресные сокращения в регистр АдресныеСокращения.
//
// Параметры:
-// ПутьКДаннымНаСервере - путь к каталогу в котором находится файл socrbase.dbf
+// ПутьКДаннымНаСервере - Строка - путь к каталогу в котором находится файл SOCRBASE.DBF
+// Версия - Дата - UTC версия данных
//
-// Возвращаемое значение
-// Булево - истина - сведения успешно записаны, ложь - ошибка при подготовке записи сведений в регистр
+// Возвращаемое значение:
+// Булево - Истина, если сведения успешно записаны, ложь если ошибка при подготовке записи сведений в регистр
//
-Функция ЗагрузитьАдресныеСокращения(ПутьКДаннымНаСервере) Экспорт
+Функция ЗагрузитьАдресныеСокращения(Знач ПутьКДаннымНаСервере, Знач Версия) Экспорт
- ФайлАдресныхСокращений = ПутьКДаннымНаСервере + "SOCRBASE.DBF";
+ ФайлАдресныхСокращений = ПутьКДаннымНаСервере + "SOCRBASE.DBF";
ТаблицаАдресныеСокращения = Новый ТаблицаЗначений;
ТаблицаАдресныеСокращения.Колонки.Добавить("Код");
@@ -2146,19 +2174,18 @@
АдресныеСокращения = РегистрыСведений.АдресныеСокращения;
НаборЗаписей = АдресныеСокращения.СоздатьНаборЗаписей();
- НаборЗаписей.Записать();
xB = Новый XBase(ФайлАдресныхСокращений);
xB.Кодировка = КодировкаXBase.OEM;
// Контроль уникальности кодов в файле классификатора
- Контроль = Новый Соответствие;
+ КонтрольУникальностиКодов = Новый Соответствие;
ЕстьОшибки = Ложь;
Если xB.Открыта() Тогда
Пока Не xB.ВКонце() Цикл
КодУникальности = Число(xB.level) * 10000 + Число(xB.kod_t_st);
- Если Контроль[КодУникальности] = НеОпределено Тогда
- Контроль[КодУникальности] = 0;
+ Если КонтрольУникальностиКодов[КодУникальности] = НеОпределено Тогда
+ КонтрольУникальностиКодов[КодУникальности] = 0;
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Код = xB.kod_t_st;
НоваяЗапись.Уровень = xB.level;
@@ -2180,7 +2207,16 @@
ПараметрыВСтроке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаОшибки, "socrbase.dbf");
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ПараметрыВСтроке);
КонецЕсли;
- НаборЗаписей.Записать();
+
+ НачатьТранзакцию();
+ Попытка
+ НаборЗаписей.Записать();
+ УстановитьВерсиюКлассификатора("SO", Версия);
+ ЗафиксироватьТранзакцию();
+ Исключение
+ ОтменитьТранзакцию();
+ ВызватьИсключение;
+ КонецПопытки;
Возврат Истина;
КонецФункции
@@ -2196,76 +2232,99 @@
//
Процедура ЗагрузкаАдресныхСведенийИзФайловКЛАДРВРегистрСведений(ПараметрыЗагрузки, АдресХранилища) Экспорт
- СтатусВыполнения = Истина;
- СообщениеПользователю = "";
+ СтруктураВозврата = Новый Структура;
- СтруктураВозврата = Новый Структура("СтатусВыполнения, СообщениеПользователю, ПутьКДанным, ПутьКДаннымНаСервере");
+ СтруктураВозврата.Вставить("ПутьКДаннымНаСервере", ПараметрыЗагрузки.ПутьКДаннымНаСервере);
+ СтруктураВозврата.Вставить("СтатусВыполнения", Истина);
+ СтруктураВозврата.Вставить("СообщениеПользователю", "");
+ СтруктураВозврата.Вставить("ПутьКДанным");
- СтруктураВозврата.ПутьКДаннымНаСервере = ПараметрыЗагрузки.ПутьКДаннымНаСервере;
+ ДоступныеВерсии = Новый Соответствие;
+
+ // Флаг загрузки специальных файлов с особыми именами
+ ЗагрузкаСпециальныхФайлов = ПараметрыЗагрузки.ИсточникДанныхДляЗагрузки = 1;
+
+ Если ЗагрузкаСпециальныхФайлов Тогда
+ Для Каждого КлючЗначение Из ПараметрыЗагрузки.ДоступныеВерсии Цикл
+ АдресныйОбъект = КлючЗначение.Ключ;
+ КодСтрокой = ?(ТипЗнч(АдресныйОбъект) = Тип("Число"), Формат(АдресныйОбъект, "ЧЦ=2; ЧН=; ЧВН="), АдресныйОбъект);
+ ДоступныеВерсии[КодСтрокой] = КлючЗначение.Ключ
+ КонецЦикла;
+ Иначе
+ Для Каждого АдресныйОбъект Из ПараметрыЗагрузки.АдресныеОбъекты Цикл
+ КодСтрокой = ?(ТипЗнч(АдресныйОбъект) = Тип("Число"), Формат(АдресныйОбъект, "ЧЦ=2; ЧН=; ЧВН="), АдресныйОбъект);
+ ДоступныеВерсии[КодСтрокой] = ПараметрыЗагрузки.ВерсияЗагружаемогоКЛАДР;
+ КонецЦикла;
+ КонецЕсли;
+
+ ТекущиеВерсии = Новый Соответствие;
+ Для Каждого ЭлементСписка Из ВерсииАдресныхОбъектов() Цикл
+ ТекущиеВерсии.Вставить(ЭлементСписка.Представление, ЭлементСписка.Значение);
+ КонецЦикла;
+
+ ВерсияЗагрузкиСегодня = ТекущаяУниверсальнаяДата();
+
+ // Принудительная загрузка всегда
+ ДоступныеВерсии.Очистить();
Попытка
- Если ПараметрыЗагрузки.ИсточникДанныхДляЗагрузки = 1 Тогда
- ДоступныеВерсии = ПараметрыЗагрузки.ДоступныеВерсии;
- Иначе
- ДоступныеВерсии = Новый Соответствие;
- Для Каждого АдресныйОбъект Из ПараметрыЗагрузки.АдресныеОбъекты Цикл
- ДоступныеВерсии.Вставить(АдресныйОбъект, ПараметрыЗагрузки.ВерсияЗагружаемогоКЛАДР);
- КонецЦикла;
- КонецЕсли;
-
- ВерсииХранимыхСведений = ВерсииАдресныхОбъектов();
- ТекущиеВерсии = Новый Соответствие;
- Для Каждого ЭлементСписка Из ВерсииХранимыхСведений Цикл
- ТекущиеВерсии.Вставить(ЭлементСписка.Представление, ЭлементСписка.Значение);
- КонецЦикла;
- НовыеВерсииАдресныхОбъектов = Новый Соответствие;
-
Для Каждого АдресныйОбъект Из ПараметрыЗагрузки.АдресныеОбъекты Цикл
- Если АдресныйОбъект = "AL" Тогда
- // Альтернативные названия загружаются с регионом
- Продолжить;
- ИначеЕсли АдресныйОбъект = "SO" Тогда
- // Адресные сокращения загружаются отдельно (ниже)
+ Если АдресныйОбъект = "AL" Или АдресныйОбъект = "SO" Тогда
+ // Альтернативные названия и адресные сокращения загружаются отдельно
Продолжить;
КонецЕсли;
- АдресныеСведения = ИнформацияПоАдресномуОбъекту(АдресныйОбъект);
- ТекущаяВерсия = ?(ТекущиеВерсии[АдресныйОбъект] = Неопределено, '00000000', ТекущиеВерсии[АдресныйОбъект]);
- ДоступнаяВерсия = ?(ДоступныеВерсии[АдресныйОбъект] = Неопределено, '00000000', ДоступныеВерсии[АдресныйОбъект]);
// Пропускаем загрузку, если адресные сведения уже актуальны.
- Если ДоступнаяВерсия <= ТекущаяВерсия Тогда
- Продолжить;
+ ДоступнаяВерсия = ДоступныеВерсии[АдресныйОбъект];
+ Если ДоступнаяВерсия = Неопределено Тогда
+ // Версия не указана - используем текущую и загружаем всегда
+ ДоступнаяВерсия = ВерсияЗагрузкиСегодня;
+ ТекущаяВерсия = '00000000';
+ Иначе
+ ТекущаяВерсия = ТекущиеВерсии[АдресныйОбъект];
+ Если ТекущаяВерсия = Неопределено Тогда
+ ТекущаяВерсия = '00000000';
+ КонецЕсли;
КонецЕсли;
- НовыеВерсииАдресныхОбъектов.Вставить(АдресныйОбъект, ДоступнаяВерсия);
-
- ЗагрузитьКлассификаторПоАдресномуОбъекту(АдресныйОбъект,
- ПараметрыЗагрузки.ПутьКДаннымНаСервере, ПараметрыЗагрузки.ИсточникДанныхДляЗагрузки = 1);
+ Если ДоступнаяВерсия > ТекущаяВерсия Тогда
+
+ ДлительныеОперации.СообщитьПрогресс( , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Загрузка региона ""%1 - %2"" (осталось %3) ...'"),
+ АдресныйОбъект, РегистрыСведений.АдресныйКлассификатор.НаименованиеРегионаПоКоду(АдресныйОбъект),
+ Формат(ПараметрыЗагрузки.АдресныеОбъекты.ВГраница() - ПараметрыЗагрузки.АдресныеОбъекты.Найти(АдресныйОбъект), "ЧН=")
+ ));
+
+ ЗагрузитьКлассификаторПоАдресномуОбъекту(АдресныйОбъект, ПараметрыЗагрузки.ПутьКДаннымНаСервере, ЗагрузкаСпециальныхФайлов, ДоступнаяВерсия);
+ Иначе
+
+ ДлительныеОперации.СообщитьПрогресс( , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Для региона ""%1 - %2"" уже загружены актуальные данные (осталось %3) ...'"),
+ АдресныйОбъект, РегистрыСведений.АдресныйКлассификатор.НаименованиеРегионаПоКоду(АдресныйОбъект),
+ Формат(ПараметрыЗагрузки.АдресныеОбъекты.ВГраница() - ПараметрыЗагрузки.АдресныеОбъекты.Найти(АдресныйОбъект), "ЧН=")
+ ));
+
+ КонецЕсли;
КонецЦикла;
- ТекущаяВерсия = ?(ТекущиеВерсии["SO"] = Неопределено, '00000000', ТекущиеВерсии["SO"]);
- ДоступнаяВерсия = ?(ДоступныеВерсии["SO"] = Неопределено, '00000000', ДоступныеВерсии["SO"]);
- Если ДоступнаяВерсия > ТекущаяВерсия Тогда
- ЗагрузитьАдресныеСокращения(ПараметрыЗагрузки.ПутьКДаннымНаСервере);
- НовыеВерсииАдресныхОбъектов.Вставить("SO", ДоступнаяВерсия);
- КонецЕсли;
-
- ОбновитьВерсииАдресныхСведений(НовыеВерсииАдресныхОбъектов);
+ ЗагрузитьАдресныеСокращения(ПараметрыЗагрузки.ПутьКДаннымНаСервере, ДоступнаяВерсия);
+
Исключение
- ТекстСообщенияОшибки = НСтр("ru = 'Ошибка при загрузке адресных сведений'");
- СообщениеПользователю = ТекстСообщенияОшибки + ": " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
- СтруктураВозврата.СообщениеПользователю = СообщениеПользователю;
- СтруктураВозврата.СтатусВыполнения = Ложь;
- ПоместитьВоВременноеХранилище(СтруктураВозврата, АдресХранилища);
- Возврат;
+ Информация = ИнформацияОбОшибке();
+ ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(Информация) );
+
+ СтруктураВозврата.СтатусВыполнения = Ложь;
+ СтруктураВозврата.СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при загрузке адресных сведений:
+ |%1'"),
+ КраткоеПредставлениеОшибки(Информация)
+ );
КонецПопытки;
- СтруктураВозврата.СтатусВыполнения = СтатусВыполнения;
- СтруктураВозврата.СообщениеПользователю = СообщениеПользователю;
ПоместитьВоВременноеХранилище(СтруктураВозврата, АдресХранилища);
КонецПроцедуры
@@ -2275,26 +2334,24 @@
// Устанавливает версию адресного объекта в регистре
//
// Параметры:
-// НомерАО - строка - код адресного объекта в формате NN
-// Наименование - наименование адресного объекта
-// ВерсияСведенийПоАдресномуОбъекту - дата - версия адресного объекта
+// КодРегиона - Строка, Число - Код адресного объекта
+// Версия - Дата - Версия адресного объекта
//
-Процедура УстановитьВерсиюКлассификатора(Знач НомерАО, Знач Наименование = "", Знач ВерсияСведенийПоАдресномуОбъекту = "") Экспорт
+Процедура УстановитьВерсиюКлассификатора(Знач КодРегиона, Знач Версия = '00000000') Экспорт
- МенеджерЗаписи = РегистрыСведений.ВерсииОбъектовАдресногоКлассификатора.СоздатьМенеджерЗаписи();
+ КодСтрокой = ?(ТипЗнч(КодРегиона) = Тип("Число"), Формат(КодРегиона, ""), КодРегиона);
- Если ПустаяСтрока(ВерсияСведенийПоАдресномуОбъекту) Тогда
- МенеджерЗаписи.АдресныйОбъект = НомерАО;
- МенеджерЗаписи.Прочитать();
- МенеджерЗаписи.Удалить();
- Иначе
- МенеджерЗаписи.АдресныйОбъект = НомерАО;
- МенеджерЗаписи.ДатаВыпускаВерсии = ВерсияСведенийПоАдресномуОбъекту;
- МенеджерЗаписи.Наименование = Наименование;
-
- МенеджерЗаписи.Записать(Истина);
+ Набор = РегистрыСведений.ВерсииОбъектовАдресногоКлассификатора.СоздатьНаборЗаписей();
+ Набор.Отбор.АдресныйОбъект.Установить(КодСтрокой);
+
+ Если Версия <> '00000000' Тогда
+ Данные = Набор.Добавить();
+ Данные.АдресныйОбъект = КодСтрокой;
+ Данные.ДатаВыпускаВерсии = Версия;
+ Данные.Наименование = РегистрыСведений.АдресныйКлассификатор.НаименованиеРегионаПоКоду(КодСтрокой);
КонецЕсли;
+ Набор.Записать(Истина);
КонецПроцедуры
// Считывает с диска файл версий адресных объектов и возвращает версии сведений по адресным объектам
@@ -2303,7 +2360,7 @@
// ТекстXML - Строка - строка, содержащая текст XML.
//
// Возвращаемое значение:
-// Соответствие, в котором ключ - строка адресного объекта, значение - дата актуальности адресного объекта.
+// Соответствие - описание адресных сведений. Ключ - строка адресного объекта, значение - дата актуальности адресного объекта.
//
Функция ПолучитьВерсииАдресныхСведений(Знач ТекстXML) Экспорт
@@ -2316,11 +2373,10 @@
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
- Если ЧтениеXML.ИмяАтрибута(0) = "code"
- Или ЧтениеXML.ИмяАтрибута(0) = "name"
- Тогда
+ ИмяАтрибута = НРег(ЧтениеXML.ИмяАтрибута(0));
+ Если ИмяАтрибута = "code" Или ИмяАтрибута = "name" Тогда
ДатаВыпуска = ПолучитьАтрибут(ЧтениеXML, "date");
- Результат.Вставить(ВРег(ЧтениеXML.ЗначениеАтрибута(0)), ДатаВыпуска);
+ Результат.Вставить( ВРег(ЧтениеXML.ЗначениеАтрибута(0)), ДатаВыпуска);
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -2333,9 +2389,9 @@
// Сохраняет файл архива из двоичных данных на сервере по переданному имени в переданном каталоге, и распаковывает его.
//
// Параметры:
-// ДвоичныеДанные - ДвоичныеДанные -данные файла
-// ИмяФайлаАрхива - строка - имя файла
-// ПутьККаталогуНаСервере - путь к каталогу, в который требуется положить распакованный файл
+// ДвоичныеДанные - ДвоичныеДанные - данные файла
+// ИмяФайлаАрхива - Строка - имя файла
+// ПутьККаталогуНаСервере - Строка - путь к каталогу, в который требуется положить распакованный файл
//
Процедура СохранитьФайлНаСервереИРаспаковать(Знач ДвоичныеДанные, ИмяФайлаАрхива, ПутьККаталогуНаСервере) Экспорт
@@ -2355,57 +2411,70 @@
////////////////////////////////////////////////////////////////////////////////
// Аутентификация на пользовательском сайте 1С
-// Получает параметры аутентификации пользователя (логин и пароль) на пользовательском сайте 1с.
-//
-// Возвращаемое значение:
-// Булево - Истина - параметры аутентификации заполнены, Ложь - хотя бы один из параметров не заполнен
-//
-Функция ПолучитьПараметрыАутентификации(КодПользователя, Пароль) Экспорт
-
- КодПользователя = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
- "АутентификацияНаПользовательскомСайте", "КодПользователя", "");
-
- Пароль = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
- "АутентификацияНаПользовательскомСайте", "Пароль", "");
-
- Возврат Не ПустаяСтрока(КодПользователя) И Не ПустаяСтрока(Пароль);
-КонецФункции
-
-// Сохраняет код пользователя и пароль в системном хранилище настроек ИБ
-//
-// Параметры
-// КодПользователя - Строка - код пользователя, или логин, для доступа к пользовательскому сайту 1с
-// Пароль - Строка - пароль
-//
-Процедура СохранитьПараметрыАутентификации(КодПользователя, Пароль) Экспорт
-
- ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
- "АутентификацияНаПользовательскомСайте", "КодПользователя", КодПользователя);
-
- ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
- "АутентификацияНаПользовательскомСайте", "Пароль", Пароль);
-
-КонецПроцедуры
-
-// Обновляет версии адресных сведений.
+// Получает и сохраняет параметры аутентификации пользователя (логин и пароль) на пользовательском сайте 1с.
//
// Параметры:
-// НовыеВерсии - Соответствие - новые версии.
+// СохраняемыеПараметры - Структура - сохраняемые значения, если не указано, сохранение не производится
+// * Логин - Строка - параметр авторизации
+// * Пароль - Строка - параметр авторизации
+//
+// Возвращаемое значение:
+// Структура - текущие значения:
+// * Заполнено - Булево - флаг заполненности параметров
+// * Логин - Строка - параметр авторизации
+// * Пароль - Строка - параметр авторизации
//
-Процедура ОбновитьВерсииАдресныхСведений(НовыеВерсии) Экспорт
+Функция ПараметрыАутентификацииНаСайте(Знач СохраняемыеПараметры = Неопределено) Экспорт
- Для Каждого ОписаниеВерсии Из НовыеВерсии Цикл
- АдресныеСведения = ИнформацияПоАдресномуОбъекту(ОписаниеВерсии.Ключ);
- УстановитьВерсиюКлассификатора(ОписаниеВерсии.Ключ,
- АдресныеСведения.Наименование + " " + АдресныеСведения.Сокращение,
- ОписаниеВерсии.Значение);
- КонецЦикла;
+ Если СохраняемыеПараметры = Неопределено Тогда
+ // Чтение
+ Логин = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("АутентификацияНаПользовательскомСайте", "КодПользователя", "");
+ Пароль = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("АутентификацияНаПользовательскомСайте", "Пароль", "");
+ Иначе
+ // Запись
+ Логин = СохраняемыеПараметры.Логин;
+ Пароль = СохраняемыеПараметры.Пароль;
+
+ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("АутентификацияНаПользовательскомСайте", "КодПользователя", Логин);
+ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("АутентификацияНаПользовательскомСайте", "Пароль", Пароль);
+
+ КонецЕсли;
-КонецПроцедуры
+ Результат = Новый Структура;
+ Результат.Вставить("Логин", Логин);
+ Результат.Вставить("Пароль", Пароль);
+ Результат.Вставить("Заполнено", Не ПустаяСтрока(Логин) И Не ПустаяСтрока(Пароль) );
+
+ Возврат Результат;
+КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Локальные служебные процедуры и функции
+// Возвращает ближайший по иерархии почтовый индекс в выборке с известными полями
+//
+Функция ПочтовыйИндексПоИерархии(Знач Выборка)
+
+ Индекс = СокрЛП(Выборка.Индекс);
+ Если ПустаяСтрока(Индекс) Тогда
+ Индекс = СокрЛП(Выборка.УлицаИндекс);
+ Если ПустаяСтрока(Индекс) Тогда
+ Индекс = СокрЛП(Выборка.НаселенныйПунктИндекс);
+ Если ПустаяСтрока(Индекс) Тогда
+ Индекс = СокрЛП(Выборка.ГородИндекс);
+ Если ПустаяСтрока(Индекс) Тогда
+ Индекс = СокрЛП(Выборка.РайонИндекс);
+ Если ПустаяСтрока(Индекс) Тогда
+ Индекс = СокрЛП(Выборка.РегионИндекс);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Индекс;
+КонецФункции
+
// Функция для заполнения данных с 2-го по 6-й уровень классификации:
// 2-й - районы (улусы) республик, краев, областей, автономных областей,
// автономных округов, входящих в состав Российской Федерации.
@@ -2419,7 +2488,7 @@
// городского типа
//
// Параметры:
-// КодАдресногоОбъекта - строка (2 символа) - строковое представление номера адресного объекта
+// КодАдресногоОбъекта - Строка - строковое представление номера адресного объекта
// ПутьКДаннымНаСервере - Строка - путь к каталогу на сервере, в котором хранятся файлы кладр.
// Путь заканчивается слешем (обратным или прямым)
// АдресныеСведения - ТаблицаЗначений - таблица, которая заполняется загружаемыми элементами
@@ -2687,10 +2756,11 @@
// чем глубже уровень иерархии тем более младшие разряды являются заполненными
//
// Параметры:
-// Код - строка - код, взятый из поля записи CODE файла данных
+// Код - Строка - код, взятый из поля записи CODE файла данных
//
// Возвращаемое значение:
-// Число [1-6]
+// Число - уровень 1-6
+//
Функция ПолучитьТипАдресногоЭлементаПоКоду(Знач Код)
Размерность = СтрДлина(Код);
@@ -2755,9 +2825,9 @@
// Читает значение атрибута по имени из указанного объекта, приводит значение к указанному примитивному типу
//
// Параметры:
-// ЧтениеXML - объект типа ЧтениеXML, спозиционированный на начале элемента, атрибут которого требуется получить
-// Тип - Значение типа Тип. Тип атрибута
-// Имя - Строка. Имя атрибута
+// ЧтениеXML - ЧтениеXML - объект, спозиционированный на начале элемента, атрибут которого требуется получить
+// Тип - Тип - тип атрибута
+// Имя - Строка - имя атрибута
//
// Возвращаемое значение:
// Строка - значение атрибута полученное по имени и приведенное к указанному типу
@@ -2774,41 +2844,20 @@
КонецФункции
-// Добавляет версию в список.
-//
-// Параметры:
-// АдресныйОбъект - Число - адресный объект.
-// Версии - Массив - массив версий.
-// Список - СписокЗначений.
-//
-Процедура ДобавитьВерсиюВСписок(АдресныйОбъект, Версии, Список)
-
- ЭлементСписка = Список.Добавить();
- ЭлементСписка.Представление = АдресныйОбъект;
-
- ОписаниеВерсии = Версии.Найти(АдресныйОбъект, "АдресныйОбъект");
- Если ОписаниеВерсии = Неопределено Тогда
- ЭлементСписка.Значение = '00000000';
- Иначе
- ЭлементСписка.Значение = ОписаниеВерсии.ДатаВыпускаВерсии;
- КонецЕсли;
-
-КонецПроцедуры
-
// По коду и типу адресного элемента получает коды его составных частей
//
// Параметры:
-// КодАдресногоЭлемента - строка или число - номер адресного объекта
-// ТипАдресногоЭлемента - число - уровень адресного объекта.
+// КодАдресногоЭлемента - Строка, Число - код адресного объекта
+// ТипАдресногоЭлемента - Число - уровень адресного объекта.
//
// Возвращаемое значение:
-// Структура с полями:
-// КодАдресногоОбъектаВКоде - число - код элемента региона
-// КодРайонаВКоде - число - код элемента района
-// КодГородаВКоде - число - код элемента города
-// КодНаселенногоПунктаВКоде - число - код элемента населенного пункта
-// КодУлицыВКоде - число - код элемента улицы
-// ПризнакАктуальности - число - код элемента признака актуальности
+// Структура - описание найденного элемента:
+// * КодАдресногоОбъектаВКоде - Число - код элемента региона
+// * КодРайонаВКоде - Число - код элемента района
+// * КодГородаВКоде - Число - код элемента города
+// * КодНаселенногоПунктаВКоде - Число - код элемента населенного пункта
+// * КодУлицыВКоде - Число - код элемента улицы
+// * ПризнакАктуальности - Число - код элемента признака актуальности
//
Функция РазобратьАдресныйОбъектПоЭлементам(КодАдресногоЭлемента, ТипАдресногоЭлемента)
@@ -2855,7 +2904,7 @@
// Получаемые таблицы соответствуют адресам,полученным из временной таблицы Адреса в менеджере временных таблиц
//
// Параметры:
-// МенеджерВременныхТаблиц - менеджер временных таблиц, в котором уже должна быть временная таблица Адреса
+// МенеджерВременныхТаблиц - МенеджерВременныхТаблиц - менеджер временных таблиц, в котором уже должна быть временная таблица Адреса
//
Процедура РазложитьЭлементыАдресаВоВременныеТаблицы(МенеджерВременныхТаблиц)
@@ -2983,7 +3032,7 @@
// ЭлементРодитель - Структура - Описывает родительский элемент
//
// Возвращаемое значение:
-// Найденная структура классификатора или пустая структура в случае неудачи
+// Структура - описание адресного элемента
//
Функция ПолучитьАдресныйЭлемент(Знач НазваниеЭлемента, ТипЭлемента, ЭлементРодитель)
@@ -3089,9 +3138,9 @@
// Строит запрос автоподбора для регистра
//
// Параметры:
-// Текст - Строка - строка запроса.
+// Текст - Строка - строка запроса.
// СтруктураПараметров - Структура - структура параметров.
-// КоличествоЭлементов - Число - количество первых элементов.
+// КоличествоЭлементов - Число - количество первых элементов.
//
// Возвращаемое значение:
// ТаблицаЗначений - результат выполнения запроса.
@@ -3235,7 +3284,7 @@
// ПолеГорода - Строка - город.
// ПолеНаселенногоПункта - Строка - населенный пункт.
// ИмяУлицы - Строка - улица.
-// УровеньЭлемента - Число - уровень адресного элемента.
+// УровеньЭлемента - Число - уровень адресного элемента.
//
// Возвращаемое значение:
// Структура - структура ограничений.
@@ -3262,9 +3311,9 @@
// Параметры:
// УровеньРодителя - Число - уровень родителя.
// ДанныеСтруктуры - Структура - структура, в которую необходимо добавить данные.
-// ИмяЭлемента - Строка - имя элемента.
+// ИмяЭлемента - Строка - имя элемента.
// УровеньЭлемента - Число - уровень элемента.
-// КодЭлемента - Число - код элемента.
+// КодЭлемента - Число - код элемента.
//
Процедура ДобавитьКодВСтруктуру(МаксимальныйУровень, УровеньРодителя, ДанныеСтруктуры, ИмяЭлемента, УровеньЭлемента, КодЭлемента)
@@ -3282,197 +3331,135 @@
// Фоновое задание загрузки данных КЛАДР
//
-// Распаковывает по необходимости и загружает в регистр файлы кладр, запускает фоновое
+// Обработчик фоновой загрузки
//
-// Параметры:
-// ОбъектыДляЗагрузки - Массив - регионы для загрузки
-// ПереданныеФайлы - Массив - описание переданных файлов
-// ИсточникДанных - Число - описание файлов: 1 - zip с сайта, 2 - exe с ИТС, 3 - dbf с диска
-// ИдентификаторХранилища - УникальныйИдентификатор - для привязки к форме
-//
-Функция ОбработатьФайлыКЛАДР(Знач ОбъектыЗагрузки, Знач ПереданныеФайлы, Знач ИсточникДанных, Знач ИдентификаторХранилища) Экспорт
+Процедура ФоновоеЗаданиеЗагрузкиКлассификатораАдресов(Знач Параметры, Знач АдресРезультата) Экспорт
- Параметры = Новый Структура;
- Параметры.Вставить("ОбъектыЗагрузки", ОбъектыЗагрузки);
- Параметры.Вставить("ИсточникДанных", ИсточникДанных);
+ КодыРегионов = Параметры[0]; // Массив кодов регионов для загрузки
+ ОписаниеФайлов = Параметры[1]; // Массив структур описаний переданных файлов
- // Всегда через фоновое
+ // Флаг того, что файлы разбиты по регионам, для каждого региона свой набор файлов
+ ОтдельныеФайлыПоРегионам = Параметры.Количество() > 2 И (Параметры[2] = "КЛАДРВебСайт");
- // Описание файлов передаем в фоновое задание как двоичные данные - другая сессия
- Параметры.Вставить("ПереданныеФайлы", ДвоичныеДанныеФайловКЛАДР(ПереданныеФайлы));
+ // Извлекаем файлы, все имена файлов - в верхнем регистре
+ РабочийКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПолучитьИмяВременногоФайла());
+ СоздатьКаталог(РабочийКаталог);
- Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(ИдентификаторХранилища,
- "АдресныйКлассификатор.ФоноваяЗагрузкаФайловКЛАДР", Параметры,
- НСтр("ru = 'Загрузка адресного классификатора'"));
-
- АдресХранилища = Результат.АдресХранилища;
-
- Если Результат.ЗаданиеВыполнено Тогда
- Результат.Вставить("РезультатЗагрузки", ПолучитьИзВременногоХранилища(АдресХранилища));
- КонецЕсли;
-
- Возврат Результат;
-КонецФункции
-
-Функция ДвоичныеДанныеФайловКЛАДР(Знач ПереданныеФайлы)
- Результат = Новый Массив;
-
- Для Каждого Элемент Из ПереданныеФайлы Цикл
- Описание = Новый Структура("Имя", Элемент.Имя);
- Описание.Вставить("Хранение", ПолучитьИзВременногоХранилища(Элемент.Хранение));
- Результат.Добавить(Описание);
- КонецЦикла;
-
- Возврат Результат;
-КонецФункции
-
-Процедура ФоноваяЗагрузкаФайловКЛАДР(Знач Параметры, Знач АдресХранилища) Экспорт
-
- ОбъектыЗагрузки = Параметры.ОбъектыЗагрузки;
- ИсточникДанных = Параметры.ИсточникДанных;
-
- ПереданныеФайлы = Параметры.ПереданныеФайлы;
- Если ТипЗнч(ПереданныеФайлы)=Тип("Строка") Тогда
- ПереданныеФайлы = ПолучитьИзВременногоХранилища(ПереданныеФайлы);
- КонецЕсли;
-
- Если ИсточникДанных = 1 Тогда
- КаталогФайлов = ИзвлечьФайлыКЛАДРСайт(ПереданныеФайлы);
-
- ИначеЕсли ИсточникДанных = 2 Тогда
- КаталогФайлов = ИзвлечьФайлыКЛАДРИТС(ПереданныеФайлы);
-
- ИначеЕсли ИсточникДанных = 3 Тогда
- КаталогФайлов = ИзвлечьФайлыКЛАДРДиск(ПереданныеФайлы);
-
- Иначе
- ВызватьИсключение НСтр("ru = 'Не поддерживаемый источник данных КЛАДР'");
- КонецЕсли;
-
- // После извлечения ожидаем, что все имена файлов - в верхнем регистре
-
- // Определяем версию того, что грузим
- ФайлыВерсии = НайтиФайлы(КаталогФайлов, "KLADR.DBF", Ложь);
- Если ФайлыВерсии.Количество() = 0 Тогда
- ЗагружаемаяВерсия = ТекущаяДатаСеанса();
- Иначе
- ЗагружаемаяВерсия = ФайлыВерсии[0].ПолучитьВремяИзменения();
- КонецЕсли;
-
- ДоступныеВерсии = Новый Соответствие;
- Для Каждого ОбъектЗагрузки Из ОбъектыЗагрузки Цикл
- ДоступныеВерсии.Вставить(ОбъектЗагрузки, ЗагружаемаяВерсия);
- КонецЦикла;
-
- ПараметрыЗагрузки = Новый Структура;
- ПараметрыЗагрузки.Вставить("АдресныеОбъекты", ОбъектыЗагрузки);
- ПараметрыЗагрузки.Вставить("ПутьКДаннымНаСервере", КаталогФайлов);
- ПараметрыЗагрузки.Вставить("ВерсияЗагружаемогоКЛАДР", ЗагружаемаяВерсия);
- ПараметрыЗагрузки.Вставить("ИсточникДанныхДляЗагрузки", ИсточникДанных);
- ПараметрыЗагрузки.Вставить("ДоступныеВерсии", ДоступныеВерсии);
-
- ЗагрузкаАдресныхСведенийИзФайловКЛАДРВРегистрСведений(ПараметрыЗагрузки, АдресХранилища);
-
- // И чистим за собой
- УдалитьВременныеФайлы(КаталогФайлов);
-КонецПроцедуры
-
-Процедура УдалитьВременныеФайлы(Путь)
- Попытка
- УдалитьФайлы(Путь);
- Исключение
- // Будут удалены при перезапуске сеанса, обработка не требуется
- КонецПопытки;
-КонецПроцедуры
-
-Функция ИзвлечьФайлыКЛАДРСайт(Знач ПереданныеФайлы)
- // С сайта приходят ZIP, внутри которых DBF по регионам
-
- СерверныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПолучитьИмяВременногоФайла());
- СоздатьКаталог(СерверныйКаталог);
-
- Для Каждого Описание Из ПереданныеФайлы Цикл
+ ВерсииФайлов = Новый Соответствие;
+ Для Каждого Описание Из ОписаниеФайлов Цикл
+ // Имена файлов должны быть всегда в верхнем регистре
Файл = Новый Файл(Описание.Имя);
- Если Врег(Файл.Расширение) <> ".ZIP" Тогда
- Продолжить;
- КонецЕсли;
- ИмяАрхива = СерверныйКаталог + Файл.Имя;
+ ИмяФайла = РабочийКаталог + ВРег(Файл.Имя);
Данные = ?(ТипЗнч(Описание.Хранение) = Тип("Строка"), ПолучитьИзВременногоХранилища(Описание.Хранение), Описание.Хранение);
- Данные.Записать(ИмяАрхива);
+ Данные.Записать(ИмяФайла);
- Архив = Новый ЧтениеZipФайла(ИмяАрхива);
+ Файл = Новый Файл(ИмяФайла);
+ Файл.УстановитьУниверсальноеВремяИзменения(Описание.ВремяИзменения);
- Для Каждого ЭлементАрхива Из Архив.Элементы Цикл
+ Если Врег(Прав(ИмяФайла, 4)) = ".ZIP" Тогда
+ // Распаковываем, оригинал удалится вместе с рабочим каталогом
+ ЧтениеZIP = Новый ЧтениеZipФайла(ИмяФайла);
+ ЧтениеZIP.ИзвлечьВсе(РабочийКаталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
+ КонецЕсли;
+
+ ВерсииФайлов.Вставить(ИмяФайла, Описание.ВремяИзменения);
+ КонецЦикла;
+
+ // Определяем даты - версии и формируем массив для загрузки
+ АдресныеОбъекты = Новый Массив;
+ ДоступныеВерсии = Новый Соответствие;
+
+ // Сокращения
+ АдресныеОбъекты.Добавить("SO");
+
+ ЗагружаемаяВерсияСейчас = ТекущаяУниверсальнаяДата();
+
+ Если ОтдельныеФайлыПоРегионам Тогда
+
+ Для Каждого КодРегиона Из КодыРегионов Цикл
+ АдресныйОбъект = Формат(КодРегиона, "ЧЦ=2; ЧН=; ЧВН=; ЧГ=");
+ АдресныеОбъекты.Добавить(АдресныйОбъект);
- Расширение = Врег(ЭлементАрхива.Расширение);
- Если Расширение = "DBF" Тогда
- Архив.Извлечь(ЭлементАрхива, СерверныйКаталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
-
- // Имена распакованных файлов должны быть всегда в верхнем регистре
- Для Каждого РаспакованныйФайл Из НайтиФайлы(СерверныйКаталог, ЭлементАрхива.Имя, Ложь) Цикл
- РезультирующееИмя = ВРег(РаспакованныйФайл.Имя);
- Если РаспакованныйФайл.Имя <> РезультирующееИмя Тогда
- ПереместитьФайл(РаспакованныйФайл.ПолноеИмя, РаспакованныйФайл.Путь + РезультирующееИмя)
- КонецЕсли;
- КонецЦикла;
+ ИмяФайла = РабочийКаталог + "BASE" + АдресныйОбъект + ".ZIP";
+ ЗагружаемаяВерсия = ВерсииФайлов[ИмяФайла];
+ Если ЗагружаемаяВерсия = Неопределено Тогда
+ ЗагружаемаяВерсия = ЗагружаемаяВерсияСейчас;
КонецЕсли;
+ ДоступныеВерсии.Вставить(АдресныйОбъект, ЗагружаемаяВерсия);
КонецЦикла;
- Архив.Закрыть();
- УдалитьВременныеФайлы(ИмяАрхива);
- КонецЦикла;
+ Иначе
+ // По файлу KLADR.DBF
+ ИмяФайла = РабочийКаталог + "KLADR.DBF";
+ ЗагружаемаяВерсия = ВерсииФайлов[ИмяФайла];
+ Если ЗагружаемаяВерсия = Неопределено Тогда
+ ЗагружаемаяВерсия = ЗагружаемаяВерсияСейчас;
+ КонецЕсли;
- Возврат СерверныйКаталог;
-КонецФункции
-
-Функция ИзвлечьФайлыКЛАДРИТС(Знач ПереданныеФайлы)
- // С ИТC приходят файлы *.exe, представляющие собой самораспаковывающийся RAR
- // Сейчас они распаковываются на клиенте и здесь мы получаем dbf
-
- СерверныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПолучитьИмяВременногоФайла());
- СоздатьКаталог(СерверныйКаталог);
-
- Для Каждого Описание Из ПереданныеФайлы Цикл
- Файл = Новый Файл(Описание.Имя);
- Расширение = Врег(Файл.Расширение);
-
- Если Расширение = ".DBF" Тогда
- // Имена файлов должны быть всегда в верхнем регистре
- ИмяАрхива = СерверныйКаталог + ВРег(Файл.Имя);
+ Для Каждого КодРегиона Из КодыРегионов Цикл
+ АдресныйОбъект = Формат(КодРегиона, "ЧЦ=2; ЧН=; ЧВН=; ЧГ=");
+ АдресныеОбъекты.Добавить(АдресныйОбъект);
- Данные = ?(ТипЗнч(Описание.Хранение) = Тип("Строка"), ПолучитьИзВременногоХранилища(Описание.Хранение), Описание.Хранение);
- Данные.Записать(ИмяАрхива);
- КонецЕсли;
-
- КонецЦикла;
+ ДоступныеВерсии.Вставить(АдресныйОбъект, ЗагружаемаяВерсия);
+ КонецЦикла;
+ КонецЕсли;
- Возврат СерверныйКаталог;
-КонецФункции
+ ПараметрыЗагрузки = Новый Структура;
+ ПараметрыЗагрузки.Вставить("АдресныеОбъекты", АдресныеОбъекты);
+ ПараметрыЗагрузки.Вставить("ПутьКДаннымНаСервере", РабочийКаталог);
+ ПараметрыЗагрузки.Вставить("ВерсияЗагружаемогоКЛАДР", ЗагружаемаяВерсия);
+ ПараметрыЗагрузки.Вставить("ИсточникДанныхДляЗагрузки", ?(ОтдельныеФайлыПоРегионам, 1, 2));
+ ПараметрыЗагрузки.Вставить("ДоступныеВерсии", ДоступныеВерсии);
+
+ // Собственно загрузка
+ ЗагрузкаАдресныхСведенийИзФайловКЛАДРВРегистрСведений(ПараметрыЗагрузки, Неопределено);
+
+ // И чистим за собой
+ Попытка
+ УдалитьФайлы(РабочийКаталог);
+ Исключение
+ // Обработка не требуется, файлы будут удалены позднее
+ КонецПопытки;
+
+ // Обновляем состав регионов
+ РегистрыСведений.АдресныйКлассификатор.ОбновитьСоставСубъектовРФПоКлассификатору();
+КонецПроцедуры
-Функция ИзвлечьФайлыКЛАДРДиск(Знач ПереданныеФайлы)
- // На диске находятся файлы dbf, можно грузить сразу
+// Обработчик фоновой очистки
+//
+Процедура ФоновоеЗаданиеОчисткиКлассификатораАдресов(Знач Параметры, Знач АдресРезультата) Экспорт
- СерверныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПолучитьИмяВременногоФайла());
- СоздатьКаталог(СерверныйКаталог);
+ КодыРегионов = Параметры[0]; // Массив чисел - кодов регионов для загрузки
- Для Каждого Описание Из ПереданныеФайлы Цикл
- Файл = Новый Файл(Описание.Имя);
- Расширение = Врег(Файл.Расширение);
+ КоличествоУдаляемых = КодыРегионов.Количество();
+ Позиция = 0;
+
+ Удаляемые = Новый Массив(1);
+
+ Пока Позиция < КоличествоУдаляемых Цикл
+ КодРегиона = КодыРегионов[Позиция];
- Если Расширение = ".DBF" Тогда
- // Имена файлов должны быть всегда в верхнем регистре
- ИмяФайла = СерверныйКаталог + ВРег(Файл.Имя);
+ КодРегионаСтрокой = Формат(КодРегиона, "ЧЦ=2; ЧН=; ЧВН=");
- Данные = ?(ТипЗнч(Описание.Хранение) = Тип("Строка"), ПолучитьИзВременногоХранилища(Описание.Хранение), Описание.Хранение);
- Данные.Записать(ИмяФайла);
- КонецЕсли;
+ ДлительныеОперации.СообщитьПрогресс( , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Очистка региона ""%1 - %2"" (осталось %3) ...'"),
+ КодРегионаСтрокой, РегистрыСведений.АдресныйКлассификатор.НаименованиеРегионаПоКоду(КодРегиона),
+ Формат(КоличествоУдаляемых - Позиция - 1, "ЧН=")
+ ));
+ // Удаление одновременно с обновлением версии
+ Удаляемые[0] = КодРегионаСтрокой;
+ УдалитьАдресныеСведения(Удаляемые);
+
+ Позиция = Позиция + 1;
КонецЦикла;
- Возврат СерверныйКаталог;
-КонецФункции
+ // Обновляем состав регионов
+ РегистрыСведений.АдресныйКлассификатор.ОбновитьСоставСубъектовРФПоКлассификатору();
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Учет изменений КЛАДР в упаковке домов по данным ФИАС
@@ -3569,7 +3556,7 @@
ТекстОшибки = НСтр("ru = 'Дом (владение, домовладение) ""%6"" не найден в адресном классификаторе.'");
ИначеЕсли ПолеОшибки = "Корпус" Тогда
- ТекстОшибки = НСтр("ru = 'Корпус (строение, литера) ""%7"" для дома (владения, домовладения) ""%6"" не найден в адресном классификаторе.'");
+ ТекстОшибки = НСтр("ru = 'Корпус (строение, литера, сооружение, участок) ""%7"" для дома (владения, домовладения) ""%6"" не найден в адресном классификаторе.'");
ИначеЕсли ПолеОшибки = "Индекс" Тогда
ТекстОшибки = НСтр("ru = 'Индекс ""%8"" не соответствует адресу.'");
@@ -3622,8 +3609,8 @@
//
// Параметры:
// Описание - Строка - рассматриваемое описание диапазона
-// Диапазоном упрощенно считаем или буквы "Н" и "Ч" - все нечетные и четные соответственно
-// или строку с дефисом
+// Диапазоном упрощенно считаем или буквы "Н" и "Ч" - все нечетные и четные соответственно
+// или строку с дефисом
//
// Возвращаемое значение:
// Булево - Истина, если переданная строка может быть рассмотрена как диапазон домов
@@ -3748,7 +3735,8 @@
// Если указано Неопределено, то будет вычислено.
// КэшОписанийЗданий - Соответствие - кэш описаний зданий, заполняется автоматически
//
-// Возвращаемые значение - Булево - признак вхождения
+// Возвращаемые значение:
+// Булево - признак вхождения
//
Функция ЗданиеВходитВОписание(Знач Здание, Знач Описание, Знач ПолноеСоответствие = Истина, ТипыЧастейЗдания = Неопределено, КэшОписанийЗданий = Неопределено)
@@ -3805,7 +3793,7 @@
// Параметры:
// Номер - Строка, Число - полный номер дома
//
-// Возвращаемое значение
+// Возвращаемое значение:
// Число - Числовая частью номера. Если числовой части нет, то возвращается ноль
//
Функция ЧисловаяЧастьНомера(Знач Номер)
@@ -3844,7 +3832,10 @@
// Вычисляет основной номер здания выбором из заполненного дом, владение, домовладение
//
// Параметры:
-// Здание - Структура - Анализируемое здание с полями Дом, Домовладение, Владение
+// Здание - Структура - Анализируемое здание с полями:
+// * Дом - Строка - значение соответствующего номера
+// * Домовладение - Строка - значение соответствующего номера
+// * Владение - Строка - значение соответствующего номера
//
// Возвращаемое значение
// Строка - Основной номер здания
@@ -3876,7 +3867,6 @@
// Возвращаемое значение:
// Структура - Ключ - идентификатор, значение - номер здания.
// Набор идентификаторов определяется по данным таблицы-результата ТипыЧастейЗдания
-//
// Неопределено - если описание не удалось распознать.
//
Функция СтруктураОписанияЗдания(Знач Описание, ТипыЧастейЗдания = Неопределено)
@@ -3954,11 +3944,10 @@
НоваяСтрокаТаблицы("К", "Корпус",
НоваяСтрокаТаблицы("СТР", "Строение",
НоваяСтрокаТаблицы("СТРОЕНИЕ", "Строение",
- НоваяСтрокаТаблицы("ЛИТЕРА", "Литера",
- НоваяСтрокаТаблицы("ЛИТЕР", "Литера",
+ НоваяСтрокаТаблицы("ЛИТЕР", "Литер",
НоваяСтрокаТаблицы("СООРУЖЕНИЕ", "Сооружение",
НоваяСтрокаТаблицы("УЧАСТОК", "Участок",
- "Префикс, Идентификатор, Длина"))))))))));
+ "Префикс, Идентификатор, Длина")))))))));
Результат.Сортировать("Длина УБЫВ, Префикс");
@@ -4006,30 +3995,6 @@
КонецПроцедуры
-// Возвращает ближайший по иерархии почтовый индекс в выборке с известными полями
-//
-Функция ПочтовыйИндексПоИерархии(Знач Выборка)
-
- Индекс = СокрЛП(Выборка.Индекс);
- Если ПустаяСтрока(Индекс) Тогда
- Индекс = СокрЛП(Выборка.УлицаИндекс);
- Если ПустаяСтрока(Индекс) Тогда
- Индекс = СокрЛП(Выборка.НаселенныйПунктИндекс);
- Если ПустаяСтрока(Индекс) Тогда
- Индекс = СокрЛП(Выборка.ГородИндекс);
- Если ПустаяСтрока(Индекс) Тогда
- Индекс = СокрЛП(Выборка.РайонИндекс);
- Если ПустаяСтрока(Индекс) Тогда
- Индекс = СокрЛП(Выборка.РегионИндекс);
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
-
- Возврат Индекс;
-КонецФункции
-
////////////////////////////////////////////////////////////////////////////////
// Данные для подсистемы КонтактнаяИнформация -разрыв связей подсистем
//
@@ -4793,12 +4758,11 @@
| КОНЕЦ КАК Неактуален,
|
| ПочтовыеИндексы.Индекс КАК Индекс,
- |
- | // Синтетический код объекта, к которому относится индекс - СС РРР ГГГ ППП УУУУ АА ДДДД
- | 1000000 * ВЫРАЗИТЬ( ПочтовыеИндексы.Код /1000000 - 0.5 КАК ЧИСЛО(21,0)) КАК Код,
+ | ВЫБОР КОГДА НЕ Улицы.Код ЕСТЬ NULL ТОГДА Улицы.Код
+ | ИНАЧЕ НаселенныеПункты.Код
+ | КОНЕЦ КАК Код,
|
| // Остальные колонки - вспомогательные, будут удалены из результата
- |
| Улицы.Наименование КАК УлицаНаименование,
| Улицы.Сокращение КАК УлицаСокращение,
| Улицы.Наименование + "" "" + Улицы.Сокращение КАК ПредставлениеУлица,
@@ -4879,7 +4843,7 @@
| И Регионы.КодУлицыВКоде = 0
|
|ГДЕ
- | ПочтовыеИндексы.Индекс = &ПочтовыйИндекс
+ | (НЕ Улицы.Код ЕСТЬ NULL ИЛИ НЕ НаселенныеПункты.Код ЕСТЬ NULL) И ПочтовыеИндексы.Индекс = &ПочтовыйИндекс
| " + ?(СкрыватьНеактуальные, "И ПочтовыеИндексы.ПризнакАктуальности = 0","") + "
|
|" + ?(ПустаяСтрока(ФрагментПервые), "", "
diff --git a/SSL/src/CommonModules/АдресныйКлассификаторВызовСервера/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификаторВызовСервера/Module.bsl
index e00c3fb98..add09d517 100644
--- a/SSL/src/CommonModules/АдресныйКлассификаторВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/АдресныйКлассификаторВызовСервера/Module.bsl
@@ -9,11 +9,11 @@
// для тех объектов, которые ранее уже загружались.
//
// Возвращаемое значение - Массив - Содержит структуры с полями:
-// КодАдресногоОбъекта - Строка - Код адресного объекта
-// Наименование - Строка - Наименование адресного объекта
-// Сокращение - Строка - Сокращение адресного объекта
-// Индекс - Строка - Индекс адресного объекта
-// ОбновлениеДоступно - Булево
+// * КодАдресногоОбъекта - Строка - Код адресного объекта
+// * Наименование - Строка - Наименование адресного объекта
+// * Сокращение - Строка - Сокращение адресного объекта
+// * Индекс - Строка - Индекс адресного объекта
+// * ОбновлениеДоступно - Булево
//
Функция ПроверитьОбновлениеАдресныхОбъектовСервер() Экспорт
@@ -38,11 +38,12 @@
// Параметры:
// КодАдресногоОбъекта - Строка - Номер адресного объекта от 1 до 89 + 99 в формате NN
//
-// Возвращаемое значение - Структура - Описание адресного объекта с полями:
-// КодАдресногоОбъекта - Строка - Код адресного объекта.
-// Наименование - Строка - Наименование адресного объекта.
-// Сокращение - Строка - Сокращение адресного объекта.
-// Индекс - Строка - Индекс.
+// Возвращаемое значение:
+// Структура - Описание адресного объекта с полями:
+// * КодАдресногоОбъекта - Строка - Код адресного объекта.
+// * Наименование - Строка - Наименование адресного объекта.
+// * Сокращение - Строка - Сокращение адресного объекта.
+// * Индекс - Строка - Индекс.
//
Функция ИнформацияПоАдресномуОбъекту(КодАдресногоОбъекта) Экспорт
@@ -56,7 +57,8 @@
// Параметры:
// ТекстXML - Строка - Строка, содержащая текст XML.
//
-// Возвращаемое значение - Соответствие - Описание файла версий: Ключ - Строка - адресный объект, Значение - Дата - дата актуальности адресного объекта.
+// Возвращаемое значение:
+// Соответствие - Описание файла версий: Ключ - Строка - адресный объект, Значение - Дата - дата актуальности адресного объекта.
//
Функция ПолучитьВерсииАдресныхСведений(ТекстXML) Экспорт
@@ -82,4 +84,12 @@
Возврат Результат;
КонецФункции
+// Возвращает флаг разрешения загрузки или очистки адресного классификатора
+//
+Функция МожноИзменятьАдресныйКлассификатор() Экспорт
+
+ Возврат Не ОбщегоНазначенияПовтИсп.РазделениеВключено();
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl
index fc7023b31..d7fb17853 100644
--- a/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl
+++ b/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl
@@ -7,13 +7,16 @@
// Вызывает форму загрузки классификатора. Может использоваться как интерфейс.
//
-Процедура ЗагрузитьАдресныйКлассификатор() Экспорт
+// Параметры:
+// ПараметрыЗагрузки - Структура - параметры, передаваемые в форму при открытии
+//
+Процедура ЗагрузитьАдресныйКлассификатор(Знач ПараметрыЗагрузки = Неопределено) Экспорт
-#Если ВебКлиент Тогда
- ПоказатьПредупреждение(, НСтр("ru='В веб-клиенте загрузка адресного классификатора не поддерживается.'"));
-#Иначе
- ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.ЗагрузкаАдресногоКлассификатора");
-#КонецЕсли
+ Если АдресныйКлассификаторВызовСервера.МожноИзменятьАдресныйКлассификатор() Тогда
+ ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.ЗагрузкаАдресногоКлассификатора", ПараметрыЗагрузки);
+ Иначе
+ ПоказатьПредупреждение(, НСтр("ru='В разделенном режиме загрузка адресного классификатора не поддерживается.'"));
+ КонецЕсли;
КонецПроцедуры
@@ -25,6 +28,11 @@
//
Процедура ОпределитьНеобходимостьОбновленияАдресныхОбъектов(Владелец = Неопределено) Экспорт
+ Если Не АдресныйКлассификаторВызовСервера.МожноИзменятьАдресныйКлассификатор() Тогда
+ ПоказатьПредупреждение(, НСтр("ru='В разделенном режиме запрос версии данных адресного классификатора не поддерживается.'"));
+ Возврат;
+ КонецЕсли;
+
Если ЗапрашиватьДоступПриИспользовании() Тогда
// Нужен запрос профиля безопасности
РаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(
@@ -49,7 +57,11 @@
//
Процедура ОчиститьКлассификатор(Владелец = Неопределено) Экспорт
- ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.ОчисткаАдресногоКлассификатора", , Владелец);
+ Если АдресныйКлассификаторВызовСервера.МожноИзменятьАдресныйКлассификатор() Тогда
+ ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.ОчисткаАдресногоКлассификатора", , Владелец);
+ Иначе
+ ПоказатьПредупреждение(, НСтр("ru='В разделенном режиме очистка адресного классификатора не поддерживается.'"));
+ КонецЕсли;
КонецПроцедуры
@@ -195,7 +207,7 @@
// Строка - Строка - строка с расширением "DBF".
//
// Возвращаемое значение:
-// Строка - строка с расширением "ZIP".
+// Строка - Строка с расширением "ZIP".
//
Функция ЗаменитьРасширение_DBF_На_ZIP(Строка) Экспорт
@@ -223,7 +235,7 @@
// Проверяет существование файлов адресного классификатора на диске ИТС.
//
// Параметры:
-// ПутьКДискуИТС - строка - путь к корню диска ИТС
+// ПутьКДискуИТС - Строка - путь к корню диска ИТС
//
// Возвращаемое значение:
// Булево - истина - файлы присутствуют
@@ -260,7 +272,7 @@
// Функция возвращает относительный путь на диске ИТС по которому находятся файлы КЛАДР.
//
// Параметры:
-// ПутьКДискуИТС - путь к корневому каталогу диска ИТС.
+// ПутьКДискуИТС - Строка - путь к корневому каталогу диска ИТС.
//
// Возвращаемое значение:
// Строка - относительный путь на диске ИТС к файлам КЛАДР (самораспаковывающийся архив).
@@ -311,12 +323,10 @@
// Проверяет существование файлов данных в переданном каталоге
//
// Параметры:
-// ПутьККаталогу - строка - путь к каталогу, который необходимо проверить на наличие файлов
+// ПутьККаталогу - Строка - путь к каталогу, который необходимо проверить на наличие файлов
//
// Возвращаемое значение:
-// Истина - файлы существуют на диске
-// Ложь - хотя бы одного файла из необходимого набора файлов
-// не существует на диске
+// Булево - Истина, если файлы существуют на диске, Ложь, если нет хотя бы одного файла из необходимого набора файлов
//
Функция ПроверитьНаличиеФайловДанныхВКаталоге(Знач ПутьККаталогу) Экспорт
@@ -347,16 +357,16 @@
Уникальность, Окно, НавигационнаяСсылка, ОписаниеОповещенияОЗакрытии);
КонецФункции
-
+
#Если Не ВебКлиент Тогда
-
+
// Распаковывает файлы КЛАДР с диска ИТС и выполняет их архивацию в ZIP-архив.
//
-// Параметры
-// ДискИТС - строка - путь к корневой папке диска ИТС
+// Параметры:
+// ДискИТС - Строка - путь к корневой папке диска ИТС
//
-// Возвращаемое значение
-// Строка - путь к временному каталогу с файлами архива кладр
+// Возвращаемое значение:
+// Строка - Путь к временному каталогу с файлами архива кладр
//
Функция ПреобразоватьФайлыКЛАДРEXEВZIP(Знач ДискИТС) Экспорт
@@ -397,10 +407,10 @@
// Сжимает файл из поставки КЛАДР в ZIP архив.
//
-// Параметры
-// ПутьКDBFФайлам - строка - путь к каталогу с файлами DBF
-// ИмяФайла - строка - имя файла, который требуется сжать
-// КаталогВременныхФайлов - строка - каталог, в который требуется сохранить файл архива
+// Параметры:
+// ПутьКDBFФайлам - Строка - путь к каталогу с файлами DBF
+// ИмяФайла - Строка - имя файла, который требуется сжать
+// КаталогВременныхФайлов - Строка - каталог, в который требуется сохранить файл архива
//
Процедура СжатьФайл(Знач ПутьКDBFФайлам, ИмяФайла, КаталогВременныхФайлов) Экспорт
@@ -423,15 +433,18 @@
// Загружает файлы КЛАДР региона с Веб сервера
//
// Параметры
-// АдресныйОбъект - Массив - каждая строка идентификатор адресного объекта в формате NN
+// АдресныйОбъект - Массив - каждая строка идентификатор адресного объекта в формате NN
// ДанныеАутентификации - Структура - параметры аутентификации на пользовательском сайте 1С
-// ключ - КодПользователя - значение - пользователь (логин)
-// ключ - Пароль - значение - пароль пользователя
-// ВременныйКаталог - Строка - путь к временному каталогу.
+// * КодПользователя - Строка - пользователь (логин)
+// * Пароль - Строка - пароль пользователя
+// ВременныйКаталог - Строка - путь к временному каталогу.
//
-// Возвращаемое значение: Структура, ключ Статус - булево - истина или ложь
-// ключ значение - строка - если Статус ложь, содержит
-// пояснение об ошибке.
+// Возвращаемое значение:
+// Структура - описание результата:
+// * Статус - Булево - успешность загрузки
+// * Путь - Строка - путь к файлу на сервере, ключ используется только если статус Истина
+// * СообщениеОбОшибке - Строка - сообщение об ошибке, если статус Ложь
+// * Заголовки - Соответствие - см. описание параметра Заголовки объекта HTTPОтвет
//
Функция ЗагрузитьКЛАДРСВебСервера(Знач АдресныйОбъект, Знач ДанныеАутентификации, ВременныйКаталог) Экспорт
@@ -442,45 +455,47 @@
СоздатьКаталог(ВременныйКаталог);
КонецЕсли;
+ ВременныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ВременныйКаталог);
+
ПараметрыЗагрузкиФайла = Новый Структура;
ПараметрыЗагрузкиФайла.Вставить("Пользователь", ДанныеАутентификации.КодПользователя);
ПараметрыЗагрузкиФайла.Вставить("Пароль", ДанныеАутентификации.Пароль);
Если АдресныйОбъект = "AL" Тогда
- //
- Файл = Новый Файл(ВременныйКаталог + "\ALTNAMES.ZIP");
+ Файл = Новый Файл(ВременныйКаталог + "ALTNAMES.ZIP");
Если Не Файл.Существует() Тогда
- ПараметрыЗагрузкиФайла.Вставить("ПутьДляСохранения", ВременныйКаталог + "\ALTNAMES.ZIP");
+ ПараметрыЗагрузкиФайла.Вставить("ПутьДляСохранения", ВременныйКаталог + "ALTNAMES.ZIP");
Результат = ПолучениеФайловИзИнтернетаКлиент.СкачатьФайлНаКлиенте(URLСтрока + "ALTNAMES.ZIP",
ПараметрыЗагрузкиФайла);
Если Не Результат.Статус Тогда
Возврат Результат;
КонецЕсли;
КонецЕсли;
- //
+
ИначеЕсли АдресныйОбъект = "SO" Тогда
- //
- Файл = Новый Файл(ВременныйКаталог + "\SOCRBASE.ZIP");
+ Файл = Новый Файл(ВременныйКаталог + "SOCRBASE.ZIP");
Если Не Файл.Существует() Тогда
- ПараметрыЗагрузкиФайла.Вставить("ПутьДляСохранения", ВременныйКаталог + "\SOCRBASE.ZIP");
+ ПараметрыЗагрузкиФайла.Вставить("ПутьДляСохранения", ВременныйКаталог + "SOCRBASE.ZIP");
Результат = ПолучениеФайловИзИнтернетаКлиент.СкачатьФайлНаКлиенте(URLСтрока + "SOCRBASE.ZIP",
ПараметрыЗагрузкиФайла);
Если Не Результат.Статус Тогда
Возврат Результат;
КонецЕсли;
КонецЕсли;
+
Иначе
ИмяZIP = "BASE" + АдресныйОбъект + ".ZIP";
- ПараметрыЗагрузкиФайла.Вставить("ПутьДляСохранения", ВременныйКаталог + "\" + ИмяZIP);
+ ПараметрыЗагрузкиФайла.Вставить("ПутьДляСохранения", ВременныйКаталог + ИмяZIP);
Результат = ПолучениеФайловИзИнтернетаКлиент.СкачатьФайлНаКлиенте(URLСтрока + ИмяZIP,
ПараметрыЗагрузкиФайла);
Если Не Результат.Статус Тогда
Возврат Результат;
КонецЕсли;
+
КонецЕсли;
- Возврат Новый Структура("Статус", Истина);
-
+ // Успешная загрузка
+ Возврат Результат;
КонецФункции
#КонецЕсли
@@ -491,4 +506,88 @@
КонецФункции
+// Вызывает диалог выбора каталога
+//
+// Параметры:
+// Форма - УправляемаяФорма - вызывающий объект
+// ПутьКДанным - Строка - полное имя реквизита формы, содержащего значение каталога. Например "РабочийКаталог"
+// или "Объект.КаталогИзображений"
+// Заголовок - Строка - Заголовок для диалога
+// СтандартнаяОбработка - Булево - для использования в обработчике "ПриНачалаВыбора". Будет заполнено значением Ложь
+//
+Процедура ВыбратьКаталог(Знач Форма, Знач ПутьКДанным, Знач Заголовок = Неопределено, СтандартнаяОбработка = Ложь) Экспорт
+
+ СтандартнаяОбработка = Ложь;
+
+ Оповещение = Новый ОписаниеОповещения("ВыбратьКаталогЗавершениеКонтроляРасширенияРаботыСФайлами", ЭтотОбъект, Новый Структура);
+ Оповещение.ДополнительныеПараметры.Вставить("Форма", Форма);
+ Оповещение.ДополнительныеПараметры.Вставить("ПутьКДанным", ПутьКДанным);
+ Оповещение.ДополнительныеПараметры.Вставить("Заголовок", Заголовок);
+
+ ОбщегоНазначенияКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Оповещение, , Ложь);
+КонецПроцедуры
+
+// Завершение немодального выбора каталога
+//
+Процедура ВыбратьКаталогЗавершениеКонтроляРасширенияРаботыСФайлами(Знач Результат, Знач ДополнительныеПараметры) Экспорт
+
+ Если Результат <> Истина Тогда
+ // Отказ от установки расширения
+ Возврат;
+
+ ИначеЕсли Не ПодключитьРасширениеРаботыСФайлами() Тогда
+ ПоказатьПредупреждение(, НСтр("ru = 'Расширение для работы с файлами не подключено.'"));
+ Возврат;
+ КонецЕсли;
+
+ Форма = ДополнительныеПараметры.Форма;
+ ПутьКДанным = ДополнительныеПараметры.ПутьКДанным;
+ Заголовок = ДополнительныеПараметры.Заголовок;
+
+ Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
+ Если Заголовок <> Неопределено Тогда
+ Диалог.Заголовок = Заголовок;
+ КонецЕсли;
+
+ ВладелецЗначения = Форма;
+ ТекущееЗначение = Форма;
+ ИмяРеквизита = ПутьКДанным;
+
+ ЧастиПути = СтрЗаменить(ПутьКДанным, ".", Символы.ПС);
+ Для Позиция = 1 По СтрЧислоСтрок(ЧастиПути) Цикл
+ ИмяРеквизита = СтрПолучитьСтроку(ЧастиПути, Позиция);
+ ВладелецЗначения = ТекущееЗначение;
+ ТекущееЗначение = ТекущееЗначение[ИмяРеквизита];
+ КонецЦикла;
+
+ Диалог.Каталог = ТекущееЗначение;
+
+ Если Диалог.Выбрать() Тогда
+ ВладелецЗначения[ИмяРеквизита] = Диалог.Каталог;
+ ДанныеВыбора = Диалог.Каталог;
+ КонецЕсли;
+
+КонецПроцедуры
+
+// Создает и возвращает временный каталог на клиенте.
+//
+// Возвращаемое значение:
+// Строка - полное имя созданного каталога
+//
+Функция ВременныйКаталогКлиента() Экспорт
+
+#Если ВебКлиент Тогда
+ Разделитель = ПолучитьРазделительПути();
+
+ КаталогКлиента = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогВременныхФайлов())
+ + Разделитель + Строка(Новый УникальныйИдентификатор) + Разделитель;
+#Иначе
+ КаталогКлиента = ПолучитьИмяВременногоФайла();
+#КонецЕсли
+
+ СоздатьКаталог(КаталогКлиента);
+
+ Возврат КаталогКлиента;
+КонецФункции
+
#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/CommonModules/АдресныйКлассификаторКлиентСервер/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификаторКлиентСервер/Module.bsl
index e755a06bc..6d1e46173 100644
--- a/SSL/src/CommonModules/АдресныйКлассификаторКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/АдресныйКлассификаторКлиентСервер/Module.bsl
@@ -61,9 +61,9 @@
// Получает версии, доступные на сайте 1С.
//
// Возвращаемое значение:
-// Структура - с двумя ключами:
-// * Статус - Булево - статус наличия доступных версий.
-// * ДоступныеВерсии - Соответствие - доступные версии.
+// Структура - описание версий:
+// * Статус - Булево - статус наличия доступных версий.
+// * ДоступныеВерсии - Соответствие - доступные версии.
//
Функция ВерсииДоступныеНаСайте1С() Экспорт
@@ -106,7 +106,7 @@
// Путь к файлу на веб сервере, содержащему информацию по версиям адресных сведений
//
// Возвращаемое значение:
-// Строка - путь к файлу описания данных КЛАДР.
+// Строка - путь к файлу описания данных КЛАДР.
//
Функция ПутьКФайлуОписаниюДанныхКЛАДР() Экспорт
@@ -117,12 +117,12 @@
// Формирует структуру с ключами Статус (Истина) и Значение.
//
// Параметры:
-// Значение - ПроизвольныйТип - передаваемое значение.
-// Статус - Булево - передаваемый статус.
+// Значение - Произвольный - передаваемое значение.
+// Статус - Булево - передаваемый статус.
//
// Возвращаемое значение:
-// Структура - возвращаемая структура.
-//
+// Структура - структура-результат
+//
Функция ЗаполнитьРезультат(Знач Значение, Знач Статус = Истина)
Если Статус Тогда
@@ -133,12 +133,11 @@
КонецФункции
-// Функция возвращает структуру с набором полей как у записи регистра сведений
-// АдресныйКлассификатор с пустым набором значений
+// Функция возвращает структуру с набором полей, аналогичным записи регистра сведений
+// АдресныйКлассификатор с пустым набором значений
//
// Возвращаемое значение:
-// Структура - структуру с набором полей как у записи регистра сведений
-// АдресныйКлассификатор с пустым набором значений
+// Структура - требуемая структура
//
Функция ПустаяСтруктураАдреса() Экспорт
@@ -184,4 +183,189 @@
КонецФункции
+// Возвращает вариант адресного классификатора:
+//
+// Возвращаемое значение:
+// Строка - идентификатор используемого адресного классфикатора "КЛАДР"
+// Неопределено - если не удалось определить используемый вариант классификатора
+//
+Функция ИспользуемыйАдресныйКлассификатор() Экспорт
+
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+ ЕстьПодсистемаАдресныйКлассификатор = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор");
+#Иначе
+ ЕстьПодсистемаАдресныйКлассификатор = ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор");
+#КонецЕсли
+
+ Если ЕстьПодсистемаАдресныйКлассификатор Тогда
+ Возврат "КЛАДР";
+ КонецЕсли;
+
+ // Нет подсистемы
+ Возврат Неопределено;
+КонецФункции
+
+// Проверка на доступность всех необходимых файлов для загрузки
+//
+// Параметры:
+// КодыРегионов - Массив - содержит числовые значения - коды регионов-субъектов РФ (для последующей загрузки)
+// РабочийКаталог - Строка - каталог с проверяемыми файлами
+// ПараметрыЗагрузки - Структура - содержит поля
+// * КодИсточникаЗагрузки - Строка - описывает набор анализируемых файлов. Возможные значения: "КАТАЛОГ", "ИТС"
+// * ПолеОшибки - Строка - имя реквизита для привязки сообщений об ошибке
+//
+// Возвращаемое значение - структура с полями:
+// * КодыРегионов - Массив - содержит числовые значения кодов регионов-субъектов для которых доступны все файлы
+// * ЕстьВсеФайлы - Булево - флаг того, что можно загружать все регионы
+// * Ошибки - Структура - см. описание ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю
+// * ФайлыПоРегионам - Соответствие - соответствие файлов регионам. Ключ может быть:
+// - числом (код региона), тогда значение - массив имен файлов, необходимых для загрузки этого региона
+// - символом "*", тогда значение - массив имен файлов, необходимых для загрузки всех регионов
+//
+Функция АнализДоступностиФайловКлассификатораВКаталоге(Знач КодыРегионов, Знач РабочийКаталог, Знач ПараметрыЗагрузки) Экспорт
+
+ // В зависимости от классификатора будет разный набор файлов
+ ТипКлассификатора = ИспользуемыйАдресныйКлассификатор();
+ Если ТипКлассификатора = "КЛАДР" Тогда
+ Возврат АнализДоступностиФайловКлассификатораВКаталогеКЛАДР(КодыРегионов, РабочийКаталог, ПараметрыЗагрузки);
+ КонецЕсли;
+
+ // Фиктивный вызов для получения пустой структуры
+ ПараметрыЗагрузки = Новый Структура("КодИсточникаЗагрузки");
+ Возврат АнализДоступностиФайловКлассификатораВКаталогеКЛАДР(КодыРегионов, РабочийКаталог, ПараметрыЗагрузки);
+КонецФункции
+
+Функция АнализДоступностиФайловКлассификатораВКаталогеКЛАДР(Знач КодыРегионов, Знач РабочийКаталог, Знач ПараметрыЗагрузки)
+
+ Результат = Новый Структура;
+ Результат.Вставить("КодыРегионов", КодыРегионов);
+ Результат.Вставить("ЕстьВсеФайлы", Истина);
+ Результат.Вставить("Ошибки", Неопределено);
+ Результат.Вставить("ФайлыПоРегионам", Новый Соответствие);
+
+ Если ПараметрыЗагрузки.КодИсточникаЗагрузки = "КАТАЛОГ" Тогда
+ // Полный состав файлов КЛАДР
+ ШаблонОшибки = НСтр("ru = 'Не найден файл КЛАДР ""%1""'");
+ Расширение = ".DBF";
+ ИменаФайлов = "ALTNAMES, DOMA, KLADR, SOCRBASE, STREET";
+
+ ИначеЕсли ПараметрыЗагрузки.КодИсточникаЗагрузки = "ИТС" Тогда
+ // Поставляемые файлы
+ ШаблонОшибки = НСтр("ru = 'Не найден файл ""%1""'");
+ Расширение = ".EXE";
+ ИменаФайлов = "ALTNAMES, DOMA, KLADR, SOCRBASE, STREET";
+
+ Иначе
+ Возврат Результат;
+
+ КонецЕсли;
+
+ РабочийКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РабочийКаталог);
+
+ Результат.ФайлыПоРегионам["*"] = Новый Массив;
+ Для Каждого КлючЗначение Из Новый Структура(ИменаФайлов) Цикл
+ ИмяФайла = КлючЗначение.Ключ + Расширение;
+ Файл = НайтиФайл(РабочийКаталог, ИмяФайла);
+ Если Файл.Существует Тогда
+ Результат.ФайлыПоРегионам["*"].Добавить(Файл.ПолноеИмя);
+ Иначе
+ Результат.ЕстьВсеФайлы = Ложь;
+ ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Результат.Ошибки, ПараметрыЗагрузки.ПолеОшибки,
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ИмяФайла));
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+
+// Поиск первого файла по маске без учета регистра (особенностей операционной системы)
+//
+// Параметры:
+// Каталог - Строка - каталог, в котором ищется файл
+// ИмяФайла - Строка - имя искомого файла
+//
+// Возвращаемое значение:
+// Структура - описание найденного файла. Содержит поля:
+// * Существует - Булево - флаг того, что указанный файл существует
+// * Имя - Строка - характеристика найденного файла, см. описания типа Файл
+// * ИмяБезРасширения - Строка - характеристика найденного файла, см. описания типа Файл
+// * ПолноеИмя - Строка - характеристика найденного файла, см. описания типа Файл
+// * Путь - Строка - характеристика найденного файла, см. описания типа Файл
+// * Расширение - Строка - характеристика найденного файла, см. описания типа Файл
+//
+Функция НайтиФайл(Знач Каталог, Знач ИмяФайла) Экспорт
+
+ СистемнаяИнформация = Новый СистемнаяИнформация;
+ Платформа = СистемнаяИнформация.ТипПлатформы;
+
+ НеУчитыватьРегистр = Платформа = ТипПлатформы.Windows_x86 Или Платформа = ТипПлатформы.Windows_x86_64;
+
+ Если НеУчитыватьРегистр Тогда
+ Маска = ВРег(ИмяФайла);
+ Иначе
+ Маска = "";
+ Для Позиция = 1 По СтрДлина(ИмяФайла) Цикл
+ Символ = Сред(ИмяФайла, Позиция, 1);
+ ВерхнийРегистр = ВРег(Символ);
+ НижнийРегистр = НРег(Символ);
+ Если ВерхнийРегистр = НижнийРегистр Тогда
+ Маска = Маска + Символ;
+ Иначе
+ Маска = Маска + "[" + ВерхнийРегистр + НижнийРегистр + "]";
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ Результат = Новый Структура("Существует, Имя, ИмяБезРасширения, ПолноеИмя, Путь, Расширение", Ложь);
+ Варианты = НайтиФайлы(Каталог, Маска);
+ Если Варианты.Количество() > 0 Тогда
+ Результат.Существует = Истина;
+ ЗаполнитьЗначенияСвойств(Результат, Варианты[0]);
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+
+// Возвращает флаг того, что клиент работает под windows
+//
+// Возвращаемое значение:
+// Булево - Истина, если клиент работает windows
+//
+Функция ЭтоWindowsКлиент() Экспорт
+
+#Если Клиент Или ВнешнееСоединение Тогда
+ СистемнаяИнформация = Новый СистемнаяИнформация;
+ Результат = СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
+ Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64;
+
+#Иначе
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ ЭтоLinuxКлиент = СтандартныеПодсистемыСервер.ПараметрыКлиентаНаСервере().Получить("ЭтоLinuxКлиент");
+
+ Если ЭтоLinuxКлиент = Неопределено Тогда
+ // Нет клиентского приложения.
+ Возврат Ложь;
+ КонецЕсли;
+
+ Результат = Не ЭтоLinuxКлиент;
+#КонецЕсли
+
+ Возврат Результат;
+КонецФункции
+
+// Удаляет временный файл.
+// Если при попытке удаления возникает ошибка, она игнорируется - файл будет удален позднее
+//
+Процедура УдалитьВременныйФайл(Знач ПолноеИмяФайла) Экспорт
+
+ Попытка
+ УдалитьФайлы(ПолноеИмяФайла)
+ Исключение
+ // Дополнительная обработка не требуется
+ КонецПопытки
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/АдресныйКлассификаторСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификаторСлужебныйВМоделиСервиса/Module.bsl
index fffb9c8a9..1fdd0786f 100644
--- a/SSL/src/CommonModules/АдресныйКлассификаторСлужебныйВМоделиСервиса/Module.bsl
+++ b/SSL/src/CommonModules/АдресныйКлассификаторСлужебныйВМоделиСервиса/Module.bsl
@@ -107,18 +107,15 @@
Возврат Истина;
КонецЕсли;
- КлассификаторАдресныхОбъектовXML =
- РегистрыСведений.АдресныйКлассификатор.ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст();
-
- КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторАдресныхОбъектовXML).Данные;
ВерсииХранимыхСведений = АдресныйКлассификатор.ВерсииАдресныхОбъектов();
ТекущиеВерсии = Новый Соответствие;
Для Каждого ЭлементСписка Из ВерсииХранимыхСведений Цикл
ТекущиеВерсии.Вставить(ЭлементСписка.Представление, ЭлементСписка.Значение);
КонецЦикла;
+ КлассификаторТаблица = РегистрыСведений.АдресныйКлассификатор.КлассификаторСубъектовРФ();
Для Каждого АдресныйОбъект Из КлассификаторТаблица Цикл
- ТекущаяВерсия = ТекущиеВерсии[Лев(АдресныйОбъект.Code, 2)];
+ ТекущаяВерсия = ТекущиеВерсии[ Формат(АдресныйОбъект.КодСубъектаРФ, "ЧЦ=2; ЧН=; ЧВН=") ];
Если Не ЗначениеЗаполнено(ТекущаяВерсия) Или ТекущаяВерсия < ДатаНовыхДанных Тогда
Возврат Истина;
КонецЕсли;
@@ -145,38 +142,41 @@
ФайлВерсий = Новый Файл(ПутьККаталогуНаСервере + "versions.xml");
Если ФайлВерсий.Существует() Тогда
-
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ФайлВерсий.ПолноеИмя);
ТекстXML = ТекстовыйДокумент.ПолучитьТекст();
ДоступныеВерсии = АдресныйКлассификатор.ПолучитьВерсииАдресныхСведений(ТекстXML);
+
ИсточникДанныхДляЗагрузки = 1;
Иначе
- ВерсияЗагружаемогоКЛАДР =ДатаКЛАДРа(Дескриптор);
+ ВерсияЗагружаемогоКЛАДР = ДатаКЛАДРа(Дескриптор);
Если ВерсияЗагружаемогоКЛАДР = Неопределено Тогда
ФайлКЛАДР = Новый Файл(ПутьККаталогуНаСервере + "KLADR.DBF");
- ВерсияЗагружаемогоКЛАДР = НачалоДня(ФайлКЛАДР.ПолучитьВремяИзменения());
- КонецЕсли;
+ ВерсияЗагружаемогоКЛАДР = ФайлКЛАДР.ПолучитьУниверсальноеВремяИзменения();
+ КонецЕсли;
+ ИсточникДанныхДляЗагрузки = 0;
КонецЕсли;
- КлассификаторАдресныхОбъектовXML =
- РегистрыСведений.АдресныйКлассификатор.ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст();
-
- КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторАдресныхОбъектовXML).Данные;
+ КлассификаторТаблица = РегистрыСведений.АдресныйКлассификатор.КлассификаторСубъектовРФ();
АдресныеОбъекты = Новый Массив;
Для Каждого АдресныйОбъект Из КлассификаторТаблица Цикл
- АдресныеОбъекты.Добавить(Лев(АдресныйОбъект.Code, 2));
+ АдресныеОбъекты.Добавить( Формат(АдресныйОбъект.КодСубъектаРФ, "ЧЦ=2; ЧН=; ЧВН=") );
КонецЦикла;
АдресныеОбъекты.Добавить("SO");
- ПараметрыЗагрузки = Новый Структура("АдресныеОбъекты, ПутьКДаннымНаСервере, ВерсияЗагружаемогоКЛАДР, ИсточникДанныхДляЗагрузки, ДоступныеВерсии",
- АдресныеОбъекты, ПутьККаталогуНаСервере, ВерсияЗагружаемогоКЛАДР, ИсточникДанныхДляЗагрузки, ДоступныеВерсии);
+ ПараметрыЗагрузки = Новый Структура;
+ ПараметрыЗагрузки.Вставить("АдресныеОбъекты", АдресныеОбъекты);
+ ПараметрыЗагрузки.Вставить("ПутьКДаннымНаСервере", ПутьККаталогуНаСервере);
+ ПараметрыЗагрузки.Вставить("ВерсияЗагружаемогоКЛАДР", ВерсияЗагружаемогоКЛАДР);
+ ПараметрыЗагрузки.Вставить("ИсточникДанныхДляЗагрузки", ИсточникДанныхДляЗагрузки);
+ ПараметрыЗагрузки.Вставить("ДоступныеВерсии", ДоступныеВерсии);
АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено);
АдресныйКлассификатор.ЗагрузкаАдресныхСведенийИзФайловКЛАДРВРегистрСведений(ПараметрыЗагрузки, АдресХранилища);
+
СтруктураВозврата = ПолучитьИзВременногоХранилища(АдресХранилища);
Если Не СтруктураВозврата.СтатусВыполнения Тогда
ВызватьИсключение СтруктураВозврата.СообщениеПользователю;
diff --git a/SSL/src/CommonModules/АнализЖурналаРегистрацииСлужебный/Module.bsl b/SSL/src/CommonModules/АнализЖурналаРегистрацииСлужебный/Module.bsl
index ab23c4c31..e5275e1eb 100644
--- a/SSL/src/CommonModules/АнализЖурналаРегистрацииСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/АнализЖурналаРегистрацииСлужебный/Module.bsl
@@ -13,7 +13,7 @@
СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииПереименованийОбъектовМетаданных"].Добавить(
"АнализЖурналаРегистрацииСлужебный");
- Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
СерверныеОбработчики["СтандартныеПодсистемы.ВариантыОтчетов\ПриНастройкеВариантовОтчетов"].Добавить(
"АнализЖурналаРегистрацииСлужебный");
КонецЕсли;
@@ -52,33 +52,8 @@
// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
//
Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
-
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
-
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.АнализЖурналаРегистрации);
-
- МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, Отчет, Ложь);
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "КонтрольЖурналаРегистрации");
- Вариант.НастройкиДляПоиска.ИменаМакетов = "МакетОтчетаПоОшибкамВЖурналеРегистрации";
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПродолжительностьРаботыРегламентныхЗаданий");
- Вариант.НастройкиДляПоиска.ИменаМакетов = "ПродолжительностьРаботыРегламентныхЗаданий, РасшифровкаРегламентныхЗаданий";
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "АнализАктивностиПользователей");
- Вариант.Описание = НСтр("ru = 'Позволяет выполнять мониторинг активности пользователей
- |в программе (насколько интенсивно и с какими объектами работают пользователи).'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "АктивностьПользователя");
- Вариант.Описание = НСтр("ru = 'Подробная информация о том,
- |с какими объектами работал пользователь в программе.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "КонтрольЖурналаРегистрации");
- Вариант.Описание = НСтр("ru = 'Список критичных записей журнала регистрации.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПродолжительностьРаботыРегламентныхЗаданий");
- Вариант.Описание = НСтр("ru = 'Выводит график выполнения регламентных заданий в программе.'");
-
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.АнализЖурналаРегистрации);
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/CommonModules/Анкетирование/Module.bsl b/SSL/src/CommonModules/Анкетирование/Module.bsl
index d9033b91a..08bab5878 100644
--- a/SSL/src/CommonModules/Анкетирование/Module.bsl
+++ b/SSL/src/CommonModules/Анкетирование/Module.bsl
@@ -13,7 +13,7 @@
СерверныеОбработчики["СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПриДобавленииОбработчиковОбновления"].Добавить(
"Анкетирование");
- Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
СерверныеОбработчики["СтандартныеПодсистемы.ВариантыОтчетов\ПриНастройкеВариантовОтчетов"].Добавить(
"Анкетирование");
КонецЕсли;
@@ -48,61 +48,9 @@
// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
//
Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
-
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
-
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.АнализОпроса);
- МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, Отчет, Истина);
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "");
- Вариант.НастройкиДляПоиска.НаименованияПолей =
- НСтр("ru = 'Респондент
- |Опрос
- |Вопрос
- |Ответ'");
- Вариант.НастройкиДляПоиска.НаименованияПараметровИОтборов =
- НСтр("ru = 'Опрос
- |Вид отчета'");
- Вариант.Описание = НСтр("ru = 'Информация о респондентах заполнивших анкеты по опросу,
- |количестве ответов на вопросы, количестве данных вариантов ответов.'");
-
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.АналитическийОтчетПоАнкетированию);
- МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, Отчет, Ложь);
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПросмотрОтветовПростыеВопросы");
- Вариант.Описание = НСтр("ru = 'Информация о том, как отвечали респонденты на простые вопросы.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПросмотрТабличныхВопросовПлоскийВид");
- Вариант.Описание = НСтр("ru = 'Информация о том, как отвечали респонденты на табличные вопросы.
- |Выводится в виде списка с группировками.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПросмотрТабличныхВопросовТабличныйВид");
- Вариант.Описание = НСтр("ru = 'Информация о том, как отвечали респонденты на табличные вопросы.
- |Каждый ответ респондента представлен в виде таблицы.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПростыеВопросыКоличествоОтветов");
- Вариант.Описание = НСтр("ru = 'Информация о том, сколько раз был дан вариант ответа на простой вопрос.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПростыеВопросыАгрегируемыеПоказатели");
- Вариант.Описание = НСтр("ru = 'Информация о среднем, минимальном, максимальном ответе на простой вопрос,
- |который требует числового ответа.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ТабличныеВопросыКоличествоОтветов");
- Вариант.Описание = НСтр("ru = 'Информация о том, сколько раз был дан варианта ответа для табличных вопросов,
- |который требует указания числового значения.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ТабличныеВопросыАгрегируемыеПоказатели");
- Вариант.Описание = НСтр("ru = 'Информация о среднем, минимальном, максимальном ответе в ячейке табличного вопроса,
- |который требует указания числового значения.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ПростыеВопросыКоличествоОтветовСравнениеПоОпросам");
- Вариант.Описание = НСтр("ru = 'Сравнительный анализ количества данных вариантов ответов
- |на простые вопросы в разных опросах.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ТабличныеВопросыАгрегируемыеПоказателиСравнениеПоОпросам");
- Вариант.Описание = НСтр("ru = 'Сравнительный анализ агрегируемых показателей ответов в ячейках
- |табличных вопросов разных опросов.'");
-
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.АнализОпроса);
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.АналитическийОтчетПоАнкетированию);
КонецПроцедуры
//Инвертирует значение реквизита НеПоказыватьВАрхивеАнкет в соответствии с новым названием ПоказыватьВАрхивеАнкет
@@ -344,7 +292,7 @@
// ШаблонАнкеты - СправочникСсылка.ШаблоныАнкет - ссылка на шаблон анкеты, согласно которому будет заполнено дерево
// ЗаполнятьСтраницыПревью - Булево - признак, необходимо ли формировать таблицы превью табличных вопросов
//
-Процедура ЗаполнитьДеревоШаблонаАнкеты(Форма, ИмяДереваАнкеты, ШаблонАнкеты,ЗаполнятьСтраницыПревью = Истина) Экспорт
+Процедура ЗаполнитьДеревоШаблонаАнкеты(Форма, ИмяДереваАнкеты, ШаблонАнкеты) Экспорт
Если ШаблонАнкеты = Справочники.ШаблоныАнкет.ПустаяСсылка() Тогда
Возврат;
@@ -363,11 +311,6 @@
ДобавитьСтрокиДереваАнкеты(Выборка,ДеревоАнкетыСервер.Строки[0],1,Форма);
КонецЕсли;
- Если ЗаполнятьСтраницыПревью Тогда
- НайденныеСтроки = ДеревоАнкетыСервер.Строки.НайтиСтроки(Новый Структура("ТипВопроса",Перечисления.ТипыВопросовШаблонаАнкеты.Табличный),Истина);
- ДобавитьСтраницыПревью(НайденныеСтроки,Форма,ШаблонАнкеты);
- КонецЕсли;
-
Форма.ЗначениеВРеквизитФормы(ДеревоАнкетыСервер,ИмяДереваАнкеты);
КонецПроцедуры
@@ -401,6 +344,7 @@
НоваяСтрока.Обязательный = ?(Выборка.ЭтоРаздел,Неопределено,?(Выборка.ТипВопроса <> Перечисления.ТипыВопросовШаблонаАнкеты.Табличный,Выборка.Обязательный,Неопределено));
НоваяСтрока.Формулировка = ?(Выборка.ЭтоРаздел,Выборка.Наименование,Выборка.Формулировка);
НоваяСтрока.Заметки = Выборка.Заметки;
+ НоваяСтрока.ЕстьЗаметки = Не ПустаяСтрока(Выборка.Заметки);
Иначе
НоваяСтрока.Формулировка = Выборка.Формулировка;
НоваяСтрока.ЭлементарныйВопрос = Выборка.ЭлементарныйВопрос;
@@ -421,7 +365,6 @@
НоваяСтрока.ПояснениеКомментария = Выборка.ПояснениеКомментария;
НоваяСтрока.ТипЗначения = ?(Выборка.ТипЗначения = NULL,Неопределено,Выборка.ТипЗначения);
НоваяСтрока.Точность = Выборка.Точность;
- НоваяСтрока.ВысотаЭлементаФормулировкиВопроса = Выборка.ВысотаЭлементаФормулировкиВопроса;
ПодчиненнаяВыборка = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Если ПодчиненнаяВыборка.Количество() > 0 Тогда
@@ -471,7 +414,6 @@
| ЕСТЬNULL(ВопросыДляАнкетирования.ТипОтвета, ЗНАЧЕНИЕ(Перечисление.ТипыОтветовНаВопрос.ПустаяСсылка)) КАК ТипОтвета,
| ЕСТЬNULL(ВопросыШаблонаАнкеты.Формулировка, """") КАК Формулировка,
| ЕСТЬNULL(ВопросыДляАнкетирования.Точность, 0) КАК Точность,
- | ВопросыШаблонаАнкеты.ВысотаЭлементаФормулировкиВопроса КАК ВысотаЭлементаФормулировкиВопроса,
| ВопросыШаблонаАнкеты.Заметки
|ИЗ
| Справочник.ВопросыШаблонаАнкеты КАК ВопросыШаблонаАнкеты
@@ -490,186 +432,6 @@
КонецФункции
-// Добавляет страницы превью табличных вопросов
-//
-// Параметры
-// СтрокиДерева - СтрокиДереваЗначений - строки дерева значений подчиненные корню дерева
-// Форма - УправляемаяФорма - форма для которой добавляются превью табличного вопроса
-// ШаблонАнкеты - СправочникСсылка.ШаблоныАнкет - шаблон, на основании которого формируются превью
-//
-Процедура ДобавитьСтраницыПревью(СтрокиДерева,Форма,ШаблонАнкеты)
-
- ДобавляемыеРеквизиты = Новый Массив;
-
- УдаляемыеРеквизиты = Новый Массив;
- МассивРеквизитов = Форма.ПолучитьРеквизиты();
- Для каждого Реквизит Из МассивРеквизитов Цикл
- Если СтрЧислоВхождений(Реквизит.Имя,"ПревьюТабличногоВопроса") > 0 Тогда
- УдаляемыеРеквизиты.Добавить(Реквизит.Имя);
- КонецЕсли
- КонецЦикла;
-
- ПредставленияВопросов = ПолучитьПредставленияЭлементарныхВопросовТабличногоВопроса(ШаблонАнкеты);
- ДобавитьРеквизитыТаблицПревью(СтрокиДерева,Форма,ДобавляемыеРеквизиты,ПредставленияВопросов);
- Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты,УдаляемыеРеквизиты);
- ДобавитьЭлементыФормыТаблицПревью(СтрокиДерева,Форма,ДобавляемыеРеквизиты,ПредставленияВопросов);
-
-КонецПроцедуры
-
-// Добавляет реквизиты таблиц превью табличный вопросов
-//
-// Параметры
-// СтрокиДерева - СтрокиДереваЗначений - строки дерева значений подчиненные корню дерева
-// Форма - УправляемаяФорма - форма для которой добавляются превью табличного вопроса
-// ДобавляемыеРеквизиты - Массив - массив, в котором аккумулируются добавляемые реквизиты
-// ПредставленияВопросов - Соответствие - в нем хранятся представления элементарных вопросов
-//
-Процедура ДобавитьРеквизитыТаблицПревью(СтрокиДерева,Форма,ДобавляемыеРеквизиты,ПредставленияВопросов)
-
- ОписаниеТиповСтрока30 = Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(70));
- ОписаниеТиповСтрока300 = Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(300));
-
- Для каждого СтрокаДерева Из СтрокиДерева Цикл
-
- СтрокаКлюч = СтрЗаменить(Строка(СтрокаДерева.КлючСтроки),"-","_");
- ИмяТаблицы = "ПревьюТабличногоВопроса_" + СтрокаКлюч;
- ИмяКолонкиБезНомера = "ПревьюТаблицаКолонка_" + СтрокаКлюч + "_";
- ТипТабличногоВопроса = СтрокаДерева.ТипТабличногоВопроса;
-
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяТаблицы,Новый ОписаниеТипов("ТаблицаЗначений")));
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Формулировка_" + ИмяТаблицы,ОписаниеТиповСтрока300));
-
- Если ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.Составной Тогда
-
- Для инд = 1 По СтрокаДерева.СоставТабличногоВопроса.Количество() Цикл
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяКолонкиБезНомера + Строка(инд),ОписаниеТиповСтрока30,ИмяТаблицы,ПредставленияВопросов.Получить(СтрокаДерева.СоставТабличногоВопроса[инд-1].ЭлементарныйВопрос).Формулировка));
- КонецЦикла;
-
- ИначеЕсли ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках Тогда
-
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяКолонкиБезНомера + "1",СтрокаДерева.СоставТабличногоВопроса[0].ЭлементарныйВопрос.ТипЗначения,ИмяТаблицы,ПредставленияВопросов.Получить(СтрокаДерева.СоставТабличногоВопроса[0].ЭлементарныйВопрос).Формулировка));
-
- Для инд = 2 По СтрокаДерева.СоставТабличногоВопроса.Количество() Цикл
-
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяКолонкиБезНомера + Строка(инд),ОписаниеТиповСтрока30,ИмяТаблицы,ПредставленияВопросов.Получить(СтрокаДерева.СоставТабличногоВопроса[инд-1].ЭлементарныйВопрос).Формулировка));
-
- КонецЦикла;
-
- ИначеЕсли ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках Тогда
-
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяКолонкиБезНомера + "1",ОписаниеТиповСтрока300,ИмяТаблицы,ПредставленияВопросов.Получить(СтрокаДерева.СоставТабличногоВопроса[0].ЭлементарныйВопрос).Формулировка));
- Для инд = 1 По СтрокаДерева.ПредопределенныеОтветы.Количество() Цикл
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяКолонкиБезНомера + Строка(инд+1),ОписаниеТиповСтрока30,ИмяТаблицы,СтрокаДерева.ПредопределенныеОтветы[инд-1].Ответ));
- КонецЦикла;
-
- ИначеЕсли ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках Тогда
-
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяКолонкиБезНомера + "1",СтрокаДерева.СоставТабличногоВопроса[0].ЭлементарныйВопрос.ТипЗначения,ИмяТаблицы));
-
- ОтветыВКолонках = СтрокаДерева.ПредопределенныеОтветы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",СтрокаДерева.СоставТабличногоВопроса[1].ЭлементарныйВопрос));
- Для инд = 1 По ОтветыВКолонках.Количество() Цикл
- ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяКолонкиБезНомера + Строка(инд + 1),ОписаниеТиповСтрока30,ИмяТаблицы,ОтветыВКолонках[инд-1].Ответ));
- КонецЦикла;
-
- КонецЕсли;
-
- КонецЦикла;
-
-КонецПроцедуры
-
-// Добавляет элементы формы таблиц превью табличный вопросов
-//
-// Параметры
-// СтрокиДерева - СтрокиДереваЗначений - строки дерева значений подчиненные корню дерева
-// Форма - УправляемаяФорма - форма для которой добавляются превью табличного вопроса
-// ДобавляемыеРеквизиты - Массив - массив, в котором аккумулируются добавляемые реквизиты
-// ПредставленияВопросов - Соответствие - в нем хранятся представления элементарных вопросов
-//
-Процедура ДобавитьЭлементыФормыТаблицПревью(СтрокиДерева,Форма,ДобавляемыеРеквизиты,ПредставленияВопросов)
-
- Для каждого СтрокаДерева Из СтрокиДерева Цикл
-
- ТипТабличногоВопроса = СтрокаДерева.ТипТабличногоВопроса;
- СтрокаКлюч = СтрЗаменить(Строка(СтрокаДерева.КлючСтроки),"-","_");
- ИмяТаблицы = "ПревьюТабличногоВопроса_" + СтрокаКлюч;
- ИмяКолонкиБезНомера = "ПревьюТаблицаКолонка_" + СтрокаКлюч + "_";
-
- ЭлементСтраница = Форма.Элементы.Добавить("Страница_" + ИмяТаблицы,Тип("ГруппаФормы"),Форма.Элементы.СтраницыИнформация);
- ЭлементСтраница.Вид = ВидГруппыФормы.Страница;
- ЭлементСтраница.ОтображатьЗаголовок = Ложь;
- ЭлементСтраница.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
-
- Элемент = Форма.Элементы.Добавить("Формулировка_" + ИмяТаблицы,Тип("ПолеФормы"),ЭлементСтраница);
- Элемент.ПутьКДанным = "Формулировка_" + ИмяТаблицы;
- Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- Элемент.Высота = 2;
- Элемент.Шрифт = Новый Шрифт("MS Shell Dlg",10,Истина);
-
- Форма["Формулировка_" + ИмяТаблицы] = СтрокаДерева.ПолныйКод + " " + СтрокаДерева.Формулировка;
-
- Элемент = Форма.Элементы.Добавить(ИмяТаблицы,Тип("ТаблицаФормы"),ЭлементСтраница);
- Элемент.ТолькоПросмотр = Истина;
- Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- Элемент.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
- Элемент.ПутьКДанным = ИмяТаблицы;
-
- ТаблицаСервер = Форма.РеквизитФормыВЗначение(ИмяТаблицы);
-
- Если ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках Тогда
-
- Для инд = 1 По СтрокаДерева.ПредопределенныеОтветы.Количество() Цикл
-
- НоваяСтрока = ТаблицаСервер.Добавить();
- НоваяСтрока[0] = СтрокаДерева.ПредопределенныеОтветы[инд - 1].Ответ;
-
- КонецЦикла;
-
- ИначеЕсли ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПредопределенныеОтветыВКолонках Тогда
-
- Для инд = 2 По СтрокаДерева.СоставТабличногоВопроса.Количество() Цикл
-
- НоваяСтрока = ТаблицаСервер.Добавить();
- НоваяСтрока[0] = ПредставленияВопросов.Получить(СтрокаДерева.СоставТабличногоВопроса[инд-1].ЭлементарныйВопрос).Формулировка;
-
- КонецЦикла;
-
- ИначеЕсли ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтрокахИКолонках Тогда
-
- ОтветыВСтроках = СтрокаДерева.ПредопределенныеОтветы.НайтиСтроки(Новый Структура("ЭлементарныйВопрос",СтрокаДерева.СоставТабличногоВопроса[0].ЭлементарныйВопрос));
- Для инд = 1 По ОтветыВСтроках.Количество() Цикл
-
- НоваяСтрока = ТаблицаСервер.Добавить();
- НоваяСтрока[0] = ОтветыВСтроках[инд - 1].Ответ;
-
- КонецЦикла;
-
- КонецЕсли;
-
- Для инд = 1 По ТаблицаСервер.Колонки.Количество() Цикл
-
- Элемент = Форма.Элементы.Добавить(ИмяКолонкиБезНомера + Строка(инд),Тип("ПолеФормы"), Форма.Элементы[ИмяТаблицы]);
- Если ТаблицаСервер.Колонки[инд-1].ТипЗначения = Новый ОписаниеТипов("Булево") Тогда
- Элемент.Вид = ВидПоляФормы.ПолеФлажка;
- Иначе
- Элемент.Вид = ВидПоляФормы.ПолеВвода;
- КонецЕсли;
-
- Элемент.ПутьКДанным = ИмяТаблицы + "." + ИмяКолонкиБезНомера + Строка(инд);
- Если (ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.Составной
- ИЛИ ТипТабличногоВопроса = Перечисления.ТипыТабличныхВопросов.ПредопределенныеОтветыВСтроках) ИЛИ (инд > 1) Тогда
- Элемент.Заголовок = ТаблицаСервер.Колонки[инд -1].Заголовок;
- Иначе
- Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- КонецЕсли;
-
- КонецЦикла;
-
- Форма.ЗначениеВРеквизитФормы(ТаблицаСервер,ИмяТаблицы);
-
- КонецЦикла;
-
-КонецПроцедуры
-
////////////////////////////////////////////////////////////////////////////////
// Формирование формы заполнения анкеты
@@ -687,8 +449,13 @@
Если ТекущиеДанныеДеревоРазделов.ТипСтроки = "Раздел" Тогда
Форма.Элементы.НадписьВступление.Заголовок = НСтр("ru = 'Раздел'") + " " + ТекущиеДанныеДеревоРазделов.Формулировка;
- Форма.Элементы.НадписьВступление.ЦветТекста = WebЦвета.НейтральноКоричневый;
- Форма.Элементы.НадписьВступление.Шрифт = Новый Шрифт(, 8, Истина, , , );
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ Форма.Элементы.НадписьВступление.ЦветТекста = WebЦвета.НейтральноКоричневый;
+ Форма.Элементы.НадписьВступление.Шрифт = Новый Шрифт(, 8, Истина, , , );
+ Иначе
+ Форма.Элементы.НадписьВступление.ЦветТекста = Новый Цвет(0, 150, 70);
+ Форма.Элементы.НадписьВступление.Шрифт = Новый Шрифт(, 12, Ложь, , , );
+ КонецЕсли;
Раздел = ТекущиеДанныеДеревоРазделов.Ссылка;
ПолныйКодРаздела = ТекущиеДанныеДеревоРазделов.ПолныйКод;
@@ -700,7 +467,10 @@
Иначе
- Форма.Элементы.НадписьВступление.Заголовок = ?(ТекущиеДанныеДеревоРазделов.ТипСтроки = "Вступление",Форма.Вступление,Форма.Заключение);
+ Вступление = ?(ПустаяСтрока(Форма.Вступление), НСтр("ru = 'Нажмите далее для заполнения анкеты.'"), Форма.Вступление);
+ Заключение = ?(ПустаяСтрока(Форма.Заключение), НСтр("ru = 'Спасибо за то что заполнили анкету.'"), Форма.Заключение);
+
+ Форма.Элементы.НадписьВступление.Заголовок = ?(ТекущиеДанныеДеревоРазделов.ТипСтроки = "Вступление", Вступление, Заключение);
Форма.Элементы.НадписьВступление.ЦветТекста = ЦветаСтиля.ЦветТекстаПоля;
Форма.Элементы.НадписьВступление.Шрифт = Новый Шрифт(, 8, Ложь, , , );
@@ -1014,10 +784,9 @@
ЭлементГруппаВопроса = Форма.Элементы.Добавить(ИмяВопроса + "_Группа" ,Тип("ГруппаФормы"),ЭлементГруппа);
ЭлементГруппаВопроса.Вид = ВидГруппыФормы.ОбычнаяГруппа ;
ЭлементГруппаВопроса.ОтображатьЗаголовок = Ложь;
- ЭлементГруппаВопроса.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
- ЭлементГруппаВопроса.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
- ЭлементГруппаВопроса.ШиринаПодчиненныхЭлементов = ШиринаПодчиненныхЭлементовФормы.ЛевыйОченьУзкий;
- ЭлементГруппаВопроса.РастягиватьПоГоризонтали = Истина;
+ ЭлементГруппаВопроса.Отображение = ОтображениеОбычнойГруппы.Нет;
+ ЭлементГруппаВопроса.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ ЭлементГруппаВопроса.РастягиватьПоГоризонтали = ?(СтрокаТаблицы.ТипВопроса = Перечисления.ТипыВопросовШаблонаАнкеты.Табличный, Истина, Ложь);
ЭлементГруппаВопроса.РастягиватьПоВертикали = Ложь;
Форма[ИмяВопроса + "_Формулировка"] = ПолныйКодНаименование(СтрокаТаблицы);
@@ -1026,11 +795,7 @@
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элемент.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Верх;
Элемент.ПутьКДанным = ИмяВопроса + "_Формулировка";
- Если СтрокаТаблицы.ВысотаЭлементаФормулировкиВопроса = 0 Тогда
- Элемент.АвтоВысотаЯчейки = Истина;
- Иначе
- Элемент.Высота = СтрокаТаблицы.ВысотаЭлементаФормулировкиВопроса;
- КонецЕсли;
+
Элемент.РастягиватьПоВертикали = Истина;
ЭлементГруппаВопросКомментарий = Форма.Элементы.Добавить(ИмяВопроса + "_Группа_Вопрос_Комментарий",Тип("ГруппаФормы"),ЭлементГруппаВопроса);
@@ -1055,15 +820,12 @@
ИначеЕсли СтрокаТаблицы.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.Текст Тогда
- Элемент = Форма.Элементы.Добавить(ИмяВопроса,Тип("ПолеФормы"),ЭлементГруппаВопросКомментарий);
+ Элемент = Форма.Элементы.Добавить(ИмяВопроса,Тип("ПолеФормы"),ЭлементГруппаВопросКомментарий);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элемент.АвтоОтметкаНезаполненного = СтрокаТаблицы.Обязательный;
Элемент.ПутьКДанным = ИмяВопроса;
Элемент.РастягиватьПоВертикали = Ложь;
- Если СтрокаТаблицы.ВысотаЭлементаФормулировкиВопроса > 2 Тогда
- Элемент.Высота = СтрокаТаблицы.ВысотаЭлементаФормулировкиВопроса;
- КонецЕсли;
УстановитьПараметрыЭлементаЯчейкаТекст(Элемент);
ИначеЕсли СтрокаТаблицы.ТипОтвета = Перечисления.ТипыОтветовНаВопрос.Булево Тогда
@@ -1213,9 +975,10 @@
ЭлементТаблица.ИзменятьСоставСтрок = Ложь;
ЭлементТаблица.ИзменятьПорядокСтрок = Ложь;
КонецЕсли;
- ЭлементТаблица.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
- ЭлементТаблица.ПутьКДанным = ИмяТаблицы;
- ЭлементТаблица.РастягиватьПоВертикали = Ложь;
+ ЭлементТаблица.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
+ ЭлементТаблица.ПутьКДанным = ИмяТаблицы;
+ ЭлементТаблица.РастягиватьПоГоризонтали = Истина;
+ ЭлементТаблица.РастягиватьПоВертикали = Ложь;
//Добавление колонок в элемент формы таблица.
ТаблицаВопроса = Форма.РеквизитФормыВЗначение(ИмяТаблицы);
@@ -1633,8 +1396,7 @@
| ЕСТЬNULL(ВопросыДляАнкетирования.МаксимальноеЗначение, 0) КАК МаксимальноеЗначение,
| ЕСТЬNULL(ВопросыДляАнкетирования.ТипОтвета, ЗНАЧЕНИЕ(Перечисление.ТипыОтветовНаВопрос.ПустаяСсылка)) КАК ТипОтвета,
| ЕСТЬNULL(ВопросыШаблонаАнкеты.Формулировка, """") КАК Формулировка,
- | ЕСТЬNULL(ВопросыДляАнкетирования.Точность, 0) КАК Точность,
- | ВопросыШаблонаАнкеты.ВысотаЭлементаФормулировкиВопроса КАК ВысотаЭлементаФормулировкиВопроса
+ | ЕСТЬNULL(ВопросыДляАнкетирования.Точность, 0) КАК Точность
|ИЗ
| Справочник.ВопросыШаблонаАнкеты КАК ВопросыШаблонаАнкеты
| ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ВопросыДляАнкетирования КАК ВопросыДляАнкетирования
diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl
index 2190c6ccb..9010f4794 100644
--- a/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиВызовСервера/Module.bsl
@@ -65,7 +65,10 @@
БизнесПроцессыИЗадачиСервер.ЗаблокироватьЗадачи(ЗадачаСсылка);
ЗадачаОбъект = ЗадачаСсылка.ПолучитьОбъект();
- ЗадачаОбъект.Прочитать();
+ Если ЗадачаОбъект.Выполнена Тогда
+ ВызватьИсключение НСтр("ru = 'Задача уже была выполнена ранее.'");
+ КонецЕсли;
+
Если ДействиеПоУмолчанию И ЗадачаОбъект.БизнесПроцесс <> Неопределено
И НЕ ЗадачаОбъект.БизнесПроцесс.Пустая() Тогда
ТипБизнесПроцесса = ЗадачаОбъект.БизнесПроцесс.Метаданные();
@@ -104,10 +107,11 @@
МассивПеренаправленныхЗадач = Неопределено) Экспорт
Результат = Истина;
- Для Каждого Задача Из МассивЗадач Цикл
+
+ СведенияОЗадачах = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивЗадач, "БизнесПроцесс,Выполнена");
+ Для Каждого Задача Из СведенияОЗадачах Цикл
- ЗадачаВыполнена = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Задача, "Выполнена");
- Если ЗадачаВыполнена Тогда
+ Если Задача.Значение.Выполнена Тогда
Результат = Ложь;
Если ТолькоПроверка Тогда
Прервать;
@@ -124,11 +128,14 @@
НачатьТранзакцию();
Попытка
- БизнесПроцессыИЗадачиСервер.ЗаблокироватьЗадачи(Задача);
+ БизнесПроцессыИЗадачиСервер.ЗаблокироватьЗадачи(Задача.Ключ);
+ Если Не Задача.Значение.БизнесПроцесс.Пустая() Тогда
+ БизнесПроцессыИЗадачиСервер.ЗаблокироватьБизнесПроцессы(Задача.Значение.БизнесПроцесс);
+ КонецЕсли;
// Не устанавливаем объектную блокировку на задачу Задача для того, чтобы
// позволить выполнять перенаправление по команде из формы этой задачи.
- ЗадачаОбъект = Задача.ПолучитьОбъект();
+ ЗадачаОбъект = Задача.Ключ.ПолучитьОбъект();
УстановитьПривилегированныйРежим(Истина);
НоваяЗадача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
@@ -143,7 +150,23 @@
ЗадачаОбъект.РезультатВыполнения = ИнфоОПеренаправлении.Комментарий;
ЗадачаОбъект.Выполнена = Ложь;
ЗадачаОбъект.ВыполнитьЗадачу();
-
+
+ УстановитьПривилегированныйРежим(Истина);
+ ПодчиненныеБизнесПроцессы = БизнесПроцессыИЗадачиСервер.ВыбратьБизнесПроцессыВедущейЗадачи(Задача.Ключ, Истина).Выбрать();
+ УстановитьПривилегированныйРежим(Ложь);
+ Пока ПодчиненныеБизнесПроцессы.Следующий() Цикл
+ БизнесПроцессОбъект = ПодчиненныеБизнесПроцессы.Ссылка.ПолучитьОбъект();
+ БизнесПроцессОбъект.ВедущаяЗадача = НоваяЗадача.Ссылка;
+ БизнесПроцессОбъект.Записать();
+ КонецЦикла;
+
+ ПодчиненныеБизнесПроцессы = БизнесПроцессыИЗадачиСервер.БизнесПроцессыГлавнойЗадачи(Задача.Ключ, Истина);
+ Для каждого ПодчиненныйБизнесПроцесс Из ПодчиненныеБизнесПроцессы Цикл
+ БизнесПроцессОбъект = ПодчиненныйБизнесПроцесс.ПолучитьОбъект();
+ БизнесПроцессОбъект.ГлавнаяЗадача = НоваяЗадача.Ссылка;
+ БизнесПроцессОбъект.Записать();
+ КонецЦикла;
+
ПриПеренаправленииЗадачи(ЗадачаОбъект, НоваяЗадача);
ЗафиксироватьТранзакцию();
@@ -283,10 +306,16 @@
БизнесПроцессыИЗадачиСервер.ЗаблокироватьЗадачи(Задачи);
Для каждого Задача Из Задачи Цикл
+
Если ТипЗнч(Задача) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Продолжить;
КонецЕсли;
+
ЗадачаОбъект = Задача.ПолучитьОбъект();
+ Если ЗадачаОбъект.Выполнена Тогда
+ Продолжить;
+ КонецЕсли;
+
ЗадачаОбъект.Заблокировать();
ЗадачаОбъект.ПринятаКИсполнению = Истина;
ЗадачаОбъект.ДатаПринятияКИсполнению = ТекущаяДатаСеанса();
@@ -296,6 +325,7 @@
ЗадачаОбъект.Записать();
НовыйМассивЗадач.Добавить(Задача);
+
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
@@ -324,6 +354,10 @@
КонецЕсли;
ЗадачаОбъект = Задача.ПолучитьОбъект();
+ Если ЗадачаОбъект.Выполнена Тогда
+ Продолжить;
+ КонецЕсли;
+
ЗадачаОбъект.Заблокировать();
ЗадачаОбъект.ПринятаКИсполнению = Ложь;
ЗадачаОбъект.ДатаПринятияКИсполнению = "00010101000000";
@@ -333,6 +367,7 @@
ЗадачаОбъект.Записать();
НовыйМассивЗадач.Добавить(Задача);
+
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
@@ -1012,7 +1047,7 @@
Процедура ПриПеренаправленииЗадачи(ЗадачаОбъект, НоваяЗадачаОбъект)
- Если ЗадачаОбъект.БизнесПроцесс = Неопределено ИЛИ ЗадачаОбъект.БизнесПроцесс.Пустая() Тогда
+ Если ЗадачаОбъект.БизнесПроцесс.Пустая() Тогда
Возврат;
КонецЕсли;
diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиент/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиент/Module.bsl
index d51868906..7dd63b987 100644
--- a/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиент/Module.bsl
+++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиент/Module.bsl
@@ -457,6 +457,30 @@
#Область СлужебныеПроцедурыИФункции
+Процедура ОткрытьБизнесПроцесс(Список) Экспорт
+ Если ТипЗнч(Список.ТекущаяСтрока) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"));
+ Возврат;
+ КонецЕсли;
+ Если Список.ТекущиеДанные.БизнесПроцесс = Неопределено Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'У выбранной задачи не указан бизнес-процесс.'"));
+ Возврат;
+ КонецЕсли;
+ ПоказатьЗначение(, Список.ТекущиеДанные.БизнесПроцесс);
+КонецПроцедуры
+
+Процедура ОткрытьПредметЗадачи(Список) Экспорт
+ Если ТипЗнч(Список.ТекущаяСтрока) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"));
+ Возврат;
+ КонецЕсли;
+ Если Список.ТекущиеДанные.Предмет = Неопределено Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'У выбранной задачи не указан предмет.'"));
+ Возврат;
+ КонецЕсли;
+ ПоказатьЗначение(, Список.ТекущиеДанные.Предмет);
+КонецПроцедуры
+
// Стандартный обработчик ПометкаУдаления для списков бизнес-процессов.
// Для вызова из обработчика события списка ПометкаУдаления.
//
@@ -489,9 +513,17 @@
//
Процедура ВыбратьИсполнителя(ЭлементИсполнитель, РеквизитИсполнитель, ТолькоПростыеРоли = Ложь, БезВнешнихРолей = Ложь) Экспорт
+ СтандартнаяОбработка = Истина;
+ БизнесПроцессыИЗадачиКлиентПереопределяемый.ПриВыбореИсполнителя(ЭлементИсполнитель, РеквизитИсполнитель,
+ ТолькоПростыеРоли, БезВнешнихРолей, СтандартнаяОбработка);
+ Если Не СтандартнаяОбработка Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Для обратной совместимости.
Отказ = БизнесПроцессыИЗадачиКлиентПереопределяемый.ВыбратьИсполнителя(ЭлементИсполнитель, РеквизитИсполнитель,
ТолькоПростыеРоли, БезВнешнихРолей);
- Если Отказ Тогда
+ Если Отказ = Истина Тогда
Возврат;
КонецЕсли;
diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентПереопределяемый/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентПереопределяемый/Module.bsl
index 9bfc5ee5e..0c3930758 100644
--- a/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентПереопределяемый/Module.bsl
@@ -5,6 +5,38 @@
#Область ПрограммныйИнтерфейс
+// Вызывается при открытии формы выбора исполнителя.
+// Позволяет переопределить стандартную форму выбора.
+//
+// Параметры:
+// ЭлементИсполнитель - ЭлементФормы - элемент формы, в которой выполняется выбора исполнителя,
+// который будет указан как владелец формы выбора исполнителя
+// РеквизитИсполнитель - СправочникСсылка.Пользователи - выбранное ранее значение исполнителя.
+// Используется для установки текущей строки в форме выбора исполнителя
+// ТолькоПростыеРоли - Булево, если Истина, то указывает что для выбора нужно
+// использовать только роли без объектов адресации
+// БезВнешнихРолей - Булево, если Истина, то указывает, что для выбора надо
+// использовать только роли, у которых не установлен признак ВнешняяРоль
+// СтандартнаяОбработка - Булево - если установить в Ложь, то не требуется выводить стандартную форму выбора исполнителя.
+//
+Процедура ПриВыбореИсполнителя(ЭлементИсполнитель, РеквизитИсполнитель, ТолькоПростыеРоли, БезВнешнихРолей,
+ СтандартнаяОбработка) Экспорт
+
+КонецПроцедуры
+
+// Заполняет список узлов планов обмена - доступных информационных баз,
+// в которых могут быть определены внешние роли.
+//
+// Параметры:
+// ПланыОбменаДляВыбора - Массив - список узлов планов обмена.
+// Если оставить незаполненным, то будут доступны все узлы всех планов обменов,
+// предусмотренных в конфигурации.
+//
+Процедура ЗаполнитьМассивПлановОбмена(ПланыОбменаДляВыбора) Экспорт
+
+КонецПроцедуры
+
+// Устарела. Следует использовать ПриВыбореИсполнителя.
// Открывает форму выбора исполнителя.
//
// Параметры:
@@ -26,16 +58,4 @@
КонецФункции
-// Заполняет список узлов планов обмена - доступных информационных баз,
-// в которых могут быть определены внешние роли.
-//
-// Параметры:
-// ПланыОбменаДляВыбора - Массив - список узлов планов обмена.
-// Если оставить незаполненным, то будут доступны все узлы всех планов обменов,
-// предусмотренных в конфигурации.
-//
-Процедура ЗаполнитьМассивПлановОбмена(ПланыОбменаДляВыбора) Экспорт
-
-КонецПроцедуры
-
#КонецОбласти
diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентСервер/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентСервер/Module.bsl
new file mode 100644
index 000000000..6b6566693
--- /dev/null
+++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентСервер/Module.bsl
@@ -0,0 +1,36 @@
+
+////////////////////////////////////////////////////////////////////////////////
+// Подсистема "Бизнес-процессы и задачи"
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#Область ПрограммныйИнтерфейс
+
+////////////////////////////////////////////////////////////////////////////////
+// Обработчики подписок на события
+
+Процедура ОбработкаПолученияПолейПредставленияБизнесПроцесса(МенеджерОбъекта, Поля, СтандартнаяОбработка) Экспорт
+
+ Поля.Добавить("Наименование");
+ Поля.Добавить("Дата");
+ СтандартнаяОбработка = Ложь;
+
+КонецПроцедуры
+
+Процедура ОбработкаПолученияПредставленияБизнесПроцесса(МенеджерОбъекта, Данные, Представление, СтандартнаяОбработка) Экспорт
+
+ Наименование = ?(ПустаяСтрока(Данные.Наименование), НСтр("ru = 'Без описания'"), Данные.Наименование);
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Или ВнешнееСоединение Тогда
+ Дата = Формат(Данные.Дата, ?(ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"), "ДЛФ=DT", "ДЛФ=D"));
+ Представление = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)).Представление();
+#Иначе
+ Дата = Формат(Данные.Дата, "ДЛФ=D");
+ Представление = НСтр("ru = 'Бизнес-процесс'");
+#КонецЕсли
+ ШаблонПредставления = НСтр("ru = '%1 от %2 (%3)'");
+ Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПредставления, Наименование, Дата, Представление);
+ СтандартнаяОбработка = Ложь;
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентСервер/БизнесПроцессыИЗадачиКлиентСервер.mdo b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентСервер/БизнесПроцессыИЗадачиКлиентСервер.mdo
new file mode 100644
index 000000000..93e7d3d6b
--- /dev/null
+++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиКлиентСервер/БизнесПроцессыИЗадачиКлиентСервер.mdo
@@ -0,0 +1,12 @@
+
+
+ БизнесПроцессыИЗадачиКлиентСервер
+
+ ru
+ Бизнес процессы и задачи клиент сервер
+
+ true
+ true
+ true
+ true
+
diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиПереопределяемый/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиПереопределяемый/Module.bsl
index 41a3e0d50..99a867bb1 100644
--- a/SSL/src/CommonModules/БизнесПроцессыИЗадачиПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиПереопределяемый/Module.bsl
@@ -16,6 +16,52 @@
КонецПроцедуры
// Вызывается для проверки прав на остановку и продолжение бизнес-процесса
+// у текущего пользователя.
+//
+// Параметры:
+// БизнесПроцесс - БизнесПроцессСсылка - ссылка на бизнес-процесс.
+// ЕстьПрава - Булево - если установить Ложь, то прав нет.
+// СтандартнаяОбработка - Булево - если установить Ложь, то стандартная проверка прав не будет выполнена.
+//
+Процедура ПриПроверкеПравНаОстановкуБизнесПроцесса(БизнесПроцесс, ЕстьПрава, СтандартнаяОбработка) Экспорт
+
+КонецПроцедуры
+
+// Вызывается для заполнения реквизита ГлавнаяЗадача из данных заполнения.
+//
+// Параметры
+// БизнесПроцессОбъект - БизнесПроцессОбъект - бизнес-процесс.
+// ДанныеЗаполнения - Произвольный - данные заполнения, которые передаются в обработчик заполнения.
+// СтандартнаяОбработка - Булево - если установить Ложь, то стандартная обработка заполнения не будет выполнена.
+//
+Процедура ПриЗаполненииГлавнойЗадачиБизнесПроцесса(БизнесПроцессОбъект, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт
+
+КонецПроцедуры
+
+// Вызывается для заполнения параметров формы внешней задачи.
+//
+// Параметры:
+// ИмяБизнесПроцесса - Строка - название бизнес-процесса
+// ЗадачаСсылка - ЗадачаСсылка.ЗадачаИсполнителя - задача.
+// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание - действие.
+// ПараметрыФормы - Структура - описание выполнения задачи со свойствами:
+// * ИмяФормы - имя формы, передаваемое в метод ОткрытьФорму.
+// * ПараметрыФормы - содержит параметры открываемой формы.
+//
+// Пример заполнения:
+// Если ИмяБизнесПроцесса = "Задание" Тогда
+// ИмяФормы = "БизнесПроцесс.Задание.Форма.ВнешнееДействие" + ТочкаМаршрутаБизнесПроцесса.Имя;
+// ПараметрыФормы.Вставить("ИмяФормы", ИмяФормы);
+// КонецЕсли;
+//
+Процедура ПриПолученииФормыВыполненияЗадачи(ИмяБизнесПроцесса, ЗадачаСсылка,
+ ТочкаМаршрутаБизнесПроцесса, ПараметрыФормы) Экспорт
+
+КонецПроцедуры
+
+// Устарела. Следует использовать ПриПроверкеПравНаОстановкуБизнесПроцесса.
+// Вызывается для проверки прав на остановку и продолжение бизнес-процесса.
+//
// Параметры
// БизнесПроцесс - Ссылка на бизнес-процесс
//
@@ -25,8 +71,10 @@
КонецФункции
-// Вызывается для заполнения реквизита ГлавнаяЗадача из данных заполнения
+// Устарела. Следует использовать ПриЗаполненииГлавнойЗадачиБизнесПроцесса.
+// Вызывается для заполнения реквизита ГлавнаяЗадача из данных заполнения.
// Параметры
+//
// БизнесПроцессОбъект - бизнес-процесс
// ДанныеЗаполнения - данные заполнения, которые передаются в обработчик заполнения
//
@@ -36,25 +84,4 @@
КонецФункции
-// Вызывается для заполнения параметров формы внешней задачи
-//
-// Параметры:
-// ИмяБизнесПроцесса - Строка - название бизнес-процесса
-// ЗадачаСсылка - ЗадачаСсылка.ЗадачаИсполнителя - задача.
-// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание - действие.
-// ПараметрыФормы - Структура - описание выполнения задачи.
-// Ключ "ИмяФормы" содержит имя формы, передаваемое в метод контекста ОткрытьФорму().
-// Ключ "ПараметрыФормы" содержит параметры формы.
-//
-// Пример заполнения:
-// Если ИмяБизнесПроцесса = "Задание" Тогда
-// ИмяФормы = "БизнесПроцесс.Задание.Форма.ВнешнееДействие" + ТочкаМаршрутаБизнесПроцесса.Имя;
-// ПараметрыФормы.Вставить("ИмяФормы", ИмяФормы);
-// КонецЕсли;
-//
-Процедура ПриПолученииФормыВыполненияЗадачи(ИмяБизнесПроцесса, ЗадачаСсылка,
- ТочкаМаршрутаБизнесПроцесса, ПараметрыФормы) Экспорт
-
-КонецПроцедуры
-
#КонецОбласти
diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl
index d47cf035b..ddc187131 100644
--- a/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl
+++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl
@@ -72,8 +72,8 @@
// Вызывается при создании формы списка задач на сервере.
//
-// Параметры
-// УсловноеОформлениеСпискаЗадач - УсловноеОформление - условное оформление списка задач
+// Параметры:
+// УсловноеОформлениеСпискаЗадач - УсловноеОформление - условное оформление списка задач.
//
Процедура УстановитьОформлениеЗадач(Знач СписокЗадачИлиЕгоУсловноеОформление) Экспорт
@@ -131,7 +131,7 @@
ЭлементОтбораДанных.ПравоеЗначение = Истина;
ЭлементОтбораДанных.Использование = Истина;
- ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor");
+ ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("ЦветТекста");
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ВыполненнаяЗадача.Значение;
ЭлементЦветаОформления.Использование = Истина;
@@ -145,10 +145,67 @@
ЭлементОтбораДанных.ПравоеЗначение = Ложь;
ЭлементОтбораДанных.Использование = Истина;
- ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Font");
+ ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Шрифт");
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.НеПринятыеКИсполнениюЗадачи.Значение;
ЭлементЦветаОформления.Использование = Истина;
+ // установка оформления для незаполненного поля "Срок"
+ ЭлементУсловногоОформления = УсловноеОформлениеСпискаЗадач.Элементы.Добавить();
+ ЭлементУсловногоОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
+
+ ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("СрокИсполнения");
+ ОформляемоеПоле.Использование = Истина;
+
+ ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СрокИсполнения");
+ ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
+ ЭлементОтбораДанных.ПравоеЗначение = Истина;
+ ЭлементОтбораДанных.Использование = Истина;
+
+ ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("ЦветТекста");
+ ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение;
+ ЭлементЦветаОформления.Использование = Истина;
+
+ ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("Текст");
+ ЭлементЦветаОформления.Значение = НСтр("ru = 'Срок не указан'");
+ ЭлементЦветаОформления.Использование = Истина;
+
+КонецПроцедуры
+
+// Вызывается при создании формы списка бизнес-процессов на сервере.
+//
+// Параметры:
+// УсловноеОформлениеБизнесПроцессов - УсловноеОформление - условное оформление списка бизнес-процессов.
+//
+Процедура УстановитьОформлениеБизнесПроцессов(Знач УсловноеОформлениеБизнесПроцессов) Экспорт
+
+ // Наименование не задано
+ ЭлементУсловногоОформления = УсловноеОформлениеБизнесПроцессов.Элементы.Добавить();
+ ЭлементУсловногоОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
+
+ ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Наименование");
+ ОформляемоеПоле.Использование = Истина;
+
+ ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
+ ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
+
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НедоступныеДанныеЦвет);
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Без описания'"));
+
+ // Завершенный бизнес-процесс
+ ЭлементУсловногоОформления = УсловноеОформлениеБизнесПроцессов.Элементы.Добавить();
+ ЭлементУсловногоОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
+
+ ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Завершен");
+ ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ ЭлементОтбораДанных.ПравоеЗначение = Истина;
+
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗавершенныйБизнесПроцесс);
+
КонецПроцедуры
// Возвращает строковое представление исполнителя задачи Исполнитель,
@@ -565,6 +622,11 @@
"БизнесПроцессыИЗадачиСервер");
КонецЕсли;
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "БизнесПроцессыИЗадачиСервер");
+ КонецЕсли;
+
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -845,13 +907,95 @@
// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
//
Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.БизнесПроцессы);
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ЗависшиеЗадачи);
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.Задания);
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.Задачи);
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ЗадачиИстекающиеНаДату);
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ПросроченныеЗадачи);
+КонецПроцедуры
+
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
- Отчеты.БизнесПроцессы.НастроитьВариантыОтчета(Настройки);
- Отчеты.ЗависшиеЗадачи.НастроитьВариантыОтчета(Настройки);
- Отчеты.Задания.НастроитьВариантыОтчета(Настройки);
- Отчеты.Задачи.НастроитьВариантыОтчета(Настройки);
- Отчеты.ЗадачиИстекающиеНаДату.НастроитьВариантыОтчета(Настройки);
- Отчеты.ПросроченныеЗадачи.НастроитьВариантыОтчета(Настройки);
+ Если Не ПравоДоступа("Редактирование", Метаданные.Задачи.ЗадачаИсполнителя) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Не ПолучитьФункциональнуюОпцию("ИспользоватьБизнесПроцессыИЗадачи") Тогда
+ Возврат;
+ КонецЕсли;
+
+ КоличествоЗадачИсполнителя = КоличествоЗадачИсполнителя();
+
+ // Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь
+ // не делается проверка существования подсистемы.
+ МодульТекущиеДелаСлужебныйПовтИсп = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСлужебныйПовтИсп");
+
+ ПринадлежностьОбъектов = МодульТекущиеДелаСлужебныйПовтИсп.ПринадлежностьОбъектовРазделамКомандногоИнтерфейса();
+ Разделы = ПринадлежностьОбъектов[Метаданные.Задачи.ЗадачаИсполнителя.ПолноеИмя()];
+
+ Если Разделы = Неопределено Тогда
+ Возврат; // Задачи не вынесены в командный интерфейс пользователя.
+ КонецЕсли;
+
+ Для Каждого Раздел Из Разделы Цикл
+
+ ИдентификаторМоихЗадач = "ЗадачиИсполнителя" + СтрЗаменить(Раздел.ПолноеИмя(), ".", "");
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = ИдентификаторМоихЗадач;
+ Дело.ЕстьДела = КоличествоЗадачИсполнителя.Всего > 0;
+ Дело.Представление = НСтр("ru = 'Мои задачи'");
+ Дело.Количество = КоличествоЗадачИсполнителя.Всего;
+ Дело.Форма = "Задача.ЗадачаИсполнителя.Форма.МоиЗадачи";
+ Дело.ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Выполнена", Ложь));
+ Дело.Владелец = Раздел;
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ЗадачиИсполнителяПросроченные";
+ Дело.ЕстьДела = КоличествоЗадачИсполнителя.Просроченные > 0;
+ Дело.Представление = НСтр("ru = 'просроченные'");
+ Дело.Количество = КоличествоЗадачИсполнителя.Просроченные;
+ Дело.Важное = Истина;
+ Дело.Владелец = ИдентификаторМоихЗадач;
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ЗадачиИсполнителяНаСегодня";
+ Дело.ЕстьДела = КоличествоЗадачИсполнителя.НаСегодня > 0;
+ Дело.Представление = НСтр("ru = 'сегодня'");
+ Дело.Количество = КоличествоЗадачИсполнителя.НаСегодня;
+ Дело.Владелец = ИдентификаторМоихЗадач;
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ЗадачиИсполнителяНаНеделю";
+ Дело.ЕстьДела = КоличествоЗадачИсполнителя.НаНеделю > 0;
+ Дело.Представление = НСтр("ru = 'на этой неделе'");
+ Дело.Количество = КоличествоЗадачИсполнителя.НаНеделю;
+ Дело.Владелец = ИдентификаторМоихЗадач;
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ЗадачиИсполнителяНаСледующуюНеделю";
+ Дело.ЕстьДела = КоличествоЗадачИсполнителя.НаСледующуюНеделю > 0;
+ Дело.Представление = НСтр("ru = 'на следующей неделе'");
+ Дело.Количество = КоличествоЗадачИсполнителя.НаСледующуюНеделю > 0;
+ Дело.Владелец = ИдентификаторМоихЗадач;
+ КонецЦикла;
КонецПроцедуры
@@ -1155,12 +1299,18 @@
КонецПроцедуры
// Заполняет реквизит ГлавнаяЗадача при создании бизнес-процесса
-// на основании другого бизнес-процесса
+// на основании другого бизнес-процесса.
//
Процедура ЗаполнитьГлавнуюЗадачу(БизнесПроцессОбъект, ДанныеЗаполнения) Экспорт
- Отказ = БизнесПроцессыИЗадачиПереопределяемый.ЗаполнитьГлавнуюЗадачу(БизнесПроцессОбъект, ДанныеЗаполнения);
+ СтандартнаяОбработка = Истина;
+ БизнесПроцессыИЗадачиПереопределяемый.ПриЗаполненииГлавнойЗадачиБизнесПроцесса(БизнесПроцессОбъект, ДанныеЗаполнения, СтандартнаяОбработка);
+ Если Не СтандартнаяОбработка Тогда
+ Возврат;
+ КонецЕсли;
+ // Для обратной совместимости.
+ Отказ = БизнесПроцессыИЗадачиПереопределяемый.ЗаполнитьГлавнуюЗадачу(БизнесПроцессОбъект, ДанныеЗаполнения);
Если Отказ Тогда
Возврат;
КонецЕсли;
@@ -1312,11 +1462,12 @@
// Помечаем вложенные бизнес-процессы
УстановитьПривилегированныйРежим(Истина);
ВложенныеБизнесПроцессы = БизнесПроцессыВедущейЗадачи(ЗадачаСсылка, Истина);
+ УстановитьПривилегированныйРежим(Ложь);
+ // Без привилегированного режима, с проверкой прав
Для Каждого ВложенныйБизнесПроцесс Из ВложенныеБизнесПроцессы Цикл
БизнесПроцессОбъект = ВложенныйБизнесПроцесс.ПолучитьОбъект();
БизнесПроцессОбъект.УстановитьПометкуУдаления(НовоеЗначениеПометкиУдаления);
КонецЦикла;
- УстановитьПривилегированныйРежим(Ложь);
// Помечаем подчиненные бизнес-процессы
ПодчиненныеБизнесПроцессы = БизнесПроцессыГлавнойЗадачи(ЗадачаСсылка, Истина);
@@ -1345,6 +1496,14 @@
//
Функция ЕстьПраваНаОстановкуБизнесПроцесса(БизнесПроцесс)
+ ЕстьПрава = Ложь;
+ СтандартнаяОбработка = Истина;
+ БизнесПроцессыИЗадачиПереопределяемый.ПриПроверкеПравНаОстановкуБизнесПроцесса(БизнесПроцесс, ЕстьПрава, СтандартнаяОбработка);
+ Если Не СтандартнаяОбработка Тогда
+ Возврат ЕстьПрава;
+ КонецЕсли;
+
+ // Для обратной совместимости.
Результат = БизнесПроцессыИЗадачиПереопределяемый.ЕстьПраваНаОстановкуБизнесПроцесса(БизнесПроцесс);
Если Результат <> Неопределено Тогда
Возврат Результат;
@@ -1358,7 +1517,114 @@
Возврат Истина;
КонецЕсли;
- Возврат Ложь;
+ Возврат ЕстьПрава;
+
+КонецФункции
+
+Процедура УстановитьПараметрыСпискаМоихЗадач(Список) Экспорт
+
+ ТекущаяДатаСеанса = ТекущаяДатаСеанса();
+ Сегодня = Новый СтандартныйПериод(ВариантСтандартногоПериода.Сегодня);
+ ЭтаНеделя = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтаНеделя);
+ СледующаяНеделя = Новый СтандартныйПериод(ВариантСтандартногоПериода.СледующаяНеделя);
+
+ Список.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", ТекущаяДатаСеанса);
+ Список.Параметры.УстановитьЗначениеПараметра("КонецДня", Сегодня.ДатаОкончания);
+ Список.Параметры.УстановитьЗначениеПараметра("КонецНедели", ЭтаНеделя.ДатаОкончания);
+ Список.Параметры.УстановитьЗначениеПараметра("КонецСледующейНедели", СледующаяНеделя.ДатаОкончания);
+ Список.Параметры.УстановитьЗначениеПараметра("Просрочено", НСтр("ru = ' Просрочено'"));
+ Список.Параметры.УстановитьЗначениеПараметра("Сегодня", НСтр("ru = 'В течение сегодня'"));
+ Список.Параметры.УстановитьЗначениеПараметра("ЭтаНеделя", НСтр("ru = 'До конца недели'"));
+ Список.Параметры.УстановитьЗначениеПараметра("СледующаяНеделя", НСтр("ru = 'На следующей неделе'"));
+ Список.Параметры.УстановитьЗначениеПараметра("Позднее", НСтр("ru = 'Позднее'"));
+ Список.Параметры.УстановитьЗначениеПараметра("НачалоДня", НачалоДня(ТекущаяДатаСеанса));
+ Список.Параметры.УстановитьЗначениеПараметра("НезаполненнаяДата", Дата(1,1,1));
+
+КонецПроцедуры
+
+Функция КоличествоЗадачИсполнителя()
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ РАЗРЕШЕННЫЕ
+ | КОЛИЧЕСТВО(ЗадачиПоИсполнителю.Ссылка) КАК Количество
+ |ИЗ
+ | Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю КАК ЗадачиПоИсполнителю
+ |ГДЕ
+ | НЕ ЗадачиПоИсполнителю.ПометкаУдаления
+ | И НЕ ЗадачиПоИсполнителю.Выполнена
+ | И ЗадачиПоИсполнителю.СостояниеБизнесПроцесса = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |ВЫБРАТЬ
+ | КОЛИЧЕСТВО(ЗадачиПоИсполнителю.Ссылка)
+ |ИЗ
+ | Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю КАК ЗадачиПоИсполнителю
+ |ГДЕ
+ | ЗадачиПоИсполнителю.СрокИсполнения <= &ТекущаяДата
+ | И НЕ ЗадачиПоИсполнителю.ПометкаУдаления
+ | И НЕ ЗадачиПоИсполнителю.Выполнена
+ | И ЗадачиПоИсполнителю.СостояниеБизнесПроцесса = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |ВЫБРАТЬ
+ | КОЛИЧЕСТВО(ЗадачиПоИсполнителю.Ссылка)
+ |ИЗ
+ | Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю КАК ЗадачиПоИсполнителю
+ |ГДЕ
+ | ЗадачиПоИсполнителю.СрокИсполнения > &ТекущаяДата
+ | И ЗадачиПоИсполнителю.СрокИсполнения <= &Сегодня
+ | И НЕ ЗадачиПоИсполнителю.ПометкаУдаления
+ | И НЕ ЗадачиПоИсполнителю.Выполнена
+ | И ЗадачиПоИсполнителю.СостояниеБизнесПроцесса = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |ВЫБРАТЬ
+ | КОЛИЧЕСТВО(ЗадачиПоИсполнителю.Ссылка)
+ |ИЗ
+ | Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю КАК ЗадачиПоИсполнителю
+ |ГДЕ
+ | ЗадачиПоИсполнителю.СрокИсполнения > &Сегодня
+ | И ЗадачиПоИсполнителю.СрокИсполнения <= &КонецНедели
+ | И НЕ ЗадачиПоИсполнителю.ПометкаУдаления
+ | И НЕ ЗадачиПоИсполнителю.Выполнена
+ | И ЗадачиПоИсполнителю.СостояниеБизнесПроцесса = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |ВЫБРАТЬ
+ | КОЛИЧЕСТВО(ЗадачиПоИсполнителю.Ссылка)
+ |ИЗ
+ | Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю КАК ЗадачиПоИсполнителю
+ |ГДЕ
+ | ЗадачиПоИсполнителю.СрокИсполнения > &КонецНедели
+ | И ЗадачиПоИсполнителю.СрокИсполнения <= &КонецСледующейНедели
+ | И НЕ ЗадачиПоИсполнителю.ПометкаУдаления
+ | И НЕ ЗадачиПоИсполнителю.Выполнена
+ | И ЗадачиПоИсполнителю.СостояниеБизнесПроцесса = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)";
+
+ Сегодня = Новый СтандартныйПериод(ВариантСтандартногоПериода.Сегодня);
+ ЭтаНеделя = Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтаНеделя);
+ СледующаяНеделя = Новый СтандартныйПериод(ВариантСтандартногоПериода.СледующаяНеделя);
+
+ Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
+ Запрос.УстановитьПараметр("Сегодня", Сегодня.ДатаОкончания);
+ Запрос.УстановитьПараметр("КонецНедели", ЭтаНеделя.ДатаОкончания);
+ Запрос.УстановитьПараметр("КонецСледующейНедели", СледующаяНеделя.ДатаОкончания);
+
+ РезультатЗапроса = Запрос.Выполнить().Выгрузить();
+
+ Результат = Новый Структура("Всего,Просроченные,НаСегодня,НаНеделю,НаСледующуюНеделю");
+ Результат.Всего = РезультатЗапроса[0].Количество;
+ Результат.Просроченные = РезультатЗапроса[1].Количество;
+ Результат.НаСегодня = РезультатЗапроса[2].Количество;
+ Результат.НаНеделю = РезультатЗапроса[3].Количество;
+ Результат.НаСледующуюНеделю = РезультатЗапроса[4].Количество;
+
+ Возврат Результат;
КонецФункции
diff --git a/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl
index 839216210..657bf291c 100644
--- a/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl
+++ b/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl
@@ -173,7 +173,7 @@
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка получения описания отчета ""%1"",
|он не подключен к подсистеме ""%2""'"),
- СтрокаОтчет.Метаданные.Имя,
+ Строка(ОтчетЗначениеИлиМетаданные),
ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(""));
КонецЕсли;
@@ -201,7 +201,11 @@
СтрокаОтчет = ОписаниеОтчета(ДеревоВариантов, ОтчетСтрокаДереваИлиЗначениеИлиМетаданные);
КонецЕсли;
- СтрокаВариант = СтрокаОтчет.Строки.Найти(КлючВарианта, "КлючВарианта", Ложь);
+ Если КлючВарианта = "" Тогда
+ СтрокаВариант = СтрокаОтчет.ОсновнойВариант;
+ Иначе
+ СтрокаВариант = СтрокаОтчет.Строки.Найти(КлючВарианта, "КлючВарианта", Ложь);
+ КонецЕсли;
Если СтрокаВариант = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -683,7 +687,7 @@
Для Каждого СтрокаПодсистема Из Найденные Цикл
СтрокаРаздел = ВариантОбъект.Размещение.Добавить();
СтрокаРаздел.Использование = Истина;
- СтрокаРаздел.РазделИлиГруппа = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(СтрокаПодсистема.ПодсистемаМетаданные);
+ СтрокаРаздел.Подсистема = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(СтрокаПодсистема.ПодсистемаМетаданные);
КонецЦикла;
ВариантОбъект.Записать();
@@ -776,16 +780,14 @@
////////////////////////////////////////////////////////////////////////////////
// 1. Обновить общие данные.
- Если Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
- Обработчик = Обработчики.Добавить();
- Обработчик.ВыполнятьВГруппеОбязательных = Ложь;
- Обработчик.ОбщиеДанные = Истина;
- Обработчик.УправлениеОбработчиками = Истина;
- Обработчик.РежимВыполнения = "Оперативно";
- Обработчик.Версия = "*";
- Обработчик.Процедура = "ВариантыОтчетов.ОбновитьОбщиеДанные";
- Обработчик.Приоритет = 90;
- КонецЕсли;
+ Обработчик = Обработчики.Добавить();
+ Обработчик.ВыполнятьВГруппеОбязательных = Ложь;
+ Обработчик.ОбщиеДанные = Истина;
+ Обработчик.УправлениеОбработчиками = Истина;
+ Обработчик.РежимВыполнения = "Оперативно";
+ Обработчик.Версия = "*";
+ Обработчик.Процедура = "ВариантыОтчетов.ОбновитьОбщиеДанные";
+ Обработчик.Приоритет = 90;
////////////////////////////////////////////////////////////////////////////////
// 2. Обновить разделенные данные.
@@ -830,12 +832,21 @@
|Поиск отчетов временно недоступен.'");
КонецЕсли;
+ // 3.2. Заполнить информацию для поиска вариантов отчетов.
+ Обработчик = Обработчики.Добавить();
+ Обработчик.РежимВыполнения = "Отложенно";
+ Обработчик.ОбщиеДанные = Ложь;
+ Обработчик.Версия = "2.2.3.31";
+ Обработчик.Процедура = "ВариантыОтчетов.СократитьКоличествоБыстрыхНастроек";
+ Обработчик.Комментарий = НСтр("ru = 'Уменьшает количество быстрых настроек
+ |в пользовательских отчетах до 2 шт.'");
+
КонецПроцедуры
// Возникает при получении исключений поиска ссылок.
Процедура ПриДобавленииИсключенийПоискаСсылок(ИсключенияПоискаСсылок) Экспорт
- ИсключенияПоискаСсылок.Добавить(Метаданные.Справочники.ВариантыОтчетов.ТабличныеЧасти.Размещение.Реквизиты.РазделИлиГруппа);
+ ИсключенияПоискаСсылок.Добавить(Метаданные.Справочники.ВариантыОтчетов.ТабличныеЧасти.Размещение.Реквизиты.Подсистема);
КонецПроцедуры
@@ -904,7 +915,7 @@
// * Объект - ОтчетОбъект.<Имя отчета>, ВнешнийОтчет - Объект отчета.
// * Имя - Строка - Имя объекта отчета.
// * Метаданные - ОбъектМетаданных - Объект метаданных отчета.
-// * Ссылка - * - Ссылка отчета.
+// * Ссылка - Произвольный - Ссылка отчета.
// * Ошибки - Строка - Текст ошибки.
//
// Места использования:
@@ -1062,7 +1073,6 @@
ВариантОбъект.КлючВарианта = ЭлементСписка.Значение;
ВариантОбъект.Наименование = ЭлементСписка.Представление;
ВариантОбъект.Пользовательский = Ложь;
- ВариантОбъект.ВидимостьПоУмолчанию = Истина;
ВариантОбъект.ДополнительныеСвойства.Вставить("ОтчетОбъект", ВнешнийОбъект);
ВариантОбъект.Записать();
КонецЦикла;
@@ -1148,7 +1158,7 @@
// Поиск связи вариантов отчетов с этой функциональной опцией.
Если Не ПеременныеИнициализированы Тогда
ПеременныеИнициализированы = Истина;
- ТаблицаОпций = Константы.ПараметрыВариантовОтчетов.Получить().Получить();
+ ТаблицаОпций = Константы.ПараметрыВариантовОтчетов.Получить().Получить().ТаблицаФункциональныхОпций;
ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта();
КонецЕсли;
@@ -1175,6 +1185,7 @@
// Прочие процедуры служебного программного интерфейса
// Актуализирует данные подсистемы с учетом режима работы программы.
+// Пример использования: после очистки хранилищ настроек.
Процедура Обновить(Настройки = Неопределено) Экспорт
Если Настройки = Неопределено Тогда
@@ -1204,10 +1215,12 @@
ПараметрыОбновления = Новый Структура("РазделенныеОбработчики");
ПараметрыОбновления.РазделенныеОбработчики = ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления();
ОбновитьОбщиеДанные(ПараметрыОбновления);
+ ОтложенноеПолноеОбновлениеОбщихДанных(ПараметрыОбновления);
КонецЕсли;
Если Настройки.РазделенныеДанные = Истина Тогда
ОбновитьРазделенныеДанные();
+ ОтложенноеПолноеОбновлениеРазделенныхДанных();
КонецЕсли;
КонецПроцедуры
@@ -1296,6 +1309,22 @@
// Имена перечисляются через запятую.
// К сожалению, в макетах отсутствует информация о связях полей и их представлений (которая есть в СКД),
// поэтому для более точной работы механизма поиска рекомендуется заполнять НаименованияПолей, а не ИменаМакетов.
+// * ОпределитьНастройкиФормы - Булево - Отчет имеет программный интерфейс для тесной интеграции с формой отчета,
+// в том числе может переопределять некоторые настройки формы и подписываться на ее события.
+// Если Истина и отчет подключен к общей форме ФормаОтчета,
+// тогда в модуле объекта отчета следует определить процедуру по шаблону:
+//
+// // Настройки общей формы отчета подсистемы "Варианты отчетов".
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма - Форма отчета.
+// // КлючВарианта - Строка - Имя предопределенного варианта отчета или уникальный идентификатор пользовательского.
+// // Настройки - Структура - см. возвращаемое значение ФункцииОтчетовКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию().
+// //
+// Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
+// // Код процедуры.
+// КонецПроцедуры
+//
// Служебные реквизиты (только для чтения):
// * Отчет - <см. Справочники.ВариантыОтчетов.Реквизиты.Отчет> - Полное имя или ссылка на отчет.
// * Метаданные - ОбъектМетаданных: Отчет - Метаданные отчета.
@@ -1320,7 +1349,9 @@
ДеревоВариантов.Колонки.Добавить("СистемнаяИнформация", Новый ОписаниеТипов("Структура"));
ДеревоВариантов.Колонки.Добавить("ЭтоВариант", Новый ОписаниеТипов("Булево"));
ДеревоВариантов.Колонки.Добавить("ФункциональныеОпции", Новый ОписаниеТипов("Массив"));
- ДеревоВариантов.Колонки.Добавить("ВыводитьТолькоОтчет", Новый ОписаниеТипов("Булево"));
+ ДеревоВариантов.Колонки.Добавить("ГруппироватьПоОтчету", Новый ОписаниеТипов("Булево"));
+ ДеревоВариантов.Колонки.Добавить("ОсновнойВариант");
+ ДеревоВариантов.Колонки.Добавить("ОпределитьНастройкиФормы", Новый ОписаниеТипов("Булево"));
ВыводитьОтчетыВместоВариантов = ГлобальныеНастройки().ВыводитьОтчетыВместоВариантов;
РазрешеноИндексирование = РазрешеноИндексированиеНеразделенныхДанных();
@@ -1346,7 +1377,7 @@
СтрокаОтчет.Наименование = ОтчетМетаданные.Представление();
СтрокаОтчет.ОписаниеПолучено = Истина;
СтрокаОтчет.ЭтоВариант = Ложь;
- СтрокаОтчет.ВыводитьТолькоОтчет = ВыводитьОтчетыВместоВариантов;
+ СтрокаОтчет.ГруппироватьПоОтчету = ВыводитьОтчетыВместоВариантов;
СтрокаОтчет.СистемнаяИнформация = Новый Структура;
СтрокаОтчет.СистемнаяИнформация.Вставить("ПостроенНаСКД", ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных <> Неопределено);
@@ -1359,12 +1390,6 @@
// Поиск.
СтрокаОтчет.НастройкиДляПоиска = Новый Структура("НаименованияПолей, НаименованияПараметровИОтборов, ИменаМакетов");
- // Вариант по умолчанию (последний открытый).
- ВариантПоУмолчанию = СтрокаОтчет.Строки.Добавить();
- ВариантПоУмолчанию.Отчет = СтрокаОтчет.Отчет;
- ВариантПоУмолчанию.КлючВарианта = "";
- ВариантПоУмолчанию.ЭтоВариант = Истина;
-
// Предопределенные варианты.
Если СтрокаОтчет.СистемнаяИнформация.ПостроенНаСКД Тогда
ОтчетМенеджер = Отчеты[ОтчетМетаданные.Имя];
@@ -1391,17 +1416,17 @@
ПредупреждениеПоВарианту(Неопределено, ТекстОшибки);
КонецПопытки;
КонецЕсли;
- // Чтение настроек по умолчанию из схемы.
- Если РазрешеноИндексирование И СхемаКД <> Неопределено Тогда
- Попытка
- ВариантПоУмолчанию.СистемнаяИнформация.Вставить("НастройкиКД", СхемаКД.НастройкиПоУмолчанию);
- Исключение
- ТекстОшибки = НСтр("ru = 'Не удалось прочитать настройки по умолчанию отчета ""%1"":'");
- ТекстОшибки = СтрЗаменить(ТекстОшибки, "%1", ОтчетМетаданные.Имя);
- ТекстОшибки = ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
- ПредупреждениеПоВарианту(Неопределено, ТекстОшибки);
- КонецПопытки;
- КонецЕсли;
+ //// Чтение настроек по умолчанию из схемы.
+ //Если РазрешеноИндексирование И СхемаКД <> Неопределено Тогда
+ // Попытка
+ // ВариантПоУмолчанию.СистемнаяИнформация.Вставить("НастройкиКД", СхемаКД.НастройкиПоУмолчанию);
+ // Исключение
+ // ТекстОшибки = НСтр("ru = 'Не удалось прочитать настройки по умолчанию отчета ""%1"":'");
+ // ТекстОшибки = СтрЗаменить(ТекстОшибки, "%1", ОтчетМетаданные.Имя);
+ // ТекстОшибки = ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ // ПредупреждениеПоВарианту(Неопределено, ТекстОшибки);
+ // КонецПопытки;
+ //КонецЕсли;
// Чтение настроек вариантов отчета из модуля менеджера (если не получилось из схемы).
Если ВариантыНастроек = Неопределено Тогда
Попытка
@@ -1421,6 +1446,9 @@
Вариант.КлючВарианта = ВариантНастроекКД.Имя;
Вариант.Наименование = ВариантНастроекКД.Представление;
Вариант.ЭтоВариант = Истина;
+ Если СтрокаОтчет.ОсновнойВариант = Неопределено Тогда
+ СтрокаОтчет.ОсновнойВариант = Вариант;
+ КонецЕсли;
Если РазрешеноИндексирование И ТипЗнч(ВариантНастроекКД) = Тип("ВариантНастроекКомпоновкиДанных") Тогда
Попытка
Вариант.СистемнаяИнформация.Вставить("НастройкиКД", ВариантНастроекКД.Настройки);
@@ -1438,8 +1466,18 @@
КонецЕсли;
КонецЕсли;
+ // Сам отчет.
+ Если СтрокаОтчет.ОсновнойВариант = Неопределено Тогда
+ Вариант = СтрокаОтчет.Строки.Добавить();
+ ЗаполнитьЗначенияСвойств(Вариант, СтрокаОтчет, "Отчет, Наименование");
+ Вариант.КлючВарианта = "";
+ Вариант.ЭтоВариант = Истина;
+ СтрокаОтчет.ОсновнойВариант = Вариант;
+ КонецЕсли;
+
КонецЦикла;
+ // Механизмы расширения:
// Подключаемые обработчики подсистем БСП.
Обработчики = ОбщегоНазначения.ОбработчикиСлужебногоСобытия("СтандартныеПодсистемы.ВариантыОтчетов\ПриНастройкеВариантовОтчетов");
Для Каждого Обработчик Из Обработчики Цикл
@@ -1449,31 +1487,22 @@
// Переопределяемая часть.
ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов(ДеревоВариантов);
- // Переключение в режим "По вариантам" для отчетов, у которых включен только 1 вариант.
+ // Определение основных вариантов.
Для Каждого СтрокаОтчет Из ДеревоВариантов.Строки Цикл
- ВариантПоУмолчанию = Неопределено;
- ВключенныйВариант = Неопределено;
- КоличествоВключенныхВариантов = 0;
- Для Каждого СтрокаВариант Из СтрокаОтчет.Строки Цикл
- ЗаполнитьОписаниеСтрокиВарианта(СтрокаВариант, СтрокаОтчет);
- Если СтрокаВариант.КлючВарианта = "" Тогда
- ВариантПоУмолчанию = СтрокаВариант;
- Иначе
- Если СтрокаВариант.Включен Тогда
- КоличествоВключенныхВариантов = КоличествоВключенныхВариантов + 1;
- Если КоличествоВключенныхВариантов > 1 Тогда
+ Если СтрокаОтчет.ГруппироватьПоОтчету = Истина Тогда
+ Если СтрокаОтчет.ОсновнойВариант = Неопределено
+ Или Не СтрокаОтчет.ОсновнойВариант.Включен Тогда
+ Для Каждого Вариант Из СтрокаОтчет.Строки Цикл
+ ЗаполнитьОписаниеСтрокиВарианта(Вариант, СтрокаОтчет);
+ Если Вариант.Включен Тогда
+ СтрокаОтчет.ОсновнойВариант = Вариант;
+ Вариант.ВидимостьПоУмолчанию = Истина;
Прервать;
КонецЕсли;
- ВключенныйВариант = СтрокаВариант;
- КонецЕсли;
+ КонецЦикла;
КонецЕсли;
- КонецЦикла;
- Если ВариантПоУмолчанию <> Неопределено
- И КоличествоВключенныхВариантов = 1
- И ВключенныйВариант <> Неопределено
- И Не ВключенныйВариант.ВидимостьПоУмолчанию Тогда
- ВариантПоУмолчанию.Включен = Ложь;
- ВключенныйВариант.ВидимостьПоУмолчанию = Истина;
+ Иначе
+ СтрокаОтчет.ОсновнойВариант = Неопределено;
КонецЕсли;
КонецЦикла;
@@ -1499,18 +1528,15 @@
СтрокаВариант.ОписаниеПолучено = Истина;
// Копирование настроек отчета.
- ЗаполнитьЗначенияСвойств(СтрокаВариант, СтрокаОтчет, "Включен, ВидимостьПоУмолчанию, ВыводитьТолькоОтчет");
+ ЗаполнитьЗначенияСвойств(СтрокаВариант, СтрокаОтчет, "Включен, ВидимостьПоУмолчанию, ГруппироватьПоОтчету");
- Если СтрокаВариант.КлючВарианта = "" Тогда
+ Если СтрокаВариант = СтрокаОтчет.ОсновнойВариант Тогда
// Вариант "по умолчанию".
- СтрокаВариант.Наименование = СтрокаОтчет.Наименование;
СтрокаВариант.Описание = СтрокаОтчет.Описание;
- Если Не СтрокаВариант.ВыводитьТолькоОтчет Тогда
- СтрокаВариант.Включен = Ложь;
- КонецЕсли;
+ СтрокаВариант.ВидимостьПоУмолчанию = Истина;
Иначе
// Предопределенный вариант.
- Если СтрокаВариант.ВыводитьТолькоОтчет Тогда
+ Если СтрокаВариант.ГруппироватьПоОтчету Тогда
СтрокаВариант.ВидимостьПоУмолчанию = Ложь;
КонецЕсли;
КонецЕсли;
@@ -1540,7 +1566,7 @@
Возврат;
КонецЕсли;
КонецЕсли;
- СтрокаОтчет.ВыводитьТолькоОтчет = ВыводитьОтчетыВместоВариантов;
+ СтрокаОтчет.ГруппироватьПоОтчету = ВыводитьОтчетыВместоВариантов;
КонецПроцедуры
// Формирует таблицу замен старых ключей вариантов на актуальные.
@@ -1754,15 +1780,19 @@
Функция СброситьНастройкиВариантаОтчета(ВариантОбъект) Экспорт
Если ВариантОбъект.Пользовательский
Или ВариантОбъект.ТипОтчета <> Перечисления.ТипыОтчетов.Внутренний
- Или ВариантОбъект.ПредопределенныйВариант = Справочники.ПредопределенныеВариантыОтчетов.ПустаяСсылка() Тогда
+ Или Не ЗначениеЗаполнено(ВариантОбъект.ПредопределенныйВариант) Тогда
Возврат Ложь;
КонецЕсли;
- ВариантОбъект.Автор = Неопределено;
- ВариантОбъект.Описание = "";
+ ВариантОбъект.Автор = Неопределено;
+ ВариантОбъект.ТолькоДляАвтора = Ложь;
+ ВариантОбъект.Описание = "";
ВариантОбъект.Размещение.Очистить();
ВариантОбъект.ВидимостьПоУмолчаниюПереопределена = Ложь;
- ЗаполнитьЗначенияСвойств(ВариантОбъект, ВариантОбъект.ПредопределенныйВариант, "Наименование, ВидимостьПоУмолчанию");
+ Предопределенный = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
+ ВариантОбъект.ПредопределенныйВариант,
+ "Наименование, ВидимостьПоУмолчанию");
+ ЗаполнитьЗначенияСвойств(ВариантОбъект, Предопределенный);
Возврат Истина;
КонецФункции
@@ -1871,6 +1901,26 @@
Возврат (Метаданные.ХранилищеВариантовОтчетов <> Неопределено И Метаданные.ХранилищеВариантовОтчетов.Имя = "ХранилищеВариантовОтчетов");
КонецФункции
+// Определяет способ подключения общей формы отчета.
+Функция ФормаОтчетаИспользуетсяПоУмолчанию() Экспорт
+ ФормаМетаданные = Метаданные.ОсновнаяФормаОтчета;
+ Возврат (ФормаМетаданные <> Неопределено И ФормаМетаданные = Метаданные.ОбщиеФормы.ФормаОтчета);
+КонецФункции
+
+// Определяет способ подключения общей формы отчета.
+Функция ФормаОтчетаИспользуетсяДляОтчета(ОтчетМетаданные, ФормаОтчетаИспользуетсяПоУмолчанию = Неопределено) Экспорт
+ ФормаМетаданные = ОтчетМетаданные.ОсновнаяФорма;
+ Если ФормаМетаданные = Неопределено Тогда
+ Если ФормаОтчетаИспользуетсяПоУмолчанию = Неопределено Тогда
+ ФормаОтчетаИспользуетсяПоУмолчанию = ФормаОтчетаИспользуетсяПоУмолчанию();
+ КонецЕсли;
+ ОтчетПодключен = ФормаОтчетаИспользуетсяПоУмолчанию;
+ Иначе
+ ОтчетПодключен = (ФормаМетаданные = Метаданные.ОбщиеФормы.ФормаОтчета);
+ КонецЕсли;
+ Возврат ОтчетПодключен;
+КонецФункции
+
// Создает фильтр по реквизиту КлючОбъекта для СтандартноеХранилищеНастроекМенеджер.Выбрать().
Функция НовыйФильтрПоКлючуОбъекта(ИменаОтчетов) Экспорт
Если ИменаОтчетов = "" Или ИменаОтчетов = "*" Тогда
@@ -1896,10 +1946,8 @@
// Глобальные настройки подсистемы.
Функция ГлобальныеНастройки() Экспорт
Результат = Новый Структура;
- // * ВыводитьОтчетыВместоВариантов - Булево - Умолчание для вывода гиперссылок в панели отчетов:
- // - Истина - Варианты отчетов по умолчанию скрыты, а отчеты включены и видимы.
- // - Ложь - Значение по умолчанию. Варианты отчетов по умолчанию видимы, а отчеты отключены.
Результат.Вставить("ВыводитьОтчетыВместоВариантов", Ложь);
+ Результат.Вставить("ВыводитьОписания", Истина);
ВариантыОтчетовПереопределяемый.ОпределитьГлобальныеНастройки(Результат);
@@ -1914,7 +1962,7 @@
Если ОбщиеНастройки = Неопределено Тогда
ОбщиеНастройки = Новый Структура("ПоказатьОповещениеОПодсказках, ПоказыватьПодсказки, ИскатьВоВсехРазделах");
ОбщиеНастройки.ПоказатьОповещениеОПодсказках = Истина;
- ОбщиеНастройки.ПоказыватьПодсказки = 1;
+ ОбщиеНастройки.ПоказыватьПодсказки = ?(ГлобальныеНастройки().ВыводитьОписания, 1, 0);
ОбщиеНастройки.ИскатьВоВсехРазделах = Ложь;
Иначе
ОбщиеНастройки.Вставить("ПоказатьОповещениеОПодсказках", Ложь);
@@ -1974,9 +2022,13 @@
КонецПроцедуры
// Записывает в журнал регистрации событие завершения процедуры и фиксирует транзакцию.
-Процедура ЗавершениеПроцедуры(ПредставлениеПроцедуры)
+Процедура ЗавершениеПроцедуры(ПредставлениеПроцедуры, Изменено = Неопределено)
ЗафиксироватьТранзакцию();
- ИнформацияПоВарианту(Неопределено, НСтр("ru = 'Завершение процедуры ""%1"".'"), ПредставлениеПроцедуры);
+ Текст = НСтр("ru = 'Завершение процедуры ""%1"".'");
+ Если Изменено <> Неопределено Тогда
+ Текст = Текст + " " + НСтр("ru = 'Изменено %2 объектов.'");
+ КонецЕсли;
+ ИнформацияПоВарианту(Неопределено, Текст, ПредставлениеПроцедуры, Изменено);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -2020,7 +2072,7 @@
Возврат;
КонецЕсли;
- РазделИлиГруппа = ИдентификаторОбъектаМетаданныхОбъект.Ссылка;
+ Подсистема = ИдентификаторОбъектаМетаданныхОбъект.Ссылка;
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
@@ -2028,17 +2080,17 @@
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
- | ВариантыОтчетов.Размещение.РазделИлиГруппа = &РазделИлиГруппа";
+ | ВариантыОтчетов.Размещение.Подсистема = &Подсистема";
Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("РазделИлиГруппа", РазделИлиГруппа);
+ Запрос.УстановитьПараметр("Подсистема", Подсистема);
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
- Найденные = ВариантОбъект.Размещение.НайтиСтроки(Новый Структура("РазделИлиГруппа", РазделИлиГруппа));
+ Найденные = ВариантОбъект.Размещение.НайтиСтроки(Новый Структура("Подсистема", Подсистема));
Для Каждого СтрокаТаблицы Из Найденные Цикл
ВариантОбъект.Размещение.Удалить(СтрокаТаблицы);
КонецЦикла;
@@ -2173,7 +2225,7 @@
ВариантОбъект.УдалитьКлючОбъекта = "";
ВариантОбъект.УдалитьПредставлениеОбъекта = "";
ВариантОбъект.УдалитьИсключенияБыстрогоДоступа.Очистить();
- ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВариантОбъект);
+ ЗаписатьПредопределенный(ВариантОбъект);
КонецЦикла;
ЗавершениеПроцедуры(ПредставлениеПроцедуры);
@@ -2221,7 +2273,7 @@
| ВариантыОтчетов.Пользовательский = ЛОЖЬ
| И ВариантыОтчетов.ТипОтчета = &ТипОтчета
| И ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ
- | И ВариантыОтчетов.ПредопределенныйВариант = &ПредопределенныйВариант
+ | И ВариантыОтчетов.ПредопределенныйВариант = &ПустойПредопределенный
|
|ИНДЕКСИРОВАТЬ ПО
| Отчет,
@@ -2244,7 +2296,7 @@
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Изменения", Изменения);
Запрос.УстановитьПараметр("ТипОтчета", Перечисления.ТипыОтчетов.Внутренний);
- Запрос.УстановитьПараметр("ПредопределенныйВариант", Справочники.ПредопределенныеВариантыОтчетов.ПустаяСсылка());
+ Запрос.УстановитьПараметр("ПустойПредопределенный", Справочники.ПредопределенныеВариантыОтчетов.ПустаяСсылка());
Запрос.Текст = ТекстЗапроса;
// Заменить имена вариантов на ссылки.
@@ -2294,28 +2346,22 @@
ДеревоВариантов = ДеревоНастроекВариантовОтчетовКонфигурации();
- ТекстЗапроса =
- "ВЫБРАТЬ
- | Таблица.Ссылка
- |ИЗ
- | Справочник.ПредопределенныеВариантыОтчетов КАК Таблица
- |ГДЕ
- | Таблица.ПометкаУдаления = ЛОЖЬ";
-
- Запрос = Новый Запрос(ТекстЗапроса);
+ СтарыеСведения = Новый Структура("ХешНастроек, НаименованияПолей, НаименованияПараметровИОтборов");
+ Запрос = Новый Запрос("Выбрать Ссылка Из Справочник.ПредопределенныеВариантыОтчетов Где ПометкаУдаления = Ложь");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
ВариантОбъект.ДополнительныеСвойства.Вставить("ДеревоВариантов", ДеревоВариантов);
+ ЗаполнитьЗначенияСвойств(СтарыеСведения, ВариантОбъект);
ВариантОбъект.НаименованияПолей = "";
ВариантОбъект.НаименованияПараметровИОтборов = "";
- Если Полное Тогда
+ Если Полное Тогда // Переиндексировать принудительно, без проверки хеш-суммы.
ВариантОбъект.ДополнительныеСвойства.Вставить("ИндексироватьСхему", Истина);
КонецЕсли;
- ЕстьИзменения = ПроиндексироватьСодержимоеСхемы(ВариантОбъект);
- Если ЕстьИзменения Тогда
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных");
- ВариантОбъект.Записать();
+ СхемаПроиндексирована = ПроиндексироватьСодержимоеСхемы(ВариантОбъект);
+ Если Полное Или (СхемаПроиндексирована
+ И ИзменилисьНастройкиПоискаПредопределенного(ВариантОбъект, СтарыеСведения)) Тогда
+ ЗаписатьПредопределенный(ВариантОбъект);
КонецЕсли;
КонецЦикла;
@@ -2360,15 +2406,63 @@
КонецЕсли;
ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных");
ВариантОбъект.ДополнительныеСвойства.Вставить("ИндексироватьСхему", Истина);
ВариантОбъект.ДополнительныеСвойства.Вставить("ОтчетОбъект", ОтчетОбъект);
- ВариантОбъект.Записать();
+ ЗаписатьПредопределенный(ВариантОбъект);
КонецЦикла;
ЗавершениеПроцедуры(ПредставлениеПроцедуры);
КонецПроцедуры
+// [2.2.3.30] Уменьшает количество быстрых настроек в пользовательских вариантах отчетов до 2 шт.
+Процедура СократитьКоличествоБыстрыхНастроек(Параметры = Неопределено) Экспорт
+ ПредставлениеПроцедуры = НСтр("ru = 'Сокращение количества быстрых настроек в отчетах'");
+ ЗапускПроцедуры(ПредставлениеПроцедуры);
+
+ Записано = 0;
+
+ КэшОтчетов = Новый Соответствие;
+
+ ИспользуетсяПоУмолчанию = ФормаОтчетаИспользуетсяПоУмолчанию();
+
+ Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, Отчет ИЗ Справочник.ВариантыОтчетов ГДЕ Пользовательский И ТипОтчета <> &Внешний");
+ Запрос.УстановитьПараметр("Внешний", Перечисления.ТипыОтчетов.Внешний);
+ Выборка = Запрос.Выполнить().Выбрать();
+ Пока Выборка.Следующий() Цикл
+ ОтчетОбъект = КэшОтчетов.Получить(Выборка.Отчет); // Чтение кэша.
+ Если ОтчетОбъект = Неопределено Тогда // Запись в кэш.
+ РезультатПодключения = ПодключитьОтчетОбъект(Выборка.Отчет);
+ Если РезультатПодключения.Подключен Тогда
+ ОтчетОбъект = РезультатПодключения.Объект;
+ ОтчетМетаданные = РезультатПодключения.Метаданные;
+ Если Не ФормаОтчетаИспользуетсяДляОтчета(ОтчетМетаданные, ИспользуетсяПоУмолчанию) Тогда
+ // Отчет не подключен к общей форме отчета. Уменьшение количества быстрых настроек должно выполняться прикладным кодом.
+ ОтчетОбъект = "";
+ КонецЕсли;
+ Иначе // Отчет не найден.
+ ОшибкаПоВарианту(Выборка.Ссылка, РезультатПодключения.Ошибки);
+ ОтчетОбъект = "";
+ КонецЕсли;
+ КэшОтчетов.Вставить(Выборка.Отчет, ОтчетОбъект);
+ КонецЕсли;
+ Если ОтчетОбъект = "" Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
+ ТребуетсяЗапись = УменьшитьКоличествоБыстрыхНастроек(ВариантОбъект, ОтчетОбъект);
+ Если Не ТребуетсяЗапись Тогда
+ Продолжить;
+ КонецЕсли;
+ ВариантОбъект.ДополнительныеСвойства.Вставить("ИндексироватьСхему", Ложь);
+ ВариантОбъект.ДополнительныеСвойства.Вставить("ОтчетОбъект", ОтчетОбъект);
+ ЗаписатьПредопределенный(ВариантОбъект);
+ Записано = Записано + 1;
+ КонецЦикла;
+
+ ЗавершениеПроцедуры(ПредставлениеПроцедуры, Записано);
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы / Начальное заполнение и актуализация справочников
@@ -2421,9 +2515,7 @@
Кэш.ОбновитьОбласти = Истина;
ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
ВариантОбъект.КлючВарианта = Выборка.АктуальноеИмяВарианта;
- ВариантОбъект.ДополнительныеСвойства.Вставить("ДеревоВариантов", Кэш.ДеревоВариантов);
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина);
- ВариантОбъект.Записать();
+ ЗаписатьПредопределенный(ВариантОбъект);
КонецЦикла;
ЗавершениеПроцедуры(ПредставлениеПроцедуры);
@@ -2438,77 +2530,131 @@
ТаблицаФункциональныхОпций.Колонки.Добавить("Отчет", Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных"));
ТаблицаФункциональныхОпций.Колонки.Добавить("ПредопределенныйВариант", Новый ОписаниеТипов("СправочникСсылка.ПредопределенныеВариантыОтчетов"));
ТаблицаФункциональныхОпций.Колонки.Добавить("ИмяФункциональнойОпции", Новый ОписаниеТипов("Строка"));
+ Кэш.Вставить("ТаблицаФункциональныхОпций", ТаблицаФункциональныхОпций);
+
+ ОтчетыСНастройкамиСписок = Новый СписокЗначений;
Кэш.ДеревоВариантов.Колонки.Добавить("НайденВБазеДанных", Новый ОписаниеТипов("Булево"));
+ Кэш.ДеревоВариантов.Колонки.Добавить("ВариантИзБазы", Новый ОписаниеТипов("СтрокаТаблицыЗначений"));
+ Кэш.ДеревоВариантов.Колонки.Добавить("ВариантРодитель", Новый ОписаниеТипов("СправочникСсылка.ПредопределенныеВариантыОтчетов"));
ПоискВарианта = Новый Структура("Отчет, КлючВарианта, НайденВБазеДанных, ЭтоВариант", , , Ложь, Истина);
+ ПустаяСсылка = Справочники.ПредопределенныеВариантыОтчетов.ПустаяСсылка();
+ // Сопоставление информации из базы и из метаданных и пометка на удаление устаревших объектов из базы.
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.ПредопределенныеВариантыОтчетов УПОРЯДОЧИТЬ ПО ПометкаУдаления");
- ВариантВыборка = Запрос.Выполнить().Выбрать();
- Пока ВариантВыборка.Следующий() Цикл
- ЗаполнитьЗначенияСвойств(ПоискВарианта, ВариантВыборка, "Отчет, КлючВарианта");
-
+ ТаблицаПредопределенные = Запрос.Выполнить().Выгрузить();
+ Для Каждого ВариантИзБазы Из ТаблицаПредопределенные Цикл
+ ЗаполнитьЗначенияСвойств(ПоискВарианта, ВариантИзБазы, "Отчет, КлючВарианта");
Найденные = Кэш.ДеревоВариантов.Строки.НайтиСтроки(ПоискВарианта, Истина);
Если Найденные.Количество() = 0 Тогда
- ВариантОбъект = ВариантВыборка.Ссылка.ПолучитьОбъект();
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина);
- ВариантОбъект.ДополнительныеСвойства.Вставить("ИндексироватьСхему", Ложь);
- ВариантОбъект.УстановитьПометкуУдаления(Истина);
+ Если ВариантИзБазы.ПометкаУдаления И ВариантИзБазы.Родитель <> ПустаяСсылка Тогда
+ Продолжить; // Действие не требуется.
+ КонецЕсли;
+ ВариантОбъект = ВариантИзБазы.Ссылка.ПолучитьОбъект();
+ ВариантОбъект.ПометкаУдаления = Истина;
+ ВариантОбъект.Родитель = ПустаяСсылка;
+ ЗаписатьПредопределенный(ВариантОбъект);
Кэш.ОбновитьОбласти = Истина;
- Продолжить;
- КонецЕсли;
-
- ОписаниеВарианта = Найденные[0];
- ЗаполнитьОписаниеСтрокиВарианта(ОписаниеВарианта);
- ОписаниеВарианта.НайденВБазеДанных = Истина;
-
- Для Каждого ИмяФункциональнойОпции Из ОписаниеВарианта.ФункциональныеОпции Цикл
- СвязьСФункциональнойОпцией = ТаблицаФункциональныхОпций.Добавить();
- СвязьСФункциональнойОпцией.Отчет = ОписаниеВарианта.Отчет;
- СвязьСФункциональнойОпцией.ПредопределенныйВариант = ВариантВыборка.Ссылка;
- СвязьСФункциональнойОпцией.ИмяФункциональнойОпции = ИмяФункциональнойОпции;
- КонецЦикла;
-
- Если ИзменилисьКлючевыеНастройкиПредопределенного(ВариантВыборка, ОписаниеВарианта) Тогда
- Кэш.ОбновитьОбласти = Истина;
- ИначеЕсли ИзменилисьВторостепенныеНастройкиПредопределенного(ВариантВыборка, ОписаниеВарианта) Тогда
- // Обновлять области не требуется.
Иначе
- Продолжить;
+ ОписаниеВарианта = Найденные[0];
+ ЗаполнитьОписаниеСтрокиВарианта(ОписаниеВарианта);
+ ОписаниеВарианта.НайденВБазеДанных = Истина;
+ ОписаниеВарианта.ВариантИзБазы = ВариантИзБазы;
КонецЕсли;
-
- ЗаписатьНастройкиПредопределенного(ОписаниеВарианта, ВариантВыборка.Ссылка);
КонецЦикла;
- // Добавить варианты, которых нет в базы данных.
- Найденные = Кэш.ДеревоВариантов.Строки.НайтиСтроки(Новый Структура("НайденВБазеДанных, ЭтоВариант", Ложь, Истина), Истина);
- Для Каждого ОписаниеВарианта Из Найденные Цикл
- Кэш.ОбновитьОбласти = Истина;
- ЗаполнитьОписаниеСтрокиВарианта(ОписаниеВарианта);
-
- СсылкаПредопределенного = ЗаписатьНастройкиПредопределенного(ОписаниеВарианта);
-
- Для Каждого ИмяФункциональнойОпции Из ОписаниеВарианта.ФункциональныеОпции Цикл
- СвязьСФункциональнойОпцией = ТаблицаФункциональныхОпций.Добавить();
- СвязьСФункциональнойОпцией.Отчет = ОписаниеВарианта.Отчет;
- СвязьСФункциональнойОпцией.ПредопределенныйВариант = СсылкаПредопределенного;
- СвязьСФункциональнойОпцией.ИмяФункциональнойОпции = ИмяФункциональнойОпции;
+ // Добавление/обновление информации в базе данных.
+ Для Каждого ОписаниеОтчета Из Кэш.ДеревоВариантов.Строки Цикл
+ ОсновнойВариантСсылка = ПустаяСсылка;
+ ОсновнойВариант = ОписаниеОтчета.ОсновнойВариант;
+ Если ТипЗнч(ОсновнойВариант) = Тип("СтрокаДереваЗначений") Тогда
+ ЗаполнитьОписаниеСтрокиВарианта(ОсновнойВариант);
+ ОсновнойВариант.ВариантРодитель = ПустаяСсылка;
+ ОсновнойВариантСсылка = ОбновитьПредопределенный(Кэш, ОсновнойВариант); // Вариант без родителя.
+ КонецЕсли;
+ Если ОписаниеОтчета.ОпределитьНастройкиФормы Тогда
+ ОтчетыСНастройкамиСписок.Добавить(ОписаниеОтчета.Отчет);
+ КонецЕсли;
+ Для Каждого ОписаниеВарианта Из ОписаниеОтчета.Строки Цикл
+ ЗаполнитьОписаниеСтрокиВарианта(ОписаниеВарианта);
+ Если ОписаниеВарианта = ОсновнойВариант Тогда
+ ВариантСсылка = ОсновнойВариантСсылка;
+ Иначе
+ ОписаниеВарианта.ВариантРодитель = ОсновнойВариантСсылка;
+ ВариантСсылка = ОбновитьПредопределенный(Кэш, ОписаниеВарианта);
+ КонецЕсли;
+ Для Каждого ИмяФункциональнойОпции Из ОписаниеВарианта.ФункциональныеОпции Цикл
+ СвязьСФункциональнойОпцией = ТаблицаФункциональныхОпций.Добавить();
+ СвязьСФункциональнойОпцией.Отчет = ОписаниеВарианта.Отчет;
+ СвязьСФункциональнойОпцией.ПредопределенныйВариант = ВариантСсылка;
+ СвязьСФункциональнойОпцией.ИмяФункциональнойОпции = ИмяФункциональнойОпции;
+ КонецЦикла;
КонецЦикла;
КонецЦикла;
// Перезапись константы только в случае если обработчик обновления был запущен "для записи" (в монопольном режиме).
- МенеджерКонстанты = Константы.ПараметрыВариантовОтчетов.СоздатьМенеджерЗначения();
- МенеджерКонстанты.Значение = Новый ХранилищеЗначения(ТаблицаФункциональныхОпций, Новый СжатиеДанных(9));
- МенеджерКонстанты.ОбменДанными.Загрузка = Истина;
- МенеджерКонстанты.Записать();
+ ТаблицаФункциональныхОпций.Сортировать("Отчет, ПредопределенныйВариант, ИмяФункциональнойОпции");
+ ОтчетыСНастройкамиСписок.СортироватьПоЗначению();
+ ОтчетыСНастройками = ОтчетыСНастройкамиСписок.ВыгрузитьЗначения();
+
+ НовоеЗначение = Новый Структура;
+ НовоеЗначение.Вставить("ТаблицаФункциональныхОпций", ТаблицаФункциональныхОпций);
+ НовоеЗначение.Вставить("ОтчетыСНастройками", ОтчетыСНастройками);
+
+ СтароеЗначение = Константы.ПараметрыВариантовОтчетов.Получить().Получить();
+ Если ОбщегоНазначения.ЗначениеВСтрокуXML(НовоеЗначение) <> ОбщегоНазначения.ЗначениеВСтрокуXML(СтароеЗначение) Тогда
+ КонстантаОбъект = Константы.ПараметрыВариантовОтчетов.СоздатьМенеджерЗначения();
+ КонстантаОбъект.Значение = Новый ХранилищеЗначения(НовоеЗначение, Новый СжатиеДанных(9));
+ ОбновлениеИнформационнойБазы.ЗаписатьДанные(КонстантаОбъект, Ложь, Ложь);
+ КонецЕсли;
ЗавершениеПроцедуры(ПредставлениеПроцедуры);
КонецПроцедуры
+// Записывает настройки варианта в данные справочника.
+Функция ОбновитьПредопределенный(Кэш, ОписаниеВарианта)
+ Если ОписаниеВарианта.НайденВБазеДанных Тогда
+ ВариантИзБазы = ОписаниеВарианта.ВариантИзБазы;
+ Если ИзменилисьКлючевыеНастройкиПредопределенного(ОписаниеВарианта, ВариантИзБазы) Тогда
+ Кэш.ОбновитьОбласти = Истина; // Перезапись с обновлением разделенных данных.
+ ИначеЕсли ИзменилисьВторостепенныеНастройкиПредопределенного(ОписаниеВарианта, ВариантИзБазы) Тогда
+ // Перезапись без обновления разделенных данных.
+ Иначе
+ Возврат ВариантИзБазы.Ссылка;
+ КонецЕсли;
+
+ ВариантОбъект = ОписаниеВарианта.ВариантИзБазы.Ссылка.ПолучитьОбъект();
+ ВариантОбъект.Размещение.Очистить();
+ Если ВариантОбъект.ПометкаУдаления Тогда
+ ВариантОбъект.ПометкаУдаления = Ложь;
+ КонецЕсли;
+ Иначе
+ Кэш.ОбновитьОбласти = Истина; // Регистрация нового.
+ ВариантОбъект = Справочники.ПредопределенныеВариантыОтчетов.СоздатьЭлемент();
+ КонецЕсли;
+
+ ЗаполнитьЗначенияСвойств(ВариантОбъект, ОписаниеВарианта, "Отчет, КлючВарианта, Наименование, Включен, ВидимостьПоУмолчанию, Описание, ГруппироватьПоОтчету");
+
+ ВариантОбъект.Родитель = ОписаниеВарианта.ВариантРодитель;
+
+ Для Каждого КлючИЗначение Из ОписаниеВарианта.Размещение Цикл
+ СтрокаРазмещения = ВариантОбъект.Размещение.Добавить();
+ СтрокаРазмещения.Подсистема = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(КлючИЗначение.Ключ);
+ СтрокаРазмещения.Важный = (НРег(КлючИЗначение.Значение) = НРег("Важный"));
+ СтрокаРазмещения.СмТакже = (НРег(КлючИЗначение.Значение) = НРег("СмТакже"));
+ КонецЦикла;
+
+ ЗаписатьПредопределенный(ВариантОбъект);
+
+ Возврат ВариантОбъект.Ссылка;
+КонецФункции
+
// Определяет изменились ли ключевые настройки предопределенного варианта отчета.
-Функция ИзменилисьКлючевыеНастройкиПредопределенного(ВариантВыборка, ОписаниеВарианта)
- Если ВариантВыборка.ПометкаУдаления = Истина // Описание получено => требуется снять пометку удаления.
- Или ВариантВыборка.Наименование <> ОписаниеВарианта.Наименование
- Или ВариантВыборка.ВидимостьПоУмолчанию <> ОписаниеВарианта.ВидимостьПоУмолчанию Тогда
+Функция ИзменилисьКлючевыеНастройкиПредопределенного(ОписаниеВарианта, ВариантИзБазы)
+ Если ВариантИзБазы.ПометкаУдаления = Истина // Описание получено => требуется снять пометку удаления.
+ Или ВариантИзБазы.Наименование <> ОписаниеВарианта.Наименование
+ Или ВариантИзБазы.Родитель <> ОписаниеВарианта.ВариантРодитель
+ Или ВариантИзБазы.ВидимостьПоУмолчанию <> ОписаниеВарианта.ВидимостьПоУмолчанию Тогда
Возврат Истина;
Иначе
Возврат Ложь;
@@ -2516,16 +2662,16 @@
КонецФункции
// Определяет изменились ли второстепенные настройки предопределенного варианта отчета.
-Функция ИзменилисьВторостепенныеНастройкиПредопределенного(ВариантВыборка, ОписаниеВарианта)
+Функция ИзменилисьВторостепенныеНастройкиПредопределенного(ОписаниеВарианта, ВариантИзБазы)
// Шапка
- Если ВариантВыборка.Включен <> ОписаниеВарианта.Включен
- Или ВариантВыборка.Описание <> ОписаниеВарианта.Описание
- Или ВариантВыборка.ВыводитьТолькоОтчет <> ОписаниеВарианта.ВыводитьТолькоОтчет Тогда
+ Если ВариантИзБазы.Включен <> ОписаниеВарианта.Включен
+ Или ВариантИзБазы.Описание <> ОписаниеВарианта.Описание
+ Или ВариантИзБазы.ГруппироватьПоОтчету <> ОписаниеВарианта.ГруппироватьПоОтчету Тогда
Возврат Истина;
КонецЕсли;
// Таблица "Размещение"
- ТаблицаРазмещения = ВариантВыборка.Размещение.Выгрузить();
+ ТаблицаРазмещения = ВариантИзБазы.Размещение;
Если ТаблицаРазмещения.Количество() <> ОписаниеВарианта.Размещение.Количество() Тогда
Возврат Истина;
КонецЕсли;
@@ -2543,49 +2689,34 @@
Возврат Ложь;
КонецФункции
-// Записывает настройки варианта в данные справочника.
-Функция ЗаписатьНастройкиПредопределенного(ОписаниеВарианта, ВариантСсылка = Неопределено)
- Если ВариантСсылка = Неопределено Тогда
- ВариантОбъект = Справочники.ПредопределенныеВариантыОтчетов.СоздатьЭлемент();
+// Определяет изменились ли настройки поиска предопределенного варианта отчета.
+Функция ИзменилисьНастройкиПоискаПредопределенного(ВариантИзБазы, СтарыеСведения)
+ Если ВариантИзБазы.ХешНастроек <> СтарыеСведения.ХешНастроек
+ Или ВариантИзБазы.НаименованияПолей <> СтарыеСведения.НаименованияПолей
+ Или ВариантИзБазы.НаименованияПараметровИОтборов <> СтарыеСведения.НаименованияПараметровИОтборов Тогда
+ Возврат Истина;
Иначе
- ВариантОбъект = ВариантСсылка.ПолучитьОбъект();
- ВариантОбъект.Размещение.Очистить();
- Если ВариантОбъект.ПометкаУдаления Тогда
- ВариантОбъект.ПометкаУдаления = Ложь;
- КонецЕсли;
+ Возврат Ложь;
КонецЕсли;
-
- ЗаполнитьЗначенияСвойств(ВариантОбъект, ОписаниеВарианта, "Отчет, КлючВарианта, Наименование, Включен, ВидимостьПоУмолчанию, Описание, ВыводитьТолькоОтчет");
-
- Для Каждого КлючИЗначение Из ОписаниеВарианта.Размещение Цикл
- СтрокаРазмещения = ВариантОбъект.Размещение.Добавить();
- СтрокаРазмещения.Подсистема = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(КлючИЗначение.Ключ);
- СтрокаРазмещения.Важный = (НРег(КлючИЗначение.Значение) = НРег("Важный"));
- СтрокаРазмещения.СмТакже = (НРег(КлючИЗначение.Значение) = НРег("СмТакже"));
- КонецЦикла;
-
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина);
- ВариантОбъект.Записать();
-
- Возврат ВариантОбъект.Ссылка;
КонецФункции
-// Приводит в соответствие данные разделенного и неразделенного справочников.
-// Для разделенного справочника (ВариантыОтчетов).
-//
+// Приводит разделенные данные в соответствие с неразделенными данными.
Процедура АктуализироватьСоставОбласти()
ПредставлениеПроцедуры = НСтр("ru = 'Обновить разделенные вариантов отчетов'");
ЗапускПроцедуры(ПредставлениеПроцедуры);
+ // Обновление сведений предопределенных вариантов.
ТекстЗапроса =
"ВЫБРАТЬ
| ПредопределенныеВариантыОтчетов.Ссылка КАК ПредопределенныйВариант,
| ПредопределенныеВариантыОтчетов.Наименование КАК Наименование,
| ПредопределенныеВариантыОтчетов.Отчет КАК Отчет,
+ | ПредопределенныеВариантыОтчетов.ГруппироватьПоОтчету КАК ГруппироватьПоОтчету,
| ПредопределенныеВариантыОтчетов.КлючВарианта КАК КлючВарианта,
- | ПредопределенныеВариантыОтчетов.ВидимостьПоУмолчанию
- |ПОМЕСТИТЬ втОбщие
+ | ПредопределенныеВариантыОтчетов.ВидимостьПоУмолчанию КАК ВидимостьПоУмолчанию,
+ | ПредопределенныеВариантыОтчетов.Родитель КАК Родитель
+ |ПОМЕСТИТЬ втПредопределенные
|ИЗ
| Справочник.ПредопределенныеВариантыОтчетов КАК ПредопределенныеВариантыОтчетов
|ГДЕ
@@ -2597,79 +2728,223 @@
| ВариантыОтчетов.Ссылка,
| ВариантыОтчетов.ПометкаУдаления,
| ВариантыОтчетов.Отчет,
+ | ВариантыОтчетов.ТипОтчета,
| ВариантыОтчетов.КлючВарианта,
| ВариантыОтчетов.Наименование,
| ВариантыОтчетов.ПредопределенныйВариант,
| ВариантыОтчетов.ВидимостьПоУмолчанию,
- | ВариантыОтчетов.ВидимостьПоУмолчаниюПереопределена
- |ПОМЕСТИТЬ втРазделенные
+ | ВариантыОтчетов.Родитель
+ |ПОМЕСТИТЬ втВариантыОтчетов
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
- | ВариантыОтчетов.ТипОтчета = &ТипОтчета
+ | (ВариантыОтчетов.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Внутренний)
+ | ИЛИ ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных))
| И ВариантыОтчетов.Пользовательский = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
- | ЕСТЬNULL(втРазделенные.Ссылка, НЕОПРЕДЕЛЕНО) КАК Ссылка,
- | ЕСТЬNULL(втОбщие.ПредопределенныйВариант, НЕОПРЕДЕЛЕНО) КАК ПредопределенныйВариант,
- | втОбщие.Наименование,
- | втОбщие.Отчет,
- | втОбщие.КлючВарианта,
- | втОбщие.ВидимостьПоУмолчанию
+ | ВЫБОР
+ | КОГДА втПредопределенные.ПредопределенныйВариант ЕСТЬ NULL
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЛОЖЬ
+ | КОНЕЦ КАК УстановитьПометкуУдаления,
+ | ВЫБОР
+ | КОГДА втВариантыОтчетов.Ссылка ЕСТЬ NULL
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЛОЖЬ
+ | КОНЕЦ КАК СоздатьНовый,
+ | втПредопределенные.ПредопределенныйВариант КАК ПредопределенныйВариант,
+ | втПредопределенные.Наименование КАК Наименование,
+ | втПредопределенные.Отчет КАК Отчет,
+ | втПредопределенные.КлючВарианта КАК КлючВарианта,
+ | втПредопределенные.ГруппироватьПоОтчету КАК ГруппироватьПоОтчету,
+ | втПредопределенные.Родитель КАК ПредопределенныйВариантРодитель,
+ | втПредопределенные.ВидимостьПоУмолчанию КАК ВидимостьПоУмолчанию,
+ | втВариантыОтчетов.Ссылка КАК РеквизитСсылка,
+ | втВариантыОтчетов.Родитель КАК РеквизитРодитель,
+ | втВариантыОтчетов.ТипОтчета КАК РеквизитТипОтчета,
+ | втВариантыОтчетов.Отчет КАК РеквизитОтчет,
+ | втВариантыОтчетов.КлючВарианта КАК РеквизитКлючВарианта,
+ | втВариантыОтчетов.Наименование КАК РеквизитНаименование,
+ | втВариантыОтчетов.ПредопределенныйВариант КАК РеквизитПредопределенныйВариант,
+ | втВариантыОтчетов.ПометкаУдаления КАК РеквизитПометкаУдаления,
+ | втВариантыОтчетов.ВидимостьПоУмолчанию КАК РеквизитВидимостьПоУмолчанию
|ИЗ
- | втОбщие КАК втОбщие
- | ПОЛНОЕ СОЕДИНЕНИЕ втРазделенные КАК втРазделенные
- | ПО втОбщие.ПредопределенныйВариант = втРазделенные.ПредопределенныйВариант
- |ГДЕ
- | (втРазделенные.Ссылка ЕСТЬ NULL
- | Или втОбщие.ПредопределенныйВариант ЕСТЬ NULL
- | Или втОбщие.Наименование <> втРазделенные.Наименование
- | Или втОбщие.КлючВарианта <> втРазделенные.КлючВарианта
- | Или втРазделенные.ВидимостьПоУмолчаниюПереопределена
- | И втОбщие.ВидимостьПоУмолчанию <> втРазделенные.ВидимостьПоУмолчанию)";
+ | втВариантыОтчетов КАК втВариантыОтчетов
+ | ПОЛНОЕ СОЕДИНЕНИЕ втПредопределенные КАК втПредопределенные
+ | ПО втВариантыОтчетов.ПредопределенныйВариант = втПредопределенные.ПредопределенныйВариант";
Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("ТипОтчета", Перечисления.ТипыОтчетов.Внутренний);
Запрос.Текст = ТекстЗапроса;
+ Кэш = Новый Структура;
+ Кэш.Вставить("ПустаяСсылка", Справочники.ВариантыОтчетов.ПустаяСсылка());
+ Кэш.Вставить("ПоискРодителей", Новый Соответствие);
+ Кэш.Вставить("ОбработанныеПредопределенные", Новый Массив);
+ Кэш.Вставить("ОсновныеВарианты", Новый ТаблицаЗначений);
+ Кэш.ОсновныеВарианты.Колонки.Добавить("Отчет", Метаданные.Справочники.ВариантыОтчетов.Реквизиты.Отчет.Тип);
+ Кэш.ОсновныеВарианты.Колонки.Добавить("Вариант", Новый ОписаниеТипов("СправочникСсылка.ВариантыОтчетов"));
+
+ Шаблоны = Новый Структура;
+
+ Шаблоны.Вставить("УстановкаПометкиУдаления", Новый Структура);
+ Шаблоны.УстановкаПометкиУдаления.Вставить("Родитель", Кэш.ПустаяСсылка);
+ Шаблоны.УстановкаПометкиУдаления.Вставить("ПометкаУдаления", Истина);
+
+ Шаблоны.Вставить("ОбновлениеСведений", Новый Структура);
+ Шаблоны.ОбновлениеСведений.Вставить("ТипОтчета", Перечисления.ТипыОтчетов.Внутренний);
+ Шаблоны.ОбновлениеСведений.Вставить("ПометкаУдаления", Ложь);
+ Шаблоны.ОбновлениеСведений.Вставить("Родитель", Неопределено);
+ Шаблоны.ОбновлениеСведений.Вставить("Наименование", Неопределено);
+ Шаблоны.ОбновлениеСведений.Вставить("Отчет", Неопределено);
+ Шаблоны.ОбновлениеСведений.Вставить("КлючВарианта", Неопределено);
+ Шаблоны.ОбновлениеСведений.Вставить("ПредопределенныйВариант", Неопределено);
+ Шаблоны.ОбновлениеСведений.Вставить("ВидимостьПоУмолчанию", Неопределено);
+
+ СводнаяТаблицаПредопределенных = Запрос.Выполнить().Выгрузить();
+ СводнаяТаблицаПредопределенных.Колонки.Добавить("Обработана", Новый ОписаниеТипов("Булево"));
+ СводнаяТаблицаПредопределенных.Колонки.Добавить("Родитель", Новый ОписаниеТипов("СправочникСсылка.ВариантыОтчетов"));
+
+ // Обновление основных предопределенных вариантов (без родителя).
+ Поиск = Новый Структура("ПредопределенныйВариантРодитель, УстановитьПометкуУдаления", Справочники.ПредопределенныеВариантыОтчетов.ПустаяСсылка(), Ложь);
+ Найденные = СводнаяТаблицаПредопределенных.НайтиСтроки(Поиск);
+ Для Каждого СтрокаТаблицы Из Найденные Цикл
+ Если СтрокаТаблицы.Обработана Тогда
+ Продолжить;
+ КонецЕсли;
+ Если Кэш.ОбработанныеПредопределенные.Найти(СтрокаТаблицы.ПредопределенныйВариант) <> Неопределено Тогда
+ СтрокаТаблицы.УстановитьПометкуУдаления = Истина;
+ КонецЕсли;
+
+ СтрокаТаблицы.Родитель = Кэш.ПустаяСсылка;
+ ОбновитьРазделенныйПредопределенный(Кэш, Шаблоны, СтрокаТаблицы);
+
+ Если Не СтрокаТаблицы.УстановитьПометкуУдаления
+ И СтрокаТаблицы.ГруппироватьПоОтчету
+ И Кэш.ПоискРодителей.Получить(СтрокаТаблицы.Отчет) = Неопределено Тогда
+ Кэш.ПоискРодителей.Вставить(СтрокаТаблицы.Отчет, СтрокаТаблицы.РеквизитСсылка);
+ ОсновнойВариант = Кэш.ОсновныеВарианты.Добавить();
+ ОсновнойВариант.Отчет = СтрокаТаблицы.Отчет;
+ ОсновнойВариант.Вариант = СтрокаТаблицы.РеквизитСсылка;
+ КонецЕсли;
+ КонецЦикла;
+
+ // Обновление всех оставшихся предопределенных вариантов (подчиненных).
+ СводнаяТаблицаПредопределенных.Сортировать("УстановитьПометкуУдаления Возр");
+ Для Каждого СтрокаТаблицы Из СводнаяТаблицаПредопределенных Цикл
+ Если СтрокаТаблицы.Обработана Тогда
+ Продолжить;
+ КонецЕсли;
+ Если Кэш.ОбработанныеПредопределенные.Найти(СтрокаТаблицы.ПредопределенныйВариант) <> Неопределено Тогда
+ СтрокаТаблицы.УстановитьПометкуУдаления = Истина;
+ КонецЕсли;
+ Если СтрокаТаблицы.УстановитьПометкуУдаления Тогда
+ РодительСсылка = Кэш.ПустаяСсылка;
+ Иначе
+ РодительСсылка = Кэш.ПоискРодителей.Получить(СтрокаТаблицы.Отчет);
+ КонецЕсли;
+
+ СтрокаТаблицы.Родитель = РодительСсылка;
+ ОбновитьРазделенныйПредопределенный(Кэш, Шаблоны, СтрокаТаблицы);
+ КонецЦикла;
+
+ // Обновление родителей пользовательских вариантов.
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | ОсновныеВариантыОтчетов.Отчет,
+ | ОсновныеВариантыОтчетов.Вариант
+ |ПОМЕСТИТЬ втОсновные
+ |ИЗ
+ | &ОсновныеВариантыОтчетов КАК ОсновныеВариантыОтчетов
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | ВариантыОтчетов.Ссылка,
+ | втОсновные.Вариант КАК Родитель
+ |ИЗ
+ | Справочник.ВариантыОтчетов КАК ВариантыОтчетов
+ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОсновные КАК втОсновные
+ | ПО ВариантыОтчетов.Отчет = втОсновные.Отчет
+ | И ВариантыОтчетов.Родитель <> втОсновные.Вариант
+ | И ВариантыОтчетов.Ссылка <> втОсновные.Вариант
+ |ГДЕ
+ | (ВариантыОтчетов.Пользовательский
+ | ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления)";
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("ОсновныеВариантыОтчетов", Кэш.ОсновныеВарианты);
+ Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
- Если Выборка.ПредопределенныйВариант = Неопределено Тогда
- // Удалить (нет в общих, но есть в разделенных).
- ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина);
- ВариантОбъект.ДополнительныеСвойства.Вставить("ИндексироватьСхему", Ложь);
- ВариантОбъект.УстановитьПометкуУдаления(Истина);
- Иначе
- Если Выборка.Ссылка = Неопределено Тогда
- // Зарегистрировать (есть в общих, но нет в разделенных).
- ВариантОбъект = Справочники.ВариантыОтчетов.СоздатьЭлемент();
- ВариантОбъект.Заблокировать();
- Иначе
- // Актуализировать (изменилось наименование или ключ варианта).
- ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
- ВариантОбъект.Заблокировать();
- // Перенести пользовательские настройки.
- ЗаменитьКлючиПользовательскихНастроек(ВариантОбъект, Выборка);
- КонецЕсли;
- ВариантОбъект.ОбменДанными.Загрузка = Истина;
- ВариантОбъект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
- ВариантОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
- ВариантОбъект.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний;
- ЗаполнитьЗначенияСвойств(ВариантОбъект, Выборка, "Наименование, Отчет, КлючВарианта, ПредопределенныйВариант");
- Если Не ВариантОбъект.ВидимостьПоУмолчаниюПереопределена Тогда
- ВариантОбъект.ВидимостьПоУмолчанию = Выборка.ВидимостьПоУмолчанию;
- КонецЕсли;
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина);
- ВариантОбъект.Записать();
- КонецЕсли;
+ ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
+ ВариантОбъект.Родитель = Выборка.Родитель;
+ ВариантОбъект.Заблокировать();
+ ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВариантОбъект, ВариантОбъект.ЭтоНовый(), Ложь);
КонецЦикла;
ЗавершениеПроцедуры(ПредставлениеПроцедуры);
КонецПроцедуры
+// Обновляет предопределенные данные в разделенном режиме.
+Процедура ОбновитьРазделенныйПредопределенный(Кэш, Шаблоны, СтрокаТаблицы)
+ Если СтрокаТаблицы.Обработана Тогда
+ Возврат;
+ КонецЕсли;
+
+ СтрокаТаблицы.Обработана = Истина;
+
+ Если СтрокаТаблицы.УстановитьПометкуУдаления Тогда // Пометить к удалению.
+ Если СовпадаютЗначенияСвойств(Шаблоны.УстановкаПометкиУдаления, СтрокаТаблицы, "Реквизит") Тогда
+ Возврат; // Уже помечен.
+ КонецЕсли;
+ ВариантОбъект = СтрокаТаблицы.РеквизитСсылка.ПолучитьОбъект();
+ ЗаполнитьЗначенияСвойств(ВариантОбъект, Шаблоны.УстановкаПометкиУдаления);
+ Иначе
+ Если СтрокаТаблицы.ГруппироватьПоОтчету И Не ЗначениеЗаполнено(СтрокаТаблицы.ПредопределенныйВариантРодитель) Тогда
+ СтрокаТаблицы.Родитель = Кэш.ПустаяСсылка;
+ КонецЕсли;
+ Кэш.ОбработанныеПредопределенные.Добавить(СтрокаТаблицы.ПредопределенныйВариант);
+ ЗаполнитьЗначенияСвойств(Шаблоны.ОбновлениеСведений, СтрокаТаблицы);
+ Шаблоны.ОбновлениеСведений.ПометкаУдаления = Ложь;
+ Если СтрокаТаблицы.СоздатьНовый Тогда // Добавить.
+ ВариантОбъект = Справочники.ВариантыОтчетов.СоздатьЭлемент();
+ ВариантОбъект.ПредопределенныйВариант = СтрокаТаблицы.ПредопределенныйВариант;
+ ВариантОбъект.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний;
+ ВариантОбъект.Пользовательский = Ложь;
+ Иначе // Обновить (если есть изменения).
+ Если СовпадаютЗначенияСвойств(Шаблоны.ОбновлениеСведений, СтрокаТаблицы, "Реквизит") Тогда
+ Возврат; // Изменений нет.
+ КонецЕсли;
+ ЗаменитьКлючиПользовательскихНастроек(Шаблоны.ОбновлениеСведений, СтрокаТаблицы); // Перенос пользовательских настроек.
+ ВариантОбъект = СтрокаТаблицы.РеквизитСсылка.ПолучитьОбъект();
+ КонецЕсли;
+ Если ВариантОбъект.ВидимостьПоУмолчаниюПереопределена Тогда
+ ИсключаяСвойства = "ВидимостьПоУмолчанию";
+ Иначе
+ ИсключаяСвойства = Неопределено;
+ КонецЕсли;
+ ЗаполнитьЗначенияСвойств(ВариантОбъект, Шаблоны.ОбновлениеСведений, , ИсключаяСвойства);
+ КонецЕсли;
+
+ ВариантОбъект.Заблокировать();
+ ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВариантОбъект, ВариантОбъект.ЭтоНовый(), Ложь);
+
+ СтрокаТаблицы.РеквизитСсылка = ВариантОбъект.Ссылка;
+КонецПроцедуры
+
+// Возвращает Истина если совпадают значения свойств Структуры и Коллекции с Префиксом.
+Функция СовпадаютЗначенияСвойств(Структура, Коллекция, ПрефиксВКоллекции = "")
+ Для Каждого КлючИЗначение Из Структура Цикл
+ Если Коллекция[ПрефиксВКоллекции + КлючИЗначение.Ключ] <> КлючИЗначение.Значение Тогда
+ Возврат Ложь;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Истина;
+КонецФункции
+
// Установка пометки удаления вариантов удаленных отчетов.
Процедура ПометитьНаУдалениеВариантыУдаленныхОтчетов(Кэш, ОбщиеДанные)
Запрос = Новый Запрос;
@@ -2706,12 +2981,8 @@
Для Каждого ВариантСсылка Из МассивСсылокВариантов Цикл
ВариантОбъект = ВариантСсылка.ПолучитьОбъект();
ВариантОбъект.Заблокировать();
- ВариантОбъект.ОбменДанными.Загрузка = Истина;
- ВариантОбъект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь;
- ВариантОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
- ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина);
- ВариантОбъект.ДополнительныеСвойства.Вставить("ИндексироватьСхему", Ложь);
- ВариантОбъект.УстановитьПометкуУдаления(Истина);
+ ВариантОбъект.ПометкаУдаления = Истина;
+ ЗаписатьПредопределенный(ВариантОбъект);
КонецЦикла;
ЗавершениеПроцедуры(ПредставлениеПроцедуры);
@@ -2777,6 +3048,12 @@
ХранилищеПользовательскихНастроекОтчетов.Удалить(СтарыйКлючОбъекта, Неопределено, Неопределено);
КонецПроцедуры
+// Записывает предопределенный объект.
+Процедура ЗаписатьПредопределенный(ВариантОбъект)
+ ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных");
+ ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВариантОбъект, ВариантОбъект.ЭтоНовый(), Ложь);
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обновление информационной базы / Переход к редакции 2.1
@@ -2785,7 +3062,7 @@
//
Процедура Редакция21ПривестиНастройкиПоРазделам(ВариантОбъект)
- Найденные = ВариантОбъект.Размещение.НайтиСтроки(Новый Структура("РазделИлиГруппа", Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка()));
+ Найденные = ВариантОбъект.Размещение.НайтиСтроки(Новый Структура("Подсистема", Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка()));
Для Каждого СтрокаТаблицы Из Найденные Цикл
Если Не ЗначениеЗаполнено(СтрокаТаблицы.УдалитьПодсистема) Тогда
@@ -2807,7 +3084,7 @@
КонецЕсли;
СтрокаТаблицы.Использование = Истина;
- СтрокаТаблицы.РазделИлиГруппа = ПодсистемаСсылка;
+ СтрокаТаблицы.Подсистема = ПодсистемаСсылка;
СтрокаТаблицы.УдалитьПодсистема = "";
СтрокаТаблицы.УдалитьНазвание = "";
@@ -2820,32 +3097,29 @@
//
Процедура Редакция21ПеренестиПользовательскиеНастройкиВРегистр(ВариантОбъект)
ТаблицаПодсистем = ВариантОбъект.Размещение.Выгрузить(Новый Структура("Использование", Истина));
- ТаблицаПодсистем.Свернуть("РазделИлиГруппа");
+ ТаблицаПодсистем.Свернуть("Подсистема");
ТаблицаПользователей = ВариантОбъект.УдалитьИсключенияБыстрогоДоступа.Выгрузить();
ТаблицаПользователей.Колонки.УдалитьПользователь.Имя = "Пользователь";
ТаблицаПользователей.Свернуть("Пользователь");
- НаборЗаписей = РегистрыСведений.НастройкиВариантовОтчетов.СоздатьНаборЗаписей();
- НаборЗаписей.Отбор.Вариант.Установить(ВариантОбъект.Ссылка, Истина);
+ ПакетНастроек = Новый ТаблицаЗначений;
+ ПакетНастроек.Колонки.Добавить("Подсистема", ТаблицаПодсистем.Колонки.Подсистема.Тип);
+ ПакетНастроек.Колонки.Добавить("Пользователь", ТаблицаПользователей.Колонки.Пользователь.Тип);
+ ПакетНастроек.Колонки.Добавить("Видимость", Новый ОписаниеТипов("Булево"));
Для Каждого СтрокаПодсистема Из ТаблицаПодсистем Цикл
-
Для Каждого СтрокаПользователь Из ТаблицаПользователей Цикл
-
- Запись = НаборЗаписей.Добавить();
- Запись.Активность = Истина;
- Запись.Вариант = ВариантОбъект.Ссылка;
- Запись.РазделИлиГруппа = СтрокаПодсистема.РазделИлиГруппа;
- Запись.Пользователь = СтрокаПользователь.Пользователь;
- Запись.Видимость = Не ВариантОбъект.ВидимостьПоУмолчанию;
-
+ Настройка = ПакетНастроек.Добавить();
+ Настройка.Подсистема = СтрокаПодсистема.РазделИлиГруппа;
+ Настройка.Пользователь = СтрокаПользователь.Пользователь;
+ Настройка.Видимость = Не ВариантОбъект.ВидимостьПоУмолчанию;
КонецЦикла;
-
КонецЦикла;
- НаборЗаписей.Записать(Истина);
-
+ Измерения = Новый Структура("Вариант", ВариантОбъект.Ссылка);
+ Ресурсы = Новый Структура("БыстрыйДоступ", Ложь);
+ РегистрыСведений.НастройкиВариантовОтчетов.ЗаписатьПакетНастроек(ПакетНастроек, Измерения, Ресурсы, Истина);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -2862,8 +3136,9 @@
Инструкция.Оформление.Вставить("ТолькоПросмотр", Истина);
ДобавитьЭлементУсловногоОформления(Форма, Инструкция);
+ Инструкция = ИнструкцияУсловногоОформления();
Инструкция.Поля = "ДеревоПодсистемИспользование, ДеревоПодсистемВажность";
- Инструкция.Оформление.Очистить();
+ Инструкция.Отборы.Вставить("ДеревоПодсистем.Приоритет", "");
Инструкция.Оформление.Вставить("Отображать", Ложь);
ДобавитьЭлементУсловногоОформления(Форма, Инструкция);
КонецПроцедуры
@@ -2919,52 +3194,55 @@
// Формирует дерево подсистем по данным варианта-основания.
Функция ДеревоПодсистемСформировать(Форма, ВариантОснование) Экспорт
- ДеревоИсточник = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя();
+ // Пустое дерево без настроек.
+ Прототип = Форма.РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений"));
+ ДеревоПодсистем = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя().Скопировать();
+ Для Каждого КолонкаПрототипа Из Прототип.Колонки Цикл
+ Если ДеревоПодсистем.Колонки.Найти(КолонкаПрототипа.Имя) = Неопределено Тогда
+ ДеревоПодсистем.Колонки.Добавить(КолонкаПрототипа.Имя, КолонкаПрототипа.ТипЗначения);
+ КонецЕсли;
+ КонецЦикла;
- ДеревоПриемник = Форма.РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений"));
- ДеревоПриемник.Строки.Очистить();
+ // Параметры.
+ Контекст = Новый Структура("ДеревоПодсистем");
+ Контекст.ДеревоПодсистем = ДеревоПодсистем;
- РазмещениеПредопределенного = Неопределено;
- Если Не ВариантОснование.Пользовательский И ВариантОснование.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний Тогда
- РазмещениеПредопределенного = ВариантОснование.ПредопределенныйВариант.Размещение;
- КонецЕсли;
+ // Размещение, настроенное администратором.
+ Подсистемы = Новый Массив;
+ Для Каждого СтрокаРазмещения Из ВариантОснование.Размещение Цикл
+ Подсистемы.Добавить(СтрокаРазмещения.Подсистема);
+ ДеревоПодсистемЗарегистрироватьНастройкиПодсистемы(Контекст, СтрокаРазмещения, СтрокаРазмещения.Использование);
+ КонецЦикла;
- ДобавитьПодсистемыВДерево(ДеревоПриемник, ДеревоИсточник, ВариантОснование, РазмещениеПредопределенного);
+ // Размещение, предопределенное разработчиком.
+ Запрос = Новый Запрос("Выбрать * Из Справочник.ПредопределенныеВариантыОтчетов.Размещение Где Ссылка = &Ссылка И Не Подсистема В (&Подсистемы)");
+ Запрос.УстановитьПараметр("Ссылка", ВариантОснование.ПредопределенныйВариант);
+ Запрос.УстановитьПараметр("Подсистемы", Подсистемы); // Не зачитывать настройки подсистем, переопределенные администратором.
+ РазмещениеПредопределенного = Запрос.Выполнить().Выгрузить();
+ Для Каждого СтрокаРазмещения Из РазмещениеПредопределенного Цикл
+ ДеревоПодсистемЗарегистрироватьНастройкиПодсистемы(Контекст, СтрокаРазмещения, Истина);
+ КонецЦикла;
- Возврат ДеревоПриемник;
+ Возврат Контекст.ДеревоПодсистем;
КонецФункции
-// Добавляет строки дерева-источника в строки дерева-приемника.
-Процедура ДобавитьПодсистемыВДерево(ПриемникРодитель, ИсточникРодитель, ВариантОснование, РазмещениеПредопределенного)
- Для Каждого Источник Из ИсточникРодитель.Строки Цикл
- Приемник = ПриемникРодитель.Строки.Добавить();
- ЗаполнитьЗначенияСвойств(Приемник, Источник);
-
- Найденные = ВариантОснование.Размещение.НайтиСтроки(Новый Структура("РазделИлиГруппа", Приемник.Ссылка));
- НайденВПредопределенном = Ложь;
- Если Найденные.Количество() = 0 И РазмещениеПредопределенного <> Неопределено Тогда
- НайденВПредопределенном = Истина;
- Найденные = РазмещениеПредопределенного.НайтиСтроки(Новый Структура("Подсистема", Приемник.Ссылка));
- КонецЕсли;
- Если Найденные.Количество() > 0 Тогда
- СтрокаТаблицы = Найденные[0];
- Если СтрокаТаблицы.Важный Тогда
- Приемник.ВажностьПоУмолчанию = ВариантыОтчетовКлиентСервер.ПредставлениеВажный();
- ИначеЕсли СтрокаТаблицы.СмТакже Тогда
- Приемник.ВажностьПоУмолчанию = ВариантыОтчетовКлиентСервер.ПредставлениеСмТакже();
- Иначе
- Приемник.ВажностьПоУмолчанию = "";
- КонецЕсли;
-
- Приемник.ИспользованиеПоУмолчанию = ?(НайденВПредопределенном Или СтрокаТаблицы.Использование, 1, 0);
- КонецЕсли;
-
- Приемник.Важность = Приемник.ВажностьПоУмолчанию;
- Приемник.Использование = Приемник.ИспользованиеПоУмолчанию;
-
- // Рекурсия
- ДобавитьПодсистемыВДерево(Приемник, Источник, ВариантОснование, РазмещениеПредопределенного);
- КонецЦикла;
+// Добавляет подсистему в дерево.
+Процедура ДеревоПодсистемЗарегистрироватьНастройкиПодсистемы(Контекст, СтрокаРазмещения, Использование)
+ Найденные = Контекст.ДеревоПодсистем.Строки.НайтиСтроки(Новый Структура("Ссылка", СтрокаРазмещения.Подсистема), Истина);
+ Если Найденные.Количество() = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
+ СтрокаДерева = Найденные[0];
+
+ Если СтрокаРазмещения.Важный Тогда
+ СтрокаДерева.Важность = ВариантыОтчетовКлиентСервер.ПредставлениеВажный();
+ ИначеЕсли СтрокаРазмещения.СмТакже Тогда
+ СтрокаДерева.Важность = ВариантыОтчетовКлиентСервер.ПредставлениеСмТакже();
+ Иначе
+ СтрокаДерева.Важность = "";
+ КонецЕсли;
+ СтрокаДерева.Использование = Использование;
КонецПроцедуры
// Сохраняет настройки размещения, измененные пользователем в табличную часть варианта отчета.
@@ -2975,53 +3253,47 @@
// Кэш - Структура - Необязательный.
//
Процедура ДеревоПодсистемЗаписать(Форма, ВариантОбъект, Кэш = Неопределено) Экспорт
- Если Кэш <> Неопределено И Кэш.Свойство("ИзмененияПодсистем") Тогда
+ Если Кэш = Неопределено Тогда
+ Кэш = Новый Структура;
+ КонецЕсли;
+ Если Кэш.Свойство("ИзмененияПодсистем") Тогда
ИзмененияПодсистем = Кэш.ИзмененияПодсистем;
Иначе
ДеревоПриемник = Форма.РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений"));
- ИзмененияПодсистем = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("ИзмененПользователем", Истина), Истина);
- Если Кэш <> Неопределено Тогда
- Кэш.Вставить("ИзмененияПодсистем", ИзмененияПодсистем);
+ Если ВариантОбъект.ЭтоНовый() Тогда
+ ИзмененияПодсистем = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 1), Истина);
+ Иначе
+ ИзмененияПодсистем = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Модифицированность", Истина), Истина);
КонецЕсли;
+ Кэш.Вставить("ИзмененияПодсистем", ИзмененияПодсистем);
КонецЕсли;
- Если ИзмененияПодсистем.Количество() = 0 Тогда
- Возврат;
- КонецЕсли;
-
- Для Каждого Изменение Из ИзмененияПодсистем Цикл
- СтрокаТабличнойЧасти = ВариантОбъект.Размещение.Найти(Изменение.Ссылка, "РазделИлиГруппа");
+ Для Каждого Подсистема Из ИзмененияПодсистем Цикл
+ СтрокаТабличнойЧасти = ВариантОбъект.Размещение.Найти(Подсистема.Ссылка, "Подсистема");
Если СтрокаТабличнойЧасти = Неопределено Тогда
// Необходимо зарегистрировать настройку размещения варианта безусловно (даже флажок Использование отключен)
// - только тогда эта настройка заменит предопределенную (из неразделенного справочника).
СтрокаТабличнойЧасти = ВариантОбъект.Размещение.Добавить();
- СтрокаТабличнойЧасти.РазделИлиГруппа = Изменение.Ссылка;
- ЭтоНоваяСтрока = Истина;
+ СтрокаТабличнойЧасти.Подсистема = Подсистема.Ссылка;
+ КонецЕсли;
+
+ Если Подсистема.Использование = 0 Тогда
+ СтрокаТабличнойЧасти.Использование = Ложь;
+ ИначеЕсли Подсистема.Использование = 1 Тогда
+ СтрокаТабличнойЧасти.Использование = Истина;
Иначе
- ЭтоНоваяСтрока = Ложь;
+ // Оставить как есть
КонецЕсли;
- Если ЭтоНоваяСтрока Или Изменение.Использование <> Изменение.ИспользованиеПоУмолчанию Тогда
- Если Изменение.Использование = 0 Тогда
- СтрокаТабличнойЧасти.Использование = Ложь;
- ИначеЕсли Изменение.Использование = 1 Тогда
- СтрокаТабличнойЧасти.Использование = Истина;
- Иначе
- // Оставить как есть
- КонецЕсли;
- КонецЕсли;
-
- Если ЭтоНоваяСтрока Или Изменение.Важность <> Изменение.ВажностьПоУмолчанию Тогда
- Если Изменение.Важность = ВариантыОтчетовКлиентСервер.ПредставлениеВажный() Тогда
- СтрокаТабличнойЧасти.Важный = Истина;
- СтрокаТабличнойЧасти.СмТакже = Ложь;
- ИначеЕсли Изменение.Важность = ВариантыОтчетовКлиентСервер.ПредставлениеСмТакже() Тогда
- СтрокаТабличнойЧасти.Важный = Ложь;
- СтрокаТабличнойЧасти.СмТакже = Истина;
- Иначе
- СтрокаТабличнойЧасти.Важный = Ложь;
- СтрокаТабличнойЧасти.СмТакже = Ложь;
- КонецЕсли;
+ Если Подсистема.Важность = ВариантыОтчетовКлиентСервер.ПредставлениеВажный() Тогда
+ СтрокаТабличнойЧасти.Важный = Истина;
+ СтрокаТабличнойЧасти.СмТакже = Ложь;
+ ИначеЕсли Подсистема.Важность = ВариантыОтчетовКлиентСервер.ПредставлениеСмТакже() Тогда
+ СтрокаТабличнойЧасти.Важный = Ложь;
+ СтрокаТабличнойЧасти.СмТакже = Истина;
+ Иначе
+ СтрокаТабличнойЧасти.Важный = Ложь;
+ СтрокаТабличнойЧасти.СмТакже = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -3384,12 +3656,842 @@
КонецЕсли;
КонецПроцедуры
+////////////////////////////////////////////////////////////////////////////////
+// Уменьшение количества пользовательских настроек.
+
+// Вызывается из события ПриЗаписи вариантов. Часть проверок выполняется до вызова.
+Функция УменьшитьКоличествоБыстрыхНастроек(ВариантОбъект, ОтчетОбъект) Экспорт
+ Перем НастройкиКД, ЭтоПредопределенный;
+
+ // Схема компоновки, на основании которой будет выполняться отчет.
+ СхемаКД = ОтчетОбъект.СхемаКомпоновкиДанных;
+ Если СхемаКД = Неопределено Тогда
+ Возврат Ложь; // Отчет не на СКД. Заполнение не требуется.
+ КонецЕсли;
+
+ // Чтение настроек из данных варианта.
+ НастройкиКД = ВариантОбъект.Настройки.Получить();
+ Если ТипЗнч(НастройкиКД) <> Тип("НастройкиКомпоновкиДанных") Тогда
+ ТекстОшибки = НСтр("ru = 'Обнаружены пустые настройки пользовательского варианта ""%1"" отчета ""%2"".'");
+ ОшибкаПоВарианту(ВариантОбъект.Ссылка, ТекстОшибки, ВариантОбъект.КлючВарианта, ВариантОбъект.Отчет);
+ Возврат Ложь; // Возникла проблема.
+ КонецЕсли;
+
+ ИнформацияОбОшибке = Неопределено;
+ Попытка
+ // Описывает связь настроек компоновки данных и схемы компоновки данных.
+ КомпоновщикНастроекКД = ОтчетОбъект.КомпоновщикНастроек;
+
+ // Выполняет инициализацию компоновщика и его настроек (Настройки) источником доступных настроек.
+ КомпоновщикНастроекКД.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКД));
+
+ // Загружает настройки в компоновщик.
+ КомпоновщикНастроекКД.ЗагрузитьНастройки(НастройкиКД);
+
+ Информация = РасширеннаяИнформацияОНастройках(КомпоновщикНастроекКД);
+ БыстрыеНастройки = Информация.ТаблицаНастроек.Скопировать(Новый Структура("ВыводРазрешен, Быстрая", Истина, Истина));
+ Если БыстрыеНастройки.Количество() <= 2 Тогда
+ Возврат Ложь; // Уменьшение количества не требуется.
+ КонецЕсли;
+
+ Исключаемые = БыстрыеНастройки.НайтиСтроки(Новый Структура("ТипЭлементов", "СтандартныйПериод"));
+ Для Каждого СтрокаТаблицы Из Исключаемые Цикл
+ БыстрыеНастройки.Удалить(СтрокаТаблицы);
+ КонецЦикла;
+
+ Потрачено = Исключаемые.Количество();
+ Для Каждого СтрокаТаблицы Из БыстрыеНастройки Цикл
+ Если Потрачено < 2 Тогда
+ Потрачено = Потрачено + 1;
+ Продолжить;
+ КонецЕсли;
+ СтрокаТаблицы.ВариантаСКД.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
+ КонецЦикла;
+
+ НовыеНастройки = Новый ХранилищеЗначения(КомпоновщикНастроекКД.Настройки);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ КонецПопытки;
+
+ Если ИнформацияОбОшибке <> Неопределено Тогда
+ ТекстОшибки = НСтр("ru = 'Вариант ""%1"" отчета ""%2"":'")
+ + Символы.ПС + НСтр("ru = 'При уменьшении количества быстрых настроек пользовательского возникла ошибка:'")
+ + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
+ ОшибкаПоВарианту(ВариантОбъект.Ссылка, ТекстОшибки, ВариантОбъект.КлючВарианта, ВариантОбъект.Отчет);
+ Возврат Ложь; // Возникла проблема.
+ КонецЕсли;
+
+ ВариантОбъект.Настройки = НовыеНастройки;
+ Возврат Истина;
+КонецФункции
+
+Функция РасширеннаяИнформацияОНастройках(КомпоновщикНастроекКД)
+ НастройкиКД = КомпоновщикНастроекКД.Настройки;
+ ПользовательскиеНастройкиКД = КомпоновщикНастроекКД.ПользовательскиеНастройки;
+
+ ДеревоВарианта = Новый ДеревоЗначений;
+ ДеревоВарианта.Колонки.Добавить("Настройка");
+ ДеревоВарианта.Колонки.Добавить("ТипНастройки", Новый ОписаниеТипов("Строка"));
+ ДеревоВарианта.Колонки.Добавить("Заголовок", Новый ОписаниеТипов("Строка"));
+ ДеревоВарианта.Колонки.Добавить("ЕстьСтруктура", Новый ОписаниеТипов("Булево"));
+ ДеревоВарианта.Колонки.Добавить("ЕстьПоляИОформление", Новый ОписаниеТипов("Булево"));
+ ДеревоВариантаЗарегистрироватьУзел(НастройкиКД, ДеревоВарианта.Строки);
+
+ ТаблицаНастроек = Новый ТаблицаЗначений;
+ ТаблицаНастроек.Колонки.Добавить("ПользовательскаяСКД");
+ ТаблицаНастроек.Колонки.Добавить("ВариантаСКД");
+ ТаблицаНастроек.Колонки.Добавить("ДоступнаяСКД");
+ ТаблицаНастроек.Колонки.Добавить("ИдентификаторСКД", Новый ОписаниеТипов("Строка"));
+ ТаблицаНастроек.Колонки.Добавить("ИдентификаторЭлемента", Новый ОписаниеТипов("Строка"));
+ ТаблицаНастроек.Колонки.Добавить("ИндексВКоллекции", Новый ОписаниеТипов("Число"));
+ ТаблицаНастроек.Колонки.Добавить("ИдентификаторВКоллекции");
+
+ ТаблицаНастроек.Колонки.Добавить("СтрокаДерева");
+ ТаблицаНастроек.Колонки.Добавить("ИнформацияОТипах");
+
+ ТаблицаНастроек.Колонки.Добавить("Тип", Новый ОписаниеТипов("Строка"));
+ ТаблицаНастроек.Колонки.Добавить("Подтип", Новый ОписаниеТипов("Строка"));
+
+ ТаблицаНастроек.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
+ ТаблицаНастроек.Колонки.Добавить("Быстрая", Новый ОписаниеТипов("Булево"));
+ ТаблицаНастроек.Колонки.Добавить("Обычная", Новый ОписаниеТипов("Булево"));
+ ТаблицаНастроек.Колонки.Добавить("ВыводРазрешен", Новый ОписаниеТипов("Булево"));
+ ТаблицаНастроек.Колонки.Добавить("ВыводитьФлажок", Новый ОписаниеТипов("Булево"));
+ ТаблицаНастроек.Колонки.Добавить("ВыводитьЗначение", Новый ОписаниеТипов("Булево"));
+ ТаблицаНастроек.Колонки.Добавить("ВводСписком", Новый ОписаниеТипов("Булево"));
+ ТаблицаНастроек.Колонки.Добавить("ЗначенияДляВыбора", Новый ОписаниеТипов("Массив"));
+ ТаблицаНастроек.Колонки.Добавить("ОграничиватьВыборУказаннымиЗначениями", Новый ОписаниеТипов("Булево"));
+ ТаблицаНастроек.Колонки.Добавить("ДобавляемыеРеквизиты", Новый ОписаниеТипов("Массив"));
+
+ ТаблицаНастроек.Колонки.Добавить("Значение");
+ ТаблицаНастроек.Колонки.Добавить("ПолеСКД");
+ ТаблицаНастроек.Колонки.Добавить("ВидСравнения");
+ ТаблицаНастроек.Колонки.Добавить("ТипЭлементов", Новый ОписаниеТипов("Строка"));
+ ТаблицаНастроек.Колонки.Добавить("ВыборТолькоГрупп", Новый ОписаниеТипов("Булево"));
+
+ Режимы = РежимОтображенияЭлементаНастройкиКомпоновкиДанных;
+
+ // Перебор пользовательских настроек.
+ НаборПользовательскихНастроек = ПользовательскиеНастройкиКД.Элементы;
+ Для Каждого ПользовательскаяНастройка Из НаборПользовательскихНастроек Цикл
+ СвойстваНастройки = ТаблицаНастроек.Добавить();
+ СвойстваНастройки.ПользовательскаяСКД = ПользовательскаяНастройка;
+
+ РежимОтображения = ПользовательскаяНастройка.РежимОтображения;
+ Если РежимОтображения = Режимы.Недоступный Тогда
+ Продолжить;
+ КонецЕсли;
+
+ СвойстваНастройки.ИндексВКоллекции = НаборПользовательскихНастроек.Индекс(ПользовательскаяНастройка);
+ СвойстваНастройки.ИдентификаторВКоллекции = ПользовательскиеНастройкиКД.ПолучитьИдентификаторПоОбъекту(ПользовательскаяНастройка);
+ СвойстваНастройки.ИдентификаторСКД = ПользовательскаяНастройка.ИдентификаторПользовательскойНастройки;
+ Если Не ЗначениеЗаполнено(СвойстваНастройки.ИдентификаторСКД) Тогда
+ Продолжить;
+ КонецЕсли;
+ СвойстваНастройки.ИдентификаторЭлемента = ПривестиИдентификаторКИмени(СвойстваНастройки.ИдентификаторСКД);
+ СвойстваНастройки.Тип = ТипНастройкиСтрокой(ТипЗнч(ПользовательскаяНастройка));
+ СвойстваНастройки.ПользовательскаяСКД = ПользовательскаяНастройка;
+
+ ДеревоВариантаНайти(НастройкиКД, ДеревоВарианта, СвойстваНастройки);
+ Если СвойстваНастройки.ВариантаСКД = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек"
+ И СвойстваНастройки.ДоступнаяСКД = Неопределено Тогда
+ Продолжить; // Имя параметра изменилось или параметр был удален.
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора"
+ И СвойстваНастройки.ДоступнаяСКД = Неопределено Тогда
+ Продолжить; // Имя поля изменилось или поле было удалено.
+ КонецЕсли;
+
+ Если РежимОтображения = Режимы.Авто Тогда
+ РежимОтображения = СвойстваНастройки.ВариантаСКД.РежимОтображения;
+ КонецЕсли;
+ Если РежимОтображения = Режимы.БыстрыйДоступ Тогда
+ СвойстваНастройки.Быстрая = Истина;
+ ИначеЕсли РежимОтображения = Режимы.Обычный Тогда
+ СвойстваНастройки.Обычная = Истина;
+ Иначе
+ Продолжить;
+ КонецЕсли;
+
+ СвойстваНастройки.ВыводРазрешен = Истина;
+ СвойстваНастройки.ВыводитьФлажок = Истина;
+ СвойстваНастройки.ВыводитьЗначение = Истина;
+
+ СтруктураПредставлений = Новый Структура("Представление, ПредставлениеПользовательскойНастройки", "", "");
+ ЗаполнитьЗначенияСвойств(СтруктураПредставлений, СвойстваНастройки.ВариантаСКД);
+ Если ЗначениеЗаполнено(СтруктураПредставлений.Представление) Тогда
+ СвойстваНастройки.Представление = СтруктураПредставлений.Представление;
+ СвойстваНастройки.ВыводитьЗначение = Ложь;
+ ИначеЕсли ЗначениеЗаполнено(СтруктураПредставлений.ПредставлениеПользовательскойНастройки) Тогда
+ СвойстваНастройки.Представление = СтруктураПредставлений.ПредставлениеПользовательскойНастройки;
+ ИначеЕсли СвойстваНастройки.ДоступнаяСКД <> Неопределено И ЗначениеЗаполнено(СвойстваНастройки.ДоступнаяСКД.Заголовок) Тогда
+ СвойстваНастройки.Представление = СвойстваНастройки.ДоступнаяСКД.Заголовок;
+ Иначе
+ СвойстваНастройки.Представление = ПредставлениеПользовательскойНастройки(СвойстваНастройки);
+ КонецЕсли;
+
+ Если СвойстваНастройки.Тип = "ГруппаЭлементовОтбора"
+ Или СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта"
+ Или СвойстваНастройки.Тип = "Группировка"
+ Или СвойстваНастройки.Тип = "Таблица"
+ Или СвойстваНастройки.Тип = "ГруппировкаТаблицы"
+ Или СвойстваНастройки.Тип = "Диаграмма"
+ Или СвойстваНастройки.Тип = "ГруппировкаДиаграммы"
+ Или СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+
+ СвойстваНастройки.ВыводитьЗначение = Ложь;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек"
+ Или СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ СвойстваНастройки.Значение = ПользовательскаяНастройка.Значение;
+ Иначе
+ СвойстваНастройки.Значение = ПользовательскаяНастройка.ПравоеЗначение;
+ КонецЕсли;
+
+ СвойстваНастройки.ИнформацияОТипах = АнализТипов(СвойстваНастройки.ДоступнаяСКД.ТипЗначения); // Определение типа значения настройки.
+
+ Если СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ Если СвойстваНастройки.ДоступнаяСКД.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда Тогда
+ СвойстваНастройки.ВыводитьФлажок = Ложь;
+ ПользовательскаяНастройка.Использование = Истина;
+ КонецЕсли;
+ Если СвойстваНастройки.ДоступнаяСКД.ДоступенСписокЗначений Тогда
+ СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
+ Иначе
+ СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ КонецЕсли;
+ СвойстваНастройки.ПолеСКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных." + Строка(СвойстваНастройки.ВариантаСКД.Параметр));
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ СвойстваНастройки.ВидСравнения = ПользовательскаяНастройка.ВидСравнения;
+ СвойстваНастройки.ПолеСКД = СвойстваНастройки.ВариантаСКД.ЛевоеЗначение;
+ КонецЕсли;
+
+ Если СвойстваНастройки.ИнформацияОТипах.СодержитТипПериод
+ И СвойстваНастройки.ИнформацияОТипах.КоличествоТипов = 1 Тогда
+
+ СвойстваНастройки.ТипЭлементов = "СтандартныйПериод";
+
+ ИначеЕсли Не СвойстваНастройки.ВыводитьФлажок
+ И СвойстваНастройки.ИнформацияОТипах.СодержитТипБулево
+ И СвойстваНастройки.ИнформацияОТипах.КоличествоТипов = 1 Тогда
+
+ СвойстваНастройки.ТипЭлементов = "ТолькоФлажок";
+
+ ИначеЕсли СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено
+ Или СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено Тогда
+
+ СвойстваНастройки.ВыводитьЗначение = Ложь;
+ СвойстваНастройки.ТипЭлементов = "ТолькоФлажок";
+ СвойстваНастройки.Представление = СвойстваНастройки.Представление + ": " + НРег(Строка(СвойстваНастройки.ВидСравнения));
+
+ ИначеЕсли СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке
+ Или СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии
+ Или СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке
+ Или СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда
+
+ СвойстваНастройки.ВводСписком = Истина;
+ СвойстваНастройки.ТипЭлементов = "СписокСПодбором";
+
+ Иначе
+
+ СвойстваНастройки.ТипЭлементов = "ПолеВвода";
+ Если СвойстваНастройки.ВидСравнения <> ВидСравненияКомпоновкиДанных.Равно
+ И СвойстваНастройки.ВидСравнения <> ВидСравненияКомпоновкиДанных.Содержит Тогда
+ СвойстваНастройки.Представление = СвойстваНастройки.Представление + " (" + НРег(Строка(СвойстваНастройки.ВидСравнения)) + ")";
+ КонецЕсли;
+ Если СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии
+ Или СвойстваНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии Тогда
+ СвойстваНастройки.ВыборТолькоГрупп = Истина;
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ СвойстваНастройки.ТипЭлементов = "ТаблицаПорядкаСФлажками";
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+
+ СвойстваНастройки.ТипЭлементов = "ТаблицаПорядкаСФлажками";
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек"
+ И СвойстваНастройки.Подтип = "Структура" Тогда
+
+ СвойстваНастройки.ТипЭлементов = "ТаблицаПорядкаСФлажками";
+
+ Иначе
+
+ СвойстваНастройки.ТипЭлементов = "СвязьСКомпоновщиком";
+
+ КонецЕсли;
+
+ Если Не СвойстваНастройки.ВыводитьЗначение Тогда
+ СвойстваНастройки.ТипЭлементов = "Нет";
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Результат = Новый Структура;
+ Результат.Вставить("ДеревоВарианта", ДеревоВарианта);
+ Результат.Вставить("ТаблицаНастроек", ТаблицаНастроек);
+
+ Возврат Результат;
+КонецФункции
+
+Функция ПривестиИдентификаторКИмени(Идентификатор)
+ Возврат СтрЗаменить(Строка(Идентификатор), "-", "");
+КонецФункции
+
+Функция ТипНастройкиСтрокой(ТипНастройки)
+ Если ТипНастройки = Тип("НастройкиКомпоновкиДанных") Тогда
+ Возврат "Настройки";
+ ИначеЕсли ТипНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
+ Возврат "НастройкиВложенногоОбъекта";
+
+ ИначеЕсли ТипНастройки = Тип("ОтборКомпоновкиДанных") Тогда
+ Возврат "Отбор";
+ ИначеЕсли ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
+ Возврат "ЭлементОтбора";
+ ИначеЕсли ТипНастройки = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ Возврат "ГруппаЭлементовОтбора";
+
+ ИначеЕсли ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
+ Возврат "ЗначениеПараметраНастроек";
+
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаКомпоновкиДанных") Тогда
+ Возврат "Группировка";
+ ИначеЕсли ТипНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
+ Возврат "Порядок";
+ ИначеЕсли ТипНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
+ Возврат "ВыбранныеПоля";
+
+ ИначеЕсли ТипНастройки = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
+ Возврат "УсловноеОформление";
+ ИначеЕсли ТипНастройки = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
+ Возврат "ЭлементУсловногоОформления";
+
+ ИначеЕсли ТипНастройки = Тип("СтруктураНастроекКомпоновкиДанных") Тогда
+ Возврат "СтруктураНастроек";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыНастроек";
+
+ ИначеЕсли ТипНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
+ Возврат "Таблица";
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
+ Возврат "ГруппировкаТаблицы";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыТаблицы";
+
+ ИначеЕсли ТипНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
+ Возврат "Диаграмма";
+ ИначеЕсли ТипНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных") Тогда
+ Возврат "ГруппировкаДиаграммы";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
+ Возврат "КоллекцияЭлементовСтруктурыДиаграммы";
+
+ ИначеЕсли ТипНастройки = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда
+ Возврат "ПолеГруппировки";
+ ИначеЕсли ТипНастройки = Тип("ПоляГруппировкиКомпоновкиДанных") Тогда
+ Возврат "ПоляГруппировки";
+ ИначеЕсли ТипНастройки = Тип("КоллекцияПолейГруппировкиКомпоновкиДанных") Тогда
+ Возврат "КоллекцияПолейГруппировки";
+
+ Иначе
+ Возврат "";
+ КонецЕсли;
+КонецФункции
+
+Процедура ДеревоВариантаЗарегистрироватьУзел(ЭлементСтруктурыСКД, НаборСтрокДерева)
+ СтрокаДерева = НаборСтрокДерева.Добавить();
+ СтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ СтрокаДерева.ТипНастройки = ТипНастройкиСтрокой(ТипЗнч(ЭлементСтруктурыСКД));
+ Если СтрокаДерева.ТипНастройки = "Настройки" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Группировка" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Таблица" Тогда
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ // Колонки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Колонки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Колонки Цикл
+ ДеревоВариантаЗарегистрироватьУзел(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ // Строки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Строки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Строки Цикл
+ ДеревоВариантаЗарегистрироватьУзел(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "Диаграмма" Тогда
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ // Серии:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Серии";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Серии Цикл
+ ДеревоВариантаЗарегистрироватьУзел(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ // Точки:
+ ПодчиненнаяСтрокаДерева = СтрокаДерева.Строки.Добавить();
+ ПодчиненнаяСтрокаДерева.Настройка = ЭлементСтруктурыСКД;
+ ПодчиненнаяСтрокаДерева.ТипНастройки = СтрокаДерева.ТипНастройки + "_Точки";
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Точки Цикл
+ ДеревоВариантаЗарегистрироватьУзел(ВложенныйЭлемент, ПодчиненнаяСтрокаДерева.Строки);
+ КонецЦикла;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "НастройкиВложенногоОбъекта" Тогда
+ ДеревоВариантаЗарегистрироватьУзел(ЭлементСтруктурыСКД.Настройки, СтрокаДерева.Строки);
+ ИначеЕсли СтрокаДерева.ТипНастройки = "ГруппировкаТаблицы" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ ИначеЕсли СтрокаДерева.ТипНастройки = "ГруппировкаДиаграммы" Тогда
+ СтрокаДерева.ЕстьСтруктура = Истина;
+ СтрокаДерева.ЕстьПоляИОформление = Истина;
+ Иначе
+ Возврат;
+ КонецЕсли;
+
+ Если СтрокаДерева.ТипНастройки <> "НастройкиВложенногоОбъекта" Тогда
+ ПараметрЗаголовок = ЭлементСтруктурыСКД.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок"));
+ Если ПараметрЗаголовок <> Неопределено И ПараметрЗаголовок.Использование Тогда
+ СтрокаДерева.Заголовок = ПараметрЗаголовок.Значение;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если СтрокаДерева.ЕстьСтруктура Тогда
+ Для Каждого ВложенныйЭлемент Из ЭлементСтруктурыСКД.Структура Цикл
+ ДеревоВариантаЗарегистрироватьУзел(ВложенныйЭлемент, СтрокаДерева.Строки);
+ КонецЦикла;
+ КонецЕсли;
+КонецПроцедуры
+
+Функция ДеревоВариантаНайти(НастройкиКД, ДеревоВарианта, СвойстваНастройки)
+ ИдентификаторСКД = СвойстваНастройки.ИдентификаторСКД;
+
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+
+ //Настройки, свойство Отбор
+ //Группировка, свойство Отбор
+ //ГруппировкаТаблицы, свойство Отбор
+ //ГруппировкаДиаграммы, свойство Отбор
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Отбор.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Отбор;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора"
+ Или СвойстваНастройки.Тип = "ГруппаЭлементовОтбора" Тогда
+
+ //Настройки, свойство Отбор.Элементы
+ //Группировка, свойство Отбор.Элементы
+ //ГруппировкаТаблицы, свойство Отбор.Элементы
+ //ГруппировкаДиаграммы, свойство Отбор.Элементы
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ НайденныйЭлемент = НайтиПоИдентификатору(СтрокаДерева.Настройка.Отбор.Элементы, ИдентификаторСКД);
+ Если НайденныйЭлемент <> Неопределено Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = НайденныйЭлемент;
+ Если СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ СвойстваНастройки.ДоступнаяСКД = СтрокаДерева.Настройка.Отбор.ДоступныеПоляОтбора.НайтиПоле(НайденныйЭлемент.ЛевоеЗначение);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+
+ //Настройки, свойство Порядок
+ //Группировка, свойство Порядок
+ //ГруппировкаТаблицы, свойство Порядок
+ //ГруппировкаДиаграммы, свойство Порядок
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Порядок.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Порядок;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+
+ //Настройки, свойство Выбор
+ //Таблица, свойство Выбор
+ //Диаграмма, свойство Выбор
+ //Группировка, свойство Выбор
+ //ГруппировкаДиаграммы, свойство Выбор
+ //ГруппировкаТаблицы, свойство Выбор
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Выбор.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Выбор;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "УсловноеОформление" Тогда
+
+ //Настройки, свойство УсловноеОформление
+ //Таблица, свойство УсловноеОформление
+ //Диаграмма, свойство УсловноеОформление
+ //Группировка, свойство УсловноеОформление
+ //ГруппировкаДиаграммы, свойство УсловноеОформление
+ //ГруппировкаТаблицы, свойство УсловноеОформление
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.УсловноеОформление.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.УсловноеОформление;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+
+ //Настройки, свойство УсловноеОформление.Элементы
+ //Таблица, свойство УсловноеОформление.Элементы
+ //Диаграмма, свойство УсловноеОформление.Элементы
+ //Группировка, свойство УсловноеОформление.Элементы
+ //ГруппировкаДиаграммы, свойство УсловноеОформление.Элементы
+ //ГруппировкаТаблицы, свойство УсловноеОформление.Элементы
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Для Каждого ЭлементУО Из СтрокаДерева.Настройка.УсловноеОформление.Элементы Цикл
+ Если ЭлементУО.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЭлементУО;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+
+ ПараметрКД = СвойстваНастройки.ПользовательскаяСКД.Параметр;
+
+ //ПараметрКомпоновкиДанных содержится в КоллекцияЗначенийПараметровКомпоновкиДанных, которая в свою очередь:
+ // ЗначенияПараметровДанныхКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Настройки, свойство ПараметрыДанных
+ // ЗначенияПараметровВыводаКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Настройки, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Группировка, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиТаблицыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ГруппировкаТаблицы, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаТаблицыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Таблица, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаДиаграммыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // Диаграмма, свойство ПараметрыВывода
+ // ЗначенияПараметровВыводаГруппировкиДиаграммыКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ГруппировкаДиаграммы, свойство ПараметрыВывода
+ // ОформлениеКомпоновкиДанных, свойство Элементы / метод НайтиЗначениеПараметра
+ // ЭлементОбластиМакетаОформленияКомпоновкиДанных, свойство Оформление
+ // ЭлементУсловногоОформленияКомпоновкиДанных, свойство Оформление
+ // ПолеНабораДанныхСхемыКомпоновкиДанных, свойство Оформление
+ // ВычисляемоеПолеСхемыКомпоновкиДанных, свойство Оформление
+ // ЗначениеПараметраКомпоновкиДанных, свойство ЗначенияВложенныхПараметров
+
+ //Настройки, свойство ПараметрыДанных, метод НайтиЗначениеПараметра()
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Настройки"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ ЗначениеПараметра = СтрокаДерева.Настройка.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКД);
+ Если ЗначениеПараметра <> Неопределено
+ И ЗначениеПараметра.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЗначениеПараметра;
+ ДоступныеПараметры = СтрокаДерева.Настройка.ПараметрыДанных.ДоступныеПараметры;
+ Если ДоступныеПараметры <> Неопределено Тогда
+ СвойстваНастройки.ДоступнаяСКД = ДоступныеПараметры.НайтиПараметр(ПараметрКД);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Настройки, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Группировка, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Таблица, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //Диаграмма, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //ГруппировкаТаблицы, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ //ГруппировкаДиаграммы, свойство ПараметрыВывода, метод НайтиЗначениеПараметра()
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьПоляИОформление", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ ЗначениеПараметра = СтрокаДерева.Настройка.ПараметрыВывода.НайтиЗначениеПараметра(ПараметрКД);
+ Если ЗначениеПараметра <> Неопределено
+ И ЗначениеПараметра.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Тип = "ЗначениеПараметраВывода"; // Подмена типа...
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = ЗначениеПараметра;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ ИначеЕсли СвойстваНастройки.Тип = "Группировка"
+ Или СвойстваНастройки.Тип = "ГруппировкаТаблицы"
+ Или СвойстваНастройки.Тип = "ГруппировкаДиаграммы"
+ Или СвойстваНастройки.Тип = "Таблица"
+ Или СвойстваНастройки.Тип = "Диаграмма"
+ Или СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+
+ // Прямо в структуре.
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", СвойстваНастройки.Тип), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Если СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+ СвойстваНастройки.ДоступнаяСКД = НастройкиКД.ДоступныеОбъекты.Элементы.Найти(СтрокаДерева.Настройка.ИдентификаторОбъекта);
+ КонецЕсли;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если СвойстваНастройки.Тип = "Группировка" Тогда
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "ГруппировкаТаблицы"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ГруппировкаТаблицы";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "ГруппировкаДиаграммы"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ГруппировкаДиаграммы";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ //Настройки, свойство Структура
+ //Группировка, свойство Структура
+ //ГруппировкаТаблицы, свойство Структура
+ //ГруппировкаДиаграммы, свойство Структура
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ЕстьСтруктура", Истина), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Структура.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "Структура";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Структура;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Таблица, свойство Колонки
+ //Таблица, свойство Строки
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Таблица"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Строки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ТаблицаСтроки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Строки;
+ Возврат Истина;
+ ИначеЕсли СтрокаДерева.Настройка.Колонки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ТаблицаКолонки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Колонки;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ //Диаграмма, свойство Серии
+ //Диаграмма, свойство Точки
+ Найденные = ДеревоВарианта.Строки.НайтиСтроки(Новый Структура("ТипНастройки", "Диаграмма"), Истина);
+ Для Каждого СтрокаДерева Из Найденные Цикл
+ Если СтрокаДерева.Настройка.Серии.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ДиаграммаСерии";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Серии;
+ Возврат Истина;
+ ИначеЕсли СтрокаДерева.Настройка.Точки.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ СвойстваНастройки.Подтип = "ДиаграммаТочки";
+ СвойстваНастройки.СтрокаДерева = СтрокаДерева;
+ СвойстваНастройки.ВариантаСКД = СтрокаДерева.Настройка.Точки;
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
+Функция НайтиПоИдентификатору(ЭлементыСКД, ИдентификаторСКД)
+ Для Каждого ЭлементСКД Из ЭлементыСКД Цикл
+ Если ЭлементСКД.ИдентификаторПользовательскойНастройки = ИдентификаторСКД Тогда
+ Возврат ЭлементСКД;
+ ИначеЕсли ТипЗнч(ЭлементСКД) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ Найденный = НайтиПоИдентификатору(ЭлементСКД.Элементы, ИдентификаторСКД);
+ Если Найденный <> Неопределено Тогда
+ Возврат Найденный;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Неопределено;
+КонецФункции
+
+Функция ПредставлениеПользовательскойНастройки(СвойстваНастройки)
+ ЭлементЗаголовок = "";
+
+ Если СвойстваНастройки.Тип = "Отбор" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Отбор'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппаЭлементовОтбора" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ПользовательскаяСКД.ТипГруппы);
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементОтбора" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ВариантаСКД.ЛевоеЗначение);
+
+ ИначеЕсли СвойстваНастройки.Тип = "Порядок" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Сортировка'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ВыбранныеПоля" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Поля'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "УсловноеОформление" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Оформление'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ЭлементУсловногоОформления" Тогда
+ ПредставлениеЗначения = Строка(СвойстваНастройки.ПользовательскаяСКД.Оформление);
+ ПредставлениеТипа = НСтр("ru = 'Элемент оформления'");
+ Если ПустаяСтрока(ПредставлениеЗначения) Тогда
+ ЭлементЗаголовок = ПредставлениеТипа;
+ Иначе
+ ЭлементЗаголовок = ПредставлениеЗначения +" ("+ НРег(ПредставлениеТипа) +")";
+ КонецЕсли;
+ ИначеЕсли СвойстваНастройки.Тип = "ЗначениеПараметраНастроек" Тогда
+ ЭлементЗаголовок = Строка(СвойстваНастройки.ВариантаСКД.Параметр);
+
+ ИначеЕсли СвойстваНастройки.Тип = "Группировка" Тогда
+ Суффикс = СокрЛП(Строка(СвойстваНастройки.ВариантаСКД.ПоляГруппировки));
+ ЭлементЗаголовок = НСтр("ru = 'Группировка'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппировкаТаблицы" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Группировка таблицы'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "ГруппировкаДиаграммы" Тогда
+ Суффикс = СокрЛП(Строка(СвойстваНастройки.ВариантаСКД.ПоляГруппировки));
+ ЭлементЗаголовок = НСтр("ru = 'Группировка диаграммы'") + ?(Суффикс = "", "", " '" + Суффикс + "'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "Таблица" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Таблица'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "Диаграмма" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Диаграмма'");
+
+ ИначеЕсли СвойстваНастройки.Тип = "НастройкиВложенногоОбъекта" Тогда
+ ЭлементЗаголовок = СтрЗаменить(НСтр("ru = 'Вложенная группировка ''%1'''"), "%1", Строка(СвойстваНастройки.ПользовательскаяСКД));
+
+ ИначеЕсли СвойстваНастройки.Тип = "СтруктураНастроек" Тогда
+
+ Если СвойстваНастройки.Подтип = "ТаблицаСтроки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Строки'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ТаблицаКолонки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Колонки'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ДиаграммаСерии" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Серии'");
+
+ ИначеЕсли СвойстваНастройки.Подтип = "ДиаграммаТочки" Тогда
+ ЭлементЗаголовок = НСтр("ru = 'Точки'");
+
+ Иначе
+ ЭлементЗаголовок = НСтр("ru = 'Структура'");
+
+ КонецЕсли;
+
+ Иначе
+ ЭлементЗаголовок = Строка(СвойстваНастройки.Тип);
+
+ КонецЕсли;
+
+ Возврат СокрЛП(ЭлементЗаголовок);
+КонецФункции
+
+Функция АнализТипов(ИсходноеОписаниеТипов)
+ ИнформацияОТипах = Новый Структура;
+ ИнформацияОТипах.Вставить("СодержитТипТип", Ложь);
+ ИнформацияОТипах.Вставить("СодержитТипДата", Ложь);
+ ИнформацияОТипах.Вставить("СодержитТипБулево", Ложь);
+ ИнформацияОТипах.Вставить("СодержитТипЧисло", Ложь);
+ ИнформацияОТипах.Вставить("СодержитТипПериод", Ложь);
+ ИнформацияОТипах.Вставить("СодержитОбъектныеТипы", Ложь);
+
+ ИнформацияОТипах.Вставить("КоличествоТипов", 0);
+ ИнформацияОТипах.Вставить("КоличествоПримитивныхТипов", 0);
+
+ ИнформацияОТипах.Вставить("ОбъектныеТипы", Новый Массив);
+
+ ДобавляемыеТипы = Новый Массив;
+ ВычитаемыеТипы = Новый Массив;
+
+ ДоступнаяНастройкаТипы = ИсходноеОписаниеТипов.Типы();
+ Для Каждого Тип Из ДоступнаяНастройкаТипы Цикл
+ Если Тип = Тип("ПолеКомпоновкиДанных") Тогда
+ ВычитаемыеТипы.Добавить(Тип);
+ Продолжить;
+ КонецЕсли;
+ ИнформацияОТипах.КоличествоТипов = ИнформацияОТипах.КоличествоТипов + 1;
+
+ Если Тип = Тип("Тип") Тогда
+ ИнформацияОТипах.СодержитТипТип = Истина;
+ ДобавляемыеТипы.Добавить(Тип("ОписаниеТипов"));
+ ВычитаемыеТипы.Добавить(Тип("Тип"));
+ ИначеЕсли Тип = Тип("Дата") Тогда
+ ИнформацияОТипах.СодержитТипДата = Истина;
+ ИнформацияОТипах.КоличествоПримитивныхТипов = ИнформацияОТипах.КоличествоПримитивныхТипов + 1;
+ ИначеЕсли Тип = Тип("Булево") Тогда
+ ИнформацияОТипах.СодержитТипБулево = Истина;
+ ИнформацияОТипах.КоличествоПримитивныхТипов = ИнформацияОТипах.КоличествоПримитивныхТипов + 1;
+ ИначеЕсли Тип = Тип("Число") Тогда
+ ИнформацияОТипах.СодержитТипЧисло = Истина;
+ ИнформацияОТипах.КоличествоПримитивныхТипов = ИнформацияОТипах.КоличествоПримитивныхТипов + 1;
+ ИначеЕсли Тип = Тип("СтандартныйПериод") Тогда
+ ИнформацияОТипах.СодержитТипПериод = Истина;
+ Иначе
+ ИнформацияОТипах.СодержитОбъектныеТипы = Истина;
+ ИнформацияОТипах.ОбъектныеТипы.Добавить(Тип);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ОписаниеТиповДляФормы = Новый ОписаниеТипов(ИсходноеОписаниеТипов, ДобавляемыеТипы, ВычитаемыеТипы);
+
+ ИнформацияОТипах.Вставить("ОписаниеТиповИсходное", ИсходноеОписаниеТипов);
+ ИнформацияОТипах.Вставить("ОписаниеТиповДляФормы", ОписаниеТиповДляФормы);
+
+ Возврат ИнформацияОТипах;
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Поиск.
// Можно ли индексировать содержимое схемы отчета.
Функция РазрешеноИндексированиеНеразделенныхДанных() Экспорт
- Возврат Не ОбщегоНазначенияПовтИсп.РазделениеВключено() И Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ();
+ Возврат Не ОбщегоНазначенияПовтИсп.РазделениеВключено();
КонецФункции
// Находит ссылки по параметрам поиска.
@@ -3439,12 +4541,6 @@
ПараметрыПоиска.Вставить("ОтчетыПользователя", ОтчетыТекущегоПользователя());
ПараметрыПоиска.Вставить("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
- Если ПараметрыПоиска.Свойство("Автор") И ЗначениеЗаполнено(ПараметрыПоиска.Автор) Тогда
- ЕстьОтборПоАвтору = Истина;
- Иначе
- ЕстьОтборПоАвтору = Ложь;
- КонецЕсли;
-
Если ПараметрыПоиска.Свойство("СтрокаПоиска") И ЗначениеЗаполнено(ПараметрыПоиска.СтрокаПоиска) Тогда
ЕстьСтрокаПоиска = Истина;
Иначе
@@ -3481,7 +4577,7 @@
ЕстьОтборПоПометкеУдаления = Ложь;
КонецЕсли;
- Если Не ЕстьОтборПоПодсистемам И Не ЕстьСтрокаПоиска И Не ЕстьОтборПоАвтору И Не ЕстьОтборПоТипамОтчетов Тогда
+ Если Не ЕстьОтборПоПодсистемам И Не ЕстьСтрокаПоиска И Не ЕстьОтборПоТипамОтчетов Тогда
Возврат Неопределено;
КонецЕсли;
@@ -3497,8 +4593,11 @@
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВариантыОтчетов.Ссылка,
+ | ВариантыОтчетов.Родитель КАК Родитель,
| ВариантыОтчетов.Наименование КАК НаименованиеВарианта,
| ВариантыОтчетов.Автор КАК Автор,
+ | ВариантыОтчетов.ТолькоДляАвтора КАК ТолькоДляАвтора,
+ | ВЫРАЗИТЬ(ВариантыОтчетов.Автор.Наименование КАК СТРОКА(1000)) КАК АвторПредставление,
| ВариантыОтчетов.Отчет КАК Отчет,
| ВариантыОтчетов.КлючВарианта КАК КлючВарианта,
| ВариантыОтчетов.ТипОтчета КАК ТипОтчета,
@@ -3519,23 +4618,14 @@
| ТОГДА ВЫРАЗИТЬ(Предопределенные.Описание КАК СТРОКА(1000))
| ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000))
| КОНЕЦ КАК Описание,
- | ВЫБОР
- | КОГДА ВариантыОтчетов.Автор = &ТекущийПользователь
- | ТОГДА ИСТИНА
- | КОГДА ВариантыОтчетов.ВидимостьПоУмолчаниюПереопределена
- | ИЛИ ВариантыОтчетов.Пользовательский
- | ИЛИ ВариантыОтчетов.ПредопределенныйВариант = ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка)
- | ТОГДА ВариантыОтчетов.ВидимостьПоУмолчанию
- | ИНАЧЕ ВариантыОтчетов.ПредопределенныйВариант.ВидимостьПоУмолчанию
- | КОНЕЦ КАК ВидимостьПоУмолчанию
+ | ВариантыОтчетов.ВидимостьПоУмолчанию КАК ВидимостьПоУмолчанию
|ПОМЕСТИТЬ Варианты
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК Предопределенные
| ПО ВариантыОтчетов.ПредопределенныйВариант = Предопределенные.Ссылка
|ГДЕ
- | ВариантыОтчетов.Автор = &Автор
- | И ВариантыОтчетов.ТипОтчета В(&ТипыОтчетов)
+ | ВариантыОтчетов.ТипОтчета В(&ТипыОтчетов)
| И ВариантыОтчетов.Отчет В(&ОтчетыПользователя)
| И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
| И ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ
@@ -3548,19 +4638,24 @@
| ЕСТЬNULL(РазмещениеВариантов.Ссылка, РазмещениеПредопределенных.Ссылка) КАК Ссылка,
| ЕСТЬNULL(РазмещениеВариантов.Подсистема, РазмещениеПредопределенных.Подсистема) КАК Подсистема,
| ЕСТЬNULL(РазмещениеВариантов.НаименованиеПодсистемы, РазмещениеПредопределенных.НаименованиеПодсистемы) КАК НаименованиеПодсистемы,
- | ЕСТЬNULL(РазмещениеВариантов.Использование, ИСТИНА) КАК Использование
+ | ЕСТЬNULL(РазмещениеВариантов.Использование, ИСТИНА) КАК Использование,
+ | ВЫБОР
+ | КОГДА РазмещениеВариантов.Ссылка ЕСТЬ NULL
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЛОЖЬ
+ | КОНЕЦ КАК ЭтоНастройкаРазработчика
|ПОМЕСТИТЬ РазмещениеВсех
|ИЗ
| (ВЫБРАТЬ
| ВариантыОтчетов.Ссылка КАК Ссылка,
| ВариантыРазмещение.Использование КАК Использование,
- | ВариантыРазмещение.РазделИлиГруппа КАК Подсистема,
- | ВариантыРазмещение.РазделИлиГруппа.Синоним КАК НаименованиеПодсистемы
+ | ВариантыРазмещение.Подсистема КАК Подсистема,
+ | ВариантыРазмещение.Подсистема.Синоним КАК НаименованиеПодсистемы
| ИЗ
| Варианты КАК ВариантыОтчетов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Размещение КАК ВариантыРазмещение
| ПО ВариантыОтчетов.Ссылка = ВариантыРазмещение.Ссылка
- | И (ВариантыРазмещение.РазделИлиГруппа В (&МассивПодсистем))) КАК РазмещениеВариантов
+ | И (ВариантыРазмещение.Подсистема В (&МассивПодсистем))) КАК РазмещениеВариантов
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ВариантыОтчетов.Ссылка КАК Ссылка,
| ПредопределенныеРазмещение.Подсистема КАК Подсистема,
@@ -3579,25 +4674,29 @@
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
- | РазмещениеВсех.Ссылка,
- | РазмещениеВсех.Подсистема,
- | РазмещениеВсех.НаименованиеПодсистемы
+ | РазмещениеВсех.Ссылка КАК Ссылка,
+ | РазмещениеВсех.Подсистема КАК Подсистема,
+ | РазмещениеВсех.НаименованиеПодсистемы КАК НаименованиеПодсистемы
|ПОМЕСТИТЬ РазмещениеВидимых
|ИЗ
| РазмещениеВсех КАК РазмещениеВсех
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ЛичныеНастройки
- | ПО РазмещениеВсех.Подсистема = ЛичныеНастройки.РазделИлиГруппа
+ | ПО РазмещениеВсех.Подсистема = ЛичныеНастройки.Подсистема
| И РазмещениеВсех.Ссылка = ЛичныеНастройки.Вариант
| И (ЛичныеНастройки.Пользователь = &ТекущийПользователь)
+ | ЛЕВОЕ СОЕДИНЕНИЕ Варианты КАК Варианты
+ | ПО РазмещениеВсех.Ссылка = Варианты.Ссылка
|ГДЕ
- | ЕСТЬNULL(ЛичныеНастройки.Видимость, РазмещениеВсех.Использование)
+ | ЕСТЬNULL(ЛичныеНастройки.Видимость, Варианты.ВидимостьПоУмолчанию)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВариантыОтчетов.Ссылка КАК Ссылка,
+ | ВариантыОтчетов.Родитель КАК Родитель,
| ВариантыОтчетов.НаименованиеВарианта КАК НаименованиеВарианта,
| ВариантыОтчетов.Автор КАК Автор,
+ | ВариантыОтчетов.АвторПредставление КАК АвторПредставление,
| ВариантыОтчетов.Отчет КАК Отчет,
| ВариантыОтчетов.Отчет.Имя КАК ИмяОтчета,
| ВариантыОтчетов.КлючВарианта КАК КлючВарианта,
@@ -3607,7 +4706,6 @@
| ВариантыОтчетов.НаименованияПараметровИОтборов КАК НаименованияПараметровИОтборов,
| ВариантыОтчетов.НаименованияПолей КАК НаименованияПолей,
| ВариантыОтчетов.Описание КАК Описание,
- | ВариантыОтчетов.ВидимостьПоУмолчанию КАК ВидимостьПоУмолчанию,
| Размещение.Подсистема КАК Подсистема,
| Размещение.НаименованиеПодсистемы КАК НаименованиеПодсистемы,
| НЕОПРЕДЕЛЕНО КАК КлючПользовательскойНастройки,
@@ -3623,6 +4721,7 @@
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Пользовательские.Вариант,
+ | Варианты.Родитель,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
@@ -3649,39 +4748,12 @@
| И Пользовательские.ПометкаУдаления = ЛОЖЬ";
Если ЕстьОтборПоВидимости Тогда
- //ИмяИтоговойТаблицы = "РазмещениеВидимых";
+ // Действие не требуется.
Иначе
- //ИмяИтоговойТаблицы = "РазмещениеВсех";
// Удаление временной таблицы для фильтра по видимости.
УдалитьВременнуюТаблицу(ТекстЗапроса, "РазмещениеВидимых");
// Подмена имени временной таблицы, из которой нужно делать выборку.
- ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "РазмещениеВсех", "РазмещениеВидимых");
- // Удаление поля для вычисления видимости.
- Если Не ПолучатьИтоговуюТаблицу Тогда
- ТекстЗапроса = СтрЗаменить(
- ТекстЗапроса,
- "ВЫБОР
- | КОГДА ВариантыОтчетов.Автор = &ТекущийПользователь
- | ТОГДА ИСТИНА
- | КОГДА ВариантыОтчетов.ВидимостьПоУмолчаниюПереопределена
- | ИЛИ ВариантыОтчетов.Пользовательский
- | ИЛИ ВариантыОтчетов.ПредопределенныйВариант = ЗНАЧЕНИЕ(Справочник.ПредопределенныеВариантыОтчетов.ПустаяСсылка)
- | ТОГДА ВариантыОтчетов.ВидимостьПоУмолчанию
- | ИНАЧЕ ВариантыОтчетов.ПредопределенныйВариант.ВидимостьПоУмолчанию
- | КОНЕЦ КАК",
- "НЕОПРЕДЕЛЕНО КАК");
- КонецЕсли;
- КонецЕсли;
-
- Если ЕстьОтборПоАвтору Тогда
- Запрос.УстановитьПараметр("Автор", ПараметрыПоиска.Автор);
- Иначе
- // Удаление отбора по автору.
- ТекстЗапроса = СтрЗаменить(
- ТекстЗапроса,
- "ВариантыОтчетов.Автор = &Автор
- | И ",
- "");
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "РазмещениеВидимых", "РазмещениеВсех");
КонецЕсли;
Если ЕстьОтборПоТипамОтчетов Тогда
@@ -3705,7 +4777,7 @@
КонецЕсли;
Иначе
// Удаление отбора по подсистемам.
- ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И (ВариантыРазмещение.РазделИлиГруппа В (&МассивПодсистем))", "");
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И (ВариантыРазмещение.Подсистема В (&МассивПодсистем))", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем))", "");
КонецЕсли;
@@ -3735,8 +4807,8 @@
Для НомерСлова = 1 По МассивСлов.Количество() Цикл
Слово = МассивСлов[НомерСлова-1];
ИмяСлова = "Слово" + Формат(НомерСлова, "ЧГ=");
- Запрос.УстановитьПараметр(ИмяСлова, Слово);
- Шаблон = "<ИмяТаблицы.ИмяПоля> ПОДОБНО ""%"" + &"+ ИмяСлова +" + ""%""";
+ Запрос.УстановитьПараметр(ИмяСлова, "%" + Слово + "%");
+ Шаблон = "<ИмяТаблицы.ИмяПоля> ПОДОБНО &" + ИмяСлова;
Если НомерСлова = 1 Тогда
ШаблонПоиска = Шаблон;
Иначе
@@ -3759,20 +4831,18 @@
+ "
| Или "
+ СтрЗаменить(ШаблонПоиска, "<ИмяТаблицы.ИмяПоля>", "ВариантыОтчетов.Описание")
+ + "
+ | Или "
+ + СтрЗаменить(ШаблонПоиска, "<ИмяТаблицы.ИмяПоля>", "ВариантыОтчетов.АвторПредставление")
+ ")";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоискВариантовИПодсистем", ПоискВариантовИПодсистем);
- Если ЕстьОтборПоАвтору И ПараметрыПоиска.Автор <> ТекущийПользователь Тогда
- // Удаление запроса к таблице пользовательских настроек.
- ТекстЗапроса = СокрП(Лев(ТекстЗапроса, Найти(ТекстЗапроса, "ОБЪЕДИНИТЬ ВСЕ") - 1));
- Иначе
- ПоискПользовательскихНастроек = (
- "("
- + СтрЗаменить(ШаблонПоиска, "<ИмяТаблицы.ИмяПоля>", "Пользовательские.Наименование")
- + ")"
- );
- ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоискПользовательскихНастроек", ПоискПользовательскихНастроек);
- КонецЕсли;
+ ПоискПользовательскихНастроек = (
+ "("
+ + СтрЗаменить(ШаблонПоиска, "<ИмяТаблицы.ИмяПоля>", "Пользовательские.Наименование")
+ + ")"
+ );
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоискПользовательскихНастроек", ПоискПользовательскихНастроек);
Иначе
// Удаление отбора для поиска в данных вариантов и подсистем.
ТекстЗапроса = СтрЗаменить(
@@ -3823,7 +4893,7 @@
// НаименованиеПодсистемы
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
- "ВариантыРазмещение.РазделИлиГруппа.Синоним КАК",
+ "ВариантыРазмещение.Подсистема.Синоним КАК",
"НЕОПРЕДЕЛЕНО КАК");
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
@@ -3844,26 +4914,16 @@
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
- | ВариантыОтчетов.Ссылка КАК Ссылка
+ | ВариантыОтчетов.Ссылка КАК Ссылка,
+ | ВариантыОтчетов.Родитель
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
- | ВариантыОтчетов.Автор = &Автор
- | И ВариантыОтчетов.ТипОтчета В(&ТипыОтчетов)
+ | ВариантыОтчетов.ТипОтчета В(&ТипыОтчетов)
| И ВариантыОтчетов.Отчет В(&ОтчетыПользователя)
| И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
| И ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ";
- Если ЕстьОтборПоАвтору Тогда
- Запрос.УстановитьПараметр("Автор", ПараметрыПоиска.Автор);
- Иначе
- ТекстЗапроса = СтрЗаменить(
- ТекстЗапроса,
- "ВариантыОтчетов.Автор = &Автор
- | И ",
- "");
- КонецЕсли;
-
Если ЕстьОтборПоТипамОтчетов Тогда
Запрос.УстановитьПараметр("ТипыОтчетов", ПараметрыПоиска.ТипыОтчетов);
Иначе
@@ -3904,11 +4964,14 @@
КонецЕсли;
Если Не ЕстьСтрокаПоиска Тогда
- ТаблицаВариантов = ТаблицаЗначений.Скопировать(, "Ссылка");
- ТаблицаВариантов.Свернуть("Ссылка");
+ ТаблицаВариантов = ТаблицаЗначений.Скопировать(, "Ссылка, Родитель");
+ ТаблицаВариантов.Свернуть("Ссылка, Родитель");
Для Каждого СтрокаТаблицы Из ТаблицаВариантов Цикл
- Если ЗначениеЗаполнено(СтрокаТаблицы.Ссылка) Тогда
+ Если ЗначениеЗаполнено(СтрокаТаблицы.Ссылка) И Результат.Ссылки.Найти(СтрокаТаблицы.Ссылка) = Неопределено Тогда
Результат.Ссылки.Добавить(СтрокаТаблицы.Ссылка);
+ Если ЗначениеЗаполнено(СтрокаТаблицы.Родитель) И Результат.Ссылки.Найти(СтрокаТаблицы.Родитель) = Неопределено Тогда
+ Результат.Ссылки.Добавить(СтрокаТаблицы.Родитель);
+ КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Результат;
@@ -3921,13 +4984,15 @@
СтрокаТаблицы = ТаблицаЗначений[0];
Вариант = Новый Структура;
Вариант.Вставить("Ссылка", СтрокаТаблицы.Ссылка);
+ Вариант.Вставить("Родитель", СтрокаТаблицы.Родитель);
Вариант.Вставить("НаименованиеВарианта", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("Описание", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПолей", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПараметровИОтборов", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПользовательскихНастроек", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПодсистем", Новый Структура(ШаблонОбластиПоиска));
- Вариант.Вставить("Подсистемы", Новый Массив);
+ Вариант.Вставить("Подсистемы", Новый Массив);
+ Вариант.Вставить("ПредставлениеАвтора", Новый Структура(ШаблонОбластиПоиска));
РазделительХранения = ВариантыОтчетовКлиентСервер.РазделительХранения();
РазделительПредставления = ВариантыОтчетовКлиентСервер.РазделительПредставления();
@@ -3947,6 +5012,9 @@
Если Не ЗначениеЗаполнено(Вариант.НаименованияПараметровИОтборов.Значение) И ЗначениеЗаполнено(СтрокаТаблицы.НаименованияПараметровИОтборов) Тогда
Вариант.НаименованияПараметровИОтборов.Значение = СтрокаТаблицы.НаименованияПараметровИОтборов;
КонецЕсли;
+ Если Не ЗначениеЗаполнено(Вариант.ПредставлениеАвтора.Значение) И ЗначениеЗаполнено(СтрокаТаблицы.АвторПредставление) Тогда
+ Вариант.ПредставлениеАвтора.Значение = СтрокаТаблицы.АвторПредставление;
+ КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицы.ПредставлениеПользовательскойНастройки) Тогда
Если Вариант.НаименованияПользовательскихНастроек.Значение = "" Тогда
Вариант.НаименованияПользовательскихНастроек.Значение = СтрокаТаблицы.ПредставлениеПользовательскойНастройки;
@@ -4011,6 +5079,10 @@
СловоНайдено = Истина;
КонецЕсли;
+ Если ОтметитьСлово(Вариант.ПредставлениеАвтора, Слово, Истина) Тогда
+ СловоНайдено = Истина;
+ КонецЕсли;
+
Если ОтметитьСлово(Вариант.НаименованияПараметровИОтборов, Слово, Истина) Тогда
СловоНайдено = Истина;
КонецЕсли;
@@ -4041,6 +5113,9 @@
Если СвязанныеПодсистемы.Количество() > 0 Тогда
Результат.ВариантыСвязанныеСПодсистемами.Вставить(Вариант.Ссылка, СвязанныеПодсистемы);
КонецЕсли;
+ Если ЗначениеЗаполнено(Вариант.Родитель) И Результат.Ссылки.Найти(Вариант.Родитель) = Неопределено Тогда
+ Результат.Ссылки.Добавить(Вариант.Родитель);
+ КонецЕсли;
КонецЕсли;
Если Индекс = Количество Тогда
@@ -4050,13 +5125,15 @@
// Обнуление переменных.
Вариант = Новый Структура;
Вариант.Вставить("Ссылка", СтрокаТаблицы.Ссылка);
+ Вариант.Вставить("Родитель", СтрокаТаблицы.Родитель);
Вариант.Вставить("НаименованиеВарианта", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("Описание", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПолей", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПараметровИОтборов", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПользовательскихНастроек", Новый Структура(ШаблонОбластиПоиска));
Вариант.Вставить("НаименованияПодсистем", Новый Структура(ШаблонОбластиПоиска));
- Вариант.Вставить("Подсистемы", Новый Массив);
+ Вариант.Вставить("Подсистемы", Новый Массив);
+ Вариант.Вставить("ПредставлениеАвтора", Новый Структура(ШаблонОбластиПоиска));
КонецЕсли;
КонецЦикла;
diff --git a/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl
index 236b47567..25214195c 100644
--- a/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl
@@ -147,6 +147,14 @@
КонецЕсли;
КонецПроцедуры
+// Открывает форму настроек (в частности размещения) варианта отчета.
+Процедура ПоказатьНастройкиОтчета(ВариантСсылка) Экспорт
+ ПараметрыФормы = Новый Структура;
+ ПараметрыФормы.Вставить("НастройкаРазмещения", Истина);
+ ПараметрыФормы.Вставить("Ключ", ВариантСсылка);
+ ОткрытьФорму("Справочник.ВариантыОтчетов.ФормаОбъекта", ПараметрыФормы);
+КонецПроцедуры
+
// Процедура обслуживает событие реквизита ДеревоПодсистем в формах редактирования.
Процедура ДеревоПодсистемИспользованиеПриИзменении(Форма, Элемент) Экспорт
СтрокаДерева = Форма.Элементы.ДеревоПодсистем.ТекущиеДанные;
@@ -160,11 +168,26 @@
Возврат;
КонецЕсли;
- Если СтрокаДерева.Использование = 2 И СтрокаДерева.ИспользованиеПоУмолчанию <> 2 Тогда
+ Если СтрокаДерева.Использование = 2 Тогда
СтрокаДерева.Использование = 0;
КонецЕсли;
- УстановитьИзмененПользователем(Форма, СтрокаДерева);
+ //Если Не СтрокаДерева.Модифицированность
+ // И СтрокаДерева.Использование = 1
+ // И СтрокаДерева.ПользователиПредставление = "" Тогда
+ // Если Форма.Доступен = "2" Тогда // Всем пользователям.
+ // Пользователь = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ГруппыПользователей.ВсеПользователи");
+ // Иначе
+ // Если Форма.ИмяФормы = "Справочник.ВариантыОтчетов.Форма.ФормаЭлемента" Тогда
+ // Пользователь = Форма.Объект.Автор;
+ // Иначе
+ // Пользователь = Форма.ВариантАвтор;
+ // КонецЕсли;
+ // КонецЕсли;
+ // ВариантыОтчетовКлиентСервер.ДеревоПодсистемЗарегистрироватьПользователя(СтрокаДерева, Пользователь);
+ //КонецЕсли;
+
+ СтрокаДерева.Модифицированность = Истина;
КонецПроцедуры
// Процедура обслуживает событие реквизита ДеревоПодсистем в формах редактирования.
@@ -180,24 +203,11 @@
Возврат;
КонецЕсли;
- Если СтрокаДерева.Важность <> СтрокаДерева.ВажностьПоУмолчанию Тогда
+ Если СтрокаДерева.Важность <> "" Тогда
СтрокаДерева.Использование = 1;
КонецЕсли;
- УстановитьИзмененПользователем(Форма, СтрокаДерева);
-КонецПроцедуры
-
-// Вспомогательная процедура для обработки изменений ДеревоПодсистем.
-Процедура УстановитьИзмененПользователем(Форма, СтрокаДерева)
- Если СтрокаДерева.Использование = СтрокаДерева.ИспользованиеПоУмолчанию
- И СтрокаДерева.Важность = СтрокаДерева.ВажностьПоУмолчанию Тогда
- СтрокаДерева.ИзмененПользователем = Ложь;
- Иначе
- СтрокаДерева.ИзмененПользователем = Истина;
- Если Форма.ИмяФормы = "Справочник.ВариантыОтчетов.Форма.ФормаЭлемента" Тогда
- Форма.Модифицированность = Истина;
- КонецЕсли;
- КонецЕсли;
+ СтрокаДерева.Модифицированность = Истина;
КонецПроцедуры
// Аналог ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста, работающий за 1 вызов.
diff --git a/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl
index b843c640d..0f9fa1277 100644
--- a/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl
@@ -6,9 +6,7 @@
#Область СлужебныеПроцедурыИФункции
-// Представление наименования данной подсистемы, используется
-// для записи в журнале регистрации и в других местах.
-//
+// Представление подсистемы. Используется при записи в журнал регистрации и в других местах.
Функция НаименованиеПодсистемы(КодЯзыка) Экспорт
Возврат НСтр("ru = 'Варианты отчетов'", ?(КодЯзыка = Неопределено, ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка(), КодЯзыка));
КонецФункции
diff --git a/SSL/src/CommonModules/ВариантыОтчетовПереопределяемый/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовПереопределяемый/Module.bsl
index 51ccb59d3..7faa150dd 100644
--- a/SSL/src/CommonModules/ВариантыОтчетовПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ВариантыОтчетовПереопределяемый/Module.bsl
@@ -172,6 +172,9 @@
// * ВыводитьОтчетыВместоВариантов - Булево - Умолчание для вывода гиперссылок в панели отчетов:
// - Истина - Варианты отчетов по умолчанию скрыты, а отчеты включены и видимы.
// - Ложь - Значение по умолчанию. Варианты отчетов по умолчанию видимы, а отчеты отключены.
+// * ВыводитьОписания - Булево - Умолчание для вывода описаний в панели отчетов:
+// - Истина - Выводить описания в виде подписей под гиперссылками вариантов (режим чтения описаний).
+// - Ложь - Выводить описания в виде всплывающих подсказок (как раньше).
//
Процедура ОпределитьГлобальныеНастройки(Настройки) Экспорт
diff --git a/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl
index b1630e08d..1ab902e2a 100644
--- a/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/ВариантыОтчетовПовтИсп/Module.bsl
@@ -41,9 +41,10 @@
//
Функция ОтключенныеВариантыПрограммы() Экспорт
// Получить варианты, недоступные по функциональным опциям
- ХранилищеТаблицыОпций = Константы.ПараметрыВариантовОтчетов.Получить();
- ТаблицаОпций = ХранилищеТаблицыОпций.Получить();
+ ЗначениеКонстанты = Константы.ПараметрыВариантовОтчетов.Получить();
+ Структура = ЗначениеКонстанты.Получить();
+ ТаблицаОпций = Структура.ТаблицаФункциональныхОпций;
ТаблицаОпций.Колонки.Добавить("ОтчетДоступен", Новый ОписаниеТипов("Булево"));
ТаблицаОпций.Колонки.Добавить("ЗначениеОпции", Новый ОписаниеТипов("Число"));
@@ -127,4 +128,19 @@
Возврат ПравоДоступа("СохранениеДанныхПользователя", Метаданные) И ПравоДоступа("Добавление", Метаданные.Справочники.ВариантыОтчетов);
КонецФункции
+// Массив отчетов, которые хранят настройки общей формы "ФормаОтчета" и переопределяют их в модуле объекта.
+//
+// Возвращаемое значение:
+// Массив из <см. Справочники.ВариантыОтчетов.Реквизиты.Отчет> -
+// Ссылки отчетов, в модулях объектов которых есть процедура ОпределитьНастройкиФормы().
+//
+// См. также:
+// ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+Функция ОтчетыСНастройками() Экспорт
+ ЗначениеКонстанты = Константы.ПараметрыВариантовОтчетов.Получить();
+ Структура = ЗначениеКонстанты.Получить();
+ Возврат Структура.ОтчетыСНастройками;
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl b/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl
index 69a09a9d9..5a2fb5cb3 100644
--- a/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl
+++ b/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl
@@ -6,8 +6,8 @@
#Область ПрограммныйИнтерфейс
// Выполняется при обновлении конфигурации.
-// 1. Очищает настройки версионирования по объектам, для которых версионирование не применено
-// 2. Устанавливает настройки версионирования по умолчанию
+// 1. Очищает настройки версионирования по объектам, для которых версионирование не применено.
+// 2. Устанавливает настройки версионирования по умолчанию.
//
Процедура ОбновитьНастройкиВерсионированияОбъектов() Экспорт
@@ -104,7 +104,7 @@
// Возвращает табличный документ, заполненный данными объекта.
//
// Параметры:
-// СсылкаНаОбъект - ЛюбаяСсылка
+// СсылкаНаОбъект - ЛюбаяСсылка.
//
// Возвращаемое значение:
// ТабличныйДокумент - печатная форма объекта.
@@ -143,6 +143,80 @@
СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииДанныхОтГлавного"].Добавить(
"ВерсионированиеОбъектов");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "ВерсионированиеОбъектов");
+ КонецЕсли;
+
+ СерверныеОбработчики["СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПриДобавленииОбработчиковОбновления"].Добавить(
+ "ВерсионированиеОбъектов");
+
+КонецПроцедуры
+
+// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме.
+//
+// Параметры:
+// Обработчики - ТаблицаЗначений - см. описание функции НоваяТаблицаОбработчиковОбновления
+// общего модуля ОбновлениеИнформационнойБазы.
+//
+Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
+
+ Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "2.2.3.8";
+ Обработчик.Процедура = "ВерсионированиеОбъектов.ОбновитьСведенияОВерсияхОбъектов";
+ Обработчик.РежимВыполнения = "Отложенно";
+ Обработчик.Комментарий = НСтр("ru = 'Обновление сведений о записанных версиях объектов.'");
+
+КонецПроцедуры
+
+// Дозаполняет реквизиты регистра версий.
+Процедура ОбновитьСведенияОВерсияхОбъектов(Параметры) Экспорт
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ ПЕРВЫЕ 10000
+ | ВерсииОбъектов.Объект,
+ | ВерсииОбъектов.НомерВерсии
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.РазмерДанных = 0";
+
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ ОбработаноЗаписей = 0;
+ Пока Выборка.Следующий() Цикл
+ НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
+ НаборЗаписей.Отбор.Объект.Установить(Выборка.Объект);
+ НаборЗаписей.Отбор.НомерВерсии.Установить(Выборка.НомерВерсии);
+ НаборЗаписей.Прочитать();
+ Попытка
+ НаборЗаписей.Записать();
+ ОбработаноЗаписей = ОбработаноЗаписей + 1;
+ Исключение
+ ЗаписьЖурналаРегистрации(
+ НСтр("ru = 'Версионирование'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
+ УровеньЖурналаРегистрации.Ошибка, НаборЗаписей.Метаданные(),
+ ,
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Не удалось обновить сведения о версии №%1 объекта ""%2"" по причине:
+ |%3'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
+ Выборка.НомерВерсии,
+ ОбщегоНазначения.ПредметСтрокой(Выборка.Объект),
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
+ КонецПопытки;
+ КонецЦикла;
+
+ Если Выборка.Количество() > 0 Тогда
+ Если ОбработаноЗаписей = 0 Тогда
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Процедуре ОбновитьСведенияОВерсияхОбъектов не удалось обработать некоторые записи регистра сведений ВерсииОбъектов (пропущены): %1'"),
+ Выборка.Количество());
+ ВызватьИсключение ТекстСообщения;
+ КонецЕсли;
+ Параметры.ОбработкаЗавершена = Ложь;
+ КонецЕсли;
+
КонецПроцедуры
// Записывает версию объекта в информационную базу.
@@ -150,11 +224,11 @@
// Параметры
// Объект - для создания версии
//
-Процедура ПриСозданииВерсииОбъекта(Объект) Экспорт
+Процедура ПриСозданииВерсииОбъекта(Объект, РежимЗаписиПроведение) Экспорт
Перем НомерПоследнейВерсии, Комментарий;
- Если НЕ ОбъектВерсионируется(Объект, НомерПоследнейВерсии) Тогда
+ Если НЕ ОбъектВерсионируется(Объект, НомерПоследнейВерсии, РежимЗаписиПроведение) Тогда
Возврат;
КонецЕсли;
@@ -224,38 +298,117 @@
КонецПроцедуры
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ Если Не ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.НастройкиВерсионированияОбъектов) Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь
+ // не делается проверка существования подсистемы.
+ МодульТекущиеДелаСлужебныйПовтИсп = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСлужебныйПовтИсп");
+
+ ПринадлежностьОбъектов = МодульТекущиеДелаСлужебныйПовтИсп.ПринадлежностьОбъектовРазделамКомандногоИнтерфейса();
+ Разделы = ПринадлежностьОбъектов[Метаданные.РегистрыСведений.НастройкиВерсионированияОбъектов.ПолноеИмя()];
+
+ Если Разделы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИнформацияОбУстаревшихВерсиях = ИнформацияОбУстаревшихВерсиях();
+ РазмерУстаревшихДанных = РазмерДанныхСтрокой(ИнформацияОбУстаревшихВерсиях.РазмерДанных);
+ Подсказка = НСтр("ru = 'Устаревших версий: %1 (%2)'");
+
+ Для Каждого Раздел Из Разделы Цикл
+
+ ИдентификаторУстаревшиеОбъекты = "УстаревшиеВерсииОбъектов" + СтрЗаменить(Раздел.ПолноеИмя(), ".", "");
+ // Добавление дела.
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = ИдентификаторУстаревшиеОбъекты;
+ // Выводим дело, если размер устаревших данных больше 1 Гб
+ Дело.ЕстьДела = ИнформацияОбУстаревшихВерсиях.РазмерДанных > (1024 * 1024 * 1024);
+ Дело.Представление = НСтр("ru = 'Устаревшие версии объектов'");
+ Дело.Форма = "РегистрСведений.НастройкиВерсионированияОбъектов.Форма.ВерсионированиеОбъектов";
+ Дело.Подсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Подсказка, ИнформацияОбУстаревшихВерсиях.КоличествоВерсий, РазмерУстаревшихДанных);
+ Дело.Владелец = Раздел;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
// Создает и записывает версию объекта в информационную базу.
//
Процедура СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта, ЗаписьОбычнойВерсии = Истина)
- Если Не ПривилегированныйРежим() Тогда
- ВыполнитьПроверкуПравДоступа("Изменение", Объект.Метаданные());
- КонецЕсли;
-
- ЗаписьXML = Новый ЗаписьFastInfoset;
- ЗаписьXML.УстановитьДвоичныеДанные();
- ЗаписьXML.ЗаписатьОбъявлениеXML();
- ЗаписатьXML(ЗаписьXML, Объект, НазначениеТипаXML.Явное);
- ДвоичныеДанные = ЗаписьXML.Закрыть();
- ХранилищеДанных = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
+ ПроверитьНаличиеПравНаИзменениеОбъекта(Объект.Метаданные());
УстановитьПривилегированныйРежим(Истина);
- МенеджерЗаписиВерсииОбъектов = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи();
- МенеджерЗаписиВерсииОбъектов.ДатаВерсии = ТекущаяДатаСеанса();
- МенеджерЗаписиВерсииОбъектов.ВерсияОбъекта = ХранилищеДанных;
-
- ЗаполнитьЗначенияСвойств(МенеджерЗаписиВерсииОбъектов, СведенияОВерсииОбъекта);
-
Если ЗаписьОбычнойВерсии Тогда
+ // Запись данных предыдущей версии
+ Если Не Объект.ЭтоНовый() И ВерсияОтличаетсяОтРанееЗаписанной(Объект) Тогда
+ МенеджерЗаписи = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.Объект = Объект.Ссылка;
+ МенеджерЗаписи.НомерВерсии = СведенияОВерсииОбъекта.НомерВерсии - 1;
+ МенеджерЗаписи.Прочитать();
+ Если МенеджерЗаписи.Выбран() Тогда
+ ДвоичныеДанные = СериализоватьОбъект(Объект.Ссылка.ПолучитьОбъект());
+ ХранилищеДанных = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
+ МенеджерЗаписи.ВерсияОбъекта = ХранилищеДанных;
+ МенеджерЗаписи.Записать();
+ КонецЕсли;
+ КонецЕсли;
- МенеджерЗаписиВерсииОбъектов.Объект = Объект.Ссылка;
- МенеджерЗаписиВерсииОбъектов.АвторВерсии = Пользователи.АвторизованныйПользователь();
- МенеджерЗаписиВерсииОбъектов.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта.ИзмененоПользователем;
+ СсылкаНаОбъект = Объект.Ссылка;;
+ Если СсылкаНаОбъект.Пустая() Тогда
+ СсылкаНаОбъект = Объект.ПолучитьСсылкуНового();
+ Если СсылкаНаОбъект.Пустая() Тогда
+ СсылкаНаОбъект = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Объект.Ссылка).ПолучитьСсылку();
+ Объект.УстановитьСсылкуНового(СсылкаНаОбъект);
+ КонецЕсли;
+ КонецЕсли;
+ // Запись текущей версии без данных
+ МенеджерЗаписи = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.Объект = СсылкаНаОбъект;
+ МенеджерЗаписи.НомерВерсии = СведенияОВерсииОбъекта.НомерВерсии;
+ МенеджерЗаписи.ДатаВерсии = ТекущаяДатаСеанса();
+
+ АвторВерсии = Неопределено;
+ Если Не Объект.ДополнительныеСвойства.Свойство("АвторВерсии", АвторВерсии) Тогда
+ АвторВерсии = Пользователи.АвторизованныйПользователь();
+ КонецЕсли;
+ МенеджерЗаписи.АвторВерсии = АвторВерсии;
+
+ МенеджерЗаписи.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта.ИзмененоПользователем;
+ СведенияОВерсииОбъекта.Свойство("Комментарий", МенеджерЗаписи.Комментарий);
+ Иначе
+ ДвоичныеДанные = СериализоватьОбъект(Объект);
+ ХранилищеДанных = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
+
+ МенеджерЗаписи = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.ДатаВерсии = ТекущаяДатаСеанса();
+ МенеджерЗаписи.ВерсияОбъекта = ХранилищеДанных;
+ ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СведенияОВерсииОбъекта);
КонецЕсли;
- МенеджерЗаписиВерсииОбъектов.Записать();
+ МенеджерЗаписи.Записать();
КонецПроцедуры
@@ -306,9 +459,7 @@
//
Процедура ИгнорироватьВерсиюОбъекта(Ссылка, НомерВерсии, Игнорировать) Экспорт
- Если Не ПривилегированныйРежим() Тогда
- ВыполнитьПроверкуПравДоступа("Изменение", Ссылка.Метаданные());
- КонецЕсли;
+ ПроверитьНаличиеПравНаИзменениеОбъекта(Ссылка.Метаданные());
УстановитьПривилегированныйРежим(Истина);
@@ -471,7 +622,7 @@
КонецФункции
-Процедура ЗаписатьВерсиюПоверхПредыдущей(Ссылка, Объект, НомерВерсии, СведенияОВерсииОбъекта);
+Процедура ЗаписатьВерсиюПоверхПредыдущей(Ссылка, Объект, НомерВерсии, СведенияОВерсииОбъекта)
УстановитьПривилегированныйРежим(Истина);
@@ -508,6 +659,16 @@
КонецПроцедуры
+Процедура ПроверитьНаличиеПравНаИзменениеОбъекта(ОбъектМетаданных)
+
+ Если Не ПривилегированныйРежим() И Не ПравоДоступа("Изменение", ОбъектМетаданных)Тогда
+ ТекстСообщения = Нстр("ru = 'Недостаточно прав на изменение ""%1"".'");
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ОбъектМетаданных.Представление());
+ ВызватьИсключение ТекстСообщения;
+ КонецЕсли;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики условных вызовов в эту подсистему
@@ -521,9 +682,7 @@
//
Процедура ПриПереходеНаВерсиюОбъекта(СсылкаНаОбъект, Знач НомерВерсии) Экспорт
- Если Не ПривилегированныйРежим() Тогда
- ВыполнитьПроверкуПравДоступа("Изменение", СсылкаНаОбъект.Метаданные());
- КонецЕсли;
+ ПроверитьНаличиеПравНаИзменениеОбъекта(СсылкаНаОбъект.Метаданные());
УстановитьПривилегированныйРежим(Истина);
@@ -575,6 +734,10 @@
//
Функция НомерПоследнейВерсии(Ссылка) Экспорт
+ Если Ссылка.Пустая() Тогда
+ Возврат 0;
+ КонецЕсли;
+
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
@@ -629,7 +792,7 @@
// Возвращаемое значение:
// Перечисление.ВариантыВерсионированияОбъектов.
//
-Функция ВариантВерсионированияОбъекта(ПолноеИмяОбъекта) Экспорт
+Функция ВариантВерсионированияОбъекта(ПолноеИмяОбъекта)
Возврат ПолучитьФункциональнуюОпцию("ВариантыВерсионированияОбъектов",
Новый Структура("ТипВерсионируемогоОбъекта", ПолноеИмяОбъекта));
@@ -686,41 +849,46 @@
// Функцию требуется вызвать в привилегированном режиме.
//
Функция СведенияОВерсииОбъекта(Знач Ссылка, Знач НомерВерсии) Экспорт
+ СообщениеНеУдалосьПолучитьВерсию = НСтр("ru = 'Не удалось получить предыдущую версию объекта.'");
+ Если Не ЕстьПравоНаЧтениеВерсийОбъектов() Тогда
+ ВызватьИсключение СообщениеНеУдалосьПолучитьВерсию;
+ КонецЕсли;
+
+ УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
- Запрос.Текст = "ВЫБРАТЬ
- | ВерсииОбъектов.ВерсияОбъекта КАК ВерсияОбъекта,
- | ВерсииОбъектов.АвторВерсии КАК АвторВерсии,
- | ВерсииОбъектов.ДатаВерсии КАК ДатаВерсии,
- | ВерсииОбъектов.Комментарий КАК Комментарий
- |ИЗ
- | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
- |ГДЕ
- | ВерсииОбъектов.Объект = &Ссылка
- | И ВерсииОбъектов.НомерВерсии = &НомерВерсии";
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ВерсииОбъектов.АвторВерсии КАК АвторВерсии,
+ | ВерсииОбъектов.ДатаВерсии КАК ДатаВерсии,
+ | ВерсииОбъектов.Комментарий КАК Комментарий,
+ | ВерсииОбъектов.ВерсияОбъекта
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.Объект = &Ссылка
+ | И ВерсииОбъектов.НомерВерсии = &НомерВерсии";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("НомерВерсии", Число(НомерВерсии));
- ВерсияОбъекта = Неопределено;
+ Результат = Новый Структура("ВерсияОбъекта, АвторВерсии, ДатаВерсии, Комментарий");
- Если ЕстьПравоНаЧтениеВерсийОбъектов() Тогда
- УстановитьПривилегированныйРежим(Истина);
- Выборка = Запрос.Выполнить().Выбрать();
- Если Выборка.Следующий() Тогда
- ВерсияОбъекта = Выборка.ВерсияОбъекта.Получить();
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ ЗаполнитьЗначенияСвойств(Результат, Выборка);
+ Результат.ВерсияОбъекта = Результат.ВерсияОбъекта.Получить();
+ Если Результат.ВерсияОбъекта = Неопределено Тогда
+ Результат.ВерсияОбъекта = ДанныеВерсииОбъекта(Ссылка, НомерВерсии);
КонецЕсли;
КонецЕсли;
+
- Если ВерсияОбъекта = Неопределено Тогда
- ВызватьИсключение НСтр("ru = 'Не удалось получить предыдущую версию объекта.'");
+ Если Результат.ВерсияОбъекта = Неопределено Тогда
+ ВызватьИсключение НСтр("ru = 'Выбранная версия объекта отсутствует в программе.'");
КонецЕсли;
- Возврат Новый Структура("ВерсияОбъекта, АвторВерсии, ДатаВерсии, Комментарий",
- ВерсияОбъекта,
- Выборка.АвторВерсии,
- Выборка.ДатаВерсии,
- Выборка.Комментарий);
+ Возврат Результат;
КонецФункции
@@ -729,7 +897,7 @@
// версионирование, то он версионируется в соответствии с правилами
// версионирования "по умолчанию".
//
-Функция ОбъектВерсионируется(Знач Источник, НомерПоследнейВерсии) Экспорт
+Функция ОбъектВерсионируется(Знач Источник, НомерПоследнейВерсии, РежимЗаписиПроведение = Ложь, Стартован = Ложь) Экспорт
// Проверяем, что подсистема версионирования включена
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьВерсионированиеОбъектов") Тогда
@@ -743,10 +911,10 @@
НомерПоследнейВерсии = НомерПоследнейВерсии(Источник.Ссылка);
- Возврат Не (ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.НеВерсионировать
- Или ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриПроведении
- И НомерПоследнейВерсии = 0
- И Не Источник.Проведен);
+ Возврат
+ ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриЗаписи
+ Или ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриПроведении
+ И (НомерПоследнейВерсии > 0 Или РежимЗаписиПроведение) Или ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриСтарте
КонецФункции
@@ -774,43 +942,333 @@
Возврат Пользователи.РолиДоступны("ЧтениеВерсийОбъектов, ЧтениеИнформацииОВерсияхОбъектов");
КонецФункции
-////////////////////////////////////////////////////////////////////////////////
-// Обработчики служебных событий подсистем БСП
-
-// Заполняет массив списком имен объектов метаданных, данные которых могут содержать ссылки на различные объекты метаданных,
-// но при этом эти ссылки не должны учитываться в бизнес-логике приложения.
+// Записывает версию объекта в информационную базу.
//
-// Параметры:
-// Массив - массив строк, например, "РегистрСведений.ВерсииОбъектов".
+// Параметры
+// Источник - Объект - записываемый объект ИБ;
+// Отказ - Булево - признак отказа от записи объекта.
//
-Процедура ПриДобавленииИсключенийПоискаСсылок(Массив) Экспорт
+Процедура ЗаписатьВерсиюОбъекта(Источник, РежимЗаписиПроведение = Ложь) Экспорт
- Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.ПолноеИмя());
+ Если Источник.ОбменДанными.Загрузка Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Источник.ДополнительныеСвойства.Свойство("СведенияОВерсииОбъекта") Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПриСозданииВерсииОбъекта(Источник, РежимЗаписиПроведение);
КонецПроцедуры
-// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе.
-//
-// Параметры:
-// см. описание обработчика события ПриПолученииДанныхОтПодчиненного() в синтаксис-помощнике.
-//
-Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт
+// Контрольная сумма по алгоритму MD5.
+Функция КонтрольнаяСумма(Данные) Экспорт
+ ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
+ ХешированиеДанных.Добавить(Данные);
+ Возврат СтрЗаменить(ХешированиеДанных.ХешСумма, " ", "");
+КонецФункции
+
+Функция ДанныеВерсииОбъекта(СсылкаНаОбъект, НомерВерсии)
- ДобавлениеСведенийОВерсииОбъектаПриОбменеДанными(ЭлементДанных, Отправитель);
+ ТекстЗапроса =
+ "ВЫБРАТЬ ПЕРВЫЕ 1
+ | ВерсииОбъектов.ВерсияОбъекта
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.Объект = &Объект
+ | И ВерсииОбъектов.НомерВерсии >= &НомерВерсии
+ | И ВерсииОбъектов.КонтрольнаяСумма <> """"
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | ВерсииОбъектов.НомерВерсии";
+
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("Объект", СсылкаНаОбъект);
+ Запрос.УстановитьПараметр("НомерВерсии", НомерВерсии);
+
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ Возврат Выборка.ВерсияОбъекта.Получить();
+ КонецЕсли;
+
+ Возврат СериализоватьОбъект(СсылкаНаОбъект.ПолучитьОбъект());
+
+КонецФункции
+
+Функция ВерсияОтличаетсяОтРанееЗаписанной(Объект)
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ ПЕРВЫЕ 1
+ | ВерсииОбъектов.КонтрольнаяСумма
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.Объект = &Объект
+ | И ВерсииОбъектов.ЕстьДанныеВерсии
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | ВерсииОбъектов.НомерВерсии УБЫВ";
+
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("Объект", Объект.Ссылка);
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ Возврат Выборка.КонтрольнаяСумма <> КонтрольнаяСумма(СериализоватьОбъект(Объект));
+ КонецЕсли;
+
+ Возврат Объект.ЭтоНовый() Или КонтрольнаяСумма(СериализоватьОбъект(Объект)) <> КонтрольнаяСумма(СериализоватьОбъект(Объект.Ссылка.ПолучитьОбъект()));
+
+КонецФункции
+
+// Только для служебного использования.
+Процедура ОчиститьУстаревшиеВерсииОбъектов() Экспорт
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ ГраницыУдаленияОбъектов = ГраницыУдаленияОбъектов();
+
+ Запрос = Новый Запрос;
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | ВерсииОбъектов.Объект,
+ | ВерсииОбъектов.НомерВерсии
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.ЕстьДанныеВерсии
+ | И &ДополнительныеУсловия";
+
+ ДополнительныеУсловия = "";
+ Для Индекс = 0 По ГраницыУдаленияОбъектов.Количество() - 1 Цикл
+ Если Не ПустаяСтрока(ДополнительныеУсловия) Тогда
+ ДополнительныеУсловия = ДополнительныеУсловия + "
+ | ИЛИ";
+ КонецЕсли;
+ ИндексСтрокой = Формат(Индекс, "ЧН=0; ЧГ=0");
+ Условие = "";
+ Для Каждого Тип Из ГраницыУдаленияОбъектов[Индекс].СписокТипов Цикл
+ Если Не ПустаяСтрока(Условие) Тогда
+ Условие = Условие + "
+ | ИЛИ";
+ КонецЕсли;
+ Условие = Условие + "
+ | ВерсииОбъектов.Объект ССЫЛКА " + Тип;
+ КонецЦикла;
+ Если ПустаяСтрока(Условие) Тогда
+ Продолжить;
+ КонецЕсли;
+ Условие = "(" + Условие + ")";
+ ДополнительныеУсловия = ДополнительныеУсловия + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ "
+ | %1
+ | И ВерсииОбъектов.ДатаВерсии < &ГраницаУдаления%2",
+ Условие,
+ ИндексСтрокой);
+ Запрос.УстановитьПараметр("СписокТипов" + ИндексСтрокой, ГраницыУдаленияОбъектов[Индекс].СписокТипов);
+ Запрос.УстановитьПараметр("ГраницаУдаления" + ИндексСтрокой, ГраницыУдаленияОбъектов[Индекс].ГраницаУдаления);
+ КонецЦикла;
+
+ Если ПустаяСтрока(ДополнительныеУсловия) Тогда
+ ДополнительныеУсловия = "ЛОЖЬ";
+ Иначе
+ ДополнительныеУсловия = "(" + ДополнительныеУсловия + ")";
+ КонецЕсли;
+
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДополнительныеУсловия", ДополнительныеУсловия);
+
+ Запрос.Текст = ТекстЗапроса;
+ Выборка = Запрос.Выполнить().Выбрать();
+ Пока Выборка.Следующий() Цикл
+ МенеджерЗаписи = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.Объект = Выборка.Объект;
+ МенеджерЗаписи.НомерВерсии = Выборка.НомерВерсии;
+ МенеджерЗаписи.Прочитать();
+ МенеджерЗаписи.ВерсияОбъекта = Неопределено;
+ МенеджерЗаписи.Записать();
+ КонецЦикла;
КонецПроцедуры
-// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе.
-//
-// Параметры:
-// см. описание обработчика события ПриПолученииДанныхОтГлавного() в синтаксис-помощнике.
-//
-Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт
+Функция ГраницыУдаленияОбъектов() Экспорт
- ДобавлениеСведенийОВерсииОбъектаПриОбменеДанными(ЭлементДанных, Отправитель);
+ Результат = Новый ТаблицаЗначений;
+ Результат.Колонки.Добавить("СписокТипов", Новый ОписаниеТипов("Массив"));
+ Результат.Колонки.Добавить("ГраницаУдаления", Новый ОписаниеТипов("Дата"));
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | НастройкиВерсионированияОбъектов.ТипОбъекта,
+ | НастройкиВерсионированияОбъектов.СрокХраненияВерсий КАК СрокХраненияВерсий
+ |ИЗ
+ | РегистрСведений.НастройкиВерсионированияОбъектов КАК НастройкиВерсионированияОбъектов
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | СрокХраненияВерсий
+ |ИТОГИ ПО
+ | СрокХраненияВерсий";
+
+ Запрос = Новый Запрос(ТекстЗапроса);
+ ВыборкаСроковХранения = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
+ Пока ВыборкаСроковХранения.Следующий() Цикл
+ ВыборкаОбъектов = ВыборкаСроковХранения.Выбрать();
+ СписокТипов = Новый Массив;
+ Пока ВыборкаОбъектов.Следующий() Цикл
+ Попытка
+ ТипОбъекта = Тип(СтрЗаменить(ВыборкаОбъектов.ТипОбъекта, ".", "Ссылка."));
+ Исключение
+ Продолжить;
+ КонецПопытки;
+ СписокТипов.Добавить(ВыборкаОбъектов.ТипОбъекта);
+ КонецЦикла;
+ СоответствиеГраницыТипамОбъектов = Результат.Добавить();
+ СоответствиеГраницыТипамОбъектов.ГраницаУдаления = ГраницаУдаления(ВыборкаСроковХранения.СрокХраненияВерсий);
+ СоответствиеГраницыТипамОбъектов.СписокТипов = СписокТипов;
+ КонецЦикла;
+
+ Возврат Результат;
+
+КонецФункции
+
+Функция ГраницаУдаления(СрокХраненияВерсий)
+ Если СрокХраненияВерсий = Перечисления.СрокиХраненияВерсий.ЗаПоследнийГод Тогда
+ Возврат ДобавитьМесяц(ТекущаяДатаСеанса(), -12);
+ ИначеЕсли СрокХраненияВерсий = Перечисления.СрокиХраненияВерсий.ЗаПоследниеШестьМесяцев Тогда
+ Возврат ДобавитьМесяц(ТекущаяДатаСеанса(), -6);
+ ИначеЕсли СрокХраненияВерсий = Перечисления.СрокиХраненияВерсий.ЗаПоследниеТриМесяца Тогда
+ Возврат ДобавитьМесяц(ТекущаяДатаСеанса(), -3);
+ ИначеЕсли СрокХраненияВерсий = Перечисления.СрокиХраненияВерсий.ЗаПоследнийМесяц Тогда
+ Возврат ДобавитьМесяц(ТекущаяДатаСеанса(), -1);
+ ИначеЕсли СрокХраненияВерсий = Перечисления.СрокиХраненияВерсий.ЗаПоследнююНеделю Тогда
+ Возврат ТекущаяДатаСеанса() - 7*24*60*60;
+ Иначе // СрокХраненияВерсий = Перечисления.СрокиХраненияВерсий.Бессрочно
+ Возврат '000101010000';
+ КонецЕсли;
+КонецФункции
+
+// Только для служебного использования.
+// Комментарий записывается, если пользователь является либо автором версии, либо администратором.
+Процедура ДобавитьКомментарийКВерсии(СсылкаНаОбъект, НомерВерсии, Комментарий) Экспорт
+
+ Если Не ЕстьПравоНаЧтениеВерсийОбъектов() Тогда
+ Возврат;
+ КонецЕсли;
+
+ МенеджерЗаписи = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.Объект = СсылкаНаОбъект;
+ МенеджерЗаписи.НомерВерсии = НомерВерсии;
+ МенеджерЗаписи.Прочитать();
+ Если МенеджерЗаписи.Выбран() Тогда
+ Если МенеджерЗаписи.АвторВерсии = Пользователи.ТекущийПользователь() Или Пользователи.ЭтоПолноправныйПользователь() Тогда
+ МенеджерЗаписи.Комментарий = Комментарий;
+ МенеджерЗаписи.Записать();
+ КонецЕсли;
+ КонецЕсли;
КонецПроцедуры
+// Предоставляет информацию о количестве и объеме устаревших версий объектов.
+Функция ИнформацияОбУстаревшихВерсиях() Экспорт
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ ГраницыУдаленияОбъектов = ГраницыУдаленияОбъектов();
+
+ Запрос = Новый Запрос;
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | ЕСТЬNULL(СУММА(ВерсииОбъектов.РазмерДанных), 0) КАК РазмерДанных,
+ | ЕСТЬNULL(СУММА(1), 0) КАК КоличествоВерсий
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.ЕстьДанныеВерсии
+ | И &ДополнительныеУсловия";
+
+ ДополнительныеУсловия = "";
+ Для Индекс = 0 По ГраницыУдаленияОбъектов.Количество() - 1 Цикл
+ Если Не ПустаяСтрока(ДополнительныеУсловия) Тогда
+ ДополнительныеУсловия = ДополнительныеУсловия + "
+ | ИЛИ";
+ КонецЕсли;
+ ИндексСтрокой = Формат(Индекс, "ЧН=0; ЧГ=0");
+ Условие = "";
+ Для Каждого Тип Из ГраницыУдаленияОбъектов[Индекс].СписокТипов Цикл
+ Если Не ПустаяСтрока(Условие) Тогда
+ Условие = Условие + "
+ | ИЛИ";
+ КонецЕсли;
+ Условие = Условие + "
+ | ВерсииОбъектов.Объект ССЫЛКА " + Тип;
+ КонецЦикла;
+ Если ПустаяСтрока(Условие) Тогда
+ Продолжить;
+ КонецЕсли;
+ Условие = "(" + Условие + ")";
+ ДополнительныеУсловия = ДополнительныеУсловия + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ "
+ | %1
+ | И ВерсииОбъектов.ДатаВерсии < &ГраницаУдаления%2",
+ Условие,
+ ИндексСтрокой);
+ Запрос.УстановитьПараметр("СписокТипов" + ИндексСтрокой, ГраницыУдаленияОбъектов[Индекс].СписокТипов);
+ Запрос.УстановитьПараметр("ГраницаУдаления" + ИндексСтрокой, ГраницыУдаленияОбъектов[Индекс].ГраницаУдаления);
+ КонецЦикла;
+
+ Если ПустаяСтрока(ДополнительныеУсловия) Тогда
+ ДополнительныеУсловия = "ЛОЖЬ";
+ Иначе
+ ДополнительныеУсловия = "(" + ДополнительныеУсловия + ")";
+ КонецЕсли;
+
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДополнительныеУсловия", ДополнительныеУсловия);
+ Запрос.Текст = ТекстЗапроса;
+
+ Выборка = Запрос.Выполнить().Выбрать();
+ КоличествоВерсий = 0;
+ РазмерДанных = 0;
+ Если Выборка.Следующий() Тогда
+ РазмерДанных = Выборка.РазмерДанных;
+ КоличествоВерсий = Выборка.КоличествоВерсий;
+ КонецЕсли;
+
+ Результат = Новый Структура;
+ Результат.Вставить("КоличествоВерсий", КоличествоВерсий);
+ Результат.Вставить("РазмерДанных", РазмерДанных);
+
+ Возврат Результат;
+
+КонецФункции
+
+// Строковое представление объемов данных. Например: "1,23 Гб".
+Функция РазмерДанныхСтрокой(Знач РазмерДанных) Экспорт
+
+ ЕдиницаИзмерения = НСтр("ru = 'байт'");
+ Если 1024 <= РазмерДанных И РазмерДанных < 1024 * 1024 Тогда
+ РазмерДанных = РазмерДанных / 1024;
+ ЕдиницаИзмерения = НСтр("ru = 'Кб'");
+ ИначеЕсли 1024 * 1024 <= РазмерДанных И РазмерДанных < 1024 * 1024 * 1024 Тогда
+ РазмерДанных = РазмерДанных / 1024 / 1024;
+ ЕдиницаИзмерения = НСтр("ru = 'Мб'");
+ ИначеЕсли 1024 * 1024 * 1024 <= РазмерДанных Тогда
+ РазмерДанных = РазмерДанных / 1024 / 1024 / 1024;
+ ЕдиницаИзмерения = НСтр("ru = 'Гб'");
+ КонецЕсли;
+
+ Если РазмерДанных < 10 Тогда
+ РазмерДанных = Окр(РазмерДанных, 2);
+ ИначеЕсли РазмерДанных < 100 Тогда
+ РазмерДанных = Окр(РазмерДанных, 1);
+ Иначе
+ РазмерДанных = Окр(РазмерДанных, 0);
+ КонецЕсли;
+
+ Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = '%1 %2'"), РазмерДанных, ЕдиницаИзмерения);
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Функции для получения отчета по объекту
@@ -821,7 +1279,7 @@
//
// Возвращаемое значение:
// ДвоичныеДанные - сериализованный объект.
-Функция СериализоватьОбъект(Объект)
+Функция СериализоватьОбъект(Объект) Экспорт
ЗаписьXML = Новый ЗаписьFastInfoset;
ЗаписьXML.УстановитьДвоичныеДанные();
@@ -859,7 +1317,7 @@
// ...
// ИмяРеквизитаN -> ЗначениеN
//
-Функция РазборПредставленияОбъектаXML(ДвоичныеДанные, Ссылка)
+Функция РазборПредставленияОбъектаXML(ДвоичныеДанные, Ссылка) Экспорт
// содержит имя метаданного измененного объекта
Перем ИмяОбъекта;
@@ -909,6 +1367,9 @@
// любой реквизит "может оказаться" табличной частью, поэтому на всякий случай его запомним.
ИмяТабличнойЧасти = ИмяРеквизита;
+ Если МетаданныеОбъекта.ТабличныеЧасти.Найти(ИмяТабличнойЧасти) <> Неопределено И ТабличныеЧасти[ИмяТабличнойЧасти] = Неопределено Тогда
+ ТабличныеЧасти.Вставить(ИмяТабличнойЧасти, Новый ТаблицаЗначений);
+ КонецЕсли;
НовоеЗР = ЗначенияРеквизитов.Добавить();
НовоеЗР.НаименованиеРеквизита = ИмяРеквизита;
@@ -992,9 +1453,11 @@
ТипЗначения = "";
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если (УровеньЧтения = 2) Тогда // значение реквизита
-
- НовоеЗР.ЗначениеРеквизита = ?(ЗначениеЗаполнено(НовоеЗР.Тип), XMLЗначение(НовоеЗР.Тип, ЧтениеXML.Значение), ЧтениеXML.Значение);
-
+ Попытка
+ НовоеЗР.ЗначениеРеквизита = ?(ЗначениеЗаполнено(НовоеЗР.Тип), XMLЗначение(НовоеЗР.Тип, ЧтениеXML.Значение), ЧтениеXML.Значение);
+ Исключение
+ НовоеЗР.ЗначениеРеквизита = ЧтениеXML.Значение;
+ КонецПопытки;
ИначеЕсли (УровеньЧтения = 4) Тогда // значение реквизита
ПоследняяСтрока = ТабличныеЧасти[ИмяТабличнойЧасти].Получить(ТабличныеЧасти[ИмяТабличнойЧасти].Количество()-1);
@@ -1045,7 +1508,7 @@
// Получает представление наименования системного реквизита
//
-Функция ПолучитьПредставлениеРеквизитаНаЯзыке(Знач ИмяРеквизита)
+Функция ПолучитьПредставлениеРеквизитаНаЯзыке(Знач ИмяРеквизита) Экспорт
Если ИмяРеквизита = "Number" Тогда
Возврат НСтр("ru = 'Номер'; en='Number'");
@@ -1432,4 +1895,41 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Обработчики служебных событий подсистем БСП
+
+// Заполняет массив списком имен объектов метаданных, данные которых могут содержать ссылки на различные объекты метаданных,
+// но при этом эти ссылки не должны учитываться в бизнес-логике приложения.
+//
+// Параметры:
+// Массив - массив строк, например, "РегистрСведений.ВерсииОбъектов".
+//
+Процедура ПриДобавленииИсключенийПоискаСсылок(Массив) Экспорт
+
+ Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.ПолноеИмя());
+
+КонецПроцедуры
+
+// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе.
+//
+// Параметры:
+// см. описание обработчика события ПриПолученииДанныхОтПодчиненного() в синтаксис-помощнике.
+//
+Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт
+
+ ДобавлениеСведенийОВерсииОбъектаПриОбменеДанными(ЭлементДанных, Отправитель);
+
+КонецПроцедуры
+
+// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе.
+//
+// Параметры:
+// см. описание обработчика события ПриПолученииДанныхОтГлавного() в синтаксис-помощнике.
+//
+Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт
+
+ ДобавлениеСведенийОВерсииОбъектаПриОбменеДанными(ЭлементДанных, Отправитель);
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl b/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl
index 6462a42d7..5a69a1dba 100644
--- a/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl
+++ b/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl
@@ -5,7 +5,7 @@
#Область ПрограммныйИнтерфейс
-// Записывает версию объекта в информационную базу.
+// Записывает версию объекта (кроме документов) в информационную базу.
//
// Параметры
// Источник - Объект - записываемый объект ИБ;
@@ -13,15 +13,19 @@
//
Процедура ЗаписатьВерсиюОбъекта(Источник, Отказ) Экспорт
- Если Источник.ОбменДанными.Загрузка Тогда
- Возврат;
- КонецЕсли;
+ ВерсионированиеОбъектов.ЗаписатьВерсиюОбъекта(Источник, Ложь);
- Если Источник.ДополнительныеСвойства.Свойство("СведенияОВерсииОбъекта") Тогда
- Возврат;
- КонецЕсли;
+КонецПроцедуры
+
+// Записывает версию документа в информационную базу.
+//
+// Параметры
+// Источник - Объект - записываемый документ ИБ;
+// Отказ - Булево - признак отказа от записи документа.
+//
+Процедура ЗаписатьВерсиюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
- ВерсионированиеОбъектов.ПриСозданииВерсииОбъекта(Источник);
+ ВерсионированиеОбъектов.ЗаписатьВерсиюОбъекта(Источник, РежимЗаписи = РежимЗаписиДокумента.Проведение);
КонецПроцедуры
diff --git a/SSL/src/CommonModules/Взаимодействия/Module.bsl b/SSL/src/CommonModules/Взаимодействия/Module.bsl
index 6b0a7f63a..387c93c3b 100644
--- a/SSL/src/CommonModules/Взаимодействия/Module.bsl
+++ b/SSL/src/CommonModules/Взаимодействия/Module.bsl
@@ -2427,7 +2427,16 @@
ПараметрыПисьма.Вставить("ИдентификаторыОснований", Объект.ИдентификаторыОснований);
КонецЕсли;
- соотвВложения = Новый Соответствие;
+ СоотвВложения = Новый Соответствие;
+
+ ДанныеПрисоединенныхФайловПисьма = ВзаимодействияПереопределяемый.ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(Объект);
+ Если ДанныеПрисоединенныхФайловПисьма = Неопределено Тогда
+ ИмяОбъектаМетаданных = УправлениеЭлектроннойПочтой.ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(Объект.Ссылка);
+ ВладелецФайлов = Объект.Ссылка;
+ Иначе
+ ИмяОбъектаМетаданных = ДанныеПрисоединенныхФайловПисьма.ИмяСправочникаПрисоединенныеФайлы;
+ ВладелецФайлов = ДанныеПрисоединенныхФайловПисьма.Владелец;
+ КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
@@ -2441,30 +2450,30 @@
| ),
| Файлы.ИДФайлаЭлектронногоПисьма
|ИЗ
- | Справочник.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы КАК Файлы
+ | Справочник." + ИмяОбъектаМетаданных + " КАК Файлы
|ГДЕ
| Файлы.ВладелецФайла = &ВладелецФайла";
- Запрос.УстановитьПараметр("ВладелецФайла", Объект.Ссылка);
+ Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайлов);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ИмяФайла = Выборка.ПолноеНаименование + ?(Выборка.Расширение = "", "", "." + Выборка.Расширение);
Если ПустаяСтрока(Выборка.ИДФайлаЭлектронногоПисьма) Тогда
- соотвВложения.Вставить(ИмяФайла, ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(Выборка.Ссылка));
+ СоотвВложения.Вставить(ИмяФайла, ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(Выборка.Ссылка));
Иначе
СтруктураДанныеВложения = Новый Структура;
СтруктураДанныеВложения.Вставить("ДвоичныеДанные", ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(Выборка.Ссылка));
СтруктураДанныеВложения.Вставить("Идентификатор", Выборка.ИДФайлаЭлектронногоПисьма);
- соотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения);
+ СоотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения);
КонецЕсли;
Для каждого ЭП Из Выборка.ЭлектронныеПодписи.Выгрузить() Цикл
- соотвВложения.Вставить(Выборка.ПолноеНаименование + "-DS("+ ЭП.НомерСтроки + ")." +
+ СоотвВложения.Вставить(Выборка.ПолноеНаименование + "-DS("+ ЭП.НомерСтроки + ")." +
РасширениеДляФайловПодписи,ЭП.Подпись.Получить());
КонецЦикла;
КонецЦикла;
- ПараметрыПисьма.Вставить("Вложения", соотвВложения);
+ ПараметрыПисьма.Вставить("Вложения", СоотвВложения);
ПараметрыПисьма.Вставить("ОбрабатыватьТексты", Ложь);
Если Объект.УведомитьОДоставке Тогда
@@ -3081,8 +3090,9 @@
Процедура РассчитатьРассмотреноПоКонтактамПриЗаписиИзФормы(ТекущийОбъект, Форма, СтарыеЗначенияРеквизитов)
- Если НеЗаписыватьКонтакты(ТекущийОбъект.ДополнительныеСвойства)
- И СтарыеЗначенияРеквизитов.Рассмотрено <> Форма.Рассмотрено Тогда
+ Если (НеЗаписыватьКонтакты(ТекущийОбъект.ДополнительныеСвойства)
+ И СтарыеЗначенияРеквизитов.Рассмотрено <> Форма.Рассмотрено)
+ ИЛИ Форма.Объект.Ссылка.Пустая() Тогда
МассивВзаимодействий = Новый Массив;
МассивВзаимодействий.Добавить(ТекущийОбъект.Ссылка);
@@ -3740,7 +3750,15 @@
//
Функция ПолучитьВложенияПисьмаСНеПустымИД(Письмо) Экспорт
- ИмяМетаданныхПисьма = Письмо.Метаданные().Имя;
+ ДанныеПрисоединенныхФайловПисьма = ВзаимодействияПереопределяемый.ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(Письмо);
+
+ Если ДанныеПрисоединенныхФайловПисьма = Неопределено Тогда
+ ИмяОбъектаМетаданных = УправлениеЭлектроннойПочтой.ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(Письмо);
+ ВладелецФайлов = Письмо;
+ Иначе
+ ИмяОбъектаМетаданных = ДанныеПрисоединенныхФайловПисьма.ИмяСправочникаПрисоединенныеФайлы;
+ ВладелецФайлов = ДанныеПрисоединенныхФайловПисьма.Владелец;
+ КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "
@@ -3750,14 +3768,14 @@
| ПрисоединенныеФайлыПисьма.Размер,
| ПрисоединенныеФайлыПисьма.ИДФайлаЭлектронногоПисьма
|ИЗ
- | Справочник." + ИмяМетаданныхПисьма + "ПрисоединенныеФайлы КАК ПрисоединенныеФайлыПисьма
+ | Справочник." + ИмяОбъектаМетаданных + " КАК ПрисоединенныеФайлыПисьма
|ГДЕ
- | ПрисоединенныеФайлыПисьма.ВладелецФайла = &Письмо
+ | ПрисоединенныеФайлыПисьма.ВладелецФайла = &ВладелецФайлов
| И (НЕ ПрисоединенныеФайлыПисьма.ПометкаУдаления)
| И ПрисоединенныеФайлыПисьма.ИДФайлаЭлектронногоПисьма <> &ПустаяСтрока";
Запрос.УстановитьПараметр("ПустаяСтрока","");
- Запрос.УстановитьПараметр("Письмо",Письмо);
+ Запрос.УстановитьПараметр("ВладелецФайлов",ВладелецФайлов);
Возврат Запрос.Выполнить().Выгрузить();
@@ -4594,9 +4612,20 @@
| СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.Исходящее)
| И НЕ СообщениеSMS.ПометкаУдаления
| И СообщениеSMSАдресаты.ИдентификаторСообщения = """"
+ | И ВЫБОР
+ | КОГДА СообщениеSMS.ДатаКогдаОтправить <> ДАТАВРЕМЯ(1, 1, 1)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ СообщениеSMS.ДатаКогдаОтправить < &ТекущаяДата
+ | КОНЕЦ
+ | И ВЫБОР
+ | КОГДА СообщениеSMS.ДатаАктуальностиОтправки = ДАТАВРЕМЯ(1, 1, 1)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ СообщениеSMS.ДатаАктуальностиОтправки > &ТекущаяДата
+ | КОНЕЦ
|ИТОГИ ПО
| Ссылка";
+ Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
ВыборкаДокументы = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДокументы.Следующий() Цикл
@@ -5884,7 +5913,7 @@
| Взаимодействия.Ссылка КАК Ссылка,
| ЕСТЬNULL(Взаимодействия.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПоследнегоВзаимодействия,
| ВЫБОР
- | КОГДА ЕСТЬNULL(ПредметыПапкиВзаимодействий.Рассмотрено, ЛОЖЬ)
+ | КОГДА ЕСТЬNULL(ПредметыПапкиВзаимодействий.Рассмотрено, ИСТИНА)
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК КоличествоНеРассмотрено
@@ -6367,10 +6396,11 @@
| КОНЕЦ КАК НомерКартинки,
| ЖурналДокументовВзаимодействия.Ссылка,
| ЖурналДокументовВзаимодействия.Дата,
- | ЖурналДокументовВзаимодействия.ПометкаУдаления,
+ | ЖурналДокументовВзаимодействия.ПометкаУдаления КАК ПометкаУдаления,
| ЖурналДокументовВзаимодействия.Номер,
| ЖурналДокументовВзаимодействия.Проведен,
| ЖурналДокументовВзаимодействия.Автор,
+ | ЖурналДокументовВзаимодействия.ВзаимодействиеОснование,
| ЖурналДокументовВзаимодействия.Входящий,
| ЖурналДокументовВзаимодействия.Тема,
| ЖурналДокументовВзаимодействия.Ответственный КАК Ответственный,
@@ -6379,6 +6409,15 @@
| ЖурналДокументовВзаимодействия.Участники,
| ЖурналДокументовВзаимодействия.Тип,
| ЖурналДокументовВзаимодействия.УчетнаяЗапись,
+ | ЖурналДокументовВзаимодействия.ЕстьВложения,
+ | ЖурналДокументовВзаимодействия.Важность,
+ | ВЫБОР
+ | КОГДА ЖурналДокументовВзаимодействия.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиВзаимодействия.Высокая)
+ | ТОГДА 2
+ | КОГДА ЖурналДокументовВзаимодействия.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиВзаимодействия.Низкая)
+ | ТОГДА 0
+ | ИНАЧЕ 1
+ | КОНЕЦ КАК ВажностьНомерКартинки,
| %Предмет% КАК Предмет,
| ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) КАК ТипПредмета,
| ЕСТЬNULL(ПредметыВзаимодействий.ПапкаЭлектронногоПисьма, ЗНАЧЕНИЕ(Справочник.ПапкиЭлектронныхПисем.ПустаяСсылка)) КАК Папка,
@@ -6802,4 +6841,70 @@
КонецФункции
+Процедура ЗаполнитьПодменюСтатус(ГруппаПодменю , Форма) Экспорт
+
+ СписокСтатусов = ВзаимодействияКлиентСервер.СписокСтатусов();
+
+ Для Инд = 0 По СписокСтатусов.Количество() - 1 Цикл
+
+ Представление = СписокСтатусов.Получить(Инд).Представление;
+ Значение = СписокСтатусов.Получить(Инд).Значение;
+
+ НоваяКоманда = Форма.Команды.Добавить("УстановитьОтборСтатус_" + Значение);
+ НоваяКоманда.Действие = "Подключаемый_ИзменитьОтборСтатус";
+ ЭлементКнопкаПодменю = Форма.Элементы.Добавить("УстановитьОтборСтатус_" + Значение, Тип("КнопкаФормы"), ГруппаПодменю);
+ ЭлементКнопкаПодменю.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
+ ЭлементКнопкаПодменю.ИмяКоманды = НоваяКоманда.Имя;
+ ЭлементКнопкаПодменю.Заголовок = Представление;
+ ЭлементКнопкаПодменю.ТолькоВоВсехДействиях = Истина;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ЗаполнитьПодменюПоТипуВзаимодействия(ГруппаПодменю , Форма) Экспорт
+
+ СписокОтборов = ВзаимодействияКлиентСервер.СписокОтборовПоТипуВзаимодействий(Форма.ТолькоПочта);
+
+ Для Инд = 0 По СписокОтборов.Количество() - 1 Цикл
+
+ Представление = СписокОтборов.Получить(Инд).Представление;
+ Значение = СписокОтборов.Получить(Инд).Значение;
+
+ ИмяКоманды = "УстановитьОтборТипВзаимодействия_" + Значение;
+ НайденнаяКоманда = Форма.Команды.Найти(ИмяКоманды);
+
+ Если НайденнаяКоманда = Неопределено Тогда
+ НоваяКоманда = Форма.Команды.Добавить("УстановитьОтборТипВзаимодействия_" + Значение);
+ НоваяКоманда.Действие = "Подключаемый_ИзменитьОтборТипВзаимодействия";
+ Иначе
+ НоваяКоманда = НайденнаяКоманда;
+ КонецЕсли;
+
+ ЭлементКнопкаПодменю = Форма.Элементы.Добавить("УстановитьОтборТипВзаимодействия_" + ГруппаПодменю.Имя + "_"+ Значение, Тип("КнопкаФормы"), ГруппаПодменю);
+ ЭлементКнопкаПодменю.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
+ ЭлементКнопкаПодменю.ИмяКоманды = НоваяКоманда.Имя;
+ ЭлементКнопкаПодменю.Заголовок = Представление;
+ ЭлементКнопкаПодменю.ТолькоВоВсехДействиях = Истина;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ОбработатьПодменюОтборПоТипуВзаимодействий(Форма) Экспорт
+
+ ШаблонЗаголовка = НСтр("ru = 'Тип взаимодействий: %1'");
+ ПредставлениеТипа = ВзаимодействияКлиентСервер.СписокОтборовПоТипуВзаимодействий(Форма.ТолькоПочта).НайтиПоЗначению(Форма.ТипВзаимодействия).Представление;
+ Форма.Элементы.СписокТипВзаимодействия.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ПредставлениеТипа);
+ Для Каждого ЭлементПодменю Из Форма.Элементы.СписокТипВзаимодействия.ПодчиненныеЭлементы Цикл
+ Если ЭлементПодменю.Имя = ("УстановитьОтборТипВзаимодействия_СписокТипВзаимодействия_" + Форма.ТипВзаимодействия) Тогда
+ ЭлементПодменю.Пометка = Истина;
+ Иначе
+ ЭлементПодменю.Пометка = Ложь;
+ КонецЕсли;
+ КонецЦикла
+
+КонецПроцедуры
+
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl b/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl
index 814e130ad..8e38f03c8 100644
--- a/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl
@@ -423,9 +423,7 @@
МассивОписанияКонтактов = ВзаимодействияКлиентСервер.ПолучитьМассивОписанияВозможныхКонтактов();
Для каждого ЭлементМассиваОписания Из МассивОписанияКонтактов Цикл
Если ЭлементМассиваОписания.ИмяВладельца = ИмяТаблицыБезПрефикса Тогда
- Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда
- КоллекцияОтборов = Форма["Список_" + ЭлементМассиваОписания.Имя].КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
- КонецЕсли;
+ КоллекцияОтборов = Форма["Список_" + ЭлементМассиваОписания.Имя].КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
КоллекцияОтборов.Элементы[0].ПравоеЗначение = ЗначениеОтбора;
КонецЕсли;
КонецЦикла;
@@ -554,4 +552,31 @@
КонецПроцедуры
+// Выполняет проверку правильности заполнения реквизитов ДатаКогдаОтправить и ДатаАктуальностиОтправки в форме документа.
+//
+// Параметры:
+// Объект - ДокументОбъект - документ, в котором выполняется проверка.
+// Отказ - Булево - устанавливает в истина, если реквизиты заполнены не правильно
+//
+Процедура ПроверкаЗаполненностиРеквизитовОтложеннойОтправки(Объект, Отказ) Экспорт
+
+ Если Объект.ДатаКогдаОтправить > Объект.ДатаАктуальностиОтправки И (Не Объект.ДатаАктуальностиОтправки = Дата(1,1,1)) Тогда
+
+ Отказ = Истина;
+ ТекстСообщения= НСтр("ru = 'Дата актуальности отправки меньше чем дата отправки.'");
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "Объект.ДатаАктуальностиОтправки");
+
+ КонецЕсли;
+
+ Если НЕ Объект.ДатаАктуальностиОтправки = Дата(1,1,1)
+ И Объект.ДатаАктуальностиОтправки < ОбщегоНазначенияКлиент.ДатаСеанса() Тогда
+
+ Отказ = Истина;
+ ТекстСообщения= НСтр("ru = 'Указанная дата актуальности меньше текущей даты, такое сообщение никогда не будет отправлено'");
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "Объект.ДатаАктуальностиОтправки");
+
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl b/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl
index 50967fdfc..6a3c73712 100644
--- a/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl
@@ -480,9 +480,9 @@
РазмерМб = РазмерВБайтах / (1024*1024);
Если РазмерМб > 1 Тогда
- СтрокаРазмер = Формат(РазмерМб,"ЧДЦ=1") + " " + Нстр("ru = 'Мбайт'");
+ СтрокаРазмер = Формат(РазмерМб,"ЧДЦ=1") + " " + Нстр("ru = 'Мб'");
Иначе
- СтрокаРазмер = Формат(РазмерВБайтах /1024,"ЧДЦ=0; ЧН=0") + " " + Нстр("ru = 'Кбайт'");
+ СтрокаРазмер = Формат(РазмерВБайтах /1024,"ЧДЦ=0; ЧН=0") + " " + Нстр("ru = 'Кб'");
КонецЕсли;
Возврат СтрокаРазмер;
@@ -550,7 +550,7 @@
//очистить связанные отборы
ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора(
- Отбор.Элементы,"ОтборПоТипуВзаимодействий",ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ);
+ Отбор.Элементы,"Отбор по типу взаимодействий",ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ);
//установить отборы для типа
Если ТипВзаимодействия = "ВсеПисьма" Тогда
@@ -845,4 +845,114 @@
КонецФункции
+Функция СписокСтатусов() Экспорт
+
+ СписокСтатусов = Новый СписокЗначений;
+ СписокСтатусов.Добавить("Все", НСтр("ru = 'Все'"));
+ СписокСтатусов.Добавить("КРассмотрению", НСтр("ru = 'К рассмотрению'"));
+ СписокСтатусов.Добавить("Отложенные", НСтр("ru = 'Отложенные'"));
+ СписокСтатусов.Добавить("Рассмотренные", НСтр("ru = 'Рассмотренные'"));
+
+ Возврат СписокСтатусов;
+
+КонецФункции
+
+Функция СтатусПоИмениКоманды(ИмяКоманды) Экспорт
+
+ НайденнаяПозиция = Найти(ИмяКоманды, "_");
+ Если НайденнаяПозиция = 0 Тогда
+ Возврат "Все";
+ КонецЕсли;
+
+ СтрокаСтатус = Прав(ИмяКоманды, СтрДлина(ИмяКоманды) - НайденнаяПозиция);
+ Если СписокСтатусов().НайтиПоЗначению(СтрокаСтатус) = Неопределено Тогда
+ Возврат "Все";
+ КонецЕсли;
+
+ Возврат СтрокаСтатус;
+
+КонецФункции
+
+Функция ТипВзаимодействияПоИмениКоманды(ИмяКоманды, ТолькоПочта) Экспорт
+
+ НайденнаяПозиция = Найти(ИмяКоманды, "_");
+ Если НайденнаяПозиция = 0 Тогда
+ Возврат "Все";
+ КонецЕсли;
+
+ СтрокаТипВзаимодействия = Прав(ИмяКоманды, СтрДлина(ИмяКоманды) - НайденнаяПозиция);
+ Если СписокОтборовПоТипуВзаимодействий(ТолькоПочта).НайтиПоЗначению(СтрокаТипВзаимодействия) = Неопределено Тогда
+ Возврат "Все";
+ КонецЕсли;
+
+ Возврат СтрокаТипВзаимодействия;
+
+КонецФункции
+
+Функция СписокОтборовПоТипуВзаимодействий(ТолькоПочта) Экспорт
+
+ СписокОтборов = Новый СписокЗначений;
+
+ СписокОтборов.Добавить("Все", НСтр("ru = 'Все'"));
+ СписокОтборов.Добавить("ВсеПисьма", НСтр("ru = 'Все письма'"));
+ Если Не ТолькоПочта Тогда
+ СписокОтборов.Добавить("Встречи", НСтр("ru = 'Встречи'"));
+ СписокОтборов.Добавить("ТелефонныеЗвонки", НСтр("ru = 'Телефонные звонки'"));
+ СписокОтборов.Добавить("ЗапланированныеВзаимодействия", НСтр("ru = 'Запланированные взаимодействия'"));
+ СписокОтборов.Добавить("СообщенияSMS", НСтр("ru = 'Сообщения SMS'"));
+ КонецЕсли;
+ СписокОтборов.Добавить("ВходящиеПисьма", НСтр("ru = 'Входящие'"));
+ СписокОтборов.Добавить("ПисьмаЧерновики", НСтр("ru = 'Черновики'"));
+ СписокОтборов.Добавить("ИсходящиеПисьма", НСтр("ru = 'Исходящие'"));
+ СписокОтборов.Добавить("Отправленные", НСтр("ru = 'Отправленные'"));
+ СписокОтборов.Добавить("УдаленныеПисьма", НСтр("ru = 'Удаленные'"));
+ Если Не ТолькоПочта Тогда
+ СписокОтборов.Добавить("ИсходящиеЗвонки", НСтр("ru = 'Исходящие звонки'"));
+ СписокОтборов.Добавить("ВходящиеЗвонки", НСтр("ru = 'Входящие звонки'"));
+ КонецЕсли;
+
+ Возврат СписокОтборов;
+
+КонецФункции
+
+Процедура ОбработкаПолученияПредставления(МенеджерОбъекта, Данные, Представление, СтандартнаяОбработка) Экспорт
+
+ Тема = ?(ПустаяСтрока(Данные.Тема), НСтр("ru = 'Без темы'"), Данные.Тема);
+ Дата = Формат(Данные.Дата, "ДЛФ=D");
+ ТипДокумента = "";
+ Если ТипЗнч(МенеджерОбъекта) = Тип("ДокументМенеджер.Встреча") Тогда
+ ТипДокумента = НСтр("ru = 'Встреча'");
+ ИначеЕсли ТипЗнч(МенеджерОбъекта) = Тип("ДокументМенеджер.ЗапланированноеВзаимодействие") Тогда
+ ТипДокумента = НСтр("ru = 'Запланированное взаимодействие'");
+ ИначеЕсли ТипЗнч(МенеджерОбъекта) = Тип("ДокументМенеджер.СообщениеSMS") Тогда
+ ТипДокумента = НСтр("ru = 'SMS'");
+ ИначеЕсли ТипЗнч(МенеджерОбъекта) = Тип("ДокументМенеджер.ТелефонныйЗвонок") Тогда
+ ТипДокумента = НСтр("ru = 'Телефонный звонок'");
+ ИначеЕсли ТипЗнч(МенеджерОбъекта) = Тип("ДокументМенеджер.ЭлектронноеПисьмоВходящее") Тогда
+ ТипДокумента = НСтр("ru = 'Входящее письмо'");
+ ИначеЕсли ТипЗнч(МенеджерОбъекта) = Тип("ДокументМенеджер.ЭлектронноеПисьмоИсходящее") Тогда
+ ТипДокумента = НСтр("ru = 'Исходящее письмо'");
+ КонецЕсли;
+
+ ШаблонПредставления = НСтр("ru = '%1 от %2 (%3)'");
+ Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПредставления, Тема, Дата, ТипДокумента);
+
+ СтандартнаяОбработка = Ложь;
+
+КонецПроцедуры
+
+Процедура ОбработкаПолученияПолейПредставления(МенеджерОбъекта, Поля, СтандартнаяОбработка) Экспорт
+
+ Поля.Добавить("Тема");
+ Поля.Добавить("Дата");
+ СтандартнаяОбработка = Ложь;
+
+КонецПроцедуры
+
+Функция ПолучитьКартинкуСтраницыПодписи(ПоказыватьКартинку) Экспорт
+
+ Возврат ?( ПоказыватьКартинку, БиблиотекаКартинок.КоличествоРассмотрено, Новый Картинка);
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ВзаимодействияКлиентСерверПовтИспПереопределяемый/Module.bsl b/SSL/src/CommonModules/ВзаимодействияКлиентСерверПовтИспПереопределяемый/Module.bsl
index d2adeafee..d1855d84a 100644
--- a/SSL/src/CommonModules/ВзаимодействияКлиентСерверПовтИспПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ВзаимодействияКлиентСерверПовтИспПереопределяемый/Module.bsl
@@ -34,7 +34,7 @@
// ВзаимодействияКлиентСервер.
//
Процедура ДополнитьМассивОписанияВозможныхКонтактов(МассивВозможныеКонтакты) Экспорт
-
+
КонецПроцедуры
diff --git a/SSL/src/CommonModules/ВзаимодействияПереопределяемый/Module.bsl b/SSL/src/CommonModules/ВзаимодействияПереопределяемый/Module.bsl
index b78bd78e0..93983432a 100644
--- a/SSL/src/CommonModules/ВзаимодействияПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ВзаимодействияПереопределяемый/Module.bsl
@@ -25,4 +25,23 @@
КонецФункции
+//Возможность переопределить владельца присоединенных файлов для письма.
+//Такая необходимость может возникнуть например при массовых рассылках. В этом случае имеет смысл
+//хранить одни и те же присоединенные файлы в одном месте, а не тиражировать их на все письма рассылки.
+//
+//Параметры
+// Письмо - ДокументСсылка, ДокументОбъект - документ электронное письмо для которого необходимо получить вложения.
+//
+//Возвращаемое значение:
+// Структура,Неопределено - Неопределено, если присоединенные файлы хранятся при письме.
+// Структура, если присоединенные файлы хранятся в другом объекте. Формат структуры:
+// - Владелец - владелец присоединенных файлов,
+// - ИмяСправочникаПрисоединенныеФайлы - имя объекта метаданных присоединенных файлов.
+//
+Функция ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(Письмо) Экспорт
+
+ Возврат Неопределено;
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ВнешниеПользователи/Module.bsl b/SSL/src/CommonModules/ВнешниеПользователи/Module.bsl
index ba9ace902..209b30a1d 100644
--- a/SSL/src/CommonModules/ВнешниеПользователи/Module.bsl
+++ b/SSL/src/CommonModules/ВнешниеПользователи/Module.bsl
@@ -5,11 +5,11 @@
#Область ПрограммныйИнтерфейс
-// Возвращает признак использования внешних пользователей в программе.
+// Возвращает признак использования внешних пользователей в программе
// (значение функциональной опции ИспользоватьВнешнихПользователей).
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, внешние пользователи включены.
//
Функция ИспользоватьВнешнихПользователей() Экспорт
@@ -17,7 +17,7 @@
КонецФункции
-// См. ПользователиКлиентСервер.ТекущийВнешнийПользователь().
+// См. одноименную функцию в общем модуле ПользователиКлиентСервер.
Функция ТекущийВнешнийПользователь() Экспорт
Возврат ПользователиКлиентСервер.ТекущийВнешнийПользователь();
@@ -28,12 +28,13 @@
// Объект авторизации - это ссылка на объект информационной базы, используемый
// для связи с внешним пользователем, например, контрагент, физическое лицо и т.д.
//
-// Параметры
+// Параметры:
// ВнешнийПользователь - Неопределено - используется текущий внешний пользователь.
-// СправочникСсылка.ВнешниеПользователи.
+// - СправочникСсылка.ВнешниеПользователи - указанный внешний пользователь.
//
// Возвращаемое значение:
-// Метаданные.Справочники.ВнешниеПользователи.Реквизиты.ОбъектыАвторизации.Тип
+// Ссылка - объект авторизации одного из типов, указанных в описании типов в свойстве
+// "Метаданные.Справочники.ВнешниеПользователи.Реквизиты.ОбъектыАвторизации.Тип".
//
Функция ПолучитьОбъектАвторизацииВнешнегоПользователя(ВнешнийПользователь = Неопределено) Экспорт
diff --git a/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl b/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl
index 881b39267..476baecc1 100644
--- a/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl
+++ b/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl
@@ -6,35 +6,30 @@
#Область ПрограммныйИнтерфейс
// Проверяет наличие запрета изменения элемента данных.
-// Для работы функции требуется настройка
-// процедуры ДанныеДляПроверкиЗапретаИзменения
+// Для работы функции требуется настройка процедуры ДанныеДляПроверкиЗапретаИзменения
// модуля ДатыЗапретаИзмененияПереопределяемый.
//
-// Если Данные - полное имя объекта метаданных,
-// тогда данные для проверки будут получены
+// Если Данные - полное имя объекта метаданных, тогда данные для проверки будут получены
// из базы данных через ИдентификаторДанных.
-// Если Данные - объект, тогда данные для проверки
-// будут получены из экземпляра объекта или
+// Если Данные - объект, тогда данные для проверки будут получены из экземпляра объекта или
// набора записей.
-// Если Данные - объект и задан ИдентификаторДанных,
-// тогда будут выполнены две проверки, причем
-// данные будут получены и из объекта/набора записей,
-// и из базы данных через ИдентификаторДанных.
+// Если Данные - объект и задан ИдентификаторДанных, тогда будут выполнены две проверки, причем
+// данные будут получены и из объекта/набора записей, и из базы данных через ИдентификаторДанных.
//
// Параметры:
-// Данные - Строка (полное имя объекта метаданных),
-// СправочникОбъект.<Имя>,
+// Данные - Строка - (полное имя объекта метаданных).
+// - СправочникОбъект.<Имя>,
// ДокументОбъект.<Имя>,
// ПланВидовХарактеристикОбъект.<Имя>,
// ПланСчетовОбъект.<Имя>,
// ПланВидовРасчетаОбъект.<Имя>,
// БизнесПроцессОбъект.<Имя>,
// ЗадачаОбъект.<Имя>,
-// ПланОбменаОбъект.<Имя>,
-// РегистрСведенийНаборЗаписей.<Имя>,
-// РегистрНакопленияНаборЗаписей.<Имя>,
-// РегистрБухгалтерииНаборЗаписей.<Имя>,
-// РегистрРасчетаНаборЗаписей.<Имя>.
+// ПланОбменаОбъект - объект данных.
+// - РегистрСведенийНаборЗаписей.<Имя>.Отбор,
+// РегистрНакопленияНаборЗаписей.<Имя>.Отбор,
+// РегистрБухгалтерииНаборЗаписей.<Имя>.Отбор,
+// РегистрРасчетаНаборЗаписей.<Имя>.Отбор - набор записей.
//
// ИдентификаторДанных - СправочникСсылка.<Имя>,
// ДокументСсылка.<Имя>,
@@ -43,17 +38,17 @@
// ПланВидовРасчетаСсылка.<Имя>,
// БизнесПроцессСсылка.<Имя>,
// ЗадачаСсылка.<Имя>,
-// ПланОбменаСсылка.<Имя>,
-// РегистрСведенийНаборЗаписей.<Имя>.Отбор,
+// ПланОбменаСсылка.<Имя> - ссылка на объект данных.
+// - РегистрСведенийНаборЗаписей.<Имя>.Отбор,
// РегистрНакопленияНаборЗаписей.<Имя>.Отбор,
// РегистрБухгалтерииНаборЗаписей.<Имя>.Отбор,
-// РегистрРасчетаНаборЗаписей.<Имя>.Отбор.
+// РегистрРасчетаНаборЗаписей.<Имя>.Отбор - отбор набора записей.
//
-// СообщитьОЗапрете - Булево, если передать Ложь, сообщение пользователю
+// СообщитьОЗапрете - Булево - если передать Ложь, сообщение пользователю
// о запрете изменения данных не будет отправлено.
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, изменение запрещено.
//
Функция ИзменениеЗапрещено(Знач Данные,
Знач ИдентификаторДанных = Неопределено,
@@ -75,10 +70,10 @@
КонецФункции
// Проверяет наличие запрета загрузки элемента данных.
-// Для работы функции требуется настройка
-// процедуры ДанныеДляПроверкиЗапретаИзменения
+// Для работы функции требуется настройка процедуры ДанныеДляПроверкиЗапретаИзменения
// модуля ДатыЗапретаИзмененияПереопределяемый.
//
+// Параметры:
// Данные - СправочникОбъект.<Имя>,
// ДокументОбъект.<Имя>,
// ПланВидовХарактеристикОбъект.<Имя>,
@@ -87,24 +82,30 @@
// БизнесПроцессОбъект.<Имя>,
// ЗадачаОбъект.<Имя>,
// ПланОбменаОбъект.<Имя>,
+// УдалениеОбъекта - объект данных.
// РегистрСведенийНаборЗаписей.<Имя>,
// РегистрНакопленияНаборЗаписей.<Имя>,
// РегистрБухгалтерииНаборЗаписей.<Имя>,
-// РегистрРасчетаНаборЗаписей.<Имя>.
+// РегистрРасчетаНаборЗаписей.<Имя> - набор записей.
//
-// УзелПланаОбмена - ПланыОбменаСсылка.<Имя плана обмена> узел,
+// УзелПланаОбмена - ПланыОбменаСсылка.<Имя плана обмена> - узел,
// для которого будет выполнена проверка.
//
// СообщениеОбОшибке - Строка (возвращаемое значение) - описание запрета загрузки.
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, загрузка запрещена.
//
Функция ЗагрузкаЗапрещена(Данные, УзелПланаОбмена, СообщениеОбОшибке = "") Экспорт
- ОбъектМетаданных = Данные.Метаданные();
+ Если ТипЗнч(Данные) = Тип("УдалениеОбъекта") Тогда
+ ОбъектМетаданных = Данные.Ссылка.Метаданные();
+ Иначе
+ ОбъектМетаданных = Данные.Метаданные();
+ КонецЕсли;
- ИсточникиДанных = ДатыЗапретаИзмененияПовтИсп.ИсточникиДанныхДляПроверкиЗапретаИзменения(
+
+ ИсточникиДанных = ДатыЗапретаИзмененияСлужебныйПовтИсп.ИсточникиДанныхДляПроверкиЗапретаИзменения(
).НайтиСтроки(Новый Структура("Таблица", ОбъектМетаданных.ПолноеИмя()));
Если ИсточникиДанных.Количество() = 0 Тогда
@@ -119,7 +120,7 @@
Отказ,
ОбщегоНазначения.ЭтоРегистр(ОбъектМетаданных),
,
- ,
+ ТипЗнч(Данные) = Тип("УдалениеОбъекта"),
Ложь,
Ложь,
УзелПланаОбмена,
@@ -133,26 +134,24 @@
КонецФункции
-// Обработчик события формы ПриЧтенииНаСервере, который
-// встраивается в формы элементов данных
-// (элементов справочников, документов, записей регистров, и др.),
-// чтобы заблокировать форму при наличии запрета изменения.
+// Обработчик события формы ПриЧтенииНаСервере, который встраивается в формы элементов справочников,
+// документов, записей регистров и др., чтобы заблокировать форму при наличии запрета изменения.
//
// Параметры:
-// Форма - УправляемаяФорма,
+// Форма - УправляемаяФорма - форма объекта данных или записи регистра.
//
-// ИдентификаторДанных - СправочникСсылка.<Имя>,
-// ДокументСсылка.<Имя>,
-// ПланВидовХарактеристикСсылка.<Имя>,
-// ПланСчетовСсылка.<Имя>,
-// ПланВидовРасчетаСсылка.<Имя>,
-// БизнесПроцессСсылка.<Имя>,
-// ЗадачаСсылка.<Имя>,
-// ПланОбменаСсылка.<Имя>,
-// РегистрСведенийНаборЗаписей.Отбор,
-// РегистрНакопленияНаборЗаписей.Отбор,
-// РегистрБухгалтерииНаборЗаписей.Отбор,
-// РегистрРасчетаНаборЗаписей.Отбор.
+// ТекущийОбъект - СправочникОбъект.<Имя>,
+// ДокументОбъект.<Имя>,
+// ПланВидовХарактеристикОбъект.<Имя>,
+// ПланСчетовОбъект.<Имя>,
+// ПланВидовРасчетаОбъект.<Имя>,
+// БизнесПроцессОбъект.<Имя>,
+// ЗадачаОбъект.<Имя>,
+// ПланОбменаОбъект.<Имя> - ссылка на объект данных.
+// РегистрСведенийМенеджерЗаписи.<Имя>,
+// РегистрНакопленияМенеджерЗаписи.<Имя>,
+// РегистрБухгалтерииМенеджерЗаписи.<Имя>,
+// РегистрРасчетаМенеджерЗаписи.<Имя> - менеджер записи.
//
Функция ОбъектПриЧтенииНаСервере(Форма, ТекущийОбъект) Экспорт
@@ -185,13 +184,16 @@
КонецФункции
-// Добавляет строку описание источников данных для проверки запрета изменения.
+// Добавляет строку описания источника данных для проверки запрета изменения.
+// Используется в процедуре ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения
+// общего модуля ДатыЗапретаИзмененияПереопределяемый.
//
// Параметры:
-// Таблица - Строка.
-// ПолеДаты - Строка.
-// Раздел - Строка.
-// ПолеОбъекта - Строка.
+// Данные - ТаблицаЗначений - передается в процедуру ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения.
+// Таблица - Строка - полное имя объекта метаданных, например, "Документ.ПриходнаяНакладная".
+// ПолеДаты - Строка - имя реквизита объекта или табличной части, например "Дата", "Товары.ДатаОтгрузки".
+// Раздел - Строка - имя предопределенного элемента "ПланВидовХарактеристикСсылка.РазделыДатЗапрета".
+// ПолеОбъекта - Строка - имя реквизита объекта или реквизита табличной части, например "Организация", "Товары.Склад".
//
Процедура ДобавитьСтроку(Данные, Таблица, ПолеДаты, Раздел = "", ПолеОбъекта = "") Экспорт
@@ -207,28 +209,28 @@
// для авторизованного пользователя и/или узла плана обмена.
//
// Параметры:
-// ДанныеДляПроверки - таблица, возвращаемая функцией
-// ДатыЗапретаИзменения.ШаблонДанныхДляПроверки().
+// ДанныеДляПроверки - ТаблицаЗначений - возвращается функцией
+// ШаблонДанныхДляПроверки общего модуля ДатыЗапретаИзменения.
//
-// СообщитьОЗапрете - Булево, выводит сообщение о найденных запретах
-// при проверке данных.
+// СообщитьОЗапрете - Булево - если истина, будет выведено сообщение
+// о найденных запретах при проверке данных.
//
-// ИдентификаторДанных - Ссылка на объект данных для получения представления,
+// ИдентификаторДанных - Ссылка - на объект данных для получения представления,
// используемого в сообщении о запрете.
//
-// СтандартнаяОбработка - Булево, если Ложь, проверка запрета изменения (для пользователей)
-// будет пропущена.
+// СтандартнаяОбработка - Булево - если Ложь, проверка запрета изменения (для пользователей)
+// будет пропущена.
//
// УзелПланаОбмена - Неопределено, ПланыОбменаСсылка.<Имя плана обмена> -
// если задать узел будет выполнена проверка запрета загрузки.
//
-// НайденныеЗапреты - Структура (возвращаемое значение).
+// НайденныеЗапреты - Структура - возвращаемое значение.
// Если найден запрет изменения данных, значит есть
// свойство НайденЗапретИзмененияДанных, если найден запрет
// загрузки данных, значит есть свойство НайденЗапретЗагрузкиДанных.
//
// Возвращаемое значение:
-// Булево
+// Булево - если Истина, значит найден хотя бы один запрет изменения.
//
Функция НайденЗапретИзмененияДанных(Знач ДанныеДляПроверки,
Знач СообщитьОЗапрете,
@@ -240,7 +242,7 @@
УстановитьПривилегированныйРежим(Истина);
Если ТипЗнч(ДанныеДляПроверки) = Тип("Структура") Тогда
- ИдентификаторДанных = ДанныеДляПроверки.ИдентификаторДанных;
+ ИдентификаторДанных = ДанныеДляПроверки.ИдентификаторДанныхДляПредставления;
ТаблицаДанных = ДанныеДляПроверки.Таблица;
ДанныеДляПроверки = ПолучитьДанныеДляПроверки(ДанныеДляПроверки);
Иначе
@@ -268,7 +270,7 @@
ТекущийКлючСтроки = ТекущийКлючСтроки + 1;
КонецЦикла;
- СвойстваВстраивания = ДатыЗапретаИзмененияПовтИсп.СвойстваРазделов();
+ СвойстваВстраивания = ДатыЗапретаИзмененияСлужебныйПовтИсп.СвойстваРазделов();
НачатьТранзакцию();
Попытка
@@ -393,26 +395,37 @@
КонецФункции
// Возвращает готовую пустую таблицу значений (с колонками Дата, Раздел, Объект)
-// для заполнения и последующей передачи в функцию
-// ДатыЗапретаИзменения.НайденЗапретИзмененияДанных().
+// для заполнения и последующей передачи в функцию НайденЗапретИзмененияДанных
+// общего модуля ДатыЗапретаИзменения.
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - с колонками:
+// * Таблица - Строка - полное имя объекта метаданных, например, "Документ.ПриходнаяНакладная".
+// * ПолеДаты - Строка - имя реквизита объекта или табличной части, например "Дата", "Товары.ДатаОтгрузки".
+// * Раздел - Строка - имя предопределенного элемента "ПланВидовХарактеристикСсылка.РазделыДатЗапрета".
+// * ПолеОбъекта - Строка - имя реквизита объекта или реквизита табличной части, например "Организация", "Товары.Склад".
//
Функция ШаблонДанныхДляПроверки() Экспорт
- Возврат ДатыЗапретаИзмененияПовтИсп.ШаблонДанныхДляПроверки().Скопировать();
+ Возврат ДатыЗапретаИзмененияСлужебныйПовтИсп.ШаблонДанныхДляПроверки().Скопировать();
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Обработчики подписок на события
-// Обработчик подписки на событие ПередЗаписью для типов:
-// СправочникОбъект,
-// ПланВидовХарактеристикОбъект,
-// ПланСчетовОбъект,
-// ПланВидовРасчетаОбъект,
-// БизнесПроцессОбъект,
-// ЗадачаОбъект,
-// ПланОбменаОбъект.
+// Обработчик подписки на событие ПередЗаписью для проверки запрета изменения.
+//
+// Параметры:
+// Источник - СправочникОбъект,
+// ПланВидовХарактеристикОбъект,
+// ПланСчетовОбъект,
+// ПланВидовРасчетаОбъект,
+// БизнесПроцессОбъект,
+// ЗадачаОбъект,
+// ПланОбменаОбъект - объект данных, передаваемый в подписку на событие ПередЗаписью.
+//
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
//
Процедура ПроверитьДатуЗапретаИзмененияПередЗаписью(Источник, Отказ) Экспорт
@@ -425,12 +438,15 @@
КонецПроцедуры
-// Обработчик подписки на событие ПередЗаписью для типа ДокументОбъект.
-Процедура ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента(
- Источник,
- Отказ,
- РежимЗаписи,
- РежимПроведения) Экспорт
+// Обработчик подписки на событие ПередЗаписью для проверки запрета изменения.
+//
+// Параметры:
+// Источник - ДокументОбъект - объект данных, передаваемый в подписку на событие ПередЗаписью.
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// РежимЗаписи - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// РежимПроведения - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+//
+Процедура ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
@@ -441,9 +457,13 @@
КонецПроцедуры
-// Обработчик подписки на событие ПередЗаписью для типов:
-// РегистрСведенийНаборЗаписей,
-// РегистрНакопленияНаборЗаписей.
+// Обработчик подписки на событие ПередЗаписью для проверки запрета изменения.
+//
+// Параметры:
+// Источник - РегистрСведенийНаборЗаписей, РегистрНакопленияНаборЗаписей - набор записей,
+// передаваемый в подписку на событие ПередЗаписью.
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// Замещение - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
//
Процедура ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписей(Источник, Отказ, Замещение) Экспорт
@@ -456,11 +476,16 @@
КонецПроцедуры
-// Обработчик подписки на событие ПередЗаписью для типа РегистрБухгалтерииНаборЗаписей.
+// Обработчик подписки на событие ПередЗаписью для проверки запрета изменения.
+//
+// Параметры:
+// Источник - РегистрБухгалтерииНаборЗаписей - набор записей, передаваемый
+// в подписку на событие ПередЗаписью.
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// РежимЗаписи - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+//
Процедура ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписейРегистраБухгалтерии(
- Источник,
- Отказ,
- РежимЗаписи) Экспорт
+ Источник, Отказ, РежимЗаписи) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
@@ -471,7 +496,17 @@
КонецПроцедуры
-// Обработчик подписки на событие ПередЗаписью для типа РегистрРасчетаНаборЗаписей.
+// Обработчик подписки на событие ПередЗаписью для проверки запрета изменения.
+//
+// Параметры:
+// Источник - РегистрРасчетаНаборЗаписей - набор записей, передаваемый
+// в подписку на событие ПередЗаписью.
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// Замещение - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// ТолькоЗапись - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// ЗаписьФактическогоПериодаДействия - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// ЗаписьПерерасчетов - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+//
Процедура ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписейРегистраРасчета(
Источник,
Отказ,
@@ -489,15 +524,19 @@
КонецПроцедуры
-// Обработчик подписки на событие ПередУдалением для типов:
-// СправочникОбъект,
-// ДокументОбъект,
-// ПланВидовХарактеристикОбъект,
-// ПланСчетовОбъект,
-// ПланВидовРасчетаОбъект,
-// БизнесПроцессОбъект,
-// ЗадачаОбъект,
-// ПланОбменаОбъект.
+// Обработчик подписки на событие ПередУдалением для проверки запрета изменения.
+//
+// Параметры:
+// Источник - СправочникОбъект,
+// ДокументОбъект,
+// ПланВидовХарактеристикОбъект,
+// ПланСчетовОбъект,
+// ПланВидовРасчетаОбъект,
+// БизнесПроцессОбъект,
+// ЗадачаОбъект,
+// ПланОбменаОбъект - объект данных, передаваемый в подписку на событие ПередЗаписью.
+//
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
//
Процедура ПроверитьДатуЗапретаИзмененияПередУдалением(Источник, Отказ) Экспорт
@@ -535,7 +574,7 @@
ДанныеДляПроверки = ШаблонДанныхДляПроверки();
- ИсточникиДанныхТаблиц = ДатыЗапретаИзмененияПовтИсп.ИсточникиДанныхДляПроверкиЗапретаИзменения();
+ ИсточникиДанныхТаблиц = ДатыЗапретаИзмененияСлужебныйПовтИсп.ИсточникиДанныхДляПроверкиЗапретаИзменения();
Отбор = Новый Структура("Таблица", ПредварительныеДанные.Таблица);
ИсточникиДанных = ИсточникиДанныхТаблиц.НайтиСтроки(Отбор);
diff --git a/SSL/src/CommonModules/ДатыЗапретаИзмененияПереопределяемый/Module.bsl b/SSL/src/CommonModules/ДатыЗапретаИзмененияПереопределяемый/Module.bsl
index 3f3f34354..1c2b581f8 100644
--- a/SSL/src/CommonModules/ДатыЗапретаИзмененияПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ДатыЗапретаИзмененияПереопределяемый/Module.bsl
@@ -8,31 +8,28 @@
// Позволяет изменить работу интерфейса при встраивании.
//
// Параметры:
-// НастройкиРаботыИнтерфейса -
-// Структура:
-// ИспользоватьВнешнихПользователей - Булево (начальное значение Ложь).
+// НастройкиРаботыИнтерфейса - Структура - содержит свойство:
+// * ИспользоватьВнешнихПользователей - Булево - (начальное значение Ложь),
+// если установить Истина, тогда даты запрета можно будет настраивать для внешних пользователей.
//
-Процедура НастройкаИнтерфейса(Знач НастройкиРаботыИнтерфейса) Экспорт
+Процедура НастройкаИнтерфейса(НастройкиРаботыИнтерфейса) Экспорт
КонецПроцедуры
// Содержит описание таблиц и полей объектов для проверки запретов изменения данных.
-// Вызывается из процедуры ДатыЗапретаИзменения.ИзменениеЗапрещено(),
-// используемой в подписке на событие ПередЗаписью объекта
-// для проверки наличия запретов и отказа от изменений запрещенного объекта.
-//
+// Вызывается из процедуры ИзменениеЗапрещено общего модуля ДатыЗапретаИзменения, используемой в подписке
+// на событие ПередЗаписью объекта для проверки наличия запретов и отказа от изменений запрещенного объекта.
+//
// Параметры:
-// ИсточникиДанных - ТаблицаЗначений:
-// Таблица - Строка, полное имя объекта метаданных,
-// например, Документ.ПриходнаяНакладная
-// ПолеДаты - Строка, имя реквизита или имя реквизита
-// табличной части, например "Дата", "Товары.ДатаОтгрузки"
-// Раздел - Строка, имя предопределенного элемента
-// ПланВидовХарактеристикСсылка.РазделыДатЗапрета
-// ПолеОбъекта - Строка, имя реквизита или имя реквизита
-// табличной части, например "Организация", "Товары.Склад"
+// ИсточникиДанных - ТаблицаЗначений - с колонками:
+// * Таблица - Строка - полное имя объекта метаданных, например, "Документ.ПриходнаяНакладная".
+// * ПолеДаты - Строка - имя реквизита объекта или табличной части, например "Дата", "Товары.ДатаОтгрузки".
+// * Раздел - Строка - имя предопределенного элемента "ПланВидовХарактеристикСсылка.РазделыДатЗапрета".
+// * ПолеОбъекта - Строка - имя реквизита объекта или реквизита табличной части, например "Организация", "Товары.Склад".
+//
+// Для добавления строки имеется процедура ДобавитьСтроку в общем модуле ДатыЗапретаИзменения.
//
Процедура ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения(ИсточникиДанных) Экспорт
@@ -43,27 +40,26 @@
// Позволяет переопределить выполнение проверок запретов по произвольному условию.
//
// Параметры:
-// Объект - объект или набор записей (ПередЗаписью или ПриЧтенииНаСервере):
-// СправочникОбъект
-// ДокументОбъект
-// ПланВидовХарактеристикОбъект
-// ПланСчетовОбъект
-// ПланВидовРасчетаОбъект
-// БизнесПроцессОбъект
-// ЗадачаОбъект
-// ПланОбменаОбъект
-// РегистрСведенийНаборЗаписей
-// РегистрНакопленияНаборЗаписей
-// РегистрБухгалтерииНаборЗаписей
-// РегистрРасчетаНаборЗаписей
-//
-// ПроверкаЗапретаИзменения - Булево, если установить Ложь проверка запрета
+// Объект - СправочникОбъект,
+// ДокументОбъект,
+// ПланВидовХарактеристикОбъект,
+// ПланСчетовОбъект,
+// ПланВидовРасчетаОбъект,
+// БизнесПроцессОбъект,
+// ЗадачаОбъект,
+// ПланОбменаОбъект - объект данных (ПередЗаписью или ПриЧтенииНаСервере).
+// - РегистрСведенийНаборЗаписей,
+// РегистрНакопленияНаборЗаписей,
+// РегистрБухгалтерииНаборЗаписей,
+// РегистрРасчетаНаборЗаписей - набор записей (ПередЗаписью или ПриЧтенииНаСервере).
+//
+// ПроверкаЗапретаИзменения - Булево - если установить Ложь проверка запрета
// изменения выполняться не будет.
//
-// УзелПроверкиЗапретаЗагрузки - Неопределено, ПланыОбменаСсылка.<Имя плана обмена>.
-// Когда Неопределено проверка запрета загрузки не выполняется.
+// УзелПроверкиЗапретаЗагрузки - Неопределено, ПланыОбменаСсылка -
+// когда Неопределено проверка запрета загрузки не выполняется.
//
-// СообщитьОЗапрете - Булево, начальное значение Истина. Если установить Ложь,
+// СообщитьОЗапрете - Булево - начальное значение Истина. Если установить Ложь,
// тогда сообщение об ошибке не будет отправлено пользователю.
// Например, при интерактивной записи будет виден лишь отказ записи.
// В журнал регистрации сообщение будет записано в любом случае.
diff --git a/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl b/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl
index a9d61a9a1..2fc46a1f6 100644
--- a/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl
@@ -170,10 +170,9 @@
// - они отключаются только с отключением всего отчета.
//
Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
-
- Отчеты.ДатыЗапретаИзменения.НастроитьВариантыОтчета(Настройки);
- Отчеты.ДатыЗапретаЗагрузки.НастроитьВариантыОтчета(Настройки);
-
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ДатыЗапретаЗагрузки);
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ДатыЗапретаИзменения);
КонецПроцедуры
// Обработчики событий подсистемы РаботаВМоделиСервиса.ОчередьЗаданий.
@@ -365,7 +364,8 @@
// РегистрСведенийНаборЗаписей,
// РегистрНакопленияНаборЗаписей,
// РегистрБухгалтерииНаборЗаписей,
-// РегистрРасчетаНаборЗаписей.
+// РегистрРасчетаНаборЗаписей,
+// УдалениеОбъекта.
//
// Параметры:
// Источник - один из типов, указанных выше.
@@ -441,6 +441,20 @@
Отказ = Истина;
КонецЕсли;
+
+ ИначеЕсли ТипЗнч(Источник) = Тип("УдалениеОбъекта") Тогда
+
+ Если ИзменениеИлиЗагрузкаЗапрещена(
+ Источник.Ссылка.Метаданные.ПолноеИмя(),
+ Источник.Ссылка,
+ СообщитьОЗапрете,
+ СтандартнаяОбработка,
+ УзелПланаОбмена,
+ НайденныеЗапреты) Тогда
+
+ Отказ = Истина;
+ КонецЕсли;
+
Иначе
// НЕ ИсточникРегистр И Источник.ЭтоНовый()
// ИЛИ ИсточникРегистр И НЕ Замещение
@@ -465,7 +479,9 @@
СтандартнаяОбработка,
УзелПланаОбмена) Экспорт
- Если Источник.ДополнительныеСвойства.Свойство("ПропуститьПроверкуЗапретаИзменения") Тогда
+ Если ТипЗнч(Источник) <> Тип("УдалениеОбъекта")
+ И Источник.ДополнительныеСвойства.Свойство("ПропуститьПроверкуЗапретаИзменения") Тогда
+
Возврат Истина;
КонецЕсли;
@@ -499,13 +515,26 @@
НайденныеЗапреты = Неопределено) Экспорт
ДанныеДляПроверки = Новый Структура;
- ДанныеДляПроверки.Вставить("Таблица", Данные);
- ДанныеДляПроверки.Вставить("ИдентификаторДанных", ИдентификаторДанных);
- ДанныеДляПроверки.Вставить("ЗначенияПолейИзОбъекта", Неопределено);
+ // Необязательная ссылка на данные в базе данных.
+ ДанныеДляПроверки.Вставить("ИдентификаторДанных", ИдентификаторДанных);
+ ДанныеДляПроверки.Вставить("ИдентификаторДанныхДляПредставления", ИдентификаторДанных);
- Если ТипЗнч(Данные) <> Тип("Строка") Тогда
- ДанныеДляПроверки.Таблица = Данные.Метаданные().ПолноеИмя();
- ДанныеДляПроверки.ЗначенияПолейИзОбъекта = ИзвлечьЗначенияПолейИзОбъекта(Данные);
+ Если ТипЗнч(Данные) = Тип("Строка") Тогда
+ // Имя таблицы, требуемое для свойства ИдентификаторДанных типа Отбор,
+ // а также когда исходные данные имеют тип УдалениеОбъекта.
+ ДанныеДляПроверки.Вставить("Таблица", Данные);
+ // ИдентификаторДанных заполнен, а объекта в памяти нет.
+ ДанныеДляПроверки.Вставить("ЗначенияПолейИзОбъекта", Неопределено);
+ Иначе
+ // Имя таблицы, требуемое для свойства ИдентификаторДанных типа Отбор.
+ ДанныеДляПроверки.Вставить("Таблица", Данные.Метаданные().ПолноеИмя());
+ // ИдентификаторДанных может быть не заполнен, а объект в памяти есть.
+ Если ИдентификаторДанных = Неопределено Тогда
+ ДанныеДляПроверки.Вставить("ЗначенияПолейИзОбъекта", ИзвлечьЗначенияПолейИзОбъекта(Данные,
+ ДанныеДляПроверки.ИдентификаторДанныхДляПредставления));
+ Иначе
+ ДанныеДляПроверки.Вставить("ЗначенияПолейИзОбъекта", ИзвлечьЗначенияПолейИзОбъекта(Данные));
+ КонецЕсли;
КонецЕсли;
НайденныеЗапреты = Неопределено;
@@ -747,7 +776,7 @@
КонецФункции
-Функция ИзвлечьЗначенияПолейИзОбъекта(Знач Данные)
+Функция ИзвлечьЗначенияПолейИзОбъекта(Знач Данные, ИдентификаторДанныхДляПредставления = Неопределено)
ЗначенияПолей = Новый Структура;
ОбъектМетаданных = Данные.Метаданные();
@@ -759,6 +788,7 @@
ПоляРегистра = ПолучитьПоляРегистра(ИсточникиДанных, Отбор.Таблица);
ЗначенияПолей = Данные.Выгрузить(, ПоляРегистра);
ЗначенияПолей.Свернуть(ПоляРегистра);
+ ИдентификаторДанныхДляПредставления = Данные.Отбор;
Иначе
// Заполнение значений полей из объекта.
ЗначенияПолей = ПолучитьСтруктуруПолейОбъекта(ОбъектМетаданных, ИсточникиДанных, Отбор.Таблица);
@@ -771,6 +801,9 @@
ЗначенияПолей[Поле.Ключ] = Данные[Поле.Ключ];
КонецЕсли;
КонецЦикла;
+ Если Не Данные.ЭтоНовый() Тогда
+ ИдентификаторДанныхДляПредставления = Данные.Ссылка;
+ КонецЕсли;
КонецЕсли;
Возврат ЗначенияПолей;
@@ -779,7 +812,7 @@
Функция ПолучитьИсточникиДанных(Отбор)
- ИсточникиДанныхТаблиц = ДатыЗапретаИзмененияПовтИсп.ИсточникиДанныхДляПроверкиЗапретаИзменения();
+ ИсточникиДанныхТаблиц = ДатыЗапретаИзмененияСлужебныйПовтИсп.ИсточникиДанныхДляПроверкиЗапретаИзменения();
ИсточникиДанных = ИсточникиДанныхТаблиц.НайтиСтроки(Отбор);
diff --git a/SSL/src/CommonModules/ДатыЗапретаИзмененияПовтИсп/Module.bsl b/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебныйПовтИсп/Module.bsl
similarity index 100%
rename from SSL/src/CommonModules/ДатыЗапретаИзмененияПовтИсп/Module.bsl
rename to SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебныйПовтИсп/Module.bsl
diff --git a/SSL/src/CommonModules/ДатыЗапретаИзмененияПовтИсп/ДатыЗапретаИзмененияПовтИсп.mdo b/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебныйПовтИсп/ДатыЗапретаИзмененияСлужебныйПовтИсп.mdo
similarity index 69%
rename from SSL/src/CommonModules/ДатыЗапретаИзмененияПовтИсп/ДатыЗапретаИзмененияПовтИсп.mdo
rename to SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебныйПовтИсп/ДатыЗапретаИзмененияСлужебныйПовтИсп.mdo
index 24f9e4a6f..26a0330af 100644
--- a/SSL/src/CommonModules/ДатыЗапретаИзмененияПовтИсп/ДатыЗапретаИзмененияПовтИсп.mdo
+++ b/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебныйПовтИсп/ДатыЗапретаИзмененияСлужебныйПовтИсп.mdo
@@ -1,9 +1,9 @@
- ДатыЗапретаИзмененияПовтИсп
+ ДатыЗапретаИзмененияСлужебныйПовтИспru
- Даты запрета изменения повт исп
+ Даты запрета изменения служебный повт испtruetrue
diff --git a/SSL/src/CommonModules/ДлительныеОперации/Module.bsl b/SSL/src/CommonModules/ДлительныеОперации/Module.bsl
index adcc959ad..b2c55045b 100644
--- a/SSL/src/CommonModules/ДлительныеОперации/Module.bsl
+++ b/SSL/src/CommonModules/ДлительныеОперации/Module.bsl
@@ -22,16 +22,14 @@
// в родительский сеанс из фонового задания. По умолчанию - Ложь.
//
// Возвращаемое значение:
-// Структура - Возвращает свойства:
-// - АдресХранилища - адрес временного хранилища, в которое будет
-// помещен результат работы задания;
-// - АдресХранилищаДополнительный - адрес дополнительного временного хранилища,
-// в которое будет помещен результат работы задания (доступно только если
-// установлен параметр ИспользоватьДополнительноеВременноеХранилище);
-// - ИдентификаторЗадания - уникальный идентификатор запущенного
-// фонового задания;
-// - ЗаданиеВыполнено - Истина если задание было успешно выполнено
-// за время вызова функции.
+// Структура - параметры выполнения задания:
+// * АдресХранилища - Строка - адрес временного хранилища, в которое будет
+// помещен результат работы задания;
+// * АдресХранилищаДополнительный - Строка - адрес дополнительного временного хранилища,
+// в которое будет помещен результат работы задания (доступно только если
+// установлен параметр ИспользоватьДополнительноеВременноеХранилище);
+// * ИдентификаторЗадания - УникальныйИдентификатор - уникальный идентификатор запущенного фонового задания;
+// * ЗаданиеВыполнено - Булево - Истина если задание было успешно выполнено за время вызова функции.
//
Функция ЗапуститьВыполнениеВФоне(Знач ИдентификаторФормы, Знач ИмяЭкспортнойПроцедуры,
Знач Параметры, Знач НаименованиеЗадания = "", ИспользоватьДополнительноеВременноеХранилище = Ложь) Экспорт
@@ -110,13 +108,13 @@
КонецПроцедуры
// Проверяет состояние фонового задания по переданному идентификатору.
-//
+// При аварийном завершении задания вызывает исключение.
+//
// Параметры:
// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания.
//
// Возвращаемое значение:
-// Булево - возвращает Истина, если задание успешно выполнено,
-// Ложь - если выполняется. В иных случаях вызывается исключение.
+// Булево - состояние выполнения задания.
//
Функция ЗаданиеВыполнено(Знач ИдентификаторЗадания) Экспорт
@@ -132,20 +130,11 @@
Если Задание = Неопределено Тогда
ЗаписьЖурналаРегистрации(НСтр("ru = 'Длительные операции.Фоновое задание не найдено'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, , , Строка(ИдентификаторЗадания));
- Иначе
+ Иначе
Если Задание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
ОшибкаЗадания = Задание.ИнформацияОбОшибке;
Если ОшибкаЗадания <> Неопределено Тогда
- ЗаписьЖурналаРегистрации(НСтр("ru = 'Длительные операции.Фоновое задание завершено аварийно'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(Задание.ИнформацияОбОшибке));
ПоказатьПолныйТекстОшибки = Истина;
- Иначе
- ЗаписьЖурналаРегистрации(
- НСтр("ru = 'Длительные операции.Фоновое задание завершено аварийно'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Ошибка,
- ,
- ,
- НСтр("ru = 'Задание завершилось с неизвестной ошибкой.'"));
КонецЕсли;
ИначеЕсли Задание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
ЗаписьЖурналаРегистрации(
@@ -164,7 +153,7 @@
ВызватьИсключение(ТекстОшибки);
ИначеЕсли ОперацияНеВыполнена Тогда
ВызватьИсключение(НСтр("ru = 'Не удалось выполнить данную операцию.
- |Подробности см. в Журнале регистрации.'"));
+ |Подробности см. в Журнале регистрации.'"));
КонецЕсли;
КонецФункции
@@ -217,11 +206,12 @@
КонецЕсли;
МассивСообщений = Задание.ПолучитьСообщенияПользователю(Истина);
- Количество = МассивСообщений.Количество();
- Если Количество = 0 Тогда
+ Если МассивСообщений = Неопределено Тогда
Возврат Результат;
КонецЕсли;
+ Количество = МассивСообщений.Количество();
+
Для Номер = 1 По Количество Цикл
ОбратныйИндекс = Количество - Номер;
Сообщение = МассивСообщений[ОбратныйИндекс];
diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl
index 581a0deb9..98970b11a 100644
--- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl
+++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl
@@ -94,12 +94,7 @@
КонецЕсли;
- ЗаписьЖурналаРегистрации(
- НСтр("ru = 'Дополнительные отчеты и обработки.Подключение'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Информация,
- Метаданные.Справочники.ДополнительныеОтчетыИОбработки,
- Ссылка,
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Безопасный режим = %1'"), БезопасныйРежим));
+ ЗаписатьПримечание(Ссылка, НСтр("ru = 'Подключение, БезопасныйРежим = ""%1"".'"), БезопасныйРежим);
ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим);
@@ -677,6 +672,11 @@
СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииДанныхОтГлавного"].Добавить(
"ДополнительныеОтчетыИОбработки");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "ДополнительныеОтчетыИОбработки");
+ КонецЕсли;
+
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -735,6 +735,85 @@
КонецПроцедуры
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ // В коробке.
+ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Есть права на данные справочника.
+ Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.ДополнительныеОтчетыИОбработки) Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Есть раздел "Администрирование".
+ Подсистема = Метаданные.Подсистемы.Найти("Администрирование");
+ Если Подсистема = Неопределено
+ Или Не ПравоДоступа("Просмотр", Подсистема)
+ Или Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(Подсистема) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ВывестиДело = Истина;
+ ПровереноНаВерсию = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "ДополнительныеОтчетыИОбработки");
+ Если ПровереноНаВерсию <> Неопределено Тогда
+ ВерсияМассив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Метаданные.Версия, ".");
+ ТекущаяВерсия = ВерсияМассив[0] + ВерсияМассив[1] + ВерсияМассив[2];
+ Если ПровереноНаВерсию = ТекущаяВерсия Тогда
+ ВывестиДело = Ложь; // Дополнительные отчеты и обработки проверены на текущей версии.
+ КонецЕсли;
+ КонецЕсли;
+
+ КоличествоДополнительныхОтчетовИОбработок = КоличествоДополнительныхОтчетовИОбработок();
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ДополнительныеОтчетыИОбработки";
+ Дело.ЕстьДела = ВывестиДело И КоличествоДополнительныхОтчетовИОбработок > 0;
+ Дело.Представление = НСтр("ru = 'Дополнительные отчеты и обработки'");
+ Дело.Количество = КоличествоДополнительныхОтчетовИОбработок;
+ Дело.Форма = "Справочник.ДополнительныеОтчетыИОбработки.Форма.ПроверкаДополнительныхОтчетовИОбработок";
+ Дело.Владелец = "ПроверитьСовместимостьСТекущейВерсией";
+
+ // Проверка наличия группы дела. Если группа отсутствует - добавляем.
+ ГруппаДела = ТекущиеДела.Найти("ПроверитьСовместимостьСТекущейВерсией", "Идентификатор");
+ Если ГруппаДела = Неопределено Тогда
+ ГруппаДела = ТекущиеДела.Добавить();
+ ГруппаДела.Идентификатор = "ПроверитьСовместимостьСТекущейВерсией";
+ ГруппаДела.ЕстьДела = Дело.ЕстьДела;
+ ГруппаДела.Представление = НСтр("ru = 'Проверить совместимость'");
+ Если Дело.ЕстьДела Тогда
+ ГруппаДела.Количество = Дело.Количество;
+ КонецЕсли;
+ ГруппаДела.Владелец = Подсистема;
+ Иначе
+ Если Не ГруппаДела.ЕстьДела Тогда
+ ГруппаДела.ЕстьДела = Дело.ЕстьДела;
+ КонецЕсли;
+
+ Если Дело.ЕстьДела Тогда
+ ГруппаДела.Количество = ГруппаДела.Количество + Дело.Количество;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики условных вызовов
@@ -847,11 +926,18 @@
Если Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет
ИЛИ Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
- ПараметрыОтчета.Имя = ПодключитьВнешнююОбработку(Ссылка);
- ПараметрыОтчета.Объект = ВнешниеОтчеты.Создать(ПараметрыОтчета.Имя);
- ПараметрыОтчета.Метаданные = ПараметрыОтчета.Объект.Метаданные();
-
- Результат = Истина;
+ Попытка
+ ПараметрыОтчета.Имя = ПодключитьВнешнююОбработку(Ссылка);
+ ПараметрыОтчета.Объект = ВнешниеОтчеты.Создать(ПараметрыОтчета.Имя);
+ ПараметрыОтчета.Метаданные = ПараметрыОтчета.Объект.Метаданные();
+ Результат = Истина;
+ Исключение
+ ПараметрыОтчета.Ошибки =
+ СтрЗаменить(НСтр("ru = 'При подключении дополнительного отчета ""%1"" возникла ошибка:'"), "%1", Строка(Ссылка))
+ + Символы.ПС
+ + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+ Результат = Ложь;
+ КонецПопытки;
Иначе
@@ -1074,6 +1160,64 @@
КонецПроцедуры
+////////////////////////////////////////////////////////////////////////////////
+// Обработчики подписок на события
+
+// Удаление ссылок подсистем перед их удалением.
+Процедура ПередУдалениемИдентификатораОбъектаМетаданных(ИОМОбъект, Отказ) Экспорт
+ Если ИОМОбъект.ОбменДанными.Загрузка Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИОМСсылка = ИОМОбъект.Ссылка;
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Таблица.Ссылка
+ |ПОМЕСТИТЬ втСсылки
+ |ИЗ
+ | Справочник.ДополнительныеОтчетыИОбработки.Разделы КАК Таблица
+ |ГДЕ
+ | Таблица.Раздел = &ИОМСсылка
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Таблица.Ссылка
+ |ИЗ
+ | Справочник.ДополнительныеОтчетыИОбработки.Назначение КАК Таблица
+ |ГДЕ
+ | Таблица.ОбъектНазначения = &ИОМСсылка
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | втСсылки.Ссылка
+ |ИЗ
+ | втСсылки КАК втСсылки";
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("ИОМСсылка", ИОМСсылка);
+ Запрос.Текст = ТекстЗапроса;
+
+ Выборка = Запрос.Выполнить().Выбрать();
+ Пока Выборка.Следующий() Цикл
+ СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект();
+
+ Найденные = СправочникОбъект.Разделы.НайтиСтроки(Новый Структура("Раздел", ИОМСсылка));
+ Для Каждого СтрокаТаблицы Из Найденные Цикл
+ СправочникОбъект.Разделы.Удалить(СтрокаТаблицы);
+ КонецЦикла;
+
+ Найденные = СправочникОбъект.Назначение.НайтиСтроки(Новый Структура("ОбъектНазначения", ИОМСсылка));
+ Для Каждого СтрокаТаблицы Из Найденные Цикл
+ СправочникОбъект.Назначение.Удалить(СтрокаТаблицы);
+ КонецЦикла;
+
+ СправочникОбъект.Записать();
+ КонецЦикла;
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -1340,20 +1484,13 @@
// При невозможности подключения обработки - установим для нее режим совместимости
// разрешений с версией БСП 2.1.3 и временно заблокируем
-
- ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Не удалось определить режим совместимости разрешений для дополнительного отчета или обработки %1 по причине %2. Дополнительный отчет или обработка будет заблокирован и для него будет установлен режим совместимости разрешений ""Версия 2.1.3"".'"),
- Объект.Наименование, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
-
- ЗаписьЖурналаРегистрации(
- НСтр("ru = 'Дополнительные отчеты и обработки.Заполнение режима совместимости разрешений'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Предупреждение,
- Метаданные.Справочники.ДополнительныеОтчетыИОбработки,
- Объект.Ссылка,
- ТекстПредупреждения);
-
+ ТекстОшибки = """" + Объект.Наименование + """:"
+ + Символы.ПС + НСтр("ru = 'Не удалось определить режим совместимости разрешений по причине:'")
+ + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
+ + Символы.ПС
+ + Символы.ПС + НСтр("ru = 'Объект заблокирован в режиме совместимости с версией 2.1.3.'");
+ ЗаписатьПредупреждение(Объект.Ссылка, ТекстОшибки);
РежимСовместимости = Перечисления.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок.Версия_2_1_3;
-
Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена;
КонецПопытки;
@@ -1721,7 +1858,11 @@
КонецЕсли;
Если ТипЗнч(Раздел) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
- ПредставлениеРаздела = Раздел.Синоним;
+ Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Раздел, "Синоним, ПометкаУдаления");
+ Если Реквизиты.ПометкаУдаления Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+ ПредставлениеРаздела = Реквизиты.Синоним;
ИначеЕсли ТипЗнч(Раздел) = Тип("ОбъектМетаданных") Тогда
ПредставлениеРаздела = Раздел.Представление();
Иначе
@@ -1941,23 +2082,33 @@
// Запись ошибки в журнал регистрации по дополнительному отчету или обработке.
Процедура ЗаписатьОшибку(Ссылка, ТекстСообщения, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт
- ЗаписьЖурналаРегистрации(
- ДополнительныеОтчетыИОбработкиКлиентСервер.НаименованиеПодсистемы(Неопределено),
- УровеньЖурналаРегистрации.Ошибка,
- Метаданные.Справочники.ДополнительныеОтчетыИОбработки,
- Ссылка,
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- ТекстСообщения,
- Строка(Реквизит1),
- Строка(Реквизит2),
- Строка(Реквизит3)));
+ Уровень = УровеньЖурналаРегистрации.Ошибка;
+ ЗаписатьВЖурнал(Уровень, Ссылка, ТекстСообщения, Реквизит1, Реквизит2, Реквизит3);
КонецПроцедуры
-// Запись ошибки в журнал регистрации по дополнительному отчету или обработке.
+// Запись предупреждения в журнал регистрации по дополнительному отчету или обработке.
+Процедура ЗаписатьПредупреждение(Ссылка, ТекстСообщения, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт
+ Уровень = УровеньЖурналаРегистрации.Предупреждение;
+ ЗаписатьВЖурнал(Уровень, Ссылка, ТекстСообщения, Реквизит1, Реквизит2, Реквизит3);
+КонецПроцедуры
+
+// Запись информации в журнал регистрации по дополнительному отчету или обработке.
Процедура ЗаписатьИнформацию(Ссылка, ТекстСообщения, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт
+ Уровень = УровеньЖурналаРегистрации.Информация;
+ ЗаписатьВЖурнал(Уровень, Ссылка, ТекстСообщения, Реквизит1, Реквизит2, Реквизит3);
+КонецПроцедуры
+
+// Запись примечания в журнал регистрации по дополнительному отчету или обработке.
+Процедура ЗаписатьПримечание(Ссылка, ТекстСообщения, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт
+ Уровень = УровеньЖурналаРегистрации.Примечание;
+ ЗаписатьВЖурнал(Уровень, Ссылка, ТекстСообщения, Реквизит1, Реквизит2, Реквизит3);
+КонецПроцедуры
+
+// Запись события в журнал регистрации по дополнительному отчету или обработке.
+Процедура ЗаписатьВЖурнал(Уровень, Ссылка, ТекстСообщения, Реквизит1, Реквизит2, Реквизит3)
ЗаписьЖурналаРегистрации(
ДополнительныеОтчетыИОбработкиКлиентСервер.НаименованиеПодсистемы(Неопределено),
- УровеньЖурналаРегистрации.Информация,
+ Уровень,
Метаданные.Справочники.ДополнительныеОтчетыИОбработки,
Ссылка,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -2027,7 +2178,11 @@
ПредустановленныеКоманды = Новый Массив;
Подменю = Элементы.Найти("ПодменюДополнительныхОбработокЗаполнения");
Если Подменю = Неопределено Тогда
- Подменю = Элементы.Вставить("ПодменюДополнительныхОбработокЗаполнения", Тип("ГруппаФормы"), Форма.КоманднаяПанель);
+ КоманднаяПанель = Элементы.Найти("КоманднаяПанель");
+ Если КоманднаяПанель = Неопределено Тогда
+ КоманднаяПанель = Форма.КоманднаяПанель;
+ КонецЕсли;
+ Подменю = Элементы.Вставить("ПодменюДополнительныхОбработокЗаполнения", Тип("ГруппаФормы"), КоманднаяПанель);
Иначе
Для Каждого Элемент Из Подменю.ПодчиненныеЭлементы Цикл
ПредустановленныеКоманды.Добавить(Элемент);
@@ -2593,98 +2748,104 @@
КонецФункции
// Для внутреннего использования
-Функция ПолучитьРегистрационныеДанные(Знач Объект, Знач ПараметрыРегистрации, Знач ПараметрыОбработки)
-
- Результат = Новый Структура;
-
- СтандартнаяОбработка = Истина;
-
+Функция ПолучитьРегистрационныеДанные(Знач Объект, Знач ПараметрыРегистрации, Знач РезультатРегистрации)
ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия(
"СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки\ПриПолученииРегистрационныхДанных");
- Для каждого Обработчик Из ОбработчикиСобытия Цикл
-
- Обработчик.Модуль.ПриПолученииРегистрационныхДанных(Объект, Результат, СтандартнаяОбработка);
-
- Если Не СтандартнаяОбработка Тогда
- Возврат Результат;
- КонецЕсли;
-
+ РегистрационныеДанные = Новый Структура;
+
+ СтандартнаяОбработка = Истина;
+
+ Для Каждого Обработчик Из ОбработчикиСобытия Цикл
+ Обработчик.Модуль.ПриПолученииРегистрационныхДанных(Объект, РегистрационныеДанные, СтандартнаяОбработка);
КонецЦикла;
Если СтандартнаяОбработка Тогда
-
- // Подключение и получение имени, под которым объект будет подключаться
- Менеджер = ?(ПараметрыРегистрации.ЭтоОтчет, ВнешниеОтчеты, ВнешниеОбработки);
-
- #Если ТолстыйКлиентОбычноеПриложение Тогда
- ПараметрыОбработки.ИмяОбъекта = ПолучитьИмяВременногоФайла();
- ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПараметрыРегистрации.АдресДанныхОбработки);
- ДвоичныеДанные.Записать(ПараметрыОбработки.ИмяОбъекта);
- #Иначе
- ПараметрыОбработки.ИмяОбъекта = СокрЛП(Менеджер.Подключить(ПараметрыРегистрации.АдресДанныхОбработки, , Истина));
- #КонецЕсли
-
- Попытка
- // Получение сведений о внешней обработке
- ВнешнийОбъект = Менеджер.Создать(ПараметрыОбработки.ИмяОбъекта);
- ВнешнийОбъектМетаданные = ВнешнийОбъект.Метаданные();
-
- РегистрационныеДанные = ВнешнийОбъект.СведенияОВнешнейОбработке();
- Исключение
- Если ПараметрыРегистрации.ЭтоОтчет Тогда
- ТекстПредупреждения = НСтр("ru='Невозможно подключить дополнительный отчет из файла.
- |Возможно, он не подходит для этой версии программы.
- |
- |Техническая информация:
- |%1.'");
- Иначе
- ТекстПредупреждения = НСтр("ru='Невозможно подключить дополнительную обработку из файла.
- |Возможно, она не подходит для этой версии программы.
- |
- |Техническая информация:
- |%1.'");
- КонецЕсли;
- ЗаписатьОшибку(Объект.Ссылка,
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
- ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
- ВызватьИсключение ТекстПредупреждения;
- КонецПопытки;
-
- Если РегистрационныеДанные.Наименование = Неопределено ИЛИ РегистрационныеДанные.Информация = Неопределено Тогда
- Если РегистрационныеДанные.Наименование = Неопределено Тогда
- РегистрационныеДанные.Наименование = ВнешнийОбъектМетаданные.Представление();
- КонецЕсли;
- Если РегистрационныеДанные.Информация = Неопределено Тогда
- РегистрационныеДанные.Информация = ВнешнийОбъектМетаданные.Комментарий;
- КонецЕсли;
- КонецЕсли;
-
- Если ТипЗнч(РегистрационныеДанные.Вид) <> Тип("ПеречислениеСсылка.ВидыДополнительныхОтчетовИОбработок") Тогда
- РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок[РегистрационныеДанные.Вид];
- КонецЕсли;
-
- РегистрационныеДанные.Вставить("ХранилищеВариантов");
- Если РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
- Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
- РегистрационныеДанные.ХранилищеВариантов = ВнешнийОбъектМетаданные.ХранилищеВариантов.Имя;
- КонецЕсли;
- КонецЕсли;
-
- РегистрационныеДанные.Команды.Колонки.Добавить("ВариантЗапуска");
-
- Для Каждого КомандаОписание Из РегистрационныеДанные.Команды Цикл
- КомандаОписание.ВариантЗапуска = Перечисления.СпособыВызоваДополнительныхОбработок[КомандаОписание.Использование];
- КонецЦикла;
-
- #Если ТолстыйКлиентОбычноеПриложение Тогда
- ПараметрыОбработки.ИмяОбъекта = ВнешнийОбъектМетаданные.Имя;
- #КонецЕсли
-
- Возврат РегистрационныеДанные;
-
+ ПриПолученииРегистрационныхДанных(Объект, РегистрационныеДанные, ПараметрыРегистрации, РезультатРегистрации);
КонецЕсли;
+ Возврат РегистрационныеДанные;
+КонецФункции
+
+// Для внутреннего использования
+Процедура ПриПолученииРегистрационныхДанных(Объект, РегистрационныеДанные, ПараметрыРегистрации, РезультатРегистрации)
+
+ // Подключение и получение имени, под которым объект будет подключаться
+ Менеджер = ?(ПараметрыРегистрации.ЭтоОтчет, ВнешниеОтчеты, ВнешниеОбработки);
+
+ #Если ТолстыйКлиентОбычноеПриложение Тогда
+ РезультатРегистрации.ИмяОбъекта = ПолучитьИмяВременногоФайла();
+ ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПараметрыРегистрации.АдресДанныхОбработки);
+ ДвоичныеДанные.Записать(РезультатРегистрации.ИмяОбъекта);
+ #Иначе
+ РезультатРегистрации.ИмяОбъекта = СокрЛП(Менеджер.Подключить(ПараметрыРегистрации.АдресДанныхОбработки, , Истина));
+ #КонецЕсли
+
+ Попытка
+ // Получение сведений о внешней обработке
+ ВнешнийОбъект = Менеджер.Создать(РезультатРегистрации.ИмяОбъекта);
+ ВнешнийОбъектМетаданные = ВнешнийОбъект.Метаданные();
+
+ СведенияОВнешнейОбработке = ВнешнийОбъект.СведенияОВнешнейОбработке();
+ ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(РегистрационныеДанные, СведенияОВнешнейОбработке, Истина);
+ Исключение
+ Если ПараметрыРегистрации.ЭтоОтчет Тогда
+ ТекстОшибки = НСтр("ru='Невозможно подключить дополнительный отчет из файла.
+ |Возможно, он не подходит для этой версии программы.'");
+ Иначе
+ ТекстОшибки = НСтр("ru='Невозможно подключить дополнительную обработку из файла.
+ |Возможно, она не подходит для этой версии программы.'");
+ КонецЕсли;
+ ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС + НСтр("ru = 'Техническая информация:'") + Символы.ПС;
+ ЗаписатьОшибку(Объект.Ссылка, ТекстОшибки + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ ВызватьИсключение ТекстОшибки + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
+ КонецПопытки;
+
+ Если РегистрационныеДанные.Наименование = Неопределено ИЛИ РегистрационныеДанные.Информация = Неопределено Тогда
+ Если РегистрационныеДанные.Наименование = Неопределено Тогда
+ РегистрационныеДанные.Наименование = ВнешнийОбъектМетаданные.Представление();
+ КонецЕсли;
+ Если РегистрационныеДанные.Информация = Неопределено Тогда
+ РегистрационныеДанные.Информация = ВнешнийОбъектМетаданные.Комментарий;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если ТипЗнч(РегистрационныеДанные.Вид) <> Тип("ПеречислениеСсылка.ВидыДополнительныхОтчетовИОбработок") Тогда
+ РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок[РегистрационныеДанные.Вид];
+ КонецЕсли;
+
+ РегистрационныеДанные.Вставить("ХранилищеВариантов");
+ Если РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
+ Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
+ РегистрационныеДанные.ХранилищеВариантов = ВнешнийОбъектМетаданные.ХранилищеВариантов.Имя;
+ КонецЕсли;
+ КонецЕсли;
+
+ РегистрационныеДанные.Команды.Колонки.Добавить("ВариантЗапуска");
+
+ Для Каждого КомандаОписание Из РегистрационныеДанные.Команды Цикл
+ КомандаОписание.ВариантЗапуска = Перечисления.СпособыВызоваДополнительныхОбработок[КомандаОписание.Использование];
+ КонецЦикла;
+
+ #Если ТолстыйКлиентОбычноеПриложение Тогда
+ РезультатРегистрации.ИмяОбъекта = ВнешнийОбъектМетаданные.Имя;
+ #КонецЕсли
+КонецПроцедуры
+
+// Только для внутреннего использования.
+//
+Функция КоличествоДополнительныхОтчетовИОбработок() Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ДополнительныеОтчетыИОбработки.Наименование
+ |ИЗ
+ | Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки";
+
+ Результат = Запрос.Выполнить().Выгрузить();
+ Возврат Результат.Количество();
+
КонецФункции
#КонецОбласти
diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl
index 723633bc4..b4a7655bc 100644
--- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl
+++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl
@@ -353,7 +353,7 @@
ВызватьИсключение НСтр("ru = 'В данной конфигурации не поддерживается вызов функции ДополнительныеОтчетыИОбработкиВБезопасномРежиме.ПолучитьФайлИзИнтернета!'");
КонецЕсли;
- ОбработчикПолученияФайлов = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер");
+ МодульПолучениеФайловИзИнтернетаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер");
Если Порт = 0 Тогда
@@ -370,7 +370,7 @@
Таймаут = 600;
КонецЕсли;
- СтруктураURL = ОбработчикПолученияФайлов.РазделитьURL(URL);
+ СтруктураURL = МодульПолучениеФайловИзИнтернетаКлиентСервер.РазделитьURL(URL);
Протокол = СтруктураURL.Протокол;
ИмяСервера = СтруктураURL.ИмяСервера;
ПутьКФайлуНаСервере = СтруктураURL.ПутьКФайлуНаСервере;
@@ -390,29 +390,56 @@
ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии,
ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеПолучениеДанныхИзИнтернет(
ВРег(Протокол), ИмяСервера, Порт));
-
- ПараметрыПолучения = Новый Структура;
- ПараметрыПолучения.Вставить("Пользователь", ИмяПользователя);
- ПараметрыПолучения.Вставить("Пароль", Пароль);
- ПараметрыПолучения.Вставить("Порт", Порт);
- ПараметрыПолучения.Вставить("Таймаут", Таймаут);
- ПараметрыПолучения.Вставить("ЗащищенноеСоединение", ЗащищенноеСоединение);
- ПараметрыПолучения.Вставить("ПассивноеСоединение", ПассивноеСоединение);
- Результат = ОбработчикПолученияФайлов.ПодготовитьПолучениеФайла(
- URL,
- ПараметрыПолучения,
- Новый Структура(
- "МестоХранения, Путь",
- "ВременноеХранилище",
- Неопределено));
-
- Если Результат.Статус Тогда
- Возврат Результат.Путь;
- Иначе
- ВызватьИсключение Результат.СообщениеОбОшибке;
+ Если ВРег(Протокол) = "HTTPS" Тогда
+ ЗащищенноеСоединение = Истина;
КонецЕсли;
+ Прокси = МодульПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси(Протокол);
+
+ Если ВРег(Протокол) = "FTP" Тогда
+ Попытка
+ Соединение = Новый FTPСоединение(ИмяСервера, Порт, ИмяПользователя, Пароль, Прокси, ПассивноеСоединение, Таймаут);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ СообщениеОбОшибке = НСтр("ru = 'Ошибка при создании FTP-соединения с сервером %1:'") + Символы.ПС + "%2";
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ СообщениеОбОшибке, ИмяСервера, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
+ КонецПопытки;
+
+ Иначе
+ Если ЗащищенноеСоединение = Истина Тогда
+ ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
+ Иначе
+ ЗащищенноеСоединение = Неопределено;
+ КонецЕсли;
+
+ Попытка
+ Соединение = Новый HTTPСоединение(ИмяСервера, Порт, ИмяПользователя, Пароль, Прокси, Таймаут, ЗащищенноеСоединение);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ СообщениеОбОшибке = НСтр("ru = 'Ошибка при создании HTTP-соединения с сервером %1:'") + Символы.ПС + "%2";
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
+ КонецПопытки;
+ КонецЕсли;
+
+ ВременныйФайл = ПолучитьИмяВременногоФайла();
+
+ Попытка
+ Соединение.Получить(ПутьКФайлуНаСервере, ВременныйФайл);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ СообщениеОбОшибке = НСтр("ru = 'Ошибка при получении файла с сервера %1:'") + Символы.ПС + "%2";
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
+ КонецПопытки;
+
+ Возврат ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВременныйФайл));
+
КонецФункции
// Функция выполняет передачу файла в сеть Интернет по протоколам HTTP(S)/FTP.
diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВызовСервера/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВызовСервера/Module.bsl
index f741395a2..feb23c7b7 100644
--- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВызовСервера/Module.bsl
@@ -23,18 +23,6 @@
КонецФункции
-// Функция возвращает вид публикации, который должен использоваться для
-// конфликтующих дополнительных отчетов и обработок.
-//
-// Возвращаемое значение:
-// ПеречислениеСсылка.ВариантыПубликацииДополнительныхОтчетовИОбработок
-//
-Функция ВидПубликацииДляКонфликтующихОбработок() Экспорт
-
- Возврат ДополнительныеОтчетыИОбработкиПовтИсп.ВидПубликацииДляКонфликтующихОбработок();
-
-КонецФункции
-
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl
index ab7629174..c576fd848 100644
--- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl
@@ -601,7 +601,7 @@
// Показывает диалог установки расширения, затем выгружает данные дополнительного отчета или обработки.
Процедура ВыгрузитьВФайл(ПараметрыВыгрузки) Экспорт
- ТекстСообщения = НСтр("ru = 'Для выгрузки внешней обработки (отчета) в файл рекомендуется установить расширение работы с файлами.'");
+ ТекстСообщения = НСтр("ru = 'Для выгрузки внешней обработки (отчета) в файл рекомендуется установить расширение для веб-клиента 1С:Предприятие.'");
Обработчик = Новый ОписаниеОповещения("ВыгрузитьВФайлЗавершение", ЭтотОбъект, ПараметрыВыгрузки);
ОбщегоНазначенияКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Обработчик, ТекстСообщения);
КонецПроцедуры
@@ -611,35 +611,15 @@
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("Обработчик", ПодготовитьОбработчикДляДиалога(Обработчик));
ПараметрыОбработчика.Вставить("Результат", Результат);
- Обработчик = Новый ОписаниеОповещения("ВернутьРезультатПослеПоказаПредупрежденияЗавершение", ЭтотОбъект, ПараметрыОбработчика);
+ Обработчик = Новый ОписаниеОповещения("ВернутьРезультатПослеЗакрытияПростогоДиалога", ЭтотОбъект, ПараметрыОбработчика);
ПоказатьПредупреждение(Обработчик, ТекстПредупреждения);
КонецПроцедуры
-// Показывает окно предупреждение, а после его закрытия вызывает обработчик с заданным результатом.
-Процедура ВернутьРезультатПослеПоказаФормы(Форма, Обработчик, Результат) Экспорт
- ПараметрыОбработчика = Новый Структура;
- ПараметрыОбработчика.Вставить("Обработчик", ПодготовитьОбработчикДляДиалога(Обработчик));
- ПараметрыОбработчика.Вставить("Результат", Результат);
- Форма.ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ВернутьРезультатПослеПоказаФормыЗавершение", ЭтотОбъект, ПараметрыОбработчика);
- Форма.Открыть();
-КонецПроцедуры
-
// Продолжение процедуры (см. выше).
-Процедура ВернутьРезультатПослеПоказаПредупрежденияЗавершение(ПараметрыОбработчика) Экспорт
-
+Процедура ВернутьРезультатПослеЗакрытияПростогоДиалога(ПараметрыОбработчика) Экспорт
Если ТипЗнч(ПараметрыОбработчика.Обработчик) = Тип("ОписаниеОповещения") Тогда
ВыполнитьОбработкуОповещения(ПараметрыОбработчика.Обработчик, ПараметрыОбработчика.Результат);
КонецЕсли;
-
-КонецПроцедуры
-
-// Продолжение процедуры (см. выше).
-Процедура ВернутьРезультатПослеПоказаФормыЗавершение(РезультатЗакрытия, ПараметрыОбработчика) Экспорт
-
- Если ТипЗнч(ПараметрыОбработчика.Обработчик) = Тип("ОписаниеОповещения") Тогда
- ВыполнитьОбработкуОповещения(ПараметрыОбработчика.Обработчик, ПараметрыОбработчика.Результат);
- КонецЕсли;
-
КонецПроцедуры
// Подготовка обработчика асинхронного диалога.
diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентПереопределяемый/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентПереопределяемый/Module.bsl
index 6d56155db..3c0262b34 100644
--- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентПереопределяемый/Module.bsl
@@ -3,7 +3,7 @@
//
////////////////////////////////////////////////////////////////////////////////
-#Область СлужебныйПрограммныйИнтерфейс
+#Область ПрограммныйИнтерфейс
// Выполняет дополнительные действия перед формированием печатной формы.
//
diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl
index cb3c43c5b..b35461a36 100644
--- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl
@@ -88,6 +88,13 @@
КонецФункции
+// Загрузка данных из файла.
+Функция ТипКомандыЗагрузкаДанныхИзФайла() Экспорт
+
+ Возврат "ЗагрузкаДанныхИзФайла"; // не локализуется
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Имена типов форм. Используются при настройке назначаемых объектов.
diff --git a/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl b/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl
index 1e02e9df7..53156efb6 100644
--- a/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl
+++ b/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl
@@ -8,8 +8,9 @@
// Процедура пакетной записи сообщений в журнал регистрации
//
-// Параметры: СобытияДляЖурналаРегистрации - СписокЗначений, клиентская глобальная переменная
-// После записи переменная очищается.
+// Параметры:
+// СобытияДляЖурналаРегистрации - СписокЗначений - клиентская глобальная переменная.
+// После записи переменная очищается.
Процедура ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации) Экспорт
Если ТипЗнч(СобытияДляЖурналаРегистрации) <> Тип("СписокЗначений") Тогда
@@ -256,10 +257,10 @@
// Создает пользовательское представление отбора журнала регистрации
//
// Параметры:
-// ПредставлениеОтбора - Строка, строка, содержащая пользовательское представление отбора
-// ОтборЖурналаРегистрации - Структура, значения отбора журнала регистрации
-// ОтборЖурналаРегистрацииПоУмолчанию - Структура, значения отбора журнала регистрации по умолчанию
-// (не включаются в пользовательское представления)
+// ПредставлениеОтбора - Строка - строка, содержащая пользовательское представление отбора
+// ОтборЖурналаРегистрации - Структура - значения отбора журнала регистрации
+// ОтборЖурналаРегистрацииПоУмолчанию - Структура - значения отбора журнала регистрации по умолчанию
+// (не включаются в пользовательское представления)
//
Процедура СформироватьПредставлениеОтбора(ПредставлениеОтбора, ОтборЖурналаРегистрации,
ОтборЖурналаРегистрацииПоУмолчанию = Неопределено) Экспорт
@@ -339,7 +340,8 @@
// Преобразование отбора.
//
-// Отбор - отбор - передаваемый отбор.
+// Параметры:
+// Отбор - отбор - передаваемый отбор.
//
Процедура ПреобразованиеОтбора(Отбор)
@@ -358,8 +360,8 @@
// Преобразование элемента отбора.
//
// Параметры:
-// Отбор - отбор - передаваемый отбор.
-// Отбор - Элемент отбора - - элемент передаваемого отбора.
+// Отбор - отбор - передаваемый отбор.
+// Отбор - Элемент отбора - элемент передаваемого отбора.
//
Процедура ПреобразованиеЭлементаОтбора(Отбор, ЭлементОтбора)
@@ -404,12 +406,12 @@
КонецПроцедуры
// Добавить ограничение в представление отбора.
-//
+//
// Параметры:
-// ОтборЖурналаРегистрации - Отбор - отбор журнала регистрации.
-// ПредставлениеОтбора - Строка - представление отбора.
-// ИмяОграничения - Строка - имя ограничения.
-// ОтборЖурналаРегистрацииПоУмолчанию - Отбор - отбор журнала регистрации по умолчанию.
+// ОтборЖурналаРегистрации - Отбор - отбор журнала регистрации.
+// ПредставлениеОтбора - Строка - представление отбора.
+// ИмяОграничения - Строка - имя ограничения.
+// ОтборЖурналаРегистрацииПоУмолчанию - Отбор - отбор журнала регистрации по умолчанию.
//
Процедура ДобавитьОграничениеВПредставлениеОтбора(ОтборЖурналаРегистрации, ПредставлениеОтбора, ИмяОграничения,
ОтборЖурналаРегистрацииПоУмолчанию = Неопределено)
diff --git a/SSL/src/CommonModules/ЖурналРегистрацииВызовСервера/Module.bsl b/SSL/src/CommonModules/ЖурналРегистрацииВызовСервера/Module.bsl
index 2fcbc66d3..4c2d5cd25 100644
--- a/SSL/src/CommonModules/ЖурналРегистрацииВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/ЖурналРегистрацииВызовСервера/Module.bsl
@@ -8,8 +8,9 @@
// Процедура пакетной записи сообщений в журнал регистрации
//
-// Параметры: СобытияДляЖурналаРегистрации - СписокЗначений, клиентская глобальная переменная
-// После записи переменная очищается.
+// Параметры:
+// СобытияДляЖурналаРегистрации - СписокЗначений, клиентская глобальная переменная.
+// После записи переменная очищается.
Процедура ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации) Экспорт
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации);
diff --git a/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl b/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl
index 6e2f7bbb0..0277b97ef 100644
--- a/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl
@@ -67,7 +67,7 @@
// Открывает форму для просмотра дополнительных данных события.
//
// Параметры:
-// ТекущиеДанные - Строка таблицы значений - строка журнала регистрации.
+// ТекущиеДанные - Строка таблицы значений - строка журнала регистрации.
//
Процедура ОткрытьДанныеДляПросмотра(ТекущиеДанные) Экспорт
@@ -99,10 +99,10 @@
КонецПроцедуры
// Открывает форму просмотра события обработки "Журнал регистрации"
-// для отображения в ней подробных данных выбранного события
+// для отображения в ней подробных данных выбранного события
//
// Параметры:
-// Данные - Строка таблицы значений - строка журнала регистрации.
+// Данные - Строка таблицы значений - строка журнала регистрации.
//
Процедура ПросмотрТекущегоСобытияВОтдельномОкне(Данные) Экспорт
@@ -118,8 +118,8 @@
// и включает его в отбор журнала регистрации
//
// Параметры:
-// ИнтервалДат - СтандартныйПериод, интервал дат отбора
-// ОтборЖурналаРегистрации - Структура, отбор журнала регистрации
+// ИнтервалДат - СтандартныйПериод, интервал дат отбора
+// ОтборЖурналаРегистрации - Структура, отбор журнала регистрации
//
Процедура УстановитьИнтервалДатДляПросмотра(ИнтервалДат, ОтборЖурналаРегистрации, ОбработчикОповещения = Неопределено) Экспорт
@@ -156,10 +156,10 @@
// Выполняет обработку выбора отдельного события в таблице событий
//
// Параметры:
-// ТекущиеДанные - Строка таблицы значений - строка журнала регистрации.
-// Поле - Поле таблицы значений - поле.
-// ИнтервалДат - интервал.
-// ОтборЖурналаРегистрации - Отбор - отбор журнала регистрации.
+// ТекущиеДанные - Строка таблицы значений - строка журнала регистрации.
+// Поле - Поле таблицы значений - поле.
+// ИнтервалДат - интервал.
+// ОтборЖурналаРегистрации - Отбор - отбор журнала регистрации.
//
Процедура СобытияВыбор(ТекущиеДанные, Поле, ИнтервалДат, ОтборЖурналаРегистрации) Экспорт
@@ -168,7 +168,11 @@
КонецЕсли;
Если Поле.Имя = "Данные" Или Поле.Имя = "ПредставлениеДанных" Тогда
- Если ТекущиеДанные.Данные <> Неопределено И (ТипЗнч(ТекущиеДанные.Данные) <> Тип("Строка") И ЗначениеЗаполнено(ТекущиеДанные.Данные)) Тогда
+ Если ТекущиеДанные.Данные <> Неопределено
+ И Не ЗначениеЗаполнено(ТекущиеДанные.Комментарий)
+ И (ТипЗнч(ТекущиеДанные.Данные) <> Тип("Строка")
+ И ЗначениеЗаполнено(ТекущиеДанные.Данные)) Тогда
+
ОткрытьДанныеДляПросмотра(ТекущиеДанные);
Возврат;
КонецЕсли;
@@ -186,13 +190,13 @@
// Заполняет отбор в соответствии с значением в текущей колонке событий.
//
// Параметры:
-// ТекущиеДанные - Строка таблицы значений.
-// ТекущийЭлемент - Текущий элемент строки таблицы значений.
-// ОтборЖурналаРегистрации - Отбор - отбор журнала регистрации.
-// КолонкиИсключения - Список значений - колонки исключения.
+// ТекущиеДанные - Строка таблицы значений.
+// ТекущийЭлемент - Текущий элемент строки таблицы значений.
+// ОтборЖурналаРегистрации - Отбор - отбор журнала регистрации.
+// КолонкиИсключения - Список значений - колонки исключения.
//
// Возвращаемое значение:
-// Булево - Истина, если отбор установлен, Ложь - Иначе.
+// Булево - Истина, если отбор установлен, Ложь - Иначе.
//
Функция УстановитьОтборПоЗначениюВТекущейКолонке(ТекущиеДанные, ТекущийЭлемент, ОтборЖурналаРегистрации, КолонкиИсключения) Экспорт
diff --git a/SSL/src/CommonModules/ЗагрузкаДанныхИзФайлаКлиент/Module.bsl b/SSL/src/CommonModules/ЗагрузкаДанныхИзФайлаКлиент/Module.bsl
new file mode 100644
index 000000000..8eea76d83
--- /dev/null
+++ b/SSL/src/CommonModules/ЗагрузкаДанныхИзФайлаКлиент/Module.bsl
@@ -0,0 +1,52 @@
+
+#Область ПрограммныйИнтерфейс
+
+// Создает новую структуру параметров для загрузки данных из файла в табличную часть.
+//
+// Возвращаемое значение:
+// Структура - параметры для открытия формы загрузки данных в табличную часть:
+// * ПолноеИмяТабличнойЧасти - Строка - полный путь к табличной части документа,
+// в виде "ИмяДокумента.ИмяТабличнойЧасти".
+// * Представление - Строка - заголовок окна в форме загрузке данных.
+// * ИмяМакетаСШаблоном - Строка - имя макета с шаблоном для ввода данных.
+//
+Функция ПараметрыЗагрузкиДанных() Экспорт
+ ПараметрыЗагрузки = Новый Структура();
+ ПараметрыЗагрузки.Вставить("ПолноеИмяТабличнойЧасти");
+ ПараметрыЗагрузки.Вставить("Заголовок");
+ ПараметрыЗагрузки.Вставить("ИмяМакетаСШаблоном");
+
+ Возврат ПараметрыЗагрузки;
+КонецФункции
+
+// Открывает форму загрузки данных для заполнения табличной части.
+//
+// Параметры:
+// ПараметрыЗагрузки - Структура - см. ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных.
+// ОповещениеОЗагрузке - ОписаниеОповещения - оповещение, которое будет вызвано для добавления загруженных данных в табличную часть.
+//
+Процедура ПоказатьФормуЗагрузки(ПараметрыЗагрузки, ОповещениеОЗагрузке) Экспорт
+
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма", ПараметрыЗагрузки,
+ ОповещениеОЗагрузке.Модуль, , , , ОповещениеОЗагрузке);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Открывает форму загрузки данных для заполнения табличной части сопоставления ссылок в подсистеме "Варианты отчетов"
+//
+// Параметры:
+// ПараметрыЗагрузки - Структура - см. ЗагрузкаДанныхИзФайлаКлиент.ПараметрыЗагрузкиДанных.
+// ОповещениеОЗагрузке - ОписаниеОповещения - оповещение, которое будет вызвано для добавления загруженных данных в табличную часть.
+//
+Процедура ПоказатьФормуЗаполненияСсылок(ПараметрыЗагрузки, ОповещениеОЗагрузке) Экспорт
+
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма", ПараметрыЗагрузки,
+ ОповещениеОЗагрузке.Модуль,,,, ОповещениеОЗагрузке);
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/CommonModules/НастройкиПользователейКлиент/НастройкиПользователейКлиент.mdo b/SSL/src/CommonModules/ЗагрузкаДанныхИзФайлаКлиент/ЗагрузкаДанныхИзФайлаКлиент.mdo
similarity index 61%
rename from SSL/src/CommonModules/НастройкиПользователейКлиент/НастройкиПользователейКлиент.mdo
rename to SSL/src/CommonModules/ЗагрузкаДанныхИзФайлаКлиент/ЗагрузкаДанныхИзФайлаКлиент.mdo
index 481f357c9..d76523c93 100644
--- a/SSL/src/CommonModules/НастройкиПользователейКлиент/НастройкиПользователейКлиент.mdo
+++ b/SSL/src/CommonModules/ЗагрузкаДанныхИзФайлаКлиент/ЗагрузкаДанныхИзФайлаКлиент.mdo
@@ -1,9 +1,9 @@
-
- НастройкиПользователейКлиент
+
+ ЗагрузкаДанныхИзФайлаКлиентru
- Настройки пользователей клиент
+ Загрузка данных из файла клиентtruetrue
diff --git a/SSL/src/CommonModules/ЗаметкиПользователяСлужебный/Module.bsl b/SSL/src/CommonModules/ЗаметкиПользователяСлужебный/Module.bsl
index cbd5a0b22..6ffa99232 100644
--- a/SSL/src/CommonModules/ЗаметкиПользователяСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/ЗаметкиПользователяСлужебный/Module.bsl
@@ -15,12 +15,64 @@
"ЗаметкиПользователяСлужебный");
КонецЕсли;
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "ЗаметкиПользователяСлужебный");
+ КонецЕсли;
+
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ Если Не ПравоДоступа("Редактирование", Метаданные.Справочники.Заметки) Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь
+ // не делается проверка существования подсистемы.
+ МодульТекущиеДелаСлужебныйПовтИсп = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСлужебныйПовтИсп");
+
+ ПринадлежностьОбъектов = МодульТекущиеДелаСлужебныйПовтИсп.ПринадлежностьОбъектовРазделамКомандногоИнтерфейса();
+ Разделы = ПринадлежностьОбъектов[Метаданные.Справочники.Заметки.ПолноеИмя()];
+
+ Если Разделы = Неопределено Тогда
+ Возврат; // Заметки не вынесены в командный интерфейс пользователя.
+ КонецЕсли;
+
+ КоличествоЗаметок = КоличествоЗаметок();
+
+ Для Каждого Раздел Из Разделы Цикл
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ЗаметкиПользователя";
+ Дело.ЕстьДела = КоличествоЗаметок > 0;
+ Дело.Представление = НСтр("ru = 'Мои заметки'");
+ Дело.Количество = КоличествоЗаметок;
+ Дело.Форма = "Справочник.Заметки.Форма.ВсеЗаметки";
+ Дело.Владелец = Раздел;
+ КонецЦикла;
+
+КонецПроцедуры
+
// Переопределяет массив реквизитов объекта, относительно которых разрешается устанавливать время напоминания.
// Например, можно скрыть те реквизиты с датами, которые являются служебными или не имеют смысла для
// установки напоминаний: дата документа или задачи и прочие.
@@ -65,10 +117,29 @@
ЗаметкаОбъект.Записать();
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
- ЗаписьЖурналаРегистрации(НСтр("ru = 'Заметки пользователя.Установка пометки удаления'",ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
+ ЗаписьЖурналаРегистрации(НСтр("ru = 'Заметки пользователя.Установка пометки удаления'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, ЗаметкаОбъект.Метаданные(), ЗаметкаОбъект.Ссылка, ТекстОшибки);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
+Функция КоличествоЗаметок()
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | КОЛИЧЕСТВО(СправочникЗаметки.Ссылка) КАК Количество
+ |ИЗ
+ | Справочник.Заметки КАК СправочникЗаметки
+ |ГДЕ
+ | СправочникЗаметки.Автор = &Пользователь
+ | И НЕ СправочникЗаметки.ПометкаУдаления";
+
+ Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
+
+ РезультатЗапроса = Запрос.Выполнить().Выгрузить();
+ Возврат РезультатЗапроса[0].Количество;
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектов/Module.bsl b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектов/Module.bsl
index b7ac9b692..15e1d35c2 100644
--- a/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектов/Module.bsl
+++ b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектов/Module.bsl
@@ -14,8 +14,8 @@
// ГруппаДляКнопкиЗапрета - ГруппаФормы - переопределяет стандартное размещение
// кнопки запрета в форме объекта.
// ЗаголовокКнопкиЗапрета - Строка - заголовок кнопки. По умолчанию, "Разрешить редактирование реквизитов".
-// Объект - Неопределено - взять объект из реквизита формы Объект.
-// - ДанныеФормыСтруктура - (по типу объекта).
+// Объект - Неопределено - взять объект из реквизита формы "Объект".
+// - ДанныеФормыСтруктура - по типу объекта.
//
Процедура ЗаблокироватьРеквизиты(Форма, ГруппаДляКнопкиЗапрета = Неопределено, ЗаголовокКнопкиЗапрета = "",
Объект = Неопределено) Экспорт
diff --git a/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовКлиент/Module.bsl b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовКлиент/Module.bsl
index e63b6fdfb..18cd6a0d1 100644
--- a/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовКлиент/Module.bsl
@@ -12,11 +12,11 @@
// редактирование элементов формы, заданных реквизитов.
//
// ОбработкаПродолжения - Неопределено - никаких действий после выполнения процедуры.
-// ОписаниеОповещения, которое вызывается после выполнения процедуры,
-// в обработку передается параметр Успех типа Булево:
-// Истина - ссылок не обнаружено или решение пользователя,
-// Ложь - видимых заблокированных реквизитов нет или
-// ссылки обнаружены и пользователь отказался от продолжения.
+// - ОписаниеОповещения - оповещение, которое вызывается после выполнения процедуры.
+// В обработку оповещения передается параметр типа Булево:
+// Истина - ссылок не обнаружено или пользователь решил разрешить редактирование,
+// Ложь - видимых заблокированных реквизитов нет или
+// ссылки обнаружены и пользователь отказался от продолжения.
//
Процедура РазрешитьРедактированиеРеквизитовОбъекта(Знач Форма, ОбработкаПродолжения = Неопределено) Экспорт
@@ -25,7 +25,7 @@
Если ЗаблокированныеРеквизиты.Количество() = 0 Тогда
ПоказатьПредупреждениеВсеВидимыеРеквизитыРазблокированы(
Новый ОписаниеОповещения("РазрешитьРедактированиеРеквизитовОбъектаПослеПредупреждения",
- ЭтотОбъект, ОбработкаПродолжения));
+ ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент, ОбработкаПродолжения));
Возврат;
КонецЕсли;
@@ -46,8 +46,8 @@
Параметры.Вставить("ОбработкаПродолжения", ОбработкаПродолжения);
ПроверитьСсылкиНаОбъект(
- Новый ОписаниеОповещения(
- "РазрешитьРедактированиеРеквизитовОбъектаПослеПроверкиСсылок", ЭтотОбъект, Параметры),
+ Новый ОписаниеОповещения("РазрешитьРедактированиеРеквизитовОбъектаПослеПроверкиСсылок",
+ ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент, Параметры),
МассивСсылок,
СинонимыРеквизитов);
@@ -63,12 +63,12 @@
// Форма - УправляемаяФорма - форма, в которой требуется разрешить
// редактирование элементов формы, заданных реквизитов.
//
-// Реквизиты - Массив - имена реквизитов, для которых нужно установить разрешенность изменения.
-// Используется, когда функция РазрешитьРедактированиеРеквизитовОбъекта
-// не используется.
-// Неопределено - состав реквизитов доступных для редактирования не изменяется,
-// а для элементов формы, связанных с реквизитами, изменение которых
-// разрешено устанавливается доступность.
+// Реквизиты - Массив - значения:
+// * Строка - имена реквизитов, для которых нужно установить разрешенность изменения.
+// Используется, когда функция РазрешитьРедактированиеРеквизитовОбъекта не используется.
+// - Неопределено - состав реквизитов доступных для редактирования не изменяется,
+// а для элементов формы, связанных с реквизитами, изменение которых разрешено
+// устанавливается доступность.
//
Процедура УстановитьДоступностьЭлементовФормы(Знач Форма, Знач Реквизиты = Неопределено) Экспорт
@@ -96,12 +96,15 @@
// и проверяет, есть ли ссылки на объект в информационной базе.
//
// Параметры:
-// ОбработкаПродолжения - ОписаниеОповещения, которое вызывается после проверки,
-// в обработку передается параметр:
-// Истина - ссылок не обнаружено или решение пользователя,
-// Ложь - ссылки обнаружены и пользователь отказался от продолжения.
-// МассивСсылок - Массив - массив значений типа Ссылка, которые нужно найти в различных объектах.
-// СинонимыРеквизитов - Массив - массив значений типа Строка, которые показываются пользователю.
+// ОбработкаПродолжения - ОписаниеОповещения - оповещение, которое вызывается после проверки.
+// В обработку оповещения передается параметр типа Булево:
+// Истина - ссылок не обнаружено или пользователь решил разрешить редактирование,
+// Ложь - видимых заблокированных реквизитов нет или
+// ссылки обнаружены и пользователь отказался от продолжения.
+// МассивСсылок - Массив - значения:
+// * Ссылка - искомые ссылки в различных объектах.
+// СинонимыРеквизитов - Массив - значения:
+// * Строка - синонимы реквизитов, которые показываются пользователю.
//
Процедура ПроверитьСсылкиНаОбъект(Знач ОбработкаПродолжения, Знач МассивСсылок, Знач СинонимыРеквизитов) Экспорт
@@ -149,7 +152,8 @@
Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Отмена'"));
ПоказатьВопрос(
- Новый ОписаниеОповещения("ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки", ЭтотОбъект, Параметры),
+ Новый ОписаниеОповещения("ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки",
+ ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент, Параметры),
ТекстВопроса, Кнопки, , КодВозвратаДиалога.Да, ЗаголовокДиалога);
КонецПроцедуры
@@ -159,22 +163,21 @@
// использования функции УстановитьДоступностьЭлементовФормы.
//
// Параметры:
-// Форма - УправляемаяФорма - форма, в которой требуется разрешить
-// редактирование реквизитов объекта.
+// Форма - УправляемаяФорма - форма, в которой требуется разрешить редактирование реквизитов объекта.
//
-// Реквизиты - Массив - реквизиты, которые нужно пометить, как разрешенные для изменения.
+// Реквизиты - Массив - значения
+// * Строка - имена реквизитов, которые нужно пометить, как разрешенные для изменения.
//
-// РедактированиеРазрешено - Булево, начальное значение Истина - значение разрешенности редактирования реквизитов,
-// которое нужно установить. Значение не будет установлено Истина, если нет права редактирования реквизита.
-// Неопределено - не изменять разрешенность редактирования реквизитов.
-// Ложь, Истина - установить указанное значение разрешенности редактирования реквизитов.
+// РедактированиеРазрешено - Булево - значение разрешенности редактирования реквизитов, которое нужно установить.
+// Значение не будет установлено Истина, если нет права редактирования реквизита.
+// - Неопределено - не изменять разрешенность редактирования реквизитов.
//
-// ПравоРедактирования - Булево, начальное значение Неопределено - позволяет переопределить или доопределить
-// возможность разблокировки реквизитов, которая вычисляется автоматически с помощью метода ПравоДоступа.
-// Неопределено - не изменять ПравоРедактирования
-// Ложь, Истина - установить указанное значение ПраваРедактирования для указанных реквизитов.
+// ПравоРедактирования - Булево - позволяет переопределить или доопределить возможность разблокировки
+// реквизитов, которая вычисляется автоматически с помощью метода ПравоДоступа.
+// - Неопределено - не изменять свойство ПравоРедактирования.
//
-Процедура УстановитьРазрешенностьРедактированияРеквизитов(Знач Форма, Знач Реквизиты, Знач РедактированиеРазрешено = Истина, Знач ПравоРедактирования = Неопределено) Экспорт
+Процедура УстановитьРазрешенностьРедактированияРеквизитов(Знач Форма, Знач Реквизиты,
+ Знач РедактированиеРазрешено = Истина, Знач ПравоРедактирования = Неопределено) Экспорт
Если ТипЗнч(Реквизиты) = Тип("Массив") Тогда
@@ -206,21 +209,19 @@
КонецПроцедуры
-// Возвращает массив имен реквизитов, заданных в свойстве формы
-// ПараметрыЗапретаРедактированияРеквизитов на основе имен реквизитов
-// указанных в модуле мененджера объекта, исключая реквизиты,
+// Возвращает массив имен реквизитов, заданных в свойстве формы ПараметрыЗапретаРедактированияРеквизитов
+// на основе имен реквизитов указанных в модуле мененджера объекта, исключая реквизиты,
// у которых ПравоРедактирования = Ложь.
//
// Параметры:
-// Форма - Форма объекта с обязательным стандартным реквизитом Объект
-// ТолькоЗаблокированные - Булево, начальное значение Истина,
-// для вспомогательных целей можно задать Ложь, чтобы
+// Форма - УправляемаяФорма - форма объекта с обязательным стандартным реквизитом "Объект".
+// ТолькоЗаблокированные - Булево - для вспомогательных целей можно задать Ложь, чтобы
// получить список всех видимых реквизитов, которые могут разблокироваться.
-// ТолькоВидимые - Булево, начальное значение Истина,
-// чтобы получить и разблокировать все реквизиты объекта, нужно указать Ложь.
+// ТолькоВидимые - Булево - чтобы получить и разблокировать все реквизиты объекта, нужно указать Ложь.
//
// Возвращаемое значение:
-// Массив - имена реквизитов
+// Массив - значения:
+// * Строка - имена реквизитов.
//
Функция Реквизиты(Знач Форма, Знач ТолькоЗаблокированные = Истина, ТолькоВидимые = Истина) Экспорт
@@ -256,7 +257,7 @@
//
// Параметры:
// ОбработкаПродолжения - Неопределено - никаких действий после выполнения процедуры.
-// ОписаниеОповещения, которое вызывается после выполнения процедуры.
+// - ОписаниеОповещения - оповещение, которое вызывается после выполнения процедуры.
//
Процедура ПоказатьПредупреждениеВсеВидимыеРеквизитыРазблокированы(ОбработкаПродолжения = Неопределено) Экспорт
@@ -273,87 +274,3 @@
КонецФункции
#КонецОбласти
-
-#Область СлужебныеПроцедурыИФункции
-
-Процедура РазрешитьРедактированиеРеквизитовОбъектаПослеПредупреждения(ОбработкаПродолжения) Экспорт
-
- Если ОбработкаПродолжения <> Неопределено Тогда
- ВыполнитьОбработкуОповещения(ОбработкаПродолжения, Ложь);
- КонецЕсли;
-
-КонецПроцедуры
-
-Процедура РазрешитьРедактированиеРеквизитовОбъектаПослеПроверкиСсылок(Результат, Параметры) Экспорт
-
- Если Результат Тогда
- УстановитьРазрешенностьРедактированияРеквизитов(
- Параметры.Форма, Параметры.ЗаблокированныеРеквизиты);
-
- УстановитьДоступностьЭлементовФормы(Параметры.Форма);
- КонецЕсли;
-
- Если Параметры.ОбработкаПродолжения <> Неопределено Тогда
- ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Результат);
- КонецЕсли;
-
-КонецПроцедуры
-
-Процедура ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки(Ответ, Параметры) Экспорт
-
- Если Ответ <> КодВозвратаДиалога.Да Тогда
- ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Ложь);
- Возврат;
- КонецЕсли;
-
- Если Параметры.МассивСсылок.Количество() = 0 Тогда
- ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Истина);
- Возврат;
- КонецЕсли;
-
- Если ОбщегоНазначенияВызовСервера.ЕстьСсылкиНаОбъект(Параметры.МассивСсылок) Тогда
-
- Если Параметры.МассивСсылок.Количество() = 1 Тогда
- ТекстСообщения = НСтр("ru = 'Элемент ""%1"" уже используется в других местах в программе.
- |Не рекомендуется разрешать редактирование из-за риска рассогласования данных.'");
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Параметры.МассивСсылок[0]);
- Иначе
- ТекстСообщения = НСтр("ru = 'Выбранные элементы (%1) уже используются в других местах в программе.
- |Не рекомендуется разрешать редактирование из-за риска рассогласования данных.'");
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Параметры.МассивСсылок.Количество());
- КонецЕсли;
-
- Кнопки = Новый СписокЗначений;
- Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Разрешить редактирование'"));
- Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Отмена'"));
- ПоказатьВопрос(
- Новый ОписаниеОповещения(
- "ПроверитьСсылкиНаОбъектПослеПодтвержденияРедактирования", ЭтотОбъект, Параметры),
- ТекстСообщения, Кнопки, , КодВозвратаДиалога.Нет, Параметры.ЗаголовокДиалога);
- Иначе
- Если Параметры.МассивСсылок.Количество() = 1 Тогда
- ПоказатьОповещениеПользователя(НСтр("ru = 'Редактирование реквизитов разрешено'"),
- ПолучитьНавигационнуюСсылку(Параметры.МассивСсылок[0]), Параметры.МассивСсылок[0]);
- Иначе
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Разрешено редактирование реквизитов объектов (%1)'"), Параметры.МассивСсылок.Количество());
- ПоказатьОповещениеПользователя(НСтр("ru = 'Редактирование реквизитов разрешено'"),, ТекстСообщения);
- КонецЕсли;
- ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Истина);
- КонецЕсли;
-
-КонецПроцедуры
-
-Процедура ПроверитьСсылкиНаОбъектПослеПодтвержденияРедактирования(Ответ, Параметры) Экспорт
-
- ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Ответ = КодВозвратаДиалога.Да);
-
-КонецПроцедуры
-
-Процедура ПроверитьСсылкиНаОбъектПослеПредупрежденияРедактирования(Параметры) Экспорт
-
- ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Истина);
-
-КонецПроцедуры
-
-#КонецОбласти
diff --git a/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент/Module.bsl
new file mode 100644
index 000000000..e0ea5b91f
--- /dev/null
+++ b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент/Module.bsl
@@ -0,0 +1,82 @@
+////////////////////////////////////////////////////////////////////////////////
+// Подсистема "Запрет редактирования реквизитов объектов".
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#Область СлужебныеПроцедурыИФункции
+
+Процедура РазрешитьРедактированиеРеквизитовОбъектаПослеПредупреждения(ОбработкаПродолжения) Экспорт
+
+ Если ОбработкаПродолжения <> Неопределено Тогда
+ ВыполнитьОбработкуОповещения(ОбработкаПродолжения, Ложь);
+ КонецЕсли;
+
+КонецПроцедуры
+
+Процедура РазрешитьРедактированиеРеквизитовОбъектаПослеПроверкиСсылок(Результат, Параметры) Экспорт
+
+ Если Результат Тогда
+ ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьРазрешенностьРедактированияРеквизитов(
+ Параметры.Форма, Параметры.ЗаблокированныеРеквизиты);
+
+ ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(Параметры.Форма);
+ КонецЕсли;
+
+ Если Параметры.ОбработкаПродолжения <> Неопределено Тогда
+ ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Результат);
+ КонецЕсли;
+
+КонецПроцедуры
+
+Процедура ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки(Ответ, Параметры) Экспорт
+
+ Если Ответ <> КодВозвратаДиалога.Да Тогда
+ ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Ложь);
+ Возврат;
+ КонецЕсли;
+
+ Если Параметры.МассивСсылок.Количество() = 0 Тогда
+ ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Истина);
+ Возврат;
+ КонецЕсли;
+
+ Если ОбщегоНазначенияВызовСервера.ЕстьСсылкиНаОбъект(Параметры.МассивСсылок) Тогда
+
+ Если Параметры.МассивСсылок.Количество() = 1 Тогда
+ ТекстСообщения = НСтр("ru = 'Элемент ""%1"" уже используется в других местах в программе.
+ |Не рекомендуется разрешать редактирование из-за риска рассогласования данных.'");
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Параметры.МассивСсылок[0]);
+ Иначе
+ ТекстСообщения = НСтр("ru = 'Выбранные элементы (%1) уже используются в других местах в программе.
+ |Не рекомендуется разрешать редактирование из-за риска рассогласования данных.'");
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Параметры.МассивСсылок.Количество());
+ КонецЕсли;
+
+ Кнопки = Новый СписокЗначений;
+ Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Разрешить редактирование'"));
+ Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Отмена'"));
+ ПоказатьВопрос(
+ Новый ОписаниеОповещения(
+ "ПроверитьСсылкиНаОбъектПослеПодтвержденияРедактирования", ЭтотОбъект, Параметры),
+ ТекстСообщения, Кнопки, , КодВозвратаДиалога.Нет, Параметры.ЗаголовокДиалога);
+ Иначе
+ Если Параметры.МассивСсылок.Количество() = 1 Тогда
+ ПоказатьОповещениеПользователя(НСтр("ru = 'Редактирование реквизитов разрешено'"),
+ ПолучитьНавигационнуюСсылку(Параметры.МассивСсылок[0]), Параметры.МассивСсылок[0]);
+ Иначе
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Разрешено редактирование реквизитов объектов (%1)'"), Параметры.МассивСсылок.Количество());
+ ПоказатьОповещениеПользователя(НСтр("ru = 'Редактирование реквизитов разрешено'"),, ТекстСообщения);
+ КонецЕсли;
+ ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Истина);
+ КонецЕсли;
+
+КонецПроцедуры
+
+Процедура ПроверитьСсылкиНаОбъектПослеПодтвержденияРедактирования(Ответ, Параметры) Экспорт
+
+ ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения, Ответ = КодВозвратаДиалога.Да);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент.mdo b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент.mdo
new file mode 100644
index 000000000..14566232d
--- /dev/null
+++ b/SSL/src/CommonModules/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент/ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент.mdo
@@ -0,0 +1,10 @@
+
+
+ ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент
+
+ ru
+ Запрет редактирования реквизитов объектов служебный клиент
+
+ true
+ true
+
diff --git a/SSL/src/CommonModules/ЗащитаПерсональныхДанныхПереопределяемый/Module.bsl b/SSL/src/CommonModules/ЗащитаПерсональныхДанныхПереопределяемый/Module.bsl
index 78d6ee5c7..6719b04dc 100644
--- a/SSL/src/CommonModules/ЗащитаПерсональныхДанныхПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ЗащитаПерсональныхДанныхПереопределяемый/Module.bsl
@@ -4,7 +4,7 @@
//
////////////////////////////////////////////////////////////////////////////////
-#Область СлужебныеПроцедурыИФункции
+#Область ПрограммныйИнтерфейс
// Процедура обеспечивает сбор сведений о хранении данных,
// относящихся к персональным
diff --git a/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl b/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl
index 855881b9b..6221b10d8 100644
--- a/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl
+++ b/SSL/src/CommonModules/ИнформацияПриЗапуске/Module.bsl
@@ -13,7 +13,7 @@
// КЛИЕНТСКИЕ ОБРАБОТЧИКИ.
- КлиентскиеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриНачалеРаботыСистемы"].Добавить(
+ КлиентскиеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПослеНачалаРаботыСистемы"].Добавить(
"ИнформацияПриЗапускеКлиент");
// СЕРВЕРНЫЕ ОБРАБОТЧИКИ.
@@ -70,25 +70,25 @@
// Параметры - Структура - Параметры запуска.
//
Процедура ПриДобавленииПараметровРаботыКлиентскойЛогикиСтандартныхПодсистемПриЗапуске(Параметры) Экспорт
-
- Показывать = Ложь;
-
+ Настройки = Новый Структура;
+ Настройки.Вставить("Показывать", Ложь);
Если Метаданные.Обработки.ИнформацияПриЗапуске.Макеты.Количество() > 1 Тогда
Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда
- Показывать = Истина;
+ Настройки.Показывать = Истина;
Иначе
- Показывать = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ИнформацияПриЗапуске", "Показывать", Истина);
- Если Не Показывать Тогда
+ Настройки.Показывать = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ИнформацияПриЗапуске", "Показывать", Истина);
+ Если Не Настройки.Показывать Тогда
ДатаБлижайшегоПоказа = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ИнформацияПриЗапуске", "ДатаБлижайшегоПоказа");
Если ДатаБлижайшегоПоказа = Неопределено Или ДатаБлижайшегоПоказа <= ТекущаяДатаСеанса() Тогда
- Показывать = Истина;
+ Настройки.Показывать = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
- Параметры.Вставить("ИнформацияПриЗапуске", Новый ФиксированнаяСтруктура("Показывать", Показывать));
+ ИнформацияПриЗапускеПереопределяемый.ОпределитьНастройки(Настройки);
+ Параметры.Вставить("ИнформацияПриЗапуске", Новый ФиксированнаяСтруктура(Настройки));
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/CommonModules/ИнформацияПриЗапускеКлиент/Module.bsl b/SSL/src/CommonModules/ИнформацияПриЗапускеКлиент/Module.bsl
index 00c71fbb2..433fa678c 100644
--- a/SSL/src/CommonModules/ИнформацияПриЗапускеКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ИнформацияПриЗапускеКлиент/Module.bsl
@@ -8,14 +8,22 @@
////////////////////////////////////////////////////////////////////////////////
// Обработчики служебных событий
-// Вызывается при запуске конфигурации, открывает окно информации.
-Процедура ПриНачалеРаботыСистемы(Параметры) Экспорт
+// Вызывается после запуска конфигурации, подключает обработчик ожидания, который открывает окно информации.
+Процедура ПослеНачалаРаботыСистемы() Экспорт
ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
- Если ПараметрыКлиента.Свойство("ИнформацияПриЗапуске") И ПараметрыКлиента.ИнформацияПриЗапуске.Показывать Тогда
- ОткрытьФорму("Обработка.ИнформацияПриЗапуске.Форма");
+ Если ПараметрыКлиента.Свойство("ИнформацияПриЗапуске")
+ И ПараметрыКлиента.ИнформацияПриЗапуске.Показывать
+ И ПараметрыКлиента.Свойство("ПоказатьОписаниеИзмененийСистемы")
+ И Не ПараметрыКлиента.ПоказатьОписаниеИзмененийСистемы Тогда
+ ПодключитьОбработчикОжидания("ПоказатьИнформациюПослеЗапуска", 0.2, Истина);
КонецЕсли;
КонецПроцедуры
+// Вызывается из обработчика ожидания, открывает окно информации.
+Процедура Показать() Экспорт
+ ОткрытьФорму("Обработка.ИнформацияПриЗапуске.Форма");
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ИнформацияПриЗапускеПереопределяемый/Module.bsl b/SSL/src/CommonModules/ИнформацияПриЗапускеПереопределяемый/Module.bsl
new file mode 100644
index 000000000..e82c22298
--- /dev/null
+++ b/SSL/src/CommonModules/ИнформацияПриЗапускеПереопределяемый/Module.bsl
@@ -0,0 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+// Подсистема "Информация при запуске"
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#Область ПрограммныйИнтерфейс
+
+// Определение настроек отображения информации при запуске.
+//
+// Параметры:
+// Настройки - Коллекция настроек подсистемы. Реквизиты:
+// * Показывать - Булево - Показывать ли информацию в текущем сеансе.
+// - Истина - Информация будет показана после входа в программу.
+// - Ложь - Информация не будет показана.
+//
+Процедура ОпределитьНастройки(Настройки) Экспорт
+
+
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/CommonModules/ИнформацияПриЗапускеПереопределяемый/ИнформацияПриЗапускеПереопределяемый.mdo b/SSL/src/CommonModules/ИнформацияПриЗапускеПереопределяемый/ИнформацияПриЗапускеПереопределяемый.mdo
new file mode 100644
index 000000000..e085e7524
--- /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 e6be6b7f8..1b82dd2e0 100644
--- a/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl
+++ b/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl
@@ -333,7 +333,10 @@
ТекстЗапросаВТ = "";
ПерваяЧасть = Истина;
Для Каждого НачальнаяДата Из НачальныеДаты Цикл
- Если НЕ ПерваяЧасть Тогда
+ Если Не ЗначениеЗаполнено(НачальнаяДата) Тогда
+ Продолжить;
+ КонецЕсли;
+ Если Не ПерваяЧасть Тогда
ТекстЗапросаВТ = ТекстЗапросаВТ + "
|ОБЪЕДИНИТЬ ВСЕ
|";
@@ -644,24 +647,27 @@
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьПроизводственныеКалендари";
+ Обработчик.Версия = "1.0.0.1";
Обработчик.ОбщиеДанные = Истина;
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеПроизводственныхКалендарей";
Обработчик.РежимВыполнения = "Монопольно";
+ Обработчик.Версия = "1.0.0.1";
Обработчик.ОбщиеДанные = Истина;
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьИспользованиеНесколькихПроизводственныхКалендарей";
+ Обработчик.Версия = "1.0.0.1";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.1.3.7";
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьИспользованиеНесколькихПроизводственныхКалендарей";
Обработчик = Обработчики.Добавить();
- Обработчик.Версия = "2.2.1.32";
+ Обработчик.Версия = "2.2.3.38";
Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеПроизводственныхКалендарей";
Обработчик.РежимВыполнения = "Монопольно";
Обработчик.ОбщиеДанные = Истина;
diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияXML/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияXML/Module.bsl
index 710921d7f..e0e89fde1 100644
--- a/SSL/src/CommonModules/КонтактнаяИнформацияXML/Module.bsl
+++ b/SSL/src/CommonModules/КонтактнаяИнформацияXML/Module.bsl
@@ -4,17 +4,18 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
-//
// Сравнивает два XML и возвращает результат в виде таблицы значений.
//
// Параметры:
-// Текст1, Текст2 - строки с XML данными
+// Текст1 - Строка - XML данные
+// Текст1 - Строка - XML данные
//
-// Возвращает таблица значений с колонками:
-// - Путь - строка - XPath путь к месту различия
-// - Значение1 - строка - значение в XML из параметра Текст1
-// - Значение2 - строка - значение в XML из параметра Текст2
+// Возвращаемое значение:
+// ТаблицаЗначений с колонками:
+// * Путь - Строка - XPath путь к месту различия
+// * Значение1 - Строка - значение в XML из параметра Текст1
+// * Значение2 - Строка - значение в XML из параметра Текст2
//
Функция РазличияXML(Знач Текст1, Знач Текст2) Экспорт
Возврат ЗначениеИзСтрокиXML( XSLT_ТаблицаЗначенийРазличияXML(Текст1, Текст2) );
@@ -23,7 +24,10 @@
// Возвращает соответствующее значение перечисления "ТипыКонтактнойИнформации" по строке XML
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию
+// XMLСтрока - Строка, описывающая контактную информацию
+//
+// Возвращаемое значение:
+// ПеречислениеСсылка.ТипыКонтактнойИнформации - результат
//
Функция ТипКонтактнойИнформации(Знач XMLСтрока) Экспорт
Возврат ЗначениеИзСтрокиXML( XSLT_ТипКонтактнойИнформацииПоСтрокеXML(XMLСтрока) );
@@ -33,7 +37,11 @@
// Если значение состава сложного типа, то возвращает неопределено
//
// Параметры:
-// Текст XML строка контактной информации. Может быть модифицирован
+// Текст Строка - XML строка контактной информации. Может быть модифицирован
+//
+// Возвращаемое значение:
+// Строка - XML значение состава
+// Неопределено - Свойство "Состав" не найдено
//
Функция СтрокаСоставаКонтактнойИнформации(Знач Текст, Знач НовоеЗначение = Неопределено) Экспорт
Чтение = Новый ЧтениеXML;
@@ -55,7 +63,10 @@
// Преобразует строку пар ключ = значение (см старый формат адреса) в структуру.
//
// Параметры:
-// Текст - строка пар ключ = значение, разделенные переносом строки
+// Текст - Строка - пары ключ = значение, разделенные переносом строки
+//
+// Возвращаемое значение:
+// Структура - результат преобразования
//
Функция СтрокаКлючЗначениеВСтруктуру(Знач Текст) Экспорт
Возврат ЗначениеИзСтрокиXML( XSLT_СтрокаКлючЗначениеВСтруктуру(Текст) );
@@ -65,8 +76,12 @@
// В возвращаемом списке значений представление - исходный ключ, значение - исходное значение
//
// Параметры:
-// Текст - строка пар ключ = значение, разделенные переносом строки
+// Текст - Строка - пары ключ = значение, разделенные переносом строки
+// УникальностьПолей - Булево - флаг того, что из неуникальных ключей будет оставлен только последний
//
+// Возвращаемое значение:
+// СписокЗначений - результат преобразования
+//
Функция СтрокаКлючЗначениеВСписокЗначений(Знач Текст, Знач УникальностьПолей = Истина) Экспорт
Если УникальностьПолей Тогда
Возврат ЗначениеИзСтрокиXML( XSLT_УникальныеПоПредставлениюВСписке(XSLT_СтрокаКлючЗначениеВСписокЗначений(Текст)) );
@@ -77,8 +92,11 @@
// Преобразует структуру в строку пар ключ-значение, разделенный запятыми
//
// Параметры:
-// Структура - исходная структура
+// Структура - Структура - исходная структура
//
+// Возвращаемое значение:
+// Строка - результат преобразования
+//
Функция СтруктураВСтрокуКлючЗначение(Знач Структура) Экспорт
Возврат XSLT_СтруктураВСтрокуКлючЗначение( ЗначениеВСтрокуXML(Структура) );
КонецФункции
@@ -86,8 +104,11 @@
// Преобразует список значений в строку пар ключ-значение, разделенный запятыми
//
// Параметры:
-// Список - список значений
+// Список - СписокЗначений - исходный данные
//
+// Возвращаемое значение:
+// Строка - результат преобразования
+//
Функция СписокЗначенийВСтрокуКлючЗначение(Знач Список) Экспорт
Возврат XSLT_СписокЗначенийВСтрокуКлючЗначение( ЗначениеВСтрокуXML(Список) );
КонецФункции
@@ -95,7 +116,10 @@
// Преобразует структуру в список значений. Ключ преобразуется в представление.
//
// Параметры:
-// Структура - исходная структура
+// Структура - Структура - исходная структура
+//
+// Возвращаемое значение:
+// СписокЗначений - результат преобразования
//
Функция СтруктураВСписокЗначений(Знач Структура) Экспорт
Возврат ЗначениеИзСтрокиXML( XSLT_СтруктураВСписокЗначений( ЗначениеВСтрокуXML(Структура) ) );
@@ -104,7 +128,10 @@
// Преобразует список значений в структуру. Представление преобразуется в ключ.
//
// Параметры:
-// Структура - исходная структура
+// Список - СписокЗначений - исходные данные
+//
+// Возвращаемое значение:
+// Структура - результат преобразования
//
Функция СписокЗначенийВСтруктуру(Знач Список) Экспорт
Возврат ЗначениеИзСтрокиXML( XSLT_СписокЗначенийВСтруктуру( ЗначениеВСтрокуXML(Список) ) );
@@ -113,28 +140,24 @@
// Сравнивает два экземпляра контактной инфромации.
//
// Параметры:
-// Данные1, Данные2 - данные экземпляров контактной информации. Каждый параметр независимо может принимать
-// значения следующих типов:
-// - ОбъектXTDO. Рассматривается как объект с контактной информацией
-// - Строка. Рассматривается как контактная информация в формате XML
-// - Структура, описывающие контактную информацию. Ожидаются поля:
-// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, список значений,
-// соответствие. Если в этом поле передана строка XML, то остальные поля
-// структуры игнорируются.
-// Представление - строка представления. Используется в случае, если не удалось вычислить
-// представление из ЗначенияПолей (отсутствие в них поля Представление)
-// ВидКонтактнойИнформации - ссылка на справочник ВидыКонтактнойИнформации или значение перечисления
-// ТипыКонтактнойИнформации. Используется в случае, если не удалось вычислить
-// тип из ЗначенияПолей
-// Комментарий - строка комментария. Используется в случае, если не удалось вычислить
-// комментарий из ЗначенияПолей
+// Данные1 - ОбъектXTDO - объект с контактной информацией
+// - Строка - контактная информация в формате XML
+// - Структура - описание контактной информацию. Ожидаются поля:
+// * ЗначенияПолей - Строка, Структура, СписокЗначений, Соответствие - поля контактной информации
+// * Представление - Строка - Представление. Используется в случае, если не удалось вычислить
+// представление из ЗначенияПолей (отсутствие в них поля Представление)
+// * Комментарий - Строка - комментарий. Используется в случае, если не удалось вычислить комментарий из ЗначенияПолей
+// * ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+// Используется в случае, если не удалось вычислить тип из ЗначенияПолей
+// Данные2 - ОбъектXTDO, Строка, Структура - аналогично Данные1
//
-// Возвращает таблицу отличающихся полей со следующими колонками:
-// Путь - строка XPath, идентифицирующая различающееся значение. Значение "ТипКонтактнойИнформации" означает,
-// что переданные экземпляры контактной информации различаются типом.
-// Описание - строка описания отличающегося реквизита в терминах предметной области
-// Значение1 - строка значения, соответствующая объекту, переданному в параметре Данные1
-// Значение2 - строка значения, соответствующая объекту, переданному в параметре Данные2
+// Возвращаемое значение:
+// ТаблицаЗначений: - таблица отличающихся полей со следующими колонками:
+// * Путь - Строка - XPath, идентифицирующий различающееся значение. Значение "ТипКонтактнойИнформации" означает,
+// что переданные экземпляры контактной информации различаются типом.
+// * Описание - Строка - описание отличающегося реквизита в терминах предметной области
+// * Значение1 - Строка - значение, соответствующая объекту, переданному в параметре Данные1
+// * Значение2 - Строка - значение, соответствующая объекту, переданному в параметре Данные2
//
Функция РазличияКонтактнойИнформации(Знач Данные1, Знач Данные2) Экспорт
ДанныеКИ1 = ПривестиКонтактнуюИнформациюXML(Данные1);
@@ -164,18 +187,20 @@
// Преобразует контактную информацию в вид XML
//
// Параметры:
-// Данные - строка XML, объект XTDO или структура, описывающие контактную информацию.
-// В структуре ожидаются поля:
-// "ЗначенияПолей" - строка (XML или старый формат ключ-значение) или структура или список значений.
-// Если в этом поле передана строка XML, то остальные поля игнорируются
-// "ВидКонтактнойИнформации" - СправочникСсылка.ВидыКонтактнойИнформации
-// или Перечисление.ТипыКонтактнойИнформации
-// "Представление" - строка представления
-// "Комментарий" - необязательная строка комментария
+// Данные - Строка - описание контактной информации.
+// - ОбъектXTDO - описание контактной информации.
+// - Структура - описание контактной информации. Ожидаются поля:
+// * ЗначенияПолей - Строка, Структура, СписокЗначений, Соответствие - поля контактной информации
+// * Представление - Строка - Представление. Используется в случае, если не удалось вычислить
+// представление из ЗначенияПолей (отсутствие в них поля Представление)
+// * Комментарий - Строка - комментарий. Используется в случае, если не удалось вычислить комментарий из ЗначенияПолей
+// * ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+// Используется в случае, если не удалось вычислить тип из ЗначенияПолей
//
-// Возвращаемое значение - структура с полями:
-// ТипКонтактнойИнформации - Перечисление.ТипыКонтактнойИнформации
-// ДанныеXML - строка с текстом XML
+// Возвращаемое значение:
+// Структура - содержит поля:
+// * ТипКонтактнойИнформации - Перечисление.ТипыКонтактнойИнформации
+// * ДанныеXML - Строка - текст XML
//
Функция ПривестиКонтактнуюИнформациюXML(Знач Данные) Экспорт
Если ЭтоСтрокаXML(Данные) Тогда
@@ -188,8 +213,8 @@
ДанныеXML, ЗначениеИзСтрокиXML( XSLT_ТипКонтактнойИнформацииПоСтрокеXML(ДанныеXML) ));
КонецЕсли;
+
// Ожидаем структуру
-
Комментарий = Неопределено;
Данные.Свойство("Комментарий", Комментарий);
@@ -199,6 +224,7 @@
Если Не ПустаяСтрока(Комментарий) Тогда
КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(ЗначенияПолей, Комментарий);
КонецЕсли;
+
Возврат Новый Структура("ДанныеXML, ТипКонтактнойИнформации",
ЗначенияПолей, ЗначениеИзСтрокиXML( XSLT_ТипКонтактнойИнформацииПоСтрокеXML(ЗначенияПолей) ));
@@ -209,20 +235,24 @@
Если ТипЗначенийПолей = Тип("Строка") Тогда
// Текст из пар ключ-значение
СтрокаXMLСтруктуры = XSLT_СтрокаКлючЗначениеВСтруктуру(ЗначенияПолей)
+
ИначеЕсли ТипЗначенийПолей = Тип("СписокЗначений") Тогда
// Список значений
СтрокаXMLСтруктуры = XSLT_СписокЗначенийВСтруктуру( ЗначениеВСтрокуXML(ЗначенияПолей) );
+
ИначеЕсли ТипЗначенийПолей = Тип("Соответствие") Тогда
// Соответствие
СтрокаXMLСтруктуры = XSLT_СоответствиеВСтруктуру( ЗначениеВСтрокуXML(ЗначенияПолей) );
+
Иначе
// Ожидаем структуру
СтрокаXMLСтруктуры = ЗначениеВСтрокуXML(ЗначенияПолей);
+
КонецЕсли;
// Разбираем по ВидКонтактнойИнформации
- ТипКонтактнойИнформации = УправлениеКонтактнойИнформацией.ТипВидаКонтактнойИнформации(
- Данные.ВидКонтактнойИнформации);
+ ТипКонтактнойИнформации = УправлениеКонтактнойИнформацией.ТипВидаКонтактнойИнформации(Данные.ВидКонтактнойИнформации);
+
Результат = Новый Структура("ТипКонтактнойИнформации, ДанныеXML", ТипКонтактнойИнформации);
ВсеТипы = Перечисления.ТипыКонтактнойИнформации;
@@ -255,27 +285,32 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-//
// Преобразует список значений, оставляя из него только последние значения пар ключ-значение по ключу-представлению.
//
// Параметры:
-// Текст - сериализованный список значений
+// Текст - Строка - сериализованный список значений
//
-// Возвращаемое значение - строка XML сериализованного списка значений
+// Возвращаемое значение:
+// Строка - XML сериализованного списка значений
//
Функция XSLT_УникальныеПоПредставлениюВСписке(Знач Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_УникальныеПоПредставлениюВСписке();
Возврат Преобразователь.ПреобразоватьИзСтроки(Текст);
КонецФункции
-// Производит проверку двух строк XML - параметра и текущего
-// Результат преобразования - сериализованый ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки:
-// - Путь - строка - путь к месту различия
-// - Значение1 - строка - значение в XML из параметра Текст1
-// - Значение2 - строка - значение в XML из параметра Текст2
+// Производит сравнение двух строк XML
+// Проверяются только строки и атрибуты, без пробельных, CDATA и т.п. Порядок важен.
//
-// Проверяем только строки и атрибуты, без пробельных, CDATA и т.п. Порядок важен.
+// Параметры:
+// Текст1 - Строка - Строка XML
+// Текст2 - Строка - Строка XML
+//
+// Возвращаемое значение:
+// Строка - сериализованый ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки:
+// * Путь - Строка - путь к месту различия
+// * Значение1 - Строка - значение в XML из параметра Текст1
+// * Значение2 - Строка - значение в XML из параметра Текст2
//
Функция XSLT_ТаблицаЗначенийРазличияXML(Текст1, Текст2)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_ТаблицаЗначенийРазличияXML();
@@ -295,9 +330,10 @@
// последний (особенность работы сериализатора платформы)
//
// Параметры:
-// Текст - строка с парами Ключ = Значение
+// Текст - Строка - пары Ключ = Значение
//
-// Возвращаемое значение - строка XML сериализованной структуры
+// Возвращаемое значение:
+// Строка - XML сериализованной структуры
//
Функция XSLT_СтрокаКлючЗначениеВСтруктуру(Знач Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтрокаКлючЗначениеВСтруктуру();
@@ -308,9 +344,10 @@
// В случае повторных ключей все включаются в результат
//
// Параметры:
-// Текст - строка с парами Ключ = Значение
+// Текст - Строка - пары Ключ = Значение
//
-// Возвращаемое значение - строка XML сериализованного списка значений
+// Возвращаемое значение:
+// Строка - XML сериализованного списка значений
//
Функция XSLT_СтрокаКлючЗначениеВСписокЗначений(Знач Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтрокаКлючЗначениеВСписокЗначений();
@@ -320,9 +357,10 @@
// Преобразует список значений в строку пар ключ = значение, разделенных переносом строки
//
// Параметры:
-// Текст - сериализованный список значений
+// Текст - Строка - сериализованный список значений
//
-// Возвращаемое значение - строка результата
+// Возвращаемое значение:
+// Строка - результат преобразования
//
Функция XSLT_СписокЗначенийВСтрокуКлючЗначение(Знач Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СписокЗначенийВСтрокуКлючЗначение();
@@ -332,21 +370,23 @@
// Преобразует структуру в строку пар ключ = значение, разделенных переносом строки
//
// Параметры:
-// Текст - сериализованная структура
+// Текст - Строка - сериализованная структура
//
-// Возвращаемое значение - строка результата
+// Возвращаемое значение:
+// Строка - результат преобразования
//
Функция XSLT_СтруктураВСтрокуКлючЗначение(Знач Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВСтрокуКлючЗначение();
Возврат Преобразователь.ПреобразоватьИзСтроки(Текст);
КонецФункции
-// Преобразует список значений в структур. Представление преобразуется в ключ
+// Преобразует список значений в структуру. Представление преобразуется в ключ
//
// Параметры:
-// Текст - сериализованный список значений
+// Текст - Строка - сериализованная список значений
//
-// Возвращаемое значение - сериализованная структура
+// Возвращаемое значение:
+// Строка - результат преобразования
//
Функция XSLT_СписокЗначенийВСтруктуру(Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СписокЗначенийВСтруктуру();
@@ -356,9 +396,10 @@
// Преобразует структуру в список значений. Ключ преобразуется в представление.
//
// Параметры:
-// Текст - сериализованная структура
+// Текст - Строка - сериализованная структура
//
-// Возвращаемое значение - сериализованный список значений
+// Возвращаемое значение:
+// Строка - результат преобразования
//
Функция XSLT_СтруктураВСписокЗначений(Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВСписокЗначений();
@@ -368,9 +409,10 @@
// Преобразует соответсвие в структуру. Ключ преобразуется в ключ, значение - в значение.
//
// Параметры:
-// Текст - сериализованное соответствие
+// Текст - Строка - сериализованное соответствие
//
-// Возвращаемое значение - сериализованная структура
+// Возвращаемое значение:
+// Строка - результат преобразования
//
Функция XSLT_СоответствиеВСтруктуру(Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СоответствиеВСтруктуру();
@@ -380,12 +422,11 @@
// Анализирует таблицу Путь-Значение1-Значение2 для указанного вида контактной информации
//
// Параметры:
-// Текст - строка XML с ValueTable из результата сравнения XML. Ожидаются колонки
-// "Путь", "Значение1", "Значение2".
-// ТипКонтактнойИнформации - значение перечисления типа
+// Текст - Строка - строка XML с ValueTable из результата сравнения XML.
+// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации - значение перечисления типа
//
-// Возвращает сериализованную таблицу значений отличающихся полей с колонками
-// "Путь", "Описание", "Значение1", "Значение2".
+// Возвращаемое значение:
+// Строка - сериализованную таблицу значений отличающихся полей
//
Функция XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации(Знач Текст, Знач ТипКонтактнойИнформации)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации(
@@ -396,11 +437,12 @@
// Преобразует структуру в XML контакной информации
//
// Параметры:
-// Текст - сериализованная структура
-// Представление - необязательное представление. Используется, только если в структуре нет поля представления
-// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария
+// Текст - Строка - сериализованная структура
+// Представление - Строка - необязательное представление. Используется, только если в структуре нет поля представления
+// Комментарий - Строка - необязательный комментарий. Используется, только если в структуре нет поля комментария
//
-// Возвращаемое значение - XML контактной информации
+// Возвращаемое значение:
+// Строка - XML контактной информации
//
Функция XSLT_СтруктураВАдрес(Знач Текст, Знач Представление = Неопределено, Знач Комментарий = Неопределено)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВАдрес();
@@ -412,11 +454,12 @@
// Преобразует структуру в XML контакной информации
//
// Параметры:
-// Текст - сериализованная структура
-// Представление - необязательное представление. Используется, только если в структуре нет поля представления
-// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария
+// Текст - Строка - сериализованная структура
+// Представление - Строка - необязательное представление. Используется, только если в структуре нет поля представления
+// Комментарий - Строка - необязательный комментарий. Используется, только если в структуре нет поля комментария
//
-// Возвращаемое значение - XML контактной информации
+// Возвращаемое значение:
+// Строка - XML контактной информации
//
Функция XSLT_СтруктураВАдресЭлектроннойПочты(Знач Текст, Знач Представление = Неопределено, Знач Комментарий = Неопределено)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВАдресЭлектроннойПочты();
@@ -430,11 +473,12 @@
// Преобразует структуру в XML контакной информации
//
// Параметры:
-// Текст - сериализованная структура
-// Представление - необязательное представление. Используется, только если в структуре нет поля представления
-// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария
+// Текст - Строка - сериализованная структура
+// Представление - Строка - необязательное представление. Используется, только если в структуре нет поля представления
+// Комментарий - Строка - необязательный комментарий. Используется, только если в структуре нет поля комментария
//
-// Возвращаемое значение - XML контактной информации
+// Возвращаемое значение:
+// Строка - XML контактной информации
//
Функция XSLT_СтруктураВВебСтраницу(Знач Текст, Знач Представление = Неопределено, Знач Комментарий = Неопределено)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВВебСтраницу();
@@ -447,11 +491,12 @@
// Преобразует структуру в XML контакной информации
//
// Параметры:
-// Текст - сериализованная структура
-// Представление - необязательное представление. Используется, только если в структуре нет поля представления
-// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария
+// Текст - Строка - сериализованная структура
+// Представление - Строка - необязательное представление. Используется, только если в структуре нет поля представления
+// Комментарий - Строка - необязательный комментарий. Используется, только если в структуре нет поля комментария
//
-// Возвращаемое значение - XML контактной информации
+// Возвращаемое значение:
+// Строка - XML контактной информации
//
Функция XSLT_СтруктураВТелефон(Знач Текст, Знач Представление = Неопределено, Знач Комментарий = Неопределено)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВТелефон();
@@ -463,11 +508,12 @@
// Преобразует структуру в XML контакной информации
//
// Параметры:
-// Текст - сериализованная структура
-// Представление - необязательное представление. Используется, только если в структуре нет поля представления
-// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария
+// Текст - Строка - сериализованная структура
+// Представление - Строка - необязательное представление. Используется, только если в структуре нет поля представления
+// Комментарий - Строка - необязательный комментарий. Используется, только если в структуре нет поля комментария
//
-// Возвращаемое значение - XML контактной информации
+// Возвращаемое значение:
+// Строка - XML контактной информации
//
Функция XSLT_СтруктураВФакс(Знач Текст, Знач Представление = Неопределено, Знач Комментарий = Неопределено)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВФакс();
@@ -479,11 +525,12 @@
// Преобразует структуру в XML контакной информации
//
// Параметры:
-// Текст - сериализованная структура
-// Представление - необязательное представление. Используется, только если в структуре нет поля представления
-// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария
+// Текст - Строка - сериализованная структура
+// Представление - Строка - необязательное представление. Используется, только если в структуре нет поля представления
+// Комментарий - Строка - необязательный комментарий. Используется, только если в структуре нет поля комментария
//
-// Возвращаемое значение - XML контактной информации
+// Возвращаемое значение:
+// Строка - XML контактной информации
//
Функция XSLT_СтруктураВДругое(Знач Текст, Знач Представление = Неопределено, Знач Комментарий = Неопределено)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВДругое();
@@ -496,11 +543,12 @@
// Устанавливает в контактной информации представление и комментарий, если они не заполнены
//
// Параметры:
-// Текст - XML контактной информации
-// Представление - необязательное устанавливаемое представление.
-// Комментарий - необязательный устанавливаемый комментарий.
+// Текст - Строка - сериализованная структура
+// Представление - Строка - необязательное представление. Используется, только если в структуре нет поля представления
+// Комментарий - Строка - необязательный комментарий. Используется, только если в структуре нет поля комментария
//
-// Возвращаемое значение - XML контактной информации
+// Возвращаемое значение:
+// Строка - XML контактной информации
//
Функция XSLT_КонтрольПредставленияИКомментария(Знач Текст, Знач Представление = Неопределено, Знач Комментарий = Неопределено)
Если Представление = Неопределено И Комментарий = Неопределено Тогда
@@ -511,6 +559,7 @@
XSLT_Текст.ДобавитьСтроку("
|
|
|
@@ -541,12 +590,12 @@
|
|
|
- | " + НормализованнаяСтрокаXML(Комментарий) + "
+ | " + НормализованнаяСтрокаXML(Комментарий) + "
|
|
|
|
- |
+ |
|
|");
КонецЕсли;
@@ -561,14 +610,16 @@
КонецФункции
// Устанавливает в контактной информации Состав.Значение на переданное представление
-//
-// Параметры:
-// Текст - XML контактной информации
-// Представление - устанавливаемое представление.
-//
// Если Представление равно неопределено, то никаких действий не производит. Иначе проверяет на пустоту
// Состав. Если там ничего нет и атрибут "Состав.Значение" пуст, то ставим в состав значение представления
//
+// Параметры:
+// Текст - Строка - XML контактной информации
+// Представление - Строка - устанавливаемое представление.
+//
+// Возвращаемое значение:
+// Строка - XML контактной информации
+//
Функция XSLT_КонтрольСтроковогоЗначенияПростогоТипа(Знач Текст, Знач Представление)
Если Представление = Неопределено Тогда
Возврат Текст;
@@ -609,8 +660,11 @@
// Возвращает фрагмент XML для подстановки строки в виде <Узел>Строка<Узел>
//
// Параметры:
-// - Текст - строка, вставляемая в XML
-// - ИмяЭлемента - необязательное имя для внешнего узла
+// Текст - Строка - вставка в XML
+// ИмяЭлемента - Строка - необязательное имя для внешнего узла
+//
+// Возвращаемое значение:
+// Строка - результирующий XML
//
Функция XSLT_УзелСтрокиПараметра(Знач Текст, Знач ИмяЭлемента = "ExternalParamNode")
// Через запись xml для маскировки спецсимволов
@@ -625,7 +679,10 @@
// Возвращает XML без описания для включения внутрь другого XML
//
// Параметры:
-// - Текст - исходный XML
+// Текст - Строка - исходный XML
+//
+// Возвращаемое значение:
+// Строка - результирующий XML
//
Функция XSLT_УдалитьОписаниеXML(Знач Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_УдалитьОписаниеXML();
@@ -635,9 +692,10 @@
// Преобразует текст XML контактной информации в перечисление типа
//
// Параметры:
-// - Текст - исходный XML
+// Текст - Строка - исходный XML
//
-// Возвращаемое значение - сериализованное значение перечисления ТипыКонтактнойИнформации
+// Возвращаемое значение:
+// Строка - сериализованное значение перечисления ТипыКонтактнойИнформации
//
Функция XSLT_ТипКонтактнойИнформацииПоСтрокеXML(Знач Текст)
Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_ТипКонтактнойИнформацииПоСтрокеXML();
@@ -649,7 +707,10 @@
// Возвращает признак того, является ли текст XML
//
// Параметры:
-// Текст - проверяемый текст
+// Текст - Строка - проверяемый текст
+//
+// Возвращаемое значение:
+// Булево - результат проверки
//
Функция ЭтоСтрокаXML(Текст)
Возврат ТипЗнч(Текст) = Тип("Строка") И Лев(СокрЛ(Текст),1) = "<";
diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl
index 6961bd80d..517532f5a 100644
--- a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl
@@ -4,13 +4,15 @@
////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
-//
// Возвращает признак того, является ли строка данных контактной информации XML данными
//
// Параметры:
// Текст - Строка - Проверяемая строка
//
+// Возвращаемое значение:
+// Булево - результат проверки
+//
Функция ЭтоКонтактнаяИнформацияВXML(Знач Текст) Экспорт
// Упрощенная проверка
Возврат ЭтоСтрокаXML(Текст);
@@ -19,7 +21,6 @@
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
-//
// Возвращает аккуратно построеное наименование через запятую по парам "Название" + "Сокращение"
//
@@ -117,6 +118,11 @@
// Параметры:
// Текст - Строка - Полное наименование
//
+// Возвращаемое значение:
+// Структура - результат обработки
+// * Наименование - Строка - часть текста
+// * Сокращение - Строка - часть текста
+//
Функция НаименованиеСокращение(Знач Текст) Экспорт
Результат = Новый Структура("Наименование, Сокращение");
Части = ЧастиАдреса(Текст, Истина);
@@ -133,18 +139,23 @@
// Параметры:
// Текст - Строка - Полное наименования
//
+// Возвращаемое значение:
+// Строка - выделенное сокращение
+//
Функция Сокращение(Знач Текст) Экспорт
Части = НаименованиеСокращение(Текст);
Возврат Части.Сокращение;
КонецФункции
// Разделяет текст на слова по указанным разделителям. По умолчанию разделители - пробельные символы
-// Возвращает массив слов.
//
// Параметры:
// Текст - Строка - Разделяемая строка
// Разделители - Строка - Необязательная строка символов-разделителей
//
+// Возвращаемое значение:
+// Массив - строки, слова
+//
Функция СловаТекста(Знач Текст, Знач Разделители = Неопределено) Экспорт
НачалоСлова = 0;
@@ -171,12 +182,15 @@
Возврат Результат;
КонецФункции
-// Разделяет текст, разделенный запятыми, на массив структур "Наименование, Сокращение"
+// Разделяет текст, разделенный запятыми
//
// Параметры:
-// Текст - Срока - Разделяемый текст
+// Текст - Срока - Разделяемый текст
// ВыделятьСокращения - Булево - Опциональный параметр режима работы
//
+// Возвращаемое значение:
+// Массив - содердит стурктуры "Наименование, Сокращение"
+//
Функция ЧастиАдреса(Знач Текст, Знач ВыделятьСокращения = Истина) Экспорт
Результат = Новый Массив;
@@ -205,8 +219,11 @@
Возврат Результат;
КонецФункции
-// Возвращает вариант адресного классификатора: "КЛАДР" или Неопределено.
-//
+// Возвращает вариант текущего адресного классификатора
+//
+// Возвращаемое значение:
+// Строка - идентификатор классфикатора "КЛАДР"
+// Неопределено - не установлен текущий адресный классификатор
//
Функция ИспользуемыйАдресныйКлассификатор() Экспорт
@@ -224,11 +241,15 @@
Возврат Неопределено;
КонецФункции
-// Возвращает первый элемент из списка или Неопределено, если такого элемента нет
+// Возвращает первый элемент из списка
//
// Параметры:
// СписокДанных - СписокЗначений, Массив, ПолеФормы
//
+// Возвращаемое значение:
+// Произвольный - первый элемент
+// Неопределено - нет первого элемента
+//
Функция ПервыйИлиПустой(Знач СписокДанных) Экспорт
ТипСписка = ТипЗнч(СписокДанных);
@@ -248,6 +269,9 @@
// Параметры:
// Текст - Строка - Проверяемая строка
//
+// Возвращаемое значение:
+// Булево - результат проверки
+//
Функция ЭтоСтрокаXML(Знач Текст) Экспорт
// Упрощенная проверка
Возврат ТипЗнч(Текст) = Тип("Строка") И Лев(СокрЛ(Текст),1) = "<";
diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl
index 5fbc53f4e..887a3d2a5 100644
--- a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl
@@ -8,8 +8,11 @@
// Возвращает код дополнительной части адреса для сериализации
//
// Параметры:
-// СтрокаЗначения - значение для поиска, например "Дом", "Корпус", "Литера"
+// СтрокаЗначения - Строка - значение для поиска, например "Дом", "Корпус", "Литера"
//
+// Возвращаемое значение:
+// Число - код
+//
Функция КодСериализацииОбъектаАдресации(СтрокаЗначения) Экспорт
Ключ = ВРег(СокрЛП(СтрокаЗначения));
Для Каждого Элемент Из КонтактнаяИнформацияКлиентСерверПовтИсп.ТипыОбъектовАдресацииАдресаРФ() Цикл
@@ -23,18 +26,27 @@
// Возвращает код дополнительной части адреса для почтового индекса
//
+// Возвращаемое значение:
+// Строка - код
+//
Функция КодСериализацииПочтовогоИндекса() Экспорт
Возврат КонтактнаяИнформацияКлиентСерверПовтИсп.КодСериализацииОбъектаАдресации(НСтр("ru = 'Почтовый индекс'"));
КонецФункции
// Возвращает XPath для почтового индекса
//
+// Возвращаемое значение:
+// Строка - XPath
+//
Функция XPathПочтовогоИндекса() Экспорт
Возврат "ДопАдрЭл[ТипАдрЭл='" + КонтактнаяИнформацияКлиентСерверПовтИсп.КодСериализацииПочтовогоИндекса() + "']";
КонецФункции
// Возвращает XPath для района
//
+// Возвращаемое значение:
+// Строка - XPath
+//
Функция XPathРайона() Экспорт
Возврат "СвРайМО/Район";
КонецФункции
@@ -42,7 +54,10 @@
// Возвращает XPath для дополнительного объекта адресации
//
// Параметры;
-// СтрокаЗначения - искомый тип, например "Дом", "Корпус"
+// СтрокаЗначения - Строка - искомый тип, например "Дом", "Корпус"
+//
+// Возвращаемое значение:
+// Строка - XPath
//
Функция XPathНомераДополнительногоОбъектаАдресации(СтрокаЗначения) Экспорт
Код = КонтактнаяИнформацияКлиентСерверПовтИсп.КодСериализацииОбъектаАдресации(СтрокаЗначения);
@@ -55,8 +70,11 @@
// Возвращает строку с описанием типа по коду части адреса.
// Противоположность функции "КодСериализацииОбъектаАдресации"
//
-// Параметры:
-// Код (Строка) - код
+// Параметры:
+// Код - Строка - код
+//
+// Возвращаемое значение:
+// Число - Тип
//
Функция ТипОбъектаПоКодуСериализации(Код) Экспорт
Для Каждого Элемент Из КонтактнаяИнформацияКлиентСерверПовтИсп.ТипыОбъектовАдресацииАдресаРФ() Цикл
@@ -68,17 +86,22 @@
Возврат Неопределено;
КонецФункции
-// Возвращает пространство имен для оперирования с XDTO контактной информации
+// Возвращает пространство имен для оперирования с XDTO контактной информации
+//
+// Возвращаемое значение:
+// Строка - пространство имен
//
Функция ПространствоИмен() Экспорт
Возврат "http://www.v8.1c.ru/ssl/contactinfo";
КонецФункции
-// Возвращает имя формы для редактирования типа контактной информации
+// Возвращает имя формы для редактирования типа контактной информации
//
-// Параметры:
-// ВидИнформации - запрашиваемый тип. Может принимать тип ПеречислениеСсылка.ТипыКонтактнойИнформации
-// или СправочникСсылка.ВидыКонтактнойИнформации
+// Параметры:
+// ВидИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации, СправочникСсылка.ВидыКонтактнойИнформации - запрашиваемый тип
+//
+// Возвращаемое значение:
+// Строка - полное имя формы
//
Функция ИмяФормыВводаКонтактнойИнформации(Знач ВидИнформации) Экспорт
ТипИнформации = КонтактнаяИнформацияСлужебныйВызовСервера.ТипВидаКонтактнойИнформации(ВидИнформации);
@@ -98,7 +121,15 @@
Возврат Неопределено;
КонецФункции
-// Возвращает массив вариантов наименований по типу (по признаку владения, строения, и т.п)
+// Возвращает массив вариантов наименований по типу (по признаку владения, строения, и т.п)
+//
+// Параметры:
+// Тип - Число - запрашиваемый тип
+// ДопускатьПовторыКода - Булево - Истина - будут возвращены все варианты с повторами ("квартира" - "кв." и т.п.)
+//
+// Возвращаемое значение:
+// Массив - содержит структуры - описания
+//
Функция НаименованияОбъектовАдресацииПоТипу(Тип, ДопускатьПовторыКода = Истина) Экспорт
Результат = Новый Массив;
Повторы = Новый Соответствие;
@@ -121,13 +152,16 @@
// Возвращает массив структур с информацией о частях адреса согласно приказу ФНС ММВ-7-1/525 от 31.08.2011
//
-// Поле структуры "Тип" принимает значения: 1 - владение, 2 - здание, 3 - помещение
+// Возвращаемое значение:
+// Массив - содержит структуры - описания
//
Функция ТипыОбъектовАдресацииАдресаРФ() Экспорт
Результат = Новый Массив;
// Код, Наименование, Тип, Порядок, КодФИАС
+ // Тип: 1 - владение, 2 - здание, 3 - помещение
+
Результат.Добавить(СтрокаОбъектаАдресации("1010", НСтр("ru = 'Дом'"), 1, 1, 2));
Результат.Добавить(СтрокаОбъектаАдресации("1020", НСтр("ru = 'Владение'"), 1, 2, 1));
Результат.Добавить(СтрокаОбъектаАдресации("1030", НСтр("ru = 'Домовладение'"), 1, 3, 3));
diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl
index 4d2295228..414da27c5 100644
--- a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl
@@ -25,17 +25,21 @@
// по иерархическому представлению младший-старший
//
// Параметры:
-// Текст - строка автоподбора
-// СкрыватьНеактуальныеАдреса - флаг того, что неактуальные адреса не должны попадать в автоподбор
-// ПредупреждатьОНеактуальных - флаг структуры результата. Истина - возвращаемый список значений
-// состоит из структур с предупреждением о неактуальности.
-// Ложь - обычный список значений.
+// Текст - Строка - текст автоподбора
+// СкрыватьНеактуальныеАдреса - Булево - флаг того, что неактуальные адреса не должны попадать в автоподбор
+// ПредупреждатьОНеактуальных - Булево - флаг структуры результата. Истина - возвращаемый список значений
+// состоит из структур с предупреждением о неактуальности.
+// Ложь - обычный список значений.
+// Возвращаемое значение:
+// Структура - результат поиска данных. Содержит поля:
+// * СлишкомМногоДанных - Булево - признак того, что результирующий список не полон
+// * ДанныеВыбора - СписокЗначений - данные для автоподбора
//
Функция РезультатыАвтоПодбораНаселенногоПункта(Текст, СкрыватьНеактуальныеАдреса = Ложь, ПредупреждатьОНеактуальных = Истина) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
Если Вариант = "КЛАДР" Тогда
- Возврат РезультатыАвтоПодбораНаселенногоПунктаКЛАДР(Текст, СкрыватьНеактуальныеАдреса, ПредупреждатьОНеактуальных, 50);
+ Возврат РезультатыАвтоПодбораНаселенногоПунктаКЛАДР(Текст, СкрыватьНеактуальныеАдреса, ПредупреждатьОНеактуальных, 20);
КонецЕсли;
// Нет подсистемы классификатора
@@ -46,12 +50,17 @@
// по иерархическому представлению младший-старший
//
// Параметры:
-// КодНаселенногоПункта - код классификатора для ограничения подбора
-// Текст - строка автоподбора
-// СкрыватьНеактуальныеАдреса - флаг того, что неактуальные адреса не должны попадать в автоподбор
-// ПредупреждатьОНеактуальных - флаг структуры результата. Истина - возвращаемый список значений
-// состоит из структур с предупреждением о неактуальности.
-// Ложь - обычный список значений.
+// КодНаселенногоПункта - Число - код классификатора для ограничения подбора
+// Текст - Строка - текст автоподбора
+// СкрыватьНеактуальныеАдреса - Булево - флаг того, что неактуальные адреса не должны попадать в автоподбор
+// ПредупреждатьОНеактуальных - Булево - флаг структуры результата. Истина - возвращаемый список значений
+// состоит из структур с предупреждением о неактуальности.
+// Ложь - обычный список значений.
+//
+// Возвращаемое значение:
+// Структура - результат поиска данных. Содержит поля:
+// * СлишкомМногоДанных - Булево - признак того, что результирующий список не полон
+// * ДанныеВыбора - СписокЗначений - данные для автоподбора
//
Функция РезультатыАвтоПодбораУлицы(КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса = Ложь, ПредупреждатьОНеактуальных = Истина) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -68,11 +77,16 @@
// по иерархическому представлению младший-старший
//
// Параметры:
-// Текст - Строка - строка автоподбора
+// Текст - Строка - текст автоподбора
// СкрыватьНеактуальныеАдреса - Булево - флаг того, что неактуальные адреса не должны попадать в автоподбор
// ВыбиратьСтрок - Число - ограничение на количество результатов
// УточняющаяУлица - Строка - уточняющее представление улицы
//
+// Возвращаемое значение:
+// Структура - результат поиска данных. Содержит поля:
+// * СлишкомМногоДанных - Булево - признак того, что результирующий список не полон
+// * ДанныеВыбора - СписокЗначений - данные для автоподбора
+//
Функция НаселенныеПунктыПоПредставлению(Знач Текст, Знач СкрыватьНеактуальныеАдреса = Ложь, Знач ВыбиратьСтрок = 50, Знач УточняющаяУлица = "") Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -88,10 +102,15 @@
// по иерархическому представлению младший-старший
//
// Параметры:
-// КодНаселенногоПункта - код классификатора для ограничения подбора
-// Текст - строка автоподбора
-// СкрыватьНеактуальныеАдреса - флаг того, что неактуальные адреса не должны попадать в автоподбор
-// ВыбиратьСтрок - ограничение на количество результатов
+// КодНаселенногоПункта - Число - код классификатора для ограничения подбора
+// Текст - Текст - строка автоподбора
+// СкрыватьНеактуальныеАдреса - Булево - флаг того, что неактуальные адреса не должны попадать в автоподбор
+// ВыбиратьСтрок - Число - ограничение на количество результатов
+//
+// Возвращаемое значение:
+// Структура - результат поиска данных. Содержит поля:
+// * СлишкомМногоДанных - Булево - признак того, что результирующий список не полон
+// * ДанныеВыбора - СписокЗначений - данные для автоподбора
//
Функция УлицыПоПредставлению(КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса = Ложь, ВыбиратьСтрок = 50) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -131,8 +150,11 @@
// Возвращает флаг вхождения объекта в состав родителя
//
// Параметры:
-// КодОбъекта - код классификатора проверяемого объекта
-// КодРодителя - код классификатора родителя
+// КодОбъекта - Число - код классификатора проверяемого объекта
+// КодРодителя - Число - код классификатора родителя
+//
+// Возвращаемое значение:
+// Булево - результат проверки
//
Функция ЯвляетсяПотомком(КодОбъекта, КодРодителя) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -188,7 +210,11 @@
// Получает список всех регионов.
//
// Возвращаемое значение:
-// ТаблицаЗначений с колонками Код, Наименование, Сокращение, Представление
+// ТаблицаЗначений - все регионы. Содержит колонки:
+// * Код - Число - код региона
+// * Наименование - Строка - часть описания региона
+// * Сокращение - Строка - часть описания региона
+// * Представление - Строка - описание региона
// Неопределено - если нет ни одной подсистемы адресного классификатора
//
Функция ВсеРегионы() Экспорт
@@ -207,9 +233,12 @@
// классификатора
//
// Параметры:
-// Код - необязательный код классификатора объекта. Если указан, то структура
+// Код - Число - необязательный код классификатора объекта. Если указан, то структура
// заполняется данными для этого объекта
//
+// Возвращаемое значение:
+// Структура - описание населенного пункта
+//
Функция СписокРеквизитовНаселенныйПункт(Код = Неопределено) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -226,9 +255,12 @@
// классификатора
//
// Параметры:
-// Код - необязательный код классификатора объекта. Если указан, то структура
+// Код - Число - необязательный код классификатора объекта. Если указан, то структура
// заполняется данными для этого объекта
//
+// Возвращаемое значение:
+// Структура - описание населенного пункта
+
Функция СписокРеквизитовУлица(Код = Неопределено) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -243,8 +275,11 @@
// Возвращает код классификатора для объекта, представленного в полях.
//
// Параметры:
-// ЧастиАдреса - структура, зависимая от классификатора
-// СкрыватьНеактуальные - флаг скрытия актуальных
+// ЧастиАдреса - Структура - описание частей адреса?
+// СкрыватьНеактуальные - Булево - флаг скрытия актуальных
+//
+// Возвращаемое значение:
+// Число - код классификатора
//
Функция КодНаселенногоПунктаПоЧастямАдреса(ЧастиАдреса, СкрыватьНеактуальные = Ложь) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -260,12 +295,15 @@
// Возвращает список для автоподбора элемента адреса, поиск по подобию. Список ограничен 50 записями
//
// Параметры:
-// Текст (Строка) - текст, введенный в поле
-// КодЧастиАдреса - идентификатор обрабатываемой части адреса, зависит от классификатора
-// ЧастиАдреса - значения для других частей адреса, зависит от классификатора
-// ПредупреждатьОНеактуальных - флаг структуры списка.
-// Истина - в списке содержатся структуры с предупреждением о неактуальности
-// Ложь - обычный список значений
+// Текст - Строка - текст, введенный в поле
+// КодЧастиАдреса - Произвольный - идентификатор обрабатываемой части адреса, зависит от классификатора
+// ЧастиАдреса - Произвольный - значения для других частей адреса, зависит от классификатора
+// ПредупреждатьОНеактуальных - Булево - флаг структуры списка.
+// Истина - в списке содержатся структуры с предупреждением о неактуальности
+// Ложь - обычный список значений
+//
+// Возвращаемое значение:
+// СписокЗначений - результат для автоподбора
//
Функция СписокАвтоПодбораЭлементаАдреса(Текст, КодЧастиАдреса, ЧастиАдреса, ПредупреждатьОНеактуальных) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -281,10 +319,13 @@
// Возвращает список вариантов для окончательно введенного текста элемента адреса
//
// Параметры:
-// Текст - текст, введенный в поле
-// КодЧастиАдреса - идентификатор обрабатываемой части адреса, зависит от классификатора
-// ЧастиАдреса - значения для других частей адреса, зависит от классификатора
-// ВыбиратьСтрок - ограничитель на возвращаемое число строк
+// Текст - Строка - текст, введенный в поле
+// КодЧастиАдреса - Произвольный - идентификатор обрабатываемой части адреса, зависит от классификатора
+// ЧастиАдреса - Произвольный - значения для других частей адреса, зависит от классификатора
+// ВыбиратьСтрок - Число - ограничитель на возвращаемое число строк
+//
+// Возвращаемое значение:
+// СписокЗначений - результат для автоподбора
//
Функция СписокВариантовЭлементаАдресаПоТексту(Текст, КодЧастиАдреса, ЧастиАдреса, ВыбиратьСтрок = 50) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -306,14 +347,15 @@
// СкрыватьНеактуальные - Булево - Флаг исключения из выборки неактуальных адресов. По умолчанию Ложь
// ВыбиратьСтрок - Число - Ограничение на количество возвращаемых строк, 0 - без ограничения. По умолчанию 0
//
-// Возвращаемое значение - структура с полями:
-// СлишкомМногоДанных - Булево - Истина, если в базе найдено больше записей, чем ограничено параметром ВыбиратьСтрок
-// ОбщаяЧастьПредставления - Строка - Общая часть представлений адреса.
-// Данные - ТаблицаЗначений - Содержит данные для выбора. Колонки:
-// Неактуален - Булево - Флаг неактуальности строки данных
-// Индекс - Строка - Почтовый индекс, соответствующей адресу
-// Код - Число - Код классификатора для поиска вариантов по индексу
-// Представление - Строка - Представление варианта
+// Возвращаемое значение:
+// Структура - найденные варианты. Содержит поля:
+// * СлишкомМногоДанных - Булево - Истина, если в базе найдено больше записей, чем ограничено параметром ВыбиратьСтрок
+// * ОбщаяЧастьПредставления - Строка - Общая часть представлений адреса.
+// * Данные - ТаблицаЗначений - Содержит данные для выбора. Колонки:
+// ** Неактуален - Булево - Флаг неактуальности строки данных
+// ** Индекс - Строка - Почтовый индекс, соответствующей адресу
+// ** Код - Число - Код классификатора для поиска вариантов по индексу
+// ** Представление - Строка - Представление варианта
//
Функция АдресаКлассификатораПоИндексу(Знач Индекс, Знач ДополнительныеПараметрыПоиска = Неопределено) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -330,10 +372,13 @@
// Общее служебное
//
-// Преобразует контактную информацию XDTO в XML, возвращает строку
+// Преобразует контактную информацию XDTO в XML
//
// Параметры:
-// ОбъектXDTOИнформации - объект XDTO контактной информации
+// ОбъектXDTOИнформации - ОбъектXDTO - контактная информация
+//
+// Возвращаемое значение:
+// Строка - результат преобразования
//
Функция СериализацияКонтактнойИнформации(ОбъектXDTOИнформации) Экспорт
Запись = Новый ЗаписьXML;
@@ -349,13 +394,11 @@
// Преобразует XML в объект XDTO контактной информации
//
// Параметры:
-// Текст - строка XML
-// ОжидаемыйВид - необязательная ссылка на КИ, перечисление типов КИ, или объект с полем "Тип"
-//
-// РезультатыЧтения - если параметр указан, то в нем ожидается структура, куда будут внесены дополнительные
-// необязательные поля:
-// - ТекстОшибки - описание ошибок процесса чтения. Возвращаемый функцией результат будет
-// корректного типа, но не заполнен.
+// Текст - Строка - строка XML
+// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+// РезультатыЧтения - Структура - приемник для дополнительных полей:
+// * ТекстОшибки - Строка - описание ошибок процесса чтения. Возвращаемый функцией результат будет
+// корректного типа, но не заполнен.
//
Функция ДесериализацияКонтактнойИнформации(Знач Текст, Знач ОжидаемыйВид = Неопределено, РезультатыЧтения = Неопределено) Экспорт
@@ -488,9 +531,11 @@
// Разбирает представление КИ и возвращает XDTO
//
// Параметры:
-// Текст - строка XML
-// ОжидаемыйТип - ссылка на вид КИ или перечисление типа КИ для контроля типов,
-// объект с полем "Тип"
+// Текст - Строка - XML
+// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+//
+// Возвращаемое значение:
+// ОбъектXDTO - контактная информация
//
Функция ПарсингКонтактнойИнформации(Текст, ОжидаемыйВид) Экспорт
@@ -522,8 +567,11 @@
// Разбирает представление КИ и возвращает строку XML
//
// Параметры:
-// Текст - строка XML
-// ОжидаемыйТип - ссылка на вид КИ или перечисление типа КИ для контроля типов
+// Текст - Строка - XML
+// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+//
+// Возвращаемое значение:
+// Строка - контактная информация в XML
//
Функция ПарсингКонтактнойИнформацииXML(Текст, ОжидаемыйВид) Экспорт
Возврат СериализацияКонтактнойИнформации(
@@ -533,13 +581,12 @@
// Преобразует строку в XDTO контактную информацию адреса
//
// Параметры:
-// ЗначенияПолей - строка с сериализованной информацией, значения полей
-// Представление - представление старший-младший, используется для попытки разбора,
-// если ЗначенияПолей пусто
-// ОжидаемыйТип - необязательный тип для контроля
+// ЗначенияПолей - Строка - сериализованная информация, значения полей
+// Представление - Строка - представление старший-младший, используется для попытки разбора, если ЗначенияПолей пусто
+// ОжидаемыйТип - ПеречислениеСсылка.ТипыКонтактнойИнформации - необязательный тип для контроля
//
-// Возвращаемое значение
-// ОбъектXDTO контактной информации.
+// Возвращаемое значение:
+// ОбъектXDTO - контактной информации.
//
Функция ДесериализацияАдреса(Знач ЗначенияПолей, Знач Представление = "", Знач ОжидаемыйТип = Неопределено) Экспорт
ТипЗначения = ТипЗнч(ЗначенияПолей);
@@ -572,11 +619,12 @@
// Преобразует строку в XDTO контактную информацию телефона
//
-// Параметры:
-// ЗначенияПолей - строка с сериализованной информацией, значения полей
-// Представление - представление старший-младший, используется для попытки разбора,
-// если ЗначенияПолей пусто
-// ОжидаемыйТип - необязательный тип для контроля
+// ЗначенияПолей - Строка - сериализованная информация, значения полей
+// Представление - Строка - представление старший-младший, используется для попытки разбора, если ЗначенияПолей пусто
+// ОжидаемыйТип - ПеречислениеСсылка.ТипыКонтактнойИнформации - необязательный тип для контроля
+//
+// Возвращаемое значение:
+// ОбъектXDTO - контактной информации.
//
Функция ДесериализацияТелефона(ЗначенияПолей, Представление = "", ОжидаемыйТип = Неопределено) Экспорт
Возврат ДесериализацияТелефонаФакса(ЗначенияПолей, Представление, ОжидаемыйТип);
@@ -584,11 +632,12 @@
// Преобразует строку в XDTO контактную информацию Факса
//
-// Параметры:
-// ЗначенияПолей - строка с сериализованной информацией, значения полей
-// Представление - представление старший-младший, используется для попытки разбора,
-// если ЗначенияПолей пусто
-// ОжидаемыйТип - необязательный тип для контроля
+// ЗначенияПолей - Строка - сериализованная информация, значения полей
+// Представление - Строка - представление старший-младший, используется для попытки разбора, если ЗначенияПолей пусто
+// ОжидаемыйТип - ПеречислениеСсылка.ТипыКонтактнойИнформации - необязательный тип для контроля
+//
+// Возвращаемое значение:
+// ОбъектXDTO - контактной информации.
//
Функция ДесериализацияФакса(ЗначенияПолей, Представление = "", ОжидаемыйТип = Неопределено) Экспорт
Возврат ДесериализацияТелефонаФакса(ЗначенияПолей, Представление, ОжидаемыйТип);
@@ -596,11 +645,12 @@
// Преобразует строку в XDTO прочую контактную информацию
//
-// Параметры:
-// ЗначенияПолей - строка с сериализованной информацией, значения полей
-// Представление - представление старший-младший, используется для попытки разбора,
-// если ЗначенияПолей пусто
-// ОжидаемыйТип - необязательный тип для контроля
+// ЗначенияПолей - Строка - сериализованная информация, значения полей
+// Представление - Строка - представление старший-младший, используется для попытки разбора, если ЗначенияПолей пусто
+// ОжидаемыйТип - ПеречислениеСсылка.ТипыКонтактнойИнформации - необязательный тип для контроля
+//
+// Возвращаемое значение:
+// ОбъектXDTO - контактной информации.
//
Функция ДесериализацияПрочейКонтактнойИнформации(ЗначенияПолей, Представление = "", ОжидаемыйТип = Неопределено) Экспорт
@@ -636,9 +686,12 @@
// Читает и устанавливает представление для контактной информации. Объект может измениться.
//
// Параметры:
-// XDTOИнформация - ОбъектXDTO или XML строка контактной информации
-// НовоеЗначение - необязательное устанавливаемое новое представление в XDTOИнформация
+// XDTOИнформация - ОбъектXDTO, Строка - Контактная информация
+// НовоеЗначение - Строка - необязательное устанавливаемое новое представление в XDTOИнформация
//
+// Возвращаемое значение:
+// Строка - новое значение
+
Функция ПредставлениеКонтактнойИнформации(XDTOИнформация, НовоеЗначение = Неопределено) Экспорт
НадоСериализовать = ТипЗнч(XDTOИнформация) = Тип("Строка");
Если НадоСериализовать И Не КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(XDTOИнформация) Тогда
@@ -660,8 +713,11 @@
// Читает и устанавливает комментарий для контактной информации
//
// Параметры:
-// XDTOИнформация - ОбъектXDTO или XML строка контактной информации. Объект может измениться
-// НовоеЗначение - необязательный устанавливаемый новый комментарий XDTOИнформация
+// XDTOИнформация - ОбъектXDTO, Строка - Контактная информация
+// НовоеЗначение - Строка - необязательное устанавливаемое новый комментарий в XDTOИнформация
+//
+// Возвращаемое значение:
+// Строка - новое значение
//
Функция КомментарийКонтактнойИнформации(XDTOИнформация, НовоеЗначение = Неопределено) Экспорт
НадоСериализовать = ТипЗнч(XDTOИнформация) = Тип("Строка");
@@ -685,8 +741,11 @@
// В качестве флага используется не пустота значения поля "Адрес_по_документу"
//
// Параметры:
-// XDTOИнформация - ОбъектXDTO или XML строка контактной информации. Объект может измениться
-// НовоеЗначение - булево - необязательное устанавливаемое новое значение
+// XDTOИнформация - ОбъектXDTO, Строка - Контактная информация
+// НовоеЗначение - Булево - необязательное устанавливаемое новое значение
+//
+// Возвращаемое значение:
+// Булево - новое значение
//
Функция АдресВведенВСвободнойФорме(XDTOИнформация, НовоеЗначение = Неопределено) Экспорт
НадоСериализовать = ТипЗнч(XDTOИнформация) = Тип("Строка");
@@ -723,8 +782,11 @@
// Формирует и возвращает представление контактной информации
//
// Параметры:
-// Информация - объект XDTO контактной информации, или строковое значение полей
-// ВидИнформации - ссылка на справочник вида КИ
+// Информация - ОбъектXDTO, Строка - Контактная информация
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - параметры для формирования представления
+//
+// Возвращаемое значение:
+// Строка - сформированное представление
//
Функция СформироватьПредставлениеКонтактнойИнформации(Информация, ВидИнформации) Экспорт
@@ -767,7 +829,10 @@
// Возвращает флаг того, что переданный адрес - российский
//
// Параметры:
-// XDTOАдрес - объект XDTO КИ или адреса
+// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса
+//
+// Возвращаемое значение:
+// Булево - результат проверки
//
Функция ЭтоРоссийскийАдрес(XDTOАдрес) Экспорт
Возврат РоссийскийАдрес(XDTOАдрес) <> Неопределено;
@@ -776,7 +841,11 @@
// Возвращает извлеченный XDTO российского адреса или Неопределено для адреса иностранного
//
// Параметры:
-// ОбъектИнформации - объект XDTO КИ или адреса
+// ОбъектИнформации - ОбъектXDTO - Контактная информация или XDTO адреса
+//
+// Возвращаемое значение:
+// ОбъектXDTO - российский адрес
+// Неопределено - нет российского адреса
//
Функция РоссийскийАдрес(ОбъектИнформации) Экспорт
Результат = Неопределено;
@@ -806,8 +875,11 @@
// Читает и устанавливает почтовый индекс адреса
//
// Параметры:
-// XDTOАдрес - объект XDTO адреса или адреса РФ
-// НовоеЗначение - устанавливаемое значение
+// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса
+// НовоеЗначение - Строка - устанавливаемое значение
+//
+// Возвращаемое значение:
+// Строка - почтовый индекс
//
Функция ПочтовыйИндексАдреса(XDTOАдрес, НовоеЗначение = Неопределено) Экспорт
@@ -838,10 +910,14 @@
Возврат НовоеЗначение;
КонецФункции
-// Возвращает почтовый индекс для адреса или Неопределено при неудаче поиска
+// Возвращает почтовый индекс для адреса по данным классификатора
//
// Параметры:
-// XDTOАдрес - объект XDTO адреса или адреса РФ
+// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса
+//
+// Возвращаемое значение:
+// Строка - почтовый индекс
+// Неопределено - индекс не найден или адрес иностранный
//
Функция ОпределитьПочтовыйИндексАдреса(XDTOАдрес) Экспорт
@@ -870,8 +946,11 @@
// Читает и устанавливает район адреса
//
// Параметры:
-// XDTOАдрес - объект XDTO адреса или адреса РФ
-// НовоеЗначение - устанавливаемое значение
+// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса
+// НовоеЗначение - Строка - устанавливаемое значение
+//
+// Возвращаемое значение:
+// Строка - новое значение
//
Функция РайонАдреса(XDTOАдрес, НовоеЗначение = Неопределено) Экспорт
@@ -901,18 +980,24 @@
Возврат НовоеЗначение;
КонецФункции
-// Читает и устанавливает здания и помещения адреса. Возвращает структуру с полями "Здания" и "Помещения",
-// содержащими данные. Каждое поле - таблица значений с колонками "Тип", "Сокращение", "Значение", где:
-// Тип - строка тип внутреннего классифатора дополнительных адресных объектов. Например "Корпус"
-// Сокращение - сокращение названия для использования в представлении. При установке не используется
-// Значение - значение номера дома, квартиры и т.п
-// ПутьXPath - путь к значению объекта
+// Читает и устанавливает здания и помещения адреса.
//
// Параметры:
-// XDTOАдрес - объект XDTO адреса или адреса РФ
-// НовоеЗначение - необязательная структура с полями "Здания" и "Помещения", содержащими таблицы для
-// для установки новых значения. Структура таблиц аналогична структуре результата функции.
-// Можно смешивать здания и помещения в одной таблице.
+// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса
+// НовоеЗначение - Структура - устанавливаемое значение. Ожидаются поля:
+// * Здания - ТаблицаЗначений с колонками:
+// ** Тип - Строка - тип внутреннего классифатора дополнительных адресных объектов. Например "Корпус"
+// ** Значение - Строка - значение номера дома, квартиры и т.п
+// * Помещения - ТаблицаЗначений с колонками, аналогично полю Здание
+//
+// Возвращаемое значение:
+// Структура - текущие данные. Содержит поля:
+// * Здания - ТаблицаЗначений с колонками:
+// ** Тип - Строка - тип внутреннего классифатора дополнительных адресных объектов. Например "Корпус"
+// ** Сокращение - Строка - сокращение названия для использования в представлении.
+// ** Значение - Строка - значение номера дома, квартиры и т.п
+// ** ПутьXPath - Строка - путь к значению объекта
+// * Помещения - ТаблицаЗначений с колонками, аналогично полю Здание
//
Функция ЗданияИПомещенияАдреса(XDTOАдрес, НовоеЗначение = Неопределено) Экспорт
@@ -974,8 +1059,8 @@
// Устанавливает значения полей населенного пункта в адресе
//
// Параметры:
-// XDTOАдрес - объект XDTO адреса РФ
-// КодКлассификатора - полный код, зависит от классификатора
+// XDTOАдрес - ОбъектXDTO - адрес РФ
+// КодКлассификатора - Число - полный код, зависит от классификатора
//
Процедура УстановитьНаселенныйПунктАдресаПоКоду(XDTOАдрес, КодКлассификатора) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -989,8 +1074,8 @@
// Устанавливает значения полей улицы
//
// Параметры:
-// XDTOАдрес - объект XDTO адреса РФ
-// КодКлассификатора - полный код, зависит от классификатора
+// XDTOАдрес - ОбъектXDTO - адрес РФ
+// КодКлассификатора - Число - полный код, зависит от классификатора
//
Процедура УстановитьУлицуАдресаПоКоду(XDTOАдрес, КодКлассификатора) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -1002,12 +1087,15 @@
// Нет подсистемы классификатора
КонецПроцедуры
-// Возвращает представление младший-старший для населенного пункта
+//Возвращает представление младший-старший для населенного пункта
//
// Параметры:
-// ОбъектАдреса - XDTO адрес РФ
+// ОбъектАдреса - ОбъектXDTO - адрес РФ
//
-Функция ПредставлениеНаселенногоПункта(ОбъектАдреса) Экспорт
+// Возвращаемое значение:
+// Строка - представление
+//
+Функция ПредставлениеНаселенногоПункта(ОбъектАдреса, ТолькоУровниКЛАДР = Истина) Экспорт
АдресРФ = РоссийскийАдрес(ОбъектАдреса);
Если АдресРФ = Неопределено Тогда
@@ -1026,19 +1114,31 @@
Район = "";;
КонецЕсли;
- Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(
+ Если ТолькоУровниКЛАДР Тогда
+ Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(
АдресРФ.НаселПункт, "",
АдресРФ.Город, "",
Район, "",
+ АдресРФ.СубъектРФ, "");
+ Иначе
+ Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(
+ АдресРФ.НаселПункт, "",
+ АдресРФ.ВнутригРайон, "",
+ АдресРФ.Город, "",
+ Район, "",
АдресРФ.Округ, "",
АдресРФ.СубъектРФ, "");
+ КонецЕсли;
-КонецФункции
+КонецФункции
// Возвращает представление младший-старший для населенного пункта
//
// Параметры:
-// ОбъектАдреса - XDTO адрес РФ
+// ОбъектАдреса - ОбъектXDTO - адрес РФ
+//
+// Возвращаемое значение:
+// Строка - представление
//
Функция ПредставлениеУлицы(ОбъектАдреса) Экспорт
@@ -1055,8 +1155,11 @@
// Возвращает представление адреса
//
// Параметры:
-// XDTOАдрес - объект XDTO адреса
-// ВидИнформации - ссылка на справочник вида КИ или структура
+// ОбъектАдреса - ОбъектXDTO - адрес
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание для формирования представления
+//
+// Возвращаемое значение:
+// Строка - представление
//
Функция ПредставлениеАдреса(XDTOАдрес, ВидИнформации) Экспорт
@@ -1070,12 +1173,12 @@
ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен();
АдресРФ = XDTOАдрес.Состав;
Страна = СокрЛП(XDTOАдрес.Страна);
-
Если ЭтоРоссийскийАдрес(АдресРФ) Тогда
// Это российский адрес, смотрим на настройки
Если Не ПараметрыФормирования.ВключатьСтрануВПредставление Тогда
Страна = "";
КонецЕсли;
+
// Значимые части
Представление = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(
ПочтовыйИндексАдреса(АдресРФ), "",
@@ -1086,6 +1189,7 @@
АдресРФ.ВнутригРайон, "",
АдресРФ.НаселПункт, "",
АдресРФ.Улица, "");
+
// Строения и помещения
НомерНеВыведен = Истина;
Данные = ЗданияИПомещенияАдреса(АдресРФ);
@@ -1095,22 +1199,22 @@
СокрЛП(Строка.Сокращение + ?(НомерНеВыведен, " № ", " ") + Строка.Значение), "");
НомерНеВыведен = Ложь;
КонецЦикла;
+
Для Каждого Строка Из Данные.Помещения Цикл
Представление = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(
Представление, "",
СокрЛП(Строка.Сокращение + " " + Строка.Значение), "");
КонецЦикла;
-
+
+ // При пустом представлении страну нет смысла выводить
+ Если ПустаяСтрока(Представление) Тогда
+ Страна = "";
+ КонецЕсли;
Иначе
- // Это иностранный адрес, страна в представление будет включена всегда.
+ // Это иностранный адрес
Представление = СокрЛП(АдресРФ);
КонецЕсли;
- // При пустом представлении страну нет смысла выводить
- Если ПустаяСтрока(Представление) Тогда
- Возврат "";
- КонецЕсли;
-
Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(Страна, "", Представление, "");
КонецФункции
@@ -1118,28 +1222,27 @@
//
// Параметры:
// XDTOАдрес - ОбъектXDTO, СписокЗначений, Строка - описание адреса
-// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на соответствующий вид контактной информации
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание соответствующего вида контактной информации
+// для получения флагов, влияющих на проверку: АдресТолькоРоссийский, ОбязательноеЗаполнение, ВключатьСтрануВПредставление.
+// Если не указан, то будут использованы установки по умолчанию - значение Ложь для всех флагов
// РезультатГруппами - Булево - если указана Истина, то будет возвращен массив групп ошибок, иначе - список значений.
//
// Возвращаемое значение:
-// Массив, СписокЗначений - в зависимости от параметра РезультатГруппами:
-// Если параметр РезультатГруппами равен Ложь, то возвращается СписокЗначений в котором
-// ** Представление - текст ошибки,
-// ** Значение - XPath ошибочного поля
-// Если параметр РезультатГруппами равен Истина, то возвращается массив, содержащий структуры с полями:
-// ** ТипОшибки - Строка - наименование группы (типа) ошибки. Возможные значения:
-// "ПредставлениеНеСоответствуетНаборуПолей"
-// "НеЗаполненыОбязательныеПоля"
-// "НеУказаныСокращенияПолей"
-// "НедопустимыеСимволыПолей"
-// "НеСоответствуетДлинаПолей"
-// "ОшибкиПоКлассификатору"
-// ** Сообщение - Строка - подробный текст ошибки
-// ** Поля - Массив - содержит структуры описания ошибочных полей. Каждая структура имеет реквизиты:
-// *** ИмяПоля - Строка - внутренний идентификатор ошибочного элемента адреса
-// *** Сообщение - Строка - подробный текст ошибки для этого поля
+// СписокЗначений - если параметр РезультатГруппами равен Ложь. Внутри представление - текст ошибки, значение - XPath ошибочного поля
+// Массив - если параметр РезультатГруппами равен Истина. Содержит структуры с полями:
+// ** ТипОшибки - Строка - наименование группы (типа) ошибки. Возможные значения:
+// "ПредставлениеНеСоответствуетНаборуПолей"
+// "НеЗаполненыОбязательныеПоля"
+// "НеУказаныСокращенияПолей"
+// "НедопустимыеСимволыПолей"
+// "НеСоответствуетДлинаПолей"
+// "ОшибкиПоКлассификатору"
+// ** Сообщение - Строка - подробный текст ошибки
+// ** Поля - Массив - содержит структуры описания ошибочных полей. Каждая структура имеет реквизиты:
+// *** ИмяПоля - Строка - внутренний идентификатор ошибочного элемента адреса
+// *** Сообщение - Строка - подробный текст ошибки для этого поля
//
-Функция ОшибкиЗаполненияАдреса(XDTOАдрес, ВидИнформации, РезультатГруппами = Ложь) Экспорт
+Функция ОшибкиЗаполненияАдреса(Знач XDTOАдрес, Знач ВидИнформации = Неопределено, Знач РезультатГруппами = Ложь) Экспорт
Если ТипЗнч(XDTOАдрес) = Тип("ОбъектXDTO") Тогда
АдресРФ = XDTOАдрес.Состав;
@@ -1149,16 +1252,44 @@
АдресРФ = ?(Адрес = Неопределено, Неопределено, Адрес.Состав);
КонецЕсли;
+ // Флаги проверки
+ Если ВидИнформации = Неопределено Тогда
+ // Проверка с установками по умолчанию
+ ФлагиПроверки = УправлениеКонтактнойИнформацией.СтруктураВидаКонтактнойИнформации();
+
+ ИначеЕсли ТипЗнч(ВидИнформации) = Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда
+ // Проверка с установками по виду
+ ФлагиПроверки = УправлениеКонтактнойИнформацией.СтруктураВидаКонтактнойИнформации(ВидИнформации);
+
+ Иначе
+ // Проверка по переданным флагам
+ ФлагиПроверки = ВидИнформации;
+
+ КонецЕсли;
+
ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен();
Если ТипЗнч(АдресРФ) <> Тип("ОбъектXDTO") Или АдресРФ.Тип() <> ФабрикаXDTO.Тип(ПространствоИмен, "АдресРФ") Тогда
// Адрес за пределами РФ
- Возврат ?(РезультатГруппами, Новый Массив, Новый СписокЗначений);
+ Результат = ?(РезультатГруппами, Новый Массив, Новый СписокЗначений);
+
+ Если ФлагиПроверки.АдресТолькоРоссийский Тогда
+ ТекстОшибки = НСтр("ru = 'Адрес должен быть только российским.'");
+ Если РезультатГруппами Тогда
+ Результат.Добавить(Новый Структура("Поля, ТипОшибки, Сообщение", Новый Массив,
+ "НеЗаполненыОбязательныеПоля", ТекстОшибки
+ ));
+ Иначе
+ Результат.Добавить("/", ТекстОшибки);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Результат;
КонецЕсли;
// Отдельно проверяем пустой адрес, если необходимо его заполнение
Если Не XDTOКонтактнаяИнформацияЗаполнена(АдресРФ) Тогда
// Адрес пуст
- Если ВидИнформации.ОбязательноеЗаполнение Тогда
+ Если ФлагиПроверки.ОбязательноеЗаполнение Тогда
// Но должен быть заполнен
ТекстОшибки = НСтр("ru = 'Адрес не заполнен.'");
@@ -1179,7 +1310,7 @@
Возврат ?(РезультатГруппами, Новый Массив, Новый СписокЗначений);
КонецЕсли;
- ВсеОшибки = ОбщиеГруппыОшибокЗаполненияАдреса(АдресРФ, ВидИнформации);
+ ВсеОшибки = ОбщиеГруппыОшибокЗаполненияАдреса(АдресРФ, ФлагиПроверки);
ПроверятьКлассификатор = Истина;
Для Каждого Группа Из ВсеОшибки Цикл
@@ -1256,26 +1387,28 @@
// Общие проверки на корректность адреса
//
// Параметры:
-// ДанныеАдреса - строка, список значений, XML, XDTO с данными адреса РФ
-// ВидИнформации - ссылка на справочник ВидыКонтакнойИнформации
+// ДанныеАдреса - Строка, СписокЗначений - XML, XDTO с данными адреса РФ
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - ссылка на соответствующий вид контактной информации
//
-// Возвращает массив, содержащий структуры с полями:
-// - ТипОшибки - идентификатор группы ошибки. Может принимать значение:
-// "ПредставлениеНеСоответствуетНаборуПолей",
-// "НеЗаполненыОбязательныеПоля"
-// "НеУказаныСокращенияПолей"
-// "НедопустимыеСимволыПолей"
-// "НеСоответствуетДлинаПолей"
-// - Сообщение - Подробный текст ошибки
-// - Поля - массив структур с полями:
-// - ИмяПоля - внутренний идентификатор ошибочного поля
-// - Сообщение - подробный текст ошибки для поля
+// Возвращаемое значение:
+// Массив - содержит структуры с полями:
+// * ТипОшибки - Строка - идентификатор группы ошибки. Может принимать значение:
+// "ПредставлениеНеСоответствуетНаборуПолей",
+// "НеЗаполненыОбязательныеПоля"
+// "НеУказаныСокращенияПолей"
+// "НедопустимыеСимволыПолей"
+// "НеСоответствуетДлинаПолей"
+// * Сообщение - Строка - Подробный текст ошибки
+// * Поля - Массив структур с полями:
+// ** ИмяПоля - внутренний идентификатор ошибочного поля
+// ** Сообщение - подробный текст ошибки для поля
//
-Функция ОбщиеГруппыОшибокЗаполненияАдреса(ДанныеАдреса, ВидИнформации) Экспорт
+Функция ОбщиеГруппыОшибокЗаполненияАдреса(Знач ДанныеАдреса, Знач ВидИнформации) Экспорт
Результат = Новый Массив;
Если ТипЗнч(ДанныеАдреса) = Тип("ОбъектXDTO") Тогда
АдресРФ = ДанныеАдреса;
+
Иначе
XTDOКонтактная = ДесериализацияАдреса(ДанныеАдреса);
Адрес = XTDOКонтактная.Состав;
@@ -1292,7 +1425,7 @@
ДобавитьОшибкуЗаполненияАдреса(Результат[0], "",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Представление адреса для вида контактной информации ""%1"" отличается от данных в адресе.'"),
- Строка(ВидИнформации)));
+ Строка(ВидИнформации.Наименование)));
КонецЕсли;
КонецЕсли;
@@ -1339,20 +1472,26 @@
Если ЗданиеНеУказано Тогда
ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля,
КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации("Дом"),
- НСтр("ru = 'Не указан дом или корпус.'"), "Дом");
+ НСтр("ru = 'Не указан дом или корпус'"),
+ НСтр("ru = 'Дом'")
+ );
КонецЕсли;
Иначе
// Должен быть указан дом (владение и т.п) с возможным уточнением корпусом, строением и т.п.
- ДанныеДома = ЗданияПомещения.Здания.Найти(1, "Вид"); // 1 - вид по признаку владения
+ ДанныеДома = ЗданияПомещения.Здания.Найти(1, "Вид"); // 1 - вид по признаку владения
Если ДанныеДома = Неопределено Тогда
ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля,
КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации("Дом"),
- НСтр("ru = 'Не указан дом или владение.'"), "Дом");
+ НСтр("ru = 'Не указан дом или владение (домовладение).'"),
+ НСтр("ru = 'Дом'")
+ );
ИначеЕсли ПустаяСтрока(ДанныеДома.Значение) Тогда
ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, ДанныеДома.ПутьXPath,
- НСтр("ru = 'Не заполнено значение дома или владения.'"), "Дом");
+ НСтр("ru = 'Не заполнено значение дома или владения (домовладения).'"),
+ НСтр("ru = 'Дом'")
+ );
КонецЕсли;
КонецЕсли;
@@ -1371,19 +1510,19 @@
ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, "СубъектРФ",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не указано сокращение в названии региона ""%1"".'"), Регион
- ), "Регион");
+ ), НСтр("ru = 'Регион'"));
КонецЕсли;
Если СтрДлина(Регион) > 50 Тогда
ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Название региона ""%1"" должно быть короче 50 символов.'"), Регион
- ), "Регион");
+ ), НСтр("ru = 'Регион'"));
КонецЕсли;
Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Регион, Ложь, ДопустимоКромеКириллицы) Тогда
ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В названии региона ""%1"" есть не кириллические символы.'"), Регион
- ), "Регион");
+ ), НСтр("ru = 'Регион'"));
КонецЕсли
КонецЕсли;
@@ -1395,19 +1534,19 @@
ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не указано сокращение в названии района ""%1""'."), Район
- ), "Район");
+ ), НСтр("ru = 'Район'"));
КонецЕсли;
Если СтрДлина(Район) > 50 Тогда
ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Название района ""%1"" должно быть короче 50 символов.'"), Район
- ), "Район");
+ ), НСтр("ru = 'Район'"));
КонецЕсли;
Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Район, Ложь, ДопустимоКромеКириллицы) Тогда
ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В названии района ""%1"" есть не кириллические символы.'"), Район
- ), "Район");
+ ), НСтр("ru = 'Район'"));
КонецЕсли;
КонецЕсли;
@@ -1419,19 +1558,19 @@
ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не указано сокращение в названии города ""%1"".'"), Город
- ), "Город");
+ ), НСтр("ru = 'Город'"));
КонецЕсли;
Если СтрДлина(Город) > 50 Тогда
ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Название города ""%1"" должно быть короче 50 символов.'"), Город
- ), "Город");
+ ), НСтр("ru = 'Город'"));
КонецЕсли;
Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Город, Ложь, ДопустимоКромеКириллицы) Тогда
ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В названии города ""%1"" есть не кириллические символы.'"), Город
- ), "Город");
+ ), НСтр("ru = 'Город'"));
КонецЕсли;
КонецЕсли;
@@ -1467,19 +1606,19 @@
ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не указано сокращение в названии улицы ""%1"".'"), Улица
- ), "Улица");
+ ), НСтр("ru = 'Улица'"));
КонецЕсли;
Если СтрДлина(Район) > 50 Тогда
ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Название улицы ""%1"" должно быть короче 50 символов.'"), Улица
- ), "Улица");
+ ), НСтр("ru = 'Улица'"));
КонецЕсли;
Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Улица, Ложь, ДопустимоКромеКириллицы) Тогда
ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В названии улицы ""%1"" есть не кириллические символы.'"), Улица
- ), "Улица");
+ ), НСтр("ru = 'Улица'"));
КонецЕсли;
КонецЕсли;
@@ -1488,7 +1627,9 @@
Поле = КонтактнаяИнформацияКлиентСерверПовтИсп.XPathПочтовогоИндекса();
Если СтрДлина(Индекс) <> 6 Или Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Индекс) Тогда
ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле,
- НСтр("ru = 'Почтовый индекс должен состоять из 6 цифр.'"), "Индекс");
+ НСтр("ru = 'Почтовый индекс должен состоять из 6 цифр.'"),
+ НСтр("ru = 'Индекс'")
+ );
КонецЕсли;
КонецЕсли;
@@ -1515,10 +1656,12 @@
Если НазванияГородовФедеральногоЗначения().Найти(ВРег(Регион)) = Неопределено Тогда
ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "Город",
НСтр("ru = 'Город может быть не указан только в регионе - городе федерального значения.'"),
- "Город");
+ НСтр("ru = 'Город'")
+ );
ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "НаселПункт",
НСтр("ru = 'Населенный пункт может быть не указан только в регионе - городе федерального значения.'"),
- "Населенный пункт");
+ НСтр("ru = 'Населенный пункт'")
+ );
КонецЕсли;
КонецЕсли;
@@ -1527,7 +1670,9 @@
Если ПустаяСтрока(НаселенныйПункт) И ПустаяСтрока(Улица) Тогда
ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "Улица",
- НСтр("ru = 'Если неопределен населенный пункт, то должна быть указана улица.'"), "Улица");
+ НСтр("ru = 'Если неопределен населенный пункт, то должна быть указана улица.'"),
+ НСтр("ru = 'Улица'")
+ );
КонецЕсли;
КонецЕсли;
@@ -1588,8 +1733,8 @@
Результат = Новый Массив;
Результат.Добавить("МОСКВА Г");
Результат.Добавить("САНКТ-ПЕТЕРБУРГ Г");
- Результат.Добавить("БАЙКОНУР Г");
Результат.Добавить("СЕВАСТОПОЛЬ Г");
+ Результат.Добавить("БАЙКОНУР Г");
Возврат Результат;
КонецФункции
@@ -1597,8 +1742,11 @@
// Возвращает представление телефона
//
// Параметры:
-// XDTOДанные - объект XDTO номера телефона
-// ВидИнформации - необязательная ссылка на справочник вида КИ
+// XDTOДанные - ОбъектXDTO - контактная информация
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на соответствующий вид контактной информации
+//
+// Возвращаемое значение:
+// Строка - представление
//
Функция ПредставлениеТелефона(XDTOДанные, ВидИнформации = Неопределено) Экспорт
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СформироватьПредставлениеТелефона(
@@ -1612,8 +1760,11 @@
// Возвращает представление факса
//
// Параметры:
-// XDTOДанные - объект XDTO номера телефона
-// ВидИнформации - необязательная ссылка на справочник вида КИ
+// XDTOДанные - ОбъектXDTO - контактная информация
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на соответствующий вид контактной информации
+//
+// Возвращаемое значение:
+// Строка - представление
//
Функция ПредставлениеФакса(XDTOДанные, ВидИнформации = Неопределено) Экспорт
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СформироватьПредставлениеТелефона(
@@ -1625,6 +1776,10 @@
КонецФункции
// Возвращает флаг того, что текущий пользователь может загружать или очищать адресный классификатор
+//
+// Возвращаемое значение:
+// Булево- результат проверки
+//
Функция ЕстьВозможностьИзмененияАдресногоКлассификатора() Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -1641,12 +1796,17 @@
// Совместимость
//
-// Возвращает структуру ("Представление", "ЗначенияПолей"), заполненную строкой и списком
+// Возвращает структуру заполненную строкой и списком
//
// Параметры:
-// XDTOКонтактнаяИнформация - XDTO контактной информации или строка XML
-// СтарыйСоставПолей - булево - необязательный флаг того, что из состава полей будут исключены
-// поля, отсутствующие в версиях БСП младше 2.1.3
+// XDTOКонтактнаяИнформация - ОбъектXDTO, Строка - контактная информация или строка XML
+// СтарыйСоставПолей - Булево - необязательный флаг того, что из состава полей будут исключены
+// поля, отсутствующие в версиях БСП младше 2.1.3
+//
+// Возвращаемое значение:
+// Структура - данные. Содержит поля:
+// * Представление - Строка - представление адреса
+// * ЗначенияПолей - СписокЗначений - значения
//
Функция КонтактнаяИнформацияВСтаруюСтруктуру(XDTOКонтактнаяИнформация, СтарыйСоставПолей = Ложь) Экспорт
@@ -1682,11 +1842,12 @@
// Преобразует адрес формата XDTO в старый список полей типа СписокЗначений
//
// Параметры:
-// XDTOАдрес - XDTOОбъект типа Адрес или АдресРФ, источник данных
-// РасширенныйСоставПолей - Необязательный флаг того, что состав полей будет сокращен для совместимости
-// с обменом БСП 2.1.2
+// XDTOАдрес - ОбъектXDTO, Строка - контактная информация или строка XML
+// РасширенныйСоставПолей - Булево - необязательный флаг того, что состав полей будет сокращен для совместимости
+// с обменом БСП 2.1.2
//
-// Возвращаемый результат - список значений
+// Возвращаемое значение:
+// СписокЗначений
//
Функция АдресВСтарыйСписокПолей(XDTOАдрес, РасширенныйСоставПолей = Истина) Экспорт
Список = Новый СписокЗначений;
@@ -1883,7 +2044,6 @@
СтрокаПодобия = ЗамаскироватьСпецсимволы(Текст);
Запрос.УстановитьПараметр("НачалоТекста", СтрокаПодобия + "%");
- Запрос.УстановитьПараметр("НачалоСлова", "% " + СтрокаПодобия + "%");
Выборка = Запрос.Выполнить().Выбрать();
@@ -2208,15 +2368,19 @@
// Первый уровень - внутренние идентификаторы
Результат = Новый Структура;
- Результат.Вставить("Регион", ЭлементАдреснойСтруктуры(НСтр("ru = 'Регион'"), "СубъектРФ") );
- Результат.Вставить("Район", ЭлементАдреснойСтруктуры(НСтр("ru = 'Район'"), "СвРайМО/Район") );
- Результат.Вставить("Город", ЭлементАдреснойСтруктуры(НСтр("ru = 'Город'"), "Город") );
- Результат.Вставить("НаселенныйПункт", ЭлементАдреснойСтруктуры(НСтр("ru = 'Нас.пункт'"), "НаселПункт", ,Истина));
+ Результат.Вставить("Регион", ЭлементАдреснойСтруктуры(НСтр("ru = 'Регион'"), "СубъектРФ") );
+ Результат.Вставить("Округ", ЭлементАдреснойСтруктуры(НСтр("ru = 'Округ'"), "Округ",,, Истина) );
+ Результат.Вставить("Район", ЭлементАдреснойСтруктуры(НСтр("ru = 'Район'"), "СвРайМО/Район") );
+ Результат.Вставить("Город", ЭлементАдреснойСтруктуры(НСтр("ru = 'Город'"), "Город") );
+ Результат.Вставить("ВнутригРайон", ЭлементАдреснойСтруктуры(НСтр("ru = 'Внутр. р-н.'"), "ВнутригРайон",,, Истина));
+ Результат.Вставить("НаселенныйПункт", ЭлементАдреснойСтруктуры(НСтр("ru = 'Нас.пункт'"), "НаселПункт",, Истина));
// Подсказки для интерфейса
Результат.Регион.Вставить("Подсказка", НСтр("ru = 'Регион адреса'"));
+ Результат.Округ.Вставить("Подсказка", НСтр("ru = 'Округ адреса (только просмотр)'"));
Результат.Район.Вставить("Подсказка", НСтр("ru = 'Район адреса'"));
Результат.Город.Вставить("Подсказка", НСтр("ru = 'Город адреса'"));
+ Результат.ВнутригРайон.Вставить("Подсказка", НСтр("ru = 'Внутригородской район адреса (только просмотр)'"));
Результат.НаселенныйПункт.Вставить("Подсказка", НСтр("ru = 'Населенный пункт адреса'"));
Если Код = Неопределено Тогда
@@ -2706,9 +2870,18 @@
КонецФункции
// Конструктор внутренней структуры элемента адреса
-Функция ЭлементАдреснойСтруктуры(Заголовок, ПутьXPath, Значение = Неопределено, Предопределенный = Ложь)
- Возврат Новый Структура("Заголовок, ПутьXPath, Значение, Предопределенный, Наименование, Сокращение, КодКлассификатора",
- Заголовок, ПутьXPath, Значение, Предопределенный);
+Функция ЭлементАдреснойСтруктуры(Заголовок, ПутьXPath, Значение = Неопределено, Предопределенный = Ложь, ТолькоПросмотр = Ложь)
+ СтруктураАдреса = Новый Структура();
+ СтруктураАдреса.Вставить("Заголовок", Заголовок);
+ СтруктураАдреса.Вставить("ПутьXPath", ПутьXPath);
+ СтруктураАдреса.Вставить("Значение", Значение);
+ СтруктураАдреса.Вставить("Предопределенный", Предопределенный);
+ СтруктураАдреса.Вставить("Наименование");
+ СтруктураАдреса.Вставить("Сокращение");
+ СтруктураАдреса.Вставить("КодКлассификатора");
+ СтруктураАдреса.Вставить("ТолькоПросмотр", ТолькоПросмотр);
+
+ Возврат СтруктураАдреса;
КонецФункции
// Возвращает строку для поиска в операторе ПОДОБНО
@@ -3084,11 +3257,12 @@
Адрес = Результат.Состав;
МодульКЛАДР = СерверныйМодульКЛАДР();
- Запрос = МодульКЛАДР.ЗапросДесериализацияАдресаПоПредставлениюКЛАДР("Справочник.СтраныМира");
+ Запрос = МодульКЛАДР.ЗапросДесериализацияАдресаПоПредставлениюКЛАДР();
НаименованиеРоссии = СокрЛП(Справочники.СтраныМира.Россия.Наименование);
Классификатор = Справочники.СтраныМира.ТаблицаКлассификатора();
+
Запрос.УстановитьПараметр("СтраныКлассификатора", Классификатор.ВыгрузитьКолонку("Наименование") );
Запрос.УстановитьПараметр("ДанныеАдреса", ДанныеАнализа);
Запрос.УстановитьПараметр("НаименованиеРоссии", НаименованиеРоссии);
diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/Module.bsl
index 35a408dd3..2360e5984 100644
--- a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/Module.bsl
@@ -8,8 +8,11 @@
// Разбирает представление контактной информации и возвращает строку XML со значениями полей
//
// Параметры:
-// Текст - строка XML
-// ОжидаемыйТип - ссылка на вид КИ или перечисление типа КИ для контроля типов
+// Текст - Строка - XML
+// ОжидаемыйТип - СправочникСсылка.ВидыКонтакнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации - для контроля типов
+//
+// Возвращаемое значение:
+// Строка - XML
//
Функция ПарсингКонтактнойИнформацииXML(Знач Текст, Знач ОжидаемыйВид) Экспорт
Возврат КонтактнаяИнформацияСлужебный.ПарсингКонтактнойИнформацииXML(Текст, ОжидаемыйВид);
@@ -18,8 +21,10 @@
// Возвращает значение перечисления тип вида контактной информации
//
// Параметры:
-// ВидИнформации - перечисление типа, ссылка на справочник ВидыКонтактнойИнформации или объект
-// с полем "Тип"
+// ВидИнформации - СправочникСсылка.ВидыКонтакнойИнформации, Структура - исходные данные
+//
+// Возвращаемое значение:
+// ПеречислениеСсылка.ТипыКонтактнойИнфомарции - значение поля "Тип"
//
Функция ТипВидаКонтактнойИнформации(Знач ВидИнформации) Экспорт
Возврат УправлениеКонтактнойИнформацией.ТипВидаКонтактнойИнформации(ВидИнформации);
@@ -28,9 +33,11 @@
// Возвращает строку состава из значения контактной информации.
//
// Параметры:
-// XMLДанные - строка XML данных контакной информации
+// XMLДанные - Строка - XML данных контакной информации
//
-// Если значение состава сложного типа, то возвращает Неопределено
+// Возвращаемое значение:
+// Строка - содержимое
+// Неопределено - если значение состава сложного типа
//
Функция СтрокаСоставаКонтактнойИнформации(Знач XMLДанные) Экспорт;
Возврат КонтактнаяИнформацияXML.СтрокаСоставаКонтактнойИнформации(XMLДанные);
diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/Module.bsl
index 04d4fdb0a..87cb36c90 100644
--- a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/Module.bsl
@@ -4,7 +4,6 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
-//
// Возвращает имя события для регистрации в журнале событий контактной информации
//
@@ -17,9 +16,10 @@
// Поставщики преобразований
//
-// Преобразует список значений, оставляя из него только последние значения пар ключ-значение
+// Преобразование для списка значений, оставляя из него только последние значения пар ключ-значение
//
-// Результат преобразования - строка XML сериализованного списка значений
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_УникальныеПоПредставлениюВСписке() Экспорт
@@ -49,14 +49,10 @@
Возврат Преобразователь;
Конецфункции
-// Производит проверку двух строк XML - параметра и текущего
+// Преобразование для сравнения двух строк XML
//
-// Результат преобразования - сериализованный ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки:
-// - Путь - строка - путь к месту различия
-// - Значение1 - строка - значение в XML из параметра Текст1
-// - Значение2 - строка - значение в XML из параметра Текст2
-//
-// Проверяем только строки и атрибуты, без пробельных, CDATA и т.п. Порядок важен.
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_ТаблицаЗначенийРазличияXML() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -237,11 +233,12 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML.
+// Преобразование для текста с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML.
// В случае повторных ключей все включаются в результат, но при десериализации будет использован
// последний (особенность работы сериализатора платформы)
//
-// Результат преобразования - строка XML сериализованной структуры
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_СтрокаКлючЗначениеВСтруктуру() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -299,10 +296,11 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML.
+// Преобразование для текста с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML.
// В случае повторных ключей все включаются в результат
//
-// Результат преобразования - строка XML сериализованного списка значений
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_СтрокаКлючЗначениеВСписокЗначений() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -359,9 +357,10 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует список значений в строку пар ключ=значение, разделенных переносом строки
+// Преобразование для списка значений в строку пар ключ=значение, разделенных переносом строки
//
-// Результат преобразования - строка результата
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_СписокЗначенийВСтрокуКлючЗначение() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -401,9 +400,10 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует структуру в строку пар ключ=значение, разделенных переносом строки
+// Преобразование для структуры в строку пар ключ=значение, разделенных переносом строки
//
-// Результат преобразования - строка результата
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_СтруктураВСтрокуКлючЗначение() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -440,9 +440,10 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует список значений в структуру. Представление преобразуется в ключ
+// Преобразование для списка значений в структуру. Представление преобразуется в ключ
//
-// Результат преобразования - сериализованная структура
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_СписокЗначенийВСтруктуру() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -484,9 +485,10 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует структуру в список значений. Ключ преобразуется в представление.
+// Преобразование для структуры в список значений. Ключ преобразуется в представление.
//
-// Результат преобразования - сериализованный список значений
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_СтруктураВСписокЗначений() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -522,9 +524,10 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует соответствие в структуру. Ключ преобразуется в ключ, значение - в значение
+// Преобразование для соответствия в структуру. Ключ преобразуется в ключ, значение - в значение
//
-// Результат преобразования - сериализованная структура
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_СоответствиеВСтруктуру() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -568,6 +571,9 @@
// Убирает описание для включения внутрь другого XML
//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_УдалитьОписаниеXML() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
Преобразователь.ЗагрузитьИзСтроки("
@@ -583,9 +589,10 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует контактную информацию в виде XML (см пакет XDTO КонтактнаяИнформация) в перечисление ТипКонтакнойИнформации
+// Преобразование для контактной информации в виде XML (см пакет XDTO КонтактнаяИнформация) в перечисление ТипКонтакнойИнформации
//
-// Результат преобразования - сериализованное значение перечисления
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_ТипКонтактнойИнформацииПоСтрокеXML() Экспорт
Преобразователь = Новый ПреобразованиеXSL;
@@ -633,16 +640,13 @@
Возврат Преобразователь;
КонецФункции
-// Преобразует таблицу различий XML в зависимости от типа контактной информации
+// Преобразование для таблицы различий XML в зависимости от типа контактной информации
//
// Параметры:
-// ТипКонтактнойИнформации - значение или имя перечисления
+// ТипКонтактнойИнформации - Строка, ПеречислениеСсылка.ТипыКонтактнойИнформации - имя или значение перечисления
//
-// Результат преобразования - сериализованный ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки:
-// - Путь - строка - путь к месту различия
-// - Описание - строка - описание отличающегося реквизита в терминах предметной области
-// - Значение1 - строка - значение из первого XML
-// - Значение2 - строка - значение из второго XML
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
//
Функция XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации(Знач ТипКонтактнойИнформации) Экспорт
@@ -689,6 +693,9 @@
// Преобразует сериализованную структуру в контактную информацию в виде XML
//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_СтруктураВАдрес() Экспорт
КодыДопАдрЭл = Новый ТекстовыйДокумент;
@@ -908,12 +915,18 @@
// Преобразует сериализованную структуру в контактную информацию в виде XML
//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_СтруктураВАдресЭлектроннойПочты() Экспорт
Возврат XSLT_СтруктураВСтроковыйСостав("ЭлектроннаяПочта");
КонецФункции
// Преобразует сериализованную структуру в контактную информацию в виде XML
//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_СтруктураВВебСтраницу() Экспорт
Возврат XSLT_СтруктураВСтроковыйСостав("ВебСайт");
КонецФункции
@@ -926,17 +939,27 @@
// Преобразует сериализованную структуру в контактную информацию в виде XML
//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_СтруктураВФакс() Экспорт
Возврат XSLT_СтруктураВТелефонФакс("НомерФакса");
КонецФункции
// Преобразует сериализованную структуру в контактную информацию в виде XML
//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_СтруктураВДругое() Экспорт
Возврат XSLT_СтруктураВСтроковыйСостав("Прочее");
КонецФункции
// Общее преобразование сериализованной структуры в контактную информацию в виде XML простого типа
+//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_СтруктураВСтроковыйСостав(Знач ИмяXDTOТипа)
Преобразователь = Новый ПреобразованиеXSL;
Преобразователь.ЗагрузитьИзСтроки("
@@ -981,6 +1004,10 @@
КонецФункции
// Общее преобразование для телефона и факса
+//
+// Возвращаемое значение:
+// ПреобразованиеXSL - подготовленный объект
+//
Функция XSLT_СтруктураВТелефонФакс(Знач ИмяXDTOТипа) Экспорт
Преобразователь = Новый ПреобразованиеXSL;
Преобразователь.ЗагрузитьИзСтроки("
@@ -1030,6 +1057,10 @@
//
// Фрагмент XSL с процедурами для обработки строк
+//
+// Возвращаемое значение:
+// Строка - фрагмент XML для использования в преобразовании
+//
Функция XSLT_ШаблоныСтроковыхФункций()
Возврат "
|
@@ -1115,6 +1146,10 @@
КонецФункции
// Фрагмент XSL с процедурами для работы с xpath
+//
+// Возвращаемое значение:
+// Строка - фрагмент XML для использования в преобразовании
+//
Функция XSLT_ШаблоныФункцийXPath()
Возврат "
|
diff --git a/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl
index e3908a171..c0b7cf054 100644
--- a/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl
+++ b/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl
@@ -59,12 +59,13 @@
Процедура ОбновитьКурсыВалют() Экспорт
Запрос = Новый Запрос;
- Запрос.Текст = "ВЫБРАТЬ
- | Валюты.Код
- |ИЗ
- | Справочник.Валюты КАК Валюты
- |ГДЕ
- | Валюты.ЗагружаетсяИзИнтернета = ИСТИНА";
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | Валюты.Код
+ |ИЗ
+ | Справочник.Валюты КАК Валюты
+ |ГДЕ
+ | Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)";
Выборка = Запрос.Выполнить().Выбрать();
//Копируем курсы. Это необходимо делать синхронно, т.к. за вызовом ОбновитьКурсыВалют
@@ -172,18 +173,16 @@
Перем Запрос, Выборка, НаборЗаписей, Запись;
Перем КлассификаторXML, КлассификаторТаблица, Валюта, НайденнаяСтрока;
- // Проставляем флаг "ЗагружаетсяИзИнтернета"
-
КлассификаторXML = Справочники.Валюты.ПолучитьМакет("ОбщероссийскийКлассификаторВалют").ПолучитьТекст();
КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторXML).Данные;
КлассификаторТаблица.Индексы.Добавить("Code");
Выборка = Справочники.Валюты.Выбрать();
Пока Выборка.Следующий() Цикл
- Валюта = Выборка.ПолучитьОбъект();
+ Валюта = Выборка.ПолучитьОбъект();
НайденнаяСтрока = КлассификаторТаблица.Найти(Валюта.Код, "Code");
Если НайденнаяСтрока <> Неопределено И НайденнаяСтрока.RBCLoading = "истина" Тогда
- Валюта.ЗагружаетсяИзИнтернета = Истина;
+ Валюта.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Валюта);
КонецЕсли;
КонецЦикла;
@@ -467,13 +466,15 @@
ОбщегоНазначения.УстановитьРазделениеСеанса(Истина, ОбластьДанных);
ЗапросВалюты = Новый Запрос;
- ЗапросВалюты.Текст = "ВЫБРАТЬ
- | Валюты.Ссылка,
- | Валюты.Код
- |ИЗ
- | Справочник.Валюты КАК Валюты
- |ГДЕ
- | Валюты.ЗагружаетсяИзИнтернета = ИСТИНА";
+ ЗапросВалюты.Текст =
+ "ВЫБРАТЬ
+ | Валюты.Ссылка,
+ | Валюты.Код
+ |ИЗ
+ | Справочник.Валюты КАК Валюты
+ |ГДЕ
+ | Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)";
+
ВыборкаВалюты = ЗапросВалюты.Выполнить().Выбрать();
НачатьТранзакцию();
Пока ВыборкаВалюты.Следующий() Цикл
@@ -508,13 +509,13 @@
КонецПроцедуры
-// Вызывается при изменении реквизита ЗагружаетсяИзИнтернета
+// Вызывается при изменении способа установки курса валюты.
//
// Валюта - СправочникСсылка.Валюты
//
Процедура ЗапланироватьКопированиеКурсовВалюты(Знач Валюта) Экспорт
- Если Не Валюта.ЗагружаетсяИзИнтернета Тогда
+ Если Валюта.СпособУстановкиКурса <> Перечисления.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета Тогда
Возврат;
КонецЕсли;
@@ -530,7 +531,7 @@
КонецПроцедуры
-// Вызывается после загрузки данных в область или при установке флажка ЗагружаетсяИзИнтернета
+// Вызывается после загрузки данных в область или при изменении способа установки курса валюты.
// Копирует курсы одной валюты за все даты из
// неразделенного xml файла в разделенный регистр
//
diff --git a/SSL/src/CommonModules/НапоминанияПользователяКлиентСерверПереопределяемый/Module.bsl b/SSL/src/CommonModules/НапоминанияПользователяКлиентСерверПереопределяемый/Module.bsl
index c5df76f68..a45be2c29 100644
--- a/SSL/src/CommonModules/НапоминанияПользователяКлиентСерверПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/НапоминанияПользователяКлиентСерверПереопределяемый/Module.bsl
@@ -9,9 +9,9 @@
// Например, можно скрыть те реквизиты с датами, которые являются служебными или не имеют смысла для
// установки напоминаний: дата документа или задачи и прочие.
//
-// Параметры
-// Источник - Любая ссылка - Ссылка на объект, для которого формируется массив реквизитов с датами
-// МассивРеквизитов - Массив - Массив имен реквизитов (из метаданных), содержащих даты
+// Параметры:
+// Источник - ЛюбаяСсылка - ссылка на объект, для которого формируется массив реквизитов с датами;
+// МассивРеквизитов - Массив - имена реквизитов (из метаданных), содержащих даты.
//
Процедура ПриЗаполненииСпискаРеквизитовИсточникаСДатамиДляНапоминания(Источник, МассивРеквизитов) Экспорт
@@ -21,8 +21,8 @@
//
// Параметры:
// Расписания - Соответствие:
-// Ключ - Строка - представление расписания;
-// Значение - РасписаниеРегламентногоЗадания - вариант расписания.
+// * Ключ - Строка - представление расписания;
+// * Значение - РасписаниеРегламентногоЗадания - вариант расписания.
Процедура ПриПолученииСтандартныхРасписанийДляНапоминания(Расписания) Экспорт
КонецПроцедуры
diff --git a/SSL/src/CommonModules/НастройкаПорядкаЭлементов/Module.bsl b/SSL/src/CommonModules/НастройкаПорядкаЭлементов/Module.bsl
index bf5409974..f1d787c64 100644
--- a/SSL/src/CommonModules/НастройкаПорядкаЭлементов/Module.bsl
+++ b/SSL/src/CommonModules/НастройкаПорядкаЭлементов/Module.bsl
@@ -27,6 +27,11 @@
Возврат;
КонецЕсли;
+ // При переносе элемента в другую группу порядок переназначается.
+ Если Информация.ЕстьРодитель И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.Ссылка, "Родитель") <> Источник.Родитель Тогда
+ Источник.РеквизитДопУпорядочивания = 0;
+ КонецЕсли;
+
// Вычислим новое значение для порядка элемента
Если Источник.РеквизитДопУпорядочивания = 0 Тогда
Источник.РеквизитДопУпорядочивания =
diff --git a/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный.mdo b/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный.mdo
index cf73b709d..5429f7ed4 100644
--- a/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный.mdo
+++ b/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальный.mdo
@@ -1,5 +1,5 @@
-
+НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальныйru
diff --git a/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент.mdo b/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент.mdo
index 43495f242..c9d9f2f67 100644
--- a/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент.mdo
+++ b/SSL/src/CommonModules/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент/НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент.mdo
@@ -1,5 +1,5 @@
-
+НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиентru
diff --git a/SSL/src/CommonModules/НастройкиПользователейКлиент/Module.bsl b/SSL/src/CommonModules/НастройкиПользователейКлиент/Module.bsl
deleted file mode 100644
index c0431d92b..000000000
--- a/SSL/src/CommonModules/НастройкиПользователейКлиент/Module.bsl
+++ /dev/null
@@ -1,185 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-// Подсистема "Пользователи"
-// Клиентские процедуры и функции обработки "НастройкиПользователей"
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#Область СлужебныеПроцедурыИФункции
-
-// Предназначена для открытия переданного отчета или формы
-//
-// Параметры:
-// ТекущийЭлемент - ТаблицаФормы - выделенная строка дерева значений.
-// Пользователь - Строка - имя пользователя информационной базы,
-// ТекущийПользователь - Строка - имя пользователя информационной базы, для открытия формы
-// должен совпадать значением параметра "Пользователь".
-// ИмяФормыПерсональныхНастроек - Строка - путь для открытия формы персональных настроек
-// вида "ОбщаяФорма.НазваниеФормы"
-Процедура ОткрытьОтчетИлиФорму(ТекущийЭлемент, Пользователь, ТекущийПользователь, ИмяФормыПерсональныхНастроек) Экспорт
-
- ЭлементДереваЗначений = ТекущийЭлемент;
- Если ЭлементДереваЗначений.ТекущиеДанные = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- Если Пользователь <> ТекущийПользователь Тогда
- ТекстПредупреждения = НСтр("ru = 'Для просмотра настроек другого пользователя необходимо запустить программу от его имени
- |и открыть нужный отчет или форму.'");
- ПоказатьПредупреждение(,ТекстПредупреждения);
- Возврат;
- КонецЕсли;
-
- Если ЭлементДереваЗначений.Имя = "НастройкиОтчетовДерево" Тогда
-
- КлючОбъекта = ЭлементДереваЗначений.ТекущиеДанные.Ключи[0].Значение;
- КлючОбъектаМассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КлючОбъекта, "/");
- КлючВарианта = КлючОбъектаМассивСтрок[1];
- ПараметрыОтчета = Новый Структура("КлючВарианта, КлючПользовательскихНастроек", КлючВарианта, "");
-
- Если ЭлементДереваЗначений.ТекущиеДанные.Тип = "НастройкаОтчета" Тогда
- КлючПользовательскихНастроек = ЭлементДереваЗначений.ТекущиеДанные.Ключи[0].Представление;
- ПараметрыОтчета.Вставить("КлючПользовательскихНастроек", КлючПользовательскихНастроек);
- КонецЕсли;
-
- ОткрытьФорму(КлючОбъектаМассивСтрок[0] + ".Форма", ПараметрыОтчета);
- Возврат;
-
- ИначеЕсли ЭлементДереваЗначений.Имя = "ВнешнийВид" Тогда
-
- Для Каждого КлючОбъекта Из ЭлементДереваЗначений.ТекущиеДанные.Ключи Цикл
-
- Если КлючОбъекта.Пометка = Истина Тогда
-
- ОткрытьФорму(КлючОбъекта.Значение);
- Возврат;
- Иначе
- РодительЭлемента = ЭлементДереваЗначений.ТекущиеДанные.ПолучитьРодителя();
-
- Если ЭлементДереваЗначений.ТекущиеДанные.ТипСтроки = "НастройкиРабочегоСтола" Тогда
- ПоказатьПредупреждение(,НСтр("ru = 'Для просмотра настроек рабочего стола перейдите к разделу ""Рабочий стол""
- |в командном интерфейсе программы.'"));
- Возврат;
- КонецЕсли;
-
- Если ЭлементДереваЗначений.ТекущиеДанные.ТипСтроки = "НастройкиКомандногоИнтерфейса" Тогда
- ПоказатьПредупреждение(,НСтр("ru = 'Для просмотра настроек командного интерфейса выберите нужный раздел
- |командного интерфейса программы.'"));
- Возврат;
- КонецЕсли;
-
- Если РодительЭлемента <> Неопределено Тогда
- ТекстПредупреждения = НСтр("ru = 'Для просмотра данной настройки необходимо открыть ""%1""
- |и затем перейти к форме ""%2"".'");
- ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения,
- РодительЭлемента.Настройка, ЭлементДереваЗначений.ТекущиеДанные.Настройка);
- ПоказатьПредупреждение(,ТекстПредупреждения);
- Возврат;
- КонецЕсли;
-
- КонецЕсли;
-
- КонецЦикла;
-
- ПоказатьПредупреждение(,НСтр("ru = 'Данную настройку невозможно просмотреть.'"));
- Возврат;
-
- ИначеЕсли ЭлементДереваЗначений.Имя = "ПрочиеНастройки" Тогда
-
- Если ЭлементДереваЗначений.ТекущиеДанные.Тип = "ПерсональныеНастройки"
- И ИмяФормыПерсональныхНастроек <> "" Тогда
- ОткрытьФорму(ИмяФормыПерсональныхНастроек);
- Возврат;
- КонецЕсли;
-
- ПоказатьПредупреждение(,НСтр("ru = 'Данную настройку невозможно просмотреть.'"));
- Возврат;
-
- КонецЕсли;
-
- ПоказатьПредупреждение(,НСтр("ru = 'Выберите настройку для просмотра.'"));
-
-КонецПроцедуры
-
-// Предназначена для формирования окончания у слова "настройка".
-//
-// Параметры:
-// КоличествоНастроек - Число - количество настроек
-//
-// Возвращаемое значение:
-// Строка - вида "хх настроек" с правильным окончанием.
-//
-Функция ФормированиеСтрокиКоличестваНастроек(КоличествоНастроек) Экспорт
-
- ПрописьЧисла = ЧислоПрописью(
- КоличествоНастроек,
- "Л = ru_RU",
- НСтр("ru = ',,,,,,,,0'"));
- ПрописьЧислаИПредмета = ЧислоПрописью(
- КоличествоНастроек,
- "Л = ru_RU",
- НСтр("ru = 'настройка,настройки,настроек,,,,,,0'"));
- ПрописьПредмета = СтрЗаменить(
- ПрописьЧислаИПредмета,
- ПрописьЧисла,
- Формат(КоличествоНастроек, "ЧДЦ=0") + " ");
-
- Возврат ПрописьПредмета;
-КонецФункции
-
-// Предназначена для формирования строки пояснения при копировании настроек
-//
-// Параметры:
-// ПредставлениеНастройки - Строка - название настройки. Используется если копируется одна настройка.
-// КоличествоНастроек - Число - количество настроек. Используется, если копируется две более настроек.
-// ПояснениеКомуСкопированыНастройки - Строка - кому копируются настройки.
-//
-// Возвращаемое значение:
-// Строка - текст пояснения при копировании настройки
-//
-Функция ФормированиеПоясненияПриКопировании(ПредставлениеНастройки, КоличествоНастроек, ПояснениеКомуСкопированыНастройки) Экспорт
-
- Если КоличествоНастроек = 1 Тогда
-
- Если СтрДлина(ПредставлениеНастройки) > 24 Тогда
- ПредставлениеНастройки = Лев(ПредставлениеНастройки, 24) + "...";
- КонецЕсли;
-
- ТекстПояснения = НСтр("ru = '""%1"" скопирована %2'");
- ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- ТекстПояснения, ПредставлениеНастройки, ПояснениеКомуСкопированыНастройки);
- Иначе
- ПрописьПредмета = ФормированиеСтрокиКоличестваНастроек(КоличествоНастроек);
- ТекстПояснения = НСтр("ru = 'Скопировано %1 %2'");
- ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- ТекстПояснения, ПрописьПредмета, ПояснениеКомуСкопированыНастройки);
- КонецЕсли;
-
- Возврат ТекстПояснения;
-КонецФункции
-
-// Формирует строку получателя настройки
-//
-// Параметры:
-// КоличествоПользователей - Число - используется, если значение больше единицы.
-// Пользователь - Строка - имя пользователя. Используется, если количество пользователей
-// равно единице.
-//
-// Возвращаемое значение:
-// Строка - пояснение кому копируется настройка
-//
-Функция ПояснениеПользователи(КоличествоПользователей, Пользователь) Экспорт
-
- Если КоличествоПользователей = 1 Тогда
- ПояснениеКомуСкопированыНастройки = НСтр("ru = 'пользователю ""%1""'");
- ПояснениеКомуСкопированыНастройки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- ПояснениеКомуСкопированыНастройки, Пользователь);
- Иначе
- ПояснениеКомуСкопированыНастройки = НСтр("ru = '%1 пользователям'");
- ПояснениеКомуСкопированыНастройки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- ПояснениеКомуСкопированыНастройки, КоличествоПользователей);
- КонецЕсли;
-
- Возврат ПояснениеКомуСкопированыНастройки;
-КонецФункции
-
-#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl
index 6606b55e7..adf88c0fd 100644
--- a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl
@@ -1869,9 +1869,9 @@
Функция ТребуемаяВерсияПлатформы() Экспорт
ВерсияПлатформы = "";
-
ВерсияПлатформы = ОбменДаннымиВМоделиСервисаПереопределяемый.ТребуемаяВерсияПриложения();
- Если Не ПустаяСтрока(ВерсияПлатформы) Тогда
+ ОбменДаннымиВМоделиСервисаПереопределяемый.ПриОпределенииТребуемойВерсииПриложения(ВерсияПлатформы);
+ Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда
Возврат ВерсияПлатформы;
КонецЕсли;
diff --git a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl
index ba131e563..362c32042 100644
--- a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl
@@ -42,34 +42,26 @@
//
Процедура ПриЗавершенииРаботыСистемы(Предупреждения) Экспорт
+ ПараметрыАвтономнойРаботы = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыАвтономнойРаботы;
Если ПредлагатьСинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииСеанса = Истина
- И СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыАвтономнойРаботы.СинхронизацияССервисомДавноНеВыполнялась Тогда
+ И ПараметрыАвтономнойРаботы.СинхронизацияССервисомДавноНеВыполнялась Тогда
- ПараметрыПредупреждения = Новый Структура;
-
- ТекстПодсказки = НСтр("ru = 'В некоторых случаях синхронизация данных может занять длительное время:
- | - медленный канал связи;
- | - большой объем данных;
- | - доступно обновление приложения в Интернете.'");
+ ПараметрыПредупреждения = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы();
+ ПараметрыПредупреждения.РасширеннаяПодсказка = НСтр("ru = 'В некоторых случаях синхронизация данных может занять длительное время:
+ | - медленный канал связи;
+ | - большой объем данных;
+ | - доступно обновление приложения в Интернете.'");
- // Подсказка как поясняющий текст
- ПараметрыПредупреждения.Вставить("РасширеннаяПодсказка", ТекстПодсказки);
+ ПараметрыПредупреждения.ТекстФлажка = НСтр("ru = 'Синхронизировать данные с приложением в Интернете'");
+ ПараметрыПредупреждения.Приоритет = 80;
- // Флаг действия
- ТекстФлажка = НСтр("ru = 'Синхронизировать данные с приложением в Интернете'");
- ПараметрыПредупреждения.Вставить("ТекстФлажка", ТекстФлажка);
- ПараметрыПредупреждения.Вставить("Приоритет", 80);
+ ДействиеПриУстановленномФлажке = ПараметрыПредупреждения.ДействиеПриУстановленномФлажке;
+ ДействиеПриУстановленномФлажке.Форма = "Обработка.ВыполнениеОбменаДанными.Форма.Форма";
- ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыАвтономнойРаботы.ПараметрыФормыВыполненияОбменаДанными;
+ ПараметрыФормы = ПараметрыАвтономнойРаботы.ПараметрыФормыВыполненияОбменаДанными;
ПараметрыФормы = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ПараметрыФормы);
ПараметрыФормы.Вставить("ЗавершениеРаботыСистемы", Истина);
- ПараметрыФормы = Новый ФиксированнаяСтруктура(ПараметрыФормы);
-
- ДействиеПриУстановленномФлажке = Новый Структура;
- ДействиеПриУстановленномФлажке.Вставить("Форма", "Обработка.ВыполнениеОбменаДанными.Форма.Форма");
- ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", ПараметрыФормы);
-
- ПараметрыПредупреждения.Вставить("ДействиеПриУстановленномФлажке", ДействиеПриУстановленномФлажке);
+ ДействиеПриУстановленномФлажке.ПараметрыФормы = ПараметрыФормы;
Предупреждения.Добавить(ПараметрыПредупреждения);
КонецЕсли;
@@ -81,22 +73,8 @@
// Доопределяет список предупреждений пользователю перед завершением работы системы.
//
// Параметры:
-// Предупреждения - Массив, в который можно добавить элементы типа Структура с полями:
-// ТекстФлажка - Строка - текст флажка.
-// ПоясняющийТекст - Строка - текст, выводимый в форме сверху
-// управляющего элемента (флажок или гиперссылка).
-// ТекстГиперссылки - Строка - текст гиперссылки.
-// ДействиеПриУстановленномФлажке - Структура с полями:
-// Форма - путь к открываемой форме.
-// ПараметрыФормы - произвольная структура параметров формы Форма.
-// ДействиеПриНажатииГиперссылки - Структура с полями:
-// Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку.
-// ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы.
-// ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу
-// вместо универсальной формы в случае, когда в списке
-// предупреждений оказывается только одно данное предупреждение.
-// ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура
-// параметров для вышеописанной формы.
+// Предупреждения - Массив - в массив можно добавить элементы типа Структура,
+// свойства которой см. в СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы.
//
Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт
diff --git a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПереопределяемый/Module.bsl
index 62d9ad31b..fa9dfa639 100644
--- a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПереопределяемый/Module.bsl
@@ -3,20 +3,28 @@
//
////////////////////////////////////////////////////////////////////////////////
-// Версия приложения 1С:Предприятия, которая требуется для работы автономного рабочего места.
-// Приложение этой версии должно быть установлено на локальном компьютере пользователя.
+#Область СлужебныеПроцедурыИФункции
+
+// Устарела. Следует использовать ПриОпределенииТребуемойВерсииПриложения
+//
+Функция ТребуемаяВерсияПриложения() Экспорт
+
+КонецФункции
+
+// Определяет версию приложения 1С:Предприятия, которая требуется для работы автономного рабочего
+// места. Приложение этой версии должно быть установлено на локальном компьютере пользователя.
// Если возвращаемое значение функции не задано, то в качестве требуемой версии приложения
// будет использоваться значение по умолчанию: первые три цифры версии текущего приложения,
// расположенного в Интернете, например, "8.3.3".
// Используется в помощнике создания автономного рабочего места.
//
-// Возвращаемое значение:
-// Строка - Версия требуемого приложения 1С:Предприятия в формате
-// <основная версия>.<младшая версия>.<релиз>.<дополнительный номер релиза>.
-// Например, "8.3.3.715".
+// Параметры:
+// Версия - Строка - Версия требуемого приложения 1С:Предприятия в формате
+// <основная версия>.<младшая версия>.<релиз>.<дополнительный номер релиза>.
+// Например, "8.3.3.715".
//
-Функция ТребуемаяВерсияПриложения() Экспорт
+Процедура ПриОпределенииТребуемойВерсииПриложения(Версия) Экспорт
- Возврат "";
-
-КонецФункции
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/CommonModules/ОбменДаннымиВнешнееСоединение/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВнешнееСоединение/Module.bsl
index 0cbbee972..cd2975c5b 100644
--- a/SSL/src/CommonModules/ОбменДаннымиВнешнееСоединение/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиВнешнееСоединение/Module.bsl
@@ -105,17 +105,27 @@
ПрефиксИнформационнойБазы = Неопределено;
ПрефиксИнформационнойБазы = ОбменДаннымиПереопределяемый.ПрефиксИнформационнойБазыПоУмолчанию();
+ ОбменДаннымиПереопределяемый.ПриОпределенииПрефиксаИнформационнойБазыПоУмолчанию(ПрефиксИнформационнойБазы);
Возврат ПрефиксИнформационнойБазы;
КонецФункции
+// Проверяет необходимость проверки расхождения версий в правилах конвертации
+//
+Функция ПредупреждатьОНесоответствииВерсийПравилОбмена(ИмяПланаОбмена) Экспорт
+
+ УстановитьПривилегированныйРежим(Истина);
+ Возврат ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена, "ПредупреждатьОНесоответствииВерсийПравилОбмена");
+
+КонецФункции
+
// Возвращает признак доступности роли ПолныеПрава
// (Только для внутреннего использования)
//
Функция РольДоступнаПолныеПрава() Экспорт
- Возврат РольДоступна(Метаданные.Роли.ПолныеПрава);
+ Возврат Пользователи.ЭтоПолноправныйПользователь(, Истина);
КонецФункции
diff --git a/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl
index b85a86f24..1c7c7fc8e 100644
--- a/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl
@@ -97,7 +97,6 @@
// Обновляет/устанавливает повторно-используемые значения и параметры сеанса для подсистемы обмена данными
//
// Устанавливаемые параметры сеанса:
-// ИспользуемыеПланыОбмена - ФиксированныйМассив - массив с именами планов обмена для которых используется обмен.
// ПравилаРегистрацииОбъектов - ХранилищеЗначения - в бинарном виде содержит таблицу значений с правилами регистрации объектов.
// ПравилаВыборочнойРегистрацииОбъектов -
// ДатаОбновленияПовторноИспользуемыхЗначенийМРО - Дата (Дата и время) - содержит дату последнего актуального
@@ -112,10 +111,7 @@
ОбновитьПовторноИспользуемыеЗначения();
- // получаем планы обмена конфигурации, которые используются при обмене
- ПараметрыСеанса.ИспользуемыеПланыОбмена = Новый ФиксированныйМассив(ОбменДаннымиСервер.ПолучитьИспользуемыеПланыОбмена());
-
- Если ПараметрыСеанса.ИспользуемыеПланыОбмена.Количество() > 0 Тогда
+ Если ОбменДаннымиПовтИсп.ИспользуемыеПланыОбмена().Количество() > 0 Тогда
ПараметрыСеанса.ПравилаРегистрацииОбъектов = Новый ХранилищеЗначения(ОбменДаннымиСервер.ПолучитьПравилаРегистрацииОбъектов());
@@ -344,7 +340,7 @@
Результат = ?(ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания), "Завершено", "Активно");
Исключение
Результат = "ЗавершеноАварийно";
- ЗаписьЖурналаРегистрации( НСтр("ru = 'Обмен данными'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка() ),
+ ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
);
КонецПопытки;
@@ -378,7 +374,7 @@
Исключение
Результат = "Failed";
- ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка() ),
+ ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
);
КонецПопытки;
@@ -409,7 +405,7 @@
Исключение
Результат = "Failed";
- ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка() ),
+ ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())
);
КонецПопытки;
@@ -474,7 +470,7 @@
УстановитьПривилегированныйРежим(Истина);
- Если ПараметрыСеанса.ИспользуемыеПланыОбмена.Количество() > 0 Тогда
+ Если ОбменДаннымиПовтИсп.ИспользуемыеПланыОбмена().Количество() > 0 Тогда
НаборЗаписейКонфликта = РегистрыСведений.РезультатыОбменаДанными.СоздатьНаборЗаписей();
НаборЗаписейКонфликта.Отбор.ПроблемныйОбъект.Установить(Источник);
@@ -551,7 +547,6 @@
// зарегистрируем имена параметров, которые установлены при
// выполнении ОбменДаннымиВызовСервера.ОбновитьКэшМеханизмаРегистрацииОбъектов
- УстановленныеПараметры.Добавить("ИспользуемыеПланыОбмена");
УстановленныеПараметры.Добавить("ПравилаВыборочнойРегистрацииОбъектов");
УстановленныеПараметры.Добавить("ПравилаРегистрацииОбъектов");
УстановленныеПараметры.Добавить("ДатаОбновленияПовторноИспользуемыхЗначенийМРО");
@@ -562,6 +557,14 @@
ПараметрыСеанса.ПриоритетныеДанныеОбмена = Новый ФиксированныйМассив(Новый Массив);
УстановленныеПараметры.Добавить("ПриоритетныеДанныеОбмена");
+ СтруктураПроверки =Новый Структура;
+ СтруктураПроверки.Вставить("ПроверятьРасхождениеВерсий", Ложь);
+ СтруктураПроверки.Вставить("ЕстьОшибка", Ложь);
+ СтруктураПроверки.Вставить("ТекстОшибки", "");
+
+ ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных = Новый ФиксированнаяСтруктура(СтруктураПроверки);
+ УстановленныеПараметры.Добавить("ОшибкаРасхожденияВерсийПриПолученииДанных");
+
Иначе
ПараметрыСеанса.ПаролиСинхронизацииДанных = Новый ФиксированноеСоответствие(Новый Соответствие);
@@ -715,11 +718,11 @@
// Возвращаемое значение:
// Булево - Истина, если план обмена используется, Ложь - нет.
//
-Функция ОбменДаннымиВключен(Знач ИмяПланаОбмена) Экспорт
+Функция ОбменДаннымиВключен(Знач ИмяПланаОбмена, Знач Отправитель) Экспорт
УстановитьПривилегированныйРежим(Истина);
- Возврат ОбменДаннымиПовтИсп.ОбменДаннымиВключен(ИмяПланаОбмена);
+ Возврат ОбменДаннымиПовтИсп.ОбменДаннымиВключен(ИмяПланаОбмена, Отправитель);
КонецФункции
// Получает массив узлов плана обмена, для которых установлен признак «Выгружать всегда»
diff --git a/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl
index d1998d7e7..b28356410 100644
--- a/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl
@@ -68,6 +68,7 @@
//
// Параметры:
// ИмяПланаОбмена - Строка - имя плана обмена, как объекта метаданных, для которого необходимо открыть помощник
+// НастройкаОбменаССервисом - Булево - Признак того, что настраивается обмен с приложением в модели сервиса
//
Процедура ОткрытьПомощникНастройкиОбменаДанными(Знач ИмяПланаОбмена, НастройкаОбменаССервисом = Ложь) Экспорт
@@ -92,7 +93,17 @@
// Обработчик начала выбора элемента для формы задания настроек узла базы-корреспондента при настройке обмена через внешнее соединение
//
-Процедура ОбработчикВыбораЭлементовБазыКорреспондентаНачалоВыбора(Знач ИмяРеквизита, Знач ИмяТаблицы, Знач Владелец, Знач СтандартнаяОбработка, Знач ПараметрыВнешнегоСоединения, Знач ПараметрыВыбора=Неопределено) Экспорт
+// Параметры:
+// ИмяРеквизита - Строка - Имя реквизита формы
+// ИмяТаблицы - Строка - Полное имя объекта метаданных
+// Владелец - УправляемаяФорма - Форма выбора элементов базы-корреспондента
+// СтандартнаяОбработка - Булево - Признак выполнения стандартной (системной) обработки события
+// ПараметрыВнешнегоСоединения - Структура - параметры внешнего соединения
+// ПараметрыВыбора - Структура - Структура параметров выбора
+//
+Процедура ОбработчикВыбораЭлементовБазыКорреспондентаНачалоВыбора(Знач ИмяРеквизита, Знач ИмяТаблицы, Знач Владелец,
+ Знач СтандартнаяОбработка, Знач ПараметрыВнешнегоСоединения, Знач ПараметрыВыбора=Неопределено) Экспорт
+
ИмяРеквизитаИдентификатора = ИмяРеквизита + "_Ключ";
НачальноеЗначениеВыбора = Неопределено;
@@ -126,11 +137,21 @@
ПараметрыФормы.Вставить("ВыборГруппИЭлементов", ВыборГруппИЭлементов);
ОткрытьФорму("ОбщаяФорма.ВыборОбъектовИнформационнойБазыКорреспондента", ПараметрыФормы, Владелец);
+
КонецПроцедуры
// Обработчик подбора элементов для формы задания настроек узла базы-корреспондента при настройке обмена через внешнее соединение
//
-Процедура ОбработчикВыбораЭлементовБазыКорреспондентаПодбор(Знач ИмяРеквизита, Знач ИмяТаблицы, Знач Владелец, Знач ПараметрыВнешнегоСоединения, Знач ПараметрыВыбора=Неопределено) Экспорт
+// Параметры:
+// ИмяРеквизита - Строка - Имя реквизита формы
+// ИмяТаблицы - Строка - Полное имя объекта метаданных
+// Владелец - УправляемаяФорма - Форма выбора элементов базы-корреспондента
+// ПараметрыВнешнегоСоединения - Структура - параметры внешнего соединения
+// ПараметрыВыбора - Структура - Структура параметров выбора
+//
+Процедура ОбработчикВыбораЭлементовБазыКорреспондентаПодбор(Знач ИмяРеквизита, Знач ИмяТаблицы, Знач Владелец,
+ Знач ПараметрыВнешнегоСоединения, Знач ПараметрыВыбора=Неопределено) Экспорт
+
ИмяРеквизитаИдентификатора = ИмяРеквизита + "_Ключ";
НачальноеЗначениеВыбора = Неопределено;
@@ -162,6 +183,11 @@
// Обработчик обработки выбора элемента для формы задания настроек узла базы-корреспондента при настройке обмена через внешнее соединение
//
+// Параметры:
+// Элемент - УправляемаяФорма, ТаблицаФормы - Элемент для обработки выбора
+// ВыбранноеЗначение - см. описание параметра ВыбранноеЗначение события ОбработкаВыбора
+// ДанныеФормыКоллекция - ДанныеФормыКоллекция - Для режима подбора из списка
+//
Процедура ОбработчикВыбораЭлементовБазыКорреспондентаОбработкаВыбора(Знач Элемент, Знач ВыбранноеЗначение, Знач ДанныеФормыКоллекция=Неопределено) Экспорт
Если ТипЗнч(ВыбранноеЗначение)<>Тип("Структура") Тогда
@@ -202,6 +228,8 @@
// Проверяет установку флага "Использовать" для всех строк таблицы
//
+// Таблица - ТаблицаЗначений - проверяемая таблица
+//
Функция ВТаблицеОтмеченыВсеЭлементы(Таблица) Экспорт
Для Каждого Элемент Из Таблица Цикл
@@ -364,7 +392,7 @@
Возврат;
КонецЕсли;
- Если ПараметрыРаботыКлиента.ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла Тогда
+ Если ПараметрыРаботыКлиента.Свойство("ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла") Тогда
Для Каждого Окно Из ПолучитьОкна() Цикл
Если Окно.Основное Тогда
@@ -386,8 +414,8 @@
Возврат;
КонецЕсли;
- Если Не ПараметрыРаботыКлиента.ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла
- И ПараметрыРаботыКлиента.ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзла Тогда
+ Если Не ПараметрыРаботыКлиента.Свойство("ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла")
+ И ПараметрыРаботыКлиента.Свойство("ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзла") Тогда
ПодключитьОбработчикОжидания("ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзлаПриЗапуске", 1, Истина);
@@ -482,7 +510,7 @@
УстановитьЗначенияСтруктурыПоУмолчанию(ПараметрыДиалога, УмолчанияДиалога);
- ТекстПредупреждения = НСтр("ru = 'Для данной операции необходимо установить расширение работы с файлами.'");
+ ТекстПредупреждения = НСтр("ru = 'Для данной операции необходимо установить расширение для веб-клиента 1С:Предприятие.'");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
@@ -543,7 +571,7 @@
УстановитьЗначенияСтруктурыПоУмолчанию(ПараметрыДиалога, УмолчанияДиалога);
- ТекстПредупреждения = НСтр("ru = 'Для данной операции необходимо установить расширение работы с файлами.'");
+ ТекстПредупреждения = НСтр("ru = 'Для данной операции необходимо установить расширение для веб-клиента 1С:Предприятие.'");
Оповещение = Новый ОписаниеОповещения("ОбработчикВыбораФайлаЗавершение", ЭтотОбъект, Новый Структура);
Оповещение.ДополнительныеПараметры.Вставить("Объект", Объект);
@@ -617,9 +645,9 @@
Если ТекстПредупреждения = Неопределено Тогда
Если ИменаФайлов.Количество() = 1 Тогда
- ТекстПредупреждения = НСтр("ru = 'Для передачи файла на сервер необходимо установить расширение работы с файлами.'");
+ ТекстПредупреждения = НСтр("ru = 'Для передачи файла на сервер необходимо установить расширение для веб-клиента 1С:Предприятие.'");
Иначе
- ТекстПредупреждения = НСтр("ru = 'Для передачи файлов на сервер необходимо установить расширение работы с файлами.'");
+ ТекстПредупреждения = НСтр("ru = 'Для передачи файлов на сервер необходимо установить расширение для веб-клиента 1С:Предприятие.'");
КонецЕсли;
КонецЕсли;
@@ -836,6 +864,17 @@
КонецПроцедуры
+// Открывает форму загрузки правил конвертации и регистрации единым файлом
+//
+Процедура ЗагрузитьПравилаСинхронизацииДанных(Знач ИмяПланаОбмена) Экспорт
+
+ ПараметрыФормы = Новый Структура;
+ ПараметрыФормы.Вставить("ИмяПланаОбмена", ИмяПланаОбмена);
+
+ ОткрытьФорму("РегистрСведений.ПравилаДляОбменаДанными.Форма.ЗагрузитьПравилаСинхронизацииДанных", ПараметрыФормы,, ИмяПланаОбмена);
+
+КонецПроцедуры
+
// Открывает журнал регистрации с отбором по событиям выгрузки или загрузки данных для заданного узла плана обмена
//
Процедура ПерейтиВЖурналРегистрацииСобытийДанных(УзелИнформационнойБазы, ПараметрыВыполненияКоманды, ДействиеПриОбменеСтрокой) Экспорт
@@ -887,7 +926,7 @@
ПараметрыФормы.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы);
ПараметрыФормы.Вставить("РасширенныйРежимДополненияВыгрузки", Истина);
- ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма", ПараметрыФормы, Владелец, УзелИнформационнойБазы, , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+ ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма", ПараметрыФормы, Владелец, УзелИнформационнойБазы, , , ,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
@@ -905,7 +944,18 @@
// в качестве параметра формы задаем узел информационной базы;
ПараметрыФормы = Новый Структура("УзелИнформационнойБазы", УзелИнформационнойБазы);
- ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДанными.Форма", ПараметрыФормы, Владелец, УзелИнформационнойБазы, , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+ ИмяФормы = "Обработка.ПомощникИнтерактивногоОбменаДанными.Форма";
+
+ Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ОбменДаннымиXDTO") Тогда
+
+ МодульОбменДаннымиXDTOКлиентПовтИсп = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбменДаннымиXDTOКлиентПовтИсп");
+ Если МодульОбменДаннымиXDTOКлиентПовтИсп.ЭтоПланОбменаXDTO(УзелИнформационнойБазы) Тогда
+ ИмяФормы = "Обработка.ПомощникИнтерактивногоОбменаДаннымиЧерезXDTO.Форма";
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ОткрытьФорму(ИмяФормы, ПараметрыФормы, Владелец, УзелИнформационнойБазы, , , ,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
@@ -975,7 +1025,7 @@
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеУдаленияРазрешений", ЭтотОбъект, УзелИнформационнойБазы);
Запросы = ОбменДаннымиВызовСервера.ЗапросНаОчисткуРазрешенийИспользованияВнешнихРесурсов(УзелИнформационнойБазы);
- РаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, ЭтотОбъект, ОповещениеОЗакрытии);
+ РаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, Неопределено, ОповещениеОЗакрытии);
КонецЕсли;
@@ -1053,6 +1103,14 @@
КонецПроцедуры
+// Открывает форму сообщения о неудачном обновлении при ошибке в ПРО при выполнении обновления информационной базы
+//
+Процедура ИмяФормыСообщенияОНеудачномОбновлении(ИмяОткрываемойФормы) Экспорт
+
+ ИмяОткрываемойФормы = "РегистрСведений.ПравилаДляОбменаДанными.Форма.СообщениеОНеудачномОбновлении";
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики условных вызовов из других подсистем
diff --git a/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl
index 55a4fb70f..6eabd5351 100644
--- a/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl
@@ -5,20 +5,23 @@
#Область ПрограммныйИнтерфейс
-// Возвращает префикс кодов и номеров объектов информационной базы по умолчанию
-//
-// Параметры:
-// Нет.
-//
-// Возвращаемое значение:
-// Строка, 2 - префикс кодов и номеров объектов информационной базы по умолчанию
+// Устарела. Следует использовать ПриОпределенииПрефиксаИнформационнойБазыПоУмолчанию
//
Функция ПрефиксИнформационнойБазыПоУмолчанию() Экспорт
- Возврат НСтр("ru = 'ДМ'");
-
КонецФункции
+// Определяет префикс кодов и номеров объектов информационной базы по умолчанию
+//
+// Параметры:
+// Префикс - Строка, 2 - префикс кодов и номеров объектов информационной базы по умолчанию
+//
+Процедура ПриОпределенииПрефиксаИнформационнойБазыПоУмолчанию(Префикс) Экспорт
+
+
+
+КонецПроцедуры
+
// Определяет список планов обмена, которые используют функционал подсистемы обмена данными.
//
// Параметры:
diff --git a/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl
index 2054706d2..1d4206b7d 100644
--- a/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl
@@ -330,9 +330,29 @@
// Возвращаемое значение:
// Истина - план обмена используется, Ложь - нет.
//
-Функция ОбменДаннымиВключен(Знач ИмяПланаОбмена) Экспорт
+Функция ОбменДаннымиВключен(Знач ИмяПланаОбмена, Знач Отправитель = Неопределено) Экспорт
- Возврат ПараметрыСеанса.ИспользуемыеПланыОбмена.Найти(ИмяПланаОбмена) <> Неопределено;
+ ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1 1
+ |ИЗ
+ | ПланОбмена." + ИмяПланаОбмена + " КАК ПланОбмена
+ |ГДЕ
+ | ПланОбмена.Ссылка <> &ЭтотУзел
+ | И ПланОбмена.Ссылка <> &Отправитель";
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = ТекстЗапроса;
+ Запрос.УстановитьПараметр("ЭтотУзел", ПланыОбмена[ИмяПланаОбмена].ЭтотУзел());
+ Запрос.УстановитьПараметр("Отправитель", Отправитель);
+
+ Возврат Не Запрос.Выполнить().Пустой();
+
+КонецФункции
+
+// Возвращает список планов обмена, которые содержат хотя бы один узел обмена (не учитывая ЭтотУзел)
+//
+Функция ИспользуемыеПланыОбмена() Экспорт
+
+ Возврат ОбменДаннымиСервер.ПолучитьИспользуемыеПланыОбмена();
КонецФункции
@@ -558,6 +578,16 @@
//
Функция ЭтоУзелУниверсальногоОбменаДанными(УзелИнформационнойБазы) Экспорт
+ Если ОбщегоНазначения.ПодсистемаСуществует("ОбменДаннымиXDTO") Тогда
+
+ МодульОбменДаннымиXDTOПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOПовтИсп");
+ МодульОбменДаннымиXDTOСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOСервер");
+
+ Если МодульОбменДаннымиXDTOПовтИсп.ЭтоПланОбменаXDTO(УзелИнформационнойБазы) Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЕсли;
+
Возврат Не ЭтоУзелРаспределеннойИнформационнойБазы(УзелИнформационнойБазы)
И ЕстьМакетПланаОбмена(ПолучитьИмяПланаОбмена(УзелИнформационнойБазы), "ПравилаОбмена");
//
@@ -957,12 +987,16 @@
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Результат, Перечисления.ВидыТранспортаСообщенийОбмена.WS);
КонецЕсли;
-
+
// Для обмена в РИБ обмен через COM-соединение не поддерживаем
Если ЭтоУзелРаспределеннойИнформационнойБазы(УзелИнформационнойБазы) Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Результат, Перечисления.ВидыТранспортаСообщенийОбмена.COM);
+ Если Не ЭтоУзелАвтономногоРабочегоМеста(УзелИнформационнойБазы) Тогда
+ ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Результат, Перечисления.ВидыТранспортаСообщенийОбмена.WS);
+ КонецЕсли;
+
КонецЕсли;
// Для Стандартного обмена (без использования правил конвертации) обмен через COM-соединение не поддерживаем
diff --git a/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl
index 2e755d4c7..bab96e534 100644
--- a/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl
@@ -555,6 +555,11 @@
КонецЕсли;
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "ОбменДаннымиСервер");
+ КонецЕсли;
+
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -1060,6 +1065,61 @@
Возврат ПланыОбмена.ВыбратьИзменения(Узел, НомерСообщения, ФильтрВыборки);
КонецФункции
+// Определяет настройки по умолчанию для плана обмена, которые затем могут быть переопределены
+// в модуле менеджера плана обмена в функции ОпределитьНастройки()
+//
+// Возвращаемое значение:
+// Структура - содержит поля:
+// * ПредупреждатьОНесоответствииВерсийПравилОбмена - Булево - Признак необходимости проверки на расхождение версий в правилах
+// конвертации. Проверка выполняется при загрузке комплекта правил,
+// при отправке данных и при получении данных.
+// * ПутьКФайлуКомплектаПравилНаПользовательскомСайте - Строка - Содержит путь к файлу комплекта правил в виде архива
+// на пользовательском сайте в разделе конфигурации
+// * ПутьКФайлуКомплектаПравилВКаталогеШаблонов - Строка - Содержит относительный путь к файлу комплекта правил в каталоге
+// шаблонов 1С:Предприятия.
+//
+Функция НастройкиПланаОбменаПоУмолчанию() Экспорт
+
+ Параметры = Новый Структура;
+ Параметры.Вставить("ПредупреждатьОНесоответствииВерсийПравилОбмена", Истина);
+ Параметры.Вставить("ПутьКФайлуКомплектаПравилНаПользовательскомСайте", "");
+ Параметры.Вставить("ПутьКФайлуКомплектаПравилВКаталогеШаблонов", "");
+
+ Возврат Параметры;
+
+КонецФункции
+
+// Получает значение настройки плана обмена по ее имени
+//
+// Параметры:
+// ИмяПланаОбмена - Строка - Имя плана обмена из метаданных
+// ИмяПараметра - Строка - Имя параметра плана обмена или список параметров, разделенных запятыми.
+// Список допустимых значений см. в функции ПараметрыПланаОбменаПоУмолчанию.
+//
+// Возвращаемое значение:
+// - Произвольный - Тип возвращаемого значения зависит от типа значения получаемой настройки
+// - Структура - Если в качестве параметра ИмяПараметра была передан список параметров через запятую.
+//
+Функция ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена, ИмяПараметра) Экспорт
+
+ ПараметрыПоУмолчанию = НастройкиПланаОбменаПоУмолчанию();
+ ПланыОбмена[ИмяПланаОбмена].ОпределитьНастройки(ПараметрыПоУмолчанию);
+
+ Если Найти(ИмяПараметра, ",") = 0 Тогда
+
+ ЗначениеПараметра = ПараметрыПоУмолчанию[ИмяПараметра];
+
+ Иначе
+
+ ЗначениеПараметра = Новый Структура(ИмяПараметра);
+ ЗаполнитьЗначенияСвойств(ЗначениеПараметра, ПараметрыПоУмолчанию);
+
+ КонецЕсли;
+
+ Возврат ЗначениеПараметра;
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Работа с объектом FTP-соединение
@@ -1252,16 +1312,20 @@
Параметры.Вставить("ИмяПланаОбменаРИБ", ?(ЭтоПодчиненныйУзелРИБ(), ГлавныйУзел().Метаданные().Имя, ""));
Параметры.Вставить("ГлавныйУзел", ГлавныйУзел());
- Параметры.Вставить("ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла",
- Не ОбменДаннымиПовтИсп.ЭтоАвтономноеРабочееМесто()
- И ЭтоПодчиненныйУзелРИБ()
- И Не Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить());
+ Если Не ОбменДаннымиПовтИсп.ЭтоАвтономноеРабочееМесто()
+ И ЭтоПодчиненныйУзелРИБ()
+ И Не Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить() Тогда
+
+ Параметры.Вставить("ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла");
+ КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
- Параметры.Вставить("ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзла",
- Не Параметры.ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла
- И Пользователи.РолиДоступны("ВыполнениеСинхронизацииДанных"));
+ Если Не Параметры.Свойство("ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла")
+ И Пользователи.РолиДоступны("ВыполнениеСинхронизацииДанных") Тогда
+
+ Параметры.Вставить("ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзла");
+ КонецЕсли;
КонецПроцедуры
@@ -1438,6 +1502,80 @@
КонецПроцедуры
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ Если Не ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.ПравилаДляОбменаДанными) Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Если нет раздела администрирование, дело не добавляется.
+ Подсистема = Метаданные.Подсистемы.Найти("Администрирование");
+ Если Подсистема <> Неопределено
+ И Не ПравоДоступа("Просмотр", Подсистема)
+ И Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(Подсистема) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ВывестиДело = Истина;
+ ПровереноНаВерсию = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "ПланыОбмена");
+ Если ПровереноНаВерсию <> Неопределено Тогда
+ ВерсияМассив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Метаданные.Версия, ".");
+ ТекущаяВерсия = ВерсияМассив[0] + ВерсияМассив[1] + ВерсияМассив[2];
+ Если ПровереноНаВерсию = ТекущаяВерсия Тогда
+ ВывестиДело = Ложь; // Дополнительные отчеты и обработки проверены на текущей версии.
+ КонецЕсли;
+ КонецЕсли;
+
+ ПланыОбменаСПравиламиИзФайла = ПланыОбменаСПравиламиИзФайла();
+
+ // Добавление дела.
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "ПравилаОбмена";
+ Дело.ЕстьДела = ВывестиДело И ПланыОбменаСПравиламиИзФайла > 0;
+ Дело.Представление = НСтр("ru = 'Правила обмена'");
+ Дело.Количество = ПланыОбменаСПравиламиИзФайла;
+ Дело.Форма = "РегистрСведений.ПравилаДляОбменаДанными.Форма.ПроверкаПлановОбмена";
+ Дело.Владелец = "ПроверитьСовместимостьСТекущейВерсией";
+
+ // Проверка наличия группы дела. Если группа отсутствует - добавляем.
+ ГруппаДела = ТекущиеДела.Найти("ПроверитьСовместимостьСТекущейВерсией", "Идентификатор");
+ Если ГруппаДела = Неопределено Тогда
+ ГруппаДела = ТекущиеДела.Добавить();
+ ГруппаДела.Идентификатор = "ПроверитьСовместимостьСТекущейВерсией";
+ ГруппаДела.ЕстьДела = Дело.ЕстьДела;
+ ГруппаДела.Представление = НСтр("ru = 'Проверить совместимость'");
+ Если Дело.ЕстьДела Тогда
+ ГруппаДела.Количество = Дело.Количество;
+ КонецЕсли;
+ ГруппаДела.Владелец = Подсистема;
+ Иначе
+ Если Не ГруппаДела.ЕстьДела Тогда
+ ГруппаДела.ЕстьДела = Дело.ЕстьДела;
+ КонецЕсли;
+
+ Если Дело.ЕстьДела Тогда
+ ГруппаДела.Количество = ГруппаДела.Количество + Дело.Количество;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики условных вызовов из других подсистем
@@ -1448,11 +1586,11 @@
Обработчики.Вставить("РежимЗагрузкиСообщенияОбменаДаннымиПередЗапуском", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
Обработчики.Вставить("ДатаОбновленияПовторноИспользуемыхЗначенийМРО", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
- Обработчики.Вставить("ИспользуемыеПланыОбмена", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
Обработчики.Вставить("ПравилаВыборочнойРегистрацииОбъектов", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
Обработчики.Вставить("ПравилаРегистрацииОбъектов", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
Обработчики.Вставить("ПаролиСинхронизацииДанных", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
Обработчики.Вставить("ПриоритетныеДанныеОбмена", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
+ Обработчики.Вставить("ОшибкаРасхожденияВерсийПриПолученииДанных", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса");
КонецПроцедуры
@@ -1574,6 +1712,16 @@
КонецПроцедуры
+Процедура ПриПродолженииНастройкиПодчиненногоУзлаРИБ() Экспорт
+ УстановитьПривилегированныйРежим(Истина);
+ ПользователиСлужебный.ОчиститьИдентификаторыНесуществующихПользователейИБ();
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
+ МодульРаботаСПочтовымиСообщениямиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениямиСлужебный");
+ МодульРаботаСПочтовымиСообщениямиСлужебный.ОтключитьИспользованиеУчетныхЗаписей();
+ КонецЕсли;
+КонецПроцедуры
+
+
////////////////////////////////////////////////////////////////////////////////
// Выполнение обмена данными
@@ -2256,7 +2404,8 @@
Знач УзелИнформационнойБазы,
Знач ИдентификаторФайла,
Знач ДатаНачалаОперации,
- Знач ПараметрыАутентификации = Неопределено
+ Знач ПараметрыАутентификации = Неопределено,
+ ВыдаватьОшибку = Ложь
) Экспорт
ПроверитьВозможностьВыполненияОбменов();
@@ -2269,10 +2418,14 @@
ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, ПараметрыАутентификации);
Исключение
ЗафиксироватьЗавершениеОбменаСОшибкой(УзелИнформационнойБазы,
- Перечисления.ДействияПриОбмене.ЗагрузкаДанных,
- ДатаНачалаОперации,
- ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
- Отказ = Истина;
+ Перечисления.ДействияПриОбмене.ЗагрузкаДанных,
+ ДатаНачалаОперации,
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ Если ВыдаватьОшибку Тогда
+ ВызватьИсключение;
+ Иначе
+ Отказ = Истина;
+ КонецЕсли;
Возврат;
КонецПопытки;
@@ -2284,10 +2437,14 @@
Перечисления.ДействияПриОбмене.ЗагрузкаДанных,,,, ДатаНачалаОперации);
Исключение
ЗафиксироватьЗавершениеОбменаСОшибкой(УзелИнформационнойБазы,
- Перечисления.ДействияПриОбмене.ЗагрузкаДанных,
- ДатаНачалаОперации,
- ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
- Отказ = Истина;
+ Перечисления.ДействияПриОбмене.ЗагрузкаДанных,
+ ДатаНачалаОперации,
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ Если ВыдаватьОшибку Тогда
+ ВызватьИсключение;
+ Иначе
+ Отказ = Истина;
+ КонецЕсли;
КонецПопытки;
Попытка
@@ -2529,8 +2686,7 @@
Если СтруктураНастроекОбмена.ПроизводитьЗагрузкуДанных Тогда
- Если СтруктураНастроекОбмена.ЭтоОбменВРИБ
- И ПолноеИмяФайлаСообщенияОбмена = ""
+ Если ПолноеИмяФайлаСообщенияОбмена = ""
И СообщениеОбмена <> "" Тогда
ПолноеИмяФайлаСообщенияОбмена = ПолучитьИмяВременногоФайла(".xml");
@@ -2789,7 +2945,7 @@
Если СтандартнаяОбработка Тогда
Попытка
- Если Не ПустаяСтрока(ФайлСообщенияОбмена) Тогда
+ Если Не ПустаяСтрока(ФайлСообщенияОбмена) И ТипЗнч(ПолучитьСообщениеОбменаДаннымиИзГлавногоУзла()) <> Тип("Структура") Тогда
УдалитьФайлы(ФайлСообщенияОбмена);
КонецЕсли;
Исключение
@@ -3063,6 +3219,26 @@
УстановитьОбщиеПараметрыДляОбработкиОбменаДанными(ОбработкаОбменаДаннымиВнешнееСоединение, СтруктураНастроекОбменаВнешнееСоединение, ОбменСБСП20);
+ ВерсияКонфигурацииПриемника = "";
+ ВерсияИсточникаИзПравил = "";
+ ТекстСообщения = "";
+ ПараметрыВнешнегоСоединения = Новый Структура;
+ ПараметрыВнешнегоСоединения.Вставить("ВнешнееСоединение", ВнешнееСоединение);
+ ПараметрыВнешнегоСоединения.Вставить("ВерсияБСППоВнешнемуСоединению", ВерсияБСППоВнешнемуСоединению);
+ ПараметрыВнешнегоСоединения.Вставить("КлючСообщенияЖурналаРегистрации", СтруктураНастроекОбменаВнешнееСоединение.КлючСообщенияЖурналаРегистрации);
+ ПараметрыВнешнегоСоединения.Вставить("УзелИнформационнойБазы", СтруктураНастроекОбменаВнешнееСоединение.УзелИнформационнойБазы);
+
+ ПравилаКонвертацииОбъектов.Получить().Конвертация.Свойство("ВерсияКонфигурацииИсточника", ВерсияКонфигурацииПриемника);
+ ОбработкаДляЗагрузкиДанных.СохраненныеНастройки.Получить().Конвертация.Свойство("ВерсияКонфигурацииИсточника", ВерсияИсточникаИзПравил);
+
+ Если РазличаютсяВерсииКорреспондента(СтруктураНастроекОбмена.ИмяПланаОбмена, СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации,
+ ВерсияИсточникаИзПравил, ВерсияКонфигурацииПриемника, ТекстСообщения, ПараметрыВнешнегоСоединения) Тогда
+
+ ОбработкаОбменаДаннымиВнешнееСоединение = Неопределено;
+ Возврат;
+
+ КонецЕсли;
+
// ВЫГРУЗКА (КОРРЕСПОНДЕНТ) - ЗАГРУЗКА (ЭТА БАЗА)
ОбработкаОбменаДаннымиВнешнееСоединение.ВыполнитьВыгрузкуДанных(ОбработкаДляЗагрузкиДанных);
@@ -3216,7 +3392,7 @@
Если ЭтоПодчиненныйУзелРИБ()
И ТипЗнч(ГлавныйУзел()) = ТипЗнч(Получатель) Тогда
- СохраненноеСообщениеОбмена = Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить();
+ СохраненноеСообщениеОбмена = ПолучитьСообщениеОбменаДаннымиИзГлавногоУзла();
Если ТипЗнч(СохраненноеСообщениеОбмена) = Тип("ДвоичныеДанные") Тогда
@@ -3231,6 +3407,19 @@
УстановитьПривилегированныйРежим(Истина);
УстановитьРежимЗагрузкиСообщенияОбменаДаннымиПередЗапуском("СообщениеПолученоИзКэша", Истина);
УстановитьПривилегированныйРежим(Ложь);
+
+ ИначеЕсли ТипЗнч(СохраненноеСообщениеОбмена) = Тип("Структура") Тогда
+
+ СтандартнаяОбработка = Ложь;
+
+ СообщениеОбмена = СохраненноеСообщениеОбмена.ПутьКФайлу;
+
+ ЗаписатьСобытиеПолученияДанных(Получатель, НСтр("ru = 'Сообщение обмена получено из кэша.'"));
+
+ УстановитьПривилегированныйРежим(Истина);
+ УстановитьРежимЗагрузкиСообщенияОбменаДаннымиПередЗапуском("СообщениеПолученоИзКэша", Истина);
+ УстановитьПривилегированныйРежим(Ложь);
+
Иначе
УстановитьПривилегированныйРежим(Истина);
УстановитьРежимЗагрузкиСообщенияОбменаДаннымиПередЗапуском("СообщениеПолученоИзКэша", Ложь);
@@ -3250,7 +3439,7 @@
Если НЕ СообщениеПрочитано
И ОбменДаннымиВызовСервера.РежимЗагрузкиСообщенияОбменаДаннымиПередЗапуском("СообщениеПолученоИзКэша") Тогда
// Не удалось прочитать сообщение, полученное из кэша - требуется очистка кэша.
- Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено));
+ ОчиститьСообщениеОбменаДаннымиИзГлавногоУзла();
Возврат;
КонецЕсли;
@@ -3275,7 +3464,7 @@
Если УдалитьСообщение Тогда
- Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено));
+ ОчиститьСообщениеОбменаДаннымиИзГлавногоУзла();
Если Константы.ЗагрузитьСообщениеОбменаДанными.Получить() = Истина Тогда
Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Ложь);
@@ -3291,27 +3480,34 @@
КонецЕсли;
Если ОбновитьСообщениеВКэше Тогда
- СтароеСообщение = Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить();
- НовоеСообщение = Новый ДвоичныеДанные(СообщениеОбмена);
+ СтароеСообщение = ПолучитьСообщениеОбменаДаннымиИзГлавногоУзла();
+
ОбновитьКэш = Ложь;
+ НовоеСообщение = Новый ДвоичныеДанные(СообщениеОбмена);
- Если ТипЗнч(СтароеСообщение) <> Тип("ДвоичныеДанные") Тогда
- ОбновитьКэш = Истина;
- Иначе
+ ТипСтруктура = ТипЗнч(СтароеСообщение) = Тип("Структура");
+
+ Если ТипСтруктура Или ТипЗнч(СтароеСообщение) = Тип("ДвоичныеДанные") Тогда
+
+ Если ТипСтруктура Тогда
+ СтароеСообщение = Новый ДвоичныеДанные(СтароеСообщение.ПутьКФайлу);
+ КонецЕсли;
+
Если СтароеСообщение.Размер() <> НовоеСообщение.Размер() Тогда
ОбновитьКэш = Истина;
ИначеЕсли НовоеСообщение <> СтароеСообщение Тогда
ОбновитьКэш = Истина;
КонецЕсли;
+
+ Иначе
+
+ ОбновитьКэш = Истина;
+
КонецЕсли;
Если ОбновитьКэш Тогда
- Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(
- Новый ХранилищеЗначения(НовоеСообщение, Новый СжатиеДанных(9)));
-
- ЗаписатьСобытиеПолученияДанных(
- Получатель, НСтр("ru = 'Сообщение обмена записано в кэш.'"));
+ УстановитьСообщениеОбменаДаннымиИзГлавногоУзла(НовоеСообщение, Получатель);
КонецЕсли;
КонецЕсли;
@@ -3393,6 +3589,11 @@
Если СтруктураНастроекОбмена.ОбменПоПравиламКонвертацииОбъектов Тогда // Универсальный обмен (обмен по правилам конвертации)
+ ФормироватьСообщениеОбмена = ПустаяСтрока(ИмяФайлаСообщенияОбмена);
+ Если ФормироватьСообщениеОбмена Тогда
+ ИмяФайлаСообщенияОбмена = ПолучитьИмяВременногоФайла(".xml");
+ КонецЕсли;
+
// получаем инициализированную обработку обмена данными
ОбработкаОбменаДаннымиXML = СтруктураНастроекОбмена.ОбработкаОбменаДанными;
ОбработкаОбменаДаннымиXML.ИмяФайлаОбмена = ИмяФайлаСообщенияОбмена;
@@ -3400,6 +3601,12 @@
// выгрузка данных
ОбработкаОбменаДаннымиXML.ВыполнитьВыгрузкуДанных();
+ Если ФормироватьСообщениеОбмена Тогда
+ ТекстовыйФайл = Новый ТекстовыйДокумент;
+ ТекстовыйФайл.Прочитать(ИмяФайлаСообщенияОбмена, КодировкаТекста.UTF8);
+ СообщениеОбмена = ТекстовыйФайл.ПолучитьТекст();
+ КонецЕсли;
+
СтруктураНастроекОбмена.РезультатВыполненияОбмена = ОбработкаОбменаДаннымиXML.РезультатВыполненияОбмена();
// фиксируем состояние выполнения обмена данными
@@ -5072,37 +5279,20 @@
Результат = Новый Массив;
- Настройки = ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента(ИмяПланаОбмена, ВерсияКорреспондента);
+ ЗначенияПоУмолчанию = ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента(ИмяПланаОбмена, ВерсияКорреспондента);
- Для Каждого Реквизит Из Метаданные.ПланыОбмена[ИмяПланаОбмена].Реквизиты Цикл
+ Для Каждого Элемент Из ЗначенияПоУмолчанию Цикл
- Если Настройки.Свойство(Реквизит.Имя) Тогда
-
- Если Реквизит.Тип.Типы().Количество() <> 1 Тогда
-
- СтрокаСообщения = НСтр("ru = 'Составной тип данных для значений по умолчанию не поддерживается.
- |Реквизит ""%1"".'");
- СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Реквизит.ПолноеИмя());
- ВызватьИсключение СтрокаСообщения;
- КонецЕсли;
-
- ОбъектМетаданных = Метаданные.НайтиПоТипу(Реквизит.Тип.Типы().Получить(0));
-
- Если Не ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных) Тогда
-
- СтрокаСообщения = НСтр("ru = 'Выбор значений по умолчанию поддерживается только для справочников.
- |Реквизит ""%1"".'");
- СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Реквизит.ПолноеИмя());
- ВызватьИсключение СтрокаСообщения;
- КонецЕсли;
-
- Результат.Добавить(ОбъектМетаданных.ПолноеИмя());
-
+ Если Найти(Элемент.Ключ, "_Ключ") > 0 Тогда
+ Продолжить;
КонецЕсли;
+ Результат.Добавить(Элемент.Ключ);
+
КонецЦикла;
Возврат Новый ФиксированныйМассив(Результат);
+
КонецФункции
// Процедура удаляет неактуальные записи в регистре сведений.
@@ -5298,6 +5488,26 @@
КонецПроцедуры
+// Только для внутреннего использования
+//
+Функция ПланыОбменаСПравиламиИзФайла()
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ИсточникПравил = &ИсточникПравил";
+
+ Запрос.УстановитьПараметр("ИсточникПравил", Перечисления.ИсточникиПравилДляОбменаДанными.Файл);
+ Результат = Запрос.Выполнить().Выгрузить();
+
+ Возврат Результат.Количество();
+
+КонецФункции
+
//
// Для внутреннего использования
@@ -6985,14 +7195,43 @@
Функция ДанныеТаблицКорреспондента(Таблицы, Знач ИмяПланаОбмена) Экспорт
Результат = Новый Соответствие;
+ РеквизитыПланаОбмена = Метаданные.ПланыОбмена[ИмяПланаОбмена].Реквизиты;
- Для Каждого Таблица Из Таблицы Цикл
+ Для Каждого Элемент Из Таблицы Цикл
- ДанныеТаблицы = Новый Структура("СвойстваОбъектаМетаданных, ТаблицаБазыКорреспондента");
- ДанныеТаблицы.СвойстваОбъектаМетаданных = СвойстваОбъектаМетаданных(Таблица);
- ДанныеТаблицы.ТаблицаБазыКорреспондента = ПолучитьОбъектыТаблицы(Таблица);
+ Реквизит = РеквизитыПланаОбмена.Найти(Элемент);
- Результат.Вставить(Таблица, ДанныеТаблицы);
+ Если Реквизит <> Неопределено Тогда
+
+ ТипыРеквизита = Реквизит.Тип.Типы();
+
+ Если ТипыРеквизита.Количество() <> 1 Тогда
+
+ СтрокаСообщения = НСтр("ru = 'Составной тип данных для значений по умолчанию не поддерживается.
+ |Реквизит ""%1"".'");
+ СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Реквизит.ПолноеИмя());
+ ВызватьИсключение СтрокаСообщения;
+ КонецЕсли;
+
+ ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипыРеквизита.Получить(0));
+
+ Если Не ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных) Тогда
+
+ СтрокаСообщения = НСтр("ru = 'Выбор значений по умолчанию поддерживается только для справочников.
+ |Реквизит ""%1"".'");
+ СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Реквизит.ПолноеИмя());
+ ВызватьИсключение СтрокаСообщения;
+ КонецЕсли;
+
+ ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя();
+
+ ДанныеТаблицы = Новый Структура("СвойстваОбъектаМетаданных, ТаблицаБазыКорреспондента");
+ ДанныеТаблицы.СвойстваОбъектаМетаданных = СвойстваОбъектаМетаданных(ПолноеИмяОбъектаМетаданных);
+ ДанныеТаблицы.ТаблицаБазыКорреспондента = ПолучитьОбъектыТаблицы(ПолноеИмяОбъектаМетаданных);
+
+ Результат.Вставить(ПолноеИмяОбъектаМетаданных, ДанныеТаблицы);
+
+ КонецЕсли;
КонецЦикла;
@@ -7005,6 +7244,7 @@
Результат.Вставить("{ДополнительныеДанные}", ДополнительныеДанные);
Возврат Результат;
+
КонецФункции
// Для внутреннего использования
@@ -7032,6 +7272,7 @@
ПрефиксИнформационнойБазы = Неопределено;
ПрефиксИнформационнойБазы = ОбменДаннымиПереопределяемый.ПрефиксИнформационнойБазыПоУмолчанию();
+ ОбменДаннымиПереопределяемый.ПриОпределенииПрефиксаИнформационнойБазыПоУмолчанию(ПрефиксИнформационнойБазы);
Результат.ПрефиксИнформационнойБазы = ПолучитьФункциональнуюОпцию("ПрефиксИнформационнойБазы");
Результат.ПрефиксИнформационнойБазыПоУмолчанию = ПрефиксИнформационнойБазы;
@@ -7110,6 +7351,8 @@
СтрокаДерева = ДеревоИнформацииСтатистики.Строки.Найти(СтрокаТаблицы.ИмяТаблицыПриемника, "ПолноеИмя", Истина);
ЗаполнитьЗначенияСвойств(СтрокаДерева, СтрокаТаблицы);
+ СтрокаДерева.Синоним = СинонимДанныхСтрокиДереваСтатистики(СтрокаДерева, СтрокаТаблицы.ТипИсточникаСтрокой);
+
ОбработанныеСтроки[СтрокаТаблицы] = Истина;
КонецЦикла;
@@ -7163,6 +7406,26 @@
Возврат ДеревоИнформацииСтатистики;
КонецФункции
+// Для внутреннего использования
+//
+Функция СинонимДанныхСтрокиДереваСтатистики(СтрокаДерева, ТипИсточникаСтрокой)
+
+ Синоним = СтрокаДерева.Синоним;
+
+ Фильтр = Новый Структура("ПолноеИмя, Синоним", СтрокаДерева.ПолноеИмя, Синоним);
+ Существующие = СтрокаДерева.Владелец().Строки.НайтиСтроки(Фильтр, Истина);
+ Количество = Существующие.Количество();
+ Если Количество = 0 Или (Количество = 1 И Существующие[0] = СтрокаДерева) Тогда
+ // Не было еще такого описания в этом дереве
+ Возврат Синоним;
+ КонецЕсли;
+
+ Синоним = "[СинонимТаблицыПриемника] ([ИмяТаблицыИсточника])";
+ Синоним = СтрЗаменить(Синоним, "[СинонимТаблицыПриемника]", СтрокаДерева.Синоним);
+
+ Возврат СтрЗаменить(Синоним, "[ИмяТаблицыИсточника]", УдалитьИмяКлассаИзИмениОбъекта(ТипИсточникаСтрокой));
+КонецФункции
+
// Для внутреннего использования
//
Процедура ЗаполнитьДеревоИнформацииСтатистикиОдинКоМногим(ДеревоИнформацииСтатистики, ИнформацияСтатистики, Отбор, УжеОбработанныеСтроки)
@@ -7206,11 +7469,7 @@
Если Строка.ЭтоУдалениеОбъекта Тогда
НоваяСтрокаДерева.Картинка = БиблиотекаКартинок.ПометитьНаУдаление;
Иначе
- Синоним = "[СинонимТаблицыПриемника] ([ИмяТаблицыИсточника])";
- Синоним = СтрЗаменить(Синоним, "[СинонимТаблицыПриемника]", НоваяСтрокаДерева.Синоним);
- Синоним = СтрЗаменить(Синоним, "[ИмяТаблицыИсточника]", УдалитьИмяКлассаИзИмениОбъекта(Строка.ТипИсточникаСтрокой));
-
- НоваяСтрокаДерева.Синоним = Синоним;
+ НоваяСтрокаДерева.Синоним = СинонимДанныхСтрокиДереваСтатистики(НоваяСтрокаДерева, Строка.ТипИсточникаСтрокой) ;
КонецЕсли;
КонецЦикла;
КонецЦикла;
@@ -7370,7 +7629,7 @@
КонецПопытки;
Если НетПолныхПрав Тогда
- Результат.ПодробноеОписаниеОшибки = НСтр("ru = 'У пользователя другой программы отсутствует роль ""Полные права"".'");
+ Результат.ПодробноеОписаниеОшибки = НСтр("ru = 'Пользователю, указанному для подключения к другой программе, должны быть назначены роли ""Администратор системы"" и ""Полные права""'");
Результат.КраткоеОписаниеОшибки = Результат.ПодробноеОписаниеОшибки;
Результат.Соединение = Неопределено;
Иначе
@@ -8119,7 +8378,7 @@
//
Процедура ВключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском()
- Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено));
+ ОчиститьСообщениеОбменаДаннымиИзГлавногоУзла();
Константы.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском.Установить(Истина);
@@ -8178,7 +8437,7 @@
ОтменитьТранзакцию();
УстановитьПривилегированныйРежим(Истина);
Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Ложь);
- Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено));
+ ОчиститьСообщениеОбменаДаннымиИзГлавногоУзла();
УстановитьПривилегированныйРежим(Ложь);
ЗаписатьСобытиеПолученияДанных(ГлавныйУзел(),
НСтр("ru = 'Обнаружен возврат к конфигурации базы данных.
@@ -8594,7 +8853,20 @@
Функция ОбработкаДляЗагрузкиДанных(Отказ, Знач УзелИнформационнойБазы, Знач ИмяФайлаСообщенияОбмена) Экспорт
// ИНИЦИАЛИЗАЦИЯ ОБРАБОТКИ ДЛЯ ЗАГРУЗКИ ДАННЫХ
- ОбработкаОбменаДанными = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать();
+ МенеджерОбработки = Обработки.КонвертацияОбъектовИнформационныхБаз;
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("ОбменДаннымиXDTO") Тогда
+
+ МодульОбменДаннымиXDTOПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOПовтИсп");
+ МодульОбменДаннымиXDTOСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOСервер");
+
+ Если МодульОбменДаннымиXDTOПовтИсп.ЭтоПланОбменаXDTO(УзелИнформационнойБазы) Тогда
+ МенеджерОбработки = МодульОбменДаннымиXDTOСервер.ОбработкаКонвертацииДанныхДляУниверсальногоОбмена();
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ОбработкаОбменаДанными = МенеджерОбработки.Создать();
ОбработкаОбменаДанными.РежимОбмена = "Загрузка";
@@ -8615,7 +8887,9 @@
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы);
- УстановитьНастройкиОтладкиЗагрузкиДляПравилОбмена(ОбработкаОбменаДанными, ИмяПланаОбмена);
+ Если ОбработкаОбменаДанными.Метаданные().Реквизиты.Найти("ОтладкаОбработчиковЗагрузки") <> Неопределено Тогда
+ УстановитьНастройкиОтладкиЗагрузкиДляПравилОбмена(ОбработкаОбменаДанными, ИмяПланаОбмена);
+ КонецЕсли;
Возврат ОбработкаОбменаДанными;
КонецФункции
@@ -9745,18 +10019,36 @@
//
Функция ПолучитьОбработкуОбменаДаннымиДляВыгрузки(СтруктураНастроекОбмена)
- ОбработкаОбменаДанными = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать();
+ МенеджерОбработки = Обработки.КонвертацияОбъектовИнформационныхБаз;
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("ОбменДаннымиXDTO") Тогда
+
+ МодульОбменДаннымиXDTOПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOПовтИсп");
+ МодульОбменДаннымиXDTOСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOСервер");
+
+ Если МодульОбменДаннымиXDTOПовтИсп.ЭтоПланОбменаXDTO(СтруктураНастроекОбмена.УзелИнформационнойБазы) Тогда
+ МенеджерОбработки = МодульОбменДаннымиXDTOСервер.ОбработкаКонвертацииДанныхДляУниверсальногоОбмена();
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ОбработкаОбменаДанными = МенеджерОбработки.Создать();
ОбработкаОбменаДанными.РежимОбмена = "Выгрузка";
- УстановитьПравилаОбменаВыгрузкиДанных(ОбработкаОбменаДанными, СтруктураНастроекОбмена);
+ // Если обработка поддерживает механизм правил конвертации
+ Если ОбработкаОбменаДанными.Метаданные().Реквизиты.Найти("ИмяФайлаПравилОбмена") <> Неопределено Тогда
+ УстановитьПравилаОбменаВыгрузкиДанных(ОбработкаОбменаДанными, СтруктураНастроекОбмена);
+ ОбработкаОбменаДанными.НеВыгружатьОбъектыПоСсылкам = Истина;
+ ОбработкаОбменаДанными.ИмяФайлаПравилОбмена = "1";
+ КонецЕсли;
- // задаем узлы обмена
- ОбработкаОбменаДанными.УзелДляОбмена = СтруктураНастроекОбмена.УзелИнформационнойБазы;
- ОбработкаОбменаДанными.УзелДляФоновогоОбмена = Неопределено;
-
- ОбработкаОбменаДанными.НеВыгружатьОбъектыПоСсылкам = Истина;
- ОбработкаОбменаДанными.ИмяФайлаПравилОбмена = "1";
+ // Если обработка поддерживает механизм фонового обмена
+ Если ОбработкаОбменаДанными.Метаданные().Реквизиты.Найти("УзелДляФоновогоОбмена") <> Неопределено Тогда
+ ОбработкаОбменаДанными.УзелДляФоновогоОбмена = Неопределено;
+ КонецЕсли;
+
+ ОбработкаОбменаДанными.УзелДляОбмена = СтруктураНастроекОбмена.УзелИнформационнойБазы;
УстановитьОбщиеПараметрыДляОбработкиОбменаДанными(ОбработкаОбменаДанными, СтруктураНастроекОбмена);
@@ -9768,12 +10060,27 @@
//
Функция ПолучитьОбработкуОбменаДаннымиДляЗагрузки(СтруктураНастроекОбмена)
- ОбработкаОбменаДанными = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать();
+ МенеджерОбработки = Обработки.КонвертацияОбъектовИнформационныхБаз;
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("ОбменДаннымиXDTO") Тогда
+
+ МодульОбменДаннымиXDTOПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOПовтИсп");
+ МодульОбменДаннымиXDTOСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOСервер");
+
+ Если МодульОбменДаннымиXDTOПовтИсп.ЭтоПланОбменаXDTO(СтруктураНастроекОбмена.УзелИнформационнойБазы) Тогда
+ МенеджерОбработки = МодульОбменДаннымиXDTOСервер.ОбработкаКонвертацииДанныхДляУниверсальногоОбмена();
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ОбработкаОбменаДанными = МенеджерОбработки.Создать();
ОбработкаОбменаДанными.РежимОбмена = "Загрузка";
ОбработкаОбменаДанными.УзелОбменаЗагрузкаДанных = СтруктураНастроекОбмена.УзелИнформационнойБазы;
- УстановитьПравилаОбменаЗагрузкиДанных(ОбработкаОбменаДанными, СтруктураНастроекОбмена);
+ Если ОбработкаОбменаДанными.Метаданные().Реквизиты.Найти("ИмяФайлаПравилОбмена") <> Неопределено Тогда
+ УстановитьПравилаОбменаЗагрузкиДанных(ОбработкаОбменаДанными, СтруктураНастроекОбмена);
+ КонецЕсли;
УстановитьОбщиеПараметрыДляОбработкиОбменаДанными(ОбработкаОбменаДанными, СтруктураНастроекОбмена);
@@ -9934,7 +10241,8 @@
//
Процедура УстановитьНастройкиРежимаОтладкиДляОбработки(ОбработкаОбменаДанными, СтруктураНастроекОбмена)
- Если СтруктураНастроекОбмена.Свойство("ИмяФайлаВнешнейОбработкиОтладкиВыгрузки") Тогда
+ Если СтруктураНастроекОбмена.Свойство("ИмяФайлаВнешнейОбработкиОтладкиВыгрузки")
+ И ОбработкаОбменаДанными.Метаданные().Реквизиты.Найти("ИмяФайлаВнешнейОбработкиОтладкиВыгрузки") <> Неопределено Тогда
ОбработкаОбменаДанными.ОтладкаОбработчиковВыгрузки = СтруктураНастроекОбмена.ОтладкаОбработчиковВыгрузки;
ОбработкаОбменаДанными.ОтладкаОбработчиковЗагрузки = СтруктураНастроекОбмена.ОтладкаОбработчиковЗагрузки;
@@ -10458,6 +10766,156 @@
Возврат Результат;
КонецФункции
+// Сравнить две строки версий.
+//
+// Параметры
+// СтрокаВерсии1 - Строка - номер версии в формате РР.{П|ПП}.ЗЗ
+// СтрокаВерсии2 - Строка - второй сравниваемый номер версии
+//
+// Возвращаемое значение:
+// Число - больше 0, если СтрокаВерсии1 > СтрокаВерсии2; 0, если версии равны.
+//
+Функция СравнитьВерсииБезНомераСборки(Знач СтрокаВерсии1, Знач СтрокаВерсии2) Экспорт
+
+ Строка1 = ?(ПустаяСтрока(СтрокаВерсии1), "0.0.0", СтрокаВерсии1);
+ Строка2 = ?(ПустаяСтрока(СтрокаВерсии2), "0.0.0", СтрокаВерсии2);
+ Версия1 = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка1, ".");
+ Если Версия1.Количество() <> 3 Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Неправильный формат параметра СтрокаВерсии1: %1'"), СтрокаВерсии1);
+ КонецЕсли;
+ Версия2 = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка2, ".");
+ Если Версия2.Количество() <> 3 Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Неправильный формат параметра СтрокаВерсии2: %1'"), СтрокаВерсии2);
+ КонецЕсли;
+
+ Результат = 0;
+ Для Разряд = 0 По 2 Цикл
+ Результат = Число(Версия1[Разряд]) - Число(Версия2[Разряд]);
+ Если Результат <> 0 Тогда
+ Возврат Результат;
+ КонецЕсли;
+ КонецЦикла;
+ Возврат Результат;
+
+КонецФункции
+
+// Проверка на различие версии корреспондента в правилах текущей и другой программы
+//
+Функция РазличаютсяВерсииКорреспондента(ИмяПланаОбмена, КлючСообщенияЖурналаРегистрации, ВерсияВЭтойПрограмме,
+ ВерсияВДругойПрограмме, ТекстСообщения, ПараметрыВнешнегоСоединения = Неопределено) Экспорт
+
+ ВерсияВЭтойПрограмме = ?(ЗначениеЗаполнено(ВерсияВЭтойПрограмме), ВерсияВЭтойПрограмме, ВерсияКорреспондентаВПравилах(ИмяПланаОбмена));
+
+ Если ЗначениеЗаполнено(ВерсияВЭтойПрограмме) И ЗначениеЗаполнено(ВерсияВДругойПрограмме)
+ И ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена, "ПредупреждатьОНесоответствииВерсийПравилОбмена") Тогда
+
+ ВерсияВЭтойПрограммеБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ВерсияВЭтойПрограмме);
+ ВерсияВДругойПрограммеБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ВерсияВДругойПрограмме);
+
+ Если ВерсияВЭтойПрограммеБезНомераСборки <> ВерсияВДругойПрограммеБезНомераСборки Тогда
+
+ ЭтоВнешнееСоединение = (ТекстСообщения = "ВнешнееСоединение");
+
+ СинонимПланаОбмена = Метаданные.ПланыОбмена[ИмяПланаОбмена].Синоним;
+
+ ШаблонСообщения = Нстр("ru = 'Синхронизация данных может быть выполнена некорректно, т.к. версия программы ""%1"" (%2) в правилах конвертации этой программы отличается от версии %3 в правилах конвертации в другой программе. Убедитесь, что загружены актуальные правила, подходящие для используемых версий обеих программ.'");
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, СинонимПланаОбмена, ВерсияВЭтойПрограммеБезНомераСборки, ВерсияВДругойПрограммеБезНомераСборки);
+
+ ЗаписьЖурналаРегистрации(КлючСообщенияЖурналаРегистрации, УровеньЖурналаРегистрации.Предупреждение,,, ТекстСообщения);
+
+ Если ПараметрыВнешнегоСоединения <> Неопределено
+ И ОбщегоНазначенияКлиентСервер.СравнитьВерсии("2.2.3.18", ПараметрыВнешнегоСоединения.ВерсияБСППоВнешнемуСоединению) <= 0
+ И ПараметрыВнешнегоСоединения.ВнешнееСоединение.ОбменДаннымиВнешнееСоединение.ПредупреждатьОНесоответствииВерсийПравилОбмена(ИмяПланаОбмена) Тогда
+
+ СинонимПланаОбменаДругойПрограммы = ПараметрыВнешнегоСоединения.УзелИнформационнойБазы.Метаданные().Синоним;
+ ТекстСообщенияВнешнееСоединение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения,
+ СинонимПланаОбменаДругойПрограммы, ВерсияВДругойПрограммеБезНомераСборки, ВерсияВЭтойПрограммеБезНомераСборки);
+
+ ПараметрыВнешнегоСоединения.ВнешнееСоединение.ЗаписьЖурналаРегистрации(ПараметрыВнешнегоСоединения.КлючСообщенияЖурналаРегистрации,
+ ПараметрыВнешнегоСоединения.ВнешнееСоединение.УровеньЖурналаРегистрации.Предупреждение,,, ТекстСообщенияВнешнееСоединение);
+
+ КонецЕсли;
+
+ Если ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных.ПроверятьРасхождениеВерсий Тогда
+
+ СтруктураПроверки = Новый Структура(ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных);
+ СтруктураПроверки.ЕстьОшибка = Истина;
+ СтруктураПроверки.ТекстОшибки = ТекстСообщения;
+ СтруктураПроверки.ПроверятьРасхождениеВерсий = Ложь;
+ ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных = Новый ФиксированнаяСтруктура(СтруктураПроверки);
+ Возврат Истина;
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
+// Для внутреннего использования
+//
+Функция ИнициализироватьПараметрыПроверкиРасхожденияВерсий(ПроверятьРасхождениеВерсий) Экспорт
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ СтруктураПроверки = Новый Структура(ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных);
+ СтруктураПроверки.ПроверятьРасхождениеВерсий = ПроверятьРасхождениеВерсий;
+ СтруктураПроверки.ЕстьОшибка = Ложь;
+ ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных = Новый ФиксированнаяСтруктура(СтруктураПроверки);
+
+ Возврат ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных;
+
+КонецФункции
+
+// Для внутреннего использования
+//
+Функция ОшибкаРасхожденияВерсийПриПолученииДанных() Экспорт
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ Возврат ПараметрыСеанса.ОшибкаРасхожденияВерсийПриПолученииДанных;
+
+КонецФункции
+
+Функция ВерсияКорреспондентаВПравилах(ИмяПланаОбмена)
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ПравилаЗачитанныеКорреспондента,
+ | ПравилаДляОбменаДанными.ВидПравил
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена
+ | И ПравилаДляОбменаДанными.ПравилаЗагружены = ИСТИНА
+ | И ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов)";
+
+ Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена);
+
+ Результат = Запрос.Выполнить();
+
+ Если Не Результат.Пустой() Тогда
+
+ Выборка = Результат.Выбрать();
+ Выборка.Следующий();
+
+ СтруктураПравил = Выборка.ПравилаЗачитанныеКорреспондента.Получить().Конвертация;
+ ВерсияКорреспондента = Неопределено;
+ СтруктураПравил.Свойство("ВерсияКонфигурацииИсточника", ВерсияКорреспондента);
+
+ Возврат ВерсияКорреспондента;
+
+ КонецЕсли;
+
+ Возврат Неопределено;
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Константы
@@ -10640,39 +11098,60 @@
// Возвращает флаг доступности выгрузки для указанной ссылке на узле
//
// Параметры:
-// УзелОбмена: ссылка на узел плана обмена, возможность выгрузки по которому проверяется
-// Ссылка: ссылка на проверяемый объект.
-// ДополнительныеСвойства: необязательная структура с дополнительными свойствами, передаваемыми через объект
+// УзелОбмена - ПланОбменаСсылка - узел плана обмена, возможность выгрузки по которому проверяется
+// Ссылка - Произвольный - проверяемый объект.
+// ДополнительныеСвойства - Структура - дополнительные свойства, передаваемыми через объект
//
-Функция ВыгрузкаСсылкиРазрешена(УзелОбмена, Ссылка, ДополнительныеСвойства=Неопределено) Экспорт
+// Возвращаемое значение:
+// Булево - флаг разрешения
+//
+Функция ВыгрузкаСсылкиРазрешена(УзелОбмена, Ссылка, ДополнительныеСвойства = Неопределено) Экспорт
Если Ссылка.Пустая() Тогда
Возврат Ложь;
КонецЕсли;
- РежимВыгрузкиОбъекта = ОбменДаннымиПовтИсп.РежимВыгрузкиОбъекта(Ссылка.Метаданные().ПолноеИмя(), УзелОбмена);
- Если РежимВыгрузкиОбъекта = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости Тогда
- // Выгружаемые по ссылке можно всегда
- Возврат Истина;
- КонецЕсли;
-
- ОбъектСсылки = Ссылка.ПолучитьОбъект();
- Если ОбъектСсылки=Неопределено Тогда
+ ОбъектРегистрации = Ссылка.ПолучитьОбъект();
+ Если ОбъектРегистрации = Неопределено Тогда
// Объект удален, можно всегда
Возврат Истина;
КонецЕсли;
Если ДополнительныеСвойства <> Неопределено Тогда
- Для Каждого КлючЗначение Из ДополнительныеСвойства Цикл
- ОбъектСсылки.ДополнительныеСвойства.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение);
- КонецЦикла;
+ СтруктураРеквизитов = Новый Структура("ДополнительныеСвойства");
+ ЗаполнитьЗначенияСвойств(СтруктураРеквизитов, ОбъектРегистрации);
+ ДополнительныеСвойстваОбъекта = СтруктураРеквизитов.ДополнительныеСвойства;
+
+ Если ТипЗнч(ДополнительныеСвойстваОбъекта) = Тип("Структура") Тогда
+ Для Каждого КлючЗначение Из ДополнительныеСвойства Цикл
+ ДополнительныеСвойстваОбъекта.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение);
+ КонецЦикла;
+ КонецЕсли;
КонецЕсли;
+ // Проверка возможности выгрузки
Отправка = ОтправкаЭлементаДанных.Авто;
- ОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(ОбъектСсылки, Отправка, , УзелОбмена);
+ ОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(ОбъектРегистрации, Отправка, , УзелОбмена);
Возврат Отправка = ОтправкаЭлементаДанных.Авто;
КонецФункции
+// Возвращает флаг доступности выгрузки вручную для указанной ссылке на узле
+//
+// Параметры:
+// УзелОбмена - ПланОбменаСсылка - узел плана обмена, возможность выгрузки по которому проверяется
+// Ссылка - Произвольный - проверяемый объект.
+//
+// Возвращаемое значение:
+// Булево - флаг разрешения
+//
+Функция ВыгрузкаСсылкиИзИнтерактивногоДополненияРазрешена(УзелОбмена, Ссылка) Экспорт
+
+ ДополнительныеСвойства = Новый Структура("ИнтерактивноеДополнениеВыгрузки", Истина);
+
+ Возврат ВыгрузкаСсылкиРазрешена(УзелОбмена, Ссылка, ДополнительныеСвойства);
+
+КонецФункции
+
// Обертки фоновых процедур интерактивного изменения выгрузки
//
Процедура ИнтерактивноеИзменениеВыгрузки_СформироватьТабличныйДокументПользователя(СтруктураОбработки, АдресРезультата, ПолноеИмяМетаданных, Представление, УпрощенныйРежим) Экспорт
@@ -10807,6 +11286,63 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Процедуры и функции для работы с константой СообщениеОбменаДаннымиИзГлавногоУзла
+//
+
+// Зачитывает из информационной базы информацию о сообщении обмена данными
+//
+// Возвращаемое значение - Структура - Информация о расположении файла сообщения обмена (текущий формат)
+// - ДвоичныеДанные - Сообщение обмена в информационной базе (устаревший формат)
+//
+Функция ПолучитьСообщениеОбменаДаннымиИзГлавногоУзла()
+
+ Возврат Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить();
+
+КонецФункции
+
+// Записывает на диск файл сообщения обмена, полученный из главного узла.
+// Сохраняет путь к записанному сообщению в константу СообщениеОбменаДаннымиИзГлавногоУзла.
+//
+// Параметры:
+// СообщениеОбмена - ДвоичныеДанные - Зачитанное сообщение обмена
+// ГлавныйУзел - ПланОбменаСсылка - Узел из которого получено сообщение
+//
+Процедура УстановитьСообщениеОбменаДаннымиИзГлавногоУзла(СообщениеОбмена, ГлавныйУзел) Экспорт
+
+ ПутьКФайлу = "[Каталог][Путь].xml";
+ ПутьКФайлу = СтрЗаменить(ПутьКФайлу, "[Каталог]", КаталогВременногоХранилищаФайлов());
+ ПутьКФайлу = СтрЗаменить(ПутьКФайлу, "[Путь]", Новый УникальныйИдентификатор);
+
+ СообщениеОбмена.Записать(ПутьКФайлу);
+
+ СтруктураСообщения = Новый Структура;
+ СтруктураСообщения.Вставить("ПутьКФайлу", ПутьКФайлу);
+
+ Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(СтруктураСообщения));
+
+ ЗаписатьСобытиеПолученияДанных(ГлавныйУзел, НСтр("ru = 'Сообщение обмена записано в кэш.'"));
+
+КонецПроцедуры
+
+// Удаляет файл сообщения обмена с диска и очищает константу СообщениеОбменаДаннымиИзГлавногоУзла
+//
+Процедура ОчиститьСообщениеОбменаДаннымиИзГлавногоУзла() Экспорт
+
+ СообщениеОбмена = ПолучитьСообщениеОбменаДаннымиИзГлавногоУзла();
+
+ Если ТипЗнч(СообщениеОбмена) = Тип("Структура") Тогда
+
+ УдалитьФайлы(СообщениеОбмена.ПутьКФайлу);
+
+ КонецЕсли;
+
+ Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено));
+
+ ЗаписатьСобытиеПолученияДанных(ГлавныйУзел(), НСтр("ru = 'Сообщение обмена удалено из кэша.'"));
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Профили безопасности
//
@@ -10935,7 +11471,7 @@
// Возвращаемое значение:
// Структура - данные для дальнейшего оперирования дополнением выгрузки
//
-Функция ИнтерактивноеИзменениеВыгрузки(Знач УзелИнформационнойБазы, Знач АдресХранилищаФормы, Знач ЕстьСценарийУзла = Неопределено) Экспорт
+Функция ИнтерактивноеИзменениеВыгрузки(Знач УзелИнформационнойБазы, Знач АдресХранилищаФормы, Знач ЕстьСценарийУзла=Неопределено) Экспорт
Результат = Новый Структура;
Результат.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы);
@@ -10997,7 +11533,7 @@
МетаУзел = УзелИнформационнойБазы.Метаданные();
- Если ЕстьСценарийУзла = Неопределено Тогда
+ Если ЕстьСценарийУзла=Неопределено Тогда
// Можно определить по метаданным узла
ЕстьСценарийУзла = Ложь;
КонецЕсли;
@@ -11005,16 +11541,7 @@
Если ЕстьСценарийУзла Тогда
МодульМенеджераУзла = ПланыОбмена[МетаУзел.Имя];
- МожноНастраивать = Ложь;
- Попытка
- МожноНастраивать = МодульМенеджераУзла.НастраиватьИнтерактивнуюВыгрузку(УзелИнформационнойБазы);
- Исключение
- // Обработка не требуется, считаем функционал недоступным
- КонецПопытки;
-
- Если МожноНастраивать Тогда
- МодульМенеджераУзла.НастроитьИнтерактивнуюВыгрузку(УзелИнформационнойБазы, Результат.ПараметрыСценарияДополнения);
- КонецЕсли;
+ МодульМенеджераУзла.НастроитьИнтерактивнуюВыгрузку(УзелИнформационнойБазы, Результат.ПараметрыСценарияДополнения);
КонецЕсли;
@@ -11130,7 +11657,7 @@
ЗаполнитьТаблицуЗначений(ДополнениеВыгрузки.ДополнительнаяРегистрация, ОбработкаДополнения.ДополнительнаяРегистрация);
- // Настройки по сценарию узла обновляем только если они определены в прочитанных данных. Иначе оставляем текущее
+ // Настройки по сценарию узла обновляем только если они определены в прочитанном. Иначе оставляем текущее
Если ОбработкаДополнения.ДополнительнаяРегистрацияСценарияУзла.Количество() > 0 Тогда
ЗаполнитьЗначенияСвойств(ДополнениеВыгрузки, ОбработкаДополнения, "ПериодОтбораСценарияУзла, ПредставлениеОтбораСценарияУзла");
ЗаполнитьТаблицуЗначений(ДополнениеВыгрузки.ДополнительнаяРегистрацияСценарияУзла, ОбработкаДополнения.ДополнительнаяРегистрацияСценарияУзла);
@@ -11186,7 +11713,6 @@
ДополнениеВыгрузки.ПредставлениеТекущейНастройки = ПредставлениеНастройки;
КонецПроцедуры
-
// Заполняет реквизит формы по данным структуры настроек
//
// Параметры:
@@ -11370,7 +11896,7 @@
//
Процедура ИнтерактивноеИзменениеВыгрузкиЗарегистрироватьДополнительныеДанные(Знач ДополнениеВыгрузки) Экспорт
- Если ДополнениеВыгрузки.ВариантВыгрузки<=0 Тогда
+ Если ДополнениеВыгрузки.ВариантВыгрузки <= 0 Тогда
Возврат;
КонецЕсли;
@@ -11482,7 +12008,7 @@
ЕстьПодсистемаКопирования = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных");
Если ЕстьПодсистемаКопирования Тогда
- МодульРезервноеКопированиеОбластейДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанных");
+ МодульРезервноеКопированиеОбластейДанных = ОбщегоНазначения.ОбщийМодуль("РезервноеКопированиеОбластейДанных");
ПоддержкаРезервногоКопирования = МодульРезервноеКопированиеОбластейДанных.РезервноеКопированиеИспользуется();
ЕстьПраваНаСозданиеКопии = Пользователи.ЭтоПолноправныйПользователь();
diff --git a/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl
index 00cfa15b9..9f715394d 100644
--- a/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl
+++ b/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl
@@ -11,6 +11,8 @@
// ИмяПланаОбмена - Строка - имя плана обмена, для которого выполняется механизм регистрации
// Источник - ДокументОбъект - источник события
// Отказ - Булево - флаг отказа от выполнения обработчика
+// РежимЗаписи - см. в синтаксис-помощнике РежимЗаписиДокумента
+// РежимПроведения - см. в синтаксис-помощнике РежимПроведенияДокумента
//
Процедура МеханизмРегистрацииОбъектовПередЗаписьюДокумента(ИмяПланаОбмена, Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
@@ -141,6 +143,10 @@
// Вычитает один массив элементов из другого массива. Возвращает результат вычитания.
//
+// Параметры:
+// Массив - Массив - Исходный массив
+// МассивВычитания - Массив - Массив, вычитаемый из исходного массива
+//
Функция СократитьМассив(Массив, МассивВычитания) Экспорт
Возврат ОбщегоНазначенияКлиентСервер.СократитьМассив(Массив, МассивВычитания);
@@ -210,6 +216,44 @@
КонецФункции
+// Проверяет наличие запрета загрузки элемента данных.
+// Для работы функции требуется настройка процедуры ДанныеДляПроверкиЗапретаИзменения
+// модуля ДатыЗапретаИзмененияПереопределяемый.
+//
+// Параметры:
+// Данные - СправочникОбъект.<Имя>,
+// ДокументОбъект.<Имя>,
+// ПланВидовХарактеристикОбъект.<Имя>,
+// ПланСчетовОбъект.<Имя>,
+// ПланВидовРасчетаОбъект.<Имя>,
+// БизнесПроцессОбъект.<Имя>,
+// ЗадачаОбъект.<Имя>,
+// ПланОбменаОбъект.<Имя>,
+// УдалениеОбъекта - объект данных.
+// РегистрСведенийНаборЗаписей.<Имя>,
+// РегистрНакопленияНаборЗаписей.<Имя>,
+// РегистрБухгалтерииНаборЗаписей.<Имя>,
+// РегистрРасчетаНаборЗаписей.<Имя> - набор записей.
+//
+// УзелПланаОбмена - ПланыОбменаСсылка.<Имя плана обмена> - узел,
+// для которого будет выполнена проверка.
+//
+// Возвращаемое значение:
+// Булево - если Истина, загрузка запрещена.
+//
+Функция ЗагрузкаЗапрещена(Данные, Знач УзелПланаОбмена) Экспорт
+
+ Если Данные.ДополнительныеСвойства.Свойство("НайденЗапретЗагрузкиДанных") Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ ПолучениеЭлемента = ПолучениеЭлементаДанных.Авто;
+ ПроверитьНаличиеЗапретаЗагрузкиПоДате(Данные, ПолучениеЭлемента, УзелПланаОбмена);
+
+ Возврат ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать;
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
@@ -372,7 +416,21 @@
// Для данных, выгружаемых по ссылке, дополнительно заносим сведения в фильтр разрешенных к выгрузке объектов.
// Это нужно для того, чтобы данные прошли фильтр при выгрузке и были выгружены в сообщение обмена.
- РегистрыСведений.СоответствияОбъектовИнформационныхБаз.ДобавитьОбъектВФильтрРазрешенныхОбъектов(Данные.Ссылка, Получатель);
+ СтандартнаяОбработка = Истина;
+ Если ОбщегоНазначения.ПодсистемаСуществует("ОбменДаннымиXDTO") Тогда
+
+ МодульОбменДаннымиXDTOПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOПовтИсп");
+ МодульОбменДаннымиXDTOСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOСервер");
+
+ Если МодульОбменДаннымиXDTOПовтИсп.ЭтоПланОбменаXDTO(Получатель) Тогда
+ МодульОбменДаннымиXDTOСервер.ДобавитьОбъектВФильтрРазрешенныхОбъектов(Данные.Ссылка, Получатель);
+ СтандартнаяОбработка = Ложь;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если СтандартнаяОбработка Тогда
+ РегистрыСведений.СоответствияОбъектовИнформационныхБаз.ДобавитьОбъектВФильтрРазрешенныхОбъектов(Данные.Ссылка, Получатель);
+ КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
@@ -779,7 +837,7 @@
// на всех узлах разделенных планов обмена.
// Использование механизма правил регистрации в этом режиме не поддерживается.
ЗарегистрироватьИзмененияНаВсехУзлахРазделенныхПлановОбмена(ИмяПланаОбмена, Объект);
- Возврат;
+ Возврат;
КонецЕсли;
@@ -787,7 +845,12 @@
ОбменДаннымиВызовСервера.ПроверитьКэшМеханизмаРегистрацииОбъектов();
- Если НЕ ОбменДаннымиВызовСервера.ОбменДаннымиВключен(ИмяПланаОбмена) Тогда
+ // определяем необходимость регистрации объекта на узле отправителе
+ Если Объект.ДополнительныеСвойства.Свойство("РегистрироватьОбъектНаУзлеОтправителе") Тогда
+ Объект.ОбменДанными.Отправитель = Неопределено;
+ КонецЕсли;
+
+ Если Не ОбменДаннымиВызовСервера.ОбменДаннымиВключен(ИмяПланаОбмена, Объект.ОбменДанными.Отправитель) Тогда
Возврат;
КонецЕсли;
@@ -796,16 +859,14 @@
Возврат;
КонецЕсли;
- // определяем необходимость регистрации объекта на узле отправителе
- Если Объект.ДополнительныеСвойства.Свойство("РегистрироватьОбъектНаУзлеОтправителе") Тогда
- Объект.ОбменДанными.Отправитель = Неопределено;
- КонецЕсли;
-
// при физическом удалении объекта ВРО не выполняем
- ЗарегистрироватьОбъектКВыгрузке = ЭтоРегистр ИЛИ ЭтоУдалениеОбъекта ИЛИ ЭтоКонстанта;
+ ЗарегистрироватьОбъектКВыгрузке = ЭтоРегистр Или ЭтоУдалениеОбъекта Или ЭтоКонстанта;
- ОбъектМодифицирован = ОбъектМодифицированДляПланаОбмена(Объект, ОбъектМетаданных, ИмяПланаОбмена,
- РежимЗаписи, ЗарегистрироватьОбъектКВыгрузке);
+ ОбъектМодифицирован = Объект.ДополнительныеСвойства.Свойство("ОтложеннаяЗапись")
+ Или Объект.ДополнительныеСвойства.Свойство("ОтложенноеПроведение")
+ Или ОбъектМодифицированДляПланаОбмена(
+ Объект, ОбъектМетаданных, ИмяПланаОбмена, РежимЗаписи, ЗарегистрироватьОбъектКВыгрузке
+ );
Если Не ОбъектМодифицирован Тогда
@@ -842,6 +903,7 @@
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными.Правила регистрации объектов'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ ОбработатьОшибкуПравилРегистрации(ИмяПланаОбмена);
Отказ = Истина;
КонецПопытки;
@@ -865,7 +927,7 @@
Для Каждого Получатель Из Получатели Цикл
Объект.ОбменДанными.Получатели.Добавить(Получатель);
КонецЦикла;
-
+
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -886,22 +948,18 @@
Функция ОбъектМодифицированДляПланаОбменаПопыткаИсключение(Источник, ОбъектМетаданных, ИмяПланаОбмена, РежимЗаписи, ЗарегистрироватьОбъектКВыгрузке)
- Если ЗарегистрироватьОбъектКВыгрузке
- ИЛИ Источник.ЭтоНовый()
- ИЛИ Источник.ОбменДанными.Загрузка Тогда
-
- // для наборов записей регистров,
- // при физическом удалении объектов,
- // для новых объектов,
- // для объектов записанных по обмену данными
- // регистрируем изменения всегда
+ Если ЗарегистрироватьОбъектКВыгрузке Или Источник.ЭтоНовый() Или Источник.ОбменДанными.Загрузка Тогда
+ // Регистрируем изменения всегда
+ // - для наборов записей регистров,
+ // - при физическом удалении объектов,
+ // - для новых объектов,
+ // - для объектов записанных по обмену данными
Возврат Истина;
- ИначеЕсли РежимЗаписи <> Неопределено
- И ИзмененоПроведениеДокумента(Источник, РежимЗаписи) Тогда
-
- // если изменен признак документа "Проведен", то считаем документ измененным
+ ИначеЕсли РежимЗаписи <> Неопределено И ИзмененоПроведениеДокумента(Источник, РежимЗаписи) Тогда
+ // Если изменен признак документа "Проведен", то считаем документ измененным
Возврат Истина;
+
КонецЕсли;
ИмяОбъекта = ОбъектМетаданных.ПолноеИмя();
@@ -909,11 +967,9 @@
ТаблицаРеквизитовРегистрации = ОбменДаннымиПовтИсп.ПолучитьТаблицуРеквизитовРегистрации(ИмяОбъекта, ИмяПланаОбмена);
Если ТаблицаРеквизитовРегистрации.Количество() = 0 Тогда
-
- // если правила ВРО не заданы, то считаем, что фильтра ВРО нет.
+ // Если правила ВРО не заданы, то считаем, что фильтра ВРО нет.
// объект модифицирован всегда
Возврат Истина;
-
КонецЕсли;
Для Каждого СтрокаТаблицыРеквизитовРегистрации ИЗ ТаблицаРеквизитовРегистрации Цикл
@@ -921,15 +977,12 @@
ЕстьИзмененияВерсийОбъектов = ОпределитьИзмененияВерсийОбъекта(Источник, СтрокаТаблицыРеквизитовРегистрации);
Если ЕстьИзмененияВерсийОбъектов Тогда
-
Возврат Истина;
-
КонецЕсли;
КонецЦикла;
- // если дошли до конца, то объект не изменился по реквизитам регистрации;
- // регистрация на узлах не нужна
+ // Если дошли до конца, то объект не изменился по реквизитам регистрации. Регистрация на узлах не нужна
Возврат Ложь;
КонецФункции
@@ -1274,32 +1327,54 @@
//
Функция ПолучитьМассивУзловДляРегистрацииВыгружатьПриНеобходимости(Ссылка, Знач ИмяПланаОбмена, Знач ИмяРеквизитаФлага) Экспорт
- ТекстЗапроса = "
- |ВЫБРАТЬ РАЗЛИЧНЫЕ
- | ШапкаПланаОбмена.Ссылка КАК Узел
- |ИЗ
- | ПланОбмена.[ИмяПланаОбмена] КАК ШапкаПланаОбмена
- |ЛЕВОЕ СОЕДИНЕНИЕ
- | РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
- |ПО
- | ШапкаПланаОбмена.Ссылка = СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы
- | И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &Объект
- |ГДЕ
- | ШапкаПланаОбмена.Ссылка <> &ЭтотУзел
- | И ШапкаПланаОбмена.[ИмяРеквизитаФлага] = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости)
- | И НЕ ШапкаПланаОбмена.ПометкаУдаления
- | И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &Объект
- |";
+ МассивУзлов = Новый Массив;
- ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяПланаОбмена]", ИмяПланаОбмена);
- ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяРеквизитаФлага]", ИмяРеквизитаФлага);
+ СтандартнаяОбработка = Истина;
+ Если ОбщегоНазначения.ПодсистемаСуществует("ОбменДаннымиXDTO") Тогда
+
+ МодульОбменДаннымиXDTOПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOПовтИсп");
+ МодульОбменДаннымиXDTOСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиXDTOСервер");
+
+ Если МодульОбменДаннымиXDTOПовтИсп.ЭтоПланОбменаXDTO(ИмяПланаОбмена) Тогда
+ СтандартнаяОбработка = Ложь;
+ МассивУзлов = МодульОбменДаннымиXDTOСервер.МассивУзловДляРегистрацииВыгружатьПриНеобходимости(
+ Ссылка, ИмяПланаОбмена, ИмяРеквизитаФлага);
+ КонецЕсли;
+ КонецЕсли;
- Запрос = Новый Запрос;
- Запрос.Текст = ТекстЗапроса;
- Запрос.УстановитьПараметр("ЭтотУзел", ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена));
- Запрос.УстановитьПараметр("Объект", Ссылка);
+ Если СтандартнаяОбработка Тогда
+
+ ТекстЗапроса = "
+ |ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | ШапкаПланаОбмена.Ссылка КАК Узел
+ |ИЗ
+ | ПланОбмена.[ИмяПланаОбмена] КАК ШапкаПланаОбмена
+ |ЛЕВОЕ СОЕДИНЕНИЕ
+ | РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
+ |ПО
+ | ШапкаПланаОбмена.Ссылка = СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы
+ | И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &Объект
+ |ГДЕ
+ | ШапкаПланаОбмена.Ссылка <> &ЭтотУзел
+ | И ШапкаПланаОбмена.[ИмяРеквизитаФлага] = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости)
+ | И НЕ ШапкаПланаОбмена.ПометкаУдаления
+ | И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = &Объект
+ |";
+
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяПланаОбмена]", ИмяПланаОбмена);
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяРеквизитаФлага]", ИмяРеквизитаФлага);
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = ТекстЗапроса;
+ Запрос.УстановитьПараметр("ЭтотУзел", ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена));
+ Запрос.УстановитьПараметр("Объект", Ссылка);
+
+ МассивУзлов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Узел");
+
+ КонецЕсли;
+
+ Возврат МассивУзлов;
- Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Узел");
КонецФункции
Процедура ВыполнитьПравилоРегистрацииОбъектаДляНабораЗаписей(МассивУзловРезультат,
@@ -2624,6 +2699,16 @@
КонецФункции
+Процедура ОбработатьОшибкуПравилРегистрации(ИмяПланаОбмена)
+
+ Если ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы()
+ И РегистрыСведений.ПравилаДляОбменаДанными.ИспользуютсяПравилаИзФайла(ИмяПланаОбмена) Тогда
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ОбменДанными=%1", ИмяПланаОбмена);
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
+ КонецЕсли;
+
+КонецПроцедуры
+
// Создает новый экземпляр объекта Структура, заполняет объект данными указанной структуры.
//
// Параметры:
diff --git a/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl b/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl
index 83d46ac91..24b08d340 100644
--- a/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl
+++ b/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl
@@ -123,7 +123,6 @@
// Завершаем запись сообщения
ЗаписьСообщения.ЗакончитьЗапись();
-
ДанныеСообщения = ЗаписьXML.Закрыть();
Исключение
diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl
index 72351b135..66fb99652 100644
--- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl
@@ -126,6 +126,12 @@
ИтерацияОбновления = ОбновлениеИнформационнойБазыСлужебный.ИтерацияОбновления(ИдентификаторБиблиотеки,
ВерсияМетаданныхИБ, ОбработчикиОбновления);
+
+ Параметры = Новый Структура;
+ Параметры.Вставить("ХодВыполненияОбработчиков", ХодВыполненияОбработчиков);
+ Параметры.Вставить("ОперативноеОбновление", ОперативноеОбновление);
+ Параметры.Вставить("ВФоне", Ложь);
+
Возврат ОбновлениеИнформационнойБазыСлужебный.ВыполнитьИтерациюОбновления(ИтерацияОбновления,
ХодВыполненияОбработчиков, ОперативноеОбновление);
@@ -221,5 +227,76 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Прочие процедуры и функции.
+//
+
+// Удаляет отложенный обработчики из очереди выполняемых обработчиков на новую версию.
+//
+// Параметры:
+// ИмяОбработчика - Строка - полное имя процедуры отложенного обработчика.
+//
+Процедура УдалитьОтложенныйОбработчикИзОчереди(ИмяОбработчика) Экспорт
+
+ СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы();
+
+ ОтобранныйОбработчик = СведенияОбОбновлении.ДеревоОбработчиков.Строки.НайтиСтроки(Новый Структура("ИмяОбработчика", ИмяОбработчика), Истина);
+ Если ОтобранныйОбработчик <> Неопределено И ОтобранныйОбработчик.Количество() > 0 Тогда
+
+ Для Каждого СтрокаОбработчик Из ОтобранныйОбработчик Цикл
+ СтрокаОбработчик.Родитель.Строки.Удалить(СтрокаОбработчик);
+ КонецЦикла;
+
+ КонецЕсли;
+
+ ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
+
+КонецПроцедуры
+
+// Возвращает таблицу с версиями подсистем конфигурации.
+// Для пакетной выгрузки-загрузки сведений о версиях подсистем.
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - таблица с колонками:
+// * ИмяПодсистемы - Строка - имя подсистемы.
+// * Версия - Строка - версия подсистемы.
+//
+Функция ВерсииПодсистем() Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ВерсииПодсистем.ИмяПодсистемы КАК ИмяПодсистемы,
+ | ВерсииПодсистем.Версия КАК Версия
+ |ИЗ
+ | РегистрСведений.ВерсииПодсистем КАК ВерсииПодсистем";
+
+ Возврат Запрос.Выполнить().Выгрузить();
+
+КонецФункции
+
+// Устанавливает версии всех подсистем.
+// Для пакетной выгрузки-загрузки сведений о версиях подсистем.
+//
+// Параметры:
+// ВерсииПодсистем - ТаблицаЗначений - таблица с колонками:
+// * ИмяПодсистемы - Строка - имя подсистемы.
+// * Версия - Строка - версия подсистемы.
+//
+Процедура УстановитьВерсииПодсистем(ВерсииПодсистем) Экспорт
+
+ НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей();
+
+ Для каждого Версия Из ВерсииПодсистем Цикл
+ НоваяЗапись = НаборЗаписей.Добавить();
+ НоваяЗапись.ИмяПодсистемы = Версия.ИмяПодсистемы;
+ НоваяЗапись.Версия = Версия.Версия;
+ НоваяЗапись.ЭтоОсновнаяКонфигурация = (Версия.ИмяПодсистемы = Метаданные.Имя);
+ КонецЦикла;
+
+ НаборЗаписей.Записать();
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl
index 3146f8ad0..f569e79f5 100644
--- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl
@@ -27,7 +27,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
- Описание.Версия = "2.2.2.48";
+ Описание.Версия = "2.2.3.44";
КонецПроцедуры
diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl
index eab9bf736..3a487f4d5 100644
--- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl
@@ -65,33 +65,4 @@
КонецПроцедуры
-// Проверяет статус отложенных обработчиков обновления.
-//
-Функция ЕстьНеВыполненныеОбработчики() Экспорт
-
- Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
- Возврат "";
- КонецЕсли;
-
- СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы();
- Если СведенияОбОбновлении = Неопределено Тогда
- Возврат "";
- КонецЕсли;
-
- Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл
- Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл
- Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл
- Если Обработчик.Статус = "Ошибка" Тогда
- Возврат "СтатусОшибка";
- ИначеЕсли Обработчик.Статус <> "Выполнено" Тогда
- Возврат "СтатусНеВыполнено";
- КонецЕсли;
- КонецЦикла;
- КонецЦикла;
- КонецЦикла;
-
- Возврат "";
-
-КонецФункции
-
#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl
index 6c98e6787..20454f962 100644
--- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl
@@ -10,26 +10,12 @@
//
Процедура ПроверитьСтатусОтложенногоОбновления() Экспорт
- ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента();
+ ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
- Если ПараметрыРаботыКлиента.РазделениеВключено Тогда
- Возврат;
- КонецЕсли;
-
- Если ОбновлениеИнформационнойБазыВызовСервера.ЕстьНеВыполненныеОбработчики() <> "" Тогда
-
- Если ПараметрыРаботыКлиента.ЭтоПолноправныйПользователь Тогда
-
- Если ОбновлениеИнформационнойБазыВызовСервера.ЕстьНеВыполненныеОбработчики() = "СтатусОшибка" Тогда
- ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ИндикацияХодаОтложенногоОбновленияИБ");
- Иначе
- ОбновлениеИнформационнойБазыКлиент.ОповеститьОтложенныеОбработчикиНеВыполнены();
- КонецЕсли;
-
- Иначе
- ОбновлениеИнформационнойБазыКлиент.ОповеститьОтложенныеОбработчикиНеВыполнены();
- КонецЕсли;
-
+ Если ПараметрыКлиента.Свойство("ПоказатьСообщениеОбОшибочныхОбработчиках") Тогда
+ ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ИндикацияХодаОтложенногоОбновленияИБ");
+ Иначе
+ ОбновлениеИнформационнойБазыКлиент.ОповеститьОтложенныеОбработчикиНеВыполнены();
КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl
index 6b25aaeb4..30f4efa96 100644
--- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl
@@ -82,7 +82,7 @@
Процедура ПослеЗакрытияФормыИндикацияХодаОбновленияИБ(Результат, Параметры) Экспорт
Если ТипЗнч(Результат) <> Тип("Структура") Тогда
- Результат = Новый Структура("Отказ", Истина);
+ Результат = Новый Структура("Отказ, Перезапустить", Истина, Ложь);
КонецЕсли;
Если Результат.Отказ Тогда
@@ -140,7 +140,8 @@
ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
- Если Не ПараметрыКлиента.РазделениеВключено Тогда
+ Если ПараметрыКлиента.Свойство("ПоказатьСообщениеОбОшибочныхОбработчиках")
+ Или ПараметрыКлиента.Свойство("ПоказатьОповещениеОНевыполненныхОбработчиках") Тогда
ПодключитьОбработчикОжидания("ПроверитьСтатусОтложенногоОбновления", 2, Истина);
КонецЕсли;
diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl
index 90ac005c7..013cdd1f2 100644
--- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl
@@ -18,7 +18,7 @@
// ТекущаяВерсияИБ - Строка - версия ИБ после обновления.
// ВыполненныеОбработчики - ДеревоЗначений - список выполненных процедур-обработчиков
// обновления, сгруппированных по номеру версии.
-// Итерирование по выполненным обработчикам:
+// Для перебора выполненных обработчиков:
// Для Каждого Версия Из ВыполненныеОбработчики.Строки Цикл
//
// Если Версия.Версия = "*" Тогда
@@ -39,11 +39,11 @@
// Истина - обновление выполнялось в монопольном режиме.
//
Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсияИБ, Знач ТекущаяВерсияИБ,
- Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт
+ Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт
КонецПроцедуры
-// Вызывается при подготовке табличного документа с описанием изменений системы.
+// Вызывается при подготовке табличного документа с описанием изменений программы.
//
// Параметры:
// Макет - ТабличныйДокумент - описание обновлений.
@@ -54,13 +54,13 @@
КонецПроцедуры
-// Получает список обработчиков обновления ИБ, которые не нужно выполнять.
-// Отключать можно только те обработчики, у которых номер версии "*".
+// Вызывается для получения списка обработчиков обновления, которые не нужно выполнять.
+// Отключать можно только обработчики обновления с номером версии "*".
//
// Пример добавления отключаемого обработчика в список:
// НовоеИсключение = ОтключаемыеОбработчики.Добавить();
// НовоеИсключение.ИдентификаторБиблиотеки = "СтандартныеПодсистемы";
-// НовоеИсключение.Версия = "2.1.2.3";
+// НовоеИсключение.Версия = "*";
// НовоеИсключение.Процедура = "ВариантыОтчетов.Обновить";
//
// Версия - номер версии конфигурации, в которой нужно отключить
diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl
index 48789d401..79dedf811 100644
--- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебный/Module.bsl
@@ -124,6 +124,11 @@
СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовИсключенийПланаОбмена"].Добавить(
"ОбновлениеИнформационнойБазыСлужебный");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "ОбновлениеИнформационнойБазыСлужебный");
+ КонецЕсли;
+
КонецПроцедуры
// Инициализирует параметр сеанса ВыполняетсяОбновлениеИБ.
@@ -179,12 +184,11 @@
// для этого недостаточно прав, иначе возвращает пустую строку.
//
// Параметры:
-// УчитыватьПривилегированныйРежим - Булево. Начальное значение Истина. Если указать Ложь,
-// то при проверке полноправности текущего пользователя
+// УчитыватьПривилегированныйРежим - Булево - если указать Ложь, то при проверке прав текущего пользователя
// наличие привилегированного режима не будет учитываться.
//
// Возвращаемое значение:
-// Строка. Если база не заблокирована, тогда пустая строка, иначе сообщение о причине блокировки.
+// Строка - если база не заблокирована, тогда пустая строка, иначе сообщение о причине блокировки.
//
Функция ИнформационнаяБазаЗаблокированаДляОбновления(УчитыватьПривилегированныйРежим = Истина) Экспорт
@@ -192,6 +196,7 @@
ТекущийПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
+ // Для входа в заблокированную базу достаточно только одного права администрирования.
Если УчитыватьПривилегированныйРежим Тогда
ЕстьПравоАдминистрирование = ПравоДоступа("Администрирование", Метаданные);
Иначе
@@ -418,16 +423,21 @@
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("ШагПрогресса=20/75");
КонецЕсли;
+ Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено()
+ Или ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
+ СформироватьСписокОтложенныхОбработчиковОбновления(ИтерацииОбновления);
+ КонецЕсли;
+
Попытка
- ХодВыполненияОбработчиков = КоличествоОбработчиковНаТекущуюВерсию(ИтерацииОбновления);
+ Параметры = Новый Структура;
+ Параметры.Вставить("ХодВыполненияОбработчиков", КоличествоОбработчиковНаТекущуюВерсию(ИтерацииОбновления));
+ Параметры.Вставить("ОперативноеОбновление", ОперативноеОбновление);
+ Параметры.Вставить("ВФоне", ВФоне);
+
// Выполняем все обработчики обновления для подсистем конфигурации.
Для Каждого ИтерацияОбновления Из ИтерацииОбновления Цикл
- ИтерацияОбновления.ВыполненныеОбработчики = ВыполнитьИтерациюОбновления(
- ИтерацияОбновления,
- ХодВыполненияОбработчиков,
- ОперативноеОбновление,
- ВФоне);
+ ИтерацияОбновления.ВыполненныеОбработчики = ВыполнитьИтерациюОбновления(ИтерацияОбновления, Параметры);
КонецЦикла;
Если ВФоне Тогда
@@ -435,17 +445,13 @@
КонецЕсли;
// Для файловой базы отложенные обработчики выполняются в основном цикле обновления
- Если ОбщегоНазначения.ИнформационнаяБазаФайловая() И
- (Не ОбщегоНазначенияПовтИсп.РазделениеВключено()
- Или ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных()) Тогда
-
- ЗапланироватьОтложенноеОбновление(ИтерацииОбновления);
+ Если ОбщегоНазначения.ИнформационнаяБазаФайловая()
+ И (Не ОбщегоНазначенияПовтИсп.РазделениеВключено()
+ Или ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных()) Тогда
ПараметрЗапускаКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска");
Если Найти(НРег(ПараметрЗапускаКлиента), НРег("ОтладкаОтложенногоОбновления")) = 0 Тогда
-
ВыполнитьОтложенноеОбновлениеСейчас();
-
КонецЕсли;
КонецЕсли;
@@ -498,7 +504,7 @@
Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено()
Или ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
- ЗапланироватьОтложенноеОбновление(ИтерацииОбновления);
+ ЗапланироватьОтложенноеОбновление();
КонецЕсли;
КонецЕсли;
@@ -529,7 +535,9 @@
// которая хранится в информационной базе.
//
// Параметры
-// ИдентификаторБиблиотеки - Строка - имя конфигурации или идентификатор библиотеки.
+// ИдентификаторБиблиотеки - Строка - имя конфигурации или идентификатор библиотеки.
+// ПолучитьВерсиюОбщихДанных - Булево - если указать Истина, то при работе в модели сервиса будет
+// возвращена версия в общих данных.
//
// Возвращаемое значение:
// Строка - версия.
@@ -604,8 +612,9 @@
// Записывает в информационную базу версию конфигурации или родительской конфигурации (библиотеки).
//
// Параметры:
-// ИдентификаторБиблиотеки - Строка, имя конфигурации или родительской конфигурации (библиотеки),
-// НомерВерсии - Строка, номер версии.
+// ИдентификаторБиблиотеки - Строка - имя конфигурации или родительской конфигурации (библиотеки),
+// НомерВерсии - Строка - номер версии.
+// ЭтоОсновнаяКонфигурация - Булево - признак, что ИдентификаторБиблиотеки соответствует имени конфигурации.
//
Процедура УстановитьВерсиюИБ(Знач ИдентификаторБиблиотеки, Знач НомерВерсии, Знач ЭтоОсновнаяКонфигурация) Экспорт
@@ -795,12 +804,6 @@
// Вызывается при выполнении скрипта обновления из процедуры ОбновлениеКонфигурации.ЗавершитьОбновление().
Процедура ПослеЗавершенияОбновления() Экспорт
- СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
-
- Если СведенияОбОбновлении = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
ЗаписатьПодтверждениеЛегальностиПолученияОбновлений();
КонецПроцедуры
@@ -905,17 +908,13 @@
// Для внутреннего использования.
//
-Функция ВыполнитьИтерациюОбновления(Знач ИтерацияОбновления, Знач ХодВыполненияОбработчиков, Знач ОперативноеОбновление = Ложь, Знач ВФоне = Ложь) Экспорт
+Функция ВыполнитьИтерациюОбновления(Знач ИтерацияОбновления, Знач Параметры) Экспорт
ИдентификаторБиблиотеки = ИтерацияОбновления.Подсистема;
ВерсияМетаданныхИБ = ИтерацияОбновления.Версия;
ОбработчикиОбновления = ИтерацияОбновления.Обработчики;
- ТекущаяВерсияИБ = ВерсияИБ(ИдентификаторБиблиотеки);
- // Для предотвращения неоднозначности с переходом с другой конфигурации.
- Если ТекущаяВерсияИБ = "0.0.0.0" Тогда
- УстановитьВерсиюИБ(ИдентификаторБиблиотеки, ТекущаяВерсияИБ, ИтерацияОбновления.ЭтоОсновнаяКонфигурация);
- КонецЕсли;
+ ТекущаяВерсияИБ = ИтерацияОбновления.ПредыдущаяВерсия;
НоваяВерсияИБ = ТекущаяВерсияИБ;
ВерсияМетаданных = ВерсияМетаданныхИБ;
@@ -945,7 +944,7 @@
ВыполняемыеОбработчики = ОбработчикиОбновленияВИнтервале(ОбработчикиОбновления, ТекущаяВерсияИБ, ВерсияМетаданных);
КонецЕсли;
- ОтключитьОбработчикиОбновления(ИдентификаторБиблиотеки, ВыполняемыеОбработчики, ВерсияМетаданных, ХодВыполненияОбработчиков);
+ ОтключитьОбработчикиОбновления(ИдентификаторБиблиотеки, ВыполняемыеОбработчики, ВерсияМетаданных, Параметры.ХодВыполненияОбработчиков);
ОбязательныеРазделенныеОбработчики = ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления();
ИсходнаяВерсияИБ = ТекущаяВерсияИБ;
@@ -957,7 +956,9 @@
Сообщение = НСтр("ru = 'Выполняются обязательные процедуры обновления информационной базы.'");
Иначе
НоваяВерсияИБ = Версия.Версия;
- Если ИтерацияОбновления.ЭтоОсновнаяКонфигурация Тогда
+ Если ТекущаяВерсияИБ = "0.0.0.0" Тогда
+ Сообщение = НСтр("ru = 'Выполняется начальное заполнение данных.'");
+ ИначеЕсли ИтерацияОбновления.ЭтоОсновнаяКонфигурация Тогда
Сообщение = НСтр("ru = 'Выполняется обновление информационной базы с версии %1 на версию %2.'");
Иначе
Сообщение = НСтр("ru = 'Выполняется обновление данных библиотеки %3 с версии %1 на версию %2.'");
@@ -978,7 +979,7 @@
КонецЕсли;
Если Обработчик.МонопольныйРежим = Истина Тогда
- Если ОперативноеОбновление Тогда
+ Если Параметры.ОперативноеОбновление Тогда
// Проверки выполняются в ВозможноОперативноеОбновление, а само обновление для таких
// обработчиков выполняется только при неоперативном обновлении.
Продолжить;
@@ -992,16 +993,13 @@
КонецЕсли;
ДополнительныеПараметры = Новый Структура("ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, ХодВыполненияОбработчиков, ВФоне",
- ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, ХодВыполненияОбработчиков, ВФоне);
+ ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, Параметры.ХодВыполненияОбработчиков, Параметры.ВФоне);
ВыполнитьОбработчикОбновления(Обработчик, ПараметрыОбработчика, ДополнительныеПараметры);
КонецЦикла;
Если Версия.Версия = "*" Тогда
Сообщение = НСтр("ru = 'Выполнены обязательные процедуры обновления информационной базы.'");
Иначе
- // Установка номера версии информационной базы
- УстановитьВерсиюИБ(ИдентификаторБиблиотеки, НоваяВерсияИБ, ИтерацияОбновления.ЭтоОсновнаяКонфигурация);
-
Если ИтерацияОбновления.ЭтоОсновнаяКонфигурация Тогда
Сообщение = НСтр("ru = 'Выполнено обновление информационной базы с версии %1 на версию %2.'");
Иначе
@@ -1010,10 +1008,15 @@
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение,
ТекущаяВерсияИБ, НоваяВерсияИБ, ИдентификаторБиблиотеки);
- ТекущаяВерсияИБ = НоваяВерсияИБ;
КонецЕсли;
ЗаписатьИнформацию(Сообщение);
+ Если Версия.Версия <> "*" Тогда
+ // Установка номера версии информационной базы
+ УстановитьВерсиюИБ(ИдентификаторБиблиотеки, НоваяВерсияИБ, ИтерацияОбновления.ЭтоОсновнаяКонфигурация);
+ ТекущаяВерсияИБ = НоваяВерсияИБ;
+ КонецЕсли;
+
КонецЦикла;
// Установка номера версии информационной базы
@@ -1135,11 +1138,20 @@
ПараметрыСеанса.ПараметрыКлиентаНаСервере = ПараметрыОбновленияИБ.ПараметрыКлиентаНаСервере;
КонецЕсли;
- Результат = ВыполнитьОбновлениеИнформационнойБазы(
- ПараметрыОбновленияИБ.ИсключениеПриНевозможностиБлокировкиИБ, Истина, Ложь,
- ПараметрыОбновленияИБ.БлокировкаИБ, ПараметрыОбновленияИБ.ВФоне);
+ ИнформацияОбОшибке = Неопределено;
+ Попытка
+ Результат = ВыполнитьОбновлениеИнформационнойБазы(
+ ПараметрыОбновленияИБ.ИсключениеПриНевозможностиБлокировкиИБ, Истина, Ложь,
+ ПараметрыОбновленияИБ.БлокировкаИБ, ПараметрыОбновленияИБ.ВФоне);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ КонецПопытки;
- Если Не ПараметрыОбновленияИБ.ВФоне Тогда
+ Если ИнформацияОбОшибке <> Неопределено Тогда
+ РезультатОбновления = Новый Структура;
+ РезультатОбновления.Вставить("КраткоеСообщениеОбОшибке", КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
+ РезультатОбновления.Вставить("ПодробноеСообщениеОбОшибке", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
+ ИначеЕсли Не ПараметрыОбновленияИБ.ВФоне Тогда
РезультатОбновления = Результат;
Иначе
РезультатОбновления = Новый Структура;
@@ -1298,7 +1310,13 @@
Модуль.ПриДобавленииОбработчиковПереходаСДругойПрограммы(ОбработчикиПерехода);
КонецЦикла;
- Возврат ОбработчикиПерехода.НайтиСтроки(Новый Структура("ПредыдущееИмяКонфигурации", ПредыдущееИмяКонфигурации));
+ Отбор = Новый Структура("ПредыдущееИмяКонфигурации", "*");
+ Результат = ОбработчикиПерехода.НайтиСтроки(Отбор);
+
+ Отбор.ПредыдущееИмяКонфигурации = ПредыдущееИмяКонфигурации;
+ ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, ОбработчикиПерехода.НайтиСтроки(Отбор), Истина);
+
+ Возврат Результат;
КонецФункции
@@ -1308,7 +1326,8 @@
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
- | ВерсииПодсистем.ИмяПодсистемы КАК ИмяПодсистемы
+ | ВерсииПодсистем.ИмяПодсистемы КАК ИмяПодсистемы,
+ | ВерсииПодсистем.Версия КАК Версия
|ИЗ
| РегистрСведений.ВерсииПодсистем КАК ВерсииПодсистем
|ГДЕ
@@ -1323,7 +1342,9 @@
ВызватьИсключение НСтр("ru = 'При работе в модели сервиса переход с другой программы не предусмотрен.'");
КонецЕсли;
- ПредыдущееИмяКонфигурации = Запрос.Выполнить().Выгрузить()[0].ИмяПодсистемы;
+ РезультатЗапроса = Запрос.Выполнить().Выгрузить()[0];
+ ПредыдущееИмяКонфигурации = РезультатЗапроса.ИмяПодсистемы;
+ ПредыдущаяВерсияКонфигурации = РезультатЗапроса.Версия;
Обработчики = ОбработчикиПереходаСДругойПрограммы(ПредыдущееИмяКонфигурации);
// Выполняем все обработчики перехода.
@@ -1336,7 +1357,7 @@
ИмяОбработчика = Обработчик.Процедура;
ЗаписатьОшибку(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'При вызове обработчика перехода с другой программы:
+ НСтр("ru = 'При вызове обработчика перехода с другой программы
|""%1""
|произошла ошибка:
|""%2"".'"),
@@ -1349,28 +1370,65 @@
КонецЦикла;
+ Параметры = Новый Структура();
+ Параметры.Вставить("ВыполнитьОбновлениеСВерсии", Истина);
+ Параметры.Вставить("ВерсияКонфигурации", Метаданные.Версия);
+ Параметры.Вставить("ОчиститьСведенияОПредыдущейКонфигурации", Истина);
+ ПриЗавершенииПереходаСДругойПрограммы(ПредыдущееИмяКонфигурации, ПредыдущаяВерсияКонфигурации, Параметры);
+
// Установка текущих имени и версии конфигурации
НачатьТранзакцию();
- НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей();
- НаборЗаписей.Отбор.ИмяПодсистемы.Установить(ПредыдущееИмяКонфигурации);
- НаборЗаписей.Записать();
-
- НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей();
- НаборЗаписей.Отбор.ИмяПодсистемы.Установить(Метаданные.Имя);
-
- НоваяЗапись = НаборЗаписей.Добавить();
- НоваяЗапись.ИмяПодсистемы = Метаданные.Имя;
- НоваяЗапись.Версия = Метаданные.Версия;
- НоваяЗапись.ПланОбновления = Неопределено;
- НоваяЗапись.ЭтоОсновнаяКонфигурация = Истина;
-
- НаборЗаписей.Записать();
- ЗафиксироватьТранзакцию();
+ Попытка
+ Если Параметры.ОчиститьСведенияОПредыдущейКонфигурации Тогда
+ НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей();
+ НаборЗаписей.Отбор.ИмяПодсистемы.Установить(ПредыдущееИмяКонфигурации);
+ НаборЗаписей.Записать();
+ КонецЕсли;
+
+ НаборЗаписей = РегистрыСведений.ВерсииПодсистем.СоздатьНаборЗаписей();
+ НаборЗаписей.Отбор.ИмяПодсистемы.Установить(Метаданные.Имя);
+
+ ВерсияКонфигурации = Метаданные.Версия;
+ Если Параметры.ВыполнитьОбновлениеСВерсии Тогда
+ ВерсияКонфигурации = Параметры.ВерсияКонфигурации;
+ КонецЕсли;
+ НоваяЗапись = НаборЗаписей.Добавить();
+ НоваяЗапись.ИмяПодсистемы = Метаданные.Имя;
+ НоваяЗапись.Версия = ВерсияКонфигурации;
+ НоваяЗапись.ПланОбновления = Неопределено;
+ НоваяЗапись.ЭтоОсновнаяКонфигурация = Истина;
+
+ НаборЗаписей.Записать();
+ ЗафиксироватьТранзакцию();
+ Исключение
+ ОтменитьТранзакцию();
+ ВызватьИсключение;
+ КонецПопытки;
ОбновитьПовторноИспользуемыеЗначения();
КонецПроцедуры
+Процедура ПриЗавершенииПереходаСДругойПрограммы(ПредыдущееИмяКонфигурации, ПредыдущаяВерсияКонфигурации, Параметры)
+
+ ИмяКонфигурации = Метаданные.Имя;
+ ОписанияПодсистем = СтандартныеПодсистемыПовтИсп.ОписанияПодсистем();
+ Для каждого ИмяПодсистемы Из ОписанияПодсистем.Порядок Цикл
+ ОписаниеПодсистемы = ОписанияПодсистем.ПоИменам.Получить(ИмяПодсистемы);
+ Если НЕ ЗначениеЗаполнено(ОписаниеПодсистемы.ОсновнойСерверныйМодуль) Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если ОписаниеПодсистемы.Имя <> ИмяКонфигурации Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Модуль = ОбщегоНазначения.ОбщийМодуль(ОписаниеПодсистемы.ОсновнойСерверныйМодуль);
+ Модуль.ПриЗавершенииПереходаСДругойПрограммы(ПредыдущееИмяКонфигурации, ПредыдущаяВерсияКонфигурации, Параметры);
+ КонецЦикла;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Протоколирование хода обновления
@@ -1480,37 +1538,24 @@
////////////////////////////////////////////////////////////////////////////////
// Механизм отложенного обновления
-// Удаляет отложенный обработчики из очереди выполняемых обработчиков на новую версию.
+// Формирует дерево отложенных обработчиков и записывает его в константу СведенияОбОбновленииИБ
//
-// Параметры:
-// ИмяОбработчика - Строка - Строковый идентификатор отложенного обработчика.
-//
-Процедура УдалитьОтложенныйОбработчикИзОчереди(ИмяОбработчика) Экспорт
-
- СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
-
- Если СведенияОбОбновлении = Неопределено Тогда
- Возврат;
- КонецЕсли;
-
- ОтобранныйОбработчик = СведенияОбОбновлении.ДеревоОбработчиков.Строки.НайтиСтроки(Новый Структура("ИмяОбработчика", ИмяОбработчика), Истина);
- Если ОтобранныйОбработчик <> Неопределено И ОтобранныйОбработчик.Количество() > 0 Тогда
-
- Для Каждого СтрокаОбработчик Из ОтобранныйОбработчик Цикл
- СтрокаОбработчик.Родитель.Строки.Удалить(СтрокаОбработчик);
- КонецЦикла;
-
- КонецЕсли;
-
- ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
-
-КонецПроцедуры
-
-// Формирует дерево отложенных обработчиков и активирует регламентное задание.
-Процедура ЗапланироватьОтложенноеОбновление(ИтерацииОбновления)
+Процедура СформироватьСписокОтложенныхОбработчиковОбновления(ИтерацииОбновления)
ДеревоОбработчиков = ВыполненныеОбработчикиПрошлыхВерсий(ИтерацииОбновления);
- СведенияОбОбновлении = НовыеСведенияОбОбновлении();
+ СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
+
+ // Устанавливаем начальные значения полей.
+ СведенияОбОбновлении.Вставить("ВремяНачалаОбновления");
+ СведенияОбОбновлении.Вставить("ВремяОкончанияОбновления");
+ СведенияОбОбновлении.Вставить("ПродолжительностьОбновления");
+ СведенияОбОбновлении.Вставить("ВремяНачалаОтложенногоОбновления");
+ СведенияОбОбновлении.Вставить("ВремяОкончаниеОтложенногоОбновления");
+ СведенияОбОбновлении.Вставить("НомерСеанса", Новый СписокЗначений());
+ СведенияОбОбновлении.Вставить("ПараметрыОбработчикаОбновления");
+ СведенияОбОбновлении.Вставить("ОтложенноеОбновлениеЗавершеноУспешно");
+ СведенияОбОбновлении.Вставить("ДеревоОбработчиков", Новый ДеревоЗначений());
+ СведенияОбОбновлении.Вставить("ВыводитьОписаниеОбновлений", Ложь);
ИмяБиблиотеки = "";
НомерВерсии = "";
@@ -1594,6 +1639,12 @@
СведенияОбОбновлении.ДеревоОбработчиков = ДеревоОбработчиков;
ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
+КонецПроцедуры
+
+// Планирует выполнение отложенного обновления в клиент-серверной базе.
+//
+Процедура ЗапланироватьОтложенноеОбновление()
+
// Планирование выполнения регламентного задания
// При работе в модели сервиса - добавляется регламентное задание в очередь
Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
@@ -1633,6 +1684,12 @@
СведенияОбОбновлении.НомерСеанса.Добавить(НомерСеансаИнформационнойБазы());
ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
+ // В сеансе регламентного задания проверка даты запрета изменения отключается.
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда
+ МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный");
+ МодульДатыЗапретаИзмененияСлужебный.ПропуститьПроверкуЗапретаИзменения(Истина);
+ КонецЕсли;
+
Если Не ВыполнитьОтложенныйОбработчикОбновления(СведенияОбОбновлении) Тогда
ОтключитьОтложенноеОбновление();
КонецЕсли;
@@ -1680,16 +1737,14 @@
КонецЕсли;
СведенияОбОбновленииИБ = Константы.СведенияОбОбновленииИБ.Получить().Получить();
- Если ТипЗнч(СведенияОбОбновленииИБ) = Тип("Структура") Тогда
- Если СведенияОбОбновленииИБ.Количество() = 1 Тогда
- СведенияОбОбновленииИБ = Неопределено;
- Иначе
- СведенияОбОбновленииИБ = НовыеСведенияОбОбновлении(СведенияОбОбновленииИБ);
- КонецЕсли;
- Иначе
- СведенияОбОбновленииИБ = Неопределено;
+ Если ТипЗнч(СведенияОбОбновленииИБ) <> Тип("Структура") Тогда
+ Возврат НовыеСведенияОбОбновлении();
КонецЕсли;
-
+ Если СведенияОбОбновленииИБ.Количество() = 1 Тогда
+ Возврат НовыеСведенияОбОбновлении();
+ КонецЕсли;
+
+ СведенияОбОбновленииИБ = НовыеСведенияОбОбновлении(СведенияОбОбновленииИБ);
Возврат СведенияОбОбновленииИБ;
КонецФункции
@@ -1698,17 +1753,11 @@
Процедура ЗаписатьСведенияОбОбновленииИнформационнойБазы(Знач СведенияОбОбновлении) Экспорт
Если СведенияОбОбновлении = Неопределено Тогда
- НовоеЗначение = Новый Структура;
+ НовоеЗначение = НовыеСведенияОбОбновлении();
Иначе
НовоеЗначение = СведенияОбОбновлении;
КонецЕсли;
- СтароеЗначение = Константы.СведенияОбОбновленииИБ.Получить().Получить();
-
- Если ТипЗнч(СтароеЗначение) = Тип("Структура") И СтароеЗначение.Свойство("ЛегальнаяВерсия") Тогда
- НовоеЗначение.Вставить("ЛегальнаяВерсия", СтароеЗначение.ЛегальнаяВерсия);
- КонецЕсли;
-
МенеджерКонстанты = Константы.СведенияОбОбновленииИБ.СоздатьМенеджерЗначения();
МенеджерКонстанты.Значение = Новый ХранилищеЗначения(НовоеЗначение);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(МенеджерКонстанты);
@@ -1739,11 +1788,8 @@
Если РежимОбновленияДанныхВЛокальномРежимеРаботы() = "НачальноеЗаполнение" Тогда
ЛегальнаяВерсия = Метаданные.Версия;
Иначе
- УстановитьПривилегированныйРежим(Истина);
- Свойства = Константы.СведенияОбОбновленииИБ.Получить().Получить();
- Если ТипЗнч(Свойства) = Тип("Структура") И Свойства.Свойство("ЛегальнаяВерсия") Тогда
- ЛегальнаяВерсия = Свойства.ЛегальнаяВерсия;
- КонецЕсли;
+ СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
+ ЛегальнаяВерсия = СведенияОбОбновлении.ЛегальнаяВерсия;
КонецЕсли;
Возврат ЛегальнаяВерсия <> Метаданные.Версия;
@@ -1759,18 +1805,9 @@
Возврат;
КонецЕсли;
- СтароеЗначение = Константы.СведенияОбОбновленииИБ.Получить().Получить();
- Если ТипЗнч(СтароеЗначение) = Тип("Структура") Тогда
- НовоеЗначение = СтароеЗначение;
- Иначе
- НовоеЗначение = Новый Структура;
- КонецЕсли;
-
- НовоеЗначение.Вставить("ЛегальнаяВерсия", Метаданные.Версия);
-
- МенеджерКонстанты = Константы.СведенияОбОбновленииИБ.СоздатьМенеджерЗначения();
- МенеджерКонстанты.Значение = Новый ХранилищеЗначения(НовоеЗначение);
- ОбновлениеИнформационнойБазы.ЗаписатьДанные(МенеджерКонстанты);
+ СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
+ СведенияОбОбновлении.ЛегальнаяВерсия = Метаданные.Версия;
+ ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении);
КонецПроцедуры
@@ -1806,6 +1843,20 @@
Параметры.Вставить("НачальноеЗаполнениеДанных", РежимОбновленияДанных() = "НачальноеЗаполнение");
Параметры.Вставить("ПоказатьОписаниеИзмененийСистемы", ПоказатьОписаниеИзмененийСистемы());
+ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
+ Возврат;
+ КонецЕсли;
+ СтатусОбработчиков = СтатусНевыполненныхОбработчиков();
+ Если СтатусОбработчиков = "" Тогда
+ Возврат;
+ КонецЕсли;
+ Если СтатусОбработчиков = "СтатусОшибка"
+ И Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
+ Параметры.Вставить("ПоказатьСообщениеОбОшибочныхОбработчиках");
+ Иначе
+ Параметры.Вставить("ПоказатьОповещениеОНевыполненныхОбработчиках");
+ КонецЕсли;
+
КонецПроцедуры
// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме.
@@ -1907,6 +1958,60 @@
КонецПроцедуры
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь
+ // не делается проверка существования подсистемы.
+ МодульТекущиеДелаСлужебныйПовтИсп = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСлужебныйПовтИсп");
+
+ ПринадлежностьОбъектов = МодульТекущиеДелаСлужебныйПовтИсп.ПринадлежностьОбъектовРазделамКомандногоИнтерфейса();
+ Разделы = ПринадлежностьОбъектов[Метаданные.Обработки.ОбновлениеИнформационнойБазы.ПолноеИмя()];
+
+ Если Разделы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ СтатусОбработчиков = СтатусНевыполненныхОбработчиков();
+ ЕстьОбработчикиСОшибкой = (СтатусОбработчиков = "СтатусОшибка");
+ ЕстьНеВыполненныеОбработчики = (СтатусОбработчиков = "СтатусНеВыполнено");
+
+ Для Каждого Раздел Из Разделы Цикл
+ Идентификатор = "ОтложенноеОбновление" + СтрЗаменить(Раздел.ПолноеИмя(), ".", "");
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = Идентификатор;
+ Дело.ЕстьДела = (ЕстьОбработчикиСОшибкой Или ЕстьНеВыполненныеОбработчики);
+ Дело.Важное = ЕстьОбработчикиСОшибкой;
+ Дело.Представление = НСтр("ru = 'Обновление программы не завершено'");
+ Дело.Форма = "Обработка.ОбновлениеИнформационнойБазы.Форма.ИндикацияХодаОтложенногоОбновленияИБ";
+ Дело.Владелец = Раздел;
+ КонецЦикла;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики условных вызовов в другие подсистемы
@@ -2263,7 +2368,6 @@
Процедура ВыполнитьОбработчикОбновления(Обработчик, Параметры, ДополнительныеПараметры)
ЗаписатьИнформациюОХодеОбновления(Обработчик, ДополнительныеПараметры.ХодВыполненияОбработчиков, ДополнительныеПараметры.ВФоне);
-
Если ДополнительныеПараметры.ЗаписыватьВЖурнал Тогда
ОписаниеОбработчика =
ПодготовитьДетальнуюИнформациюОХодеОбновления(Обработчик, Параметры, ДополнительныеПараметры.ИдентификаторБиблиотеки);
@@ -2287,11 +2391,12 @@
КонецЕсли;
ИмяОбработчика = Обработчик.Процедура + "(" + ?(ПараметрыОбработчика = Неопределено, "", "Параметры") + ")";
+
ЗаписатьОшибку(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При вызове обработчика обновления:
- |""%1""
- |произошла ошибка:
- |""%2"".'"),
+ |""%1""
+ |произошла ошибка:
+ |""%2"".'"),
ИмяОбработчика,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
@@ -2405,7 +2510,9 @@
Процедура ПроверитьВложеннуюТранзакцию(ТранзакцияАктивнаНаНачалоВыполнения, НазваниеОбработчика)
+ ИмяСобытия = СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка());
Если ТранзакцияАктивнаНаНачалоВыполнения Тогда
+
Если ТранзакцияАктивна() Тогда
// Проверка поглощенных исключений в обработчиках
Попытка
@@ -2416,11 +2523,7 @@
|При активных транзакциях, открытых выше по стеку, исключение также необходимо пробрасывать выше по стеку.'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, НазваниеОбработчика);
- ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Ошибка,
- ,
- ,
- Комментарий);
+ ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, Комментарий);
ВызватьИсключение(Комментарий);
КонецПопытки;
Иначе
@@ -2428,11 +2531,7 @@
|Обработчиком обновления была закрыта лишняя транзакция, открытая ранее (выше по стеку).'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, НазваниеОбработчика);
- ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Ошибка,
- ,
- ,
- Комментарий);
+ ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, Комментарий);
ВызватьИсключение(Комментарий);
КонецЕсли;
Иначе
@@ -2441,11 +2540,7 @@
|Открытая внутри обработчика обновления транзакция осталась активной (не была закрыта или отменена).'");
Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, НазваниеОбработчика);
- ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
- УровеньЖурналаРегистрации.Ошибка,
- ,
- ,
- Комментарий);
+ ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, Комментарий);
ВызватьИсключение(Комментарий);
КонецЕсли;
КонецЕсли;
@@ -2549,7 +2644,7 @@
КонецЦикла;
- Сообщение = НСтр("ru = 'Для обновления информационной базы на новую версию будут выполнены обработчики: %1'");
+ Сообщение = НСтр("ru = 'Для обновления программы на новую версию будут выполнены обработчики: %1'");
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, КоличествоОбработчиков);
ЗаписатьИнформацию(Сообщение);
@@ -2627,8 +2722,7 @@
Функция ПоказатьОписаниеИзмененийСистемы()
СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
- Если СведенияОбОбновлении <> Неопределено И СведенияОбОбновлении.Свойство("ВыводитьОписаниеОбновлений")
- И СведенияОбОбновлении.ВыводитьОписаниеОбновлений = Ложь Тогда
+ Если СведенияОбОбновлении.ВыводитьОписаниеОбновлений = Ложь Тогда
Возврат Ложь;
КонецЕсли;
@@ -2716,7 +2810,7 @@
Разделы.Добавить(ВесВерсии, Версия);
КонецЦикла;
- Разделы.СортироватьПоЗначению();
+ Разделы.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
КонецЕсли;
Константы.РазделыОписанияИзмененийСистемы.Установить(Новый ХранилищеЗначения(Разделы));
@@ -2796,9 +2890,9 @@
Функция ВыполненныеОбработчикиПрошлыхВерсий(ИтерацииОбновления)
СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
- Если СведенияОбОбновлении <> Неопределено
- И Не СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Истина
- И СведенияОбОбновлении.ДеревоОбработчиков <> Неопределено Тогда
+ Если СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно <> Истина
+ И СведенияОбОбновлении.ДеревоОбработчиков <> Неопределено
+ И СведенияОбОбновлении.ДеревоОбработчиков.Строки.Количество() > 0 Тогда
НеобходимоСохранитьНевыполненныеОбработчики = Ложь;
Для Каждого Библиотека Из ИтерацииОбновления Цикл
@@ -2812,7 +2906,7 @@
ЭлементДерева.ЧислоПопыток = 0;
КонецЦикла;
- // Поиск невыполненных обработчиков, которые необходимо сохранить для повторного запуска..
+ // Поиск невыполненных обработчиков, которые необходимо сохранить для повторного запуска.
НайденныеОбработчики = СведенияОбОбновлении.ДеревоОбработчиков.Строки.НайтиСтроки(Новый Структура("Статус, ИмяБиблиотеки", "НеВыполнено", Библиотека.Подсистема), Истина);
Для Каждого ЭлементДерева Из НайденныеОбработчики Цикл
Если ЭлементДерева.НомерВерсии <> "*"
@@ -3045,11 +3139,12 @@
СведенияОбОбновлении.Вставить("ПродолжительностьОбновления");
СведенияОбОбновлении.Вставить("ВремяНачалаОтложенногоОбновления");
СведенияОбОбновлении.Вставить("ВремяОкончаниеОтложенногоОбновления");
- СведенияОбОбновлении.Вставить("НомерСеанса");
+ СведенияОбОбновлении.Вставить("НомерСеанса", Новый СписокЗначений());
СведенияОбОбновлении.Вставить("ПараметрыОбработчикаОбновления");
СведенияОбОбновлении.Вставить("ОтложенноеОбновлениеЗавершеноУспешно");
- СведенияОбОбновлении.Вставить("ДеревоОбработчиков");
- СведенияОбОбновлении.Вставить("ВыводитьОписаниеОбновлений");
+ СведенияОбОбновлении.Вставить("ДеревоОбработчиков", Новый ДеревоЗначений());
+ СведенияОбОбновлении.Вставить("ВыводитьОписаниеОбновлений", Ложь);
+ СведенияОбОбновлении.Вставить("ЛегальнаяВерсия", "");
Если ТипЗнч(СтарыеСведения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(СведенияОбОбновлении, СтарыеСведения);
@@ -3077,4 +3172,25 @@
КонецФункции
+// Проверяет статус отложенных обработчиков обновления.
+//
+Функция СтатусНевыполненныхОбработчиков()
+
+ СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
+ Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл
+ Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл
+ Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл
+ Если Обработчик.Статус = "Ошибка" Тогда
+ Возврат "СтатусОшибка";
+ ИначеЕсли Обработчик.Статус <> "Выполнено" Тогда
+ Возврат "СтатусНеВыполнено";
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+ КонецЦикла;
+
+ Возврат "";
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl
index 79c164960..81321e5d9 100644
--- a/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl
@@ -107,11 +107,13 @@
КонфигурацияИзменена = ?(ЕстьДоступДляОбновления Или ЕстьДоступДляПроверкиОбновления, КонфигурацияИзменена(), Ложь);
+ СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОбновлениеКонфигурации", "НастройкиОбновленияКонфигурации");
+
Настройки = Новый Структура;
- Настройки.Вставить("КороткоеИмяКонфигурации", КороткоеИмяКонфигурации());
- Настройки.Вставить("АдресСервераДляПроверкиНаличияОбновления", АдресСервераДляПроверкиНаличияОбновления());
- Настройки.Вставить("КаталогОбновлений", КаталогОбновлений());
- Настройки.Вставить("АдресРесурсаДляПроверкиНаличияОбновления", АдресРесурсаДляПроверкиНаличияОбновления());
+ Настройки.Вставить("КороткоеИмяКонфигурации", КороткоеИмяКонфигурации(СтруктураНастройки));
+ Настройки.Вставить("АдресСервераДляПроверкиНаличияОбновления", АдресСервераДляПроверкиНаличияОбновления(СтруктураНастройки));
+ Настройки.Вставить("КаталогОбновлений", КаталогОбновлений(СтруктураНастройки));
+ Настройки.Вставить("АдресРесурсаДляПроверкиНаличияОбновления", АдресРесурсаДляПроверкиНаличияОбновления(СтруктураНастройки));
Настройки.Вставить("АдресСервисаПроверкиЛегальности", АдресСервисаПроверкиЛегальности());
Настройки.Вставить("КонфигурацияИзменена", КонфигурацияИзменена);
Настройки.Вставить("ПроверитьПрошлыеОбновленияБазы", ОбновлениеКонфигурацииУспешно() <> Неопределено);
@@ -167,9 +169,15 @@
//
// Возвращаемое значение:
// Строка - короткое имя конфигурации.
-Функция КороткоеИмяКонфигурации()
+Функция КороткоеИмяКонфигурации(СтруктураНастройки)
- Значение = ОбновлениеКонфигурацииПереопределяемый.КороткоеИмяКонфигурации() + "/";
+ Значение = ОбновлениеКонфигурацииПереопределяемый.КороткоеИмяКонфигурации();
+ Если Не ЗначениеЗаполнено(Значение) Тогда
+ Значение = "";
+ КонецЕсли;
+ ОбновлениеКонфигурацииПереопределяемый.ПриОпределенииКраткогоИмениКонфигурации(Значение);
+
+ Значение = Значение + "/";
// Определение редакции конфигурации
ПодстрокиВерсии = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Метаданные.Версия, ".");
@@ -181,17 +189,13 @@
ПодстрокиВерсии = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИнформацияСистемная.ВерсияПриложения, ".");
Значение = Значение + ПодстрокиВерсии[0] + ПодстрокиВерсии[1] + "/";
- СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
- "ОбновлениеКонфигурации",
- "НастройкиОбновленияКонфигурации");
-
Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя
- ИспользоватьЗначениеНастройки = Ложь;
+ ИспользоватьЗначениеНастройки = Ложь;
СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиКороткоеИмяКонфигурации", ИспользоватьЗначениеНастройки);
Если ИспользоватьЗначениеНастройки = Истина Тогда
Значение = СтруктураНастройки.КороткоеИмяКонфигурации;
- КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
Возврат Значение;
@@ -207,76 +211,62 @@
//
// Возврат "localhost"; // локальный веб-сервер для тестирования.
//
-Функция АдресСервераДляПроверкиНаличияОбновления()
+Функция АдресСервераДляПроверкиНаличияОбновления(СтруктураНастройки)
- Значение = "downloads.1c.ru"; // Значение по умолчанию
-
- ЗначениеПереопределяемогоМодуля = ОбновлениеКонфигурацииПереопределяемый.АдресСервераДляПроверкиНаличияОбновления();
- Если НЕ ПустаяСтрока(ЗначениеПереопределяемогоМодуля) Тогда // Переопределяемое значение
- Значение = ЗначениеПереопределяемогоМодуля;
+ Значение = ОбновлениеКонфигурацииПереопределяемый.АдресСервераДляПроверкиНаличияОбновления();
+ Если Не ЗначениеЗаполнено(Значение) Тогда
+ Значение = "downloads.1c.ru"; // Значение по умолчанию
КонецЕсли;
+ ОбновлениеКонфигурацииПереопределяемый.ПриОпределенииАдресаСервераДляПроверкиНаличияОбновления(Значение);
- СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
- "ОбновлениеКонфигурации",
- "НастройкиОбновленияКонфигурации");
-
Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя
- ИспользоватьЗначениеНастройки = Ложь;
+ ИспользоватьЗначениеНастройки = Ложь;
СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиАдресСервераДляПроверкиНаличияОбновления", ИспользоватьЗначениеНастройки);
Если ИспользоватьЗначениеНастройки = Истина Тогда
Значение = СтруктураНастройки.АдресСервераДляПроверкиНаличияОбновления;
КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
Возврат Значение;
КонецФункции
-Функция КаталогОбновлений()
+Функция КаталогОбновлений(СтруктураНастройки)
- Значение = ОбновлениеКонфигурацииКлиентСервер.ДобавитьКонечныйРазделительПути(Метаданные.АдресКаталогаОбновлений); // Значение по умолчанию
-
- ЗначениеПереопределяемогоМодуля = ОбновлениеКонфигурацииПереопределяемый.КаталогОбновлений();
- Если НЕ ПустаяСтрока(ЗначениеПереопределяемогоМодуля) Тогда // Переопределяемое значение
- Значение = ОбновлениеКонфигурацииКлиентСервер.ДобавитьКонечныйРазделительПути(ЗначениеПереопределяемогоМодуля);
+ Значение = ОбновлениеКонфигурацииПереопределяемый.КаталогОбновлений();
+ Если Не ЗначениеЗаполнено(Значение) Тогда
+ Значение = ОбновлениеКонфигурацииКлиентСервер.ДобавитьКонечныйРазделительПути(Метаданные.АдресКаталогаОбновлений); // Значение по умолчанию
КонецЕсли;
- СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
- "ОбновлениеКонфигурации",
- "НастройкиОбновленияКонфигурации");
+ ОбновлениеКонфигурацииПереопределяемый.ПриОпределенииАдресаКаталогаОбновлений(Значение);
Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя
- ИспользоватьЗначениеНастройки = Ложь;
+ ИспользоватьЗначениеНастройки = Ложь;
СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиКаталогОбновлений", ИспользоватьЗначениеНастройки);
Если ИспользоватьЗначениеНастройки = Истина Тогда
Значение = СтруктураНастройки.КаталогОбновлений;
КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
Возврат Значение;
КонецФункции
-Функция АдресРесурсаДляПроверкиНаличияОбновления()
+Функция АдресРесурсаДляПроверкиНаличияОбновления(СтруктураНастройки)
- Значение = "/ipp/ITSREPV/V8Update/Configs/"; // Значение по умолчанию
-
- ЗначениеПереопределяемогоМодуля = ОбновлениеКонфигурацииПереопределяемый.АдресРесурсаДляПроверкиНаличияОбновления();
- Если НЕ ПустаяСтрока(ЗначениеПереопределяемогоМодуля) Тогда // Переопределяемое значение
- Значение = ЗначениеПереопределяемогоМодуля;
+ Значение = ОбновлениеКонфигурацииПереопределяемый.АдресРесурсаДляПроверкиНаличияОбновления();
+ Если Не ЗначениеЗаполнено(Значение) Тогда
+ Значение = "/ipp/ITSREPV/V8Update/Configs/"; // Значение по умолчанию
КонецЕсли;
-
- СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
- "ОбновлениеКонфигурации",
- "НастройкиОбновленияКонфигурации");
+ ОбновлениеКонфигурацииПереопределяемый.ПриОпределенииАдресаРесурсаДляПроверкиНаличияОбновления(Значение);
Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя
- ИспользоватьЗначениеНастройки = Ложь;
+ ИспользоватьЗначениеНастройки = Ложь;
СтруктураНастройки.Свойство("ИспользоватьЗначениеНастройкиАдресРесурсаДляПроверкиНаличияОбновления", ИспользоватьЗначениеНастройки);
Если ИспользоватьЗначениеНастройки = Истина Тогда
Значение = СтруктураНастройки.АдресРесурсаДляПроверкиНаличияОбновления;
- КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
Возврат Значение;
@@ -360,10 +350,7 @@
Функция ПолучитьСтруктуруНастроекПомощника() Экспорт
Расписание = Неопределено;
-
- Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
- "ОбновлениеКонфигурации",
- "НастройкиОбновленияКонфигурации");
+ Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОбновлениеКонфигурации", "НастройкиОбновленияКонфигурации");
Если Настройки = Неопределено Тогда
КоличествоСтарыхНастроек = 0;
diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl
index a2cc64dfa..05fc4da1c 100644
--- a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl
@@ -41,14 +41,12 @@
Если НЕ НаличиеОбновления И НастройкиОбновленияКонфигурации <> Неопределено
И НастройкиОбновления.ЕстьДоступДляПроверкиОбновления И
(НастройкиОбновленияКонфигурации.ПроверятьНаличиеОбновленияПриЗапуске = 1 ИЛИ
- НастройкиОбновленияКонфигурации.ПроверятьНаличиеОбновленияПриЗапуске = 2) Тогда
-
+ НастройкиОбновленияКонфигурации.ПроверятьНаличиеОбновленияПриЗапуске = 2) Тогда
+
// Подключение обработчика ожидания для проверки наличия обновления в сети Интернет.
- Если НастройкиОбновленияКонфигурации <> Неопределено Тогда
- Если НастройкиОбновленияКонфигурации.ПроверятьНаличиеОбновленияПриЗапуске = 1
- И НастройкиОбновленияКонфигурации.РасписаниеПроверкиНаличияОбновления <> Неопределено Тогда
- ПодключитьОтключитьПроверкуПоРасписанию(Истина);
- КонецЕсли;
+ Если НастройкиОбновленияКонфигурации.ПроверятьНаличиеОбновленияПриЗапуске = 1
+ И НастройкиОбновленияКонфигурации.РасписаниеПроверкиНаличияОбновления <> Неопределено Тогда
+ ПодключитьОтключитьПроверкуПоРасписанию(Истина);
КонецЕсли;
Параметры = ПолучитьДоступноеОбновлениеКонфигурации();
@@ -105,6 +103,10 @@
// Скачивает из Интернета файл проверки наличия обновлений
//
+// Параметры:
+// ВыдаватьСообщения - Булево - Признак необходимости выводить сообщения об ошибках пользователю
+// ПроверитьОбновленияДляНовойРедакции - Булево - признак необходимости проверять обновления для новой редакции платформы
+//
Функция ПолучитьФайлПроверкиНаличияОбновлений(Знач ВыдаватьСообщения = Истина, ПроверитьОбновленияДляНовойРедакции = Ложь) Экспорт
ПараметрыОбновления = ПолучитьПараметрыОбновления(ПроверитьОбновленияДляНовойРедакции);
@@ -344,14 +346,15 @@
// Строка - адрес веб-страницы.
Функция АдресСтраницыИнформацииОПолученииДоступаКПользовательскомуСайту() Экспорт
- Значение = "http://users.v8.1c.ru/Rules.aspx"; // Значение по умолчанию
-
- ЗначениеПереопределяемогоМодуля = ОбновлениеКонфигурацииКлиентПереопределяемый.АдресСтраницыИнформацииОПолученииДоступаКПользовательскомуСайту();
- Если НЕ ПустаяСтрока(ЗначениеПереопределяемогоМодуля) Тогда // Переопределяемое значение
- Значение = ЗначениеПереопределяемогоМодуля;
+ АдресСтраницы = ОбновлениеКонфигурацииКлиентПереопределяемый.АдресСтраницыИнформацииОПолученииДоступаКПользовательскомуСайту();
+ Если Не ЗначениеЗаполнено(АдресСтраницы) Тогда
+ АдресСтраницы = "http://users.v8.1c.ru/Rules.aspx"; // Значение по умолчанию
КонецЕсли;
- Возврат Значение;
+ ОбновлениеКонфигурацииКлиентПереопределяемый.ПриОпределенииАдресаСтраницыПолученияДоступаКСайтуОбновлений(АдресСтраницы);
+
+ Возврат АдресСтраницы;
+
КонецФункции
// Получить адрес каталога файлов обновления на сервере обновлений.
@@ -445,7 +448,7 @@
// ВыдаватьСообщения: Булево, признак вывода пользователю сообщений об ошибках
Процедура ПроверитьНаличиеОбновленияЧерезИнтернет(ВыдаватьСообщения = Ложь, ДоступноОбновлениеДляНовойРедакции = Ложь) Экспорт
- Состояние("ru = 'Проверка наличия обновления в Интернете'");
+ Состояние(Нстр("ru = 'Проверка наличия обновления в Интернете'"));
Параметры = ПолучитьДоступноеОбновлениеКонфигурации();
Если Параметры.ИсточникОбновления <> -1 Тогда
ВремяПолученияОбновления = Параметры.ВремяПолученияОбновления;
@@ -489,7 +492,7 @@
Если ОбновленияНеОбнаружено Тогда
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Информация",
- НСтр("ru = 'Обновление не требуется: последняя версия конфигурации уже установлена.'"));
+ НСтр("ru = 'Обновление не требуется: последняя версия конфигурации уже установлена.'"));
Параметры.ИмяСтраницы = "ОбновленияНеОбнаружено";
Возврат;
@@ -497,10 +500,11 @@
КонецЕсли;
КонецЕсли;
- ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Информация",
- НСтр("ru = 'Обнаружена более новая версия конфигурации в Интернете:'") + " " +
- Параметры.ПоследняяВерсияКонфигурации + ".");
-
+ ТекстСообщения = НСтр("ru = 'Обнаружена более новая версия конфигурации в Интернете: %1.'");
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Параметры.ПоследняяВерсияКонфигурации);
+ ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Информация", ТекстСообщения);
+
+ Параметры.ИсточникОбновления = 0;
Параметры.ИмяСтраницы = "ДоступноеОбновление";
Параметры.ВремяПолученияОбновления = ОбщегоНазначенияКлиент.ДатаСеанса();
@@ -726,7 +730,14 @@
Функция ПроверятьОбновлениеДляСледующейРедакцииПлатформы()
- Возврат ОбновлениеКонфигурацииКлиентПереопределяемый.ПроверятьОбновлениеДляСледующейРедакцииПлатформы();
+ ПроверятьОбновление = ОбновлениеКонфигурацииКлиентПереопределяемый.ПроверятьОбновлениеДляСледующейРедакцииПлатформы();
+ Если ПроверятьОбновление = Неопределено Тогда
+ ПроверятьОбновление = Ложь;
+ КонецЕсли;
+
+ ОбновлениеКонфигурацииКлиентПереопределяемый.ПриПроверкеОбновленияДляСледующейРедакцииПлатформы(ПроверятьОбновление);
+
+ Возврат ПроверятьОбновление;
КонецФункции
@@ -761,22 +772,18 @@
// Параметры:
// см. ПриПолученииСпискаПредупрежденийЗавершенияРаботы.
//
-// Примечание:
-// Процедура очищает список ранее добавленных предупреждений.
Процедура ПриЗавершенииРаботыСистемы(Предупреждения) Экспорт
Если ПредлагатьОбновлениеИнформационнойБазыПриЗавершенииСеанса = Истина Тогда
- Предупреждения.Очистить();
- ТекстФлажка = НСтр("ru = 'Установить обновление конфигурации'");
- ДействиеПриУстановленномФлажке = Новый Структура;
- ДействиеПриУстановленномФлажке.Вставить("Форма", "Обработка.ОбновлениеКонфигурации.Форма.Форма");
- ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", Новый Структура("ЗавершениеРаботыСистемы, ВыполнитьОбновление", Истина, Истина));
- ПараметрыПредупреждения = Новый Структура;
- ПараметрыПредупреждения.Вставить("ТекстФлажка", ТекстФлажка);
- ПараметрыПредупреждения.Вставить("ДействиеПриУстановленномФлажке", ДействиеПриУстановленномФлажке);
- ПараметрыПредупреждения.Вставить("Приоритет", 50);
- ПараметрыПредупреждения.Вставить("ВывестиОдноПредупреждение", Истина);
+ ПараметрыПредупреждения = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы();
+ ПараметрыПредупреждения.ТекстФлажка = НСтр("ru = 'Установить обновление конфигурации'");
+ ПараметрыПредупреждения.Приоритет = 50;
+ ПараметрыПредупреждения.ВывестиОдноПредупреждение = Истина;
+
+ ДействиеПриУстановленномФлажке = ПараметрыПредупреждения.ДействиеПриУстановленномФлажке;
+ ДействиеПриУстановленномФлажке.Форма = "Обработка.ОбновлениеКонфигурации.Форма.Форма";
+ ДействиеПриУстановленномФлажке.ПараметрыФормы = Новый Структура("ЗавершениеРаботыСистемы, ВыполнитьОбновление", Истина, Истина);
Предупреждения.Добавить(ПараметрыПредупреждения);
КонецЕсли;
@@ -810,22 +817,8 @@
// Доопределяет список предупреждений пользователю перед завершением работы системы.
//
// Параметры:
-// Предупреждения - Массив, в который можно добавить элементы типа Структура с полями:
-// ТекстФлажка - Строка - текст флажка.
-// ПоясняющийТекст - Строка - текст, выводимый в форме сверху
-// управляющего элемента (флажок или гиперссылка).
-// ТекстГиперссылки - Строка - текст гиперссылки.
-// ДействиеПриУстановленномФлажке - Структура с полями:
-// Форма - путь к открываемой форме.
-// ПараметрыФормы - произвольная структура параметров формы Форма.
-// ДействиеПриНажатииГиперссылки - Структура с полями:
-// Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку.
-// ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы.
-// ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу
-// вместо универсальной формы в случае, когда в списке
-// предупреждений оказывается только одно данное предупреждение.
-// ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура
-// параметров для вышеописанной формы.
+// Предупреждения - Массив - в массив можно добавить элементы типа Структура,
+// свойства которой см. в СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы.
//
Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт
@@ -853,7 +846,14 @@
//
Функция ПроверитьЛегальностьСкачиванияОбновления(ПараметрыЗапроса) Экспорт
- Если Не ОбновлениеКонфигурацииКлиентПереопределяемый.ИспользоватьПроверкуЛегальностиСкачиванияОбновления() Тогда
+ ПроверятьЛегальность = ОбновлениеКонфигурацииКлиентПереопределяемый.ИспользоватьПроверкуЛегальностиСкачиванияОбновления();
+ Если ПроверятьЛегальность = Неопределено Тогда
+ ПроверятьЛегальность = Истина;
+ КонецЕсли;
+
+ ОбновлениеКонфигурацииКлиентПереопределяемый.ПриПроверкеЛегальностиСкачиванияОбновлений(ПроверятьЛегальность);
+
+ Если Не ПроверятьЛегальность Тогда
Возврат Новый Структура("ЗначениеРезультата, ТекстОшибки", Истина, "");
diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl
index ff8195c77..b1cee3814 100644
--- a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl
@@ -5,15 +5,7 @@
#Область ПрограммныйИнтерфейс
-// Обработчик события перехода по страница помощника обновления.
-//
-// Параметры
-// ПомощникОбновления - Обработка.ОбновлениеКонфигурации
-// ПредыдущаяСтраница - Строка - имя страницы помощника.
-// СледующаяСтраница - Строка - имя страницы помощника.
-// Отказ - Булево - если записать значение Истина, то переход на
-// страницу СледующаяСтраница не произойдет.
-// По умолчанию, значение Ложь.
+// Устарела.
//
Процедура ПриПереходеНаСтраницуПомощника(ПредыдущаяСтраница, СледующаяСтраница, Отказ) Экспорт
@@ -30,6 +22,12 @@
КонецПроцедуры
+// Устарела. Следует использовать ПриПроверкеГотовностиКОбновлениюКонфигурации
+//
+Функция ГотовностьКОбновлениюКонфигурации(Знач ВыдаватьСообщения) Экспорт
+
+КонецФункции
+
// Проверить, что информационную базу можно обновить.
// Например, если выясняется, что обновление конфигурации не пройдет или
// будет идти с проблемами, то пользователю выдается предупреждение, и
@@ -37,54 +35,61 @@
// повторить попытку обновления.
//
// Параметры
-// ВыдаватьСообщения - Булево - определяет, может ли функция выводить
-// сообщения/диалоги или от нее требуется
-// вернуть только результат проверки.
-//
-// Возвращаемое значение:
-// Булево - признак готовности ИБ к проведению обновления.
+// КонфигурацияГотоваКОбновлению - Булево - признак готовности ИБ к проведению обновления
//
// Пример реализации:
-//
-// Результат = ПроверитьКорректностьДанных();
-// Если НЕ Результат И ВыдаватьСообщения Тогда
+//
+// КонфигурацияГотоваКОбновлению = ПроверитьКорректностьДанных();
+// Если Не КонфигурацияГотоваКОбновлению И ВыдаватьСообщения Тогда
// Предупреждение("Конфигурация не может быть обновлена, так как ...");
-// КонецЕсли;
-// Возврат Результат;
-Функция ГотовностьКОбновлениюКонфигурации(Знач ВыдаватьСообщения) Экспорт
- Возврат Истина; // результат по умолчанию
+// КонецЕсли;
+//
+Процедура ПриОпределенииГотовностиКОбновлениюКонфигурации(КонфигурацияГотоваКОбновлению) Экспорт
+
+КонецПроцедуры
+
+// Устарела. Следует использовать ПриОпределенииАдресаСтраницыПолученияДоступаКСайтуОбновлений
+//
+Функция АдресСтраницыИнформацииОПолученииДоступаКПользовательскомуСайту() Экспорт
+
КонецФункции
// Получить адрес веб-страницы с информацией о том, как получить доступ к
// пользовательскому разделу на сайте поставщика конфигурации.
//
-// Возвращаемое значение:
-// Строка - адрес веб-страницы.
+// Параметры:
+// АдресСтраницы - Строка - адрес веб-страницы.
//
-// Пример реализации:
-// Возврат "http://users.v8.1c.ru/Rules.aspx"; // для типовых конфигураций
-//
-Функция АдресСтраницыИнформацииОПолученииДоступаКПользовательскомуСайту() Экспорт
+Процедура ПриОпределенииАдресаСтраницыПолученияДоступаКСайтуОбновлений(АдресСтраницы) Экспорт
-
-
- Возврат "";
+КонецПроцедуры
+
+// Устарела. Следует использовать ПриПроверкеОбновленияДляСледующейРедакцииПлатформы.
+//
+Функция ПроверятьОбновлениеДляСледующейРедакцииПлатформы() Экспорт
КонецФункции
-// Признак необходимости проверки обновления для следующей редакции платформы.
+// Проверят необходимость проверки обновления для следующей редакции платформы.
// Рекомендуется устанавливать значение Истина, только при следующих условиях:
// - Для конфигурации используется обновление с сайта поддержки пользователей системы 1С:Предприятие
// - Вышла новая редакция платформы
// - Конфигурация поддерживает прямое обновление на новую версию, использующую новую редакцию платформы.
//
-// Если функция возвращает значение Истина, то при проверке обновления на сайте поддержки пользователей
+// Если процедура устанавливает значение Истина, то при проверке обновления на сайте поддержки пользователей
// в случае если не найдено обновлений для текущей редакции платформы программа автоматически проверит
// обновления для следующей редакции платформы.
//
-Функция ПроверятьОбновлениеДляСледующейРедакцииПлатформы() Экспорт
+// Параметры:
+// ПроверятьОбновление - Булево - Признак необходимости проверки обновления для следующей редакции
+//
+Процедура ПриПроверкеОбновленияДляСледующейРедакцииПлатформы(ПроверятьОбновление) Экспорт
- Возврат Ложь;
+КонецПроцедуры
+
+// Устарела. Следует использовать ПриПроверкеИспользованияПоверкиЛегальностиСкачиванияОбновлений
+//
+Функция ИспользоватьПроверкуЛегальностиСкачиванияОбновления() Экспорт
КонецФункции
@@ -92,10 +97,8 @@
// Рекомендуется устанавливать значение Истина, если конфигурация поддерживает обновление
// с сайта поддержки пользователей.
//
-Функция ИспользоватьПроверкуЛегальностиСкачиванияОбновления() Экспорт
+Процедура ПриПроверкеЛегальностиСкачиванияОбновлений(ПроверятьЛегальность) Экспорт
- Возврат Истина;
-
-КонецФункции
+КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурацииПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурацииПереопределяемый/Module.bsl
index d38bc5ded..312cd6dfa 100644
--- a/SSL/src/CommonModules/ОбновлениеКонфигурацииПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОбновлениеКонфигурацииПереопределяемый/Module.bsl
@@ -5,62 +5,74 @@
#Область ПрограммныйИнтерфейс
-// Получить короткое имя (идентификатор) конфигурации.
+// Устарела. Следует использовать ПриОпределенииКраткогоИмениКонфигурации
//
-// Возвращаемое значение:
-// Строка - короткое имя конфигурации.
Функция КороткоеИмяКонфигурации() Экспорт
-
-
- Возврат "";
-
КонецФункции
-// Получить адрес веб-сервера поставщика конфигурации, на котором находится
-// информация о доступных обновлениях ("открытая" часть веб-сайта).
+// Определяет короткое имя (идентификатор) конфигурации.
//
-// Возвращаемое значение:
-// Строка - адрес веб-сервера.
+// Параметры:
+// КраткоеИмя - Строка- короткое имя конфигурации.
//
-// Примеры реализации:
-// Возврат "localhost"; // локальный веб-сервер для тестирования
-// Возврат "downloads.1c.ru"; // сервер обновлений типовых конфигураций
+Процедура ПриОпределенииКраткогоИмениКонфигурации(КраткоеИмя) Экспорт
+
+
+
+КонецПроцедуры
+
+// Устарела. Следует использовать ПриОпределенииАдресаСервераДляПроверкиНаличияОбновления
//
Функция АдресСервераДляПроверкиНаличияОбновления() Экспорт
+КонецФункции
+
+// Получает адрес веб-сервера поставщика конфигурации, на котором находится
+// информация о доступных обновлениях ("открытая" часть веб-сайта).
+//
+// Параметры:
+// АдресСервера - Строка - адрес веб-сервера.
+//
+// Примеры реализации:
+// АдресСервера = "localhost"; // локальный веб-сервер для тестирования
+//
+Процедура ПриОпределенииАдресаСервераДляПроверкиНаличияОбновления(АдресСервера) Экспорт
-
- Возврат "";
+КонецПроцедуры
+
+// Устарела. Следует использовать ПриОпределенииАдресаРесурсаДляПроверкиНаличияОбновления
+//
+Функция АдресРесурсаДляПроверкиНаличияОбновления() Экспорт
КонецФункции
// Получить адрес ресурса на веб-сервере для проверки наличия обновлений
// (на "открытой" части веб-сайта).
//
-// Например:
-// Возврат "/ipp/ITSREPV/V8Update/Configs/";
+// Параметры:
+// АдресРесурса - Строка - Адрес ресурса для проверки наличия обновления
//
-Функция АдресРесурсаДляПроверкиНаличияОбновления() Экспорт
+Процедура ПриОпределенииАдресаРесурсаДляПроверкиНаличияОбновления(АдресРесурса) Экспорт
-
-
- Возврат "";
-
-КонецФункции
+КонецПроцедуры
-// Получить адрес веб-сайта с каталогом обновлений ("закрытая" часть веб-сайта).
-//
-// Примеры реализации:
-// Возврат Метаданные.АдресКаталогаОбновлений; // из свойств конфигурации
-// Возврат "localhost/tmplts/"; // локальный веб-сервер для тестирования
+// Устарела. Следует использовать ПриОпределенииКаталогаОбновлений
//
Функция КаталогОбновлений() Экспорт
-
-
- Возврат "";
-
КонецФункции
+// Получает адрес веб-сайта с каталогом обновлений ("закрытая" часть веб-сайта).
+//
+// Параметры:
+// АдресКаталогаОбновлений - Строка - Адрес каталога обновлений
+//
+// Примеры реализации:
+// АдресКаталогаОбновлений = "localhost/tmplts/"; // локальный веб-сервер для тестирования
+//
+Процедура ПриОпределенииАдресаКаталогаОбновлений(АдресКаталогаОбновлений) Экспорт
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl
index d2a581ffe..5c7a74c0b 100644
--- a/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl
+++ b/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl
@@ -1019,9 +1019,9 @@
// Прочитаем первый узел и проверим его
Если Не Чтение.Прочитать() Тогда
- ВызватьИсключение(НСтр("ru = 'Пустой XML'"));
+ ВызватьИсключение НСтр("ru = 'Пустой XML'");
ИначеЕсли Чтение.Имя <> "Items" Тогда
- ВызватьИсключение(НСтр("ru = 'Ошибка в структуре XML'"));
+ ВызватьИсключение НСтр("ru = 'Ошибка в структуре XML'");
КонецЕсли;
// Получим описание таблицы и создадим ее
@@ -1042,7 +1042,7 @@
ИначеЕсли Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда
Продолжить;
ИначеЕсли Чтение.Имя <> "Item" Тогда
- ВызватьИсключение(НСтр("ru = 'Ошибка в структуре XML'"));
+ ВызватьИсключение НСтр("ru = 'Ошибка в структуре XML'");
КонецЕсли;
новСтр = ТаблицаЗначений.Добавить();
@@ -1070,22 +1070,22 @@
// (если ИменаКолонок не заполнен - всех колонок)
//
// Параметры:
-// КоллекцияСтрок1 - коллекция, отвечающая вышеописанным требованиям
-// КоллекцияСтрок2 - коллекция, отвечающая вышеописанным требованиям
-// ИменаКолонок - строка, разделенная запятыми - имена колонок,
+// КоллекцияСтрок1 - КоллекцияЗначений - коллекция, отвечающая вышеописанным требованиям;
+// КоллекцияСтрок2 - КоллекцияЗначений - коллекция, отвечающая вышеописанным требованиям;
+// ИменаКолонок - Строка - имена колонок через запятую,
// по которым производится сравнение.
// Не является обязательным для коллекций,
// состав колонок которых можно выявить:
// ТаблицаЗначений, СписокЗначений, Соответствие, Структура,
// если не указан - сравнение производится по всем колонкам.
// Для коллекций других типов является обязательным
-// ИсключаяКолонки - имена колонок, которые игнорируются при сравнении, необязательный
-// УчитыватьПоследовательностьСтрок - булево, если Истина, то коллекции признаются
+// ИсключаяКолонки - Строка - имена колонок, которые игнорируются при сравнении, необязательный
+// УчитыватьПоследовательностьСтрок - Булево - если Истина, то коллекции признаются
// идентичными только если одинаковые строки размещены
-// в коллекциях на одинаковых местах
+// в коллекциях на одинаковых местах.
//
// Возвращаемое значение:
-// Булево
+// Булево.
//
Функция КоллекцииИдентичны(КоллекцияСтрок1, КоллекцияСтрок2, ИменаКолонок = "", ИсключаяКолонки = "", УчитыватьПоследовательностьСтрок = Ложь) Экспорт
@@ -1274,14 +1274,14 @@
// Сравнивает данные сложной структуры с учетом вложенности.
//
// Параметры:
-// Данные1 - Структура, ФиксированнаяСтруктура.
-// - Соответствие, ФиксированноеСоответствие.
-// - Массив, ФиксированныйМассив.
-// - ХранилищеЗначения, ТаблицаЗначений.
-// - Простые типы, которые можно сравнивать на равно,
+// Данные1 - Структура , ФиксированнаяСтруктура -
+// - Соответствие, ФиксированноеСоответствие -
+// - Массив, ФиксированныйМассив -
+// - ХранилищеЗначения, ТаблицаЗначений -
+// - Простые типы - которые можно сравнивать на равно,
// например, Строка, Число, Булево.
//
-// Данные2 - те же типы, что и для параметра Данные1.
+// Данные2 - Произвольный - те же типы, что и для параметра Данные1.
//
// Возвращаемое значение:
// Булево.
@@ -1396,7 +1396,7 @@
// Фиксирует данные типов Структура, Соответствие, Массив с учетом вложенности.
//
// Параметры:
-// Данные - Структура, Соответствие, Массив, значения которых являются примитивными типами,
+// Данные - Структура, Соответствие, Массив - коллекции, значения которых являются примитивными типами,
// хранилищем значения или не могут быть изменены. Поддерживаются типы значений:
// Булево, Строка, Число, Дата, Неопределено, УникальныйИдентификатор, Null, Тип,
// ХранилищеЗначения, ОбщийМодуль, ОбъектМетаданных, ТипЗначенияXDTO, ТипОбъектаXDTO,
@@ -1515,23 +1515,21 @@
////////////////////////////////////////////////////////////////////////////////
// Математические процедуры и функции
-// Выполняет пропорциональное распределение суммы в соответствии
-// с заданными коэффициентами распределения.
+// Выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами.
//
// Параметры:
-// ИсхСумма - распределяемая сумма
-// МассивКоэф - массив коэффициентов распределения
-// Точность - точность округления при распределении. Необязателен.
+// РаспределяемаяСумма - Число;
+// КоэффициентыРаспределения - Массив;
+// ТочностьОкругления - Число.
//
-// Возврат:
-// МассивСумм - массив размерностью равный массиву коэффициентов, содержит
-// суммы в соответствии с весом коэффициента (из массива коэффициентов)
-// В случае если распределить не удалось (сумма = 0, кол-во коэф. = 0,
-// или суммарный вес коэф. = 0), тогда возвращается значение Неопределено
+// Возвращаемое значение:
+// Массив - список распределенных сумм.
+// В случае, если распределить не удалось (сумма = 0, кол-во коэф. = 0,
+// или суммарный вес коэф. = 0), возвращается значение Неопределено.
//
-Функция РаспределитьСуммуПропорциональноКоэффициентам(Знач ИсхСумма, МассивКоэф, Знач Точность = 2) Экспорт
+Функция РаспределитьСуммуПропорциональноКоэффициентам(Знач РаспределяемаяСумма, КоэффициентыРаспределения, Знач Точность = 2) Экспорт
- Возврат ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(ИсхСумма, МассивКоэф, Точность);
+ Возврат ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(РаспределяемаяСумма, КоэффициентыРаспределения, Точность);
КонецФункции
@@ -1771,7 +1769,7 @@
// СсылкаНаПредмет - ЛюбаяСсылка - объект ссылочного типа.
//
// Возвращаемое значение:
-// Строка
+// Строка.
//
Функция ПредметСтрокой(СсылкаНаПредмет) Экспорт
@@ -1806,26 +1804,27 @@
КонецФункции
// Формирует соответствие для удаления объектов.
-//
Функция ПолучитьОбщийСписокИсключенийПоискаСсылок() Экспорт
- МассивИсключенийИзСобытия = Новый Массив;
-
- ОбработчикиСобытия = ОбработчикиСлужебногоСобытия(
- "СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииИсключенийПоискаСсылок");
-
- Для Каждого Обработчик Из ОбработчикиСобытия Цикл
- Обработчик.Модуль.ПриДобавленииИсключенийПоискаСсылок(МассивИсключенийИзСобытия);
- КонецЦикла;
-
- МассивИсключенийИзПереопределяемогоМодуля = ОбщегоНазначенияПереопределяемый.ПолучитьИсключенияПоискаСсылок();
-
ИсключенияПоискаСсылок = Новый Соответствие;
- ДобавитьИсключенияПоискаСсылок(ИсключенияПоискаСсылок, МассивИсключенийИзСобытия);
- ДобавитьИсключенияПоискаСсылок(ИсключенияПоискаСсылок, МассивИсключенийИзПереопределяемогоМодуля);
+ МассивИсключений = Новый Массив;
+ ОбработчикиСобытия = ОбработчикиСлужебногоСобытия(
+ "СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииИсключенийПоискаСсылок");
+ Для Каждого Обработчик Из ОбработчикиСобытия Цикл
+ Обработчик.Модуль.ПриДобавленииИсключенийПоискаСсылок(МассивИсключений);
+ КонецЦикла;
+ ДобавитьИсключенияПоискаСсылок(ИсключенияПоискаСсылок, МассивИсключений);
+ МассивИсключений = ОбщегоНазначенияПереопределяемый.ПолучитьИсключенияПоискаСсылок();
+ ДобавитьИсключенияПоискаСсылок(ИсключенияПоискаСсылок, МассивИсключений);
+
+ МассивИсключений = Новый Массив;
+ ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок(МассивИсключений);
+ ДобавитьИсключенияПоискаСсылок(ИсключенияПоискаСсылок, МассивИсключений);
+
Возврат ИсключенияПоискаСсылок;
+
КонецФункции
// Возвращает значение в виде XML-строки.
@@ -1953,9 +1952,9 @@
Знач ИмяТочкиПодключения = "",
Знач ИмяПользователя,
Знач Пароль,
- Знач Таймаут = Неопределено,
+ Знач Таймаут = 0,
Знач ДелатьКонтрольныйВызов = Ложь) Экспорт
-
+
Если ДелатьКонтрольныйВызов И Таймаут <> Неопределено И Таймаут > 20 Тогда
WSПроксиPing = ОбщегоНазначенияПовтИсп.WSПрокси(
@@ -2093,7 +2092,7 @@
ОбщиеПараметры = Новый Структура;
ОбщиеПараметры.Вставить("ИмяФормыПерсональныхНастроек", "");
ОбщиеПараметры.Вставить("МинимальноНеобходимаяВерсияПлатформы", "8.3.4.365");
- ОбщиеПараметры.Вставить("РаботаВПрограммеЗапрещена", Истина); // Блокировать запуск, если версия ниже минимальной.
+ ОбщиеПараметры.Вставить("РаботаВПрограммеЗапрещена", Ложь); // Блокировать запуск, если версия ниже минимальной.
ОбщиеПараметры.Вставить("ЗапрашиватьПодтверждениеПриЗавершенииПрограммы", Истина);
ОбщиеПараметры.Вставить("ОтключитьСправочникИдентификаторыОбъектовМетаданных", Ложь);
@@ -2167,13 +2166,12 @@
Функция ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
Если ОбщегоНазначенияПовтИсп.РазделениеВключено()
- И Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
-
+ И Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
Отказ = Истина;
Возврат Ложь;
КонецЕсли;
- Если Форма.Параметры.Свойство("АвтоТест") И ПравоДоступа("Администрирование", Метаданные) Тогда
+ Если Форма.Параметры.Свойство("АвтоТест") Тогда
// Возврат при получении формы для анализа.
Возврат Ложь;
КонецЕсли;
@@ -2199,7 +2197,8 @@
Если СтандартныеПодсистемыСервер.НеобходимоОбновлениеПараметровРаботыПрограммы() Тогда
ВызватьИсключение
- НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением на новую версию.'");
+ НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением на новую версию.
+ |Рекомендуется запрещать выполнение регламентных заданий на время обновления.'");
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
@@ -2209,7 +2208,8 @@
И ЗначениеЗаполнено(Константы.ГлавныйУзел.Получить()) Тогда
ВызватьИсключение
- НСтр("ru = 'Вход в программу временно невозможен до восстановления связи с главным узлом.'");
+ НСтр("ru = 'Вход в программу временно невозможен до восстановления связи с главным узлом.
+ |Рекомендуется запрещать выполнение регламентных заданий на время восстановления.'");
КонецЕсли;
КонецПроцедуры
@@ -2918,21 +2918,9 @@
//
Функция ИдентификаторОбъектаМетаданных(ОписаниеОбъектаМетаданных) Экспорт
- Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования();
-
- Кэш = СтандартныеПодсистемыПовтИсп.ПараметрыБазовойФункциональности(
- ).ИдентификаторыОбъектовМетаданных;
-
ТипОписанияОбъектаМетаданных = ТипЗнч(ОписаниеОбъектаМетаданных);
Если ТипОписанияОбъектаМетаданных = Тип("Тип") Тогда
- Если Кэш <> Неопределено Тогда
- Идентификатор = Кэш.ПоТипам.Получить(ТипОписанияОбъектаМетаданных);
- Если Идентификатор <> Неопределено Тогда
- Возврат Идентификатор;
- КонецЕсли;
- КонецЕсли;
-
ОбъектМетаданных = Метаданные.НайтиПоТипу(ОписаниеОбъектаМетаданных);
Если ОбъектМетаданных = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -2942,94 +2930,16 @@
|""%1"".'"),
ОписаниеОбъектаМетаданных);
Иначе
- Таблица = ОбъектМетаданных.ПолноеИмя();
+ ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя();
КонецЕсли;
ИначеЕсли ТипОписанияОбъектаМетаданных = Тип("Строка") Тогда
- Таблица = ОписаниеОбъектаМетаданных;
+ ПолноеИмяОбъектаМетаданных = ОписаниеОбъектаМетаданных;
Иначе
- Таблица = ОписаниеОбъектаМетаданных.ПолноеИмя();
+ ПолноеИмяОбъектаМетаданных = ОписаниеОбъектаМетаданных.ПолноеИмя();
КонецЕсли;
- Если Кэш <> Неопределено Тогда
- Идентификатор = Кэш.ПоПолнымИменам.Получить(Таблица);
- Если Идентификатор <> Неопределено Тогда
- Возврат Идентификатор;
- КонецЕсли;
- КонецЕсли;
-
- УстановитьПривилегированныйРежим(Истина);
-
- Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("ПолноеИмя", Таблица);
- Запрос.Текст =
- "ВЫБРАТЬ
- | Идентификаторы.Ссылка КАК Ссылка,
- | Идентификаторы.КлючОбъектаМетаданных,
- | Идентификаторы.ПолноеИмя
- |ИЗ
- | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
- |ГДЕ
- | Идентификаторы.ПолноеИмя = &ПолноеИмя
- | И НЕ Идентификаторы.ПометкаУдаления";
-
- Выгрузка = Запрос.Выполнить().Выгрузить();
- Если Выгрузка.Количество() = 0 Тогда
- // Если идентификатор не найден по полному имени, возможно что полное имя задано с ошибкой
- Если ТипОписанияОбъектаМетаданных = Тип("Строка")
- И Метаданные.НайтиПоПолномуИмени(ОписаниеОбъектаМетаданных) = Неопределено Тогда
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
- |
- |Объект метаданных не найден по полному имени:
- |""%1"".'"),
- ОписаниеОбъектаМетаданных);
- КонецЕсли;
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
- |
- |Для объекта метаданных ""%1""
- |не найден идентификатор
- |в справочнике ""Идентификаторы объектов метаданных"".'")
- + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
- Таблица);
- ИначеЕсли Выгрузка.Количество() > 1 Тогда
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
- |
- |Для объекта метаданных ""%1""
- |найдено несколько идентификаторов
- |в справочнике ""Идентификаторы объектов метаданных"".'")
- + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
- Таблица);
- КонецЕсли;
-
- // Проверка соответствия ключа объекта метаданных полному имени объекта метаданных
- РезультатПроверки = Справочники.ИдентификаторыОбъектовМетаданных.КлючОбъектаМетаданныхСоответствуетПолномуИмени(Выгрузка[0]);
- Если РезультатПроверки.НеСоответствует Тогда
- Если РезультатПроверки.ОбъектМетаданных = Неопределено Тогда
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
- |
- |Для объекта метаданных ""%1""
- |найден идентификатор в справочнике ""Идентификаторы объектов метаданных"",
- |которому соответствует удаленный объект метаданных.'")
- + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
- Таблица);
- Иначе
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
- |
- |Для объекта метаданных ""%1""
- |найден идентификатор в справочнике ""Идентификаторы объектов метаданных"",
- |который соответствует другому объекту метаданных ""%2"".'")
- + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
- Таблица,
- РезультатПроверки.ОбъектМетаданных);
- КонецЕсли;
- КонецЕсли;
-
- Возврат Выгрузка[0].Ссылка;
+ Возврат СтандартныеПодсистемыПовтИсп.ИдентификаторОбъектаМетаданных(ПолноеИмяОбъектаМетаданных);
КонецФункции
@@ -3043,28 +2953,7 @@
//
Функция ОбъектМетаданныхПоИдентификатору(Идентификатор) Экспорт
- Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования();
-
- Кэш = СтандартныеПодсистемыПовтИсп.ПараметрыБазовойФункциональности(
- ).ИдентификаторыОбъектовМетаданных;
-
- Если Кэш <> Неопределено Тогда
- ТипОбъектаМетаданных = Кэш.ТипыПоИдентификаторам.Получить(Идентификатор);
- Если ТипОбъектаМетаданных <> Неопределено Тогда
- ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипОбъектаМетаданных);
- Если ОбъектМетаданных <> Неопределено Тогда
- Возврат ОбъектМетаданных;
- КонецЕсли;
- Иначе
- ПолноеИмя = Кэш.ПолныеИменаПоИдентификаторам.Получить(Идентификатор);
- Если ПолноеИмя <> Неопределено Тогда
- ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
- Если ОбъектМетаданных <> Неопределено Тогда
- Возврат ОбъектМетаданных;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
+ СтандартныеПодсистемыПовтИсп.СправочникИдентификаторыОбъектовМетаданныхПроверкаИспользования(Истина);
УстановитьПривилегированныйРежим(Истина);
@@ -3147,7 +3036,7 @@
КонецФункции
-// Для использования в процедуре ЗаполнитьТаблицуПереименованияОбъектовМетаданных
+// Для использования в процедуре ПриДобавленииПереименованийОбъектовМетаданных
// общего модуля ОбщегоНазначенияПереопределяемый для описания переименований объектов метаданных.
//
// Параметры:
@@ -3160,7 +3049,7 @@
//
Процедура ДобавитьПереименование(Итог, ВерсияИБ, СтароеПолноеИмя, НовоеПолноеИмя, ИдентификаторБиблиотеки = "") Экспорт
- Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования();
+ СтандартныеПодсистемыПовтИсп.СправочникИдентификаторыОбъектовМетаданныхПроверкаИспользования();
СтароеИмяКоллекции = ВРег(ИмяКоллекции(СтароеПолноеИмя));
НовоеИмяКоллекции = ВРег(ИмяКоллекции(НовоеПолноеИмя));
@@ -3246,7 +3135,7 @@
// Для остальных типов приводит тип к строке, например "Число".
//
// Возвращаемое значение:
-// Строка
+// Строка.
//
Функция СтроковоеПредставлениеТипа(Тип) Экспорт
@@ -3302,8 +3191,8 @@
// совпадает с нужным типом.
//
// Параметры:
-// ОписаниеТипа - ОписаниеТипов
-// ТипЗначения - Тип
+// ОписаниеТипа - ОписаниеТипов - проверяемая коллекция типов;
+// ТипЗначения - Тип - проверяемый тип.
//
// Возвращаемое значение:
// Булево - Истина, если совпадает.
@@ -3316,7 +3205,7 @@
КонецЕсли;
Возврат Ложь;
-
+
КонецФункции
// Проверяет наличие табличной части у справочника.
@@ -3506,7 +3395,7 @@
// конфигурациях, рассчитанных на платформу версии 8.2.
//
// Параметры:
-// Ссылка - ссылка на предопределенный элемент.
+// Ссылка - ЛюбаяСсылка - ссылка на предопределенный элемент.
//
// Возвращаемое значение:
// Строка - имя предопределенного элемента.
@@ -3517,6 +3406,79 @@
КонецФункции
+// Конструктор объекта ОписаниеТипов, содержащего тип Строка.
+//
+// Параметры:
+// ДлинаСтроки - Число.
+//
+// ВозвращаемоеЗначение:
+// ОписаниеТипов.
+Функция ОписаниеТипаСтрока(ДлинаСтроки) Экспорт
+
+ Массив = Новый Массив;
+ Массив.Добавить(Тип("Строка"));
+
+ КвалификаторСтроки = Новый КвалификаторыСтроки(ДлинаСтроки, ДопустимаяДлина.Переменная);
+
+ Возврат Новый ОписаниеТипов(Массив, , КвалификаторСтроки);
+
+КонецФункции // ПолучитьОписаниеТиповСтроки()
+
+// Конструктор объекта ОписаниеТипов, содержащего тип Число.
+//
+// Параметры:
+// Разрядность - Число - общее количество разрядов числа (количество разрядов
+// целой части плюс количество разрядов дробной части).
+// РазрядностьДробнойЧасти - Число - число разрядов дробной части.
+// ЗнакЧисла - ДопустимыйЗнак - допустимый знак числа.
+//
+// ВозвращаемоеЗначение:
+// ОписаниеТипов.
+Функция ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, ЗнакЧисла = Неопределено) Экспорт
+
+ Если ЗнакЧисла = Неопределено Тогда
+ КвалификаторЧисла = Новый КвалификаторыЧисла(Разрядность, РазрядностьДробнойЧасти);
+ Иначе
+ КвалификаторЧисла = Новый КвалификаторыЧисла(Разрядность, РазрядностьДробнойЧасти, ЗнакЧисла);
+ КонецЕсли;
+
+ Возврат Новый ОписаниеТипов("Число", КвалификаторЧисла);
+
+КонецФункции // ПолучитьОписаниеТиповЧисла()
+
+// Конструктор объекта ОписаниеТипов, содержащего тип Дата.
+//
+// Параметры:
+// ЧастиДаты - ЧастиДаты - набор вариантов использования значений типа Дата.
+//
+// ВозвращаемоеЗначение:
+// ОписаниеТипов.
+Функция ОписаниеТипаДата(ЧастиДаты) Экспорт
+
+ Массив = Новый Массив;
+ Массив.Добавить(Тип("Дата"));
+
+ КвалификаторДаты = Новый КвалификаторыДаты(ЧастиДаты);
+
+ Возврат Новый ОписаниеТипов(Массив, , , КвалификаторДаты);
+
+КонецФункции
+
+// Позволяет определить, есть ли среди реквизитов объекта реквизит с переданным именем.
+//
+// Параметры:
+// ИмяРеквизита - Строка - имя реквизита;
+// МетаданныеОбъекта - ОбъектМетаданных - объект, в котором требуется проверить наличие реквизита.
+//
+// Возвращаемое значение:
+// Булево.
+//
+Функция ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта) Экспорт
+
+ Возврат НЕ (МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Функции определения типов объектов метаданных
@@ -4033,11 +3995,19 @@
// Сохранение, чтение и удаление настроек из хранилищ
// Сохраняет настройку в хранилище общих настроек.
-//
+//
// Параметры:
-// Соответствуют методу ХранилищеОбщихНастроекСохранить.Сохранить,
-// подробнее - см. параметры процедуры ХранилищеСохранить()
-//
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// КлючНастроек - Строка - Ключ сохраняемых настроек.
+// Значение - Произвольный - Настройки, которые нужно сохранить в хранилище.
+// ОписаниеНастроек - ОписаниеНастроек - Вспомогательная информация о настройке.
+// ИмяПользователя - Строка - Имя пользователя, настройки которого сохраняются.
+// Если не указано, то сохраняются настройки текущего пользователя.
+// НужноОбновитьПовторноИспользуемыеЗначения - Булево - Сбросить кэши модулей ПовтИсп.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Сохранить" в синтакс-помощнике.
+//
Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек = "", Значение,
ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено,
НужноОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт
@@ -4056,8 +4026,21 @@
// Загружает настройку из хранилища общих настроек.
//
// Параметры:
-// Соответствуют методу ХранилищеОбщихНастроек.Загрузить,
-// подробнее - см. параметры функции ХранилищеЗагрузить()
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// КлючНастроек - Строка - Необязательный. Ключ сохраняемых настроек.
+// ЗначениеПоУмолчанию - Произвольный - Необязательный.
+// Значение, которое необходимо подставить если настройки не были загружены.
+// ОписаниеНастроек - ОписаниеНастроек - Необязательный. При чтении значения настройки в данный параметр
+// записывается вспомогательная информация о настройке.
+// ИмяПользователя - Строка - Необязательный. Имя пользователя, настройки которого загружаются.
+// Если не указано, то загружается настройки текущего пользователя.
+//
+// Возвращаемое значение:
+// Произвольный - Настройки, загруженные из хранилища.
+// Неопределено - Если настройки не найдены и параметр ЗначениеПоУмолчанию не указан.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Загрузить" в синтакс-помощнике.
//
Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек = "", ЗначениеПоУмолчанию = Неопределено,
ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт
@@ -4075,8 +4058,15 @@
// Удаляет настройку из хранилища общих настроек.
//
// Параметры:
-// Соответствуют методу ХранилищеОбщихНастроек.Удалить,
-// подробнее - см. параметры функции ХранилищеУдалить()
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// - Неопределено - Удаляются настройки для всех объектов.
+// КлючНастроек - Строка - Ключ сохраняемых настроек.
+// - Неопределено - Удаляются настройки со всеми ключами.
+// ИмяПользователя - Строка - Имя пользователя, настройки которого загружается.
+// - Неопределено - Удаляются настройки всех пользователей.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Удалить" в синтакс-помощнике.
//
Процедура ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя) Экспорт
@@ -4138,11 +4128,19 @@
КонецПроцедуры
// Сохраняет настройку в хранилище системных настроек.
-//
+//
// Параметры:
-// Соответствуют методу ХранилищеСистемныхНастроек.Сохранить,
-// подробнее - см. параметры процедуры ХранилищеСохранить()
-//
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// КлючНастроек - Строка - Ключ сохраняемых настроек.
+// Значение - Произвольный - Настройки, которые нужно сохранить в хранилище.
+// ОписаниеНастроек - ОписаниеНастроек - Вспомогательная информация о настройке.
+// ИмяПользователя - Строка - Имя пользователя, настройки которого сохраняются.
+// Если не указано, то сохраняются настройки текущего пользователя.
+// НужноОбновитьПовторноИспользуемыеЗначения - Булево - Сбросить кэши модулей ПовтИсп.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Сохранить" в синтакс-помощнике.
+//
Процедура ХранилищеСистемныхНастроекСохранить(КлючОбъекта, КлючНастроек = "", Значение,
ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено,
НужноОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт
@@ -4161,8 +4159,21 @@
// Загружает настройку из хранилища системных настроек.
//
// Параметры:
-// Соответствуют методу ХранилищеСистемныхНастроек.Загрузить,
-// подробнее - см. параметры функции ХранилищеЗагрузить()
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// КлючНастроек - Строка - Необязательный. Ключ сохраняемых настроек.
+// ЗначениеПоУмолчанию - Произвольный - Необязательный.
+// Значение, которое необходимо подставить если настройки не были загружены.
+// ОписаниеНастроек - ОписаниеНастроек - Необязательный. При чтении значения настройки в данный параметр
+// записывается вспомогательная информация о настройке.
+// ИмяПользователя - Строка - Необязательный. Имя пользователя, настройки которого загружаются.
+// Если не указано, то загружается настройки текущего пользователя.
+//
+// Возвращаемое значение:
+// Произвольный - Настройки, загруженные из хранилища.
+// Неопределено - Если настройки не найдены и параметр ЗначениеПоУмолчанию не указан.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Загрузить" в синтакс-помощнике.
//
Функция ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, КлючНастроек = "", ЗначениеПоУмолчанию = Неопределено,
ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт
@@ -4180,8 +4191,15 @@
// Удаляет настройку из хранилища системных настроек.
//
// Параметры:
-// Соответствуют методу ХранилищеСистемныхНастроек.Удалить,
-// подробнее - см. параметры функции ХранилищеУдалить()
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// - Неопределено - Удаляются настройки для всех объектов.
+// КлючНастроек - Строка - Ключ сохраняемых настроек.
+// - Неопределено - Удаляются настройки со всеми ключами.
+// ИмяПользователя - Строка - Имя пользователя, настройки которого загружается.
+// - Неопределено - Удаляются настройки всех пользователей.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Удалить" в синтакс-помощнике.
//
Процедура ХранилищеСистемныхНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя) Экспорт
@@ -4194,10 +4212,18 @@
КонецПроцедуры
// Сохраняет настройку в хранилище настроек данных форм.
-//
+//
// Параметры:
-// Соответствуют методу ХранилищеСистемныхНастроек.Сохранить,
-// подробнее - см. параметры процедуры ХранилищеСохранить()
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// КлючНастроек - Строка - Ключ сохраняемых настроек.
+// Значение - Произвольный - Настройки, которые нужно сохранить в хранилище.
+// ОписаниеНастроек - ОписаниеНастроек - Вспомогательная информация о настройке.
+// ИмяПользователя - Строка - Имя пользователя, настройки которого сохраняются.
+// Если не указано, то сохраняются настройки текущего пользователя.
+// НужноОбновитьПовторноИспользуемыеЗначения - Булево - Сбросить кэши модулей ПовтИсп.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Сохранить" в синтакс-помощнике.
//
Процедура ХранилищеНастроекДанныхФормСохранить(КлючОбъекта, КлючНастроек = "", Значение,
ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено,
@@ -4217,8 +4243,21 @@
// Загружает настройку из хранилища настроек данных форм.
//
// Параметры:
-// Соответствуют методу ХранилищеСистемныхНастроек.Загрузить,
-// подробнее - см. параметры функции ХранилищеЗагрузить()
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// КлючНастроек - Строка - Необязательный. Ключ сохраняемых настроек.
+// ЗначениеПоУмолчанию - Произвольный - Необязательный.
+// Значение, которое необходимо подставить если настройки не были загружены.
+// ОписаниеНастроек - ОписаниеНастроек - Необязательный. При чтении значения настройки в данный параметр
+// записывается вспомогательная информация о настройке.
+// ИмяПользователя - Строка - Необязательный. Имя пользователя, настройки которого загружаются.
+// Если не указано, то загружается настройки текущего пользователя.
+//
+// Возвращаемое значение:
+// Произвольный - Настройки, загруженные из хранилища.
+// Неопределено - Если настройки не найдены и параметр ЗначениеПоУмолчанию не указан.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Загрузить" в синтакс-помощнике.
//
Функция ХранилищеНастроекДанныхФормЗагрузить(КлючОбъекта, КлючНастроек = "", ЗначениеПоУмолчанию = Неопределено,
ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт
@@ -4236,8 +4275,15 @@
// Удаляет настройку из хранилища настроек данных форм.
//
// Параметры:
-// Соответствуют методу ХранилищеНастроекДанныхФорм.Удалить,
-// подробнее - см. параметры функции ХранилищеУдалить()
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// - Неопределено - Удаляются настройки для всех объектов.
+// КлючНастроек - Строка - Ключ сохраняемых настроек.
+// - Неопределено - Удаляются настройки со всеми ключами.
+// ИмяПользователя - Строка - Имя пользователя, настройки которого загружается.
+// - Неопределено - Удаляются настройки всех пользователей.
+//
+// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Удалить" в синтакс-помощнике.
//
Процедура ХранилищеНастроекДанныхФормУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя) Экспорт
@@ -4255,13 +4301,14 @@
// МенеджерХранилища - СтандартноеХранилищеНастроекМенеджер - Хранилище, в котором сохраняется настройка.
// КлючОбъекта - Строка - Ключ объекта настройки.
// КлючНастроек - Строка - Ключ сохраняемых настроек.
-// Значение - * - Содержит настройки, которые нужно сохранить в хранилище.
-// ОписаниеНастроек - ОписаниеНастроек - Содержит информацию об описании настройки.
+// Значение - Произвольный - Настройки, которые нужно сохранить в хранилище.
+// ОписаниеНастроек - ОписаниеНастроек - Вспомогательная информация о настройке.
// ИмяПользователя - Строка - Имя пользователя, настройки которого сохраняются.
// Если не указано, то сохраняются настройки текущего пользователя.
// НужноОбновитьПовторноИспользуемыеЗначения - Булево - Сбросить кэши модулей ПовтИсп.
//
// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Сохранить" в синтакс-помощнике.
// "Настройки, автоматически сохраняемые в системном хранилище" в синтакс-помощнике.
//
Процедура ХранилищеСохранить(МенеджерХранилища, КлючОбъекта, КлючНастроек, Значение,
@@ -4282,19 +4329,22 @@
// Загружает настройку из хранилища настроек через его менеджер.
//
// Параметры:
-// МенеджерХранилища - СтандартноеХранилищеНастроекМенеджер - Хранилище, из которого загружается настройка.
-// КлючОбъекта - Строка - Ключ объекта настройки.
-// КлючНастроек - Строка - Ключ сохраняемых настроек.
-// ЗначениеПоУмолчанию - * - Значение, которое необходимо подставить если настройки не были загружены.
-// ОписаниеНастроек - ОписаниеНастроек - Через данный параметр при загрузке можно получить описание настроек.
-// ИмяПользователя - Строка - Имя пользователя, настройки которого загружается.
+// МенеджерХранилища - СтандартноеХранилищеНастроекМенеджер - Хранилище, из которого загружается настройка.
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// КлючНастроек - Строка - Необязательный. Ключ сохраняемых настроек.
+// ЗначениеПоУмолчанию - Произвольный - Необязательный.
+// Значение, которое необходимо подставить если настройки не были загружены.
+// ОписаниеНастроек - ОписаниеНастроек - Необязательный. При чтении значения настройки в данный параметр
+// записывается вспомогательная информация о настройке.
+// ИмяПользователя - Строка - Необязательный. Имя пользователя, настройки которого загружаются.
// Если не указано, то загружается настройки текущего пользователя.
//
// Возвращаемое значение:
// Произвольный - Настройки, загруженные из хранилища.
-// Неопределено - Если настройки не найдены.
+// Неопределено - Если настройки не найдены и параметр ЗначениеПоУмолчанию не указан.
//
// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Загрузить" в синтакс-помощнике.
// "Настройки, автоматически сохраняемые в системном хранилище" в синтакс-помощнике.
//
Функция ХранилищеЗагрузить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию,
@@ -4306,11 +4356,90 @@
Результат = МенеджерХранилища.Загрузить(КлючОбъекта, КлючНастроек(КлючНастроек), ОписаниеНастроек, ИмяПользователя);
КонецЕсли;
- Если (Результат = Неопределено) И (ЗначениеПоУмолчанию <> Неопределено) Тогда
+ Если Результат = Неопределено Тогда
Результат = ЗначениеПоУмолчанию;
+ Иначе
+ УстановитьПривилегированныйРежим(Истина);
+ Если УдалитьБитыеСсылки(Результат) Тогда
+ Результат = ЗначениеПоУмолчанию;
+ КонецЕсли;
КонецЕсли;
-
+
Возврат Результат;
+КонецФункции
+
+// Удаляет битые ссылки из переменной.
+//
+// Параметры:
+// СсылкаИлиКоллекция - ЛюбаяСсылка, Произвольный - Проверяемый объект или очищаемая коллекция.
+//
+// Возвращаемое значение:
+// Булево -
+// * Истина - СсылкаИлиКоллекция ссылочного типа и объект не найден в базе данных.
+// * Ложь - Когда СсылкаИлиКоллекция не ссылочного типа или объект найден в базе данных.
+//
+Функция УдалитьБитыеСсылки(СсылкаИлиКоллекция)
+
+ Тип = ТипЗнч(СсылкаИлиКоллекция);
+
+ Если Тип = Тип("Неопределено")
+ Или Тип = Тип("Булево")
+ Или Тип = Тип("Строка")
+ Или Тип = Тип("Число")
+ Или Тип = Тип("Дата") Тогда // Оптимизация - часто используемые примитивные типы.
+
+ Возврат Ложь; // Не ссылка.
+
+ ИначеЕсли Тип = Тип("Массив") Тогда
+
+ Количество = СсылкаИлиКоллекция.Количество();
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+ Значение = СсылкаИлиКоллекция[ОбратныйИндекс];
+ Если УдалитьБитыеСсылки(Значение) Тогда
+ СсылкаИлиКоллекция.Удалить(ОбратныйИндекс);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Ложь; // Не ссылка.
+
+ ИначеЕсли Тип = Тип("Структура")
+ Или Тип = Тип("Соответствие") Тогда
+
+ Для Каждого КлючИЗначение Из СсылкаИлиКоллекция Цикл
+ Значение = КлючИЗначение.Значение;
+ Если УдалитьБитыеСсылки(Значение) Тогда
+ СсылкаИлиКоллекция.Вставить(КлючИЗначение.Ключ, Неопределено);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Ложь; // Не ссылка.
+
+ ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(Тип)
+ Или Справочники.ТипВсеСсылки().СодержитТип(Тип)
+ Или Перечисления.ТипВсеСсылки().СодержитТип(Тип)
+ Или ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(Тип)
+ Или ПланыСчетов.ТипВсеСсылки().СодержитТип(Тип)
+ Или ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(Тип)
+ Или ПланыОбмена.ТипВсеСсылки().СодержитТип(Тип)
+ Или БизнесПроцессы.ТипВсеСсылки().СодержитТип(Тип)
+ Или Задачи.ТипВсеСсылки().СодержитТип(Тип) Тогда
+ // Ссылочный тип, исключая ТочкаМаршрутаБизнесПроцессаСсылка.
+
+ Если СсылкаИлиКоллекция.Пустая() Тогда
+ Возврат Ложь; // Ссылка пустая.
+ ИначеЕсли ЗначениеРеквизитаОбъекта(СсылкаИлиКоллекция, "Ссылка") = Неопределено Тогда
+ СсылкаИлиКоллекция = Неопределено;
+ Возврат Истина; // "Битая" ссылка.
+ Иначе
+ Возврат Ложь; // Объект найден.
+ КонецЕсли;
+
+ Иначе
+
+ Возврат Ложь; // Не ссылка.
+
+ КонецЕсли;
КонецФункции
@@ -4318,17 +4447,15 @@
//
// Параметры:
// МенеджерХранилища - СтандартноеХранилищеНастроекМенеджер - Хранилище, из которого удаляется настройка.
-// КлючОбъекта - Строка - Ключ объекта настройки.
-// - Неопределено - Удаляются настройки для всех объектов.
-// КлючНастроек - Строка - Ключ сохраняемых настроек.
-// - Неопределено - Удаляются настройки со всеми ключами.
-// ИмяПользователя - Строка - Имя пользователя, настройки которого загружается.
-// - Неопределено - Удаляются настройки всех пользователей.
-//
-// Возвращаемое значение:
-// (*) Настройки, загруженные из хранилища. Неопределено, если настройки не найдены.
+// КлючОбъекта - Строка - Ключ объекта настройки.
+// - Неопределено - Удаляются настройки для всех объектов.
+// КлючНастроек - Строка - Ключ сохраняемых настроек.
+// - Неопределено - Удаляются настройки со всеми ключами.
+// ИмяПользователя - Строка - Имя пользователя, настройки которого загружается.
+// - Неопределено - Удаляются настройки всех пользователей.
//
// См. также:
+// "СтандартноеХранилищеНастроекМенеджер.Удалить" в синтакс-помощнике.
// "Настройки, автоматически сохраняемые в системном хранилище" в синтакс-помощнике.
//
Процедура ХранилищеУдалить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ИмяПользователя)
@@ -4339,6 +4466,69 @@
КонецПроцедуры
+////////////////////////////////////////////////////////////////////////////////
+// Функции для работы с настройкой рабочей даты
+
+// Сохраняет настройку рабочей даты пользователя.
+//
+// Параметры:
+// НоваяРабочаяДата - Дата - Дата, которую необходимо установить в качестве рабочей даты пользователя.
+// ИмяПользователя - Строка - Имя пользователя, для которого устанавливается рабочая дата.
+// Если не задано, то устанавливается для текущего пользователя.
+//
+Процедура УстановитьРабочуюДатуПользователя(НоваяРабочаяДата, ИмяПользователя = Неопределено) Экспорт
+
+ КлючОбъекта = ВРег("РабочаяДата");
+
+ ХранилищеОбщихНастроекСохранить(КлючОбъекта, , НоваяРабочаяДата, , ИмяПользователя);
+
+КонецПроцедуры
+
+// Возвращает значение настройки рабочей даты для пользователя.
+//
+// Параметры:
+// ИмяПользователя - Строка - Имя пользователя, для которого запрашивается рабочая дата.
+// Если не задано, то устанавливается для текущего пользователя.
+//
+// Возвращаемое значение:
+// Дата - Значение настройки рабочей даты пользователя или пустая дата, если настройка не задана.
+//
+Функция РабочаяДатаПользователя(ИмяПользователя = Неопределено) Экспорт
+
+ КлючОбъекта = ВРег("РабочаяДата");
+
+ Результат = ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, , '0001-01-01', , ИмяПользователя);
+
+ Если ТипЗнч(Результат) <> Тип("Дата") Тогда
+ Результат = '0001-01-01';
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
+// Возвращает значение настройки рабочей даты для пользователя или текущей даты сеанса,
+// если рабочая дата пользователя не задана.
+//
+// Параметры:
+// ИмяПользователя - Строка - Имя пользователя, для которого запрашивается рабочая дата.
+// Если не задано, то устанавливается для текущего пользователя.
+//
+// Возвращаемое значение:
+// Дата - Значение настройки рабочей даты пользователя или текущая дата сеанса, если настройка не задана.
+//
+Функция ТекущаяДатаПользователя(ИмяПользователя = Неопределено) Экспорт
+
+ Результат = РабочаяДатаПользователя(ИмяПользователя);
+
+ Если НЕ ЗначениеЗаполнено(Результат) Тогда
+ Результат = ТекущаяДатаСеанса();
+ КонецЕсли;
+
+ Возврат НачалоДня(Результат);
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Функции для работы с табличными документами
@@ -4488,7 +4678,7 @@
// с переключением разделения сеанса на время записи.
//
// Параметры:
-// ОбъектВспомогательныхДанных - значение ссылочного типа или УдалениеОбъекта.
+// ОбъектВспомогательныхДанных - ЛюбаяСсылка, УдалениеОбъекта - значение ссылочного типа или УдалениеОбъекта.
//
Процедура ЗаписатьВспомогательныеДанные(ОбъектВспомогательныхДанных) Экспорт
@@ -4505,7 +4695,7 @@
// с переключением разделения сеанса на время записи.
//
// Параметры:
-// ОбъектВспомогательныхДанных - значение ссылочного типа.
+// ОбъектВспомогательныхДанных - ЛюбаяСсылка - значение ссылочного типа.
//
Процедура УдалитьВспомогательныеДанные(ОбъектВспомогательныхДанных) Экспорт
@@ -4524,18 +4714,10 @@
// Возвращает массив номеров версий, поддерживаемых интерфейсом удаленной системы.
//
// Параметры:
-// ПараметрыПодключения - Структура:
-// - URL - Строка - URL сервиса. Обязательно должно присутствовать и быть заполненным.
-// - UserName - Строка - Имя пользователя сервиса.
-// - Password - Строка - Пароль пользователя сервиса.
-// ИмяИнтерфейса - Строка.
-//
-// Параметры:
-// Адрес - Строка - адрес web-сервиса версионирования интерфейсов
-// Пользователь - Строка - имя пользователя
-// Пароль - Строка - пароль пользователя
-// Интерфейс - Строка - имя интерфейса
-//
+// Адрес - Строка - адрес web-сервиса версионирования интерфейсов;
+// Пользователь - Строка - имя пользователя;
+// Пароль - Строка - пароль пользователя;
+// Интерфейс - Строка - имя интерфейса.
//
// Возвращаемое значение:
// ФиксированныйМассив - массив строк, каждая строка является представлением номера версии интерфейса. Например, "1.0.2.1".
@@ -4585,8 +4767,8 @@
// Возвращает массив номеров версий, поддерживаемых интерфейсом системы, подключенной через внешнее соединение.
//
// Параметры:
-// ВнешнееСоединение - объект COM-соединение, которое используется для работы с корреспондентом.
-// ИмяИнтерфейса - Строка.
+// ВнешнееСоединение - COMОбъект - объект COM-соединение, которое используется для работы с корреспондентом.
+// ИмяИнтерфейса - Строка -.
//
// Возвращаемое значение:
// ФиксированныйМассив - массив строк, каждая строка является представлением номера версии интерфейса. Например, "1.0.2.1".
@@ -4597,7 +4779,6 @@
// МассивВерсий = ОбщегоНазначения.ПолучитьВерсииИнтерфейсаЧерезВнешнееСоединение(ВнешнееСоединение, "ОбменДанными");
//
Функция ПолучитьВерсииИнтерфейсаЧерезВнешнееСоединение(ВнешнееСоединение, Знач ИмяИнтерфейса) Экспорт
-
Попытка
ВерсииИнтерфейсаXML = ВнешнееСоединение.СтандартныеПодсистемыСервер.ПоддерживаемыеВерсии(ИмяИнтерфейса);
Исключение
@@ -4668,17 +4849,21 @@
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции для обработки событий и вызова необязательных подсистем.
-// Возвращает Истина, если подсистема существует в конфигурации.
+// Возвращает Истина, если "функциональная" подсистема существует в конфигурации.
+// Предназначена для реализации вызова необязательной подсистемы (условного вызова).
+//
+// У "функциональной" подсистемы снят флажок "Включать в командный интерфейс".
//
// Параметры:
-// ПолноеИмяПодсистемы - Строка. Полное имя объекта метаданных подсистема без слов "Подсистема.".
-// Например: "СтандартныеПодсистемы.БазоваяФункциональность".
+// ПолноеИмяПодсистемы - Строка - полное имя объекта метаданных подсистема
+// без слов "Подсистема." и с учетом регистра символов.
+// Например: "СтандартныеПодсистемы.ВариантыОтчетов".
//
-// Пример вызова необязательной подсистемы:
+// Пример:
//
-// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
-// МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
-// МодульУправлениеДоступом.<Имя метода>();
+// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
+// МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+// МодульВариантыОтчетов.<Имя метода>();
// КонецЕсли;
//
// Возвращаемое значение:
@@ -4787,6 +4972,16 @@
УстановитьПривилегированныйРежим(Истина);
+ СтруктураКлюча = Новый Структура("Идентификатор, ТипДанных", Идентификатор, ТипДанных);
+ Ключ = РегистрыСведений.КэшПрограммныхИнтерфейсов.СоздатьКлючЗаписи(СтруктураКлюча);
+
+ Попытка
+ ЗаблокироватьДанныеДляРедактирования(Ключ);
+ Исключение
+ // Данные уже обновляются из другого сеанса
+ Возврат;
+ КонецПопытки;
+
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
@@ -4804,20 +4999,8 @@
НачатьТранзакцию();
- ОшибкаУстановкиБлокировки = Ложь;
-
Попытка
- СтруктураКлюча = Новый Структура("Идентификатор, ТипДанных", Идентификатор, ТипДанных);
- Ключ = РегистрыСведений.КэшПрограммныхИнтерфейсов.СоздатьКлючЗаписи(СтруктураКлюча);
- Попытка
- ЗаблокироватьДанныеДляРедактирования(Ключ);
- Исключение
- // Данные уже обновляются из другого сеанса
- ОшибкаУстановкиБлокировки = Истина;
- ВызватьИсключение;
- КонецПопытки;
-
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КэшПрограммныхИнтерфейсов");
ЭлементБлокировки.УстановитьЗначение("Идентификатор", Идентификатор);
@@ -4826,19 +5009,22 @@
Результат = Запрос.Выполнить();
- // Убедимся что данные требуют обновления
- Если НЕ Результат.Пустой() Тогда
+ // Не удерживаем транзакцию для того, чтобы другие сеансы могли выполнять чтение данных
+ ЗафиксироватьТранзакцию();
+
+ // Убедимся, что данные требуют обновления
+ Если Не Результат.Пустой() Тогда
+
Выборка = Результат.Выбрать();
Выборка.Следующий();
- Если НЕ ЗаписьКэшаВерсийУстарела(Выборка) Тогда
- // Данные актуальны
- ОтменитьТранзакцию();
+ Если Не ЗаписьКэшаВерсийУстарела(Выборка) Тогда
+ РазблокироватьДанныеДляРедактирования(Ключ);
Возврат;
КонецЕсли;
+
КонецЕсли;
Набор = РегистрыСведений.КэшПрограммныхИнтерфейсов.СоздатьНаборЗаписей();
-
Набор.Отбор.Идентификатор.Установить(Идентификатор);
Набор.Отбор.ТипДанных.Установить(ТипДанных);
@@ -4847,31 +5033,23 @@
Запись.ТипДанных = ТипДанных;
Запись.ДатаОбновления = ТекущаяУниверсальнаяДата();
- Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Или Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
-
- Данные = ПодготовитьДанныеКэшаВерсий(ТипДанных, ПараметрыПолучения);
- Запись.Данные = Новый ХранилищеЗначения(Данные);
-
- Иначе
-
- Набор.ДополнительныеСвойства.Вставить("ПараметрыПолучения", ПараметрыПолучения);
-
- КонецЕсли;
+ Набор.ДополнительныеСвойства.Вставить("ПараметрыПолучения", ПараметрыПолучения);
+ Набор.ПодготовитьДанныеДляЗаписи();
Набор.Записать();
- ЗафиксироватьТранзакцию();
+ РазблокироватьДанныеДляРедактирования(Ключ);
Исключение
- ОтменитьТранзакцию();
-
- Если ОшибкаУстановкиБлокировки Тогда
- Возврат;
- Иначе
- ВызватьИсключение;
+ Если ТранзакцияАктивна() Тогда
+ ОтменитьТранзакцию();
КонецЕсли;
+ РазблокироватьДанныеДляРедактирования(Ключ);
+
+ ВызватьИсключение;
+
КонецПопытки;
КонецПроцедуры
@@ -4997,7 +5175,7 @@
//
Функция ВнутренняяWSПрокси(Знач АдресWSDL, Знач URIПространстваИмен, Знач ИмяСервиса,
Знач ИмяТочкиПодключения = "", Знач ИмяПользователя, Знач Пароль,
- Знач Таймаут = Неопределено) Экспорт
+ Знач Таймаут = 0) Экспорт
WSОпределения = ОбщегоНазначенияПовтИсп.WSОпределения(АдресWSDL, ИмяПользователя, Пароль);
@@ -5006,7 +5184,7 @@
КонецЕсли;
ИнтернетПрокси = Неопределено;
- Если ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернетаКлиентСервер") Тогда
+ Если ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда
МодульПолучениеФайловИзИнтернетаКлиентСервер = ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер");
ИнтернетПрокси = МодульПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси(АдресWSDL);
КонецЕсли;
@@ -5055,7 +5233,6 @@
КонецФункции
// Устарела. Следует использовать РаботаВБезопасномРежиме.ВыполнитьМетодКонфигурации().
-//
Процедура ВыполнитьБезопасно(ИмяЭкспортнойПроцедуры, Параметры = Неопределено, ОбластьДанных = Неопределено) Экспорт
ВыполненаУстановкаРазделенияСеанса = Ложь;
@@ -5097,7 +5274,6 @@
КонецПроцедуры
// Устарела. Следует использовать РаботаВБезопасномРежиме.ПроверитьИмяМетодаКонфигурации().
-//
Функция ПроверитьИмяЭкспортнойПроцедуры(Знач ИмяЭкспортнойПроцедуры, ТекстСообщения) Экспорт
Попытка
@@ -6475,7 +6651,7 @@
Строка.ПредставлениеОбъектаОшибки = ОписаниеОшибки.ПредставлениеОбъектаОшибки;
Строка.ОбъектОшибки = ОписаниеОшибки.ОбъектОшибки;
Строка.ТекстОшибки = ОписаниеОшибки.ТекстОшибки;
- Строка.ОбъектОшибки = ОписаниеОшибки.ОбъектОшибки;
+ Строка.ТипОшибки = ОписаниеОшибки.ТипОшибки;
КонецПроцедуры
@@ -6560,11 +6736,6 @@
СообщитьОтложенныеСообщения(ПредыдущиеСообщения);
КонецЕсли;
- // И прекращаем работы
- Если ПустаяСтрока(ТекстИсключения) Тогда
- ВызватьИсключение;
- КонецЕсли;
-
ВызватьИсключение СокрЛП(КраткоеПредставлениеОшибки(Информация) + Символы.ПС + СокрЛП(ТекстИсключения));
КонецПопытки;
@@ -6716,25 +6887,37 @@
УстановитьПривилегированныйРежим(Ложь);
- // 2. Замена везде
+ // 2. Замена везде до первой ошибки
Если СостояниеОперации = "" Тогда
КоличествоОшибок = РезультатЗамены.Количество();
Для Каждого МестоИспользования Из МестаИспользованияКонстанты Цикл
ПроизвестиЗаменуВКонстанте(РезультатЗамены, МестоИспользования, ПараметрыЗаписи, Ложь);
+ Если КоличествоОшибок <> РезультатЗамены.Количество() Тогда
+ Прервать;
+ КонецЕсли;
КонецЦикла;
- Для Каждого МестоИспользования Из МестаИспользованияОбъекты Цикл
- ПроизвестиЗаменуВОбъекте(РезультатЗамены, МестоИспользования, ПараметрыЗаписи, Ложь);
- КонецЦикла;
+ Если КоличествоОшибок = РезультатЗамены.Количество() Тогда
+ Для Каждого МестоИспользования Из МестаИспользованияОбъекты Цикл
+ ПроизвестиЗаменуВОбъекте(РезультатЗамены, МестоИспользования, ПараметрыЗаписи, Ложь);
+ Если КоличествоОшибок <> РезультатЗамены.Количество() Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
- Для Каждого МестоИспользования Из МестаИспользованияНаборы Цикл
- ПроизвестиЗаменуВНаборе(РезультатЗамены, МестоИспользования, ПараметрыЗаписи, Ложь);
- КонецЦикла;
-
- Если КоличествоОшибок <> РезультатЗамены.Количество() Тогда
+ Если КоличествоОшибок = РезультатЗамены.Количество() Тогда
+ Для Каждого МестоИспользования Из МестаИспользованияНаборы Цикл
+ ПроизвестиЗаменуВНаборе(РезультатЗамены, МестоИспользования, ПараметрыЗаписи, Ложь);
+ Если КоличествоОшибок <> РезультатЗамены.Количество() Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ Иначе
СостояниеОперации = "ОшибкаЗаписи";
КонецЕсли;
+
КонецЕсли;
// 3. Удаление
@@ -6913,7 +7096,6 @@
КонецПроцедуры
// См. Обработка.ПоискИУдалениеДублей
-//
Функция ДоступныеИменаМетаРеквизитовОтбора(Знач МетаКоллекция)
Результат = "";
ТипХранилища = Тип("ХранилищеЗначения");
diff --git a/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl
index 8601597c1..33e4e0173 100644
--- a/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ОбщегоНазначенияКлиент/Module.bsl
@@ -126,6 +126,15 @@
Возврат;
КонецЕсли;
+ // В веб клиенте под MacOS расширение не доступно.
+ СистемнаяИнформация = Новый СистемнаяИнформация;
+ ЭтоMacКлиент = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.MacOS_x86
+ Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.MacOS_x86_64);
+ Если ЭтоMacКлиент Тогда
+ ВыполнитьОбработкуОповещения(Оповещение);
+ Возврат;
+ КонецЕсли;
+
ПервоеОбращениеЗаСеанс = (ПредлагатьУстановкуРасширенияРаботыСФайлами = Неопределено);
Если ПервоеОбращениеЗаСеанс Тогда
ПредлагатьУстановкуРасширенияРаботыСФайлами = ПредлагатьУстановкуРасширенияРаботыСФайлами();
@@ -353,17 +362,21 @@
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции для обработки событий и вызова необязательных подсистем.
-// Возвращает Истина, если подсистема существует в конфигурации.
+// Возвращает Истина, если "функциональная" подсистема существует в конфигурации.
+// Предназначена для реализации вызова необязательной подсистемы (условного вызова).
+//
+// У "функциональной" подсистемы снят флажок "Включать в командный интерфейс".
//
// Параметры:
-// ПолноеИмяПодсистемы - Строка. Полное имя объекта метаданных подсистема без слов "Подсистема.".
-// Например: "СтандартныеПодсистемы.БазоваяФункциональность".
+// ПолноеИмяПодсистемы - Строка - полное имя объекта метаданных подсистема
+// без слов "Подсистема." и с учетом регистра символов.
+// Например: "СтандартныеПодсистемы.ВариантыОтчетов".
//
-// Пример вызова необязательной подсистемы:
+// Пример:
//
-// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
-// МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
-// МодульУправлениеДоступом.<Имя метода>();
+// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
+// МодульВариантыОтчетовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВариантыОтчетовКлиент");
+// МодульВариантыОтчетовКлиент.<Имя метода>();
// КонецЕсли;
//
// Возвращаемое значение:
@@ -391,8 +404,9 @@
Модуль = Вычислить(Имя);
#Если НЕ ВебКлиент Тогда
- ОбщегоНазначенияКлиентСервер.Проверить(ТипЗнч(Модуль) = Тип("ОбщийМодуль"),
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Общий модуль ""%1"" не найден.'"), Имя));
+ Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Общий модуль ""%1"" не найден.'"), Имя);
+ КонецЕсли;
#КонецЕсли
Возврат Модуль;
@@ -730,8 +744,8 @@
// Возвращаемое значение:
// ФиксированныйМассив со значениями типа
// ФиксированнаяСтруктура со свойствами:
-// Версия - Строка - версия обработчика, например, "2.1.3.4". Пустая строка, если не указана.
-// Модуль - ОбщийМодуль - серверный общий модуль.
+// * Версия - Строка - версия обработчика, например, "2.1.3.4". Пустая строка, если не указана.
+// * Модуль - ОбщийМодуль - серверный общий модуль.
//
Функция ОбработчикиСобытия(Событие) Экспорт
@@ -748,8 +762,8 @@
// Возвращаемое значение:
// ФиксированныйМассив со значениями типа
// ФиксированнаяСтруктура со свойствами:
-// Версия - Строка - версия обработчика, например, "2.1.3.4". Пустая строка, если не указана.
-// Модуль - ОбщийМодуль - серверный общий модуль.
+// * Версия - Строка - версия обработчика, например, "2.1.3.4". Пустая строка, если не указана.
+// * Модуль - ОбщийМодуль - серверный общий модуль.
//
Функция ОбработчикиСлужебногоСобытия(Событие) Экспорт
@@ -757,6 +771,17 @@
КонецФункции
+// Обновляет интерфейс программы сохраняя текущее активное окно.
+Процедура ОбновитьИнтерфейсПрограммы() Экспорт
+
+ ТекущееАктивноеОкно = АктивноеОкно();
+ ОбновитьИнтерфейс();
+ Если ТекущееАктивноеОкно <> Неопределено Тогда
+ ТекущееАктивноеОкно.Активизировать();
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -787,7 +812,7 @@
КонецЕсли;
Если ПустаяСтрока(Параметры.ТекстПредупреждения) Тогда
- ТекстСообщения = НСтр("ru = 'Действие недоступно, так как не установлено расширение работы с файлами.'")
+ ТекстСообщения = НСтр("ru = 'Действие недоступно, так как не установлено расширение для веб-клиента 1С:Предприятие.'")
Иначе
ТекстСообщения = Параметры.ТекстПредупреждения;
КонецЕсли;
diff --git a/SSL/src/CommonModules/ОбщегоНазначенияКлиентПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияКлиентПереопределяемый/Module.bsl
index 358b978c5..644c95e49 100644
--- a/SSL/src/CommonModules/ОбщегоНазначенияКлиентПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОбщегоНазначенияКлиентПереопределяемый/Module.bsl
@@ -58,17 +58,17 @@
//
// Параметры:
// Параметры - Структура - структура со свойствами:
-// Отказ - Булево - Возвращаемое значение. Если установить Истина,
+// * Отказ - Булево - Возвращаемое значение. Если установить Истина,
// то работа программы будет прекращена.
-// Перезапустить - Булево - Возвращаемое значение. Если установить Истина и параметр
+// * Перезапустить - Булево - Возвращаемое значение. Если установить Истина и параметр
// Отказ тоже установлен в Истина, то выполняется перезапуск программы.
-// ДополнительныеПараметрыКоманднойСтроки - Строка - Возвращаемое значение. Имеет смысл
+// * ДополнительныеПараметрыКоманднойСтроки - Строка - Возвращаемое значение. Имеет смысл
// когда Отказ и Перезапустить установлены Истина.
-// ИнтерактивнаяОбработка - ОписаниеОповещения - Возвращаемое значение. Для открытия окна,
+// * ИнтерактивнаяОбработка - ОписаниеОповещения - Возвращаемое значение. Для открытия окна,
// блокирующего вход в программу, следует присвоить в этот параметр
// описание обработчика оповещения, который открывает окно.
// См. пример выше (для обработчика ПередНачаломРаботыСистемы).
-// ОбработкаПродолжения - ОписаниеОповещения - если открывается окно, блокирующее вход
+// * ОбработкаПродолжения - ОписаниеОповещения - если открывается окно, блокирующее вход
// в программу, то в обработке закрытия этого окна необходимо
// выполнить оповещение ОбработкаПродолжения.
// См. пример выше (для обработчика ПередНачаломРаботыСистемы).
@@ -82,20 +82,16 @@
// Обработать параметры запуска программы.
// Реализация функции может быть расширена для обработки новых параметров.
//
-// Параметры
+// Параметры:
// ЗначениеПараметраЗапуска - Строка - первое значение параметра запуска,
// до первого символа ";"
// ПараметрыЗапуска - Строка - параметр запуска, переданный в конфигурацию
// с помощью ключа командной строки /C.
-//
-// Возвращаемое значение:
-// Булево - Истина, если необходимо прервать выполнение процедуры ПриНачалеРаботыСистемы.
-//
-Функция ОбработатьПараметрыЗапуска(ЗначениеПараметраЗапуска, ПараметрыЗапуска) Экспорт
+// Отказ - Булево - Возвращаемое значение. Если установить Истина,
+// то выполнение процедуры ПриНачалеРаботыСистемы будет прервано.
+Процедура ПриОбработкеПараметровЗапуска(ЗначениеПараметраЗапуска, ПараметрыЗапуска, Отказ) Экспорт
- Возврат Ложь;
-
-КонецФункции
+КонецПроцедуры
// Выполняется при интерактивном начале работы пользователя с областью данных или в локальном режиме.
// Вызывается после завершения действий ПриНачалеРаботыСистемы.
@@ -114,13 +110,13 @@
//
// Параметры:
// Параметры - Структура - структура со свойствами:
-// Отказ - Булево - Возвращаемое значение. Если установить Истина,
+// * Отказ - Булево - Возвращаемое значение. Если установить Истина,
// то завершение работы программы будет отменено.
-// ИнтерактивнаяОбработка - ОписаниеОповещения - Возвращаемое значение. Для открытия окна,
+// * ИнтерактивнаяОбработка - ОписаниеОповещения - Возвращаемое значение. Для открытия окна,
// блокирующего выход из программы, следует присвоить в этот параметр
// описание обработчика оповещения, который открывает окно.
// См. пример выше (для обработчика ПередНачаломРаботыСистемы).
-// ОбработкаПродолжения - ОписаниеОповещения - если открывается окно, блокирующее выход
+// * ОбработкаПродолжения - ОписаниеОповещения - если открывается окно, блокирующее выход
// из программы, то в обработке закрытия этого окна необходимо
// выполнить оповещение ОбработкаПродолжения.
// См. пример выше (для обработчика ПередНачаломРаботыСистемы).
@@ -138,6 +134,23 @@
КонецПроцедуры
+// Устарела. Следует использовать ПриОбработкеПараметровЗапуска.
+// Обработать параметры запуска программы.
+// Реализация функции может быть расширена для обработки новых параметров.
+//
+// Параметры:
+// ЗначениеПараметраЗапуска - Строка - первое значение параметра запуска,
+// до первого символа ";"
+// ПараметрыЗапуска - Строка - параметр запуска, переданный в конфигурацию
+// с помощью ключа командной строки /C.
+//
+// Возвращаемое значение:
+// Булево - Истина, если необходимо прервать выполнение процедуры ПриНачалеРаботыСистемы.
+//
+Функция ОбработатьПараметрыЗапуска(ЗначениеПараметраЗапуска, ПараметрыЗапуска) Экспорт
+ Возврат Ложь;
+
+КонецФункции
#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl
index 754762f9b..99da3ff7a 100644
--- a/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl
@@ -17,7 +17,7 @@
//
// Параметры
// ТекстСообщенияПользователю - Строка - текст сообщения.
-// КлючДанных - Любая ссылка на объект информационной базы.
+// КлючДанных - ЛюбаяСсылка - на объект информационной базы.
// Ссылка на объект информационной базы, к которому это сообщение относится,
// или ключ записи.
// Поле - Строка - наименование реквизита формы
@@ -193,6 +193,54 @@
КонецПроцедуры
+// Формирует текст ошибок заполнения полей и списков.
+//
+// Параметры:
+// ВидПоля - Строка - может принимать значения:
+// Поле, Колонка, Список;
+// ВидСообщения - Строка - может принимать значения:
+// Заполнение, Корректность;
+// ИмяПоля - Строка - имя поля;
+// НомерСтроки - Строка, Число - номер строки;
+// ИмяСписка - Строка - имя списка;
+// ТекстСообщения - Строка - детальная расшифровка ошибки заполнения.
+//
+// Возвращаемое значение:
+// Строка - текст ошибки заполнения.
+//
+Функция ТекстОшибкиЗаполнения(ВидПоля = "Поле", ВидСообщения = "Заполнение",
+ ИмяПоля = "", НомерСтроки = "", ИмяСписка = "", ТекстСообщения = "") Экспорт
+
+ Если ВРег(ВидПоля) = "ПОЛЕ" Тогда
+ Если ВРег(ВидСообщения) = "ЗАПОЛНЕНИЕ" Тогда
+ Шаблон = НСтр("ru = 'Поле ""%1"" не заполнено'");
+ ИначеЕсли ВРег(ВидСообщения) = "КОРРЕКТНОСТЬ" Тогда
+ Шаблон = НСтр("ru = 'Поле ""%1"" заполнено некорректно.
+ |
+ |%4'");
+ КонецЕсли;
+ ИначеЕсли ВРег(ВидПоля) = "КОЛОНКА" Тогда
+ Если ВРег(ВидСообщения) = "ЗАПОЛНЕНИЕ" Тогда
+ Шаблон = НСтр("ru = 'Не заполнена колонка ""%1"" в строке %2 списка ""%3""'");
+ ИначеЕсли ВРег(ВидСообщения) = "КОРРЕКТНОСТЬ" Тогда
+ Шаблон = НСтр("ru = 'Некорректно заполнена колонка ""%1"" в строке %2 списка ""%3"".
+ |
+ |%4'");
+ КонецЕсли;
+ ИначеЕсли ВРег(ВидПоля) = "СПИСОК" Тогда
+ Если ВРег(ВидСообщения) = "ЗАПОЛНЕНИЕ" Тогда
+ Шаблон = НСтр("ru = 'Не введено ни одной строки в список ""%3""'");
+ ИначеЕсли ВРег(ВидСообщения) = "КОРРЕКТНОСТЬ" Тогда
+ Шаблон = НСтр("ru = 'Некорректно заполнен список ""%3"".
+ |
+ |%4'");
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ИмяПоля, НомерСтроки, ИмяСписка, ТекстСообщения);
+
+КонецФункции
+
// Формирует путь к заданной строке НомерСтроки и колонке ИмяРеквизита
// табличной части ИмяТабличнойЧасти для выдачи сообщений в форме.
// Для совместного использования с процедурой СообщитьПользователю
@@ -280,7 +328,7 @@
// СтруктураПриемник - Структура - Коллекция, в которую будут добавляться новые значения.
// СтруктураИсточник - Структура - Коллекция, из которой будут считываться пары Ключ и Значение для заполнения.
// СЗаменой - Булево, Неопределено - Что делать в местах пересечения ключей источника и приемника.
-// - Истина - Заменять значения приемника.
+// - Истина - Заменять значения приемника (самый быстрый способ).
// - Ложь - Не заменять значения приемника (пропускать).
// - Неопределено - Значение по умолчанию. Бросать исключение.
//
@@ -305,9 +353,9 @@
// Снимает один элемент условного оформления, если это список значений.
//
// Параметры:
-// УсловноеОформление - условное оформление элемента формы;
-// ИдентификаторПользовательскойНастройки - строка - идентификатор настройки;
-// Значение - значение, которое требуется удалить из списка оформления.
+// УсловноеОформление - УсловноеОформление - условное оформление элемента формы;
+// ИдентификаторПользовательскойНастройки - Строка - идентификатор настройки;
+// Значение - Произвольный - значение, которое требуется удалить из списка оформления.
//
Процедура СнятьУсловноеОформлениеСпискаЗначений(
УсловноеОформление,
@@ -337,8 +385,8 @@
// Удаляет все вхождения переданного значения из массива.
//
// Параметры:
-// Массив - массив, из которого необходимо удалить значение;
-// Значение - удаляемое значение из массива.
+// Массив - Массив - массив, из которого необходимо удалить значение;
+// Значение - Произвольный - удаляемое значение из массива.
//
Процедура УдалитьВсеВхожденияЗначенияИзМассива(Массив, Значение) Экспорт
@@ -361,8 +409,8 @@
// Удаляет все вхождения значений указанного типа.
//
// Параметры:
-// Массив - массив, из которого необходимо удалить значения;
-// Тип - тип значений, которые подлежат удалению из массива.
+// Массив - Массив - массив, из которого необходимо удалить значения;
+// Тип - Тип - тип значений, которые подлежат удалению из массива.
//
Процедура УдалитьВсеВхожденияТипаИзМассива(Массив, Тип) Экспорт
@@ -385,8 +433,8 @@
// Удаляет одно значение из массива.
//
// Параметры:
-// Массив - массив, из которого необходимо удалить значение;
-// Значение - удаляемое значение из массива.
+// Массив - Массив - массив, из которого необходимо удалить значение;
+// Значение - Массив - удаляемое значение из массива.
//
Процедура УдалитьЗначениеИзМассива(Массив, Значение) Экспорт
@@ -400,13 +448,26 @@
КонецПроцедуры
+// Удаляет повторяющиеся элементы массива.
+//
+// Параметры:
+// Массив - Массив - массив произвольных значений.
+//
+// Возвращаемое значение:
+// Массив;
+Функция СвернутьМассив(Массив) Экспорт
+ Результат = Новый Массив;
+ ДополнитьМассив(Результат, Массив, Истина);
+ Возврат Результат;
+КонецФункции
+
// Заполняет коллекцию-приемник значениями из коллекции-источник
// В качестве коллекций источника и приемника могут выступать типы:
// ТаблицаЗначений; ДеревоЗначений; СписокЗначений и пр.
//
// Параметры:
-// КоллекцияИсточник - коллекция значений, которая является источником для заполнения данных;
-// КоллекцияПриемник - коллекция значений, которая является приемником для заполнения данных.
+// КоллекцияИсточник - ЛюбаяКоллекция - коллекция значений, которая является источником для заполнения данных;
+// КоллекцияПриемник - ЛюбаяКоллекция - коллекция значений, которая является приемником для заполнения данных.
//
Процедура ЗаполнитьКоллекциюСвойств(КоллекцияИсточник, КоллекцияПриемник) Экспорт
@@ -447,8 +508,8 @@
// Вычитает один массив элементов из другого массива. Возвращает результат вычитания.
//
// Параметры:
-// Массив - массив элементов, из которого необходимо выполнить вычитание;
-// МассивВычитания - массив элементов, который будет вычитаться.
+// Массив - Массив - массив элементов, из которого необходимо выполнить вычитание;
+// МассивВычитания - Массив - массив элементов, который будет вычитаться.
//
// Возвращаемое значение:
// Массив - результат вычитания двух массивов.
@@ -474,7 +535,7 @@
// Преобразует РасписаниеРегламентногоЗадания в структуру.
//
// Параметры:
-// Расписание - РасписаниеРегламентногоЗадания;
+// Расписание - РасписаниеРегламентногоЗадания -.
//
// Возвращаемое значение:
// Структура.
@@ -501,7 +562,7 @@
// Преобразует структуру в РасписаниеРегламентногоЗадания.
//
// Параметры:
-// СтруктураРасписания - Структура;
+// СтруктураРасписания - Структура -.
//
// Возвращаемое значение:
// РасписаниеРегламентногоЗадания.
@@ -643,8 +704,7 @@
КонецФункции
-// Сравнивает элементы списков значений или массивов по значениям
-//
+// Сравнивает элементы списков значений или массивов по значениям.
Функция СпискиЗначенийИдентичны(Список1, Список2) Экспорт
СпискиИдентичны = Истина;
@@ -669,8 +729,7 @@
КонецФункции // СпискиЗначенийИдентичны
-// Создает массив и помещает в него переданное значение
-//
+// Создает массив и помещает в него переданное значение.
Функция ЗначениеВМассиве(Значение) Экспорт
Массив = Новый Массив;
@@ -861,7 +920,7 @@
// Процедура УдалитьКаталогСФайлами удаляет все файлы в заданном каталоге.
//
// Параметры:
-// Путь - Строка, полный путь каталога, в котором требуется
+// Путь - Строка - полный путь каталога, в котором требуется
// удалить все файлы.
//
Процедура УдалитьКаталогСФайлами(Путь) Экспорт
@@ -904,8 +963,8 @@
// Составляет полное имя файла из имени каталога и имени файла.
//
// Параметры
-// ИмяКаталога - Строка, содержащая путь к каталогу файла на диске.
-// ИмяФайла - Строка, содержащая имя файла, без имени каталога.
+// ИмяКаталога - Строка - путь к каталогу файла на диске.
+// ИмяФайла - Строка - имя файла, без имени каталога.
//
// Возвращаемое значение:
// Строка - полное имя файла с учетом каталога.
@@ -932,8 +991,8 @@
// Раскладывает полное имя файла на составляющие.
//
// Параметры
-// ПолноеИмяФайла - Строка, содержащая полный путь к файлу.
-// ЭтоПапка - Булево, признак того, что требуется разложить полное имя папки, а не файла.
+// ПолноеИмяФайла - Строка - полный путь к файлу.
+// ЭтоПапка - Булево - признак того, что требуется разложить полное имя папки, а не файла.
//
// Возвращаемое значение:
// Структура - имя файла, разложенное на составные части(аналогично свойствам объекта Файл):
@@ -1115,7 +1174,7 @@
// Выделяет из имени файла его расширение (набор символов после последней точки).
//
// Параметры:
-// ИмяФайла - Строка, содержащая имя файла, неважно с именем каталога или без.
+// ИмяФайла - Строка - имя файла с именем каталога или без.
//
// Возвращаемое значение:
// Строка - расширение файла.
@@ -1143,7 +1202,7 @@
// Преобразует расширение файла в нижний регистр без точки.
//
// Параметры:
-// Расширение - Строка. Расширение для преобразования.
+// Расширение - Строка - Расширение для преобразования.
//
// Возвращаемое значение:
// Строка.
@@ -1163,7 +1222,7 @@
// Возвращает разделитель пути файловой системы.
//
// Параметры:
-// Платформа - Неопределено:
+// Платформа - Неопределено -
// На клиенте - разделитель пути клиентской файловой системы.
// На сервере - разделитель пути серверной файловой системы.
//
@@ -1199,8 +1258,8 @@
// Если расширение пустое, тогда точка не добавляется.
//
// Параметры:
-// ИмяБезРасширения - Строка.
-// Расширение - Строка.
+// ИмяБезРасширения - Строка - .
+// Расширение - Строка - .
//
// Возвращаемое значение:
// Строка.
@@ -1231,7 +1290,8 @@
// Проверяет наличие недопустимых символов в имени файла.
//
// Параметры
-// ИмяФайла - Строка
+// ИмяФайла - Строка -.
+//
// Возвращаемое значение:
// Массив - массив обнаруженных в имени файла недопустимых символов.
// Если недопустимых символов не обнаружено возвращается пустой массив.
@@ -1721,7 +1781,8 @@
Знач ПравоеЗначение = Неопределено,
Знач ВидСравнения = Неопределено,
Знач Использование = Неопределено,
- Знач РежимОтображения = Неопределено) Экспорт
+ Знач РежимОтображения = Неопределено,
+ Знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
Если ЗначениеЗаполнено(ИмяПоля) Тогда
ЗначениеПоиска = Новый ПолеКомпоновкиДанных(ИмяПоля);
@@ -1754,6 +1815,9 @@
Если РежимОтображения <> Неопределено Тогда
Элемент.РежимОтображения = РежимОтображения;
КонецЕсли;
+ Если ИдентификаторПользовательскойНастройки <> Неопределено Тогда
+ Элемент.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
+ КонецЕсли;
КонецЦикла;
Возврат МассивЭлементов.Количество();
@@ -1811,15 +1875,21 @@
Знач ВидСравнения = Неопределено,
Знач Представление = Неопределено,
Знач Использование = Неопределено,
- знач РежимОтображения = Неопределено,
- знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
+ Знач РежимОтображения = Неопределено,
+ Знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
ЧислоИзмененных = ИзменитьЭлементыОтбора(ОбластьПоискаДобавления, ИмяПоля, Представление,
- ПравоеЗначение, ВидСравнения, Использование, РежимОтображения);
+ ПравоеЗначение, ВидСравнения, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки);
Если ЧислоИзмененных = 0 Тогда
Если ВидСравнения = Неопределено Тогда
- ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ Если ТипЗнч(ПравоеЗначение) = Тип("Массив")
+ Или ТипЗнч(ПравоеЗначение) = Тип("ФиксированныйМассив")
+ Или ТипЗнч(ПравоеЗначение) = Тип("СписокЗначений") Тогда
+ ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
+ Иначе
+ ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ КонецЕсли;
КонецЕсли;
Если РежимОтображения = Неопределено Тогда
РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
@@ -1881,9 +1951,15 @@
//
Процедура УдалитьЭлементыГруппыОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля = Неопределено, Представление = Неопределено) Экспорт
- ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
+ УдалитьЭлементыГруппыОтбора(
+ ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор,
+ ИмяПоля,
+ Представление);
- УдалитьЭлементыГруппыОтбора(ОтборДинамическогоСписка, ИмяПоля, Представление);
+ УдалитьЭлементыГруппыОтбора(
+ ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор,
+ ИмяПоля,
+ Представление);
КонецПроцедуры
@@ -1988,7 +2064,7 @@
Процедура УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение) Экспорт
ЭлементФормы = ЭлементыФормы.Найти(ИмяЭлемента);
- Если ЭлементФормы <> Неопределено Тогда
+ Если ЭлементФормы <> Неопределено И ЭлементФормы[ИмяСвойства] <> Значение Тогда
ЭлементФормы[ИмяСвойства] = Значение;
КонецЕсли;
@@ -2517,17 +2593,7 @@
КонецФункции // ЭлементПрисутствуетВСписке
// Проверяет, что почтовый адрес не содержит символов обрамления
-// если символы обрамления вставлены правильно убирает их
-// Параметры:
-// ПолноеИмяАдресата - строка - имя получателя
-// ПочтовыйАдрес - строка - email адрес
-// Возвращаемое значение:
-// Структура:
-// Ключ статус - булево - успех или неуспех операции
-// СообщениеОбОшибке - в случае неуспеха операции содержит сообщение об ошибке
-// Значение - структура - в случае успеха операции содержит записанную структуру почтового
-// адреса: ключи - Адрес, Представление (строки)
-//
+// если символы обрамления вставлены правильно убирает их.
Функция ПроверитьИПодготовитьПочтовыйАдрес(Знач ПолноеИмяАдресата, Знач ПочтовыйАдрес)
НедопустимыйСимволВИмениАдресата = НСтр("ru = 'Недопустимый символ в имени адресата.'");
diff --git a/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl
index 1512b44ed..5e6faf1aa 100644
--- a/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl
@@ -7,21 +7,16 @@
// Возвращает соответствие имен параметров сеанса и обработчиков для их инициализации.
//
-Функция ОбработчикиИнициализацииПараметровСеанса() Экспорт
+// Для задания обработчиков параметров сеанса следует использовать шаблон:
+// Обработчики.Вставить("<ИмяПараметраСеанса>|<НачалоИмениПараметраСеанса*>", "Обработчик");
+//
+// Примечание. Символ '*'используется в конце имени параметра сеанса и обозначает,
+// что один обработчик будет вызван для инициализации всех параметров сеанса
+// с именем, начинающимся на слово НачалоИмениПараметраСеанса
+//
+Процедура ПриДобавленииОбработчиковУстановкиПараметровСеанса(Обработчики) Экспорт
- // Для задания обработчиков параметров сеанса следует использовать шаблон:
- // Обработчики.Вставить("<ИмяПараметраСеанса>|<НачалоИмениПараметраСеанса*>", "Обработчик");
- //
- // Примечание. Символ '*'используется в конце имени параметра сеанса и обозначает,
- // что один обработчик будет вызван для инициализации всех параметров сеанса
- // с именем, начинающимся на слово НачалоИмениПараметраСеанса
- //
-
- Обработчики = Новый Соответствие;
-
- Возврат Обработчики;
-
-КонецФункции
+КонецПроцедуры
// Объекты метаданных, содержимое которых не должно учитывается в бизнес-логике приложения.
//
@@ -31,8 +26,8 @@
// Часть ссылок имеют значение для бизнес-логики (например движения по регистрам) и должны выводиться пользователю.
// Другая часть ссылок - "техногенные" ссылки на документ из данных подсистем "Версионирование объектов" и "Свойства",
// должны скрываться от пользователя при поиске ссылок на объект.
-// Например, в обработке удаления помеченных или в подсистеме запрета редактирования ключевых реквизитов.
-// Список таких "техногенных" объектов нужно перечислить в этой функции.
+// Например, при анализе мест использования или в подсистеме запрета редактирования ключевых реквизитов.
+// Список таких "техногенных" объектов нужно перечислить в этой процедуре.
//
// Важно:
// Для избежания появления пустых "битых" ссылок рекомендуется предусмотреть процедуру очистки указанных объектов метаданных.
@@ -43,23 +38,19 @@
// В обработчике необходимо найти "техногенные" объекты, в реквизитах которых указана ссылка удаляемого объекта,
// и выбрать как именно очищать ссылку: очищать значение реквизита, удалять строку таблицы или удалять весь объект.
//
-// Например:
-// Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов);
-// Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.Реквизиты.АвторВерсии);
-// Массив.Добавить("РегистрСведений.ВерсииОбъектов");
+// Параметры:
+// ИсключенияПоискаСсылок - Массив - Объекты метаданных или их реквизиты, содержимое которых не должно учитывается в бизнес-логике приложения.
+// * ОбъектМетаданных - Объект метаданных или его реквизит.
+// * Строка - Полное имя объекта метаданных или его реквизита.
//
-// Возвращаемое значение:
-// Массив - Объекты метаданных или их реквизиты, содержимое которых не должно учитывается в бизнес-логике приложения.
-// * ОбъектМетаданных - Объект метаданных или его реквизит.
-// * Строка - Полное имя объекта метаданных или его реквизита.
+// Примеры:
+// ИсключенияПоискаСсылок.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов);
+// ИсключенияПоискаСсылок.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.Реквизиты.АвторВерсии);
+// ИсключенияПоискаСсылок.Добавить("РегистрСведений.ВерсииОбъектов");
//
-Функция ПолучитьИсключенияПоискаСсылок() Экспорт
+Процедура ПриДобавленииИсключенийПоискаСсылок(ИсключенияПоискаСсылок) Экспорт
- Массив = Новый Массив;
-
- Возврат Массив;
-
-КонецФункции
+КонецПроцедуры
// Устанавливает текстовое описание предмета
//
@@ -74,7 +65,13 @@
// автоматически найти по типу, но ссылки на которые требуется сохранять
// в базе данных (например: подсистемы, роли).
//
-// Подробнее см. комментарий к процедуре ДобавитьПереименование общего модуля ОбщегоНазначения.
+// Параметры:
+// Итог - ТаблицаЗначений - таблица, которую нужно передавать, как параметр
+// в процедуру ДобавитьПереименование общего модуля ОбщегоНазначения.
+//
+// Пример:
+// ОбщегоНазначения.ДобавитьПереименование(Итог, "2.2.1.7",
+// "Роль.ИспользованиеЭЦП", "Роль.ИспользованиеЭП", "СтандартныеПодсистемы");
//
Процедура ПриДобавленииПереименованийОбъектовМетаданных(Итог) Экспорт
@@ -233,4 +230,63 @@
КонецПроцедуры
+// Устарела. Следует использовать ПриДобавленииОбработчиковУстановкиПараметровСеанса.
+// Возвращает соответствие имен параметров сеанса и обработчиков для их инициализации.
+//
+Функция ОбработчикиИнициализацииПараметровСеанса() Экспорт
+
+ // Для задания обработчиков параметров сеанса следует использовать шаблон:
+ // Обработчики.Вставить("<ИмяПараметраСеанса>|<НачалоИмениПараметраСеанса*>", "Обработчик");
+ //
+ // Примечание. Символ '*'используется в конце имени параметра сеанса и обозначает,
+ // что один обработчик будет вызван для инициализации всех параметров сеанса
+ // с именем, начинающимся на слово НачалоИмениПараметраСеанса
+ //
+
+ Обработчики = Новый Соответствие;
+
+ Возврат Обработчики;
+
+КонецФункции
+
+// Устарела. Следует использовать ПриДобавленииИсключенийПоискаСсылок.
+//
+// Объекты метаданных, содержимое которых не должно учитывается в бизнес-логике приложения.
+//
+// Описание:
+// Для документа "Реализация товаров и услуг" настроены подсистемы "Версионирование объектов" и "Свойства".
+// При этом документ может быть указан в других объектах метаданных - документах или регистрах.
+// Часть ссылок имеют значение для бизнес-логики (например движения по регистрам) и должны выводиться пользователю.
+// Другая часть ссылок - "техногенные" ссылки на документ из данных подсистем "Версионирование объектов" и "Свойства",
+// должны скрываться от пользователя при поиске ссылок на объект.
+// Например, при анализе мест использования или в подсистеме запрета редактирования ключевых реквизитов.
+// Список таких "техногенных" объектов нужно перечислить в этой функции.
+//
+// Важно:
+// Для избежания появления пустых "битых" ссылок рекомендуется предусмотреть процедуру очистки указанных объектов метаданных.
+// Для измерений регистров сведений - с помощью установки флажка "Ведущее",
+// тогда запись регистра сведений будет удалена вместе с удалением ссылки, указанной в измерении.
+// Для других реквизитов указанных объектов - с помощью подписки на событие ПередУдалением всех типов объектов метаданных,
+// которые могут быть записаны в реквизиты указанных объектов метаданных.
+// В обработчике необходимо найти "техногенные" объекты, в реквизитах которых указана ссылка удаляемого объекта,
+// и выбрать как именно очищать ссылку: очищать значение реквизита, удалять строку таблицы или удалять весь объект.
+//
+// Например:
+// Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов);
+// Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.Реквизиты.АвторВерсии);
+// Массив.Добавить("РегистрСведений.ВерсииОбъектов");
+//
+// Возвращаемое значение:
+// Массив - Объекты метаданных или их реквизиты, содержимое которых не должно учитывается в бизнес-логике приложения.
+// * ОбъектМетаданных - Объект метаданных или его реквизит.
+// * Строка - Полное имя объекта метаданных или его реквизита.
+//
+Функция ПолучитьИсключенияПоискаСсылок() Экспорт
+
+ Массив = Новый Массив;
+
+ Возврат Массив;
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl
index 13831a783..96d551b5c 100644
--- a/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl
@@ -565,7 +565,7 @@
// Параметры соответствуют конструктору объекта WSПрокси.
//
Функция WSПрокси(Знач АдресWSDL, Знач URIПространстваИмен, Знач ИмяСервиса,
- Знач ИмяТочкиПодключения = "", Знач ИмяПользователя, Знач Пароль, Знач Таймаут = Неопределено) Экспорт
+ Знач ИмяТочкиПодключения = "", Знач ИмяПользователя, Знач Пароль, Знач Таймаут = 0) Экспорт
Возврат ОбщегоНазначения.ВнутренняяWSПрокси(АдресWSDL, URIПространстваИмен, ИмяСервиса,
ИмяТочкиПодключения, ИмяПользователя, Пароль, Таймаут);
diff --git a/SSL/src/CommonModules/ОтправкаSMS/Module.bsl b/SSL/src/CommonModules/ОтправкаSMS/Module.bsl
index 762eb3149..2cc60928b 100644
--- a/SSL/src/CommonModules/ОтправкаSMS/Module.bsl
+++ b/SSL/src/CommonModules/ОтправкаSMS/Module.bsl
@@ -14,10 +14,12 @@
// ПеревестиВТранслит - Булево - Истина, если требуется переводить текст сообщения в транслит перед отправкой.
//
// Возвращаемое значение:
-// Структура: ОтправленныеСообщения - Массив структур: НомерПолучателя
-// ИдентификаторСообщения
-// ОписаниеОшибки - Строка - пользовательское представление ошибки, если пустая строка,
-// то ошибки нет.
+// Структура:
+// * ОтправленныеСообщения - Массив - массив структур:
+// ** НомерПолучателя - Строка.
+// ** ИдентификаторСообщения - Строка.
+// * ОписаниеОшибки - Строка - пользовательское представление ошибки, если пустая строка,
+// то ошибки нет.
Функция ОтправитьSMS(НомераПолучателей, Знач Текст, ИмяОтправителя = "", ПеревестиВТранслит = Ложь) Экспорт
Результат = Новый Структура("ОтправленныеСообщения,ОписаниеОшибки", Новый Массив, "");
diff --git a/SSL/src/CommonModules/ОтправкаSMSПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОтправкаSMSПереопределяемый/Module.bsl
index 91e3d79f2..7e53d0ade 100644
--- a/SSL/src/CommonModules/ОтправкаSMSПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ОтправкаSMSПереопределяемый/Module.bsl
@@ -44,10 +44,10 @@
// Проверяет правильность сохраненных настроек отправки SMS.
//
// Параметры:
-// НастройкиОтправкиSMS - Структура -
-// Провайдер - ПеречислениеСсылка.ПровайдерыSMS;
-// Логин - Строка;
-// Пароль - Строка;
+// НастройкиОтправкиSMS - Структура:
+// * Провайдер - ПеречислениеСсылка.ПровайдерыSMS;
+// * Логин - Строка;
+// * Пароль - Строка.
// Отказ - Булево - установить этот параметр в Истина, если настройки не заполнены или заполнены неверно.
//
Процедура ПриПроверкеНастроекОтправкиSMS(НастройкиОтправкиSMS, Отказ) Экспорт
diff --git a/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl b/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl
index b1bce73ed..dab077d37 100644
--- a/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl
@@ -525,7 +525,7 @@
Задание = Выборка.Идентификатор.ПолучитьОбъект();
Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.НеЗапланировано;
- Задание.Записать();
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(Задание);
ЗафиксироватьТранзакцию();
Исключение
ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь);
@@ -589,10 +589,16 @@
КонецПопытки;
- Задание = ПараметрыОбработчикаОшибок.Задание.ПолучитьОбъект();
- Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.ОшибкаВыполнения;
- ОбщегоНазначения.ЗаписатьВспомогательныеДанные(Задание);
- РазблокироватьДанныеДляРедактирования(Задание.Ссылка);
+ Если ОбщегоНазначения.СсылкаСуществует(Задание)
+ и Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.ОбработкаОшибкиПриАварийномЗавершении Тогда
+
+ ЗаданиеОбъект = Задание.ПолучитьОбъект();
+ ЗаданиеОбъект.СостояниеЗадания = Перечисления.СостоянияЗаданий.ОшибкаВыполнения;
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(ЗаданиеОбъект);
+
+ КонецЕсли;
+
+ РазблокироватьДанныеДляРедактирования(Задание);
КонецПроцедуры
@@ -766,9 +772,7 @@
ОбщегоНазначения.УстановитьРазделениеСеанса(Истина,ЗначениеРазделителя);
КонецЕсли;
- ТекстОшибки = ИнформацияОбОшибке().Описание;
-
- ВызватьИсключение ТекстОшибки;
+ ВызватьИсключение;
КонецПопытки;
@@ -863,7 +867,6 @@
КонецФункции
-
// Формирует и возвращает таблицу имен регламентных заданий с признаком использования.
//
// Возвращаемое значение:
@@ -1050,6 +1053,12 @@
ДатаДляПроверки = НачалоДня(ДатаНачалаПоследнегоЗапуска) + Расписание.ПериодПовтораДней * 86400;
КонецЕсли;
+
+ //Если задание повторяется раз в день (но не чаще) то сдвигаем на следующий день после последнего запуска
+ Если Расписание.ПериодПовтораДней = 1 И Расписание.ПериодПовтораВТечениеДня = 0 Тогда
+ ДатаДляПроверки = Макс(ДатаДляПроверки, НачалоДня(ДатаНачалаПоследнегоЗапуска+86400));
+ КонецЕсли;
+
КонецЕсли;
// Учет допустимых интервалов запуска
@@ -1177,6 +1186,39 @@
ДетальныеРасписания = Расписание.ДетальныеРасписанияДня;
КонецЕсли;
+ // Если у нас есть промежутки, с переходом через полночь, то разбиваем их на два промежутка
+ Индекс = 0;
+ Пока Индекс < ДетальныеРасписания.Количество() Цикл
+
+ РасписаниеДня = ДетальныеРасписания[Индекс];
+
+ Если НЕ ЗначениеЗаполнено(РасписаниеДня.ВремяНачала) ИЛИ НЕ ЗначениеЗаполнено(РасписаниеДня.ВремяКонца) Тогда
+ Индекс = Индекс + 1;
+ Продолжить;
+ КонецЕсли;
+
+ Если РасписаниеДня.ВремяНачала > РасписаниеДня.ВремяКонца Тогда
+
+ РасписаниеДняПерваяПоловина = Новый РасписаниеРегламентногоЗадания();
+ ЗаполнитьЗначенияСвойств(РасписаниеДняПерваяПоловина,РасписаниеДня);
+ РасписаниеДняПерваяПоловина.ВремяНачала = НачалоДня(РасписаниеДняПерваяПоловина.ВремяНачала);
+ ДетальныеРасписания.Добавить(РасписаниеДняПерваяПоловина);
+
+ РасписаниеДняВтораяПоловина = Новый РасписаниеРегламентногоЗадания();
+ ЗаполнитьЗначенияСвойств(РасписаниеДняВтораяПоловина,РасписаниеДня);
+ РасписаниеДняВтораяПоловина.ВремяКонца = КонецДня(РасписаниеДняВтораяПоловина.ВремяНачала);
+ ДетальныеРасписания.Добавить(РасписаниеДняВтораяПоловина);
+
+ ДетальныеРасписания.Удалить(Индекс);
+
+ Иначе
+
+ Индекс = Индекс + 1;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
Для Индекс = 0 По ДетальныеРасписания.ВГраница() Цикл
РасписаниеДня = ДетальныеРасписания[Индекс];
@@ -1361,7 +1403,7 @@
Задание.НомерПопытки = Задание.НомерПопытки + 1;
Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.Запланировано;
Задание.ИсполняющееФоновоеЗадание = Неопределено;
- Задание.Записать();
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(Задание);
ИначеЕсли Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.Выполняется Тогда // Задание не было выполнено, запланируем обработчик ошибки
@@ -1388,10 +1430,15 @@
// Останавливаем выполнение задания пока не будет выполнен обработчик ошибок
Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.ОбработкаОшибкиПриАварийномЗавершении;
- Задание.Записать();
+
+ Иначе
+
+ Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.ОшибкаВыполнения;
КонецЕсли;
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(Задание);
+
Иначе
Расписание = Выборка.Расписание.Получить();
Если Расписание <> Неопределено Тогда
@@ -1405,7 +1452,7 @@
Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.НеАктивно;
КонецЕсли;
Задание.ИсполняющееФоновоеЗадание = Неопределено;
- Задание.Записать();
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(Задание);
Иначе // Нет расписания
@@ -1492,7 +1539,7 @@
Задание.ИсполняющееФоновоеЗадание = ИсполняющееФоновоеЗадание.УникальныйИдентификатор;
Задание.ДатаНачалаПоследнегоЗапуска = ТекущаяУниверсальнаяДата();
Задание.ДатаЗавершенияПоследнегоЗапуска = Неопределено;
- Задание.Записать();
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(Задание);
ЗафиксироватьТранзакцию();
@@ -1532,18 +1579,19 @@
Исключение
+ ИнформацияОбОшибкеВыполненияЗадания = ИнформацияОбОшибке();
+
ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Завершено с ошибками'",
ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Ссылка,
- ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибкеВыполненияЗадания));
ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь регламентных заданий.Выполнение'",
ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
,
ИсполняющееФоновоеЗадание,
- ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибкеВыполненияЗадания));
- ИнформацияОбОшибкеВыполненияЗадания = ИнформацияОбОшибке();
КонецПопытки;
@@ -1572,7 +1620,7 @@
Иначе
Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.ОшибкаВыполнения;
КонецЕсли;
- Задание.Записать();
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(Задание);
КонецЕсли;
@@ -1697,7 +1745,7 @@
КонецЕсли;
ЗаполнитьЗначенияСвойств(НовоеЗадание, Выборка);
- НовоеЗадание.Записать();
+ ОбщегоНазначения.ЗаписатьВспомогательныеДанные(НовоеЗадание);
КонецЦикла;
diff --git a/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl b/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl
index b624b931e..e521f1f7b 100644
--- a/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl
+++ b/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl
@@ -65,6 +65,7 @@
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "ПолнотекстовыйПоискСервер.ИнициализироватьФункциональнуюОпциюПолнотекстовыйПоиск";
+ Обработчик.Версия = "1.0.0.1";
Обработчик.ОбщиеДанные = Истина;
КонецПроцедуры
@@ -176,7 +177,7 @@
// Запись в журнал регистрации
ЗаписьЖурналаРегистрации(
- НСтр("ru = 'Полнотекстовый поиск'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
+ НСтр("ru = 'Полнотекстовое индексирование'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурнала, , ,
ТекстДляЖурнала);
diff --git a/SSL/src/CommonModules/Пользователи/Module.bsl b/SSL/src/CommonModules/Пользователи/Module.bsl
index 5f692ec34..4f00d855d 100644
--- a/SSL/src/CommonModules/Пользователи/Module.bsl
+++ b/SSL/src/CommonModules/Пользователи/Module.bsl
@@ -8,14 +8,14 @@
////////////////////////////////////////////////////////////////////////////////
// Основные процедуры и функции.
-// См. ПользователиКлиентСервер.АвторизованныйПользователь().
+// См. одноименную функцию в общем модуле ПользователиКлиентСервер.
Функция АвторизованныйПользователь() Экспорт
Возврат ПользователиКлиентСервер.АвторизованныйПользователь();
КонецФункции
-// См. ПользователиКлиентСервер.ТекущийПользователь().
+// См. одноименную функцию в общем модуле ПользователиКлиентСервер.
Функция ТекущийПользователь() Экспорт
Возврат ПользователиКлиентСервер.ТекущийПользователь();
@@ -31,25 +31,20 @@
// основная роль конфигурации не задана или ПолныеПрава.
//
// Параметры:
-// Пользователь - Неопределено - проверяется текущий пользователь ИБ;
-// СправочникСсылка.Пользователи,
-// СправочникСсылка.ВнешниеПользователи - осуществляется поиск
-// пользователя ИБ по уникальному идентификатору,
-// заданному в реквизите ИдентификаторПользователяИБ.
-// Прим.: если пользователь ИБ не найден, возвращается Ложь.
-// ПользовательИнформационнойБазы - проверяется указанный
-// пользователь ИБ.
+// Пользователь - Неопределено - проверяется текущий пользователь ИБ.
+// - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи - осуществляется
+// поиск пользователя ИБ по уникальному идентификатору, заданному в реквизите
+// ИдентификаторПользователяИБ. Если пользователь ИБ не найден, возвращается Ложь.
+// - ПользовательИнформационнойБазы - проверяется указанный пользователь ИБ.
//
-// ПроверятьПраваАдминистрированияСистемы - Булево - если задано Истина, тогда
-// проверяется наличие роли для администрирования системы.
-// Начальное значение: Ложь.
+// ПроверятьПраваАдминистрированияСистемы - Булево - если задано Истина, тогда проверяется наличие
+// роли для администрирования системы
//
// УчитыватьПривилегированныйРежим - Булево - если задано Истина, тогда для текущего пользователя
// функция возвращает Истина, когда установлен привилегированный режим.
-// Начальное значение: Истина.
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, пользователь является полноправным.
//
Функция ЭтоПолноправныйПользователь(Пользователь = Неопределено,
ПроверятьПраваАдминистрированияСистемы = Ложь,
@@ -124,18 +119,14 @@
// Параметры:
// ИменаРолей - Строка - имена ролей, разделенные запятыми, доступность которых проверяется.
//
-// Пользователь - Неопределено - проверяется текущий пользователь ИБ;
-// СправочникСсылка.Пользователи,
-// СправочникСсылка.ВнешниеПользователи - осуществляется поиск
-// пользователя ИБ по уникальному идентификатору,
-// заданному в реквизите ИдентификаторПользователяИБ
-// Прим.: если пользователь ИБ не найден, возвращается Ложь.
-// ПользовательИнформационнойБазы - проверяется указанный
-// пользователь ИБ
+// Пользователь - Неопределено - проверяется текущий пользователь ИБ.
+// - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи - осуществляется
+// поиск пользователя ИБ по уникальному идентификатору, заданному в реквизите
+// ИдентификаторПользователяИБ. Если пользователь ИБ не найден, возвращается Ложь.
+// - ПользовательИнформационнойБазы - проверяется указанный пользователь ИБ.
//
// УчитыватьПривилегированныйРежим - Булево - если задано Истина, тогда для текущего пользователя
// функция возвращает Истина, когда установлен привилегированный режим.
-// Начальное значение: Истина.
//
// Возвращаемое значение:
// Булево - Истина, если хотя бы одна из указанных ролей доступна,
@@ -178,14 +169,17 @@
// Проверяет наличие хотя бы одного вида аутентификации у пользователя ИБ.
//
// Параметры:
-// ОписаниеПользователяИБ - УникальныйИдентификатор - пользователя ИБ,
-// - Структура - содержит 3 свойства аутентификации,
-// - ПользовательИнформационнойБазы,
-// - СправочникСсылка.Пользователи,
-// - СправочникСсылка.ВнешниеПользователи.
+// ОписаниеПользователяИБ - УникальныйИдентификатор - пользователя ИБ.
+// - Структура - содержит 3 свойства аутентификации:
+// * АутентификацияСтандартная - Булево -
+// * АутентификацияОС - Булево -
+// * АутентификацияOpenID - Булево -
+// - ПользовательИнформационнойБазы -
+// - СправочникСсылка.Пользователи -
+// - СправочникСсылка.ВнешниеПользователи -
//
// Возвращаемое значение:
-// Булево. Истина - если хотя бы одно свойство аутентификации равно Истина.
+// Булево - Истина, если хотя бы одно свойство аутентификации равно Истина.
//
Функция ВходВПрограммуРазрешен(ОписаниеПользователяИБ) Экспорт
@@ -231,15 +225,15 @@
// Используется в обработчиках событий ОкончаниеВводаТекста и АвтоПодбор.
//
// Параметры:
-// Текст - Строка, символы введенные пользователем.
+// Текст - Строка - символы введенные пользователем.
//
-// ВключаяГруппы - Булево, если Истина, включать группы пользователей и внешних пользователей.
+// ВключаяГруппы - Булево - если Истина, включать группы пользователей и внешних пользователей.
// Если ФО ИспользоватьГруппыПользователей отключена, параметр игнорируется.
//
-// ВключаяВнешнихПользователей - Неопределено, Булево, когда Неопределено, используется значение,
+// ВключаяВнешнихПользователей - Неопределено, Булево - когда Неопределено, используется значение,
// возвращаемое функцией ВнешниеПользователи.ИспользоватьВнешнихПользователей().
//
-// БезПользователей - Булево, если Истина, то элементы справочника Пользователи
+// БезПользователей - Булево - если Истина, то элементы справочника Пользователи
// исключаются из результата.
//
Функция СформироватьДанныеВыбораПользователя(Знач Текст,
@@ -337,11 +331,11 @@
// пользователей, групп пользователей, внешних пользователей и групп внешних пользователей.
//
// Параметры:
-// Таблица - ДанныеФормыКоллекция, ДанныеФормыДерево.
-// ИмяПоляПользователь - Строка, имя поля содержащего ссылку на пользователя, группу пользователей,
+// Таблица - ДанныеФормыКоллекция, ДанныеФормыДерево - список для заполнения.
+// ИмяПоляПользователь - Строка - имя поля содержащего ссылку на пользователя, группу пользователей,
// внешнего пользователя или группу внешних пользователей.
-// ИмяПоляНомераКартинки - Строка, имя поля содержащего номер картинки, который нужно установить.
-// ИдентификаторСтроки - Неопределено, Число, идентификатор строки (не порядковый номер),
+// ИмяПоляНомераКартинки - Строка - имя поля содержащего номер картинки, который нужно установить.
+// ИдентификаторСтроки - Неопределено, Число - идентификатор строки (не порядковый номер),
// когда Неопределено, заполнить картинки для всех строк таблицы.
//
Процедура ЗаполнитьНомераКартинокПользователей(Знач Таблица,
@@ -632,13 +626,13 @@
//
// Параметры:
// ПользовательИБ - Строка - имя пользователя ИБ.
-// УникальныйИдентификатор - уникальный идентификатор пользователя ИБ.
-// ПользовательИнформационнойБазы.
+// - УникальныйИдентификатор - уникальный идентификатор пользователя ИБ.
+// - ПользовательИнформационнойБазы -
//
-// УчетнаяЗапись - ПользовательИнформационнойБазы (возвращаемое значение).
+// УчетнаяЗапись - ПользовательИнформационнойБазы - (возвращаемое значение).
//
// Возвращаемое значение:
-// Булево. Истина, если пользователь ИБ существует и его идентификатор
+// Булево - Истина, если пользователь ИБ существует и его идентификатор
// используется либо в справочнике Пользователи, либо в справочнике ВнешниеПользователи.
//
Функция ПользовательИБЗанят(ПользовательИБ, УчетнаяЗапись = Неопределено) Экспорт
@@ -666,38 +660,34 @@
// Возвращает пустую структуру описания пользователя ИБ.
//
// Возвращаемое значение:
-// Структура.
-// УникальныйИдентификатор - УникальныйИдентификатор.
-// Имя - Строка.
-// ПолноеИмя - Строка.
+// Структура - со свойствами:
+// * УникальныйИдентификатор - УникальныйИдентификатор -
+// * Имя - Строка -
+// * ПолноеИмя - Строка -
//
-// АутентификацияOpenID - Булево.
+// * АутентификацияOpenID - Булево -
//
-// АутентификацияСтандартная - Булево.
-// ПоказыватьВСпискеВыбора - Булево.
-// Пароль - Неопределено.
-// СохраняемоеЗначениеПароля - Неопределено.
-// ПарольУстановлен - Булево.
-// ЗапрещеноИзменятьПароль - Булево.
+// * АутентификацияСтандартная - Булево -
+// * ПоказыватьВСпискеВыбора - Булево -
+// * Пароль - Неопределено -
+// * СохраняемоеЗначениеПароля - Неопределено -
+// * ПарольУстановлен - Булево -
+// * ЗапрещеноИзменятьПароль - Булево -
//
-// АутентификацияОС - Булево.
-// ПользовательОС - Строка (не учитывается в учебной платформе).
+// * АутентификацияОС - Булево -
+// * ПользовательОС - Строка - (не учитывается в учебной платформе).
//
-// ОсновнойИнтерфейс - Неопределено,
-// Строка (имя интерфейса из коллекции
-// Метаданные.Интерфейсы).
+// * ОсновнойИнтерфейс - Неопределено -
+// - Строка - имя интерфейса из коллекции "Метаданные.Интерфейсы".
//
-// РежимЗапуска - Неопределено,
-// Строка (значения: "Авто",
-// "ОбычноеПриложение",
-// "УправляемоеПриложение").
-// Язык - Неопределено,
-// Строка (имя языка из коллекции
-// Метаданные.Языки).
+// * РежимЗапуска - Неопределено -
+// - Строка - значения: "Авто", "ОбычноеПриложение", "УправляемоеПриложение".
+// * Язык - Неопределено -
+// - Строка - имя языка из коллекции "Метаданные.Языки".
//
-// Роли - Неопределено,
-// Массив значений типа Строка (имена ролей
-// из коллекции Метаданные.Роли).
+// * Роли - Неопределено -
+// - Массив - значений типа:
+// * Строка - имена ролей из коллекции "Метаданные.Роли".
//
Функция НовоеОписаниеПользователяИБ() Экспорт
@@ -734,17 +724,15 @@
КонецФункции
-// Считывает свойства пользователя информационной базы по
-// строковому или уникальному идентификатору.
+// Считывает свойства пользователя информационной базы по строковому или уникальному идентификатору.
//
// Параметры:
-// Идентификатор - Неопределено, Строка, УникальныйИдентификатор (идентификатор пользователя).
-// Свойства - Структура со свойствами, как в фукнции НовоеОписаниеПользователяИБ().
-// ОписаниеОшибки - Строка, содержит описание ошибки, если чтение не удалось.
+// Идентификатор - Неопределено, Строка, УникальныйИдентификатор - идентификатор пользователя.
+// Свойства - Структура - со свойствами, как в фукнции НовоеОписаниеПользователяИБ().
+// ОписаниеОшибки - Строка - содержит описание ошибки, если чтение не удалось.
//
// Возвращаемое значение:
-// Булево,
-// если Истина - успех, иначе отказ, см. ОписаниеОшибки.
+// Булево - если Истина, тогда пользователь прочитан, иначе см. ОписаниеОшибки.
//
Функция ПрочитатьПользователяИБ(Знач Идентификатор,
Свойства = Неопределено,
@@ -790,29 +778,26 @@
// (если задано создать существующего пользователя - будет ошибка).
//
// Параметры:
-// Идентификатор - Строка, УникальныйИдентификатор (идентификатор пользователя).
+// Идентификатор - Строка, УникальныйИдентификатор - идентификатор пользователя.
//
-// ОбновляемыеСвойства - Структура со свойствами, как в фукнции НовоеОписаниеПользователяИБ().
-// Свойство может быть не задано, тогда используется прочитанное или
-// начальное значение. Следующие свойства используются нестандартно:
-//
-// УникальныйИдентификатор - Неопределено (возвращаемое значение, устанавливается
-// после записи пользователя ИБ).
-// СтарыйПароль - Неопределено,
-// Строка - если заданный пароль не совпадет
-// с существующим будет ошибка.
+// ОбновляемыеСвойства - Структура - со свойствами, как в фукнции НовоеОписаниеПользователяИБ().
+// Свойство может быть не задано, тогда используется прочитанное или начальное значение.
+// Следующие свойства структуры используются нестандартно:
+// * УникальныйИдентификатор - Неопределено - (возвращаемое значение),
+// устанавливается после записи пользователя ИБ.
+// * СтарыйПароль - Неопределено, Строка - если заданный пароль
+// не совпадет с существующим будет ошибка.
//
// СоздатьНового - Ложь - никаких дополнительных действий.
-// Неопределено,
-// Истина - создается новый пользователь ИБ, когда ПользовательИБ
-// не найден по указанному идентификатору.
+// - Неопределено, Истина - создается новый пользователь ИБ,
+// когда ПользовательИБ не найден по указанному идентификатору.
// При значении Истина, если Пользователь ИБ найден
// по указанному идентификатору - будет ошибка.
//
-// ОписаниеОшибки - Строка, содержит описание ошибки, если чтение не удалось.
+// ОписаниеОшибки - Строка - содержит описание ошибки, если чтение не удалось.
//
// Возвращаемое значение:
-// Булево, если Истина - успех, иначе отказ, см. ОписаниеОшибки.
+// Булево - если Истина, тогда пользователь записан, иначе см. ОписаниеОшибки.
//
Функция ЗаписатьПользователяИБ(Знач Идентификатор,
Знач ОбновляемыеСвойства,
@@ -918,13 +903,13 @@
// Удаляет указанного пользователя информационной базы.
//
// Параметры:
-// Идентификатор - Строка - имя пользователя ИБ,
-// УникальныйИдентификатор - идентификатор пользователя ИБ.
+// Идентификатор - Строка - имя пользователя ИБ.
+// - УникальныйИдентификатор - идентификатор пользователя ИБ.
//
-// ОписаниеОшибки - Строка, содержит описание ошибки, если удаление не удалось.
+// ОписаниеОшибки - Строка - (возвращаемое значение) содержит описание ошибки, если удаление не удалось.
//
// Возвращаемое значение:
-// Булево, если Истина - успех, иначе отказ, см. ОписаниеОшибки.
+// Булево - если Истина пользователь успешно удален, иначе см. ОписаниеОшибки.
//
Функция УдалитьПользователяИБ(Знач Идентификатор,
ОписаниеОшибки = "",
@@ -984,21 +969,15 @@
// ПользовательИнформационнойБазы.
//
// Параметры:
-// Приемник - Структура - подмножество свойств из НовоеОписаниеПользователяИБ().
-// ИЛИ НЕ Структура, например:
-// ПользовательИнформационнойБазы,
-// ДанныеФормыКоллекция.
+// Приемник - Структура, ПользовательИнформационнойБазы, ДанныеФормыКоллекция - подмножество
+// свойств из НовоеОписаниеПользователяИБ().
//
-// Источник - как и приемник, но типы обратные, т.е. когда в Приемнике
-// тип Структура, тогда в источнике НЕ Структура.
+// Источник - Структура, ПользовательИнформационнойБазы, ДанныеФормыКоллекция - как и приемник,
+// но типы обратные, т.е. когда в Приемнике тип Структура, тогда в источнике НЕ Структура.
//
-// СписокСвойств - Строка - список свойств через запятую,
-// которые нужно скопировать (без префикса).
-//
-// ИсключаемыеСвойства - Строка - список свойств через запятую,
-// которые не нужно копировать (без префикса).
-//
-// ПрефиксСвойств - Строка - начальное имя для Источника или Приемника типа НЕ Структура.
+// КопируемыеСвойства - Строка - список свойств через запятую, которые нужно скопировать (без префикса).
+// ИсключаемыеСвойства - Строка - список свойств через запятую, которые не нужно копировать (без префикса).
+// ПрефиксСвойств - Строка - начальное имя для Источника или Приемника типа НЕ Структура.
//
Процедура СкопироватьСвойстваПользователяИБ(Приемник,
Источник,
@@ -1252,7 +1231,7 @@
// а роль для проверки может быть ПолныеПрава с правом Администрирование.
//
// Возвращаемое значение:
-// ОбъектМетаданных: Роль.
+// ОбъектМетаданных - Роль.
//
Функция РольАдминистратораСистемы(ДляПроверки = Ложь) Экспорт
@@ -1275,23 +1254,20 @@
//
// Параметры:
// Пользователь - Неопределено - проверка для всех пользователей и внешних пользователей.
-// СправочникСсылка.Пользователи или
-// СправочникСсылка.ВнешниеПользователи - проверка только для указанной ссылки.
+// - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи - проверка
+// только для указанной ссылки.
//
-// УникальныйИдентификатор
-// - Неопределено - проверка всех заданных идентификаторов пользователей ИБ.
-// - УникальныйИдентификатор - проверка только для заданного идентификатора.
+// УникальныйИдентификатор - Неопределено - проверка всех заданных идентификаторов пользователей ИБ.
+// - УникальныйИдентификатор - проверка только для заданного идентификатора.
//
-// НайденныеИдентификаторы
-// - Неопределено - при нахождении ошибок вызывается исключение.
-// Соответствие - при нахождении ошибок исключение не вызывается,
-// а вместо этого заполняется переданное соответствие:
-// Ключ - неоднозначный идентификатор пользователя ИБ.
-// Значение - массив пользователей и внешних пользователей.
+// НайденныеИдентификаторы - Неопределено - при нахождении ошибок вызывается исключение.
+// - Соответствие - при нахождении ошибок исключение не вызывается,
+// а вместо этого заполняется переданное соответствие:
+// * Ключ - неоднозначный идентификатор пользователя ИБ.
+// * Значение - массив пользователей и внешних пользователей.
//
-// ИдентификаторПользователяСервиса - Булево.
-// Ложь - проверять ИдентификаторПользователяИБ.
-// Истина - проверять ИдентификаторПользователяСервиса.
+// ИдентификаторПользователяСервиса - Булево - если Ложь, тогда проверять ИдентификаторПользователяИБ,
+// если Истина,тогда проверять ИдентификаторПользователяСервиса.
//
Процедура НайтиНеоднозначныхПользователейИБ(Знач Пользователь = Неопределено,
Знач УникальныйИдентификатор = Неопределено,
@@ -1456,6 +1432,10 @@
КонецФункции
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
////////////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
diff --git a/SSL/src/CommonModules/ПользователиКлиентСервер/Module.bsl b/SSL/src/CommonModules/ПользователиКлиентСервер/Module.bsl
index c24829adc..182c333e1 100644
--- a/SSL/src/CommonModules/ПользователиКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ПользователиКлиентСервер/Module.bsl
@@ -7,11 +7,10 @@
// Возвращает текущего пользователя или текущего внешнего пользователя,
// в зависимости от того, кто выполнил вход в сеанс.
-// Рекомендуется использовать в коде, который поддерживает работу
-// в обоих случаях.
+// Рекомендуется использовать в коде, который поддерживает работу в обоих случаях.
//
// Возвращаемое значение:
-// СправочникСсылка.Пользователи или СправочникСсылка.ВнешниеПользователи.
+// - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи -
//
Функция АвторизованныйПользователь() Экспорт
@@ -28,11 +27,9 @@
КонецФункции
// Возвращает текущего пользователя.
-// Рекомендуется использовать в коде, который не поддерживает
-// работу с внешними пользователями.
+// Рекомендуется использовать в коде, который не поддерживает работу с внешними пользователями.
//
-// Если вход в сеанс выполнил внешний пользователь,
-// тогда будет вызвано исключение.
+// Если вход в сеанс выполнил внешний пользователь, тогда будет вызвано исключение.
//
// Возвращаемое значение:
// СправочникСсылка.Пользователи
@@ -52,11 +49,9 @@
КонецФункции
// Возвращает текущего внешнего пользователя.
-// Рекомендуется использовать в коде, который поддерживает
-// только внешних пользователей.
+// Рекомендуется использовать в коде, который поддерживает только внешних пользователей.
//
-// Если вход в сеанс выполнил не внешний пользователь,
-// тогда будет вызвано исключение.
+// Если вход в сеанс выполнил не внешний пользователь, тогда будет вызвано исключение.
//
// Возвращаемое значение:
// СправочникСсылка.ВнешниеПользователи
@@ -76,6 +71,10 @@
КонецФункции
// Возвращает Истина, если вход в сеанс выполнил внешний пользователь.
+//
+// Возвращаемое значение:
+// Булево - Истина, если вход в сеанс выполнил внешний пользователь.
+//
Функция ЭтоСеансВнешнегоПользователя() Экспорт
Возврат ТипЗнч(АвторизованныйПользователь())
diff --git a/SSL/src/CommonModules/ПользователиПереопределяемый/Module.bsl b/SSL/src/CommonModules/ПользователиПереопределяемый/Module.bsl
index ab3eff688..b8b2e0212 100644
--- a/SSL/src/CommonModules/ПользователиПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ПользователиПереопределяемый/Module.bsl
@@ -8,7 +8,7 @@
// Переопределяет стандартный способ установки ролей пользователям ИБ.
//
// Параметры:
-// Запрет - Булево. Если установить Истина, изменение ролей
+// Запрет - Булево - если установить Истина, изменение ролей
// блокируется (в том числе для администратора).
//
Процедура ИзменитьЗапретРедактированияРолей(Запрет) Экспорт
@@ -21,15 +21,14 @@
// Параметры:
// Ссылка - СправочникСсылка.Пользователи,
// СправочникСсылка.ВнешниеПользователи,
-// СправочникСсылка.ГруппыВнешнихПользователей
-// ссылка на пользователя, внешнего пользователя или группу внешних пользователей
-// при создании формы.
+// СправочникСсылка.ГруппыВнешнихПользователей - ссылка на пользователя,
+// внешнего пользователя или группу внешних пользователей при создании формы.
//
-// ДействияВФорме - Структура (со свойствами типа Строка):
-// Роли = "", "Просмотр", "Редактирование"
-// КонтактнаяИнформация = "", "Просмотр", "Редактирование"
-// СвойстваПользователяИБ = "", "Просмотр", "Редактирование"
-// СвойстваЭлемента = "", "Просмотр", "Редактирование"
+// ДействияВФорме - Структура - со свойствами:
+// * Роли - Строка - "", "Просмотр", "Редактирование".
+// * КонтактнаяИнформация - Строка - "", "Просмотр", "Редактирование".
+// * СвойстваПользователяИБ - Строка - "", "Просмотр", "Редактирование".
+// * СвойстваЭлемента - Строка - "", "Просмотр", "Редактирование".
//
// Для групп внешних пользователей КонтактнаяИнформация и СвойстваПользователяИБ не существуют.
//
@@ -41,8 +40,8 @@
// Вызывается из процедуры ЗаписатьПользователяИБ(), если пользователь был действительно изменен.
//
// Параметры:
-// СтарыеСвойства - Структура, см. параметры возвращаемые функцией Пользователи.ПрочитатьПользователяИБ()
-// НовыеСвойства - Структура, см. параметры возвращаемые функцией Пользователи.ЗаписатьПользователяИБ()
+// СтарыеСвойства - Структура - см. параметры возвращаемые функцией Пользователи.ПрочитатьПользователяИБ().
+// НовыеСвойства - Структура - см. параметры возвращаемые функцией Пользователи.ЗаписатьПользователяИБ().
//
Процедура ПриЗаписиПользователяИнформационнойБазы(Знач СтарыеСвойства, Знач НовыеСвойства) Экспорт
@@ -52,29 +51,34 @@
// Вызывается из процедуры УдалитьПользователяИБ(), если пользователь был удален.
//
// Параметры:
-// СтарыеСвойства - Структура, см. параметры возвращаемые функцией Пользователи.ПрочитатьПользователяИБ()
+// СтарыеСвойства - Структура - см. параметры возвращаемые функцией Пользователи.ПрочитатьПользователяИБ().
//
Процедура ПослеУдаленияПользователяИнформационнойБазы(Знач СтарыеСвойства) Экспорт
КонецПроцедуры
-// Переопределяет настройки интерфейса, устанавливаемые для новых пользователей
+// Переопределяет настройки интерфейса, устанавливаемые для новых пользователей.
//
// Параметры:
-// НастройкиКлиента - НастройкиКлиентскогоПриложения,
-// НастройкиИнтерфейса - НастройкиКомандногоИнтерфейса.
+// НачальныеНастройки - Структура - настройки по умолчанию:
+// * НастройкиКлиента - НастройкиКлиентскогоПриложения - настройки клиентского приложения.
+// * НастройкиИнтерфейса - НастройкиКомандногоИнтерфейса - настройки командного интерфейса (панели разделов, панели навигации, панели действий).
+// * НастройкиТакси - НастройкиИнтерфейсаКлиентскогоПриложения - настройки интерфейса клиентского приложения (состав и размещение панелей).
//
-Процедура ПриУстановкеНачальныхНастроек(НастройкиКлиента, НастройкиИнтерфейса) Экспорт
+Процедура ПриУстановкеНачальныхНастроек(НачальныеНастройки) Экспорт
+
+
КонецПроцедуры
// Дополняет список настроек переданного пользователя на вкладке "Прочее" обработки НастройкиПользователей.
//
// Параметры:
-// СведенияОПользователе - Структура - Строковое и ссылочное представление пользователя.
-// * ПользовательСсылка - СправочникСсылка.Пользователи - пользователь, у которого нужно получить настройки.
+// СведенияОПользователе - Структура - строковое и ссылочное представление пользователя.
+// * ПользовательСсылка - СправочникСсылка.Пользователи - пользователь,
+// у которого нужно получить настройки.
// * ИмяПользователяИнформационнойБазы - Строка - пользователь информационной базы,
-// у которого нужно получить настройки.
+// у которого нужно получить настройки.
// Настройки - Структура - прочие пользовательские настройки.
// * Ключ - Строка - строковый идентификатор настройки, используемый в дальнейшем
// для копирования и очистки этой настройки.
@@ -92,11 +96,12 @@
// Сохраняет настройки переданному пользователю.
//
// Параметры:
-// Настройки - СписокЗначений - список значений сохраняемых настроек
-// СведенияОПользователе - Структура - Строковое и ссылочное представление пользователя.
-// * ПользовательСсылка - СправочникСсылка.Пользователи - пользователь, которому нужно скопировать настройку.
+// Настройки - СписокЗначений - список значений сохраняемых настроек.
+// СведенияОПользователе - Структура - строковое и ссылочное представление пользователя.
+// * ПользовательСсылка - СправочникСсылка.Пользователи - пользователь,
+// которому нужно скопировать настройку.
// * ИмяПользователяИнформационнойБазы - Строка - пользователь информационной базы,
-// которому нужно скопировать настройку.
+// которому нужно скопировать настройку.
//
Процедура ПриСохраненииПрочихНастроек(СведенияОПользователе, Настройки) Экспорт
@@ -107,11 +112,12 @@
// Очищает настройки переданному пользователю.
//
// Параметры:
-// Настройки - СписокЗначений - список значений очищаемых настроек
-// СведенияОПользователе - Структура - Строковое и ссылочное представление пользователя.
-// * ПользовательСсылка - СправочникСсылка.Пользователи - пользователь, которому нужно очистить настройку.
+// Настройки - СписокЗначений - список значений очищаемых настроек
+// СведенияОПользователе - Структура - строковое и ссылочное представление пользователя.
+// * ПользовательСсылка - СправочникСсылка.Пользователи - пользователь,
+// которому нужно очистить настройку.
// * ИмяПользователяИнформационнойБазы - Строка - пользователь информационной базы,
-// которому нужно очистить настройку.
+// которому нужно очистить настройку.
//
Процедура ПриУдаленииПрочихНастроек(СведенияОПользователе, Настройки) Экспорт
diff --git a/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl
index 3daaa963e..bc9effec7 100644
--- a/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl
@@ -393,19 +393,6 @@
Если НЕ ПриНачалеРаботыСистемы Тогда
ОбновитьПовторноИспользуемыеЗначения();
- Иначе
- // Программное заполнение списка пользователей.
- Перезапустить = Ложь;
- ДополнительныеПараметрыКоманднойСтроки = "";
-
- ПередАвторизациейТекущегоПользователяПриНачалеРаботыСистемы(
- Перезапустить, ДополнительныеПараметрыКоманднойСтроки);
-
- Если Перезапустить Тогда
- Возврат Новый Структура(
- "ДополнительныеПараметрыКоманднойСтроки",
- ДополнительныеПараметрыКоманднойСтроки);
- КонецЕсли;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
@@ -522,32 +509,53 @@
СистемнаяИнформация = Новый СистемнаяИнформация;
- Такси = Ложь;
ТекущийРежим = Метаданные.РежимСовместимостиИнтерфейса;
Такси = (ТекущийРежим = Метаданные.СвойстваОбъектов.РежимСовместимостиИнтерфейса.Такси
ИЛИ ТекущийРежим = Метаданные.СвойстваОбъектов.РежимСовместимостиИнтерфейса.ТаксиРазрешитьВерсия8_2);
- Если Не Такси Тогда
+ НастройкиКлиента = Новый НастройкиКлиентскогоПриложения;
+ НастройкиКлиента.ОтображатьПанелиНавигацииИДействий = Ложь;
+ НастройкиКлиента.ОтображатьПанельРазделов = Истина;
+ НастройкиКлиента.РежимОткрытияФормПриложения = РежимОткрытияФормПриложения.Закладки;
- НастройкиКлиента = Новый НастройкиКлиентскогоПриложения();
- НастройкиКлиента.ОтображатьПанелиНавигацииИДействий = Ложь;
- НастройкиКлиента.ОтображатьПанельРазделов = Истина;
- НастройкиКлиента.РежимОткрытияФормПриложения = РежимОткрытияФормПриложения.Закладки;
+ НастройкиТакси = Неопределено;
+ НастройкиИнтерфейса = Новый НастройкиКомандногоИнтерфейса;
+
+ Если Такси Тогда
+ НастройкиКлиента.ВариантИнтерфейсаКлиентскогоПриложения = ВариантИнтерфейсаКлиентскогоПриложения.Такси;
- НастройкиИнтерфейса = Новый НастройкиКомандногоИнтерфейса();
+ НастройкиИнтерфейса.ОтображениеПанелиРазделов = ОтображениеПанелиРазделов.КартинкаИТекст;
+
+ НастройкиТакси = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
+ НастройкиСостава = Новый НастройкиСоставаИнтерфейсаКлиентскогоПриложения;
+ ГруппаСлева = Новый ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения;
+ ГруппаСлева.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИнструментов"));
+ ГруппаСлева.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельРазделов"));
+ НастройкиСостава.Лево.Добавить(ГруппаСлева);
+ НастройкиТакси.УстановитьСостав(НастройкиСостава);
+ Иначе
НастройкиИнтерфейса.ОтображениеПанелиРазделов = ОтображениеПанелиРазделов.Текст;
-
- ПользователиПереопределяемый.ПриУстановкеНачальныхНастроек(
- НастройкиКлиента,
- НастройкиИнтерфейса);
-
- ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения", "",
- НастройкиКлиента, , ИмяПользователя);
-
- ХранилищеСистемныхНастроек.Сохранить("Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса", "",
- НастройкиИнтерфейса, , ИмяПользователя);
КонецЕсли;
+ НачальныеНастройки = Новый Структура("НастройкиКлиента,НастройкиИнтерфейса,НастройкиТакси",
+ НастройкиКлиента, НастройкиИнтерфейса, НастройкиТакси);
+ ПользователиПереопределяемый.ПриУстановкеНачальныхНастроек(НачальныеНастройки);
+
+ Если НачальныеНастройки.НастройкиКлиента <> Неопределено Тогда
+ ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения", "",
+ НачальныеНастройки.НастройкиКлиента, , ИмяПользователя);
+ КонецЕсли;
+
+ Если НачальныеНастройки.НастройкиИнтерфейса <> Неопределено Тогда
+ ХранилищеСистемныхНастроек.Сохранить("Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса", "",
+ НачальныеНастройки.НастройкиИнтерфейса, , ИмяПользователя);
+ КонецЕсли;
+
+ Если НачальныеНастройки.НастройкиТакси <> Неопределено Тогда
+ ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", "",
+ НачальныеНастройки.НастройкиТакси, , ИмяПользователя);
+ КонецЕсли;
+
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -649,6 +657,57 @@
КонецФункции
+// При первом запуске подчиненного узла очищает идентификаторы
+// пользователей ИБ, скопированные при создании начального образа.
+//
+Процедура ОчиститьИдентификаторыНесуществующихПользователейИБ() Экспорт
+
+ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПустойУникальныйИдентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", ПустойУникальныйИдентификатор);
+
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | Пользователи.Ссылка КАК Ссылка,
+ | Пользователи.ИдентификаторПользователяИБ
+ |ИЗ
+ | Справочник.Пользователи КАК Пользователи
+ |ГДЕ
+ | Пользователи.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |ВЫБРАТЬ
+ | ВнешниеПользователи.Ссылка,
+ | ВнешниеПользователи.ИдентификаторПользователяИБ
+ |ИЗ
+ | Справочник.Пользователи КАК ВнешниеПользователи
+ |ГДЕ
+ | ВнешниеПользователи.ИдентификаторПользователяИБ <> &ПустойУникальныйИдентификатор";
+
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ Пока Выборка.Следующий() Цикл
+
+ ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(
+ Выборка.ИдентификаторПользователяИБ);
+
+ Если ПользовательИБ <> Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ТекущийОбъект = Выборка.Ссылка.ПолучитьОбъект();
+ ТекущийОбъект.ИдентификаторПользователяИБ = ПустойУникальныйИдентификатор;
+ ОбновлениеИнформационнойБазы.ЗаписатьДанные(ТекущийОбъект);
+ КонецЦикла;
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -705,6 +764,11 @@
Обработчик.Версия = "2.2.2.42";
Обработчик.Процедура = "ПользователиСлужебный.ДобавитьПолноправнымПользователямРольАдминистраторСистемы";
+ Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "2.2.3.16";
+ Обработчик.ОбщиеДанные = Истина;
+ Обработчик.Процедура = "ПользователиСлужебный.УдалитьКэшНеразделенныеДанныеДоступныеДляИзменения";
+
КонецПроцедуры
// Возвращает соответствие имен параметров сеанса и обработчиков для их инициализации.
@@ -1015,9 +1079,8 @@
// - они отключаются только с отключением всего отчета.
//
Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
-
- Отчеты.СведенияОПользователях.НастроитьВариантыОтчета(Настройки);
-
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.СведенияОПользователях);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -1241,8 +1304,8 @@
ПараметрыОбработки.Вставить("УровеньДоступа", УровеньДоступа);
// ПередНачаломОбработкиПользователяИБ - поддержка модели сервиса.
- Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
- МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
+ МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
МодульПользователиСлужебныйВМоделиСервиса.ПередНачаломОбработкиПользователяИБ(ПользовательОбъект, ПараметрыОбработки);
КонецЕсли;
@@ -1454,8 +1517,8 @@
КонецЕсли;
// ПослеНачалаОбработкиПользователяИБ - поддержка модели сервиса.
- Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
- МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
+ МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
МодульПользователиСлужебныйВМоделиСервиса.ПослеНачалаОбработкиПользователяИБ(ПользовательОбъект, ПараметрыОбработки);
КонецЕсли;
@@ -1467,8 +1530,8 @@
ПроверитьИзмененияРеквизитовПользователя(ПользовательОбъект, ПараметрыОбработки);
// ПередЗавершениемОбработкиПользователяИБ - поддержка модели сервиса.
- Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
- МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
+ МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
МодульПользователиСлужебныйВМоделиСервиса.ПередЗавершениемОбработкиПользователяИБ(ПользовательОбъект, ПараметрыОбработки);
КонецЕсли;
@@ -1490,8 +1553,8 @@
ОбновлятьРоли = Истина;
// ПриЗавершенииОбработкиПользователяИБ - поддержка модели сервиса.
- Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
- МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда
+ МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса");
МодульПользователиСлужебныйВМоделиСервиса.ПриЗавершенииОбработкиПользователяИБ(
ПользовательОбъект, ПараметрыОбработки, ОбновлятьРоли);
КонецЕсли;
@@ -3328,6 +3391,14 @@
КонецПроцедуры
+// Вызывается при переходе на новую версию конфигурации 2.2.3.16
+Процедура УдалитьКэшНеразделенныеДанныеДоступныеДляИзменения() Экспорт
+
+ СтандартныеПодсистемыСервер.УдалитьПараметрРаботыПрограммы(
+ "ПараметрыРаботыПользователей", "НеразделенныеДанныеДоступныеДляИзменения");
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики условных вызовов в другие подсистемы
@@ -3348,32 +3419,6 @@
КонецПроцедуры
-// Переопределяет действие перед авторизацией пользователя,
-// выполняемой при начале работы системы (в процессе получения
-// параметров работы клиента при запуске).
-//
-// Можно заполнить состав пользователей и выполнить перезапуск.
-//
-// Требуется, например, при настройке автономного рабочего места.
-//
-// Параметры:
-// Перезапустить - Булево, начальное значение Ложь. Если указать
-// Истина, тогда работа системы будет прекращена.
-//
-// ДополнительныеПараметрыКоманднойСтроки - Строка, которая может
-// быть заполнена для передачи во второй параметр
-// метода ПрекратитьРаботуСистемы.
-//
-Процедура ПередАвторизациейТекущегоПользователяПриНачалеРаботыСистемы(
- Перезапустить, ДополнительныеПараметрыКоманднойСтроки) Экспорт
-
- Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
- МодульАвтономнаяРаботаСлужебный = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРаботаСлужебный");
- МодульАвтономнаяРаботаСлужебный.ПередАвторизациейТекущегоПользователяПриНачалеРаботыСистемы(Перезапустить);
- КонецЕсли;
-
-КонецПроцедуры
-
// Переопределяет действие при авторизации администратора локальной ИБ
// или администратора области данных.
//
@@ -4209,15 +4254,15 @@
// ПользовательИБ - ПользовательИнформационнойБазы.
// РежимПроверки - Строка - ПриЗаписи или ПриЗапуске.
//
-Процедура ПроверитьПраваПользователя(ПользовательИБ, РежимПроверки = "ПриЗаписи")
+Процедура ПроверитьПраваПользователя(ПользовательИБ, РежимПроверки)
РазделениеВключено = ОбщегоНазначенияПовтИсп.РазделениеВключено();
Если РазделениеВключено И ПользовательИБ.РазделениеДанных.Количество() = 0 Тогда
- Возврат; // не нужно проверять неразделенных пользователей в модели сервиса
+ Возврат; // не нужно проверять неразделенных пользователей в модели сервиса
КонецЕсли;
Если Не РазделениеВключено И РежимПроверки = "ПриЗапуске" Тогда
- Возврат; // не нужно проверять права пользователей при запуске в локальном режиме
+ Возврат; // не нужно проверять права пользователей при запуске в локальном режиме
КонецЕсли;
ТипыПользователей = ?(РазделениеВключено,
@@ -4229,24 +4274,45 @@
Возврат;
КонецЕсли;
- // Проверка на изменение состава ролей у администраторов
+ РолиДляПроверки = Новый ТаблицаЗначений;
+ РолиДляПроверки.Колонки.Добавить("Роль", Новый ОписаниеТипов("ОбъектМетаданных"));
+ РолиДляПроверки.Колонки.Добавить("ЭтоУдаляемаяРоль", Новый ОписаниеТипов("Булево"));
+ Для каждого Роль Из ПользовательИБ.Роли Цикл
+ РолиДляПроверки.Добавить().Роль = Роль;
+ КонецЦикла;
+ РолиДляПроверки.Индексы.Добавить("Роль");
+
Если РежимПроверки = "ПриЗаписи" И Не РазделениеВключено Тогда
- ПрежнийПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ПользовательИБ.УникальныйИдентификатор);
+ ПрежнийПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(
+ ПользовательИБ.УникальныйИдентификатор);
+
Если ПрежнийПользовательИБ <> Неопределено Тогда
- ПроверитьПраваПользователя(ПрежнийПользовательИБ, "ПередЗаписью");
+ Для каждого Роль Из ПрежнийПользовательИБ.Роли Цикл
+ Строка = РолиДляПроверки.Найти(Роль, "Роль");
+ Если Строка <> Неопределено Тогда
+ РолиДляПроверки.Удалить(Строка);
+ ИначеЕсли РазделениеВключено Тогда
+ НоваяСтрока = РолиДляПроверки.Добавить();
+ НоваяСтрока.Роль = Роль;
+ НоваяСтрока.ЭтоУдаляемаяРоль = Истина;
+ КонецЕсли;
+ КонецЦикла;
КонецЕсли;
КонецЕсли;
- НайденныеНедоступныеРоли = Новый Массив;
+ НайденныеНедоступныеРоли = Новый ТаблицаЗначений;
+ НайденныеНедоступныеРоли.Колонки.Добавить("Роль", Новый ОписаниеТипов("ОбъектМетаданных"));
+ НайденныеНедоступныеРоли.Колонки.Добавить("ЭтоУдаляемаяРоль", Новый ОписаниеТипов("Булево"));
- Для каждого Роль Из ПользовательИБ.Роли Цикл
+ Для каждого ОписаниеРоли Из РолиДляПроверки Цикл
+ Роль = ОписаниеРоли.Роль;
ИмяРоли = Роль.Имя;
СвойстваНедоступнойРоли = НедоступныеРоли.Получить(ИмяРоли);
Если СвойстваНедоступнойРоли = Неопределено Тогда
- Продолжить;
+ Продолжить;
КонецЕсли;
- НайденныеНедоступныеРоли.Добавить(Роль);
+ ЗаполнитьЗначенияСвойств(НайденныеНедоступныеРоли.Добавить(), ОписаниеРоли);
Если СвойстваНедоступнойРоли.Свойство("ИзменяемыеНеразделенныеДанные") Тогда
Запись = Новый ЗаписьXML;
@@ -4254,7 +4320,7 @@
СериализаторXDTO.ЗаписатьXML(Запись, СвойстваНедоступнойРоли.ИзменяемыеНеразделенныеДанные);
ТаблицаСтрокой = Запись.Закрыть();
- Если РежимПроверки = "ПередЗаписью" Тогда
+ Если ОписаниеРоли.ЭтоУдаляемаяРоль Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Попытка изменить состав ролей у пользователя %1 с ролью
|""%2"",
@@ -4286,7 +4352,7 @@
Для каждого Право Из СвойстваНедоступнойРоли.Права Цикл
- Если РежимПроверки = "ПередЗаписью" Тогда
+ Если ОписаниеРоли.ЭтоУдаляемаяРоль Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Попытка изменить состав ролей у пользователя ""%1"" с ролью
|""%2"",
@@ -4312,42 +4378,50 @@
Если НайденныеНедоступныеРоли.Количество() = 0 Тогда
Возврат;
КонецЕсли;
-
- Если НайденныеНедоступныеРоли.Количество() = 1 Тогда
-
- Если РежимПроверки = "ПередЗаписью" Тогда
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Невозможно изменить состав ролей у пользователя ""%1"".'"),
- ПользовательИБ.ПолноеИмя);
- Иначе
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Пользователю ""%1"" не может быть назначена роль
- |""%2"".'"),
- ПользовательИБ.ПолноеИмя,
- НайденныеНедоступныеРоли[0].Представление());
- КонецЕсли;
- ВызватьИсключение ТекстСообщения;
-
- Иначе
-
- Если РежимПроверки = "ПередЗаписью" Тогда
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Невозможно изменить состав ролей у пользователя ""%1"".'"),
- ПользовательИБ.ПолноеИмя);
- Иначе
- Роли = "";
- Для каждого Роль Из НайденныеНедоступныеРоли Цикл
- Роли = "
- |" + Роль.Представление();
- КонецЦикла;
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Пользователю ""%1"" не могут быть назначены роли:%2.'"),
- ПользовательИБ.ПолноеИмя,
- Роли);
- КонецЕсли;
- ВызватьИсключение ТекстСообщения;
+
+ Отбор = Новый Структура("ЭтоУдаляемаяРоль", Истина);
+ УдаляемыеРоли = НайденныеНедоступныеРоли.НайтиСтроки(Отбор);
+
+ Отбор = Новый Структура("ЭтоУдаляемаяРоль", Ложь);
+ ДобавляемыеРоли = НайденныеНедоступныеРоли.НайтиСтроки(Отбор);
+
+ Если УдаляемыеРоли.Количество() = 1 Тогда
+ ТекстСообщенияУдаления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Невозможно удалить недоступную роль у пользователя ""%1"".'"),
+ ПользовательИБ.ПолноеИмя);
+ ИначеЕсли УдаляемыеРоли.Количество() > 1 Тогда
+ ТекстСообщенияУдаления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Невозможно удалить недоступные роли у пользователя ""%1"".'"),
+ ПользовательИБ.ПолноеИмя);
КонецЕсли;
-
+
+ Если ДобавляемыеРоли.Количество() = 1 Тогда
+ ТекстСообщенияДобавления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Пользователю ""%1"" не может быть добавлена роль
+ |""%2"".'"),
+ ПользовательИБ.ПолноеИмя,
+ ДобавляемыеРоли[0].Роль.Представление());
+
+ ИначеЕсли ДобавляемыеРоли.Количество() > 1 Тогда
+ Роли = "";
+ Для каждого ОписаниеРоли Из ДобавляемыеРоли Цикл
+ Роли = Роли + "
+ |" + ОписаниеРоли.Роль.Представление();
+ КонецЦикла;
+ ТекстСообщенияДобавления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Пользователю ""%1"" не могут быть добавлены роли:%2.'"),
+ ПользовательИБ.ПолноеИмя,
+ Роли);
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ТекстСообщенияУдаления) Тогда
+ ТекстСообщения = ТекстСообщенияУдаления + Символы.ПС + ТекстСообщенияДобавления;
+ Иначе
+ ТекстСообщения = ТекстСообщенияДобавления;
+ КонецЕсли;
+
+ ВызватьИсключение ТекстСообщения;
+
КонецПроцедуры
Функция СписокНастроек(ИмяПользователяИБ, МенеджерНастроек)
@@ -4960,8 +5034,8 @@
// Установка начальных значений перед загрузкой данных из настроек на сервере
// для случая, когда данные еще не были записаны и не загружаются.
- ПоказатьПодсистемыРолей = Истина;
- Элементы.РолиПоказатьПодсистемыРолей.Пометка = Истина;
+ Форма.ПоказатьПодсистемыРолей = Ложь;
+ Элементы.РолиПоказатьПодсистемыРолей.Пометка = Ложь;
// Для нового элемента показать все роли, для существующего - только выбранные роли.
Если Элементы.Найти("РолиПоказатьТолькоВыбранныеРоли") <> Неопределено Тогда
diff --git a/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl
index 29ed0533f..c7c156c63 100644
--- a/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl
+++ b/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl
@@ -33,14 +33,30 @@
Пользователь = Пользователи.ТекущийПользователь();
КонецЕсли;
- Если ЗначениеЗаполнено(Пользователь) Тогда
- Возврат ДействияССуществующимПользователемСервиса(Пользователь);
- Иначе
- Если ЕстьПравоДобавленияПользователей() Тогда
- Возврат ДействияСНовымПользователемСервиса();
+ Если ДоступноИзменениеПользователей() Тогда
+
+ Если ПользователиИнформационнойБазы.ТекущийПользователь().РазделениеДанных.Количество() = 0 Тогда
+
+ Возврат ДействияСПользователемСервисаПриНедоступностиНастройкиПользователей();
+
+ ИначеЕсли ЭтоСуществующийПользовательТекущейОбластиДанных(Пользователь) Тогда
+
+ Возврат ДействияССуществующимПользователемСервиса(Пользователь);
+
Иначе
- ВызватьИсключение НСтр("ru = 'Недостаточно прав доступа для добавления новых пользователей'");
+
+ Если ЕстьПравоДобавленияПользователей() Тогда
+ Возврат ДействияСНовымПользователемСервиса();
+ Иначе
+ ВызватьИсключение НСтр("ru = 'Недостаточно прав доступа для добавления новых пользователей'");
+ КонецЕсли;
+
КонецЕсли;
+
+ Иначе
+
+ Возврат ДействияСПользователемСервисаПриНедоступностиНастройкиПользователей();
+
КонецЕсли;
КонецФункции
@@ -397,6 +413,25 @@
КонецФункции
+// Только для внутреннего использования
+Функция ДействияСПользователемСервисаПриНедоступностиНастройкиПользователей() Экспорт
+
+ ДействияСПользователемСервиса = НовыеДействияСПользователемСервиса();
+ ДействияСПользователемСервиса.ИзменениеПароля = Ложь;
+ ДействияСПользователемСервиса.ИзменениеИмени = Ложь;
+ ДействияСПользователемСервиса.ИзменениеПолногоИмени = Ложь;
+ ДействияСПользователемСервиса.ИзменениеДоступа = Ложь;
+ ДействияСПользователемСервиса.ИзменениеАдминистративногоДоступа = Ложь;
+
+ ДействияСКИ = ДействияСПользователемСервиса.КонтактнаяИнформация;
+ Для каждого КлючИЗначение Из РаботаВМоделиСервисаПовтИсп.СоответствиеВидовКИПользователяXDTO() Цикл
+ ДействияСКИ[КлючИЗначение.Ключ].Изменение = Ложь;
+ КонецЦикла;
+
+ Возврат ДействияСПользователемСервиса;
+
+КонецФункции
+
// Только для внутреннего использования
Функция ПолучитьПользователейСервиса(ПарольПользователяСервиса) Экспорт
@@ -480,6 +515,46 @@
КонецПроцедуры
+// Проверяет, что переданный пользователь соответствует существующему пользователю информационной
+// базы в текущей области данных.
+//
+// Параметры:
+// Пользователь - СправочникСсылка.Пользователи;
+//
+// Возвращаемое значение: Булево.
+//
+Функция ЭтоСуществующийПользовательТекущейОбластиДанных(Знач Пользователь)
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ Если ЗначениеЗаполнено(Пользователь) Тогда
+
+ Если ЗначениеЗаполнено(Пользователь.ИдентификаторПользователяИБ) Тогда
+
+ Если ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Пользователь.ИдентификаторПользователяИБ) <> Неопределено Тогда
+
+ Возврат Истина;
+
+ Иначе
+
+ Возврат Ложь;
+
+ КонецЕсли;
+
+ Иначе
+
+ Возврат Ложь;
+
+ КонецЕсли;
+
+ Иначе
+
+ Возврат Ложь;
+
+ КонецЕсли;
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
diff --git a/SSL/src/CommonModules/ПользователиСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебныйКлиент/Module.bsl
index aa32c735b..26489db19 100644
--- a/SSL/src/CommonModules/ПользователиСлужебныйКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ПользователиСлужебныйКлиент/Module.bsl
@@ -31,13 +31,8 @@
#Область СлужебныеПроцедурыИФункции
-// Выполняет попытку авторизации пользователя и проверку результата.
-Процедура ПроверитьАвторизациюПользователя(Параметры) Экспорт
-
- Параметры.ПолученныеПараметрыКлиента.Вставить("ДействияПередАвторизациейПользователяВыполнены");
- Параметры.Вставить("КоличествоПолученныхПараметровКлиента",
- Параметры.ПолученныеПараметрыКлиента.Количество());
- ОбновитьПовторноИспользуемыеЗначения();
+// Проверяет авторизацию пользователя и уведомляет об ошибке.
+Процедура ПередНачаломРаботыСистемы(Параметры) Экспорт
ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
@@ -54,24 +49,193 @@
///////////////////////////////////////////////////////////////////////////////
// Обработчики оповещений.
-// Предупреждает об ошибке авторизации или предлагает создать первого администратора.
+// Предупреждает об ошибке авторизации пользователя.
Процедура ИнтерактивнаяОбработкаПриПроверкеАвторизацииПользователя(Параметры, Неопределен) Экспорт
ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
- ОшибкаАвторизации = ПараметрыКлиента.ОшибкаАвторизации;
-
- Если ТипЗнч(ОшибкаАвторизации) = Тип("ФиксированнаяСтруктура") Тогда
- Параметры.Перезапустить = Истина;
- Если ЗначениеЗаполнено(ОшибкаАвторизации.ДополнительныеПараметрыКоманднойСтроки) Тогда
- Параметры.ДополнительныеПараметрыКоманднойСтроки =
- ОшибкаАвторизации.ДополнительныеПараметрыКоманднойСтроки;
- КонецЕсли;
- ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения);
- Иначе
- СтандартныеПодсистемыКлиент.ПоказатьПредупреждениеИПродолжить(Параметры, ОшибкаАвторизации);
- КонецЕсли;
+ СтандартныеПодсистемыКлиент.ПоказатьПредупреждениеИПродолжить(
+ Параметры, ПараметрыКлиента.ОшибкаАвторизации);
КонецПроцедуры
+///////////////////////////////////////////////////////////////////////////////
+// Процедуры и функции обработки "НастройкиПользователей".
+
+// Предназначена для открытия переданного отчета или формы
+//
+// Параметры:
+// ТекущийЭлемент - ТаблицаФормы - выделенная строка дерева значений.
+// Пользователь - Строка - имя пользователя информационной базы,
+// ТекущийПользователь - Строка - имя пользователя информационной базы, для открытия формы
+// должен совпадать значением параметра "Пользователь".
+// ИмяФормыПерсональныхНастроек - Строка - путь для открытия формы персональных настроек
+// вида "ОбщаяФорма.НазваниеФормы"
+Процедура ОткрытьОтчетИлиФорму(ТекущийЭлемент, Пользователь, ТекущийПользователь, ИмяФормыПерсональныхНастроек) Экспорт
+
+ ЭлементДереваЗначений = ТекущийЭлемент;
+ Если ЭлементДереваЗначений.ТекущиеДанные = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Пользователь <> ТекущийПользователь Тогда
+ ТекстПредупреждения = НСтр("ru = 'Для просмотра настроек другого пользователя необходимо запустить программу от его имени
+ |и открыть нужный отчет или форму.'");
+ ПоказатьПредупреждение(,ТекстПредупреждения);
+ Возврат;
+ КонецЕсли;
+
+ Если ЭлементДереваЗначений.Имя = "НастройкиОтчетовДерево" Тогда
+
+ КлючОбъекта = ЭлементДереваЗначений.ТекущиеДанные.Ключи[0].Значение;
+ КлючОбъектаМассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КлючОбъекта, "/");
+ КлючВарианта = КлючОбъектаМассивСтрок[1];
+ ПараметрыОтчета = Новый Структура("КлючВарианта, КлючПользовательскихНастроек", КлючВарианта, "");
+
+ Если ЭлементДереваЗначений.ТекущиеДанные.Тип = "НастройкаОтчета" Тогда
+ КлючПользовательскихНастроек = ЭлементДереваЗначений.ТекущиеДанные.Ключи[0].Представление;
+ ПараметрыОтчета.Вставить("КлючПользовательскихНастроек", КлючПользовательскихНастроек);
+ КонецЕсли;
+
+ ОткрытьФорму(КлючОбъектаМассивСтрок[0] + ".Форма", ПараметрыОтчета);
+ Возврат;
+
+ ИначеЕсли ЭлементДереваЗначений.Имя = "ВнешнийВид" Тогда
+
+ Для Каждого КлючОбъекта Из ЭлементДереваЗначений.ТекущиеДанные.Ключи Цикл
+
+ Если КлючОбъекта.Пометка = Истина Тогда
+
+ ОткрытьФорму(КлючОбъекта.Значение);
+ Возврат;
+ Иначе
+ РодительЭлемента = ЭлементДереваЗначений.ТекущиеДанные.ПолучитьРодителя();
+
+ Если ЭлементДереваЗначений.ТекущиеДанные.ТипСтроки = "НастройкиРабочегоСтола" Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'Для просмотра настроек рабочего стола перейдите к разделу ""Рабочий стол""
+ |в командном интерфейсе программы.'"));
+ Возврат;
+ КонецЕсли;
+
+ Если ЭлементДереваЗначений.ТекущиеДанные.ТипСтроки = "НастройкиКомандногоИнтерфейса" Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'Для просмотра настроек командного интерфейса выберите нужный раздел
+ |командного интерфейса программы.'"));
+ Возврат;
+ КонецЕсли;
+
+ Если РодительЭлемента <> Неопределено Тогда
+ ТекстПредупреждения = НСтр("ru = 'Для просмотра данной настройки необходимо открыть ""%1""
+ |и затем перейти к форме ""%2"".'");
+ ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения,
+ РодительЭлемента.Настройка, ЭлементДереваЗначений.ТекущиеДанные.Настройка);
+ ПоказатьПредупреждение(,ТекстПредупреждения);
+ Возврат;
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ПоказатьПредупреждение(,НСтр("ru = 'Данную настройку невозможно просмотреть.'"));
+ Возврат;
+
+ ИначеЕсли ЭлементДереваЗначений.Имя = "ПрочиеНастройки" Тогда
+
+ Если ЭлементДереваЗначений.ТекущиеДанные.Тип = "ПерсональныеНастройки"
+ И ИмяФормыПерсональныхНастроек <> "" Тогда
+ ОткрытьФорму(ИмяФормыПерсональныхНастроек);
+ Возврат;
+ КонецЕсли;
+
+ ПоказатьПредупреждение(,НСтр("ru = 'Данную настройку невозможно просмотреть.'"));
+ Возврат;
+
+ КонецЕсли;
+
+ ПоказатьПредупреждение(,НСтр("ru = 'Выберите настройку для просмотра.'"));
+
+КонецПроцедуры
+
+// Предназначена для формирования окончания у слова "настройка".
+//
+// Параметры:
+// КоличествоНастроек - Число - количество настроек
+//
+// Возвращаемое значение:
+// Строка - вида "хх настроек" с правильным окончанием.
+//
+Функция ФормированиеСтрокиКоличестваНастроек(КоличествоНастроек) Экспорт
+
+ ПрописьЧисла = ЧислоПрописью(
+ КоличествоНастроек,
+ "Л = ru_RU",
+ НСтр("ru = ',,,,,,,,0'"));
+ ПрописьЧислаИПредмета = ЧислоПрописью(
+ КоличествоНастроек,
+ "Л = ru_RU",
+ НСтр("ru = 'настройка,настройки,настроек,,,,,,0'"));
+ ПрописьПредмета = СтрЗаменить(
+ ПрописьЧислаИПредмета,
+ ПрописьЧисла,
+ Формат(КоличествоНастроек, "ЧДЦ=0") + " ");
+
+ Возврат ПрописьПредмета;
+КонецФункции
+
+// Предназначена для формирования строки пояснения при копировании настроек
+//
+// Параметры:
+// ПредставлениеНастройки - Строка - название настройки. Используется если копируется одна настройка.
+// КоличествоНастроек - Число - количество настроек. Используется, если копируется две более настроек.
+// ПояснениеКомуСкопированыНастройки - Строка - кому копируются настройки.
+//
+// Возвращаемое значение:
+// Строка - текст пояснения при копировании настройки
+//
+Функция ФормированиеПоясненияПриКопировании(ПредставлениеНастройки, КоличествоНастроек, ПояснениеКомуСкопированыНастройки) Экспорт
+
+ Если КоличествоНастроек = 1 Тогда
+
+ Если СтрДлина(ПредставлениеНастройки) > 24 Тогда
+ ПредставлениеНастройки = Лев(ПредставлениеНастройки, 24) + "...";
+ КонецЕсли;
+
+ ТекстПояснения = НСтр("ru = '""%1"" скопирована %2'");
+ ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ ТекстПояснения, ПредставлениеНастройки, ПояснениеКомуСкопированыНастройки);
+ Иначе
+ ПрописьПредмета = ФормированиеСтрокиКоличестваНастроек(КоличествоНастроек);
+ ТекстПояснения = НСтр("ru = 'Скопировано %1 %2'");
+ ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ ТекстПояснения, ПрописьПредмета, ПояснениеКомуСкопированыНастройки);
+ КонецЕсли;
+
+ Возврат ТекстПояснения;
+КонецФункции
+
+// Формирует строку получателя настройки
+//
+// Параметры:
+// КоличествоПользователей - Число - используется, если значение больше единицы.
+// Пользователь - Строка - имя пользователя. Используется, если количество пользователей
+// равно единице.
+//
+// Возвращаемое значение:
+// Строка - пояснение кому копируется настройка
+//
+Функция ПояснениеПользователи(КоличествоПользователей, Пользователь) Экспорт
+
+ Если КоличествоПользователей = 1 Тогда
+ ПояснениеКомуСкопированыНастройки = НСтр("ru = 'пользователю ""%1""'");
+ ПояснениеКомуСкопированыНастройки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ ПояснениеКомуСкопированыНастройки, Пользователь);
+ Иначе
+ ПояснениеКомуСкопированыНастройки = НСтр("ru = '%1 пользователям'");
+ ПояснениеКомуСкопированыНастройки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ ПояснениеКомуСкопированыНастройки, КоличествоПользователей);
+ КонецЕсли;
+
+ Возврат ПояснениеКомуСкопированыНастройки;
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl
index 02d7c3217..0ffefda73 100644
--- a/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl
@@ -16,7 +16,6 @@
СтандартныеПодсистемыСервер.ПроверитьОбновлениеПараметровРаботыПрограммы(
"ПараметрыРаботыПользователей",
"НедоступныеРолиПоТипамПользователей,
- |НеразделенныеДанныеДоступныеДляИзменения,
|ВсеРоли");
ПредставлениеПараметра = "";
@@ -24,9 +23,6 @@
Если НЕ СохраненныеПараметры.Свойство("НедоступныеРолиПоТипамПользователей") Тогда
ПредставлениеПараметра = НСтр("ru = 'Недоступные роли'");
- ИначеЕсли НЕ СохраненныеПараметры.Свойство("НеразделенныеДанныеДоступныеДляИзменения") Тогда
- ПредставлениеПараметра = НСтр("ru = 'Неразделенные данные доступные для изменения'");
-
ИначеЕсли НЕ СохраненныеПараметры.Свойство("ВсеРоли") Тогда
ПредставлениеПараметра = НСтр("ru = 'Все роли'");
diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl
index 49dcf80ae..625c7c759 100644
--- a/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl
+++ b/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl
@@ -8,10 +8,10 @@
// Возвращает двоичные данные присоединенного файла.
//
// Параметры:
-// ПрисоединенныйФайл - Ссылка на присоединенный файл.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
//
// Возвращаемое значение:
-// ДвоичныеДанные.
+// ДвоичныеДанные - двоичные данные присоединенного файла.
//
Функция ПолучитьДвоичныеДанныеФайла(Знач ПрисоединенныйФайл) Экспорт
@@ -68,35 +68,33 @@
КонецФункции
-// Возвращает структуру данных файла.
-// Используется в различных командах работы с файлами,
+// Возвращает структуру данных файла. Используется в различных командах работы с файлами,
// и как значение параметра ДанныеФайла других процедур и функций.
//
// Параметры:
-// ПрисоединенныйФайл - Ссылка на присоединенный файл.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
//
-// ИдентификаторФормы - УникальныйИдентификатор формы,
-// используется при получении двоичных данных файла.
+// ИдентификаторФормы - УникальныйИдентификатор - идентификатор формы, который
+// используется при получении двоичных данных файла.
//
-// ПолучатьСсылкуНаДвоичныеДанные - Булево - начальное значение Истина,
-// если передать Ложь, то ссылка на двоичные данные не будет получена,
-// что существенно ускорит выполнение для больших двоичных данных.
+// ПолучатьСсылкуНаДвоичныеДанные - Булево - если передать Ложь, то ссылка на двоичные данные
+// не будет получена, что существенно ускорит выполнение для больших двоичных данных.
//
// Возвращаемое значение:
-// Структура со свойствами:
-// СсылкаНаДвоичныеДанныеФайла - Строка - адрес во временном хранилище.
-// ОтносительныйПуть - Строка.
-// ДатаМодификацииУниверсальная - Дата.
-// ИмяФайла - Строка.
-// Наименование - Строка.
-// Расширение - Строка.
-// Размер - Число.
-// Редактирует - СправочникСсылка.Пользователи.
-// ПодписанЭП - Булево.
-// Зашифрован - Булево.
-// ФайлРедактируется - Булево.
-// ФайлРедактируетТекущийПользователь - Булево.
-//
+// Структура - со свойствами:
+// * СсылкаНаДвоичныеДанныеФайла - Строка - адрес во временном хранилище.
+// * ОтносительныйПуть - Строка -
+// * ДатаМодификацииУниверсальная - Дата -
+// * ИмяФайла - Строка -
+// * Наименование - Строка -
+// * Расширение - Строка -
+// * Размер - Число -
+// * Редактирует - Неопределено, СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи -
+// * ПодписанЭП - Булево -
+// * Зашифрован - Булево -
+// * ФайлРедактируется - Булево -
+// * ФайлРедактируетТекущийПользователь - Булево -
+//
Функция ПолучитьДанныеФайла(Знач ПрисоединенныйФайл,
Знач ИдентификаторФормы = Неопределено,
Знач ПолучатьСсылкуНаДвоичныеДанные = Истина) Экспорт
@@ -176,9 +174,9 @@
ДополнительнаяИнформация.Вставить("Редактирует", ФайлОбъект.Редактирует);
ДополнительнаяИнформация.Вставить("ПодписанЭП", ФайлОбъект.ПодписанЭП);
ДополнительнаяИнформация.Вставить("Зашифрован", ФайлОбъект.Зашифрован);
- ДополнительнаяИнформация.Вставить("ФайлРедактируется", ФайлОбъект.Редактирует <> Справочники.Пользователи.ПустаяСсылка() );
+ ДополнительнаяИнформация.Вставить("ФайлРедактируется", ЗначениеЗаполнено(ФайлОбъект.Редактирует));
ДополнительнаяИнформация.Вставить("ФайлРедактируетТекущийПользователь",
- ?(ДополнительнаяИнформация.ФайлРедактируется, ФайлОбъект.Редактирует = Пользователи.ТекущийПользователь(), Ложь) );
+ ?(ДополнительнаяИнформация.ФайлРедактируется, ФайлОбъект.Редактирует = Пользователи.АвторизованныйПользователь(), Ложь) );
Если ФайлОбъект.Зашифрован Тогда
МассивСертификатовШифрования = Новый Массив;
@@ -195,9 +193,10 @@
// Заполняет массив ссылками на файлы объекта.
//
// Параметры:
-// Объект - Ссылка на объект, который может содержать присоединенные файлы.
-// МассивФайлов - Массив, в который будут добавлены ссылки на файлы объекта.
-//
+// Объект - Ссылка - ссылка на объект, который может содержать присоединенные файлы.
+// МассивФайлов - Массив - массив в который будут добавлены ссылки на файлы объекта:
+// * СправочникСсылка - (возвращаемое значение) ссылка на присоединенный файл.
+//
Процедура ПолучитьПрикрепленныеФайлыКОбъекту(Знач Объект, Знач МассивФайлов) Экспорт
ТипыВладельцев = Метаданные.РегистрыСведений.НаличиеПрисоединенныхФайлов.Измерения.ОбъектСФайлами.Тип.Типы();
@@ -228,12 +227,12 @@
// НоваяСсылкаНаФайл - Неопределено - создать новую ссылку на файл в стандартном справочнике
// или в нестандартном, но единственном справочнике. Когда у владельца файла несколько
// справочников, требуется обязательно передать ссылку, иначе будет вызвано исключение.
-// - Ссылка на элемент справочника хранения файлов,
+// - Ссылка - ссылка на элемент справочника хранения файлов,
// которую следует использовать для добавляемого файла.
// Должна соответствовать одному из типов справочников хранения файлов владельца файлов.
//
// Возвращаемое значение:
-// Ссылка - ссылка на созданный объект.
+// СправочникСсылка - ссылка на созданный присоединенный файл.
//
Функция ДобавитьФайл(Знач ВладелецФайлов,
Знач ИмяБезРасширения,
@@ -375,7 +374,7 @@
// которую можно использовать, а затем передать в функцию ДобавитьФайл.
//
// Параметры:
-// ВладелецФайлов - Ссылка - объект, к которому добавляется файл.
+// ВладелецФайлов - Ссылка - ссылка на объект, к которому добавляется файл.
//
// ИмяСправочника - Неопределено - вычислить справочник по владельцу (допустимо,
// когда справочник только один, иначе будет вызвано исключение).
@@ -384,7 +383,7 @@
// от стандартного <ИмяВладельца>ПрисоединенныеФайлы.
//
// Возвращаемое значение:
-// СправочникСсылка на новый файл.
+// СправочникСсылка - ссылка на новый еще несозданный присоединенный файл.
//
Функция НоваяСсылкаНаФайл(ВладелецФайлов, ИмяСправочника = Неопределено) Экспорт
@@ -401,19 +400,20 @@
// а также другие необязательные свойства.
//
// Параметры:
-// ИнформацияОФайле - Структура со свойствами:
-// <обязательные>
-// АдресФайлаВоВременномХранилище - Строка - адрес новых двоичных данных файла.
-// АдресВременногоХранилищаТекста - Строка - адрес новых двоичных данных текста,
-// извлеченного из файла.
-// <необязательные>
-// ИмяБезРасширения - Строка - если свойство не указано или не заполнено,
-// тогда не будет изменено.
-// ДатаМодификацииУниверсальная - Дата - дата последнего изменения файла, если
-// свойство не указано или не заполнено, тогда будет
-// установлена текущая дата сеанса.
-// Расширение - Строка - новое расширение файла.
-// Редактирует - Ссылка - новый пользователь, редактирующий файл.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
+// ИнформацияОФайле - Структура - со свойствами:
+// <обязательные>
+// * АдресФайлаВоВременномХранилище - Строка - адрес новых двоичных данных файла.
+// * АдресВременногоХранилищаТекста - Строка - адрес новых двоичных данных текста,
+// извлеченного из файла.
+// <необязательные>
+// * ИмяБезРасширения - Строка - если свойство не указано или не заполнено,
+// тогда не будет изменено.
+// * ДатаМодификацииУниверсальная - Дата - дата последнего изменения файла, если
+// свойство не указано или не заполнено, тогда будет
+// установлена текущая дата сеанса.
+// * Расширение - Строка - новое расширение файла.
+// * Редактирует - Ссылка - новый пользователь, редактирующий файл.
//
Процедура ОбновитьПрисоединенныйФайл(Знач ПрисоединенныйФайл, Знач ИнформацияОФайле) Экспорт
@@ -469,6 +469,13 @@
КонецПроцедуры
// Возвращает имя формы объекта присоединенных файлов по владельцу.
+//
+// Параметры:
+// ВладелецФайлов - Ссылка - ссылка на объект, по которому определяется имя формы.
+//
+// Возвращаемое значение:
+// Строка - имя формы объекта присоединенных файлов по владельцу.
+//
Функция ПолучитьИмяФормыОбъектаПрисоединенныхФайловПоВладельцу(Знач ВладелецФайлов) Экспорт
ЗаголовокОшибки = НСтр("ru = 'Ошибка при получении имени формы присоединенного файла.'");
@@ -491,7 +498,16 @@
КонецФункции
-// Определяет наличие хранилища присоединенных файлов у объекта.
+// Определяет наличие хранилища присоединенных файлов у объекта
+// право Добавление в хранилище (справочник присоединенных файлов).
+//
+// Параметры:
+// ВладелецФайлов - Ссылка - ссылка на объект для которого выполняется проверка.
+// ИмяСправочника - Строка - если требуется проверка добавления в указанное хранилище.
+//
+// Возвращаемое значение:
+// Булево - если Истина, тогда к объекту может присоединять файлы.
+//
Функция КОбъектуМожноПрисоединятьФайлы(ВладелецФайлов, ИмяСправочника = "") Экспорт
ИмяСправочника = ПрисоединенныеФайлыСлужебный.ИмяСправочникаХраненияФайлов(
@@ -517,7 +533,8 @@
// (элемента справочника, ПВХ, документа и т.п.).
//
// Параметры:
-// ВладелецФайлов - Ссылка на владельца файлов.
+// ВладелецФайлов - Ссылка - ссылка на объект для которого выполняется конвертация.
+// ИмяСправочника - Строка - если требуется конвертация в указанное хранилище.
//
Процедура СконвертироватьФайлыВПрисоединенные(Знач ВладелецФайлов, ИмяСправочника = Неопределено) Экспорт
@@ -637,6 +654,10 @@
// ТаблицаВладельцевФайлов - Строка - полное имя объекта метаданных,
// который может владеть присоединенными файлами.
//
+// Возвращаемое значение:
+// Массив - со значениями:
+// * Ссылка - ссылка на объект у которого есть хотя бы один присоединенный файл.
+//
Функция СсылкиНаОбъектыСФайлами(Знач ТаблицаВладельцевФайлов) Экспорт
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
@@ -652,7 +673,14 @@
////////////////////////////////////////////////////////////////////////////////
// Процедуры, подключаемые к событиям управляемых форм
-// Обработчик подписки владельца присоединенного файла на событие "При записи на сервере".
+// Обработчик события ПриЗаписиНаСервере управляемой формы владельца присоединенного файла.
+//
+// Параметры:
+// Отказ - Булево - стандартный параметр события ПриЗаписиНаСервере управляемой формы.
+// ТекущийОбъект - Объект - стандартный параметр события ПриЗаписиНаСервере управляемой формы.
+// ПараметрыЗаписи - Структура - стандартный параметр события ПриЗаписиНаСервере управляемой формы.
+// Параметры - ДанныеФормыСтруктура - свойство Параметры управляемой формы.
+//
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры) Экспорт
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
@@ -669,6 +697,11 @@
// Возвращает список реквизитов, которые разрешается редактировать
// с помощью обработки группового изменения объектов.
//
+// Возвращаемое значение:
+// Массив - значения:
+// * Строка - имя реквизита присоединенного файла, который можно редактировать
+// в групповой обработке.
+//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -685,8 +718,8 @@
// Заносит информацию о одной ЭП.
//
// Параметры:
-// ПрисоединенныйФайл - Ссылка или Объект присоединенного файла.
-// ДанныеПодписи - Структура для заполнения в табличной части ЭлектронныеПодписи.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
+// ДанныеПодписи - Структура - данные подписей для заполнения в табличной части ЭлектронныеПодписи.
//
Процедура ЗанестиИнформациюОднойПодписи(Знач ПрисоединенныйФайл, Знач ДанныеПодписи) Экспорт
@@ -700,7 +733,7 @@
ПрисоединенныйФайлСсылка = ПрисоединенныйФайл.Ссылка;
КонецЕсли;
- Если НЕ СтруктураРеквизитов.Редактирует.Пустая() Тогда
+ Если ЗначениеЗаполнено(СтруктураРеквизитов.Редактирует) Тогда
ВызватьИсключение ФайловыеФункцииСлужебныйКлиентСервер.СтрокаСообщенияОНедопустимостиПодписанияЗанятогоФайла(ПрисоединенныйФайлСсылка);
КонецЕсли;
@@ -723,8 +756,9 @@
// Заносит информацию о массиве ЭП.
//
// Параметры:
-// ПрисоединенныйФайл - Ссылка или Объект присоединенного файла.
-// МассивПодписей - Массив Структур данных подписей для заполнения в табличной части ЭлектронныеПодписи.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
+// МассивПодписей - Массив - значения:
+// * Структура - данные подписей для заполнения в табличной части ЭлектронныеПодписи.
//
Процедура ЗанестиИнформациюОПодписях(Знач ПрисоединенныйФайл,
Знач МассивПодписей) Экспорт
@@ -741,7 +775,7 @@
Редактирует = ФайлОбъект.Редактирует;
Зашифрован = ФайлОбъект.Зашифрован;
- Если НЕ Редактирует.Пустая() Тогда
+ Если ЗначениеЗаполнено(Редактирует) Тогда
ВызватьИсключение
ФайловыеФункцииСлужебныйКлиентСервер.СтрокаСообщенияОНедопустимостиПодписанияЗанятогоФайла(
ФайлСсылка);
@@ -773,22 +807,54 @@
////////////////////////////////////////////////////////////////////////////////
// Обработчики подписок на события
-// Обработчик подписки присоединенного файла на событие "Перед записью".
+// Обработчик подписки на событие ПередЗаписью для заполнения авто реквизитов присоединенного файла.
+//
+// Параметры:
+// Источник - СправочникОбъект - объект справочника с именем "*ПрисоединенныеФайлы".
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+//
Процедура ВыполнитьДействияПередЗаписьюПрисоединенногоФайла(Источник, Отказ) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
+ Если Не ЗначениеЗаполнено(Источник.ВладелецФайла) Тогда
+
+ ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Не заполнен владелец в файле
+ |""%1"".'"),
+ Источник.Наименование);
+
+ Если ОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда
+
+ ЗаписьЖурналаРегистрации(
+ НСтр("ru = 'Файлы.Ошибка записи файла при обновлении ИБ'",
+ ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
+ УровеньЖурналаРегистрации.Ошибка,
+ ,
+ Источник.Ссылка,
+ ОписаниеОшибки);
+ Иначе
+ ВызватьИсключение ОписаниеОшибки;
+ КонецЕсли;
+
+ КонецЕсли;
+
Источник.ИндексКартинки = ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Источник.Расширение);
Если Источник.ЭтоНовый() Тогда
- Источник.Автор = Пользователи.ТекущийПользователь();
+ Источник.Автор = Пользователи.АвторизованныйПользователь();
КонецЕсли;
КонецПроцедуры
-// Обработчик подписки присоединенного файла на событие "Перед удалением".
+// Обработчик подписки на событие ПередУдалением для удаления данных, связанных с присоединенным файлом.
+//
+// Параметры:
+// Источник - СправочникОбъект - объект справочника с именем "*ПрисоединенныеФайлы".
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+//
Процедура ВыполнитьДействияПередУдалениемПрисоединенногоФайла(Источник, Отказ) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
@@ -804,7 +870,12 @@
КонецПроцедуры
-// Обработчик подписки присоединенного файла на событие "При записи".
+// Обработчик подписки на событие ПриЗаписи для обновления данных, связанных с присоединенным файлом.
+//
+// Параметры:
+// Источник - СправочникОбъект - объект справочника с именем "*ПрисоединенныеФайлы".
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+//
Процедура ВыполнитьДействияПриЗаписиПрисоединенногоФайла(Источник, Отказ) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
@@ -820,13 +891,18 @@
КонецПроцедуры
-// Обработчик подписки присоединенного файла на событие "Обработка получения формы".
-Процедура ПереопределитьПолучаемуюФормуПрисоединенногоФайла(Источник,
- ВидФормы,
- Параметры,
- ВыбраннаяФорма,
- ДополнительнаяИнформация,
- СтандартнаяОбработка) Экспорт
+// Обработчик подписки на событие ОбработкаПолученияФормы для переопределения формы присоединенного файла.
+//
+// Параметры:
+// Источник - СправочникМенеджер - менеджер справочника с именем "*ПрисоединенныеФайлы".
+// ВидФормы - Строка - имя стандартной формы.
+// Параметры - Структура - параметры формы.
+// ВыбраннаяФорма - Строка - имя или объект метаданных открываемой формы.
+// ДополнительнаяИнформация - Структура - дополнительная информация открытия формы.
+// СтандартнаяОбработка - Булево - признак выполнения стандартной (системной) обработки события.
+//
+Процедура ПереопределитьПолучаемуюФормуПрисоединенногоФайла(Источник, ВидФормы, Параметры,
+ ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт
Если ВидФормы = "ФормаОбъекта" Тогда
ВыбраннаяФорма = "ОбщаяФорма.ПрисоединенныйФайл";
@@ -836,9 +912,10 @@
ВыбраннаяФорма = "ОбщаяФорма.ПрисоединенныеФайлы";
СтандартнаяОбработка = Ложь;
КонецЕсли;
+
КонецПроцедуры
-// Обработчик подписки владельца присоединенного файла на событие "Перед записью".
+// Обработчик подписки на событие ПередЗаписью владельца присоединенного файла.
// Помечает на удаление связанные файлы.
//
// Параметры:
@@ -855,12 +932,14 @@
КонецПроцедуры
-// Обработчик подписки владельца-документа присоединенного файла на событие "Перед записью".
+// Обработчик подписки на событие ПередЗаписью владельца присоединенного файла.
// Помечает на удаление связанные файлы.
//
// Параметры:
-// Источник - ДокументОбъект - владелец присоединенного файла.
-// Отказ - Булево - признак отказа от записи.
+// Источник - ДокументОбъект - владелец присоединенного файла.
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// РежимЗаписи - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+// РежимПроведения - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
//
Процедура УстановитьПометкуУдаленияПрисоединенныхФайловДокументов(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
@@ -872,6 +951,89 @@
КонецПроцедуры
+////////////////////////////////////////////////////////////////////////////////
+// УСТАРЕВШИЕ ПРОЦЕДУРЫ И ФУНКЦИИ
+
+// Устарела. Следует использовать ВыполнитьДействияПередЗаписьюПрисоединенногоФайла.
+Процедура ПередЗаписьюПрисоединенногоФайла(Источник, Отказ) Экспорт
+
+ ВыполнитьДействияПередЗаписьюПрисоединенногоФайла(Источник, Отказ);
+
+КонецПроцедуры
+
+// Устарела. Следует использовать ВыполнитьДействияПередУдалениемПрисоединенногоФайла.
+Процедура ПередУдалениемПрисоединенногоФайла(Источник, Отказ) Экспорт
+
+ ВыполнитьДействияПередУдалениемПрисоединенногоФайла(Источник, Отказ);
+
+КонецПроцедуры
+
+// Устарела. Следует использовать ВыполнитьДействияПриЗаписиПрисоединенногоФайла.
+Процедура ПриЗаписиПрисоединенногоФайла(Источник, Отказ) Экспорт
+
+ ВыполнитьДействияПриЗаписиПрисоединенногоФайла(Источник, Отказ);
+
+КонецПроцедуры
+
+// Устарела. Следует использовать ПереопределитьПолучаемуюФормуПрисоединенногоФайла.
+Процедура ОбработкаПолученияФормыПрисоединенногоФайла(Источник,
+ ВидФормы,
+ Параметры,
+ ВыбраннаяФорма,
+ ДополнительнаяИнформация,
+ СтандартнаяОбработка) Экспорт
+
+ ПрисоединенныеФайлыКлиентСервер.ПереопределитьПолучаемуюФормуПрисоединенногоФайла(Источник, ВидФормы, Параметры,
+ ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка);
+
+КонецПроцедуры
+
+// Устарела. Следует использовать подписку на событие ОбработкаПолученияФормы.
+// см. ПрисоединенныеФайлыКлиентСервер.ПереопределитьПолучаемуюФормуПрисоединенногоФайла.
+//
+// Настраивает форму присоединенного файла ПриСозданииНаСервере.
+Процедура ПриСозданииНаСервереПрисоединенныйФайл(Знач Форма) Экспорт
+
+ Если Форма.Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ Возврат;
+ КонецЕсли;
+
+ Если НЕ Форма.Параметры.Свойство("Ключ", Форма.Ключ) Тогда
+ Форма.Ключ = Форма.Параметры.Key;
+ КонецЕсли;
+
+ Форма.АвтоЗаголовок = Ложь;
+ Форма.Заголовок = НСтр("ru = 'Присоединенный файл'");
+
+ Команда = Форма.Команды.Добавить("ПерейтиКФормеФайла");
+ Команда.Действие = "Подключаемый_ПерейтиКФормеФайла";
+
+ Декорация = Форма.Элементы.Добавить("ПоясняющийТекст", Тип("ДекорацияФормы"));
+ Декорация.Заголовок = НСтр("ru = 'Для того, чтобы перейти к карточке файла, нажмите на гиперссылку'");
+
+ Кнопка = Форма.Элементы.Добавить("ПерейтиКФормеФайла1", Тип("КнопкаФормы"));
+ Кнопка.Вид = ВидКнопкиФормы.Гиперссылка;
+ Кнопка.Заголовок = НСтр("ru = 'Перейти к форме файла'");
+ Кнопка.ИмяКоманды = "ПерейтиКФормеФайла";
+
+КонецПроцедуры
+
+// Устарела. Использовать не следует.
+// Вызывает исключение в стандартной форме списка справочника присоединенных файлов.
+Процедура ВызватьИсключениеОткрытияФормы(Форма) Экспорт
+
+ Если Форма.Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ Возврат;
+ КонецЕсли;
+
+ ВызватьИсключение НСтр("ru = 'Самостоятельное использование формы не предусмотрено.'");
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры и функции
@@ -966,7 +1128,7 @@
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
- Если Источник.ПометкаУдаления И Не Выборка.Редактирует.Пустая() Тогда
+ Если Источник.ПометкаУдаления И ЗначениеЗаполнено(Выборка.Редактирует) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '""%1"" не может быть удален,
|т.к. содержит присоединенный файл ""%2"",
@@ -1003,83 +1165,4 @@
КонецПроцедуры
-////////////////////////////////////////////////////////////////////////////////
-// УСТАРЕВШИЕ ПРОЦЕДУРЫ И ФУНКЦИИ
-
-// Устарела. Следует использовать ВыполнитьДействияПередЗаписьюПрисоединенногоФайла.
-Процедура ПередЗаписьюПрисоединенногоФайла(Источник, Отказ) Экспорт
-
- ВыполнитьДействияПередЗаписьюПрисоединенногоФайла(Источник, Отказ);
-
-КонецПроцедуры
-
-// Устарела. Следует использовать ВыполнитьДействияПередУдалениемПрисоединенногоФайла.
-Процедура ПередУдалениемПрисоединенногоФайла(Источник, Отказ) Экспорт
-
- ВыполнитьДействияПередУдалениемПрисоединенногоФайла(Источник, Отказ);
-
-КонецПроцедуры
-
-// Устарела. Следует использовать ВыполнитьДействияПриЗаписиПрисоединенногоФайла.
-Процедура ПриЗаписиПрисоединенногоФайла(Источник, Отказ) Экспорт
-
- ВыполнитьДействияПриЗаписиПрисоединенногоФайла(Источник, Отказ);
-
-КонецПроцедуры
-
-// Устарела. Следует использовать ПереопределитьПолучаемуюФормуПрисоединенногоФайла.
-Процедура ОбработкаПолученияФормыПрисоединенногоФайла(Источник,
- ВидФормы,
- Параметры,
- ВыбраннаяФорма,
- ДополнительнаяИнформация,
- СтандартнаяОбработка) Экспорт
-
- ПрисоединенныеФайлыКлиентСервер.ПереопределитьПолучаемуюФормуПрисоединенногоФайла(Источник, ВидФормы, Параметры,
- ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка);
-
-КонецПроцедуры
-
-// Устарела. Следует использовать подписку на событие ОбработкаПолученияФормы.
-// см. ПрисоединенныеФайлыКлиентСервер.ПереопределитьПолучаемуюФормуПрисоединенногоФайла.
-//
-// Настраивает форму присоединенного файла ПриСозданииНаСервере.
-Процедура ПриСозданииНаСервереПрисоединенныйФайл(Знач Форма) Экспорт
-
- Если Форма.Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
- Возврат;
- КонецЕсли;
-
- Если НЕ Форма.Параметры.Свойство("Ключ", Форма.Ключ) Тогда
- Форма.Ключ = Форма.Параметры.Key;
- КонецЕсли;
-
- Форма.АвтоЗаголовок = Ложь;
- Форма.Заголовок = НСтр("ru = 'Присоединенный файл'");
-
- Команда = Форма.Команды.Добавить("ПерейтиКФормеФайла");
- Команда.Действие = "Подключаемый_ПерейтиКФормеФайла";
-
- Декорация = Форма.Элементы.Добавить("ПоясняющийТекст", Тип("ДекорацияФормы"));
- Декорация.Заголовок = НСтр("ru = 'Для того, чтобы перейти к карточке файла, нажмите на гиперссылку'");
-
- Кнопка = Форма.Элементы.Добавить("ПерейтиКФормеФайла1", Тип("КнопкаФормы"));
- Кнопка.Вид = ВидКнопкиФормы.Гиперссылка;
- Кнопка.Заголовок = НСтр("ru = 'Перейти к форме файла'");
- Кнопка.ИмяКоманды = "ПерейтиКФормеФайла";
-
-КонецПроцедуры
-
-// Устарела. Использовать не следует.
-// Вызывает исключение в стандартной форме списка справочника присоединенных файлов.
-Процедура ВызватьИсключениеОткрытияФормы(Форма) Экспорт
-
- Если Форма.Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
- Возврат;
- КонецЕсли;
-
- ВызватьИсключение НСтр("ru = 'Самостоятельное использование формы не предусмотрено.'");
-
-КонецПроцедуры
-
#КонецОбласти
diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl
index 657a887d5..45bb61044 100644
--- a/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl
@@ -7,14 +7,13 @@
// Открывает файл для просмотра или редактирования.
// Если файл открывается для просмотра, тогда получает файл в рабочий каталог пользователя,
-// при этом ищет файл в рабочем каталоге и предлагает открыть существующий или
-// получить файл с сервера.
+// при этом ищет файл в рабочем каталоге и предлагает открыть существующий или получить файл с сервера.
// Если файл открывается для редактирования, тогда открывает файл в рабочем каталоге (если есть) или
// получает его с сервера.
//
// Параметры:
// ДанныеФайла - Структура - данные файла.
-// ДляРедактирования - Булево - истина, если файл открывается для редактирования, иначе ложь.
+// ДляРедактирования - Булево - Истина, если файл открывается для редактирования, иначе Ложь.
//
Процедура ОткрытьФайл(Знач ДанныеФайла, Знач ДляРедактирования = Истина) Экспорт
@@ -37,7 +36,7 @@
//
// Параметры:
// ВладелецФайла - Ссылка - владелец файла.
-// ИдентификаторФормы - УникальныйИдентификатор формы.
+// ИдентификаторФормы - УникальныйИдентификатор - идентификатор управляемой формы.
// Фильтр - Строка - необязательный параметр,
// позволяет задать фильтр выбираемого файла,
// например, картинки для номенклатуры.
@@ -57,7 +56,7 @@
// Подписывает присоединенный файл.
//
// Параметры:
-// ПрисоединенныйФайл - Ссылка на присоединенный файл.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
// ИдентификаторФормы - УникальныйИдентификатор - идентификатор управляемой формы.
// ДополнительныеПараметры - Неопределено - стандартное поведение (см. ниже).
// - Структура - со свойствами:
@@ -109,9 +108,9 @@
// Используется в обработчике команды сохранения файла.
//
// Параметры:
-// ПрисоединенныйФайл - Ссылка на присоединенный файл.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
// ДанныеФайла - Структура - данные файла.
-// ИдентификаторФормы - УникальныйИдентификатор формы.
+// ИдентификаторФормы - УникальныйИдентификатор - идентификатор управляемой формы.
//
Процедура СохранитьВместеСЭП(Знач ПрисоединенныйФайл, Знач ДанныеФайла, Знач ИдентификаторФормы) Экспорт
@@ -126,8 +125,6 @@
КонецПроцедуры
// Помещает данные файла с сервера в рабочий каталог на диске.
-//
-// ОСОБЫЕ УСЛОВИЯ.
// Требуется наличие подключенного расширения для работы с файлами.
//
// Параметры:
@@ -137,10 +134,10 @@
// ДатаМодификацииУниверсальная - Дата - универсальная дата модификации файла.
// ИмяФайла - Строка - имя файла (с расширением).
// РабочийКаталогПользователя - Строка - путь к рабочему каталогу.
-// ПолноеИмяФайлаНаКлиенте - Строка (возвращаемое значение) - устанавливается при успешном выполнении.
+// ПолноеИмяФайлаНаКлиенте - Строка - (возвращаемое значение) устанавливается при успешном выполнении.
//
-// Возвращаемое значение: булево
-// Истина - файл получен и сохранен успешно, иначе Ложь.
+// Возвращаемое значение:
+// Булево - если Истина, тогда файл получен и сохранен успешно, иначе Ложь.
//
Функция ПолучитьФайлВРабочийКаталог(Знач АдресДвоичныхДанныхФайла,
Знач ОтносительныйПуть,
@@ -193,10 +190,10 @@
//
// Параметры:
// ПутьКФайлу - Строка - полный путь к файлу.
-// ИдентификаторФормы - УникальныйИдентификатор формы.
+// ИдентификаторФормы - УникальныйИдентификатор - идентификатор управляемой формы.
//
// Возвращаемое значение:
-// Структура.
+// Структура - данные файла, помещенного во временное хранилище.
//
Функция ПоместитьФайлВХранилище(Знач ПутьКФайлу, Знач ИдентификаторФормы) Экспорт
@@ -258,7 +255,7 @@
// справочника присоединенных файлов. Форма элемента закрывается.
//
// Параметры:
-// Форма - форма справочника присоединенных файлов.
+// Форма - УправляемаяФорма - форма справочника присоединенных файлов.
//
Процедура ПерейтиКФормеПрисоединенногоФайла(Знач Форма) Экспорт
@@ -292,19 +289,20 @@
// Используется в обработчике выбора для переопределения стандартного поведения.
//
// Параметры:
-// ВладелецФайлов - Ссылка на объект с файлами.
-// ЭлементФормы - элемент формы, которому будет отправлено оповещение о выборе.
-// СтандартнаяОбработка - Булево (возвращаемое значение), всегда устанавливается в Ложь.
+// ВладелецФайлов - Ссылка - ссылка на объект с файлами.
+// ЭлементФормы - ТаблицаФормы, ПолеФормы - элемент формы, которому будет отправлено
+// оповещение о выборе.
+// СтандартнаяОбработка - Булево - (возвращаемое значение), всегда устанавливается в Ложь.
//
Процедура ОткрытьФормуВыбораФайлов(Знач ВладелецФайлов, Знач ЭлементФормы, СтандартнаяОбработка = Ложь) Экспорт
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
- ПараметрыФормы.Вставить("ВладелецФайла", ВладелецФайлов);
- ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Истина);
+ ПараметрыФормы.Вставить("РежимВыбора", Истина);
+ ПараметрыФормы.Вставить("ВладелецФайла", ВладелецФайлов);
- ОткрытьФорму("ОбщаяФорма.ВыборПрисоединенныхФайлов", ПараметрыФормы, ЭлементФормы);
+ ОткрытьФорму("ОбщаяФорма.ПрисоединенныеФайлы", ПараметрыФормы, ЭлементФормы);
КонецПроцедуры
@@ -312,8 +310,8 @@
// Может использоваться как обработчик открытия присоединенного файла.
//
// Параметры:
-// ПрисоединенныйФайл - Ссылка на файл, карточку которого нужно открыть.
-// СтандартнаяОбработка - Булево (возвращаемое значение), всегда устанавливается в Ложь.
+// ПрисоединенныйФайл - СправочникСсылка - ссылка на справочник с именем "*ПрисоединенныеФайлы".
+// СтандартнаяОбработка - Булево - (возвращаемое значение), всегда устанавливается в Ложь.
//
Процедура ОткрытьФормуПрисоединенногоФайла(Знач ПрисоединенныйФайл, СтандартнаяОбработка = Ложь) Экспорт
@@ -339,10 +337,6 @@
КонецФункции
-#КонецОбласти
-
-#Область СлужебныеПроцедурыИФункции
-
////////////////////////////////////////////////////////////////////////////////
// Устаревшие процедуры и функции
diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлыПереопределяемый/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлыПереопределяемый/Module.bsl
index 87a4169e6..2268f6ec8 100644
--- a/SSL/src/CommonModules/ПрисоединенныеФайлыПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ПрисоединенныеФайлыПереопределяемый/Module.bsl
@@ -8,9 +8,9 @@
// Позволяет переопределить справочники хранения файлов по типам владельцев.
//
// Параметры:
-// ТипВладелецФайла - Тип ссылки объекта, к которому добавляется файл.
+// ТипВладелецФайла - Тип - тип ссылки объекта, к которому добавляется файл.
//
-// ИменаСправочников - Соответствие, содержащее в ключах имена справочников.
+// ИменаСправочников - Соответствие - содержит в ключах имена справочников.
// При вызове содержит стандартное имя одного справочника,
// помеченного, как основной (если существует).
// Основной справочник используется для интерактивного
diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl
index ce7d7a20d..5b7e4ea5e 100644
--- a/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl
@@ -250,63 +250,6 @@
КонецФункции
-// Заполняет текст запроса для получения присоединенных файлов у которых не извлечен текст.
-// Текст запроса формируется по всем справочникам присоединенных файлов. В качестве параметра
-// может прийти другой запрос, с которым следует сделать объединение.
-//
-// Параметры:
-// ТекстЗапроса - Строка (возвращаемое значение), варианты передаваемых значений:
-// Пустая строка - будет возвращен требуемый текст запроса.
-// Непустая строка - будет возвращен требуемый текст запроса, добавленный
-// к переданному тексту посредством "ОБЪЕДИНИТЬ ВСЕ".
-//
-// ПолучитьВсеФайлы - Булево - начальное значение Ложь. Позволяет отключить выборку присоединенных
-// файлов по частям, если передать Истина.
-//
-Процедура ПолучитьТекстЗапросаДляИзвлеченияТекста(ТекстЗапроса = "", ПолучитьВсеФайлы = Ложь) Экспорт
-
- ТипыВладельцев = Метаданные.РегистрыСведений.НаличиеПрисоединенныхФайлов.Измерения.ОбъектСФайлами.Тип.Типы();
-
- КоличествоТипов = ТипыВладельцев.Количество();
- Если КоличествоТипов = 0 Тогда
- Возврат;
- КонецЕсли;
-
- ВсеИменаСправочников = Новый Соответствие;
-
- Для каждого Тип Из ТипыВладельцев Цикл
- ИменаСправочников = ИменаСправочниковХраненияФайлов(Тип);
-
- Для каждого КлючИЗначение Из ИменаСправочников Цикл
- Если ВсеИменаСправочников[КлючИЗначение.Ключ] <> Неопределено Тогда
- Продолжить;
- КонецЕсли;
- ВсеИменаСправочников.Вставить(КлючИЗначение.Ключ, Истина);
- КонецЦикла;
- КонецЦикла;
-
- ЧислоФайловВВыборке = Цел(100 / ВсеИменаСправочников.Количество());
- ЧислоФайловВВыборке = ?(ЧислоФайловВВыборке < 10, 10, ЧислоФайловВВыборке);
-
- Для каждого КлючИЗначение Из ВсеИменаСправочников Цикл
-
- Если НЕ ПустаяСтрока(ТекстЗапроса) Тогда
- ТекстЗапроса = ТекстЗапроса +
- "
- |
- |ОБЪЕДИНИТЬ ВСЕ
- |
- |";
- КонецЕсли;
-
- ТекстЗапроса = ТекстЗапроса + ТекстЗапросаДляФайловСНеизвлеченнымТекстом(
- КлючИЗначение.Ключ,
- ЧислоФайловВВыборке,
- ПолучитьВсеФайлы);
- КонецЦикла;
-
-КонецПроцедуры
-
// Возвращает количество версий с неизвлеченным текстом.
Функция ПолучитьКоличествоВерсийСНеизвлеченнымТекстом() Экспорт
@@ -392,21 +335,6 @@
КонецФункции
-// Записывает присоединенный файл.
-//
-// Параметры:
-// ФайлОбъект - Объект присоединенного файла.
-//
-Процедура ЗаписатьИзвлеченныйТекст(ФайлОбъект) Экспорт
-
- Попытка
- ФайлОбъект.Записать();
- Исключение
- ВызватьИсключение;
- КонецПопытки;
-
-КонецПроцедуры
-
// Заполняет параметр КоличествоФайловВТомах.
Процедура ОпределитьКоличествоФайловВТомах(КоличествоФайловВТомах) Экспорт
@@ -909,7 +837,7 @@
ФайлОбъект = ПрисоединенныйФайл;
КонецЕсли;
- Если НЕ ФайлОбъект.Редактирует.Пустая() Тогда
+ Если ЗначениеЗаполнено(ФайлОбъект.Редактирует) Тогда
ФайлОбъект.Редактирует = Справочники.Пользователи.ПустаяСсылка();
ФайлОбъект.Записать();
Конецесли;
@@ -930,7 +858,7 @@
ФайлОбъект = ПрисоединенныйФайл;
КонецЕсли;
- ФайлОбъект.Редактирует = Пользователи.ТекущийПользователь();
+ ФайлОбъект.Редактирует = Пользователи.АвторизованныйПользователь();
ФайлОбъект.Записать();
КонецПроцедуры
@@ -1042,7 +970,7 @@
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилищеДвоичныеДанные);
КонецЕсли;
- ФайлОбъект.Изменил = Пользователи.ТекущийПользователь();
+ ФайлОбъект.Изменил = Пользователи.АвторизованныйПользователь();
Если ТипЗнч(РеквизитыЗначения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ФайлОбъект, РеквизитыЗначения);
@@ -1661,11 +1589,61 @@
КонецПроцедуры
-// Возвращает текст запроса для извлечения текста
+// Заполняет текст запроса для получения файлов у которых не извлечен текст.
+// В качестве параметра может прийти другой запрос, с которым следует сделать объединение.
+//
+// Параметры:
+// ТекстЗапроса - Строка (возвращаемое значение), варианты передаваемых значений:
+// Пустая строка - будет возвращен требуемый текст запроса.
+// Непустая строка - будет возвращен требуемый текст запроса, добавленный
+// к переданному тексту посредством "ОБЪЕДИНИТЬ ВСЕ".
+//
+// ПолучитьВсеФайлы - Булево - начальное значение Ложь. Позволяет отключить выборку
+// файлов по частям, если передать Истина.
//
Процедура ПриОпределенииТекстаЗапросаДляИзвлеченияТекста(ТекстЗапроса, ПолучитьВсеФайлы = Ложь) Экспорт
- ПолучитьТекстЗапросаДляИзвлеченияТекста(ТекстЗапроса, ПолучитьВсеФайлы);
+ // Текст запроса формируется по всем справочникам присоединенных файлов.
+
+ ТипыВладельцев = Метаданные.РегистрыСведений.НаличиеПрисоединенныхФайлов.Измерения.ОбъектСФайлами.Тип.Типы();
+
+ КоличествоТипов = ТипыВладельцев.Количество();
+ Если КоличествоТипов = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
+ ВсеИменаСправочников = Новый Соответствие;
+
+ Для каждого Тип Из ТипыВладельцев Цикл
+ ИменаСправочников = ИменаСправочниковХраненияФайлов(Тип);
+
+ Для каждого КлючИЗначение Из ИменаСправочников Цикл
+ Если ВсеИменаСправочников[КлючИЗначение.Ключ] <> Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ ВсеИменаСправочников.Вставить(КлючИЗначение.Ключ, Истина);
+ КонецЦикла;
+ КонецЦикла;
+
+ ЧислоФайловВВыборке = Цел(100 / ВсеИменаСправочников.Количество());
+ ЧислоФайловВВыборке = ?(ЧислоФайловВВыборке < 10, 10, ЧислоФайловВВыборке);
+
+ Для каждого КлючИЗначение Из ВсеИменаСправочников Цикл
+
+ Если НЕ ПустаяСтрока(ТекстЗапроса) Тогда
+ ТекстЗапроса = ТекстЗапроса +
+ "
+ |
+ |ОБЪЕДИНИТЬ ВСЕ
+ |
+ |";
+ КонецЕсли;
+
+ ТекстЗапроса = ТекстЗапроса + ТекстЗапросаДляФайловСНеизвлеченнымТекстом(
+ КлючИЗначение.Ключ,
+ ЧислоФайловВВыборке,
+ ПолучитьВсеФайлы);
+ КонецЦикла;
КонецПроцедуры
@@ -1682,10 +1660,17 @@
//
Процедура ПриЗаписиИзвлеченногоТекста(ФайлОбъект) Экспорт
- Если ЭтоЭлементПрисоединенныеФайлы(ФайлОбъект) Тогда
- ЗаписатьИзвлеченныйТекст(ФайлОбъект);
+ Если Не ЭтоЭлементПрисоединенныеФайлы(ФайлОбъект) Тогда
+ Возврат;
КонецЕсли;
+ Попытка
+ ФайлОбъект.ОбменДанными.Загрузка = Истина;
+ ФайлОбъект.Записать();
+ Исключение
+ ВызватьИсключение;
+ КонецПопытки;
+
КонецПроцедуры
// Возвращает в параметре КоличествоФайловВТомах количество файлов в томах.
diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебныйКлиент/Module.bsl
index 5a8101042..e0d265231 100644
--- a/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебныйКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебныйКлиент/Module.bsl
@@ -686,7 +686,7 @@
Возврат;
КонецЕсли;
- Если НЕ ДанныеФайла.Редактирует.Пустая() Тогда
+ Если ЗначениеЗаполнено(ДанныеФайла.Редактирует) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Нельзя зашифровать занятый файл.'"));
ВыполнитьОбработкуОповещения(ОбработчикРезультата, Неопределено);
Возврат;
@@ -1457,7 +1457,12 @@
Если НРег(ДанныеФайла.Расширение) = НРег("mxl") Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяОткрываемогоФайла);
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
+ #Если ТолстыйКлиентОбычноеПриложение Тогда
+ ТабличныйДокумент = Новый ТабличныйДокумент;
+ ТабличныйДокумент.Прочитать(ИмяОткрываемогоФайла);
+ #Иначе
ТабличныйДокумент = ФайловыеФункцииСлужебныйВызовСервера.ТабличныйДокументИзВременногоХранилища(Адрес);
+ #КонецЕсли
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ИмяДокумента", ЗаголовокСтрока);
diff --git a/SSL/src/CommonModules/РаботаВБезопасномРежиме/Module.bsl b/SSL/src/CommonModules/РаботаВБезопасномРежиме/Module.bsl
index 8fdf37a79..5ae4be366 100644
--- a/SSL/src/CommonModules/РаботаВБезопасномРежиме/Module.bsl
+++ b/SSL/src/CommonModules/РаботаВБезопасномРежиме/Module.bsl
@@ -454,7 +454,13 @@
//
Процедура ВыполнитьМетодКонфигурации(Знач ИмяЭкспортнойПроцедуры, Знач Параметры = Неопределено) Экспорт
- ПроверитьИмяМетодаКонфигурации(ИмяЭкспортнойПроцедуры);
+ Попытка
+ ПроверитьИмяМетодаКонфигурации(ИмяЭкспортнойПроцедуры);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ ВызватьИсключение НСтр("ru = 'Ошибка при вызове процедуры ВыполнитьМетодКонфигурации общего модуля РаботаВБезопасномРежиме.'")
+ + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
+ КонецПопытки;
Если ПолучитьФункциональнуюОпцию("ИспользуютсяПрофилиБезопасности") И Не УстановленБезопасныйРежим() Тогда
@@ -537,70 +543,57 @@
// на встроенном языке 1С:Предприятия перед использованием его в операторах Выполнить() и Вычислить()
// при их использовании для динамического вызова методов код конфигурации.
//
-// В случае, если переданная строка не соответствует имени метода конфигурации - генерируется
+// В случае, если переданная строка не соответствует имени метода конфигурации - генерируется.
//
-Процедура ПроверитьИмяМетодаКонфигурации(Знач ИмяЭкспортнойПроцедуры) Экспорт
+Процедура ПроверитьИмяМетодаКонфигурации(Знач ИмяМетода) Экспорт
// Проверка предусловий на формат ИмяЭкспортнойПроцедуры.
- ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяЭкспортнойПроцедуры, ".");
+ ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяМетода, ".");
Если ЧастиИмени.Количество() <> 2 И ЧастиИмени.Количество() <> 3 Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru='Неправильный формат параметра ИмяЭкспортнойПроцедуры (%1)'"),
- ИмяЭкспортнойПроцедуры);
+ НСтр("ru = 'Неправильный формат параметра ИмяМетода (%1)'"),
+ ИмяМетода);
КонецЕсли;
ИмяОбъекта = ЧастиИмени[0];
Если ЧастиИмени.Количество() = 2 И Метаданные.ОбщиеМодули.Найти(ИмяОбъекта) = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru='Неправильный формат параметра ИмяЭкспортнойПроцедуры (%1):
- |Не найден общий модуль ""%2"".'"),
- ИмяЭкспортнойПроцедуры,
+ НСтр("ru = 'Неправильный формат параметра ИмяМетода (%1):
+ |Не найден общий модуль ""%2"".'"),
+ ИмяМетода,
ИмяОбъекта);
КонецЕсли;
Если ЧастиИмени.Количество() = 3 Тогда
- ДопустимыеИменаТипов = Новый Массив;
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаКонстанты()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаРегистрыСведений()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаРегистрыНакопления()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаРегистрыБухгалтерии()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаРегистрыРасчета()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаСправочники()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаДокументы()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаОтчеты()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаОбработки()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаБизнесПроцессы()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаЖурналыДокументов()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаЗадачи()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаПланыСчетов()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаПланыОбмена()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаПланыВидовХарактеристик()));
- ДопустимыеИменаТипов.Добавить(ВРег(ОбщегоНазначения.ИмяТипаПланыВидовРасчета()));
- ИмяТипа = ВРег(ЧастиИмени[0]);
- Если ДопустимыеИменаТипов.Найти(ИмяТипа) = Неопределено Тогда
+ ПолноеИмяОбъекта = ЧастиИмени[0] + "." + ЧастиИмени[1];
+ Попытка
+ Менеджер = МенеджерОбъектаПоИмени(ПолноеИмяОбъекта);
+ Исключение
+ Менеджер = Неопределено;
+ КонецПопытки;
+ Если Менеджер = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru='Неправильный формат параметра ИмяЭкспортнойПроцедуры (%1):
- |Не найдена коллекция объектов метаданных ""%2"",
- |или для этой коллекции не поддерживается безопасное выполнение.'"),
- ИмяЭкспортнойПроцедуры,
- ИмяОбъекта);
+ НСтр("ru = 'Неправильный формат параметра ИмяМетода (%1):
+ |Не найден менеджер объекта ""%2"".'"),
+ ИмяМетода,
+ ПолноеИмяОбъекта);
КонецЕсли;
КонецЕсли;
- ИмяМетода = ЧастиИмени[ЧастиИмени.ВГраница()];
+ ИмяМетодаОбъекта = ЧастиИмени[ЧастиИмени.ВГраница()];
ВременнаяСтруктура = Новый Структура;
Попытка
- // Проверка на то, что ИмяМетода является допустимым идентификатором.
+ // Проверка того, что ИмяМетодаОбъекта является допустимым идентификатором.
// Например: МояПроцедура
- ВременнаяСтруктура.Вставить(ИмяМетода);
+ ВременнаяСтруктура.Вставить(ИмяМетодаОбъекта);
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Безопасное выполнение метода'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru='Неправильный формат параметра ИмяЭкспортнойПроцедуры (%1):
- |Имя метода ""%2"" не соответствует требованиям образования имен переменных.'"),
- ИмяЭкспортнойПроцедуры,
- ИмяМетода);
+ НСтр("ru = 'Неправильный формат параметра ИмяМетода (%1):
+ |Имя метода ""%2"" не соответствует требованиям образования имен процедур и фукнций.'"),
+ ИмяМетода,
+ ИмяМетодаОбъекта);
КонецПопытки;
КонецПроцедуры
@@ -672,6 +665,137 @@
#Область СлужебныеПроцедурыИФункции
+// Возвращает менеджер объекта по имени.
+// Ограничение: не обрабатываются точки маршрутов бизнес-процессов.
+//
+// Параметры:
+// Имя - Строка - имя например, "Справочник", "Справочники", "Справочник.Организации".
+//
+// Возвращаемое значение:
+// СправочникиМенеджер, СправочникМенеджер, ДокументыМенеджер, ДокументМенеджер, ...
+//
+Функция МенеджерОбъектаПоИмени(Имя)
+ Перем КлассОМ, ИмяОМ, Менеджер;
+
+ ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Имя, ".");
+
+ Если ЧастиИмени.Количество() > 0 Тогда
+ КлассОМ = ВРег(ЧастиИмени[0]);
+ КонецЕсли;
+
+ Если ЧастиИмени.Количество() > 1 Тогда
+ ИмяОМ = ЧастиИмени[1];
+ КонецЕсли;
+
+ Если КлассОМ = "ПЛАНОБМЕНА"
+ Или КлассОМ = "ПЛАНЫОБМЕНА" Тогда
+ Менеджер = ПланыОбмена;
+
+ ИначеЕсли КлассОМ = "СПРАВОЧНИК"
+ Или КлассОМ = "СПРАВОЧНИКИ" Тогда
+ Менеджер = Справочники;
+
+ ИначеЕсли КлассОМ = "ДОКУМЕНТ"
+ Или КлассОМ = "ДОКУМЕНТЫ" Тогда
+ Менеджер = Документы;
+
+ ИначеЕсли КлассОМ = "ЖУРНАЛДОКУМЕНТОВ"
+ Или КлассОМ = "ЖУРНАЛЫДОКУМЕНТОВ" Тогда
+ Менеджер = ЖурналыДокументов;
+
+ ИначеЕсли КлассОМ = "ПЕРЕЧИСЛЕНИЕ"
+ Или КлассОМ = "ПЕРЕЧИСЛЕНИЯ" Тогда
+ Менеджер = Перечисления;
+
+ ИначеЕсли КлассОМ = "ОТЧЕТ"
+ Или КлассОМ = "ОТЧЕТЫ" Тогда
+ Менеджер = Отчеты;
+
+ ИначеЕсли КлассОМ = "ОБРАБОТКА"
+ Или КлассОМ = "ОБРАБОТКИ" Тогда
+ Менеджер = Обработки;
+
+ ИначеЕсли КлассОМ = "ПЛАНВИДОВХАРАКТЕРИСТИК"
+ Или КлассОМ = "ПЛАНЫВИДОВХАРАКТЕРИСТИК" Тогда
+ Менеджер = ПланыВидовХарактеристик;
+
+ ИначеЕсли КлассОМ = "ПЛАНСЧЕТОВ"
+ Или КлассОМ = "ПЛАНЫСЧЕТОВ" Тогда
+ Менеджер = ПланыСчетов;
+
+ ИначеЕсли КлассОМ = "ПЛАНВИДОВРАСЧЕТА"
+ Или КлассОМ = "ПЛАНЫВИДОВРАСЧЕТА" Тогда
+ Менеджер = ПланыВидовРасчета;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРСВЕДЕНИЙ"
+ Или КлассОМ = "РЕГИСТРЫСВЕДЕНИЙ" Тогда
+ Менеджер = РегистрыСведений;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРНАКОПЛЕНИЯ"
+ Или КлассОМ = "РЕГИСТРЫНАКОПЛЕНИЯ" Тогда
+ Менеджер = РегистрыНакопления;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРБУХГАЛТЕРИИ"
+ Или КлассОМ = "РЕГИСТРЫБУХГАЛТЕРИИ" Тогда
+ Менеджер = РегистрыБухгалтерии;
+
+ ИначеЕсли КлассОМ = "РЕГИСТРРАСЧЕТА"
+ Или КлассОМ = "РЕГИСТРЫРАСЧЕТА" Тогда
+
+ Если ЧастиИмени.Количество() < 3 Тогда
+ // Регистр расчета
+ Менеджер = РегистрыРасчета;
+ Иначе
+ КлассПодчиненногоОМ = ВРег(ЧастиИмени[2]);
+ Если ЧастиИмени.Количество() > 3 Тогда
+ ИмяПодчиненногоОМ = ЧастиИмени[3];
+ КонецЕсли;
+ Если КлассПодчиненногоОМ = "ПЕРЕРАСЧЕТ"
+ Или КлассПодчиненногоОМ = "ПЕРЕРАСЧЕТЫ" Тогда
+ // Перерасчет
+ Попытка
+ Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты;
+ ИмяОМ = ИмяПодчиненногоОМ;
+ Исключение
+ Менеджер = Неопределено;
+ КонецПопытки;
+ КонецЕсли;
+ КонецЕсли;
+
+ ИначеЕсли КлассОМ = "БИЗНЕСПРОЦЕСС"
+ Или КлассОМ = "БИЗНЕСПРОЦЕССЫ" Тогда
+ Менеджер = БизнесПроцессы;
+
+ ИначеЕсли КлассОМ = "ЗАДАЧА"
+ Или КлассОМ = "ЗАДАЧИ" Тогда
+ Менеджер = Задачи;
+
+ ИначеЕсли КлассОМ = "КОНСТАНТА"
+ Или КлассОМ = "КОНСТАНТЫ" Тогда
+ Менеджер = Константы;
+
+ ИначеЕсли КлассОМ = "ПОСЛЕДОВАТЕЛЬНОСТЬ"
+ Или КлассОМ = "ПОСЛЕДОВАТЕЛЬНОСТИ" Тогда
+ Менеджер = Последовательности;
+ КонецЕсли;
+
+ Если Менеджер <> Неопределено Тогда
+ Если ЗначениеЗаполнено(ИмяОМ) Тогда
+ Попытка
+ Возврат Менеджер[ИмяОМ];
+ Исключение
+ Менеджер = Неопределено;
+ КонецПопытки;
+ Иначе
+ Возврат Менеджер;
+ КонецЕсли;
+ КонецЕсли;
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Не удалось получить менеджер для объекта ""%1""'"), Имя);
+
+КонецФункции
+
// Проверяет возможность перехода в привилегированный режим из текущего безопасного режима.
//
// Возвращаемое значение: Булево.
diff --git a/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебный/Module.bsl
index ce32cb721..5a91c9a5a 100644
--- a/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебный/Module.bsl
@@ -450,7 +450,7 @@
Попытка
Если ВключаяЗапросСозданияПрофиляИБ Тогда
- Результат.Добавить(ЗапросНаСозданиеНабораРазрешений(РаботаВБезопасномРежимеСлужебныйПовтИсп.СлужебныйИОМ()));
+ Результат.Добавить(ЗапросНаСозданиеНабораРазрешений(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка()));
КонецЕсли;
ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия(
@@ -581,24 +581,7 @@
//
Функция РежимПодключенияВнешнегоМодуля(Знач ВнешнийМодуль) Экспорт
- Если РаботаВБезопасномРежиме.УстановленБезопасныйРежим() Тогда
-
- Возврат БезопасныйРежим();
-
- Иначе
-
- УстановитьПривилегированныйРежим(Истина);
-
- Менеджер = РегистрыСведений.РежимыПодключенияВнешнихМодулей.СоздатьМенеджерЗаписи();
- Менеджер.ВнешнийМодуль = ВнешнийМодуль;
- Менеджер.Прочитать();
- Если Менеджер.Выбран() Тогда
- Возврат Менеджер.БезопасныйРежим;
- Иначе
- Возврат Неопределено;
- КонецЕсли;
-
- КонецЕсли;
+ Возврат Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.РежимПодключенияВнешнегоМодуля(ВнешнийМодуль);
КонецФункции
@@ -675,40 +658,20 @@
// СЕРВЕРНЫЕ ОБРАБОТЧИКИ.
- СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииИсключенийПоискаСсылок"].Добавить(
- "РаботаВБезопасномРежимеСлужебный");
-
СерверныеОбработчики["СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПриДобавленииОбработчиковОбновления"].Добавить(
"РаботаВБезопасномРежимеСлужебный");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ВариантыОтчетов\ПриНастройкеВариантовОтчетов"].Добавить(
+ "РаботаВБезопасномРежимеСлужебный");
+ КонецЕсли;
+
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обработчики служебных событий
//
-// Заполняет массив списком имен объектов метаданных, данные которых могут содержать ссылки на различные объекты метаданных,
-// но при этом эти ссылки не должны учитываться в бизнес-логике приложения.
-//
-// Параметры:
-// Массив - массив строк, например, "РегистрСведений.ВерсииОбъектов".
-//
-Процедура ПриДобавленииИсключенийПоискаСсылок(Массив) Экспорт
-
- Массив.Добавить(Метаданные.РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.ПолноеИмя());
- Массив.Добавить(Метаданные.РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.ПолноеИмя());
-
- Массив.Добавить(Метаданные.РегистрыСведений.РежимыПодключенияВнешнихМодулей.ПолноеИмя());
-
- Массив.Добавить(Метаданные.РегистрыСведений.РазрешенияПереходаВПривилегированныйРежим.ПолноеИмя());
- Массив.Добавить(Метаданные.РегистрыСведений.РазрешенныеCOMКлассы.ПолноеИмя());
- Массив.Добавить(Метаданные.РегистрыСведений.РазрешенныеВнешниеКомпоненты.ПолноеИмя());
- Массив.Добавить(Метаданные.РегистрыСведений.РазрешенныеИнтернетРесурсы.ПолноеИмя());
- Массив.Добавить(Метаданные.РегистрыСведений.РазрешенныеКаталогиФайловойСистемы.ПолноеИмя());
- Массив.Добавить(Метаданные.РегистрыСведений.РазрешенныеПриложенияОперационнойСистемы.ПолноеИмя());
-
-КонецПроцедуры
-
// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме.
//
// Параметры:
@@ -716,24 +679,23 @@
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
- Обработчик = Обработчики.Добавить();
- Обработчик.Версия = "2.2.2.31";
- Обработчик.Процедура = "РаботаВБезопасномРежимеСлужебный.ЗаполнитьВнешнийМодульДляПредоставленныхРазрешений";
- Обработчик.ОбщиеДанные = Истина;
+ Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.ПриДобавленииОбработчиковОбновления(
+ Обработчики);
КонецПроцедуры
-////////////////////////////////////////////////////////////////////////////////
-// Обработчики обновления
+// Содержит настройки размещения вариантов отчетов в панели отчетов.
//
-
-// [2.2.2.31] Процедура проставляет значение измерения ВнешнийМодуль у регистров, используемых в качестве
-// кэша предоставленных разрешений.
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
//
-Процедура ЗаполнитьВнешнийМодульДляПредоставленныхРазрешений() Экспорт
-
- Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.ЗаполнитьВнешнийМодульДляПредоставленныхРазрешений();
-
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ИспользуемыеВнешниеРесурсы);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
diff --git a/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебныйПовтИсп/Module.bsl
index 7fbb5c4df..0398c6699 100644
--- a/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебныйПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/РаботаВБезопасномРежимеСлужебныйПовтИсп/Module.bsl
@@ -7,18 +7,6 @@
#Область СлужебныйПрограммныйИнтерфейс
-// Возвращает служебный идентификатор объектов метаданных, который используется для хранения
-// разрешений, связанных с конфигурацией (а не с объектами конфигурации).
-//
-// Возвращаемое значение: СправочникСсылка.ИдентификаторыОбъектовМетаданных.
-//
-Функция СлужебныйИОМ() Экспорт
-
- Возврат Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту(
- "ПолноеИмя", Метаданные.РегистрыСведений.РежимыПодключенияВнешнихМодулей.ПолноеИмя());
-
-КонецФункции
-
// Возвращает массив существующих в конфигурации разделителей.
//
// Возвращаемое значение: ФиксированныйМассив(Строка) - массив строк общих реквизитов, которые
@@ -38,4 +26,15 @@
КонецФункции
+// Возвращает служебный идентификатор объектов метаданных, который используется для хранения
+// разрешений, связанных с конфигурацией (а не с объектами конфигурации).
+//
+// Возвращаемое значение: СправочникСсылка.ИдентификаторыОбъектовМетаданных.
+//
+Функция СлужебныйИОМ() Экспорт
+
+ Возврат Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
+
+КонецФункции
+
#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl
index cf35845e1..6222232b8 100644
--- a/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl
+++ b/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl
@@ -2167,6 +2167,9 @@
Процедура ПриВключенииРазделенияПоОбластямДанных() Экспорт
ПроверитьВозможностьИспользованияКонфигурацииВМоделиСервиса();
+
+ СоздатьНеразделенныеПредопределенныеЭлементы();
+
РаботаВМоделиСервисаПереопределяемый.ПриВключенииРазделенияПоОбластямДанных();
КонецПроцедуры
@@ -2248,6 +2251,13 @@
КонецЕсли;
+ Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "*";
+ Обработчик.Процедура = "РаботаВМоделиСервиса.СоздатьНеразделенныеПредопределенныеЭлементы";
+ Обработчик.Приоритет = 99;
+ Обработчик.ОбщиеДанные = Истина;
+ Обработчик.МонопольныйРежим = Ложь;
+
КонецПроцедуры
// Заполняет структуру параметров, необходимых для работы клиентского кода
@@ -3972,6 +3982,56 @@
КонецПроцедуры
+// Обработчик создания/обновления предопределенных элементов
+// неразделенных объектов метаданных.
+//
+Процедура СоздатьНеразделенныеПредопределенныеЭлементы() Экспорт
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ Если НЕ ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда
+ // Для конфигураций без разделения данных действий не требуется.
+ Возврат;
+ КонецЕсли;
+
+ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
+
+ Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
+ // В разделенном сеансе действия недоступны и не требуются.
+ Возврат;
+
+ КонецЕсли;
+
+ Иначе
+
+ // При выключенном разделении данных действий не требуется.
+ Возврат;
+
+ КонецЕсли;
+
+ ОсновнойРазделитель = РазделительОсновныхДанных();
+ ВспомогательныйРазделитель = РазделительВспомогательныхДанных();
+
+ КоллекцииМетаданных = Новый Массив;
+ КоллекцииМетаданных.Добавить(Метаданные.Справочники);
+ КоллекцииМетаданных.Добавить(Метаданные.ПланыВидовХарактеристик);
+ КоллекцииМетаданных.Добавить(Метаданные.ПланыСчетов);
+ КоллекцииМетаданных.Добавить(Метаданные.ПланыВидовРасчета);
+
+ Для каждого Коллекция Из КоллекцииМетаданных Цикл
+ Для Каждого ОбъектМетаданных Из Коллекция Цикл
+ ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
+ Если Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ПолноеИмя, ОсновнойРазделитель)
+ И Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ПолноеИмя, ВспомогательныйРазделитель) Тогда
+
+ МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
+ МенеджерОбъекта.Выбрать().Следующий();
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+
+КонецПроцедуры
+
// Возвращает минимальную версию библиотеки "1С:Библиотека технологии сервиса", совместно с которой
// возможно использование текущей версии БСП.
//
diff --git a/SSL/src/CommonModules/РаботаСБанками/Module.bsl b/SSL/src/CommonModules/РаботаСБанками/Module.bsl
index 699ac5efb..02e36b515 100644
--- a/SSL/src/CommonModules/РаботаСБанками/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСБанками/Module.bsl
@@ -8,28 +8,23 @@
////////////////////////////////////////////////////////////////////////////////
// Работа с данными справочника КлассификаторБанковРФ
-// Получает данные из справочника КлассификаторБанковРФ по значениям БИК и КоррСчета
+// Получает данные из справочника КлассификаторБанковРФ по значениям БИК и корсчета банка.
//
// Параметры
-// БИК - Строка - Значение БИК
-// КоррСчет - Строка - Значение корр.счета
-// ЗаписьОБанке - СправочникСсылка или строка - результат выборки
-Процедура ПолучитьДанныеКлассификатораРФ(БИК = "", КоррСчет = "", ЗаписьОБанке) Экспорт
+// БИК - Строка - банковский идентификационный код.
+// КоррСчет - Строка - корреспондентский счет банка.
+// ЗаписьОБанке - СправочникСсылка, Строка - (возвращаемый) найденный банк.
+Процедура ПолучитьДанныеКлассификатораРФ(БИК = "", КоррСчет = "", ЗаписьОБанке = "") Экспорт
Если Не ПустаяСтрока(БИК) Тогда
- КлассификаторБанковРФ = Справочники.КлассификаторБанковРФ;
- ЗаписьОБанке = КлассификаторБанковРФ.НайтиПоКоду(БИК);
- Если ЗаписьОБанке.Пустая() Тогда
- ЗаписьОБанке = "";
- КонецЕсли;
+ ЗаписьОБанке = Справочники.КлассификаторБанковРФ.НайтиПоКоду(БИК);
ИначеЕсли Не ПустаяСтрока(КоррСчет) Тогда
- КлассификаторБанковРФ = Справочники.КлассификаторБанковРФ;
- ЗаписьОБанке = КлассификаторБанковРФ.НайтиПоРеквизиту("КоррСчет", КоррСчет);
- Если ЗаписьОБанке.Пустая() Тогда
- ЗаписьОБанке = "";
- КонецЕсли;
+ ЗаписьОБанке = Справочники.КлассификаторБанковРФ.НайтиПоРеквизиту("КоррСчет", КоррСчет);
Иначе
ЗаписьОБанке = "";
КонецЕсли;
+ Если ЗаписьОБанке = Справочники.КлассификаторБанковРФ.ПустаяСсылка() Тогда
+ ЗаписьОБанке = "";
+ КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -570,16 +565,17 @@
Банк.Вставить("Адрес", "");
КодРегиона = Сред(Банк.БИК, 3, 2);
- Регион = Регионы[КодРегиона];
- Если Регион <> Неопределено Тогда
- Банк.Вставить("КодРегиона", КодРегиона);
- Банк.Вставить("Регион", Регион);
- Иначе
- Возврат "";
+ Регион = Регионы[КодРегиона];
+ Если Регион = Неопределено Тогда
+ Регион = НСтр("ru = 'Другие территории'");
+ КодРегиона = "";
КонецЕсли;
-
+
+ Банк.Вставить("КодРегиона", КодРегиона);
+ Банк.Вставить("Регион", Регион);
+
Возврат Банк;
-
+
КонецФункции
// Выполняет загрузку классификатора банков РФ из файла, полученного с сайта РБК.
@@ -870,30 +866,28 @@
Загружено = ПараметрыЗагрузкиДанных["Загружено"];
Обновлено = ПараметрыЗагрузкиДанных["Обновлено"];
- Если Не ПустаяСтрока(СтруктураБанк.КодРегиона) Тогда
- ТекущийРегион = Справочники.КлассификаторБанковРФ.НайтиПоКоду(СтруктураБанк.КодРегиона);
- Если ТекущийРегион.Пустая() Тогда
- Регион = Справочники.КлассификаторБанковРФ.СоздатьГруппу();
+ ТекущийРегион = Справочники.КлассификаторБанковРФ.НайтиПоКоду(СтруктураБанк.КодРегиона);
+ Если ТекущийРегион.Пустая() Тогда
+ Регион = Справочники.КлассификаторБанковРФ.СоздатьГруппу();
+ Иначе
+ Если ТекущийРегион.ЭтоГруппа Тогда
+ Регион = ТекущийРегион.ПолучитьОбъект();
Иначе
- Если ТекущийРегион.ЭтоГруппа Тогда
- Регион = ТекущийРегион.ПолучитьОбъект();
- Иначе
- Регион = Справочники.КлассификаторБанковРФ.СоздатьГруппу();
- КонецЕсли;
+ Регион = Справочники.КлассификаторБанковРФ.СоздатьГруппу();
КонецЕсли;
-
- Если СокрЛП(Регион.Код) <> СокрЛП(СтруктураБанк.КодРегиона) Тогда
- Регион.Код = СокрЛП(СтруктураБанк.КодРегиона);
- КонецЕсли;
-
- Если СокрЛП(Регион.Наименование) <> СокрЛП(СтруктураБанк.Регион) Тогда
- Регион.Наименование = СокрЛП(СтруктураБанк.Регион);
- КонецЕсли;
-
- Если Регион.Модифицированность() Тогда
- Регион.Записать();
- КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
+
+ Если СокрЛП(Регион.Код) <> СокрЛП(СтруктураБанк.КодРегиона) Тогда
+ Регион.Код = СокрЛП(СтруктураБанк.КодРегиона);
+ КонецЕсли;
+
+ Если СокрЛП(Регион.Наименование) <> СокрЛП(СтруктураБанк.Регион) Тогда
+ Регион.Наименование = СокрЛП(СтруктураБанк.Регион);
+ КонецЕсли;
+
+ Если Регион.Модифицированность() Тогда
+ Регион.Записать();
+ КонецЕсли;
ЗаписываемыйЭлементСправочникаКлассификаторБанковРФ =
Справочники.КлассификаторБанковРФ.НайтиПоКоду(СтруктураБанк.БИК);
diff --git a/SSL/src/CommonModules/РаботаСБанкамиПереопределяемый/Module.bsl b/SSL/src/CommonModules/РаботаСБанкамиПереопределяемый/Module.bsl
index f768e5c36..55d59d57a 100644
--- a/SSL/src/CommonModules/РаботаСБанкамиПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСБанкамиПереопределяемый/Module.bsl
@@ -3,7 +3,7 @@
//
////////////////////////////////////////////////////////////////////////////////
-#Область СлужебныеПроцедурыИФункции
+#Область ПрограммныйИнтерфейс
// Включает/отключает показ предупреждений о необходимости обновления классификатора банков.
//
diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl
index d350b8656..8d2eb4538 100644
--- a/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl
@@ -5,17 +5,16 @@
#Область ПрограммныйИнтерфейс
-// Добавляет в справочник валют валюты из макета.
+// Добавляет в справочник валют валюты из классификатора.
//
// Параметры:
-// Код - коллекция строк - Коды добавляемых валют.
+// Коды - Массив - цифровые коды добавляемых валют.
//
// Возвращаемое значение:
-// Массив из СправочникСсылка - Ссылки созданных валют.
+// Массив, СправочникСсылка.Валюты - ссылки созданных валют.
//
Функция ДобавитьВалютыПоКоду(Знач Коды) Экспорт
Перем КлассификаторXML, КлассификаторТаблица, ЗаписьОКВ, НоваяСтрока, Результат;
-
КлассификаторXML = Справочники.Валюты.ПолучитьМакет("ОбщероссийскийКлассификаторВалют").ПолучитьТекст();
КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторXML).Данные;
@@ -34,7 +33,11 @@
НоваяСтрока.Код = ЗаписьОКВ.Code;
НоваяСтрока.Наименование = ЗаписьОКВ.CodeSymbol;
НоваяСтрока.НаименованиеПолное = ЗаписьОКВ.Name;
- НоваяСтрока.ЗагружаетсяИзИнтернета = ЗаписьОКВ.RBCLoading;
+ Если ЗаписьОКВ.RBCLoading Тогда
+ НоваяСтрока.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета;
+ Иначе
+ НоваяСтрока.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РучнойВвод;
+ КонецЕсли;
НоваяСтрока.ПараметрыПрописиНаРусском = ЗаписьОКВ.NumerationItemOptions;
НоваяСтрока.Записать();
Результат.Добавить(НоваяСтрока.Ссылка);
@@ -71,15 +74,15 @@
КонецФункции
-// Формирует представление суммы прописью в указанной валюте
+// Формирует представление суммы прописью в указанной валюте.
//
// Параметры:
-// СуммаЧислом - Число - Сумма, которую надо представить прописью
-// Валюта - СправочникСсылка.Валюты - Валюта, в которой нужно представить сумму
-// ВыводитьСуммуБезКопеек - Булево - Флаг представления суммы без копеек
+// СуммаЧислом - Число - сумма, которую надо представить прописью.
+// Валюта - СправочникСсылка.Валюты - валюта, в которой нужно представить сумму.
+// ВыводитьСуммуБезКопеек - Булево - признак представления суммы без копеек.
//
// Возвращаемое значение:
-// Строка - Сумма прописью.
+// Строка - сумма прописью.
//
Функция СформироватьСуммуПрописью(СуммаЧислом, Валюта, ВыводитьСуммуБезКопеек = Ложь) Экспорт
@@ -117,7 +120,16 @@
// Загружает курсы валют на текущую дату.
//
-Процедура ЗагрузитьАктуальныйКурс() Экспорт
+// Параметры:
+// ПараметрыЗагрузки - Структура - детали загрузки:
+// * НачалоПериода - Дата - начало периода загрузки;
+// * КонецПериода - Дата - конец периода загрузки;
+// * СписокВалют - ТаблицаЗначений - загружаемые валюты:
+// ** Валюта - СправочникСсылка.Валюты;
+// ** КодВалюты - Строка.
+// АдресРезультата - Строка - адрес во временном хранилище для помещения результатов загрузки.
+//
+Процедура ЗагрузитьАктуальныйКурс(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
ВызватьИсключение НСтр("ru = 'Недопустимый вызов процедуры ""ЗагрузитьАктуальныйКурс"".'");
@@ -134,14 +146,43 @@
ТекущаяДата = ТекущаяДатаСеанса();
СостояниеЗагрузки = Неопределено;
- ПриЗагрузкеВозниклиОшибки = Неопределено;
+ ПриЗагрузкеВозниклиОшибки = Ложь;
- ОбработкаЗагрузкиКурсовВалют = Обработки.ЗагрузкаКурсовВалют.Создать();
- ОбработкаЗагрузкиКурсовВалют.НачалоПериодаЗагрузки = ТекущаяДата;
- ОбработкаЗагрузкиКурсовВалют.ОкончаниеПериодаЗагрузки = ТекущаяДата;
- ОбработкаЗагрузкиКурсовВалют.ЗаполнитьСписокВалют();
- ОбработкаЗагрузкиКурсовВалют.ЗагрузитьКурсыВалют(ПриЗагрузкеВозниклиОшибки);
+ Если ПараметрыЗагрузки = Неопределено Тогда
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | КурсыВалют.Валюта КАК Валюта,
+ | КурсыВалют.Валюта.Код КАК КодВалюты,
+ | МАКСИМУМ(КурсыВалют.Период) КАК ДатаКурса
+ |ИЗ
+ | РегистрСведений.КурсыВалют КАК КурсыВалют
+ |ГДЕ
+ | КурсыВалют.Валюта.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)
+ | И НЕ КурсыВалют.Валюта.ПометкаУдаления
+ |
+ |СГРУППИРОВАТЬ ПО
+ | КурсыВалют.Валюта,
+ | КурсыВалют.Валюта.Код";
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ КонецПериода = ТекущаяДата;
+ Пока Выборка.Следующий() Цикл
+ НачалоПериода = ?(Выборка.ДатаКурса = '198001010000', НачалоГода(ТекущаяДата), Выборка.ДатаКурса + 60*60*24);
+ СписокВалют = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Выборка);
+
+ РаботаСКурсамиВалютКлиентСервер.ЗагрузитьКурсыВалютПоПараметрам(
+ СписокВалют, НачалоПериода, КонецПериода, ПриЗагрузкеВозниклиОшибки);
+ КонецЦикла;
+ Иначе
+ Результат = РаботаСКурсамиВалютКлиентСервер.ЗагрузитьКурсыВалютПоПараметрам(ПараметрыЗагрузки.СписокВалют,
+ ПараметрыЗагрузки.НачалоПериода, ПараметрыЗагрузки.КонецПериода, ПриЗагрузкеВозниклиОшибки);
+ КонецЕсли;
+ Если АдресРезультата <> Неопределено Тогда
+ ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
+ КонецЕсли;
+
Если ПриЗагрузкеВозниклиОшибки Тогда
ЗаписьЖурналаРегистрации(
ИмяСобытия,
@@ -291,52 +332,6 @@
////////////////////////////////////////////////////////////////////////////////
// Экспортные служебные процедуры и функции
-// Копирует в регистр сведений подчиненной валюты всю информацию из регистра
-// сведений базовой валюты (период, курс, кратность).
-//
-// Параметры
-// ВалютаИсточник - Справочники.Валюты - ссылка на базовую валюту, из регистра
-// сведений которой, будут копироваться данные
-// ВалютаПриемник - Справочники.Валюты - ссылка на зависимую валюту от базовой,
-// в регистр сведений которой данные будут копироваться
-//
-Процедура ЗаписатьСведенияДляПодчиненногоРегистра(ВалютаИсточник, ВалютаПриемник) Экспорт
-
- Запрос = Новый Запрос;
- Запрос.Текст =
- "ВЫБРАТЬ
- | КурсыВалют.Период,
- | КурсыВалют.Валюта,
- | КурсыВалют.Курс,
- | КурсыВалют.Кратность
- |ИЗ
- | РегистрСведений.КурсыВалют КАК КурсыВалют
- |ГДЕ
- | КурсыВалют.Валюта = &ВалютаИсточник";
- Запрос.УстановитьПараметр("ВалютаИсточник", ВалютаИсточник);
-
- Выборка = Запрос.Выполнить().Выбрать();
-
- НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
- НаборЗаписей.Отбор.Валюта.Установить(ВалютаПриемник, Истина);
-
- Наценка = ВалютаПриемник.Наценка;
-
- Пока Выборка.Следующий() Цикл
-
- НоваяЗаписьНабораКурсов = НаборЗаписей.Добавить();
- НоваяЗаписьНабораКурсов.Валюта = ВалютаПриемник;
- НоваяЗаписьНабораКурсов.Кратность = Выборка.Кратность;
- НоваяЗаписьНабораКурсов.Курс = Выборка.Курс + Выборка.Курс * Наценка / 100;
- НоваяЗаписьНабораКурсов.Период = Выборка.Период;
-
- КонецЦикла;
-
- НаборЗаписей.ДополнительныеСвойства.Вставить("ОтключитьКонтрольПодчиненныхВалют", Истина);
- НаборЗаписей.Записать();
-
-КонецПроцедуры
-
// Проверяет наличие установленного курса и кратности валюты на 1 января 1980 года.
// В случае отсутствия устанавливает курс и кратность равными единице.
//
@@ -443,6 +438,14 @@
Валюта.Код,
Валюта.Наименование);
+ СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
+ СписокОшибок = Новый Массив;
+ Для Каждого СообщениеПользователю Из СообщенияПользователю Цикл
+ СписокОшибок.Добавить(СообщениеПользователю.Текст);
+ КонецЦикла;
+ СписокОшибок = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СписокОшибок);
+ ПояснениеОЗагрузке = ?(ПустаяСтрока(ПояснениеОЗагрузке), "", Символы.ПС) + СтроковыеФункцииКлиентСервер.СтрокаИзМассиваПодстрок(СписокОшибок, Символы.ПС);
+
Возврат ПояснениеОЗагрузке;
КонецФункции
@@ -458,7 +461,8 @@
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
- | Валюты.ЗагружаетсяИзИнтернета
+ | Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)
+ | И НЕ Валюты.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Валюты.НаименованиеПолное";
@@ -524,12 +528,17 @@
Запрос.Текст =
"ВЫБРАТЬ
| СпрВалюты.Ссылка,
- | СпрВалюты.Наценка
+ | СпрВалюты.Наценка,
+ | СпрВалюты.СпособУстановкиКурса,
+ | СпрВалюты.ФормулаРасчетаКурса
|ИЗ
| Справочник.Валюты КАК СпрВалюты
|ГДЕ
- | СпрВалюты.ОсновнаяВалюта = &ВалютаБазовая";
+ | (СпрВалюты.ОсновнаяВалюта = &ВалютаБазовая
+ | ИЛИ СпрВалюты.ФормулаРасчетаКурса ПОДОБНО &СимвольныйКод)";
+
Запрос.УстановитьПараметр("ВалютаБазовая", ВалютаБазовая);
+ Запрос.УстановитьПараметр("СимвольныйКод", "%" + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВалютаБазовая, "Наименование") + "%");
ЗависимыеВалюты = Запрос.Выполнить().Выгрузить();
@@ -563,6 +572,11 @@
Обработчик.Процедура = "РаботаСКурсамиВалют.ОбновитьСведенияОВалюте937";
Обработчик.РежимВыполнения = "Монопольно";
+ Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "2.2.3.10";
+ Обработчик.Процедура = "РаботаСКурсамиВалют.ЗаполнитьСпособУстановкиКурсаВалют";
+ Обработчик.РежимВыполнения = "Монопольно";
+
КонецПроцедуры
// Обработчик обновления формата хранения прописей при переходе на более новую версию БСП
@@ -604,6 +618,22 @@
КонецЕсли;
КонецПроцедуры
+// Заполняет реквизит СпособУстановкиКурса у элементов справочника Валюты.
+Процедура ЗаполнитьСпособУстановкиКурсаВалют() Экспорт
+ Выборка = Справочники.Валюты.Выбрать();
+ Пока Выборка.Следующий() Цикл
+ Валюта = Выборка.Ссылка.ПолучитьОбъект();
+ Если Валюта.ЗагружаетсяИзИнтернета Тогда
+ Валюта.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета;
+ ИначеЕсли Не Валюта.ОсновнаяВалюта.Пустая() Тогда
+ Валюта.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты;
+ Иначе
+ Валюта.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РучнойВвод;
+ КонецЕсли;
+ Валюта.Записать();
+ КонецЦикла;
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обновление курсов валют
@@ -617,7 +647,7 @@
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
- | Валюты.ЗагружаетсяИзИнтернета = ИСТИНА
+ | Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)
| И Валюты.ПометкаУдаления = ЛОЖЬ
|;
|
@@ -649,7 +679,7 @@
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
- | Валюты.ЗагружаетсяИзИнтернета = ИСТИНА
+ | Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)
| И Валюты.ПометкаУдаления = ЛОЖЬ";
Возврат НЕ Запрос.Выполнить().Пустой();
КонецФункции
@@ -687,7 +717,7 @@
// Обработчики условных вызовов в другие подсистемы
// Обновляет связи между справочником валют и файлом поставляемых курсов
-// в зависимости от флажка ЗагружаетсяИзИнтернета
+// в зависимости от способа установки курса валют.
//
// Параметры:
// Валюта - СправочникОбъект.Валюты
diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl
index eed21016c..e2806e384 100644
--- a/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl
@@ -133,7 +133,7 @@
ПоясняющееСообщение = РаботаСКурсамиВалют.ЗагрузитьКурсВалютыИзФайла(Валюта.Валюта, Результат.Путь, НачалоПериодаЗагрузки, ОкончаниеПериодаЗагрузки) + Символы.ПС;
#КонецЕсли
УдалитьФайлы(Результат.Путь);
- СтатусОперации = Истина;
+ СтатусОперации = ПустаяСтрока(ПоясняющееСообщение);
Иначе
ПоясняющееСообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Невозможно получить файл данных с курсами валюты (%1 - %2):
diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалютПереопределяемый/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалютПереопределяемый/Module.bsl
index b42ccdd24..b09419d40 100644
--- a/SSL/src/CommonModules/РаботаСКурсамиВалютПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСКурсамиВалютПереопределяемый/Module.bsl
@@ -3,7 +3,7 @@
//
////////////////////////////////////////////////////////////////////////////////
-#Область СлужебныеПроцедурыИФункции
+#Область ПрограммныйИнтерфейс
// Включает/отключает показ предупреждений о необходимости обновления курсов валют.
//
diff --git a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl
index b9986a6cd..646afc0b4 100644
--- a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиСлужебный/Module.bsl
@@ -531,20 +531,31 @@
Результат = Неопределено;
Если Выборка.Следующий() Тогда
- СписокСвойств = "";
+ СписокСвойствIMAP = "АдресСервераIMAP,ПортIMAP,ИспользоватьSSLIMAP,ПользовательIMAP,ПарольIMAP,ТолькоЗащищеннаяАутентификацияIMAP";
+ СписокСвойствPOP3 = "АдресСервераPOP3,ПортPOP3,ИспользоватьSSLPOP3,Пользователь,Пароль,ТолькоЗащищеннаяАутентификацияPOP3";
+ СписокСвойствSMTP = "АдресСервераSMTP,ПортSMTP,ИспользоватьSSLSMTP,POP3ПередSMTP,ПользовательSMTP,ПарольSMTP,ТолькоЗащищеннаяАутентификацияSMTP";
+
+ ТребуемыеСвойства = Неопределено;
+ ИсключаемыеСвойства = Неопределено;
+
Если ДляПолучения Тогда
Если Выборка.Протокол = "IMAP" Тогда
- СписокСвойств = "АдресСервераIMAP,ПортIMAP,ИспользоватьSSLIMAP,ПользовательIMAP,ПарольIMAP,ТолькоЗащищеннаяАутентификацияIMAP";
+ ТребуемыеСвойства = СписокСвойствIMAP;
Иначе
- СписокСвойств = "АдресСервераPOP3,ПортPOP3,ИспользоватьSSLPOP3,Пользователь,Пароль,ТолькоЗащищеннаяАутентификацияPOP3";
+ ТребуемыеСвойства = СписокСвойствPOP3;
КонецЕсли;
Иначе
- СписокСвойств = "АдресСервераSMTP,ПортSMTP,ИспользоватьSSLSMTP,POP3ПередSMTP,ПользовательSMTP,ПарольSMTP,ТолькоЗащищеннаяАутентификацияSMTP";
+ ТребуемыеСвойства = СписокСвойствSMTP;
+ КонецЕсли;
+ ТребуемыеСвойства = ТребуемыеСвойства + ",Таймаут";
+
+ Если Выборка.POP3ПередSMTP Тогда
+ ТребуемыеСвойства = Неопределено;
+ ИсключаемыеСвойства = СписокСвойствIMAP;
КонецЕсли;
- СписокСвойств = СписокСвойств + ",Таймаут";
Результат = Новый ИнтернетПочтовыйПрофиль;
- ЗаполнитьЗначенияСвойств(Результат, Выборка, СписокСвойств);
+ ЗаполнитьЗначенияСвойств(Результат, Выборка, ТребуемыеСвойства, ИсключаемыеСвойства);
КонецЕсли;
Возврат Результат;
@@ -742,6 +753,7 @@
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "РаботаСПочтовымиСообщениямиСлужебный.ЗаполнитьСистемнуюУчетнуюЗапись";
+ Обработчик.Версия = "1.0.0.1";
Обработчик = Обработчики.Добавить();
Обработчик.Процедура = "РаботаСПочтовымиСообщениямиСлужебный.ЗаполнитьНовыеРеквизитыУчетныхЗаписей";
diff --git a/SSL/src/CommonModules/РаботаСФайлами/Module.bsl b/SSL/src/CommonModules/РаботаСФайлами/Module.bsl
index 01f3ad109..16752ffd5 100644
--- a/SSL/src/CommonModules/РаботаСФайлами/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайлами/Module.bsl
@@ -5,13 +5,16 @@
#Область ПрограммныйИнтерфейс
-// Создает карточку Файла в БД вместе с версией
-// Параметры
-// Владелец - владелец файла - будет установлен в реквизит ВладелецФайла у созданного файла
-// ПутьКФайлуНаДиске - Строка - полный путь (включающий имя и расширение) к файлу на диске (файл должен находиться на сервере)
+// Создает карточку Файла в БД вместе с версией.
+//
+// Параметры:
+// Владелец - Ссылка - владелец файла, который будет установлен в реквизит ВладелецФайла у созданного файла.
+//
+// ПутьКФайлуНаДиске - Строка - полный путь к файлу на диске, включающий имя и расширение файла.
+// Файл должен находиться на сервере.
//
// Возвращаемое значение:
-// СправочникСсылка.Файлы - созданный файл
+// СправочникСсылка.Файлы - созданный файл.
//
Функция СоздатьФайлНаОсновеФайлаНаДиске(Владелец, ПутьКФайлуНаДиске) Экспорт
@@ -48,7 +51,14 @@
КонецФункции
-// Обработчик события ПриЗаписи. Определен для объектов (кроме Документ), владельцев Файла.
+// Обработчик события ПередЗаписью объектов-владельцев файлов.
+// Определен для объектов, кроме Документ.
+//
+// Параметры:
+// Источник - Объект - стандартный параметр события ПередЗаписью, например, СправочникОбъект.
+// Исключение - ДокументОбъект.
+// Отказ - Булево - стандартный параметр события ПередЗаписью.
+//
Процедура УстановитьПометкуУдаленияФайловПередЗаписью(Источник, Отказ) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
@@ -61,7 +71,15 @@
КонецПроцедуры
-// Обработчик события ПриЗаписи. Определен для объектов типа Документ, владельцев Файла.
+// Обработчик события ПередЗаписью объектов-владельцев файлов.
+// Определен только для объектов Документ.
+//
+// Параметры:
+// Источник - ДокументОбъект - стандартный параметр события ПередЗаписью.
+// Отказ - Булево - стандартный параметр события ПередЗаписью.
+// РежимЗаписи - РежимЗаписиДокумента - стандартный параметр события ПередЗаписью.
+// РежимПроведения - РежимПроведенияДокумента - стандартный параметр события ПередЗаписью.
+//
Процедура УстановитьПометкуУдаленияФайловДокументовПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
@@ -74,6 +92,10 @@
КонецПроцедуры
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры и функции
@@ -108,6 +130,6 @@
ФайлОбъект.УстановитьПометкуУдаления(ПометкаУдаления);
КонецЦикла;
-КонецПроцедуры
+КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl
index 74a497f0c..83a1f0bf1 100644
--- a/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl
@@ -34,6 +34,10 @@
// Команды работы с файлами
// Открывает файл для просмотра.
+//
+// Параметры:
+// ДанныеФайла - Структура - структура с данными файла.
+//
Процедура Открыть(ДанныеФайла) Экспорт
РаботаСФайламиСлужебныйКлиент.ОткрытьФайлСОповещением(Неопределено, ДанныеФайла);
@@ -41,6 +45,10 @@
КонецПроцедуры
// Открывает каталог на локальном компьютере в котором размещен этот файл.
+//
+// Параметры:
+// ДанныеФайла - Структура - структура с данными файла.
+//
Процедура ОткрытьКаталогФайла(ДанныеФайла) Экспорт
РаботаСФайламиСлужебныйКлиент.КаталогФайла(Неопределено, ДанныеФайла);
@@ -50,29 +58,27 @@
// Создает новый файл интерактивно.
//
// Параметры:
-// ОбработчикРезультата - ОписаниеОповещения - Необязательный. Описание процедуры, принимающей результат работы метода.
-// ВладелецФайла - ЛюбаяСсылка - Необязательный. Определяет группу, в которой создается Элемент.
-// Если группа неизвестна в момент вызова этого метода - там будет Неопределено.
-// ФормаВладелец - УправляемаяФорма - Необязательный. Форма, из которой вызвано создание файла.
-// РежимСоздания - Необязательный. Режим создания файла.
-// - Неопределено - Значение по умолчанию. Показать диалог выбора режима создания файла.
+// ОбработчикРезультата - ОписаниеОповещения - Необязательный. Описание процедуры, принимающей
+// результат работы метода.
+//
+// ВладелецФайла - ЛюбаяСсылка - определяет группу, в которой создается Элемент.
+// Если группа неизвестна в момент вызова этого метода - там будет Неопределено.
+//
+// ФормаВладелец - УправляемаяФорма - форма, из которой вызвано создание файла.
+//
+// РежимСоздания - режим создания файла:
+// - Неопределено - значение по умолчанию. Показать диалог выбора режима создания файла.
// - Число - Создать файл указанным способом:
// * 1 - из шаблона (копированием другого файла),
// * 2 - с диска (из файловой системы клиента),
// * 3 - со сканера.
-// НеОткрыватьКарточку - Булево - Необязательный. Действие после создания.
+//
+// НеОткрыватьКарточку - Булево - действие после создания:
// * Ложь - Значение по умолчанию. Открывать карточку файла после создания.
// * Истина - Не открывать карточку файла после создания.
//
-// Возвращаемое значение:
-// Неопределено
-//
-Процедура ДобавитьФайл(
- ОбработчикРезультата = Неопределено,
- ВладелецФайла = Неопределено,
- ФормаВладелец = Неопределено,
- РежимСоздания = Неопределено,
- НеОткрыватьКарточку = Ложь) Экспорт
+Процедура ДобавитьФайл(ОбработчикРезультата = Неопределено, ВладелецФайла = Неопределено,
+ ФормаВладелец = Неопределено, РежимСоздания = Неопределено, НеОткрыватьКарточку = Ложь) Экспорт
Если РежимСоздания = Неопределено Тогда
РаботаСФайламиСлужебныйКлиент.ДобавитьФайл(ОбработчикРезультата, ВладелецФайла, ФормаВладелец, , НеОткрыватьКарточку);
@@ -98,34 +104,34 @@
КонецПроцедуры
// Задает вопрос о продолжении закрытия формы если в форме остались захваченные файлы.
-// Вызывается из ПередЗакрытием форм с файлами.
+// Вызывается из ПередЗакрытием форм с файлами.
+//
+// По ссылке объекта проверяет остались ли захваченные файлы.
+// Если захваченные файлы остались:
+// - В параметре Отказ устанавливается значение Истина,
+// - Пользователю задается вопрос.
+// Если пользователь ответил утвердительно, тогда форма снова закрывается.
//
// Параметры:
-// Форма - УправляемаяФорма - Форма, в которой можно редактировать файл.
-// Отказ - Булево - Параметр события ПередЗакрытием.
-// ОбъектСсылка - ЛюбаяСсылка - Ссылка владельца файла.
-// ИмяРеквизита - Строка - Необязательный. Имя реквизита типа Булево,
-// в котором хранится признак того, что вопрос уже выводился.
+// Форма - УправляемаяФорма - форма, в которой можно редактировать файл.
+// Отказ - Булево - параметр события ПередЗакрытием.
+// ОбъектСсылка - ЛюбаяСсылка - ссылка на владельца файла.
+// ИмяРеквизита - Строка - имя реквизита типа Булево, в котором хранится признак того,
+// что вопрос уже выводился.
//
-// Описание:
-// По ссылке объекта проверяет остались ли захваченные файлы.
-// Если захваченные файлы остались:
-// - В параметре Отказ устанавливается значение Истина,
-// - Пользователю задается вопрос.
-// Если пользователь ответил утвердительно, тогда форма снова закрывается.
-//
-// Например:
-// &НаКлиенте
-// Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
-// РаботаСФайламиКлиент.ПоказатьПодтверждениеЗакрытияФормыСФайлами(ЭтотОбъект, Отказ, Объект.Ссылка);
-// // <Если есть другой код:>
-// Если Отказ Тогда
-// Возврат;
-// КонецЕсли;
-// // <Другой прикладной код...>
-// КонецПроцедуры
+// Пример:
+// &НаКлиенте
+// Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
+// РаботаСФайламиКлиент.ПоказатьПодтверждениеЗакрытияФормыСФайлами(ЭтотОбъект, Отказ, Объект.Ссылка);
+// // <Если есть другой код:>
+// Если Отказ Тогда
+// Возврат;
+// КонецЕсли;
+// // <Другой прикладной код...>
+// КонецПроцедуры
//
Процедура ПоказатьПодтверждениеЗакрытияФормыСФайлами(Форма, Отказ, ОбъектСсылка, ИмяРеквизита = "МожноЗакрытьФормуСФайлами") Экспорт
+
Если Форма[ИмяРеквизита] Тогда
Возврат;
КонецЕсли;
@@ -140,6 +146,7 @@
|
|Продолжить?'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(Форма, Отказ, ТекстВопроса, ИмяРеквизита);
+
КонецПроцедуры
// Копирует существующий файл.
diff --git a/SSL/src/CommonModules/РаботаСФайламиКлиентПереопределяемый/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиКлиентПереопределяемый/Module.bsl
index 1694dd4f6..84d95cc43 100644
--- a/SSL/src/CommonModules/РаботаСФайламиКлиентПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайламиКлиентПереопределяемый/Module.bsl
@@ -5,10 +5,11 @@
#Область ПрограммныйИнтерфейс
-// Вызывается при ошибке захвате файла
-// Параметры
-// ДанныеФайла - Структура - структура с данными файла
-// СтандартнаяОбработка - Булево - уникальный идентификатор формы
+// Вызывается при ошибке захвате файла.
+//
+// Параметры:
+// ДанныеФайла - Структура - структура с данными файла.
+// СтандартнаяОбработка - Булево - уникальный идентификатор формы.
//
Процедура ПриОшибкеЗахватаФайла(ДанныеФайла, СтандартнаяОбработка) Экспорт
diff --git a/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl
index f71952c33..4eed85997 100644
--- a/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl
@@ -5,7 +5,16 @@
#Область ПрограммныйИнтерфейс
-// Определяет, можно ли занять файл и, если нет, то формирует строку ошибки
+// Определяет, можно ли занять файл и, если нет, то формирует строку ошибки.
+//
+// Параметры:
+// ДанныеФайла - Структура - структура с данными файла.
+// СтрокаОшибки - Строка - (возвращаемое значение) - если файл занять нельзя,
+// тогда содержит описание ошибки.
+//
+// Возвращаемое значение:
+// Булево - если Истина, тогда текущий пользователь может занять файл или
+// файл уже занят текущим пользователем.
//
Функция МожноЛиЗанятьФайл(ДанныеФайла, СтрокаОшибки = "") Экспорт
@@ -39,17 +48,17 @@
// Создает элемент справочника Файлы
Функция СоздатьЭлементСправочникаФайлы(
- ВыбранныйФайл,
- МассивСтруктурВсехФайлов,
- Владелец,
- ИдентификаторФормы,
- Комментарий,
- ХранитьВерсии,
- ДобавленныеФайлы,
- АдресВременногоХранилищаФайла,
- АдресВременногоХранилищаТекста,
- Пользователь = Неопределено,
- Кодировка = Неопределено) Экспорт
+ ВыбранныйФайл,
+ МассивСтруктурВсехФайлов,
+ Владелец,
+ ИдентификаторФормы,
+ Комментарий,
+ ХранитьВерсии,
+ ДобавленныеФайлы,
+ АдресВременногоХранилищаФайла,
+ АдресВременногоХранилищаТекста,
+ Пользователь = Неопределено,
+ Кодировка = Неопределено) Экспорт
ИмяБезРасширения = ВыбранныйФайл.ИмяБезРасширения;
Расширение = ВыбранныйФайл.Расширение;
@@ -91,6 +100,14 @@
КонецФункции
// Получает имя сканированного файла, вида ДМ-00000012, где ДМ - префикс базы
+//
+// Параметры:
+// НомерФайла - Число - целое число, например, 12.
+// ПрефиксБазы - Строка - префикс базы, например, "ДМ".
+//
+// Возвращаемое значение:
+// Строка - имя сканированного файла, например, "ДМ-00000012".
+//
Функция ПолучитьИмяСканированногоФайла(НомерФайла, ПрефиксБазы) Экспорт
ИмяФайла = "";
@@ -102,6 +119,6 @@
Возврат ИмяФайла;
-КонецФункции
+КонецФункции
#КонецОбласти
diff --git a/SSL/src/CommonModules/РаботаСФайламиПереопределяемый/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиПереопределяемый/Module.bsl
index 26beb835f..bf1dc1ce1 100644
--- a/SSL/src/CommonModules/РаботаСФайламиПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайламиПереопределяемый/Module.bsl
@@ -8,57 +8,70 @@
// Можно ли занять данный файл.
//
// Параметры:
-// ДанныеФайла - Структура с данными файла.
-// СтрокаОшибки - строка, содержащая текст ошибки в случае невозможности занять.
+// ДанныеФайла - Структура - с данными файла.
+// ОписаниеОшибки - Строка - содержащая текст ошибки в случае невозможности занять.
+// Если не пустая, тогда файл невозможно занять.
//
-// Возвращаемое значение:
-// Булево.
-Функция ВозможноЗанятьФайл(ДанныеФайла, СтрокаОшибки = "") Экспорт
+Процедура ПриПопыткеЗанятьФайл(ДанныеФайла, ОписаниеОшибки = "") Экспорт
- Возврат Истина;
-КонецФункции
-
-// Вызывается при создании файла
-// Параметры
-// ДанныеФайла - СправочникСсылка.Файлы - ссылка на созданный файл
-// см. функцию РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайла()
-//
-Процедура ПриСозданииФайла(ДанныеФайла) Экспорт
КонецПроцедуры
-// Вызывается после копирования файла из исходного файла
-// для заполнения таких реквизитов нового файла, которые не
-// предусмотрены в БСП и были добавлены к справочнику Файлы или
-// ВерсииФайлов в конфигурации.
+// Вызывается при создании файла.
//
// Параметры:
-// НовыйФайл - СправочникСсылка.Файлы - ссылка на новый файл, который надо заполнить
-// ИсходныйФайл - СправочникСсылка.Файлы - ссылка на исходный файл, откуда надо скопировать реквизиты
+// Файл - СправочникСсылка.Файлы - ссылка на созданный файл.
+//
+Процедура ПриСозданииФайла(Файл) Экспорт
+
+КонецПроцедуры
+
+// Вызывается после копирования файла из исходного файла для заполнения таких реквизитов нового файла,
+// которые не предусмотрены в БСП и были добавлены к справочнику Файлы или ВерсииФайлов в конфигурации.
+//
+// Параметры:
+// НовыйФайл - СправочникСсылка.Файлы - ссылка на новый файл, который надо заполнить.
+// ИсходныйФайл - СправочникСсылка.Файлы - ссылка на исходный файл, откуда надо скопировать реквизиты.
//
Процедура ЗаполнитьРеквизитыФайлаИзИсходногоФайла(НовыйФайл, ИсходныйФайл) Экспорт
КонецПроцедуры
-// Вызывается при захвате файла
-// Параметры
-// ДанныеФайла - структура, содержащая сведения о Файле
-// см. функцию РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайла()
-// УникальныйИдентификатор - уникальный идентификатор формы
+// Вызывается при захвате файла.
+//
+// Параметры:
+// ДанныеФайла - Структура - содержащая сведения о файле
+// см. функцию РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайла().
+//
+// УникальныйИдентификатор - уникальный идентификатор формы.
//
Процедура ПриЗахватеФайла(ДанныеФайла, УникальныйИдентификатор) Экспорт
КонецПроцедуры
-// Вызывается при освобождении файла
-// Параметры
-// ДанныеФайла - структура, содержащая сведения о Файле
-// см. функцию РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайла()
-// УникальныйИдентификатор - уникальный идентификатор формы
+// Вызывается при освобождении файла.
+//
+// Параметры:
+// ДанныеФайла - Структура - содержащая сведения о файле
+// см. функцию РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайла().
+//
+// УникальныйИдентификатор - уникальный идентификатор формы.
//
Процедура ПриОсвобожденииФайла(ДанныеФайла, УникальныйИдентификатор) Экспорт
КонецПроцедуры
#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+// Устарела. Будет удалена в следующей редакции БСП.
+// Следует использовать процедуру ПриПопыткеЗанятьФайл.
+Функция ВозможноЗанятьФайл(ДанныеФайла, СтрокаОшибки = "") Экспорт
+
+ Возврат Истина;
+
+КонецФункции
+
+#КонецОбласти
diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl
index 9b1138b9e..94ae27a2c 100644
--- a/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl
@@ -39,7 +39,7 @@
"РаботаСФайламиСлужебный");
СерверныеОбработчики["СтандартныеПодсистемы.ФайловыеФункции\ПриОпределенииТекстаЗапросаДляИзвлеченияТекста"].Добавить(
- "РаботаСФайламиСлужебный");
+ "РаботаСФайламиСлужебныйВызовСервера");
СерверныеОбработчики["СтандартныеПодсистемы.ФайловыеФункции\ПриОпределенииКоличестваВерсийСНеизвлеченнымТекстом"].Добавить(
"РаботаСФайламиСлужебный");
@@ -648,14 +648,6 @@
КонецПроцедуры
-// Возвращает текст запроса для извлечения текста
-//
-Процедура ПриОпределенииТекстаЗапросаДляИзвлеченияТекста(ТекстЗапроса, ПолучитьВсеФайлы = Ложь) Экспорт
-
- РаботаСФайламиСлужебныйВызовСервера.ПолучитьТекстЗапросаДляИзвлеченияТекста(ТекстЗапроса, ПолучитьВсеФайлы);
-
-КонецПроцедуры
-
// Возвращает число файлов с неизвлеченным текстом
//
Процедура ПриОпределенииКоличестваВерсийСНеизвлеченнымТекстом(ЧислоВерсий) Экспорт
@@ -670,7 +662,7 @@
Процедура ПриЗаписиИзвлеченногоТекста(ФайлОбъект) Экспорт
Если ЭтоЭлементРаботаСФайлами(ФайлОбъект) Тогда
- РаботаСФайламиСлужебныйВызовСервера.ЗаписатьИзвлеченныйТекст(ФайлОбъект);
+ РаботаСФайламиСлужебныйВызовСервера.ПриЗаписиИзвлеченногоТекста(ФайлОбъект);
КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl
index b8d726ff7..d9b8c7f14 100644
--- a/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl
@@ -128,11 +128,14 @@
//
Функция ЗанятьФайл(ДанныеФайла, СтрокаОшибки = "", УникальныйИдентификатор = Неопределено) Экспорт
- ВозможноЗанять = Истина;
- ВозможноЗанять = РаботаСФайламиПереопределяемый.ВозможноЗанятьФайл(ДанныеФайла, СтрокаОшибки);
+ Если Не РаботаСФайламиПереопределяемый.ВозможноЗанятьФайл(ДанныеФайла, СтрокаОшибки) Тогда
+ Возврат Ложь;
+ КонецЕсли;
- Если Не ВозможноЗанять Тогда
+ ОписаниеОшибки = "";
+ РаботаСФайламиПереопределяемый.ПриПопыткеЗанятьФайл(ДанныеФайла, ОписаниеОшибки);
+ Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
Возврат Ложь;
КонецЕсли;
@@ -4234,11 +4237,19 @@
КонецПроцедуры
-// Получает текст запроса для извлечения текста
-// Параметры
-// ТекстЗапроса - Строка - текст запроса для извлечения текста
+// Заполняет текст запроса для получения файлов у которых не извлечен текст.
+// В качестве параметра может прийти другой запрос, с которым следует сделать объединение.
//
-Процедура ПолучитьТекстЗапросаДляИзвлеченияТекста(ТекстЗапроса, ПолучитьВсеФайлы = Ложь) Экспорт
+// Параметры:
+// ТекстЗапроса - Строка (возвращаемое значение), варианты передаваемых значений:
+// Пустая строка - будет возвращен требуемый текст запроса.
+// Непустая строка - будет возвращен требуемый текст запроса, добавленный
+// к переданному тексту посредством "ОБЪЕДИНИТЬ ВСЕ".
+//
+// ПолучитьВсеФайлы - Булево - начальное значение Ложь. Позволяет отключить выборку
+// файлов по частям, если передать Истина.
+//
+Процедура ПриОпределенииТекстаЗапросаДляИзвлеченияТекста(ТекстЗапроса, ПолучитьВсеФайлы = Ложь) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 100
@@ -4296,7 +4307,7 @@
// Параметры:
// ТекущаяВерсия - СправочникСсылка.ВерсииФайлов - версия файла.
//
-Процедура ЗаписатьИзвлеченныйТекст(ТекущаяВерсия) Экспорт
+Процедура ПриЗаписиИзвлеченногоТекста(ТекущаяВерсия) Экспорт
ФайлЗаблокирован = Ложь;
@@ -4312,11 +4323,13 @@
НачатьТранзакцию();
Попытка
+ ТекущаяВерсия.ОбменДанными.Загрузка = Истина;
ТекущаяВерсия.Записать();
Если Файл.ТекущаяВерсия = ТекущаяВерсия.Ссылка Тогда
ФайлОбъект = Файл.ПолучитьОбъект();
ФайлОбъект.ТекстХранилище = ТекущаяВерсия.ТекстХранилище;
+ ФайлОбъект.ОбменДанными.Загрузка = Истина;
ФайлОбъект.Записать();
КонецЕсли;
diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl
index 4335cc2d8..e8a475b98 100644
--- a/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl
+++ b/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl
@@ -22,8 +22,13 @@
КонецПроцедуры
-// Добавляет предупреждения пользователю при завершении работы программы.
+// Формирует список предупреждений для пользователя при завершении работы программы.
+//
+// Параметры:
+// см. ПриПолученииСпискаПредупрежденийЗавершенияРаботы
+//
Процедура ПриЗавершенииРаботыСистемы(Предупреждения) Экспорт
+
Ответ = ПроверитьЗанятыеФайлыПриЗавершенииРаботы();
Если Ответ = Неопределено Тогда
Возврат;
@@ -33,40 +38,34 @@
Возврат;
КонецЕсли;
- // Инициализация формы индивидуального открытия и ее параметров.
+ ПредупреждениеПользователю = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы();
+ ПредупреждениеПользователю.ТекстГиперссылки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Открыть список редактируемых файлов (%1)'"),
+ Ответ.КоличествоЗанятыхФайлов);
+
+ ДействиеПриНажатииГиперссылки = ПредупреждениеПользователю.ДействиеПриНажатииГиперссылки;
+
ПрикладнаяФормаПредупреждения = Неопределено;
Ответ.Свойство("ПрикладнаяФормаПредупреждения", ПрикладнаяФормаПредупреждения);
ПараметрыПрикладнойФормыПредупреждения = Неопределено;
Ответ.Свойство("ПараметрыПрикладнойФормыПредупреждения", ПараметрыПрикладнойФормыПредупреждения);
- // Инициализация формы открытия из списка и ее параметров.
Форма = Неопределено;
Ответ.Свойство("Форма", Форма);
ПараметрыФормы = Неопределено;
Ответ.Свойство("ПараметрыФормы", ПараметрыФормы);
- КоличествоЗанятыхФайлов = Ответ.КоличествоЗанятыхФайлов;
-
- ТекстГиперСсылки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Открыть список редактируемых файлов (%1)'"),
- КоличествоЗанятыхФайлов);
-
- ДействиеПриНажатииГиперссылки = Новый Структура;
Если ПрикладнаяФормаПредупреждения <> Неопределено Тогда
- ДействиеПриНажатииГиперссылки.Вставить("ПрикладнаяФормаПредупреждения", ПрикладнаяФормаПредупреждения);
- ДействиеПриНажатииГиперссылки.Вставить("ПараметрыПрикладнойФормыПредупреждения", ПараметрыПрикладнойФормыПредупреждения);
+ ДействиеПриНажатииГиперссылки.ПрикладнаяФормаПредупреждения = ПрикладнаяФормаПредупреждения;
+ ДействиеПриНажатииГиперссылки.ПараметрыПрикладнойФормыПредупреждения = ПараметрыПрикладнойФормыПредупреждения;
КонецЕсли;
Если Форма <> Неопределено Тогда
- ДействиеПриНажатииГиперссылки.Вставить("Форма", Форма);
- ДействиеПриНажатииГиперссылки.Вставить("ПараметрыФормы", ПараметрыФормы);
+ ДействиеПриНажатииГиперссылки.Форма = Форма;
+ ДействиеПриНажатииГиперссылки.ПараметрыФормы = ПараметрыФормы;
КонецЕсли;
- ПредупреждениеПользователю = Новый Структура;
- ПредупреждениеПользователю.Вставить("ТекстГиперСсылки", ТекстГиперСсылки);
- ПредупреждениеПользователю.Вставить("ДействиеПриНажатииГиперссылки", ДействиеПриНажатииГиперссылки);
- ПредупреждениеПользователю.Вставить("Приоритет", 70);
-
Предупреждения.Добавить(ПредупреждениеПользователю);
+
КонецПроцедуры
#КонецОбласти
@@ -503,12 +502,29 @@
ПомещаемыеФайлы.Добавить(Описание);
ПомещенныеФайлы = Новый Массив;
- ФайлыПомещены = ПоместитьФайлы(
+ Попытка
+ ФайлыПомещены = ПоместитьФайлы(
ПомещаемыеФайлы,
ПомещенныеФайлы,
,
Интерактивно,
ПараметрыВыполнения.ИдентификаторФормы);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+
+ ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Не удалось поместить файл в хранилище файлов по причине:
+ |""%1"".
+ |
+ |Повторить операцию?'"),
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
+
+ Оповещение = Новый ОписаниеОповещения("ЗакончитьРедактированиеСРасширениемПослеПроверкиЗашифрованПовтор", ЭтотОбъект, ПараметрыВыполнения);
+ ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ПовторитьОтмена);
+ Возврат;
+ КонецПопытки;
+
+
Состояние();
Если Не ФайлыПомещены Тогда
ВернутьРезультат(ПараметрыВыполнения.ОбработчикРезультата, Ложь);
@@ -609,6 +625,15 @@
КонецПроцедуры
+// Продолжение процедуры (см. выше).
+//
+Процедура ЗакончитьРедактированиеСРасширениемПослеПроверкиЗашифрованПовтор(Результат, Параметр) Экспорт
+ Если Результат = КодВозвратаДиалога.Повторить Тогда
+ ЗакончитьРедактированиеСРасширениемПослеПроверкиЗашифрован(Параметр);
+ КонецЕсли;
+КонецПроцедуры
+
+
// Продолжение процедуры (см. выше).
Процедура ЗакончитьРедактированиеСРасширениемПослеУдаленияФайлаИзРабочегоКаталога(Результат, ПараметрыВыполнения) Экспорт
@@ -1198,6 +1223,8 @@
КонецЕсли;
КонецЕсли;
+ ПараметрыВыполнения.Вставить("РедактируетТекущийПользователь", ПараметрыВыполнения.ДанныеФайла.РедактируетТекущийПользователь);
+
Если Не ПараметрыВыполнения.ДанныеФайла.РедактируетТекущийПользователь Тогда
ТекстОшибки = "";
@@ -1242,7 +1269,7 @@
ПереданныйПолныйПутьКФайлу = "";
Обработчик = Новый ОписаниеОповещения("ОбновитьИзФайлаНаДискеПослеЗавершенияРедактирования", ЭтотОбъект, ПараметрыВыполнения);
- Если ПараметрыВыполнения.ДанныеФайла.РедактируетТекущийПользователь Тогда // Файл уже был занят.
+ Если ПараметрыВыполнения.РедактируетТекущийПользователь Тогда // Файл уже был занят.
ОпубликоватьФайл(
Обработчик,
ПараметрыВыполнения.ДанныеФайла.Ссылка,
@@ -7345,7 +7372,12 @@
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяОткрываемогоФайла);
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
+ #Если ТолстыйКлиентОбычноеПриложение Тогда
+ ТабличныйДокумент = Новый ТабличныйДокумент;
+ ТабличныйДокумент.Прочитать(ИмяОткрываемогоФайла);
+ #Иначе
ТабличныйДокумент = ФайловыеФункцииСлужебныйВызовСервера.ТабличныйДокументИзВременногоХранилища(Адрес);
+ #КонецЕсли
ЗаголовокСтрока = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(
ДанныеФайла.ПолноеНаименованиеВерсии, ДанныеФайла.Расширение);
@@ -7673,22 +7705,8 @@
// Доопределяет список предупреждений пользователю перед завершением работы системы.
//
// Параметры:
-// Предупреждения - Массив, в который можно добавить элементы типа Структура с полями:
-// ТекстФлажка - Строка - текст флажка.
-// ПоясняющийТекст - Строка - текст, выводимый в форме сверху
-// управляющего элемента (флажок или гиперссылка).
-// ТекстГиперссылки - Строка - текст гиперссылки.
-// ДействиеПриУстановленномФлажке - Структура с полями:
-// Форма - путь к открываемой форме.
-// ПараметрыФормы - произвольная структура параметров формы Форма.
-// ДействиеПриНажатииГиперссылки - Структура с полями:
-// Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку.
-// ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы.
-// ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу
-// вместо универсальной формы в случае, когда в списке
-// предупреждений оказывается только одно данное предупреждение.
-// ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура
-// параметров для вышеописанной формы.
+// Предупреждения - Массив - в массив можно добавить элементы типа Структура,
+// свойства которой см. в СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы.
//
Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт
diff --git a/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl b/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl
index aca67410b..fef3de037 100644
--- a/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl
+++ b/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl
@@ -251,8 +251,8 @@
// Дополнительно используется для определения принадлежности отчета к СКД.
// - ПользовательскиеНастройкиКомпоновкиДанных - Табличный документ сформируется механизмами СКД.
// - Структура - Табличный документ сформируется при помощи метода "Сформировать()".
-// *** Ключ - Строка - Имя реквизита объекта отчета
-// *** Значение - * - Значение реквизита объекта отчета
+// *** Ключ - Строка - Имя реквизита объекта отчета
+// *** Значение - Произвольный - Значение реквизита объекта отчета
// - Неопределено - Настройки по умолчанию. Для определения принадлежности к СКД
// будет использован реквизит объекта "СхемаКомпоновкиДанных".
// * Форматы - Массив из ПеречислениеСсылка.ФорматыСохраненияОтчетов -
@@ -453,7 +453,7 @@
ПараметрыДоставки.ВыполненаПоЭлектроннойПочте = Истина;
Исключение
ЗаписьЖурнала(ПараметрыЖурнала, ,
- НСтр("ru = 'Ошибка отправки отчетов получателю %1:'"), ИнформацияОбОшибке(),
+ НСтр("ru = 'Не удалось отправить отчеты получателю %1:'"), ИнформацияОбОшибке(),
"'"+ Строка(СтрокаПолучатель.Ключ) +"'");
КонецПопытки;
@@ -687,13 +687,13 @@
ТекстСообщения = "";
Для Каждого СтрокаТаблицы Из ТаблицаРассылок Цикл
Если НЕ СтрокаТаблицы.Подготовлена Тогда
- ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" не подготовлена'");
+ ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" не подготовлена.'");
ИначеЕсли НЕ СтрокаТаблицы.Выполнена Тогда
- ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" не выполнена'");
+ ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" не выполнена.'");
ИначеЕсли СтрокаТаблицы.СОшибками Тогда
- ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" выполнена с ошибками'");
+ ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" выполнена с ошибками.'");
Иначе
- ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" выполнена'");
+ ШаблонСообщения = НСтр("ru = 'Рассылка ""%1"" выполнена.'");
КонецЕсли;
ШаблонСообщения = СтрЗаменить(ШаблонСообщения, "%1", СтрокаТаблицы.Представление);
@@ -806,6 +806,9 @@
Если Не ЗначениеЗаполнено(Форма.ВариантСсылка) Тогда
Возврат;
КонецЕсли;
+ Если Не ПравоДоступа("Изменение", Метаданные.Справочники.РассылкиОтчетов) Тогда
+ Возврат;
+ КонецЕсли;
// Добавление команд и кнопок
КомандаСоздать = Форма.Команды.Добавить("РассылкаОтчетовСоздатьНовую");
@@ -1266,9 +1269,6 @@
КомпоновщикНастроекКД.ЗагрузитьПользовательскиеНастройки(ПараметрыОтчета.Настройки);
КонецЕсли;
- //// Восстановление работоспособности настроек
- //КомпоновщикНастроекКД.Восстановить();
-
// Персональные отборы
Если ПерсонализацияВозможна Тогда
ПользовательскиеНастройкиКД = КомпоновщикНастроекКД.ПользовательскиеНастройки;
@@ -1618,10 +1618,10 @@
Если ПараметрыДоставки.ИспользоватьЭлектроннуюПочту Тогда
Если ПараметрыДоставки.ТолькоУведомить Тогда
- ШаблонСообщенияОбОшибке = НСтр("ru = 'Ошибка отправки уведомлений по электронной почте:'");
+ ШаблонСообщенияОбОшибке = НСтр("ru = 'Невозможно отправить уведомление о рассылке по электронной почте:'");
ВложенияПисьма = Новый Соответствие;
Иначе
- ШаблонСообщенияОбОшибке = НСтр("ru = 'Ошибка отправки отчетов по электронной почте:'");
+ ШаблонСообщенияОбОшибке = НСтр("ru = 'Невозможно отправить отчет по электронной почте:'");
ВложенияПисьма = Вложения;
КонецЕсли;
@@ -1839,7 +1839,7 @@
СтрокаОтчет.Значение = Результат.ТабДок;
СтрокаОтчет.Настройки = ПараметрыОтчета;
- ПредставлениеОтчета = СокрЛП(СтрокаОтчет.Ключ) + " ([ПредставлениеФорматов])";
+ ПредставлениеОтчета = СокрЛП(СтрокаОтчет.Ключ);// + " ([ПредставлениеФорматов])";
// Сохранение табличного документа в форматы
ПредставлениеФорматов = "";
diff --git a/SSL/src/CommonModules/РегламентированныеДанныеКлиентСервер/Module.bsl b/SSL/src/CommonModules/РегламентированныеДанныеКлиентСервер/Module.bsl
index c232a3e7a..ef19dbdc4 100644
--- a/SSL/src/CommonModules/РегламентированныеДанныеКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/РегламентированныеДанныеКлиентСервер/Module.bsl
@@ -260,12 +260,11 @@
// ПроверяемыйКод - Строка - проверяемый код ОКПО;
// ЭтоЮрЛицо - Булево - признак, является ли владелец кода ОКПО юридическим лицом;
// ТекстСообщения - Строка - текст сообщения о найденных ошибках в проверяемом коде ОКПО;
-// ОтбрасыватьВедущиеНули - Булево - (не используется) признак необходимости проверки кода физического лица без ведущих нулей.
//
// Возвращаемое значение:
// Булево.
//
-Функция КодПоОКПОСоответствуетТребованиям(Знач ПроверяемыйКод, ЭтоЮрЛицо, ТекстСообщения = "", ОтбрасыватьВедущиеНули = Ложь) Экспорт
+Функция КодПоОКПОСоответствуетТребованиям(Знач ПроверяемыйКод, ЭтоЮрЛицо, ТекстСообщения = "") Экспорт
ПроверяемыйКод = СокрЛП(ПроверяемыйКод);
ТекстСообщения = "";
diff --git a/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl b/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl
index 5fd0ffd31..fa26ed97e 100644
--- a/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl
+++ b/SSL/src/CommonModules/РегламентныеЗаданияСервер/Module.bsl
@@ -6,18 +6,17 @@
#Область ПрограммныйИнтерфейс
// Возвращает использование регламентного задания.
-// Перед вызовом требуется иметь право Администрирования
-// или УстановитьПривилегированныйРежим.
+// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим.
//
// Параметры:
-// Идентификатор - ОбъектМетаданных регламентного задания для поиска
+// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска
// предопределенного регламентного задания.
-// - УникальныйИдентификатор регламентного задания.
-// - Строка уникального идентификатора регламентного задания.
-// - РегламентноеЗадание.
+// - УникальныйИдентификатор - идентификатор регламентного задания.
+// - Строка - строка уникального идентификатора регламентного задания.
+// - РегламентноеЗадание - регламентное задание.
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, регламентное задание используется.
//
Функция ПолучитьИспользованиеРегламентногоЗадания(Знач Идентификатор) Экспорт
@@ -31,17 +30,16 @@
КонецФункции
// Устанавливает использование регламентного задания.
-// Перед вызовом требуется иметь право Администрирования
-// или УстановитьПривилегированныйРежим.
+// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим.
//
// Параметры:
-// Идентификатор - ОбъектМетаданных регламентного задания для поиска
+// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска
// предопределенного регламентного задания.
-// - УникальныйИдентификатор регламентного задания.
-// - Строка уникального идентификатора регламентного задания.
-// - РегламентноеЗадание.
+// - УникальныйИдентификатор - идентификатор регламентного задания.
+// - Строка - строка уникального идентификатора регламентного задания.
+// - РегламентноеЗадание - регламентное задание.
//
-// Использование - Булево.
+// Использование - Булево - значение использования которое нужно установить.
//
Процедура УстановитьИспользованиеРегламентногоЗадания(Знач Идентификатор, Знач Использование) Экспорт
@@ -59,21 +57,20 @@
КонецПроцедуры
// Возвращает расписание регламентного задания.
-// Перед вызовом требуется иметь право Администрирования
-// или УстановитьПривилегированныйРежим.
+// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим.
//
// Параметры:
-// Идентификатор - ОбъектМетаданных регламентного задания для поиска
+// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска
// предопределенного регламентного задания.
-// - УникальныйИдентификатор регламентного задания.
-// - Строка уникального идентификатора регламентного задания.
-// - РегламентноеЗадание.
+// - УникальныйИдентификатор - идентификатор регламентного задания.
+// - Строка - строка уникального идентификатора регламентного задания.
+// - РегламентноеЗадание - регламентное задание.
//
-// ВСтруктуре - Булево, если Истина, тогда расписание будет преобразовано
+// ВСтруктуре - Булево - если Истина, тогда расписание будет преобразовано
// в структуру, которую можно передать на клиент.
//
// Возвращаемое значение:
-// Булево.
+// РасписаниеРегламентногоЗадания, Структура - структура содержит те же свойства, что и расписание.
//
Функция ПолучитьРасписаниеРегламентногоЗадания(Знач Идентификатор, Знач ВСтруктуре = Ложь) Экспорт
@@ -91,19 +88,18 @@
КонецФункции
// Устанавливает расписание регламентного задания.
-// Перед вызовом требуется иметь право Администрирования
-// или УстановитьПривилегированныйРежим.
+// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим.
//
// Параметры:
-// Идентификатор - ОбъектМетаданных регламентного задания для поиска
+// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска
// предопределенного регламентного задания.
-// - УникальныйИдентификатор регламентного задания.
-// - Строка уникального идентификатора регламентного задания.
-// - РегламентноеЗадание.
+// - УникальныйИдентификатор - идентификатор регламентного задания.
+// - Строка - строка уникального идентификатора регламентного задания.
+// - РегламентноеЗадание - регламентное задание.
//
-// Расписание - РасписаниеРегламентногоЗадания.
-// - Структура расписания, как возвращает функция
-// ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру.
+// Расписание - РасписаниеРегламентногоЗадания - расписание.
+// - Структура - значение возвращаемое функцией РасписаниеВСтруктуру
+// общего модуля ОбщегоНазначенияКлиентСервер.
//
Процедура УстановитьРасписаниеРегламентногоЗадания(Знач Идентификатор, Знач Расписание) Экспорт
@@ -125,15 +121,15 @@
// Возвращает РегламентноеЗадание из информационной базы.
//
// Параметры:
-// Идентификатор - ОбъектМетаданных регламентного задания для поиска
+// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска
// предопределенного регламентного задания.
-// - УникальныйИдентификатор регламентного задания.
-// - Строка уникального идентификатора регламентного задания.
-// - РегламентноеЗадание из которого нужно получить уникальный
-// идентификатор для получения свежей копии регламентного задания.
+// - УникальныйИдентификатор - идентификатор регламентного задания.
+// - Строка - строка уникального идентификатора регламентного задания.
+// - РегламентноеЗадание - регламентное задание из которого нужно получить
+// уникальный идентификатор для получения свежей копии регламентного задания.
//
// Возвращаемое значение:
-// РегламентноеЗадание, прочитанное из базы данных.
+// РегламентноеЗадание - прочитано из базы данных.
//
Функция ПолучитьРегламентноеЗадание(Знач Идентификатор) Экспорт
diff --git a/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl
index f6fbe955f..6bb4db9f1 100644
--- a/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl
+++ b/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl
@@ -67,22 +67,8 @@
// Доопределяет список предупреждений пользователю перед завершением работы системы.
//
// Параметры:
-// Предупреждения - Массив, в который можно добавить элементы типа Структура с полями:
-// ТекстФлажка - Строка - текст флажка.
-// ПоясняющийТекст - Строка - текст, выводимый в форме сверху
-// управляющего элемента (флажок или гиперссылка).
-// ТекстГиперссылки - Строка - текст гиперссылки.
-// ДействиеПриУстановленномФлажке - Структура с полями:
-// Форма - путь к открываемой форме.
-// ПараметрыФормы - произвольная структура параметров формы Форма.
-// ДействиеПриНажатииГиперссылки - Структура с полями:
-// Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку.
-// ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы.
-// ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу
-// вместо универсальной формы в случае, когда в списке
-// предупреждений оказывается только одно данное предупреждение.
-// ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура
-// параметров для вышеописанной формы.
+// Предупреждения - Массив - в массив можно добавить элементы типа Структура,
+// свойства которой см. в СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы.
//
Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт
@@ -100,15 +86,17 @@
Возврат;
КонецЕсли;
- ТекстФлажка = НСтр("ru = 'Выполнить резервное копирование'");
+ ПараметрыПредупреждения = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы();
+ ПараметрыПредупреждения.ТекстФлажка = НСтр("ru = 'Выполнить резервное копирование'");
+ ПараметрыПредупреждения.Приоритет = 50;
+
+ ДействиеПриУстановленномФлажке = ПараметрыПредупреждения.ДействиеПриУстановленномФлажке;
+ ДействиеПриУстановленномФлажке.Форма = "Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеДанных";
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РежимРаботы", "ВыполнитьПриЗавершенииРаботы");
- ФормаОбработки = "Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеДанных";
+ ДействиеПриУстановленномФлажке.ПараметрыФормы = ПараметрыФормы;
- ДействиеПриУстановленномФлажке = Новый Структура("Форма, ПараметрыФормы", ФормаОбработки, ПараметрыФормы);
- СтруктураПредупреждения = Новый Структура("ТекстФлажка, ДействиеПриУстановленномФлажке, Приоритет",
- ТекстФлажка, ДействиеПриУстановленномФлажке, 70);
- Предупреждения.Добавить(СтруктураПредупреждения);
+ Предупреждения.Добавить(ПараметрыПредупреждения);
КонецПроцедуры
@@ -196,7 +184,7 @@
КонецЕсли;
ДатаПроверки = ОбщегоНазначенияКлиент.ДатаСеанса();
- Если ПараметрыРезервногоКопированияИБ.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования > ДатаПроверки Тогда
+ Если ПараметрыРезервногоКопированияИБ.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = '29990101' Тогда
Возврат Ложь;
КонецЕсли;
diff --git a/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl
index d3fcb3cd5..7c0925a25 100644
--- a/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl
+++ b/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl
@@ -358,7 +358,10 @@
Результат.Вставить("ПараметрОповещения", ВариантОповещения);
Если Результат.ПроведеноКопирование И Результат.РезультатКопирования Тогда
- УстановитьДатуПоследнегоКопирования(ТекущаяДатаСеанса());
+ ТекущаяДатаСеанса = ТекущаяДатаСеанса();
+ Результат.ДатаПоследнегоРезервногоКопирования = ТекущаяДатаСеанса;
+ // Сохранение даты последнего резервного копирования в хранилище общих настроек.
+ УстановитьДатуПоследнегоКопирования(ТекущаяДатаСеанса);
КонецЕсли;
Если Результат.ПроведеноВосстановление Тогда
@@ -446,6 +449,7 @@
Параметры.Вставить("РасписаниеКопирования", ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Новый РасписаниеРегламентногоЗадания));
Параметры.Вставить("КаталогХраненияРезервныхКопий", "");
+ Параметры.Вставить("КаталогХраненияРезервныхКопийПриРучномЗапуске", ""); // При ручном выполнении
Параметры.Вставить("ПроведеноКопирование", Ложь);
Параметры.Вставить("ПроведеноВосстановление", Ложь);
Параметры.Вставить("РезультатКопирования", Неопределено);
diff --git a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl
index 44dd15d48..dbcf88950 100644
--- a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl
+++ b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl
@@ -796,7 +796,7 @@
СообщенияВМоделиСервиса.ОтправитьСообщение(
Сообщение,
РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса());
-
+
ЗафиксироватьТранзакцию();
Исключение
@@ -813,7 +813,6 @@
Процедура ОтправитьСообщениеОшибкаАрхивацииОбласти(Знач ПараметрыСообщения)
НачатьТранзакцию();
-
Попытка
Сообщение = СообщенияВМоделиСервиса.НовоеСообщение(
@@ -842,7 +841,6 @@
Процедура ОтправитьСообщениеАрхивацияОбластиПропущена(Знач ПараметрыСообщения)
НачатьТранзакцию();
-
Попытка
Сообщение = СообщенияВМоделиСервиса.НовоеСообщение(
diff --git a/SSL/src/CommonModules/СоединенияИБ/Module.bsl b/SSL/src/CommonModules/СоединенияИБ/Module.bsl
index 2511c3ed3..8a92dc4b5 100644
--- a/SSL/src/CommonModules/СоединенияИБ/Module.bsl
+++ b/SSL/src/CommonModules/СоединенияИБ/Module.bsl
@@ -62,8 +62,11 @@
// Определить, установлена ли блокировка соединений при пакетном
// обновлении конфигурации информационной базы
//
+// Параметры:
+// ПараметрыБлокировки - Структура - параметры блокировки сеансов. См. описание в СтруктураПараметровБлокировкиСеансов()
+//
// Возвращаемое значение:
-// Булево - Истина, если установлена, ложь - Иначе.
+// Булево - Истина, если установлена, ложь - Иначе.
//
Функция УстановленаБлокировкаСоединений(ПараметрыБлокировки = Неопределено) Экспорт
@@ -78,18 +81,19 @@
// Получить параметры блокировки соединений ИБ для использования на стороне клиента.
//
// Параметры:
-// ПолучитьКоличествоСеансов - Булево - если Истина, то в возвращаемой структуре
+// ПолучитьКоличествоСеансов - Булево - если Истина, то в возвращаемой структуре
// заполняется поле КоличествоСеансов.
+// ПараметрыБлокировки - Структура - параметры блокировки сеансов. См. описание в СтруктураПараметровБлокировкиСеансов()
//
// Возвращаемое значение:
-// Структура - с полями:
-// Установлена - Булево - Истина, если установлена блокировка, Ложь - Иначе.
-// Начало - Дата - дата начала блокировки.
-// Конец - Дата - дата окончания блокировки.
-// Сообщение - Строка - сообщение пользователю.
-// ИнтервалОжиданияЗавершенияРаботыПользователей - Число - интервал в секундах.
-// КоличествоСеансов - 0, если параметр ПолучитьКоличествоСеансов = Ложь
-// ТекущаяДатаСеанса - Дата - текущая дата сеанса.
+// Структура - со свойствами:
+// * Установлена - Булево - Истина, если установлена блокировка, Ложь - Иначе.
+// * Начало - Дата - дата начала блокировки.
+// * Конец - Дата - дата окончания блокировки.
+// * Сообщение - Строка - сообщение пользователю.
+// * ИнтервалОжиданияЗавершенияРаботыПользователей - Число - интервал в секундах.
+// * КоличествоСеансов - Число - 0, если параметр ПолучитьКоличествоСеансов = Ложь
+// * ТекущаяДатаСеанса - Дата - текущая дата сеанса.
//
Функция ПараметрыБлокировкиСеансов(Знач ПолучитьКоличествоСеансов = Ложь, ПараметрыБлокировки = Неопределено) Экспорт
@@ -375,6 +379,11 @@
"СоединенияИБ");
КонецЕсли;
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "СоединенияИБ");
+ КонецЕсли;
+
КонецПроцедуры
#КонецОбласти
@@ -504,6 +513,93 @@
КонецПроцедуры
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ Если Не ПравоДоступа("АдминистрированиеДанных", Метаданные) Тогда
+ Возврат;
+ КонецЕсли;
+
+
+ // Процедура вызывается только при наличии подсистемы "Текущие дела", поэтому здесь
+ // не делается проверка существования подсистемы.
+ МодульТекущиеДелаСлужебныйПовтИсп = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСлужебныйПовтИсп");
+ ПринадлежностьОбъектов = МодульТекущиеДелаСлужебныйПовтИсп.ПринадлежностьОбъектовРазделамКомандногоИнтерфейса();
+ Разделы = ПринадлежностьОбъектов[Метаданные.Обработки.БлокировкаРаботыПользователей.ПолноеИмя()];
+ Если Разделы = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПараметрыБлокировки = ПараметрыБлокировкиСеансов(Ложь);
+ ТекущаяДатаСеанса = ТекущаяДатаСеанса();
+
+ Если ПараметрыБлокировки.Установлена Тогда
+ Если ТекущаяДатаСеанса < ПараметрыБлокировки.Начало Тогда
+ Если ПараметрыБлокировки.Конец <> Дата(1, 1, 1) Тогда
+ Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Запланирована с %1 по %2'"),
+ Формат(ПараметрыБлокировки.Начало, "ДЛФ=DT"), Формат(ПараметрыБлокировки.Конец, "ДЛФ=DT"));
+ Иначе
+ Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Запланирована с %1'"),
+ Формат(ПараметрыБлокировки.Начало, "ДЛФ=DT"));
+ КонецЕсли;
+ Важность = Ложь;
+ ИначеЕсли ПараметрыБлокировки.Конец <> Дата(1, 1, 1) И ТекущаяДатаСеанса > ПараметрыБлокировки.Конец И ПараметрыБлокировки.Начало <> Дата(1, 1, 1) Тогда
+ Важность = Ложь;
+ Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не действует (истек срок %1)'"),
+ Формат(ПараметрыБлокировки.Конец, "ДЛФ=DT"));
+ Иначе
+ Если ПараметрыБлокировки.Конец <> Дата(1, 1, 1) Тогда
+ Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'с %1 по %2'"),
+ Формат(ПараметрыБлокировки.Начало, "ДЛФ=DT"), Формат(ПараметрыБлокировки.Конец, "ДЛФ=DT"));
+ Иначе
+ Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'с %1'"),
+ Формат(ПараметрыБлокировки.Начало, "ДЛФ=DT"));
+ КонецЕсли;
+ Важность = Истина;
+ КонецЕсли;
+ Иначе
+ Сообщение = НСтр("ru = 'Не действует'");
+ Важность = Ложь;
+ КонецЕсли;
+
+
+ Для Каждого Раздел Из Разделы Цикл
+
+ ИдентификаторДела = "БлокировкаСеансов" + СтрЗаменить(Раздел.ПолноеИмя(), ".", "");
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = ИдентификаторДела;
+ Дело.ЕстьДела = ПараметрыБлокировки.Установлена;
+ Дело.Представление = НСтр("ru = 'Блокировка работы пользователей'");
+ Дело.Форма = "Обработка.БлокировкаРаботыПользователей.Форма";
+ Дело.Важное = Важность;
+ Дело.Владелец = Раздел;
+
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "БлокировкаСеансовПодробности";
+ Дело.ЕстьДела = ПараметрыБлокировки.Установлена;
+ Дело.Представление = Сообщение;
+ Дело.Владелец = ИдентификаторДела;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ ОБНОВЛЕНИЯ ИНФОРМАЦИОННОЙ БАЗЫ
@@ -664,8 +760,6 @@
КонецФункции
-// Возвращает структуру, содержащую параметры блокировки сеансов
-//
Функция СтруктураПараметровБлокировкиСеансов()
УстановитьПривилегированныйРежим(Истина);
diff --git a/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4.mdo b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4.mdo
index a561682e0..152d0fae2 100644
--- a/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4.mdo
+++ b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4.mdo
@@ -3,7 +3,7 @@
СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4ru
- Сообщения контроль удаленного администрирования обработчик трансляции 1.0.2.3
+ Сообщения контроль удаленного администрирования обработчик трансляции 1.0.2.4truetrue
diff --git a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl
index c646d720f..a9c2b6e90 100644
--- a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl
+++ b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl
@@ -39,48 +39,46 @@
СообщениеОбработано = Истина;
- Словарь = СообщенияУдаленногоАдминистрированияИнтерфейс;
-
- Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда
- СловарьДОиО = ОбщегоНазначения.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс");
- Иначе
- СловарьДОиО = Неопределено;
+ ПодсистемаСуществует = ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса");
+ МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс = Неопределено;
+ Если ПодсистемаСуществует Тогда
+ МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс = ОбщегоНазначения.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс");
КонецЕсли;
ТипСообщения = Сообщение.Body.Тип();
- Если ТипСообщения = Словарь.СообщениеОбновитьПользователя(Пакет()) Тогда
+ Если ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеОбновитьПользователя(Пакет()) Тогда
ОбновитьПользователя(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеПодготовитьОбластьДанных(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеПодготовитьОбластьДанных(Пакет()) Тогда
ПодготовитьОбластьДанных(Сообщение, Отправитель, Ложь);
- ИначеЕсли ТипСообщения = Словарь.СообщениеПодготовитьОбластьДанныхИзВыгрузки(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеПодготовитьОбластьДанныхИзВыгрузки(Пакет()) Тогда
ПодготовитьОбластьДанных(Сообщение, Отправитель, Истина);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУдалитьОбластьДанных(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУдалитьОбластьДанных(Пакет()) Тогда
УдалитьОбластьДанных(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьДоступКОбластиДанных(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьДоступКОбластиДанных(Пакет()) Тогда
УстановитьДоступКОбластиДанных(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьКонечнуюТочкуМенеджераСервиса(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьКонечнуюТочкуМенеджераСервиса(Пакет()) Тогда
УстановитьКонечнуюТочкуМенеджераСервиса(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПараметрыИБ(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьПараметрыИБ(Пакет()) Тогда
УстановитьПараметрыИБ(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПараметрыОбластиДанных(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьПараметрыОбластиДанных(Пакет()) Тогда
УстановитьПараметрыОбластиДанных(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПолныеПраваОбластиДанных(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьПолныеПраваОбластиДанных(Пакет()) Тогда
УстановитьПолныеПраваОбластиДанных(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПраваПользователяПоУмолчанию(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьПраваПользователяПоУмолчанию(Пакет()) Тогда
УстановитьПраваПользователяПоУмолчанию(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьРейтингОбластейДанных(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьРейтингОбластейДанных(Пакет()) Тогда
УстановитьРейтингОбластейДанных(Сообщение, Отправитель);
- ИначеЕсли ТипСообщения = Словарь.СообщениеПрикрепитьОбластьДанных(Пакет()) Тогда
+ ИначеЕсли ТипСообщения = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеПрикрепитьОбластьДанных(Пакет()) Тогда
ПрикрепитьОбластьДанных(Сообщение, Отправитель);
- ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеУстановитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
+ ИначеЕсли ПодсистемаСуществует И ТипСообщения = МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.СообщениеУстановитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
УстановитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель);
- ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеУдалитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
+ ИначеЕсли ПодсистемаСуществует И ТипСообщения = МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.СообщениеУдалитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
УдалитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель);
- ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеОтключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
+ ИначеЕсли ПодсистемаСуществует И ТипСообщения = МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.СообщениеОтключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
ОтключитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель);
- ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеВключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
+ ИначеЕсли ПодсистемаСуществует И ТипСообщения = МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.СообщениеВключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
ВключитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель);
- ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеОтозватьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
+ ИначеЕсли ПодсистемаСуществует И ТипСообщения = МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.СообщениеОтозватьДополнительныйОтчетИлиОбработку(Пакет()) Тогда
ОтозватьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель);
Иначе
СообщениеОбработано = Ложь;
diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl
index 6f54f9c68..883665f86 100644
--- a/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl
@@ -27,7 +27,6 @@
ЗапомнитьВременныеПараметры(Параметры);
Если Параметры.ПолученныеПараметрыКлиента <> Неопределено Тогда
- ОбновитьПовторноИспользуемыеЗначения();
Если НЕ Параметры.Свойство("ПропуститьОчисткуСкрытияРабочегоСтола") Тогда
СкрытьРабочийСтолПриНачалеРаботыСистемы(Ложь);
КонецЕсли;
@@ -60,9 +59,7 @@
Если ПланыОбмена.ГлавныйУзел() <> Неопределено
И Не ЗначениеЗаполнено(Константы.ГлавныйУзел.Получить()) Тогда
// Сохранение главного узла для возможности восстановления.
- ГлавныйУзелМенеджер = Константы.ГлавныйУзел.СоздатьМенеджерЗначения();
- ГлавныйУзелМенеджер.Значение = ПланыОбмена.ГлавныйУзел();
- ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГлавныйУзелМенеджер);
+ СтандартныеПодсистемыСервер.СохранитьГлавныйУзел();
КонецЕсли;
КонецЕсли;
КонецЕсли;
diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыГлобальный/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыГлобальный/Module.bsl
index 8a4a6f04f..5744aa056 100644
--- a/SSL/src/CommonModules/СтандартныеПодсистемыГлобальный/Module.bsl
+++ b/SSL/src/CommonModules/СтандартныеПодсистемыГлобальный/Module.bsl
@@ -21,4 +21,10 @@
КонецПроцедуры
+// Вызывается после запуска конфигурации, открывает окно информации.
+Процедура ПоказатьИнформациюПослеЗапуска() Экспорт
+ МодульИнформацияПриЗапускеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнформацияПриЗапускеКлиент");
+ МодульИнформацияПриЗапускеКлиент.Показать();
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl
index a2702ab75..11469b2a0 100644
--- a/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl
+++ b/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl
@@ -5,6 +5,9 @@
#Область ПрограммныйИнтерфейс
+////////////////////////////////////////////////////////////////////////////////
+// Поиск и удаление дублей.
+
// Открывает форму объединения элементов справочников, планов видов характеристик, видов расчетов и счетов.
//
// Параметры:
@@ -64,6 +67,9 @@
КонецПроцедуры
+////////////////////////////////////////////////////////////////////////////////
+// Процедуры и функции интерактивной работы.
+
// Устанавливает заголовок главного окна приложения, используя представление текущего пользователя,
// значение константы ЗаголовокПриложения и заголовок приложения по умолчанию.
//
@@ -108,14 +114,6 @@
КонецПроцедуры
-// Отключает выдачу предупреждения пользователю при завершении работы программы.
-//
-Процедура ПропуститьПредупреждениеПередЗавершениемРаботыСистемы() Экспорт
-
- ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина;
-
-КонецПроцедуры
-
// Показать форму вопроса.
//
// Параметры:
@@ -192,14 +190,17 @@
// Возвращает новую структуру дополнительных параметров для процедуры ПоказатьВопросПользователю.
//
// Возвращаемое значение:
-// Структура - параметры процедуры ПоказатьВопросПользователю:
-// КнопкаПоУмолчанию - Произвольный - определяет кнопку по умолчанию по типу кнопки или по связанному с ней значению.
-// Таймаут - Число - интервал времени в секундах до автоматического закрытия окна вопроса.
-// КнопкаТаймаута - Произвольный - кнопка (по типу кнопки или по связанному с ней значению),
-// на которой отображается количество секунд, оставшихся до истечения таймаута.
-// Заголовок - Строка - заголовок вопроса.
-// ПредлагатьБольшеНеЗадаватьЭтотВопрос - Булево - если Истина, то в окне вопроса будет доступен одноименный флажок.
-// БольшеНеЗадаватьЭтотВопрос - Булево - принимает значение, выбранное пользователем в соответствующем флажке.
+// Структура - структура со свойствами:
+// * КнопкаПоУмолчанию - Произвольный - определяет кнопку по умолчанию по типу кнопки или по связанному с ней значению.
+// * Таймаут - Число - интервал времени в секундах до автоматического закрытия окна вопроса.
+// * КнопкаТаймаута - Произвольный - кнопка (по типу кнопки или по связанному с ней значению),
+// на которой отображается количество секунд, оставшихся до истечения таймаута.
+// * Заголовок - Строка - заголовок вопроса.
+// * ПредлагатьБольшеНеЗадаватьЭтотВопрос - Булево- если Истина, то в окне вопроса будет доступен одноименный флажок.
+// * БольшеНеЗадаватьЭтотВопрос - Булево - принимает значение, выбранное пользователем в соответствующем флажке.
+// * БлокироватьВесьИнтерфейс - Булево - если Истина, форма вопроса открывается блокируя работу всех остальных
+// открытых окон, включая главное окно.
+// * Картинка - Картинка - картинка, выводимая в окне вопроса.
//
Функция ПараметрыВопросаПользователю() Экспорт
@@ -216,6 +217,17 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Запуск и завершение работы.
+
+// Отключает выдачу предупреждения пользователю при завершении работы программы.
+//
+Процедура ПропуститьПредупреждениеПередЗавершениемРаботыСистемы() Экспорт
+
+ ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина;
+
+КонецПроцедуры
+
// Выполнить стандартные действия перед началом работы пользователя
// с областью данных, либо в локальном режиме работы.
//
@@ -235,7 +247,7 @@
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы",
"ОповещениеЗавершения", ОповещениеЗавершения, Тип("ОписаниеОповещения"));
КонецЕсли;
-
+
УстановитьРазделениеСеанса();
Параметры = Новый Структура;
@@ -256,7 +268,8 @@
Параметры.Вставить("ОбработкаЗавершения", Новый ОписаниеОповещения(
"ДействияПередНачаломРаботыСистемыОбработкаЗавершения", ЭтотОбъект, Параметры));
- ОбновитьПараметрыРаботыКлиента(Параметры, Истина);
+ ОбновитьПараметрыРаботыКлиента(Параметры, Истина, ОповещениеЗавершения <> Неопределено);
+ ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
Параметры.Вставить("ОбработкаПродолжения", Новый ОписаниеОповещения(
"ДействияПередНачаломРаботыСистемыПослеПроверкиВерсииПлатформы", ЭтотОбъект, Параметры));
@@ -532,6 +545,53 @@
#Область СлужебныйПрограммныйИнтерфейс
+// Возвращает новую структуру параметров для вывода предупреждения перед завершением работы программы.
+//
+// Возвращаемое значение:
+// Структура - со свойствами:
+// ТекстФлажка - Строка - текст флажка.
+// ПоясняющийТекст - Строка - текст, выводимый в форме сверху управляющего элемента (флажок или гиперссылка).
+// ТекстГиперссылки - Строка - текст гиперссылки.
+// РасширеннаяПодсказка - Строка - текст подсказки, выводимый по кнопке справа от управляющего элемента (флажок или гиперссылка).
+// Приоритет - Число - определяет относительный порядок вывода предупреждений в форме (чем больше, тем выше).
+// ВывестиОдноПредупреждение - Булево - если Истина, то в списке предупреждений выводится только одно это предупреждение.
+// ДействиеПриУстановленномФлажке - Структура с полями:
+// * Форма - Строка - путь к открываемой форме.
+// * ПараметрыФормы - Структура - произвольная структура параметров формы Форма.
+// ДействиеПриНажатииГиперссылки - Структура с полями:
+// * Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку.
+// * ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы.
+// * ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу
+// вместо универсальной формы в случае, когда в списке
+// предупреждений оказывается только одно данное предупреждение.
+// * ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура
+// параметров для вышеописанной формы.
+Функция ПредупреждениеПриЗавершениеРаботы() Экспорт
+
+ ДействиеПриУстановленномФлажке = Новый Структура;
+ ДействиеПриУстановленномФлажке.Вставить("Форма", "");
+ ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", Неопределено);
+
+ ДействиеПриНажатииГиперссылки = Новый Структура;
+ ДействиеПриНажатииГиперссылки.Вставить("Форма", "");
+ ДействиеПриНажатииГиперссылки.Вставить("ПараметрыФормы", Неопределено);
+ ДействиеПриНажатииГиперссылки.Вставить("ПрикладнаяФормаПредупреждения", "");
+ ДействиеПриНажатииГиперссылки.Вставить("ПараметрыПрикладнойФормыПредупреждения", Неопределено);
+
+ ПараметрыПредупреждения = Новый Структура;
+ ПараметрыПредупреждения.Вставить("ТекстФлажка", "");
+ ПараметрыПредупреждения.Вставить("ПоясняющийТекст", "");
+ ПараметрыПредупреждения.Вставить("РасширеннаяПодсказка", "");
+ ПараметрыПредупреждения.Вставить("ТекстГиперссылки", "");
+ ПараметрыПредупреждения.Вставить("ДействиеПриУстановленномФлажке", ДействиеПриУстановленномФлажке);
+ ПараметрыПредупреждения.Вставить("ДействиеПриНажатииГиперссылки", ДействиеПриНажатииГиперссылки);
+ ПараметрыПредупреждения.Вставить("Приоритет", 0);
+ ПараметрыПредупреждения.Вставить("ВывестиОдноПредупреждение", Ложь);
+
+ Возврат ПараметрыПредупреждения;
+
+КонецФункции
+
// После предупреждения вызывает процедуру с параметрами Результат, ДополнительныеПараметры.
//
// Параметры:
@@ -732,7 +792,7 @@
ВыводПредупреждения = Результат.ВыводПредупреждения;
Если ЗначениеЗаполнено(ВыводПредупреждения.ТекстОшибок) Тогда
Кнопки = Новый СписокЗначений;
- Кнопки.Добавить(1, НСтр("ru = 'Показать ошибки'"));
+ Кнопки.Добавить(1, НСтр("ru = 'Подробнее...'"));
Если ТипЗнч(Форма) = Тип("УправляемаяФорма") И ЗначениеЗаполнено(ВыводПредупреждения.ПутьКРеквизитуФормы) Тогда
Кнопки.Добавить(2, НСтр("ru = 'Перейти к реквизиту'"));
КонецЕсли;
@@ -811,7 +871,7 @@
//
// Параметры:
// ОбработкаПродолжения - ОписаниеОповещения, которое нужно обработать после получения пароля.
-// ФормаВладелец - Неопределено, УправляемаяФорма, которая запрашивает пароль.
+// ФормаВладелец - Неопределено, УправляемаяФорма - форма, которая запрашивает пароль.
// ПарольПользователяСервиса - Строка - текущий пароль пользователя сервиса.
//
Процедура ПриЗапросеПароляДляАутентификацииВСервисе(ОбработкаПродолжения, ФормаВладелец = Неопределено, ПарольПользователяСервиса = Неопределено) Экспорт
@@ -977,8 +1037,22 @@
Параметры.Вставить("ОбработкаПродолжения", Параметры.ОбработкаЗавершения);
+ Если ОбщегоНазначенияКлиент.ПодсистемаСуществует(
+ "СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
+
+ МодульАвтономнаяРаботаСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АвтономнаяРаботаСлужебныйКлиент");
+ Попытка
+ МодульАвтономнаяРаботаСлужебныйКлиент.ПередНачаломРаботыСистемы(Параметры);
+ Исключение
+ ОбработатьОшибкуПриЗапускеИлиЗавершении(Параметры, ИнформацияОбОшибке(), "Запуск", Истина);
+ КонецПопытки;
+ Если ИнтерактивнаяОбработкаПередНачаломРаботыСистемы(Параметры) Тогда
+ Возврат;
+ КонецЕсли;
+ КонецЕсли;
+
Попытка
- ПользователиСлужебныйКлиент.ПроверитьАвторизациюПользователя(Параметры);
+ ПользователиСлужебныйКлиент.ПередНачаломРаботыСистемы(Параметры);
Исключение
ОбработатьОшибкуПриЗапускеИлиЗавершении(Параметры, ИнформацияОбОшибке(), "Запуск", Истина);
КонецПопытки;
@@ -1292,6 +1366,10 @@
Отказ = ОбщегоНазначенияКлиентПереопределяемый.ОбработатьПараметрыЗапуска(
ПервыйПараметр, ПараметрыЗапуска) Или Отказ;
+ Если Не Отказ Тогда
+ ОбщегоНазначенияКлиентПереопределяемый.ПриОбработкеПараметровЗапуска(ПервыйПараметр, ПараметрыЗапуска, Отказ);
+ КонецЕсли;
+
Возврат НЕ Отказ;
КонецФункции
@@ -1752,7 +1830,8 @@
КонецФункции
-Процедура ОбновитьПараметрыРаботыКлиента(Параметры, ПервыйВызов = Ложь)
+// Обновляет параметры работы клиента после очередной интерактивной обработки при запуске.
+Процедура ОбновитьПараметрыРаботыКлиента(Параметры, ПервыйВызов = Ложь, ОбновитьПовторноИспользуемыеЗначения = Истина)
Если ПервыйВызов Тогда
Если ТипЗнч(ПараметрыПриЗапускеИЗавершенииПрограммы) <> Тип("Структура") Тогда
@@ -1770,7 +1849,9 @@
ПараметрыПриЗапускеИЗавершенииПрограммы.Вставить("ПолученныеПараметрыКлиента",
Параметры.ПолученныеПараметрыКлиента);
- ОбновитьПовторноИспользуемыеЗначения();
+ Если ОбновитьПовторноИспользуемыеЗначения Тогда
+ ОбновитьПовторноИспользуемыеЗначения();
+ КонецЕсли;
КонецПроцедуры
@@ -1943,17 +2024,14 @@
ИмяФормы = "ОбщаяФорма.ПредупрежденияПриЗавершенииРаботы";
Если Предупреждения.Количество() = 1 Тогда
- ТекстФлажка = "";
- Если Предупреждения[0].Свойство("ТекстФлажка", ТекстФлажка) Тогда
- Если Не ПустаяСтрока(ТекстФлажка) Тогда
- ДополнительныеПараметры.Вставить("ВариантФормы", "СтандартнаяФорма");
- ПараметрыОткрытияФормы = Новый Структура;
- ПараметрыОткрытияФормы.Вставить("ИмяФормы", ИмяФормы);
- ПараметрыОткрытияФормы.Вставить("ПараметрыФормы", ПараметрыФормы);
- ПараметрыОткрытияФормы.Вставить("ОбработкаОтвета", ОбработкаОтвета);
- Параметры.ИнтерактивнаяОбработка = Новый ОписаниеОповещения(
- "ИнтерактивнаяОбработкаПредупрежденийПриЗавершенииРаботы", ЭтотОбъект, ПараметрыОткрытияФормы);
- КонецЕсли;
+ Если Не ПустаяСтрока(Предупреждения[0].ТекстФлажка) Тогда
+ ДополнительныеПараметры.Вставить("ВариантФормы", "СтандартнаяФорма");
+ ПараметрыОткрытияФормы = Новый Структура;
+ ПараметрыОткрытияФормы.Вставить("ИмяФормы", ИмяФормы);
+ ПараметрыОткрытияФормы.Вставить("ПараметрыФормы", ПараметрыФормы);
+ ПараметрыОткрытияФормы.Вставить("ОбработкаОтвета", ОбработкаОтвета);
+ Параметры.ИнтерактивнаяОбработка = Новый ОписаниеОповещения(
+ "ИнтерактивнаяОбработкаПредупрежденийПриЗавершенииРаботы", ЭтотОбъект, ПараметрыОткрытияФормы);
Иначе
ДополнительныеПараметры.Вставить("ВариантФормы", "ПрикладнаяФорма");
ОткрытьПрикладнуюФормуПредупреждения(Параметры, ОбработкаОтвета, Предупреждения[0], ИмяФормы, ПараметрыФормы);
@@ -2118,7 +2196,6 @@
КонецПроцедуры
Процедура УстановитьПараметрыФункциональныхОпцийИнтерфейсаПриЗапуске()
-
ОпцииИнтерфейса = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске().ОпцииИнтерфейса;
Если ТипЗнч(ОпцииИнтерфейса) = Тип("ФиксированнаяСтруктура") Тогда
#Если ВебКлиент Тогда
diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl
index 36c5b3181..fd0e5f74f 100644
--- a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl
@@ -71,8 +71,8 @@
// Параметры:
// Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
// ИмяСобытия - Строка - Имя события, которое используется для первичной идентификации сообщений принимающими формами.
-// Параметр - * - Набор данных, которые используются принимающей формой для обновления состава.
-// Источник - * - Источник оповещения, например форма-источником.
+// Параметр - Произвольный - Набор данных, которые используются принимающей формой для обновления состава.
+// Источник - Произвольный - Источник оповещения, например форма-источником.
//
Процедура РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, ИмяСобытия, Параметр = Неопределено, Источник = Неопределено) Экспорт
Если Не Результат.Свойство("ОповещениеФорм") Тогда
diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl
index e90509cb0..0521aba94 100644
--- a/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl
@@ -5,38 +5,6 @@
#Область СлужебныеПроцедурыИФункции
-// Содержит сохраненные параметры, используемые подсистемой.
-Функция ПараметрыБазовойФункциональности() Экспорт
-
- УстановитьПривилегированныйРежим(Истина);
- СохраненныеПараметры = СтандартныеПодсистемыСервер.ПараметрыРаботыПрограммы(
- "ПараметрыБазовойФункциональности");
- УстановитьПривилегированныйРежим(Ложь);
-
- СтандартныеПодсистемыСервер.ПроверитьОбновлениеПараметровРаботыПрограммы(
- "ПараметрыБазовойФункциональности",
- "ИдентификаторыОбъектовМетаданных");
-
- ПредставлениеПараметра = "";
-
- Если НЕ СохраненныеПараметры.Свойство("ИдентификаторыОбъектовМетаданных") Тогда
- ПредставлениеПараметра = НСтр("ru = 'Идентификаторы объектов метаданных'");
- КонецЕсли;
-
- Если ЗначениеЗаполнено(ПредставлениеПараметра) Тогда
-
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка обновления информационной базы.
- |Не заполнен параметр базовой функциональности:
- |""%1"".'")
- + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
- ПредставлениеПараметра);
- КонецЕсли;
-
- Возврат СохраненныеПараметры;
-
-КонецФункции
-
// Содержит сохраненные параметры, используемые подсистемой.
Функция ПараметрыПрограммныхСобытий() Экспорт
@@ -234,10 +202,15 @@
КонецФункции
-// Возвращает соответствие имен подсистем и значения Истина;
+// Возвращает соответствие имен "функциональных" подсистем и значения Истина.
+// У "функциональной" подсистемы снят флажок "Включать в командный интерфейс".
+//
Функция ИменаПодсистем() Экспорт
- Возврат Новый ФиксированноеСоответствие(ИменаПодчиненныхПодсистем(Метаданные));
+ Имена = Новый Соответствие;
+ ВставитьИменаПодчиненныхПодсистем(Имена, Метаданные);
+
+ Возврат Новый ФиксированноеСоответствие(Имена);
КонецФункции
@@ -373,6 +346,104 @@
КонецФункции
+// Только для внутреннего использования.
+Функция ПараметрыРаботыПрограммы(ИмяКонстанты) Экспорт
+
+ Параметры = Константы[ИмяКонстанты].Получить().Получить();
+
+ Если ТипЗнч(Параметры) <> Тип("Структура") Тогда
+ Параметры = Новый Структура;
+ КонецЕсли;
+
+ Возврат Новый ФиксированнаяСтруктура(Параметры);
+
+КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Получение идентификатора по объекту метаданных и наоборот
+
+// Только для внутреннего использования
+Функция ИдентификаторОбъектаМетаданных(ПолноеИмяОбъектаМетаданных) Экспорт
+
+ СтандартныеПодсистемыПовтИсп.СправочникИдентификаторыОбъектовМетаданныхПроверкаИспользования(Истина);
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("ПолноеИмя", ПолноеИмяОбъектаМетаданных);
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | Идентификаторы.Ссылка КАК Ссылка,
+ | Идентификаторы.КлючОбъектаМетаданных,
+ | Идентификаторы.ПолноеИмя
+ |ИЗ
+ | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
+ |ГДЕ
+ | Идентификаторы.ПолноеИмя = &ПолноеИмя
+ | И НЕ Идентификаторы.ПометкаУдаления";
+
+ Выгрузка = Запрос.Выполнить().Выгрузить();
+ Если Выгрузка.Количество() = 0 Тогда
+ // Если идентификатор не найден по полному имени, возможно что полное имя задано с ошибкой
+ Если Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных) = Неопределено Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
+ |
+ |Объект метаданных не найден по полному имени:
+ |""%1"".'"),
+ ПолноеИмяОбъектаМетаданных);
+ КонецЕсли;
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
+ |
+ |Для объекта метаданных ""%1""
+ |не найден идентификатор
+ |в справочнике ""Идентификаторы объектов метаданных"".'")
+ + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
+ ПолноеИмяОбъектаМетаданных);
+ ИначеЕсли Выгрузка.Количество() > 1 Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
+ |
+ |Для объекта метаданных ""%1""
+ |найдено несколько идентификаторов
+ |в справочнике ""Идентификаторы объектов метаданных"".'")
+ + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
+ ПолноеИмяОбъектаМетаданных);
+ КонецЕсли;
+
+ // Проверка соответствия ключа объекта метаданных полному имени объекта метаданных
+ РезультатПроверки = Справочники.ИдентификаторыОбъектовМетаданных.КлючОбъектаМетаданныхСоответствуетПолномуИмени(Выгрузка[0]);
+ Если РезультатПроверки.НеСоответствует Тогда
+ Если РезультатПроверки.ОбъектМетаданных = Неопределено Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
+ |
+ |Для объекта метаданных ""%1""
+ |найден идентификатор в справочнике ""Идентификаторы объектов метаданных"",
+ |которому соответствует удаленный объект метаданных.'")
+ + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
+ ПолноеИмяОбъектаМетаданных);
+ Иначе
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
+ |
+ |Для объекта метаданных ""%1""
+ |найден идентификатор в справочнике ""Идентификаторы объектов метаданных"",
+ |который соответствует другому объекту метаданных ""%2"".'")
+ + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(),
+ ПолноеИмяОбъектаМетаданных,
+ РезультатПроверки.ОбъектМетаданных);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Выгрузка[0].Ссылка;
+
+КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Использование справочника ИдентификаторыОбъектовМетаданных
+
// Только для внутреннего использования.
Функция ОтключитьСправочникИдентификаторыОбъектовМетаданных() Экспорт
@@ -402,16 +473,14 @@
КонецФункции
// Только для внутреннего использования.
-Функция ПараметрыРаботыПрограммы(ИмяКонстанты) Экспорт
+Функция СправочникИдентификаторыОбъектовМетаданныхПроверкаИспользования(ПроверитьОбновление = Ложь) Экспорт
- Параметры = Константы[ИмяКонстанты].Получить().Получить();
+ Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования();
- Если ТипЗнч(Параметры) <> Тип("Структура") Тогда
- Параметры = Новый Структура;
+ Если ПроверитьОбновление Тогда
+ Справочники.ИдентификаторыОбъектовМетаданных.ДанныеОбновлены(Истина);
КонецЕсли;
- Возврат Новый ФиксированнаяСтруктура(Параметры);
-
КонецФункции
////////////////////////////////////////////////////////////////////////////////
@@ -501,23 +570,25 @@
КонецФункции
-Функция ИменаПодчиненныхПодсистем(РодительскаяПодсистема)
-
- Имена = Новый Соответствие;
+Процедура ВставитьИменаПодчиненныхПодсистем(Имена, РодительскаяПодсистема, Все = Ложь, ИмяРодительскойПодсистемы = "")
Для каждого ТекущаяПодсистема Из РодительскаяПодсистема.Подсистемы Цикл
- Имена.Вставить(ТекущаяПодсистема.Имя, Истина);
- ИменаПодчиненных = ИменаПодчиненныхПодсистем(ТекущаяПодсистема);
+ Если ТекущаяПодсистема.ВключатьВКомандныйИнтерфейс И Не Все Тогда
+ Продолжить;
+ КонецЕсли;
- Для каждого ИмяПодчиненной Из ИменаПодчиненных Цикл
- Имена.Вставить(ТекущаяПодсистема.Имя + "." + ИмяПодчиненной.Ключ, Истина);
- КонецЦикла;
+ ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + ТекущаяПодсистема.Имя;
+ Имена.Вставить(ИмяТекущейПодсистемы, Истина);
+
+ Если ТекущаяПодсистема.Подсистемы.Количество() = 0 Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ВставитьИменаПодчиненныхПодсистем(Имена, ТекущаяПодсистема, Все, ИмяТекущейПодсистемы + ".");
КонецЦикла;
- Возврат Имена;
-
-КонецФункции
+КонецПроцедуры
Функция ПодготовленныеОбработчикиСерверногоСобытия(Событие, Служебное = Ложь, ПерваяПопытка = Истина)
diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl
index b58a3b0cd..971489c8e 100644
--- a/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl
+++ b/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl
@@ -58,7 +58,12 @@
КонецЦикла;
ОбработчикиСобственные = ОбщегоНазначенияПереопределяемый.ОбработчикиИнициализацииПараметровСеанса();
+ Для Каждого Запись Из ОбработчикиСобственные Цикл
+ Обработчики.Вставить(Запись.Ключ, Запись.Значение);
+ КонецЦикла;
+ ОбработчикиСобственные = Новый Соответствие;
+ ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса(ОбработчикиСобственные);
Для Каждого Запись Из ОбработчикиСобственные Цикл
Обработчики.Вставить(Запись.Ключ, Запись.Значение);
КонецЦикла;
@@ -219,8 +224,8 @@
// через процедуру ПриДобавленииОбработчиковСлужебныхСобытий.
//
// Параметры:
-// КлиентскиеСобытия - Массив, где значения типа Строка - полное имя события.
-// СерверныеСобытия - Массив, где значения типа Строка - полное имя события.
+// КлиентскиеСобытия - Массив - список значений типа Строка - полное имя события.
+// СерверныеСобытия - Массив - список значений типа Строка - полное имя события.
//
// Для упрощения поддержки, рекомендуется делать вызов такой же
// процедуры в общем модуле библиотеки.
@@ -320,6 +325,11 @@
МодульПоставляемыеДанные.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия);
КонецЕсли;
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ МодульТекущиеДелаСлужебный = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСлужебный");
+ МодульТекущиеДелаСлужебный.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия);
+ КонецЕсли;
+
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
МодульУправлениеДоступомСлужебный.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия);
@@ -336,13 +346,13 @@
// через процедуру ПриДобавленииСлужебныхСобытий.
//
// Параметры:
-// КлиентскиеОбработчики - Соответствие, где
-// Ключ - Строка - полное имя события,
-// Значение - Массив - массив имен клиентских общих модулей обработчиков.
+// КлиентскиеОбработчики - Соответствие - список обработчиков:
+// * Ключ - Строка - полное имя события,
+// * Значение - Массив - массив имен клиентских общих модулей обработчиков.
//
-// СерверныеОбработчики - Соответствие, где
-// Ключ - Строка - полное имя события,
-// Значение - Массив - массив имен серверных общих модулей обработчиков.
+// СерверныеОбработчики - Соответствие - список обработчиков:
+// * Ключ - Строка - полное имя события,
+// * Значение - Массив - массив имен серверных общих модулей обработчиков.
//
// Для упрощения поддержки, рекомендуется делать вызов такой же
// процедуры в общем модуле библиотеки.
@@ -391,9 +401,6 @@
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
МодульВариантыОтчетов.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики);
-
- СерверныеОбработчики["СтандартныеПодсистемы.ВариантыОтчетов\ПриНастройкеВариантовОтчетов"].Добавить(
- "СтандартныеПодсистемыСервер");
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда
@@ -867,7 +874,6 @@
// ИмяКонстанты - Строка - имя неразделенной константы, в которой сохраняется значение параметра.
// ИмяПараметра - Строка - имя параметра, который нужно установить (без приставки ИзмененияПараметра).
// ЗначениеПараметра - фиксированные данные, которые устанавливаются в качестве значения параметра.
-// ТолькоПроверка -
//
Процедура УстановитьПараметрРаботыПрограммы(ИмяКонстанты, ИмяПараметра, ЗначениеПараметра) Экспорт
@@ -1043,6 +1049,62 @@
КонецПроцедуры
+// Удаляет вспомогательные данные для работы программы, хранимые в неразделенных константах.
+//
+// Параметры:
+// ИмяКонстанты - Строка - имя неразделенной константы, в которой сохраняется значение параметра.
+// ИмяПараметра - Строка - имя параметра, который нужно установить (без приставки ИзмененияПараметра).
+//
+Процедура УдалитьПараметрРаботыПрограммы(ИмяКонстанты, ИмяПараметра) Экспорт
+
+ Блокировка = Новый БлокировкаДанных;
+ ЭлементБлокировки = Блокировка.Добавить("Константа." + ИмяКонстанты);
+ ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
+
+ Записать = Ложь;
+
+ НачатьТранзакцию();
+ Попытка
+ Блокировка.Заблокировать();
+
+ Параметры = Константы[ИмяКонстанты].Получить().Получить();
+ Если ТипЗнч(Параметры) <> Тип("Структура") Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Параметры.Свойство(ИмяПараметра) Тогда
+ Параметры.Удалить(ИмяПараметра);
+ Записать = Истина;
+ КонецЕсли;
+
+ ИмяПараметраХраненияИзменений = "ИзмененияПараметра" + ИмяПараметра;
+
+ Если Параметры.Свойство(ИмяПараметраХраненияИзменений) Тогда
+ Параметры.Удалить(ИмяПараметраХраненияИзменений);
+ Записать = Истина;
+ КонецЕсли;
+
+ Если Записать Тогда
+ МенеджерЗначения = Константы[ИмяКонстанты].СоздатьМенеджерЗначения();
+ МенеджерЗначения.ОбменДанными.Загрузка = Истина;
+ МенеджерЗначения.ОбменДанными.Получатели.Автозаполнение = Ложь;
+ МенеджерЗначения.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
+ МенеджерЗначения.Значение = Новый ХранилищеЗначения(Параметры);
+ МенеджерЗначения.Записать();
+ КонецЕсли;
+
+ ЗафиксироватьТранзакцию();
+ Исключение
+ ОтменитьТранзакцию();
+ ВызватьИсключение;
+ КонецПопытки;
+
+ Если Записать Тогда
+ ОбновитьПовторноИспользуемыеЗначения();
+ КонецЕсли;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Дополнительная базовая функциональность для обмена данными
@@ -1297,6 +1359,15 @@
КонецПроцедуры
+// Сохраняет ссылку на главный узел в константе ГлавныйУзел для возможности восстановления.
+Процедура СохранитьГлавныйУзел() Экспорт
+
+ ГлавныйУзелМенеджер = Константы.ГлавныйУзел.СоздатьМенеджерЗначения();
+ ГлавныйУзелМенеджер.Значение = ПланыОбмена.ГлавныйУзел();
+ ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГлавныйУзелМенеджер);
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики отправки и получения данных для обмена в распределенной ИБ
@@ -1514,10 +1585,10 @@
// то в параметр <Объект> необходимо добавить эти объекты метаданных.
//
// Параметры:
-// Объекты - Массив. Массив объектов метаданных конфигурации, которые необходимо включить в состав плана обмена.
-// РаспределеннаяИнформационнаяБаза (только чтение) - Булево. Признак получения объектов для плана обмена РИБ.
-// Истина - требуется получить список объектов плана обмена РИБ;
-// Ложь - требуется получить список для плана обмена НЕ РИБ.
+// Объекты - Массив - список объектов метаданных конфигурации, которые необходимо включить в состав плана обмена.
+// РаспределеннаяИнформационнаяБаза - Булево - (только чтение) Признак получения объектов для плана обмена РИБ.
+// Истина - требуется получить список объектов плана обмена РИБ;
+// Ложь - требуется получить список для плана обмена НЕ РИБ.
//
Процедура ПриПолученииОбязательныхОбъектовПланаОбмена(Объекты, Знач РаспределеннаяИнформационнаяБаза) Экспорт
@@ -1534,10 +1605,10 @@
// то в параметр <Объект> необходимо добавить эти объекты метаданных.
//
// Параметры:
-// Объекты - Массив. Массив объектов метаданных конфигурации, которые не следует включать в состав плана обмена.
-// РаспределеннаяИнформационнаяБаза (только чтение) - Булево. Признак получения объектов для плана обмена РИБ.
-// Истина - требуется получить список объектов-исключений плана обмена РИБ;
-// Ложь - требуется получить список для плана обмена НЕ РИБ.
+// Объекты - Массив - список объектов метаданных конфигурации, которые не следует включать в состав плана обмена.
+// РаспределеннаяИнформационнаяБаза - Булево - (только чтение) Признак получения объектов для плана обмена РИБ.
+// Истина - требуется получить список объектов-исключений плана обмена РИБ;
+// Ложь - требуется получить список для плана обмена НЕ РИБ.
//
Процедура ПриПолученииОбъектовИсключенийПланаОбмена(Объекты, Знач РаспределеннаяИнформационнаяБаза) Экспорт
@@ -1562,12 +1633,11 @@
// то в параметр <Объект> необходимо добавить эти объекты метаданных.
//
// Параметры:
-// Объекты - Массив. Массив объектов метаданных конфигурации.
+// Объекты - Массив - список объектов метаданных конфигурации.
//
Процедура ПриПолученииОбъектовНачальногоОбразаПланаОбмена(Объекты) Экспорт
Объекты.Добавить(Метаданные.Константы.ПараметрыСлужебныхСобытий);
- Объекты.Добавить(Метаданные.Константы.ПараметрыБазовойФункциональности);
КонецПроцедуры
@@ -1582,15 +1652,7 @@
//
Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
-
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.МестаИспользованияСсылок);
-
- МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, Отчет, Ложь);
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "Основной");
- Вариант.Описание = НСтр("ru = 'Поиск мест использования объектов приложения.'");
- Вариант.Включен = Ложь;
-
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.МестаИспользованияСсылок);
КонецПроцедуры
// Заполняет перечень запросов внешних разрешений, которые обязательно должны быть предоставлены
@@ -1624,7 +1686,7 @@
// ОбъектМетаданных - ОбъектМетаданных - регистр или ссылочный объект.
//
// Возвращаемое значение:
-// Тип ссылки или ключа записи.
+// Тип.
//
Функция ТипСсылкиИлиКлючаЗаписиОбъектаМетаданных(ОбъектМетаданных) Экспорт
@@ -1658,7 +1720,7 @@
// ОбъектМетаданных - ОбъектМетаданных - регистр или ссылочный объект.
//
// Возвращаемое значение:
-// Тип объекта или набора записей.
+// Тип.
//
Функция ТипОбъектаИлиНабораЗаписейОбъектаМетаданных(ОбъектМетаданных) Экспорт
@@ -1687,6 +1749,42 @@
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Процедуры и функции работы с формами
+
+// Устанавливает размер шрифта заголовков групп формы для их корректного отображения в интерфейсе 8.2.
+//
+// Параметры:
+// Форма - УправляемаяФорма - Форма для изменения шрифта заголовков групп;
+// ИменаГрупп - Строка - Список имен групп формы, разделенных запятыми.
+//
+Процедура УстановитьОтображениеЗаголовковГрупп(Форма, ИменаГрупп = "") Экспорт
+
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ ЖирныйШрифт = Новый Шрифт(,, Истина);
+ Если НЕ ЗначениеЗаполнено(ИменаГрупп) Тогда
+ Для Каждого Элемент из Форма.Элементы Цикл
+ Если Тип(Элемент) = Тип("ГруппаФормы") И
+ Элемент.Вид = ВидГруппыФормы.ОбычнаяГруппа И
+ Элемент.ОтображатьЗаголовок = Истина И (
+ Элемент.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение ИЛИ
+ Элемент.Отображение = ОтображениеОбычнойГруппы.Нет ) Тогда
+ Элемент.ШрифтЗаголовка = ЖирныйШрифт;
+ КонецЕсли;
+ КонецЦикла;
+ Иначе
+ МассивЗаголовков = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИменаГрупп,,, Истина);
+ Для Каждого ИмяЗаголовка Из МассивЗаголовков Цикл
+ Элемент = Форма.Элементы[ИмяЗаголовка];
+ Если Элемент.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение ИЛИ Элемент.Отображение = ОтображениеОбычнойГруппы.Нет Тогда
+ Элемент.ШрифтЗаголовка = ЖирныйШрифт;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Прочие процедуры и функции.
@@ -1694,11 +1792,10 @@
// метаданных. Может потребоваться при обновлении информационной базы.
//
// Параметры:
-// ПолноеИмя - полное имя объекта метаданных, который может содержать
-// предопределенные элементы.
+// ПолноеИмя - Строка - полное имя объекта метаданных, который может содержать предопределенные элементы.
//
// Возвращаемое значение:
-// ФиксированныйМассив имен предопределенных элементов.
+// ФиксированныйМассив.
//
Функция ИменаПредопределенныхДанных(ПолноеИмя) Экспорт
@@ -1800,7 +1897,7 @@
ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных());
Параметры.Вставить("ЭтоРазделеннаяКонфигурация", ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация());
- Параметры.Вставить("ЕстьДоступДляОбновленияВерсииПлатформы", ПравоДоступа("Администрирование", Метаданные));
+ Параметры.Вставить("ЕстьДоступДляОбновленияВерсииПлатформы", Пользователи.ЭтоПолноправныйПользователь(,Истина));
Параметры.Вставить("ИменаПодсистем", СтандартныеПодсистемыПовтИсп.ИменаПодсистем());
@@ -1942,10 +2039,11 @@
КонецЕсли;
КонецЕсли;
- Если Параметры.ПолученныеПараметрыКлиента <> Неопределено
- И НЕ Параметры.ПолученныеПараметрыКлиента.Свойство("ДействияПередАвторизациейПользователяВыполнены") Тогда
-
- Возврат Ложь;
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
+ МодульАвтономнаяРаботаСлужебный = ОбщегоНазначения.ОбщийМодуль("АвтономнаяРаботаСлужебный");
+ Если МодульАвтономнаяРаботаСлужебный.ПродолжитьНастройкуАвтономногоРабочегоМеста(Параметры) Тогда
+ Возврат Ложь;
+ КонецЕсли;
КонецЕсли;
ОшибкаАвторизации = ПользователиСлужебный.АвторизоватьТекущегоПользователя(Истина);
@@ -1964,7 +2062,7 @@
// Требуется привилегированный режим.
//
// Параметры:
-// Запуск - Булево. Если установить Истина, состояние будет установлено,
+// Запуск - Булево - Если установить Истина, состояние будет установлено,
// если установить Ложь, состояние будет снято.
//
Процедура УстановитьЗапускОбновленияИнформационнойБазы(Запуск) Экспорт
@@ -2055,7 +2153,7 @@
// ИмяПодсистемы - Строка - Имя подсистемы.
//
// Возвращаемое значение:
-// Массив строк.
+// Массив - список значений типа Строка.
//
Функция ПоддерживаемыеВерсии(ИмяПодсистемы) Экспорт
@@ -2082,15 +2180,17 @@
// Возвращает соответствие имен событий массивам их обработчиков.
//
// Возвращаемое значение:
-// Структура со свойствами:
-// НаКлиенте - Соответствие (см. ниже)
-// НаСервере - Соответствие (см. ниже)
-//
-// Соответствие, где
-// Ключ - Строка - полное имя события,
-// Значение - Массив структур со свойствами:
-// Версия - Строка - версия обработчика (пустая, если не была указана),
-// Модуль - имя модуля в котором размещен обработчик.
+// Структура - информация об обработчиках событий:
+// * НаКлиенте - Соответствие -
+// ** Ключ - Строка - полное имя события,
+// ** Значение - Массив - список структур со свойствами:
+// *** Версия - Строка - версия обработчика (пустая, если не была указана),
+// *** Модуль - Строка - имя модуля, в котором размещен обработчик.
+// * НаСервере - Соответствие -
+// ** Ключ - Строка - полное имя события,
+// ** Значение - Массив - список структур со свойствами:
+// *** Версия - Строка - версия обработчика (пустая, если не была указана),
+// *** Модуль - Строка - имя модуля, в котором размещен обработчик.
//
Функция ОбработчикиСобытий() Экспорт
@@ -2341,7 +2441,7 @@
// Проверка загрузки идентификаторов объектов метаданных из главного узла.
СписокКритичныхИзменений = "";
Попытка
- Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(, , Истина, , , СписокКритичныхИзменений);
+ Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(, , Истина, , СписокКритичныхИзменений);
Исключение
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда
// Сброс кэша сообщения обмена.
@@ -2499,13 +2599,6 @@
Обработчик.ОбщиеДанные = Истина;
Обработчик.МонопольныйРежим = Ложь;
- Обработчик = Обработчики.Добавить();
- Обработчик.Версия = "*";
- Обработчик.Процедура = "СтандартныеПодсистемыСервер.СоздатьНеразделенныеПредопределенныеЭлементы";
- Обработчик.Приоритет = 99;
- Обработчик.ОбщиеДанные = Истина;
- Обработчик.МонопольныйРежим = Ложь;
-
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "2.1.3.4";
Обработчик.Процедура = "СтандартныеПодсистемыСервер.УстановитьВерсиюОписанийИзменений";
@@ -2515,6 +2608,11 @@
Обработчик.ОбщиеДанные = Истина;
Обработчик.Процедура = "СтандартныеПодсистемыСервер.ОбновитьПараметрыАдминистрированияИнформационнойБазы";
+ Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "2.2.3.35";
+ Обработчик.ОбщиеДанные = Истина;
+ Обработчик.Процедура = "СтандартныеПодсистемыСервер.УстановитьЗначениеКонстантыГлавныйУзел";
+
КонецПроцедуры
// Устанавливает корректное значение константе НеИспользоватьРазделениеПоОбластямДанных
@@ -2637,52 +2735,6 @@
КонецПроцедуры
-// Обработчик создания/обновления предопределенных элементов
-// неразделенных объектов метаданных.
-//
-Процедура СоздатьНеразделенныеПредопределенныеЭлементы() Экспорт
-
- УстановитьПривилегированныйРежим(Истина);
-
- Если НЕ ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда
- // Для конфигураций без разделения данных действий не требуется.
- Возврат;
- КонецЕсли;
-
- Если ОбщегоНазначенияПовтИсп.РазделениеВключено()
- И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
- // В разделенном сеансе действия недоступны и не требуются.
- Возврат;
- КонецЕсли;
-
- Если НЕ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда
- // Действия не рассчитаны на произвольные способы разделения.
- Возврат;
- КонецЕсли;
-
- ОсновнойРазделитель = ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных();
- ВспомогательныйРазделитель = ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных();
-
- КоллекцииМетаданных = Новый Массив;
- КоллекцииМетаданных.Добавить(Метаданные.Справочники);
- КоллекцииМетаданных.Добавить(Метаданные.ПланыВидовХарактеристик);
- КоллекцииМетаданных.Добавить(Метаданные.ПланыСчетов);
- КоллекцииМетаданных.Добавить(Метаданные.ПланыВидовРасчета);
-
- Для каждого Коллекция Из КоллекцииМетаданных Цикл
- Для Каждого ОбъектМетаданных Из Коллекция Цикл
- ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
- Если Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ПолноеИмя, ОсновнойРазделитель)
- И Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ПолноеИмя, ВспомогательныйРазделитель) Тогда
-
- МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
- МенеджерОбъекта.Выбрать().Следующий();
- КонецЕсли;
- КонецЦикла;
- КонецЦикла;
-
-КонецПроцедуры
-
// Удаляет сохраненные пароли и изменяет структуру хранения настроек.
//
Процедура ОбновитьПараметрыАдминистрированияИнформационнойБазы() Экспорт
@@ -2724,6 +2776,21 @@
КонецПроцедуры
+// Обновляет значение константы Главный узел в узлах АРМ
+//
+Процедура УстановитьЗначениеКонстантыГлавныйУзел() Экспорт
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда
+
+ МодульОбменДаннымиПовтИсп = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиПовтИсп");
+ Если МодульОбменДаннымиПовтИсп.ЭтоАвтономноеРабочееМесто() Тогда
+ СохранитьГлавныйУзел();
+ КонецЕсли;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Подтверждение завершения работы программы
@@ -2747,6 +2814,60 @@
Возврат Результат;
КонецФункции
+////////////////////////////////////////////////////////////////////////////////
+// Обработчики подписок на события
+
+// Обработчик события ПередЗаписью предопределенных элементов
+Процедура ЗапретитьПометкуУдаленияПредопределенныхЭлементовПередЗаписью(Источник, Отказ) Экспорт
+
+ Если Источник.ОбменДанными.Загрузка
+ Или Источник.ИмяПредопределенныхДанных = ""
+ Или Источник.ПометкаУдаления <> Истина Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Источник.ЭтоНовый() Тогда
+ ВызватьИсключение
+ НСтр("ru = 'Недопустимо создавать предопределенный элемент помеченный на удаление.'");
+ Иначе
+ СтарыеСвойства = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(
+ Источник.Ссылка, "ПометкаУдаления, ИмяПредопределенныхДанных");
+
+ Если СтарыеСвойства.ИмяПредопределенныхДанных <> ""
+ И СтарыеСвойства.ПометкаУдаления <> Истина Тогда
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Недопустимо помечать на удаление предопределенный элемент:
+ |""%1"".'"),
+ Строка(Источник.Ссылка));
+
+ ИначеЕсли СтарыеСвойства.ИмяПредопределенныхДанных = ""
+ И СтарыеСвойства.ПометкаУдаления = Истина Тогда
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Недопустимо связывать с именем предопределенного элемент, помеченный на удаление:
+ |""%1"".'"),
+ Строка(Источник.Ссылка));
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+// Обработчик события ПередУдалением предопределенных элементов
+Процедура ЗапретитьУдалениеПредопределенныхЭлементовПередУдалением(Источник, Отказ) Экспорт
+
+ Если Источник.ОбменДанными.Загрузка
+ Или Источник.ИмяПредопределенныхДанных = "" Тогда
+ Возврат;
+ КонецЕсли;
+
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Недопустимо удалять предопределенный элемент
+ |""%1"".'"),
+ Строка(Источник.Ссылка));
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработка подписок на события планов обмена РИБ
@@ -2892,19 +3013,19 @@
// Привилегированный режим (установлен платформой).
// Проверка основного языка программирования, установленного в конфигурации.
- ОбщегоНазначенияКлиентСервер.Проверить(
- Метаданные.ВариантВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский,
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ Если Метаданные.ВариантВстроенногоЯзыка <> Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Вариант встроенного языка конфигурации ""%1"" не поддерживается.
|Необходимо использовать вариант языка ""%2"".'"),
Метаданные.ВариантВстроенногоЯзыка,
- Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский));
-
+ Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский);
+ КонецЕсли;
+
// Проверка настройки совместимости конфигурации с версией платформы.
СистемнаяИнформация = Новый СистемнаяИнформация;
- ОбщегоНазначенияКлиентСервер.Проверить(ОбщегоНазначенияКлиентСервер.СравнитьВерсии(
- СистемнаяИнформация.ВерсияПриложения, "8.3.4.365") >= 0,
- НСтр("ru = 'Для запуска необходима версия платформы 1С:Предприятие 8.3.4.365 или выше.'"));
+ Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.4.365") < 0 Тогда
+ ВызватьИсключение НСтр("ru = 'Для запуска необходима версия платформы 1С:Предприятие 8.3.4.365 или выше.'");
+ КонецЕсли;
Режимы = Метаданные.СвойстваОбъектов.РежимСовместимости;
ТекущийРежим = Метаданные.РежимСовместимости;
@@ -3313,7 +3434,7 @@
// Синтаксис:
// Процедура ПриОбработкеПараметровЗапуска(ПервыйПараметр, ПараметрыЗапуска, Отказ) Экспорт
//
- // (То же, что ОбщегоНазначенияКлиентПереопределяемый.ОбработатьПараметрыЗапуска).
+ // (То же, что ОбщегоНазначенияКлиентПереопределяемый.ПриОбработкеПараметровЗапуска).
КлиентскиеСобытия.Добавить(
"СтандартныеПодсистемы.БазоваяФункциональность\ПриОбработкеПараметровЗапуска");
@@ -3332,22 +3453,9 @@
// Доопределяет список предупреждений пользователю перед завершением работы системы.
//
// Параметры:
- // Предупреждения - Массив, в который можно добавить элементы типа Структура с полями:
- // ТекстФлажка - Строка - текст флажка.
- // ПоясняющийТекст - Строка - текст, выводимый в форме сверху
- // управляющего элемента (флажок или гиперссылка).
- // ТекстГиперссылки - Строка - текст гиперссылки.
- // ДействиеПриУстановленномФлажке - Структура с полями:
- // Форма - путь к открываемой форме.
- // ПараметрыФормы - произвольная структура параметров формы Форма.
- // ДействиеПриНажатииГиперссылки - Структура с полями:
- // Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку.
- // ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы.
- // ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу
- // вместо универсальной формы в случае, когда в списке
- // предупреждений оказывается только одно данное предупреждение.
- // ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура
- // параметров для вышеописанной формы.
+ // Предупреждения - Массив - в массив можно добавить элементы типа Структура,
+ // свойства которой см. в СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы.
+ //
// Синтаксис:
// Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт
//
@@ -3373,7 +3481,7 @@
// Синтаксис:
// Процедура ПриДобавленииОбработчиковУстановкиПараметровСеанса(Обработчики) Экспорт
//
- // (То же, что ОбщегоНазначенияПереопределяемый.ОбработчикиИнициализацииПараметровСеанса).
+ // (То же, что ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса).
СерверныеСобытия.Добавить(
"СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииОбработчиковУстановкиПараметровСеанса");
@@ -3410,7 +3518,7 @@
// Синтаксис:
// Процедура ПриДобавленииИсключенийПоискаСсылок(Исключения) Экспорт
//
- // (То же, что ОбщегоНазначенияПереопределяемый.ПолучитьИсключенияПоискаСсылок).
+ // (То же, что ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок).
СерверныеСобытия.Добавить(
"СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииИсключенийПоискаСсылок");
@@ -3758,6 +3866,11 @@
СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам"].Добавить(
"СтандартныеПодсистемыСервер");
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ВариантыОтчетов\ПриНастройкеВариантовОтчетов"].Добавить(
+ "СтандартныеПодсистемыСервер");
+ КонецЕсли;
+
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.ВыгрузкаЗагрузкаДанных") Тогда
СерверныеОбработчики[
"ТехнологияСервиса.ВыгрузкаЗагрузкаДанных\ПриЗаполненииТиповОбщихДанныхПоддерживающихСопоставлениеСсылокПриЗагрузке"].Добавить(
@@ -3959,7 +4072,7 @@
ЕстьТекущиеИзменения = Ложь;
Если ТолькоПроверка Тогда
// Проверка только критичных изменений: добавление, удаление или переименование объектов метаданных.
- Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(, ЕстьТекущиеИзменения, ТолькоПроверка, ЕстьТекущиеИзменения, ЕстьТекущиеИзменения);
+ Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(, ЕстьТекущиеИзменения, ТолькоПроверка, ЕстьТекущиеИзменения);
Иначе
Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(ЕстьТекущиеИзменения);
КонецЕсли;
diff --git a/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl b/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl
index 5054a162f..cbd40247e 100644
--- a/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl
@@ -343,7 +343,7 @@
// УчитыватьПробелы - Булево - Флаг учета пробелов, если Истина, то пробелы при проверке игнорируются
//
// Возвращаемое значение:
-// Булево - Истина - строка содержит только цифры или пустая, Ложь - строка содержит не только цифры.
+// Булево - Истина - строка содержит только цифры или пустая, Ложь - строка содержит иные символы.
//
Функция ТолькоЦифрыВСтроке(Знач СтрокаПроверки, Знач УчитыватьЛидирующиеНули = Истина, Знач УчитыватьПробелы = Истина) Экспорт
@@ -385,8 +385,8 @@
// ДопустимыеСимволы - строка для проверки.
//
// Возвращаемое значение:
-// Истина - строка содержит только кириллические (или допустимые) символы или пустая;
-// Ложь - строка содержит не только кириллические (или допустимые) символы.
+// Булево - Истина, если строка содержит только кириллические (или допустимые) символы или пустая;
+// Ложь, если строка содержит иные символы.
//
Функция ТолькоКириллицаВСтроке(Знач СтрокаПроверки, Знач УчитыватьРазделителиСлов = Истина, ДопустимыеСимволы = "") Экспорт
@@ -426,8 +426,8 @@
// ДопустимыеСимволы - строка для проверки.
//
// Возвращаемое значение:
-// Истина - строка содержит только латинские (или допустимые) символы;
-// Ложь - строка содержит не только латинские (или допустимые) символы.
+// Булево - Истина, если строка содержит только латинские (или допустимые) символы;
+// - Ложь, если строка содержит иные символы.
//
Функция ТолькоЛатиницаВСтроке(Знач СтрокаПроверки, Знач УчитыватьРазделителиСлов = Истина, ДопустимыеСимволы = "") Экспорт
@@ -658,10 +658,6 @@
// Строка - строка после замены символов.
//
// Примечание: функция предназначена для простых случаев, например, для замены латиницы на похожие кириллические символы.
-// Функция не анализирует повторную замену символов, поэтому такой вызов:
-// ЗаменитьОдниСимволыДругими("кр", "карета", "гз") вернет слово "газета", а
-// ЗаменитьОдниСимволыДругими("кр", "карета", "рк") не вернет слово "ракета".
-//
Функция ЗаменитьОдниСимволыДругими(ЗаменяемыеСимволы, Строка, СимволыЗамены) Экспорт
Результат = Строка;
diff --git a/SSL/src/CommonModules/ТекущиеДелаПереопределяемый/Module.bsl b/SSL/src/CommonModules/ТекущиеДелаПереопределяемый/Module.bsl
new file mode 100644
index 000000000..984c0428c
--- /dev/null
+++ b/SSL/src/CommonModules/ТекущиеДелаПереопределяемый/Module.bsl
@@ -0,0 +1,66 @@
+////////////////////////////////////////////////////////////////////////////////
+// Подсистема "Текущие дела".
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#Область ПрограммныйИнтерфейс
+
+// Заполняет список обработчиков текущих дел.
+//
+// Параметры:
+// Обработчики - Массив - массив ссылок на модули менеджеров или общие модули, в которых
+// определена процедура ПриЗаполненииСпискаТекущихДел.
+//
+Процедура ПриОпределенииОбработчиковТекущихДел(Обработчики) Экспорт
+
+
+
+КонецПроцедуры
+
+// Получает список разделов командного интерфейса в заданном порядке.
+//
+// Параметры:
+// Разделы - Массив - массив разделов командного интерфейса.
+// Задает начальный порядок разделов в панели текущих дел.
+//
+Процедура ПриОпределенииПорядкаРазделовКомандногоИнтерфейса(Разделы) Экспорт
+
+
+
+КонецПроцедуры
+
+// Устанавливает общие параметры запросов для расчета текущих дел.
+// см. ТекущиеДелаСлужебный.УстановитьОбщиеПараметрыЗапросов()
+//
+// Параметры:
+// Запрос - выполняемый запрос
+// ОбщиеПараметрыЗапросов - Структура - общие значения для расчета текущих дел
+//
+Процедура УстановитьОбщиеПараметрыЗапросов(Запрос, ОбщиеПараметрыЗапросов) Экспорт
+
+КонецПроцедуры
+
+// Процедура-обработчик, вызываемая в форме расшифровки текущего дела.
+// Устанавливает параметры открытия формы и необходимые отборы списка формы.
+//
+// Параметры:
+// Форма - УправляемаяФорма
+// Список - ДинамическийСписок
+//
+Процедура ПриСозданииНаСервере(Форма, Список) Экспорт
+
+КонецПроцедуры
+
+// Процедура-обработчик, вызываемая в форме расшифровки текущего дела.
+// Позволяет заменить сохраненные значения реквизитов формы
+// Заменяет сохраненные значения реквизитов формы на свойства Форма.Параметры.СтруктураБыстрогоОтбора
+//
+// Параметры:
+// Форма - УправляемаяФорма
+// Настройки - Соответствие
+//
+Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Форма, Настройки) Экспорт
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/CommonModules/ТекущиеДелаПереопределяемый/ТекущиеДелаПереопределяемый.mdo b/SSL/src/CommonModules/ТекущиеДелаПереопределяемый/ТекущиеДелаПереопределяемый.mdo
new file mode 100644
index 000000000..2e6eaf993
--- /dev/null
+++ b/SSL/src/CommonModules/ТекущиеДелаПереопределяемый/ТекущиеДелаПереопределяемый.mdo
@@ -0,0 +1,11 @@
+
+
+ ТекущиеДелаПереопределяемый
+
+ ru
+ Текущие дела переопределяемый
+
+ true
+ true
+ true
+
diff --git a/SSL/src/CommonModules/ТекущиеДелаСлужебный/Module.bsl b/SSL/src/CommonModules/ТекущиеДелаСлужебный/Module.bsl
new file mode 100644
index 000000000..0cbfd3dc6
--- /dev/null
+++ b/SSL/src/CommonModules/ТекущиеДелаСлужебный/Module.bsl
@@ -0,0 +1,281 @@
+////////////////////////////////////////////////////////////////////////////////
+// Подсистема "Текущие дела".
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Объявляет служебные события подсистемы ТекущиеДела.
+//
+// Серверные события:
+// ПриЗаполненииСпискаТекущихДел.
+//
+// См. описание этой же процедуры в модуле СтандартныеПодсистемыСервер.
+Процедура ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия) Экспорт
+
+ // СЕРВЕРНЫЕ СОБЫТИЯ.
+
+ // Заполняет список текущих дел пользователя.
+ //
+ // Параметры:
+ // ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+ // * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+ // * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+ // * Важное - Булево - если Истина, дело будет выделено красным цветом.
+ // * Представление - Строка - представление дела, выводимое пользователю.
+ // * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+ // * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+ // дела на панели "Текущие дела".
+ // * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+ // * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+ // или объект метаданных подсистема.
+ // * Подсказка - Строка - текст подсказки.
+ //
+ // Синтаксис:
+ // Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+ //
+ СерверныеСобытия.Добавить("СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел");
+
+КонецПроцедуры
+
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// АдресХранилища - Строка - адрес временного хранилища, куда будет помещен
+// результат выполнения функции.
+// Если не задано, возвращает таблицу значения.
+//
+// Возвращаемое значение:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Функция СписокТекущихДелПользователя(АдресХранилища = Неопределено) Экспорт
+
+ ТекущиеДела = НоваяТаблицаТекущихДел();
+
+ // Заполнение текущих дел БСП.
+ ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия(
+ "СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел");
+
+ Для каждого Обработчик Из ОбработчикиСобытия Цикл
+ Обработчик.Модуль.ПриЗаполненииСпискаТекущихДел(ТекущиеДела);
+ КонецЦикла;
+
+ // Добавление дел от прикладных конфигураций.
+ ОбработчикиЗаполненияДел = Новый Массив;
+ ТекущиеДелаПереопределяемый.ПриОпределенииОбработчиковТекущихДел(ОбработчикиЗаполненияДел);
+
+ Для Каждого Обработчик Из ОбработчикиЗаполненияДел Цикл
+ Обработчик.ПриЗаполненииСпискаТекущихДел(ТекущиеДела);
+ КонецЦикла;
+
+ // Постобработка результата.
+ ПреобразоватьТаблицуТекущихДел(ТекущиеДела);
+
+ Если АдресХранилища = Неопределено Тогда
+ Возврат ТекущиеДела;
+ Иначе
+ ПоместитьВоВременноеХранилище(ТекущиеДела, АдресХранилища);
+ КонецЕсли;
+
+КонецФункции
+
+// Возвращает структуру сохраненных настроек отображения дел
+// для текущего пользователя.
+//
+Функция СохраненныеНастройкиОтображения() Экспорт
+
+ НастройкиОтображения = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиОтображения");
+ Если НастройкиОтображения = Неопределено Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Если ТипЗнч(НастройкиОтображения) <> Тип("Структура") Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Если НастройкиОтображения.Свойство("ДеревоДел")
+ И НастройкиОтображения.Свойство("ВидимостьРазделов")
+ И НастройкиОтображения.Свойство("ВидимостьДел") Тогда
+ Возврат НастройкиОтображения;
+ КонецЕсли;
+
+ Возврат Неопределено;
+
+КонецФункции
+
+// Получает числовые значения дел из переданного запроса.
+//
+// Запрос с данными должен содержать только одну строку с произвольным количеством полей.
+// Значения этих полей должны являться значениями соответствующих показателей.
+//
+// Пример простейшего запроса:
+// ВЫБРАТЬ
+// Количество(*) КАК <Имя предопределенного элемента - показателя количества документов>
+// ИЗ
+// Документ.<Имя документа>
+//
+// Параметры:
+// Запрос - выполняемый запрос
+// ОбщиеПараметрыЗапросов - Структура - общие значения для расчета текущих дел.
+//
+Функция ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов = Неопределено) Экспорт
+
+ // Установим общие параметры для всех запросов.
+ // Специфические параметры этого запроса, если таковые имеются, должны быть установлены ранее.
+ Если Не ОбщиеПараметрыЗапросов = Неопределено Тогда
+ УстановитьОбщиеПараметрыЗапросов(Запрос, ОбщиеПараметрыЗапросов);
+ КонецЕсли;
+
+ Результат = Запрос.ВыполнитьПакет();
+
+ НомераЗапросовПакета = Новый Массив;
+ НомераЗапросовПакета.Добавить(Результат.Количество() - 1);
+
+ // Выберем все запросы с данными
+ РезультатЗапроса = Новый Структура;
+ Для Каждого НомерЗапроса Из НомераЗапросовПакета Цикл
+
+ Выборка = Результат[НомерЗапроса].Выбрать();
+
+ Если Выборка.Следующий() Тогда
+
+ Для Каждого Колонка Из Результат[НомерЗапроса].Колонки Цикл
+ ЗначениеДела = ?(ТипЗнч(Выборка[Колонка.Имя]) = Тип("Null"), 0, Выборка[Колонка.Имя]);
+ РезультатЗапроса.Вставить(Колонка.Имя, ЗначениеДела);
+ КонецЦикла;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат РезультатЗапроса;
+
+КонецФункции
+
+// Возвращает структуру общих значений, используемых для расчета текущих дел.
+//
+// Возвращаемое значение:
+// Структура - имя значение и само значение
+//
+Функция ОбщиеПараметрыЗапросов() Экспорт
+
+ ОбщиеПараметрыЗапросов = Новый Структура;
+ ОбщиеПараметрыЗапросов.Вставить("Пользователь", ПользователиКлиентСервер.ТекущийПользователь());
+ ОбщиеПараметрыЗапросов.Вставить("ЭтоПолноправныйПользователь", Пользователи.ЭтоПолноправныйПользователь());
+ ОбщиеПараметрыЗапросов.Вставить("ТекущаяДата", ТекущаяДатаСеанса());
+ ОбщиеПараметрыЗапросов.Вставить("ПустаяДата", '00010101000000');
+
+ Возврат ОбщиеПараметрыЗапросов;
+
+КонецФункции
+
+// Устанавливает общие параметры запросов для расчета текущих дел.
+//
+// Параметры:
+// Запрос - выполняемый запрос
+// ОбщиеПараметрыЗапросов - Структура - общие значения для расчета показателей
+//
+Процедура УстановитьОбщиеПараметрыЗапросов(Запрос, ОбщиеПараметрыЗапросов) Экспорт
+
+ Для Каждого КлючИЗначение Из ОбщиеПараметрыЗапросов Цикл
+ Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
+ КонецЦикла;
+
+ ТекущиеДелаПереопределяемый.УстановитьОбщиеПараметрыЗапросов(Запрос, ОбщиеПараметрыЗапросов);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+// Только для внутреннего использования.
+//
+Процедура ПреобразоватьТаблицуТекущихДел(ТекущиеДела)
+
+ ТекущиеДела.Колонки.Добавить("ИдентификаторВладельца", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(250)));
+ ТекущиеДела.Колонки.Добавить("ЭтоРаздел", Новый ОписаниеТипов("Булево"));
+ ТекущиеДела.Колонки.Добавить("ПредставлениеРаздела", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(250)));
+
+ УдаляемыеДела = Новый Массив;
+ Для Каждого Дело Из ТекущиеДела Цикл
+
+ Если ТипЗнч(Дело.Владелец) = Тип("ОбъектМетаданных") Тогда
+ РазделДоступен = ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(Дело.Владелец);
+ Если Не РазделДоступен Тогда
+ УдаляемыеДела.Добавить(Дело);
+ Продолжить;
+ КонецЕсли;
+
+ Дело.ИдентификаторВладельца = СтрЗаменить(Дело.Владелец.ПолноеИмя(), ".", "");
+ Дело.ЭтоРаздел = Истина;
+ Дело.ПредставлениеРаздела = Дело.Владелец.Синоним;
+ Иначе
+ ЭтоИдентификаторДела = (ТекущиеДела.Найти(Дело.Владелец, "Идентификатор") <> Неопределено);
+ Если ЭтоИдентификаторДела Тогда
+ Дело.ИдентификаторВладельца = Дело.Владелец;
+ Иначе
+ Дело.ИдентификаторВладельца = СтрЗаменить(Дело.Владелец, " ", "");
+ Дело.ЭтоРаздел = Истина;
+ Дело.ПредставлениеРаздела = Дело.Владелец;
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Для Каждого УдаляемоеДело Из УдаляемыеДела Цикл
+ ТекущиеДела.Удалить(УдаляемоеДело);
+ КонецЦикла;
+
+ ТекущиеДела.Колонки.Удалить("Владелец");
+
+КонецПроцедуры
+
+// Создает пустую таблицу дел пользователя.
+//
+// Возвращаемое значение:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных -
+// ОбъектМетаданных: Подсистема - подсистема командного интерфейса, в которой
+// будет размещено данное дело.
+// Строка - идентификатор дела верхнего уровня, требуется
+// для указания владельца дочернего дела (расшифровки дела верхнего уровня).
+// * Подсказка - Строка - текст подсказки.
+//
+Функция НоваяТаблицаТекущихДел()
+
+ ДелаПользователя = Новый ТаблицаЗначений;
+ ДелаПользователя.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(250)));
+ ДелаПользователя.Колонки.Добавить("ЕстьДела", Новый ОписаниеТипов("Булево"));
+ ДелаПользователя.Колонки.Добавить("Важное", Новый ОписаниеТипов("Булево"));
+ ДелаПользователя.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(250)));
+ ДелаПользователя.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
+ ДелаПользователя.Колонки.Добавить("Форма", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(250)));
+ ДелаПользователя.Колонки.Добавить("ПараметрыФормы", Новый ОписаниеТипов("Структура"));
+ ДелаПользователя.Колонки.Добавить("Владелец");
+ ДелаПользователя.Колонки.Добавить("Подсказка", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(250)));
+
+ Возврат ДелаПользователя;
+
+КонецФункции
+
+#КонецОбласти
diff --git a/SSL/src/CommonModules/ТекущиеДелаСлужебный/ТекущиеДелаСлужебный.mdo b/SSL/src/CommonModules/ТекущиеДелаСлужебный/ТекущиеДелаСлужебный.mdo
new file mode 100644
index 000000000..cc001786a
--- /dev/null
+++ b/SSL/src/CommonModules/ТекущиеДелаСлужебный/ТекущиеДелаСлужебный.mdo
@@ -0,0 +1,11 @@
+
+
+ ТекущиеДелаСлужебный
+
+ ru
+ Текущие дела служебный
+
+ true
+ true
+ true
+
diff --git a/SSL/src/CommonModules/ТекущиеДелаСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/ТекущиеДелаСлужебныйПовтИсп/Module.bsl
new file mode 100644
index 000000000..4c735d88f
--- /dev/null
+++ b/SSL/src/CommonModules/ТекущиеДелаСлужебныйПовтИсп/Module.bsl
@@ -0,0 +1,75 @@
+////////////////////////////////////////////////////////////////////////////////
+// Подсистема "Текущие дела".
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Возвращает соответствие объектов метаданных и подсистем командного интерфейса.
+//
+// Возвращаемое значение:
+// Соответствие, где ключем является полное имя объекта, а значение - массив подсистем
+// командного интерфейса программы, в которые входит данный объект.
+//
+Функция ПринадлежностьОбъектовРазделамКомандногоИнтерфейса() Экспорт
+
+ СоответствиеОбъектовИПодсистем = Новый Соответствие;
+
+ Для Каждого Подсистема Из Метаданные.Подсистемы Цикл
+ Если Не Подсистема.ВключатьВКомандныйИнтерфейс
+ Или Не ПравоДоступа("Просмотр", Подсистема)
+ Или Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(Подсистема) Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Для Каждого Объект Из Подсистема.Состав Цикл
+ ПодсистемыОбъекта = СоответствиеОбъектовИПодсистем[Объект.ПолноеИмя()];
+ Если ПодсистемыОбъекта = Неопределено Тогда
+ ПодсистемыОбъекта = Новый Массив;
+ ИначеЕсли ПодсистемыОбъекта.Найти(Подсистема) <> Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ ПодсистемыОбъекта.Добавить(Подсистема);
+ СоответствиеОбъектовИПодсистем.Вставить(Объект.ПолноеИмя(), ПодсистемыОбъекта);
+ КонецЦикла;
+
+ ДобавитьОбъектыПодчиненныхПодсистем(Подсистема, СоответствиеОбъектовИПодсистем);
+ КонецЦикла;
+
+ Возврат СоответствиеОбъектовИПодсистем;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+// Только для внутреннего использования
+//
+Процедура ДобавитьОбъектыПодчиненныхПодсистем(ПодсистемаПервогоУровня, СоответствиеОбъектовИПодсистем, ПодсистемаРодитель = Неопределено)
+
+ Подсистемы = ?(ПодсистемаРодитель = Неопределено, ПодсистемаПервогоУровня, ПодсистемаРодитель);
+
+ Для Каждого Подсистема Из Подсистемы.Подсистемы Цикл
+ Если Подсистема.ВключатьВКомандныйИнтерфейс
+ И ПравоДоступа("Просмотр", Подсистема)
+ И ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(Подсистема) Тогда
+
+ Для Каждого Объект Из Подсистема.Состав Цикл
+ ПодсистемыОбъекта = СоответствиеОбъектовИПодсистем[Объект.ПолноеИмя()];
+ Если ПодсистемыОбъекта = Неопределено Тогда
+ ПодсистемыОбъекта = Новый Массив;
+ ИначеЕсли ПодсистемыОбъекта.Найти(ПодсистемаПервогоУровня) <> Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ ПодсистемыОбъекта.Добавить(ПодсистемаПервогоУровня);
+ СоответствиеОбъектовИПодсистем.Вставить(Объект.ПолноеИмя(), ПодсистемыОбъекта);
+ КонецЦикла;
+
+ ДобавитьОбъектыПодчиненныхПодсистем(ПодсистемаПервогоУровня, СоответствиеОбъектовИПодсистем, Подсистема);
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/CommonModules/ТекущиеДелаСлужебныйПовтИсп/ТекущиеДелаСлужебныйПовтИсп.mdo b/SSL/src/CommonModules/ТекущиеДелаСлужебныйПовтИсп/ТекущиеДелаСлужебныйПовтИсп.mdo
new file mode 100644
index 000000000..4ca168305
--- /dev/null
+++ b/SSL/src/CommonModules/ТекущиеДелаСлужебныйПовтИсп/ТекущиеДелаСлужебныйПовтИсп.mdo
@@ -0,0 +1,12 @@
+
+
+ ТекущиеДелаСлужебныйПовтИсп
+
+ ru
+ Текущие дела служебный повт исп
+
+ true
+ true
+ true
+ DuringRequest
+
diff --git a/SSL/src/CommonModules/УправлениеДоступом/Module.bsl b/SSL/src/CommonModules/УправлениеДоступом/Module.bsl
index 7cc28b460..ec022932c 100644
--- a/SSL/src/CommonModules/УправлениеДоступом/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеДоступом/Module.bsl
@@ -8,32 +8,32 @@
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции, используемые для проверки прав
-// Проверяет, что у пользователя есть роль в одном из профилей
-// тех групп доступа в которых он участвует, например,
-// роль ПросмотрЖурналаРегистрации, роль ПечатьНепроведенныхДокументов.
+// Проверяет, что у пользователя есть роль в одном из профилей тех групп доступа в которых он участвует,
+// например, роль ПросмотрЖурналаРегистрации, роль ПечатьНепроведенныхДокументов.
//
-// Если указан объект, тогда дополнительно проверяет, что группа доступа
-// в профиле которой есть указанная роль также предоставляет право Чтение
-// указанного объекта.
+// Если указан объект (или наборы значений доступа), тогда дополнительно проверяется,
+// что группа доступа предоставляет право Чтение указанного объекта (или набор значений доступа разрешен).
//
// Параметры:
// Роль - Строка - имя роли.
//
-// СсылкаНаОбъект - Ссылка на объект для которого заполняются наборы значений доступа
+// СсылкаНаОбъект - Ссылка - на объект для которого заполняются наборы значений доступа
// для проверки права Чтение.
-// - ТаблицаЗначений(НомерНабора, ВидДоступа, ЗначениеДоступа) - произвольная
-// таблица наборов значений доступа.
-// Пустую подготовленную таблицу можно получить с помощью функции
-// УправлениеДоступом.ТаблицаНаборыЗначенийДоступа() - колонки
-// Чтение, Изменение не заполнять.
+// - ТаблицаЗначений - таблица произвольных наборов значений доступа с колонками:
+// * НомерНабора - Число - номер, группирующий несколько строк в отдельный набор.
+// * ВидДоступа - Строка - имя вида доступа, указанного в переопределяемом модуле.
+// * ЗначениеДоступа - Ссылка - на тип значения доступа указанного в переопределяемом модуле.
+// Пустую подготовленную таблицу можно получить с помощью функции
+// ТаблицаНаборыЗначенийДоступа общего модуля УправлениеДоступом
+// (колонки Чтение, Изменение не заполнять).
//
-// Пользователь - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи, Неопределено.
-// Если не заполнено, тогда право проверяется для текущего пользователя.
+// Пользователь - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи, Неопределено - если
+// параметр не указан, тогда право проверяется для текущего пользователя.
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, тогда у пользователя есть роль с учетом ограничений.
//
-Функция ЕстьРоль(Знач Роль, Знач НаборыЗначенийДоступа = Неопределено, Знач Пользователь = Неопределено) Экспорт
+Функция ЕстьРоль(Знач Роль, Знач СсылкаНаОбъект = Неопределено, Знач Пользователь = Неопределено) Экспорт
Пользователь = ?(ЗначениеЗаполнено(Пользователь), Пользователь, Пользователи.АвторизованныйПользователь());
Если Пользователи.ЭтоПолноправныйПользователь(Пользователь) Тогда
@@ -42,7 +42,7 @@
УстановитьПривилегированныйРежим(Истина);
- Если НаборыЗначенийДоступа = Неопределено ИЛИ НЕ ОграничиватьДоступНаУровнеЗаписей() Тогда
+ Если СсылкаНаОбъект = Неопределено ИЛИ НЕ ОграничиватьДоступНаУровнеЗаписей() Тогда
// Проверка, что роль назначается пользователю через группу доступа по профилю.
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("АвторизованныйПользователь", Пользователь);
@@ -64,10 +64,9 @@
Возврат НЕ Запрос.Выполнить().Пустой();
КонецЕсли;
- Если ТипЗнч(НаборыЗначенийДоступа) = Тип("ТаблицаЗначений") Тогда
- НаборыЗначенийДоступа = НаборыЗначенийДоступа.Скопировать();
+ Если ТипЗнч(СсылкаНаОбъект) = Тип("ТаблицаЗначений") Тогда
+ НаборыЗначенийДоступа = СсылкаНаОбъект.Скопировать();
Иначе
- СсылкаНаОбъект = НаборыЗначенийДоступа;
НаборыЗначенийДоступа = ТаблицаНаборыЗначенийДоступа();
СсылкаНаОбъект.ПолучитьОбъект().ЗаполнитьНаборыЗначенийДоступа(НаборыЗначенийДоступа);
// Выбор только наборов значений доступа предназначенных для проверки права Чтение.
@@ -339,9 +338,8 @@
КонецФункции
// Проверяет, что для пользователя настроено разрешение права для объекта.
-// Например, для папки файлов могут быть настроены права "УправлениеПравами",
-// "Чтение", "ИзменениеПапок", причем право "Чтение" являются,
-// как правом для папки файлов, так и правом для файлов.
+// Например, для папки файлов могут быть настроены права "УправлениеПравами", "Чтение", "ИзменениеПапок",
+// причем право "Чтение" являются, как правом для папки файлов, так и правом для файлов.
//
// Параметры:
// Право - Строка - имя права, как оно указано в процедуре ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов
@@ -351,11 +349,12 @@
// указанных в процедуре ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов
// общего модуля УправлениеДоступомПереопределяемый, например, ссылка на папку файлов.
//
-// Пользователь - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи, Неопределено.
-// Если не заполнено, тогда право проверяется для текущего пользователя.
+// Пользователь - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи, Неопределено - если
+// параметр не указан, тогда право проверяется для текущего пользователя.
//
// Возвращаемое значение:
-// Булево. Истина - настроено разрешение права с учетом всех разрешающих и запрещающих настроек в иерархии.
+// Булево - если Истина, то настроено разрешение права с учетом всех разрешающих и
+// запрещающих настроек в иерархии.
//
Функция ЕстьПраво(Право, СсылкаНаОбъект, Пользователь = Неопределено) Экспорт
@@ -439,6 +438,10 @@
// Процедуры и функции для получения общих настроек подсистемы
// Проверяет используется ли ограничении доступа на уровне записей.
+//
+// Возвращаемое значение:
+// Булево - если Истина, тогда доступ ограничивается на уровне записей.
+//
Функция ОграничиватьДоступНаУровнеЗаписей() Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -451,43 +454,40 @@
// Процедуры и функции, используемые для настройки интерфейса управляемых форм.
// Настраивает форму значения доступа, которое использует группы значений доступа
-// при настройке разрешенных значений в группах доступа пользователей.
+// для выбора разрешенных значений в группах доступа пользователей.
//
-// Поддерживается только для случая, когда выбирается одна группа доступа, а не несколько.
+// Поддерживается только для случая, когда у значения доступа выбирается одна группа значений доступа,
+// а не несколько.
//
-// Для элемента формы ГруппаДоступа, связанного с реквизитом ГруппаДоступа
-// устанавливает список групп значений доступа в параметр выбора, которые дают
-// доступ на изменение значения доступа.
+// Для элемента формы ГруппаДоступа, связанного с реквизитом ГруппаДоступа устанавливает
+// список групп значений доступа в параметр выбора, которые дают доступ на изменение значения доступа.
//
-// При создании нового значения доступа, если количество групп значений доступа
-// которые дают доступ на изменение значения доступа равно нулю,
-// будет вызвано исключение.
+// При создании нового значения доступа, если количество групп значений доступа, которые дают доступ
+// на изменение значения доступа равно нулю, будет вызвано исключение.
//
-// Если в базе данных уже записана группа значений доступа, которая не дает
-// доступ на изменение значения доступа или количество групп значений доступа,
-// которые дают доступ на изменение значения доступа равно нулю,
+// Если в базе данных уже записана группа значений доступа, которая не дает доступ на изменение значения доступа
+// или количество групп значений доступа, которые дают доступ на изменение значения доступа равно нулю,
// тогда свойство формы ТолькоПросмотр устанавливается Истина.
//
-// Если ограничение на уровне записей не используется или ограничение
-// по виду доступа не используется, тогда элемент формы скрывается.
+// Если ограничение на уровне записей не используется или ограничение по виду доступа не используется,
+// тогда элемент формы скрывается.
//
// Параметры:
-// Форма - УправляемаяФорма значения доступа, использующего группы
-// для назначения разрешенных.
+// Форма - УправляемаяФорма - форма значения доступа, использующего группы
+// для выбора разрешенных значений.
//
-// Реквизит - Неопределено - означает реквизит Форма.Объект.ГруппаДоступа.
-// - Строка - реквизит формы содержащий группу доступа.
+// Реквизит - Неопределено - означает имя реквизита формы "Объект.ГруппаДоступа".
+// - Строка - имя реквизита формы содержащего группу доступа.
//
-// Элементы - Неопределено - означает элемент формы Форма.Элементы.ГруппаДоступа.
-// - Строка,
-// - Массив строк имен элементов формы.
+// Элементы - Неопределено - означает имя элемента формы "ГруппаДоступа".
+// - Строка - имя элемента формы.
+// - Массив - имена элементов формы.
//
-// ТипЗначения - Неопределено - предполагает наличие реквизита формы Объект.Ссылка,
-// по которому определяется тип значения доступа.
-// - Тип ссылки - используется указанный тип значения доступа.
+// ТипЗначения - Неопределено - означает получить тип из реквизита формы "Объект.Ссылка".
+// - Тип - тип ссылки значения доступа.
//
-// СозданиеНового - Неопределено - означает проверку НЕ ЗначениеЗаполнено(Форма.Объект.Ссылка),
-// для определения того, что создается новое значение доступа.
+// СозданиеНового - Неопределено - означает получить значение "НЕ ЗначениеЗаполнено(Форма.Объект.Ссылка)"
+// для определения того, что создается новое значение доступа или нет.
// - Булево - используется указанное значение.
//
Процедура ПриСозданииФормыЗначенияДоступа(Форма,
@@ -532,7 +532,7 @@
ЗаголовокОшибки + Символы.ПС + Символы.ПС +
НСтр("ru = 'Для значений доступа типа ""%1""
|используются вид доступа ""%2"" с типом значений ""%3"",
- |заданным в плане видов характеристик ""Виды доступа"".
+ |заданным в переопределяемом модуле.
|Но этот тип не совпадает с типом ""%4"" в форме значения
|доступа у реквизита ГруппаДоступа.'"),
Строка(ТипЗначенияДоступа),
@@ -598,17 +598,17 @@
// Возвращает массив групп значений доступа разрешающих изменять значения доступа.
//
-// Поддерживается только для случая, когда выбирается одна группа доступа, а не несколько.
+// Поддерживается только для случая, когда выбирается одна группа значений доступа, а не несколько.
//
// Параметры:
-// ТипЗначенийДоступа - Тип ссылки.
-// ВозвращатьВсе - Булево, если Истина, то в случае, когда нет ограничений
+// ТипЗначенийДоступа - Тип - тип ссылки значений доступа.
+// ВозвращатьВсе - Булево - если Истина, то в случае, когда нет ограничений
// (доступны все) будет возвращен массив всех вместо Неопределено.
//
// Возвращаемое значение:
// Неопределено - все группы значений доступа разрешают изменять значения доступа.
-// Массив - массив найденных групп значений доступа.
-//
+// Массив - массив найденных групп значений доступа.
+//
Функция ГруппыЗначенийДоступаРазрешающиеИзменениеЗначенийДоступа(ТипЗначенийДоступа, ВозвращатьВсе = Ложь) Экспорт
ЗаголовокОшибки =
@@ -638,7 +638,6 @@
КонецЕсли;
Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("ВидДоступа", СвойстваГрупп.ВидДоступа);
Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
Запрос.УстановитьПараметр("ТипЗначенийДоступа", СвойстваГрупп.ПустаяСсылкаТипаЗначений);
@@ -721,14 +720,13 @@
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции для работы с наборами значений доступа
-// Проверяет предусмотрена ли для объекта метаданных
-// процедура заполнения наборов значений доступа.
+// Проверяет предусмотрена ли для объекта метаданных процедура заполнения наборов значений доступа.
//
// Параметры:
-// Ссылка - ЛюбаяСсылка.
+// Ссылка - ЛюбаяСсылка - ссылка на любой объект.
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, наборы значений доступа можно заполнить.
//
Функция ВозможноЗаполнитьНаборыЗначенийДоступа(Ссылка) Экспорт
@@ -742,16 +740,16 @@
КонецФункции
-// Возвращает пустую таблицу, которая заполняется для передачи в функцию ЕстьРоль() и
+// Возвращает пустую таблицу, которая заполняется для передачи в функцию ЕстьРоль и
// в процедуры ЗаполнитьНаборыЗначенийДоступа(Таблица), определенные прикладным разработчиком.
//
// Возвращаемое значение:
-// ТаблицаЗначений с колонками:
-// НомерНабора - Число (необязательно, если набор один),
-// ВидДоступа - Строка - необязательно, кроме специальных ПравоЧтения, ПравоИзменения.
-// ЗначениеДоступа - Неопределено, СправочникСсылка или др. (обязательно),
-// Чтение - Булево (необязательно, если набор для всех прав) устанавливается для одной строки набора,
-// Изменение - Булево (необязательно, если набор для всех прав) устанавливается для одной строки набора.
+// ТаблицаЗначений - с колонками:
+// * НомерНабора - Число - (необязательно, если набор один),
+// * ВидДоступа - Строка - необязательно, кроме специальных ПравоЧтения, ПравоИзменения.
+// * ЗначениеДоступа - Неопределено, СправочникСсылка - или др. (обязательно),
+// * Чтение - Булево - (необязательно, если набор для всех прав) устанавливается для одной строки набора,
+// * Изменение - Булево - (необязательно, если набор для всех прав) устанавливается для одной строки набора.
//
Функция ТаблицаНаборыЗначенийДоступа() Экспорт
@@ -775,31 +773,21 @@
// ЗаписатьНаборыЗначенийДоступа или ЗаписатьЗависимыеНаборыЗначенийДоступа.
// В процедуре выполняется заполнение наборов значений доступа по свойствам объекта.
//
-// Параметры:
-// Таблица - ТаблицаЗначений, возвращаемая функцией ТаблицаНаборыЗначенийДоступа() модуля УправлениеДоступом.
-// Поля таблицы:
-// НомерНабора - Число (необязательно, если набор один);
-// ВидДоступа - Строка - имя вида доступа (не обязательно),
-// кроме специальных ПравоЧтения, ПравоИзменения;
-// ЗначениеДоступа - Неопределено, СправочникСсылка или др. (обязательно);
-// Чтение - Булево (необязательно, если набор для всех прав)
-// устанавливается для одной строки набора;
-// Изменение - Булево (необязательно, если набор для всех прав)
-// устанавливается для одной строки набора.
+// Параметр:
+// Таблица - ТаблицаЗначений - возвращаемая функцией ТаблицаНаборыЗначенийДоступа.
//
-// Процедура ЗаполнитьНаборыЗначенийДоступа(Знач Объект, Таблица, Знач СсылкаНаПодчиненныйОбъект = Неопределено)
-// заполняет наборы значений доступа объекта, используя процедуру ЗаполнитьНаборыЗначенийДоступа(Таблица),
-// созданную прикладным разработчиком (см. описание выше).
+// Текущая одноименная процедура заполняет наборы значений доступа объекта, используя процедуру
+// ЗаполнитьНаборыЗначенийДоступа(Таблица), созданную прикладным разработчиком (см. описание выше).
//
// Параметры:
-// Объект - СправочникОбъект, ДокументОбъект, ..., или СправочникСсылка, ДокументСсылка, ...
-// Если передана ссылка, то по ней будет получен объект.
+// Объект - Объект, Ссылка - СправочникаОбъект, ДокументОбъект, ... СправочникСсылка, ДокументСсылка, ...
+// Если передана ссылка, то по ней будет получен объект.
//
-// Таблица - ТаблицаЗначений, возвращаемая функцией ТаблицаНаборыЗначенийДоступа() модуля УправлениеДоступом,
-// Неопределено - будет создана таблица значений.
+// Таблица - ТаблицаЗначений - возвращаемая функцией ТаблицаНаборыЗначенийДоступа модуля УправлениеДоступом.
+// - Неопределено - будет создана новая таблица значений.
//
-// СсылкаНаПодчиненныйОбъект - ЛюбаяСсылка, используется, когда нужно заполнить наборы значений доступа объекта-владельца
-// для подчиненного объекта.
+// СсылкаНаПодчиненныйОбъект - ЛюбаяСсылка - используется, когда нужно заполнить наборы значений доступа
+// объекта-владельца для подчиненного объекта.
//
Процедура ЗаполнитьНаборыЗначенийДоступа(Знач Объект, Таблица, Знач СсылкаНаПодчиненныйОбъект = Неопределено) Экспорт
@@ -942,16 +930,17 @@
КонецПроцедуры
-// Позволяет добавить к одной таблице наборов значений доступа другую
-// таблицу наборов значений доступа, либо логическим сложением, либо логическим умножением.
-// Результат помещается в приемник.
+// Позволяет добавить к одной таблице наборов значений доступа другую таблицу
+// наборов значений доступа, либо логическим сложением, либо логическим умножением.
+//
+// Результат помещается в параметр Приемник.
//
// Параметры:
-// Приемник,
-// Источник - ТаблицаЗначений возвращаемая функцией ТаблицаНаборыЗначенийДоступа() модуля УправлениеДоступом.
+// Приемник - ТаблицаЗначений - с колонкам, как у таблицы возвращаемой функцией ТаблицаНаборыЗначенийДоступа.
+// Источник - ТаблицаЗначений - с колонкам, как у таблицы возвращаемой функцией ТаблицаНаборыЗначенийДоступа.
//
-// Умножение - Булево, определяет способ логического объединения наборов приемника и источника.
-// Упростить - Булево, определяет требуется ли упрощение наборов после добавления.
+// Умножение - Булево - определяет способ логического объединения наборов приемника и источника.
+// Упростить - Булево - определяет требуется ли упрощение наборов после добавления.
//
Процедура ДобавитьНаборыЗначенийДоступа(Приемник, Знач Источник, Знач Умножение = Ложь, Знач Упростить = Ложь) Экспорт
@@ -1004,7 +993,8 @@
// в регистре сведений НаборыЗначенийДоступа.
//
// Параметры:
-// СсылкаНаОбъект - СправочникСсылка, ДокументСсылка, ...
+// СсылкаНаОбъект - СправочникСсылка, ДокументСсылка и другие типы ссылок тех объектов
+// метаданных, для которых заполняются наборы значений доступа.
//
Процедура ОбновитьНаборыЗначенийДоступа(СсылкаНаОбъект) Экспорт
@@ -1018,31 +1008,39 @@
// Возможен случай использования подсистемы Управление доступом, когда
// указанной подписки не существует, если для указанной цели наборы не применяются.
//
-// Обработчик подписки на событие ПередЗаписью для типов:
-// СправочникОбъект
-// ДокументОбъект
-// ПланВидовХарактеристикОбъект
-// ПланСчетовОбъект
-// ПланВидовРасчетаОбъект
-// БизнесПроцессОбъект
-// ЗадачаОбъект
-// ПланОбменаОбъект
+// Параметры:
+// Источник - СправочникОбъект,
+// ДокументОбъект,
+// ПланВидовХарактеристикОбъект,
+// ПланСчетовОбъект,
+// ПланВидовРасчетаОбъект,
+// БизнесПроцессОбъект,
+// ЗадачаОбъект,
+// ПланОбменаОбъект - объект данных, передаваемый в подписку на событие ПередЗаписью.
//
-Процедура ЗаполнитьНаборыЗначенийДоступаТабличныхЧастей(Объект, Отказ = Неопределено, РежимЗаписи = Неопределено, РежимПроведения = Неопределено) Экспорт
+// Отказ - Булево - параметр, передаваемый в подписку на событие ПередЗаписью.
+//
+// РежимЗаписи - Булево - параметр, передаваемый в подписку на событие ПередЗаписью,
+// когда тип параметра Источник - ДокументОбъект.
+//
+// РежимПроведения - Булево - параметр, передаваемый в подписку на событие ПередЗаписью,
+// когда тип параметра Источник - ДокументОбъект.
+//
+Процедура ЗаполнитьНаборыЗначенийДоступаТабличныхЧастей(Источник, Отказ = Неопределено, РежимЗаписи = Неопределено, РежимПроведения = Неопределено) Экспорт
- Если Объект.ОбменДанными.Загрузка
- И НЕ Объект.ДополнительныеСвойства.Свойство("ЗаписатьНаборыЗначенийДоступа") Тогда
+ Если Источник.ОбменДанными.Загрузка
+ И НЕ Источник.ДополнительныеСвойства.Свойство("ЗаписатьНаборыЗначенийДоступа") Тогда
Возврат;
КонецЕсли;
Если НЕ ( ПривилегированныйРежим()
- И Объект.ДополнительныеСвойства.Свойство(
- "НаборыЗначенийДоступаТабличнойЧастиЗаполнены")) Тогда
+ И Источник.ДополнительныеСвойства.Свойство(
+ "НаборыЗначенийДоступаТабличнойЧастиЗаполнены")) Тогда
- Таблица = УправлениеДоступомСлужебный.ПолучитьНаборыЗначенийДоступаТабличнойЧасти(Объект);
+ Таблица = УправлениеДоступомСлужебный.ПолучитьНаборыЗначенийДоступаТабличнойЧасти(Источник);
УправлениеДоступомСлужебный.ПодготовитьНаборыЗначенийДоступаКЗаписи(Неопределено, Таблица, Ложь);
- Объект.НаборыЗначенийДоступа.Загрузить(Таблица);
+ Источник.НаборыЗначенийДоступа.Загрузить(Таблица);
КонецЕсли;
КонецПроцедуры
@@ -1055,9 +1053,8 @@
// Чтобы указать предустановленный вид доступа,
// нужно в представлении задать строку Предустановленный.
//
-// Чтобы добавить значение доступа нужно указать
-// полное имя предопределенного элемента, например,
-// "Справочник.ГруппыПользователей.ВсеПользователи".
+// Чтобы добавить значение доступа нужно указать полное имя предопределенного элемента,
+// например, "Справочник.ГруппыПользователей.ВсеПользователи".
//
// Идентификатор извлекается из реального элемента в справочнике.
// Не следует брать идентификаторы, полученные произвольным способом.
@@ -1084,6 +1081,7 @@
// // ...
// // Использование НСИ.
// ОписаниеПрофиля.Роли.Добавить("ЧтениеБазовойНСИ");
+// ОписаниеПрофиля.Роли.Добавить("ЧтениеОбщейБазовойНСИ");
// // ...
// // Типовые возможности.
// ОписаниеПрофиля.Роли.Добавить("ИспользованиеВариантовОтчетов");
@@ -1100,7 +1098,7 @@
// ОписаниеПрофиля.ВидыДоступа.Добавить("Пользователи", "Предустановленный");
// ОписаниеПрофиля.ВидыДоступа.Добавить("ХозяйственныеОперации", "Предустановленный");
// ОписаниеПрофиля.ЗначенияДоступа.Добавить("ХозяйственныеОперации",
-// "Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчет");
+// "Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику");
// // ...
// ОписанияПрофилей.Добавить(ОписаниеПрофиля);
//
@@ -1120,14 +1118,14 @@
КонецФункции
-// Добавляет дополнительные типы в процедуре ПриЗаполненииВидовДоступа.
+// Добавляет дополнительные типы в процедуре ПриЗаполненииВидовДоступа
+// общего модуля УправлениеДоступомПереопределяемый.
//
// Параметры:
-// ВидДоступа - СтрокаТаблицыЗначений, добавленная в параметр ВидыДоступа.
+// ВидДоступа - СтрокаТаблицыЗначений - добавленная в параметр ВидыДоступа.
// ТипЗначений - Тип - дополнительный тип значений доступа.
-// ТипГруппЗначений - Тип - дополнительный тип групп значений доступа,
-// может совпадать с типом групп значений указанным ранее
-// для этого же вида доступа.
+// ТипГруппЗначений - Тип - дополнительный тип групп значений доступа, может совпадать
+// с типом групп значений указанным ранее для этого же вида доступа.
// НесколькоГруппЗначений - Булево - Истина, если у дополнительного типа значений доступа
// можно указать несколько групп значений (есть табличная часть ГруппыДоступа).
//
@@ -1155,7 +1153,12 @@
// Возвращает ссылку на поставляемый профиль по идентификатору.
//
// Параметры:
-// Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля.
+// Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля, как указано
+// в процедуре ПриЗаполненииВидовДоступа общего модуля УправлениеДоступомПереопределяемый.
+//
+// Возвращаемое значение:
+// СправочникСсылка.ПрофилиГруппДоступа - если поставляемый профиль найден в справочнике.
+// Неопределено - если поставляемый профиль не найден в справочнике.
//
Функция ПоставляемыйПрофильПоИдентификатору(Идентификатор) Экспорт
@@ -1163,8 +1166,15 @@
КонецФункции
-// Возвращает пустую таблицу для заполнения и передачи
-// в процедуру ЗаменитьПраваВНастройкахПравОбъектов.
+// Возвращает пустую таблицу для заполнения и
+// передачи в процедуру ЗаменитьПраваВНастройкахПравОбъектов.
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - с колонками:
+// * ТипВладельцев - Ссылка - пустая ссылка типа владельца прав из описания типов
+// ВладелецНастроекПрав, например пустая ссылка справочника ПапкиФайлов.
+// * СтароеИмя - Строка - старое имя права.
+// * НовоеИмя - Строка - новое имя права.
//
Функция ТаблицаЗаменыПравВНастройкахПравОбъектов() Экспорт
@@ -1185,13 +1195,14 @@
// процедуру однократно, чтобы не снижать производительность.
//
// Параметры:
-// ТаблицаЗамены - ТаблицаЗначений с колонками:
-// ТипВладельцев - Пустая ссылка типа владельца прав, например пустая ссылка справочника ПапкиФайлов.
-// СтароеИмя - Строка, старое имя права, относящееся к указанному типу владельцев.
-// НовоеИмя - Строка, новое имя права, относящееся к указанному типу владельцев.
-// Если указана пустая строка, настройка старого права будет удалена.
-// Если старому имени поставлено в соответствие два новых имени,
-// тогда настройка одна старая настройка будет размножена в две новых.
+// ТаблицаПереименований - ТаблицаЗначений - с колонками:
+// * ТипВладельцев - Ссылка - пустая ссылка типа владельца прав из описания типов
+// ВладелецНастроекПрав, например пустая ссылка справочника ПапкиФайлов.
+// * СтароеИмя - Строка - старое имя права, относящееся к указанному типу владельцев.
+// * НовоеИмя - Строка - новое имя права, относящееся к указанному типу владельцев.
+// Если указана пустая строка, настройка старого права будет удалена.
+// Если старому имени поставлено в соответствие два новых имени,
+// тогда одна старая настройка будет размножена в две новых.
//
Процедура ЗаменитьПраваВНастройкахПравОбъектов(ТаблицаПереименований) Экспорт
@@ -1350,13 +1361,12 @@
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции, используемые для обновления служебных данных
-// Обновляет список ролей пользователей информационной базы
-// по их текущим принадлежностям к группам доступа.
-// Пользователи с ролью "ПолныеПрава" игнорируется.
+// Обновляет список ролей пользователей информационной базы по их текущим принадлежностям
+// к группам доступа. Пользователи ИБ с ролью "ПолныеПрава" пропускаются.
//
// Параметры:
-// МассивПользователей - Массив, Неопределено, Тип - массив из
-// элементов СправочникСсылка.Пользователи или СправочникСсылка.ВнешниеПользователи.
+// МассивПользователей - Массив, Неопределено, Тип - массив из элементов
+// СправочникСсылка.Пользователи или СправочникСсылка.ВнешниеПользователи.
// Если Неопределено, то обновить роли всех пользователей.
// Если Тип = Справочник.ВнешниеПользователи, то будут обновлены роли всех внешних пользователей,
// иначе будут обновлены роли всех пользователей.
@@ -1378,7 +1388,7 @@
КонецПроцедуры
-// Выполняет последовательное заполнение и обновление данных, необходимых для работы
+// Выполняет последовательное заполнение и частичное обновление данных, необходимых для работы
// подсистемы УправленияДоступом в режиме ограничения доступа на уровне записей.
//
// При включенном режиме ограничения доступа на уровне записей заполняет наборы
@@ -1394,9 +1404,10 @@
// Сведения о состоянии работы записываются в журнал регистрации.
//
// Возможно вызывать программно, например, при обновлении информационной базы.
-// Также для целей обновления есть форма Справочник.ГруппыДоступа.ОбновлениеДанныхОграниченияДоступа,
-// с помощью которой можно сделать интерактивное обновление данных ограничения доступа
-// при обновлении информационной базы.
+//
+// Параметры:
+// КоличествоДанных - Число - (возвращаемое значение) содержит количество
+// объектов данных для которых было выполнено заполнение.
//
Процедура ЗаполнениеДанныхДляОграниченияДоступа(КоличествоДанных = 0) Экспорт
@@ -1404,6 +1415,10 @@
КонецПроцедуры
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры и функции
diff --git a/SSL/src/CommonModules/УправлениеДоступомПереопределяемый/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомПереопределяемый/Module.bsl
index 35fbf1467..6171f7e78 100644
--- a/SSL/src/CommonModules/УправлениеДоступомПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеДоступомПереопределяемый/Module.bsl
@@ -10,14 +10,14 @@
// Их можно удалить, если они не требуются для ограничения прав доступа.
//
// Параметры:
-// ВидыДоступа - ТаблицаЗначений с полями:
-// - Имя - Строка - имя используемое в описании поставляемых
-// профилей групп доступа и текстах ОДД.
-// - Представление - Строка - представляет вид доступа в профилях и группах доступа.
-// - ТипЗначений - Тип - тип ссылки значений доступа. Например, Тип("СправочникСсылка.Номенклатура").
-// - ТипГруппЗначений - Тип - тип ссылки групп значений доступа. Например, Тип("СправочникСсылка.ГруппыДоступаНоменклатуры").
-// - НесколькоГруппЗначений - Булево - Истина указывает, что для значения доступа (Номенклатуры),
-// можно выбрать несколько групп значений (Групп доступа номенклатуры).
+// ВидыДоступа - ТаблицаЗначений - с колонками:
+// * Имя - Строка - имя используемое в описании поставляемых
+// профилей групп доступа и текстах ОДД.
+// * Представление - Строка - представляет вид доступа в профилях и группах доступа.
+// * ТипЗначений - Тип - тип ссылки значений доступа. Например, Тип("СправочникСсылка.Номенклатура").
+// * ТипГруппЗначений - Тип - тип ссылки групп значений доступа. Например, Тип("СправочникСсылка.ГруппыДоступаНоменклатуры").
+// * НесколькоГруппЗначений - Булево - Истина указывает, что для значения доступа (Номенклатуры),
+// можно выбрать несколько групп значений (Групп доступа номенклатуры).
//
Процедура ПриЗаполненииВидовДоступа(ВидыДоступа) Экспорт
@@ -28,29 +28,22 @@
// Заполняет описания поставляемых профилей групп доступа и
// переопределяет параметры обновления профилей и групп доступа.
//
-// Для автоматической подготовки содержимого процедуры следует
-// воспользоваться инструментами разработчика для подсистемы
-// Управление доступом.
+// Для автоматической подготовки содержимого процедуры следует воспользоваться инструментами
+// разработчика для подсистемы Управление доступом.
//
// Параметры:
-// ОписанияПрофилей - Массив в который нужно добавить описания.
+// ОписанияПрофилей - Массив - массив структур, в который нужно добавить описания.
// Пустая структура должна быть получена при помощи функции
-// УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа().
+// УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа.
//
-// ПараметрыОбновления - Структура со свойствами:
-//
-// ОбновлятьИзмененныеПрофили - Булево (начальное значение Истина).
-//
-// ЗапретитьИзменениеПрофилей - Булево (начальное значение Истина),
-// если установить Ложь, тогда поставляемые профили будут открываться
-// в режиме ТолькоПросмотр.
-//
-// ОбновлятьГруппыДоступа - Булево (начальное значение Истина).
-//
-// ОбновлятьГруппыДоступаСУстаревшимиНастройками - Булево (начальное
-// значение Ложь), если установить Истина, то настройки значений,
-// сделанные администратором по виду доступа, который удален из
-// профиля, будут удалены из группы доступа.
+// ПараметрыОбновления - Структура - структура со свойствами:
+// * ОбновлятьИзмененныеПрофили - Булево - начальное значение Истина.
+// * ЗапретитьИзменениеПрофилей - Булево - начальное значение Истина.
+// Если установить Ложь, тогда поставляемые профили можно не только просматривать, но и редактировать.
+// * ОбновлятьГруппыДоступа - Булево - начальное значение Истина.
+// * ОбновлятьГруппыДоступаСУстаревшимиНастройками - Булево - начальное значение Ложь.
+// Если установить Истина, то настройки значений, выполненные администратором для
+// вида доступа который был удален из профиля, будут также удалены из групп доступа.
//
Процедура ПриЗаполненииПоставляемыхПрофилейГруппДоступа(ОписанияПрофилей, ПараметрыОбновления) Экспорт
@@ -74,9 +67,9 @@
// проверку права чтения "ведущего" объекта.
//
// Параметры:
-// ЗависимостиПрав - ТаблицаЗначений с колонками:
-// - ВедущаяТаблица - Строка, например, "БизнесПроцесс.Задание"
-// - ПодчиненнаяТаблица - Строка, например, "Задача.ЗадачаИсполнителя"
+// ЗависимостиПрав - ТаблицаЗначений - с колонками:
+// * ВедущаяТаблица - Строка - например, "БизнесПроцесс.Задание".
+// * ПодчиненнаяТаблица - Строка - например, "Задача.ЗадачаИсполнителя".
//
Процедура ПриЗаполненииЗависимостейПравДоступа(ЗависимостиПрав) Экспорт
@@ -87,9 +80,8 @@
// Заполняет описания возможных прав, назначаемых для объектов, указанных типов.
//
// Параметры:
-// ВозможныеПрава - ТаблицаЗначений, содержащая поля,
-// описание которых см. в комментарии к функции
-// РегистрыСведений.НастройкиПравОбъектов.ВозможныеПрава().
+// ВозможныеПрава - ТаблицаЗначений - с колонками, описание которых см. в комментарии
+// к функции РегистрыСведений.НастройкиПравОбъектов.ВозможныеПрава().
//
Процедура ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов(ВозможныеПрава) Экспорт
@@ -97,13 +89,8 @@
// Определяет вид используемого интерфейса пользователя для настройки доступа.
//
-// Упрощенный интерфейс удобен для конфигураций с небольшим количеством пользователей,
-// так как много функций не требуются и они могут быть скрыты (скрытие не может быть
-// выполнено только лишь функциональной опцией, так как потребуется пересмотр
-// содержимого групп доступа и профилей).
-//
// Параметры:
-// УпрощенныйИнтерфейс - Булево (возвращаемое значение). Начальное значение Ложь.
+// УпрощенныйИнтерфейс - Булево - начальное значение Ложь.
//
Процедура ПриОпределенииИнтерфейсаНастройкиДоступа(УпрощенныйИнтерфейс) Экспорт
@@ -113,10 +100,10 @@
// например, ИспользоватьГруппыДоступаНоменклатуры.
//
// Параметры:
-// ВидДоступа - Строка. Имя вида доступа заданное в процедуре ПриЗаполненииВидовДоступа.
-// Использование - Булево (возвращаемое значение). Начальное значение Истина.
+// ВидДоступа - Строка - имя вида доступа заданное в процедуре ПриЗаполненииВидовДоступа.
+// Использование - Булево - начальное значение Истина.
//
-Процедура ПриЗаполненииИспользованияВидаДоступа(ИмяВидаДоступа, Использование) Экспорт
+Процедура ПриЗаполненииИспользованияВидаДоступа(ВидДоступа, Использование) Экспорт
@@ -125,17 +112,15 @@
// Заполняет состав видов доступа, используемых при ограничении прав объектов метаданных.
// Если состав видов доступа не заполнен, отчет "Права доступа" покажет некорректные сведения.
//
-// Обязательно требуется заполнить только виды доступа, используемые
-// в шаблонах ограничения доступа явно, а виды доступа, используемые
-// в наборах значений доступа могут быть получены из текущего состояния
-// регистра сведений НаборыЗначенийДоступа.
+// Обязательно требуется заполнить только виды доступа, используемые в шаблонах ограничения доступа
+// явно, а виды доступа, используемые в наборах значений доступа могут быть получены из текущего
+// состояния регистра сведений НаборыЗначенийДоступа.
//
-// Для автоматической подготовки содержимого процедуры следует
-// воспользоваться инструментами разработчика для подсистемы
-// Управление доступом.
+// Для автоматической подготовки содержимого процедуры следует воспользоваться инструментами
+// разработчика для подсистемы Управление доступом.
//
// Параметры:
-// Описание - Строка, многострочная строка формата <Таблица>.<Право>.<ВидДоступа>[.Таблица объекта]
+// Описание - Строка - многострочная строка формата <Таблица>.<Право>.<ВидДоступа>[.Таблица объекта]
// Например, Документ.ПриходнаяНакладная.Чтение.Организации
// Документ.ПриходнаяНакладная.Чтение.Контрагенты
// Документ.ПриходнаяНакладная.Изменение.Организации
@@ -172,7 +157,7 @@
// Ссылка - СправочникСсылка, ДокументСсылка, ... - ссылка на объект для которого
// записаны наборы значений доступа.
//
-// СсылкиНаЗависимыеОбъекты - Массив элементов типа СправочникСсылка, ДокументСсылка, ...
+// СсылкиНаЗависимыеОбъекты - Массив - массив элементов типа СправочникСсылка, ДокументСсылка, ...
// Содержит ссылки на объекты с зависимыми наборами значений доступа
// Начальное значение - пустой массив.
//
diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl
index bebd62995..81494638f 100644
--- a/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl
@@ -271,6 +271,14 @@
СерверныеОбработчики[
"ТехнологияСервиса.ВыгрузкаЗагрузкаДанных\ПриЗаполненииТиповОбщихДанныхНеТребующихСопоставлениеСсылокПриЗагрузке"].Добавить(
"УправлениеДоступомСлужебный");
+ СерверныеОбработчики[
+ "ТехнологияСервиса.ВыгрузкаЗагрузкаДанных\ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки"].Добавить(
+ "УправлениеДоступомСлужебный");
+ КонецЕсли;
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "Справочники.ПрофилиГруппДоступа");
КонецЕсли;
КонецПроцедуры
@@ -910,6 +918,7 @@
// Должен выполнятся после обработчика ЗаполнитьИдентификаторыПоставляемыхДанных.
Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "1.0.0.1";
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "Справочники.ГруппыДоступа.ЗаполнитьПрофильГруппыДоступаАдминистраторы";
Обработчик.РежимВыполнения = "Монопольно";
@@ -959,7 +968,7 @@
Обработчик.РежимВыполнения = "Оперативно";
Обработчик = Обработчики.Добавить();
- Обработчик.Версия = "2.2.2.48";
+ Обработчик.Версия = "2.2.3.27";
Обработчик.Процедура = "РегистрыСведений.ЗначенияГруппДоступа.ОбновитьДанныеРегистра";
Обработчик.РежимВыполнения = "Оперативно";
@@ -1123,7 +1132,7 @@
Иначе
// Администраторы назначаются во всех подчиненных РИБ-узлах независимо.
Если ТипЗнч(ЭлементДанных) = Тип("СправочникОбъект.ГруппыДоступа") Тогда
- Справочники.ГруппыДоступа.ВосстановитьСоставУчастниковГруппыДоступаАдминистраторы(ЭлементДанных);
+ Справочники.ГруппыДоступа.ВосстановитьСоставУчастниковГруппыДоступаАдминистраторы(ЭлементДанных, ОтправкаНазад);
КонецЕсли;
КонецЕсли;
@@ -1143,7 +1152,7 @@
// Администраторы назначаются во всех подчиненных РИБ-узлах независимо.
Если ТипЗнч(ЭлементДанных) = Тип("СправочникОбъект.ГруппыДоступа") Тогда
- Справочники.ГруппыДоступа.ВосстановитьСоставУчастниковГруппыДоступаАдминистраторы(ЭлементДанных);
+ Справочники.ГруппыДоступа.ВосстановитьСоставУчастниковГруппыДоступаАдминистраторы(ЭлементДанных, ОтправкаНазад);
КонецЕсли;
ИначеЕсли ТипЗнч(ЭлементДанных) = Тип("КонстантаМенеджерЗначения.ОграничиватьДоступНаУровнеЗаписей")
@@ -1400,9 +1409,8 @@
// - они отключаются только с отключением всего отчета.
//
Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт
-
- Отчеты.ПраваДоступа.НастроитьВариантыОтчета(Настройки);
-
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.ПраваДоступа);
КонецПроцедуры
// Обработчики событий библиотеки ТехнологияСервиса.
@@ -1422,6 +1430,17 @@
КонецПроцедуры
+// Заполняет массив типов, исключаемых из выгрузки и загрузки данных.
+//
+// Параметры:
+// Типы - Массив(Типы).
+//
+Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт
+
+ Типы.Добавить(Метаданные.ПланыВидовХарактеристик.УдалитьВидыДоступа);
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики подписок на события
@@ -2383,6 +2402,9 @@
ОбновитьОтображениеНеиспользуемыхВидовДоступа(Форма, Истина);
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(
+ Форма, "ЗначенияДоступаПоВидуДоступа");
+
КонецПроцедуры
// При повторном чтении заполняет или обновляет вспомогательные данные,
diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl
index 22b3ef83f..8f7c30d3d 100644
--- a/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеДоступомСлужебныйВызовСервера/Module.bsl
@@ -26,8 +26,8 @@
// Используется в обработчиках событий ОкончаниеВводаТекста и АвтоПодбор.
//
// Параметры:
-// Текст - Строка, символы введенные пользователем.
-// ВключаяГруппы - Булево, если Истина, включать группы пользователей и внешних пользователей.
+// Текст - Строка - символы введенные пользователем.
+// ВключаяГруппы - Булево - если Истина, включать группы пользователей и внешних пользователей.
// ВидДоступа - Ссылка - пустая ссылка основного типа значения доступа,
// - Строка - имя вида доступа, значения доступа которого выбираются.
//
@@ -43,7 +43,7 @@
Запрос.УстановитьПараметр("ВключаяГруппы", ВключаяГруппы);
Запрос.Текст =
"ВЫБРАТЬ
- | ПредставленияПеречислений.Ссылка,
+ | ПредставленияПеречислений.Ссылка КАК Ссылка,
| ПредставленияПеречислений.Наименование КАК Наименование
|ПОМЕСТИТЬ ПредставленияПеречислений
|ИЗ
@@ -66,15 +66,13 @@
| ЛОЖЬ";
Для каждого Тип Из СвойстваВидаДоступа.ТипыВыбираемыхЗначений Цикл
+ ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
+ ПолноеИмяТаблицы = ОбъектМетаданных.ПолноеИмя();
- МетаданныеТипа = Метаданные.НайтиПоТипу(Тип);
-
- ПолноеИмяТаблицы = МетаданныеТипа.ПолноеИмя();
-
- Если ( Метаданные.Справочники.Содержит(МетаданныеТипа)
- ИЛИ Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеТипа) )
- И МетаданныеТипа.Иерархический
- И МетаданныеТипа.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов
+ Если ( Метаданные.Справочники.Содержит(ОбъектМетаданных)
+ ИЛИ Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) )
+ И ОбъектМетаданных.Иерархический
+ И ОбъектМетаданных.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов
И НЕ ВключаяГруппы Тогда
УсловиеДляГруппы = "НЕ Таблица.ЭтоГруппа";
@@ -82,32 +80,46 @@
УсловиеДляГруппы = "Истина";
КонецЕсли;
- Если Метаданные.Перечисления.Содержит(МетаданныеТипа) Тогда
- //
- ЗапросПредставленийПеречислений.Текст = ЗапросПредставленийПеречислений.Текст + Символы.ПС + Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + Символы.ПС;
- ЗапросПредставленийПеречислений.Текст = ЗапросПредставленийПеречислений.Текст + СтрЗаменить(
+ Если Метаданные.Перечисления.Содержит(ОбъектМетаданных) Тогда
+ ТекстЗапроса =
"ВЫБРАТЬ
- | Таблица.Ссылка,
+ | Таблица.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(Таблица.Ссылка) КАК Наименование
|ИЗ
- | &ПолноеИмяТаблицы КАК Таблица", "&ПолноеИмяТаблицы", ПолноеИмяТаблицы);
+ | &ПолноеИмяТаблицы КАК Таблица";
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяТаблицы", ПолноеИмяТаблицы);
+
+ ЗапросПредставленийПеречислений.Текст = ЗапросПредставленийПеречислений.Текст
+ + Символы.ПС + Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + Символы.ПС
+ + ТекстЗапроса;
Иначе
- Запрос.Текст = Запрос.Текст + Символы.ПС + Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + Символы.ПС;
- Запрос.Текст = Запрос.Текст + СтрЗаменить(СтрЗаменить(
+ ТекстЗапроса =
"ВЫБРАТЬ
- | Таблица.Ссылка,
- | Таблица.Наименование
+ | Таблица.Ссылка КАК Ссылка,
+ | Таблица.Наименование КАК Наименование
|ИЗ
| &ПолноеИмяТаблицы КАК Таблица
|ГДЕ
| (НЕ Таблица.ПометкаУдаления)
| И Таблица.Наименование ПОДОБНО &Текст
- | И &УсловиеДляГруппы", "&ПолноеИмяТаблицы", ПолноеИмяТаблицы), "&УсловиеДляГруппы", УсловиеДляГруппы);
+ | И &УсловиеДляГруппы";
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяТаблицы", ПолноеИмяТаблицы);
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеДляГруппы", УсловиеДляГруппы);
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Таблица.Наименование",
+ "Таблица." + ПолеПредставления(ОбъектМетаданных));
+
+ Запрос.Текст = Запрос.Текст
+ + Символы.ПС + Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + Символы.ПС
+ + ТекстЗапроса;
КонецЕсли;
КонецЦикла;
- Запрос.УстановитьПараметр("ПредставленияПеречислений", ЗапросПредставленийПеречислений.Выполнить().Выгрузить());
- Запрос.Текст = Запрос.Текст + Символы.ПС + Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + Символы.ПС;
+ Запрос.УстановитьПараметр("ПредставленияПеречислений",
+ ЗапросПредставленийПеречислений.Выполнить().Выгрузить());
+
+ Запрос.Текст = Запрос.Текст
+ + Символы.ПС + Символы.ПС + " ОБЪЕДИНИТЬ ВСЕ " + Символы.ПС + Символы.ПС;
+
Запрос.Текст = Запрос.Текст +
"ВЫБРАТЬ
| ПредставленияПеречислений.Ссылка,
@@ -128,4 +140,54 @@
КонецФункции
+Функция ПолеПредставления(ОбъектМетаданных)
+
+ ПолеПредставления = "Наименование";
+
+ Если Метаданные.ПланыОбмена.Содержит(ОбъектМетаданных) Тогда
+
+ Если ОбъектМетаданных.ОсновноеПредставление
+ = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеПланаОбмена.ВВидеКода Тогда
+
+ ПолеПредставления = "Код";
+ КонецЕсли;
+
+ ИначеЕсли Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда
+
+ Если ОбъектМетаданных.ОсновноеПредставление
+ = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСправочника.ВВидеКода Тогда
+
+ ПолеПредставления = "Код";
+ КонецЕсли;
+
+ ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) Тогда
+
+ Если ОбъектМетаданных.ОсновноеПредставление
+ = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеВидаХарактеристики.ВВидеКода Тогда
+
+ ПолеПредставления = "Код";
+ КонецЕсли;
+
+ ИначеЕсли Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных) Тогда
+
+ Если ОбъектМетаданных.ОсновноеПредставление
+ = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеСчета.ВВидеКода Тогда
+
+ ПолеПредставления = "Код";
+ КонецЕсли;
+
+ ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных) Тогда
+
+ Если ОбъектМетаданных.ОсновноеПредставление
+ = Метаданные.СвойстваОбъектов.ОсновноеПредставлениеВидаРасчета.ВВидеКода Тогда
+
+ ПолеПредставления = "Код";
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Возврат ПолеПредставления;
+
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиентСервер/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиентСервер/Module.bsl
index d4b7cea0a..9e9fbc3e9 100644
--- a/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеДоступомСлужебныйКлиентСервер/Module.bsl
@@ -248,8 +248,7 @@
Форма.ТекущиеТипыВыбираемыхЗначений.Добавить(Неопределено, НСтр("ru = 'Неопределено'"));
КонецЕсли;
- Элементы.ЗначенияДоступа.Доступность = ЗначенияРедактируются;
- Элементы.ЗначенияДоступаДобавить.Доступность = ЗначенияРедактируются;
+ Элементы.ЗначенияДоступа.Доступность = ЗначенияРедактируются;
КонецПроцедуры
@@ -301,7 +300,10 @@
Параметры = ПараметрыФормыРедактированияРазрешенныхЗначений(Форма);
- Для каждого Строка Из Параметры.ВидыДоступа Цикл
+ ОтборВидовДоступа = ОтборВТаблицахФормыРедактированияРазрешенныхЗначений(Форма);
+ ВидыДоступа = Параметры.ВидыДоступа.НайтиСтроки(ОтборВидовДоступа);
+
+ Для каждого Строка Из ВидыДоступа Цикл
Строка.Используется = Истина;
diff --git a/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl
index 1044c08d8..5d0c48ff2 100644
--- a/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl
@@ -11,39 +11,21 @@
// Доопределяет список предупреждений пользователю перед завершением работы системы.
//
// Параметры:
-// Предупреждения - Массив, в который можно добавить элементы типа Структура с полями:
-// ТекстФлажка - Строка - текст флажка.
-// ПоясняющийТекст - Строка - текст, выводимый в форме сверху
-// управляющего элемента (флажок или гиперссылка).
-// ТекстГиперссылки - Строка - текст гиперссылки.
-// ДействиеПриУстановленномФлажке - Структура с полями:
-// Форма - путь к открываемой форме.
-// ПараметрыФормы - произвольная структура параметров формы Форма.
-// ДействиеПриНажатииГиперссылки - Структура с полями:
-// Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку.
-// ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы.
-// ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу
-// вместо универсальной формы в случае, когда в списке
-// предупреждений оказывается только одно данное предупреждение.
-// ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура
-// параметров для вышеописанной формы.
+// Предупреждения - Массив - в массив можно добавить элементы типа Структура,
+// свойства которой см. в СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы.
//
Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт
Параметры = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении();
Если Параметры.Свойство("УправлениеИтогамиИАгрегатами") И Параметры.УправлениеИтогамиИАгрегатами.СдвинутьГраницуИтогов Тогда
- ТекстФлажка = НСтр("ru = 'Ускорить проведение документов и формирование отчетов
- |(обязательная ежемесячная процедура, может занять некоторое время)'");
- ДействиеПриУстановленномФлажке = Новый Структура;
- ДействиеПриУстановленномФлажке.Вставить("Форма", "Обработка.СдвигГраницыИтоговПриЗавершенииРаботы.Форма");
- ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", Новый Структура("ОткрытаПоСценарию", Истина));
-
- ПараметрыПредупреждения = Новый Структура;
- ПараметрыПредупреждения.Вставить("ТекстФлажка", ТекстФлажка);
- ПараметрыПредупреждения.Вставить("ДействиеПриУстановленномФлажке", ДействиеПриУстановленномФлажке);
- ПараметрыПредупреждения.Вставить("Приоритет", 60);
-
+ ПараметрыПредупреждения = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершениеРаботы();
+ ПараметрыПредупреждения.ТекстФлажка = НСтр("ru = 'Ускорить проведение документов и формирование отчетов
+ |(обязательная ежемесячная процедура, может занять некоторое время)'");
+ ПараметрыПредупреждения.Приоритет = 60;
+ ДействиеПриУстановленномФлажке = ПараметрыПредупреждения.ДействиеПриУстановленномФлажке;
+ ДействиеПриУстановленномФлажке.Форма = "Обработка.СдвигГраницыИтоговПриЗавершенииРаботы.Форма";
+ ДействиеПриУстановленномФлажке.ПараметрыФормы = Новый Структура("ОткрытаПоСценарию", Истина);
Предупреждения.Добавить(ПараметрыПредупреждения);
КонецЕсли;
diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl
index b8724727f..f7920caad 100644
--- a/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl
@@ -14,8 +14,8 @@
// Параметры:
// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной
// информации
-// Объект - Объект-владелец контактной информации
-// ПоложениеЗаголовкаКИ - Может принимать значения ПоложениеЗаголовкаЭлементаФормы.Лево
+// Объект - Произвольный - Объект-владелец контактной информации
+// ПоложениеЗаголовкаКИ - ПоложениеЗаголовкаЭлементаФормы - Может принимать значения ПоложениеЗаголовкаЭлементаФормы.Лево
// или ПоложениеЗаголовкаЭлементаФормы.Верх (по умолчанию)
//
Процедура ПриСозданииНаСервере(Форма, Объект, ИмяЭлементаДляРазмещения = "", ПоложениеЗаголовкаКИ = "") Экспорт
@@ -67,22 +67,22 @@
Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
Запрос.Текст ="
|ВЫБРАТЬ
- | ВидыКонтактнойИнформации.Ссылка КАК Вид,
- | ВидыКонтактнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
- | ВидыКонтактнойИнформации.Тип КАК Тип,
- | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение,
- | ВидыКонтактнойИнформации.Подсказка КАК Подсказка,
- | ВидыКонтактнойИнформации.Наименование КАК Наименование,
- | ВидыКонтактнойИнформации.Наименование КАК Заголовок,
- |
- | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти,
- | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
- | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление,
- | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей,
- | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки,
- | " + ДанныеИдентификатораСтрокиТабличнойЧасти + " КАК ИдентификаторСтроки,
- | ВЫРАЗИТЬ("""""""" КАК СТРОКА(200)) КАК ИмяРеквизита,
- | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий
+ | ВидыКонтактнойИнформации.Ссылка КАК Вид,
+ | ВидыКонтактнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
+ | ВидыКонтактнойИнформации.Тип КАК Тип,
+ | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение,
+ | ВидыКонтактнойИнформации.Подсказка КАК Подсказка,
+ | ВидыКонтактнойИнформации.Наименование КАК Наименование,
+ | ВидыКонтактнойИнформации.Наименование КАК Заголовок,
+ | ВидыКонтактнойИнформации.РедактированиеТолькоВДиалоге КАК РедактированиеТолькоВДиалоге,
+ | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти,
+ | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
+ | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление,
+ | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей,
+ | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки,
+ | " + ДанныеИдентификатораСтрокиТабличнойЧасти + " КАК ИдентификаторСтроки,
+ | ВЫРАЗИТЬ("""""""" КАК СТРОКА(200)) КАК ИмяРеквизита,
+ | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|ЛЕВОЕ СОЕДИНЕНИЕ
@@ -116,22 +116,22 @@
|;////////////////////////////////////////////////////////////////////////////////
|
|ВЫБРАТЬ
- | ВидыКонтактнойИнформации.Ссылка КАК Вид,
- | ВидыКонтактнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
- | ВидыКонтактнойИнформации.Тип КАК Тип,
- | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение,
- | ВидыКонтактнойИнформации.Подсказка КАК Подсказка,
- | ВидыКонтактнойИнформации.Наименование КАК Наименование,
- | ВидыКонтактнойИнформации.Наименование КАК Заголовок,
- |
- | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти,
- | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
- | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление,
- | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей,
- | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки,
- | " + ДанныеИдентификатораСтрокиТабличнойЧасти + " КАК ИдентификаторСтроки,
- | ВЫРАЗИТЬ("""""""" КАК СТРОКА(200)) КАК ИмяРеквизита,
- | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий
+ | ВидыКонтактнойИнформации.Ссылка КАК Вид,
+ | ВидыКонтактнойИнформации.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
+ | ВидыКонтактнойИнформации.Тип КАК Тип,
+ | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение,
+ | ВидыКонтактнойИнформации.Подсказка КАК Подсказка,
+ | ВидыКонтактнойИнформации.Наименование КАК Наименование,
+ | ВидыКонтактнойИнформации.Наименование КАК Заголовок,
+ | ВидыКонтактнойИнформации.РедактированиеТолькоВДиалоге КАК РедактированиеТолькоВДиалоге,
+ | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти,
+ | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
+ | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление,
+ | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей,
+ | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки,
+ | " + ДанныеИдентификатораСтрокиТабличнойЧасти + " КАК ИдентификаторСтроки,
+ | ВЫРАЗИТЬ("""""""" КАК СТРОКА(200)) КАК ИмяРеквизита,
+ | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|ЛЕВОЕ СОЕДИНЕНИЕ
@@ -304,21 +304,19 @@
КонецЕсли;
- Вид = СтрокаКИ.Вид;
- Тип = СтрокаКИ.Тип;
ЕстьКомментарий = ЗначениеЗаполнено(СтрокаКИ.Комментарий);
ИмяРеквизита = СтрокаКИ.ИмяРеквизита;
- ЭтоНовыйВидКИ = (Вид <> ПредыдущийВид);
+ ЭтоНовыйВидКИ = (СтрокаКИ.Вид <> ПредыдущийВид);
// Добавляем заголовок
Если ЗаголовокСлева Тогда
- Заголовок(Форма, Тип, ИмяРеквизита, ГруппаЗаголовков, СтрокаКИ.Наименование, ЭтоНовыйВидКИ, ЕстьКомментарий);
+ Заголовок(Форма, СтрокаКИ.Тип, ИмяРеквизита, ГруппаЗаголовков, СтрокаКИ.Наименование, ЭтоНовыйВидКИ, ЕстьКомментарий);
КонецЕсли;
- ПолеВвода(Форма, Вид, Тип, ИмяРеквизита, СтрокаКИ.Подсказка, ЭтоНовыйВидКИ, СтрокаКИ.ОбязательноеЗаполнение);
+ ПолеВвода(Форма, СтрокаКИ.РедактированиеТолькоВДиалоге, СтрокаКИ.Тип, ИмяРеквизита, СтрокаКИ.Подсказка, ЭтоНовыйВидКИ, СтрокаКИ.ОбязательноеЗаполнение);
// Выводим комментарий
Если ЕстьКомментарий Тогда
@@ -337,10 +335,10 @@
КонецЕсли;
- Действие(Форма, Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов, ЕстьКомментарий);
+ Действие(Форма, СтрокаКИ.Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов, ЕстьКомментарий);
ДобавитьРеквизитВОписание(Форма, СтрокаКИ, ЭтоНовыйВидКИ);
- ПредыдущийВид = Вид;
+ ПредыдущийВид = СтрокаКИ.Вид;
КонецЦикла;
@@ -356,7 +354,6 @@
Команда.Отображение = ОтображениеКнопки.КартинкаИТекст;
Команда.Картинка = БиблиотекаКартинок.ДобавитьЭлементСписка;
Команда.Действие = "Подключаемый_КонтактнаяИнформацияВыполнитьКоманду";
- Команда.ИзменяетСохраняемыеДанные = Истина;
ДобавитьОписаниеЭлемента(Форма, ИмяКоманды, 9, Истина);
@@ -374,7 +371,7 @@
//
// Параметры:
// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной информации
-// Объект - Объект-владелец контактной информации
+// Объект - Произвольный - Объект-владелец контактной информации
//
Процедура ПриЧтенииНаСервере(Форма, Объект) Экспорт
@@ -429,7 +426,7 @@
//
// Параметры:
// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной информации
-// Объект - Объект-владелец контактной информации
+// Объект - Произвольный - Объект-владелец контактной информации
//
Процедура ПослеЗаписиНаСервере(Форма, Объект) Экспорт
@@ -472,7 +469,7 @@
//
// Параметры:
// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной информации
-// Объект - Объект-владелец контактной информации
+// Объект - Произвольный - Объект-владелец контактной информации
//
Процедура ОбработкаПроверкиЗаполненияНаСервере(Форма, Объект, Отказ) Экспорт
@@ -564,7 +561,7 @@
//
// Параметры:
// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной информации
-// Объект - Объект-владелец контактной информации
+// Объект - Произвольный - Объект-владелец контактной информации
//
Процедура ПередЗаписьюНаСервере(Форма, Объект, Отказ = Ложь) Экспорт
@@ -614,8 +611,11 @@
//
// Параметры:
// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной информации
-// Объект - Объект-владелец контактной информации
-// Результат - Необязательный служебный реквизит, полученный из предыдущего обработчика события.
+// Объект - Произвольный - Объект-владелец контактной информации
+// Результат - Произвольный - Необязательный служебный реквизит, полученный из предыдущего обработчика события.
+//
+// Возвращаемое значение:
+// Неопределено
//
Функция ОбновитьКонтактнуюИнформацию(Форма, Объект, Результат = Неопределено) Экспорт
@@ -639,43 +639,45 @@
// Проверяет адрес на соответствие российского адреса требованиям к адресной информации
//
// Параметры:
-// СтруктураПолейАдреса - Структура, СписокЗначений, Строка, содержащая поля адресной информации
-// Структура и СписокЗначений, содержит имена полей адреса и их значения,
-// Строка - строка XML контактной информации или содержит строки с именами
-// полей и их значениями.
+// СтруктураПолейАдреса - Структура, СписокЗначений, Строка - поля адресной информации.
+// Структура и СписокЗначений, содержит имена полей адреса и их значения,
+// Строка - строка XML контактной информации или содержит строки с именами полей и их значениями.
//
-// ВидКонтактнойИнформации - необязательная ссылка на справочник "Виды контактной информации"
-// соответствующая проверяемому адресу
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание соответствующего вида контактной информации
+// для получения флагов, влияющих на проверку: АдресТолькоРоссийский, ОбязательноеЗаполнение, ВключатьСтрануВПредставление.
+// Если не указан, то будут использованы установки по умолчанию - значение Ложь для всех флагов
//
// Возвращаемое значение:
-// Массив структур с полями:
-// - ТипОшибки - строка с наименованием ошибки. Принимаемые значения:
-// - ПредставлениеНеСоответствуетНаборуПолей
-// - НеЗаполненыОбязательныеПоля
-// - НеУказаныСокращенияПолей
-// - НедопустимыеСимволыПолей
-// - НеСоответствуетДлинаПолей
-// - ОшибкиПоКлассификатору
-// - Сообщение - Подробный текст ошибки
-// - Поля - массив структур с полями:
-// - ИмяПоля - Строка, название элемента в структуре адреса
-// - Сообщение - строка, подробный текст ошибки для поля
+// Массив - содержит структуру с полями:
+// * ТипОшибки - Строка - Идентификатор ошибки. Принимаемые значения:
+// "ПредставлениеНеСоответствуетНаборуПолей"
+// "НеЗаполненыОбязательныеПоля"
+// "НеУказаныСокращенияПолей"
+// "НедопустимыеСимволыПолей"
+// "НеСоответствуетДлинаПолей"
+// "ОшибкиПоКлассификатору"
+// * Сообщение - Строка - Подробный текст ошибки
+// * Поля - Массив - содержит структуры с полями:
+// ** ИмяПоля - Строка - название элемента в структуре адреса
+// ** Сообщение - строка - подробный текст ошибки для поля
//
Функция ПроверитьАдрес(Знач СтруктураПолейАдреса, ВидКонтактнойИнформации = Неопределено) Экспорт
+
Возврат КонтактнаяИнформацияСлужебный.ОшибкиЗаполненияАдреса(СтруктураПолейАдреса, ВидКонтактнойИнформации, Истина);
+
КонецФункции
// Преобразует все входящие форматы контактной информации в XML
//
// Параметры:
-// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, соответствие или список значений,
-// описывающие поля контактной информации.
-// Представление - строка представления. Используется, если невозможно определить представление из параметра
+// ЗначенияПолей - Строка, Структура, Соответствие, СписокЗначений - описание полей контактной информации.
+// Представление - Строка - представления. Используется, если невозможно определить представление из параметра
// ЗначенияПолей (отсутствие поля "Представление")
-// ОжидаемыйВид - ссылка на справочник ВидыКонтактнойИнформации или перечисление ТипыКонтактнойИнформации.
+// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации -
// Используется для определения типа, если его невозможно вычислить по полю ЗначенияПолей
//
-// Возвращаемое значение - строка XML данных контактной информации
+// Возвращаемое значение:
+// Строка - XML данные контактной информации
//
Функция КонтактнаяИнформацияВXML(Знач ЗначенияПолей, Знач Представление = "", Знач ОжидаемыйВид = Неопределено) Экспорт
@@ -689,7 +691,10 @@
// Возвращает соответствующее значение перечисления "ТипыКонтактнойИнформации" по строке XML
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию
+// XMLСтрока - Строка - контактная информацию
+//
+// Возвращаемое значение:
+// ПеречислениеСсылка.ТипыКонтактнойИнформации - соответствующий тип
//
Функция ТипКонтактнойИнформации(Знач XMLСтрока) Экспорт
Возврат КонтактнаяИнформацияXML.ТипКонтактнойИнформации(XMLСтрока);
@@ -698,8 +703,11 @@
// Читает или устанавливает представление контактной информации.
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию. Может быть изменена если указан второй параметр.
-// НовоеЗначение - если этот параметр указан, то представление в XMLСтрока устанавливается на новое значение
+// XMLСтрока - Строка - XML контактной информации
+// НовоеЗначение - Строка - устанавливаемое значение
+//
+// Возвращаемое значение:
+// Строка - новое значение
//
Функция ПредставлениеКонтактнойИнформации(XMLСтрока, Знач НовоеЗначение = Неопределено) Экспорт
Возврат КонтактнаяИнформацияСлужебный.ПредставлениеКонтактнойИнформации(XMLСтрока, НовоеЗначение);
@@ -712,6 +720,9 @@
// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - набор флагов, описывающих
// параметры генерации представления
//
+// Возвращаемое значение:
+// Строка - вычисленное представление
+//
Функция ПредставлениеКонтактнойИнформацииПоЗначениюПолей(Знач XMLСтрока, Знач ВидКонтактнойИнформации = Неопределено) Экспорт
Если ВидКонтактнойИнформации = Неопределено Тогда
@@ -727,20 +738,25 @@
// Читает или устанавливает комментарий к контактной информации
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию. Может быть изменена если указан второй параметр.
-// НовоеЗначение - если этот параметр указан, то комментарий в XMLСтрока устанавливается на новое значение
+// XMLСтрока - Строка - XML контактной информации
+// НовоеЗначение - Строка - устанавливаемое значение
+//
+// Возвращаемое значение:
+// Строка - новое значение
//
Функция КомментарийКонтактнойИнформации(XMLСтрока, Знач НовоеЗначение = Неопределено) Экспорт
Возврат КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(XMLСтрока, НовоеЗначение);
КонецФункции
// Читает или устанавливает адрес по документу у адреса РФ
+// Если переданная строка не содержит информации об адресе РФ, то будет вызвано исключение
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию. Может быть изменена если указан второй параметр.
-// НовоеЗначение - если этот параметр указан, то комментарий в XMLСтрока устанавливается на новое значение
+// XMLСтрока - Строка - XML контактной информации
+// НовоеЗначение - Строка - устанавливаемое значение
//
-// Если переданная строка не содержит информации об адресе РФ, то будет вызвано исключение
+// Возвращаемое значение:
+// Строка - новое значение
//
Функция АдресПоДокументуКонтактнойИнформации(XMLСтрока, Знач НовоеЗначение = Неопределено) Экспорт
Если ПустаяСтрока(XMLСтрока) Тогда
@@ -765,19 +781,23 @@
КонецФункции
// Возвращает информацию о стране адреса
+// Если переданная строка не содержит информации об адресе, то будет вызвано исключение
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию.
+// XMLСтрока - Строка - XML контактной информации
//
// Возвращаемое значение:
-// Структура с полями "Ссылка", "Наименование", "Ссылка", "Код", "НаименованиеПолное", "КодАльфа2", "КодАльфа3",
-// которая описывает страну адреса.
+// Структура - описание страны адреса. Содержит поля:
+// * Ссылка - СправочникСсылка.СтраныМира, Неопределено - соответствующий элемент страны мира
+// * Наименование - Строка - часть описания страны
+// * Код - Строка - часть описания страны
+// * НаименованиеПолное - Строка - часть описания страны
+// * КодАльфа2 - Строка - часть описания страны
+// * КодАльфа3 - Строка - часть описания страны
//
-// Если передана пустая строка, то возвращается пустая структура.
-// Если страна не найдена в справочнике, то но найдена в классфикаторе, то поле "Ссылка" не заполнено
-// Если страна не найдена ни в адресе, ни в классификаторе, то будет заполнено только поле "Наименование"
-//
-// Если переданная строка не содержит информации об адресе, то будет вызвано исключение
+// Если передана пустая строка, то возвращается пустая структура.
+// Если страна не найдена в справочнике, то но найдена в классфикаторе, то поле "Ссылка" результата не заполнено
+// Если страна не найдена ни в адресе, ни в классификаторе, то будет заполнено только поле "Наименование"
//
Функция СтранаАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт
@@ -802,11 +822,13 @@
КонецФункции
// Возвращает наименование субъекта РФ для адреса или пустую строку, если субъект не определен
+// Если переданная строка не содержит информации об адресе, то будет вызвано исключение
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию.
+// XMLСтрока - Строка - XML контактной информации
//
-// Если переданная строка не содержит информации об адресе, то будет вызвано исключение
+// Возвращаемое значение:
+// Строка - наименование
//
Функция РегионАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт
Если ПустаяСтрока(XMLСтрока) Тогда
@@ -827,11 +849,13 @@
КонецФункции
// Возвращает наименование города для адреса РФ или пустую строку для иностранного адреса
+// Если переданная строка не содержит информации об адресе, то будет вызвано исключение
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию.
+// XMLСтрока - Строка - XML контактной информации
//
-// Если переданная строка не содержит информации об адресе, то будет вызвано исключение
+// Возвращаемое значение:
+// Строка - наименование
//
Функция ГородАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт
Если ПустаяСтрока(XMLСтрока) Тогда
@@ -854,7 +878,10 @@
// Возвращает домен сетевого адреса для веб-ссылки или адреса электронной почты
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию.
+// XMLСтрока - Строка - XML контактной информации
+//
+// Возвращаемое значение:
+// Строка - требуемое значение
//
Функция ДоменАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт
Если ПустаяСтрока(XMLСтрока) Тогда
@@ -891,7 +918,10 @@
// Возвращает строку с номером телефона без кода и дополнительного номера
//
// Параметры:
-// XMLСтрока - строка, описывающая контактную информацию.
+// XMLСтрока - Строка - XML контактной информации
+//
+// Возвращаемое значение:
+// Строка - требуемое значение
//
Функция НомерТелефонаКонтактнойИнформации(Знач XMLСтрока) Экспорт
Если ПустаяСтрока(XMLСтрока) Тогда
@@ -920,28 +950,24 @@
// Сравнивает два экземпляра контактной инфромации.
//
// Параметры:
-// Данные1, Данные2 - данные экземпляров контактной информации. Каждый параметр независимо может принимать
-// значения следующих типов:
-// - ОбъектXTDO. Рассматривается как объект с контактной информацией
-// - Строка. Рассматривается как контактная информация в формате XML
-// - Структура, описывающие контактную информацию. Ожидаются поля:
-// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, список значений,
-// соответствие. Если в этом поле передана строка XML, то остальные поля
-// структуры игнорируются.
-// Представление - строка представления. Используется в случае, если не удалось вычислить
-// представление из ЗначенияПолей (отсутствие в них поля Представление)
-// ВидКонтактнойИнформации - ссылка на справочник ВидыКонтактнойИнформации или значение перечисления
-// ТипыКонтактнойИнформации. Используется в случае, если не удалось вычислить
-// тип из ЗначенияПолей
-// Комментарий - строка комментария. Используется в случае, если не удалось вычислить
-// комментарий из ЗначенияПолей
+// Данные1 - ОбъектXTDO - объект с контактной информацией
+// - Строка - контактная информация в формате XML
+// - Структура - описание контактной информацию. Ожидаются поля:
+// * ЗначенияПолей - Строка, Структура, СписокЗначений, Соответствие - поля контактной информации
+// * Представление - Строка - Представление. Используется в случае, если не удалось вычислить
+// представление из ЗначенияПолей (отсутствие в них поля Представление)
+// * Комментарий - Строка - комментарий. Используется в случае, если не удалось вычислить комментарий из ЗначенияПолей
+// * ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+// Используется в случае, если не удалось вычислить тип из ЗначенияПолей
+// Данные2 - ОбъектXTDO, Строка, Структура - аналогично Данные1
//
-// Возвращает таблицу отличающихся полей со следующими колонками:
-// Путь - строка XPath, идентифицирующая различающееся значение. Значение "ТипКонтактнойИнформации" означает,
-// что переданные экземпляры контактной информации различаются типом.
-// Описание - строка описания отличающегося реквизита в терминах предметной области
-// Значение1 - строка значения, соответствующая объекту, переданному в параметре Данные1
-// Значение2 - строка значения, соответствующая объекту, переданному в параметре Данные2
+// Возвращаемое значение:
+// ТаблицаЗначений: - таблица отличающихся полей со следующими колонками:
+// * Путь - Строка - XPath, идентифицирующий различающееся значение. Значение "ТипКонтактнойИнформации" означает,
+// что переданные экземпляры контактной информации различаются типом.
+// * Описание - Строка - описание отличающегося реквизита в терминах предметной области
+// * Значение1 - Строка - значение, соответствующая объекту, переданному в параметре Данные1
+// * Значение2 - Строка - значение, соответствующая объекту, переданному в параметре Данные2
//
Функция РазличияКонтактнойИнформации(Знач Данные1, Знач Данные2) Экспорт
Возврат КонтактнаяИнформацияXML.РазличияКонтактнойИнформации(Данные1, Данные2);
@@ -950,12 +976,12 @@
// Преобразует данные нового формата XML контактной информации в старый формат
//
// Параметры:
-// Данные - строка значений полей в новом формате (xml)
-// СтарыйСоставПолей - булево - необязательный флаг того, что из состава полей будут исключены
-// поля, отсутствующие в версиях БСП младше 2.1.3
+// Данные - Строка - XML контактной информации
+// СтарыйСоставПолей - Булево - необязательный флаг того, что из состава полей будут исключены
+// поля, отсутствующие в версиях БСП младше 2.1.3
//
// Возвращаемое значение:
-// Строка с набором пар ключ-значение, разделенных переносом строки
+// Строка - набор пар ключ-значение, разделенных переносом строки
//
Функция ПредыдущийФорматКонтактнойИнформацииXML(Знач Данные, Знач СтарыйСоставПолей = Ложь) Экспорт
@@ -971,12 +997,11 @@
// Преобразует данные нового формата XML контактной информации в структуру старого формата
//
// Параметры:
-// Данные - строка значений полей, в новом формате (xml) или в старом (ключ = значение)
-// ВидКонтактнойИнформации - необязательная ссылка на справочник вида, или совместимая по полям структура
-// используется, если "Данные" - пустая строка
+// Данные - Строка - XML контактной информации или пары ключ-значение
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание параметров КИ
//
// Возвращаемое значение:
-// Структура с набором пар ключ-значение
+// Структура - набор пар ключ-значение
//
Функция ПредыдущаяСтруктураКонтактнойИнформацииXML(Знач Данные, Знач ВидКонтактнойИнформации = Неопределено) Экспорт
@@ -1001,14 +1026,18 @@
// Определяет данные страны по справочнику стран или классификатору ОКСМ
//
// Параметры:
-// КодСтраны - строка или число с кодом ОКСМ страны. Если не указано, то поиск по коду не производится
-// Наименование - наименование страны. Если не указано, то поиск по наименованию не производится
+// КодСтраны - Строка, Число - код ОКСМ страны. Если не указано, то поиск по коду не производится
+// Наименование - Строка - Наименование страны. Если не указано, то поиск по наименованию не производится
//
// Возвращаемое значение:
-// Структура с полями "Ссылка", "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3",
-// Если страна не найдена в справочнике, но найдена в классфикаторе, то поле "Ссылка" не заполнено
-//
-// Если страна не найдена ни в адресе, ни в классификаторе, то возвращается значение Неопределено
+// Структура - описание страны. Содержит поля:
+// * Ссылка - СправочникСсылка.СтраныМира, Неопределено - соответствующий элемент страны мира
+// * Наименование - Строка - часть описания страны
+// * Код - Строка - часть описания страны
+// * НаименованиеПолное - Строка - часть описания страны
+// * КодАльфа2 - Строка - часть описания страны
+// * КодАльфа3 - Строка - часть описания страны
+// Неопределено - страна не найдена ни в адресе, ни в классификаторе
//
Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт
Возврат Справочники.СтраныМира.ДанныеСтраныМира(КодСтраны, Наименование);
@@ -1017,11 +1046,16 @@
// Определяет данные страны по классификатору ОКСМ
//
// Параметры:
-// КодСтраны - строка кода страны или числовой код
+// КодСтраны - Строка, Число - код страны
//
// Возвращаемое значение:
-// - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3"
-// - в случае отсутствия страны в классификаторе - Неопределено
+// Структура - описание страны. Содержит поля:
+// * Наименование - Строка - часть описания страны
+// * Код - Строка - часть описания страны
+// * НаименованиеПолное - Строка - часть описания страны
+// * КодАльфа2 - Строка - часть описания страны
+// * КодАльфа3 - Строка - часть описания страны
+// Неопределено - страна не найдена в классификаторе
//
Функция ДанныеКлассификатораСтранМираПоКоду(Знач КодСтраны) Экспорт
Возврат Справочники.СтраныМира.ДанныеКлассификатораСтранМираПоКоду(КодСтраны);
@@ -1030,11 +1064,16 @@
// Определяет данные страны по классификатору ОКСМ
//
// Параметры:
-// Наименование - строка наименования страны
+// Наименование - Строка - наименование страны
//
// Возвращаемое значение:
-// - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3"
-// - в случае отсутствия страны в классификаторе - Неопределено
+// Структура - описание страны. Содержит поля:
+// * Наименование - Строка - часть описания страны
+// * Код - Строка - часть описания страны
+// * НаименованиеПолное - Строка - часть описания страны
+// * КодАльфа2 - Строка - часть описания страны
+// * КодАльфа3 - Строка - часть описания страны
+// Неопределено - страна не найдена в классификаторе
//
Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт
Возврат Справочники.СтраныМира.ДанныеКлассификатораСтранМираПоНаименованию(Наименование);
@@ -1051,11 +1090,11 @@
// Получить значение определенного вида контактной информации у объекта.
//
// Параметры
-// Ссылка - ЛюбаяСсылка - ссылка на объект-владелец контактной информации (организация, контрагент, партнер и т.д.)
-// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации
+// Ссылка - ЛюбаяСсылка - ссылка на объект-владелец контактной информации (организация, контрагент, партнер и т.д.)
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - параметры обработки
//
// Возвращаемое значение:
-// Строка - строковое представление значения.
+// Строка - строковое представление значения.
//
Функция КонтактнаяИнформацияОбъекта(Ссылка, ВидКонтактнойИнформации) Экспорт
@@ -1075,14 +1114,14 @@
// Возвращает значения всей контактной информации определенного вида для объекта-владельца
//
// Параметры:
-// Ссылка - ссылка на объект-владелец контактной информации (организация, контрагент, партнер и т.д.)
-// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации
+// Ссылка - ЛюбаяСсылка - ссылка на объект-владелец контактной информации (организация, контрагент, партнер и т.д.)
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - параметры обработки
//
// Возвращаемое значение:
-// Таблица значений с колонками:
-// НомерСтроки - номер строки дополнительной табличной части объекта-владельца
-// Представление - представление КИ, введенное пользователем
-// СтруктураПолей - структура с парами ключ-значение данных информации
+// Таблица значений -информация. Колонками:
+// * НомерСтроки - Число - номер строки дополнительной табличной части объекта-владельца
+// * Представление - Строка - представление КИ, введенное пользователем
+// * СтруктураПолей - Структура - пары ключ-значение данных информации
//
Функция ТаблицаКонтактнойИнформацииОбъекта(Ссылка, ВидКонтактнойИнформации) Экспорт
@@ -1122,19 +1161,17 @@
// Предназначена для создания временной таблицы с контактной информацией нескольких объектов
//
// Параметры:
-// МенеджерВременныхТаблиц
-// МассивОбъектов, массив владельцев контактной информации
-// Тип - массив
-// Все элементы одного типа
-// ТипыКИ - массив, необязательный, если не задан все типы
-// ВидыКИ - массив, необязательный, если не задан все виды
+// МенеджерВременныхТаблиц - МенеджерВременныхТаблиц - для формирования
+// МассивОбъектов - Массив - владельцы контактной информации, все элементы должны быть одного типа
+// ТипыКИ - Массив - необязательный, используется если не задан все типы
+// ВидыКИ - Массив - необязательный, используется если не задан все виды
//
-// В менеджер создается временная таблица ВТКонтактнаяИнформация с полями:
-// Объект
-// Вид
-// Тип
-// ЗначенияПолей
-// Представление
+// В менеджере создается временная таблица ВТКонтактнаяИнформация с полями:
+// * Объект - Ссылка - владелец КИ
+// * Вид - СправочникСсылка.ВидыКонтактнойИнформации
+// * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации
+// * ЗначенияПолей - Строка - данные значений полей
+// * Представление - Строка - представление КИ
//
Процедура СоздатьВТКонтактнаяИнформация(МенеджерВременныхТаблиц, МассивОбъектов, ТипыКИ = Неопределено, ВидыКИ = Неопределено) Экспорт
@@ -1172,19 +1209,17 @@
// Предназначена для получения контактной информации для нескольких объектов
//
// Параметры:
-// МассивОбъектов, массив владельцев контактной информации
-// Тип - массив
-// Все элементы одного типа
-// ТипыКИ - массив, необязательный, если не задан все типы
-// ВидыКИ - массив, необязательный, если не задан все виды
+// МассивОбъектов - Массив - владельцы контактной информации, все элементы должны быть одного типа
+// ТипыКИ - Массив - необязательный, используется если не задан все типы
+// ВидыКИ - Массив - необязательный, используется если не задан все виды
//
// Возвращаемое значение
-// Таблица значений с полями:
-// Объект
-// Вид
-// Тип
-// ЗначенияПолей
-// Представление
+// Таблица значений - результат. Колонки:
+// * Объект - Ссылка - владелец КИ
+// * Вид - СправочникСсылка.ВидыКонтактнойИнформации
+// * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации
+// * ЗначенияПолей - Строка - данные значений полей
+// * Представление - Строка - представление КИ
//
Функция КонтактнаяИнформацияОбъектов(МассивОбъектов, ТипыКИ = Неопределено, ВидыКИ = Неопределено) Экспорт
@@ -1208,10 +1243,11 @@
КонецФункции
// Заполняет контактную информацию в объектах
+//
// Параметры:
// ДанныеЗаполнения - ТаблицаЗначений - описывает объекты для для заполнения. Содержит колонки:
-// * Приемник - Ссылка или Объект, в котором нужно заполнить КИ
-// * ВидКИ - СправочникСсылка.ВидыКонтактнойИнформации вид контактной информации, заполняемый в приемнике
+// * Приемник - Произвольный - ссылка или объект, в котором нужно заполнить КИ
+// * ВидКИ - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации, заполняемый в приемнике
// * СтруктураКИ - СписокЗначений, Строка, Структура - данные значений полей контактной информации
// * КлючСтроки - Структура - фильтр для поиска строки в табличной части, где Ключ - имя колонки в табличной части, Значение - значение отбора
//
@@ -1272,12 +1308,12 @@
КонецПроцедуры
// Заполняет контактную информацию объекта
+//
// Параметры:
-// Приемник - ссылка или объект, в котором нужно заполнить КИ
-// ВидКИ - вид контактной информации, заполняемый в приемнике
-// СтруктураКИ - заполненная структура контактной информации
-// КлючСтроки - Структура отбора для поиска строки в табличной части,
-// где Ключ - Имя колонки в табличной части, значение - значение отбора
+// Приемник - Произвольный - ссылка или объект, в котором нужно заполнить КИ
+// ВидКИ - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации, заполняемый в приемнике
+// СтруктураКИ - Структура - заполненная структура контактной информации
+// КлючСтроки - Структура - отбор для поиска строки в табличной части, Ключ - Имя колонки в табличной части, значение - значение отбора
//
Процедура ЗаполнитьКонтактнуюИнформациюОбъекта(Приемник, ВидКИ, СтруктураКИ, КлючСтроки = Неопределено) Экспорт
@@ -1297,6 +1333,52 @@
КонецПроцедуры
+// Записывает контактную информацию из XML в поля табличной части Контактная информация объекта
+//
+// Параметры:
+// Объект - ЛюбаяСсылка - номер телефона или факса.
+// ЗначенияПолей - Строка - контактная информация в формате XML
+// ВидИнформации - Справочник.ВидыКонтактнойИнформация - ссылка на вид контактной информации
+// ТипИнформации - Перечисление.ТипыКонтактнойИнформация - тип контактной информации
+// ИдентификаторСтроки - Число - идентификатор строки табличной части
+Процедура ЗаписатьКонтактнуюИнформацию(Объект, ЗначенияПолей, ВидИнформации, ТипИнформации, ИдентификаторСтроки = 0) Экспорт
+
+ ОбъектКИ = КонтактнаяИнформацияСлужебный.ДесериализацияКонтактнойИнформации(ЗначенияПолей, ВидИнформации);
+
+ Если Не КонтактнаяИнформацияСлужебный.XDTOКонтактнаяИнформацияЗаполнена(ОбъектКИ) Тогда
+ Возврат;
+ КонецЕсли;
+
+ НоваяСтрока = Объект.КонтактнаяИнформация.Добавить();
+ НоваяСтрока.Представление = ОбъектКИ.Представление;
+ НоваяСтрока.ЗначенияПолей = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(ОбъектКИ);
+ НоваяСтрока.Вид = ВидИнформации;
+ НоваяСтрока.Тип = ТипИнформации;
+
+ Если ЗначениеЗаполнено(ИдентификаторСтроки) Тогда
+ НоваяСтрока.ИдентификаторСтрокиТабличнойЧасти = ИдентификаторСтроки;
+ КонецЕсли;
+
+ // Заполнение дополнительных реквизитов ТЧ
+ Если ТипИнформации = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
+ ЗаполнитьРеквизитыТабличнойЧастиДляАдресаЭлектроннойПочты(НоваяСтрока, ОбъектКИ);
+
+ ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
+ ЗаполнитьРеквизитыТабличнойЧастиДляАдреса(НоваяСтрока, ОбъектКИ);
+
+ ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
+ ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(НоваяСтрока, ОбъектКИ);
+
+ ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.Факс Тогда
+ ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(НоваяСтрока, ОбъектКИ);
+
+ ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда
+ ЗаполнитьРеквизитыТабличнойЧастиДляВебСтраницы(НоваяСтрока, ОбъектКИ);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
@@ -1315,8 +1397,7 @@
// Возвращает значение перечисления тип вида контактной информации
//
// Параметры:
-// ВидИнформации - перечисление типа, ссылка на справочник ВидыКонтактнойИнформации или объект
-// с полем "Тип"
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - источник данных
//
Функция ТипВидаКонтактнойИнформации(Знач ВидИнформации) Экспорт
Результат = Неопределено;
@@ -1423,6 +1504,9 @@
// ИмяРеквизита - Строка - Имя реквизита, наличие которого проверяется
// Объект - Произвольный - Проверяемый объект
//
+// Возвращаемое значение:
+// Булево - результат проверки
+//
Функция ЕстьРеквизитОбъекта(Знач ИмяРеквизита, Знач Объект)
ПроверкаРеквизита = Новый Структура(ИмяРеквизита, Неопределено);
ЗаполнитьЗначенияСвойств(ПроверкаРеквизита, Объект);
@@ -1594,6 +1678,13 @@
Процедура ДобавитьСтрокуКонтактнойИнформации(Форма, Результат)
ДобавляемыйВид = Результат.ДобавляемыйВид;
+ Если ТипЗнч(ДобавляемыйВид)= Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда
+ ИнформацияОВидеКИ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДобавляемыйВид, "Тип, Наименование, РедактированиеТолькоВДиалоге, Подсказка");
+ Иначе
+ ИнформацияОВидеКИ = ДобавляемыйВид;
+ ДобавляемыйВид = ДобавляемыйВид.Ссылка;
+ КонецЕсли;
+
ТаблицаКонтактнойИнформации = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов;
Отбор = Новый Структура("Вид", ДобавляемыйВид);
@@ -1611,14 +1702,13 @@
НоваяСтрока = ТаблицаКонтактнойИнформации.Вставить(ИндексДобавляемойСтроки);
ИмяРеквизита = "КонтактнаяИнформацияПоле" + НоваяСтрока.ПолучитьИдентификатор();
- Тип = ДобавляемыйВид.Тип;
НоваяСтрока.ИмяРеквизита = ИмяРеквизита;
НоваяСтрока.Вид = ДобавляемыйВид;
- НоваяСтрока.Тип = Тип;
+ НоваяСтрока.Тип = ИнформацияОВидеКИ.Тип;
НоваяСтрока.ЭтоРеквизитТабличнойЧасти = Ложь;
МассивДобавляемыхРеквизитов = Новый Массив;
- МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(500)), , ДобавляемыйВид.Наименование, Истина));
+ МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(500)), , ИнформацияОВидеКИ.Наименование, Истина));
Форма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
@@ -1627,7 +1717,7 @@
//Отрисовка на форме
Если ЗаголовокСлева Тогда
ГруппаЗаголовков = Форма.Элементы.ГруппаЗаголовковКонтактнойИнформации;
- Заголовок = Заголовок(Форма, Тип, ИмяРеквизита, ГруппаЗаголовков, ДобавляемыйВид.Наименование);
+ Заголовок = Заголовок(Форма, ИнформацияОВидеКИ.Тип, ИмяРеквизита, ГруппаЗаголовков, ИнформацияОВидеКИ.Наименование);
Если Не ЭтоПоследняяСтрока Тогда
СледующийЗаголовок = Форма.Элементы["Заголовок" + ИмяСледующегоРеквизита];
@@ -1636,7 +1726,7 @@
КонецЕсли;
ГруппаПолейВвода = Форма.Элементы.ГруппаПолейВводаКонтактнойИнформации;
- ПолеВвода = ПолеВвода(Форма, ДобавляемыйВид, Тип, ИмяРеквизита, ДобавляемыйВид.Подсказка);
+ ПолеВвода = ПолеВвода(Форма, ИнформацияОВидеКИ.РедактированиеТолькоВДиалоге, ИнформацияОВидеКИ.Тип, ИмяРеквизита, ИнформацияОВидеКИ.Подсказка);
Если Не ЭтоПоследняяСтрока Тогда
@@ -1668,7 +1758,7 @@
ИмяСледующегоДействия = "ЗаглушкаДействия" + ИмяСледующегоРеквизита;
КонецЕсли;
- Действие = Действие(Форма, Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов);
+ Действие = Действие(Форма, ИнформацияОВидеКИ.Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов);
Если Не ЭтоПоследняяСтрока Тогда
СледующееДействие = Форма.Элементы[ИмяСледующегоДействия];
Форма.Элементы.Переместить(Действие, ГруппаДействий, СледующееДействие);
@@ -1676,8 +1766,8 @@
Форма.ТекущийЭлемент = Форма.Элементы[ИмяРеквизита];
- Если Тип = Перечисления.ТипыКонтактнойИнформации.Адрес
- И ДобавляемыйВид.РедактированиеТолькоВДиалоге Тогда
+ Если ИнформацияОВидеКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес
+ И ИнформацияОВидеКИ.РедактированиеТолькоВДиалоге Тогда
Результат.Вставить("ЭлементФормыАдреса", ИмяРеквизита);
@@ -1712,7 +1802,7 @@
КонецФункции
-Функция ПолеВвода(Форма, Вид, Тип, ИмяРеквизита, Подсказка, ЭтоНовыйВидКИ = Ложь, ОбязательноеЗаполнение = Ложь)
+Функция ПолеВвода(Форма, РедактированиеТолькоВДиалоге, Тип, ИмяРеквизита, Подсказка, ЭтоНовыйВидКИ = Ложь, ОбязательноеЗаполнение = Ложь)
ЗаголовокСлева = ЗаголовокСлева(Форма);
@@ -1756,7 +1846,7 @@
Элемент.КнопкаВыбора = Истина;
- Если Вид.РедактированиеТолькоВДиалоге Тогда
+ Если РедактированиеТолькоВДиалоге Тогда
Элемент.РедактированиеТекста = Ложь;
Элемент.ЦветФона = ЦветаСтиля.КонтактнаяИнформацияСРедактированиемВДиалогеЦвет;
КонецЕсли;
@@ -1838,11 +1928,14 @@
Элемент = Форма.Элементы.Добавить(ИмяКомментария, Тип("ДекорацияФормы"), ГруппаДляРазмещения);
Элемент.Заголовок = Комментарий;
+
Элемент.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;
+
Элемент.РастягиватьПоГоризонтали = Истина;
- Элемент.РастягиватьПоВертикали = Ложь;
+ Элемент.РастягиватьПоВертикали = Ложь;
+ Элемент.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Верх;
+
Элемент.Высота = 1;
- Элемент.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Верх;
ДобавитьОписаниеЭлемента(Форма, ИмяКомментария, 2);
@@ -1872,8 +1965,8 @@
// Заполняет дополнительные реквизиты табличной части "Контактная информация" для адреса
//
// Параметры:
-// СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
-// Источник - объект XDTO с контактной информацией
+// СтрокаТабличнойЧасти - СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
+// Источник - ОбъектXDTO - контактная информация
//
Процедура ЗаполнитьРеквизитыТабличнойЧастиДляАдреса(СтрокаТабличнойЧасти, Источник)
@@ -1901,8 +1994,8 @@
// Заполняет дополнительные реквизиты табличной части "Контактная информация" для адреса электронной почты.
//
// Параметры:
-// СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
-// Источник - объект XDTO с контактной информацией
+// СтрокаТабличнойЧасти - СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
+// Источник - ОбъектXDTO - контактная информация
//
Процедура ЗаполнитьРеквизитыТабличнойЧастиДляАдресаЭлектроннойПочты(СтрокаТабличнойЧасти, Источник)
@@ -1922,8 +2015,8 @@
// Заполняет дополнительные реквизиты табличной части "Контактная информация" для телефона и факса.
//
// Параметры:
-// СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
-// Источник - объект XDTO с контактной информацией
+// СтрокаТабличнойЧасти - СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
+// Источник - ОбъектXDTO - контактная информация
//
Процедура ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(СтрокаТабличнойЧасти, Источник)
@@ -1961,8 +2054,8 @@
// Заполняет дополнительные реквизиты табличной части "Контактная информация" для телефона и факса.
//
// Параметры:
-// СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
-// Источник - объект XDTO с контактной информацией
+// СтрокаТабличнойЧасти - СтрокаТабличнойЧасти - заполняемая строка табличной части "Контактная информация".
+// Источник - ОбъектXDTO - контактная информация
//
Процедура ЗаполнитьРеквизитыТабличнойЧастиДляВебСтраницы(СтрокаТабличнойЧасти, Источник)
@@ -1989,8 +2082,8 @@
// Заполняет контактную информацию в табличной части "Контактная информация" приемника
//
// Параметры:
-// * Приемник - Объект, в котором нужно заполнить КИ
-// * ВидКИ - СправочникСсылка.ВидыКонтактнойИнформации вид контактной информации, заполняемый в приемнике
+// * Приемник - Произвольный - Объект, в котором нужно заполнить КИ
+// * ВидКИ - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации, заполняемый в приемнике
// * СтруктураКИ - СписокЗначений, Строка, Структура - данные значений полей контактной информации
// * СтрокаТабличнойЧасти - СтрокаТабличнойЧасти, Неопределено - данные приемника, если контактная информация заполняется для строки
// Неопределено, если контактная информация заполняется для приемника
@@ -2029,12 +2122,14 @@
КонецПроцедуры
// Проверяет контактную информацию электронной почты и сообщает об ошибках.
-// Возвращает уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
//
-// Параметры:
-// Источник - объект XDTO с контактной информацией
-// ВидИнформации - ссылка на справочник видов КИ с настройками проверки
-// ИмяРеквизита - необязательно имя реквизита для привязки сообщения об ошибке
+// Параметры:
+// Источник - ОбъектXDTO - контактная информацией
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации с настройками проверки
+// ИмяРеквизита - Строка - необязательно имя реквизита для привязки сообщения об ошибке
+//
+// Возвращаемое значение:
+// Число - уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
//
Функция ОшибкиЗаполненияЭлектроннойПочты(Источник, ВидИнформации, Знач ИмяРеквизита = "", ПолеРеквизита = "")
@@ -2071,12 +2166,14 @@
КонецФункции
// Проверяет контактную информацию адреса и сообщает об ошибках. Возвращает флаг наличия ошибок
-// Возвращает уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
//
// Параметры:
-// Источник - объект XDTO с контактной информацией
-// ВидИнформации - ссылка на справочник видов КИ с настройками проверки
-// ИмяРеквизита - необязательно имя реквизита для привязки сообщения об ошибке
+// Источник - ОбъектXDTO - контактная информацией
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации с настройками проверки
+// ИмяРеквизита - Строка - необязательно имя реквизита для привязки сообщения об ошибке
+//
+// Возвращаемое значение:
+// Число - уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
//
Функция ОшибкиЗаполненияАдреса(Источник, ВидИнформации, ИмяРеквизита = "", ПолеРеквизита = "")
Если Не ВидИнформации.ПроверятьКорректность Тогда
@@ -2103,25 +2200,29 @@
Возврат 0;
КонецФункции
-// Проверяет контактную информацию телефона и сообщает об ошибках. Возвращает флаг наличия ошибок
-// Возвращает уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
+// Проверяет контактную информацию телефона и сообщает об ошибках. Возвращает флаг наличия ошибок
//
-// Параметры:
-// Источник - объект XDTO с контактной информацией
-// ВидИнформации - ссылка на справочник видов КИ с настройками проверки
-// ИмяРеквизита - необязательно имя реквизита для привязки сообщения об ошибке
+// Параметры:
+// Источник - ОбъектXDTO - контактная информацией
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации с настройками проверки
+// ИмяРеквизита - Строка - необязательно имя реквизита для привязки сообщения об ошибке
+//
+// Возвращаемое значение:
+// Число - уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
//
Функция ОшибкиЗаполненияТелефона(Источник, ВидИнформации, ИмяРеквизита = "")
Возврат 0;
КонецФункции
// Проверяет контактную информацию веб страницы и сообщает об ошибках. Возвращает флаг наличия ошибок
-// Возвращает уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
//
// Параметры:
-// Источник - объект XDTO с контактной информацией
-// ВидИнформации - ссылка на справочник видов КИ с настройками проверки
-// ИмяРеквизита - необязательно имя реквизита для привязки сообщения об ошибке
+// Источник - ОбъектXDTO - контактная информацией
+// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации с настройками проверки
+// ИмяРеквизита - Строка - необязательно имя реквизита для привязки сообщения об ошибке
+//
+// Возвращаемое значение:
+// Число - уровень ошибок: 0 - нет, 1 - неблокирующие, 2 - блокирующие
//
Функция ОшибкиЗаполненияВебСтраницы(Источник, ВидИнформации, ИмяРеквизита = "")
Возврат 0;
@@ -2132,7 +2233,8 @@
// Параметры:
// НомерТелефона - Строка - номер телефона или факса.
//
-// Возвращаемое значение - Строка - номер телефона или факса без разделителей.
+// Возвращаемое значение:
+// Строка - номер телефона или факса без разделителей.
//
Функция УбратьРазделителиВНомерТелефона(Знач НомерТелефона)
@@ -2188,51 +2290,13 @@
КонецФункции
-Процедура ЗаписатьКонтактнуюИнформацию(Объект, ЗначенияПолей, ВидИнформации, ТипИнформации, ИдентификаторСтроки = 0)
-
- ОбъектКИ = КонтактнаяИнформацияСлужебный.ДесериализацияКонтактнойИнформации(ЗначенияПолей, ВидИнформации);
-
- Если Не КонтактнаяИнформацияСлужебный.XDTOКонтактнаяИнформацияЗаполнена(ОбъектКИ) Тогда
- Возврат;
- КонецЕсли;
-
- НоваяСтрока = Объект.КонтактнаяИнформация.Добавить();
- НоваяСтрока.Представление = ОбъектКИ.Представление;
- НоваяСтрока.ЗначенияПолей = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(ОбъектКИ);
- НоваяСтрока.Вид = ВидИнформации;
- НоваяСтрока.Тип = ТипИнформации;
-
- Если ЗначениеЗаполнено(ИдентификаторСтроки) Тогда
- НоваяСтрока.ИдентификаторСтрокиТабличнойЧасти = ИдентификаторСтроки;
- КонецЕсли;
-
- // Заполнение дополнительных реквизитов ТЧ
- Если ТипИнформации = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
- ЗаполнитьРеквизитыТабличнойЧастиДляАдресаЭлектроннойПочты(НоваяСтрока, ОбъектКИ);
-
- ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
- ЗаполнитьРеквизитыТабличнойЧастиДляАдреса(НоваяСтрока, ОбъектКИ);
-
- ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
- ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(НоваяСтрока, ОбъектКИ);
-
- ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.Факс Тогда
- ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(НоваяСтрока, ОбъектКИ);
-
- ИначеЕсли ТипИнформации = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда
- ЗаполнитьРеквизитыТабличнойЧастиДляВебСтраницы(НоваяСтрока, ОбъектКИ);
-
- КонецЕсли;
-
-КонецПроцедуры
-
////////////////////////////////////////////////////////////////////////////////
// Служебные
// Заполняет дополнительные реквизиты строки табличной части "Контактная информация"
//
// Параметры:
-// СтрокаКИ - строка табличной части "Контактная информация"
+// СтрокаКИ - СтрокаТабличнойЧасти - строка "Контактная информация"
// Представление - Строка - представление значения
// ЗначенияПолей - СписокЗначений, ОбъектXTDO - значения полей
//
@@ -2268,7 +2332,7 @@
// Возвращает пустую структура адреса
//
// Возвращаемое значение:
-// СтруктураАдреса - ключи - имена полей, значения поля
+// Структура - описание адреса, ключи - имена полей, значения поля
//
Функция ПолучитьПустуюСтруктуруАдреса() Экспорт
@@ -2281,7 +2345,8 @@
// Параметры:
// Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации - тип контактной информации.
//
-// Возвращаемое значение - Булево - доступно или нет редактирование в диалоге.
+// Возвращаемое значение:
+// Булево - доступно или нет редактирование в диалоге.
//
Функция ДляТипаКонтактнойИнформацииДоступноРедактированиеВДиалоге(Тип)
@@ -2300,8 +2365,8 @@
// Возвращает имя табличной части документа по виду контактной информации
//
// Параметры:
-// ВидКИ - вид контактной информации
-// ИмяОбъекта - полное имя объекта метаданного
+// ВидКИ - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации
+// ИмяОбъекта - Строка - полное имя объекта метаданного
//
// Возвращаемое значение:
// Строка - имя табличной части или пустая строка, если табличной части нет.
@@ -2349,9 +2414,12 @@
КонецЕсли;
- Если ЭтоНовыйВидКИ И СтрокаКИ.Вид.РазрешитьВводНесколькихЗначений И Не ЭтоРеквизитТабличнойЧасти Тогда
+ СтруктураВидаКИ = СтруктураВидаКонтактнойИнформации(СтрокаКИ.Вид);
+ СтруктураВидаКИ.Вставить("Ссылка", СтрокаКИ.Вид);
+
+ Если ЭтоНовыйВидКИ И СтруктураВидаКИ.РазрешитьВводНесколькихЗначений И Не ЭтоРеквизитТабличнойЧасти Тогда
- Форма.СписокДобавляемыхЭлементовКонтактнойИнформации.Добавить(СтрокаКИ.Вид, СтрокаКИ.Вид.Наименование);
+ Форма.СписокДобавляемыхЭлементовКонтактнойИнформации.Добавить(СтруктураВидаКИ, СтрокаКИ.Вид.Наименование);
КонецЕсли;
@@ -2385,7 +2453,6 @@
// Обновление информационной базы
// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме.
-
//
// Параметры:
// Обработчики - ТаблицаЗначений - см. описание функции НоваяТаблицаОбработчиковОбновления
@@ -2410,15 +2477,17 @@
// Штатное обновление классификатора без добавления новых стран
Обработчик = Обработчики.Добавить();
- Обработчик.Версия = "2.2.2.13";
+ Обработчик.Версия = "2.2.3.34";
Обработчик.Процедура = "УправлениеКонтактнойИнформацией.ОбработчикОбновленияСуществующихСтранМира";
Обработчик.РежимВыполнения = "Монопольно";
- Обработчик.ОбщиеДанные = Ложь;
+ Обработчик.ОбщиеДанные = Ложь;
+ Обработчик.НачальноеЗаполнение = Истина;
КонецПроцедуры
// Неразделенный монопольный обработчик для копирования стран мира из нулевой области
// Сохраняет эталон и список областей данных - адресатов
+//
Процедура ПодготовкаЭталонаРазделенныхСтранМира() Экспорт
// Контроль версии базы
@@ -2427,7 +2496,7 @@
Возврат;
КонецЕсли;
- МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса");
+ МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
Если МодульРаботаВМоделиСервиса = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -2472,6 +2541,7 @@
// Разделенный обработчик для копирования стран мира из нулевой области
// Используется эталон, подготовленный на предыдущем шаге
+//
Процедура ОбновлениеПоЭталонуРазделенныхСтранМира() Экспорт
// Контроль версии базы
@@ -2560,14 +2630,14 @@
// РазрешитьВводНесколькихЗначений - Булево - Признак возможности использования дополнительных полей ввода для данного вида.
// НастройкиПроверки - Структура, Неопределено - Настройки проверки для вида контактной информации.
// Для типа Адрес - структура, содержащая поля:
-// АдресТолькоРоссийский - Булево - Истина, если используются только российские адреса, Ложь - иначе.
-// ПроверятьКорректность - Булево - Истина, если используется проверка адреса по классификатору (Только если АдресТолькоРоссийский = Истина), Ложь - иначе.
-// ЗапрещатьВводНекорректного - Булево - Истина, если требуется запрещать пользователю записывать некорректный адрес (Только если ПроверятьКорректность = Истина), Ложь - иначе.
-// СкрыватьНеактуальныеАдреса - Булево - Истина, если не требуется показывать неактуальные адреса при вводе(Только если АдресТолькоРоссийский = Истина), Ложь - иначе.
-// ВключатьСтрануВПредставление - Булево - Истина, если требуется включать наименование страны в представление адреса, Ложь - иначе.
+// * АдресТолькоРоссийский - Булево - Истина, если используются только российские адреса, Ложь - иначе.
+// * ПроверятьКорректность - Булево - Истина, если используется проверка адреса по классификатору (Только если АдресТолькоРоссийский = Истина), Ложь - иначе.
+// * ЗапрещатьВводНекорректного - Булево - Истина, если требуется запрещать пользователю записывать некорректный адрес (Только если ПроверятьКорректность = Истина), Ложь - иначе.
+// * СкрыватьНеактуальныеАдреса - Булево - Истина, если не требуется показывать неактуальные адреса при вводе(Только если АдресТолькоРоссийский = Истина), Ложь - иначе.
+// * ВключатьСтрануВПредставление - Булево - Истина, если требуется включать наименование страны в представление адреса, Ложь - иначе.
// Для типа АдресЭлектроннойПочты - структура, содержащая поля:
-// ПроверятьКорректность - Булево - Истина, если требуется проверка адреса электронной почты на корректность, Ложь - иначе.
-// ЗапрещатьВводНекорректного - Булево - Истина, если требуется запрещать пользователю записывать некорректный адрес (Только если ПроверятьКорректность = Истина), Ложь - иначе.
+// * ПроверятьКорректность - Булево - Истина, если требуется проверка адреса электронной почты на корректность, Ложь - иначе.
+// * ЗапрещатьВводНекорректного - Булево - Истина, если требуется запрещать пользователю записывать некорректный адрес (Только если ПроверятьКорректность = Истина), Ложь - иначе.
// Для остальных типов или для задания настроек по умолчанию используется Неопределено
//
// Примечание:
@@ -2677,9 +2747,9 @@
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
//
// Возвращаемое значение:
-// ТаблицаЗначений - с полями
-// Значение (строка) - строковое представление значения
-// Вид (строка) - представление вида контактной информации
+// ТаблицаЗначений - колонки
+// * Значение - строка - строковое представление значения
+// * Вид - строка - представление вида контактной информации
//
Функция ЗначенияКонтактнойИнформацииОбъекта(Ссылка, ТипКонтактнойИнформации) Экспорт
@@ -2715,8 +2785,8 @@
// Получить значения поля адреса.
//
// Параметры:
-// СтрокаЗначенийПолей - строка со значениями полей адреса.
-// ИмяПоля - имя поля. Например, "Район".
+// СтрокаЗначенийПолей - Строка - значения полей адреса.
+// ИмяПоля - Строка - имя поля. Например, "Район".
//
// Возвращаемое значение:
// Строка - значение поля.
@@ -2738,7 +2808,7 @@
//
// Параметры:
// СтрокаЗначенийПолей - Строка - строка значений полей
-// ИмяПоля - Строка - имя поля
+// ИмяПоля - Строка - имя поля
//
// Возвращаемое значение - Строка - значение контактной информации.
//
@@ -2756,12 +2826,29 @@
КонецФункции
-// Конструктор структуры, совместимой по полям сл справочникам видов КИ
+// Конструктор структуры, совместимой по полям со справочникам видов КИ
//
-Функция СтруктураВидаКонтактнойИнформации() Экспорт
+// Параметры:
+// Источник - СправочникСсылка.ВидыКонтактнойИнформации - необязательный источник данных для заполнения
+//
+// Возвращаемое значение:
+// Структура - совместимая по полям со справочникам видов КИ
+//
+Функция СтруктураВидаКонтактнойИнформации(Знач Источник = Неопределено) Экспорт
- Результат = Новый Структура;
- Для Каждого Мета Из Метаданные.Справочники.ВидыКонтактнойИнформации.Реквизиты Цикл
+ МетаРеквизиты = Метаданные.Справочники.ВидыКонтактнойИнформации.Реквизиты;
+
+ Если ТипЗнч(Источник) = Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда
+ Реквизиты = "Наименование";
+ Для Каждого Мета Из МетаРеквизиты Цикл
+ Реквизиты = Реквизиты + "," + Мета.Имя;
+ КонецЦикла;
+
+ Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник, Реквизиты);
+ КонецЕсли;
+
+ Результат = Новый Структура("Наименование", "");
+ Для Каждого Мета Из МетаРеквизиты Цикл
Результат.Вставить(Мета.Имя, Мета.Тип.ПривестиЗначение());
КонецЦикла;
@@ -2821,12 +2908,12 @@
//
// Параметры:
// Индекс - Строка - индекс, по которому будет производиться поиск.
-// АдресныеОбъекты - Неопределено или Структура с полями:
-// Количество - Число - количество найденных вариантов
-// НайденныйРегион - Строка - если найден один регион
-// НайденныйРайон - Строка - если найден один район
-// ПризнакАктуальности - Число - признак актуальности если найден один вариант
-// АдресВХранилище - Строка - идентификатор сохраненной в хранилище таблицы с найденными вариантами
+// АдресныеОбъекты - Неопределено, Структура - поля:
+// * Количество - Число - количество найденных вариантов
+// * НайденныйРегион - Строка - если найден один регион
+// * НайденныйРайон - Строка - если найден один район
+// * ПризнакАктуальности - Число - признак актуальности если найден один вариант
+// * АдресВХранилище - Строка - идентификатор сохраненной в хранилище таблицы с найденными вариантами
//
Процедура ПриОпределенииЗаписейПоИндексу(Индекс, АдресныеОбъекты) Экспорт
@@ -2841,13 +2928,13 @@
//
// Параметры:
// КодАдресногоЭлемента - Число - код адресного элемента, по которому ищутся компоненты адреса
-// Результат - структура с полями(в которую выгружается результат поиска):
-// Регион - Строка - наименование найденного региона
-// Район - Строка - наименование найденного района
-// Город - Строка - наименование найденного города
-// НаселенныйПункт - Строка - наименование найденного населенного пункта
-// Улица - Строка - наименование найденной улицы
-// ПризнакАктуальности - Число - признак актуальности найденного адреса
+// Результат - Структура - результат поиска:
+// * Регион - Строка - наименование найденного региона
+// * Район - Строка - наименование найденного района
+// * Город - Строка - наименование найденного города
+// * НаселенныйПункт - Строка - наименование найденного населенного пункта
+// * Улица - Строка - наименование найденной улицы
+// * ПризнакАктуальности - Число - признак актуальности найденного адреса
//
Процедура ПоКодуАдресногоЭлементаВСтруктуруПолучитьЕгоКомпоненты(КодАдресногоЭлемента, Результат) Экспорт
@@ -2861,20 +2948,20 @@
// Определяет структуру адреса.
//
// Параметры:
-// СтруктураАдреса -Структура с полями:
-// Индекс - Строка - индекс адреса по переданным параметрам
-// Регион - Строка - регион по переданному коду
-// Район - Строка - район по переданному коду
-// Город - Строка - город по переданному коду
-// НаселенныйПункт - Строка - населенный пункт по переданному коду
-// Улица - Строка - улица по переданному коду
-// Дом - Строка - переданный номер дома
-// Корпус - Строка - переданный номер корпуса
-// Квартира - Строка - переданный номер квартиры
-// КодАдресногоЭлемента - Число - код адресного элемента, по которому ищутся компоненты адреса
-// Дом - Строка - номер дома, если требуется
-// Корпус - Строка - номер корпуса, если требуется
-// Квартира - Строка - номер квартиры, если требуется
+// СтруктураАдреса - Структура - полями:
+// * Индекс - Строка - индекс адреса по переданным параметрам
+// * Регион - Строка - регион по переданному коду
+// * Район - Строка - район по переданному коду
+// * Город - Строка - город по переданному коду
+// * НаселенныйПункт - Строка - населенный пункт по переданному коду
+// * Улица - Строка - улица по переданному коду
+// * Дом - Строка - переданный номер дома
+// * Корпус - Строка - переданный номер корпуса
+// * Квартира - Строка - переданный номер квартиры
+// * КодАдресногоЭлемента - Число - код адресного элемента, по которому ищутся компоненты адреса
+// * Дом - Строка - номер дома, если требуется
+// * Корпус - Строка - номер корпуса, если требуется
+// * Квартира - Строка - номер квартиры, если требуется
//
Процедура ПриОпределенииСтруктурыАдреса(СтруктураАдреса, КодАдресногоЭлемента, Дом = "", Корпус = "", Квартира = "") Экспорт
@@ -2890,14 +2977,14 @@
//
// Параметры:
// Индекс - Строка - почтовый индекс.
-// НазваниеРегиона - название региона( с сокращением)
-// НазваниеРайона - название района( с сокращением)
-// НазваниеГорода - название города( с сокращением)
-// НазваниеНаселенногоПункта - название населенного пункта( с сокращением)
-// Улица - название улицы ( с сокращением)
-// НомерДома - номер дома, для которого необходимо получить индекс
-// НомерКорпуса - номер корпуса
-// РодительИндекса - переменная, в которую сохраняется структура найденного адресного элемента
+// НазваниеРегиона - Строка - название региона( с сокращением)
+// НазваниеРайона - Строка - название района( с сокращением)
+// НазваниеГорода - Строка - название города( с сокращением)
+// НазваниеНаселенногоПункта - Строка - название населенного пункта( с сокращением)
+// Улица - Строка - название улицы ( с сокращением)
+// НомерДома - Строка - номер дома, для которого необходимо получить индекс
+// НомерКорпуса - Строка - номер корпуса
+// РодительИндекса - Структура - приемник для структуры найденного адресного элемента
//
Процедура ПриОпределенииИндекса(Индекс, НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта,
НазваниеУлицы, НомерДома, НомерКорпуса, РодительИндекса = Неопределено) Экспорт
@@ -2924,7 +3011,8 @@
// ПризнакАктуальности - Число - признак актуальности элемента.
//
// Возвращаемое значение:
-// СписокЗначений; Неопределено
+// СписокЗначений - данные автоподбора
+// Неопределено - нет данных
//
Процедура ПриОпределенииСпискаАвтоПодбораТекстаВАдресномЭлементе(СписокАвтоПодбора, Текст, Регион, Район, Город,
НаселенныйПункт, УровеньЭлемента, ПризнакАктуальности = 0) Экспорт
@@ -3015,13 +3103,13 @@
// По переданным элементам адреса определяет, загружен ли КЛАДР по соответствующим элементам.
//
// Параметры:
-// СтруктураЗагруженныхЭлементовАдреса - Структура с полями:
-// Регион - Булево - регион загружен
-// Район - Булево - район загружен
-// Город - Булево - город загружен
-// НаселенныйПункт - населенный пункт загружен
-// Улица - Булево - улица загружена
-// Дом - Булево - дом загружен.
+// СтруктураЗагруженныхЭлементовАдреса - Структура - поля:
+// * Регион - Булево - регион загружен
+// * Район - Булево - район загружен
+// * Город - Булево - город загружен
+// * НаселенныйПункт - населенный пункт загружен
+// * Улица - Булево - улица загружена
+// * Дом - Булево - дом загружен.
// НазваниеРегиона - Строка - название региона(с сокращением)
// НазваниеРайона - Строка - название района(с сокращением)
// НазваниеГорода - Строка - название города(с сокращением)
@@ -3042,7 +3130,7 @@
// Определяет наименование региона по коду.
//
// Параметры:
-// НаименованиеРегиона - наименование региона.
+// НаименованиеРегиона - Строка - наименование региона.
// КодРегиона - Число - код региона.
//
Процедура ПриОпределенииНаименованияРегионаПоКоду(НаименованиеРегиона, КодРегиона) Экспорт
@@ -3073,11 +3161,11 @@
//
// Параметры:
// СтруктураАдресногоКлассификатора - Неопределено или Структура - Структура полей по найденому адресному элементу (см. функцию "АдресныйКлассификаторКлиентСервер.ПустаяСтруктураАдреса()")
-// НазваниеРегиона - название региона( с сокращением)
-// НазваниеРайона - название района( с сокращением)
-// НазваниеГорода - название города( с сокращением)
-// НазваниеНаселенногоПункта - название населенного пункта( с сокращением)
-// НазваниеУлицы - название улицы( с сокращением)
+// НазваниеРегиона - Строка - название региона( с сокращением)
+// НазваниеРайона - Строка - название района( с сокращением)
+// НазваниеГорода - Строка - название города( с сокращением)
+// НазваниеНаселенногоПункта - Строка - название населенного пункта( с сокращением)
+// НазваниеУлицы - Строка - название улицы( с сокращением)
//
Процедура ПриОпределенииСтрокиАдресногоКлассификатораПоАдреснымЭлементам(СтруктураАдресногоКлассификатора, НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы) Экспорт
@@ -3092,14 +3180,14 @@
// Процедура очищает потомков определенного адресного элемента
//
// Параметры:
-// Регион - строка - строка, куда будет помещено строковое представление "родительского" региона.
-// Район - строка - строка, куда будет помещено строковое представление "родительского" района.
-// Город - строка - строка, куда будет помещено строковое представление "родительского" города.
+// Регион - Строка - строка, куда будет помещено строковое представление "родительского" региона.
+// Район - Строка - строка, куда будет помещено строковое представление "родительского" района.
+// Город - Строка - строка, куда будет помещено строковое представление "родительского" города.
// НаселенныйПункт - строка - строка, куда будет помещено строковое представление "родительского" населенного пункта.
-// Улица - строка - строка, куда будет помещено строковое представление "родительской" улицы.
-// Дом - строка - строка, куда будет помещено строковое представление "родительского" номера дома.
-// Корпус - строка - строка, куда будет помещено строковое представление "родительского" номера корпуса дома.
-// Квартира - строка - строка, куда будет помещено строковое представление "родительского" номера квартиры.
+// Улица - Строка - строка, куда будет помещено строковое представление "родительской" улицы.
+// Дом - Строка - строка, куда будет помещено строковое представление "родительского" номера дома.
+// Корпус - Строка - строка, куда будет помещено строковое представление "родительского" номера корпуса дома.
+// Квартира - Строка - строка, куда будет помещено строковое представление "родительского" номера квартиры.
// Уровень - Число - уровень адресного элемента.
//
Процедура ПриОчисткеПотомковПоУровнюАдресногоЭлемента(Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус, Квартира, Уровень) Экспорт
diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl
index 504b71b2b..70dacd529 100644
--- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl
@@ -61,6 +61,9 @@
// Модифицированность - Булево - Устанавливаемый флаг модифицированности формы
// СтандартнаяОбработка - Булево - Устанавливаемый флаг стандартной обработки события формы
//
+// Возвращаемое значение:
+// Неопределено
+//
Функция ПредставлениеНачалоВыбора(Форма, Элемент, Модифицированность = Истина, СтандартнаяОбработка = Ложь) Экспорт
СтандартнаяОбработка = Ложь;
@@ -113,9 +116,12 @@
// Вызывается из подключаемых действий при внедрении подсистемы "Контактная информация"
//
// Параметры:
-// Форма - УправляемаяФорма - Форма владельца контактной информации
+// Форма - УправляемаяФорма - Форма владельца контактной информации
// ИмяРеквизита - Строка - Имя реквизита формы, связанного с представление контактной информации
//
+// Возвращаемое значение:
+// Неопределено
+//
Функция ПредставлениеОчистка(Знач Форма, Знач ИмяРеквизита) Экспорт
Результат = Новый Структура("ИмяРеквизита", ИмяРеквизита);
@@ -138,6 +144,9 @@
// Форма - УправляемаяФорма - Форма владельца контактной информации
// ИмяКоманды - Строка - Имя автоматически сгенерированной команды действия
//
+// Возвращаемое значение:
+// Неопределено
+//
Функция ПодключаемаяКоманда(Знач Форма, Знач ИмяКоманды) Экспорт
Если ИмяКоманды = "КонтактнаяИнформацияДобавитьПолеВвода" Тогда
@@ -253,9 +262,9 @@
// Конструктор для структуры параметров открытия формы контактной информации
//
// Параметры:
-// ВидКонтактнойИнформации - вид редактируемой информации, СправочникСсылка.ВидыКонтактнойИнформации
-// Значение - строка с сериализованным значением полей контактной информации
-// Представление - необязательное представление
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид редактируемой информации,
+// Значение - Строка - сериализованное значение полей контактной информации
+// Представление - Строка - необязательное представление
//
Функция ПараметрыФормыКонтактнойИнформации(ВидКонтактнойИнформации, Значение, Представление = Неопределено, Комментарий = Неопределено) Экспорт
Возврат Новый Структура("ВидКонтактнойИнформации, ЗначенияПолей, Представление, Комментарий",
@@ -265,10 +274,10 @@
// Открывает подходящую форму контактной информации для редактирования или просмотра
//
// Параметры:
-// Параметры - результат функции ПараметрыФормыКонтактнойИнформации
-// Владелец - параметр для открываемой формы
-// Уникальность - параметр для открываемой формы
-// Окно - параметр для открываемой формы
+// Параметры - Произвольный - результат функции ПараметрыФормыКонтактнойИнформации
+// Владелец - Произвольный - параметр для открываемой формы
+// Уникальность - Произвольный - параметр для открываемой формы
+// Окно - Произвольный - параметр для открываемой формы
// Оповещение - ОписаниеОповещения - для обработки закрытия формы
//
// Возвращаемое значение: необходимая форма
@@ -297,10 +306,10 @@
// Модально открывает подходящую форму контактной информации для редактирования или просмотра
//
// Параметры:
-// Параметры - результат функции ПараметрыФормыКонтактнойИнформации
-// Владелец - параметр для открываемой формы
-// Уникальность - параметр для открываемой формы
-// Окно - параметр для открываемой формы
+// Параметры - Произвольный - результат функции ПараметрыФормыКонтактнойИнформации
+// Владелец - Произвольный - параметр для открываемой формы
+// Уникальность - Произвольный - параметр для открываемой формы
+// Окно - Произвольный - параметр для открываемой формы
//
// Возвращаемое значение: отредактированный результат или Неопределено при отказе от редактирования
//
@@ -327,13 +336,11 @@
// Создает письмо по контактной информации
//
// Параметры:
-// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, соответствие или список значений,
-// описывающие контактную информацию.
-// Представление - строка представления. Используется, если невозможно определить представление из параметра
+// ЗначенияПолей - Строка, Структура, Соответствие, Список значений - контактная информация.
+// Представление - Строка - представление. Используется, если невозможно определить представление из параметра
// ЗначенияПолей (отсутствие поля "Представление")
-// ОжидаемыйВид - ссылка на справочник ВидыКонтактнойИнформации или перечисление ТипыКонтактнойИнформации,
-// объект с полем "Тип". Используется для определения типа, если его невозможно вычислить
-// по полю ЗначенияПолей
+// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+// Используется для определения типа, если его невозможно вычислить по полю ЗначенияПолей
//
Процедура СоздатьЭлектронноеПисьмо(Знач ЗначенияПолей, Знач Представление = "", ОжидаемыйВид = Неопределено) Экспорт
@@ -370,13 +377,11 @@
// Открывает ссылку по контактной информации
//
// Параметры:
-// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, соответствие или список значений,
-// описывающие контактную информацию.
-// Представление - строка представления. Используется, если невозможно определить представление из параметра
+// ЗначенияПолей - Строка, Структура, Соответствие, Список значений - контактная информация.
+// Представление - Строка - представление. Используется, если невозможно определить представление из параметра
// ЗначенияПолей (отсутствие поля "Представление")
-// ОжидаемыйВид - ссылка на справочник ВидыКонтактнойИнформации или перечисление ТипыКонтактнойИнформации,
-// объект с полем "Тип". Используется для определения типа, если его невозможно вычислить
-// по полю ЗначенияПолей
+// ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
+// Используется для определения типа, если его невозможно вычислить по полю ЗначенияПолей
//
Процедура ПерейтиПоВебСсылке(Знач ЗначенияПолей, Знач Представление = "", ОжидаемыйВид = Неопределено) Экспорт
@@ -458,17 +463,16 @@
Результат = Новый Структура("ДобавляемыйВид", ВыбранныйЭлемент.Значение);
- ДополнительныеПараметры.Форма.Модифицированность = Истина;
ОбновитьКонтактнуюИнформациюФормы(ДополнительныеПараметры.Форма, Результат);
КонецПроцедуры
// Обработчик события НачалоВыбора для улицы
//
// Параметры:
-// Элемент - вызывающий элемент формы
-// КодКлассификатораНаселенногоПункта - ограничение по населенному пункту
-// ТекущееЗначение - текущее значение - или код классификатора, или текст
-// ПараметрыФормы - необязательная дополнительная структура параметров для формы подбора
+// Элемент - Произвольный - вызывающий элемент формы
+// КодКлассификатораНаселенногоПункта - Число - ограничение по населенному пункту
+// ТекущееЗначение - Число, Строка - текущее значение - или код классификатора, или текст
+// ПараметрыФормы - Структура - необязательная дополнительная структура параметров для формы подбора
//
Процедура НачалоВыбораУлицы(Элемент, КодКлассификатораНаселенногоПункта, ТекущееЗначение, ПараметрыФормы = Неопределено) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -483,10 +487,10 @@
// Обработчик события НачалоВыбора для элемента адреса (субъект РФ, район, город и т.п.)
//
// Параметры:
-// Элемент - вызывающий элемент формы
-// КодЧастиАдреса - идентификатор обрабатываемой части адреса, зависит от классификатора
-// ЧастиАдреса - значения для других частей адреса, зависит от классификатора
-// ПараметрыФормы - необязательная дополнительная структура параметров для формы подбора
+// Элемент - Произвольный - вызывающий элемент формы
+// КодЧастиАдреса - Число - идентификатор обрабатываемой части адреса, зависит от классификатора
+// ЧастиАдреса - Произвольный - значения для других частей адреса, зависит от классификатора
+// ПараметрыФормы - Структура - необязательная дополнительная структура параметров для формы подбора
//
Процедура НачалоВыбораЭлементаАдреса(Элемент, КодЧастиАдреса, ЧастиАдреса, ПараметрыФормы = Неопределено) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -502,7 +506,7 @@
// поле, характеризующее все, что больше улицы
//
// Параметры:
-// ЧастиАдреса - значения для частей адреса, зависит от классификатора
+// ЧастиАдреса - Произвольный - значения для частей адреса, зависит от классификатора
//
Функция НаименованиеНаселенногоПунктаПоЧастямАдреса(ЧастиАдреса) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -518,13 +522,10 @@
// Предлагает загрузить адресный классификатор
//
// Параметры:
-// Текст - строка с дополнительным текстов предложения
+// Текст - Строка - Дополнительный текст предложения
+// Регион - Число, Строка - Код или название региона для загрузки
//
-Процедура ПредложениеЗагрузкиКлассификатора(Текст = "") Экспорт
-
-#Если ВебКлиент Тогда
- Возврат;
-#КонецЕсли
+Процедура ПредложениеЗагрузкиКлассификатора(Знач Текст = "", Знач Регион = Неопределено) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -533,31 +534,41 @@
Возврат;
КонецЕсли;
- ТекстЗаголовка = НСтр("ru = 'Подтверждение'");
- ТекстВопроса = Текст + Символы.ПС + НСтр("ru = 'Загрузить классификатор сейчас?'");
+ ТипПараметраРегиона = ТипЗнч(Регион);
+ ПараметрыЗагрузки = Новый Структура;
- Оповещение = Новый ОписаниеОповещения("ПредложениеЗагрузкиКлассификатораЗавершение", ЭтотОбъект);
+ Если ТипПараметраРегиона = Тип("Число") Тогда
+ ПараметрыЗагрузки.Вставить("КодРегионаДляЗагрузки", Регион);
+
+ ИначеЕсли ТипПараметраРегиона = Тип("Строка") Тогда
+ ПараметрыЗагрузки.Вставить("НазваниеРегионаДляЗагрузки", Регион);
+
+ КонецЕсли;
+
+ ТекстЗаголовка = НСтр("ru = 'Подтверждение'");
+ ТекстВопроса = СокрЛП(Текст + Символы.ПС + НСтр("ru = 'Загрузить классификатор сейчас?'") );
+
+ Оповещение = Новый ОписаниеОповещения("ПредложениеЗагрузкиКлассификатораЗавершение", ЭтотОбъект, ПараметрыЗагрузки);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка);
КонецПроцедуры
Процедура ПредложениеЗагрузкиКлассификатораЗавершение(Знач РезультатВопроса, Знач ДополнительныеПараметры) Экспорт
- Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
- ЗагрузитьАдресныйКлассификатор();
+ Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
+ Возврат;
КонецЕсли;
+
+ ЗагрузитьАдресныйКлассификатор(ДополнительныеПараметры);
КонецПроцедуры
// Загружает адресный классификатор
//
-Процедура ЗагрузитьАдресныйКлассификатор() Экспорт
-#Если ВебКлиент Тогда
- Возврат;
-#КонецЕсли
+Процедура ЗагрузитьАдресныйКлассификатор(Знач ДополнительныеПараметры = Неопределено) Экспорт
Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
Если Вариант = "КЛАДР" Тогда
МодульКЛАДР = КлиентскийМодульКЛАДР();
- МодульКЛАДР.ЗагрузитьАдресныйКлассификатор();
+ МодульКЛАДР.ЗагрузитьАдресныйКлассификатор(ДополнительныеПараметры);
КонецЕсли;
// Нет подсистемы классификатора
@@ -667,10 +678,12 @@
// Возвращает строку дополнительных значений по имени реквизита.
//
// Параметры:
-// Форма - Форма - передаваемая форма.
+// Форма - УправляемаяФорма - передаваемая форма.
// Элемент - ДанныеФормыСтруктураСКоллекцией - данные формы.
//
-// Возвращаемое значение - Неопределено или СтрокаКоллекции - строка коллекции.
+// Возвращаемое значение:
+// СтрокаКоллекции - найденные данные
+// Неопределено - при отсутствии данных
//
Функция ПолучитьСтрокуДополнительныхЗначений(Форма, Элемент, ЭтоТабличнаяЧасть = Ложь)
@@ -698,9 +711,10 @@
// КодГорода - Строка - код города.
// НомерТелефона - Строка - номер телефона.
// Добавочный - Строка - добавочный номер.
-// Комментарий - Строка - комментарий.
+// Комментарий - Строка - комментарий.
//
-// Возвращаемое значение - Строка - представление телефона.
+// Возвращаемое значение:
+// Строка - представление телефона.
//
Функция СформироватьПредставлениеТелефона(КодСтраны, КодГорода, НомерТелефона, Добавочный, Комментарий) Экспорт
@@ -736,6 +750,7 @@
Оповещение.ДополнительныеПараметры.Вставить("НайденнаяСтрока", НайденнаяСтрока);
Оповещение.ДополнительныеПараметры.Вставить("ИмяРеквизита", ИмяРеквизита);
Оповещение.ДополнительныеПараметры.Вставить("Результат", Результат);
+ Оповещение.ДополнительныеПараметры.Вставить("КомментарийПустой", ПустаяСтрока(НайденнаяСтрока.Комментарий));
Форма.ПоказатьВыборИзМеню(Оповещение, АдресаДляЗаполнения, Форма.Элементы["Команда" + ИмяРеквизита]);
КонецПроцедуры
@@ -755,12 +770,20 @@
ДополнительныеПараметры.НайденнаяСтрока.ЗначенияПолей = СтрокаИсточник.ЗначенияПолей;
ДополнительныеПараметры.НайденнаяСтрока.Представление = СтрокаИсточник.Представление;
ДополнительныеПараметры.НайденнаяСтрока.Комментарий = СтрокаИсточник.Комментарий;
-
ДополнительныеПараметры.Форма[ДополнительныеПараметры.ИмяРеквизита] = СтрокаИсточник.Представление;
-
+
ДополнительныеПараметры.Форма.Модифицированность = Истина;
+
+ Если ДополнительныеПараметры.КомментарийПустой И ЗначениеЗаполнено(СтрокаИсточник.Комментарий) Тогда
+ ДополнительныеПараметры.Результат.Вставить("ЭтоДобавлениеКомментария", Истина);
+ ИначеЕсли НЕ ДополнительныеПараметры.КомментарийПустой И ПустаяСтрока(СтрокаИсточник.Комментарий) Тогда
+ ДополнительныеПараметры.Результат.Вставить("ЭтоДобавлениеКомментария", Ложь);
+ ИначеЕсли НЕ ДополнительныеПараметры.КомментарийПустой И ЗначениеЗаполнено(СтрокаИсточник.Комментарий) Тогда
+ Комментарий = ДополнительныеПараметры.Форма.Элементы["Комментарий" + ДополнительныеПараметры.ИмяРеквизита];
+ Комментарий.Заголовок = СтрокаИсточник.Комментарий;
+ КонецЕсли;
+
ОбновитьКонтактнуюИнформациюФормы(ДополнительныеПараметры.Форма, ДополнительныеПараметры.Результат);
-
КонецПроцедуры
// Ввод комментария из контекстного меню
diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl
index 3dea3d424..62a6d92f0 100644
--- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl
@@ -87,10 +87,10 @@
//Возвращает структуру контактной информации по типу
//
// Параметры:
-// ТипКИ - тип контактной информации
+// ТипКИ - ПеречислениеСсылка.ТипыКонтактнойИнформации - тип контактной информации
//
// Возвращаемое значение:
-// СтруктураКИ - пустая структура контактной информации, ключи - имена полей, значения поля
+// Структура - пустая структура контактной информации, ключи - имена полей, значения поля
//
Функция СтруктураКонтактнойИнформацииПоТипу(ТипКИ) Экспорт
@@ -129,7 +129,9 @@
// Ключ - Строка - ключ структуры.
// Структура - Структура - передаваемая структура.
//
-// Возвращаемое значение - ПустаяСтрока или ПроизвольныйТип - значение.
+// Возвращаемое значение:
+// Произвольный - значение.
+// Строка - пустая строка, если нет значения
//
Функция ЗначениеПоКлючуСтруктуры(Ключ, Структура)
@@ -146,10 +148,12 @@
// Возвращает строку дополнительных значений по имени реквизита.
//
// Параметры:
-// Форма - Форма - передаваемая форма.
-// ИмяРеквизита - Строка с именем реквизита.
+// Форма - УправляемаяФорма - передаваемая форма.
+// ИмяРеквизита - Строка - имя реквизита.
//
-// Возвращаемое значение - Неопределено или СтрокаКоллекции - строка коллекции.
+// Возвращаемое значение:
+// СтрокаКоллекции - строка коллекции.
+// Неопределено - нет данных
//
Функция ПолучитьСтрокуДополнительныхЗначений(Форма, ИмяРеквизита) Экспорт
@@ -163,7 +167,7 @@
// Возвращает пустую структура адреса
//
// Возвращаемое значение:
-// СтруктураАдреса - ключи - имена полей, значения поля
+// Структура - адрес, ключи - имена полей, значения поля
//
Функция СтруктураПолейАдреса() Экспорт
@@ -198,7 +202,7 @@
// Возвращает пустую структура телефона
//
// Возвращаемое значение:
-// СтруктураТелефона - ключи - имена полей, значения поля
+// Структура - ключи - имена полей, значения поля
//
Функция СтруктураПолейТелефона() Экспорт
@@ -217,9 +221,10 @@
// Получает сокращение географического названия объекта
//
// Параметры:
-// ГеографическоеНазвание - географическое название объекта
+// ГеографическоеНазвание - Строка - географическое название объекта
//
-// Возвращаемое значение - Пустая строка или Последнее слово в географическом названии
+// Возвращаемое значение:
+// Строка - пустая строка или последнее слово в географическом названии
//
Функция АдресноеСокращение(Знач ГеографическоеНазвание) Экспорт
@@ -236,10 +241,11 @@
// Возвращает строку списка полей.
//
// Параметры:
-// СоответствиеПолей - список значений - соответствия полей.
-// БезПустыхПолей - необязательный флаг сохранения полей с пустыми значениями
+// СоответствиеПолей - СписокЗначений - соответствия полей.
+// БезПустыхПолей - Булево - необязательный флаг сохранения полей с пустыми значениями
//
-// Возвращаемое значение - строка, преобразованная из списка
+// Возвращаемое значение:
+// Строка - результат, преобразованный из списка
//
Функция ПреобразоватьСписокПолейВСтроку(СоответствиеПолей, БезПустыхПолей = Истина) Экспорт
@@ -256,7 +262,8 @@
// Параметры:
// СтрокаПолей - Строка - строка полей.
//
-// Возвращаемое значение - Список значений - список значений полей.
+// Возвращаемое значение:
+// СписокЗначений - список значений полей.
//
Функция ПреобразоватьСтрокуВСписокПолей(СтрокаПолей) Экспорт
@@ -279,10 +286,11 @@
// Преобразует строку полей вида ключ = значение в структуру
//
// Параметры:
-// СтрокаПолей - строка полей с данными в виде ключ = значение
-// ВидКонтактнойИнформации - необязательный вид КИ для определения состава незаполненных полей
+// СтрокаПолей - Строка - строка полей с данными в виде ключ = значение
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - для определения состава незаполненных полей
//
-// Возвращаемое значение: структура значений полей.
+// Возвращаемое значение:
+// Структура - значения полей
//
Функция СтруктураЗначенийПолей(СтрокаПолей, ВидКонтактнойИнформации = Неопределено) Экспорт
@@ -323,10 +331,11 @@
// Возвращает строку списка полей.
//
// Параметры:
-// СтруктураЗначенийПолей - структура значений полей.
-// БезПустыхПолей - необязательный флаг сохранения полей с пустыми значениями
+// СтруктураЗначенийПолей - Структура - структура значений полей.
+// БезПустыхПолей - Булево - необязательный флаг сохранения полей с пустыми значениями
//
-// Возвращаемое значение - строка, преобразованная из структуры
+// Возвращаемое значение:
+/// Строка - результат преобразования из структуры
//
Функция СтрокаПолей(СтруктураЗначенийПолей, БезПустыхПолей = Истина) Экспорт
diff --git a/SSL/src/CommonModules/УправлениеПечатью/Module.bsl b/SSL/src/CommonModules/УправлениеПечатью/Module.bsl
index 2e9e9e796..728f4c5d7 100644
--- a/SSL/src/CommonModules/УправлениеПечатью/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеПечатью/Module.bsl
@@ -5,6 +5,19 @@
#Область ПрограммныйИнтерфейс
+// Возвращает описание найденной в коллекции печатной формы.
+// Если описание не найдено, возвращает Неопределено.
+//
+// Параметры:
+// КоллекцияПечатныхФорм - ТаблицаЗначений - см. ПодготовитьКоллекциюПечатныхФорм();
+// ИмяМакета - Строка - имя проверяемого макета.
+//
+// ВозвращаемоеЗначение:
+// СтрокаТаблицыЗначений - найденное описание печатной формы.
+Функция СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Идентификатор) Экспорт
+ Возврат КоллекцияПечатныхФорм.Найти(ВРег(Идентификатор), "ИмяВРЕГ");
+КонецФункции
+
// Проверить, нужно ли печатать макет.
//
// Параметры:
@@ -31,16 +44,20 @@
// "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ".
// Если не указывать этот параметр, то редактирование макета пользователем будет
// недоступно в форме ПечатьДокументов.
-//
-Процедура ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, ТабличныйДокумент, Картинка = Неопределено, ПолныйПутьКМакету = "") Экспорт
+// ИмяФайлаПечатнойФормы - Строка - имя, используемое при сохранении печатной формы в файл;
+// - Соответствие:
+// * Ключ - ЛюбаяСсылка - ссылка на объект печати;
+// * Значение - Строка - имя файла.
+Процедура ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, ТабличныйДокумент,
+ Картинка = Неопределено, ПолныйПутьКМакету = "", ИмяФайлаПечатнойФормы = Неопределено) Экспорт
- Стр = КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ");
-
- Если Стр <> Неопределено Тогда
- Стр.ТабличныйДокумент = ТабличныйДокумент;
- Стр.СинонимМакета = СинонимМакета;
- Стр.Картинка = Картинка;
- Стр.ПолныйПутьКМакету = ПолныйПутьКМакету;
+ ОписаниеПечатнойФормы = КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ");
+ Если ОписаниеПечатнойФормы <> Неопределено Тогда
+ ОписаниеПечатнойФормы.ТабличныйДокумент = ТабличныйДокумент;
+ ОписаниеПечатнойФормы.СинонимМакета = СинонимМакета;
+ ОписаниеПечатнойФормы.Картинка = Картинка;
+ ОписаниеПечатнойФормы.ПолныйПутьКМакету = ПолныйПутьКМакету;
+ ОписаниеПечатнойФормы.ИмяФайлаПечатнойФормы = ИмяФайлаПечатнойФормы;
КонецЕсли;
КонецПроцедуры
@@ -51,11 +68,10 @@
// документе.
//
// Параметры:
-// ТабличныйДокумент - табличный документ - табличный документ печатной формы
-// НомерСтрокиНачало - число - позиция начала очередной области в документе
-// ОбъектыПечати - СписокЗначений - список объектов печати
-// Ссылка - ссылка на объект ИБ - объект печати
-//
+// ТабличныйДокумент - ТабличныйДокумент - печатная форма;
+// НомерСтрокиНачало - Число - позиция начала очередной области в документе;
+// ОбъектыПечати - СписокЗначений - список объектов печати;
+// Ссылка - ЛюбаяСсылка - объект печати.
Процедура ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка) Экспорт
Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка);
@@ -77,8 +93,9 @@
// ПолноеИмяОбъектаМетаданных - Строка - полное имя объекта метаданных, для которого необходимо получить список печатных форм.
//
// Возвращаемое значение:
-// Список: значение - Строка - идентификатор печатной формы;
-// представление - Строка - представление печатной формы.
+// Список:
+// * Значение - Строка - идентификатор печатной формы;
+// * Представление - Строка - представление печатной формы.
Функция СписокПечатныхФормИзВнешнихИсточников(ПолноеИмяОбъектаМетаданных) Экспорт
ВнешниеПечатныеФормы = Новый СписокЗначений;
@@ -96,8 +113,20 @@
// Форма - УправляемаяФорма - форма, в которой необходимо разместить подменю Печать.
// МестоРазмещенияКомандПоУмолчанию - ЭлементФормы - группа, в которую необходимо разместить подменю Печать,
// по умолчанию размещается в командную панель формы.
-Процедура ПриСозданииНаСервере(Форма, МестоРазмещенияКомандПоУмолчанию = Неопределено) Экспорт
- КомандыПечати = КомандыПечатиФормы(Форма);
+// ОбъектыПечати - Массив - список объектов метаданных, для которых необходимо сформировать
+// объединенное подменю Печать.
+Процедура ПриСозданииНаСервере(Форма, МестоРазмещенияКомандПоУмолчанию = Неопределено, ОбъектыПечати = Неопределено) Экспорт
+
+ КомандыПечати = КомандыПечатиФормы(Форма, ОбъектыПечати);
+ Если МестоРазмещенияКомандПоУмолчанию <> Неопределено Тогда
+ Для Каждого КомандаПечати Из КомандыПечати Цикл
+ Если ПустаяСтрока(КомандаПечати.МестоРазмещения) Тогда
+ КомандаПечати.МестоРазмещения = МестоРазмещенияКомандПоУмолчанию.Имя;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ КомандыПечати.Колонки.Добавить("ИмяКомандыНаФорме", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд = КомандыПечати.Скопировать(,"МестоРазмещения");
ТаблицаКоманд.Свернуть("МестоРазмещения");
@@ -116,6 +145,19 @@
КонецЕсли;
КонецЦикла;
+ АдресКомандПечатиВоВременномХранилище = "АдресКомандПечатиВоВременномХранилище";
+ КомандаФормы = Форма.Команды.Найти(АдресКомандПечатиВоВременномХранилище);
+ Если КомандаФормы = Неопределено Тогда
+ КомандаФормы = Форма.Команды.Добавить(АдресКомандПечатиВоВременномХранилище);
+ КомандаФормы.Действие = ПоместитьВоВременноеХранилище(КомандыПечати, Форма.УникальныйИдентификатор);
+ Иначе
+ ОбщийСписокКомандПечатиФормы = ПолучитьИзВременногоХранилища(КомандаФормы.Действие);
+ Для Каждого КомандаПечати Из КомандыПечати Цикл
+ ЗаполнитьЗначенияСвойств(ОбщийСписокКомандПечатиФормы.Добавить(), КомандаПечати);
+ КонецЦикла;
+ КомандаФормы.Действие = ПоместитьВоВременноеХранилище(ОбщийСписокКомандПечатиФормы, Форма.УникальныйИдентификатор);
+ КонецЕсли;
+
КонецПроцедуры
// Возвращает список команд печати для указанной формы.
@@ -125,7 +167,7 @@
//
// Возвращаемое значение:
// ТаблицаЗначений - описание см. в СоздатьКоллекциюКомандПечати().
-Функция КомандыПечатиФормы(Форма) Экспорт
+Функция КомандыПечатиФормы(Форма, СписокОбъектов = Неопределено) Экспорт
Если ТипЗнч(Форма) = Тип("УправляемаяФорма") Тогда
ИмяФормы = Форма.ИмяФормы;
@@ -140,19 +182,31 @@
УправлениеПечатьюПереопределяемый.ПередДобавлениемКомандПечати(ИмяФормы, КомандыПечати, СтандартнаяОбработка);
Если СтандартнаяОбработка Тогда
- ПолноеИмяОбъекта = Метаданные.НайтиПоПолномуИмени(ИмяФормы).Родитель().ПолноеИмя();
- МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта);
- МенеджерПечати.ДобавитьКомандыПечати(КомандыПечати);
+ ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяФормы);
+ Если ОбъектМетаданных <> Неопределено Тогда
+ ОбъектМетаданных = ОбъектМетаданных.Родитель();
+ КонецЕсли;
- Для Каждого КомандаПечати Из КомандыПечати Цикл
- Если ПустаяСтрока(КомандаПечати.МенеджерПечати) Тогда
- КомандаПечати.МенеджерПечати = ПолноеИмяОбъекта;
+ Если СписокОбъектов <> Неопределено Тогда
+ ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати);
+ ИначеЕсли ОбъектМетаданных = Неопределено Тогда
+ Возврат КомандыПечати;
+ Иначе
+ МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя());
+ КомандыДобавлены = ДобавитьКомандыИзМенеджераПечати(МенеджерПечати, КомандыПечати);
+ Если КомандыДобавлены Тогда
+ Для Каждого КомандаПечати Из КомандыПечати Цикл
+ Если ПустаяСтрока(КомандаПечати.МенеджерПечати) Тогда
+ КомандаПечати.МенеджерПечати = ОбъектМетаданных.ПолноеИмя();
+ КонецЕсли;
+ КонецЦикла;
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
+ МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
+ МодульДополнительныеОтчетыИОбработки.ПриПолученииКомандПечати(КомандыПечати, ИмяФормы);
+ КонецЕсли;
+ ИначеЕсли ОбщегоНазначения.ЭтоЖурналДокументов(ОбъектМетаданных) Тогда
+ ЗаполнитьКомандыПечатиДляСпискаОбъектов(ОбъектМетаданных.РегистрируемыеДокументы, КомандыПечати);
КонецЕсли;
- КонецЦикла;
-
- Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
- МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
- МодульДополнительныеОтчетыИОбработки.ПриПолученииКомандПечати(КомандыПечати, ИмяФормы);
КонецЕсли;
КонецЕсли;
@@ -187,9 +241,9 @@
// Возвращаемое значение:
// ТаблицаЗначений - описание команд печати:
//
-// Идентификатор - Строка, Массив - Идентификатор команды печати, по которому менеджер печати определяет печатную
-// форму, которую необходимо сформировать.
-// Пример: "СчетЗаказ".
+// * Идентификатор - Строка - Идентификатор команды печати, по которому менеджер печати определяет печатную
+// форму, которую необходимо сформировать.
+// Пример: "СчетЗаказ".
//
// Для печати нескольких печатных форм можно указывать одновременно несколько их
// идентификаторов (строкой, через запятую, либо массивом строк), например:
@@ -210,54 +264,62 @@
// Обработка._ДемоПечатнаяФорма, а СчетЗаказ - в менеджере печати, указанном в
// параметре МенеджерПечати.
//
-// Представление - Строка - Представление команды в меню Печать.
+// - Массив - список идентификаторов команд печати.
+//
+// * Представление - Строка - Представление команды в меню Печать.
// Пример: "Счет на оплату".
//
-// МенеджерПечати - Строка - (необязательный) Имя объекта, в модуле менеджера которого располагается
+// * МенеджерПечати - Строка - (необязательный) Имя объекта, в модуле менеджера которого располагается
// процедура Печать, формирующая табличные документы для этой команды.
// Значение по умолчанию: имя модуля менеджера объекта.
// Пример: "Документ.СчетНаОплатуПокупателю".
+// * ТипыОбъектовПечати - Массив - (необязательный) список типов объектов, для которых предназначена команда
+// печати. Параметр предназначен для команд печати в журналах документов, где
+// требуется проверка передаваемого типа объекта перед вызовом менеджера печати.
+// Если список не заполнен, то при автоматическом создании списка команд печати
+// в журнале документов он заполняется типом объекта, из которого была
+// импортирована команда печати.
//
-// Обработчик - Строка - (необязательный) Клиентский обработчик команды, в который необходимо передать
+// * Обработчик - Строка - (необязательный) Клиентский обработчик команды, в который необходимо передать
// управление вместо стандартного обработчика команды печать. Используется,
// например, когда печатная форма формируется на клиенте.
// Пример: "ОбработчикиПечатиКлиент.ПечатьСчетовНаОплатуПокупателю".
//
-// Порядок - Число - (необязательный) Значение от 1 до 100, указывающее порядок размещения команды
+// * Порядок - Число - (необязательный) Значение от 1 до 100, указывающее порядок размещения команды
// по отношению к другим командам. Сортировка команд меню Печать осуществляется
// сначала по полю Порядок, затем по представлению.
// Значение по умолчанию: 50.
//
-// Картинка - Картинка - (необязательный) Картинка, которая отображается возле команды в меню Печать.
+// * Картинка - Картинка - (необязательный) Картинка, которая отображается возле команды в меню Печать.
// Пример: БиблиотекаКартинок.ФорматPDF.
//
-// СписокФорм - Строка - (необязательный) Имена форм через запятую, в которых должна отображаться
+// * СписокФорм - Строка - (необязательный) Имена форм через запятую, в которых должна отображаться
// команда. Если параметр не указан, то команда печати будет отображаться во
// всех формах объекта, где встроена подсистема Печать.
// Пример: "ФормаДокумента".
//
-// МестоРазмещения - Строка - (необязательный) Имя командной панели формы, в которую необходимо разместить
+// * МестоРазмещения - Строка - (необязательный) Имя командной панели формы, в которую необходимо разместить
// команду печати. Параметр необходимо использовать только в случае, когда на
// форме размещается более одного подменю "Печать". В остальных случаях место
// размещения необходимо задавать в модуле формы при вызове метода
// УправлениеПечатью.ПриСозданииНаСервере.
//
-// ЗаголовокФормы - Строка - (необязательный) Произвольная строка, переопределяющая стандартных заголовок
+// * ЗаголовокФормы - Строка - (необязательный) Произвольная строка, переопределяющая стандартных заголовок
// формы «Печать документов».
// Пример: "Настраиваемый комплект".
//
-// ФункциональныеОпции - Строка - (необязательный) Имена функциональных опций через запятую, от которых зависит
+// * ФункциональныеОпции - Строка - (необязательный) Имена функциональных опций через запятую, от которых зависит
// доступность команды печати.
//
-// ПроверкаПроведенияПередПечатью - Булево - (необязательный) Признак необходимости проверки проведенности
+// * ПроверкаПроведенияПередПечатью - Булево - (необязательный) Признак необходимости проверки проведенности
// документов перед печатью. Если параметр не указан, то проверка проведенности
// не выполняется.
//
-// СразуНаПринтер - Булево - (необязательный) Признак необходимости печати документов без предварительного
+// * СразуНаПринтер - Булево - (необязательный) Признак необходимости печати документов без предварительного
// просмотра, сразу на принтер. Если параметр не указан, то при выборе команды
// печати открывается форма предварительного просмотра «Печать документов».
//
-// ФорматСохранения - ТипФайлаТабличногоДокумента - (необязательный) Применяется для быстрого сохранения печатной
+// * ФорматСохранения - ТипФайлаТабличногоДокумента - (необязательный) Применяется для быстрого сохранения печатной
// формы (без дополнительных действий) в различные форматы, отличные от mxl.
// Если параметр не указан, то формируется обычный mxl.
// Пример: ТипФайлаТабличногоДокумента.PDF.
@@ -265,28 +327,28 @@
// При выборе команды печати сразу открывается сформированный в формате pdf
// документ.
//
-// ПереопределитьПользовательскиеНастройкиКоличества - Булево - (необязательный) Признак необходимости отключения в
+// * ПереопределитьПользовательскиеНастройкиКоличества - Булево - (необязательный) Признак необходимости отключения в
// форме ПечатьДокументов механизма сохранения/восстановления выбранного
// пользователем количества экземпляров на печать. Если параметр не указан, то
// механизм сохранения/восстановления настроек будет работать при открытии формы
// ПечатьДокументов.
//
-// ДополнитьКомплектВнешнимиПечатнымиФормами - Булево - (необязательный) Признак необходимости дополнить комплект
+// * ДополнитьКомплектВнешнимиПечатнымиФормами - Булево - (необязательный) Признак необходимости дополнить комплект
// документов всеми подключенными к объекту внешними печатными формами
// (подсистема ДополнительныеОтчетыИОбработки). Если параметр не указан, внешние
// печатные формы не добавляются в комплект.
//
-// ФиксированныйКомплект - Булево - (необязательный) Признак необходимости блокировки от изменения пользователем
+// * ФиксированныйКомплект - Булево - (необязательный) Признак необходимости блокировки от изменения пользователем
// состава комплекта документов. Если параметр не указан, то пользователь сможет
// исключать отдельные печатные формы из комплекта в форме ПечатьДокументов, а
// также изменять их количество.
//
-// НеВыполнятьЗаписьВФорме - Булево - (необязательный) Признак необходимости отключения механизма записи объекта
+// * НеВыполнятьЗаписьВФорме - Булево - (необязательный) Признак необходимости отключения механизма записи объекта
// перед выполнением команды печати. Используется в исключительных случаях. Если
// параметр не указан, производится запись объекта в случае, если в форме
// объекта установлен признак модифицированности.
//
-// ТребуетсяРасширениеРаботыСФайлами - Булево - (необязательный) Признак необходимости подключения расширения работы
+// * ТребуетсяРасширениеРаботыСФайлами - Булево - (необязательный) Признак необходимости подключения расширения работы
// с файлами перед выполнением команды. Если параметр не указан, подключение
// расширения работы с файлами выполняться не будет.
//
@@ -303,6 +365,7 @@
// менеджер печати
Результат.Колонки.Добавить("МенеджерПечати", Новый ОписаниеТипов("Строка"));
+ Результат.Колонки.Добавить("ТипыОбъектовПечати", Новый ОписаниеТипов("Массив"));
// альтернативный обработчик команды
Результат.Колонки.Добавить("Обработчик", Новый ОписаниеТипов("Строка"));
@@ -471,7 +534,7 @@
// ДвоичныеДанныеДокумента - ДвоичныеДанные - двоичные данные табличного документа.
//
// Возвращаемое значение:
-// ТабличныйДокумент
+// ТабличныйДокумент.
//
Функция ТабличныйДокументПоДвоичнымДанным(ДвоичныеДанныеДокумента) Экспорт
@@ -519,7 +582,7 @@
КонецФункции
-// Возвращает двоичные данные для формирования QR кода
+// Возвращает двоичные данные для формирования QR кода.
//
// Параметры:
// QRСтрока - Строка - данные, которые необходимо разместить в QR-коде.
@@ -534,7 +597,7 @@
// ТекстОшибки - Строка - в этот параметр помещается описание возникшей ошибки (если возникла).
//
// Возвращаемое значение:
-// Двоичные данные - буфер, содержащий байты PNG-изображения QR-кода.
+// ДвоичныеДанные - буфер, содержащий байты PNG-изображения QR-кода.
//
// Пример:
//
@@ -571,7 +634,8 @@
КонецФункции
// Формирует форматную строку согласно "Унифицированному формату электронных банковских сообщений" для ее отображения в виде QR-кода
-// Параметры:
+//
+//Параметры:
// ДанныеДокумента - Структура - содержит значения полей документа
// - Данные документа будут закодированы согласно стандарту
// "СТАНДАРТЫ ФИНАНСОВЫХ ОПЕРАЦИЙ Символы двумерного штрихового кода для осуществления платежей физических лиц"
@@ -739,8 +803,13 @@
СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам"].Добавить(
"УправлениеПечатью");
-
- КонецПроцедуры
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ТекущиеДела") Тогда
+ СерверныеОбработчики["СтандартныеПодсистемы.ТекущиеДела\ПриЗаполненииСпискаТекущихДел"].Добавить(
+ "УправлениеПечатью");
+ КонецЕсли;
+
+КонецПроцедуры
#КонецОбласти
@@ -778,6 +847,80 @@
КонецПроцедуры
+// Заполняет список текущих дел пользователя.
+//
+// Параметры:
+// ТекущиеДела - ТаблицаЗначений - таблица значений с колонками:
+// * Идентификатор - Строка - внутренний идентификатор дела, используемый механизмом "Текущие дела".
+// * ЕстьДела - Булево - если Истина, дело выводится в списке текущих дел пользователя.
+// * Важное - Булево - если Истина, дело будет выделено красным цветом.
+// * Представление - Строка - представление дела, выводимое пользователю.
+// * Количество - Число - количественный показатель дела, выводится в строке заголовка дела.
+// * Форма - Строка - полный путь к форме, которую необходимо открыть при нажатии на гиперссылку
+// дела на панели "Текущие дела".
+// * ПараметрыФормы- Структура - параметры, с которыми нужно открывать форму показателя.
+// * Владелец - Строка, объект метаданных - строковый идентификатор дела, которое будет владельцем для текущего
+// или объект метаданных подсистема.
+// * Подсказка - Строка - текст подсказки.
+//
+Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
+
+ Если Не ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.ПользовательскиеМакетыПечати) Тогда
+ Возврат;
+ КонецЕсли;
+
+ // Если нет раздела администрирование, дело не добавляется.
+ Подсистема = Метаданные.Подсистемы.Найти("Администрирование");
+ Если Подсистема <> Неопределено
+ И Не ПравоДоступа("Просмотр", Подсистема)
+ И Не ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(Подсистема) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ВывестиДело = Истина;
+ ПровереноНаВерсию = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "ПечатныеФормы");
+ Если ПровереноНаВерсию <> Неопределено Тогда
+ ВерсияМассив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Метаданные.Версия, ".");
+ ТекущаяВерсия = ВерсияМассив[0] + ВерсияМассив[1] + ВерсияМассив[2];
+ Если ПровереноНаВерсию = ТекущаяВерсия Тогда
+ ВывестиДело = Ложь; // Печатные формы проверены на текущей версии.
+ КонецЕсли;
+ КонецЕсли;
+
+ КоличествоПользовательскихМакетов = КоличествоИспользуемыхПользовательскихМакетов();
+
+ // Добавление дела.
+ Дело = ТекущиеДела.Добавить();
+ Дело.Идентификатор = "МакетыПечатныхФорм";
+ Дело.ЕстьДела = ВывестиДело И КоличествоПользовательскихМакетов > 0;
+ Дело.Представление = НСтр("ru = 'Макеты печатных форм'");
+ Дело.Количество = КоличествоПользовательскихМакетов;
+ Дело.Форма = "РегистрСведений.ПользовательскиеМакетыПечати.Форма.ПроверкаПечатныхФорм";
+ Дело.Владелец = "ПроверитьСовместимостьСТекущейВерсией";
+
+ // Проверка наличия группы дела. Если группа отсутствует - добавляем.
+ ГруппаДела = ТекущиеДела.Найти("ПроверитьСовместимостьСТекущейВерсией", "Идентификатор");
+ Если ГруппаДела = Неопределено Тогда
+ ГруппаДела = ТекущиеДела.Добавить();
+ ГруппаДела.Идентификатор = "ПроверитьСовместимостьСТекущейВерсией";
+ ГруппаДела.ЕстьДела = Дело.ЕстьДела;
+ ГруппаДела.Представление = НСтр("ru = 'Проверить совместимость'");
+ Если Дело.ЕстьДела Тогда
+ ГруппаДела.Количество = Дело.Количество;
+ КонецЕсли;
+ ГруппаДела.Владелец = Подсистема;
+ Иначе
+ Если Не ГруппаДела.ЕстьДела Тогда
+ ГруппаДела.ЕстьДела = Дело.ЕстьДела;
+ КонецЕсли;
+
+ Если Дело.ЕстьДела Тогда
+ ГруппаДела.Количество = ГруппаДела.Количество + Дело.Количество;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
// Возвращает список разрешений для загрузки классификатора банков с сайта РБК.
//
// Возвращаемое значение:
@@ -866,7 +1009,7 @@
// Сформировать печатные формы
Процедура СформироватьПечатныеФормы(ИмяМенеджераПечати, Знач ИменаМакетов, МассивОбъектов, ПараметрыПечати,
- КоллекцияПечатныхФорм, ОбъектыПечати = Неопределено, ПараметрыВывода) Экспорт
+ КоллекцияПечатныхФорм, ОбъектыПечати = Неопределено, ПараметрыВывода, ДопустимыеТипыОбъектовПечати = Неопределено) Экспорт
ПараметрыВывода = ПодготовитьСтруктуруПараметровВывода();
@@ -945,24 +1088,13 @@
// проверка соответствия печатаемых объектов выбранной печатной форме
ОжидаемыйТипОбъекта = Неопределено;
- МетаданныеМенеджера = Метаданные.НайтиПоПолномуИмени(ИспользуемыйМенеджерПечати);
- Если МетаданныеМенеджера <> Неопределено
- И (Метаданные.Документы.Содержит(МетаданныеМенеджера)
- Или Метаданные.Справочники.Содержит(МетаданныеМенеджера)
- Или Метаданные.БизнесПроцессы.Содержит(МетаданныеМенеджера)
- Или Метаданные.Задачи.Содержит(МетаданныеМенеджера)
- Или Метаданные.ПланыВидовРасчета.Содержит(МетаданныеМенеджера)
- Или Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеМенеджера)
- Или Метаданные.ПланыОбмена.Содержит(МетаданныеМенеджера)) Тогда
- ОжидаемыйТипОбъекта = Тип(СтрЗаменить(ИспользуемыйМенеджерПечати, ".", "Ссылка."));
- КонецЕсли;
ОбъектыСоответствующиеПечатнойФорме = МассивОбъектов;
- Если ОжидаемыйТипОбъекта <> Неопределено Тогда
+ Если ДопустимыеТипыОбъектовПечати <> Неопределено И ДопустимыеТипыОбъектовПечати.Количество() > 0 Тогда
Если ТипЗнч(МассивОбъектов) = Тип("Массив") Тогда
ОбъектыСоответствующиеПечатнойФорме = Новый Массив;
Для Каждого Объект Из МассивОбъектов Цикл
- Если ТипЗнч(Объект) <> ОжидаемыйТипОбъекта Тогда
+ Если ДопустимыеТипыОбъектовПечати.Найти(ТипЗнч(Объект)) = Неопределено Тогда
СообщитьПечатнаяФормаНедоступна(Объект);
Иначе
ОбъектыСоответствующиеПечатнойФорме.Добавить(Объект);
@@ -971,8 +1103,8 @@
Если ОбъектыСоответствующиеПечатнойФорме.Количество() = 0 Тогда
ОбъектыСоответствующиеПечатнойФорме = Неопределено;
КонецЕсли;
- ИначеЕсли ОбщегоНазначения.ЗначениеСсылочногоТипа(МассивОбъектов) Тогда
- Если ТипЗнч(МассивОбъектов) <> ОжидаемыйТипОбъекта Тогда
+ ИначеЕсли ОбщегоНазначения.ЗначениеСсылочногоТипа(МассивОбъектов) Тогда // передан не массив
+ Если ДопустимыеТипыОбъектовПечати.Найти(ТипЗнч(МассивОбъектов)) = Неопределено Тогда
СообщитьПечатнаяФормаНедоступна(МассивОбъектов);
ОбъектыСоответствующиеПечатнойФорме = Неопределено;
КонецЕсли;
@@ -996,7 +1128,16 @@
МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИспользуемыйМенеджерПечати);
// печать внутренней печатной формы
Если ОбъектыСоответствующиеПечатнойФорме <> Неопределено Тогда
- МенеджерПечати.Печать(ОбъектыСоответствующиеПечатнойФорме, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, ОбъектыПечати, ПараметрыВывода);
+
+ // При вызове из формы ПечатьДокументов в параметре ПараметрыПечати передается внутренняя информация,
+ // которая включает в себя ДополнительныеПараметры.
+ ДополнительныеПараметры = Неопределено;
+ Если ТипЗнч(ПараметрыПечати) <> Тип("Структура")
+ Или Не ПараметрыПечати.Свойство("ДополнительныеПараметры", ДополнительныеПараметры) Тогда
+ ДополнительныеПараметры = ПараметрыПечати;
+ КонецЕсли;
+ МенеджерПечати.Печать(ОбъектыСоответствующиеПечатнойФорме, ДополнительныеПараметры,
+ ВременнаяКоллекцияДляОднойПечатнойФормы, ОбъектыПечати, ПараметрыВывода);
Иначе
ВременнаяКоллекцияДляОднойПечатнойФормы[0].ТабличныйДокумент = Новый ТабличныйДокумент;
КонецЕсли;
@@ -1009,8 +1150,7 @@
ТипЗнч(ОписаниеПечатнойФормы.Экземпляров) = Тип("Число") И ОписаниеПечатнойФормы.Экземпляров > 0,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не задано количество экземпляров для печатной формы ""%1"".'"),
- ?(ПустаяСтрока(ОписаниеПечатнойФормы.СинонимМакета), ОписаниеПечатнойФормы.ИмяМакета, ОписаниеПечатнойФормы.СинонимМакета)
- ));
+ ?(ПустаяСтрока(ОписаниеПечатнойФормы.СинонимМакета), ОписаниеПечатнойФормы.ИмяМакета, ОписаниеПечатнойФормы.СинонимМакета)));
КонецЦикла;
// обновление коллекции
@@ -1034,7 +1174,7 @@
Если Отказ Тогда
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При формировании печатной формы ""%1"" возникла ошибка. Обратитесь к администратору.'"), ИмяМакета);
- ВызватьИсключение(ТекстСообщенияОбОшибке);
+ ВызватьИсключение ТекстСообщенияОбОшибке;
КонецЕсли;
КонецЦикла;
@@ -1115,6 +1255,7 @@
Макеты.Колонки.Добавить("Экземпляров");
Макеты.Колонки.Добавить("Картинка");
Макеты.Колонки.Добавить("ПолныйПутьКМакету");
+ Макеты.Колонки.Добавить("ИмяФайлаПечатнойФормы");
Если ТипЗнч(ИменаМакетов) = Тип("Строка") Тогда
ИменаМакетов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИменаМакетов);
@@ -1141,7 +1282,7 @@
Функция ПодготовитьСтруктуруПараметровВывода() Экспорт
ПараметрыВывода = Новый Структура;
- ПараметрыВывода.Вставить("ДоступнаПечатьПоКомплектно", Ложь);
+ ПараметрыВывода.Вставить("ДоступнаПечатьПоКомплектно", Ложь); // не используется
СтруктураПараметровПисьма = Новый Структура("Получатель,Тема,Текст", Неопределено, "", "");
ПараметрыВывода.Вставить("ПараметрыОтправки", СтруктураПараметровПисьма);
@@ -1299,6 +1440,8 @@
КомандаФормы.Картинка = БиблиотекаКартинок.Печать;
КонецЕсли;
+ ОписаниеКомандыПечати.ИмяКомандыНаФорме = ИмяКоманды;
+
НовыйЭлемент = Форма.Элементы.Добавить(МестоРазмещенияКоманд.Имя + ИмяКоманды, Тип("КнопкаФормы"), МестоРазмещенияКоманд);
НовыйЭлемент.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
НовыйЭлемент.ИмяКоманды = ИмяКоманды;
@@ -1310,21 +1453,13 @@
//
// Возвращаемое значение
// Структура - строка таблицы из функции КомандыПечатиФормы, преобразованная в структуру.
-Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт
+Функция ОписаниеКомандыПечати(ИмяКоманды, АдресКомандПечатиВоВременномХранилище) Экспорт
- КомандыПечати = КомандыПечатиФормы(ИмяФормы);
-
- Позиция = СтрДлина(ИмяКоманды);
- Пока КодСимвола(ИмяКоманды, Позиция) >= 48 И КодСимвола(ИмяКоманды, Позиция) <= 57 Цикл // 0..9
- Позиция = Позиция - 1;
+ КомандыПечати = ПолучитьИзВременногоХранилища(АдресКомандПечатиВоВременномХранилище);
+ Для Каждого КомандаПечати Из КомандыПечати.НайтиСтроки(Новый Структура("ИмяКомандыНаФорме", ИмяКоманды)) Цикл
+ Возврат ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(КомандаПечати);
КонецЦикла;
- КомандаПечати = КомандыПечати[Число(Сред(ИмяКоманды, Позиция + 1))]; // "КомандаПечати№"
-
- Результат = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(КомандаПечати);
-
- Возврат Результат;
-
КонецФункции
// Фильтрует список команд печати в соответствии с установленными функциональными опциями.
@@ -1585,6 +1720,113 @@
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Объект);
КонецПроцедуры
+// Формирует пакет документов для отправки на принтер.
+Функция ПакетДокументов(ТабличныеДокументы, ОбъектыПечати, ПечататьКомплектами, КоличествоЭкземпляров = 1) Экспорт
+
+ ПакетОтображаемыхДокументов = Новый ПакетОтображаемыхДокументов;
+ КоллекцияПечатныхФорм = ТабличныеДокументы.ВыгрузитьЗначения();
+
+ Если ПечататьКомплектами И ОбъектыПечати.Количество() > 0 Тогда
+ Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
+ ИмяОбласти = ОбъектПечати.Представление;
+ Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл
+ Область = ПечатнаяФорма.Области.Найти(ИмяОбласти);
+ Если Область = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ТабличныйДокумент = ПечатнаяФорма.ПолучитьОбласть(Область.Верх, , Область.Низ);
+ ЗаполнитьЗначенияСвойств(ТабличныйДокумент, ПечатнаяФорма, "АвтоМасштаб,Вывод,ВысотаСтраницы,ДвусторонняяПечать,Защита,ИмяПринтера,КодЯзыкаМакета,КоличествоЭкземпляров,МасштабПечати,ОриентацияСтраницы,ПолеСверху,ПолеСлева,ПолеСнизу,ПолеСправа,РазборПоКопиям,РазмерКолонтитулаСверху,РазмерКолонтитулаСнизу,РазмерСтраницы,ТочностьПечати,ЧерноБелаяПечать,ШиринаСтраницы,ЭкземпляровНаСтранице");
+
+ ПакетОтображаемыхДокументов.Состав.Добавить().Данные = ПакетСОднимТабличнымДокументом(ТабличныйДокумент);
+ КонецЦикла;
+ КонецЦикла;
+ Иначе
+ Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл
+ ТабличныйДокумент = Новый ТабличныйДокумент;
+ ТабличныйДокумент.Вывести(ПечатнаяФорма);
+ ЗаполнитьЗначенияСвойств(ТабличныйДокумент, ПечатнаяФорма, "АвтоМасштаб,Вывод,ВысотаСтраницы,ДвусторонняяПечать,Защита,ИмяПринтера,КодЯзыкаМакета,КоличествоЭкземпляров,МасштабПечати,ОриентацияСтраницы,ПолеСверху,ПолеСлева,ПолеСнизу,ПолеСправа,РазборПоКопиям,РазмерКолонтитулаСверху,РазмерКолонтитулаСнизу,РазмерСтраницы,ТочностьПечати,ЧерноБелаяПечать,ШиринаСтраницы,ЭкземпляровНаСтранице");
+ ПакетОтображаемыхДокументов.Состав.Добавить().Данные = ПакетСОднимТабличнымДокументом(ТабличныйДокумент);
+ КонецЦикла;
+ КонецЕсли;
+
+ ПакетОтображаемыхДокументов.КоличествоЭкземпляров = КоличествоЭкземпляров;
+
+ Возврат ПакетОтображаемыхДокументов;
+
+КонецФункции
+
+// Заворачивает табличный документ в пакет отображаемых документов.
+Функция ПакетСОднимТабличнымДокументом(ТабличныйДокумент)
+ АдресТабличногоДокументаВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличныйДокумент);
+ ПакетСОднимДокументом = Новый ПакетОтображаемыхДокументов;
+ ПакетСОднимДокументом.Состав.Добавить(АдресТабличногоДокументаВоВременномХранилище);
+ ЗаполнитьЗначенияСвойств(ПакетСОднимДокументом, ТабличныйДокумент, "Вывод, ДвусторонняяПечать, ИмяПринтера, КоличествоЭкземпляров, ТочностьПечати");
+ Если ТабличныйДокумент.РазборПоКопиям <> Неопределено Тогда
+ ПакетСОднимДокументом.РазборПоКопиям = ТабличныйДокумент.РазборПоКопиям;
+ КонецЕсли;
+ Возврат ПакетСОднимДокументом;
+КонецФункции
+
+// Добавляет команды печати в список, если у менеджера печати есть соответствующая процедура.
+Функция ДобавитьКомандыИзМенеджераПечати(МенеджерПечати, КомандыПечати)
+ ДобавляемыеКомандыПечати = СоздатьКоллекциюКомандПечати();
+ Попытка
+ МенеджерПечати.ДобавитьКомандыПечати(ДобавляемыеКомандыПечати);
+ Исключение
+ Если ДобавляемыеКомандыПечати.Количество() > 0 Тогда
+ ВызватьИсключение;
+ Иначе
+ Возврат Ложь;
+ КонецЕсли;
+ КонецПопытки;
+
+ Для Каждого КомандаПечати Из ДобавляемыеКомандыПечати Цикл
+ ЗаполнитьЗначенияСвойств(КомандыПечати.Добавить(), КомандаПечати);
+ КонецЦикла;
+
+ Возврат Истина;
+КонецФункции
+
+// Собирает список команд печати из нескольких объектов.
+Процедура ЗаполнитьКомандыПечатиДляСпискаОбъектов(СписокОбъектов, КомандыПечати)
+ Для Каждого ОбъектМетаданных Из СписокОбъектов Цикл
+ Если ОбъектМетаданных.ОсновнаяФормаСписка = Неопределено Тогда
+ Продолжить; // не предусмотрены команды печати в основной форме списка объекта
+ КонецЕсли;
+ ИмяФормыСписка = ОбъектМетаданных.ОсновнаяФормаСписка.ПолноеИмя();
+ Для Каждого ДобавляемаяКомандаПечати Из КомандыПечатиФормы(ИмяФормыСписка) Цикл
+ // поиск аналогичной ранее добавленной команды печати
+ СтруктураОтбора = "Идентификатор,Обработчик,СразуНаПринтер,ФорматСохранения";
+ Если ПустаяСтрока(ДобавляемаяКомандаПечати.Обработчик) Тогда
+ СтруктураОтбора = СтруктураОтбора + ",МенеджерПечати";
+ КонецЕсли;
+ Отбор = Новый Структура(СтруктураОтбора);
+ ЗаполнитьЗначенияСвойств(Отбор, ДобавляемаяКомандаПечати);
+ НайденныеКоманды = КомандыПечати.НайтиСтроки(Отбор);
+ Если НайденныеКоманды.Количество() > 0 Тогда
+ Для Каждого ИмеющаясяКомандаПечати Из НайденныеКоманды Цикл
+ // если уже есть такая команда, дополняем список типов объектов, для которых она предназначена
+ ТипОбъекта = Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка."));
+ Если ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Найти(ТипОбъекта) = Неопределено Тогда
+ ИмеющаясяКомандаПечати.ТипыОбъектовПечати.Добавить(ТипОбъекта);
+ КонецЕсли;
+ // очистим МенеджерПечати в случае, если у имеющейся команды он отличается
+ Если ИмеющаясяКомандаПечати.МенеджерПечати <> ДобавляемаяКомандаПечати.МенеджерПечати Тогда
+ ИмеющаясяКомандаПечати.МенеджерПечати = "";
+ КонецЕсли;
+ КонецЦикла;
+ Продолжить;
+ КонецЕсли;
+
+ Если ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Количество() = 0 Тогда
+ ДобавляемаяКомандаПечати.ТипыОбъектовПечати.Добавить(Тип(СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", "Ссылка.")));
+ КонецЕсли;
+ ЗаполнитьЗначенияСвойств(КомандыПечати.Добавить(), ДобавляемаяКомандаПечати);
+ КонецЦикла;
+ КонецЦикла;
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики условных вызовов в другие подсистемы
@@ -1650,3 +1892,26 @@
КонецПроцедуры
#КонецОбласти
+
+#Область ВспомогательныеПроцедурыИФункции
+
+// Только для внутреннего использования.
+//
+Функция КоличествоИспользуемыхПользовательскихМакетов()
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ПользовательскиеМакетыПечати.ИмяМакета
+ |ИЗ
+ | РегистрСведений.ПользовательскиеМакетыПечати КАК ПользовательскиеМакетыПечати
+ |ГДЕ
+ | ПользовательскиеМакетыПечати.Использование = ИСТИНА";
+
+ Результат = Запрос.Выполнить().Выгрузить();
+
+ Возврат Результат.Количество();
+
+КонецФункции
+
+#КонецОбласти
diff --git a/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl
index ce2f2d59b..79001cc7e 100644
--- a/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl
@@ -163,7 +163,9 @@
COMСоединение.Application.Selection.Collapse();
// восстановить вид просмотра документа
- COMСоединение.Application.ActiveWindow.View.Type = Handler.ViewType;
+ Если Handler.Свойство("ViewType") Тогда
+ COMСоединение.Application.ActiveWindow.View.Type = Handler.ViewType;
+ КонецЕсли;
COMСоединение.Application.Visible = Истина;
COMСоединение.Activate();
diff --git a/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl
index e63c8d08d..9744f8969 100644
--- a/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl
@@ -87,9 +87,9 @@
//
// См. УправлениеПечатью.ОписаниеКомандыПечати
//
-Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт
+Функция ОписаниеКомандыПечати(ИмяКоманды, АдресКомандПечатиВоВременномХранилище) Экспорт
- Возврат УправлениеПечатью.ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы);
+ Возврат УправлениеПечатью.ОписаниеКомандыПечати(ИмяКоманды, АдресКомандПечатиВоВременномХранилище);
КонецФункции
@@ -97,4 +97,22 @@
Функция ДоступноПравоПроведения(СписокДокументов) Экспорт
Возврат УправлениеПечатью.ДоступноПравоПроведения(СписокДокументов);
КонецФункции
+
+// См. УправлениеПечатью.ПакетДокументов.
+Функция ПакетДокументов(ТабличныеДокументы, ОбъектыПечати, ПечататьКомплектами, КоличествоЭкземпляров = 1) Экспорт
+
+ Возврат УправлениеПечатью.ПакетДокументов(ТабличныеДокументы, ОбъектыПечати,
+ ПечататьКомплектами, КоличествоЭкземпляров);
+
+КонецФункции
+
+// Сообщение о недоступности команды печати для выбранного объекта.
+Функция СообщениеОПредназначенииКомандыПечати(ТипыОбъектовПечати) Экспорт
+ ТекстСообщения = НСтр("ru = 'Выбранная команда печати предназначена для документов:'") + Символы.ПС;
+ Для Каждого Тип Из ТипыОбъектовПечати Цикл
+ ТекстСообщения = ТекстСообщения + Метаданные.НайтиПоТипу(Тип).Представление() + Символы.ПС;
+ КонецЦикла;
+ Возврат СокрЛП(ТекстСообщения);
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl
index 636422aeb..b8040d8fb 100644
--- a/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl
@@ -69,43 +69,25 @@
КонецЕсли;
// Распечатаем
- РаспечататьТабличныеДокументы(ТабличныеДокументы, ОбъектыПечати,
- ПараметрыВывода.ДоступнаПечатьПоКомплектно);
+ РаспечататьТабличныеДокументы(ТабличныеДокументы, ОбъектыПечати);
КонецПроцедуры
-// Вывести табличные документы на принтер
-Процедура РаспечататьТабличныеДокументы(ТабличныеДокументы, ОбъектыПечати,
- Знач ДоступнаПечатьПокомплектно, Знач КоличествоКопийКомплектов = 1) Экспорт
+// Вывести табличные документы на принтер.
+//
+// Параметры:
+// ТабличныеДокументы - СписокЗначений - печатные формы.
+// ОбъектыПечати - СписокЗначений - соответствие объектов именам областей табличного документа.
+// ПечататьКомплектами - Булево, Неопределено - (не используется, вычисляется автоматически).
+// КоличествоКопийКомплектов - Число - количество экземпляров каждого из комплектов документов.
+Процедура РаспечататьТабличныеДокументы(ТабличныеДокументы, ОбъектыПечати, Знач ПечататьКомплектами = Неопределено, Знач КоличествоКопийКомплектов = 1) Экспорт
- #Если ВебКлиент Тогда
- ДоступнаПечатьПокомплектно = Ложь;
- #КонецЕсли
-
- Если ДоступнаПечатьПокомплектно Тогда
- Для НомерКопииКомплекта = 1 По КоличествоКопийКомплектов Цикл
- Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
- ИмяОбласти = ОбъектПечати.Представление;
- Для Каждого Элемент Из ТабличныеДокументы Цикл
- ТабДок = Элемент.Значение;
- ОбластьПечати = ТабДок.Области.Найти(ИмяОбласти);
- Если ОбластьПечати = Неопределено Тогда
- Продолжить;
- КонецЕсли;
- ОбластьПечатиПользователя = ТабДок.ОбластьПечати;
- ТабДок.ОбластьПечати = ОбластьПечати;
- ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
- ТабДок.ОбластьПечати = ОбластьПечатиПользователя;
- КонецЦикла;
- КонецЦикла;
- КонецЦикла;
- Иначе
- Для Каждого Элемент Из ТабличныеДокументы Цикл
- ТабДок = Элемент.Значение;
- ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
- КонецЦикла;
- КонецЕсли;
+ ПечататьКомплектами = ТабличныеДокументы.Количество() > 1;
+ ПакетОтображаемыхДокументов = УправлениеПечатьюВызовСервера.ПакетДокументов(ТабличныеДокументы,
+ ОбъектыПечати, ПечататьКомплектами, КоличествоКопийКомплектов);
+
+ ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
КонецПроцедуры
// Выполняет интерактивное проведение документов перед печатью.
@@ -142,7 +124,7 @@
//
// Команда - КомандаФормы - подключаемая команда формы, выполняющая обработчик Подключаемый_ВыполнитьКомандуПечати.
// (альтернативный вызов*) Структура - строка таблицы КомандыПечати, преобразованная в структуру.
-// Источник - ТаблицаФормы Или ДанныеФормыСтруктура - источник объектов печати (Форма.Объект, Форма.Элементы.Список).
+// Источник - ТаблицаФормы, ДанныеФормыСтруктура - источник объектов печати (Форма.Объект, Форма.Элементы.Список).
// (альтернативный вызов*) Массив - список объектов печати.
//
// *Альтернативный вызов - указанные типы используются в случае, если вызов выполняется не из штатного
@@ -152,7 +134,7 @@
ОписаниеКоманды = Команда;
Если ТипЗнч(Команда) = Тип("КомандаФормы") Тогда
- ОписаниеКоманды = ОписаниеКомандыПечати(Команда.Имя, Форма.ИмяФормы);
+ ОписаниеКоманды = ОписаниеКомандыПечати(Команда.Имя, Форма.Команды.Найти("АдресКомандПечатиВоВременномХранилище").Действие);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
@@ -182,16 +164,6 @@
КонецПроцедуры
-// Возвращает описание команды по имени элемента формы.
-//
-// См. УправлениеПечатью.ОписаниеКомандыПечати
-//
-Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт
-
- Возврат УправлениеПечатьюКлиентПовтИсп.ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы);
-
-КонецФункции
-
////////////////////////////////////////////////////////////////////////////////
// Работа с макетами офисных документов
@@ -620,6 +592,16 @@
КонецФункции
+// Возвращает описание команды по имени элемента формы.
+//
+// См. УправлениеПечатью.ОписаниеКомандыПечати
+//
+Функция ОписаниеКомандыПечати(ИмяКоманды, АдресКомандПечатиВоВременномХранилище)
+
+ Возврат УправлениеПечатьюКлиентПовтИсп.ОписаниеКомандыПечати(ИмяКоманды, АдресКомандПечатиВоВременномХранилище);
+
+КонецФункции
+
// ИспользованиеМодальности
#Если ВебКлиент Тогда
diff --git a/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/Module.bsl
index bbdbbec28..b8a87a3c2 100644
--- a/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/Module.bsl
@@ -9,9 +9,9 @@
//
// См. УправлениеПечатью.ОписаниеКомандыПечати
//
-Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт
+Функция ОписаниеКомандыПечати(ИмяКоманды, АдресКомандПечатиВоВременномХранилище) Экспорт
- Возврат УправлениеПечатьюВызовСервера.ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы);
+ Возврат УправлениеПечатьюВызовСервера.ОписаниеКомандыПечати(ИмяКоманды, АдресКомандПечатиВоВременномХранилище);
КонецФункции
diff --git a/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl
index 98b63b3d1..d6c560657 100644
--- a/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl
@@ -10,17 +10,17 @@
//
// Параметры
// ТаблицаФорматов - ТаблицаЗначений:
-// ТипФайлаТабличногоДокумента - ТипФайлаТабличногоДокумента - значение в платформе, соответствующее формату;
-// Ссылка - ПеречислениеСсылка.ФорматыСохраненияОтчетов - ссылка на метаданные, где хранится представление;
-// Представление - Строка - - представление типа файла (заполняется из перечисления);
-// Расширение - Строка - - тип файла для операционной системы;
-// Картинка - Картинка - значок формата.
+// * ТипФайлаТабличногоДокумента - ТипФайлаТабличногоДокумента - значение в платформе, соответствующее формату;
+// * Ссылка - ПеречислениеСсылка.ФорматыСохраненияОтчетов - ссылка на метаданные, где хранится представление;
+// * Представление - Строка - - представление типа файла (заполняется из перечисления);
+// * Расширение - Строка - - тип файла для операционной системы;
+// * Картинка - Картинка - значок формата.
//
Процедура ПриЗаполненииНастроекФорматовСохраненияТабличногоДокумента(ТаблицаФорматов) Экспорт
КонецПроцедуры
-// Переопределяет список команд печати, получаемый функцией
+// Переопределяет список команд печати, получаемый функцией УправлениеПечатью.КомандыПечатиФормы.
Процедура ПередДобавлениемКомандПечати(ИмяФормы, КомандыПечати, СтандартнаяОбработка) Экспорт
КонецПроцедуры
diff --git a/SSL/src/CommonModules/УправлениеПечатьюСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюСлужебныйКлиент/Module.bsl
index f16f6d7e2..160ae577d 100644
--- a/SSL/src/CommonModules/УправлениеПечатьюСлужебныйКлиент/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеПечатьюСлужебныйКлиент/Module.bsl
@@ -37,6 +37,22 @@
ВызватьИсключение НСтр("ru = 'Команда не может быть выполнена для указанного объекта!'")
КонецЕсли;
+ Если ДополнительныеПараметры.ОписаниеКоманды.ТипыОбъектовПечати.Количество() <> 0 Тогда // требуется проверка типа
+ ЕстьПечатаемыеОбъекты = Ложь;
+ Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
+ Если ДополнительныеПараметры.ОписаниеКоманды.ТипыОбъектовПечати.Найти(ТипЗнч(ОбъектПечати)) <> Неопределено Тогда
+ ЕстьПечатаемыеОбъекты = Истина;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если Не ЕстьПечатаемыеОбъекты Тогда
+ ТекстСообщения = УправлениеПечатьюВызовСервера.СообщениеОПредназначенииКомандыПечати(ДополнительныеПараметры.ОписаниеКоманды.ТипыОбъектовПечати);
+ ПоказатьПредупреждение(, ТекстСообщения);
+ Возврат;
+ КонецЕсли;
+ КонецЕсли;
+
Если ДополнительныеПараметры.ОписаниеКоманды.ПроверкаПроведенияПередПечатью Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьПодключаемуюКомандуПечатиПодключениеРасширенияРаботыСФайлами", ЭтотОбъект, ДополнительныеПараметры);
УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыПечати, ДополнительныеПараметры.Форма);
@@ -234,7 +250,7 @@
//
Процедура ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(ОписаниеОповещения) Экспорт
#Если ВебКлиент Тогда
- ТекстСообщения = НСтр("ru = 'Для продолжения печати необходимо установить расширение работы с файлами.'");
+ ТекстСообщения = НСтр("ru = 'Для продолжения печати необходимо установить расширение для веб-клиента 1С:Предприятие.'");
ОбщегоНазначенияКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(ОписаниеОповещения, ТекстСообщения, Ложь);
Возврат;
#КонецЕсли
diff --git a/SSL/src/CommonModules/УправлениеСвойствами/Module.bsl b/SSL/src/CommonModules/УправлениеСвойствами/Module.bsl
index 683158e39..4b1ebd4df 100644
--- a/SSL/src/CommonModules/УправлениеСвойствами/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеСвойствами/Module.bsl
@@ -13,14 +13,14 @@
// Вызывается из обработчика ПриСозданииНаСервере формы объекта со свойствами
//
// Параметры:
-// Форма - УправляемаяФорма.
+// Форма - УправляемаяФорма - в которой будут отображаться дополнительные реквизиты.
//
// Объект - Неопределено - взять объект из реквизита формы Объект.
-// ДанныеФормыСтруктура (по типу объекта).
+// - ДанныеФормыСтруктура - по типу объекта.
//
// ИмяЭлементаДляРазмещения - Строка - имя группы формы, в которой будут размещены свойства.
//
-// ПроизвольныйОбъект - Булево, если Истина, тогда в форме создается таблица описания дополнительных реквизитов
+// ПроизвольныйОбъект - Булево - если Истина, тогда в форме создается таблица описания дополнительных реквизитов
// параметр Объект игнорируется, дополнительные реквизиты не создаются и не заполняются.
//
// Это востребовано при последовательном использовании одной формы для просмотра или редактирования
@@ -31,7 +31,12 @@
// Чтобы сохранить изменения следует вызвать ПеренестиЗначенияИзРеквизитовФормыВОбъект(),
// а для обновления состава реквизитов вызвать ОбновитьЭлементыДополнительныхРеквизитов().
//
-Процедура ПриСозданииНаСервере(Форма, Объект = Неопределено, ИмяЭлементаДляРазмещения = "", ПроизвольныйОбъект = Ложь) Экспорт
+// ИмяЭлементаКоманднойПанели - Строка - имя группы формы, в которую будет добавлена кнопка
+// РедактироватьСоставДополнительныхРеквизитов. Если имя элемента не указано,
+// используется стандартная группа "Форма.КоманднаяПанель".
+//
+Процедура ПриСозданииНаСервере(Форма, Объект = Неопределено, ИмяЭлементаДляРазмещения = "",
+ ПроизвольныйОбъект = Ложь, ИмяЭлементаКоманднойПанели = "") Экспорт
Если ПроизвольныйОбъект Тогда
СоздатьОписаниеДополнительныхРеквизитов = Истина;
@@ -44,7 +49,8 @@
СоздатьОписаниеДополнительныхРеквизитов = ИспользоватьДопРеквизиты(ОписаниеОбъекта.Ссылка);
КонецЕсли;
- СоздатьОсновныеОбъектыФормы(Форма, ИмяЭлементаДляРазмещения, СоздатьОписаниеДополнительныхРеквизитов);
+ СоздатьОсновныеОбъектыФормы(Форма, ИмяЭлементаДляРазмещения,
+ СоздатьОписаниеДополнительныхРеквизитов, ИмяЭлементаКоманднойПанели);
Если НЕ ПроизвольныйОбъект Тогда
ЗаполнитьДополнительныеРеквизитыВФорме(Форма, ОписаниеОбъекта);
@@ -56,8 +62,8 @@
// Вызывается из обработчика ПередЗаписьюНаСервере формы объекта со свойствами.
//
// Параметры:
-// Форма - УправляемаяФорма.
-// ТекущийОбъект - <ВидОбъектаМетаданных>Объект.<ИмяОбъектаМетаданных>.
+// Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере.
+// ТекущийОбъект - Объект - <ВидОбъектаМетаданных>Объект.<ИмяОбъектаМетаданных>.
//
Процедура ПриЧтенииНаСервере(Форма, ТекущийОбъект) Экспорт
@@ -74,10 +80,8 @@
// Вызывается из обработчика ПередЗаписьюНаСервере формы объекта со свойствами.
//
// Параметры:
-// Форма - УправляемаяФорма, предварительно настроенная в процедуре
-// УправлениеСвойствами.ПриСозданииНаСервере()
-//
-// ТекущийОбъект - Объект.
+// Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере.
+// ТекущийОбъект - Объект - <ВидОбъектаМетаданных>Объект.<ИмяОбъектаМетаданных>.
//
Процедура ПередЗаписьюНаСервере(Форма, ТекущийОбъект) Экспорт
@@ -88,11 +92,9 @@
// Проверяет заполненность реквизитов обязательных для заполнения.
//
// Параметры:
-// Форма - УправляемаяФорма, предварительно настроенная в процедуре
-// УправлениеСвойствами.ПриСозданииНаСервере().
-//
-// Отказ - параметр обработчика ОбработкаПроверкиЗаполненияНаСервере().
-// ПроверяемыеРеквизиты - параметр обработчика ОбработкаПроверкиЗаполненияНаСервере().
+// Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере.
+// Отказ - Булево - параметр обработчика ОбработкаПроверкиЗаполненияНаСервере.
+// ПроверяемыеРеквизиты - Массив - параметр обработчика ОбработкаПроверкиЗаполненияНаСервере.
//
Процедура ОбработкаПроверкиЗаполнения(Форма, Отказ, ПроверяемыеРеквизиты) Экспорт
@@ -122,14 +124,14 @@
// Обновляет наборы дополнительных реквизитов и сведений для вида объектов со свойствами.
// Используется при записи элементов справочников, которые являются видами объектов со свойствами.
-// Например, если есть справочник Сущности к которому применяется подсистема Свойства, для него создан
-// справочник ВидыСущностей, то при записи элемента ВидыСущностей необходимо вызывать эту процедуру.
+// Например, если есть справочник Номенклатура к которому применяется подсистема Свойства, для него создан
+// справочник ВидыНоменклатуры, то при записи элемента ВидНоменклатуры необходимо вызывать эту процедуру.
//
// Параметры:
-// ВидОбъекта - Объект, запись которого выполняется.
-// ИмяОбъектаСоСвойствами - Строка - имя объекта со свойствами вид которого записывается.
-// ИмяРеквизитаНабораСвойств - Строка - используется, когда наборов свойств несколько
-// или используется имя основного набора отличное от "НаборСвойств".
+// ВидОбъекта - Объект - например, вид номенклатуры перед записью.
+// ИмяОбъектаСоСвойствами - Строка - например, Номенклатура.
+// ИмяРеквизитаНабораСвойств - Строка - используется, когда наборов свойств несколько или
+// используется имя реквизита основного набора отличное от "НаборСвойств".
//
Процедура ПередЗаписьюВидаОбъекта(ВидОбъекта,
ИмяОбъектаСоСвойствами,
@@ -174,12 +176,9 @@
// Обновляет отображаемые данные на форме объекта со свойствами.
//
// Параметры:
-// Форма - УправляемаяФорма, предварительно настроенная в процедуре
-// УправлениеСвойствами.ПриСозданииНаСервере()
-//
-// Объект - Неопределено - взять объект из реквизита формы Объект.
-// Объект - СправочникОбъект, ДокументОбъект, ...
-// ДанныеФормыСтруктура (по типу объекта).
+// Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере.
+// Объект - Неопределено - взять объект из реквизита формы "Объект".
+// - Объект - СправочникОбъект, ДокументОбъект, ... , ДанныеФормыСтруктура (по типу объекта).
//
Процедура ОбновитьЭлементыДополнительныхРеквизитов(Форма, Объект = Неопределено) Экспорт
@@ -195,15 +194,10 @@
// Создает/пересоздает дополнительные реквизиты и элементы в форме владельца свойств.
//
// Параметры:
-// Форма - УправляемаяФорма, предварительно настроенная в процедуре
-// УправлениеСвойствами.ПриСозданииНаСервере()
-//
-// Объект - Неопределено - взять объект из реквизита формы Объект.
-// Объект - СправочникОбъект, ДокументОбъект, ...
-// ДанныеФормыСтруктура (по типу объекта).
-//
-// ПоляНадписей - Булево - начальное значение Ложь, если указать Истина,
-// то вместо полей ввода на форме будут созданы поля надписей.
+// Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере.
+// Объект - Неопределено - взять объект из реквизита формы "Объект".
+// - Объект - СправочникОбъект, ДокументОбъект, ..., ДанныеФормыСтруктура (по типу объекта).
+// ПоляНадписей - Булево - если указать Истина, то вместо полей ввода на форме будут созданы поля надписей.
//
Процедура ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект = Неопределено, ПоляНадписей = Ложь) Экспорт
@@ -240,8 +234,8 @@
Ложь);
ОписаниеСвойств.Колонки.Добавить("ИмяРеквизитаЗначение");
- ОписаниеСвойств.Колонки.Добавить("ДополнительноеЗначение");
ОписаниеСвойств.Колонки.Добавить("ИмяУникальнаяЧасть");
+ ОписаниеСвойств.Колонки.Добавить("ДополнительноеЗначение");
ОписаниеСвойств.Колонки.Добавить("Булево");
УдалитьСтарыеРеквизитыИЭлементы(Форма);
@@ -458,12 +452,9 @@
// Переносит значения свойств из реквизитов формы в табличную часть объекта.
//
// Параметры:
-// Форма - УправляемаяФорма, предварительно настроенная в процедуре
-// УправлениеСвойствами.ПриСозданииНаСервере()
-//
-// Объект - Неопределено - взять объект из реквизита формы Объект.
-// Объект - СправочникОбъект, ДокументОбъект, ...
-// ДанныеФормыСтруктура (по типу объекта).
+// Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере.
+// Объект - Неопределено - взять объект из реквизита формы "Объект".
+// - Объект - СправочникОбъект, ДокументОбъект, ..., ДанныеФормыСтруктура (по типу объекта).
//
Процедура ПеренестиЗначенияИзРеквизитовФормыВОбъект(Форма, Объект = Неопределено) Экспорт
@@ -523,17 +514,14 @@
// Удаляет старые реквизиты и элементы формы.
//
// Параметры:
-// Форма - УправляемаяФорма, предварительно настроенная в процедуре
-// УправлениеСвойствами.ПриСозданииНаСервере()
+// Форма - УправляемаяФорма - уже настроена в процедуре ПриСозданииНаСервере.
//
Процедура УдалитьСтарыеРеквизитыИЭлементы(Форма) Экспорт
УдаляемыеРеквизиты = Новый Массив;
Для каждого ОписаниеСвойства Из Форма.Свойства_ОписаниеДополнительныхРеквизитов Цикл
-
УдаляемыеРеквизиты.Добавить(ОписаниеСвойства.ИмяРеквизитаЗначение);
Форма.Элементы.Удалить(Форма.Элементы[ОписаниеСвойства.ИмяРеквизитаЗначение]);
-
КонецЦикла;
Если УдаляемыеРеквизиты.Количество() > 0 Тогда
@@ -552,12 +540,13 @@
// Возвращает свойства владельца.
//
// Параметры:
-// ВладелецСвойств - Ссылка на владельца свойств.
+// ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
// ПолучатьДопРеквизиты - Булево - в результат включать дополнительные реквизиты.
// ПолучатьДопСведения - Булево - в результат включать дополнительные сведения.
//
// Возвращаемое значение:
-// Массив значений типа ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.
+// Массив - значения
+// * ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - если есть.
//
Функция ПолучитьСписокСвойств(ВладелецСвойств, ПолучатьДопРеквизиты = Истина, ПолучатьДопСведения = Истина) Экспорт
@@ -612,14 +601,18 @@
// Возвращает значения дополнительных свойств объекта.
//
// Параметры:
-// ВладелецСвойств - Ссылка на владельца свойств.
+// ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
// ПолучатьДопРеквизиты - Булево - в результат включать дополнительные реквизиты.
// ПолучатьДопСведения - Булево - в результат включать дополнительные сведения.
-// МассивСвойств - Массив значений типа ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения,
-// значения которых следует получить.
-// Неопределено - все свойства владельца.
-// Возвращаемое значение :
-// ТаблицаЗначений - колонки "Свойство" и "Значение".
+// МассивСвойств - Массив - свойства:
+// * ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - значения
+// которых следует получить.
+// - Неопределено - получить значения всех свойств владельца.
+// Возвращаемое значение:
+// ТаблицаЗначений - колонки:
+// * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца.
+// * Значение - Произвольный - значения любого типа из описания типов свойства объекта метаданных:
+// "Метаданные.ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Тип".
//
Функция ПолучитьЗначенияСвойств(ВладелецСвойств,
ПолучатьДопРеквизиты = Истина,
@@ -704,8 +697,11 @@
// Проверяет, есть ли у объекта свойство.
//
// Параметры:
-// ВладелецСвойств - Ссылка на владельца свойств.
-// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.
+// ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
+// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - проверяемое свойство.
+//
+// Возвращаемое значение:
+// Булево - если Истина, свойство у владельца есть.
//
Функция ПроверитьСвойствоУОбъекта(ВладелецСвойств, Свойство) Экспорт
@@ -721,12 +717,14 @@
// Возвращает перечисляемые значения указанного свойства.
//
-// Параметр:
-// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.
+// Параметры:
+// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство для
+// которого нужно получить перечисляемые значения.
//
// Возвращаемое значение:
-// Массив значений типа СправочникСсылка.ЗначенияСвойствОбъектов
-// или типа СправочникСсылка.ЗначенияСвойствОбъектовИерархия.
+// Массив - значения:
+// * СправочникСсылка.ЗначенияСвойствОбъектов, СправочникСсылка.ЗначенияСвойствОбъектовИерархия - значения
+// свойства, если есть.
//
Функция ПолучитьСписокЗначенийСвойств(Свойство) Экспорт
@@ -763,10 +761,10 @@
// Изменения происходят в транзакции.
//
// Параметры:
-// ВладелецСвойств - Ссылка или Объект владельца свойств.
+// ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
// ТаблицаСвойствИЗначений - ТаблицаЗначений - с колонками:
-// Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.
-// Значение - любое значение, допустимое для свойства.
+// * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца.
+// * Значение - Произвольный - любое значение, допустимое для свойства (указано в элементе свойства).
//
Процедура ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений) Экспорт
@@ -842,10 +840,13 @@
КонецПроцедуры
-// Проверяет, используется ли дополнительные реквизиты с объектом.
+// Проверяет, используются ли дополнительные реквизиты с объектом.
+//
+// Параметры:
+// ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, тогда дополнительные реквизиты используются.
//
Функция ИспользоватьДопРеквизиты(ВладелецСвойств) Экспорт
@@ -855,10 +856,13 @@
КонецФункции
-// Проверяет, используется ли дополнительные сведения объектом.
+// Проверяет, используются ли дополнительные сведения объектом.
+//
+// Параметры:
+// ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
//
// Возвращаемое значение:
-// Булево.
+// Булево - если Истина, тогда дополнительные сведения используются.
//
Функция ИспользоватьДопСведения(ВладелецСвойств) Экспорт
@@ -938,11 +942,16 @@
КонецПроцедуры
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
////////////////////////////////////////////////////////////////////////////////
// Вспомогательные процедуры и функции
// Создает основные реквизиты, команды, элементы в форме владельца свойств.
-Процедура СоздатьОсновныеОбъектыФормы(Форма, ИмяЭлементаДляРазмещения, СоздатьОписаниеДополнительныхРеквизитов)
+Процедура СоздатьОсновныеОбъектыФормы(Форма, ИмяЭлементаДляРазмещения,
+ СоздатьОписаниеДополнительныхРеквизитов, ИмяЭлементаКоманднойПанели)
Реквизиты = Новый Массив;
@@ -1007,7 +1016,13 @@
Команда.Подсказка = НСтр("ru = 'Изменить состав дополнительных реквизитов'");
Команда.Картинка = БиблиотекаКартинок.НастройкаСписка;
- Кнопка = Форма.Элементы.Добавить("РедактироватьСоставДополнительныхРеквизитов", Тип("КнопкаФормы"), Форма.КоманднаяПанель);
+ Кнопка = Форма.Элементы.Добавить(
+ "РедактироватьСоставДополнительныхРеквизитов",
+ Тип("КнопкаФормы"),
+ ?(ИмяЭлементаКоманднойПанели = "",
+ Форма.КоманднаяПанель,
+ Форма.Элементы[ИмяЭлементаКоманднойПанели]));
+
Кнопка.ТолькоВоВсехДействиях = Истина;
Кнопка.ИмяКоманды = "РедактироватьСоставДополнительныхРеквизитов";
КонецЕсли;
diff --git a/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl
index 8a36b1f2c..d6963c7ad 100644
--- a/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl
@@ -192,6 +192,45 @@
// Возвращает заполненную таблицу значений свойств объекта.
Функция ПолучитьТаблицуЗначенийСвойств(ДополнительныеСвойстваОбъекта, Наборы, ЭтоДополнительноеСведение) Экспорт
+ Если ДополнительныеСвойстваОбъекта.Количество() = 0 Тогда
+ // Предварительная быстрая проверка использования дополнительных свойств.
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("НаборыСвойств", Наборы.ВыгрузитьЗначения());
+ Запрос.Текст =
+ "ВЫБРАТЬ ПЕРВЫЕ 1
+ | ИСТИНА КАК ЗначениеИстина
+ |ИЗ
+ | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СвойстваНаборов
+ |ГДЕ
+ | СвойстваНаборов.Ссылка В(&НаборыСвойств)
+ | И НЕ СвойстваНаборов.ПометкаУдаления";
+
+ Если ЭтоДополнительноеСведение Тогда
+ Запрос.Текст = СтрЗаменить(
+ Запрос.Текст,
+ "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты",
+ "Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеСведения");
+ КонецЕсли;
+
+ УстановитьПривилегированныйРежим(Истина);
+ СвойстваНеНайдены = Запрос.Выполнить().Пустой();
+ УстановитьПривилегированныйРежим(Ложь);
+ Если СвойстваНеНайдены Тогда
+ ОписаниеСвойств = Новый ТаблицаЗначений;
+ ОписаниеСвойств.Колонки.Добавить("Набор");
+ ОписаниеСвойств.Колонки.Добавить("Свойство");
+ ОписаниеСвойств.Колонки.Добавить("ВладелецДополнительныхЗначений");
+ ОписаниеСвойств.Колонки.Добавить("ЗаполнятьОбязательно");
+ ОписаниеСвойств.Колонки.Добавить("Наименование");
+ ОписаниеСвойств.Колонки.Добавить("ТипЗначения");
+ ОписаниеСвойств.Колонки.Добавить("ФорматСвойства");
+ ОписаниеСвойств.Колонки.Добавить("МногострочноеПолеВвода");
+ ОписаниеСвойств.Колонки.Добавить("Удалено");
+ ОписаниеСвойств.Колонки.Добавить("Значение");
+ Возврат ОписаниеСвойств;
+ КонецЕсли;
+ КонецЕсли;
+
Свойства = ДополнительныеСвойстваОбъекта.ВыгрузитьКолонку("Свойство");
НаборыСвойств = Новый ТаблицаЗначений;
@@ -211,7 +250,6 @@
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Свойства", Свойства);
Запрос.УстановитьПараметр("НаборыСвойств", НаборыСвойств);
-
Запрос.Текст =
"ВЫБРАТЬ
| НаборыСвойств.Набор,
diff --git a/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl b/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl
index f5c3d31c8..ce7874be2 100644
--- a/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl
+++ b/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl
@@ -83,25 +83,39 @@
//Отправка писем
Запрос = Новый Запрос;
- Запрос.Текст = "ВЫБРАТЬ
- | ЭлектронноеПисьмоИсходящее.Ссылка,
- | ПРЕДСТАВЛЕНИЕ(ЭлектронноеПисьмоИсходящее.Ссылка) КАК ПредставлениеПисьма,
- | ЭлектронноеПисьмоИсходящее.УдалятьПослеОтправки,
- | ЭлектронноеПисьмоИсходящее.УчетнаяЗапись КАК УчетнаяЗапись,
- | ЕСТЬNULL(ПапкиЭлектронныхПисем.ПредопределеннаяПапка, ИСТИНА) КАК ТребуетсяОпределениеПапки
- |ИЗ
- | Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее
- | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
- | ПО ЭлектронноеПисьмоИсходящее.УчетнаяЗапись = УчетныеЗаписиЭлектроннойПочты.Ссылка
- | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
- | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
- | ПО ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма = ПапкиЭлектронныхПисем.Ссылка
- | ПО ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоИсходящее.Ссылка
- |ГДЕ
- | (НЕ ЭлектронноеПисьмоИсходящее.ПометкаУдаления)
- | И ЭлектронноеПисьмоИсходящее.СтатусПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее)
- |ИТОГИ ПО
- | УчетнаяЗапись";
+ Запрос = Новый Запрос;
+ Запрос.Текст = "
+ |ВЫБРАТЬ
+ | ЭлектронноеПисьмоИсходящее.Ссылка,
+ | ПРЕДСТАВЛЕНИЕ(ЭлектронноеПисьмоИсходящее.Ссылка) КАК ПредставлениеПисьма,
+ | ЭлектронноеПисьмоИсходящее.УдалятьПослеОтправки,
+ | ЭлектронноеПисьмоИсходящее.УчетнаяЗапись КАК УчетнаяЗапись,
+ | ЕСТЬNULL(ПапкиЭлектронныхПисем.ПредопределеннаяПапка, ИСТИНА) КАК ТребуетсяОпределениеПапки
+ |ИЗ
+ | Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее
+ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
+ | ПО ЭлектронноеПисьмоИсходящее.УчетнаяЗапись = УчетныеЗаписиЭлектроннойПочты.Ссылка
+ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
+ | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
+ | ПО ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма = ПапкиЭлектронныхПисем.Ссылка
+ | ПО (ПредметыПапкиВзаимодействий.Взаимодействие = ЭлектронноеПисьмоИсходящее.Ссылка)
+ |ГДЕ
+ | НЕ ЭлектронноеПисьмоИсходящее.ПометкаУдаления
+ | И ЭлектронноеПисьмоИсходящее.СтатусПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее)
+ | И ВЫБОР
+ | КОГДА ЭлектронноеПисьмоИсходящее.ДатаКогдаОтправить = ДАТАВРЕМЯ(1, 1, 1)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЭлектронноеПисьмоИсходящее.ДатаКогдаОтправить < &ТекущаяДата
+ | КОНЕЦ
+ | И ВЫБОР
+ | КОГДА ЭлектронноеПисьмоИсходящее.ДатаАктуальностиОтправки = ДАТАВРЕМЯ(1, 1, 1)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЭлектронноеПисьмоИсходящее.ДатаАктуальностиОтправки > &ТекущаяДата
+ | КОНЕЦ
+ |ИТОГИ ПО
+ | УчетнаяЗапись";
+
+ Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
ВыборкаУчетныеЗаписи = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаУчетныеЗаписи.Следующий() Цикл
@@ -317,10 +331,21 @@
| И ЭлектронноеПисьмоИсходящее.Автор = &Пользователь
| И УчетныеЗаписиЭлектроннойПочты.ИспользоватьДляОтправки
| И НЕ ЕСТЬNULL(НастройкиУчетныхЗаписейЭлектроннойПочты.НеИспользоватьВоВстроенномПочтовомКлиенте, ЛОЖЬ)
+ | И ВЫБОР
+ | КОГДА ЭлектронноеПисьмоИсходящее.ДатаКогдаОтправить = ДАТАВРЕМЯ(1, 1, 1)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЭлектронноеПисьмоИсходящее.ДатаКогдаОтправить < &ТекущаяДата
+ | КОНЕЦ
+ | И ВЫБОР
+ | КОГДА ЭлектронноеПисьмоИсходящее.ДатаАктуальностиОтправки = ДАТАВРЕМЯ(1, 1, 1)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЭлектронноеПисьмоИсходящее.ДатаАктуальностиОтправки > &ТекущаяДата
+ | КОНЕЦ
|ИТОГИ ПО
| УчетнаяЗапись";
Запрос.УстановитьПараметр("Пользователь",ТекущийПользователь);
+ Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
МассивПисем = Новый Массив;
ВыборкаУчетныеЗаписи = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
@@ -760,11 +785,23 @@
СтруктураДляЗаписи = ВзаимодействияКлиентСервер.СтруктураРеквизитовВзаимодействияДляЗаписи(
Папка,?(ЗначениеЗаполнено(Предмет),Предмет,Письмо.Ссылка), , , Ложь);
ВзаимодействияВызовСервера.ЗаписьРегистрРеквизитыВзаимодействия(Письмо.Ссылка, СтруктураДляЗаписи);
- МассивИменВложений = Новый Массив;
+ МассивИменВложений = Новый Массив;
+ МассивДублирующихсяИменВложений = Новый Массив;
//Запишем вложения
Для Каждого Вложение Из Сообщение.Вложения Цикл
- МассивИменВложений.Добавить(Вложение.ИмяФайла);
+ Если МассивИменВложений.Найти(Вложение.ИмяФайла) = Неопределено Тогда
+ МассивИменВложений.Добавить(Вложение.ИмяФайла);
+ ИначеЕсли МассивДублирующихсяИменВложений.Найти(Вложение.ИмяФайла) = Неопределено Тогда
+ МассивДублирующихсяИменВложений.Добавить(Вложение.ИмяФайла);
+ КонецЕсли;
+ КонецЦикла;
+
+ Для Каждого ДублирующеесяВложение Из МассивДублирующихсяИменВложений Цикл
+ ИндексВМассиве = МассивИменВложений.Найти(ДублирующеесяВложение);
+ Если ИндексВМассиве <> Неопределено Тогда
+ МассивИменВложений.Удалить(ИндексВМассиве);
+ КонецЕсли;
КонецЦикла;
РасширениеДляФайловПодписи = ЭлектроннаяПодписьКлиентСервер.ПерсональныеНастройки().РасширениеДляФайловПодписи;
@@ -802,6 +839,17 @@
КонецЦикла;
+ Если МассивДублирующихсяИменВложений.Количество() > 0 Тогда
+ Для каждого Вложение Из Сообщение.Вложения Цикл
+ Если МассивДублирующихсяИменВложений.Найти(Вложение.ИмяФайла) <> Неопределено Тогда
+ ЗаписатьВложениеЭлектронногоПисьма(
+ Письмо,Вложение,
+ Новый Массив,
+ КоличествоПустыхИменВоВложениях);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
Если Письмо.НепринятыеВложения.Количество() Тогда
Письмо.Записать();
КонецЕсли;
@@ -1187,8 +1235,8 @@
Для Каждого Адрес Из Адреса Цикл
НоваяСтрока = ТабличнаяЧасть.Добавить();
- НоваяСтрока.Адрес = Адрес.Адрес;
- НоваяСтрока.Представление = Адрес.ОтображаемоеИмя;
+ НоваяСтрока.Адрес = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Адрес.Адрес, "");
+ НоваяСтрока.Представление = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Адрес.ОтображаемоеИмя, "");
КонецЦикла;
КонецПроцедуры
@@ -1355,7 +1403,15 @@
УстановитьПривилегированныйРежим(Истина);
- ИмяОбъектаМетаданных = ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(Письмо);
+ ДанныеПрисоединенныхФайловПисьма = ВзаимодействияПереопределяемый.ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(Письмо);
+ Если ДанныеПрисоединенныхФайловПисьма = Неопределено Тогда
+ ИмяОбъектаМетаданных = ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(Письмо);
+ ВладелецФайлов = Письмо;
+ Иначе
+ ИмяОбъектаМетаданных = ДанныеПрисоединенныхФайловПисьма.ИмяСправочникаПрисоединенныеФайлы;
+ ВладелецФайлов = ДанныеПрисоединенныхФайловПисьма.Владелец;
+ КонецЕсли;
+
Если ИмяОбъектаМетаданных = Неопределено Тогда
Возврат Новый ТаблицаЗначений;
КонецЕсли;
@@ -1386,7 +1442,7 @@
| Файлы.ВладелецФайла = &Письмо
| И НЕ Файлы.ПометкаУдаления";
- Запрос.УстановитьПараметр("Письмо", Письмо);
+ Запрос.УстановитьПараметр("Письмо", ВладелецФайлов);
Запрос.УстановитьПараметр("ПустаяСтрока","");
ТаблицаКВозврату = Запрос.Выполнить().Выгрузить();
diff --git a/SSL/src/CommonModules/ФайловыеФункции/Module.bsl b/SSL/src/CommonModules/ФайловыеФункции/Module.bsl
index 1fea38011..5f923df26 100644
--- a/SSL/src/CommonModules/ФайловыеФункции/Module.bsl
+++ b/SSL/src/CommonModules/ФайловыеФункции/Module.bsl
@@ -6,6 +6,10 @@
#Область ПрограммныйИнтерфейс
// Возвращает максимальный размер файла.
+//
+// Возвращаемое значение:
+// Число - целое число байт.
+//
Функция МаксимальныйРазмерФайла() Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -42,6 +46,10 @@
КонецФункции
// Возвращает максимальный размер файла провайдера.
+//
+// Возвращаемое значение:
+// Число - целое число байт.
+//
Функция МаксимальныйРазмерФайлаОбщий() Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -63,6 +71,10 @@
// Работа с томами файлов
// Есть ли хоть один том хранения файлов.
+//
+// Возвращаемое значение:
+// Булево - если Истина, тогда существует хотя бы один работающий том.
+//
Функция ЕстьТомаХраненияФайлов() Экспорт
УстановитьПривилегированныйРежим(Истина);
diff --git a/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl b/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl
index b26d280f1..0f1dda1e9 100644
--- a/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl
+++ b/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl
@@ -39,7 +39,17 @@
//
СерверныеСобытия.Добавить("СтандартныеПодсистемы.ФайловыеФункции\ПриУдаленииРегистрацииИзменений");
- // Возвращает текст запроса для извлечения текста
+ // Заполняет текст запроса для получения файлов у которых не извлечен текст.
+ // В качестве параметра может прийти другой запрос, с которым следует сделать объединение.
+ //
+ // Параметры:
+ // ТекстЗапроса - Строка (возвращаемое значение), варианты передаваемых значений:
+ // Пустая строка - будет возвращен требуемый текст запроса.
+ // Непустая строка - будет возвращен требуемый текст запроса, добавленный
+ // к переданному тексту посредством "ОБЪЕДИНИТЬ ВСЕ".
+ //
+ // ПолучитьВсеФайлы - Булево - начальное значение Ложь. Позволяет отключить выборку
+ // файлов по частям, если передать Истина.
//
// Синтаксис:
// Процедура ПриОпределенииТекстаЗапросаДляИзвлеченияТекста(ТекстЗапроса, ПолучитьВсеФайлы = Ложь) Экспорт
@@ -56,7 +66,7 @@
// Записывает извлеченный текст
//
// Синтаксис:
- // Процедура ЗаписатьИзвлеченныйТекст(ФайлОбъект) Экспорт
+ // Процедура ПриЗаписиИзвлеченногоТекста(ФайлОбъект) Экспорт
//
СерверныеСобытия.Добавить("СтандартныеПодсистемы.ФайловыеФункции\ПриЗаписиИзвлеченногоТекста");
@@ -497,22 +507,12 @@
Процедура ПроверитьПодписиВСтрокахКоллекции(КоллекцияСтрок) Экспорт
УстановитьПривилегированныйРежим(Истина);
-
- ПровайдерЭП = Константы.ПровайдерЭП.Получить();
- ПутьМодуляКриптографии = ЭлектроннаяПодписьПовтИсп.ПутьМодуляКриптографии();
- ТипПровайдераЭП = Константы.ТипПровайдераЭП.Получить();
- АлгоритмПодписи = Константы.АлгоритмПодписи.Получить();
- АлгоритмХеширования = Константы.АлгоритмХеширования.Получить();
- АлгоритмШифрования = Константы.АлгоритмШифрования.Получить();
-
+ МенеджерКриптографии = ЭлектроннаяПодпись.ПолучитьМенеджерКриптографии();
УстановитьПривилегированныйРежим(Ложь);
- МенеджерКриптографии = Новый МенеджерКриптографии(
- ПровайдерЭП, ПутьМодуляКриптографии, ТипПровайдераЭП);
-
- МенеджерКриптографии.АлгоритмПодписи = АлгоритмПодписи;
- МенеджерКриптографии.АлгоритмХеширования = АлгоритмХеширования;
- МенеджерКриптографии.АлгоритмШифрования = АлгоритмШифрования;
+ Если МенеджерКриптографии = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
Для Каждого Строка Из КоллекцияСтрок Цикл
@@ -1237,14 +1237,15 @@
ФайлОбъект.Ссылка, ИмяФайлаСПутем, Истина);
КонецЦикла;
- Если ПустаяСтрока(ИмяФайлаСПутем) Тогда
- Продолжить;
- КонецЕсли;
-
Кодировка = ПолучитьКодировкуВерсииФайла(Строка.Ссылка);
Отказ = Ложь;
- Текст = ФайловыеФункцииСлужебныйКлиентСервер.ИзвлечьТекст(ИмяФайлаСПутем, Отказ, Кодировка);
+ Если ПустаяСтрока(ИмяФайлаСПутем) Тогда
+ Отказ = Истина;
+ Текст = "";
+ Иначе
+ Текст = ФайловыеФункцииСлужебныйКлиентСервер.ИзвлечьТекст(ИмяФайлаСПутем, Отказ, Кодировка);
+ КонецЕсли;
Если Отказ = Ложь Тогда
ФайлОбъект.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.Извлечен;
@@ -1253,7 +1254,9 @@
ФайлОбъект.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.ИзвлечьНеУдалось;
КонецЕсли;
- Если Строка.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
+ Если Строка.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе
+ И Не ПустаяСтрока(ИмяФайлаСПутем) Тогда
+
УдалитьФайлы(ИмяФайлаСПутем);
КонецЕсли;
diff --git a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl
index a1340764a..2dd2ef465 100644
--- a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl
@@ -32,7 +32,7 @@
//
Процедура ПоказатьПредупреждениеОНеобходимостиРасширенияРаботыСФайлами(ОбработчикРезультата, ПредставлениеКоманды = "") Экспорт
ТекстПредупреждения = НСтр("ru = 'Для выполнения команды ""%1"" необходимо
- |установить расширение работы с файлами.'");
+ |установить расширение для веб-клиента 1С:Предприятие.'");
Если ЗначениеЗаполнено(ПредставлениеКоманды) Тогда
ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%1", ПредставлениеКоманды);
Иначе
@@ -381,7 +381,7 @@
// В рабочем каталоге более новый файл.
Если ДанныеФайла.ВРабочемКаталогеНаЧтение = Ложь
- И ДанныеФайла.Редактирует = ПользователиКлиентСервер.ТекущийПользователь() Тогда
+ И ДанныеФайла.Редактирует = ПользователиКлиентСервер.АвторизованныйПользователь() Тогда
// Файл в рабочем каталоге для редактирования и занят текущим пользователем.
ВернутьРезультат(ОбработчикРезультата, "ОткрытьСуществующий");
@@ -494,7 +494,7 @@
// ОбработчикРезультата - Процедура-обработчик асинхронного метода.
// - Неопределено - Обработка не требуется.
// - ОписаниеОповещения - Описание процедуры-обработчика.
-// Результат - * - Значение, которое необходимо вернуть в ОбработчикРезультата.
+// Результат - Произвольный - Значение, которое необходимо вернуть в ОбработчикРезультата.
// Показывает текст и вызывает обработчик с заданным результатом.
Процедура ВернутьРезультатПослеПоказаПредупреждения(ОбработчикРезультата, ТекстПредупреждения, Результат) Экспорт
diff --git a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиентСервер/Module.bsl b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиентСервер/Module.bsl
index 000333b54..f06ece29a 100644
--- a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиентСервер/Module.bsl
@@ -38,6 +38,19 @@
ИзвлеченныйТекст = "";
+ Попытка
+ Файл = Новый Файл(ПолноеИмяФайла);
+ Если Не Файл.Существует() Тогда
+ Отказ = Истина;
+ Возврат ИзвлеченныйТекст;
+ КонецЕсли;
+ Исключение
+ Отказ = Истина;
+ Возврат ИзвлеченныйТекст;
+ КонецПопытки;
+
+ Прекратить = Ложь;
+
ОбщиеНастройки = ОбщиеНастройкиРаботыСФайлами();
#Если Не ВебКлиент Тогда
@@ -49,7 +62,7 @@
ОбщиеНастройки.СписокРасширенийТекстовыхФайлов, РасширениеИмениФайла);
Если РасширениеФайлаВСписке Тогда
- Возврат ИзвлечьТекстИзТекстовогоФайла(ПолноеИмяФайла, Кодировка);
+ Возврат ИзвлечьТекстИзТекстовогоФайла(ПолноеИмяФайла, Кодировка, Отказ);
КонецЕсли;
Попытка
@@ -58,7 +71,7 @@
Исключение
// Когда текст некому извлечь исключение не требуется. Это нормальный случай.
ИзвлеченныйТекст = "";
- Отказ = Истина;
+ Прекратить = Истина;
КонецПопытки;
#КонецЕсли
@@ -71,11 +84,15 @@
ОбщиеНастройки.СписокРасширенийФайловOpenDocument, РасширениеИмениФайла);
Если РасширениеФайлаВСписке Тогда
- Возврат ИзвлечьТекстOpenDocument(ПолноеИмяФайла);
+ Возврат ИзвлечьТекстOpenDocument(ПолноеИмяФайла, Отказ);
КонецЕсли;
КонецЕсли;
+ Если Прекратить Тогда
+ Отказ = Истина;
+ КонецЕсли;
+
Возврат ИзвлеченныйТекст;
КонецФункции
@@ -660,7 +677,7 @@
// Извлекает текст в соответствии с кодировкой.
// Если кодировка не задана - сама вычисляет кодировку.
//
-Функция ИзвлечьТекстИзТекстовогоФайла(ПолноеИмяФайла, Кодировка)
+Функция ИзвлечьТекстИзТекстовогоФайла(ПолноеИмяФайла, Кодировка, Отказ)
ИзвлеченныйТекст = "";
@@ -671,8 +688,13 @@
Кодировка = Неопределено;
КонецЕсли;
- ЧтениеТекста = Новый ЧтениеТекста(ПолноеИмяФайла, Кодировка);
- ИзвлеченныйТекст = ЧтениеТекста.Прочитать();
+ Попытка
+ ЧтениеТекста = Новый ЧтениеТекста(ПолноеИмяФайла, Кодировка);
+ ИзвлеченныйТекст = ЧтениеТекста.Прочитать();
+ Исключение
+ Отказ = Истина;
+ ИзвлеченныйТекст = "";
+ КонецПопытки;
#КонецЕсли
@@ -682,7 +704,7 @@
// Извлечь текст из файла OpenDocument и возвратить его в виде строки
//
-Функция ИзвлечьТекстOpenDocument(ПутьКФайлу)
+Функция ИзвлечьТекстOpenDocument(ПутьКФайлу, Отказ)
ИзвлеченныйТекст = "";
@@ -707,6 +729,7 @@
ЧтениеXML.Закрыть();
Исключение
// не считаем ошибкой, т.к. например расширение OTF может быть как OpenDocument, так и шрифт OpenType
+ Отказ = Истина;
ИзвлеченныйТекст = "";
КонецПопытки;
diff --git a/SSL/src/CommonModules/ФизическиеЛицаКлиентСервер/Module.bsl b/SSL/src/CommonModules/ФизическиеЛицаКлиентСервер/Module.bsl
index 357a6bd74..3f9a75f86 100644
--- a/SSL/src/CommonModules/ФизическиеЛицаКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ФизическиеЛицаКлиентСервер/Module.bsl
@@ -27,6 +27,15 @@
//
Функция Просклонять(Знач ФИО, Падеж, Результат, Пол = Неопределено) Экспорт
+ СистемнаяИнформация = Новый СистемнаяИнформация();
+ Если СистемнаяИнформация.ТипПлатформы <> ТипПлатформы.Windows_x86
+ И СистемнаяИнформация.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
+
+ Результат = ФИО;
+ Возврат Ложь;
+
+ КонецЕсли;
+
ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклоненияФИО", "Decl");
Компонента = Новый("AddIn.Decl.CNameDecl");
@@ -142,6 +151,19 @@
Имя = ?(КоличествоПодстрок > 1, ФИО[1], "");
Отчество = ?(КоличествоПодстрок > 2, ФИО[2], "");
+ Если КоличествоПодстрок > 3 Тогда
+ ДополнительныеЧастиОтчества = Новый Массив;
+ ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'оглы'"));
+ ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'улы'"));
+ ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'уулу'"));
+ ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'кызы'"));
+ ДополнительныеЧастиОтчества.Добавить(НСтр("ru = 'гызы'"));
+
+ Если ДополнительныеЧастиОтчества.Найти(НРег(ФИО[3])) <> Неопределено Тогда
+ Отчество = Отчество + " " + ФИО[3];
+ КонецЕсли;
+ КонецЕсли;
+
Возврат ?(Не ПустаяСтрока(Фамилия),
Фамилия + ?(Не ПустаяСтрока(Имя), " " + Лев(Имя,1) + "." + ?(Не ПустаяСтрока(Отчество), Лев(Отчество, 1) + ".", ""), ""),
"");
diff --git a/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl b/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl
index cbb8c9cf0..8cde41435 100644
--- a/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl
+++ b/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl
@@ -20,97 +20,64 @@
КонецПроцедуры
-// Вызывается в одноименном обработчике формы отчета после выполнения кода формы.
+// Вызывается в форме отчета перед выводом настройки.
//
// Параметры:
// Форма - УправляемаяФорма - Форма отчета.
-// Отказ - Передается из параметров обработчика "как есть".
-// СтандартнаяОбработка - Передается из параметров обработчика "как есть".
+// СвойстваНастройки - Структура - Описание настройки отчета, которая будет выведена в форме отчета.
+// * ОписаниеТипов - ОписаниеТипов -
+// Тип настройки.
+// * ЗначенияДляВыбора - СписокЗначений -
+// Объекты, которые будут предложены пользователю в списке выбора.
+// Дополняет список объектов, уже выбранных пользователем ранее.
+// * ЗапросЗначенийВыбора - Запрос -
+// Возвращает объекты, которыми необходимо дополнить ЗначенияДляВыбора.
+// Первой колонкой (с 0м индексом) должен выбираться объект,
+// который следует добавить в ЗначенияДляВыбора.Значение.
+// Для отключения автозаполнения
+// в свойство ЗапросЗначенийВыбора.Текст следует записать пустую строку.
+// * ОграничиватьВыборУказаннымиЗначениями - Булево -
+// Когда Истина, то выбор пользователя будет ограничен значениями,
+// указанными в ЗначенияДляВыбора (его конечным состоянием).
//
-// См. также:
-// "УправляемаяФорма.ПриСозданииНаСервере" в синтакс-помощнике.
-//
-Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
-
-
+Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт
КонецПроцедуры
-// Вызывается в обработчике "ПриЗагрузкеВариантаНаСервере" формы отчета до выполнения кода формы.
-//
-// Параметры:
-// Форма - УправляемаяФорма - Форма отчета.
-// НовыеНастройкиКД - НастройкиКомпоновкиДанных - Настройки для загрузки в компоновщик настроек.
-//
-// См. также:
-// "Расширение управляемой формы для отчета.ПриЗагрузкеВариантаНаСервере" в синтакс-помощнике.
-//
+////////////////////////////////////////////////////////////////////////////////
+// Устаревшие процедуры и функции
+
+// Устарела: следует использовать аналогичную процедуру в модуле объекта отчета.
+Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
+
+КонецПроцедуры
+
+// Устарела: следует использовать аналогичную процедуру в модуле объекта отчета.
Процедура ПередЗагрузкойВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт
КонецПроцедуры
-// Вызывается в одноименном обработчике формы отчета после выполнения кода формы.
-//
-// Параметры:
-// Форма - УправляемаяФорма - Форма отчета.
-// НовыеНастройкиКД - НастройкиКомпоновкиДанных - Настройки для загрузки в компоновщик настроек.
-//
-// См. также:
-// "Расширение управляемой формы для отчета.ПриЗагрузкеВариантаНаСервере" в синтакс-помощнике.
-//
+// Устарела: следует использовать аналогичную процедуру в модуле объекта отчета.
Процедура ПриЗагрузкеВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт
КонецПроцедуры
-// Вызывается в одноименном обработчике формы отчета после выполнения кода формы.
-//
-// Параметры:
-// Форма - УправляемаяФорма - Форма отчета.
-// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных -
-// Пользовательские настройки для загрузки в компоновщик настроек.
-//
-// См. также:
-// "Расширение управляемой формы для отчета.ПриЗагрузкеПользовательскихНастроекНаСервере" в синтакс-помощнике.
-//
+// Устарела: следует использовать аналогичную процедуру в модуле объекта отчета.
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, НовыеПользовательскиеНастройкиКД) Экспорт
-
-
КонецПроцедуры
-// Вызывается до перезаполнения панели быстрых настроек.
-//
-// Параметры:
-// Форма - УправляемаяФорма - Форма отчета.
-// ПараметрыЗаполнения - Структура - Параметры, которые будут загружены в отчет.
-//
+// Устарела: следует использовать аналогичную процедуру в модуле объекта отчета.
Процедура ПередЗаполнениемПанелиБыстрыхНастроек(Форма, ПараметрыЗаполнения) Экспорт
КонецПроцедуры
-// Вызывается после перезаполнения панели быстрых настроек.
-//
-// Параметры:
-// Форма - УправляемаяФорма - Форма отчета.
-// ПараметрыЗаполнения - Структура - Параметры, которые будут загружены в отчет.
-//
+// Устарела: следует использовать аналогичную процедуру в модуле объекта отчета.
Процедура ПослеЗаполненияПанелиБыстрыхНастроек(Форма, ПараметрыЗаполнения) Экспорт
КонецПроцедуры
-// Обработчик контекстного вызова сервера.
-// Позволяет выполнить контекстный вызов сервера когда это требуется из клиентского общего модуля.
-// Например, из ФормаОтчетаКлиентПереопределяемый.ОбработчикКоманды().
-//
-// Параметры:
-// Форма - УправляемаяФорма
-// Ключ - Строка - Ключ операции, которую необходимо выполнить в контекстном вызове.
-// Параметры - Структура - Параметры вызова сервера.
-// Результат - Структура - Результат работы сервера, возвращается на клиент.
-//
-// См. также:
-// ОбщаяФорма.ФормаОтчета.ВыполнитьКонтекстныйВызовСервера().
-//
+// Устарела: следует использовать аналогичную процедуру в модуле объекта отчета.
Процедура КонтекстныйВызовСервера(Форма, Ключ, Параметры, Результат) Экспорт
КонецПроцедуры
diff --git a/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl b/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl
index 85d887147..a9969f9a1 100644
--- a/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl
@@ -5,28 +5,196 @@
#Область ПрограммныйИнтерфейс
-// Формирует настройки отчета по умолчанию.
+// Настройки формы отчета по умолчанию.
//
// Возвращаемое значение:
-// Настройки - Структура - Настройки отчета.
-// * СоответствиеПериодичностиПараметров - Соответствие - Настройки полей ввода периодов.
-// ** Ключ - ПараметрКомпоновкиДанных - Параметр отчета.
-// ** Значение - ПеречислениеСсылка.ДоступныеПериодыОтчета - Доступный период.
-// * ПараметрыПечатиПоУмолчанию - Структура - Параметры печати табличного документа "по умолчанию".
+// Структура - Настройки формы отчета.
+//
+// * ФормироватьСразу - Булево - Значение по умолчанию для флажка "Формировать сразу".
+// Когда флажок включен, то отчет будет формироваться:
+// - После открытия;
+// - После выбора пользовательских настроек;
+// - После выбора другого варианта отчета.
+//
+// * ВыводитьСуммуВыделенныхЯчеек - Булево - Если Истина, то в отчете будет выводиться поле автосуммы.
+//
+// * СоответствиеПериодичностиПараметров - Соответствие - Ограничение списка выбора полей "СтандартныйПериод".
+// ** Ключ - ПараметрКомпоновкиДанных - Имя параметра отчета, к которому применятся ограничение.
+// ** Значение - ПеречислениеСсылка.ДоступныеПериодыОтчета - Ограничение периода отчета "снизу".
+//
+// * Печать - Структура - Параметры печати табличного документа "по умолчанию".
+// ** ПолеСверху - Число - Отступ сверху при печати (в миллиметрах).
+// ** ПолеСлева - Число - Отступ слева при печати (в миллиметрах).
+// ** ПолеСнизу - Число - Отступ снизу при печати (в миллиметрах).
+// ** ПолеСправа - Число - Отступ справа при печати (в миллиметрах).
+// ** ОриентацияСтраницы - ОриентацияСтраницы - "Портрет" или "Ландшафт".
+// ** АвтоМасштаб - Булево - Автоматически подгонять масштаб под размер страницы.
+// ** МасштабПечати - Число - Масштаб изображения (в процентах).
+//
+// * События - Структура - События, для которых определены обработчики в модуле объекта отчета.
+//
+// ** ПриСозданииНаСервере - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма - Форма отчета.
+// // Отказ - Передается из параметров обработчика "как есть".
+// // СтандартнаяОбработка - Передается из параметров обработчика "как есть".
+// //
+// // См. также:
+// // "УправляемаяФорма.ПриСозданииНаСервере" в синтакс-помощнике.
+// //
+// Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** ПередЗагрузкойВариантаНаСервере - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма - Форма отчета.
+// // НовыеНастройкиКД - НастройкиКомпоновкиДанных - Настройки для загрузки в компоновщик настроек.
+// //
+// // См. также:
+// // "Расширение управляемой формы для отчета.ПриЗагрузкеВариантаНаСервере" в синтакс-помощнике.
+// //
+// Процедура ПередЗагрузкойВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** ПриЗагрузкеВариантаНаСервере - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма - Форма отчета.
+// // НовыеНастройкиКД - НастройкиКомпоновкиДанных - Настройки для загрузки в компоновщик настроек.
+// //
+// // См. также:
+// // "Расширение управляемой формы для отчета.ПриЗагрузкеВариантаНаСервере" в синтакс-помощнике.
+// //
+// Процедура ПриЗагрузкеВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** ПриЗагрузкеПользовательскихНастроекНаСервере - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма - Форма отчета.
+// // НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных -
+// // Пользовательские настройки для загрузки в компоновщик настроек.
+// //
+// // См. также:
+// // "Расширение управляемой формы для отчета.ПриЗагрузкеПользовательскихНастроекНаСервере" в синтакс-помощнике.
+// //
+// Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, НовыеПользовательскиеНастройкиКД) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** ПередЗаполнениемПанелиБыстрыхНастроек - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Вызывается до перезаполнения панели настроек формы отчета.
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма - Форма отчета.
+// // ПараметрыЗаполнения - Структура - Параметры, которые будут загружены в отчет.
+// //
+// Процедура ПередЗаполнениемПанелиБыстрыхНастроек(Форма, ПараметрыЗаполнения) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** ПослеЗаполненияПанелиБыстрыхНастроек - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Вызывается после перезаполнения панели настроек формы отчета.
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма - Форма отчета.
+// // ПараметрыЗаполнения - Структура - Параметры, которые будут загружены в отчет.
+// //
+// Процедура ПослеЗаполненияПанелиБыстрыхНастроек(Форма, ПараметрыЗаполнения) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** КонтекстныйВызовСервера - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Обработчик контекстного вызова сервера.
+// // Позволяет выполнить контекстный вызов сервера когда это требуется из клиентского общего модуля.
+// // Например, из ФормаОтчетаКлиентПереопределяемый.ОбработчикКоманды().
+// //
+// // Параметры:
+// // Форма - УправляемаяФорма
+// // Ключ - Строка - Ключ операции, которую необходимо выполнить в контекстном вызове.
+// // Параметры - Структура - Параметры вызова сервера.
+// // Результат - Структура - Результат работы сервера, возвращается на клиент.
+// //
+// // См. также:
+// // ОбщаяФорма.ФормаОтчета.ВыполнитьКонтекстныйВызовСервера().
+// //
+// Процедура КонтекстныйВызовСервера(Форма, Ключ, Параметры, Результат) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** ПриОпределенииПараметровВыбора - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Вызывается в форме отчета перед выводом настройки.
+// // Подробнее - см. ФормаОтчетаПереопределяемый.ПриОпределенииПараметровВыбора()
+// //
+// Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт
+// // Обработка события.
+// КонецПроцедуры
+//
+// ** ДополнитьСвязиОбъектовМетаданных - Булево - Если Истина, то в модуле объекта отчета
+// следует определить обработчик события по шаблону:
+//
+// // Дополнительные связи настроек этого отчета.
+// // Подробнее - см. ФормаОтчетаПереопределяемый.ДополнитьСвязиОбъектовМетаданных()
+// //
+// Процедура ДополнитьСвязиОбъектовМетаданных(СвязиОбъектовМетаданных) Экспорт
+// // Обработка события.
+// КонецПроцедуры
//
Функция ПолучитьНастройкиОтчетаПоУмолчанию() Экспорт
+ Печать = Новый Структура;
+ Печать.Вставить("ПолеСверху", 10);
+ Печать.Вставить("ПолеСлева", 10);
+ Печать.Вставить("ПолеСнизу", 10);
+ Печать.Вставить("ПолеСправа", 10);
+ Печать.Вставить("ОриентацияСтраницы", ОриентацияСтраницы.Портрет);
+ Печать.Вставить("АвтоМасштаб", Истина);
+ Печать.Вставить("МасштабПечати", Неопределено);
+
+ События = Новый Структура;
+ События.Вставить("ПриСозданииНаСервере", Ложь);
+ События.Вставить("ПередЗагрузкойВариантаНаСервере", Ложь);
+ События.Вставить("ПриЗагрузкеВариантаНаСервере", Ложь);
+ События.Вставить("ПриЗагрузкеПользовательскихНастроекНаСервере", Ложь);
+ События.Вставить("ПередЗаполнениемПанелиБыстрыхНастроек", Ложь);
+ События.Вставить("ПослеЗаполненияПанелиБыстрыхНастроек", Ложь);
+ События.Вставить("КонтекстныйВызовСервера", Ложь);
+ События.Вставить("ПриОпределенииПараметровВыбора", Ложь);
+ События.Вставить("ДополнитьСвязиОбъектовМетаданных", Ложь);
Настройки = Новый Структура;
- Настройки.Вставить("СоответствиеПериодичностиПараметров", Новый Соответствие);
- Настройки.Вставить("ПараметрыПечатиПоУмолчанию", Новый Структура);
- Настройки.ПараметрыПечатиПоУмолчанию.Вставить("ПолеСверху", 10);
- Настройки.ПараметрыПечатиПоУмолчанию.Вставить("ПолеСлева", 10);
- Настройки.ПараметрыПечатиПоУмолчанию.Вставить("ПолеСнизу", 10);
- Настройки.ПараметрыПечатиПоУмолчанию.Вставить("ПолеСправа", 10);
- Настройки.ПараметрыПечатиПоУмолчанию.Вставить("ОриентацияСтраницы", ОриентацияСтраницы.Портрет);
- Настройки.ПараметрыПечатиПоУмолчанию.Вставить("АвтоМасштаб", Истина);
- Настройки.ПараметрыПечатиПоУмолчанию.Вставить("МасштабПечати", Неопределено);
+ Настройки.Вставить("ФормироватьСразу", Ложь);
Настройки.Вставить("ВыводитьСуммуВыделенныхЯчеек", Истина);
+ Настройки.Вставить("СоответствиеПериодичностиПараметров", Новый Соответствие);
+ Настройки.Вставить("Печать", Печать);
+ Настройки.Вставить("События", События);
+
+ // Устарели:
+ Настройки.Вставить("ПараметрыПечатиПоУмолчанию", Печать); // См. Настройки.Печать.
Возврат Настройки;
@@ -236,7 +404,10 @@
// Настройки - НастройкиКомпоновкиДанных - Коллекции настроек.
// ИдентификаторПользовательскойНастройки - Строка -
//
-Функция ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки, ИдентификаторПользовательскойНастройки) Экспорт
+Функция ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки, ИдентификаторПользовательскойНастройки, Иерархия = Неопределено) Экспорт
+ Если Иерархия <> Неопределено Тогда
+ Иерархия.Добавить(Настройки);
+ КонецЕсли;
ТипНастройки = ТипЗнч(Настройки);
@@ -248,19 +419,23 @@
ИначеЕсли ТипНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
- Возврат ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Настройки, ИдентификаторПользовательскойНастройки);
+ Возврат ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Настройки, ИдентификаторПользовательскойНастройки, Иерархия);
ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
ИЛИ ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных")
ИЛИ ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") Тогда
Для Каждого ВложенныйЭлемент Из Настройки Цикл
- РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(ВложенныйЭлемент, ИдентификаторПользовательскойНастройки);
+ РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(ВложенныйЭлемент, ИдентификаторПользовательскойНастройки, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
КонецЦикла;
+ Если Иерархия <> Неопределено Тогда
+ Иерархия.Удалить(Иерархия.ВГраница());
+ КонецЕсли;
+
Возврат Неопределено;
КонецЕсли;
@@ -302,37 +477,41 @@
Если ТипНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
- РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Строки, ИдентификаторПользовательскойНастройки);
+ РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Строки, ИдентификаторПользовательскойНастройки, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
- РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Колонки, ИдентификаторПользовательскойНастройки);
+ РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Колонки, ИдентификаторПользовательскойНастройки, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
ИначеЕсли ТипНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
- РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Точки, ИдентификаторПользовательскойНастройки);
+ РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Точки, ИдентификаторПользовательскойНастройки, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
- РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Серии, ИдентификаторПользовательскойНастройки);
+ РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Серии, ИдентификаторПользовательскойНастройки, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
Иначе
- РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Структура, ИдентификаторПользовательскойНастройки);
+ РезультатПоиска = ПолучитьОбъектПоПользовательскомуИдентификатору(Настройки.Структура, ИдентификаторПользовательскойНастройки, Иерархия);
Если РезультатПоиска <> Неопределено Тогда
Возврат РезультатПоиска;
КонецЕсли;
КонецЕсли;
+ Если Иерархия <> Неопределено Тогда
+ Иерархия.Удалить(Иерархия.ВГраница());
+ КонецЕсли;
+
Возврат Неопределено;
КонецФункции
diff --git a/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl
index 9f4de72df..e960d0fe0 100644
--- a/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl
+++ b/SSL/src/CommonModules/ЭлектроннаяПодпись/Module.bsl
@@ -8,19 +8,21 @@
// Удаляет записи из табличной части ЭП
//
// Параметры
-// ТаблицаВыделенныеСтроки - ТаблицаЗначений - таблица, содержащая данные - ссылка на объект и номер строки в его табличной части
-// РеквизитПодписанИзменен - Булево - возвращаемое значение - если удалена последняя подпись,
-// РеквизитПодписанИзменен примет значение Истина
-// КоличествоПодписей - Число - количество подписей в объекте после удаления
-// УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы
+// ОбъектСсылка - ЛюбаяСсылка - Объект, для которого следует удалить записи.
+// ТаблицаВыделенныеСтроки - ТаблицаЗначений - Набор строк объекта, для которых следует удалить подписи.
+// * НомерСтроки - Число - Номер строки таблицы.
+// РеквизитПодписанИзменен - Булево - (возвращаемое значение) примет значение Истина если удалена последняя подпись.
+// КоличествоПодписей - Число - Количество подписей в объекте после удаления.
+// УникальныйИдентификатор - УникальныйИдентификатор - Уникальный идентификатор формы.
+//
Процедура УдалитьПодписи(ОбъектСсылка, ТаблицаВыделенныеСтроки, РеквизитПодписанИзменен,
КоличествоПодписей, УникальныйИдентификатор = Неопределено) Экспорт
РеквизитПодписанИзменен = Ложь;
-
+
// Сортировка по убыванию номера строки - вначале будут последние строки
- ТаблицаВыделенныеСтроки.Сортировать("НомерСтроки Убыв");
-
+ ТаблицаВыделенныеСтроки.Сортировать("НомерСтроки Убыв");
+
ПодписанныйОбъект = ОбъектСсылка.ПолучитьОбъект();
ЗаблокироватьДанныеДляРедактирования(ОбъектСсылка, , УникальныйИдентификатор);
@@ -40,12 +42,12 @@
КонецПроцедуры
// Проверяет действительность подписи и корректность сертификата,
-// генерируя исключительную ситуацию в случае неудачи.
+// генерируя исключительную ситуацию в случае неудачи.
//
// Параметры:
-// МенеджерКриптографии - МенеджерКриптографии - Менеджер криптографии.
-// ДвоичныеДанныеФайла - ДвоичныеДанные - Файл для проверки.
-// ДвоичныеДанныеПодписи - ДвоичныеДанные - Подпись.
+// МенеджерКриптографии - МенеджерКриптографии - Менеджер криптографии.
+// ДвоичныеДанныеФайла - ДвоичныеДанные - Файл для проверки.
+// ДвоичныеДанныеПодписи - ДвоичныеДанные - Подпись.
//
Процедура ПроверитьПодпись(МенеджерКриптографии, ДвоичныеДанныеФайла, ДвоичныеДанныеПодписи) Экспорт
@@ -90,9 +92,8 @@
// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме.
//
// Параметры:
-// Обработчики - ТаблицаЗначений - см. описание функции НоваяТаблицаОбработчиковОбновления
-// общего модуля ОбновлениеИнформационнойБазы.
-//
+// Обработчики - ТаблицаЗначений - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления().
+//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
@@ -106,10 +107,11 @@
КонецПроцедуры
// Заполняет переименования тех объектов метаданных, которые невозможно
-// автоматически найти по типу, но ссылки на которые требуется сохранять
-// в базе данных (например: подсистемы, роли).
+// автоматически найти по типу, но ссылки на которые требуется сохранять
+// в базе данных (например: подсистемы, роли).
//
-// Подробнее: см. ОбщегоНазначения.ДобавитьПереименование().
+// См. также:
+// ОбщегоНазначения.ДобавитьПереименование().
//
Процедура ПриДобавленииПереименованийОбъектовМетаданных(Итог) Экспорт
@@ -125,11 +127,10 @@
КонецПроцедуры
-// Заполняет структуру параметров, необходимых для работы клиентского кода
-// конфигурации.
+// Определяет параметры работы клиента.
//
// Параметры:
-// Параметры - Структура - структура параметров.
+// Параметры - Структура - Все параметры работы клиента.
//
Процедура ПриДобавленииПараметровРаботыКлиентскойЛогикиСтандартныхПодсистем(Параметры) Экспорт
@@ -150,16 +151,16 @@
// Заносит информацию о подписи объекта
//
// Параметры
-// ПодписываемыйОбъектСсылка - любая ссылка / объект - в табличную часть которого будет занесена информация о ЭП
-// в случае если ссылка - будет получен объект, блокировка, запись в ИБ
-// в случае объекта за блокировку и запись отвечает вызывающий код
-// НоваяПодписьДвоичныеДанные - ДвоичныеДанные - двоичные данные подписи
-// Отпечаток - Строка - Base64 закодированная строка с отпечатком сертификата подписавшего
-// ДатаПодписи - Дата - дата подписи
-// Комментарий - Строка - комментарий подписи
-// ИмяФайлаПодписи - Строка - имя файла подписи (не пусто только в случае если подпись добавлена из файла)
-// КомуВыданСертификат - Строка - представление поля КомуВыдан сертификата
-// УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы
+// ПодписываемыйОбъектСсылка - Произвольный - Объект, в табличную часть которого будет занесена информация о ЭП.
+// - ЛюбаяСсылка - Будет получен объект, блокировка, запись в ИБ.
+// - ЛюбойОбъект - За блокировку и запись отвечает вызывающий код.
+// НоваяПодписьДвоичныеДанные - ДвоичныеДанные - Двоичные данные подписи.
+// Отпечаток - Строка - Base64 закодированная строка с отпечатком сертификата подписавшего.
+// ДатаПодписи - Дата - Дата подписи.
+// Комментарий - Строка - Комментарий подписи.
+// ИмяФайлаПодписи - Строка - Имя файла подписи (заполняется только если подпись добавлена из файла).
+// КомуВыданСертификат - Строка - Представление поля КомуВыдан сертификата.
+// УникальныйИдентификатор - УникальныйИдентификатор - Уникальный идентификатор формы.
//
Процедура ЗанестиИнформациюОПодписи(
ПодписываемыйОбъектСсылка,
@@ -181,7 +182,7 @@
Если ДатаПодписи = Дата('00010101') Тогда
ДатаПодписи = ТекущаяДатаСеанса();
- КонецЕсли;
+ КонецЕсли;
НоваяЗапись = ПодписываемыйОбъект.ЭлектронныеПодписи.Добавить();
@@ -205,13 +206,14 @@
КонецПроцедуры
-// Возвращает количество подписей у данного объекта
+// Возвращает количество подписей у данного объекта.
//
// Параметры
-// ОбъектСсылка - ЛюбаяСсылка - ссылка на объект, в табличной части которого содержатся подписи
+// ОбъектСсылка - ЛюбаяСсылка - Ссылка на объект, в табличной части которого содержатся подписи.
//
// Возвращаемое значение:
-// Число - количество подписей
+// Число - количество подписей
+//
Функция КоличествоПодписей(ОбъектСсылка) Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -222,7 +224,7 @@
|ИЗ
| ";
- Запрос.Текст = Запрос.Текст + ОбщегоНазначения.ИмяТаблицыПоСсылке(ОбъектСсылка);
+ Запрос.Текст = Запрос.Текст + ОбщегоНазначения.ИмяТаблицыПоСсылке(ОбъектСсылка);
Запрос.Текст = Запрос.Текст + ".ЭлектронныеПодписи КАК ЭлектронныеПодписи
|ГДЕ
| ЭлектронныеПодписи.Ссылка = &ОбъектСсылка";
@@ -245,16 +247,16 @@
// Возвращаемое значение:
// Структура - Персональные настройки для работы с электронной подписью.
// * ДействияПриСохраненииСЭП - Строка - Что делать при сохранении файлов с электронной подписью:
-// ** "Спрашивать" -
-// ** "СохранятьВсеПодписи" -
-// * ПутьМодуляКриптографии - Строка -
-// * РасширениеДляФайловПодписи - Строка -
-// * РасширениеДляЗашифрованныхФайлов - Строка -
-// * ОтпечатокЛичногоСертификатаДляШифрования - Строка -
+// ** "Спрашивать" - Показывать диалог выбора подписей для сохранения.
+// ** "СохранятьВсеПодписи" - Всегда все подписи.
+// * ПутьМодуляКриптографии - Строка - Путь модуля.
+// * РасширениеДляФайловПодписи - Строка - Расширение для файлов ЭП.
+// * РасширениеДляЗашифрованныхФайлов - Строка - Расширение для зашифрованных файлов.
+// * ОтпечатокЛичногоСертификатаДляШифрования - Строка - Отпечаток личного сертификата.
//
// См. также:
// ЭлектроннаяПодписьКлиентСервер.ПерсональныеНастройки() - программный интерфейс для получения.
-// ОбщаяФорма.ПерсональныеНастройкиЭП - место определения данных параметров и их текстовые описания.
+// ОбщаяФорма.ПерсональныеНастройкиЭП - место ввода данных параметров и их пользовательские представления.
//
Функция ПерсональныеНастройки(ТолькоЗначенияПоУмолчанию = Ложь) Экспорт
ПерсональныеНастройки = Новый Структура;
@@ -295,12 +297,12 @@
//
// Возвращаемое значение:
// Структура - Общие настройки подсистемы для работы с электронной подписью.
-// * ПровайдерЭП - Строка -
-// * ТипПровайдераЭП - Число -
-// * ВыполнятьПроверкуЭПНаСервере - Булево -
-// * АлгоритмПодписи - Строка -
-// * АлгоритмХеширования - Строка -
-// * АлгоритмШифрования - Строка -
+// * ПровайдерЭП - Строка - Имя провайдера ЭП.
+// * ТипПровайдераЭП - Число - Тип провайдера.
+// * ВыполнятьПроверкуЭПНаСервере - Булево - Если Истина то ЭП проверяется на сервере.
+// * АлгоритмПодписи - Строка - Имя алгоритма подписи.
+// * АлгоритмХеширования - Строка - Имя алгоритма хеширования.
+// * АлгоритмШифрования - Строка - Имя алгоритма шифрования.
//
// См. также:
// ЭлектроннаяПодписьКлиентСервер.ОбщиеНастройки() - единая точка входа.
@@ -334,12 +336,16 @@
КонецФункции
-// Преобразует назначения сертификатов в дружественный вид
+// Преобразует назначения сертификатов в дружественный вид.
+//
// Параметры
-// Назначение - Строка - назначение сертификата вида "TLS Web Client Authentication (1.3.6.1.5.5.7.3.2)"
-// НовоеНазначение - Строка - удобное для понимания назначение сертификата вида "Проверка подлинности клиента"
-// ДобавлятьКодНазначения - Булево - надо ли добавлять к назначению код назначения
-// (например 1.3.6.1.5.5.7.3.2, чтобы получилось "Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)")
+// Назначение - Строка - Имя назначения сертификата.
+// Например: "TLS Web Client Authentication (1.3.6.1.5.5.7.3.2)".
+// НовоеНазначение - Строка - Возвращаемое значение. Представление назначения сертификата.
+// Например: "Проверка подлинности клиента".
+// ДобавлятьКодНазначения - Булево - Надо ли добавлять код к представлению.
+// Если Истина то НовоеНазначение может быть таким: "Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)".
+//
Процедура ЗаполнитьНазначениеСертификата(Назначение, НовоеНазначение, ДобавлятьКодНазначения = Ложь) Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -347,7 +353,7 @@
Для Индекс = 1 По СтрЧислоСтрок(Назначение) Цикл
- Строка = СтрПолучитьСтроку(Назначение, Индекс);
+ Строка = СтрПолучитьСтроку(Назначение, Индекс);
Представление = Назначение;
Код = "";
@@ -360,45 +366,50 @@
СпрСсылка = Справочники.НазначенияСертификатовЭП.НайтиПоКоду(Код);
Если СпрСсылка <> Неопределено И НЕ СпрСсылка.Пустая() Тогда
Представление = СпрСсылка.Наименование;
- КонецЕсли;
+ КонецЕсли;
Если ДобавлятьКодНазначения Тогда
Представление = Представление + " (" + Код + ")";
КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
НовоеНазначение = НовоеНазначение + Представление;
НовоеНазначение = НовоеНазначение + Символы.ПС;
- КонецЦикла;
+ КонецЦикла;
КонецПроцедуры
-// Получает все подписи файла
+// Подписи объекта.
//
// Параметры
-// СсылкаНаОбъект - СправочникСсылка - ссылка объект, в табличной части которого содержатся подписи
-// УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы
+// СсылкаНаОбъект - СправочникСсылка - Объект, в табличной части которого содержатся подписи.
+// УникальныйИдентификатор - УникальныйИдентификатор - Уникальный идентификатор формы.
//
// Возвращаемое значение:
-// МассивВозврата - Массив - массив структур с возвращаемыми значениями
+// Массив - Подписи объекта.
+// * Структура - Подпись объекта.
+// ** АдресПодписи - Строка - Адрес подписи во временном хранилище.
+// ** КомуВыданСертификат - Строка - Кому выдан сертификат (имя, отдел и др. информация).
+// ** ИмяФайлаПодписи - Строка - Имя файла подписи (служебное поле).
//
Функция ПолучитьВсеПодписи(СсылкаНаОбъект, УникальныйИдентификатор) Экспорт
- МассивВозврата = Новый Массив;
+ Результат = Новый Массив;
//ВерсияСсылка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ФайлСсылка, "ТекущаяВерсия");
ПолноеИмяОбъектаСЭП = СсылкаНаОбъект.Метаданные().ПолноеИмя();
- ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
- | ЭлектронныеПодписи.КомуВыданСертификат КАК КомуВыданСертификат,
- | ЭлектронныеПодписи.Подпись КАК Подпись,
- | ЭлектронныеПодписи.ИмяФайлаПодписи КАК ИмяФайлаПодписи
- |ИЗ
- | [ПолноеИмяОбъектаСЭП].ЭлектронныеПодписи КАК ЭлектронныеПодписи
- |ГДЕ
- | ЭлектронныеПодписи.Ссылка = &СсылкаНаОбъект";
+ ТекстЗапроса =
+ "ВЫБРАТЬ РАЗРЕШЕННЫЕ
+ | ЭлектронныеПодписи.КомуВыданСертификат КАК КомуВыданСертификат,
+ | ЭлектронныеПодписи.Подпись КАК Подпись,
+ | ЭлектронныеПодписи.ИмяФайлаПодписи КАК ИмяФайлаПодписи
+ |ИЗ
+ | [ПолноеИмяОбъектаСЭП].ЭлектронныеПодписи КАК ЭлектронныеПодписи
+ |ГДЕ
+ | ЭлектронныеПодписи.Ссылка = &СсылкаНаОбъект";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ПолноеИмяОбъектаСЭП]", ПолноеИмяОбъектаСЭП);
@@ -409,38 +420,42 @@
ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
Пока ВыборкаЗапроса.Следующий() Цикл
+
ДвоичныеДанные = ВыборкаЗапроса.Подпись.Получить();
АдресПодписи = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
- СтруктураВозврата = Новый Структура("АдресПодписи, КомуВыданСертификат, ИмяФайлаПодписи",
- АдресПодписи,
- ВыборкаЗапроса.КомуВыданСертификат,
- ВыборкаЗапроса.ИмяФайлаПодписи);
- МассивВозврата.Добавить(СтруктураВозврата);
+
+ Подпись = Новый Структура;
+ Подпись.Вставить("АдресПодписи", АдресПодписи);
+ Подпись.Вставить("КомуВыданСертификат", ВыборкаЗапроса.КомуВыданСертификат);
+ Подпись.Вставить("ИмяФайлаПодписи", ВыборкаЗапроса.ИмяФайлаПодписи);
+
+ Результат.Добавить(Подпись);
+
КонецЦикла;
- Возврат МассивВозврата;
+ Возврат Результат;
КонецФункции
-// Возвращает структуру файла подписи
+// Извлекает сертификаты из данных подписи.
//
-// Параметры
-// Подпись - ДвоичныеДанные - файл подписи.
+// Параметры:
+// Подпись - ДвоичныеДанные - Файл подписи.
//
-// Возвращаемое значение
-// Структура:
-// Отпечаток - Строка
-// КомуВыданСертификат - Строка
-// ДвоичныеДанныеСертификата - ДвоичныеДанные
-// Подпись - ХранилищеЗначения
-// Сертификат - ХранилищеЗначения
+// Возвращаемое значение:
+// Неопределено - Если при разборе возникла ошибка.
+// Структура - Данные подписи
+// * Отпечаток - Строка
+// * КомуВыданСертификат - Строка
+// * ДвоичныеДанныеСертификата - ДвоичныеДанные
+// * Подпись - ХранилищеЗначения
+// * Сертификат - ХранилищеЗначения
//
-// При возникновении ошибок разбора подписи возвращает Неопределено.
Функция ПрочитатьДанныеПодписи(Подпись) Экспорт
Результат = Неопределено;
- МенеджерКриптографии = СоздатьМенеджерКриптографии();
+ МенеджерКриптографии = ПолучитьМенеджерКриптографии();
Если МенеджерКриптографии = Неопределено Тогда
Возврат Результат;
КонецЕсли;
@@ -465,11 +480,12 @@
Возврат Результат;
КонецФункции
-// Удаляет одну запись из табл части ЭП
+// Удаляет строку табличной части ЭП.
+//
+// Параметры:
+// ПодписываемыйОбъект - СправочникОбъект - Подписываемый объект.
+// ДанныеПодписи - Структура - Данные для поиска объекта и строки в его табличной части.
//
-// Параметры
-// ПодписываемыйОбъект - СправочникОбъект - подписываемый объект
-// ДанныеПодписи - Структура - данные для поиска объекта и строки в его табличной части
Процедура УдалитьПодпись(ПодписанныйОбъект, ДанныеПодписи)
НомерСтроки = ДанныеПодписи.НомерСтроки;
@@ -480,8 +496,8 @@
Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
Если СтрокаТабличнойЧасти.УстановившийПодпись <> Пользователи.ТекущийПользователь() Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав на удаление подписи.'");
- КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
ПодписанныйОбъект.ЭлектронныеПодписи.Удалить(СтрокаТабличнойЧасти);
Иначе
@@ -491,7 +507,7 @@
КонецПроцедуры
// Получает менеджер на основе общих настроек криптографии.
-Функция СоздатьМенеджерКриптографии()
+Функция ПолучитьМенеджерКриптографии() Экспорт
ОбщиеНастройки = ОбщиеНастройки();
@@ -499,11 +515,12 @@
Возврат Неопределено;
КонецЕсли;
+ ПровайдерЭП = ОбщиеНастройки.ПровайдерЭП;
+ ТипПровайдераЭП = ОбщиеНастройки.ТипПровайдераЭП;
+ ПутьМодуляКриптографии = ОбщиеНастройки.ПутьМодуляКриптографииСервера;
+
Попытка
- МенеджерКриптографии = Новый МенеджерКриптографии(
- ОбщиеНастройки.ПровайдерЭП,
- ОбщиеНастройки.ПутьМодуляКриптографииСервера,
- ОбщиеНастройки.ТипПровайдераЭП);
+ МенеджерКриптографии = Новый МенеджерКриптографии(ПровайдерЭП, ПутьМодуляКриптографии, ТипПровайдераЭП);
Исключение
ТекстОшибки = НСтр("ru = 'Ошибка при создании менеджера криптографии на сервере:'")
+ Символы.ПС
@@ -546,15 +563,15 @@
УстановитьПривилегированныйРежим(Истина);
МакетУдаленный = Справочники.НазначенияСертификатовЭП.ПолучитьМакет("УдалитьНазначенияСертификатов");
- ТабЗначенийУдаленный = ОбщегоНазначения.ПрочитатьXMLВТаблицу(МакетУдаленный.ПолучитьТекст()).Данные;
+ ТаблицаЗначенийУдаленный = ОбщегоНазначения.ПрочитатьXMLВТаблицу(МакетУдаленный.ПолучитьТекст()).Данные;
Макет = Справочники.НазначенияСертификатовЭП.ПолучитьМакет("НазначенияСертификатов");
- ТабЗначений = ОбщегоНазначения.ПрочитатьXMLВТаблицу(Макет.ПолучитьТекст()).Данные;
+ ТаблицаЗначений = ОбщегоНазначения.ПрочитатьXMLВТаблицу(Макет.ПолучитьТекст()).Данные;
НачатьТранзакцию();
Попытка
- Для Каждого Запись Из ТабЗначенийУдаленный Цикл
+ Для Каждого Запись Из ТаблицаЗначенийУдаленный Цикл
СпрСсылка = Справочники.НазначенияСертификатовЭП.НайтиПоКоду(Запись.Code);
Если СпрСсылка <> Неопределено И НЕ СпрСсылка.Пустая() Тогда
@@ -566,7 +583,7 @@
КонецЦикла;
- Для Каждого Запись Из ТабЗначений Цикл
+ Для Каждого Запись Из ТаблицаЗначений Цикл
СпрСсылка = Справочники.НазначенияСертификатовЭП.НайтиПоКоду(Запись.Code);
Если СпрСсылка = Неопределено ИЛИ СпрСсылка.Пустая() Тогда
@@ -591,12 +608,12 @@
УстановитьПривилегированныйРежим(Истина);
Макет = Справочники.НазначенияСертификатовЭП.ПолучитьМакет("НазначенияСертификатов");
- ТабЗначений = ОбщегоНазначения.ПрочитатьXMLВТаблицу(Макет.ПолучитьТекст()).Данные;
+ ТаблицаЗначений = ОбщегоНазначения.ПрочитатьXMLВТаблицу(Макет.ПолучитьТекст()).Данные;
НачатьТранзакцию();
Попытка
- Для Каждого Запись Из ТабЗначений Цикл
+ Для Каждого Запись Из ТаблицаЗначений Цикл
СпрСсылка = Справочники.НазначенияСертификатовЭП.НайтиПоКоду(Запись.Code);
Если СпрСсылка = Неопределено ИЛИ СпрСсылка.Пустая() Тогда
@@ -614,6 +631,6 @@
ВызватьИсключение;
КонецПопытки;
-КонецПроцедуры
+КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl
index 78ff72031..78b6fe2c8 100644
--- a/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl
+++ b/SSL/src/CommonModules/ЭлектроннаяПодписьКлиент/Module.bsl
@@ -5,16 +5,17 @@
#Область ПрограммныйИнтерфейс
-// Формирует данные подписи объекта
+// Данные подписи объекта.
//
-// Параметры
-// МенеджерКриптографии - МенеджерКриптографии - менеджер криптографии
-// ОбъектДляПодписиСсылка - любая ссылка - ссылка на подписываемый объект
-// ДвоичныеДанные - ДвоичныеДанные - двоичные данные подписи
-// СтруктураПараметровПодписи - Структура - информация о подписи - выбранный сертификат, пароль, комментарий
+// Параметры:
+// МенеджерКриптографии - МенеджерКриптографии - менеджер криптографии
+// ОбъектДляПодписиСсылка - ЛюбаяСсылка - Подписываемый объект.
+// ДвоичныеДанные - ДвоичныеДанные - двоичные данные подписи
+// СтруктураПараметровПодписи - Структура - информация о подписи - выбранный сертификат, пароль, комментарий
//
// Возвращаемое значение:
-// Структура - данные для занесения в табличную часть ЭП
+// Структура - Данные подписи для записи в табличную часть.
+//
Функция СформироватьДанныеПодписи(
МенеджерКриптографии,
ОбъектДляПодписиСсылка,
@@ -30,27 +31,28 @@
КомуВыданСертификат = ЭлектроннаяПодписьКлиентСервер.ПолучитьПредставлениеПользователя(СтруктураПараметровПодписи.Сертификат.Субъект);
ДвоичныеДанныеСертификата = СтруктураПараметровПодписи.Сертификат.Выгрузить();
- ДанныеПодписи = Новый Структура("ОбъектСсылка, НоваяПодписьДвоичныеДанные, Отпечаток, ДатаПодписи, Комментарий, ИмяФайлаПодписи, КомуВыданСертификат, АдресФайла, ДвоичныеДанныеСертификата",
- ОбъектДляПодписиСсылка,
- НоваяПодписьДвоичныеДанные,
- Отпечаток,
- ДатаПодписи,
- СтруктураПараметровПодписи.Комментарий,
- "", // ИмяФайлаПодписи
- КомуВыданСертификат,
- "", // АдресФайла
- ДвоичныеДанныеСертификата);
-
+ ДанныеПодписи = Новый Структура;
+ ДанныеПодписи.Вставить("ОбъектСсылка", ОбъектДляПодписиСсылка);
+ ДанныеПодписи.Вставить("НоваяПодписьДвоичныеДанные", НоваяПодписьДвоичныеДанные);
+ ДанныеПодписи.Вставить("Отпечаток", Отпечаток);
+ ДанныеПодписи.Вставить("ДатаПодписи", ДатаПодписи);
+ ДанныеПодписи.Вставить("Комментарий", СтруктураПараметровПодписи.Комментарий);
+ ДанныеПодписи.Вставить("ИмяФайлаПодписи", "");
+ ДанныеПодписи.Вставить("КомуВыданСертификат", КомуВыданСертификат);
+ ДанныеПодписи.Вставить("АдресФайла", "");
+ ДанныеПодписи.Вставить("ДвоичныеДанныеСертификата", ДвоичныеДанныеСертификата);
+
Возврат ДанныеПодписи;
КонецФункции
-// Проверяет подпись. В случае ошибки бросает исключение
+// Проверяет подпись. В случае ошибки бросает исключение.
+//
+// Параметры:
+// МенеджерКриптографии - МенеджерКриптографии - Менеджер криптографии.
+// ДвоичныеДанныеФайла - Двоичные данные файла.
+// ДвоичныеДанныеПодписи - Двоичные данные подписи.
//
-// Параметры
-// МенеджерКриптографии - МенеджерКриптографии - менеджер криптографии
-// ДвоичныеДанныеФайла - двоичные данные файла
-// ДвоичныеДанныеПодписи - двоичные данные подписи
Процедура ПроверитьПодпись(МенеджерКриптографии, ДвоичныеДанныеФайла, ДвоичныеДанныеПодписи) Экспорт
Сертификат = Неопределено;
@@ -83,11 +85,10 @@
// ТекстВопроса - Строка - Текст вопроса.
// ЗаголовокВопроса - Строка - Заголовок вопроса.
//
-// Значение первого параметра, возвращаемого в обработчик вызывающего кода:
-// РасширениеУстановлено
-// * Истина - Пользователь подтвердил установку, после установки расширение было успешно подключено.
-// * Ложь - Пользователь подтвердил установку, однако после установки расширение не удалось подключить.
-// * Неопределено - Пользователь отказался от установки.
+// Возвращаемое значение:
+// Истина - Пользователь подтвердил установку, после установки расширение было успешно подключено.
+// Ложь - Пользователь подтвердил установку, однако после установки расширение не удалось подключить.
+// Неопределено - Пользователь отказался от установки.
//
Процедура УстановитьРасширение(ОбработчикРезультата, ТекстВопроса = "", ЗаголовокВопроса = "") Экспорт
@@ -124,8 +125,9 @@
// По окончании подписания нотифицирует о подписании
//
-// Параметры
-// ОбъектСсылка - любая ссылка - объект, в табличную часть которого будет занесена информация о ЭП
+// Параметры:
+// ОбъектСсылка - ЛюбаяСсылка - Объект, в табличную часть которого будет занесена информация о ЭП.
+//
Процедура ИнформироватьОПодписанииОбъекта(ОбъектСсылка) Экспорт
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -140,14 +142,15 @@
#Область СлужебныеПроцедурыИФункции
-// Находит сертификат по строке отпечатка
+// Находит сертификат по строке отпечатка.
//
// Параметры
-// Отпечаток - Строка - base64 кодированный отпечаток сертификата
-// ТолькоВЛичномХранилище - Булево - вести поиск только в личном хранилище
+// Отпечаток - Строка - Base64 кодированный отпечаток сертификата.
+// ТолькоВЛичномХранилище - Булево - Если Истина, то поиск производится только в личном хранилище.
//
// Возвращаемое значение:
-// СертификатКриптографии - сертификат криптографии
+// СертификатКриптографии - Сертификат криптографии.
+//
Функция ПолучитьСертификатПоОтпечатку(Отпечаток, ТолькоВЛичномХранилище = Ложь) Экспорт
ДвоичныеДанныеОтпечатка = Base64Значение(Отпечаток);
@@ -171,13 +174,14 @@
КонецФункции
-// Заполняет структуру полями сертификата
+// Заполняет структуру полями сертификата.
//
// Параметры
-// Отпечаток - Строка - base64 кодированный отпечаток сертификата
+// Отпечаток - Строка - Base64 кодированный отпечаток сертификата.
//
// Возвращаемое значение:
-// Структура - структура с полями сертификата
+// Структура - Структура с полями сертификата.
+//
Функция ЗаполнитьСтруктуруСертификатаПоОтпечатку(Отпечаток) Экспорт
ДвоичныеДанныеОтпечатка = Base64Значение(Отпечаток);
@@ -198,15 +202,16 @@
Возврат ЭлектроннаяПодписьКлиентСервер.ЗаполнитьСтруктуруСертификата(Сертификат);
-КонецФункции
+КонецФункции
-// Получает массив структур сертификатов для показа в диалоге выбора сертификатов для подписи или шифрования
+// Получает массив структур сертификатов для показа в диалоге выбора сертификатов для подписи или шифрования.
//
// Параметры
-// ТолькоЛичные - Булево - если Ложь, то берутся также и сертификаты получателей
+// ТолькоЛичные - Булево - Если Ложь, то берутся также и сертификаты получателей.
//
// Возвращаемое значение:
-// Массив - массив структур с полями сертификата
+// Массив - массив структур с полями сертификата
+//
Функция ПолучитьМассивСтруктурСертификатов(Знач ТолькоЛичные) Экспорт
МассивСтруктурСертификатов = Новый Массив;
@@ -265,12 +270,13 @@
Возврат МассивСтруктурСертификатов;
-КонецФункции
+КонецФункции
-// Создает на клиенте менеджер криптографии. Пароль не устанавливается
+// Создает на клиенте менеджер криптографии. Пароль не устанавливается.
//
// Возвращаемое значение:
-// МенеджерКриптографии - менеджер криптографии
+// МенеджерКриптографии - менеджер криптографии
+//
Функция ПолучитьМенеджерКриптографии(Отказ = Ложь) Экспорт
Если НЕ ПодключитьРасширениеРаботыСКриптографией() Тогда
@@ -301,10 +307,10 @@
КонецФункции
-// Открывает форму просмотра сертификата ЭП
+// Открывает форму просмотра сертификата ЭП.
//
// Параметры
-// Отпечаток - Строка - отпечаток сертификата ЭП
+// Отпечаток - Строка - Отпечаток сертификата ЭП.
//
Процедура ОткрытьСертификат(Отпечаток) Экспорт
@@ -320,12 +326,12 @@
КонецПроцедуры
-// Открывает форму просмотра сертификата ЭП
+// Открывает форму просмотра сертификата ЭП.
//
// Параметры
-// СтруктураСертификата - Структура с полями сертификата
-// Отпечаток - Строка - отпечаток сертификата ЭП
-// АдресСертификата - Строка - адрес сертификата во временном хранилище
+// СтруктураСертификата - Структура с полями сертификата.
+// Отпечаток - Строка - Отпечаток сертификата ЭП.
+// АдресСертификата - Строка - Адрес сертификата во временном хранилище.
//
Процедура ОткрытьСертификатСоСтруктурой(СтруктураСертификата, Отпечаток, АдресСертификата) Экспорт
@@ -341,7 +347,7 @@
КонецПроцедуры
-// Открывает форму просмотра сертификата ЭП
+// Открывает форму просмотра сертификата ЭП.
Процедура ОткрытьСертификатПоОтпечаткуИАдресу(Отпечаток, АдресСертификата) Экспорт
Если ОбщегоНазначенияКлиентПовтИсп.ЭтоВебКлиентПодMacOS() Тогда
@@ -367,7 +373,7 @@
КонецПроцедуры
-// Открывает форму просмотра подписи ЭП
+// Открывает форму просмотра подписи ЭП.
Процедура ОткрытьПодпись(ТекущиеДанные) Экспорт
Если ТекущиеДанные = Неопределено Тогда
@@ -415,13 +421,13 @@
КонецПроцедуры
-// "Сохранить как" вместе с подписями - все или выбранные
+// "Сохранить как" вместе с подписями - все или выбранные.
//
// Параметры
-// ФайлСсылка - СправочникСсылка - объект, в табличной части которого содержатся подписи
-// ПолноеИмяФайла - Строка - полное имя с путем, под которым сохранен файл
-// УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы
-// МассивСтруктурПодписей - Массив - массив структур подписей. Если Неопределено - сохраняем все подписи
+// ФайлСсылка - СправочникСсылка - Объект, в табличной части которого содержатся подписи.
+// ПолноеИмяФайла - Строка - Полное имя с путем, под которым сохранен файл.
+// УникальныйИдентификатор - УникальныйИдентификатор - Уникальный идентификатор формы.
+// МассивСтруктурПодписей - Массив - массив структур подписей. Если Неопределено - сохраняем все подписи.
//
Процедура СохранитьПодписи(ФайлСсылка, ПолноеИмяФайла, УникальныйИдентификатор, МассивСтруктурПодписей) Экспорт
@@ -496,13 +502,14 @@
КонецПроцедуры
-// Добавляет ЭП из файла (файлов)
+// Добавляет ЭП из файла (файлов).
//
// Параметры
-// ФайлСсылка - любая ссылка - объект, в табличную часть которого будет занесена информация о ЭП
-// МассивФайловПодписей - Массив структур - массив структур (ПутьКФайлу, Комментарий)
-// УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы
-// ВладелецФайла - любая ссылка - значение реквизита ВладелецФайла у ФайлСсылка
+// ФайлСсылка - ЛюбаяСсылка - Объект, в табличную часть которого будет занесена информация о ЭП.
+// МассивФайловПодписей - Массив - Массив структур (ПутьКФайлу, Комментарий).
+// УникальныйИдентификатор - УникальныйИдентификатор - Уникальный идентификатор формы.
+// ВладелецФайла - ЛюбаяСсылка - значение реквизита ВладелецФайла у ФайлСсылка.
+//
Функция СформироватьПодписиДляЗанесениюВБазу(ФайлСсылка, МассивФайловПодписей, УникальныйИдентификатор = Неопределено) Экспорт
МассивДанныхДляЗанесенияВБазу = Новый Массив;
diff --git a/SSL/src/CommonModules/ЭлектроннаяПодписьКлиентСервер/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПодписьКлиентСервер/Module.bsl
index 082809711..6be0051f4 100644
--- a/SSL/src/CommonModules/ЭлектроннаяПодписьКлиентСервер/Module.bsl
+++ b/SSL/src/CommonModules/ЭлектроннаяПодписьКлиентСервер/Module.bsl
@@ -7,8 +7,8 @@
// Получает представление поля КомуВыдан или КемВыдан сертификата.
//
-// Параметры
-// СтруктураПользователя - Структура - структура поля КомуВыдан или КемВыдан сертификата.
+// Параметры:
+// СтруктураПользователя - Структура - Структура поля КомуВыдан или КемВыдан сертификата.
//
// Возвращаемое значение:
// Строка - Представление поля.
@@ -57,7 +57,7 @@
// Заполняет структуру полями сертификата.
//
-// Параметры
+// Параметры:
// Сертификат - СертификатКриптографии - Сертификат криптографии.
//
// Возвращаемое значение:
@@ -91,15 +91,15 @@
// Возвращаемое значение:
// Структура - Персональные настройки для работы с электронной подписью.
// * ДействияПриСохраненииСЭП - Строка - Что делать при сохранении файлов с электронной подписью:
-// ** "Спрашивать" -
-// ** "СохранятьВсеПодписи" -
-// * ПутьМодуляКриптографии - Строка -
-// * РасширениеДляФайловПодписи - Строка -
-// * РасширениеДляЗашифрованныхФайлов - Строка -
-// * ОтпечатокЛичногоСертификатаДляШифрования - Строка -
+// ** "Спрашивать" - Показывать диалог выбора подписей для сохранения.
+// ** "СохранятьВсеПодписи" - Всегда все подписи.
+// * ПутьМодуляКриптографии - Строка - Путь модуля.
+// * РасширениеДляФайловПодписи - Строка - Расширение для файлов ЭП.
+// * РасширениеДляЗашифрованныхФайлов - Строка - Расширение для зашифрованных файлов.
+// * ОтпечатокЛичногоСертификатаДляШифрования - Строка - Отпечаток личного сертификата.
//
// См. также:
-// ОбщаяФорма.ПерсональныеНастройкиЭП - место определения данных параметров и их текстовые описания.
+// ОбщаяФорма.ПерсональныеНастройкиЭП - место ввода данных параметров и их пользовательские представления.
//
Функция ПерсональныеНастройки() Экспорт
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
@@ -115,8 +115,8 @@
// Получает назначение сертификата.
//
-// Параметры
-// ФиксированныйМассивСвойств - ФиксированныйМассив - массив расширенных свойств сертификата (EKU).
+// Параметры:
+// ФиксированныйМассивСвойств - ФиксированныйМассив - массив расширенных свойств сертификата (EKU).
//
Функция ПолучитьНазначение(ФиксированныйМассивСвойств)
diff --git a/SSL/src/CommonPictures/Переключатель/Picture.png b/SSL/src/CommonPictures/Переключатель/Picture.png
deleted file mode 100644
index 5d8d7a20d..000000000
Binary files a/SSL/src/CommonPictures/Переключатель/Picture.png and /dev/null differ
diff --git a/SSL/src/CommonPictures/ПодписанЗашифрованЗаголовок/Picture.png b/SSL/src/CommonPictures/ПодписанЗашифрованЗаголовок/Picture.png
new file mode 100644
index 000000000..769347c09
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..2ff814f66
--- /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..17b0afa95
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..4816cf3d5
--- /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..74df1b4b7
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..64d66d4fc
--- /dev/null
+++ b/SSL/src/CommonPictures/РазделАдминистрирование/РазделАдминистрирование.mdo
@@ -0,0 +1,8 @@
+
+
+ РазделАдминистрирование
+
+ ru
+ Раздел "Администрирование"
+
+
diff --git a/SSL/src/CommonPictures/Администрирование48/Picture.png b/SSL/src/CommonPictures/РазделАдминистрирование48/Picture.png
similarity index 100%
rename from SSL/src/CommonPictures/Администрирование48/Picture.png
rename to SSL/src/CommonPictures/РазделАдминистрирование48/Picture.png
diff --git a/SSL/src/CommonPictures/Администрирование48/Администрирование48.mdo b/SSL/src/CommonPictures/РазделАдминистрирование48/РазделАдминистрирование48.mdo
similarity index 60%
rename from SSL/src/CommonPictures/Администрирование48/Администрирование48.mdo
rename to SSL/src/CommonPictures/РазделАдминистрирование48/РазделАдминистрирование48.mdo
index 250160fdd..e82f9121e 100644
--- a/SSL/src/CommonPictures/Администрирование48/Администрирование48.mdo
+++ b/SSL/src/CommonPictures/РазделАдминистрирование48/РазделАдминистрирование48.mdo
@@ -1,8 +1,8 @@
- Администрирование48
+ РазделАдминистрирование48ru
- Администрирование
+ Раздел "Администрирование" (48x48)
diff --git a/SSL/src/CommonPictures/СтрелкаВверх/Picture.png b/SSL/src/CommonPictures/СтрелкаВверх/Picture.png
new file mode 100644
index 000000000..5d23cd7f5
Binary files /dev/null and b/SSL/src/CommonPictures/СтрелкаВверх/Picture.png differ
diff --git a/SSL/src/CommonPictures/Переключатель/Переключатель.mdo b/SSL/src/CommonPictures/СтрелкаВверх/СтрелкаВверх.mdo
similarity index 53%
rename from SSL/src/CommonPictures/Переключатель/Переключатель.mdo
rename to SSL/src/CommonPictures/СтрелкаВверх/СтрелкаВверх.mdo
index 180c1f1e9..91b94290c 100644
--- a/SSL/src/CommonPictures/Переключатель/Переключатель.mdo
+++ b/SSL/src/CommonPictures/СтрелкаВверх/СтрелкаВверх.mdo
@@ -1,8 +1,8 @@
-
- Переключатель
+
+ СтрелкаВверхru
- Переключатель
+ Стрелка вверх
diff --git a/SSL/src/CommonPictures/СтрелкаВлево/Picture.png b/SSL/src/CommonPictures/СтрелкаВлево/Picture.png
new file mode 100644
index 000000000..58e0e3253
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..74ffa685e
--- /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..fa7913a7d
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..dabb9aeb9
--- /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..1de77cd2d
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..f1c9dd38a
--- /dev/null
+++ b/SSL/src/CommonPictures/СтрелкаВправо/СтрелкаВправо.mdo
@@ -0,0 +1,8 @@
+
+
+ СтрелкаВправо
+
+ ru
+ Стрелка вправо
+
+
diff --git a/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html b/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html
index eeb941bd9..061baa131 100644
--- a/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html
+++ b/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html
@@ -1,4 +1,4 @@
-
+
Установка обновления конфигурации
Для установки обновления конфигурации необходимо выполнить следующие действия:
diff --git a/SSL/src/CommonTemplates/КомпонентаПечатиQRКода/Template.bin b/SSL/src/CommonTemplates/КомпонентаПечатиQRКода/Template.bin
index 7ea5f9337..e6acd9f9c 100644
Binary files a/SSL/src/CommonTemplates/КомпонентаПечатиQRКода/Template.bin and b/SSL/src/CommonTemplates/КомпонентаПечатиQRКода/Template.bin differ
diff --git a/SSL/src/Configuration/Configuration.mdo b/SSL/src/Configuration/Configuration.mdo
index b47cb6b31..f194c79cf 100644
--- a/SSL/src/Configuration/Configuration.mdo
+++ b/SSL/src/Configuration/Configuration.mdo
@@ -1,24 +1,24 @@
-
+БиблиотекаСтандартныхПодсистемruБиблиотека стандартных подсистем, редакция 2.2
-
-
-
-
-
-
-
+
+
+
+
+
+
+ ManagedApplicationPersonalComputerRussianRole.ПолныеПраваRole.АдминистраторСистемыФирма "1С"
- 2.2.2.48
+ 2.2.3.44http://downloads.v8.1c.ru/tmplts/true
@@ -31,6 +31,7 @@
OpenDataInDialogs
+ Language.Русскийru
@@ -53,7 +54,7 @@
ManagedNotAutoFreeUseWithWarnings
- Version8_2EnableTaxi
+ TaxiEnableVersion8_28.3.4Русский
@@ -74,10 +75,12 @@
StyleItem.ВидимыйВариантОтчетаЦветStyleItem.ВыполненнаяЗадачаStyleItem.ГруппаВариантовОтчетовЦвет
+ StyleItem.ГруппаВариантовОтчетовЦвет82StyleItem.ДатаГрафикаИзмененнаяФонStyleItem.ДобавленныйРеквизитФонStyleItem.ЗаблокированныйРеквизитЦветStyleItem.ЗавершенныйБизнесПроцесс
+ StyleItem.ЗаголовокДелаЦветStyleItem.ЗаголовокУдаленногоРеквизитаФонStyleItem.ЗапрещенноеПравоДоступаStyleItem.ИзмененноеЗначениеРеквизитаФон
@@ -93,6 +96,7 @@
StyleItem.ПоясняющийОшибкуТекстStyleItem.ПоясняющийТекстStyleItem.ПросроченныеДанныеЦвет
+ StyleItem.РезультатУспехЦветStyleItem.РольБезИсполнителейStyleItem.СкрытыйВариантОтчетаЦветStyleItem.СобытиеОтказ
@@ -102,7 +106,6 @@
StyleItem.ФайлЗанятыйДругимПользователемStyleItem.ФайлЗанятыйТекущимПользователемStyleItem.ФонУправляющегоПоля
- CommonPicture.Администрирование48CommonPicture.АрхивАнкетаCommonPicture.БыстрыеНастройкиОтчетаCommonPicture.БыстрыйДоступ
@@ -224,13 +227,14 @@
CommonPicture.ПапкаCommonPicture.ПапкиCommonPicture.ПапкиЭлектронныхПисем
- CommonPicture.ПереключательCommonPicture.ПереместитьВЗакладкиВзаимодействияCommonPicture.ПереместитьВПапкуПисемCommonPicture.ПереслатьЭлектронноеПисьмоCommonPicture.ПиктограммыПланОбменаУзелCommonPicture.ПиктограммыЭлементовCommonPicture.Подменю
+ CommonPicture.ПодписанЗашифрованЗаголовок
+ CommonPicture.ПодписанЗашифрованСостоянияCommonPicture.ПодписанЭПCommonPicture.ПодсистемаCommonPicture.Подчеркивание
@@ -250,6 +254,8 @@
CommonPicture.ПримечаниеЖурналаРегистрацииCommonPicture.ПрочиеПользовательскиеНастройкиCommonPicture.РабочийКаталогПоУмолчанию
+ CommonPicture.РазделАдминистрирование
+ CommonPicture.РазделАдминистрирование48CommonPicture.РазорватьСоединениеCommonPicture.РазрешитьРедактированиеРеквизитовОбъектаCommonPicture.Рассчитать
@@ -295,7 +301,11 @@
CommonPicture.СправкаПереходВнизCommonPicture.СтатусыДокументаCommonPicture.СтатусыСопоставленияОбъектов
+ CommonPicture.СтрелкаВверх
+ CommonPicture.СтрелкаВлево
+ CommonPicture.СтрелкаВнизCommonPicture.СтрелкаВнизСправка
+ CommonPicture.СтрелкаВправоCommonPicture.СуммаCommonPicture.ТелефонныйЗвонокCommonPicture.ТипыМакетов
@@ -334,9 +344,9 @@
SessionParameter.ВыполняетсяОбновлениеИБSessionParameter.ДатаОбновленияПовторноИспользуемыхЗначенийМРОSessionParameter.ИдентификаторыТаблицСОтдельнымиНастройкамиПрав
- SessionParameter.ИспользуемыеПланыОбменаSessionParameter.ОбластьДанныхЗначениеSessionParameter.ОбластьДанныхИспользование
+ SessionParameter.ОшибкаРасхожденияВерсийПриПолученииДанныхSessionParameter.ПараметрыКлиентаНаСервереSessionParameter.ПаролиСинхронизацииДанныхSessionParameter.ПравилаВыборочнойРегистрацииОбъектов
@@ -385,6 +395,7 @@
Role.ИспользованиеЗаметокRole.ИспользованиеНапоминанийRole.ИспользованиеСтруктурыПодчиненности
+ Role.ИспользованиеТекущихДелRole.ИспользованиеУчетныхЗаписейЭлектроннойПочтыRole.ИспользованиеЭПRole.НастройкаИОценкаПроизводительности
@@ -409,6 +420,7 @@
Role.ЧтениеЗаданийRole.ЧтениеЗадачRole.ЧтениеИнформацииОВерсияхОбъектов
+ Role.ЧтениеОбщейБазовойНСИRole.ЧтениеОтветовНаВопросыАнкетCommonTemplate.ИнструкцияКакВыполнитьУстановкуОбновленияВручнуюCommonTemplate.КомпонентаTWAIN
@@ -421,6 +433,7 @@
CommonModule.АвтономнаяРаботаCommonModule.АвтономнаяРаботаСлужебныйCommonModule.АвтономнаяРаботаСлужебныйВызовСервера
+ CommonModule.АвтономнаяРаботаСлужебныйКлиентCommonModule.АдминистрированиеКластераCOMКлиентСерверCommonModule.АдминистрированиеКластераRASКлиентСерверCommonModule.АдминистрированиеКластераКлиентСервер
@@ -437,6 +450,7 @@
CommonModule.БизнесПроцессыИЗадачиВызовСервераCommonModule.БизнесПроцессыИЗадачиКлиентCommonModule.БизнесПроцессыИЗадачиКлиентПереопределяемый
+ CommonModule.БизнесПроцессыИЗадачиКлиентСерверCommonModule.БизнесПроцессыИЗадачиПереопределяемыйCommonModule.БизнесПроцессыИЗадачиСерверCommonModule.БизнесПроцессыИЗадачиСобытия
@@ -462,8 +476,8 @@
CommonModule.ГрупповоеИзменениеОбъектовКлиентCommonModule.ДатыЗапретаИзмененияCommonModule.ДатыЗапретаИзмененияПереопределяемый
- CommonModule.ДатыЗапретаИзмененияПовтИспCommonModule.ДатыЗапретаИзмененияСлужебный
+ CommonModule.ДатыЗапретаИзмененияСлужебныйПовтИспCommonModule.ДлительныеОперацииCommonModule.ДлительныеОперацииКлиентCommonModule.ДлительныеОперацииКлиентПовтИсп
@@ -483,10 +497,12 @@
CommonModule.ЖурналРегистрацииCommonModule.ЖурналРегистрацииВызовСервераCommonModule.ЖурналРегистрацииКлиент
+ CommonModule.ЗагрузкаДанныхИзФайлаКлиентCommonModule.ЗаметкиПользователяCommonModule.ЗаметкиПользователяСлужебныйCommonModule.ЗапретРедактированияРеквизитовОбъектовCommonModule.ЗапретРедактированияРеквизитовОбъектовКлиент
+ CommonModule.ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиентCommonModule.ЗащитаПерсональныхДанныхCommonModule.ЗащитаПерсональныхДанныхКлиентCommonModule.ЗащитаПерсональныхДанныхПереопределяемый
@@ -495,6 +511,7 @@
CommonModule.ИнтерфейсыСообщенийВМоделиСервисаПереопределяемыйCommonModule.ИнформацияПриЗапускеCommonModule.ИнформацияПриЗапускеКлиент
+ CommonModule.ИнформацияПриЗапускеПереопределяемыйCommonModule.КалендарныеГрафикиCommonModule.КалендарныеГрафикиПереопределяемыйCommonModule.КалендарныеГрафикиСлужебныйВМоделиСервиса
@@ -522,7 +539,6 @@
CommonModule.НастройкаПорядкаЭлементовСлужебныйВызовСервераCommonModule.НастройкаРазрешенийНаИспользованиеВнешнихРесурсовГлобальныйCommonModule.НастройкаРазрешенийНаИспользованиеВнешнихРесурсовКлиент
- CommonModule.НастройкиПользователейКлиентCommonModule.ОбменДаннымиВМоделиСервисаCommonModule.ОбменДаннымиВМоделиСервисаКлиентCommonModule.ОбменДаннымиВМоделиСервисаПереопределяемый
@@ -716,6 +732,9 @@
CommonModule.СтандартныеПодсистемыСерверCommonModule.СтроковыеФункцииКлиентСерверCommonModule.СтруктураПодчиненностиПереопределяемый
+ CommonModule.ТекущиеДелаПереопределяемый
+ CommonModule.ТекущиеДелаСлужебный
+ CommonModule.ТекущиеДелаСлужебныйПовтИспCommonModule.ТрансляцияXDTOCommonModule.ТрансляцияXDTOПереопределяемыйCommonModule.ТрансляцияXDTOСлужебный
@@ -821,11 +840,14 @@
EventSubscription.ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействияEventSubscription.ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействияEventSubscription.ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия
+ EventSubscription.ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданныхEventSubscription.ЗаписатьВерсиюПриОбменеДаннымиEventSubscription.ЗаписатьВСписокБизнесПроцессовEventSubscription.ЗаписатьЗависимыеНаборыЗначенийДоступаEventSubscription.ЗаписатьНаборыЗначенийДоступаEventSubscription.ЗаполнитьКонтактнуюИнформацию
+ EventSubscription.ЗапретитьПометкуУдаленияПредопределенныхЭлементов
+ EventSubscription.ЗапретитьУдалениеПредопределенныхЭлементовEventSubscription.ЗарегистрироватьИзмененияОбщихДанныхУзловEventSubscription.ЗарегистрироватьИзмененияФильтровОграниченияМиграцииДанныхEventSubscription.КонтрольНеразделенныхНаборовЗаписейПриЗаписи
@@ -838,6 +860,10 @@
EventSubscription.ОтменитьОтправкуДанныхУзлаВРаспределеннойИнформационнойБазеEventSubscription.ОчиститьСсылкиНаУзелИнформационнойБазыEventSubscription.ПереопределитьПолучаемуюФормуПрисоединенногоФайлаВзаимодействия
+ EventSubscription.ПолучениеПолейПредставленияВзамоимодействия
+ EventSubscription.ПолучениеПредставленияВзаимодействия
+ EventSubscription.ПолучитьПоляПредставленияБизнесПроцесса
+ EventSubscription.ПолучитьПредставлениеБизнесПроцессаEventSubscription.ПослеОтправкиДанныхEventSubscription.ПослеПолученияДанныхEventSubscription.ПриОтправкеДанныхГлавному
@@ -870,6 +896,7 @@
ScheduledJob.ОтложенноеОбновлениеИБScheduledJob.ОтправкаSMSScheduledJob.ОтправкаИПолучениеСообщенийСистемы
+ ScheduledJob.ОчисткаУстаревшихВерсийОбъектовScheduledJob.ПерестроениеАгрегатовScheduledJob.ПересчетТекущихЗначенийОтносительныхДатЗапретаИзмененияScheduledJob.ПланированиеИзвлеченияТекстаВМоделиСервиса
@@ -948,6 +975,8 @@
CommonCommand.ВыполнитьОбменДаннымиCommonCommand.ВыполнитьОбменДаннымиИнтерактивноCommonCommand.ДобавитьПользователейСервиса
+ CommonCommand.ДополнительныеОбработкиАдминистрирование
+ CommonCommand.ДополнительныеОтчетыАдминистрированиеCommonCommand.ДополнительныеПечатныеФормыОбъектаCommonCommand.ДополнительныеСведенияКоманднаяПанельCommonCommand.ДополнительныеСведенияПанельНавигации
@@ -967,6 +996,7 @@
CommonCommand.ОткрытьОбменыДаннымиCommonCommand.ОткрытьПравилаКонвертацииОбъектовCommonCommand.ОткрытьПравилаРегистрацииОбъектов
+ CommonCommand.ОткрытьПравилаСинхронизацииДанныхCommonCommand.ОткрытьРезультатыОбменаДаннымиCommonCommand.ОткрытьСценарииОбменовДаннымиCommonCommand.ОтчетыОбъекта
@@ -1076,7 +1106,6 @@
Constant.ОтправлятьПисьмаВФорматеHTMLConstant.ОценкаПроизводительностиПериодЗаписиConstant.ПараметрыАдминистрированияИБ
- Constant.ПараметрыБазовойФункциональностиConstant.ПараметрыВариантовОтчетовConstant.ПараметрыДополнительныхРеквизитовИСведенийConstant.ПараметрыИтоговИАгрегатов
@@ -1117,6 +1146,7 @@
CommonForm.АвтономнаяРаботаВМоделиСервисаCommonForm.АдреснаяКнигаCommonForm.АутентификацияВСервисе
+ CommonForm.ВводЗначенийСпискомСФлажкамиCommonForm.ВводПароляСОписаниямиCommonForm.ВопросCommonForm.ВопросОбУстановкеРасширенияРаботыСФайлами
@@ -1129,7 +1159,6 @@
CommonForm.ВыборОбъектовИнформационнойБазыКорреспондентаCommonForm.ВыборОбъектовМетаданныхCommonForm.ВыборПодписей
- CommonForm.ВыборПрисоединенныхФайловCommonForm.ВыборПроизвольногоПериодаCommonForm.ВыборПутиКАрхивуФайловТомовCommonForm.ВыборРолиИсполнителя
@@ -1294,6 +1323,8 @@
Enum.СпособыРедактированияЭлектронныхПисемEnum.СпособыСравненияВерсийФайловEnum.СпособыУстановкиВремениНапоминания
+ Enum.СпособыУстановкиКурсаВалюты
+ Enum.СрокиХраненияВерсийEnum.СтатусыИзвлеченияТекстаФайловEnum.СтатусыИсходящегоЭлектронногоПисьмаEnum.СтатусыОбластейДанных
@@ -1318,6 +1349,7 @@
Enum.ФорматыХраненияОдностраничныхФайловEnum.ЦветаЗаметокEnum.ЦветностиИзображения
+ Report.АнализВерсийОбъектовReport.АнализЖурналаРегистрацииReport.АнализОпросаReport.АналитическийОтчетПоАнкетированию
@@ -1341,6 +1373,7 @@
DataProcessor.ВыполнениеОбменаДаннымиDataProcessor.ГрупповоеИзменениеРеквизитовDataProcessor.ЖурналРегистрации
+ DataProcessor.ЗагрузкаДанныхИзФайлаDataProcessor.ЗагрузкаКурсовВалютDataProcessor.ЗагрузкаПравилРегистрацииОбъектовDataProcessor.ЗаменаСсылок
@@ -1376,6 +1409,7 @@
DataProcessor.СогласиеНаОбработкуПерсональныхДанныхDataProcessor.СопоставлениеОбъектовИнформационныхБазDataProcessor.СписокРеспондента
+ DataProcessor.ТекущиеДелаDataProcessor.ТранспортСообщенийОбменаEMAILDataProcessor.ТранспортСообщенийОбменаFILEDataProcessor.ТранспортСообщенийОбменаFTP
diff --git a/SSL/src/Configuration/MainSectionPicture.png b/SSL/src/Configuration/MainSectionPicture.png
new file mode 100644
index 000000000..061357c46
Binary files /dev/null and b/SSL/src/Configuration/MainSectionPicture.png differ
diff --git a/SSL/src/Configuration/ParentConfigurations.bin b/SSL/src/Configuration/ParentConfigurations.bin
index c6c33b12e..46c78dc90 100644
--- a/SSL/src/Configuration/ParentConfigurations.bin
+++ b/SSL/src/Configuration/ParentConfigurations.bin
@@ -1 +1 @@
-{6,1,1,e2088e81-4965-4f1f-b1c3-8762501109ca,1,314ecaf7-7507-4a6f-b7c8-39ef36c095cb,"2.2.2.48","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",4448,1,0,643640d5-800d-47bb-bc90-7c6235acc247,643640d5-800d-47bb-bc90-7c6235acc247,0,1,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,0,1,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,0,1,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,0,1,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,0,1,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,0,1,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,0,1,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,0,1,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,0,1,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,0,1,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,0,1,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,0,1,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,0,1,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,0,1,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,0,1,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,0,1,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,0,1,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,0,1,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,0,1,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,0,1,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,0,1,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,0,1,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,0,1,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,0,1,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,0,1,9e36087a-baa8-4812-956a-6e1ac73aa7e0,9e36087a-baa8-4812-956a-6e1ac73aa7e0,0,1,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,0,1,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,0,1,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,0,1,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,0,1,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,0,1,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,0,1,cb8da2f3-f8bb-4736-8381-7c153670e3e2,cb8da2f3-f8bb-4736-8381-7c153670e3e2,0,1,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,0,1,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,0,1,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,0,1,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,0,1,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,0,1,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,0,1,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,0,1,c53df2d1-4564-47a7-b66e-6a23ba28270e,c53df2d1-4564-47a7-b66e-6a23ba28270e,0,1,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,0,1,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,0,1,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,0,1,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,0,1,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,0,1,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,0,1,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,0,1,52176b25-0232-4326-9548-495db32b2660,52176b25-0232-4326-9548-495db32b2660,0,1,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,0,1,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,0,1,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,0,1,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0,1,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,0,1,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82-4a1c-9fdb-a26293d4f713,0,1,a952960b-be1b-4ec4-bd76-80915065a60b,a952960b-be1b-4ec4-bd76-80915065a60b,0,1,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,0,1,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,0,1,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,0,1,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5-45fc-8da2-a36c435085a6,0,1,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,0,1,5d16e042-3889-4851-86f1-bc43bf06ee88,5d16e042-3889-4851-86f1-bc43bf06ee88,0,1,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,0,1,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,0,1,e39ecc8a-ce81-483d-85de-b0488c8b7749,e39ecc8a-ce81-483d-85de-b0488c8b7749,0,1,1514eaff-faea-4d82-9465-d0d5292bb31d,1514eaff-faea-4d82-9465-d0d5292bb31d,0,1,6d39c6df-8cd4-47ad-9125-252b37d94575,6d39c6df-8cd4-47ad-9125-252b37d94575,0,1,739bd762-01fc-41a8-87df-844eb201962f,739bd762-01fc-41a8-87df-844eb201962f,0,1,ad7c6165-2e44-4808-a77a-526882cf5dea,ad7c6165-2e44-4808-a77a-526882cf5dea,0,1,b7e435a9-6107-4d02-a949-cff793462e31,b7e435a9-6107-4d02-a949-cff793462e31,0,1,f0cda8f5-56f5-423b-8c1c-7113433ebf25,f0cda8f5-56f5-423b-8c1c-7113433ebf25,0,1,1a220e88-428b-4d85-926d-e572bf19997c,1a220e88-428b-4d85-926d-e572bf19997c,0,1,ca0d938b-244e-421f-9fa4-320784b9f416,ca0d938b-244e-421f-9fa4-320784b9f416,0,1,a108b11d-a489-4684-84ea-d5377c7394de,a108b11d-a489-4684-84ea-d5377c7394de,0,1,289a2d84-2477-4177-a6ef-507e2cadeea2,289a2d84-2477-4177-a6ef-507e2cadeea2,0,1,757b547b-b79c-459a-a64a-eef19a09a38f,757b547b-b79c-459a-a64a-eef19a09a38f,0,1,61cd6eab-6bab-4382-986e-4c7fc44f369b,61cd6eab-6bab-4382-986e-4c7fc44f369b,0,1,cbbe7903-842c-470e-a2d6-7928df8f13e9,cbbe7903-842c-470e-a2d6-7928df8f13e9,0,1,e02597c4-bf45-4bb6-931d-62d2244f6c58,e02597c4-bf45-4bb6-931d-62d2244f6c58,0,1,42544966-445d-41b8-b6a0-a52c64758232,42544966-445d-41b8-b6a0-a52c64758232,0,1,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,0,1,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,0,1,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,0,1,0c44fdea-7b81-45be-87f5-d64456a9d379,0c44fdea-7b81-45be-87f5-d64456a9d379,0,1,d09d6f21-cdd0-485e-bd2c-92092a1aefef,d09d6f21-cdd0-485e-bd2c-92092a1aefef,0,1,2fc92784-d7b0-4209-ba06-e54bed2f160f,2fc92784-d7b0-4209-ba06-e54bed2f160f,0,1,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,0,1,a4e4c91c-fd95-4369-98e3-51ffba79937b,a4e4c91c-fd95-4369-98e3-51ffba79937b,0,1,0d0ada8a-09bb-4634-bf50-199f3779dad5,0d0ada8a-09bb-4634-bf50-199f3779dad5,0,1,d343d4e4-d07f-48c3-9db1-774b0d6c1134,d343d4e4-d07f-48c3-9db1-774b0d6c1134,0,1,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,0,1,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,0,1,968588bb-ee60-4399-955a-3ec4228d3c40,968588bb-ee60-4399-955a-3ec4228d3c40,0,1,23dbb528-7ea8-44ae-a1f2-b7608118666e,23dbb528-7ea8-44ae-a1f2-b7608118666e,0,1,b9627855-6773-4a59-b7d3-f9e2e565cd9e,b9627855-6773-4a59-b7d3-f9e2e565cd9e,0,1,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,0,1,283ce432-3553-4de9-94a2-ca9a590437f5,283ce432-3553-4de9-94a2-ca9a590437f5,0,1,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,0,1,34b0e268-497d-44d4-b822-84909d0685aa,34b0e268-497d-44d4-b822-84909d0685aa,0,1,8961a859-2203-4678-ae1f-63e2474a787a,8961a859-2203-4678-ae1f-63e2474a787a,0,1,fe63db47-3ece-4518-b6a2-0b6499f60a61,fe63db47-3ece-4518-b6a2-0b6499f60a61,0,1,654523be-93d9-4faa-9a35-ce2fede13820,654523be-93d9-4faa-9a35-ce2fede13820,0,1,671afc3e-7589-49d8-95a5-1cf195c3b2f8,671afc3e-7589-49d8-95a5-1cf195c3b2f8,0,1,2c8e45b8-7d80-4137-85db-66cd1db94526,2c8e45b8-7d80-4137-85db-66cd1db94526,0,1,47accdc7-8fa0-4996-9305-c42b6ca12df9,47accdc7-8fa0-4996-9305-c42b6ca12df9,0,1,5abc496c-5745-4220-9fdc-bac092717871,5abc496c-5745-4220-9fdc-bac092717871,0,1,93c347d8-66cb-406c-9ee6-b1962482893f,93c347d8-66cb-406c-9ee6-b1962482893f,0,1,7df36398-7752-4f51-9978-1bcb4bcdd062,7df36398-7752-4f51-9978-1bcb4bcdd062,0,1,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,0,1,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,0,1,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,0,1,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,0,1,f4885af5-6ed6-40e8-81a5-0e9537f943d7,f4885af5-6ed6-40e8-81a5-0e9537f943d7,0,1,87472d14-0d8c-4813-8a3e-2721bbb26811,87472d14-0d8c-4813-8a3e-2721bbb26811,0,1,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,0,1,e8faa1a9-807a-4916-b3c5-76ba2199754c,e8faa1a9-807a-4916-b3c5-76ba2199754c,0,1,99b5c632-61fe-41f5-ac00-ea530633bf28,99b5c632-61fe-41f5-ac00-ea530633bf28,0,1,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,0,1,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,0,1,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,0,1,485911f7-a964-450d-82da-cab020836eb2,485911f7-a964-450d-82da-cab020836eb2,0,1,cedd0b47-07cb-4dae-86b5-31d396b693c7,cedd0b47-07cb-4dae-86b5-31d396b693c7,0,1,c08391e1-c4e3-42aa-8738-061031d0cb75,c08391e1-c4e3-42aa-8738-061031d0cb75,0,1,bf4c6723-e586-4643-9f03-9e672afea26f,bf4c6723-e586-4643-9f03-9e672afea26f,0,1,23204b0b-bf77-4f7c-9945-e73ad924ebb4,23204b0b-bf77-4f7c-9945-e73ad924ebb4,0,1,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,0,1,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,0,1,a54f2d41-a05e-4878-80c6-81ca2899fa4c,a54f2d41-a05e-4878-80c6-81ca2899fa4c,0,1,23a898d9-5bcb-4744-ab6c-97b17dc98f20,23a898d9-5bcb-4744-ab6c-97b17dc98f20,0,1,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,0,1,f8f56806-ed7e-4059-a0c8-940538c14c98,f8f56806-ed7e-4059-a0c8-940538c14c98,0,1,9ff9f92b-c509-48da-82ce-15b524a895d6,9ff9f92b-c509-48da-82ce-15b524a895d6,0,1,c8bf96c8-f359-4940-8e87-3d190371d6d3,c8bf96c8-f359-4940-8e87-3d190371d6d3,0,1,477f0b81-0eb1-4de1-8cb5-38f1e0823947,477f0b81-0eb1-4de1-8cb5-38f1e0823947,0,1,d914eaa9-ce85-4df7-a545-2d411ef915b0,d914eaa9-ce85-4df7-a545-2d411ef915b0,0,1,41881344-82b7-4904-9ab8-0207d9bcd0a9,41881344-82b7-4904-9ab8-0207d9bcd0a9,0,1,21032fa5-9426-40bd-91e4-ace1e4ceb013,21032fa5-9426-40bd-91e4-ace1e4ceb013,0,1,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,0,1,27a80757-c0fd-40c7-ad24-4c819c1ba72b,27a80757-c0fd-40c7-ad24-4c819c1ba72b,0,1,7fce9e49-e558-4760-9d95-dde6ac6c1e78,7fce9e49-e558-4760-9d95-dde6ac6c1e78,0,1,e5aba4a3-6056-4ef3-827c-d74283175393,e5aba4a3-6056-4ef3-827c-d74283175393,0,1,63039e62-7314-42ff-bdc6-c251f38b3827,63039e62-7314-42ff-bdc6-c251f38b3827,0,1,8a4b7aab-b602-4581-8fa4-fab66791f701,8a4b7aab-b602-4581-8fa4-fab66791f701,0,1,7c92c579-4651-4fe3-90dc-6c9b594b76f0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,0,1,a2be2d7a-cca0-460f-a915-dadfb9cd588b,a2be2d7a-cca0-460f-a915-dadfb9cd588b,0,1,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,0,1,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,0,1,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,0,1,1f4408f5-460e-431b-9842-bc6875ccf0ae,1f4408f5-460e-431b-9842-bc6875ccf0ae,0,1,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,0,1,7bfc6163-a62f-45e8-9112-40a5d675ba4a,7bfc6163-a62f-45e8-9112-40a5d675ba4a,0,1,542ff510-0245-4a08-80ac-a9941c66ae93,542ff510-0245-4a08-80ac-a9941c66ae93,0,1,03297623-eaa2-4db0-bf1b-ce2076faf20a,03297623-eaa2-4db0-bf1b-ce2076faf20a,0,1,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,0,1,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,0,1,82a3802c-b6d6-4511-bd8b-eeec003afa33,82a3802c-b6d6-4511-bd8b-eeec003afa33,0,1,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,0,1,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,0,1,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,0,1,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,0,1,a755cb43-492d-4069-9b6a-29b92ebb5b0e,a755cb43-492d-4069-9b6a-29b92ebb5b0e,0,1,86d09107-f511-4148-b5d9-d97e92addfde,86d09107-f511-4148-b5d9-d97e92addfde,0,1,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,0,1,55b78834-3d90-4858-a6f7-e0368b1d8c41,55b78834-3d90-4858-a6f7-e0368b1d8c41,0,1,059b9a75-f53a-4518-a48a-afc72ab9ee36,059b9a75-f53a-4518-a48a-afc72ab9ee36,0,1,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,0,1,31e95872-97c7-49e3-bd1b-8df4de07014d,31e95872-97c7-49e3-bd1b-8df4de07014d,0,1,8b9be02b-cd1f-4231-a895-6c9be26348c2,8b9be02b-cd1f-4231-a895-6c9be26348c2,0,1,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,0,1,fa4f0b33-5253-4a5f-8121-feae3e1968a6,fa4f0b33-5253-4a5f-8121-feae3e1968a6,0,1,e0d21be2-91dc-4a04-9078-49420ddddcd5,e0d21be2-91dc-4a04-9078-49420ddddcd5,0,1,56c97764-7dba-42e0-8ba0-82712aca20e9,56c97764-7dba-42e0-8ba0-82712aca20e9,0,1,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,0,1,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,0,1,ea868745-71fc-483c-aa6e-f242c06c673f,ea868745-71fc-483c-aa6e-f242c06c673f,0,1,7f3c6269-ea41-492f-87b7-7eaaf712762e,7f3c6269-ea41-492f-87b7-7eaaf712762e,0,1,a5d037b0-c666-4179-9d6a-5f48c4a126a8,a5d037b0-c666-4179-9d6a-5f48c4a126a8,0,1,f0850411-4dee-4f1d-baec-7d6c96b10637,f0850411-4dee-4f1d-baec-7d6c96b10637,0,1,12f95031-b81f-4802-b2f3-6f70def90db0,12f95031-b81f-4802-b2f3-6f70def90db0,0,1,5732112a-f31d-41cd-9a7f-312a27395502,5732112a-f31d-41cd-9a7f-312a27395502,0,1,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,0,1,06fc381d-f27a-433c-95c3-e0981e01f22b,06fc381d-f27a-433c-95c3-e0981e01f22b,0,1,f646835e-61eb-4ebd-811e-dac5e70bd1b4,f646835e-61eb-4ebd-811e-dac5e70bd1b4,0,1,61b49c4c-3021-4868-834a-9137476ae169,61b49c4c-3021-4868-834a-9137476ae169,0,1,58911911-5192-45fe-87cf-c4a222a521a1,58911911-5192-45fe-87cf-c4a222a521a1,0,1,70067937-9f27-4442-b87b-6c4576ce1b78,70067937-9f27-4442-b87b-6c4576ce1b78,0,1,115d5d06-a2fc-453e-aab5-c869b6d5850b,115d5d06-a2fc-453e-aab5-c869b6d5850b,0,1,d33ca006-d81d-4ef8-8503-7878e81c599f,d33ca006-d81d-4ef8-8503-7878e81c599f,0,1,123bb339-b95e-44c3-b1e9-482dcaa6f297,123bb339-b95e-44c3-b1e9-482dcaa6f297,0,1,f4119605-beb3-46b6-b372-ecdb74f10a33,f4119605-beb3-46b6-b372-ecdb74f10a33,0,1,d2a2e332-a52c-4277-bd19-5ea8ef198469,d2a2e332-a52c-4277-bd19-5ea8ef198469,0,1,e440c594-14bb-4a6e-af53-a4519c7d5548,e440c594-14bb-4a6e-af53-a4519c7d5548,0,1,4165bdaa-8e27-40de-bcdc-0379c34e8868,4165bdaa-8e27-40de-bcdc-0379c34e8868,0,1,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,0,1,e606f8eb-952a-4abb-b1ae-4211204bed84,e606f8eb-952a-4abb-b1ae-4211204bed84,0,1,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,0,1,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1c2ad932-150a-4b15-b958-62eaa8a1eebc,0,1,b4deaebf-2c21-47d7-9436-10c94c94667c,b4deaebf-2c21-47d7-9436-10c94c94667c,0,1,f8295f29-2533-4013-981b-240f017d9f7c,f8295f29-2533-4013-981b-240f017d9f7c,0,1,538b316b-3876-4da6-8b97-ad8ef59de17d,538b316b-3876-4da6-8b97-ad8ef59de17d,0,1,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,0,1,ebc5f182-482b-4dec-9961-ce3a448abd0e,ebc5f182-482b-4dec-9961-ce3a448abd0e,0,1,83e618f5-1bf4-474a-9d65-389f1e4b16c3,83e618f5-1bf4-474a-9d65-389f1e4b16c3,0,1,1357512e-3ed3-455d-bc91-81db3b92f9fe,1357512e-3ed3-455d-bc91-81db3b92f9fe,0,1,82223d0f-41d9-45a6-9612-ae4d8408fa1b,82223d0f-41d9-45a6-9612-ae4d8408fa1b,0,1,3ee058a9-aff5-46f0-8928-8a417e7800d4,3ee058a9-aff5-46f0-8928-8a417e7800d4,0,1,c9a03f19-42bb-4e07-8ce8-1b954e431ada,c9a03f19-42bb-4e07-8ce8-1b954e431ada,0,1,ed4edc6f-048a-40d5-8f61-989895c95cf3,ed4edc6f-048a-40d5-8f61-989895c95cf3,0,1,dc17d8b6-d277-43eb-8823-71d440ae1e90,dc17d8b6-d277-43eb-8823-71d440ae1e90,0,1,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,0,1,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,0,1,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,0,1,cc770616-f6f6-4054-876c-f319b1f8c6cf,cc770616-f6f6-4054-876c-f319b1f8c6cf,0,1,8486e623-1a54-4ad9-ab44-591b6a559bc3,8486e623-1a54-4ad9-ab44-591b6a559bc3,0,1,dce82d28-9a7b-4d4c-af13-90f459cf4af2,dce82d28-9a7b-4d4c-af13-90f459cf4af2,0,1,cb9f2231-49bb-4b14-a124-8996628afead,cb9f2231-49bb-4b14-a124-8996628afead,0,1,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,0,1,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,0,1,896de79f-3c34-4436-a4e2-4dd4f45c3e20,896de79f-3c34-4436-a4e2-4dd4f45c3e20,0,1,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,0,1,e6c42b5d-57fd-42ce-a968-653620e797f6,e6c42b5d-57fd-42ce-a968-653620e797f6,0,1,724fb328-fec6-4afe-bc99-0ff0951b184b,724fb328-fec6-4afe-bc99-0ff0951b184b,0,1,f6259a3b-98f5-4649-8fd0-da0a0285f375,f6259a3b-98f5-4649-8fd0-da0a0285f375,0,1,c565bf25-c55e-4324-851a-cec497f5114a,c565bf25-c55e-4324-851a-cec497f5114a,0,1,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,0,1,5b0e250c-4d2d-4e37-ade1-593854610d3f,5b0e250c-4d2d-4e37-ade1-593854610d3f,0,1,148f63d5-23ad-4824-a24c-14d5a54c62d3,148f63d5-23ad-4824-a24c-14d5a54c62d3,0,1,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,0,1,041daf91-e5b3-471d-934d-55229f8a81d6,041daf91-e5b3-471d-934d-55229f8a81d6,0,1,eabfa8b7-fb65-43dd-9308-787f7cce88c9,eabfa8b7-fb65-43dd-9308-787f7cce88c9,0,1,30213cef-b2bc-4e6c-8094-74a61f28b2ed,30213cef-b2bc-4e6c-8094-74a61f28b2ed,0,1,8c72f824-b667-4d74-84aa-30eccfbbd2f0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,0,1,ec7b492d-5d38-4f31-90e0-577ad181514e,ec7b492d-5d38-4f31-90e0-577ad181514e,0,1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,0,1,4807629d-8421-4bd9-beb4-5b2940197958,4807629d-8421-4bd9-beb4-5b2940197958,0,1,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,0,1,766c7fb5-727e-4975-9ea1-3b0df4739620,766c7fb5-727e-4975-9ea1-3b0df4739620,0,1,ba59393c-c499-4999-91d4-b9e34d94db0e,ba59393c-c499-4999-91d4-b9e34d94db0e,0,1,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,0,1,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,0,1,e70a6eab-791f-4c70-bb92-f069c7486d1b,e70a6eab-791f-4c70-bb92-f069c7486d1b,0,1,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,0,1,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,0,1,f58bffe7-4a02-4c4e-bfed-7895177a400c,f58bffe7-4a02-4c4e-bfed-7895177a400c,0,1,fe285122-2257-4fb2-ab7e-1683c31db1c6,fe285122-2257-4fb2-ab7e-1683c31db1c6,0,1,0facc6eb-a178-45ee-a6bc-4bf085d80453,0facc6eb-a178-45ee-a6bc-4bf085d80453,0,1,f74eef36-9441-4b6f-b21c-de9643832f9f,f74eef36-9441-4b6f-b21c-de9643832f9f,0,1,ac2e5217-aaeb-4b6f-b063-538c84f2da06,ac2e5217-aaeb-4b6f-b063-538c84f2da06,0,1,b5e73fbe-499c-4666-a482-0ef399c97c1e,b5e73fbe-499c-4666-a482-0ef399c97c1e,0,1,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,0,1,4ac77dea-3c2b-4566-8857-ba99f7b025c9,4ac77dea-3c2b-4566-8857-ba99f7b025c9,0,1,8e87da88-9fa8-4dd8-b904-622b763239f4,8e87da88-9fa8-4dd8-b904-622b763239f4,0,1,09fec67d-6e45-428c-b858-9ae20979676c,09fec67d-6e45-428c-b858-9ae20979676c,0,1,58ffc4d9-d711-4b68-905c-d2ac4f78b547,58ffc4d9-d711-4b68-905c-d2ac4f78b547,0,1,94ab750f-46b4-427c-a7f2-4e94fb9b0678,94ab750f-46b4-427c-a7f2-4e94fb9b0678,0,1,397d9926-31a3-4c03-acb7-74478f9863e1,397d9926-31a3-4c03-acb7-74478f9863e1,0,1,264dd12a-b4c5-44bf-b3c0-ef9225505f76,264dd12a-b4c5-44bf-b3c0-ef9225505f76,0,1,90b8fdf3-3e42-442f-a002-6a28ad0edc99,90b8fdf3-3e42-442f-a002-6a28ad0edc99,0,1,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,0,1,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,0,1,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,0,1,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0,1,89574884-bce2-406d-9961-d1656b306eb8,89574884-bce2-406d-9961-d1656b306eb8,0,1,3de28e34-3c1e-4e7f-a720-3418c8c9c496,3de28e34-3c1e-4e7f-a720-3418c8c9c496,0,1,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,0,1,dacb236e-42a5-47e5-b239-ff18ae48e21e,dacb236e-42a5-47e5-b239-ff18ae48e21e,0,1,5cdb6e71-fd20-461a-83db-d59ccdb5b366,5cdb6e71-fd20-461a-83db-d59ccdb5b366,0,1,388b8576-9ba4-460f-b71b-3d644663656a,388b8576-9ba4-460f-b71b-3d644663656a,0,1,d4d38827-fce6-4c39-a4b4-51c7d7edc475,d4d38827-fce6-4c39-a4b4-51c7d7edc475,0,1,2d40609d-b56f-4082-9a6f-8216817ebd24,2d40609d-b56f-4082-9a6f-8216817ebd24,0,1,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,0,1,732b19c8-4f22-4748-a796-71538e46fc2f,732b19c8-4f22-4748-a796-71538e46fc2f,0,1,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,0,1,3fe0ef25-ce56-435d-b343-eadfec91a636,3fe0ef25-ce56-435d-b343-eadfec91a636,0,1,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,0,1,74f02619-7fa8-4c6d-81d6-230156ee45f4,74f02619-7fa8-4c6d-81d6-230156ee45f4,0,1,a103cca0-8243-40e9-bcdd-97a1cc8a3943,a103cca0-8243-40e9-bcdd-97a1cc8a3943,0,1,80fd89d7-160d-4528-9aa0-05b8dac64b4c,80fd89d7-160d-4528-9aa0-05b8dac64b4c,0,1,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,0,1,da551cf6-4f86-4e37-8967-a84c80e1fb13,da551cf6-4f86-4e37-8967-a84c80e1fb13,0,1,5fb2c120-fd14-4e78-a35f-c8e9478b3235,5fb2c120-fd14-4e78-a35f-c8e9478b3235,0,1,9d514ce1-f9bd-4018-8107-545cdd372fbd,9d514ce1-f9bd-4018-8107-545cdd372fbd,0,1,fe6b732f-3a33-460f-9686-cffdd5f7d99b,fe6b732f-3a33-460f-9686-cffdd5f7d99b,0,1,06250212-aeb1-4cb8-8785-ea71b1dad848,06250212-aeb1-4cb8-8785-ea71b1dad848,0,1,0c068a61-e5e6-4475-96fa-b7c1d825da42,0c068a61-e5e6-4475-96fa-b7c1d825da42,0,1,1047e34d-397a-42cc-80e6-1be755bd6462,1047e34d-397a-42cc-80e6-1be755bd6462,0,1,1cd473c3-4e36-47a9-b466-73d86ec244b0,1cd473c3-4e36-47a9-b466-73d86ec244b0,0,1,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,0,1,b406b5f9-eeaf-43a0-8930-067554d783c9,b406b5f9-eeaf-43a0-8930-067554d783c9,0,1,47718840-2939-4e30-a72c-a20c88ac4c17,47718840-2939-4e30-a72c-a20c88ac4c17,0,1,58a38994-9fe4-4783-967d-79d1141b90f3,58a38994-9fe4-4783-967d-79d1141b90f3,0,1,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,0,1,7c2e35a8-d05d-4e52-baee-a1e13585c502,7c2e35a8-d05d-4e52-baee-a1e13585c502,0,1,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,0,1,f551f78a-2f05-4932-ac33-cfa1b077f46f,f551f78a-2f05-4932-ac33-cfa1b077f46f,0,1,a96091a7-d3a5-4893-8440-f360231bf468,a96091a7-d3a5-4893-8440-f360231bf468,0,1,9ce6eef0-5280-4374-9714-474ac571e4e2,9ce6eef0-5280-4374-9714-474ac571e4e2,0,1,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,0,1,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,0,1,eca79a64-3d00-4178-b4eb-cf5468622c96,eca79a64-3d00-4178-b4eb-cf5468622c96,0,1,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,0,1,6dc4c216-e49f-4833-b45f-6060b67995ef,6dc4c216-e49f-4833-b45f-6060b67995ef,0,1,4655fa12-9169-4d08-bdab-9b3174d0b223,4655fa12-9169-4d08-bdab-9b3174d0b223,0,1,6c07ddfb-8823-4953-9905-9550b847dc3f,6c07ddfb-8823-4953-9905-9550b847dc3f,0,1,2362a8d5-dca2-4527-acc0-63782377f28a,2362a8d5-dca2-4527-acc0-63782377f28a,0,1,dfd6d85c-a734-4458-83b0-87b5949f9c68,dfd6d85c-a734-4458-83b0-87b5949f9c68,0,1,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,0,1,ba5574bd-53ca-413f-a245-272f468a80fb,ba5574bd-53ca-413f-a245-272f468a80fb,0,1,79b6ecf5-8a6b-44a4-9587-5f8764463228,79b6ecf5-8a6b-44a4-9587-5f8764463228,0,1,cd49148c-e385-4b75-a758-a93196e73dba,cd49148c-e385-4b75-a758-a93196e73dba,0,1,ece15c4e-4a4b-421b-9f00-10f698da476b,ece15c4e-4a4b-421b-9f00-10f698da476b,0,1,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,0,1,300ecdd6-144f-48c8-9fd4-6166f1de1047,300ecdd6-144f-48c8-9fd4-6166f1de1047,0,1,b6bbfb59-8249-47af-9394-be262f118811,b6bbfb59-8249-47af-9394-be262f118811,0,1,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,0,1,fb63d488-fb91-4d08-8f8c-f4836538216f,fb63d488-fb91-4d08-8f8c-f4836538216f,0,1,b8be6c09-6880-45d3-a2d1-06ad72d069c9,b8be6c09-6880-45d3-a2d1-06ad72d069c9,0,1,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,0,1,148dd521-8754-451b-803b-cbee7c3d3965,148dd521-8754-451b-803b-cbee7c3d3965,0,1,38bc48c7-3938-47be-be3f-844f19561301,38bc48c7-3938-47be-be3f-844f19561301,0,1,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,0,1,147038fb-6154-41f3-aad6-547db27d1e43,147038fb-6154-41f3-aad6-547db27d1e43,0,1,832fa9d3-deab-4c57-b6e2-dee5d24d6100,832fa9d3-deab-4c57-b6e2-dee5d24d6100,0,1,dd4270ef-6b4c-491e-8871-959dbec14c53,dd4270ef-6b4c-491e-8871-959dbec14c53,0,1,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,0,1,8ccd9be8-ef26-49b9-8cee-03ae4e500386,8ccd9be8-ef26-49b9-8cee-03ae4e500386,0,1,ddca925c-fdcd-40ce-a504-4fca1758de3f,ddca925c-fdcd-40ce-a504-4fca1758de3f,0,1,f64de21f-5a7c-4a1a-a929-07fc53049f6c,f64de21f-5a7c-4a1a-a929-07fc53049f6c,0,1,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,0,1,ea653eca-f96a-447d-8b09-7a7cb6929ed6,ea653eca-f96a-447d-8b09-7a7cb6929ed6,0,1,5efc4bc4-b711-4620-8d2e-9d947c6cc141,5efc4bc4-b711-4620-8d2e-9d947c6cc141,0,1,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,0,1,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,0,1,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,0,1,2b72fe1c-afe1-4905-8db2-2bb1baca6295,2b72fe1c-afe1-4905-8db2-2bb1baca6295,0,1,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,0,1,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,0,1,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,0,1,ecfc7ede-fffb-4bea-9598-3e18845f603d,ecfc7ede-fffb-4bea-9598-3e18845f603d,0,1,fa44433b-1c44-45a0-9487-47aa092442cf,fa44433b-1c44-45a0-9487-47aa092442cf,0,1,041cecfd-cef2-45d9-90e8-afe0d97d2d95,041cecfd-cef2-45d9-90e8-afe0d97d2d95,0,1,d9d14a24-c023-4b69-ad57-30d1474e1232,d9d14a24-c023-4b69-ad57-30d1474e1232,0,1,0943dd00-1653-4760-a9fe-ebc083ffa660,0943dd00-1653-4760-a9fe-ebc083ffa660,0,1,4fb8564e-2338-4c23-84a4-31f768047ced,4fb8564e-2338-4c23-84a4-31f768047ced,0,1,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,0,1,f93c9a7f-0249-421e-b3d0-55f02d130017,f93c9a7f-0249-421e-b3d0-55f02d130017,0,1,062c507a-9d35-4eb5-bb91-d106a535a503,062c507a-9d35-4eb5-bb91-d106a535a503,0,1,fd317d96-380e-4ee7-a25b-401e8521cc7a,fd317d96-380e-4ee7-a25b-401e8521cc7a,0,1,3b380a63-9232-42c2-bfa2-e8fc89448bbd,3b380a63-9232-42c2-bfa2-e8fc89448bbd,0,1,e18b4527-8727-4a10-9e99-a80012debe6c,e18b4527-8727-4a10-9e99-a80012debe6c,0,1,1ed910db-e434-4efd-9b12-c25353a31d5a,1ed910db-e434-4efd-9b12-c25353a31d5a,0,1,10556a26-ea4b-46b4-84d1-175eb13b333f,10556a26-ea4b-46b4-84d1-175eb13b333f,0,1,f1e600b0-55ed-4611-b147-f04d5621796b,f1e600b0-55ed-4611-b147-f04d5621796b,1,0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,1,0,101a4eb3-cdda-47af-8c69-615a6920347a,101a4eb3-cdda-47af-8c69-615a6920347a,1,0,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,1,0,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,1,0,f79bada2-838f-4e4f-a017-935cf671a70c,f79bada2-838f-4e4f-a017-935cf671a70c,1,0,ed394820-a216-4c4b-81ae-5dea33ced43b,ed394820-a216-4c4b-81ae-5dea33ced43b,1,0,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,1,0,8a310493-c06f-46db-b2b5-14d6ed203312,8a310493-c06f-46db-b2b5-14d6ed203312,1,0,b68ec95b-64f3-4a2b-9683-231d50f01eeb,b68ec95b-64f3-4a2b-9683-231d50f01eeb,1,0,4a008342-f72f-4ca1-bad1-64b59b509911,4a008342-f72f-4ca1-bad1-64b59b509911,1,0,cefa1723-a4d4-44c4-bd57-ffa713f9306c,cefa1723-a4d4-44c4-bd57-ffa713f9306c,1,0,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,1,0,4920aabf-6f53-4f91-932a-8ace24631a74,4920aabf-6f53-4f91-932a-8ace24631a74,1,0,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,1,0,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,1,0,bbec9c3d-31dd-484e-ab32-41ef845f1370,bbec9c3d-31dd-484e-ab32-41ef845f1370,1,0,8692ba41-d91d-4af0-8aba-69dd5409d593,8692ba41-d91d-4af0-8aba-69dd5409d593,1,0,5bfd74f4-811a-45db-b33d-8f93ba9c873a,5bfd74f4-811a-45db-b33d-8f93ba9c873a,1,0,a95b564a-c895-40f2-b947-ea08462bb2a0,a95b564a-c895-40f2-b947-ea08462bb2a0,1,0,ca63ca2f-703d-4317-8c5d-0650ea638f3f,ca63ca2f-703d-4317-8c5d-0650ea638f3f,1,0,aa2256c7-9847-40a5-9e49-11c508e0d45b,aa2256c7-9847-40a5-9e49-11c508e0d45b,1,0,a04493f4-508c-4047-b0e3-b7d4bde6427b,a04493f4-508c-4047-b0e3-b7d4bde6427b,1,0,418982cd-d403-47cf-a7ef-993a36104947,418982cd-d403-47cf-a7ef-993a36104947,1,0,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,1,0,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,1,0,35eea3b8-d017-442a-b5a0-a1571165b9a9,35eea3b8-d017-442a-b5a0-a1571165b9a9,1,0,7e84901c-cb7f-437c-a135-0902cd47acb6,7e84901c-cb7f-437c-a135-0902cd47acb6,1,0,c4d67026-2c97-4126-b8be-49aa6f567e2d,c4d67026-2c97-4126-b8be-49aa6f567e2d,1,0,fda2906d-f499-4016-b13a-99f7f713b898,fda2906d-f499-4016-b13a-99f7f713b898,1,0,da2b47f5-4109-4f72-a4a5-70be24a6881f,da2b47f5-4109-4f72-a4a5-70be24a6881f,1,0,849f034e-85dc-4515-aae6-240c1e0d46d9,849f034e-85dc-4515-aae6-240c1e0d46d9,1,0,de4d37c9-b278-4c0c-bc10-1b63ecd72947,de4d37c9-b278-4c0c-bc10-1b63ecd72947,1,0,1c7e9baa-7728-4afd-829a-806cee13ecdb,1c7e9baa-7728-4afd-829a-806cee13ecdb,1,0,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,1,0,5a741cf6-8160-4409-9396-2e6d1e67e6fa,5a741cf6-8160-4409-9396-2e6d1e67e6fa,1,0,8242daae-181a-47df-b28e-c1de3fce0359,8242daae-181a-47df-b28e-c1de3fce0359,1,0,5cc3a29d-aa98-42bf-9800-f584229c8e46,5cc3a29d-aa98-42bf-9800-f584229c8e46,1,0,db82191f-77bd-44da-8b33-86f01018e25a,db82191f-77bd-44da-8b33-86f01018e25a,1,0,acfa1919-07ce-4464-8552-6b104e284dca,acfa1919-07ce-4464-8552-6b104e284dca,1,0,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,1,0,f4cff4ff-68e9-4072-971e-1b359d3aa980,f4cff4ff-68e9-4072-971e-1b359d3aa980,1,0,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,1,0,fdb012c9-583a-42af-95da-070e75a58078,fdb012c9-583a-42af-95da-070e75a58078,1,0,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,1,0,7d069b11-cddd-463d-97be-3cbeaaf0954c,7d069b11-cddd-463d-97be-3cbeaaf0954c,1,0,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,1,0,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,1,0,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,1,0,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,1,0,b9004626-915c-44c8-9cb7-25e5b627ee83,b9004626-915c-44c8-9cb7-25e5b627ee83,1,0,63c6cfad-124d-491a-829d-b298463c95e6,63c6cfad-124d-491a-829d-b298463c95e6,1,0,3da31d2f-24dd-469b-bd3b-073fa3b3d585,3da31d2f-24dd-469b-bd3b-073fa3b3d585,1,0,737404de-5b9d-4445-81c5-2c5b50b36846,737404de-5b9d-4445-81c5-2c5b50b36846,1,0,1ae364d3-0bec-4089-af23-c60d2a274c85,1ae364d3-0bec-4089-af23-c60d2a274c85,1,0,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1,0,f11ffcfd-3588-4785-b222-cebe80455303,f11ffcfd-3588-4785-b222-cebe80455303,1,0,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,1,0,bfdc6346-db5b-427f-acca-9b48db8fefd0,bfdc6346-db5b-427f-acca-9b48db8fefd0,1,0,1c3f258c-345e-47f6-9e29-98b1222fb348,1c3f258c-345e-47f6-9e29-98b1222fb348,1,0,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,1,0,35c938f4-065f-47f5-a75b-637ed0080725,35c938f4-065f-47f5-a75b-637ed0080725,0,1,e14c0841-226c-4c79-bec9-cfc8d2c3a160,e14c0841-226c-4c79-bec9-cfc8d2c3a160,0,1,6f3c5b90-b030-4267-a973-33d12c2c7680,6f3c5b90-b030-4267-a973-33d12c2c7680,0,1,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,0,1,b107a4a8-0db8-44f4-93f7-9f231e850398,b107a4a8-0db8-44f4-93f7-9f231e850398,0,1,88b879b7-1bb3-4478-b569-35bdb5c56939,88b879b7-1bb3-4478-b569-35bdb5c56939,0,1,7a62d031-c340-4b1e-90af-fff697a2e979,7a62d031-c340-4b1e-90af-fff697a2e979,0,1,18bf6916-83cc-41e5-a35b-1489450ae632,18bf6916-83cc-41e5-a35b-1489450ae632,0,1,ebab97cf-5335-4648-9845-8ca41f79fb49,ebab97cf-5335-4648-9845-8ca41f79fb49,0,1,bb29fa44-6772-4426-a0b8-422115e14288,bb29fa44-6772-4426-a0b8-422115e14288,0,1,a5cc5ae2-be80-4957-8aca-9e477433dfcc,a5cc5ae2-be80-4957-8aca-9e477433dfcc,0,1,62fa393c-687c-49bf-8a25-81adc04430fb,62fa393c-687c-49bf-8a25-81adc04430fb,0,1,36d7d739-b198-487d-8644-76589356c2ec,36d7d739-b198-487d-8644-76589356c2ec,0,1,904e1209-91d8-49b1-b291-364ef728cbbf,904e1209-91d8-49b1-b291-364ef728cbbf,0,1,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,0,1,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,0,1,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,0,1,e51ae56c-d311-46b7-8d4c-19a432f4cd16,e51ae56c-d311-46b7-8d4c-19a432f4cd16,0,1,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,0,1,40d3ed07-3b56-4c9f-8b96-d94455202ef0,40d3ed07-3b56-4c9f-8b96-d94455202ef0,0,1,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,0,1,84282afa-21f5-40db-9386-e6f741c9a06c,84282afa-21f5-40db-9386-e6f741c9a06c,0,1,5b3b3da9-8619-4fbd-b140-3528875cd179,5b3b3da9-8619-4fbd-b140-3528875cd179,0,1,99e5e866-7ac6-4916-ab66-3e2909822c56,99e5e866-7ac6-4916-ab66-3e2909822c56,0,1,03363877-2752-4a03-95f2-d73b732e0bfd,03363877-2752-4a03-95f2-d73b732e0bfd,0,1,8d9d2284-e592-44c5-93bb-247037ab6b95,8d9d2284-e592-44c5-93bb-247037ab6b95,0,1,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0,1,78051e10-74ab-44be-adca-e4c93824a386,78051e10-74ab-44be-adca-e4c93824a386,0,1,73629419-83d8-4727-88a9-76c851d104c9,73629419-83d8-4727-88a9-76c851d104c9,0,1,a9c3065b-db68-4f59-9235-33f9fbfdaafd,a9c3065b-db68-4f59-9235-33f9fbfdaafd,0,1,3715cf3d-0abc-4711-8ac9-d41f0be7878f,3715cf3d-0abc-4711-8ac9-d41f0be7878f,0,1,8e8d8078-8b32-4c24-b26e-89a92bf60160,8e8d8078-8b32-4c24-b26e-89a92bf60160,0,1,f96cbb27-7619-41e0-8577-e623ef02dc58,f96cbb27-7619-41e0-8577-e623ef02dc58,0,1,d74dfd31-2016-435b-8652-15fdbca59490,d74dfd31-2016-435b-8652-15fdbca59490,0,1,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,0,1,27651e0e-d560-434b-a49c-f473a5b20c4d,27651e0e-d560-434b-a49c-f473a5b20c4d,0,1,dab1491b-0685-442d-b945-2bfde3f37933,dab1491b-0685-442d-b945-2bfde3f37933,0,1,ce85554b-81ba-4149-a951-d09bdc14fa16,ce85554b-81ba-4149-a951-d09bdc14fa16,0,1,23a1ef35-1469-44ea-8535-fa9c7f535cae,23a1ef35-1469-44ea-8535-fa9c7f535cae,0,1,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,0,1,2558d812-ac0a-49ba-87db-3f661209a3c4,2558d812-ac0a-49ba-87db-3f661209a3c4,0,1,20d712ef-77c1-4374-92e1-f20a3ebc7eab,20d712ef-77c1-4374-92e1-f20a3ebc7eab,0,1,65d23ce8-e326-45ee-86b0-6dcf35797201,65d23ce8-e326-45ee-86b0-6dcf35797201,0,1,a2683c3f-1b21-47d8-951d-7d30cde51efc,a2683c3f-1b21-47d8-951d-7d30cde51efc,0,1,54c77053-1728-4914-a354-73fe8853a0e1,54c77053-1728-4914-a354-73fe8853a0e1,0,1,21136691-078f-4bf7-bddd-f41416a76d86,21136691-078f-4bf7-bddd-f41416a76d86,0,1,30a121c7-c4f5-45c4-9504-9778ed85d9e3,30a121c7-c4f5-45c4-9504-9778ed85d9e3,0,1,c68e2157-2541-4f80-966a-d68ce603f131,c68e2157-2541-4f80-966a-d68ce603f131,0,1,e5dfee58-f748-48ee-81a3-7c6133f06365,e5dfee58-f748-48ee-81a3-7c6133f06365,0,1,68500931-89e0-491e-aba8-b013c9e6f8c3,68500931-89e0-491e-aba8-b013c9e6f8c3,0,1,70b79e56-bb71-4f38-93cf-94dda79d9b4c,70b79e56-bb71-4f38-93cf-94dda79d9b4c,0,1,5c4c9931-3fb0-47a8-9e4f-d552de12b355,5c4c9931-3fb0-47a8-9e4f-d552de12b355,0,1,2a498baf-ec2e-4dda-b568-801bb60db225,2a498baf-ec2e-4dda-b568-801bb60db225,0,1,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,0,1,35989876-16b1-4b02-9381-444a06a7a21d,35989876-16b1-4b02-9381-444a06a7a21d,0,1,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,0,1,f7608000-1e8a-4ca4-afb7-e04ef547b70a,f7608000-1e8a-4ca4-afb7-e04ef547b70a,0,1,26cea519-19d0-4707-be0a-1a43fde6e563,26cea519-19d0-4707-be0a-1a43fde6e563,0,1,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,0,1,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,0,1,60c04f0a-78a8-4c55-8844-b86906350fd1,60c04f0a-78a8-4c55-8844-b86906350fd1,0,1,851306a7-8847-4b43-8214-898bfc24b0ab,851306a7-8847-4b43-8214-898bfc24b0ab,0,1,af8d4bc9-2f0f-44d3-89ce-2593877055c8,af8d4bc9-2f0f-44d3-89ce-2593877055c8,0,1,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,0,1,eb35bff2-8467-48fe-bf93-ece2aa40f506,eb35bff2-8467-48fe-bf93-ece2aa40f506,0,1,68cf55da-b29e-4a65-815b-c9cdc8e5888e,68cf55da-b29e-4a65-815b-c9cdc8e5888e,0,1,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,0,1,1041ed81-c1f7-43b2-9087-914865a3076e,1041ed81-c1f7-43b2-9087-914865a3076e,0,1,5d7174d2-42b3-4e12-b705-4209dd73b53b,5d7174d2-42b3-4e12-b705-4209dd73b53b,0,1,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,0,1,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,0,1,5a4c6511-f8ed-40e4-a251-e28f62629cf2,5a4c6511-f8ed-40e4-a251-e28f62629cf2,0,1,cfe59dfd-a509-4f83-b926-b3ff94234a43,cfe59dfd-a509-4f83-b926-b3ff94234a43,0,1,17df1591-61b0-4204-8379-8d1f58445968,17df1591-61b0-4204-8379-8d1f58445968,0,1,9020fa9d-e7de-4574-ab65-db6651b5b610,9020fa9d-e7de-4574-ab65-db6651b5b610,0,1,3309648c-aae6-4684-ae8d-7ed636bc3468,3309648c-aae6-4684-ae8d-7ed636bc3468,0,1,f9aa933e-6684-48de-b802-96c8e61b1fe6,f9aa933e-6684-48de-b802-96c8e61b1fe6,0,1,9de4d430-95ec-4435-b3e8-4fc85778d517,9de4d430-95ec-4435-b3e8-4fc85778d517,0,1,205b8908-fa21-42bd-bff0-fb95e6787f15,205b8908-fa21-42bd-bff0-fb95e6787f15,0,1,5320abf1-b09b-4de0-9adf-4cb1da31df6f,5320abf1-b09b-4de0-9adf-4cb1da31df6f,0,1,3916ddbd-9023-42a4-849e-9cda6e591408,3916ddbd-9023-42a4-849e-9cda6e591408,0,1,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,0,1,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,0,1,96d66cdd-d40c-43a3-92ce-40aef2101b64,96d66cdd-d40c-43a3-92ce-40aef2101b64,0,1,9daa8270-4782-4d83-af03-c8d2b11057ff,9daa8270-4782-4d83-af03-c8d2b11057ff,0,1,4b8927df-e124-4bf6-9d70-6e91b4796d90,4b8927df-e124-4bf6-9d70-6e91b4796d90,0,1,871b63a2-c7a6-4343-8d8b-7dda1b0def87,871b63a2-c7a6-4343-8d8b-7dda1b0def87,0,1,fc78d8df-ab27-4544-a65c-73908b9c5425,fc78d8df-ab27-4544-a65c-73908b9c5425,0,1,f8a090d2-b2d1-4ead-a8bf-6325a7552743,f8a090d2-b2d1-4ead-a8bf-6325a7552743,0,1,84f935da-9fe5-44ea-845b-b447b8b0a6f5,84f935da-9fe5-44ea-845b-b447b8b0a6f5,0,1,caf79125-bde8-4f52-8ad2-f915c7a884cc,caf79125-bde8-4f52-8ad2-f915c7a884cc,0,1,a9a0db31-6808-4790-be72-f345197b0c6e,a9a0db31-6808-4790-be72-f345197b0c6e,0,1,36554213-9af4-4fec-8944-35f50b306eda,36554213-9af4-4fec-8944-35f50b306eda,0,1,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,0,1,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,0,1,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,0,1,33343620-673e-4aa3-9e58-c6a25f738001,33343620-673e-4aa3-9e58-c6a25f738001,0,1,8aaf780f-ed74-4f44-9598-c14180053ff9,8aaf780f-ed74-4f44-9598-c14180053ff9,0,1,dbd4d09d-f410-4453-9143-bd72da5464cc,dbd4d09d-f410-4453-9143-bd72da5464cc,0,1,f1bc5034-a4b5-4fa9-97db-d43c2b7e8d36,f1bc5034-a4b5-4fa9-97db-d43c2b7e8d36,0,1,c4fe10b6-d025-4736-be23-3113bd7fe7b4,c4fe10b6-d025-4736-be23-3113bd7fe7b4,0,1,65530aca-7cf2-4a52-b5be-5dcbc15a049e,65530aca-7cf2-4a52-b5be-5dcbc15a049e,0,1,15eb2c2d-305d-42c0-9aec-936b82114bdb,15eb2c2d-305d-42c0-9aec-936b82114bdb,0,1,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,0,1,cbca7272-2aae-4e21-b3f5-12786f085648,cbca7272-2aae-4e21-b3f5-12786f085648,0,1,7718bd0b-7b8a-4ffc-b228-f05683b5531a,7718bd0b-7b8a-4ffc-b228-f05683b5531a,0,1,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,0,1,881f53bc-a52e-4312-b09d-3d3f53ddf84b,881f53bc-a52e-4312-b09d-3d3f53ddf84b,0,1,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,0,1,e3476d0e-0ab4-4734-9261-04aef6281086,e3476d0e-0ab4-4734-9261-04aef6281086,0,1,945ae8d2-b74a-41e9-b740-c82acdd40d04,945ae8d2-b74a-41e9-b740-c82acdd40d04,0,1,29c37223-de1c-49fb-8488-77e44dd79edd,29c37223-de1c-49fb-8488-77e44dd79edd,0,1,2c97a626-cd7e-4796-b77c-0bc9d190680b,2c97a626-cd7e-4796-b77c-0bc9d190680b,0,1,498ab1ed-5042-4d73-9138-73ed547e46e2,498ab1ed-5042-4d73-9138-73ed547e46e2,0,1,f561be64-9420-46ec-a4f7-9df0bea2e28b,f561be64-9420-46ec-a4f7-9df0bea2e28b,0,1,e9e242b7-0077-4c47-8f45-df50e7cc90cf,e9e242b7-0077-4c47-8f45-df50e7cc90cf,0,1,820383e1-9b95-4c0f-8464-722f1fe64ad5,820383e1-9b95-4c0f-8464-722f1fe64ad5,0,1,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,0,1,292bfe6b-703e-40cb-856d-abb470e6709f,292bfe6b-703e-40cb-856d-abb470e6709f,0,1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,0,1,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,0,1,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,0,1,8811ea1a-1221-47b7-9574-3f36ff15a3cf,8811ea1a-1221-47b7-9574-3f36ff15a3cf,0,1,a84891cc-e996-489a-abde-5b5af166a057,a84891cc-e996-489a-abde-5b5af166a057,0,1,1d715463-691b-4c01-ae39-57c261f2a6ad,1d715463-691b-4c01-ae39-57c261f2a6ad,0,1,4c3d007f-a62c-4fd9-beda-58dbf08ad188,4c3d007f-a62c-4fd9-beda-58dbf08ad188,0,1,c35373a9-f0b0-4ddb-a985-409ac9c64609,c35373a9-f0b0-4ddb-a985-409ac9c64609,0,1,c1c40916-fee5-46e3-90fc-10e7595866c9,c1c40916-fee5-46e3-90fc-10e7595866c9,0,1,19a307b1-9ef0-4fc6-bf4f-7636e9118399,19a307b1-9ef0-4fc6-bf4f-7636e9118399,0,1,666244a4-5636-4405-89dd-bbd8f4278071,666244a4-5636-4405-89dd-bbd8f4278071,0,1,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,0,1,29a627a9-debc-4074-88d0-ec3561e1ef9c,29a627a9-debc-4074-88d0-ec3561e1ef9c,0,1,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,0,1,39f5e272-9a10-40b0-8a10-92037828b206,39f5e272-9a10-40b0-8a10-92037828b206,0,1,87dad256-122b-4d7e-b249-a2c313a9cf33,87dad256-122b-4d7e-b249-a2c313a9cf33,0,1,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,0,1,958033a6-2a8e-473a-903b-34eee6507f5a,958033a6-2a8e-473a-903b-34eee6507f5a,0,1,b722d6e1-fd6f-4bb4-923d-01764393722d,b722d6e1-fd6f-4bb4-923d-01764393722d,0,1,ac5f945e-2d03-44fb-a8cf-5d786194cefd,ac5f945e-2d03-44fb-a8cf-5d786194cefd,0,1,698ec00f-bf75-420e-81ab-a98808daf3f7,698ec00f-bf75-420e-81ab-a98808daf3f7,0,1,f441907c-d02e-431e-baf4-1854e48a1f50,f441907c-d02e-431e-baf4-1854e48a1f50,0,1,4ad722ca-10fc-4a83-91c9-ef0012685f89,4ad722ca-10fc-4a83-91c9-ef0012685f89,0,1,783dd4ba-a597-45ba-8989-2ed5224d62bc,783dd4ba-a597-45ba-8989-2ed5224d62bc,0,1,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,0,1,d9e08c12-1999-41d8-b530-90187303be0a,d9e08c12-1999-41d8-b530-90187303be0a,0,1,dad9710a-73ca-4e0d-b98b-75f955d0822d,dad9710a-73ca-4e0d-b98b-75f955d0822d,0,1,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,0,1,2191939f-6f71-47c9-a3d2-57acbf7f411e,2191939f-6f71-47c9-a3d2-57acbf7f411e,0,1,19b9cbbb-1fcc-4492-9385-687742cb3d0b,19b9cbbb-1fcc-4492-9385-687742cb3d0b,0,1,247c41dd-c8dc-43dd-b348-1ba31ee92065,247c41dd-c8dc-43dd-b348-1ba31ee92065,0,1,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,0,1,da673406-078d-44c8-9d27-80ef172c4b5e,da673406-078d-44c8-9d27-80ef172c4b5e,0,1,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,0,1,a2c36563-126d-4c3a-9714-5b7a4903073b,a2c36563-126d-4c3a-9714-5b7a4903073b,0,1,2e4da82c-dddb-4462-b34f-6511cd2a8356,2e4da82c-dddb-4462-b34f-6511cd2a8356,0,1,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,0,1,2976c29f-f482-463d-8f6e-6a632fb50893,2976c29f-f482-463d-8f6e-6a632fb50893,0,1,701964a1-7762-45ee-a9a4-41dd9ce94783,701964a1-7762-45ee-a9a4-41dd9ce94783,0,1,55d1909e-f552-441f-8e14-47d2e604cf6a,55d1909e-f552-441f-8e14-47d2e604cf6a,0,1,eae627db-c52b-4e41-94d1-58db28cd0063,eae627db-c52b-4e41-94d1-58db28cd0063,0,1,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,0,1,0a646724-b49d-42cd-82e6-e800466ed127,0a646724-b49d-42cd-82e6-e800466ed127,0,1,47058e36-a281-43a5-a41d-691b3ef32b5b,47058e36-a281-43a5-a41d-691b3ef32b5b,0,1,e620e93c-4382-478f-a700-ad2faa67362b,e620e93c-4382-478f-a700-ad2faa67362b,0,1,a4a8693b-dc91-4762-92e6-35360c8768db,a4a8693b-dc91-4762-92e6-35360c8768db,0,1,2ae236ec-28a7-44e0-a0ba-be62fe52d817,2ae236ec-28a7-44e0-a0ba-be62fe52d817,0,1,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,0,1,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,0,1,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,0,1,ed137e05-1996-411d-9927-45a3d7e3ee3b,ed137e05-1996-411d-9927-45a3d7e3ee3b,0,1,fbebf341-9842-41e1-8e4d-490fa02065ce,fbebf341-9842-41e1-8e4d-490fa02065ce,0,1,067f88f6-ccd2-491e-a466-94345a1f220f,067f88f6-ccd2-491e-a466-94345a1f220f,0,1,642154b8-97da-4c4f-bf34-c1124215077d,642154b8-97da-4c4f-bf34-c1124215077d,0,1,abc10867-39ae-46bf-8bd7-90f645919235,abc10867-39ae-46bf-8bd7-90f645919235,0,1,b3396504-8ccb-43d6-9a0f-ab259ba0a542,b3396504-8ccb-43d6-9a0f-ab259ba0a542,0,1,f59f91c5-026a-4dc5-996e-0d59814a9604,f59f91c5-026a-4dc5-996e-0d59814a9604,0,1,aac9966f-e9ea-4106-97bb-6b9822939bc7,aac9966f-e9ea-4106-97bb-6b9822939bc7,0,1,a752fba8-5084-4fa2-9d0b-7074a42b1312,a752fba8-5084-4fa2-9d0b-7074a42b1312,0,1,640d7486-8abd-40aa-a244-2ed899b7225a,640d7486-8abd-40aa-a244-2ed899b7225a,0,1,c05f87b4-ec5f-4d14-981f-02ca8ba89863,c05f87b4-ec5f-4d14-981f-02ca8ba89863,0,1,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,0,1,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,0,1,875d1fc1-8172-4e48-8192-035882e1665d,875d1fc1-8172-4e48-8192-035882e1665d,0,1,26132b28-98cc-4690-92ad-139f91839ba2,26132b28-98cc-4690-92ad-139f91839ba2,0,1,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0,1,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,0,1,ca81e0ea-c428-47f9-aedb-078214104a2f,ca81e0ea-c428-47f9-aedb-078214104a2f,0,1,9518d09c-6996-4439-9278-3c71d5ae8fce,9518d09c-6996-4439-9278-3c71d5ae8fce,0,1,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,0,1,5fbd9a13-012d-4c36-b72c-da3bc4157cff,5fbd9a13-012d-4c36-b72c-da3bc4157cff,0,1,1126157b-64c0-4d64-8551-f31c5ed0fd29,1126157b-64c0-4d64-8551-f31c5ed0fd29,0,1,6ae6e515-5cd4-4eca-8602-c6abe6d66276,6ae6e515-5cd4-4eca-8602-c6abe6d66276,0,1,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,0,1,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,0,1,35a28677-0653-47f9-82e1-02c4b9266fee,35a28677-0653-47f9-82e1-02c4b9266fee,0,1,2e17464f-9cef-4812-865f-4eb77ff16b6a,2e17464f-9cef-4812-865f-4eb77ff16b6a,0,1,e5ecbb1f-981d-4928-9335-22216879f7e2,e5ecbb1f-981d-4928-9335-22216879f7e2,0,1,461be12a-9f16-4826-978a-436608ca8733,461be12a-9f16-4826-978a-436608ca8733,0,1,9b143299-d300-4b6c-b667-5552fb3bdcde,9b143299-d300-4b6c-b667-5552fb3bdcde,0,1,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0,1,74973d06-f57d-403e-945c-5cd2f4fc4869,74973d06-f57d-403e-945c-5cd2f4fc4869,0,1,259564b8-172e-4eed-9360-d561ec6dad69,259564b8-172e-4eed-9360-d561ec6dad69,0,1,91c799d7-2b3d-4d1a-87ff-221057a428c6,91c799d7-2b3d-4d1a-87ff-221057a428c6,0,1,a50fcacc-6d2d-496c-bea0-9c73cd153437,a50fcacc-6d2d-496c-bea0-9c73cd153437,0,1,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,0,1,0fb72f4b-e6f6-4b70-8ec7-fdb6d4ad928e,0fb72f4b-e6f6-4b70-8ec7-fdb6d4ad928e,0,1,a5633248-8611-4e9b-b223-2f59e7b84a65,a5633248-8611-4e9b-b223-2f59e7b84a65,0,1,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,0,1,e40b8882-737a-40c0-83b4-c35dc042f4a5,e40b8882-737a-40c0-83b4-c35dc042f4a5,0,1,d60c1e9d-1395-4293-8462-6ea2c93a0c86,d60c1e9d-1395-4293-8462-6ea2c93a0c86,0,1,5a2d5d8a-afd9-4954-9868-7c82bad00426,5a2d5d8a-afd9-4954-9868-7c82bad00426,0,1,26aea96b-20f8-4e35-b55f-4fe3602e6597,26aea96b-20f8-4e35-b55f-4fe3602e6597,0,1,a3a3a211-e361-4e41-a6f8-d731a366c163,a3a3a211-e361-4e41-a6f8-d731a366c163,0,1,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,0,1,ca01417c-0ffd-4e00-91e8-93cd305be82d,ca01417c-0ffd-4e00-91e8-93cd305be82d,0,1,b84401f2-b8df-4105-8049-6236423d177d,b84401f2-b8df-4105-8049-6236423d177d,0,1,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,0,1,0a0af8bf-0caa-40df-9a69-71f98ca9ff89,0a0af8bf-0caa-40df-9a69-71f98ca9ff89,0,1,6ac7db0c-18ed-4d3b-956a-5985214db474,6ac7db0c-18ed-4d3b-956a-5985214db474,0,1,267103e0-6703-4a74-bb4f-af610d7ef332,267103e0-6703-4a74-bb4f-af610d7ef332,0,1,b98ca634-25a5-4366-af04-815ba34c8bb2,b98ca634-25a5-4366-af04-815ba34c8bb2,0,1,14d69108-4d26-401a-b7ae-2c86dadf831c,14d69108-4d26-401a-b7ae-2c86dadf831c,0,1,d6251f65-d366-4bc9-a5db-42063fe03594,d6251f65-d366-4bc9-a5db-42063fe03594,0,1,22c60cbc-429f-40d9-bf8b-681b7786c41d,22c60cbc-429f-40d9-bf8b-681b7786c41d,0,1,31dd320b-06aa-4314-9914-2c2420f572a1,31dd320b-06aa-4314-9914-2c2420f572a1,0,1,56730848-3bef-4b8c-b449-fe9d09c9c374,56730848-3bef-4b8c-b449-fe9d09c9c374,0,1,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,0,1,91d8c5e4-eaec-4951-9224-16882fda08f6,91d8c5e4-eaec-4951-9224-16882fda08f6,0,1,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,0,1,4654d192-74bf-430f-abee-6f4dc431b182,4654d192-74bf-430f-abee-6f4dc431b182,0,1,d4655391-144c-4ba6-aee5-1edafebe862c,d4655391-144c-4ba6-aee5-1edafebe862c,0,1,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,0,1,4678c704-933a-45ef-9d41-89b8f39016bb,4678c704-933a-45ef-9d41-89b8f39016bb,0,1,8ceea1e8-42ce-469f-823a-ceffdbd6b112,8ceea1e8-42ce-469f-823a-ceffdbd6b112,0,1,086d69d6-e2fa-45cb-84b6-f8f3e2919160,086d69d6-e2fa-45cb-84b6-f8f3e2919160,0,1,6995ee71-5901-46d9-a5c1-b35d795bda20,6995ee71-5901-46d9-a5c1-b35d795bda20,0,1,e93a4293-0497-4f11-b8b9-40300104fb96,e93a4293-0497-4f11-b8b9-40300104fb96,0,1,93531e5d-5dfc-42e8-be52-2e83f37262b0,93531e5d-5dfc-42e8-be52-2e83f37262b0,0,1,61bf78c0-7004-4a74-b362-e979c7316e05,61bf78c0-7004-4a74-b362-e979c7316e05,0,1,c4351896-eff1-4e4d-8823-028d63a9d6bf,c4351896-eff1-4e4d-8823-028d63a9d6bf,0,1,475f83a2-ba5a-4072-94f8-1324b1f198a4,475f83a2-ba5a-4072-94f8-1324b1f198a4,0,1,cd7c15c1-c573-46c9-b109-339b8b54c3ee,cd7c15c1-c573-46c9-b109-339b8b54c3ee,0,1,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,0,1,deee8bde-381f-4094-8794-7a06248860dd,deee8bde-381f-4094-8794-7a06248860dd,0,1,2757ee75-4b36-4901-bff1-044708754edb,2757ee75-4b36-4901-bff1-044708754edb,0,1,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0,1,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,0,1,71144539-6472-4727-8887-0139f6221370,71144539-6472-4727-8887-0139f6221370,0,1,bff07da4-ae19-48a9-806b-14b285d42485,bff07da4-ae19-48a9-806b-14b285d42485,0,1,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,0,1,b0ccc05d-8d39-4f57-8e87-6846014f92ea,b0ccc05d-8d39-4f57-8e87-6846014f92ea,0,1,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,0,1,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,0,1,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,0,1,8986c155-54be-4b1b-b31a-5c00b88bc40d,8986c155-54be-4b1b-b31a-5c00b88bc40d,0,1,d91441cf-d793-4dfa-9225-f0c16818edde,d91441cf-d793-4dfa-9225-f0c16818edde,0,1,42a39785-144c-4d2d-92c6-fd8b345f687b,42a39785-144c-4d2d-92c6-fd8b345f687b,0,1,f3bd841b-fb36-4462-9627-b51801e563cd,f3bd841b-fb36-4462-9627-b51801e563cd,0,1,0a23f273-5589-4a48-be3a-eee7565749aa,0a23f273-5589-4a48-be3a-eee7565749aa,0,1,494eb9d9-4a10-4e85-b511-375408f21bbe,494eb9d9-4a10-4e85-b511-375408f21bbe,0,1,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,0,1,a275802f-937a-49f4-92da-fcdd185a036d,a275802f-937a-49f4-92da-fcdd185a036d,0,1,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,0,1,c05f15b0-a659-4473-b6d0-acebc4a2da57,c05f15b0-a659-4473-b6d0-acebc4a2da57,0,1,f2dc9319-ba60-421a-8340-be3e3a291393,f2dc9319-ba60-421a-8340-be3e3a291393,0,1,bf4eb62a-bc74-4845-bad2-58a2a8302a65,bf4eb62a-bc74-4845-bad2-58a2a8302a65,0,1,b66eb190-1c16-4f20-a94f-954bcdf313b8,b66eb190-1c16-4f20-a94f-954bcdf313b8,0,1,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,0,1,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,0,1,b953eafc-20be-4463-8c3e-903184e18402,b953eafc-20be-4463-8c3e-903184e18402,0,1,dcefdde9-645e-43c7-9244-384dadc75439,dcefdde9-645e-43c7-9244-384dadc75439,0,1,bbdfeebd-cda0-4911-8f31-553d751340a7,bbdfeebd-cda0-4911-8f31-553d751340a7,0,1,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,0,1,20aad006-5b1e-4cc2-94ef-668dd002667b,20aad006-5b1e-4cc2-94ef-668dd002667b,0,1,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,0,1,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,0,1,2befb2e3-7354-4a01-83d6-b24262704a5e,2befb2e3-7354-4a01-83d6-b24262704a5e,0,1,5b93975e-b2a4-4102-a060-2667f5813c94,5b93975e-b2a4-4102-a060-2667f5813c94,0,1,ca75d086-cd01-4f54-b57d-1b35bcb1272a,ca75d086-cd01-4f54-b57d-1b35bcb1272a,0,1,b4a27991-2e18-4ead-80e8-f2956a7539e3,b4a27991-2e18-4ead-80e8-f2956a7539e3,0,1,ac8c40d6-be1e-4733-be2e-ae83bde4ec15,ac8c40d6-be1e-4733-be2e-ae83bde4ec15,0,1,be900d20-c02d-476d-9ede-2bc5303ef6cb,be900d20-c02d-476d-9ede-2bc5303ef6cb,0,1,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,0,1,07b53437-cc8d-4834-a1e0-7007538b6eab,07b53437-cc8d-4834-a1e0-7007538b6eab,0,1,0dbec644-cb98-4368-ab76-5997259cbce7,0dbec644-cb98-4368-ab76-5997259cbce7,0,1,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,0,1,dcdc9c65-c2d5-4531-a325-f64b3861cbab,dcdc9c65-c2d5-4531-a325-f64b3861cbab,0,1,ca542a9e-3040-419f-9a98-2a8de230b734,ca542a9e-3040-419f-9a98-2a8de230b734,0,1,c9fc5155-1df3-4872-a83d-72872baf43c4,c9fc5155-1df3-4872-a83d-72872baf43c4,0,1,9f9adb67-66bd-4c28-8319-44ae097ae1fe,9f9adb67-66bd-4c28-8319-44ae097ae1fe,0,1,0bae3704-b370-48be-b094-f18a2e62ad1b,0bae3704-b370-48be-b094-f18a2e62ad1b,0,1,e097bf94-9235-4a27-b0eb-d6387d22cd62,e097bf94-9235-4a27-b0eb-d6387d22cd62,0,1,eccded1c-f3ca-40d3-a8cd-71947bfed7b8,eccded1c-f3ca-40d3-a8cd-71947bfed7b8,0,1,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,0,1,8d2bfd40-f185-4eab-b374-872d49310eb2,8d2bfd40-f185-4eab-b374-872d49310eb2,0,1,523de426-e5a6-49e0-8144-c637f80d8ddd,523de426-e5a6-49e0-8144-c637f80d8ddd,0,1,09256328-6205-4b04-b908-3287ae8ded75,09256328-6205-4b04-b908-3287ae8ded75,0,1,05a6e161-9791-4c5b-8753-bd6370cc4cc9,05a6e161-9791-4c5b-8753-bd6370cc4cc9,0,1,6362facc-bf95-4adf-8ee7-c65f90972a1c,6362facc-bf95-4adf-8ee7-c65f90972a1c,0,1,08dbba81-68fb-49ef-8aac-9631fcfa87c6,08dbba81-68fb-49ef-8aac-9631fcfa87c6,0,1,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,0,1,8170a27d-45e9-48b1-860b-c2d9cc5961cd,8170a27d-45e9-48b1-860b-c2d9cc5961cd,0,1,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,0,1,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,0,1,f41d01ec-983a-4b39-9c11-a6d25d08df4f,f41d01ec-983a-4b39-9c11-a6d25d08df4f,0,1,3247e64e-b57e-4c33-8086-7ab93c5b6371,3247e64e-b57e-4c33-8086-7ab93c5b6371,0,1,e5dca369-dc9a-4332-a509-f734b8787e13,e5dca369-dc9a-4332-a509-f734b8787e13,0,1,722af623-156c-4e63-8b2a-93da760f1559,722af623-156c-4e63-8b2a-93da760f1559,0,1,1abeb10b-0558-4478-8f51-d0964ba3c274,1abeb10b-0558-4478-8f51-d0964ba3c274,0,1,38325a66-588a-4db0-8e0c-21d239408369,38325a66-588a-4db0-8e0c-21d239408369,0,1,7c27e885-33fd-4da2-a60d-50336c0189b0,7c27e885-33fd-4da2-a60d-50336c0189b0,0,1,4b849c66-6a36-4efd-815e-af4467c6f064,4b849c66-6a36-4efd-815e-af4467c6f064,0,1,f6939587-ff87-4eca-ae52-10e1bd2abfce,f6939587-ff87-4eca-ae52-10e1bd2abfce,0,1,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,0,1,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,0,1,3cb575a9-dc82-45e0-81f0-d651e12246da,3cb575a9-dc82-45e0-81f0-d651e12246da,0,1,01a73950-3e8f-4f56-903f-af0d9574e72e,01a73950-3e8f-4f56-903f-af0d9574e72e,0,1,14bd0844-c829-4325-aa7f-0f417bf955dc,14bd0844-c829-4325-aa7f-0f417bf955dc,0,1,7f1cd658-ca10-49c6-80ef-b8956f3269ea,7f1cd658-ca10-49c6-80ef-b8956f3269ea,0,1,b0d9086f-cef7-47a8-ad62-d85fea28ebda,b0d9086f-cef7-47a8-ad62-d85fea28ebda,0,1,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,0,1,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,0,1,49c010fc-f5cc-45f4-ba46-132e7661c3dd,49c010fc-f5cc-45f4-ba46-132e7661c3dd,0,1,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,0,1,2c02a558-8d12-44cf-be6b-9c399b9032e5,2c02a558-8d12-44cf-be6b-9c399b9032e5,0,1,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,0,1,9c267aa6-5f23-49f6-868a-3324ef2845ff,9c267aa6-5f23-49f6-868a-3324ef2845ff,0,1,495eeeee-d7bf-4063-99e2-86daa066451a,495eeeee-d7bf-4063-99e2-86daa066451a,0,1,b6184698-79e4-4c19-9440-092ccd9dabf8,b6184698-79e4-4c19-9440-092ccd9dabf8,0,1,7d01fc0c-378e-421d-ab70-6a418eed5941,7d01fc0c-378e-421d-ab70-6a418eed5941,0,1,6eeb4867-bf9d-48dc-b96b-934a0c293010,6eeb4867-bf9d-48dc-b96b-934a0c293010,0,1,c7f817ee-9f6a-454c-95a0-b279fd08055e,c7f817ee-9f6a-454c-95a0-b279fd08055e,0,1,e1803e54-ec5e-4a82-8097-5e2331820991,e1803e54-ec5e-4a82-8097-5e2331820991,0,1,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,0,1,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,0,1,8506dbe9-7066-444b-83b6-fb2d71a336e7,8506dbe9-7066-444b-83b6-fb2d71a336e7,0,1,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,0,1,6686d828-3129-4d44-a8a2-a64657d424cb,6686d828-3129-4d44-a8a2-a64657d424cb,0,1,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,0,1,ce235ab9-1dec-459a-9fec-498c262ece56,ce235ab9-1dec-459a-9fec-498c262ece56,0,1,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,0,1,39355e82-30a6-431e-9697-e2c42e82de83,39355e82-30a6-431e-9697-e2c42e82de83,0,1,a9ae364f-b668-4fb4-b976-f227951ffb6b,a9ae364f-b668-4fb4-b976-f227951ffb6b,0,1,edc01b03-8b01-4551-939a-f7e257892040,edc01b03-8b01-4551-939a-f7e257892040,0,1,15d09274-9508-4f64-9ea3-678c5aa50f0f,15d09274-9508-4f64-9ea3-678c5aa50f0f,0,1,4debe032-12e4-4777-b2fc-70b150f2aad1,4debe032-12e4-4777-b2fc-70b150f2aad1,0,1,37558fa2-0833-46d6-9e4f-63d4a3136870,37558fa2-0833-46d6-9e4f-63d4a3136870,0,1,d92cb614-ed09-47db-b70b-d3e533c44c6a,d92cb614-ed09-47db-b70b-d3e533c44c6a,0,1,e660c8bf-af5f-4525-a56e-68925d2b96fa,e660c8bf-af5f-4525-a56e-68925d2b96fa,0,1,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,0,1,528d96cc-8838-49ea-8d76-ea56747882e0,528d96cc-8838-49ea-8d76-ea56747882e0,0,1,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,0,1,1681dd7a-de80-4b8d-9657-c9702a19d653,1681dd7a-de80-4b8d-9657-c9702a19d653,0,1,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,0,1,9f593f27-8009-40c0-94d6-53f177ce55f4,9f593f27-8009-40c0-94d6-53f177ce55f4,0,1,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,0,1,530a3164-4ef1-4b3b-8269-13764ef4bf15,530a3164-4ef1-4b3b-8269-13764ef4bf15,0,1,6df2bb92-558c-4453-9de4-e4176e8f93dc,6df2bb92-558c-4453-9de4-e4176e8f93dc,0,1,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0,1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,0,1,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0,1,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,0,1,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,0,1,be15e947-f671-4848-ada1-51239af73615,be15e947-f671-4848-ada1-51239af73615,0,1,d3e0dd8f-886a-4441-8f05-fd629da80f07,d3e0dd8f-886a-4441-8f05-fd629da80f07,0,1,6417d7c8-6436-4907-98eb-44cd7638f3f1,6417d7c8-6436-4907-98eb-44cd7638f3f1,0,1,ba49877b-6e30-4177-a67c-00e65aa498fb,ba49877b-6e30-4177-a67c-00e65aa498fb,0,1,25b39aeb-94c3-4199-9d56-5bd87e325bf2,25b39aeb-94c3-4199-9d56-5bd87e325bf2,0,1,b0b63551-4e83-4201-af9a-b4ab150c43a5,b0b63551-4e83-4201-af9a-b4ab150c43a5,0,1,2bd80198-4739-4e8f-9af1-40addc91a05b,2bd80198-4739-4e8f-9af1-40addc91a05b,0,1,33c66a15-e48e-406a-a77c-02af72ae96d5,33c66a15-e48e-406a-a77c-02af72ae96d5,0,1,ebd3dcc2-1176-4ee0-b590-ee39f85fb55b,ebd3dcc2-1176-4ee0-b590-ee39f85fb55b,0,1,77fe53c2-de9d-4483-97c9-f7d44e137d5e,77fe53c2-de9d-4483-97c9-f7d44e137d5e,0,1,593be64c-6792-46d9-8618-84c50c9ad9e4,593be64c-6792-46d9-8618-84c50c9ad9e4,0,1,208d29cb-040f-4282-b8e8-dda8417b8e92,208d29cb-040f-4282-b8e8-dda8417b8e92,0,1,9935d602-668e-4df9-a338-0f542def878b,9935d602-668e-4df9-a338-0f542def878b,0,1,459ed297-0c0d-4bdb-90a3-da387868f040,459ed297-0c0d-4bdb-90a3-da387868f040,0,1,ccb5b9a7-1a10-4803-b455-0350afe4b584,ccb5b9a7-1a10-4803-b455-0350afe4b584,0,1,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,0,1,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0,1,ba5e7c41-0442-4f74-ba41-631d864eafb4,ba5e7c41-0442-4f74-ba41-631d864eafb4,0,1,3913f78f-ce34-4ae3-840a-ccdf06319cbb,3913f78f-ce34-4ae3-840a-ccdf06319cbb,0,1,104cf3e3-2104-4ac2-bdc6-792750a63ea0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,0,1,c86aa97a-5898-4cb2-ae62-598bddf8e99f,c86aa97a-5898-4cb2-ae62-598bddf8e99f,0,1,d3c9b925-6b74-42db-8b21-ab21d24797d1,d3c9b925-6b74-42db-8b21-ab21d24797d1,0,1,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,0,1,39261a2d-7c46-40b1-9f8f-02d970aa04bc,39261a2d-7c46-40b1-9f8f-02d970aa04bc,0,1,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,0,1,124a516f-cdab-49ce-95d1-359921140342,124a516f-cdab-49ce-95d1-359921140342,0,1,e4294611-a770-4e67-9578-a1f370879476,e4294611-a770-4e67-9578-a1f370879476,0,1,c5033dd2-0911-4124-8688-dc9dabf3155f,c5033dd2-0911-4124-8688-dc9dabf3155f,0,1,274357df-cb5c-407d-ae72-58046c310db2,274357df-cb5c-407d-ae72-58046c310db2,0,1,5467001e-d025-4669-b16e-26381ac4403f,5467001e-d025-4669-b16e-26381ac4403f,0,1,a4e56049-4de9-40a3-8197-a5c84a11f516,a4e56049-4de9-40a3-8197-a5c84a11f516,0,1,339c9220-fd5b-45d3-b300-cdcc8788f87e,339c9220-fd5b-45d3-b300-cdcc8788f87e,0,1,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,0,1,9042a6de-5048-432d-a448-7e21f2d1d24a,9042a6de-5048-432d-a448-7e21f2d1d24a,0,1,350d46bf-114e-48e7-90c6-6708d949f20d,350d46bf-114e-48e7-90c6-6708d949f20d,0,1,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,0,1,aac20ff3-5873-432e-b763-14411e623d41,aac20ff3-5873-432e-b763-14411e623d41,0,1,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,0,1,6df44466-8750-481a-9baf-c924f0d45353,6df44466-8750-481a-9baf-c924f0d45353,0,1,110121eb-a0eb-4662-8911-3dcc3d341a73,110121eb-a0eb-4662-8911-3dcc3d341a73,0,1,f8980c18-6b9c-4e45-919a-22e976d2a846,f8980c18-6b9c-4e45-919a-22e976d2a846,0,1,c946efb7-c67e-49c1-bf56-d3c2d7220acd,c946efb7-c67e-49c1-bf56-d3c2d7220acd,0,1,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,0,1,6b7c9f74-f2b6-463e-acb9-9f82901986cf,6b7c9f74-f2b6-463e-acb9-9f82901986cf,0,1,fc4c1d64-132b-4687-a37d-05000fdb4ba5,fc4c1d64-132b-4687-a37d-05000fdb4ba5,0,1,528777cd-090b-4b70-82f5-56def98c5893,528777cd-090b-4b70-82f5-56def98c5893,0,1,49dbe467-8832-4ede-9a05-494248619aeb,49dbe467-8832-4ede-9a05-494248619aeb,0,1,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,0,1,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,0,1,09c73108-8528-4970-9b7f-fff9eda7816a,09c73108-8528-4970-9b7f-fff9eda7816a,0,1,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,0,1,f568245a-d158-45dc-af92-2d411f12db7b,f568245a-d158-45dc-af92-2d411f12db7b,0,1,0f17cdac-aa17-45e6-b3d0-220b13345390,0f17cdac-aa17-45e6-b3d0-220b13345390,0,1,c675db75-d0c3-4026-b97c-6b23ecbb336a,c675db75-d0c3-4026-b97c-6b23ecbb336a,0,1,469f67fa-98b0-44b0-abd4-cae136c02834,469f67fa-98b0-44b0-abd4-cae136c02834,0,1,16a18458-999c-420e-80df-8fc10855746c,16a18458-999c-420e-80df-8fc10855746c,0,1,b794f222-0fde-439f-97a3-0da74075b415,b794f222-0fde-439f-97a3-0da74075b415,0,1,3a716aad-9b2c-48a7-b802-80732066391b,3a716aad-9b2c-48a7-b802-80732066391b,0,1,480d959f-aac8-4241-875f-78e1c1f32621,480d959f-aac8-4241-875f-78e1c1f32621,0,1,496e5de8-d75c-4536-9993-75374f070b40,496e5de8-d75c-4536-9993-75374f070b40,0,1,b4e610ba-c9c8-4b25-903b-e567dcbc2556,b4e610ba-c9c8-4b25-903b-e567dcbc2556,0,1,48febdbd-a085-4113-8511-ed7ff6be7d3c,48febdbd-a085-4113-8511-ed7ff6be7d3c,0,1,49413232-c0c3-4983-9d10-291a0399281b,49413232-c0c3-4983-9d10-291a0399281b,0,1,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,0,1,b9b076bb-38ab-4a94-8226-41a4d4d7432c,b9b076bb-38ab-4a94-8226-41a4d4d7432c,0,1,e12da8db-4037-473e-ba2b-d0ceb4534dcb,e12da8db-4037-473e-ba2b-d0ceb4534dcb,0,1,789514e5-8ea3-4a5e-88c5-ed89c4135866,789514e5-8ea3-4a5e-88c5-ed89c4135866,0,1,a16768ff-6137-43d8-8784-4805ed83632a,a16768ff-6137-43d8-8784-4805ed83632a,0,1,61971286-9f94-4a27-aa34-e10848adb70a,61971286-9f94-4a27-aa34-e10848adb70a,0,1,1e75d143-3452-496e-a137-6d7f4c4ed019,1e75d143-3452-496e-a137-6d7f4c4ed019,0,1,e0619d14-c658-4eb5-841a-3a029de28be4,e0619d14-c658-4eb5-841a-3a029de28be4,0,1,99a3b660-7875-47f7-9c6c-c552e5673deb,99a3b660-7875-47f7-9c6c-c552e5673deb,0,1,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,0,1,41cbf934-ea54-41df-abf0-09f319d2e67a,41cbf934-ea54-41df-abf0-09f319d2e67a,0,1,47246084-a5f8-4d0f-b4e2-204c1b97483a,47246084-a5f8-4d0f-b4e2-204c1b97483a,0,1,e58233ec-6cfc-4a8b-9929-689fa69cdb07,e58233ec-6cfc-4a8b-9929-689fa69cdb07,0,1,3291a891-a47c-43ca-b088-aecd3867d38c,3291a891-a47c-43ca-b088-aecd3867d38c,0,1,56cde2b4-00f2-49ba-b407-16e241c17fd2,56cde2b4-00f2-49ba-b407-16e241c17fd2,0,1,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,0,1,219ed110-f2a0-41c1-ac5a-02301b248c54,219ed110-f2a0-41c1-ac5a-02301b248c54,0,1,1c722dfd-2b07-4985-9188-17353de24771,1c722dfd-2b07-4985-9188-17353de24771,0,1,1a630496-2cdd-4c89-a1aa-ed20545ad133,1a630496-2cdd-4c89-a1aa-ed20545ad133,0,1,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,0,1,b19cea0e-e57a-4969-8daf-f48d3d16705f,b19cea0e-e57a-4969-8daf-f48d3d16705f,0,1,d4059340-3361-4baa-ae48-ecbfb9800a2e,d4059340-3361-4baa-ae48-ecbfb9800a2e,0,1,f78f6c43-dd90-4117-acf7-ed5b951cb964,f78f6c43-dd90-4117-acf7-ed5b951cb964,0,1,8eebd519-4989-4784-82b8-39d77eebfb17,8eebd519-4989-4784-82b8-39d77eebfb17,0,1,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0,1,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,0,1,4527877b-5723-4aa5-8705-98174ac9c337,4527877b-5723-4aa5-8705-98174ac9c337,0,1,d6b21e7b-df57-4280-8c95-c269b5316018,d6b21e7b-df57-4280-8c95-c269b5316018,0,1,808c468b-6322-428d-ac6a-ccf2228b05b6,808c468b-6322-428d-ac6a-ccf2228b05b6,0,1,13664bb2-738f-4d18-b382-a7bcf8105a5a,13664bb2-738f-4d18-b382-a7bcf8105a5a,0,1,f3f56abe-9248-4555-bf99-29560eb4f9ee,f3f56abe-9248-4555-bf99-29560eb4f9ee,0,1,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0,1,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,0,1,3eb43a06-b32d-4904-8489-6264d0207623,3eb43a06-b32d-4904-8489-6264d0207623,0,1,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,0,1,18615fe1-cfee-4888-9c09-88d1c5db39eb,18615fe1-cfee-4888-9c09-88d1c5db39eb,0,1,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,0,1,087c83c0-75e7-476b-b7c6-5be55498a190,087c83c0-75e7-476b-b7c6-5be55498a190,0,1,ec5e5413-9e77-4929-83b8-6fee70688b28,ec5e5413-9e77-4929-83b8-6fee70688b28,0,1,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,0,1,8390c864-2b84-4c45-8583-cb4a4ab49168,8390c864-2b84-4c45-8583-cb4a4ab49168,0,1,1b2fefca-fef5-4319-90cc-325444cb63a6,1b2fefca-fef5-4319-90cc-325444cb63a6,0,1,34a128be-8fbb-4dd8-ac23-9f35041feb63,34a128be-8fbb-4dd8-ac23-9f35041feb63,0,1,baa31006-e0d6-496e-a60e-27b3dfd19397,baa31006-e0d6-496e-a60e-27b3dfd19397,0,1,3007d8ff-3942-45ed-bac5-8a6c40ca060c,3007d8ff-3942-45ed-bac5-8a6c40ca060c,0,1,8bfe1474-fd12-4744-a9ab-3383bfe766b3,8bfe1474-fd12-4744-a9ab-3383bfe766b3,0,1,3af97375-f776-4129-9521-b8d65d795db6,3af97375-f776-4129-9521-b8d65d795db6,0,1,0e98801b-a45b-44cb-a341-7e43d723f6ed,0e98801b-a45b-44cb-a341-7e43d723f6ed,0,1,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,0,1,103ac72d-c386-40ea-89d4-35798d064f1a,103ac72d-c386-40ea-89d4-35798d064f1a,0,1,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,0,1,d1fe15e9-8e5c-4819-85cd-24ab31409437,d1fe15e9-8e5c-4819-85cd-24ab31409437,0,1,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,0,1,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,0,1,74f68bda-17b1-4b3c-aa64-b1014300f9b5,74f68bda-17b1-4b3c-aa64-b1014300f9b5,0,1,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,0,1,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,0,1,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,0,1,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,0,1,47ee7d38-9fa9-458d-abee-e11270f79494,47ee7d38-9fa9-458d-abee-e11270f79494,0,1,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,0,1,076daecf-8fcb-496b-9f13-c4faa3a8a722,076daecf-8fcb-496b-9f13-c4faa3a8a722,0,1,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,0,1,296d7725-bdd3-4210-9db9-31de5711ea9b,296d7725-bdd3-4210-9db9-31de5711ea9b,0,1,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,0,1,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1d05f89a-23dd-4d30-8786-abe8a9a39a40,0,1,245c2c6c-7b7f-4381-9304-1d7287a215fa,245c2c6c-7b7f-4381-9304-1d7287a215fa,0,1,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,0,1,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,0,1,8bb5be12-98df-4a38-bffe-432fb13d8101,8bb5be12-98df-4a38-bffe-432fb13d8101,0,1,94209023-ce88-401c-9aff-526fb7e43709,94209023-ce88-401c-9aff-526fb7e43709,0,1,22b99094-b52a-4244-ae91-53848d82560b,22b99094-b52a-4244-ae91-53848d82560b,0,1,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,0,1,b0002134-d5c9-4508-9f0e-97f92461b590,b0002134-d5c9-4508-9f0e-97f92461b590,0,1,1506ec71-cb38-4831-a29d-dac2c4deddda,1506ec71-cb38-4831-a29d-dac2c4deddda,0,1,e05fd82b-b77b-4b7f-b300-43653017f341,e05fd82b-b77b-4b7f-b300-43653017f341,0,1,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,0,1,f15a0526-c207-42fe-aed9-438ae0c4a4b8,f15a0526-c207-42fe-aed9-438ae0c4a4b8,0,1,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,0,1,8583cab0-0620-4346-96e0-bcac40981b8a,8583cab0-0620-4346-96e0-bcac40981b8a,0,1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,0,1,095990b1-187b-400c-941a-275f272239ca,095990b1-187b-400c-941a-275f272239ca,0,1,ba108470-350d-40c3-bb44-9852c2aa8c97,ba108470-350d-40c3-bb44-9852c2aa8c97,0,1,a37c33fa-64b0-4a1b-846a-0a236bad44f8,a37c33fa-64b0-4a1b-846a-0a236bad44f8,0,1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,0,1,a50f4324-da44-449b-b500-74228b2aa7e0,a50f4324-da44-449b-b500-74228b2aa7e0,0,1,04236716-9c36-4a1d-b4fb-4b8c65644ab4,04236716-9c36-4a1d-b4fb-4b8c65644ab4,0,1,97276702-6686-4ac4-8360-d85369a08b20,97276702-6686-4ac4-8360-d85369a08b20,0,1,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,0,1,068883fe-d7ae-40e7-ad82-864867916daa,068883fe-d7ae-40e7-ad82-864867916daa,0,1,c1b02568-2095-4f83-8543-2402f67dbe3d,c1b02568-2095-4f83-8543-2402f67dbe3d,0,1,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,0,1,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,0,1,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,0,1,aecbd726-6952-49e6-b544-4c5cc764c24c,aecbd726-6952-49e6-b544-4c5cc764c24c,0,1,d335cfbf-bc78-4274-a178-10f60372474a,d335cfbf-bc78-4274-a178-10f60372474a,0,1,0f4411b3-addf-4fcf-8da8-c5140dea356c,0f4411b3-addf-4fcf-8da8-c5140dea356c,0,1,c501f9ab-d01b-4137-8cd0-e66103117c84,c501f9ab-d01b-4137-8cd0-e66103117c84,0,1,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,0,1,66e65355-1424-4c74-801c-faf5357257aa,66e65355-1424-4c74-801c-faf5357257aa,0,1,0a93187b-7ae4-4985-8089-3099dfec2b48,0a93187b-7ae4-4985-8089-3099dfec2b48,0,1,044458f3-ed9b-4afb-ae73-8f9162c032bf,044458f3-ed9b-4afb-ae73-8f9162c032bf,0,1,578f618e-5f4a-4e86-959d-39b59e973936,578f618e-5f4a-4e86-959d-39b59e973936,0,1,f74ede2e-2d28-4224-ba44-773eda7760a4,f74ede2e-2d28-4224-ba44-773eda7760a4,0,1,217df06a-1bdf-4394-b617-ed756ff17bc6,217df06a-1bdf-4394-b617-ed756ff17bc6,0,1,a1572e97-a487-497a-9062-49315e237e0f,a1572e97-a487-497a-9062-49315e237e0f,0,1,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,0,1,3c5d87a0-cfce-464a-b946-64c5a589a376,3c5d87a0-cfce-464a-b946-64c5a589a376,0,1,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,0,1,763de8d1-7f53-41b6-8d97-7da724e9f763,763de8d1-7f53-41b6-8d97-7da724e9f763,0,1,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,0,1,4ad59c75-cca4-4968-82e6-babd72d8b318,4ad59c75-cca4-4968-82e6-babd72d8b318,0,1,c248de15-63a2-48ec-8695-7a5213d4fc9b,c248de15-63a2-48ec-8695-7a5213d4fc9b,0,1,272ff0f9-7266-4c22-be12-fe62682b56a5,272ff0f9-7266-4c22-be12-fe62682b56a5,0,1,9f141dd5-d866-4c25-b58a-a7766a08b4e7,9f141dd5-d866-4c25-b58a-a7766a08b4e7,0,1,0570d846-889d-4cfc-98fb-a1ad0181597f,0570d846-889d-4cfc-98fb-a1ad0181597f,0,1,19e17c58-953f-4917-8b6a-c88808fcca36,19e17c58-953f-4917-8b6a-c88808fcca36,0,1,4804316d-3765-4a83-8438-10e8e82656db,4804316d-3765-4a83-8438-10e8e82656db,0,1,59458556-e343-4215-8e6c-69f924ec4183,59458556-e343-4215-8e6c-69f924ec4183,0,1,dd553dca-7eba-41bf-8939-2c61e170ff65,dd553dca-7eba-41bf-8939-2c61e170ff65,0,1,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,0,1,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,0,1,8099e978-28cc-4ade-ac5a-3785f3a45f70,8099e978-28cc-4ade-ac5a-3785f3a45f70,0,1,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,0,1,fe023ca5-f11a-4b98-99c1-363508e4ea4a,fe023ca5-f11a-4b98-99c1-363508e4ea4a,0,1,6f8d515e-13d9-45f8-9793-3757f5b85f81,6f8d515e-13d9-45f8-9793-3757f5b85f81,0,1,25ec541c-c437-4318-b2a8-5146df6ae080,25ec541c-c437-4318-b2a8-5146df6ae080,0,1,148754ed-3063-40a7-a3c3-8ad105552370,148754ed-3063-40a7-a3c3-8ad105552370,0,1,ab3f0862-c355-4fd7-a2a7-4eb8278de510,ab3f0862-c355-4fd7-a2a7-4eb8278de510,0,1,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,0,1,c12c3f3b-3a96-4e70-b131-8d7bd765095f,c12c3f3b-3a96-4e70-b131-8d7bd765095f,0,1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,0,1,c563588c-346e-499e-ae33-9ff3cb62e658,c563588c-346e-499e-ae33-9ff3cb62e658,0,1,40dbc001-97b6-4188-8de9-3adac670bac4,40dbc001-97b6-4188-8de9-3adac670bac4,0,1,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,0,1,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,0,1,93aa5247-6823-4f70-9d47-e5a0f409828a,93aa5247-6823-4f70-9d47-e5a0f409828a,0,1,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,0,1,b19f1223-5ebe-4446-bacc-bc7d53486f2e,b19f1223-5ebe-4446-bacc-bc7d53486f2e,0,1,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,0,1,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,0,1,bf3167d6-3047-482a-b280-184f446ae7a3,bf3167d6-3047-482a-b280-184f446ae7a3,0,1,50c47c0a-a199-4020-9df4-91b17c159454,50c47c0a-a199-4020-9df4-91b17c159454,0,1,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,0,1,faecdc33-fed8-4b44-96f4-4215c26959b6,faecdc33-fed8-4b44-96f4-4215c26959b6,0,1,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,0,1,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,0,1,9df3792e-a4ee-4a2c-9296-c1384925521e,9df3792e-a4ee-4a2c-9296-c1384925521e,0,1,03d423db-f98a-468f-9040-5b76454e5a98,03d423db-f98a-468f-9040-5b76454e5a98,0,1,08f394f9-d254-4fe5-8651-a69c96de7a62,08f394f9-d254-4fe5-8651-a69c96de7a62,0,1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,0,1,6aff6b2f-660b-4d75-9064-fed7a6b0feac,6aff6b2f-660b-4d75-9064-fed7a6b0feac,0,1,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,0,1,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,0,1,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,0,1,e60a9221-7676-456f-8a01-b317b03a278b,e60a9221-7676-456f-8a01-b317b03a278b,0,1,4e81ec90-f668-49ca-9193-22337bafb01b,4e81ec90-f668-49ca-9193-22337bafb01b,0,1,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,0,1,cd60adec-52d6-4fa8-85ca-26551196432c,cd60adec-52d6-4fa8-85ca-26551196432c,0,1,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,0,1,b71ddbdb-08bb-46be-a79d-319c4a557e76,b71ddbdb-08bb-46be-a79d-319c4a557e76,0,1,d3dfa867-3d52-4872-a69e-f27636abe1bd,d3dfa867-3d52-4872-a69e-f27636abe1bd,0,1,6952d1aa-7132-4e40-8542-f64a4dc1e029,6952d1aa-7132-4e40-8542-f64a4dc1e029,0,1,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,0,1,1621811b-dfd3-4c58-8e15-ced16690147a,1621811b-dfd3-4c58-8e15-ced16690147a,0,1,3f266e51-0476-4b7f-8d61-6f9f4456049d,3f266e51-0476-4b7f-8d61-6f9f4456049d,0,1,2b9ce591-ff13-4c2d-85c4-632a2609a211,2b9ce591-ff13-4c2d-85c4-632a2609a211,0,1,689ca0ec-61ce-4590-b73b-ac81e8f1d459,689ca0ec-61ce-4590-b73b-ac81e8f1d459,0,1,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,0,1,55ad36d7-399e-4b82-8d1c-d45bd890abfe,55ad36d7-399e-4b82-8d1c-d45bd890abfe,0,1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0,1,1b39a65f-5425-4bcb-85bd-1425274af8a8,1b39a65f-5425-4bcb-85bd-1425274af8a8,0,1,392a0618-a41a-4713-a561-f3a80b85abd8,392a0618-a41a-4713-a561-f3a80b85abd8,0,1,a453384d-658d-40f1-ac69-578aa3a24e39,a453384d-658d-40f1-ac69-578aa3a24e39,0,1,2215a441-b9b1-4e5c-8df3-e6cee9226c43,2215a441-b9b1-4e5c-8df3-e6cee9226c43,0,1,2a8d4908-ea0d-4837-be3f-bd78f6b61254,2a8d4908-ea0d-4837-be3f-bd78f6b61254,0,1,ec1deb79-7369-4b26-8e91-f51399e8052a,ec1deb79-7369-4b26-8e91-f51399e8052a,0,1,75dde4fb-3a1a-450c-95c2-c1f95a781db9,75dde4fb-3a1a-450c-95c2-c1f95a781db9,0,1,0ae3ac56-160a-417e-9952-719d02e7f089,0ae3ac56-160a-417e-9952-719d02e7f089,0,1,f5b3983d-d22d-44a8-9069-0a60d8b858bf,f5b3983d-d22d-44a8-9069-0a60d8b858bf,0,1,48659b94-ace8-45f4-a043-6b2731ec6925,48659b94-ace8-45f4-a043-6b2731ec6925,0,1,3a8e60f9-19cb-42a6-a448-ad211261d9b8,3a8e60f9-19cb-42a6-a448-ad211261d9b8,0,1,74320602-094a-4645-b2c9-3053377a3ac3,74320602-094a-4645-b2c9-3053377a3ac3,0,1,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,0,1,b066c732-9c5f-4504-894f-96d457b0768f,b066c732-9c5f-4504-894f-96d457b0768f,0,1,9366463d-aa8a-4e89-86d8-c7f746f9551b,9366463d-aa8a-4e89-86d8-c7f746f9551b,0,1,e25da569-d435-45b2-b4e8-fc76d7f1c8df,e25da569-d435-45b2-b4e8-fc76d7f1c8df,0,1,a51a7f57-9c52-4457-819c-13e1b6f886e1,a51a7f57-9c52-4457-819c-13e1b6f886e1,0,1,7d08daba-5e36-4ce3-8a70-17750959b89e,7d08daba-5e36-4ce3-8a70-17750959b89e,0,1,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,0,1,39344a8c-2662-48ff-937b-12951bb268fb,39344a8c-2662-48ff-937b-12951bb268fb,0,1,b577663f-ead2-4b18-a4f6-f7f303e89319,b577663f-ead2-4b18-a4f6-f7f303e89319,0,1,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,0,1,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,0,1,72663843-4010-42ed-989b-0b58bf9f7146,72663843-4010-42ed-989b-0b58bf9f7146,0,1,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,0,1,3adcceea-867e-4b88-a633-4f8d4ccb43c0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,0,1,a132189c-6584-4bb1-9cfd-1415cd83228a,a132189c-6584-4bb1-9cfd-1415cd83228a,0,1,7ba50e13-0a78-4cca-821f-006b1c83b0b0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,0,1,a3670f95-5abe-49ee-8ea5-d7e4438801ba,a3670f95-5abe-49ee-8ea5-d7e4438801ba,0,1,4443dea1-5143-4e76-97a7-c35dbe1665e4,4443dea1-5143-4e76-97a7-c35dbe1665e4,0,1,0d780521-0767-425a-b44d-315d2dc42d04,0d780521-0767-425a-b44d-315d2dc42d04,0,1,c5b1572d-28f5-42f3-b2e0-8b54f091642e,c5b1572d-28f5-42f3-b2e0-8b54f091642e,0,1,0986c1b6-b677-428d-b49f-a93e40e77171,0986c1b6-b677-428d-b49f-a93e40e77171,0,1,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,0,1,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,0,1,b6662b2e-7e93-4eaa-9e4b-b5647285932b,b6662b2e-7e93-4eaa-9e4b-b5647285932b,0,1,4a180f2c-dc54-4591-8f62-f236d1e07799,4a180f2c-dc54-4591-8f62-f236d1e07799,0,1,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,0,1,a9a51e79-4c79-4a43-931b-c0321c1cd65b,a9a51e79-4c79-4a43-931b-c0321c1cd65b,0,1,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,0,1,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,0,1,22f2696e-0ac1-4a74-bca9-987b267b2b59,22f2696e-0ac1-4a74-bca9-987b267b2b59,0,1,d705cacc-3485-46d7-9ff4-48c3c0757c81,d705cacc-3485-46d7-9ff4-48c3c0757c81,0,1,98f043ea-633c-4a03-a56f-efbc9e6ef288,98f043ea-633c-4a03-a56f-efbc9e6ef288,0,1,2033b92a-0750-478a-a12d-cf4f74d0a9da,2033b92a-0750-478a-a12d-cf4f74d0a9da,0,1,92fa2196-d8e5-45f9-9d2e-59d837b163ea,92fa2196-d8e5-45f9-9d2e-59d837b163ea,0,1,25dc2290-e283-4449-81c1-1ce15b58067f,25dc2290-e283-4449-81c1-1ce15b58067f,0,1,c534a865-a17f-41e7-88b9-c6af89c9d202,c534a865-a17f-41e7-88b9-c6af89c9d202,0,1,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,0,1,0127937c-94c0-43fe-9630-cc2ec6904ad8,0127937c-94c0-43fe-9630-cc2ec6904ad8,0,1,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,0,1,8df5b3cd-7788-4198-a530-e88be83f1cdf,8df5b3cd-7788-4198-a530-e88be83f1cdf,0,1,ffaeea66-66d5-4741-a9b5-875afebfce7f,ffaeea66-66d5-4741-a9b5-875afebfce7f,0,1,4e36184e-d818-4f38-9257-6d91d9cc85ae,4e36184e-d818-4f38-9257-6d91d9cc85ae,0,1,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,0,1,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,0,1,3893a258-a9c7-441a-b80c-1cc8c3f4735c,3893a258-a9c7-441a-b80c-1cc8c3f4735c,0,1,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,0,1,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,0,1,420748d8-4042-4e1e-aca1-ac0190cdf54e,420748d8-4042-4e1e-aca1-ac0190cdf54e,0,1,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,0,1,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,0,1,f8a456fa-a533-444c-a504-0e74306ada44,f8a456fa-a533-444c-a504-0e74306ada44,0,1,4751a91a-f211-4f66-8238-9bb5668cbc67,4751a91a-f211-4f66-8238-9bb5668cbc67,0,1,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,0,1,e6c871d6-e06f-420b-ae04-dbf735d3233d,e6c871d6-e06f-420b-ae04-dbf735d3233d,0,1,b9a6b053-2b93-4946-9531-040d3131dcc5,b9a6b053-2b93-4946-9531-040d3131dcc5,0,1,6287eded-23d8-4b04-8415-1d9afa17713b,6287eded-23d8-4b04-8415-1d9afa17713b,0,1,8ce3513d-d086-46f4-81c3-1761594a64c5,8ce3513d-d086-46f4-81c3-1761594a64c5,0,1,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,0,1,2ccbc9aa-52d3-4cf3-8e83-77aaef82a38d,2ccbc9aa-52d3-4cf3-8e83-77aaef82a38d,0,1,e9c632b0-7977-4e44-ac56-882617ad7cdc,e9c632b0-7977-4e44-ac56-882617ad7cdc,0,1,e84acba7-7e0f-43e8-a545-6e53d529d5d4,e84acba7-7e0f-43e8-a545-6e53d529d5d4,0,1,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,0,1,6086d53f-f1b2-4126-ab46-64705fe63b87,6086d53f-f1b2-4126-ab46-64705fe63b87,0,1,9295d88f-0865-440c-a98a-4710c50211be,9295d88f-0865-440c-a98a-4710c50211be,0,1,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,0,1,38ac9a13-665a-4201-b5cc-687fe4a01130,38ac9a13-665a-4201-b5cc-687fe4a01130,0,1,97c59096-b2dc-45d0-a580-b3018a04f9af,97c59096-b2dc-45d0-a580-b3018a04f9af,0,1,6fbf63b7-1692-495e-a8ec-bdda182997a3,6fbf63b7-1692-495e-a8ec-bdda182997a3,0,1,8172256e-f51e-4de0-bd07-3668785f4cb9,8172256e-f51e-4de0-bd07-3668785f4cb9,0,1,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,0,1,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,0,1,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,0,1,c172aeaf-b444-47c0-baee-80ccd91fe934,c172aeaf-b444-47c0-baee-80ccd91fe934,0,1,b8c36d5a-7966-4978-9225-67502b9c60a4,b8c36d5a-7966-4978-9225-67502b9c60a4,0,1,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,0,1,bb6e6574-4328-4cf5-a043-a7d8f6c81414,bb6e6574-4328-4cf5-a043-a7d8f6c81414,0,1,b46b5090-5eb1-4950-9031-8b43f611fa9c,b46b5090-5eb1-4950-9031-8b43f611fa9c,0,1,94e02f76-8656-4999-9470-dd996118400c,94e02f76-8656-4999-9470-dd996118400c,0,1,9effd265-3783-44e2-8698-80dd82137546,9effd265-3783-44e2-8698-80dd82137546,0,1,bef52020-98f8-465b-8981-e5f8eed62308,bef52020-98f8-465b-8981-e5f8eed62308,0,1,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,0,1,e731dab7-df9e-48ae-8542-4c0c30666ae9,e731dab7-df9e-48ae-8542-4c0c30666ae9,0,1,6ac484a9-4d96-4521-9b8c-66212a365725,6ac484a9-4d96-4521-9b8c-66212a365725,0,1,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0,1,bde05768-2dd6-4800-985d-27075f610cca,bde05768-2dd6-4800-985d-27075f610cca,0,1,d18956cf-e449-48cc-a127-01b5dc910ea2,d18956cf-e449-48cc-a127-01b5dc910ea2,0,1,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,0,1,e352fc19-96be-4410-a516-bc58cc234422,e352fc19-96be-4410-a516-bc58cc234422,0,1,9b742da4-1696-4c06-9dfa-dd85c9286c74,9b742da4-1696-4c06-9dfa-dd85c9286c74,0,1,757ea742-8c14-4e0a-a867-432eee5cfc64,757ea742-8c14-4e0a-a867-432eee5cfc64,0,1,db1062bc-4164-4095-9640-9804c0ebcd0b,db1062bc-4164-4095-9640-9804c0ebcd0b,0,1,d5a13430-518a-4917-9de9-d00abbcce500,d5a13430-518a-4917-9de9-d00abbcce500,0,1,ea7c61ff-745c-4908-9a94-bba022d12de4,ea7c61ff-745c-4908-9a94-bba022d12de4,0,1,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,0,1,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,0,1,53caada5-1d53-45dc-9432-90075ddca890,53caada5-1d53-45dc-9432-90075ddca890,0,1,d1472d23-954b-4069-b2d6-df08c6ec0be1,d1472d23-954b-4069-b2d6-df08c6ec0be1,0,1,93fe2ce6-7193-42bc-a966-4653b7989eaa,93fe2ce6-7193-42bc-a966-4653b7989eaa,0,1,a7fe0aa5-722c-4a09-889b-ee422421addc,a7fe0aa5-722c-4a09-889b-ee422421addc,0,1,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,0,1,0c838a31-2b08-447c-b39a-a613cfba526c,0c838a31-2b08-447c-b39a-a613cfba526c,0,1,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,0,1,86c679c0-3531-4622-9a1f-3d9d6ccdd431,86c679c0-3531-4622-9a1f-3d9d6ccdd431,0,1,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,0,1,670c62c1-1a33-4dec-9540-5b4c1fe29074,670c62c1-1a33-4dec-9540-5b4c1fe29074,0,1,cc664d81-d0af-4d25-ae29-64f422e51bf2,cc664d81-d0af-4d25-ae29-64f422e51bf2,0,1,e1314cd1-e662-4c29-ad51-492cb0029883,e1314cd1-e662-4c29-ad51-492cb0029883,0,1,879844f0-30b4-47f5-8d2e-5fea29910368,879844f0-30b4-47f5-8d2e-5fea29910368,0,1,9bc09758-a7ce-44e0-baa3-a3e909869d9b,9bc09758-a7ce-44e0-baa3-a3e909869d9b,0,1,303334ba-2785-47fe-a094-84f9dea33be2,303334ba-2785-47fe-a094-84f9dea33be2,0,1,9690842c-7a2c-4b5d-a238-f730afc49a7b,9690842c-7a2c-4b5d-a238-f730afc49a7b,0,1,04424730-6992-4a5b-838b-7a7c16dedbd0,04424730-6992-4a5b-838b-7a7c16dedbd0,0,1,240bec31-cd59-477b-8459-8e3278da22dc,240bec31-cd59-477b-8459-8e3278da22dc,0,1,e0519f0c-9c99-4f5c-a3a9-27adce45737d,e0519f0c-9c99-4f5c-a3a9-27adce45737d,0,1,554320a0-55dc-4289-bb08-63d405cb4ca5,554320a0-55dc-4289-bb08-63d405cb4ca5,0,1,0874a3c0-0d16-4172-b467-f0666d5fcaee,0874a3c0-0d16-4172-b467-f0666d5fcaee,0,1,cc380a19-ab29-4f20-93ad-9a58cd4de56e,cc380a19-ab29-4f20-93ad-9a58cd4de56e,0,1,6a5f7521-270e-476e-88ec-a8cf79ea61a6,6a5f7521-270e-476e-88ec-a8cf79ea61a6,0,1,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,0,1,e54a8786-86a4-48e3-a210-aaae4e5fce8c,e54a8786-86a4-48e3-a210-aaae4e5fce8c,0,1,86c86ea2-d14e-4443-b36c-c1c17c4f768a,86c86ea2-d14e-4443-b36c-c1c17c4f768a,0,1,14512818-58b0-44cc-b00d-d37913c57aad,14512818-58b0-44cc-b00d-d37913c57aad,0,1,57964dd6-4b0b-4590-bc44-de744cc423af,57964dd6-4b0b-4590-bc44-de744cc423af,0,1,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,0,1,46e0522b-b88b-43b2-9067-a5359e90994b,46e0522b-b88b-43b2-9067-a5359e90994b,0,1,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,0,1,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,0,1,72d41d01-9c9d-4fbe-8a39-932d82d171ef,72d41d01-9c9d-4fbe-8a39-932d82d171ef,0,1,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,0,1,697d5715-dd04-40be-9b28-539734725158,697d5715-dd04-40be-9b28-539734725158,0,1,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,0,1,d95fcb37-fc65-466d-93e2-489f41683276,d95fcb37-fc65-466d-93e2-489f41683276,0,1,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,0,1,a27a9296-46bb-49a1-8308-db675baa81d0,a27a9296-46bb-49a1-8308-db675baa81d0,0,1,1456f317-360c-4190-b2d1-1be7484369a5,1456f317-360c-4190-b2d1-1be7484369a5,0,1,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,0,1,4867948f-b027-44ae-b78c-a94e00eed52b,4867948f-b027-44ae-b78c-a94e00eed52b,0,1,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,0,1,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,0,1,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,0,1,ef044879-e731-418a-b917-6a685f27c5f4,ef044879-e731-418a-b917-6a685f27c5f4,0,1,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,0,1,618d13d5-fd1f-4b70-ad45-dd6a17a50730,618d13d5-fd1f-4b70-ad45-dd6a17a50730,0,1,58037b76-b548-4f07-bd67-67e552a5c6e5,58037b76-b548-4f07-bd67-67e552a5c6e5,0,1,68f19104-5fa3-4f28-a84b-bf68c3bed49b,68f19104-5fa3-4f28-a84b-bf68c3bed49b,0,1,ab0b6824-99ba-4b8d-857d-ed8ef017d499,ab0b6824-99ba-4b8d-857d-ed8ef017d499,0,1,f88ccd7a-8d15-4b24-addf-da522a0b4a43,f88ccd7a-8d15-4b24-addf-da522a0b4a43,0,1,0f8e87d4-ffb7-4cff-a2d3-6d5c5219ff0b,0f8e87d4-ffb7-4cff-a2d3-6d5c5219ff0b,0,1,1511c2e3-aeb4-422a-b6ae-03412b714c93,1511c2e3-aeb4-422a-b6ae-03412b714c93,0,1,349378d1-abe3-44de-84a4-d525b08e0474,349378d1-abe3-44de-84a4-d525b08e0474,0,1,1526b18d-7fab-414e-a5b2-377b67ac0b55,1526b18d-7fab-414e-a5b2-377b67ac0b55,0,1,c561fe6b-53ea-435b-a230-1850e2dc1ff5,c561fe6b-53ea-435b-a230-1850e2dc1ff5,0,1,aba7605f-6baf-42a8-b5ad-8f71c780b81f,aba7605f-6baf-42a8-b5ad-8f71c780b81f,0,1,8fc19eca-1a15-4758-af4b-79637e51edfb,8fc19eca-1a15-4758-af4b-79637e51edfb,0,1,be9144ce-5560-47bb-8c5e-9beefd15bfc3,be9144ce-5560-47bb-8c5e-9beefd15bfc3,0,1,ad09d1e6-5982-4e1c-864e-452ac5b2915a,ad09d1e6-5982-4e1c-864e-452ac5b2915a,0,1,caea53be-d2f7-4109-8017-d2bfdfde8c6f,caea53be-d2f7-4109-8017-d2bfdfde8c6f,0,1,60f30706-9919-4767-a17c-660754b9d542,60f30706-9919-4767-a17c-660754b9d542,0,1,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,0,1,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0,1,28dc34df-1daa-49a2-a12e-db91ee963459,28dc34df-1daa-49a2-a12e-db91ee963459,0,1,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,0,1,d02fe5f5-412c-4c4f-bfc7-c1d7206cd092,d02fe5f5-412c-4c4f-bfc7-c1d7206cd092,0,1,2233ce53-b8a8-4c83-97a2-683c8575462a,2233ce53-b8a8-4c83-97a2-683c8575462a,0,1,2071f210-dc13-43c0-a58e-b982821d6842,2071f210-dc13-43c0-a58e-b982821d6842,0,1,3cda70d0-3116-4508-82ea-5ea0f0921262,3cda70d0-3116-4508-82ea-5ea0f0921262,0,1,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,0,1,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,0,1,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0,1,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,0,1,19056365-9ff1-4733-876e-a7ebdbbe0557,19056365-9ff1-4733-876e-a7ebdbbe0557,0,1,5e09dc5e-bbb7-4c38-b609-940c24f63c84,5e09dc5e-bbb7-4c38-b609-940c24f63c84,0,1,017b28eb-8ba9-465e-a748-20eadbeb4ea2,017b28eb-8ba9-465e-a748-20eadbeb4ea2,0,1,c0bb2d66-94c9-4bc6-afd5-534075e8395b,c0bb2d66-94c9-4bc6-afd5-534075e8395b,0,1,db7cc693-1645-4416-a9d9-5a7584cd3bbc,db7cc693-1645-4416-a9d9-5a7584cd3bbc,0,1,c849fb09-7833-49c8-9461-98426dc6c0af,c849fb09-7833-49c8-9461-98426dc6c0af,0,1,6c58fc3a-37f8-44b7-b076-2c10ce09b554,6c58fc3a-37f8-44b7-b076-2c10ce09b554,0,1,8ca0258c-96d8-4a12-b94f-db968195ee0a,8ca0258c-96d8-4a12-b94f-db968195ee0a,0,1,245c07a9-98b0-452b-b899-dc8751ab7ce0,245c07a9-98b0-452b-b899-dc8751ab7ce0,0,1,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,0,1,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,0,1,00579e31-e97d-4d79-ba25-b8d500a17e7f,00579e31-e97d-4d79-ba25-b8d500a17e7f,0,1,75ffd0b9-79be-4600-a310-591fddb6d63e,75ffd0b9-79be-4600-a310-591fddb6d63e,0,1,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,0,1,47da49ee-b243-4e78-9c8f-bb26c60e6136,47da49ee-b243-4e78-9c8f-bb26c60e6136,0,1,39bee714-cacd-4d48-97a5-c838660e049a,39bee714-cacd-4d48-97a5-c838660e049a,0,1,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,0,1,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,0,1,becf53b6-3fbc-4c70-822f-4a70b0434353,becf53b6-3fbc-4c70-822f-4a70b0434353,0,1,9376b18c-cffd-488b-8a1e-cca598f018bc,9376b18c-cffd-488b-8a1e-cca598f018bc,0,1,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,0,1,652ee894-047b-4a5a-a500-2d61b4c4a473,652ee894-047b-4a5a-a500-2d61b4c4a473,0,1,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,0,1,fef727fa-f63b-4467-9367-73a2425b19e3,fef727fa-f63b-4467-9367-73a2425b19e3,0,1,33f8cd94-71e7-4703-92c3-22690fbd871a,33f8cd94-71e7-4703-92c3-22690fbd871a,0,1,b6e5de4d-0156-4342-b646-6e6920a4bd3a,b6e5de4d-0156-4342-b646-6e6920a4bd3a,0,1,c03f9972-5a1f-449b-b170-5a958c2b5846,c03f9972-5a1f-449b-b170-5a958c2b5846,0,1,25896075-2484-4879-8310-7f5680d80b48,25896075-2484-4879-8310-7f5680d80b48,0,1,09858042-6284-4499-8055-c1b5b783ce5f,09858042-6284-4499-8055-c1b5b783ce5f,0,1,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1e3c444d-6f73-4eb0-a12d-7106daf36b14,0,1,1e63c656-a0e7-4b33-8bac-2a196e028ffa,1e63c656-a0e7-4b33-8bac-2a196e028ffa,0,1,085cbea9-1df1-4ee9-afb7-da2bf313697e,085cbea9-1df1-4ee9-afb7-da2bf313697e,0,1,b3152292-5546-4896-ad24-cb41057698d8,b3152292-5546-4896-ad24-cb41057698d8,0,1,38fc1e6e-7cd3-437b-b429-6655be34cd01,38fc1e6e-7cd3-437b-b429-6655be34cd01,0,1,c38d8135-e11f-4860-b370-84ff279b7fbd,c38d8135-e11f-4860-b370-84ff279b7fbd,0,1,ee0798f5-47a8-4118-a25c-cfd3473007c1,ee0798f5-47a8-4118-a25c-cfd3473007c1,0,1,e25b2b10-bf08-42db-9642-861efc5e583b,e25b2b10-bf08-42db-9642-861efc5e583b,0,1,29f2094a-d0d1-425c-8161-45a9ba186e19,29f2094a-d0d1-425c-8161-45a9ba186e19,0,1,bfa90848-930f-433d-8f6f-c11ac2c5eba2,bfa90848-930f-433d-8f6f-c11ac2c5eba2,0,1,a4d767a1-d2e6-4e0a-ab35-9207eef54998,a4d767a1-d2e6-4e0a-ab35-9207eef54998,0,1,69149ce1-d3f8-4e12-be8f-b328ade60882,69149ce1-d3f8-4e12-be8f-b328ade60882,0,1,ff592ecb-eb08-4554-87bf-1d2935b21d3c,ff592ecb-eb08-4554-87bf-1d2935b21d3c,0,1,e50cb13a-151b-45d2-a7b7-d23440ddfa24,e50cb13a-151b-45d2-a7b7-d23440ddfa24,0,1,cc3a7f15-4db6-445e-b282-f44d0460b7d3,cc3a7f15-4db6-445e-b282-f44d0460b7d3,0,1,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0,1,0d8770aa-fa6e-471c-92c8-b96576927ef0,0d8770aa-fa6e-471c-92c8-b96576927ef0,0,1,b8a32c33-4e15-4c21-baab-64a86d44321b,b8a32c33-4e15-4c21-baab-64a86d44321b,0,1,e7d51ada-f286-4519-bfae-ece95dd4d7b0,e7d51ada-f286-4519-bfae-ece95dd4d7b0,0,1,d7dd9a03-6818-4987-8f39-58e1c906569f,d7dd9a03-6818-4987-8f39-58e1c906569f,0,1,fce028b8-b530-49f0-b6ad-a28d03e19b0f,fce028b8-b530-49f0-b6ad-a28d03e19b0f,0,1,301eea20-0e7f-441e-a531-28b4627dfd93,301eea20-0e7f-441e-a531-28b4627dfd93,0,1,95a71c2e-aa39-42ec-8889-2390a553f146,95a71c2e-aa39-42ec-8889-2390a553f146,0,1,d975aef4-8da8-4486-baeb-a99c48cff0ec,d975aef4-8da8-4486-baeb-a99c48cff0ec,0,1,75666bb9-f6d3-4dd6-8220-427a81f23fc9,75666bb9-f6d3-4dd6-8220-427a81f23fc9,0,1,9da27139-0bed-47b0-aef6-246929968502,9da27139-0bed-47b0-aef6-246929968502,0,1,68e82adf-bc03-4f23-9ec4-749ed42241da,68e82adf-bc03-4f23-9ec4-749ed42241da,0,1,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,0,1,41f87891-ddd5-4e0f-a4f2-8039fb71981b,41f87891-ddd5-4e0f-a4f2-8039fb71981b,0,1,a57f6dc1-59d7-4311-8acd-65ce57a9f386,a57f6dc1-59d7-4311-8acd-65ce57a9f386,0,1,893b2dd9-a939-4799-9b78-50d788a5f3ba,893b2dd9-a939-4799-9b78-50d788a5f3ba,0,1,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,0,1,e4842271-4fc0-4e15-afef-876f05af78c0,e4842271-4fc0-4e15-afef-876f05af78c0,0,1,135d57fe-d420-4bb0-9120-e43fd9b55c16,135d57fe-d420-4bb0-9120-e43fd9b55c16,0,1,31ee6430-b65d-42fa-859b-c4f1c40686ae,31ee6430-b65d-42fa-859b-c4f1c40686ae,0,1,c59e11f3-6bcb-404a-9d76-1416c12be354,c59e11f3-6bcb-404a-9d76-1416c12be354,0,1,c1a1f12b-3978-4047-956e-a5c7de8371a0,c1a1f12b-3978-4047-956e-a5c7de8371a0,0,1,ac39b903-0c60-417e-a50f-49ed375424f5,ac39b903-0c60-417e-a50f-49ed375424f5,0,1,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,0,1,387d3bbf-cddd-4506-b14f-89c1f37adbbc,387d3bbf-cddd-4506-b14f-89c1f37adbbc,0,1,16392cf6-dd83-4df0-a54b-6efc29778a89,16392cf6-dd83-4df0-a54b-6efc29778a89,0,1,64f667e5-6a8f-448f-aed5-a4d461232845,64f667e5-6a8f-448f-aed5-a4d461232845,0,1,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,0,1,037842ca-aeaf-4e27-9a0e-e929438b6f40,037842ca-aeaf-4e27-9a0e-e929438b6f40,0,1,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,0,1,230722e6-942f-4594-be89-eff59c6572bf,230722e6-942f-4594-be89-eff59c6572bf,0,1,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,0,1,eaf6045f-9ac0-43ef-b165-a45be75a4d44,eaf6045f-9ac0-43ef-b165-a45be75a4d44,0,1,237dab99-ed72-432c-ad01-c6045d74f000,237dab99-ed72-432c-ad01-c6045d74f000,0,1,59855d19-29cd-4efd-a453-b19e574113ef,59855d19-29cd-4efd-a453-b19e574113ef,0,1,a1130128-cc48-4555-93a2-99e7f74f77dc,a1130128-cc48-4555-93a2-99e7f74f77dc,0,1,94e08dcf-3885-4a73-82ab-cb291f1cf95f,94e08dcf-3885-4a73-82ab-cb291f1cf95f,0,1,405c52c4-25fe-45ff-abab-bf01041e768d,405c52c4-25fe-45ff-abab-bf01041e768d,0,1,55ce840b-5838-4107-886d-f935b9907bd8,55ce840b-5838-4107-886d-f935b9907bd8,0,1,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0,1,f1753bda-16db-4b00-a16a-37ddade8403f,f1753bda-16db-4b00-a16a-37ddade8403f,0,1,a1875d63-4303-46f1-bdea-fc529b5891f3,a1875d63-4303-46f1-bdea-fc529b5891f3,0,1,59123b12-6052-4480-9c86-f4de1b5cdc04,59123b12-6052-4480-9c86-f4de1b5cdc04,0,1,133f181a-fade-4182-826d-904fac780326,133f181a-fade-4182-826d-904fac780326,0,1,a687748a-0b2a-4277-b935-07616d28430d,a687748a-0b2a-4277-b935-07616d28430d,0,1,f60cb71a-f451-426a-aa3a-aa266b8da149,f60cb71a-f451-426a-aa3a-aa266b8da149,0,1,641ebe22-7135-4adb-bbd6-e0c37d246a2d,641ebe22-7135-4adb-bbd6-e0c37d246a2d,0,1,f71ba01e-9f6b-4241-8048-4368c8888756,f71ba01e-9f6b-4241-8048-4368c8888756,0,1,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,0,1,6010c27f-e857-4fc3-be13-1eea51f02ea7,6010c27f-e857-4fc3-be13-1eea51f02ea7,0,1,6aa814fa-417e-428c-951e-6efd9d0775da,6aa814fa-417e-428c-951e-6efd9d0775da,0,1,a247efe1-8608-4780-9cc8-54e29944475b,a247efe1-8608-4780-9cc8-54e29944475b,0,1,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,0,1,a8f162e9-3f59-41a5-b82f-da20928213c7,a8f162e9-3f59-41a5-b82f-da20928213c7,0,1,ade68dfd-5037-4fd7-b043-9514e3fe6342,ade68dfd-5037-4fd7-b043-9514e3fe6342,0,1,7b008aad-9d05-43e1-8295-62ae58cfff42,7b008aad-9d05-43e1-8295-62ae58cfff42,0,1,fdaf9255-d621-4a98-9530-f618ed440795,fdaf9255-d621-4a98-9530-f618ed440795,0,1,0daac965-2026-4acc-8ba1-3c1f01779257,0daac965-2026-4acc-8ba1-3c1f01779257,0,1,65a331c0-7501-49f6-8027-35b703d11834,65a331c0-7501-49f6-8027-35b703d11834,0,1,c67fab0a-704f-43ae-bd03-4b5b1a880b24,c67fab0a-704f-43ae-bd03-4b5b1a880b24,0,1,c1703a14-61a0-4461-8ad8-7173e2c431fe,c1703a14-61a0-4461-8ad8-7173e2c431fe,0,1,b1b5841d-0cf9-4de5-8561-b35b8f286d21,b1b5841d-0cf9-4de5-8561-b35b8f286d21,0,1,aecf5653-3005-43f2-ab49-40977e70f02b,aecf5653-3005-43f2-ab49-40977e70f02b,0,1,4093fe34-7557-4f15-831b-d654b94b8010,4093fe34-7557-4f15-831b-d654b94b8010,0,1,ee10023f-5c63-4cb3-8e6c-db566c788c9d,ee10023f-5c63-4cb3-8e6c-db566c788c9d,0,1,475f8577-a141-496b-94e1-53215c0dd017,475f8577-a141-496b-94e1-53215c0dd017,0,1,97638762-c01e-4c8f-88e2-b356e517e18f,97638762-c01e-4c8f-88e2-b356e517e18f,0,1,074e34f2-e9be-4bd3-beca-8b916772e2be,074e34f2-e9be-4bd3-beca-8b916772e2be,0,1,28fecf1b-7cab-4087-b66e-2052edb8ce3a,28fecf1b-7cab-4087-b66e-2052edb8ce3a,0,1,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,0,1,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,0,1,f5417147-4d2a-4e49-911b-2bb5eccb8441,f5417147-4d2a-4e49-911b-2bb5eccb8441,0,1,20fbed2b-4393-4de0-a71d-017a336bdac0,20fbed2b-4393-4de0-a71d-017a336bdac0,0,1,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,0,1,fbbb2449-9a07-4229-8ea5-bee0afab5f56,fbbb2449-9a07-4229-8ea5-bee0afab5f56,0,1,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,0,1,0d124daf-dc52-4391-a2d9-3c43a45c422c,0d124daf-dc52-4391-a2d9-3c43a45c422c,0,1,a300ecc3-8031-4a50-a17d-b08cf3a72139,a300ecc3-8031-4a50-a17d-b08cf3a72139,0,1,44b28019-01c0-468d-9b60-e050ff8b71ac,44b28019-01c0-468d-9b60-e050ff8b71ac,0,1,69f6173c-a570-41ff-b07f-5b85f7187515,69f6173c-a570-41ff-b07f-5b85f7187515,0,1,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,0,1,98153b59-8cc6-4dc7-b945-99c1146d07da,98153b59-8cc6-4dc7-b945-99c1146d07da,0,1,3e2828b4-2b55-471e-ac69-55119c2480f8,3e2828b4-2b55-471e-ac69-55119c2480f8,0,1,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,0,1,9da32b56-ff89-4739-bb99-615074b72298,9da32b56-ff89-4739-bb99-615074b72298,0,1,08baf3ee-b8ca-4f29-89fc-c15344064ad3,08baf3ee-b8ca-4f29-89fc-c15344064ad3,0,1,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,0,1,01b85e3a-9920-425a-9de5-5079fffeef93,01b85e3a-9920-425a-9de5-5079fffeef93,0,1,82e12316-cc64-4d2f-83fa-054b5a738f02,82e12316-cc64-4d2f-83fa-054b5a738f02,0,1,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,0,1,a890be6b-f050-4ea4-a388-570948ffd22b,a890be6b-f050-4ea4-a388-570948ffd22b,0,1,b00c31d6-4fc6-4189-9f72-f91742ec705f,b00c31d6-4fc6-4189-9f72-f91742ec705f,0,1,1333101b-82e8-41a9-a793-5af5dcd6f68a,1333101b-82e8-41a9-a793-5af5dcd6f68a,0,1,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,0,1,0f25646a-90f9-4747-a778-7efdaabc284c,0f25646a-90f9-4747-a778-7efdaabc284c,0,1,3a2d9324-8260-478d-ad62-a964d860cb8f,3a2d9324-8260-478d-ad62-a964d860cb8f,0,1,9b9cd161-5bee-4433-a0ec-b67deb099b5e,9b9cd161-5bee-4433-a0ec-b67deb099b5e,0,1,ca179cb5-65e1-4a55-bf12-096b926accb0,ca179cb5-65e1-4a55-bf12-096b926accb0,0,1,472ce1c2-9e83-418b-b1ec-e15e126bc919,472ce1c2-9e83-418b-b1ec-e15e126bc919,0,1,9fe30414-8261-4403-a854-f22b61824f69,9fe30414-8261-4403-a854-f22b61824f69,0,1,07bb26ac-bd97-465f-a192-db7fedbb579b,07bb26ac-bd97-465f-a192-db7fedbb579b,0,1,cd8244d1-0996-40ea-9263-7179c1e8aa26,cd8244d1-0996-40ea-9263-7179c1e8aa26,0,1,bb129cf2-5a5a-433a-924a-a1d0d895644a,bb129cf2-5a5a-433a-924a-a1d0d895644a,0,1,faa34cb8-2d48-4851-a839-fc40536a0234,faa34cb8-2d48-4851-a839-fc40536a0234,0,1,0894db61-51f6-4068-9634-e55d95e2a8ac,0894db61-51f6-4068-9634-e55d95e2a8ac,0,1,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,0,1,67aed41e-9707-4007-bb3c-7273476664bb,67aed41e-9707-4007-bb3c-7273476664bb,0,1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,0,1,de25a90c-4b46-4340-b649-93e16dde33de,de25a90c-4b46-4340-b649-93e16dde33de,0,1,4f2d0398-49f4-410c-a451-436cbf96a262,4f2d0398-49f4-410c-a451-436cbf96a262,0,1,ed297409-6215-4fd4-b47d-a2247e0343da,ed297409-6215-4fd4-b47d-a2247e0343da,0,1,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,0,1,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,0,1,8c472f51-47ec-43c4-9858-fd19ac3e17f3,8c472f51-47ec-43c4-9858-fd19ac3e17f3,0,1,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,0,1,c54f31ce-114b-46d3-b4c6-12c8f07727ca,c54f31ce-114b-46d3-b4c6-12c8f07727ca,0,1,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,0,1,b2c8bd74-21c9-4495-93e2-ca5355698350,b2c8bd74-21c9-4495-93e2-ca5355698350,0,1,249b6436-bd44-4950-b118-7f40f7aaf794,249b6436-bd44-4950-b118-7f40f7aaf794,0,1,712c2b73-4697-4581-a095-70555aee8be2,712c2b73-4697-4581-a095-70555aee8be2,0,1,c1508d67-ac6d-41e3-884d-b3bdd54659f8,c1508d67-ac6d-41e3-884d-b3bdd54659f8,0,1,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,0,1,ce6d1259-af90-482b-b19a-405512321bd9,ce6d1259-af90-482b-b19a-405512321bd9,0,1,df48bfa3-5502-4a61-a79f-1dea043dac36,df48bfa3-5502-4a61-a79f-1dea043dac36,0,1,adee37e6-f087-422f-91b3-681f3d73189c,adee37e6-f087-422f-91b3-681f3d73189c,0,1,35103a27-230c-45c0-a8c9-24bd46608bbb,35103a27-230c-45c0-a8c9-24bd46608bbb,0,1,c5e9f987-4466-4161-8e36-278b0b3ce056,c5e9f987-4466-4161-8e36-278b0b3ce056,0,1,b6566d54-e821-4a2a-a447-0f533f35de91,b6566d54-e821-4a2a-a447-0f533f35de91,0,1,46568b9a-a765-4037-8a86-b184a570ab37,46568b9a-a765-4037-8a86-b184a570ab37,0,1,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,0,1,547a6dec-6fe8-439d-a8d9-ac2612af20d2,547a6dec-6fe8-439d-a8d9-ac2612af20d2,0,1,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,0,1,84395058-d46a-428c-b782-a9fa89fea14a,84395058-d46a-428c-b782-a9fa89fea14a,0,1,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,0,1,5b7eb8bc-ad6b-4191-a6c1-92561bb944f2,5b7eb8bc-ad6b-4191-a6c1-92561bb944f2,0,1,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,0,1,93016393-c637-4d81-8675-aa5e51e678e0,93016393-c637-4d81-8675-aa5e51e678e0,0,1,d8621f68-106e-4058-963f-56010491ae2e,d8621f68-106e-4058-963f-56010491ae2e,0,1,1f3057c2-135f-44b2-9f86-34481fbc5596,1f3057c2-135f-44b2-9f86-34481fbc5596,0,1,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,0,1,f2e2df50-52fc-4e95-909b-80fc91a68f62,f2e2df50-52fc-4e95-909b-80fc91a68f62,0,1,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,0,1,1fca06d9-b015-4fc8-abdd-3e2397e0c307,1fca06d9-b015-4fc8-abdd-3e2397e0c307,0,1,573f1753-9194-4aaf-9217-5cac70ff108f,573f1753-9194-4aaf-9217-5cac70ff108f,0,1,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1f7ec25a-05b1-468b-8857-2bb1aed3678a,0,1,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,0,1,4a1e6d25-89e7-468a-aef1-6ded0154dca2,4a1e6d25-89e7-468a-aef1-6ded0154dca2,0,1,905624ea-b253-413f-b651-1eb2c5a7d52a,905624ea-b253-413f-b651-1eb2c5a7d52a,0,1,b639ed30-3e37-4c65-a39f-00fe735950eb,b639ed30-3e37-4c65-a39f-00fe735950eb,0,1,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,0,1,f137eb0f-bde7-412d-9229-d7a4f9456e6c,f137eb0f-bde7-412d-9229-d7a4f9456e6c,0,1,90880131-8065-4a7e-a0fa-ecff9e27363c,90880131-8065-4a7e-a0fa-ecff9e27363c,0,1,57e9fcea-342c-4089-bd10-befb3faf0dbd,57e9fcea-342c-4089-bd10-befb3faf0dbd,0,1,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,0,1,f811b0b7-41b5-4591-9910-780f08780236,f811b0b7-41b5-4591-9910-780f08780236,0,1,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,0,1,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,0,1,51a0444d-13c8-45a8-97f6-f3f976964bf8,51a0444d-13c8-45a8-97f6-f3f976964bf8,0,1,7e2ba519-fbb9-4163-b20b-b99898e6ac57,7e2ba519-fbb9-4163-b20b-b99898e6ac57,0,1,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,0,1,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,0,1,2b1619a6-c841-4963-8c51-c1d8d6ba3746,2b1619a6-c841-4963-8c51-c1d8d6ba3746,0,1,eab50f82-4612-47fd-a5c2-9678016a1937,eab50f82-4612-47fd-a5c2-9678016a1937,0,1,4212bb94-7c24-4d4f-8bb8-4060bd21a135,4212bb94-7c24-4d4f-8bb8-4060bd21a135,0,1,2609ba3c-e4de-45b3-86e0-93db39a21eee,2609ba3c-e4de-45b3-86e0-93db39a21eee,0,1,00dcfeab-7ba1-4a50-996e-4fd693dd0514,00dcfeab-7ba1-4a50-996e-4fd693dd0514,0,1,d21971c9-9aa6-448a-ab37-49ad0b0547ec,d21971c9-9aa6-448a-ab37-49ad0b0547ec,0,1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,0,1,00418e6c-77b2-4753-b9ff-3a8013436f8a,00418e6c-77b2-4753-b9ff-3a8013436f8a,0,1,e2c76c41-4c47-4588-a081-7bd81ac1698b,e2c76c41-4c47-4588-a081-7bd81ac1698b,0,1,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,0,1,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,0,1,d9f1f56b-75c8-43e9-8043-89076c225f78,d9f1f56b-75c8-43e9-8043-89076c225f78,0,1,a3c9a7eb-2104-4402-954c-3e12de4a7de3,a3c9a7eb-2104-4402-954c-3e12de4a7de3,0,1,38bf6d3b-5435-4bac-b9fc-23b80afeb760,38bf6d3b-5435-4bac-b9fc-23b80afeb760,0,1,6c34eef9-9405-4de0-9177-1bae85251ae4,6c34eef9-9405-4de0-9177-1bae85251ae4,0,1,556a0e57-5b3b-4303-a013-0bd296c506b8,556a0e57-5b3b-4303-a013-0bd296c506b8,0,1,fabbac92-cb98-4087-b3fa-387482ed0d86,fabbac92-cb98-4087-b3fa-387482ed0d86,0,1,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,0,1,e09534e3-ac6e-42a6-86e8-564acb20089a,e09534e3-ac6e-42a6-86e8-564acb20089a,0,1,5e380276-2a08-435c-927e-a7f56f5a4dbc,5e380276-2a08-435c-927e-a7f56f5a4dbc,0,1,d06e845a-9f54-40dd-b0df-6988def62017,d06e845a-9f54-40dd-b0df-6988def62017,0,1,7badb97b-c359-42af-9066-6bbfc0650cf9,7badb97b-c359-42af-9066-6bbfc0650cf9,0,1,63223883-06cf-4d01-be95-5e410cc58a22,63223883-06cf-4d01-be95-5e410cc58a22,0,1,1929139f-dabb-4c40-9423-158093360889,1929139f-dabb-4c40-9423-158093360889,0,1,dad92df4-685b-4260-b35f-4d031262dfea,dad92df4-685b-4260-b35f-4d031262dfea,0,1,4399c19a-ddba-42e9-88b4-c5c28abad237,4399c19a-ddba-42e9-88b4-c5c28abad237,0,1,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,0,1,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,0,1,982315ba-df74-4a31-8929-71d1e5e6f147,982315ba-df74-4a31-8929-71d1e5e6f147,0,1,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,0,1,fd3a6a7e-203d-447a-aebd-7626579387fb,fd3a6a7e-203d-447a-aebd-7626579387fb,0,1,2cd04d4c-2619-40c9-adf4-7bb281f045b6,2cd04d4c-2619-40c9-adf4-7bb281f045b6,0,1,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,0,1,ff976027-75e8-475c-abfa-876d36733c13,ff976027-75e8-475c-abfa-876d36733c13,0,1,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,0,1,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,0,1,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,0,1,b3554203-b930-496d-a712-353bc13a0946,b3554203-b930-496d-a712-353bc13a0946,0,1,59775ce0-f778-45f6-9453-bbd0a0ec1f27,59775ce0-f778-45f6-9453-bbd0a0ec1f27,0,1,f772abd3-8ea0-41e9-aaca-c5375778941a,f772abd3-8ea0-41e9-aaca-c5375778941a,0,1,a1e494f8-96a4-41bd-9234-b87e8d8742c5,a1e494f8-96a4-41bd-9234-b87e8d8742c5,0,1,b322b047-16eb-4500-826a-6dfebb7d997a,b322b047-16eb-4500-826a-6dfebb7d997a,0,1,f08afb10-3467-4af8-804c-ba7761f1dac9,f08afb10-3467-4af8-804c-ba7761f1dac9,0,1,c8da922f-e31e-49b0-b90e-1c060424bde5,c8da922f-e31e-49b0-b90e-1c060424bde5,0,1,41462827-fd8b-4ee6-a739-a884d704bba5,41462827-fd8b-4ee6-a739-a884d704bba5,0,1,eca025d2-4fe9-4542-b9f5-46ae2631256e,eca025d2-4fe9-4542-b9f5-46ae2631256e,0,1,35bc58df-8aff-48dd-83a9-b60b0461f94d,35bc58df-8aff-48dd-83a9-b60b0461f94d,0,1,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0,1,b65afceb-a200-42d5-9948-831a5ad84b1b,b65afceb-a200-42d5-9948-831a5ad84b1b,0,1,feb1a5c1-c805-4079-8f05-8a44f51b0b02,feb1a5c1-c805-4079-8f05-8a44f51b0b02,0,1,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,0,1,1f55f330-7c0a-4a29-905f-51d664515bc5,1f55f330-7c0a-4a29-905f-51d664515bc5,0,1,6106e958-354c-4211-992c-3c3819e8828e,6106e958-354c-4211-992c-3c3819e8828e,0,1,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,0,1,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,0,1,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,0,1,231d3950-f363-4e63-83cd-8ddb81507c27,231d3950-f363-4e63-83cd-8ddb81507c27,0,1,87429f11-bf95-4013-bf13-da904570f88d,87429f11-bf95-4013-bf13-da904570f88d,0,1,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,0,1,feb41347-62db-41cf-ace0-d8b9de361af3,feb41347-62db-41cf-ace0-d8b9de361af3,0,1,cdce186a-229d-492d-8811-147fc4d7cdf5,cdce186a-229d-492d-8811-147fc4d7cdf5,0,1,5f91b00f-d8fc-4d63-8486-66339357ab22,5f91b00f-d8fc-4d63-8486-66339357ab22,0,1,16d44ab1-4bce-4df8-a215-6ed5173c75a8,16d44ab1-4bce-4df8-a215-6ed5173c75a8,0,1,543f976e-fea3-4a51-9962-b8e0fcd3f707,543f976e-fea3-4a51-9962-b8e0fcd3f707,0,1,375977c1-5745-4e78-a4df-cef966c0ccf8,375977c1-5745-4e78-a4df-cef966c0ccf8,0,1,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,0,1,c3796d85-2a24-43c4-9673-64e56249a1d0,c3796d85-2a24-43c4-9673-64e56249a1d0,0,1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,0,1,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,0,1,731211c2-ef90-4883-9525-83cd91b742ac,731211c2-ef90-4883-9525-83cd91b742ac,0,1,0adf02da-940a-4bfc-afa5-59605494a169,0adf02da-940a-4bfc-afa5-59605494a169,0,1,50a1e3bf-8624-4474-854e-21b89aaf97ed,50a1e3bf-8624-4474-854e-21b89aaf97ed,0,1,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,0,1,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,0,1,847b97a3-d0bc-45e2-b06c-932bb22d8eca,847b97a3-d0bc-45e2-b06c-932bb22d8eca,0,1,503b3eab-b7f1-4ede-8845-3290a834cec7,503b3eab-b7f1-4ede-8845-3290a834cec7,0,1,8361991a-0f30-4a03-9a4c-90556b744f53,8361991a-0f30-4a03-9a4c-90556b744f53,0,1,3116fa60-bc42-4dea-aa03-387896168690,3116fa60-bc42-4dea-aa03-387896168690,0,1,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,0,1,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,0,1,f9196766-4ae2-4a73-bed6-4a8838323e02,f9196766-4ae2-4a73-bed6-4a8838323e02,0,1,ca797560-8802-4bdc-b21f-7a7fd795beae,ca797560-8802-4bdc-b21f-7a7fd795beae,0,1,56242b05-d722-4d4a-82d9-517e0e169d0b,56242b05-d722-4d4a-82d9-517e0e169d0b,0,1,5504f5d1-35d8-4a47-a0e1-003fe00395c1,5504f5d1-35d8-4a47-a0e1-003fe00395c1,0,1,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,0,1,06afe397-1c7e-400e-bb24-f8e611d114e8,06afe397-1c7e-400e-bb24-f8e611d114e8,0,1,f0105e51-9510-426a-8aa0-af827d93ffd9,f0105e51-9510-426a-8aa0-af827d93ffd9,0,1,3df19dbf-efe7-4e31-99ad-fafb59ec1329,3df19dbf-efe7-4e31-99ad-fafb59ec1329,0,1,baf12d47-fbfe-4563-aa23-26d9f7e83169,baf12d47-fbfe-4563-aa23-26d9f7e83169,0,1,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,0,1,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0,1,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,0,1,11fe3a42-98c4-49ba-b697-86ffb172f16f,11fe3a42-98c4-49ba-b697-86ffb172f16f,0,1,07b53818-7318-4400-8af5-457fac012755,07b53818-7318-4400-8af5-457fac012755,0,1,292b47e7-5cf3-462d-a466-dac6253a7f03,292b47e7-5cf3-462d-a466-dac6253a7f03,0,1,8ecc070f-f6fb-46b1-9636-b77aa80f8804,8ecc070f-f6fb-46b1-9636-b77aa80f8804,0,1,8405be9d-465b-4744-b04f-03933b52f02e,8405be9d-465b-4744-b04f-03933b52f02e,0,1,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,0,1,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,0,1,9bf55587-1ffe-42bc-b8e8-3f956956f689,9bf55587-1ffe-42bc-b8e8-3f956956f689,0,1,2f67931e-543f-457e-80fd-78ca754e2e9c,2f67931e-543f-457e-80fd-78ca754e2e9c,0,1,595e5752-36a7-4bba-8a40-26920acae01d,595e5752-36a7-4bba-8a40-26920acae01d,0,1,ed5f4a2a-7dfc-4ebf-8656-020597eb24d9,ed5f4a2a-7dfc-4ebf-8656-020597eb24d9,0,1,28801fba-c429-4afa-bdcd-b3ec3ec22fda,28801fba-c429-4afa-bdcd-b3ec3ec22fda,0,1,d1a873ae-d45b-4600-9419-e701dce3da02,d1a873ae-d45b-4600-9419-e701dce3da02,0,1,e3a31f0d-a98f-43c6-bc39-087095ae8c39,e3a31f0d-a98f-43c6-bc39-087095ae8c39,0,1,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,0,1,eb3dfdc7-58b8-4b1f-b079-368c262364c9,eb3dfdc7-58b8-4b1f-b079-368c262364c9,0,1,5030a318-f8f7-4ec7-80d6-6eee0772562f,5030a318-f8f7-4ec7-80d6-6eee0772562f,0,1,242e911d-e49c-4b8a-8543-cc2e079220fd,242e911d-e49c-4b8a-8543-cc2e079220fd,0,1,9ea39d31-3775-4fb8-a3f3-202e54354d49,9ea39d31-3775-4fb8-a3f3-202e54354d49,0,1,73044e20-148c-46e9-b5b5-973c91de0d61,73044e20-148c-46e9-b5b5-973c91de0d61,0,1,f8ab477c-8e78-48c0-9f99-27748b109706,f8ab477c-8e78-48c0-9f99-27748b109706,0,1,24cff6c8-6c20-4383-b97c-6afa52738960,24cff6c8-6c20-4383-b97c-6afa52738960,0,1,462e2694-750d-49ef-93ac-17a7779be68d,462e2694-750d-49ef-93ac-17a7779be68d,0,1,c24ff02e-5afc-45df-81cf-64ea2b261c2d,c24ff02e-5afc-45df-81cf-64ea2b261c2d,0,1,2d51aae9-650d-4719-a94d-2609b69a2d36,2d51aae9-650d-4719-a94d-2609b69a2d36,0,1,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,0,1,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,0,1,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,0,1,85639a53-b367-49ce-84f2-4e21d81c489b,85639a53-b367-49ce-84f2-4e21d81c489b,0,1,24b59586-178e-4efc-90ae-529553f3bb6c,24b59586-178e-4efc-90ae-529553f3bb6c,0,1,20e75dd5-222a-4100-aa43-3684991e3f21,20e75dd5-222a-4100-aa43-3684991e3f21,0,1,3c611832-4bc2-4229-a27d-d5dc82f3a498,3c611832-4bc2-4229-a27d-d5dc82f3a498,0,1,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,0,1,5dadc422-1fbd-4918-9db3-09ec72c3404e,5dadc422-1fbd-4918-9db3-09ec72c3404e,0,1,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,0,1,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,0,1,c5478d09-c8d3-4cc6-878e-27656ecc8409,c5478d09-c8d3-4cc6-878e-27656ecc8409,0,1,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,0,1,75974146-5b1a-412c-b7d5-1575704bbdab,75974146-5b1a-412c-b7d5-1575704bbdab,0,1,949f87cb-258c-4b6b-95ee-8a7491a4b64e,949f87cb-258c-4b6b-95ee-8a7491a4b64e,0,1,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,0,1,5c089988-5381-41ed-9f05-f85db46b8d94,5c089988-5381-41ed-9f05-f85db46b8d94,0,1,85a36352-1569-4ce4-aeba-477db524c36d,85a36352-1569-4ce4-aeba-477db524c36d,0,1,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,0,1,9a4a0b04-3dfb-4551-90f0-16231f64b14f,9a4a0b04-3dfb-4551-90f0-16231f64b14f,0,1,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,0,1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,0,1,98edcd6b-1c50-45c6-9a4c-390827a4ba52,98edcd6b-1c50-45c6-9a4c-390827a4ba52,0,1,b99c2068-15ea-43a1-9e9f-db29647e2387,b99c2068-15ea-43a1-9e9f-db29647e2387,0,1,346cb8b7-a20e-4a06-823e-26dfb2e3e741,346cb8b7-a20e-4a06-823e-26dfb2e3e741,0,1,782cb93d-36e6-4923-b2b6-75caa3459cd6,782cb93d-36e6-4923-b2b6-75caa3459cd6,0,1,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,0,1,996c7873-1cc9-44f6-915b-5c6ed7ef2370,996c7873-1cc9-44f6-915b-5c6ed7ef2370,0,1,45a2569e-820c-4d7d-ba74-4a781d26bb2b,45a2569e-820c-4d7d-ba74-4a781d26bb2b,0,1,ced01234-9417-49ce-adf0-8cdd15e6dd7d,ced01234-9417-49ce-adf0-8cdd15e6dd7d,0,1,0eea37cc-47f8-4819-85da-d4991f4e58ed,0eea37cc-47f8-4819-85da-d4991f4e58ed,0,1,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,0,1,c1272bfc-196a-4f99-935f-e2516bc138d2,c1272bfc-196a-4f99-935f-e2516bc138d2,0,1,313e0688-745a-4385-b040-7ef8317a0eb7,313e0688-745a-4385-b040-7ef8317a0eb7,0,1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,0,1,8dc08932-0988-4e82-8a5f-385c0694f9ff,8dc08932-0988-4e82-8a5f-385c0694f9ff,0,1,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,0,1,37c37f15-f84b-456b-aab6-729562dc0908,37c37f15-f84b-456b-aab6-729562dc0908,0,1,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,0,1,7974e41d-5af3-4636-b405-c9405d89fb53,7974e41d-5af3-4636-b405-c9405d89fb53,0,1,21fad9b6-44df-417c-ba18-de4b8af98a34,21fad9b6-44df-417c-ba18-de4b8af98a34,0,1,11c086b0-c646-4701-983d-c38758286354,11c086b0-c646-4701-983d-c38758286354,0,1,92876c9e-52ff-480d-9878-5766f4f9d12c,92876c9e-52ff-480d-9878-5766f4f9d12c,0,1,b729d739-5249-4765-85ee-fd792bb22911,b729d739-5249-4765-85ee-fd792bb22911,0,1,d65c4485-7bac-4206-9a6c-7156f4bb876d,d65c4485-7bac-4206-9a6c-7156f4bb876d,0,1,d431d1e2-13dc-495c-9de1-b5ec872eceed,d431d1e2-13dc-495c-9de1-b5ec872eceed,0,1,e8bec681-d269-41ba-9184-556cbcc27d74,e8bec681-d269-41ba-9184-556cbcc27d74,0,1,b8aaef91-f72c-4127-a494-771c13694ca4,b8aaef91-f72c-4127-a494-771c13694ca4,0,1,433a114f-3198-4ef6-bbf8-ce9b54fdb736,433a114f-3198-4ef6-bbf8-ce9b54fdb736,0,1,02ac711c-e38e-422e-ac28-ba1b298df9cc,02ac711c-e38e-422e-ac28-ba1b298df9cc,0,1,3e090261-4aa2-4ece-9f77-62df83c890b3,3e090261-4aa2-4ece-9f77-62df83c890b3,0,1,bbfd9834-12b4-49ca-bdae-5c94efa80482,bbfd9834-12b4-49ca-bdae-5c94efa80482,0,1,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,0,1,c9ea4e72-5f01-42ae-88e3-52e49757b26f,c9ea4e72-5f01-42ae-88e3-52e49757b26f,0,1,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,0,1,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0,1,a623fef1-96eb-41ba-93fe-09162698f419,a623fef1-96eb-41ba-93fe-09162698f419,0,1,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,0,1,d8e1f92f-9efa-422d-bb21-43bd1a363cec,d8e1f92f-9efa-422d-bb21-43bd1a363cec,0,1,c1416383-bd7e-4dc4-ad88-d98ac87157fd,c1416383-bd7e-4dc4-ad88-d98ac87157fd,0,1,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,0,1,d5d9976a-4cc0-43f7-afd6-d43cebb07940,d5d9976a-4cc0-43f7-afd6-d43cebb07940,0,1,79a0746b-4dbe-4068-8832-4d0da08d6fd3,79a0746b-4dbe-4068-8832-4d0da08d6fd3,0,1,899f1526-d6bc-42ef-852e-7297a06db9e3,899f1526-d6bc-42ef-852e-7297a06db9e3,0,1,c694c132-1ddb-4273-818a-d3cca88c082a,c694c132-1ddb-4273-818a-d3cca88c082a,0,1,cd4da06e-c06b-4233-befc-1bc4c4db58e3,cd4da06e-c06b-4233-befc-1bc4c4db58e3,0,1,918a01fe-f753-4a4a-9200-55bbd6edaf5f,918a01fe-f753-4a4a-9200-55bbd6edaf5f,0,1,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,0,1,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,0,1,d6704410-6297-481e-a6cb-6d6aa566b4f8,d6704410-6297-481e-a6cb-6d6aa566b4f8,0,1,398937ca-b035-43bd-b0da-8c5153a87cb8,398937ca-b035-43bd-b0da-8c5153a87cb8,0,1,5b441321-bd1e-4c56-8f09-365b05985eed,5b441321-bd1e-4c56-8f09-365b05985eed,0,1,559f1e66-e8da-437a-aa27-d0e1be6619b6,559f1e66-e8da-437a-aa27-d0e1be6619b6,0,1,704d69cd-d921-4957-a004-43bd7eb4d979,704d69cd-d921-4957-a004-43bd7eb4d979,0,1,f1594682-16ac-408c-8307-a7a8db79b09f,f1594682-16ac-408c-8307-a7a8db79b09f,0,1,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,0,1,4cb814d8-cb1b-4366-b500-e820ad526b0c,4cb814d8-cb1b-4366-b500-e820ad526b0c,0,1,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,0,1,6c43df9f-ca36-415b-afec-302807820d73,6c43df9f-ca36-415b-afec-302807820d73,0,1,c7fb7551-806a-40b2-8879-14cd897b60d8,c7fb7551-806a-40b2-8879-14cd897b60d8,0,1,68337023-d573-4d04-95b6-44f73258c2a4,68337023-d573-4d04-95b6-44f73258c2a4,0,1,7cf39337-b722-486f-8e37-a62239d0ccd2,7cf39337-b722-486f-8e37-a62239d0ccd2,0,1,2571cfaf-d876-4385-a60a-1488aacf7080,2571cfaf-d876-4385-a60a-1488aacf7080,0,1,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,0,1,44398566-3189-4584-8f8a-9deb1d07ce41,44398566-3189-4584-8f8a-9deb1d07ce41,0,1,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,0,1,accfa63a-479d-4996-95bc-cdf5acdf203c,accfa63a-479d-4996-95bc-cdf5acdf203c,0,1,351998e0-8939-4dd4-a833-f4756bcc53b8,351998e0-8939-4dd4-a833-f4756bcc53b8,0,1,cd69bad8-524e-4be4-88cc-7732a88b38b8,cd69bad8-524e-4be4-88cc-7732a88b38b8,0,1,0a32248c-6994-4988-90d1-30882bc9da6b,0a32248c-6994-4988-90d1-30882bc9da6b,0,1,b57b53cb-6972-4bda-ae46-96571be1ebec,b57b53cb-6972-4bda-ae46-96571be1ebec,0,1,1a1a9636-fb72-4e4a-af96-5858442b1e61,1a1a9636-fb72-4e4a-af96-5858442b1e61,0,1,bca9cf34-9e11-4014-976a-28c4330b136e,bca9cf34-9e11-4014-976a-28c4330b136e,0,1,65fffe1a-6f36-4f50-975f-4471ad29d3ec,65fffe1a-6f36-4f50-975f-4471ad29d3ec,0,1,8fe5dad5-686a-4631-ae05-2917c33f7d83,8fe5dad5-686a-4631-ae05-2917c33f7d83,0,1,edef86c6-73bf-4e47-b62d-b2b548a732cd,edef86c6-73bf-4e47-b62d-b2b548a732cd,0,1,a1715044-d76f-4238-ba3e-989d04078d83,a1715044-d76f-4238-ba3e-989d04078d83,0,1,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,0,1,299c47a7-0b30-4f62-8f5c-f087ad6411fb,299c47a7-0b30-4f62-8f5c-f087ad6411fb,0,1,4d4724df-24fb-4c59-9d04-3f984906214a,4d4724df-24fb-4c59-9d04-3f984906214a,0,1,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,0,1,cb9b73ee-8531-48d9-9266-9aaa4336a612,cb9b73ee-8531-48d9-9266-9aaa4336a612,0,1,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,0,1,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,0,1,d042687f-0725-4611-a868-f5b4f6a3a3a8,d042687f-0725-4611-a868-f5b4f6a3a3a8,0,1,bb143340-7fff-49ef-b121-355c96613f78,bb143340-7fff-49ef-b121-355c96613f78,0,1,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,0,1,f2f69644-80dc-4b5e-a208-ed1de131e25e,f2f69644-80dc-4b5e-a208-ed1de131e25e,0,1,73060f72-6d08-47da-aac8-d4d2ed8f871c,73060f72-6d08-47da-aac8-d4d2ed8f871c,0,1,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,0,1,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,0,1,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,0,1,821225ea-1bad-49a6-a422-80d8a09baf13,821225ea-1bad-49a6-a422-80d8a09baf13,0,1,d0106f3a-8490-4277-a278-75c318ec252c,d0106f3a-8490-4277-a278-75c318ec252c,0,1,5035aa55-d557-419a-89e2-10ed0f8d109b,5035aa55-d557-419a-89e2-10ed0f8d109b,0,1,fb79315a-8d27-4c5e-9cfb-c7778dabedef,fb79315a-8d27-4c5e-9cfb-c7778dabedef,0,1,5f93d2af-64ff-41cc-8403-4a0e83160fea,5f93d2af-64ff-41cc-8403-4a0e83160fea,0,1,c12c90e4-7c40-489b-b14b-6b9442016e0f,c12c90e4-7c40-489b-b14b-6b9442016e0f,0,1,6371e288-3502-4d66-9006-b5a36107c0b7,6371e288-3502-4d66-9006-b5a36107c0b7,0,1,245814f7-028c-4c13-98eb-15412e851f81,245814f7-028c-4c13-98eb-15412e851f81,0,1,0132e564-2cd3-4930-8962-1068532f4be4,0132e564-2cd3-4930-8962-1068532f4be4,0,1,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,0,1,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,0,1,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,0,1,7021fca5-d612-43e1-927b-7f822153cf75,7021fca5-d612-43e1-927b-7f822153cf75,0,1,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,0,1,ee0a8d23-660a-492b-a813-b57394acee05,ee0a8d23-660a-492b-a813-b57394acee05,0,1,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,0,1,ade21e2e-349f-414b-8f35-6ae3b6a4064d,ade21e2e-349f-414b-8f35-6ae3b6a4064d,0,1,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,0,1,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,0,1,83f51efe-e2af-459a-b59f-2c036124ac23,83f51efe-e2af-459a-b59f-2c036124ac23,0,1,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,0,1,b03829e9-ba22-4584-85f0-c36d63f48242,b03829e9-ba22-4584-85f0-c36d63f48242,0,1,084a7c95-a59b-4861-b8b3-b5710a57ac60,084a7c95-a59b-4861-b8b3-b5710a57ac60,0,1,efcea6da-6746-4e00-913a-14cab38b5d84,efcea6da-6746-4e00-913a-14cab38b5d84,0,1,aff367fb-7fca-44d0-adf9-3731f14834f6,aff367fb-7fca-44d0-adf9-3731f14834f6,0,1,a2782760-dd4c-44d2-a785-814d6f610455,a2782760-dd4c-44d2-a785-814d6f610455,0,1,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,0,1,6581ac1f-11ef-42b8-9f3b-590bb7546e63,6581ac1f-11ef-42b8-9f3b-590bb7546e63,0,1,ce952e88-35b7-4506-81ac-d7081e50a650,ce952e88-35b7-4506-81ac-d7081e50a650,0,1,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,0,1,3bf1281f-7570-4633-86b9-3e953a7e6647,3bf1281f-7570-4633-86b9-3e953a7e6647,0,1,715dc289-5b14-4ee0-8716-9c15958b9069,715dc289-5b14-4ee0-8716-9c15958b9069,0,1,92707138-5004-4378-8477-f909166d319d,92707138-5004-4378-8477-f909166d319d,0,1,43661775-43bb-4d9e-bfbb-c46e7d194ca3,43661775-43bb-4d9e-bfbb-c46e7d194ca3,0,1,532637ef-be0d-4f42-9747-a88e17eb3def,532637ef-be0d-4f42-9747-a88e17eb3def,0,1,61127152-3e24-40b4-8a23-5eb6cae568ff,61127152-3e24-40b4-8a23-5eb6cae568ff,0,1,ffd987e3-e8af-4d46-881e-1e312e74dbac,ffd987e3-e8af-4d46-881e-1e312e74dbac,0,1,ad1142ed-183d-47a3-800c-997a3770e11e,ad1142ed-183d-47a3-800c-997a3770e11e,0,1,ebef37c6-4808-4683-93be-036ce19cafd5,ebef37c6-4808-4683-93be-036ce19cafd5,0,1,66364cd4-aaa5-421d-96d6-3c283c14650d,66364cd4-aaa5-421d-96d6-3c283c14650d,0,1,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,0,1,3c54d440-e908-43d6-a5cc-bb64620c82d7,3c54d440-e908-43d6-a5cc-bb64620c82d7,0,1,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,0,1,bf1dd911-8ee1-407b-acae-10c85b74baf3,bf1dd911-8ee1-407b-acae-10c85b74baf3,0,1,e924058f-25c3-4744-a565-836b824991b7,e924058f-25c3-4744-a565-836b824991b7,0,1,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,0,1,518dcd70-4ccf-4866-a94f-7ceec7dd2801,518dcd70-4ccf-4866-a94f-7ceec7dd2801,0,1,8f16763b-86f0-4ad0-b786-cce7dcb3460e,8f16763b-86f0-4ad0-b786-cce7dcb3460e,0,1,0481bc65-6a32-46b9-ae87-993ba52a29a5,0481bc65-6a32-46b9-ae87-993ba52a29a5,0,1,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,0,1,dbc5f419-63b0-4cbe-90ff-c0101105e46c,dbc5f419-63b0-4cbe-90ff-c0101105e46c,0,1,c708f6e9-b7a0-4046-90f3-83527da7b872,c708f6e9-b7a0-4046-90f3-83527da7b872,0,1,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0,1,14256e0a-a947-42a3-8e36-47bfbb052a0c,14256e0a-a947-42a3-8e36-47bfbb052a0c,0,1,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1b1aa77a-d14b-4751-a7da-0b5bac4db461,0,1,c0dcdb22-6719-4597-a781-bca1370909e5,c0dcdb22-6719-4597-a781-bca1370909e5,0,1,7a34f723-cd14-4949-a40f-7ce579bf0449,7a34f723-cd14-4949-a40f-7ce579bf0449,0,1,5cdc9ac7-bba9-4ed1-845a-607976fc4679,5cdc9ac7-bba9-4ed1-845a-607976fc4679,0,1,295f3692-0721-4c41-a69b-171ef20a5018,295f3692-0721-4c41-a69b-171ef20a5018,0,1,86c22871-6d1c-44e0-8ade-ce4bdeb23321,86c22871-6d1c-44e0-8ade-ce4bdeb23321,0,1,da51de81-4d4f-46b5-a308-7b50db6c45a7,da51de81-4d4f-46b5-a308-7b50db6c45a7,0,1,8d31ce6a-4d44-46c6-a11c-47fb33e88691,8d31ce6a-4d44-46c6-a11c-47fb33e88691,0,1,c2a8c2d3-ff13-4a13-acd4-797118c4e767,c2a8c2d3-ff13-4a13-acd4-797118c4e767,0,1,bc6adf75-8666-49f3-9703-b0014dfee123,bc6adf75-8666-49f3-9703-b0014dfee123,0,1,30632f54-b779-4857-a5cc-c53fe8887ee5,30632f54-b779-4857-a5cc-c53fe8887ee5,0,1,df22b227-b2c3-4e65-9706-7582f99fe59c,df22b227-b2c3-4e65-9706-7582f99fe59c,0,1,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,0,1,087480bb-8c89-4b00-a29b-b7e29926478d,087480bb-8c89-4b00-a29b-b7e29926478d,0,1,685373b7-638a-439a-8cba-703d56e4e404,685373b7-638a-439a-8cba-703d56e4e404,0,1,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,0,1,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1cfba08f-d5e5-4833-b494-a25d0477e9c3,0,1,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,0,1,921a0a14-8c06-4894-95ce-423000769364,921a0a14-8c06-4894-95ce-423000769364,0,1,3805ee39-a48a-499a-9ef8-9c2a5985404f,3805ee39-a48a-499a-9ef8-9c2a5985404f,0,1,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,0,1,08c2f92c-eb05-49e7-bfc9-4a89607b9864,08c2f92c-eb05-49e7-bfc9-4a89607b9864,0,1,6d751379-89a7-49b5-93e5-578329c63d9c,6d751379-89a7-49b5-93e5-578329c63d9c,0,1,c3f156ef-947e-4ebb-883f-4f099a116063,c3f156ef-947e-4ebb-883f-4f099a116063,0,1,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,0,1,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,0,1,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,0,1,e98e9e56-2995-430c-bd3b-f1070aec15a5,e98e9e56-2995-430c-bd3b-f1070aec15a5,0,1,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,0,1,8a7546f4-bfc9-4732-bf60-43a41e2c8753,8a7546f4-bfc9-4732-bf60-43a41e2c8753,0,1,16244165-d5a4-4012-8bb5-7f5fee1111af,16244165-d5a4-4012-8bb5-7f5fee1111af,0,1,290b72ad-004f-46ab-be5e-47557543b965,290b72ad-004f-46ab-be5e-47557543b965,0,1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,0,1,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,0,1,263bcd20-9878-48d4-aac4-b371ec49d8d6,263bcd20-9878-48d4-aac4-b371ec49d8d6,0,1,da1d8660-2757-4cea-bae0-c2210b9406ae,da1d8660-2757-4cea-bae0-c2210b9406ae,0,1,d60329c6-8f48-481d-82e7-18da355cb09c,d60329c6-8f48-481d-82e7-18da355cb09c,0,1,c4b14162-b25b-4099-9ec3-7251848ef08a,c4b14162-b25b-4099-9ec3-7251848ef08a,0,1,8eb5ba97-eb38-4357-8bfc-e9618280800d,8eb5ba97-eb38-4357-8bfc-e9618280800d,0,1,b72f73d5-e274-472b-871b-16af72dab603,b72f73d5-e274-472b-871b-16af72dab603,0,1,b008d184-0b61-460d-9490-89ecc1cd58ba,b008d184-0b61-460d-9490-89ecc1cd58ba,0,1,c8340e2f-6958-4bcd-8e17-499c4adfe60b,c8340e2f-6958-4bcd-8e17-499c4adfe60b,0,1,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,0,1,03f68d82-752c-45d1-bf9a-60ecd21a2c81,03f68d82-752c-45d1-bf9a-60ecd21a2c81,0,1,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,0,1,d4fffc79-2841-49a9-a382-e9e4138984df,d4fffc79-2841-49a9-a382-e9e4138984df,0,1,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,0,1,9f41f903-d316-4189-8dc0-603ea9036c1c,9f41f903-d316-4189-8dc0-603ea9036c1c,0,1,e19e70d6-8707-4dde-ae69-7bd97035ca03,e19e70d6-8707-4dde-ae69-7bd97035ca03,0,1,425b5272-1130-457d-8a05-aee8fad681d9,425b5272-1130-457d-8a05-aee8fad681d9,0,1,8d583436-f2a6-4a33-8137-1376f5754643,8d583436-f2a6-4a33-8137-1376f5754643,0,1,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,0,1,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,0,1,2d66502d-77ab-4cc9-9ccf-5433458fae9f,2d66502d-77ab-4cc9-9ccf-5433458fae9f,0,1,cff48da7-3c46-4602-83e8-90c9ea53e107,cff48da7-3c46-4602-83e8-90c9ea53e107,0,1,7155472d-c791-402c-96e1-d25612024c88,7155472d-c791-402c-96e1-d25612024c88,0,1,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,0,1,9005911d-ea81-48b6-bf50-1a328ff4d7be,9005911d-ea81-48b6-bf50-1a328ff4d7be,0,1,7df12006-c0c0-42a6-b852-bdced72c62e3,7df12006-c0c0-42a6-b852-bdced72c62e3,0,1,9c00987d-3c55-40eb-bae8-f36e71e4ef87,9c00987d-3c55-40eb-bae8-f36e71e4ef87,0,1,29273130-5142-48c9-8399-00e5ab4b6203,29273130-5142-48c9-8399-00e5ab4b6203,0,1,9e14cd7e-1293-4008-baf8-88df6a98abf7,9e14cd7e-1293-4008-baf8-88df6a98abf7,0,1,98e3aace-52a6-4911-8205-92165adca6de,98e3aace-52a6-4911-8205-92165adca6de,0,1,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,0,1,577e5fea-b792-4c8b-b3b3-a03a14b64b04,577e5fea-b792-4c8b-b3b3-a03a14b64b04,0,1,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,0,1,b18d312b-f9c3-4f37-ac77-d499e949f154,b18d312b-f9c3-4f37-ac77-d499e949f154,0,1,ace2beea-d393-412f-8b71-b845b665e2c4,ace2beea-d393-412f-8b71-b845b665e2c4,0,1,3fd4bc77-2a1b-4750-a54a-4171c8d40027,3fd4bc77-2a1b-4750-a54a-4171c8d40027,0,1,5b27fde9-fa80-48b1-aea1-73e132b9a944,5b27fde9-fa80-48b1-aea1-73e132b9a944,0,1,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,0,1,a747ec6b-f230-49b4-a929-7ed1ba87b078,a747ec6b-f230-49b4-a929-7ed1ba87b078,0,1,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,0,1,4802e016-a9e9-47d0-916b-b42194a1f388,4802e016-a9e9-47d0-916b-b42194a1f388,0,1,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,0,1,4062674a-4a81-494d-82bc-4984cd7c7903,4062674a-4a81-494d-82bc-4984cd7c7903,0,1,782a8801-06ca-4d63-bf8b-63d2320766d8,782a8801-06ca-4d63-bf8b-63d2320766d8,0,1,93a73123-d98c-4286-9269-7bfcedd115e8,93a73123-d98c-4286-9269-7bfcedd115e8,0,1,c5985c02-1824-4ce9-b415-1621dd2ee864,c5985c02-1824-4ce9-b415-1621dd2ee864,0,1,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,0,1,e819aaf6-3dfb-492a-8a4a-50a7c6854790,e819aaf6-3dfb-492a-8a4a-50a7c6854790,0,1,62b95ba1-f213-42fb-90f3-a03e8094bc9e,62b95ba1-f213-42fb-90f3-a03e8094bc9e,0,1,619b534d-5605-40d3-9b8c-4443a21d7795,619b534d-5605-40d3-9b8c-4443a21d7795,0,1,a010bbf4-d547-4576-9797-28e3096ffed3,a010bbf4-d547-4576-9797-28e3096ffed3,0,1,a44c3eb2-1054-41ca-82e8-fc35336e7009,a44c3eb2-1054-41ca-82e8-fc35336e7009,0,1,01f67911-4ca7-4668-b970-62c299b98e56,01f67911-4ca7-4668-b970-62c299b98e56,0,1,20c89c94-f77f-4e14-8c97-2a70c1419ce3,20c89c94-f77f-4e14-8c97-2a70c1419ce3,0,1,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,0,1,8d7750e9-899f-4434-8702-44cd02681779,8d7750e9-899f-4434-8702-44cd02681779,0,1,d85244dc-c417-4e69-9aa7-7ad313ecb940,d85244dc-c417-4e69-9aa7-7ad313ecb940,0,1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,0,1,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,0,1,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,0,1,0713de12-87d5-4877-bd8a-2b6466df67df,0713de12-87d5-4877-bd8a-2b6466df67df,0,1,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,0,1,c4d7c569-4649-4f98-a048-45f3c5933670,c4d7c569-4649-4f98-a048-45f3c5933670,0,1,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,0,1,426cbebb-880b-49c5-b046-83c5e071273e,426cbebb-880b-49c5-b046-83c5e071273e,0,1,ad08b104-01f8-4900-a06c-baa1d55eba84,ad08b104-01f8-4900-a06c-baa1d55eba84,0,1,9352d10d-188f-4074-8dd1-7be5c11525e3,9352d10d-188f-4074-8dd1-7be5c11525e3,0,1,1933634a-6f10-48e7-99f0-60ac338f7832,1933634a-6f10-48e7-99f0-60ac338f7832,0,1,655deec5-c079-4748-8521-b3f10c243394,655deec5-c079-4748-8521-b3f10c243394,0,1,f6d4d818-d54c-4337-82cf-abd5e6dbe770,f6d4d818-d54c-4337-82cf-abd5e6dbe770,0,1,656c447b-291f-4e62-81ac-1c004841aa72,656c447b-291f-4e62-81ac-1c004841aa72,0,1,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,0,1,5ba93404-58ad-4321-9a62-27db828f75f6,5ba93404-58ad-4321-9a62-27db828f75f6,0,1,3da20e86-1d83-4935-b425-a91392dc8f35,3da20e86-1d83-4935-b425-a91392dc8f35,0,1,b56f25d2-72a9-4d80-8998-77ac3097c873,b56f25d2-72a9-4d80-8998-77ac3097c873,0,1,03bd775a-e0a1-4205-82ce-6068e73ad134,03bd775a-e0a1-4205-82ce-6068e73ad134,0,1,40bed47b-7754-4a70-b51a-47385fd46e83,40bed47b-7754-4a70-b51a-47385fd46e83,0,1,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,0,1,1e5a4f93-1ab9-4775-9538-2a1772215d89,1e5a4f93-1ab9-4775-9538-2a1772215d89,0,1,c25db165-0734-4fef-b161-e5164954a616,c25db165-0734-4fef-b161-e5164954a616,0,1,4f97b909-68f9-482a-b958-b4caa9b83763,4f97b909-68f9-482a-b958-b4caa9b83763,0,1,c31e34db-41ff-4db3-a4d0-f780f67070f6,c31e34db-41ff-4db3-a4d0-f780f67070f6,0,1,7a014fcb-a4b8-4c1c-b0de-21907a917c25,7a014fcb-a4b8-4c1c-b0de-21907a917c25,0,1,1688ef5d-72df-4bc4-a879-89033d466ad7,1688ef5d-72df-4bc4-a879-89033d466ad7,0,1,30f18fbf-4240-4708-a71a-189f8fc324f3,30f18fbf-4240-4708-a71a-189f8fc324f3,0,1,344cb0de-315d-4d05-93f8-8a1f53208470,344cb0de-315d-4d05-93f8-8a1f53208470,0,1,cd869887-0b0e-43db-8b51-04fe4a1341d5,cd869887-0b0e-43db-8b51-04fe4a1341d5,0,1,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,0,1,a7973409-b18e-4b88-ad50-e2ae89470d8f,a7973409-b18e-4b88-ad50-e2ae89470d8f,0,1,a537875e-492e-4cf2-96e9-e2e97bb206da,a537875e-492e-4cf2-96e9-e2e97bb206da,0,1,085a08f3-9d93-429d-9b1b-9065ab8363f7,085a08f3-9d93-429d-9b1b-9065ab8363f7,0,1,a530c0a1-c1d2-40bb-9d0e-320074dbb684,a530c0a1-c1d2-40bb-9d0e-320074dbb684,0,1,55c63580-16f1-4d6f-a40b-e630f71ebb98,55c63580-16f1-4d6f-a40b-e630f71ebb98,0,1,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0,1,208c7b8c-3df9-4441-8ebf-34ffa81572a2,208c7b8c-3df9-4441-8ebf-34ffa81572a2,0,1,8c17fd7c-74d7-496a-a843-42022afb0707,8c17fd7c-74d7-496a-a843-42022afb0707,0,1,b456d820-8034-4381-960d-66d9f86b0a4b,b456d820-8034-4381-960d-66d9f86b0a4b,0,1,bd55fd03-cf67-4333-a554-98e03d18f780,bd55fd03-cf67-4333-a554-98e03d18f780,0,1,6eac5f7b-0952-4c94-9028-529b14ffcd4f,6eac5f7b-0952-4c94-9028-529b14ffcd4f,0,1,1a7c774d-5b86-4051-b797-3081e19fa30a,1a7c774d-5b86-4051-b797-3081e19fa30a,0,1,00949768-5833-4fe2-8752-b009d1bceef8,00949768-5833-4fe2-8752-b009d1bceef8,0,1,167455d1-6658-409f-834c-f6ccfe7b25de,167455d1-6658-409f-834c-f6ccfe7b25de,0,1,c5b3ca21-8f7b-4933-853c-7d95b17b5631,c5b3ca21-8f7b-4933-853c-7d95b17b5631,0,1,8b0faa1e-09da-4ba4-894e-e86abc5d39df,8b0faa1e-09da-4ba4-894e-e86abc5d39df,0,1,cb50b309-1b6c-400c-9e9e-67204dcccaae,cb50b309-1b6c-400c-9e9e-67204dcccaae,0,1,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,0,1,c46fd680-efbe-49a8-91f0-73e36d791fa9,c46fd680-efbe-49a8-91f0-73e36d791fa9,0,1,6995567b-5a3c-4e03-9fb4-e22363ed6555,6995567b-5a3c-4e03-9fb4-e22363ed6555,0,1,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,0,1,b8a966ba-3452-44df-91d0-7040ecd3e4c2,b8a966ba-3452-44df-91d0-7040ecd3e4c2,0,1,80d6883d-c608-4fe5-acae-78bc45e40e5f,80d6883d-c608-4fe5-acae-78bc45e40e5f,0,1,213b173a-c3b7-449c-a618-d479c4dc38e8,213b173a-c3b7-449c-a618-d479c4dc38e8,0,1,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,0,1,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,0,1,7534148d-0124-49a2-a446-c6205d153153,7534148d-0124-49a2-a446-c6205d153153,0,1,32ed8a10-7177-4e45-866e-04a1b6831570,32ed8a10-7177-4e45-866e-04a1b6831570,0,1,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,0,1,8190a432-1037-4334-b2c7-bae39f7f9442,8190a432-1037-4334-b2c7-bae39f7f9442,0,1,4733e5c1-8198-408b-8903-866d3b0fdc43,4733e5c1-8198-408b-8903-866d3b0fdc43,0,1,e1fc5146-37c5-4207-af05-7250976bd406,e1fc5146-37c5-4207-af05-7250976bd406,0,1,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,0,1,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,0,1,f5e27159-789a-4d34-ac51-fd99d753b83a,f5e27159-789a-4d34-ac51-fd99d753b83a,0,1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,0,1,981a74f4-cdc2-4016-b462-9b5fd0d6de4d,981a74f4-cdc2-4016-b462-9b5fd0d6de4d,0,1,1d89e2b7-8f66-4210-8ab4-29efde5e5295,1d89e2b7-8f66-4210-8ab4-29efde5e5295,0,1,fafff964-8daa-4921-9d53-fd6be3878d94,fafff964-8daa-4921-9d53-fd6be3878d94,0,1,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,0,1,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,0,1,4347f77e-bad9-4525-90a0-794787f03585,4347f77e-bad9-4525-90a0-794787f03585,0,1,cfde3330-2bed-4273-8d69-c213ebdde247,cfde3330-2bed-4273-8d69-c213ebdde247,0,1,2d6ca049-89a5-437e-971c-b8e42f61b460,2d6ca049-89a5-437e-971c-b8e42f61b460,0,1,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,0,1,271d58d0-4449-40cc-bae9-cc4c50eebd9b,271d58d0-4449-40cc-bae9-cc4c50eebd9b,0,1,58df9322-c786-4dd1-af49-7cd164b378da,58df9322-c786-4dd1-af49-7cd164b378da,0,1,8d48de7f-61d6-4462-9c14-f728206a482c,8d48de7f-61d6-4462-9c14-f728206a482c,0,1,a87e890a-8924-4f56-9e37-04579b95297a,a87e890a-8924-4f56-9e37-04579b95297a,0,1,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,0,1,4c1f2581-ee42-4df5-9169-20205a18a9be,4c1f2581-ee42-4df5-9169-20205a18a9be,0,1,bb3d9ea3-8895-4950-9ee9-4249ca983d48,bb3d9ea3-8895-4950-9ee9-4249ca983d48,0,1,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,0,1,b806d2b6-bbd1-4abd-9471-7791603a2fcf,b806d2b6-bbd1-4abd-9471-7791603a2fcf,0,1,d7aa519b-9a2e-4946-bd06-9ac22bb7c1e4,d7aa519b-9a2e-4946-bd06-9ac22bb7c1e4,0,1,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,0,1,34f50dd9-de16-4013-a2ef-6595d9c28930,34f50dd9-de16-4013-a2ef-6595d9c28930,0,1,56fcca65-3429-4409-bce7-f434f6530a74,56fcca65-3429-4409-bce7-f434f6530a74,0,1,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,0,1,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,0,1,b286f047-a4d0-4808-b1b4-27997ead6d49,b286f047-a4d0-4808-b1b4-27997ead6d49,0,1,49da2d3a-657a-4cfd-8e37-422b96d2cda5,49da2d3a-657a-4cfd-8e37-422b96d2cda5,0,1,fced16ae-abee-4fbe-9582-dfd368d5610a,fced16ae-abee-4fbe-9582-dfd368d5610a,0,1,afe60bad-1585-487f-9a39-9b9e031f9576,afe60bad-1585-487f-9a39-9b9e031f9576,0,1,4c4f0475-bd11-40c8-af0d-8affec6f838d,4c4f0475-bd11-40c8-af0d-8affec6f838d,0,1,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,0,1,855439d7-a621-48f5-b6d9-bc2bbd11ad90,855439d7-a621-48f5-b6d9-bc2bbd11ad90,0,1,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,0,1,2f25e742-555b-4db8-bff2-2d345ce2a93a,2f25e742-555b-4db8-bff2-2d345ce2a93a,0,1,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,0,1,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,0,1,a7fee9d3-569d-4b5b-bd47-44790e0095f5,a7fee9d3-569d-4b5b-bd47-44790e0095f5,0,1,a258fe12-7e55-4f89-86fa-962b1d2947ac,a258fe12-7e55-4f89-86fa-962b1d2947ac,0,1,93701593-5ac8-4266-b471-7e9ed35a9c3e,93701593-5ac8-4266-b471-7e9ed35a9c3e,0,1,0fdb864e-ede9-4777-835c-0804968ee544,0fdb864e-ede9-4777-835c-0804968ee544,0,1,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,0,1,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,0,1,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,0,1,5dee9814-fe38-4631-8148-8d6c87ef6f47,5dee9814-fe38-4631-8148-8d6c87ef6f47,0,1,37d17053-5c2b-4972-b6a5-a589f2ddbde6,37d17053-5c2b-4972-b6a5-a589f2ddbde6,0,1,c349968a-3f87-425b-8efb-d847934dee4b,c349968a-3f87-425b-8efb-d847934dee4b,0,1,3bb8dc33-970c-4c58-9036-ce716d963847,3bb8dc33-970c-4c58-9036-ce716d963847,0,1,b3ff39fa-f665-4d01-9a2a-69722e6b1071,b3ff39fa-f665-4d01-9a2a-69722e6b1071,0,1,0abacb0a-ce00-474e-8aec-35685c51ddef,0abacb0a-ce00-474e-8aec-35685c51ddef,0,1,ae407b17-03aa-4268-8603-58d6714dae89,ae407b17-03aa-4268-8603-58d6714dae89,0,1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,0,1,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,0,1,5bb6e52c-ac26-4143-8e90-f04f703f823b,5bb6e52c-ac26-4143-8e90-f04f703f823b,0,1,579baaa4-6493-4d99-8744-6399757295c7,579baaa4-6493-4d99-8744-6399757295c7,0,1,ae6d0e12-8857-476c-b4b2-f03295cbed3e,ae6d0e12-8857-476c-b4b2-f03295cbed3e,0,1,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,0,1,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,0,1,51d83895-5692-4479-9612-07c790d19dff,51d83895-5692-4479-9612-07c790d19dff,0,1,9c1325af-7492-42be-b3af-51b692534510,9c1325af-7492-42be-b3af-51b692534510,0,1,dface15c-cd65-4fb1-b4dd-b513086d3f8e,dface15c-cd65-4fb1-b4dd-b513086d3f8e,0,1,d854b528-8456-4453-9c2d-4f96caf10481,d854b528-8456-4453-9c2d-4f96caf10481,0,1,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,0,1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,0,1,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,0,1,b7e85f5c-4312-44c6-895a-3f636a8c78d8,b7e85f5c-4312-44c6-895a-3f636a8c78d8,0,1,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,0,1,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,0,1,a1afacc5-f49a-4df2-a44d-479594d50179,a1afacc5-f49a-4df2-a44d-479594d50179,0,1,fe70eba3-7477-4a38-a511-d69960abb928,fe70eba3-7477-4a38-a511-d69960abb928,0,1,6534ea96-2145-49e6-9739-f59459dc7f6b,6534ea96-2145-49e6-9739-f59459dc7f6b,0,1,f49bffa0-cad6-4801-b82e-21aa580e72e6,f49bffa0-cad6-4801-b82e-21aa580e72e6,0,1,bbbfb817-8db3-4415-86c3-af028276d6e9,bbbfb817-8db3-4415-86c3-af028276d6e9,0,1,6a91112c-f6cc-47a0-9d26-a36c7702af7d,6a91112c-f6cc-47a0-9d26-a36c7702af7d,0,1,cb92dc2e-6053-4233-a408-4464514b1257,cb92dc2e-6053-4233-a408-4464514b1257,0,1,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,0,1,85550a7a-8fe0-4296-ace5-63cf053536b4,85550a7a-8fe0-4296-ace5-63cf053536b4,0,1,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,0,1,3f8b6411-6606-4d27-891e-7c77be47c5f9,3f8b6411-6606-4d27-891e-7c77be47c5f9,0,1,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,0,1,5eb4ca7f-027a-4860-a167-e6b424527e7a,5eb4ca7f-027a-4860-a167-e6b424527e7a,0,1,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,0,1,6871015f-d959-4a77-a091-a23cb4ebd8f9,6871015f-d959-4a77-a091-a23cb4ebd8f9,0,1,e5e1631b-a494-4e73-b356-b4330b84cc88,e5e1631b-a494-4e73-b356-b4330b84cc88,0,1,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,0,1,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,0,1,80cf54ed-8677-4c89-a378-0abef6c64010,80cf54ed-8677-4c89-a378-0abef6c64010,0,1,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,0,1,56ee3afd-5ae6-421e-b9f3-26505e40f100,56ee3afd-5ae6-421e-b9f3-26505e40f100,0,1,63c9a839-78b2-4706-b380-5aedf6914930,63c9a839-78b2-4706-b380-5aedf6914930,0,1,40f5c1cb-2654-4738-bb44-6734b0e3490b,40f5c1cb-2654-4738-bb44-6734b0e3490b,0,1,2ec484b1-95eb-43a7-9430-1c1ef49f05af,2ec484b1-95eb-43a7-9430-1c1ef49f05af,0,1,1a314ce2-03bc-4267-89a9-bb5bb866f552,1a314ce2-03bc-4267-89a9-bb5bb866f552,0,1,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,0,1,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,0,1,e859dd18-8baf-49c0-b7a0-1205b6c125d3,e859dd18-8baf-49c0-b7a0-1205b6c125d3,0,1,da59378e-0a97-4cff-977b-cc51967068ee,da59378e-0a97-4cff-977b-cc51967068ee,0,1,bbaad46d-f60d-49e6-a077-075366bca47e,bbaad46d-f60d-49e6-a077-075366bca47e,0,1,0d9f5703-91e4-4769-bedd-5bd974f2f617,0d9f5703-91e4-4769-bedd-5bd974f2f617,0,1,926cdf17-1929-43d6-8205-858aab558ad9,926cdf17-1929-43d6-8205-858aab558ad9,0,1,5ec6838f-2d70-4f91-b41b-16adfe8ed587,5ec6838f-2d70-4f91-b41b-16adfe8ed587,0,1,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,0,1,bee8b8a0-f058-44cb-822c-620351567627,bee8b8a0-f058-44cb-822c-620351567627,0,1,26365e29-903b-47fd-ad96-e0d87f5d6e87,26365e29-903b-47fd-ad96-e0d87f5d6e87,0,1,569180cb-ce54-4267-94b9-332e35e3c17d,569180cb-ce54-4267-94b9-332e35e3c17d,0,1,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,0,1,a2c42946-1cdb-457a-a45b-97781cfb4a15,a2c42946-1cdb-457a-a45b-97781cfb4a15,0,1,20adf54c-044c-4bea-8028-b6d20917a030,20adf54c-044c-4bea-8028-b6d20917a030,0,1,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,0,1,fcb97a46-d5fd-4bb5-b899-17723a9fe346,fcb97a46-d5fd-4bb5-b899-17723a9fe346,0,1,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,0,1,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,0,1,a1a44832-6026-47ae-affd-5b6d52e84307,a1a44832-6026-47ae-affd-5b6d52e84307,0,1,d2fd8650-d13a-411d-8206-61b16016bd82,d2fd8650-d13a-411d-8206-61b16016bd82,0,1,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,0,1,4033eb31-8281-402a-afff-431fa36e589e,4033eb31-8281-402a-afff-431fa36e589e,0,1,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,0,1,f59488c7-4643-4988-8043-5c9724e04279,f59488c7-4643-4988-8043-5c9724e04279,0,1,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,0,1,77149f7a-8a76-4569-9487-991c41e132ef,77149f7a-8a76-4569-9487-991c41e132ef,0,1,9e1be65e-986f-4d21-91f0-15c66db0c947,9e1be65e-986f-4d21-91f0-15c66db0c947,0,1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,0,1,d2fe4578-a1f8-4586-b052-fa71d25365c9,d2fe4578-a1f8-4586-b052-fa71d25365c9,0,1,f31f3dab-5796-47ac-a54d-3081f8cad817,f31f3dab-5796-47ac-a54d-3081f8cad817,0,1,cd59707e-b9e4-4038-8203-ae22a8060e8d,cd59707e-b9e4-4038-8203-ae22a8060e8d,0,1,db497857-33d3-49a1-b328-dfc62c973ecb,db497857-33d3-49a1-b328-dfc62c973ecb,0,1,139c001c-7b07-465a-9187-399ad32d294f,139c001c-7b07-465a-9187-399ad32d294f,0,1,5d228ce4-069e-4f98-beed-b8e1de17c3d9,5d228ce4-069e-4f98-beed-b8e1de17c3d9,0,1,9770fc09-87bf-4fce-9b0d-410efd30edae,9770fc09-87bf-4fce-9b0d-410efd30edae,0,1,f3d8590a-dcfa-4d41-8d03-642b99ffa040,f3d8590a-dcfa-4d41-8d03-642b99ffa040,0,1,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,0,1,20156709-1481-4007-8e89-9ce79fc589fc,20156709-1481-4007-8e89-9ce79fc589fc,0,1,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,0,1,7e7c5abd-b645-4de5-a40e-5805ec4456e2,7e7c5abd-b645-4de5-a40e-5805ec4456e2,0,1,763a16c3-a728-4b65-a485-705990310b4a,763a16c3-a728-4b65-a485-705990310b4a,0,1,65338920-c744-4d1e-b351-848b90a3feda,65338920-c744-4d1e-b351-848b90a3feda,0,1,2aedb1ac-caf1-45c7-913e-82a36637d5d4,2aedb1ac-caf1-45c7-913e-82a36637d5d4,0,1,56177464-5e9f-4598-96bc-eb311993c503,56177464-5e9f-4598-96bc-eb311993c503,0,1,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,0,1,bdfe65f4-4174-4e66-915c-943137981cf0,bdfe65f4-4174-4e66-915c-943137981cf0,0,1,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,0,1,c895d58a-5be1-4157-81af-f4f6db9b4b9e,c895d58a-5be1-4157-81af-f4f6db9b4b9e,0,1,8ce6cc1a-8570-4704-b9a3-44e815b2e753,8ce6cc1a-8570-4704-b9a3-44e815b2e753,0,1,7d336fdd-5cbf-4c92-a783-f451f7590502,7d336fdd-5cbf-4c92-a783-f451f7590502,0,1,05243f56-7e9b-4a61-8efb-1b5e525fff21,05243f56-7e9b-4a61-8efb-1b5e525fff21,0,1,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,0,1,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,0,1,86760ecb-2ddd-40ce-bc4f-94c23027a55e,86760ecb-2ddd-40ce-bc4f-94c23027a55e,0,1,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,0,1,7aa86a2d-2b47-447e-8901-806411011279,7aa86a2d-2b47-447e-8901-806411011279,0,1,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,0,1,903af13a-1f73-4145-a3d0-971c3be5fbe6,903af13a-1f73-4145-a3d0-971c3be5fbe6,0,1,37722a34-1148-4cc8-95e6-4645ae9cca98,37722a34-1148-4cc8-95e6-4645ae9cca98,0,1,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,0,1,fca0dfad-f853-4694-9ce9-53a3a10f59b7,fca0dfad-f853-4694-9ce9-53a3a10f59b7,0,1,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,0,1,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,0,1,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,0,1,1470f052-f032-46bc-b1ee-54555e725dfd,1470f052-f032-46bc-b1ee-54555e725dfd,0,1,497cbe4d-586d-48a2-8e98-d20e3e09ed42,497cbe4d-586d-48a2-8e98-d20e3e09ed42,0,1,150c9d05-4ccc-4cb7-879d-b1d9c3534343,150c9d05-4ccc-4cb7-879d-b1d9c3534343,0,1,38b7679d-3739-4572-baf2-d8c7b2a94f0a,38b7679d-3739-4572-baf2-d8c7b2a94f0a,0,1,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,0,1,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,0,1,1281fe19-bbca-4a4f-84d8-14187e62000f,1281fe19-bbca-4a4f-84d8-14187e62000f,0,1,953dbad6-4f5c-4319-874a-db358a77d001,953dbad6-4f5c-4319-874a-db358a77d001,0,1,69ceac29-06d3-45f2-b914-7966465cd0d3,69ceac29-06d3-45f2-b914-7966465cd0d3,0,1,cc34bd23-de0a-4b09-8333-e4693576b9f4,cc34bd23-de0a-4b09-8333-e4693576b9f4,0,1,b4cb92fb-ad82-44ed-9203-397b412b3453,b4cb92fb-ad82-44ed-9203-397b412b3453,0,1,b690721d-960b-4374-8d2c-feed3a2b354b,b690721d-960b-4374-8d2c-feed3a2b354b,0,1,271243d3-1871-4a0a-bf7f-63bacacf0a59,271243d3-1871-4a0a-bf7f-63bacacf0a59,0,1,bc10ad8f-383c-469a-8c0e-60805161055b,bc10ad8f-383c-469a-8c0e-60805161055b,0,1,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,0,1,ee8af8ee-e49a-4511-9a91-48814ab99d23,ee8af8ee-e49a-4511-9a91-48814ab99d23,0,1,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,0,1,6fbf844e-ee8d-490f-9177-6392d262312f,6fbf844e-ee8d-490f-9177-6392d262312f,0,1,65000437-bd07-4841-a458-679d44768c46,65000437-bd07-4841-a458-679d44768c46,0,1,9b7051d5-abc4-416c-a0e6-515d120d78e4,9b7051d5-abc4-416c-a0e6-515d120d78e4,0,1,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,0,1,869938e6-6310-4326-bd15-5b91fe2e0911,869938e6-6310-4326-bd15-5b91fe2e0911,0,1,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,0,1,a156521a-ece1-49d3-8056-1c3508273c45,a156521a-ece1-49d3-8056-1c3508273c45,0,1,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,0,1,10018f80-3138-4089-bf9a-a5f178f1e295,10018f80-3138-4089-bf9a-a5f178f1e295,0,1,43aba109-4b7f-45ef-9c30-8b754e81911b,43aba109-4b7f-45ef-9c30-8b754e81911b,0,1,4ccd72e1-7fd7-4a3b-8428-71b44992937e,4ccd72e1-7fd7-4a3b-8428-71b44992937e,0,1,46077650-2b2c-4319-8279-41f277971669,46077650-2b2c-4319-8279-41f277971669,0,1,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,0,1,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,0,1,e82ebd72-7b5a-4f45-b853-1001bf680a05,e82ebd72-7b5a-4f45-b853-1001bf680a05,0,1,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,0,1,e9e9b733-e97a-430d-95ce-45ea27751f64,e9e9b733-e97a-430d-95ce-45ea27751f64,0,1,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,0,1,3dd50c66-27f7-4f1e-86e9-c709995c8609,3dd50c66-27f7-4f1e-86e9-c709995c8609,0,1,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,0,1,ed1369c5-c274-45bd-ae91-7648565ae09f,ed1369c5-c274-45bd-ae91-7648565ae09f,0,1,8d0fce61-a22f-4033-9e03-3f00c4a21722,8d0fce61-a22f-4033-9e03-3f00c4a21722,0,1,bfb3f026-e940-49c3-ac30-408186f9e11e,bfb3f026-e940-49c3-ac30-408186f9e11e,0,1,e1dc83eb-a8cd-454b-8de8-cff2049be78c,e1dc83eb-a8cd-454b-8de8-cff2049be78c,0,1,9edd9288-1463-4d67-b9f0-40f351d978e9,9edd9288-1463-4d67-b9f0-40f351d978e9,0,1,c9db6c68-965f-4567-b26e-5d497a389de1,c9db6c68-965f-4567-b26e-5d497a389de1,0,1,4da2f65d-56bd-4140-9b31-e5ccac4a800a,4da2f65d-56bd-4140-9b31-e5ccac4a800a,0,1,eb163bba-b94c-4a78-9c2d-7b519325e3d4,eb163bba-b94c-4a78-9c2d-7b519325e3d4,0,1,939bdb9a-294b-4b42-a56f-030f69bc29c4,939bdb9a-294b-4b42-a56f-030f69bc29c4,0,1,ee7a763b-bcbf-4ff3-89af-eb7965b33515,ee7a763b-bcbf-4ff3-89af-eb7965b33515,0,1,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,0,1,b8931f98-c1d7-4e9b-be43-065064e7ba95,b8931f98-c1d7-4e9b-be43-065064e7ba95,0,1,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,0,1,60848308-931c-4da3-aa4b-37f6fb4b194f,60848308-931c-4da3-aa4b-37f6fb4b194f,0,1,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,0,1,54b14504-503b-45f6-9b5d-785b49829425,54b14504-503b-45f6-9b5d-785b49829425,0,1,80d3ee33-1cdc-4af6-85c2-787094526592,80d3ee33-1cdc-4af6-85c2-787094526592,0,1,c8b28660-6cb0-4ef5-85c2-a75da863ba96,c8b28660-6cb0-4ef5-85c2-a75da863ba96,0,1,1cd607b4-49fc-460e-a014-6afe50083b47,1cd607b4-49fc-460e-a014-6afe50083b47,0,1,a215e767-36e9-4408-9d18-7b4be757022a,a215e767-36e9-4408-9d18-7b4be757022a,0,1,a3e262bc-9f0d-480d-a1d1-c2326105d22d,a3e262bc-9f0d-480d-a1d1-c2326105d22d,0,1,8eae0c79-288b-4773-90bb-49299ad45628,8eae0c79-288b-4773-90bb-49299ad45628,0,1,2faa5594-f1b4-4312-b674-82fdf9623105,2faa5594-f1b4-4312-b674-82fdf9623105,0,1,185c1ad3-b5db-49b6-9342-d08e1bf64903,185c1ad3-b5db-49b6-9342-d08e1bf64903,0,1,3c69a4ad-001d-4421-88f6-412e15d710d6,3c69a4ad-001d-4421-88f6-412e15d710d6,0,1,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,0,1,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,0,1,6a68a08a-ea37-4573-ab9f-ec822f6d250b,6a68a08a-ea37-4573-ab9f-ec822f6d250b,0,1,00e87d04-8104-420b-b2c6-7304889a75b2,00e87d04-8104-420b-b2c6-7304889a75b2,0,1,bde86820-f7bb-463b-97d0-bfa5f8323af0,bde86820-f7bb-463b-97d0-bfa5f8323af0,0,1,289a6aac-dc4e-4fae-8815-853e78d450bb,289a6aac-dc4e-4fae-8815-853e78d450bb,0,1,557e7d89-83ed-45d0-86cc-6e355f14025d,557e7d89-83ed-45d0-86cc-6e355f14025d,0,1,d681b26b-dd8d-46d7-986e-10f05c37a1e4,d681b26b-dd8d-46d7-986e-10f05c37a1e4,0,1,4d3c216e-c04f-4884-8681-1c861c50ce7d,4d3c216e-c04f-4884-8681-1c861c50ce7d,0,1,4a41eee0-c973-4824-a07c-9fcf731f055e,4a41eee0-c973-4824-a07c-9fcf731f055e,0,1,ee756c33-f408-4449-a6bb-3186a0421362,ee756c33-f408-4449-a6bb-3186a0421362,0,1,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,0,1,6ff66622-4d20-4696-9fe9-4b4faeb21d96,6ff66622-4d20-4696-9fe9-4b4faeb21d96,0,1,46237eec-c206-4d21-883c-27599b9ed38c,46237eec-c206-4d21-883c-27599b9ed38c,0,1,8b451909-2c15-48f2-b869-65e7031cc542,8b451909-2c15-48f2-b869-65e7031cc542,0,1,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,0,1,7b377fca-4466-476f-9eb2-0b00141103d6,7b377fca-4466-476f-9eb2-0b00141103d6,0,1,9ce5eceb-f366-4035-956e-62721358b154,9ce5eceb-f366-4035-956e-62721358b154,0,1,52c016dd-f0df-4251-94c2-2e29ed5bc2d6,52c016dd-f0df-4251-94c2-2e29ed5bc2d6,0,1,c559ab26-8ed8-418e-9342-0559442dbcbf,c559ab26-8ed8-418e-9342-0559442dbcbf,0,1,1685c406-d0cb-4e0a-a3b0-036c8c22942a,1685c406-d0cb-4e0a-a3b0-036c8c22942a,0,1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,0,1,81db41a6-2580-4a69-b1fd-57cfd48a7efa,81db41a6-2580-4a69-b1fd-57cfd48a7efa,0,1,0db8b3b2-bf24-4006-9897-797084c241ef,0db8b3b2-bf24-4006-9897-797084c241ef,0,1,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,0,1,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,0,1,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,0,1,20091427-d173-40ca-b2c4-53ee99b0b5ae,20091427-d173-40ca-b2c4-53ee99b0b5ae,0,1,14cbde39-a39a-48e5-9b72-b798a0bcea3f,14cbde39-a39a-48e5-9b72-b798a0bcea3f,0,1,56871c10-e3af-4679-afad-3baa910d73bb,56871c10-e3af-4679-afad-3baa910d73bb,0,1,f81b51c5-57e4-41f8-9ad5-3d2717351b95,f81b51c5-57e4-41f8-9ad5-3d2717351b95,0,1,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,0,1,de0a39e0-d37d-47c6-a019-e44836edc8d1,de0a39e0-d37d-47c6-a019-e44836edc8d1,0,1,1fdcc1e7-ad53-409e-ba13-84c6429740cd,1fdcc1e7-ad53-409e-ba13-84c6429740cd,0,1,71d544bf-15c1-4581-8baa-ac126308425c,71d544bf-15c1-4581-8baa-ac126308425c,0,1,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,0,1,7acfe30e-73cb-465a-88f2-92b7275dc49b,7acfe30e-73cb-465a-88f2-92b7275dc49b,0,1,8e387dac-5029-49da-a013-355df0a51a44,8e387dac-5029-49da-a013-355df0a51a44,0,1,13859664-8307-40e8-855b-557b9cf2f1ec,13859664-8307-40e8-855b-557b9cf2f1ec,0,1,e4397fba-507f-497c-9414-7d08ccd4d799,e4397fba-507f-497c-9414-7d08ccd4d799,0,1,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,0,1,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,0,1,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,0,1,d915d338-3e4c-45c3-aef5-a07cf41b05f6,d915d338-3e4c-45c3-aef5-a07cf41b05f6,0,1,978640a2-5c4b-4e21-857e-34f00840fba8,978640a2-5c4b-4e21-857e-34f00840fba8,0,1,da2913e3-a29b-423f-9aae-08fed56a7d90,da2913e3-a29b-423f-9aae-08fed56a7d90,0,1,149e72b8-cc03-4b4f-8ca4-07987600c34d,149e72b8-cc03-4b4f-8ca4-07987600c34d,0,1,7649bd7b-fe8c-4338-80fc-153160a5e538,7649bd7b-fe8c-4338-80fc-153160a5e538,0,1,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,0,1,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,0,1,6137605e-4850-44ec-b4ee-048bd8e0ec3a,6137605e-4850-44ec-b4ee-048bd8e0ec3a,0,1,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,0,1,0e6e9372-beb4-478e-9428-71b19a60739b,0e6e9372-beb4-478e-9428-71b19a60739b,0,1,32b11498-542f-46b2-829f-1525936ab7fa,32b11498-542f-46b2-829f-1525936ab7fa,0,1,64afa916-4750-4008-8c6c-2a470fb11283,64afa916-4750-4008-8c6c-2a470fb11283,0,1,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,0,1,35354abc-9a76-4ee8-8796-c24b37365ea0,35354abc-9a76-4ee8-8796-c24b37365ea0,0,1,7078977f-31bf-427e-ac37-e309d81fe999,7078977f-31bf-427e-ac37-e309d81fe999,0,1,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,0,1,d8854555-9e15-4d82-a1fd-656a848a8e8a,d8854555-9e15-4d82-a1fd-656a848a8e8a,0,1,53191842-ea05-4491-84d7-071cd201992d,53191842-ea05-4491-84d7-071cd201992d,0,1,86c70449-4cf7-4baf-9742-b82b134ed929,86c70449-4cf7-4baf-9742-b82b134ed929,0,1,af3b1881-163a-4c07-a1d9-77ceadf59c77,af3b1881-163a-4c07-a1d9-77ceadf59c77,0,1,b78be6fb-7db8-48c8-ba7b-aab1fea34890,b78be6fb-7db8-48c8-ba7b-aab1fea34890,0,1,bd27276a-e80c-4135-b341-f99a816ffe86,bd27276a-e80c-4135-b341-f99a816ffe86,0,1,35306678-147c-4ad1-a3c6-c80a11afa22f,35306678-147c-4ad1-a3c6-c80a11afa22f,0,1,0da75726-ae71-4d83-a696-a774c787a8a2,0da75726-ae71-4d83-a696-a774c787a8a2,0,1,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,0,1,896a7267-0198-4cbb-b6e6-7aa157c0cc61,896a7267-0198-4cbb-b6e6-7aa157c0cc61,0,1,2005bf54-219b-4111-bff1-e12e2c6dca3e,2005bf54-219b-4111-bff1-e12e2c6dca3e,0,1,abab8f73-d705-4350-b44d-f912649a2190,abab8f73-d705-4350-b44d-f912649a2190,0,1,20c9c25c-f8c9-429f-84bd-543cb809abef,20c9c25c-f8c9-429f-84bd-543cb809abef,0,1,dc5f451e-3275-43a8-9f48-45b83220d461,dc5f451e-3275-43a8-9f48-45b83220d461,0,1,028f5e81-61df-4d13-876d-781c5fd18ee6,028f5e81-61df-4d13-876d-781c5fd18ee6,0,1,3cbb59ef-7f64-4590-8a54-ba01e78283c3,3cbb59ef-7f64-4590-8a54-ba01e78283c3,0,1,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,0,1,388eb513-fadb-40cd-8a7b-33b904dd758e,388eb513-fadb-40cd-8a7b-33b904dd758e,0,1,0613c6aa-e1fe-4632-a396-a17ec773158f,0613c6aa-e1fe-4632-a396-a17ec773158f,0,1,1a330987-4c79-4ab7-b250-db8d32c78751,1a330987-4c79-4ab7-b250-db8d32c78751,0,1,555062ed-9a04-41d8-877f-0a667e9a08cd,555062ed-9a04-41d8-877f-0a667e9a08cd,0,1,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,0,1,ac160e1c-fef7-4625-84e0-964b397f6bdb,ac160e1c-fef7-4625-84e0-964b397f6bdb,0,1,b8946d9c-dda8-4b94-8cbf-db62b647c53e,b8946d9c-dda8-4b94-8cbf-db62b647c53e,0,1,24215916-7732-4030-9f88-163f644e94f7,24215916-7732-4030-9f88-163f644e94f7,0,1,69697945-9748-4cea-a20f-e244b46de2e8,69697945-9748-4cea-a20f-e244b46de2e8,0,1,68538fd1-262c-43ea-b09f-8a66643a0062,68538fd1-262c-43ea-b09f-8a66643a0062,0,1,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,0,1,82ad24cc-d9f8-440b-a720-e204101d85da,82ad24cc-d9f8-440b-a720-e204101d85da,0,1,8010065f-aec8-4768-85ec-9eb7b2b01e7e,8010065f-aec8-4768-85ec-9eb7b2b01e7e,0,1,a44348cb-e20c-4afd-8483-3b9c735b352c,a44348cb-e20c-4afd-8483-3b9c735b352c,0,1,ebfe4c74-6e16-4b64-8a52-cea95c446903,ebfe4c74-6e16-4b64-8a52-cea95c446903,0,1,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,0,1,d912e472-9553-4b96-8b16-7aaff6c14239,d912e472-9553-4b96-8b16-7aaff6c14239,0,1,b04018b5-a74d-43c9-8519-6cc8aa23fe09,b04018b5-a74d-43c9-8519-6cc8aa23fe09,0,1,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,0,1,9283277f-2b75-4c3a-810a-8d4071b3afcc,9283277f-2b75-4c3a-810a-8d4071b3afcc,0,1,d03d5b18-57a2-43c0-99ea-8ad9d5788179,d03d5b18-57a2-43c0-99ea-8ad9d5788179,0,1,c491a7fc-14f9-498a-b7dd-575dfc66878e,c491a7fc-14f9-498a-b7dd-575dfc66878e,0,1,db15f8eb-4736-4b47-9cee-3e6883f0888c,db15f8eb-4736-4b47-9cee-3e6883f0888c,0,1,59064eb2-2770-4f1c-96bd-801926fe68ef,59064eb2-2770-4f1c-96bd-801926fe68ef,0,1,6b2340d7-687f-43a3-8eb8-8ddb86712466,6b2340d7-687f-43a3-8eb8-8ddb86712466,0,1,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,0,1,ca5d586f-81bb-40ee-b3bd-de854857c984,ca5d586f-81bb-40ee-b3bd-de854857c984,0,1,73f89524-dbe8-426f-8ee6-1277eb1967cc,73f89524-dbe8-426f-8ee6-1277eb1967cc,0,1,ee7d970c-cef7-4740-a357-1fe78f88a6e6,ee7d970c-cef7-4740-a357-1fe78f88a6e6,0,1,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,0,1,6733f1bd-7878-4a33-8995-c07526e87c1a,6733f1bd-7878-4a33-8995-c07526e87c1a,0,1,ec34befe-3c0b-4a75-b943-840c52e7dda5,ec34befe-3c0b-4a75-b943-840c52e7dda5,0,1,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,0,1,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0,1,144d5498-bb61-4bec-bef3-85a5a4aec3d5,144d5498-bb61-4bec-bef3-85a5a4aec3d5,0,1,9328da5c-4689-4a60-8136-ae9eac46ab38,9328da5c-4689-4a60-8136-ae9eac46ab38,0,1,42641296-64da-46e0-a407-de2d492f9c90,42641296-64da-46e0-a407-de2d492f9c90,0,1,b834af0b-086c-445d-a271-7e178c324551,b834af0b-086c-445d-a271-7e178c324551,0,1,32c10512-7bb8-423b-9503-ab2fa41386a4,32c10512-7bb8-423b-9503-ab2fa41386a4,0,1,888edfc4-8140-4675-b267-c32bf1d8d29d,888edfc4-8140-4675-b267-c32bf1d8d29d,0,1,f7e73257-fae1-465a-ae74-faaa0273a416,f7e73257-fae1-465a-ae74-faaa0273a416,0,1,2abbd53a-0ead-42af-8df6-fde663aea300,2abbd53a-0ead-42af-8df6-fde663aea300,0,1,24611bf9-5492-443a-935c-a0058e86493f,24611bf9-5492-443a-935c-a0058e86493f,0,1,af22406b-daac-475d-b6a9-577452502b84,af22406b-daac-475d-b6a9-577452502b84,0,1,7a925960-a579-4b06-90e0-5121dc774024,7a925960-a579-4b06-90e0-5121dc774024,0,1,13beb01d-dd08-4a6d-863b-651e70bbf51f,13beb01d-dd08-4a6d-863b-651e70bbf51f,0,1,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,0,1,57a0f5f3-6573-4b35-af25-cea3a25641f1,57a0f5f3-6573-4b35-af25-cea3a25641f1,0,1,ff18803b-4c3a-4720-a718-7547f04c6e2f,ff18803b-4c3a-4720-a718-7547f04c6e2f,0,1,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0,1,40b08a20-51a3-438b-ba54-466917ea809f,40b08a20-51a3-438b-ba54-466917ea809f,0,1,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,0,1,45a8c780-c067-40d7-bbe9-81f854aacf7a,45a8c780-c067-40d7-bbe9-81f854aacf7a,0,1,57885cac-059a-4a08-aa2c-43b116d2c777,57885cac-059a-4a08-aa2c-43b116d2c777,0,1,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,0,1,56b570b1-93b0-468a-9672-9c71113753f3,56b570b1-93b0-468a-9672-9c71113753f3,0,1,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,0,1,e7b0ae70-0192-456c-9dc5-e66049fa9df2,e7b0ae70-0192-456c-9dc5-e66049fa9df2,0,1,68944d09-618e-4fa3-a7af-8c84218e0ac7,68944d09-618e-4fa3-a7af-8c84218e0ac7,0,1,91b12ce3-e8ba-4c9d-9daa-1d5532500314,91b12ce3-e8ba-4c9d-9daa-1d5532500314,0,1,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,0,1,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,0,1,cb57aabc-eeef-42b4-9bc2-873cebd9618c,cb57aabc-eeef-42b4-9bc2-873cebd9618c,0,1,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,0,1,52f30ed7-aa16-4ce2-9684-e50229ab0015,52f30ed7-aa16-4ce2-9684-e50229ab0015,0,1,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,0,1,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0,1,54ecaf7b-9bc5-483c-96e1-270bcd323590,54ecaf7b-9bc5-483c-96e1-270bcd323590,0,1,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,0,1,58f6f8fa-7473-40f5-973a-6279335d8f33,58f6f8fa-7473-40f5-973a-6279335d8f33,0,1,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,0,1,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,0,1,fa3632fe-185b-49aa-85ae-dfb721835d40,fa3632fe-185b-49aa-85ae-dfb721835d40,0,1,a4f15108-477c-465e-aaea-cb495ef52cf5,a4f15108-477c-465e-aaea-cb495ef52cf5,0,1,9cda5c2c-f401-4f63-b445-cef160296e48,9cda5c2c-f401-4f63-b445-cef160296e48,0,1,e8ae4a26-3127-43ae-af7a-c2e278d2611d,e8ae4a26-3127-43ae-af7a-c2e278d2611d,0,1,b923c78f-d074-41b4-b832-086686258f19,b923c78f-d074-41b4-b832-086686258f19,0,1,8ff96413-6fdd-4b8d-a181-ea0d8633defc,8ff96413-6fdd-4b8d-a181-ea0d8633defc,0,1,54604ed2-766b-4308-b99e-447817d82799,54604ed2-766b-4308-b99e-447817d82799,0,1,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,0,1,f48b4475-2cd9-41df-962a-6529f84985ca,f48b4475-2cd9-41df-962a-6529f84985ca,0,1,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,0,1,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,0,1,bf94feb9-edf7-4df8-b5f5-805613663a0a,bf94feb9-edf7-4df8-b5f5-805613663a0a,0,1,6d852a13-c85e-4e84-8396-f91c1ed0596e,6d852a13-c85e-4e84-8396-f91c1ed0596e,0,1,9c2d5313-a4fd-417e-a340-ad4980d0028b,9c2d5313-a4fd-417e-a340-ad4980d0028b,0,1,4fb4a280-9426-4c41-a9ba-11f9d01a0740,4fb4a280-9426-4c41-a9ba-11f9d01a0740,0,1,1591ee7e-870c-4bf7-9450-be84f1b2506f,1591ee7e-870c-4bf7-9450-be84f1b2506f,0,1,8f088f33-92d7-4e35-915d-6cda1129dd80,8f088f33-92d7-4e35-915d-6cda1129dd80,0,1,9a8578a2-8a92-4ab3-a480-173340f8b34a,9a8578a2-8a92-4ab3-a480-173340f8b34a,0,1,4889d27b-435b-4059-a34d-6afdf3c77fa3,4889d27b-435b-4059-a34d-6afdf3c77fa3,0,1,4ebf0988-ccc3-440c-bd0f-2d01636bd730,4ebf0988-ccc3-440c-bd0f-2d01636bd730,0,1,69f42341-268b-4e74-9d6d-527800d018ab,69f42341-268b-4e74-9d6d-527800d018ab,0,1,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,0,1,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,0,1,7eb5217f-684d-4a9e-8aef-48cedc809cbb,7eb5217f-684d-4a9e-8aef-48cedc809cbb,0,1,4b54d626-dc59-4e49-a708-0a7f98833b9a,4b54d626-dc59-4e49-a708-0a7f98833b9a,0,1,1c90a423-ef1b-42dc-a43b-1fda89672481,1c90a423-ef1b-42dc-a43b-1fda89672481,0,1,095cf2d6-5a7c-452d-8d60-991afb6e52bd,095cf2d6-5a7c-452d-8d60-991afb6e52bd,0,1,2c155a03-2aff-4632-adb2-be3266e0fac3,2c155a03-2aff-4632-adb2-be3266e0fac3,0,1,f9213a70-bfd6-464f-b28b-ed35bdf351c0,f9213a70-bfd6-464f-b28b-ed35bdf351c0,0,1,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,0,1,7e32c295-a769-4cff-a3eb-992f7031475f,7e32c295-a769-4cff-a3eb-992f7031475f,0,1,eb81610a-eb2f-4068-ba74-75e0f5bbace8,eb81610a-eb2f-4068-ba74-75e0f5bbace8,0,1,21826316-0b49-4034-a49e-6d34c15ceb5c,21826316-0b49-4034-a49e-6d34c15ceb5c,0,1,3abffa47-8d47-4173-897b-708e1a06ef39,3abffa47-8d47-4173-897b-708e1a06ef39,0,1,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0,1,5a398637-a06c-4442-9093-a864fa7f049f,5a398637-a06c-4442-9093-a864fa7f049f,0,1,38692186-a62a-42d1-87cd-7dbc6d4816ed,38692186-a62a-42d1-87cd-7dbc6d4816ed,0,1,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,0,1,3a28cea9-7fd7-4834-ab89-2a74331a64e3,3a28cea9-7fd7-4834-ab89-2a74331a64e3,0,1,0f881709-4520-4f18-af9d-cf08757693ff,0f881709-4520-4f18-af9d-cf08757693ff,0,1,c5151ca9-5103-42b2-8573-273c15416db8,c5151ca9-5103-42b2-8573-273c15416db8,0,1,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,0,1,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,0,1,115a6019-ef87-4126-8ebf-070c1e882940,115a6019-ef87-4126-8ebf-070c1e882940,0,1,162ce023-b2e1-41dc-bcaf-b8e30caccce0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,0,1,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,0,1,c13fb1cd-fe72-48a6-b383-55b6323619ce,c13fb1cd-fe72-48a6-b383-55b6323619ce,0,1,956fc8ee-96be-4309-b1e8-209372f151ab,956fc8ee-96be-4309-b1e8-209372f151ab,0,1,526c688e-a4d4-45f7-8bba-b8ceff38fe27,526c688e-a4d4-45f7-8bba-b8ceff38fe27,0,1,67efa786-312f-4c9c-b970-0320e92069af,67efa786-312f-4c9c-b970-0320e92069af,0,1,12f85e09-1190-4483-b531-630ab718db7f,12f85e09-1190-4483-b531-630ab718db7f,0,1,52f4453e-e968-4290-a79a-470f68fbd07f,52f4453e-e968-4290-a79a-470f68fbd07f,0,1,5b952e35-1037-4447-8293-6d8889692c8b,5b952e35-1037-4447-8293-6d8889692c8b,0,1,05bc8b4e-8c90-4502-8b16-7b1e7625d569,05bc8b4e-8c90-4502-8b16-7b1e7625d569,0,1,ce34d88d-3017-4197-a962-ea23a6a96d32,ce34d88d-3017-4197-a962-ea23a6a96d32,0,1,2cbc16da-aa67-4ad6-82f8-fa6922447be6,2cbc16da-aa67-4ad6-82f8-fa6922447be6,0,1,19d7a1ba-c343-4575-95da-53dac6d4b2cb,19d7a1ba-c343-4575-95da-53dac6d4b2cb,0,1,6cc8b3a0-3377-4b39-b6b0-69c862a15465,6cc8b3a0-3377-4b39-b6b0-69c862a15465,0,1,acb193f4-52e5-4572-a79b-b825a2f6525f,acb193f4-52e5-4572-a79b-b825a2f6525f,0,1,5d46f719-e468-48e2-b4ec-acb85c710451,5d46f719-e468-48e2-b4ec-acb85c710451,0,1,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,0,1,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,0,1,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,0,1,5422610d-b92c-4213-a58c-8db067d93b66,5422610d-b92c-4213-a58c-8db067d93b66,0,1,8f59a635-9e0e-470d-8fda-a47a262a59c2,8f59a635-9e0e-470d-8fda-a47a262a59c2,0,1,ffb50eb9-149a-46ec-9472-d8f20ad09810,ffb50eb9-149a-46ec-9472-d8f20ad09810,0,1,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,0,1,7a6449e2-e90a-4720-a769-192284ef69c1,7a6449e2-e90a-4720-a769-192284ef69c1,0,1,02118b98-2349-46b1-a328-d6e2b5781f7e,02118b98-2349-46b1-a328-d6e2b5781f7e,0,1,67de9cbb-5c80-4cff-bfbe-269a958e08e6,67de9cbb-5c80-4cff-bfbe-269a958e08e6,0,1,2228a457-6805-41ee-85af-5ebca9568bf4,2228a457-6805-41ee-85af-5ebca9568bf4,0,1,96b71795-e230-4ecb-b98d-4feb3f8b9662,96b71795-e230-4ecb-b98d-4feb3f8b9662,0,1,04055821-03ce-4049-af2c-8670c80517f6,04055821-03ce-4049-af2c-8670c80517f6,0,1,0101305d-62eb-4802-9cd4-d615a518d842,0101305d-62eb-4802-9cd4-d615a518d842,0,1,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,0,1,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,0,1,7c424424-9660-462d-9cf2-4c1e6bd284fa,7c424424-9660-462d-9cf2-4c1e6bd284fa,0,1,e118f957-ab2c-473b-ab64-37032f727416,e118f957-ab2c-473b-ab64-37032f727416,0,1,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,0,1,21f64e5f-dc94-4ce9-b836-e75646ae3325,21f64e5f-dc94-4ce9-b836-e75646ae3325,0,1,82e8a180-f2e1-406c-9609-89d33504aff2,82e8a180-f2e1-406c-9609-89d33504aff2,0,1,e7437c81-3d5b-466e-880c-8febe4a68e88,e7437c81-3d5b-466e-880c-8febe4a68e88,0,1,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,0,1,307771e6-bcf7-4016-b369-e1655bbe9e94,307771e6-bcf7-4016-b369-e1655bbe9e94,0,1,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,0,1,38fc6a54-846c-40b0-9254-3261f540bf18,38fc6a54-846c-40b0-9254-3261f540bf18,0,1,d9134d0c-56cd-4b8f-ab11-ae37fc306801,d9134d0c-56cd-4b8f-ab11-ae37fc306801,0,1,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,0,1,8f2af24b-f5fa-4f6d-831e-28453bdedefc,8f2af24b-f5fa-4f6d-831e-28453bdedefc,0,1,d119e21d-0087-4f22-b3bd-b14707b65330,d119e21d-0087-4f22-b3bd-b14707b65330,0,1,dc9b4072-11de-40fe-bf2a-f7b15af0a250,dc9b4072-11de-40fe-bf2a-f7b15af0a250,0,1,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,0,1,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,0,1,932b1c1a-72eb-49cd-8218-d0ced9c454d8,932b1c1a-72eb-49cd-8218-d0ced9c454d8,0,1,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,0,1,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,0,1,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,0,1,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,0,1,5dd336c4-88c5-4f53-acf0-5f86a658c528,5dd336c4-88c5-4f53-acf0-5f86a658c528,0,1,c723112b-286d-46f1-989d-81252062a025,c723112b-286d-46f1-989d-81252062a025,0,1,67e8b47e-4bad-4b2f-b196-8a9708893051,67e8b47e-4bad-4b2f-b196-8a9708893051,0,1,a583e53a-3f3c-48c7-8928-37ce40b2bafe,a583e53a-3f3c-48c7-8928-37ce40b2bafe,0,1,a844dd4a-274a-4894-9446-031dbe006084,a844dd4a-274a-4894-9446-031dbe006084,0,1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,0,1,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,0,1,77bdd30f-4933-4bda-9c7a-b0a097da0910,77bdd30f-4933-4bda-9c7a-b0a097da0910,0,1,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,0,1,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,0,1,a682e9e1-284f-4e32-86b2-6736f159f585,a682e9e1-284f-4e32-86b2-6736f159f585,0,1,84f0bd89-9b86-440f-b942-9b685e22233e,84f0bd89-9b86-440f-b942-9b685e22233e,0,1,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,0,1,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,0,1,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,0,1,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,0,1,fabf8a0b-366f-4f23-9377-315534bb854b,fabf8a0b-366f-4f23-9377-315534bb854b,0,1,7aac6439-64c9-4492-b866-bf91dda82d06,7aac6439-64c9-4492-b866-bf91dda82d06,0,1,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,0,1,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,0,1,08b86f29-64ef-467a-af1a-d27ffdf621ba,08b86f29-64ef-467a-af1a-d27ffdf621ba,0,1,6483d1ab-c53d-4985-ad7e-b799adbcd9da,6483d1ab-c53d-4985-ad7e-b799adbcd9da,0,1,82f66233-ed13-49ae-ab72-7cf91c88c760,82f66233-ed13-49ae-ab72-7cf91c88c760,0,1,75cddbcd-e960-4164-81d8-ac0a2a36e95b,75cddbcd-e960-4164-81d8-ac0a2a36e95b,0,1,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,0,1,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,0,1,d9151001-a911-45c1-a8e6-dcf0da623ed3,d9151001-a911-45c1-a8e6-dcf0da623ed3,0,1,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,0,1,e589a693-ff50-4c36-ae26-a8fcae966d57,e589a693-ff50-4c36-ae26-a8fcae966d57,0,1,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,0,1,90f023f5-5b48-4f98-bfc6-b704277a355d,90f023f5-5b48-4f98-bfc6-b704277a355d,0,1,99485603-706d-4301-be25-82b1c0ee8f4d,99485603-706d-4301-be25-82b1c0ee8f4d,0,1,e7a28021-c75e-41b2-9974-cf4beee34d28,e7a28021-c75e-41b2-9974-cf4beee34d28,0,1,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,0,1,2a603c61-4cbf-4c6d-a0b2-40c835d36737,2a603c61-4cbf-4c6d-a0b2-40c835d36737,0,1,a8d7f071-401b-499e-957c-d077d8002e54,a8d7f071-401b-499e-957c-d077d8002e54,0,1,211a539b-4be9-4816-98f6-f756e65eafd8,211a539b-4be9-4816-98f6-f756e65eafd8,0,1,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,0,1,e9b9da80-7806-4c9c-a002-01cfa3109169,e9b9da80-7806-4c9c-a002-01cfa3109169,0,1,a271041d-0203-4ecd-bb39-70256c50192e,a271041d-0203-4ecd-bb39-70256c50192e,0,1,73eff626-a363-4a5a-879e-61ef6ce0726f,73eff626-a363-4a5a-879e-61ef6ce0726f,0,1,acf15b79-a6c4-4c46-8013-50d3b223baf6,acf15b79-a6c4-4c46-8013-50d3b223baf6,0,1,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,0,1,2d8d5d74-2bc0-4282-af66-e4a37694c147,2d8d5d74-2bc0-4282-af66-e4a37694c147,0,1,cfd31341-287b-4684-9ac0-b28b4e066f15,cfd31341-287b-4684-9ac0-b28b4e066f15,0,1,81de1b0b-7f2d-4098-ae99-061c6a90dc29,81de1b0b-7f2d-4098-ae99-061c6a90dc29,0,1,f829e2a9-5bdb-4171-8b32-8d10d5968813,f829e2a9-5bdb-4171-8b32-8d10d5968813,0,1,647ba8f8-57f7-4c19-af59-525517c1e392,647ba8f8-57f7-4c19-af59-525517c1e392,0,1,39062cb3-4ae8-4c0d-889b-038a55179946,39062cb3-4ae8-4c0d-889b-038a55179946,0,1,c62d4212-36ca-4afb-bac9-269b6f64ca51,c62d4212-36ca-4afb-bac9-269b6f64ca51,0,1,5cec5e16-46ad-4f8c-b869-f5b1cc487884,5cec5e16-46ad-4f8c-b869-f5b1cc487884,0,1,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,0,1,7aacdf81-49fd-47a3-a36a-c483f1b05872,7aacdf81-49fd-47a3-a36a-c483f1b05872,0,1,857015e2-afb2-403d-bfb7-7acb5080797b,857015e2-afb2-403d-bfb7-7acb5080797b,0,1,5657286b-114b-41de-ab7d-45d0f0d95e2d,5657286b-114b-41de-ab7d-45d0f0d95e2d,0,1,42a0271e-6783-44db-95c1-09805ae01f58,42a0271e-6783-44db-95c1-09805ae01f58,0,1,8628783e-4fad-4dff-8220-9e0ddc8580f8,8628783e-4fad-4dff-8220-9e0ddc8580f8,0,1,356fc245-3034-42d1-84d0-632c6dc7a3d5,356fc245-3034-42d1-84d0-632c6dc7a3d5,0,1,07462664-6b58-4f5a-9b3f-2e5c376f17df,07462664-6b58-4f5a-9b3f-2e5c376f17df,0,1,6f23e946-f700-424b-b9bf-3a9c8846908d,6f23e946-f700-424b-b9bf-3a9c8846908d,0,1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,0,1,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,0,1,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,0,1,c656771c-dcb7-4c78-9a16-e62806d5bb5a,c656771c-dcb7-4c78-9a16-e62806d5bb5a,0,1,ec42c45c-18ca-44b0-9c59-1cb204552a43,ec42c45c-18ca-44b0-9c59-1cb204552a43,0,1,2aafb1a1-4321-47e9-9783-03ab616a2873,2aafb1a1-4321-47e9-9783-03ab616a2873,0,1,71109997-6da0-4eaf-bbf2-f94fa24f37cc,71109997-6da0-4eaf-bbf2-f94fa24f37cc,0,1,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,0,1,d601281c-379d-4a9d-843e-478fd6567415,d601281c-379d-4a9d-843e-478fd6567415,0,1,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,0,1,427e6f15-334e-42be-9554-895d8f7ebfc6,427e6f15-334e-42be-9554-895d8f7ebfc6,0,1,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,0,1,36bc8523-41a5-48ff-9bd0-758d078c4408,36bc8523-41a5-48ff-9bd0-758d078c4408,0,1,94ca1b45-3cf0-4857-8299-999c93f4fb56,94ca1b45-3cf0-4857-8299-999c93f4fb56,0,1,ee8419c6-79ca-4546-9a66-bacaa08d2a73,ee8419c6-79ca-4546-9a66-bacaa08d2a73,0,1,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,0,1,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,0,1,ada11ea2-94d5-4172-a383-a51774599568,ada11ea2-94d5-4172-a383-a51774599568,0,1,50515bbc-43ee-4b00-bfc5-105b7981bd8f,50515bbc-43ee-4b00-bfc5-105b7981bd8f,0,1,1ea080b0-0a11-4152-b8bb-4918bc142a23,1ea080b0-0a11-4152-b8bb-4918bc142a23,0,1,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,0,1,6930e471-7935-4d68-a980-2acde93ba801,6930e471-7935-4d68-a980-2acde93ba801,0,1,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,0,1,5135cc48-c749-4acb-a225-d110f386f482,5135cc48-c749-4acb-a225-d110f386f482,0,1,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,0,1,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,0,1,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,0,1,2e9fa546-96fb-4ecb-b933-7921e131e89b,2e9fa546-96fb-4ecb-b933-7921e131e89b,0,1,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,0,1,637a132b-1a88-44ba-b45f-ed4ed1ac1001,637a132b-1a88-44ba-b45f-ed4ed1ac1001,0,1,699f734b-43d2-4351-bff8-e0e21e164a42,699f734b-43d2-4351-bff8-e0e21e164a42,0,1,95f0792a-7ac4-450a-b05c-219741e61abd,95f0792a-7ac4-450a-b05c-219741e61abd,0,1,742a2e8c-496e-4e02-931d-d33f7afe07a5,742a2e8c-496e-4e02-931d-d33f7afe07a5,0,1,c3efa853-cd29-4618-929f-e3bec33dfd65,c3efa853-cd29-4618-929f-e3bec33dfd65,0,1,62185c28-3d24-487a-9441-b309dcf11e31,62185c28-3d24-487a-9441-b309dcf11e31,0,1,9f264aeb-664d-4724-8248-11873d63ef3b,9f264aeb-664d-4724-8248-11873d63ef3b,0,1,b926d058-53a9-4eea-b4f9-98e77f798dd9,b926d058-53a9-4eea-b4f9-98e77f798dd9,0,1,495e2c77-4868-4191-ac18-f94e55a5982e,495e2c77-4868-4191-ac18-f94e55a5982e,0,1,20191a65-322c-457d-85f5-ed1258b6fe8e,20191a65-322c-457d-85f5-ed1258b6fe8e,0,1,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,0,1,769c60aa-44f4-4c98-a461-d3f5c2b67f61,769c60aa-44f4-4c98-a461-d3f5c2b67f61,0,1,f9809c99-0eaa-4249-967c-a4bef4763277,f9809c99-0eaa-4249-967c-a4bef4763277,0,1,37fa88a0-f2c1-455f-a28d-74165e8b933d,37fa88a0-f2c1-455f-a28d-74165e8b933d,0,1,e4476f09-909b-49f7-8e01-72eea8ceaca6,e4476f09-909b-49f7-8e01-72eea8ceaca6,0,1,2861412c-46f0-454e-b81d-fe081afb5c7a,2861412c-46f0-454e-b81d-fe081afb5c7a,0,1,2b4ece05-b694-42e9-8239-55722fd84294,2b4ece05-b694-42e9-8239-55722fd84294,0,1,6564ce89-134f-4726-8693-fd93aad46180,6564ce89-134f-4726-8693-fd93aad46180,0,1,0d743731-da5d-4c99-b19f-e93c69b77e14,0d743731-da5d-4c99-b19f-e93c69b77e14,0,1,d6f15367-23e2-4766-bc7c-8acd0063aa0c,d6f15367-23e2-4766-bc7c-8acd0063aa0c,0,1,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,0,1,fa4c5665-4d73-4db2-a055-8c1c8a302f82,fa4c5665-4d73-4db2-a055-8c1c8a302f82,0,1,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,0,1,9100b286-8ae9-4de3-b116-5ce0fa95b80c,9100b286-8ae9-4de3-b116-5ce0fa95b80c,0,1,3d315df6-e000-4cbd-810d-0b26c0d1bc54,3d315df6-e000-4cbd-810d-0b26c0d1bc54,0,1,fa429302-ccaf-4c89-8a11-3a1d30817c00,fa429302-ccaf-4c89-8a11-3a1d30817c00,0,1,9b4c49ce-93da-439a-8d67-f3774e92800a,9b4c49ce-93da-439a-8d67-f3774e92800a,0,1,5f8fa827-7017-4b45-b458-3571b8b611f5,5f8fa827-7017-4b45-b458-3571b8b611f5,0,1,79749167-2912-4e06-9deb-7915a1b4390d,79749167-2912-4e06-9deb-7915a1b4390d,0,1,1c93fcd3-53a1-403f-a30b-454fbc941d55,1c93fcd3-53a1-403f-a30b-454fbc941d55,0,1,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0,1,adec3963-b22f-4463-a3f4-c9ec27d187a8,adec3963-b22f-4463-a3f4-c9ec27d187a8,0,1,d8dae0c8-8e11-44bf-bf60-d316220f3e82,d8dae0c8-8e11-44bf-bf60-d316220f3e82,0,1,12afec4d-1728-4aa8-86e5-23cd2f1572b3,12afec4d-1728-4aa8-86e5-23cd2f1572b3,0,1,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,0,1,ee0c3960-d1bf-411f-a51f-e6e27dabea87,ee0c3960-d1bf-411f-a51f-e6e27dabea87,0,1,d7fb9441-1aef-4257-af3f-7f16340ac85e,d7fb9441-1aef-4257-af3f-7f16340ac85e,0,1,d07c094c-2795-4e0c-b030-bdb82be7ba6d,d07c094c-2795-4e0c-b030-bdb82be7ba6d,0,1,62637860-2013-4f9d-9aed-7cbb0dce8983,62637860-2013-4f9d-9aed-7cbb0dce8983,0,1,331217f6-7ec2-425d-93bd-f2979c5f2e05,331217f6-7ec2-425d-93bd-f2979c5f2e05,0,1,67c1269a-79e6-44d9-9254-671c50fb3974,67c1269a-79e6-44d9-9254-671c50fb3974,0,1,5d455d2a-910d-48c7-bc74-ba5ad7855110,5d455d2a-910d-48c7-bc74-ba5ad7855110,0,1,7cf3feea-75e2-42cc-9c89-4a9182034910,7cf3feea-75e2-42cc-9c89-4a9182034910,0,1,930a0156-feb3-4e14-96a5-cd183a4891f4,930a0156-feb3-4e14-96a5-cd183a4891f4,0,1,cfa55ab3-1335-4712-8352-03c2f0277708,cfa55ab3-1335-4712-8352-03c2f0277708,0,1,fb176f8b-edb9-4e4b-926d-dabe9552bfa1,fb176f8b-edb9-4e4b-926d-dabe9552bfa1,0,1,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,0,1,e268a337-f576-4ec2-8a22-0500b79b2441,e268a337-f576-4ec2-8a22-0500b79b2441,0,1,eb33a8fa-75a6-4926-a025-05bc0abe4374,eb33a8fa-75a6-4926-a025-05bc0abe4374,0,1,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,0,1,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,0,1,bf480259-6e72-4ad1-ac41-0b0d41a75387,bf480259-6e72-4ad1-ac41-0b0d41a75387,0,1,a41f060a-f0f6-4940-960b-5056082b2c45,a41f060a-f0f6-4940-960b-5056082b2c45,0,1,073e14d4-5d43-428b-a9a7-985d173e94c7,073e14d4-5d43-428b-a9a7-985d173e94c7,0,1,2394775b-8910-4667-9c74-e1606e0b13bc,2394775b-8910-4667-9c74-e1606e0b13bc,0,1,43c88ffd-a036-4563-890b-bdc60180e841,43c88ffd-a036-4563-890b-bdc60180e841,0,1,af6e5e8e-6482-4820-a810-9e275ae039bf,af6e5e8e-6482-4820-a810-9e275ae039bf,0,1,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,0,1,7690620b-21d9-463a-8c22-60844927b4a0,7690620b-21d9-463a-8c22-60844927b4a0,0,1,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,0,1,b1db3255-38da-4684-b44e-4e2e9ee1dc35,b1db3255-38da-4684-b44e-4e2e9ee1dc35,0,1,4761f89b-7894-4dca-83b0-3be2d0828781,4761f89b-7894-4dca-83b0-3be2d0828781,0,1,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,0,1,7236d52f-9068-45ad-8b92-a7319e737e08,7236d52f-9068-45ad-8b92-a7319e737e08,0,1,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,0,1,9db23e96-d13a-4847-941a-462f64d0619d,9db23e96-d13a-4847-941a-462f64d0619d,0,1,7575fd54-c91b-4220-a2ef-2cf533f60426,7575fd54-c91b-4220-a2ef-2cf533f60426,0,1,1b751f19-bb0c-40c2-a5d1-068544c36c6b,1b751f19-bb0c-40c2-a5d1-068544c36c6b,0,1,26e2c83b-8873-4ad3-9c50-e94421473a43,26e2c83b-8873-4ad3-9c50-e94421473a43,0,1,f0b2ec05-8e01-4ccf-b927-671329a9013b,f0b2ec05-8e01-4ccf-b927-671329a9013b,0,1,ab442b11-2482-4f80-ac82-01966e0657ec,ab442b11-2482-4f80-ac82-01966e0657ec,0,1,14fe4d39-81a1-470e-9724-6642ce34ad89,14fe4d39-81a1-470e-9724-6642ce34ad89,0,1,457578ab-dfe2-4419-8d8a-64283b341f42,457578ab-dfe2-4419-8d8a-64283b341f42,0,1,67ef6671-f537-46bf-88e6-f5bcf34a17a4,67ef6671-f537-46bf-88e6-f5bcf34a17a4,0,1,de778ca7-feaf-4531-80ae-11a534c56928,de778ca7-feaf-4531-80ae-11a534c56928,0,1,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0,1,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0,1,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,0,1,86df8648-e195-4661-99ee-6052788eb276,86df8648-e195-4661-99ee-6052788eb276,0,1,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,0,1,35133725-9647-42dc-a76a-2e62b2918ac4,35133725-9647-42dc-a76a-2e62b2918ac4,0,1,fa9572ee-0303-4421-9125-70cf3dd5a8c7,fa9572ee-0303-4421-9125-70cf3dd5a8c7,0,1,4cdd7920-0c49-4950-b92f-fdf6e34578b2,4cdd7920-0c49-4950-b92f-fdf6e34578b2,0,1,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0,1,c7b883dc-6c26-4eb5-bc19-7919ad57da27,c7b883dc-6c26-4eb5-bc19-7919ad57da27,0,1,7fc37008-c378-4a70-a9a9-07543c7248a6,7fc37008-c378-4a70-a9a9-07543c7248a6,0,1,6410853e-a17e-44db-b8cc-bfefd7c4d239,6410853e-a17e-44db-b8cc-bfefd7c4d239,0,1,df042e4e-01a6-4480-a9c5-c0d7a454bb41,df042e4e-01a6-4480-a9c5-c0d7a454bb41,0,1,bad3d1fa-9618-427a-93e0-90f151e468bf,bad3d1fa-9618-427a-93e0-90f151e468bf,0,1,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,0,1,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,0,1,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,0,1,ff830967-faa9-415f-aa6e-8d27779f91f8,ff830967-faa9-415f-aa6e-8d27779f91f8,0,1,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,0,1,88618d0f-97af-4055-a490-561d4b8065a7,88618d0f-97af-4055-a490-561d4b8065a7,0,1,faffa228-4f4f-43f6-99b9-ed8c93af85c0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,0,1,7b816ca0-ba60-4637-8348-23b26ad23e3f,7b816ca0-ba60-4637-8348-23b26ad23e3f,0,1,814a6db4-a43c-44e6-ac44-11983642c5ad,814a6db4-a43c-44e6-ac44-11983642c5ad,0,1,0bd74786-e018-4a66-b994-cdb439c57657,0bd74786-e018-4a66-b994-cdb439c57657,0,1,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,0,1,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,0,1,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,0,1,09502176-c53d-4525-b8ed-32d0a2e21a5d,09502176-c53d-4525-b8ed-32d0a2e21a5d,0,1,75ad984e-d41f-4591-b207-e8a4b05757a7,75ad984e-d41f-4591-b207-e8a4b05757a7,0,1,3f020f90-7aeb-4b21-ad71-4572ac796d4c,3f020f90-7aeb-4b21-ad71-4572ac796d4c,0,1,759e2ba0-2941-4cc1-8409-50b8a3620058,759e2ba0-2941-4cc1-8409-50b8a3620058,0,1,491cf25d-091e-4e09-b145-92d7073326cf,491cf25d-091e-4e09-b145-92d7073326cf,0,1,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,0,1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,0,1,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,0,1,900bc96e-fbcc-473e-970c-96f561420f8e,900bc96e-fbcc-473e-970c-96f561420f8e,0,1,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,0,1,21d5a0b0-9a2b-4989-a50a-781645513179,21d5a0b0-9a2b-4989-a50a-781645513179,0,1,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,0,1,d97c6204-3656-4591-aea9-6ebedffe1247,d97c6204-3656-4591-aea9-6ebedffe1247,0,1,7caabe33-184f-45db-bef4-59d4e9cd2394,7caabe33-184f-45db-bef4-59d4e9cd2394,0,1,3255033a-e922-412e-a825-a3e8bd284703,3255033a-e922-412e-a825-a3e8bd284703,0,1,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,0,1,f250f992-ad5a-4dab-ad38-240604adb0c4,f250f992-ad5a-4dab-ad38-240604adb0c4,0,1,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,0,1,e63671f6-c96d-4ea4-8300-af7dbd0d016f,e63671f6-c96d-4ea4-8300-af7dbd0d016f,0,1,2c511469-0df6-470f-a808-decb275e8b1a,2c511469-0df6-470f-a808-decb275e8b1a,0,1,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1bbb289c-a78a-47d0-b082-c2225ae1dc83,0,1,99b40f9f-f8f1-4779-8afc-59d30612f3d6,99b40f9f-f8f1-4779-8afc-59d30612f3d6,0,1,6131e875-3254-4281-9343-9118564c5451,6131e875-3254-4281-9343-9118564c5451,0,1,69622ff8-8a23-42fc-b63d-5097e3f636ac,69622ff8-8a23-42fc-b63d-5097e3f636ac,0,1,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,0,1,ef326bd8-1570-455e-ae8c-063b5578ad15,ef326bd8-1570-455e-ae8c-063b5578ad15,0,1,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,0,1,cb6d4979-2d70-4ceb-af08-deb2b19daf14,cb6d4979-2d70-4ceb-af08-deb2b19daf14,0,1,bf30b754-84fb-4104-b52b-a4f7df6fba12,bf30b754-84fb-4104-b52b-a4f7df6fba12,0,1,7bbd0835-b3e9-40cb-a424-670828b60bbb,7bbd0835-b3e9-40cb-a424-670828b60bbb,0,1,3e2138ea-48f9-4a60-8f22-53933bea49db,3e2138ea-48f9-4a60-8f22-53933bea49db,0,1,16bda2eb-eab8-4230-b89f-517fb943e009,16bda2eb-eab8-4230-b89f-517fb943e009,0,1,00964512-297f-4b8b-8def-8e4fc0eba991,00964512-297f-4b8b-8def-8e4fc0eba991,0,1,4185fea3-baba-4ba5-8019-9023b3011d4d,4185fea3-baba-4ba5-8019-9023b3011d4d,0,1,ea790035-92d6-445e-9fa3-08e565634d2b,ea790035-92d6-445e-9fa3-08e565634d2b,0,1,cce8900a-51eb-487d-b380-227d1b9d3943,cce8900a-51eb-487d-b380-227d1b9d3943,0,1,c043c36c-90c6-483b-bc20-7c2d85109b90,c043c36c-90c6-483b-bc20-7c2d85109b90,0,1,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,0,1,91d2d40a-c271-412c-b344-1fc98b94ba21,91d2d40a-c271-412c-b344-1fc98b94ba21,0,1,7ce47046-aee8-4809-bac9-a98930a844e1,7ce47046-aee8-4809-bac9-a98930a844e1,0,1,f480b8b9-ecec-4207-a0aa-12c5be4c2250,f480b8b9-ecec-4207-a0aa-12c5be4c2250,0,1,32717d25-6644-4903-8950-03e4c9b1a8fe,32717d25-6644-4903-8950-03e4c9b1a8fe,0,1,3644d8f3-db88-4fce-a851-39c115acfe03,3644d8f3-db88-4fce-a851-39c115acfe03,0,1,4653da74-34b2-47b9-ad88-efd761d6f1e9,4653da74-34b2-47b9-ad88-efd761d6f1e9,0,1,abf8a23d-45c3-4feb-8df2-279b709d7722,abf8a23d-45c3-4feb-8df2-279b709d7722,0,1,b0cd056f-c601-4d07-89c4-f7137b88bab6,b0cd056f-c601-4d07-89c4-f7137b88bab6,0,1,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,0,1,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,0,1,96ed4d39-3bdc-480f-af86-218f22000514,96ed4d39-3bdc-480f-af86-218f22000514,0,1,c9f72e74-22ac-4dc0-8462-0aa7819a9342,c9f72e74-22ac-4dc0-8462-0aa7819a9342,0,1,ca650484-293f-403a-b916-5ec7c3a8969e,ca650484-293f-403a-b916-5ec7c3a8969e,0,1,b71e706d-623e-4039-9bf0-24f151d861d8,b71e706d-623e-4039-9bf0-24f151d861d8,0,1,528f4823-33d8-49bd-a8fe-756a08a107c2,528f4823-33d8-49bd-a8fe-756a08a107c2,0,1,4869095b-b76e-45ca-b77d-0e74f59673f0,4869095b-b76e-45ca-b77d-0e74f59673f0,0,1,bcca2442-448b-4760-923b-cc9621ecb441,bcca2442-448b-4760-923b-cc9621ecb441,0,1,ba7657df-429a-4737-b787-19ef09fdebb2,ba7657df-429a-4737-b787-19ef09fdebb2,0,1,867d72be-f406-45a5-a511-b90459683f11,867d72be-f406-45a5-a511-b90459683f11,0,1,88b22e62-c144-401f-9635-3fb4d914772e,88b22e62-c144-401f-9635-3fb4d914772e,0,1,efeb2914-6604-403a-a11e-5cb995ab2bc9,efeb2914-6604-403a-a11e-5cb995ab2bc9,0,1,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,0,1,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,0,1,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,0,1,de506523-241a-4845-9259-37066afbf16a,de506523-241a-4845-9259-37066afbf16a,0,1,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0,1,e616e007-43e7-4740-a083-b85f5435718a,e616e007-43e7-4740-a083-b85f5435718a,0,1,727da5b1-e054-4832-8e44-f5d5e56f52e5,727da5b1-e054-4832-8e44-f5d5e56f52e5,0,1,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,0,1,6feaad7c-9680-4341-b215-14581e2e2b37,6feaad7c-9680-4341-b215-14581e2e2b37,0,1,d5656a92-adfb-4733-830d-2b1565798b1f,d5656a92-adfb-4733-830d-2b1565798b1f,0,1,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,0,1,b0f6ea83-2849-4151-930d-692866919db3,b0f6ea83-2849-4151-930d-692866919db3,0,1,05558ce4-8568-4009-b1d7-307d54967515,05558ce4-8568-4009-b1d7-307d54967515,0,1,74380324-9b7b-49f6-9458-88deb9405f98,74380324-9b7b-49f6-9458-88deb9405f98,0,1,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,0,1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0,1,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,0,1,f66cb2da-3b3c-481f-823a-506f8290f619,f66cb2da-3b3c-481f-823a-506f8290f619,0,1,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,0,1,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,0,1,0bdcf045-5132-4a68-839c-a30515dc569e,0bdcf045-5132-4a68-839c-a30515dc569e,0,1,683861f9-9a5f-47db-8b03-959f839d5a3a,683861f9-9a5f-47db-8b03-959f839d5a3a,0,1,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,0,1,125be5bf-f410-451d-aa96-22fabc6a4d8a,125be5bf-f410-451d-aa96-22fabc6a4d8a,0,1,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,0,1,0a46166a-4562-4a50-b139-39dbe8a1fc84,0a46166a-4562-4a50-b139-39dbe8a1fc84,0,1,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,0,1,6ce64d65-f710-4d3f-a85f-26ce6915451e,6ce64d65-f710-4d3f-a85f-26ce6915451e,0,1,33eb9806-e34f-42a0-9825-3ff2de92c503,33eb9806-e34f-42a0-9825-3ff2de92c503,0,1,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,0,1,bcb58235-7cd7-4c15-a1eb-194ee38259e6,bcb58235-7cd7-4c15-a1eb-194ee38259e6,0,1,e19aefe7-634d-4218-8d40-75802d1691e0,e19aefe7-634d-4218-8d40-75802d1691e0,0,1,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,0,1,f942d212-9be0-4d80-84b6-5b63070e33e4,f942d212-9be0-4d80-84b6-5b63070e33e4,0,1,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,0,1,64c91eaa-084f-4801-8dbf-4e075c689c2b,64c91eaa-084f-4801-8dbf-4e075c689c2b,0,1,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,0,1,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,0,1,3aa12805-823a-439b-b039-fb9940aee312,3aa12805-823a-439b-b039-fb9940aee312,0,1,87d53573-f266-4b74-94af-041ae4b6518f,87d53573-f266-4b74-94af-041ae4b6518f,0,1,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,0,1,801cf1f7-2c65-4126-a3e9-b66abfdde67a,801cf1f7-2c65-4126-a3e9-b66abfdde67a,0,1,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,0,1,29c2bc01-8838-4459-8ac2-79862aa1dbc9,29c2bc01-8838-4459-8ac2-79862aa1dbc9,0,1,ad556c33-6811-48b4-ae90-57700a4d3fd6,ad556c33-6811-48b4-ae90-57700a4d3fd6,0,1,6e0833f4-3b57-4a5f-810f-9e2a492335df,6e0833f4-3b57-4a5f-810f-9e2a492335df,0,1,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,0,1,977bc9d8-9843-4343-85af-11a3d91f9966,977bc9d8-9843-4343-85af-11a3d91f9966,0,1,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,0,1,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,0,1,a6582448-734d-4a4c-a32c-c4755ca1bc93,a6582448-734d-4a4c-a32c-c4755ca1bc93,0,1,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,0,1,53327cc4-22b0-40f9-bae7-db483f85901c,53327cc4-22b0-40f9-bae7-db483f85901c,0,1,098d904d-95c9-459e-86d0-357ba9a40191,098d904d-95c9-459e-86d0-357ba9a40191,0,1,e9ab9d00-6e42-439b-8efc-fcacf727016d,e9ab9d00-6e42-439b-8efc-fcacf727016d,0,1,2d58033f-e15d-4a91-8165-dd311025c7c4,2d58033f-e15d-4a91-8165-dd311025c7c4,0,1,49cb3a36-90b3-4154-b571-265fc5cee21e,49cb3a36-90b3-4154-b571-265fc5cee21e,0,1,10472d2c-18ca-49b0-bd9d-c750db8498c5,10472d2c-18ca-49b0-bd9d-c750db8498c5,0,1,8efe5daf-272d-4255-b5c4-66dca7463b50,8efe5daf-272d-4255-b5c4-66dca7463b50,0,1,65af25a6-f699-4c40-b13e-3b7dff3f16fe,65af25a6-f699-4c40-b13e-3b7dff3f16fe,0,1,c4d2486d-289c-4812-b223-5ccfcd7f29e3,c4d2486d-289c-4812-b223-5ccfcd7f29e3,0,1,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,0,1,7da57c89-af2c-445a-96f7-39250f70306f,7da57c89-af2c-445a-96f7-39250f70306f,0,1,b5b94d94-25f7-4cfa-b1e9-6009fb848763,b5b94d94-25f7-4cfa-b1e9-6009fb848763,0,1,a2accf54-5966-42e8-ab2e-e56e415963ee,a2accf54-5966-42e8-ab2e-e56e415963ee,0,1,d8eb5329-5900-4b5d-b45e-458513dddfef,d8eb5329-5900-4b5d-b45e-458513dddfef,0,1,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,0,1,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,0,1,6ffd2da8-db97-46fc-9a53-8e665a598e3c,6ffd2da8-db97-46fc-9a53-8e665a598e3c,0,1,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,0,1,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,0,1,eaaed107-69d4-4963-be83-74519e331715,eaaed107-69d4-4963-be83-74519e331715,0,1,38cddf96-8703-4396-8c73-47fb22828a48,38cddf96-8703-4396-8c73-47fb22828a48,0,1,2c2cb793-0177-4983-91ca-9c292c5b10f1,2c2cb793-0177-4983-91ca-9c292c5b10f1,0,1,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,0,1,221fa473-3327-44e6-a033-6fdfd2be713c,221fa473-3327-44e6-a033-6fdfd2be713c,0,1,7a5973f0-7e29-44af-8e7b-70af71f704a4,7a5973f0-7e29-44af-8e7b-70af71f704a4,0,1,27089e8e-2c75-431c-b808-5d4dcba3cdca,27089e8e-2c75-431c-b808-5d4dcba3cdca,0,1,9ab3980e-a480-4f90-a8cc-bde99d5ace35,9ab3980e-a480-4f90-a8cc-bde99d5ace35,0,1,ec928563-6e35-4b84-b477-90d2481cec1c,ec928563-6e35-4b84-b477-90d2481cec1c,0,1,5d3e9678-20fe-4128-867a-3f7addaa7831,5d3e9678-20fe-4128-867a-3f7addaa7831,0,1,bb878f73-8a0f-459a-9076-ce57fe7957dc,bb878f73-8a0f-459a-9076-ce57fe7957dc,0,1,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,0,1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,0,1,9f4b8e36-83ff-4694-8540-b5f47b18395f,9f4b8e36-83ff-4694-8540-b5f47b18395f,0,1,b4c026eb-4271-4366-b529-1cdfe2874563,b4c026eb-4271-4366-b529-1cdfe2874563,0,1,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,0,1,314b0da2-24d3-48cc-8532-d36c45eb3bf8,314b0da2-24d3-48cc-8532-d36c45eb3bf8,0,1,4077e700-ec20-4afa-8155-bf7e516a70cb,4077e700-ec20-4afa-8155-bf7e516a70cb,0,1,10008125-3aeb-4912-8ad6-d92d283ea09a,10008125-3aeb-4912-8ad6-d92d283ea09a,0,1,d22a0a50-220d-459e-a23a-39730a1e67c4,d22a0a50-220d-459e-a23a-39730a1e67c4,0,1,dd050ca0-8335-4654-ab5c-7babcb4824ef,dd050ca0-8335-4654-ab5c-7babcb4824ef,0,1,706cbf55-626d-4cab-b589-a2464368f6c1,706cbf55-626d-4cab-b589-a2464368f6c1,0,1,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,0,1,e010c0f9-f770-4fdc-8607-50838c0262ef,e010c0f9-f770-4fdc-8607-50838c0262ef,0,1,483dfce4-9c66-4739-94d4-17a005d64f5b,483dfce4-9c66-4739-94d4-17a005d64f5b,0,1,19506116-43ef-433c-822c-ef8717b0da6b,19506116-43ef-433c-822c-ef8717b0da6b,0,1,464b92cc-b577-4350-ae9f-e697390248d7,464b92cc-b577-4350-ae9f-e697390248d7,0,1,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,0,1,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,0,1,2fac5a7b-cb3e-4442-892f-77f338035eeb,2fac5a7b-cb3e-4442-892f-77f338035eeb,0,1,f2076747-0bc4-41dd-bab9-33cec85111f0,f2076747-0bc4-41dd-bab9-33cec85111f0,0,1,9f74c0bb-b876-4a37-b954-c93898a21067,9f74c0bb-b876-4a37-b954-c93898a21067,0,1,97e853dc-065f-4c6d-84cb-3d3aff367b22,97e853dc-065f-4c6d-84cb-3d3aff367b22,0,1,2f1fdf47-2627-496f-9e1f-77019abb2104,2f1fdf47-2627-496f-9e1f-77019abb2104,0,1,c996532a-8795-4136-8a40-9bb4b263277c,c996532a-8795-4136-8a40-9bb4b263277c,0,1,64c77788-fc49-4979-8163-949a891bd8b7,64c77788-fc49-4979-8163-949a891bd8b7,0,1,c39750ca-e33f-40c2-b830-119423d9a2ae,c39750ca-e33f-40c2-b830-119423d9a2ae,0,1,9372ff6b-27b6-48f3-a2a2-762e7c485766,9372ff6b-27b6-48f3-a2a2-762e7c485766,0,1,f454595a-4a3d-451b-8e8b-b17aa8314591,f454595a-4a3d-451b-8e8b-b17aa8314591,0,1,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,0,1,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,0,1,bc708da8-7fc6-4da1-8129-9ef6a86667af,bc708da8-7fc6-4da1-8129-9ef6a86667af,0,1,061842fe-4077-4d6e-aefe-de79409da730,061842fe-4077-4d6e-aefe-de79409da730,0,1,da6e4bff-9835-4b92-b62b-291a5d6c86fe,da6e4bff-9835-4b92-b62b-291a5d6c86fe,0,1,3fadaeb7-2c41-42a4-bfa8-c585602b1028,3fadaeb7-2c41-42a4-bfa8-c585602b1028,0,1,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,0,1,083c709b-ed8c-47e4-a190-421e14259e73,083c709b-ed8c-47e4-a190-421e14259e73,0,1,b98dacc7-29e1-426b-a664-0a988f18186c,b98dacc7-29e1-426b-a664-0a988f18186c,0,1,d678856d-6e7c-443f-a6e3-350bbe8af659,d678856d-6e7c-443f-a6e3-350bbe8af659,0,1,d0979762-22ce-41be-b7a4-5e9ac149d94b,d0979762-22ce-41be-b7a4-5e9ac149d94b,0,1,ae23e70c-479e-47ad-9bfa-58560a903410,ae23e70c-479e-47ad-9bfa-58560a903410,0,1,c0d83781-bbda-43f7-bf0e-5defa3d47143,c0d83781-bbda-43f7-bf0e-5defa3d47143,0,1,21fa5fdd-acbc-403b-9acb-bbf95284bd20,21fa5fdd-acbc-403b-9acb-bbf95284bd20,0,1,576a01e3-4d6d-4241-a3c4-7661ba129bcb,576a01e3-4d6d-4241-a3c4-7661ba129bcb,0,1,9f7290dd-19f4-4163-9795-fe562e84f06d,9f7290dd-19f4-4163-9795-fe562e84f06d,0,1,c3b5c81f-b787-4f63-8cba-79def0921477,c3b5c81f-b787-4f63-8cba-79def0921477,0,1,1f0cb3d4-1344-451b-a257-be3cd854acfd,1f0cb3d4-1344-451b-a257-be3cd854acfd,0,1,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0,1,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,0,1,372150e2-526e-4424-8c54-e4b16bdd25b5,372150e2-526e-4424-8c54-e4b16bdd25b5,0,1,752dc569-cf84-42d7-911d-49d455f7214e,752dc569-cf84-42d7-911d-49d455f7214e,0,1,fecab2b9-27e1-44d6-9082-79c3569b7477,fecab2b9-27e1-44d6-9082-79c3569b7477,0,1,07ae092f-8517-47b7-b54c-5dbcb6506929,07ae092f-8517-47b7-b54c-5dbcb6506929,0,1,db4c25bb-d199-43ec-833d-82972de04a41,db4c25bb-d199-43ec-833d-82972de04a41,0,1,43d19685-0794-41f2-9171-bf565133718d,43d19685-0794-41f2-9171-bf565133718d,0,1,b68c15c4-4966-4f13-8912-2d479b65089a,b68c15c4-4966-4f13-8912-2d479b65089a,0,1,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,0,1,f87e3935-dae1-4192-b6a7-05e3c700c590,f87e3935-dae1-4192-b6a7-05e3c700c590,0,1,ee635706-6ee2-4956-8d58-a235f64687f6,ee635706-6ee2-4956-8d58-a235f64687f6,0,1,a5a40ca7-d665-420b-a516-1355019d6901,a5a40ca7-d665-420b-a516-1355019d6901,0,1,adf9304c-ccf8-492e-95b1-0754764586a2,adf9304c-ccf8-492e-95b1-0754764586a2,0,1,fd175112-ec8f-4088-9b21-d8135056f0c5,fd175112-ec8f-4088-9b21-d8135056f0c5,0,1,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,0,1,df76a1b7-312a-4e77-bac1-79befadb4495,df76a1b7-312a-4e77-bac1-79befadb4495,0,1,ab39fad8-1039-491e-982a-c49637770ec0,ab39fad8-1039-491e-982a-c49637770ec0,0,1,7d93a6ba-3ca7-45ab-a540-743c79587535,7d93a6ba-3ca7-45ab-a540-743c79587535,0,1,76b58810-0527-4dfc-8858-bac68e7e65f3,76b58810-0527-4dfc-8858-bac68e7e65f3,0,1,aba97fd9-f05e-45cd-8404-ed702070e17a,aba97fd9-f05e-45cd-8404-ed702070e17a,0,1,f5c415cd-429b-469f-9332-c43ab5d1c8d6,f5c415cd-429b-469f-9332-c43ab5d1c8d6,0,1,458e9c6b-b828-404b-be5a-c6c0aeea34c9,458e9c6b-b828-404b-be5a-c6c0aeea34c9,0,1,7262eb4d-2d2d-454c-beaa-974645813af7,7262eb4d-2d2d-454c-beaa-974645813af7,0,1,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,0,1,b2265070-9cd3-4176-92c8-6d9f32c2ca84,b2265070-9cd3-4176-92c8-6d9f32c2ca84,0,1,b347e774-2261-4f76-9bdb-3c6736983589,b347e774-2261-4f76-9bdb-3c6736983589,0,1,be7e2715-1243-49a8-8c7c-55d632d3cf6c,be7e2715-1243-49a8-8c7c-55d632d3cf6c,0,1,49221b2f-aae2-4bee-9a1a-18263fc74244,49221b2f-aae2-4bee-9a1a-18263fc74244,0,1,da0cd264-da2f-4044-af28-c91d2efe1d5c,da0cd264-da2f-4044-af28-c91d2efe1d5c,0,1,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,0,1,fad26b16-8638-496b-bd12-381fc6f5b71f,fad26b16-8638-496b-bd12-381fc6f5b71f,0,1,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,0,1,324a56c9-02d9-4177-af84-a817b8c41169,324a56c9-02d9-4177-af84-a817b8c41169,0,1,1e44abfe-c173-4802-b535-96849d384983,1e44abfe-c173-4802-b535-96849d384983,0,1,2751a509-037b-49aa-9ca8-e87057d6d82c,2751a509-037b-49aa-9ca8-e87057d6d82c,0,1,35f62549-eb6a-4284-a6e3-406b0d9df0cf,35f62549-eb6a-4284-a6e3-406b0d9df0cf,0,1,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,0,1,fd66995b-ee76-41d3-983f-33d84bdcbbd4,fd66995b-ee76-41d3-983f-33d84bdcbbd4,0,1,73e97918-b34e-4ad2-8591-4c219eb92f2c,73e97918-b34e-4ad2-8591-4c219eb92f2c,0,1,445cf7eb-35d0-48f8-9579-c2ec574ef324,445cf7eb-35d0-48f8-9579-c2ec574ef324,0,1,1025657e-afd2-4c7b-96d5-ccbedaca4619,1025657e-afd2-4c7b-96d5-ccbedaca4619,0,1,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,0,1,e754ad5c-cf3c-4198-af81-128475924cb0,e754ad5c-cf3c-4198-af81-128475924cb0,0,1,ed65d504-b210-4014-85ec-275ad633ef04,ed65d504-b210-4014-85ec-275ad633ef04,0,1,dc31edb1-273e-4b1a-8e69-32393479ff36,dc31edb1-273e-4b1a-8e69-32393479ff36,0,1,3ab0649b-239f-4466-b897-73c0ab628927,3ab0649b-239f-4466-b897-73c0ab628927,0,1,4c697110-8941-4d6d-ba03-f2b9e96ff82e,4c697110-8941-4d6d-ba03-f2b9e96ff82e,0,1,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,0,1,b172631b-da0d-42f4-ae6b-ae122a46cced,b172631b-da0d-42f4-ae6b-ae122a46cced,0,1,1a25e744-37ae-46ca-a328-ff8eced21a82,1a25e744-37ae-46ca-a328-ff8eced21a82,0,1,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,0,1,46169f0b-8514-40a1-9d27-8489cab72503,46169f0b-8514-40a1-9d27-8489cab72503,0,1,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,0,1,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,0,1,c90243af-582c-4f5a-88e7-e0cbc0555fcb,c90243af-582c-4f5a-88e7-e0cbc0555fcb,0,1,14bf4066-15cb-4165-b854-45443ee27da1,14bf4066-15cb-4165-b854-45443ee27da1,0,1,4427cab9-4eea-4415-98ef-6021a447c60c,4427cab9-4eea-4415-98ef-6021a447c60c,0,1,fe46b4da-d865-468f-badd-83644bf88faa,fe46b4da-d865-468f-badd-83644bf88faa,0,1,2851c9d4-4366-4488-926d-a7fcd3b1548c,2851c9d4-4366-4488-926d-a7fcd3b1548c,0,1,31116aa2-cfbc-48e8-886b-45c1c17508fd,31116aa2-cfbc-48e8-886b-45c1c17508fd,0,1,6aa819d3-c56d-4561-a2e4-a1188ab1295a,6aa819d3-c56d-4561-a2e4-a1188ab1295a,0,1,2ddf344d-7065-40d5-9306-23870d8fc04a,2ddf344d-7065-40d5-9306-23870d8fc04a,0,1,c630ab2d-0a20-4136-88b6-220b2cad6a71,c630ab2d-0a20-4136-88b6-220b2cad6a71,0,1,00cd1dea-bc54-475c-956d-dc5221104932,00cd1dea-bc54-475c-956d-dc5221104932,0,1,3807f865-dd2c-44f7-9238-3db191f0a186,3807f865-dd2c-44f7-9238-3db191f0a186,0,1,8f184df5-bfe8-4df3-bc7c-18218cef7650,8f184df5-bfe8-4df3-bc7c-18218cef7650,0,1,387e273a-889f-454b-8b43-feaa12025fde,387e273a-889f-454b-8b43-feaa12025fde,0,1,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1c38ad75-b294-4c05-89ce-69ce4d9a291f,0,1,078d1e8f-6d27-4761-9532-b1e7a60e4c13,078d1e8f-6d27-4761-9532-b1e7a60e4c13,0,1,4262193c-58ad-47c6-8088-735d8cd037ea,4262193c-58ad-47c6-8088-735d8cd037ea,0,1,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,0,1,de6d1aad-39eb-46ce-87aa-d29812bb37bf,de6d1aad-39eb-46ce-87aa-d29812bb37bf,0,1,4ad859ec-cc75-4bac-9e89-397798450e48,4ad859ec-cc75-4bac-9e89-397798450e48,0,1,d93ab94c-0f55-4b80-b226-41b44c73b3ea,d93ab94c-0f55-4b80-b226-41b44c73b3ea,0,1,94cbed80-5a35-471f-b354-439a11629210,94cbed80-5a35-471f-b354-439a11629210,0,1,1162cc0a-42e5-47cb-9507-68459579f110,1162cc0a-42e5-47cb-9507-68459579f110,0,1,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,0,1,bb49dc80-4934-4f44-8f27-9a363dca8dc4,bb49dc80-4934-4f44-8f27-9a363dca8dc4,0,1,7338e497-03a7-4ed4-85a2-ca802c065a9f,7338e497-03a7-4ed4-85a2-ca802c065a9f,0,1,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,0,1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,0,1,d33df51c-3dcd-496c-90f2-7ee05582bdf7,d33df51c-3dcd-496c-90f2-7ee05582bdf7,0,1,24b39ebd-2424-4939-8e3e-d09eb674d409,24b39ebd-2424-4939-8e3e-d09eb674d409,0,1,08c751bb-9e57-4536-901e-bb316c8e96d7,08c751bb-9e57-4536-901e-bb316c8e96d7,0,1,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,0,1,034cdcef-08e5-4751-9885-400aa69e0b94,034cdcef-08e5-4751-9885-400aa69e0b94,0,1,efefebea-2032-4006-b9ca-50a23b7da1ef,efefebea-2032-4006-b9ca-50a23b7da1ef,0,1,4c794d37-3352-4acb-a939-5e90fb682db8,4c794d37-3352-4acb-a939-5e90fb682db8,0,1,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,0,1,008f5068-da9c-4dac-9c0a-a50366d27cbb,008f5068-da9c-4dac-9c0a-a50366d27cbb,0,1,950b3ee3-070f-4946-8b9b-0aa2058de986,950b3ee3-070f-4946-8b9b-0aa2058de986,0,1,bd04a870-0943-4bdb-9e30-50a69daa8a13,bd04a870-0943-4bdb-9e30-50a69daa8a13,0,1,a23e6c77-8c12-4f99-ae2d-68a12274be38,a23e6c77-8c12-4f99-ae2d-68a12274be38,0,1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,0,1,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,0,1,31cac1e9-eb16-489c-9322-30d1e27a80b3,31cac1e9-eb16-489c-9322-30d1e27a80b3,0,1,0d100e33-7941-41c1-962d-7672c874e9c5,0d100e33-7941-41c1-962d-7672c874e9c5,0,1,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,0,1,6e61d717-de36-4dce-8af9-b6c14ed76acb,6e61d717-de36-4dce-8af9-b6c14ed76acb,0,1,474518fe-9cb5-4a12-9388-bc7a64511617,474518fe-9cb5-4a12-9388-bc7a64511617,0,1,64337614-b1c9-4931-b576-448721fa4602,64337614-b1c9-4931-b576-448721fa4602,0,1,1d73b59c-0594-4ed3-b584-cf1261941e1d,1d73b59c-0594-4ed3-b584-cf1261941e1d,0,1,8ff2547f-d596-4fa1-9e12-079e1cc4c057,8ff2547f-d596-4fa1-9e12-079e1cc4c057,0,1,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1ab0c8f8-b908-4618-ae88-af37b8f1224e,0,1,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,0,1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,0,1,b77d748a-d180-432d-91c3-774e6ccf7efa,b77d748a-d180-432d-91c3-774e6ccf7efa,0,1,e5b9c1b0-4690-442c-b160-e6c587e42e57,e5b9c1b0-4690-442c-b160-e6c587e42e57,0,1,e3adb576-6b33-475b-976b-7a6783de3184,e3adb576-6b33-475b-976b-7a6783de3184,0,1,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,0,1,78f5a205-dffb-4009-897a-e8f36372f33c,78f5a205-dffb-4009-897a-e8f36372f33c,0,1,f7597041-f182-42fb-803a-2521c70d627d,f7597041-f182-42fb-803a-2521c70d627d,0,1,ce988b8a-d0c1-400a-9466-aa757501bb58,ce988b8a-d0c1-400a-9466-aa757501bb58,0,1,ab98d665-8da8-406e-9e0e-3e130ab393ef,ab98d665-8da8-406e-9e0e-3e130ab393ef,0,1,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,0,1,118a0e62-c0bb-435b-9e3e-c64563efa602,118a0e62-c0bb-435b-9e3e-c64563efa602,0,1,b57bc8a9-8a59-4192-a442-2e1982e83179,b57bc8a9-8a59-4192-a442-2e1982e83179,0,1,5b06ccda-2a70-4621-8273-78408cbe72a9,5b06ccda-2a70-4621-8273-78408cbe72a9,0,1,89753385-64fd-4e76-9857-bfd5d7c23f71,89753385-64fd-4e76-9857-bfd5d7c23f71,0,1,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,0,1,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,0,1,e20bcb57-2f68-4709-8a11-105d561a2dda,e20bcb57-2f68-4709-8a11-105d561a2dda,0,1,34e19129-2ff9-40ac-a277-ea7ada6b977e,34e19129-2ff9-40ac-a277-ea7ada6b977e,0,1,ea8beea1-7d80-4613-b2f9-79ee612e977a,ea8beea1-7d80-4613-b2f9-79ee612e977a,0,1,afd62a32-fdbb-429a-9a64-89c61a07e018,afd62a32-fdbb-429a-9a64-89c61a07e018,0,1,027cef43-99bd-48d3-a1a3-2102ac003742,027cef43-99bd-48d3-a1a3-2102ac003742,0,1,00197ea9-de76-4e2a-97bc-93e44053e35e,00197ea9-de76-4e2a-97bc-93e44053e35e,0,1,878fe826-fa99-44ad-9891-5eada9744017,878fe826-fa99-44ad-9891-5eada9744017,0,1,0d61712a-dfaf-46f1-b728-62993dd94fbe,0d61712a-dfaf-46f1-b728-62993dd94fbe,0,1,3a6cf496-09b9-4947-9df5-06d23b474558,3a6cf496-09b9-4947-9df5-06d23b474558,0,1,625b498a-33d1-4162-9525-fb7790cbb6a8,625b498a-33d1-4162-9525-fb7790cbb6a8,0,1,28223f7b-d15a-4f12-b57c-1f6d08a902f9,28223f7b-d15a-4f12-b57c-1f6d08a902f9,0,1,dd9eb5b7-5aed-4e51-9939-9ff14492d240,dd9eb5b7-5aed-4e51-9939-9ff14492d240,0,1,b2a14899-d589-4990-b85e-7bffb427e8af,b2a14899-d589-4990-b85e-7bffb427e8af,0,1,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0,1,3210ba40-382e-4917-ad0f-9bd88d23dc25,3210ba40-382e-4917-ad0f-9bd88d23dc25,0,1,835e3ead-d01f-410b-937a-902dd5e66aec,835e3ead-d01f-410b-937a-902dd5e66aec,0,1,40141982-d1d6-416f-844e-19143a407ff9,40141982-d1d6-416f-844e-19143a407ff9,0,1,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,0,1,d3211832-c8ca-437a-8810-82e06cbb48de,d3211832-c8ca-437a-8810-82e06cbb48de,0,1,8131d701-1014-4196-9b67-914e451f8a3a,8131d701-1014-4196-9b67-914e451f8a3a,0,1,2b102933-c660-4e74-ae9a-5061a88ed672,2b102933-c660-4e74-ae9a-5061a88ed672,0,1,56c897b7-d34e-4d7d-9a3b-d0779be5c189,56c897b7-d34e-4d7d-9a3b-d0779be5c189,0,1,3ac81c80-56bd-4750-b135-07ab522e3eab,3ac81c80-56bd-4750-b135-07ab522e3eab,0,1,5657872f-c7d5-446f-bcc3-d0b86ad63a42,5657872f-c7d5-446f-bcc3-d0b86ad63a42,0,1,d5214cb9-67e2-469f-989f-3f2b662ae830,d5214cb9-67e2-469f-989f-3f2b662ae830,0,1,69679e88-4f2b-4dd6-8cb2-b88293d07b55,69679e88-4f2b-4dd6-8cb2-b88293d07b55,0,1,68679208-9972-4854-8649-49bdf6212255,68679208-9972-4854-8649-49bdf6212255,0,1,98393093-7ba6-4b4d-86be-ee5826cd8cd5,98393093-7ba6-4b4d-86be-ee5826cd8cd5,0,1,87de486d-3f35-4432-a7cd-9d3832db63cf,87de486d-3f35-4432-a7cd-9d3832db63cf,0,1,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,0,1,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,0,1,bb7ce04a-8143-4c0b-a196-1b57f1640142,bb7ce04a-8143-4c0b-a196-1b57f1640142,0,1,4872f12c-705c-4dd3-802f-d27496a0d634,4872f12c-705c-4dd3-802f-d27496a0d634,0,1,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0,1,f9ada91a-e673-4821-9bce-cb0dd75ca28b,f9ada91a-e673-4821-9bce-cb0dd75ca28b,0,1,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,0,1,90ce635a-0277-4056-980d-d1a16d91cb30,90ce635a-0277-4056-980d-d1a16d91cb30,0,1,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,0,1,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1e77e873-632c-482b-8f46-8f8cc3cc8cef,0,1,766208a3-2780-427b-a7d3-93abe99d236b,766208a3-2780-427b-a7d3-93abe99d236b,0,1,63ce4c3c-5bad-409c-904f-18f34cf1da78,63ce4c3c-5bad-409c-904f-18f34cf1da78,0,1,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,0,1,26ac22f9-0bbb-4671-b446-626e345e2461,26ac22f9-0bbb-4671-b446-626e345e2461,0,1,0d63ee6d-e17f-4a86-b384-adf9793f3331,0d63ee6d-e17f-4a86-b384-adf9793f3331,0,1,f152945b-2a7b-449e-a915-176166af7bac,f152945b-2a7b-449e-a915-176166af7bac,0,1,77f5d86a-7fae-4490-9740-0e31102dab5c,77f5d86a-7fae-4490-9740-0e31102dab5c,0,1,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,0,1,24be43ec-d39e-46aa-9c11-2536b835e515,24be43ec-d39e-46aa-9c11-2536b835e515,0,1,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,0,1,df9af3ee-6a69-4a03-8ff5-0735e9a38013,df9af3ee-6a69-4a03-8ff5-0735e9a38013,0,1,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,0,1,7743fe24-b941-4dad-bc76-05fb6b26b1d7,7743fe24-b941-4dad-bc76-05fb6b26b1d7,0,1,5bf2da0d-f318-4036-9234-8a3a6eca88b2,5bf2da0d-f318-4036-9234-8a3a6eca88b2,0,1,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,0,1,c3634571-6fe5-45ab-9362-161305eef661,c3634571-6fe5-45ab-9362-161305eef661,0,1,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,0,1,96661303-1286-4f84-93b7-0e6da2bd7893,96661303-1286-4f84-93b7-0e6da2bd7893,0,1,68076431-36e6-46dc-92cb-e0d8e605bf66,68076431-36e6-46dc-92cb-e0d8e605bf66,0,1,239fa55a-6572-4e5c-9918-c2e14063c76d,239fa55a-6572-4e5c-9918-c2e14063c76d,0,1,8211a1b6-c3b1-466b-8d11-22603fb50c7a,8211a1b6-c3b1-466b-8d11-22603fb50c7a,0,1,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,0,1,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,0,1,a83cb338-5707-42c9-9e88-11f6c68fcc32,a83cb338-5707-42c9-9e88-11f6c68fcc32,0,1,985106b7-7476-4b48-90ac-ad86876395b5,985106b7-7476-4b48-90ac-ad86876395b5,0,1,0d8db0c9-adbc-478d-997c-3d7feccac99b,0d8db0c9-adbc-478d-997c-3d7feccac99b,0,1,3fd2ef04-c178-47bf-ab62-7baf83236d99,3fd2ef04-c178-47bf-ab62-7baf83236d99,0,1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,0,1,320bf2e6-a3a8-490b-8aa0-21369ffb121b,320bf2e6-a3a8-490b-8aa0-21369ffb121b,0,1,a3bafc54-8fe4-4841-acc6-74a87baf9caf,a3bafc54-8fe4-4841-acc6-74a87baf9caf,0,1,f93741c9-ab94-464b-b0d4-4af99c9f92d5,f93741c9-ab94-464b-b0d4-4af99c9f92d5,0,1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0,1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,0,1,c59fd3f8-c734-49d3-90ba-e608a22ac981,c59fd3f8-c734-49d3-90ba-e608a22ac981,0,1,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,0,1,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,0,1,475f76ea-f494-41f1-9b65-f39907e5a427,475f76ea-f494-41f1-9b65-f39907e5a427,0,1,986280d1-41bb-4b15-a5ae-516d6a04c1f4,986280d1-41bb-4b15-a5ae-516d6a04c1f4,0,1,43bfd29a-d254-4c33-8639-200b483578c1,43bfd29a-d254-4c33-8639-200b483578c1,0,1,6a274167-7f80-4613-9890-259ffd8ccfc4,6a274167-7f80-4613-9890-259ffd8ccfc4,0,1,4e90e1ab-b1ec-4795-ad45-1db151a5492c,4e90e1ab-b1ec-4795-ad45-1db151a5492c,0,1,91791e56-ca80-4d90-b8a8-16145f6a9721,91791e56-ca80-4d90-b8a8-16145f6a9721,0,1,b242c6a2-5ac9-4edb-b5dd-24eda8162151,b242c6a2-5ac9-4edb-b5dd-24eda8162151,0,1,8d080f3c-06ed-48bf-9709-eea73d676741,8d080f3c-06ed-48bf-9709-eea73d676741,0,1,57b31a5d-9fdc-43d2-ae81-67157822c4b6,57b31a5d-9fdc-43d2-ae81-67157822c4b6,0,1,d4e2da66-9a70-459f-a873-cb4ad71d17b2,d4e2da66-9a70-459f-a873-cb4ad71d17b2,0,1,a84a91d2-d326-4bf4-82e6-d573ee35d090,a84a91d2-d326-4bf4-82e6-d573ee35d090,0,1,39cbda23-db3f-4ddd-8981-8540247406db,39cbda23-db3f-4ddd-8981-8540247406db,0,1,c8a18d99-62ff-45a4-acb5-48e3310c1b53,c8a18d99-62ff-45a4-acb5-48e3310c1b53,0,1,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,0,1,3500c6fa-813a-49dd-a4bf-163500db5b7f,3500c6fa-813a-49dd-a4bf-163500db5b7f,0,1,1d02493a-dd89-4a51-b75e-9c49f9818b95,1d02493a-dd89-4a51-b75e-9c49f9818b95,0,1,2845c5d1-e836-4499-bcae-f3c8fdae75ee,2845c5d1-e836-4499-bcae-f3c8fdae75ee,0,1,fe4e8e4e-9471-4583-b9b3-576007db08ee,fe4e8e4e-9471-4583-b9b3-576007db08ee,0,1,49deaaa8-6d50-4b25-8153-6712d88fb0fb,49deaaa8-6d50-4b25-8153-6712d88fb0fb,0,1,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,0,1,46a06de8-06fd-4b49-835f-4f24b832b3c4,46a06de8-06fd-4b49-835f-4f24b832b3c4,0,1,3845a567-4375-4c3a-af61-5b82674060ab,3845a567-4375-4c3a-af61-5b82674060ab,0,1,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,0,1,a835a3a7-989b-4247-b836-d23bba2f391a,a835a3a7-989b-4247-b836-d23bba2f391a,0,1,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,0,1,9b149c20-9328-4e2d-a34b-95c883ae4dcc,9b149c20-9328-4e2d-a34b-95c883ae4dcc,0,1,f8dbf226-ea56-4b15-baf1-a41fceba2a32,f8dbf226-ea56-4b15-baf1-a41fceba2a32,0,1,fc1476f7-26e6-4374-b99b-e515d86c050a,fc1476f7-26e6-4374-b99b-e515d86c050a,0,1,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,0,1,59fe985a-f169-495b-bd6d-4b64401f81b0,59fe985a-f169-495b-bd6d-4b64401f81b0,0,1,184d1023-fba9-4e56-b592-519254abe922,184d1023-fba9-4e56-b592-519254abe922,0,1,cb68b275-f191-4632-a8ea-aa8809256804,cb68b275-f191-4632-a8ea-aa8809256804,0,1,174011b9-8fe2-43f5-adea-21f6d73835ff,174011b9-8fe2-43f5-adea-21f6d73835ff,0,1,c4753515-a483-453e-a48b-b12d8ef48fd9,c4753515-a483-453e-a48b-b12d8ef48fd9,0,1,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,0,1,98c3bc52-2351-460c-8b8e-0d3f45ca3131,98c3bc52-2351-460c-8b8e-0d3f45ca3131,0,1,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,0,1,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,0,1,29645810-44aa-402c-9561-7819d6f4a7ab,29645810-44aa-402c-9561-7819d6f4a7ab,0,1,46bf4911-5200-44ac-9b4d-eb0089c12e34,46bf4911-5200-44ac-9b4d-eb0089c12e34,0,1,6e1685bd-7269-401c-b36e-def6a36b41d5,6e1685bd-7269-401c-b36e-def6a36b41d5,0,1,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,0,1,e03b6592-b597-4795-a78e-775d4f2258db,e03b6592-b597-4795-a78e-775d4f2258db,0,1,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,0,1,3b207d5f-6584-4cf2-9173-20235484f9f4,3b207d5f-6584-4cf2-9173-20235484f9f4,0,1,878d9efe-b0e7-487f-b8f7-83470c131e09,878d9efe-b0e7-487f-b8f7-83470c131e09,0,1,8270573d-8ed6-449d-853b-462d2dabaaa9,8270573d-8ed6-449d-853b-462d2dabaaa9,0,1,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,0,1,f2502463-67e4-4bfe-8ad5-fb80aa73975a,f2502463-67e4-4bfe-8ad5-fb80aa73975a,0,1,59e885e6-d978-40c2-95b6-35fc61074fb4,59e885e6-d978-40c2-95b6-35fc61074fb4,0,1,267dc512-9ee1-4bc1-9034-3effb7fb2949,267dc512-9ee1-4bc1-9034-3effb7fb2949,0,1,0f211e73-5be9-4015-93e7-ccf63e793cb6,0f211e73-5be9-4015-93e7-ccf63e793cb6,0,1,6574d8f4-fb97-4a26-b166-711fad63aa07,6574d8f4-fb97-4a26-b166-711fad63aa07,0,1,fb3eddaf-3241-4d59-8314-97a5ae9258c4,fb3eddaf-3241-4d59-8314-97a5ae9258c4,0,1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,0,1,d8601e95-af94-4805-974a-99c539725d74,d8601e95-af94-4805-974a-99c539725d74,0,1,6d98f877-f3bb-4795-9025-2631468a331f,6d98f877-f3bb-4795-9025-2631468a331f,0,1,89b9379d-ace9-48cc-b979-a66fd45aeb1d,89b9379d-ace9-48cc-b979-a66fd45aeb1d,0,1,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,0,1,9767a113-5a42-4749-bf40-0f349e85615d,9767a113-5a42-4749-bf40-0f349e85615d,0,1,a3b0494c-f436-45ea-9577-4c0c86b057c9,a3b0494c-f436-45ea-9577-4c0c86b057c9,0,1,5101c142-b25c-4bef-80e7-7407f2c15c90,5101c142-b25c-4bef-80e7-7407f2c15c90,0,1,6d7872f1-fd54-41c4-8253-5f2b125f31ae,6d7872f1-fd54-41c4-8253-5f2b125f31ae,0,1,0c218200-27a8-4f71-9b09-3632dd453644,0c218200-27a8-4f71-9b09-3632dd453644,0,1,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,0,1,b5d30250-18ab-4af1-b99a-ff5dba334d1f,b5d30250-18ab-4af1-b99a-ff5dba334d1f,0,1,936f1aa5-7516-444b-b451-1162fa5d705f,936f1aa5-7516-444b-b451-1162fa5d705f,0,1,e8d5533e-2669-44f6-9eed-eaedab666d42,e8d5533e-2669-44f6-9eed-eaedab666d42,0,1,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,0,1,9e323b0d-4e3b-45d4-9705-aa30e63014f5,9e323b0d-4e3b-45d4-9705-aa30e63014f5,0,1,5afa798a-958e-4e0c-a380-0104f4c037a7,5afa798a-958e-4e0c-a380-0104f4c037a7,0,1,c0295fd9-c749-41b3-8d0d-6af16f484b1f,c0295fd9-c749-41b3-8d0d-6af16f484b1f,0,1,bd32a863-3090-432d-89c4-356ba86a0bdc,bd32a863-3090-432d-89c4-356ba86a0bdc,0,1,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,0,1,ed5465b4-a556-4078-ab18-49fef2afba2e,ed5465b4-a556-4078-ab18-49fef2afba2e,0,1,7368ab8f-59d5-4270-a43b-0f3e422169ed,7368ab8f-59d5-4270-a43b-0f3e422169ed,0,1,eeb0571b-1b74-4889-b8b5-f94186d692d7,eeb0571b-1b74-4889-b8b5-f94186d692d7,0,1,9ef3b72c-caa3-486b-9917-04c00f6689c1,9ef3b72c-caa3-486b-9917-04c00f6689c1,0,1,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,0,1,9245417f-f247-47ba-a1b4-a17ec2e8776c,9245417f-f247-47ba-a1b4-a17ec2e8776c,0,1,a4b721d7-b119-47eb-80e0-7db34c83964f,a4b721d7-b119-47eb-80e0-7db34c83964f,0,1,512629d1-e8b7-4f66-b613-b8c0cb9c250b,512629d1-e8b7-4f66-b613-b8c0cb9c250b,0,1,b7cf4684-4432-4658-9c06-b315d470a3a6,b7cf4684-4432-4658-9c06-b315d470a3a6,0,1,d3bc8211-54d8-47dd-aecf-5da72b65195f,d3bc8211-54d8-47dd-aecf-5da72b65195f,0,1,33f11da8-f670-4ec3-9d40-96fce031c60f,33f11da8-f670-4ec3-9d40-96fce031c60f,0,1,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,0,1,f74c2d41-2433-4bed-8aef-adfeed198252,f74c2d41-2433-4bed-8aef-adfeed198252,0,1,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,0,1,56c9703a-751a-4e6c-81f4-a8756fb040e3,56c9703a-751a-4e6c-81f4-a8756fb040e3,0,1,c3a86eec-1ff5-4392-9904-91a12a2e253a,c3a86eec-1ff5-4392-9904-91a12a2e253a,0,1,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,0,1,f02b7246-dae9-4e15-b4cd-b06133664d34,f02b7246-dae9-4e15-b4cd-b06133664d34,0,1,77f20022-17ce-4e00-8a84-015238bce6f3,77f20022-17ce-4e00-8a84-015238bce6f3,0,1,3734619b-7059-4547-8b97-0b3393389d4d,3734619b-7059-4547-8b97-0b3393389d4d,0,1,a30bf95f-aabd-4da0-8287-61e08f9362fb,a30bf95f-aabd-4da0-8287-61e08f9362fb,0,1,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,0,1,4078867c-2972-47f9-bebd-935a6f1cc667,4078867c-2972-47f9-bebd-935a6f1cc667,0,1,8502fe39-c241-4be5-a313-fd887bbbdfa1,8502fe39-c241-4be5-a313-fd887bbbdfa1,0,1,67a71201-13e5-42a3-902f-fb3a59710dfb,67a71201-13e5-42a3-902f-fb3a59710dfb,0,1,3a79a951-a997-4596-ab62-ba376d67725d,3a79a951-a997-4596-ab62-ba376d67725d,0,1,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,0,1,884c28de-434f-440a-8c63-67e659c097ad,884c28de-434f-440a-8c63-67e659c097ad,0,1,92ead3b5-8c55-4e4d-bd47-009e025b22f8,92ead3b5-8c55-4e4d-bd47-009e025b22f8,0,1,50d8e365-aa58-4b60-8992-01943379d485,50d8e365-aa58-4b60-8992-01943379d485,0,1,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,0,1,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,0,1,094d5482-286d-4e1a-8888-c0452d2e5af0,094d5482-286d-4e1a-8888-c0452d2e5af0,0,1,fec102ea-a3f6-49b5-b4b8-6884b0654129,fec102ea-a3f6-49b5-b4b8-6884b0654129,0,1,184405d0-34a7-4668-9a64-d92a6a7da142,184405d0-34a7-4668-9a64-d92a6a7da142,0,1,bccf8909-6f99-44d8-9c91-688958fc95f4,bccf8909-6f99-44d8-9c91-688958fc95f4,0,1,246571fb-38c7-4da6-929d-d8b44bc3437c,246571fb-38c7-4da6-929d-d8b44bc3437c,0,1,047fd6d7-5e30-4184-a09a-6525de526cc7,047fd6d7-5e30-4184-a09a-6525de526cc7,0,1,beb44b02-5d5e-4127-aee7-e184a43a4210,beb44b02-5d5e-4127-aee7-e184a43a4210,0,1,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,0,1,e24641ed-3e92-46d7-852b-9958ab7bc520,e24641ed-3e92-46d7-852b-9958ab7bc520,0,1,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,0,1,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,0,1,2c61114f-abd7-4415-8cdf-4fe95d9fe354,2c61114f-abd7-4415-8cdf-4fe95d9fe354,0,1,abd7a766-5cc1-48db-8d29-797e9d666a78,abd7a766-5cc1-48db-8d29-797e9d666a78,0,1,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1704b5e3-8e77-4df6-9223-e6e5c41a280d,0,1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,0,1,b0dde395-8498-4469-9507-d290798117d7,b0dde395-8498-4469-9507-d290798117d7,0,1,999616ea-0faa-4ae2-9841-6a6997ea6694,999616ea-0faa-4ae2-9841-6a6997ea6694,0,1,c5f91669-13d8-4f0a-a054-2701078da38a,c5f91669-13d8-4f0a-a054-2701078da38a,0,1,34f9872b-e02e-4093-ba06-3cb5b8995850,34f9872b-e02e-4093-ba06-3cb5b8995850,0,1,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,0,1,e61eef89-b3de-4b73-b7d9-af75318093e5,e61eef89-b3de-4b73-b7d9-af75318093e5,0,1,94e68502-adf1-476e-be2f-8418385959fa,94e68502-adf1-476e-be2f-8418385959fa,0,1,bf80ccc5-f907-4e7f-a007-6030c7ba682e,bf80ccc5-f907-4e7f-a007-6030c7ba682e,0,1,a330acd1-bc97-4ef8-8ecb-5604868ca044,a330acd1-bc97-4ef8-8ecb-5604868ca044,0,1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,0,1,58c3936c-4db0-45c8-a22e-b5dd49a61497,58c3936c-4db0-45c8-a22e-b5dd49a61497,0,1,9aa607bc-5870-436a-bbe1-296560393e3b,9aa607bc-5870-436a-bbe1-296560393e3b,0,1,1635be16-4861-4a7d-babc-4caff448a7f7,1635be16-4861-4a7d-babc-4caff448a7f7,0,1,9e399087-c957-4a7a-ab9d-2b689736caab,9e399087-c957-4a7a-ab9d-2b689736caab,0,1,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,0,1,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,0,1,2b7372be-af0d-464e-8d09-8172229790af,2b7372be-af0d-464e-8d09-8172229790af,0,1,d85346db-be25-4dab-a2db-647c3d40dd17,d85346db-be25-4dab-a2db-647c3d40dd17,0,1,8a904fa3-4a47-4e89-a2f9-e672b42729b0,8a904fa3-4a47-4e89-a2f9-e672b42729b0,0,1,ef80832f-963f-4b92-a446-015d7605c99e,ef80832f-963f-4b92-a446-015d7605c99e,0,1,72f2226e-7a71-4106-95a7-63242b48cabd,72f2226e-7a71-4106-95a7-63242b48cabd,0,1,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,0,1,fb07fd61-2aae-4759-b6ef-c44c2bba4036,fb07fd61-2aae-4759-b6ef-c44c2bba4036,0,1,cd6770d5-cd3c-47af-bc46-c865993adf63,cd6770d5-cd3c-47af-bc46-c865993adf63,0,1,9f9936fc-54a0-4812-b12d-2f8f91551440,9f9936fc-54a0-4812-b12d-2f8f91551440,0,1,a5667633-9264-4dfa-9e26-c45e96e61ae3,a5667633-9264-4dfa-9e26-c45e96e61ae3,0,1,2eeea138-481c-4fde-9e8a-709d751cc469,2eeea138-481c-4fde-9e8a-709d751cc469,0,1,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,0,1,845262f8-8208-4c90-98ec-c85dd5734cf0,845262f8-8208-4c90-98ec-c85dd5734cf0,0,1,ad066c0d-4f4c-48af-9cc8-bb835372150a,ad066c0d-4f4c-48af-9cc8-bb835372150a,0,1,a2145e81-239e-4267-8a43-ea3f7babe878,a2145e81-239e-4267-8a43-ea3f7babe878,0,1,3326bbcb-b277-44db-a252-2448119e8146,3326bbcb-b277-44db-a252-2448119e8146,0,1,61cac5f7-320c-4098-9078-44fadcdeb219,61cac5f7-320c-4098-9078-44fadcdeb219,0,1,304304b1-36a4-42bb-8ab9-b23b59795001,304304b1-36a4-42bb-8ab9-b23b59795001,0,1,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,0,1,75b9ab9f-7cbb-4468-9570-39f719fd682b,75b9ab9f-7cbb-4468-9570-39f719fd682b,0,1,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,0,1,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,0,1,cd454738-62dd-4f95-af33-b52750678428,cd454738-62dd-4f95-af33-b52750678428,0,1,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,0,1,e4abafc6-f859-4d96-9818-5b9bf8d66d69,e4abafc6-f859-4d96-9818-5b9bf8d66d69,0,1,535acd2c-26d2-4f32-9ae6-cc1956317c59,535acd2c-26d2-4f32-9ae6-cc1956317c59,0,1,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,0,1,ac4e0868-ba49-46b4-8872-d42483a5591f,ac4e0868-ba49-46b4-8872-d42483a5591f,0,1,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,0,1,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0,1,ca4c0299-625a-4b03-be0e-36ffb45c6d08,ca4c0299-625a-4b03-be0e-36ffb45c6d08,0,1,7fa1119b-4321-4b8f-a879-1d940084145a,7fa1119b-4321-4b8f-a879-1d940084145a,0,1,5d9c0841-6ea6-48dc-a53b-9f19894750f8,5d9c0841-6ea6-48dc-a53b-9f19894750f8,0,1,86b5303b-d967-4bc6-b2da-066c5a58613f,86b5303b-d967-4bc6-b2da-066c5a58613f,0,1,853b824d-9377-475f-913e-d02bd60f5f64,853b824d-9377-475f-913e-d02bd60f5f64,0,1,0c5e261f-961e-4780-877a-06589400b88a,0c5e261f-961e-4780-877a-06589400b88a,0,1,ee1f8545-ea64-41de-a29a-2d40e15d4f16,ee1f8545-ea64-41de-a29a-2d40e15d4f16,0,1,4599ef83-5f1e-44af-ae0c-67988656a99e,4599ef83-5f1e-44af-ae0c-67988656a99e,0,1,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,0,1,e1b94dcf-ec37-4b2d-a7af-120eeee40944,e1b94dcf-ec37-4b2d-a7af-120eeee40944,0,1,7d2a37b1-a1a0-435a-846a-95e255655044,7d2a37b1-a1a0-435a-846a-95e255655044,0,1,109db64c-00dc-490e-99a5-4430d9344e99,109db64c-00dc-490e-99a5-4430d9344e99,0,1,85837a55-fed5-4b7b-a622-30d728b9a677,85837a55-fed5-4b7b-a622-30d728b9a677,0,1,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0,1,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,0,1,da9821c3-4b16-48b7-9088-d3cf8ac536a6,da9821c3-4b16-48b7-9088-d3cf8ac536a6,0,1,d5142574-a040-4dd0-a482-cdc61c1d86ab,d5142574-a040-4dd0-a482-cdc61c1d86ab,0,1,fb36c775-1124-4ba6-8af8-133bf66fcb54,fb36c775-1124-4ba6-8af8-133bf66fcb54,0,1,51f9aff4-71da-4b1b-b48b-04122a17d855,51f9aff4-71da-4b1b-b48b-04122a17d855,0,1,778e79ee-eb1a-4d52-8a31-58e781c78fe4,778e79ee-eb1a-4d52-8a31-58e781c78fe4,0,1,90385850-d37b-4b2e-ac87-95c17f32197c,90385850-d37b-4b2e-ac87-95c17f32197c,0,1,f480ac52-e2f1-4ed0-a0b1-20a622f77302,f480ac52-e2f1-4ed0-a0b1-20a622f77302,0,1,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,0,1,b9b0fbdc-8fda-46d1-bb3e-561a03604971,b9b0fbdc-8fda-46d1-bb3e-561a03604971,0,1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,0,1,672c2936-9771-4e32-a970-7ac7f12a21e8,672c2936-9771-4e32-a970-7ac7f12a21e8,0,1,73afaad8-dfa9-43e3-bdaf-543c3545d788,73afaad8-dfa9-43e3-bdaf-543c3545d788,0,1,c264441d-4805-4968-baa2-37b8970049c7,c264441d-4805-4968-baa2-37b8970049c7,0,1,f36150de-33af-4410-8a4c-8c9f4b545793,f36150de-33af-4410-8a4c-8c9f4b545793,0,1,62f97480-7d4a-48f3-9d1d-612909b242c9,62f97480-7d4a-48f3-9d1d-612909b242c9,0,1,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,0,1,3068be84-a401-4701-8ac9-411fae130f84,3068be84-a401-4701-8ac9-411fae130f84,0,1,957394a7-e5b8-47fc-8680-1e71efe2be7d,957394a7-e5b8-47fc-8680-1e71efe2be7d,0,1,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,0,1,4f25ef45-c8d9-401d-b0e8-2217ac310f04,4f25ef45-c8d9-401d-b0e8-2217ac310f04,0,1,504ca240-b5ae-433e-ae5f-d818263eea23,504ca240-b5ae-433e-ae5f-d818263eea23,0,1,32461819-9437-417d-8d1e-851c9a2dcee2,32461819-9437-417d-8d1e-851c9a2dcee2,0,1,74228950-8a4b-4dd6-a053-8650de202521,74228950-8a4b-4dd6-a053-8650de202521,0,1,ff700f82-aba3-417c-be1b-b1b37ad98543,ff700f82-aba3-417c-be1b-b1b37ad98543,0,1,6b9ce91e-08b9-4972-9878-1724c67b68ec,6b9ce91e-08b9-4972-9878-1724c67b68ec,0,1,640814f2-6082-475e-8006-25fd5b24afdb,640814f2-6082-475e-8006-25fd5b24afdb,0,1,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,0,1,f1b66ea8-262d-4b38-a039-b83a843f6ee8,f1b66ea8-262d-4b38-a039-b83a843f6ee8,0,1,bcae6e05-f1fd-413e-9eef-2e1cee42a962,bcae6e05-f1fd-413e-9eef-2e1cee42a962,0,1,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,0,1,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,0,1,91562fe8-e630-4bcb-a14e-c0e1e129141a,91562fe8-e630-4bcb-a14e-c0e1e129141a,0,1,c261abfd-3828-47b5-aa32-dfdd3a1636ad,c261abfd-3828-47b5-aa32-dfdd3a1636ad,0,1,e71f8f26-addf-4b12-a244-11610ed03bba,e71f8f26-addf-4b12-a244-11610ed03bba,0,1,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,0,1,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,0,1,9155c95b-6afb-41bb-bd0b-d37e503fc163,9155c95b-6afb-41bb-bd0b-d37e503fc163,0,1,d917c19e-be15-41cc-9c8a-a97c8de85309,d917c19e-be15-41cc-9c8a-a97c8de85309,0,1,47907538-9357-4885-8b50-17f2e16c260f,47907538-9357-4885-8b50-17f2e16c260f,0,1,17e1840f-fef3-4f17-8476-273e6af24cb4,17e1840f-fef3-4f17-8476-273e6af24cb4,0,1,a64566fa-b706-49bc-8277-4531145c400e,a64566fa-b706-49bc-8277-4531145c400e,0,1,a8f32b13-249c-4ce6-a521-f06a87f2e670,a8f32b13-249c-4ce6-a521-f06a87f2e670,0,1,815775e4-cfb7-495b-87c4-d134b90d93d4,815775e4-cfb7-495b-87c4-d134b90d93d4,0,1,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,0,1,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,0,1,7a27b378-89ac-4cad-8c69-a0cd14812d7e,7a27b378-89ac-4cad-8c69-a0cd14812d7e,0,1,d2433a11-8e1d-4e4c-966d-37cde6283f72,d2433a11-8e1d-4e4c-966d-37cde6283f72,0,1,59eb5919-3c33-48bf-b322-ec78018e4142,59eb5919-3c33-48bf-b322-ec78018e4142,0,1,63f308a5-b955-48a5-8052-50c5bede65d0,63f308a5-b955-48a5-8052-50c5bede65d0,0,1,1b614b97-5c1d-497a-9574-40114059f836,1b614b97-5c1d-497a-9574-40114059f836,0,1,477dfea4-e401-4cf0-b0a8-2df7c3836c58,477dfea4-e401-4cf0-b0a8-2df7c3836c58,0,1,294c000f-6979-4ed1-bbc7-7402facd9185,294c000f-6979-4ed1-bbc7-7402facd9185,0,1,db607fbc-f785-47d5-9550-577424aa3fe9,db607fbc-f785-47d5-9550-577424aa3fe9,0,1,b7111ddf-a623-4bae-90aa-636148492ca2,b7111ddf-a623-4bae-90aa-636148492ca2,0,1,905d9dcd-5793-4362-8fe8-2edce8c35e32,905d9dcd-5793-4362-8fe8-2edce8c35e32,0,1,a96cb6fd-54e0-4514-9210-7f4636acd336,a96cb6fd-54e0-4514-9210-7f4636acd336,0,1,3580e7a7-95d1-4a8e-bc12-a1449fe03757,3580e7a7-95d1-4a8e-bc12-a1449fe03757,0,1,13759790-6c70-4323-9321-a68b90c51663,13759790-6c70-4323-9321-a68b90c51663,0,1,d9704b20-c29c-4e7f-b777-0ac9080a5631,d9704b20-c29c-4e7f-b777-0ac9080a5631,0,1,c1372891-0f55-4868-ab97-906eff52be0e,c1372891-0f55-4868-ab97-906eff52be0e,0,1,33e96bda-1708-4ee4-8d4d-3b919bda3e38,33e96bda-1708-4ee4-8d4d-3b919bda3e38,0,1,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,0,1,93fcaa62-2a19-468b-9128-c7930583fbfd,93fcaa62-2a19-468b-9128-c7930583fbfd,0,1,2d885109-4c96-41c0-a996-785bfd793c2d,2d885109-4c96-41c0-a996-785bfd793c2d,0,1,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,0,1,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0,1,5148d263-de26-4c92-b090-ae59f42dfb05,5148d263-de26-4c92-b090-ae59f42dfb05,0,1,dbefe81f-85cf-4d84-9600-b359598c2543,dbefe81f-85cf-4d84-9600-b359598c2543,0,1,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1a624a06-93b8-4d1f-8c14-2061e1e7927c,0,1,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,0,1,d5967e0f-03cd-4190-a702-7e9290eae1eb,d5967e0f-03cd-4190-a702-7e9290eae1eb,0,1,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,0,1,7059b117-714c-4710-aebe-76f88c4d41d5,7059b117-714c-4710-aebe-76f88c4d41d5,0,1,ea050453-4947-40dc-aa2a-503ddd1a235a,ea050453-4947-40dc-aa2a-503ddd1a235a,0,1,37d0e6d4-702e-46f5-ae87-4d393fa0c701,37d0e6d4-702e-46f5-ae87-4d393fa0c701,0,1,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1e963c1e-f914-46e1-81d3-90d126fc6f8d,0,1,3a62d88e-9298-42c0-bd87-c749ecd01d19,3a62d88e-9298-42c0-bd87-c749ecd01d19,0,1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,0,1,fc13dd80-ce44-4ed1-a9d7-dae44602b954,fc13dd80-ce44-4ed1-a9d7-dae44602b954,0,1,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,0,1,433b23a1-a863-4775-b2f2-1384e8f3cbbb,433b23a1-a863-4775-b2f2-1384e8f3cbbb,0,1,a1677c47-b9a4-427a-972d-9bb2293445b6,a1677c47-b9a4-427a-972d-9bb2293445b6,0,1,e4a328c0-e73b-465d-ae36-38e5a71690fa,e4a328c0-e73b-465d-ae36-38e5a71690fa,0,1,85bebd81-a355-4010-889b-cff6f72dafcb,85bebd81-a355-4010-889b-cff6f72dafcb,0,1,49521f36-fd1b-47dd-81cc-48b6fb651e22,49521f36-fd1b-47dd-81cc-48b6fb651e22,0,1,bc946e21-53bb-4332-8c63-7b0aa78826eb,bc946e21-53bb-4332-8c63-7b0aa78826eb,0,1,4be2bdad-9a43-4593-acbc-a02e9144a89f,4be2bdad-9a43-4593-acbc-a02e9144a89f,0,1,eb4455f2-a5a0-44fb-8302-7312bc32df66,eb4455f2-a5a0-44fb-8302-7312bc32df66,0,1,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,0,1,9f20e59e-7db8-466f-b965-7045fc3f1489,9f20e59e-7db8-466f-b965-7045fc3f1489,0,1,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,0,1,89ac3d39-1915-4e67-a4e4-5a67a155cb75,89ac3d39-1915-4e67-a4e4-5a67a155cb75,0,1,d27b637d-5a51-49ff-bf73-343891534586,d27b637d-5a51-49ff-bf73-343891534586,0,1,b5a073a2-54e2-47c9-b533-f75fd2c9f343,b5a073a2-54e2-47c9-b533-f75fd2c9f343,0,1,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0,1,989b8ccd-bc05-48c1-9969-b3733028b65f,989b8ccd-bc05-48c1-9969-b3733028b65f,0,1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,0,1,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,0,1,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,0,1,bf66612b-aec4-414b-bee6-9bcab145c7cc,bf66612b-aec4-414b-bee6-9bcab145c7cc,0,1,811f356f-554a-4a63-90b6-dedb5fec7c05,811f356f-554a-4a63-90b6-dedb5fec7c05,0,1,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,0,1,8eb18de5-8283-4d0c-bb11-b882e78181d5,8eb18de5-8283-4d0c-bb11-b882e78181d5,0,1,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,0,1,64a86d5d-f925-45ee-82da-76df1cc20729,64a86d5d-f925-45ee-82da-76df1cc20729,0,1,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,0,1,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,0,1,83ae9b22-20ff-4e94-9282-19daf2274328,83ae9b22-20ff-4e94-9282-19daf2274328,0,1,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,0,1,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,0,1,a92b2b70-7e69-49d1-b921-c9d1b0718f94,a92b2b70-7e69-49d1-b921-c9d1b0718f94,0,1,d57a3300-0f9f-4fe5-b627-01c96b723053,d57a3300-0f9f-4fe5-b627-01c96b723053,0,1,19f690a3-d27b-43c1-94b7-585fc628da05,19f690a3-d27b-43c1-94b7-585fc628da05,0,1,d375fac5-098c-42b5-a0bd-9a4ae7516ada,d375fac5-098c-42b5-a0bd-9a4ae7516ada,0,1,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,0,1,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,0,1,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,0,1,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,0,1,cf783265-a4cb-436f-963a-1ff8220ae246,cf783265-a4cb-436f-963a-1ff8220ae246,0,1,3560f949-48f9-4fca-9fe2-81efc1ec0eee,3560f949-48f9-4fca-9fe2-81efc1ec0eee,0,1,662078f0-b75d-4c44-896f-7b7f74fd1ed4,662078f0-b75d-4c44-896f-7b7f74fd1ed4,0,1,207290c2-5221-48ad-99aa-bb0f7955df3f,207290c2-5221-48ad-99aa-bb0f7955df3f,0,1,162137ef-dea2-4ace-9e67-897dad0e7c3d,162137ef-dea2-4ace-9e67-897dad0e7c3d,0,1,d91a016e-cca9-4976-9c53-2c96fa95cf1a,d91a016e-cca9-4976-9c53-2c96fa95cf1a,0,1,012fb2f1-1c15-4800-8968-78a90c2a1348,012fb2f1-1c15-4800-8968-78a90c2a1348,0,1,a29a36aa-3c90-4be9-8ffc-20237721d1d0,a29a36aa-3c90-4be9-8ffc-20237721d1d0,0,1,aec8f9e6-d177-45f5-ba55-2d662428c2ae,aec8f9e6-d177-45f5-ba55-2d662428c2ae,0,1,b0bf8af5-d824-459c-bc40-17495406af3c,b0bf8af5-d824-459c-bc40-17495406af3c,0,1,7dfdd08b-7cd9-480c-829d-97f5e7152eec,7dfdd08b-7cd9-480c-829d-97f5e7152eec,0,1,64752b64-80ae-4537-986a-d61423dc546b,64752b64-80ae-4537-986a-d61423dc546b,0,1,2c37e123-ea35-4501-93e1-2fa295444bec,2c37e123-ea35-4501-93e1-2fa295444bec,0,1,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,0,1,a997a430-3ea8-4fde-9f53-7b507a04c215,a997a430-3ea8-4fde-9f53-7b507a04c215,0,1,f648e19d-026b-4fa7-8e70-1866b27b94f8,f648e19d-026b-4fa7-8e70-1866b27b94f8,0,1,d32081fc-47d3-4e66-837e-705c94ba8ca8,d32081fc-47d3-4e66-837e-705c94ba8ca8,0,1,69c207c2-7699-4467-b127-286ecd6d0f29,69c207c2-7699-4467-b127-286ecd6d0f29,0,1,e33df42d-4c64-4475-8294-6b05ecdb4e02,e33df42d-4c64-4475-8294-6b05ecdb4e02,0,1,6094a0ed-2051-4649-ad75-dfeb389d3cbb,6094a0ed-2051-4649-ad75-dfeb389d3cbb,0,1,6944a7e2-b9a1-492f-a6f2-9bf31d97ec78,6944a7e2-b9a1-492f-a6f2-9bf31d97ec78,0,1,f3750ea4-5f9e-4ab3-9495-3f182ecff407,f3750ea4-5f9e-4ab3-9495-3f182ecff407,0,1,14002d51-87d4-4647-92ef-a9b1935cb666,14002d51-87d4-4647-92ef-a9b1935cb666,0,1,e941a39d-1f3c-4e6e-af17-75f92a15dd40,e941a39d-1f3c-4e6e-af17-75f92a15dd40,0,1,d9bbedcb-4872-4183-83c2-6c2aae9634b0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,0,1,72c695c3-66f6-4aa8-8a39-737ec6967a1d,72c695c3-66f6-4aa8-8a39-737ec6967a1d,0,1,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,0,1,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,0,1,d5d11480-d5c7-4569-80c1-f872655ff084,d5d11480-d5c7-4569-80c1-f872655ff084,0,1,b1e45d36-08e9-430e-976b-03e6e3320c6a,b1e45d36-08e9-430e-976b-03e6e3320c6a,0,1,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,0,1,8e21374f-5a65-406c-856d-2040607da4bc,8e21374f-5a65-406c-856d-2040607da4bc,0,1,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,0,1,3e5f5167-8978-4191-b0f6-6a262b848b95,3e5f5167-8978-4191-b0f6-6a262b848b95,0,1,ae3aef9e-df3b-4ebc-912d-2bc581063745,ae3aef9e-df3b-4ebc-912d-2bc581063745,0,1,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,0,1,a8c09e65-6e10-4772-b264-6ead83d52fe3,a8c09e65-6e10-4772-b264-6ead83d52fe3,0,1,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,0,1,d5e1806b-9827-40ab-9cfa-23c22456d137,d5e1806b-9827-40ab-9cfa-23c22456d137,0,1,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,0,1,d24170d7-5477-4ec8-acd2-0de8bd2067d6,d24170d7-5477-4ec8-acd2-0de8bd2067d6,0,1,f047da82-7574-4da4-b54e-480195280a11,f047da82-7574-4da4-b54e-480195280a11,0,1,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,0,1,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,0,1,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,0,1,ecbe625a-55eb-437a-8dee-33fb034d4c0d,ecbe625a-55eb-437a-8dee-33fb034d4c0d,0,1,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,0,1,84796b00-79db-42ba-94d0-5bf543e09cd6,84796b00-79db-42ba-94d0-5bf543e09cd6,0,1,948b10b3-0d7c-4dca-8816-75eb86e7881b,948b10b3-0d7c-4dca-8816-75eb86e7881b,0,1,9de91b5a-98e4-414b-b650-b669b0159b49,9de91b5a-98e4-414b-b650-b669b0159b49,0,1,840dc727-288a-4bf2-8b1a-47629d28229c,840dc727-288a-4bf2-8b1a-47629d28229c,0,1,314ac8ca-8845-40c2-b844-91beb05fb601,314ac8ca-8845-40c2-b844-91beb05fb601,0,1,3de3948d-40ff-4e0d-8445-9bf49c916161,3de3948d-40ff-4e0d-8445-9bf49c916161,0,1,37ae1946-9436-47ef-8b8c-17ed0a24971c,37ae1946-9436-47ef-8b8c-17ed0a24971c,0,1,d844d861-fbe9-4391-89e3-00e505b33b33,d844d861-fbe9-4391-89e3-00e505b33b33,0,1,c0688817-fd73-4ead-b9dd-ec966780a2c2,c0688817-fd73-4ead-b9dd-ec966780a2c2,0,1,b1fbfbfe-766f-4018-9491-507748193808,b1fbfbfe-766f-4018-9491-507748193808,0,1,e55dfadb-8e12-4808-ad90-e891a4644548,e55dfadb-8e12-4808-ad90-e891a4644548,0,1,a792b3dc-ac80-492b-bd94-83eb0438ba9f,a792b3dc-ac80-492b-bd94-83eb0438ba9f,0,1,73a093ea-1927-483b-b6f5-8f0cbd253753,73a093ea-1927-483b-b6f5-8f0cbd253753,0,1,345f04c0-0274-4e79-b523-f1fa3cf0d92a,345f04c0-0274-4e79-b523-f1fa3cf0d92a,0,1,f3a14787-de1b-4b65-8cb1-bc33a785821c,f3a14787-de1b-4b65-8cb1-bc33a785821c,0,1,b9ba3ce3-9059-4135-9d31-725f01907431,b9ba3ce3-9059-4135-9d31-725f01907431,0,1,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,0,1,fc9fc58f-c888-41f0-9f57-70748b21706e,fc9fc58f-c888-41f0-9f57-70748b21706e,0,1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,0,1,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,0,1,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,0,1,33596560-3d45-4d3e-b6ec-1c22162110ad,33596560-3d45-4d3e-b6ec-1c22162110ad,0,1,d3e82a06-daae-4f4d-b3f8-45a406e31664,d3e82a06-daae-4f4d-b3f8-45a406e31664,0,1,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,0,1,ac6a184d-1247-4b54-a023-f0d16daa5fe9,ac6a184d-1247-4b54-a023-f0d16daa5fe9,0,1,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,0,1,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,0,1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,0,1,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,0,1,8bf73614-81a4-4702-88b9-3c6f2594d204,8bf73614-81a4-4702-88b9-3c6f2594d204,0,1,b8d4410b-f626-41b8-87c8-67102256bae2,b8d4410b-f626-41b8-87c8-67102256bae2,0,1,484eeb5f-12af-4139-a081-4dcac067a712,484eeb5f-12af-4139-a081-4dcac067a712,0,1,ec61075e-fbcb-494a-b790-81548a212d2b,ec61075e-fbcb-494a-b790-81548a212d2b,0,1,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,0,1,0c444045-302b-4dbd-a9a3-81fd40004948,0c444045-302b-4dbd-a9a3-81fd40004948,0,1,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,0,1,1528b799-1c0f-4244-85e8-e738b827934a,1528b799-1c0f-4244-85e8-e738b827934a,0,1,45d79e4d-8c2a-432b-abb8-fb9046abea40,45d79e4d-8c2a-432b-abb8-fb9046abea40,0,1,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,0,1,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,0,1,256618cc-0956-4cda-9691-e4ced68a791f,256618cc-0956-4cda-9691-e4ced68a791f,0,1,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,0,1,4b9771a7-b924-4e61-8468-4633e3c54706,4b9771a7-b924-4e61-8468-4633e3c54706,0,1,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,0,1,667de710-cee5-4a97-8434-641d199f3b68,667de710-cee5-4a97-8434-641d199f3b68,0,1,e9a2320b-71a1-4974-8b5a-1990062ec7df,e9a2320b-71a1-4974-8b5a-1990062ec7df,0,1,f6e85eeb-d81b-4526-9a33-ab77bd447236,f6e85eeb-d81b-4526-9a33-ab77bd447236,0,1,470e37fe-d149-4007-b397-12fc84f93041,470e37fe-d149-4007-b397-12fc84f93041,0,1,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,0,1,7175cfa0-885c-4807-98ec-af255dcd55d9,7175cfa0-885c-4807-98ec-af255dcd55d9,0,1,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,0,1,f5b66759-8102-4cba-a3fd-ee96db5bc809,f5b66759-8102-4cba-a3fd-ee96db5bc809,0,1,6c205eae-9113-46c1-a245-25d29173646e,6c205eae-9113-46c1-a245-25d29173646e,0,1,4cc4aa90-49fb-4602-9f9c-d4d47d223988,4cc4aa90-49fb-4602-9f9c-d4d47d223988,0,1,66ef1631-277b-4c22-99d7-1434b4dbbb3f,66ef1631-277b-4c22-99d7-1434b4dbbb3f,0,1,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,0,1,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,0,1,898535ff-50cd-464a-aadc-5e4f9de15b04,898535ff-50cd-464a-aadc-5e4f9de15b04,0,1,737f6f1b-9ffc-4916-b378-7321eab1f886,737f6f1b-9ffc-4916-b378-7321eab1f886,0,1,01dedf5b-2cce-4d24-81ea-2e3af82f5794,01dedf5b-2cce-4d24-81ea-2e3af82f5794,0,1,385e209d-65aa-43b1-8591-f92544882740,385e209d-65aa-43b1-8591-f92544882740,0,1,8381bc76-0e0f-4196-9911-ec05730cb1c9,8381bc76-0e0f-4196-9911-ec05730cb1c9,0,1,c224e520-7204-4f4a-aac9-b6221ea9ce44,c224e520-7204-4f4a-aac9-b6221ea9ce44,0,1,771a1900-46be-49fe-a02d-584780de8363,771a1900-46be-49fe-a02d-584780de8363,0,1,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,0,1,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,0,1,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,0,1,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,0,1,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,0,1,ef257b20-da10-4cda-8b9d-7de2d68a2f71,ef257b20-da10-4cda-8b9d-7de2d68a2f71,0,1,de0d41b7-acc0-4ebc-8933-d6b5ad351860,de0d41b7-acc0-4ebc-8933-d6b5ad351860,0,1,04013c34-8d59-4f87-b272-732d5a6dd675,04013c34-8d59-4f87-b272-732d5a6dd675,0,1,7fffceb9-8725-46ab-b797-ad7aa67f1075,7fffceb9-8725-46ab-b797-ad7aa67f1075,0,1,f9df9b6b-5051-46ef-bb1f-1974f41054a7,f9df9b6b-5051-46ef-bb1f-1974f41054a7,0,1,005b3f60-d740-4670-b522-8c352958889e,005b3f60-d740-4670-b522-8c352958889e,0,1,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,0,1,1a354069-07ea-40e0-bbac-e1b6232750c2,1a354069-07ea-40e0-bbac-e1b6232750c2,0,1,df31548b-0b8e-412b-999a-761970ae3c23,df31548b-0b8e-412b-999a-761970ae3c23,0,1,05135747-43e7-4b61-bc30-57b3289ea923,05135747-43e7-4b61-bc30-57b3289ea923,0,1,6d63728d-3384-4131-b890-1b82d14a04b7,6d63728d-3384-4131-b890-1b82d14a04b7,0,1,f4554046-493e-4960-94df-0a8b9d02f474,f4554046-493e-4960-94df-0a8b9d02f474,0,1,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,0,1,9222a6c0-b785-4811-bfb6-44ac44a55925,9222a6c0-b785-4811-bfb6-44ac44a55925,0,1,ea84021d-2431-44ad-a446-f1fb979c9e96,ea84021d-2431-44ad-a446-f1fb979c9e96,0,1,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,0,1,6da034af-0481-4a3c-aff9-c50ced6f21d4,6da034af-0481-4a3c-aff9-c50ced6f21d4,0,1,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,0,1,d07016c8-7d97-42cd-865b-85b49075adfb,d07016c8-7d97-42cd-865b-85b49075adfb,0,1,9202335d-50bb-4282-9438-24c7fb9cf637,9202335d-50bb-4282-9438-24c7fb9cf637,0,1,a62906e5-27f8-4e72-8769-9a3eed6997d7,a62906e5-27f8-4e72-8769-9a3eed6997d7,0,1,6c5d0ac3-6086-434c-812b-1c1158ecc574,6c5d0ac3-6086-434c-812b-1c1158ecc574,0,1,783536d7-c0db-44c9-96e8-58b57804d7c8,783536d7-c0db-44c9-96e8-58b57804d7c8,0,1,a8295435-c2c4-4aff-874b-7412556aa76d,a8295435-c2c4-4aff-874b-7412556aa76d,0,1,f6c4e24b-172b-4ba3-8e3e-988306ade660,f6c4e24b-172b-4ba3-8e3e-988306ade660,0,1,9baab24c-a5a3-46f4-ad17-a28d4a49f851,9baab24c-a5a3-46f4-ad17-a28d4a49f851,0,1,d1952319-0e42-4684-a386-fbe7c24526c2,d1952319-0e42-4684-a386-fbe7c24526c2,0,1,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,0,1,83b47a9d-d44b-4c40-becd-df74f9cb2e91,83b47a9d-d44b-4c40-becd-df74f9cb2e91,0,1,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,0,1,86e2a2eb-160f-4e93-a449-b2f726286d1b,86e2a2eb-160f-4e93-a449-b2f726286d1b,0,1,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,0,1,364184c2-ec71-44be-b40c-ba719b4ab0e1,364184c2-ec71-44be-b40c-ba719b4ab0e1,0,1,7ef46c54-ec0c-4211-a750-e5949956b593,7ef46c54-ec0c-4211-a750-e5949956b593,0,1,04823681-875e-459a-b3cf-051c89527f38,04823681-875e-459a-b3cf-051c89527f38,0,1,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,0,1,38265f08-3301-40d1-b630-a319c983e826,38265f08-3301-40d1-b630-a319c983e826,0,1,5175c496-bac7-4c57-9628-793b727aecd0,5175c496-bac7-4c57-9628-793b727aecd0,0,1,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,0,1,fc42df4a-93f0-461f-acfe-fea09158030f,fc42df4a-93f0-461f-acfe-fea09158030f,0,1,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,0,1,6d002aef-00c9-4069-80df-153151218831,6d002aef-00c9-4069-80df-153151218831,0,1,4fec3a6c-5a99-4763-aa07-d5de8712559e,4fec3a6c-5a99-4763-aa07-d5de8712559e,0,1,968a1202-d271-43e0-bfd4-d38e49ceadd4,968a1202-d271-43e0-bfd4-d38e49ceadd4,0,1,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,0,1,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,0,1,ea61e442-273e-4ce4-a806-8090893729ba,ea61e442-273e-4ce4-a806-8090893729ba,0,1,e7100f2b-d169-4635-ab87-7a2225ff12ee,e7100f2b-d169-4635-ab87-7a2225ff12ee,0,1,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,0,1,4a2d2790-debf-4dc2-8216-878d8808d161,4a2d2790-debf-4dc2-8216-878d8808d161,0,1,836d0590-a8ee-40d0-a649-41cf4fae36a6,836d0590-a8ee-40d0-a649-41cf4fae36a6,0,1,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,0,1,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,0,1,eda3c675-04b7-4c14-b78a-0caa22843ac0,eda3c675-04b7-4c14-b78a-0caa22843ac0,0,1,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,0,1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,0,1,e5ddc65a-e886-4ed6-9598-bec30ddb7341,e5ddc65a-e886-4ed6-9598-bec30ddb7341,0,1,6cf48813-8097-44ae-8630-58f5b002ff31,6cf48813-8097-44ae-8630-58f5b002ff31,0,1,e0cee0ee-24b9-400a-95af-c61debec912b,e0cee0ee-24b9-400a-95af-c61debec912b,0,1,578bc873-5e23-4222-a655-7d653d761a4c,578bc873-5e23-4222-a655-7d653d761a4c,0,1,09bccd03-1492-4ebe-bfb4-8ace744d367f,09bccd03-1492-4ebe-bfb4-8ace744d367f,0,1,4d9294db-1abd-4e34-812f-fdcac0cf657d,4d9294db-1abd-4e34-812f-fdcac0cf657d,0,1,14bc3be4-3075-418d-90ec-be5d2686f875,14bc3be4-3075-418d-90ec-be5d2686f875,0,1,adffd81c-a566-4b4f-89d5-6abc705da36f,adffd81c-a566-4b4f-89d5-6abc705da36f,0,1,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,0,1,23ced9be-cb9d-451f-aea7-aa211054bd4d,23ced9be-cb9d-451f-aea7-aa211054bd4d,0,1,3991175c-0152-44c6-8e1c-4090d960050a,3991175c-0152-44c6-8e1c-4090d960050a,0,1,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,0,1,d1fabcdd-c072-4341-85d4-9a9ba168f301,d1fabcdd-c072-4341-85d4-9a9ba168f301,0,1,030a9c93-322b-4421-ad70-0acaa94870a2,030a9c93-322b-4421-ad70-0acaa94870a2,0,1,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,0,1,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,0,1,5c660f50-c63a-466d-bb32-de5699ad8a95,5c660f50-c63a-466d-bb32-de5699ad8a95,0,1,032587fa-2993-463c-af9f-bdd67f12604f,032587fa-2993-463c-af9f-bdd67f12604f,0,1,64d4aaed-e068-431b-bed0-faef7b5358f3,64d4aaed-e068-431b-bed0-faef7b5358f3,0,1,4507a92e-abb6-4329-88b2-3429bc694bc6,4507a92e-abb6-4329-88b2-3429bc694bc6,0,1,2694c1b4-536b-4187-adf6-0f8757aaae76,2694c1b4-536b-4187-adf6-0f8757aaae76,0,1,e523f88b-b3de-476e-a3cc-592970492dec,e523f88b-b3de-476e-a3cc-592970492dec,0,1,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,0,1,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,0,1,ea0843f4-60fb-4d44-abf4-0021867c636b,ea0843f4-60fb-4d44-abf4-0021867c636b,0,1,59aadc03-adbc-481f-89bc-d7f391789522,59aadc03-adbc-481f-89bc-d7f391789522,0,1,254f6ccd-0451-4231-91c9-4abe57b647be,254f6ccd-0451-4231-91c9-4abe57b647be,0,1,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,0,1,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0,1,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,0,1,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,0,1,7601fa7e-079a-4347-abea-e161b2d00783,7601fa7e-079a-4347-abea-e161b2d00783,0,1,ee84cb40-f82d-4558-91be-229d68ad9f4a,ee84cb40-f82d-4558-91be-229d68ad9f4a,0,1,101a7eff-9556-4165-879a-a7c8a852e236,101a7eff-9556-4165-879a-a7c8a852e236,0,1,01775932-3603-4efc-9235-abdb97490dea,01775932-3603-4efc-9235-abdb97490dea,0,1,7637844b-4059-4f8a-8436-b4f4e8cb4f74,7637844b-4059-4f8a-8436-b4f4e8cb4f74,0,1,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,0,1,0ee5b788-61dc-464b-86da-f985df7704b6,0ee5b788-61dc-464b-86da-f985df7704b6,0,1,2375c6a8-9799-4b7c-a48d-091a90c67693,2375c6a8-9799-4b7c-a48d-091a90c67693,0,1,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,0,1,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,0,1,63c6522f-be04-422a-b4f4-0f55f58b09a8,63c6522f-be04-422a-b4f4-0f55f58b09a8,0,1,be919dc1-a377-43e1-82e6-ce946cabdd55,be919dc1-a377-43e1-82e6-ce946cabdd55,0,1,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,0,1,9ded532e-9e60-4895-a4c5-4ea6697aa83c,9ded532e-9e60-4895-a4c5-4ea6697aa83c,0,1,106c5159-ffc7-4059-b3e3-acf74326a44f,106c5159-ffc7-4059-b3e3-acf74326a44f,0,1,d39fd717-1a69-4fd3-889e-4fa9abefea1c,d39fd717-1a69-4fd3-889e-4fa9abefea1c,0,1,5b85e6df-7493-4201-97ad-2aea14de6006,5b85e6df-7493-4201-97ad-2aea14de6006,0,1,061e6c0f-ba52-40ec-96ad-2eba3eee3097,061e6c0f-ba52-40ec-96ad-2eba3eee3097,0,1,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,0,1,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,0,1,4840753b-e2e1-4e67-b35f-2f5eab7754f5,4840753b-e2e1-4e67-b35f-2f5eab7754f5,0,1,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,0,1,6ffd9c17-d90b-4d19-b337-0fbc2c717557,6ffd9c17-d90b-4d19-b337-0fbc2c717557,0,1,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,0,1,3bb83275-7a0e-420f-8c6b-028038f11a8c,3bb83275-7a0e-420f-8c6b-028038f11a8c,0,1,e1950a23-f6e7-48af-b78a-77aa61f08ece,e1950a23-f6e7-48af-b78a-77aa61f08ece,0,1,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,0,1,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,0,1,5d726fa3-bde0-4d97-a577-415857bbb5c1,5d726fa3-bde0-4d97-a577-415857bbb5c1,0,1,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,0,1,49068231-202c-4ac6-a39a-69207cb597dd,49068231-202c-4ac6-a39a-69207cb597dd,0,1,5a470575-e012-42ad-9ad7-53930a8e843f,5a470575-e012-42ad-9ad7-53930a8e843f,0,1,5872d4ed-6503-422d-bcf9-63a8df3e777d,5872d4ed-6503-422d-bcf9-63a8df3e777d,0,1,e21cda29-2579-485e-a207-20b76f719c80,e21cda29-2579-485e-a207-20b76f719c80,0,1,1b232a57-2833-42c6-b318-38dae2af1ab2,1b232a57-2833-42c6-b318-38dae2af1ab2,0,1,007ade8c-b102-408b-b877-b531e046560b,007ade8c-b102-408b-b877-b531e046560b,0,1,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,0,1,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,0,1,eb69c41a-392d-43bb-9b67-a0adcb651b1e,eb69c41a-392d-43bb-9b67-a0adcb651b1e,0,1,93b01c88-48a2-4753-b443-0e9892395a8f,93b01c88-48a2-4753-b443-0e9892395a8f,0,1,0b7f8e05-bb34-47cc-9775-04362e814316,0b7f8e05-bb34-47cc-9775-04362e814316,0,1,e71e0297-3709-4247-933e-18a6350cbf39,e71e0297-3709-4247-933e-18a6350cbf39,0,1,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0,1,602dac6f-abe6-407a-92d3-7f1613e5dda6,602dac6f-abe6-407a-92d3-7f1613e5dda6,0,1,db03a88b-2804-45c2-9089-7ddb87ef2f18,db03a88b-2804-45c2-9089-7ddb87ef2f18,0,1,df6417d1-c722-4a87-a543-5d2c31795b20,df6417d1-c722-4a87-a543-5d2c31795b20,0,1,526a85c9-3a8d-4044-adb9-fd0689c70601,526a85c9-3a8d-4044-adb9-fd0689c70601,0,1,c4203772-580c-4db1-9bde-8925faa90688,c4203772-580c-4db1-9bde-8925faa90688,0,1,9ab0fe18-4dd7-4eed-958d-8537d4896d84,9ab0fe18-4dd7-4eed-958d-8537d4896d84,0,1,2278dc46-46ce-4d00-9289-4de1640782d7,2278dc46-46ce-4d00-9289-4de1640782d7,0,1,1f983a04-c2df-40bb-bee2-b326474d89f8,1f983a04-c2df-40bb-bee2-b326474d89f8,0,1,f03f1b68-e924-4c06-b0aa-8033a9a2f592,f03f1b68-e924-4c06-b0aa-8033a9a2f592,0,1,5e453d10-235d-4e53-86b1-20eed3247992,5e453d10-235d-4e53-86b1-20eed3247992,0,1,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0,1,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,0,1,738228ad-c30a-42f4-a6ad-bde0edba6266,738228ad-c30a-42f4-a6ad-bde0edba6266,0,1,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,0,1,df8e8344-d7bc-4cf2-b498-88d3abb66c09,df8e8344-d7bc-4cf2-b498-88d3abb66c09,0,1,e6d13536-3021-45b2-a8e1-bdb0e0be850c,e6d13536-3021-45b2-a8e1-bdb0e0be850c,0,1,b49f538c-b2b2-4a1f-a6b4-a911033b1666,b49f538c-b2b2-4a1f-a6b4-a911033b1666,0,1,794e952b-6b03-4a1e-ad3f-453376bccf45,794e952b-6b03-4a1e-ad3f-453376bccf45,0,1,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,0,1,5cd997ba-f123-47b3-8cde-fbba45a4a11c,5cd997ba-f123-47b3-8cde-fbba45a4a11c,0,1,0d746247-c4f4-47a5-a373-45ec4023d3ef,0d746247-c4f4-47a5-a373-45ec4023d3ef,0,1,a25bcf4e-1a47-472b-9f93-f6ab45abf461,a25bcf4e-1a47-472b-9f93-f6ab45abf461,0,1,958b7dab-0aba-423f-ab81-b70f2b93a027,958b7dab-0aba-423f-ab81-b70f2b93a027,0,1,a17ec3be-2255-42af-a6ee-d3fb8bb00519,a17ec3be-2255-42af-a6ee-d3fb8bb00519,0,1,add0b22d-ff5a-41f7-88a1-ef34880e50c9,add0b22d-ff5a-41f7-88a1-ef34880e50c9,0,1,7dc10935-69aa-4f2b-8b01-798dbbaa6cc6,7dc10935-69aa-4f2b-8b01-798dbbaa6cc6,0,1,d5fdac2a-e3aa-4859-8485-0cf114748c87,d5fdac2a-e3aa-4859-8485-0cf114748c87,0,1,eb3d278b-e8fe-4d43-90a8-dd361009196f,eb3d278b-e8fe-4d43-90a8-dd361009196f,0,1,d30fbeae-e97f-422d-b5c4-289aaeaa2ae4,d30fbeae-e97f-422d-b5c4-289aaeaa2ae4,0,1,a3582d0c-6a63-442e-8422-83f251df0ed9,a3582d0c-6a63-442e-8422-83f251df0ed9,0,1,9aae5d2a-81b7-4f1c-8b65-b3e4a8a9bc4d,9aae5d2a-81b7-4f1c-8b65-b3e4a8a9bc4d,0,1,4b714d9c-26f4-46e8-ac79-471522b3853b,4b714d9c-26f4-46e8-ac79-471522b3853b,0,1,411489de-f907-4d60-a776-64bb0aa12a0e,411489de-f907-4d60-a776-64bb0aa12a0e,0,1,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,0,1,9c47670e-9eb9-49ec-876c-cd545aaa093c,9c47670e-9eb9-49ec-876c-cd545aaa093c,0,1,f57e74e6-75e8-4136-911e-86793036a077,f57e74e6-75e8-4136-911e-86793036a077,0,1,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,0,1,3ba8c378-ef3d-4646-90b3-6d8078aa623e,3ba8c378-ef3d-4646-90b3-6d8078aa623e,0,1,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,0,1,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,0,1,2dd7eb87-8130-425a-be13-85235508cde6,2dd7eb87-8130-425a-be13-85235508cde6,0,1,8a62c997-4fda-4464-90bd-ab719161949f,8a62c997-4fda-4464-90bd-ab719161949f,0,1,28af52dd-3144-428b-956d-b6f27863ec4a,28af52dd-3144-428b-956d-b6f27863ec4a,0,1,c34c330a-991a-4ec9-a0ad-73c04c6a6fc3,c34c330a-991a-4ec9-a0ad-73c04c6a6fc3,0,1,8ac94328-2300-4681-9c35-fd7e2f830310,8ac94328-2300-4681-9c35-fd7e2f830310,0,1,da0ee165-1917-466b-ac5c-16c28e2318bb,da0ee165-1917-466b-ac5c-16c28e2318bb,0,1,4868cb2e-0892-42bc-9de1-73cb8a15a96f,4868cb2e-0892-42bc-9de1-73cb8a15a96f,0,1,e8b80879-33b3-4c45-ad68-1acabcf91faf,e8b80879-33b3-4c45-ad68-1acabcf91faf,0,1,239601eb-e8de-4d58-a32a-01ee52f6e698,239601eb-e8de-4d58-a32a-01ee52f6e698,0,1,11370667-bec5-4a2d-8aa1-97f4d795718f,11370667-bec5-4a2d-8aa1-97f4d795718f,0,1,2032162d-fbb5-4e6a-be72-cda79869b9ff,2032162d-fbb5-4e6a-be72-cda79869b9ff,0,1,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,0,1,10543f9a-4e3f-427a-b36a-9c66709dd6fb,10543f9a-4e3f-427a-b36a-9c66709dd6fb,0,1,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,0,1,96ab5424-7be1-416d-b74d-d0c815726b1f,96ab5424-7be1-416d-b74d-d0c815726b1f,0,1,3714e794-ddef-4ad9-a933-6130bbc84545,3714e794-ddef-4ad9-a933-6130bbc84545,0,1,282b089c-7411-40d6-9a0a-ceaf6abb5586,282b089c-7411-40d6-9a0a-ceaf6abb5586,0,1,678188aa-76e7-49bc-a4be-1c55ccd625b1,678188aa-76e7-49bc-a4be-1c55ccd625b1,0,1,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,0,1,b3415b4a-d8de-4536-aa4b-82e75fd986ee,b3415b4a-d8de-4536-aa4b-82e75fd986ee,0,1,acc996ab-672a-4602-b7ad-8eee83557e61,acc996ab-672a-4602-b7ad-8eee83557e61,0,1,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,0,1,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,0,1,97745768-ed35-44f1-beba-abb8b28a29ae,97745768-ed35-44f1-beba-abb8b28a29ae,0,1,69364942-bcd1-4b06-9b57-fa59b4e7c552,69364942-bcd1-4b06-9b57-fa59b4e7c552,0,1,ab201c5f-4134-42cf-a528-c1c4df02f2d7,ab201c5f-4134-42cf-a528-c1c4df02f2d7,0,1,303fb7b5-6a23-40ea-ae12-b54f4ebae026,303fb7b5-6a23-40ea-ae12-b54f4ebae026,0,1,634cd26b-78f1-4446-8aad-b96ed16e5329,634cd26b-78f1-4446-8aad-b96ed16e5329,0,1,d8e62f1a-92ca-4971-9609-e79da798c083,d8e62f1a-92ca-4971-9609-e79da798c083,0,1,61892a62-9381-401d-af31-9073ef2509fb,61892a62-9381-401d-af31-9073ef2509fb,0,1,6b0ddefa-ee70-4b27-989f-e23c734ab943,6b0ddefa-ee70-4b27-989f-e23c734ab943,0,1,ee873280-28ea-41fb-af52-c10c2018cbe4,ee873280-28ea-41fb-af52-c10c2018cbe4,0,1,a388ed70-a68d-4713-a280-881315351f07,a388ed70-a68d-4713-a280-881315351f07,0,1,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,0,1,2c81edc8-02b9-42dd-be4d-e7ad595421a0,2c81edc8-02b9-42dd-be4d-e7ad595421a0,0,1,83cb38ff-1174-449f-b8ce-44d5e064f2df,83cb38ff-1174-449f-b8ce-44d5e064f2df,0,1,d11b51ac-708a-4ee1-b73e-ae62e162101e,d11b51ac-708a-4ee1-b73e-ae62e162101e,0,1,17a50950-6091-4306-9f15-2a621a29c1a0,17a50950-6091-4306-9f15-2a621a29c1a0,0,1,32012b27-1b43-49be-b9af-df0c877e7a4c,32012b27-1b43-49be-b9af-df0c877e7a4c,0,1,e97d5152-9e58-4a91-a691-b4d358f1c89d,e97d5152-9e58-4a91-a691-b4d358f1c89d,0,1,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,0,1,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,0,1,296c478b-4103-46cb-9d14-97f59034ffd4,296c478b-4103-46cb-9d14-97f59034ffd4,0,1,fb918a68-f86d-46c0-9078-61d2b32b5aef,fb918a68-f86d-46c0-9078-61d2b32b5aef,0,1,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,0,1,1ddfc773-4f3c-4764-978e-585aab4666de,1ddfc773-4f3c-4764-978e-585aab4666de,0,1,e424d122-1dbb-4545-975c-177997129f2e,e424d122-1dbb-4545-975c-177997129f2e,0,1,c83bc626-dfdd-4451-92b0-b53eed40f534,c83bc626-dfdd-4451-92b0-b53eed40f534,0,1,7b9b1d11-4f78-4113-8fca-1a3a30953aef,7b9b1d11-4f78-4113-8fca-1a3a30953aef,0,1,7f84cb85-c3e4-4b53-b829-3b1e216f978a,7f84cb85-c3e4-4b53-b829-3b1e216f978a,0,1,7e621ecc-7d2b-42bf-a502-f8e59de56b63,7e621ecc-7d2b-42bf-a502-f8e59de56b63,0,1,798fd445-d02e-4e97-890a-0283f33317cf,798fd445-d02e-4e97-890a-0283f33317cf,0,1,095583ca-010d-43ad-8c7a-8938fa4cb761,095583ca-010d-43ad-8c7a-8938fa4cb761,0,1,178d210c-e847-4805-a8d4-31acdf4983af,178d210c-e847-4805-a8d4-31acdf4983af,0,1,aa214d9f-23b1-4996-8a43-9010dceeb53d,aa214d9f-23b1-4996-8a43-9010dceeb53d,0,1,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,0,1,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,0,1,d9d103bd-1dd6-48a9-8869-6c8485705393,d9d103bd-1dd6-48a9-8869-6c8485705393,0,1,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,0,1,ff0e8487-bdbf-4b21-877e-00008c81bc09,ff0e8487-bdbf-4b21-877e-00008c81bc09,0,1,39c9f8ac-56a0-4057-8359-7228bf97184a,39c9f8ac-56a0-4057-8359-7228bf97184a,0,1,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,0,1,2c0dd892-1d3e-4497-850b-080bdb9c59d8,2c0dd892-1d3e-4497-850b-080bdb9c59d8,0,1,3b727d49-c9ed-4d9e-af61-c13b9a170c75,3b727d49-c9ed-4d9e-af61-c13b9a170c75,0,1,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1b264744-bdcd-4c5c-932b-0ac4b990dd78,0,1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,0,1,37bde288-8e02-4127-bd80-de8ae7590a14,37bde288-8e02-4127-bd80-de8ae7590a14,0,1,a9b8e517-78cd-4428-b2fc-9e16af0069d7,a9b8e517-78cd-4428-b2fc-9e16af0069d7,0,1,5c592024-c009-4674-bbb8-283669e673ef,5c592024-c009-4674-bbb8-283669e673ef,0,1,e76f16b9-77a0-4033-90d0-6e04e4494747,e76f16b9-77a0-4033-90d0-6e04e4494747,0,1,cfb221fc-8639-4e15-9a78-f7837d657a99,cfb221fc-8639-4e15-9a78-f7837d657a99,0,1,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,0,1,022147c1-1ebe-4c8d-b367-4c47115b101d,022147c1-1ebe-4c8d-b367-4c47115b101d,0,1,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,0,1,fca6b230-a38e-4791-9cc5-3d215f79dc6f,fca6b230-a38e-4791-9cc5-3d215f79dc6f,0,1,04e87de4-940a-4533-8c81-8f145b201dc0,04e87de4-940a-4533-8c81-8f145b201dc0,0,1,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,0,1,fa488af9-a5ec-47d8-8661-fa5058a60a6b,fa488af9-a5ec-47d8-8661-fa5058a60a6b,0,1,97cc84c6-3565-474c-a028-83acb5390446,97cc84c6-3565-474c-a028-83acb5390446,0,1,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,0,1,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,0,1,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,0,1,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,0,1,b366d7eb-626c-4c0c-b4cc-c392763e6e94,b366d7eb-626c-4c0c-b4cc-c392763e6e94,0,1,4c7e24aa-726a-4595-82ad-ef1e525b14fa,4c7e24aa-726a-4595-82ad-ef1e525b14fa,0,1,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,0,1,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,0,1,e849e46c-2ce6-427b-92bc-06d7997f59bf,e849e46c-2ce6-427b-92bc-06d7997f59bf,0,1,5a971dc0-28bf-4426-9426-9f456aea080a,5a971dc0-28bf-4426-9426-9f456aea080a,0,1,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1e7684f0-1b3b-4a32-8602-dd0672c5a800,0,1,ab178a93-8570-43b6-ae42-f34a7cc4f359,ab178a93-8570-43b6-ae42-f34a7cc4f359,0,1,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,0,1,168e3189-2676-4cdb-bc9d-78d85df51faf,168e3189-2676-4cdb-bc9d-78d85df51faf,0,1,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,0,1,470bbff8-20d0-475c-a61a-1a09ac14c2db,470bbff8-20d0-475c-a61a-1a09ac14c2db,0,1,6ea25680-c4db-4717-9498-62420ca16970,6ea25680-c4db-4717-9498-62420ca16970,0,1,14e20d48-635e-4c52-9099-e743323fc190,14e20d48-635e-4c52-9099-e743323fc190,0,1,c37a660e-16c5-495e-9486-e61bcb693fa0,c37a660e-16c5-495e-9486-e61bcb693fa0,0,1,8f44ebad-1160-474e-a566-fb9da55ffcba,8f44ebad-1160-474e-a566-fb9da55ffcba,0,1,11cf336e-7890-4972-bf71-32d7416ff647,11cf336e-7890-4972-bf71-32d7416ff647,0,1,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,0,1,14bd3392-36cd-4ed0-8847-44375d6fb861,14bd3392-36cd-4ed0-8847-44375d6fb861,0,1,759ede7a-e832-44e6-9b11-5bfb3c507820,759ede7a-e832-44e6-9b11-5bfb3c507820,0,1,64484611-b32c-4155-a063-7df5a3f924dd,64484611-b32c-4155-a063-7df5a3f924dd,0,1,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,0,1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,0,1,56900066-90e3-40c0-b64a-8f7964a4dfc1,56900066-90e3-40c0-b64a-8f7964a4dfc1,0,1,56f0c4d6-9b13-486a-9586-05e657dca8be,56f0c4d6-9b13-486a-9586-05e657dca8be,0,1,c795c0d3-6a0d-4311-9821-df320663727e,c795c0d3-6a0d-4311-9821-df320663727e,0,1,512b8d89-8798-4549-9e79-b9c3f7d9098f,512b8d89-8798-4549-9e79-b9c3f7d9098f,0,1,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,0,1,7f356abf-9045-4a76-89f3-8b52d467122a,7f356abf-9045-4a76-89f3-8b52d467122a,0,1,625a61ac-4ad0-4b31-aa67-9f864154b9c4,625a61ac-4ad0-4b31-aa67-9f864154b9c4,0,1,51fa8d01-44a1-4e75-9b04-6a2504972f08,51fa8d01-44a1-4e75-9b04-6a2504972f08,0,1,73dae482-a1ee-4c57-8859-2dd8e8635a49,73dae482-a1ee-4c57-8859-2dd8e8635a49,0,1,e4ea640f-e3a4-44ad-b17d-51f32136372e,e4ea640f-e3a4-44ad-b17d-51f32136372e,0,1,7dca913d-e37a-4740-8e3d-677d379605ee,7dca913d-e37a-4740-8e3d-677d379605ee,0,1,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,0,1,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,0,1,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,0,1,4cd4694f-17f8-43ba-8940-07628bd937fe,4cd4694f-17f8-43ba-8940-07628bd937fe,0,1,7df6c94b-3cfe-4764-988e-858d733e35d9,7df6c94b-3cfe-4764-988e-858d733e35d9,0,1,8b251c7d-2d55-4734-a1da-7f1115d95080,8b251c7d-2d55-4734-a1da-7f1115d95080,0,1,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,0,1,5a8c3621-595a-4168-8bba-a7f8d499e47e,5a8c3621-595a-4168-8bba-a7f8d499e47e,0,1,fc4cfed6-e492-4420-b357-8143a8c2a41a,fc4cfed6-e492-4420-b357-8143a8c2a41a,0,1,4311a250-64af-443e-a711-93b7c41175cf,4311a250-64af-443e-a711-93b7c41175cf,0,1,804b6c57-1d7b-4927-be5b-84b7959fe55e,804b6c57-1d7b-4927-be5b-84b7959fe55e,0,1,f2655d85-79ea-4736-8f41-94a4f9b2b998,f2655d85-79ea-4736-8f41-94a4f9b2b998,0,1,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,0,1,a8eb5ed9-df99-405b-afad-eeaa98956eee,a8eb5ed9-df99-405b-afad-eeaa98956eee,0,1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,0,1,26a1279f-91f0-4632-ad7c-21cf2f524208,26a1279f-91f0-4632-ad7c-21cf2f524208,0,1,bf751ed0-ee47-4eaf-81bd-f0da00bef343,bf751ed0-ee47-4eaf-81bd-f0da00bef343,0,1,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,0,1,1f1def7c-e0ee-4963-afea-1751bf1b812c,1f1def7c-e0ee-4963-afea-1751bf1b812c,0,1,9a4c0898-ab56-425c-8191-5ab90f4e12bf,9a4c0898-ab56-425c-8191-5ab90f4e12bf,0,1,6841ec47-7a84-441a-b975-69d089072ce7,6841ec47-7a84-441a-b975-69d089072ce7,0,1,ead4001a-0d8a-4b95-8212-2a40e5aa6659,ead4001a-0d8a-4b95-8212-2a40e5aa6659,0,1,22165c8a-2179-4cd5-b195-bd2721e9e232,22165c8a-2179-4cd5-b195-bd2721e9e232,0,1,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,0,1,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,0,1,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,0,1,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,0,1,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,0,1,9d9debfd-4a10-4f09-9d09-2aa5e058b525,9d9debfd-4a10-4f09-9d09-2aa5e058b525,0,1,fc19586c-d89c-495c-b473-6f85967ed48e,fc19586c-d89c-495c-b473-6f85967ed48e,0,1,2ac7c701-a281-4e77-a5f8-294526021e2d,2ac7c701-a281-4e77-a5f8-294526021e2d,0,1,979df549-889d-496a-b6ce-c56d54c771b5,979df549-889d-496a-b6ce-c56d54c771b5,0,1,91b320d8-3426-44d3-97d7-c200287d7343,91b320d8-3426-44d3-97d7-c200287d7343,0,1,b9297f72-b40a-4adb-9975-bb693d4834a4,b9297f72-b40a-4adb-9975-bb693d4834a4,0,1,41cf3916-216f-4c4e-a587-82777f4263e0,41cf3916-216f-4c4e-a587-82777f4263e0,0,1,2ce3a350-86f1-4275-8299-3c3693ca11fa,2ce3a350-86f1-4275-8299-3c3693ca11fa,0,1,59f0ed15-c84c-4f41-bdd4-26317e4e914d,59f0ed15-c84c-4f41-bdd4-26317e4e914d,0,1,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,0,1,8fef790c-a3f4-460c-9093-5065cbdba196,8fef790c-a3f4-460c-9093-5065cbdba196,0,1,79bd24d0-61a9-4558-90ac-4e726066789c,79bd24d0-61a9-4558-90ac-4e726066789c,0,1,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,0,1,ef356548-51a4-4b09-b37d-ede5b8f3edb6,ef356548-51a4-4b09-b37d-ede5b8f3edb6,0,1,53c0d900-5e96-4381-a1ed-4424a5799608,53c0d900-5e96-4381-a1ed-4424a5799608,0,1,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,0,1,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,0,1,45ca9e20-1246-4400-a019-ffb521af6ea7,45ca9e20-1246-4400-a019-ffb521af6ea7,0,1,73eed854-5c3a-4a10-9bfa-793fd517f303,73eed854-5c3a-4a10-9bfa-793fd517f303,0,1,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,0,1,9134dc40-a8f1-4c60-9431-27cb98be5ecd,9134dc40-a8f1-4c60-9431-27cb98be5ecd,0,1,16c4622a-33af-4a95-b44e-0861a6df21d2,16c4622a-33af-4a95-b44e-0861a6df21d2,0,1,d8cac67b-cce2-4a00-a8df-c6570c50153f,d8cac67b-cce2-4a00-a8df-c6570c50153f,0,1,37213c65-bf26-4e50-a2fa-58eb45439b58,37213c65-bf26-4e50-a2fa-58eb45439b58,0,1,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,0,1,b6b31892-73ee-4c9b-92b0-2735536c4938,b6b31892-73ee-4c9b-92b0-2735536c4938,0,1,deb8b883-142e-47d0-a722-7c734a0cf9b3,deb8b883-142e-47d0-a722-7c734a0cf9b3,0,1,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,0,1,29233058-ccb1-4110-a9bc-cdb4c531f35a,29233058-ccb1-4110-a9bc-cdb4c531f35a,0,1,cf3729b2-9ee6-437c-81df-83966793be50,cf3729b2-9ee6-437c-81df-83966793be50,0,1,429d08b7-0b98-4f9b-a053-d04dd84a7026,429d08b7-0b98-4f9b-a053-d04dd84a7026,0,1,b64fd964-cee8-4619-872f-82d2fdc14240,b64fd964-cee8-4619-872f-82d2fdc14240,0,1,5ce7846d-9806-40f5-8631-4e14deb8bc95,5ce7846d-9806-40f5-8631-4e14deb8bc95,0,1,79528a0e-1e48-4d14-bd28-756fd5db57b9,79528a0e-1e48-4d14-bd28-756fd5db57b9,0,1,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,0,1,d9426219-4b37-4776-8d5d-acab5825e789,d9426219-4b37-4776-8d5d-acab5825e789,0,1,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,0,1,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,0,1,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,0,1,29e7299a-ce80-497a-8102-615d0a001ea8,29e7299a-ce80-497a-8102-615d0a001ea8,0,1,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,0,1,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,0,1,adc2cc11-b647-453f-a98e-8a73b7c368c7,adc2cc11-b647-453f-a98e-8a73b7c368c7,0,1,4522c564-61da-40da-a749-5312121a331d,4522c564-61da-40da-a749-5312121a331d,0,1,9394c709-6cbe-4ef6-bc8c-cba8af65821e,9394c709-6cbe-4ef6-bc8c-cba8af65821e,0,1,2943b572-7411-4f92-a6cc-7ee552b85223,2943b572-7411-4f92-a6cc-7ee552b85223,0,1,28478e7a-e8aa-40aa-866c-a3624f903141,28478e7a-e8aa-40aa-866c-a3624f903141,0,1,f692ab21-a8de-4feb-914f-4beef350543a,f692ab21-a8de-4feb-914f-4beef350543a,0,1,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0,1,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,0,1,dabb3395-6100-4f53-913d-e0230e81b494,dabb3395-6100-4f53-913d-e0230e81b494,0,1,e0a3fae1-1582-4c7a-acd8-870b558acec4,e0a3fae1-1582-4c7a-acd8-870b558acec4,0,1,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,0,1,02e1c293-7302-4751-a248-4bbeed9cbad5,02e1c293-7302-4751-a248-4bbeed9cbad5,0,1,c946cde8-c0d7-4acb-a3be-8858e392fc40,c946cde8-c0d7-4acb-a3be-8858e392fc40,0,1,3a111e0d-6466-46fd-95a2-1798b6e51ba0,3a111e0d-6466-46fd-95a2-1798b6e51ba0,0,1,645edcb0-e358-4d32-a9a9-9534af0398ca,645edcb0-e358-4d32-a9a9-9534af0398ca,0,1,efa1b4e5-d16c-4921-a48a-fe700e39dc71,efa1b4e5-d16c-4921-a48a-fe700e39dc71,0,1,e93402db-e7dd-465e-8c62-2a41efd811b8,e93402db-e7dd-465e-8c62-2a41efd811b8,0,1,e0157f72-a362-4b9f-a272-68ca8078b91c,e0157f72-a362-4b9f-a272-68ca8078b91c,0,1,422155c7-1640-48c4-bb21-36595b405c66,422155c7-1640-48c4-bb21-36595b405c66,0,1,16d37b5a-88db-4787-b2de-fb50da0ca94b,16d37b5a-88db-4787-b2de-fb50da0ca94b,0,1,f653bcbf-5659-4605-9bb9-3737f19e79dd,f653bcbf-5659-4605-9bb9-3737f19e79dd,0,1,8b980868-fe63-49ff-ba3d-4c29732e1b90,8b980868-fe63-49ff-ba3d-4c29732e1b90,0,1,54668731-4963-4ec3-b188-9feacaefa182,54668731-4963-4ec3-b188-9feacaefa182,0,1,3702135e-5380-4ca6-82f5-63eff1b043e9,3702135e-5380-4ca6-82f5-63eff1b043e9,0,1,29b2104b-fd02-4d51-951f-51ea213b8ebd,29b2104b-fd02-4d51-951f-51ea213b8ebd,0,1,ba5c945e-554f-45a2-a2de-3157b2d7e931,ba5c945e-554f-45a2-a2de-3157b2d7e931,0,1,f7085f33-f122-4443-a3f5-4e765300175e,f7085f33-f122-4443-a3f5-4e765300175e,0,1,b7e4c512-b856-4679-a025-5f0f28918593,b7e4c512-b856-4679-a025-5f0f28918593,0,1,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,0,1,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,0,1,a9362ac4-85ee-4214-80c1-048fab769885,a9362ac4-85ee-4214-80c1-048fab769885,0,1,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,0,1,20f1114a-0b98-464f-aed8-80ce706b808e,20f1114a-0b98-464f-aed8-80ce706b808e,0,1,988b05ae-987a-4433-b446-bcc7bf5d9ea4,988b05ae-987a-4433-b446-bcc7bf5d9ea4,0,1,07e3de4e-28d9-48dc-9253-a2c39c34f827,07e3de4e-28d9-48dc-9253-a2c39c34f827,0,1,241db5c5-e3bc-4db8-bc88-39db84bb60e9,241db5c5-e3bc-4db8-bc88-39db84bb60e9,0,1,c147916d-1fb6-473d-bde0-8dd528dde8eb,c147916d-1fb6-473d-bde0-8dd528dde8eb,0,1,00359e00-aba0-4afb-8b58-2e1247dbe04f,00359e00-aba0-4afb-8b58-2e1247dbe04f,0,1,fc959221-6313-45d9-b2c4-85befaede226,fc959221-6313-45d9-b2c4-85befaede226,0,1,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,0,1,5206d407-ac91-477e-80e7-97c312da934c,5206d407-ac91-477e-80e7-97c312da934c,0,1,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,0,1,ccb8a530-260a-4488-b1d9-c67325c69bf4,ccb8a530-260a-4488-b1d9-c67325c69bf4,0,1,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0,1,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,0,1,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,0,1,81dd61e5-fe02-4272-a525-affda9b606ca,81dd61e5-fe02-4272-a525-affda9b606ca,0,1,8de7b423-b7d1-46fe-b1dc-fb936736b864,8de7b423-b7d1-46fe-b1dc-fb936736b864,0,1,f565876c-0326-4b12-895e-c248b9e64115,f565876c-0326-4b12-895e-c248b9e64115,0,1,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,0,1,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0,1,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,0,1,80c23bf0-cef0-4d07-a017-d90635f8041d,80c23bf0-cef0-4d07-a017-d90635f8041d,0,1,47a24216-3299-470b-a18c-d8c1258fff24,47a24216-3299-470b-a18c-d8c1258fff24,0,1,72dcfd46-491e-4f88-a0ea-57919f8fbdea,72dcfd46-491e-4f88-a0ea-57919f8fbdea,0,1,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,0,1,f9161bc3-9a1c-4870-8681-8e97d8ce838a,f9161bc3-9a1c-4870-8681-8e97d8ce838a,0,1,a75ed1c8-20c2-49a8-a730-22237ef91366,a75ed1c8-20c2-49a8-a730-22237ef91366,0,1,1c0ebdfd-1913-48fe-b80a-10c30201129b,1c0ebdfd-1913-48fe-b80a-10c30201129b,0,1,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,0,1,14025e38-09af-43b2-a49b-403e398a28ea,14025e38-09af-43b2-a49b-403e398a28ea,0,1,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,0,1,c3b3805b-3501-47a7-b280-46180049b235,c3b3805b-3501-47a7-b280-46180049b235,0,1,29af05c2-37de-495b-b3cf-477d452abe5e,29af05c2-37de-495b-b3cf-477d452abe5e,0,1,0c732569-a50f-4be3-a214-0843c6a3da47,0c732569-a50f-4be3-a214-0843c6a3da47,0,1,5e922083-0ceb-449a-8201-7dd27a46f2fc,5e922083-0ceb-449a-8201-7dd27a46f2fc,0,1,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,0,1,e757303e-c61a-4e42-9829-c5a36dba9414,e757303e-c61a-4e42-9829-c5a36dba9414,0,1,091de87c-0801-4bd3-aaaa-ed37bc4cd161,091de87c-0801-4bd3-aaaa-ed37bc4cd161,0,1,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,0,1,b53c545c-3b1c-4315-a213-4f2b2c7128aa,b53c545c-3b1c-4315-a213-4f2b2c7128aa,0,1,02a84df9-2171-43e6-8135-a74edd384826,02a84df9-2171-43e6-8135-a74edd384826,0,1,ff36356d-cb1d-4316-896a-c6ae83b92437,ff36356d-cb1d-4316-896a-c6ae83b92437,0,1,465cce6a-7064-4b0a-932c-40f842042f33,465cce6a-7064-4b0a-932c-40f842042f33,0,1,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,0,1,8f17ec3f-6d62-46b8-baef-b20430e948ce,8f17ec3f-6d62-46b8-baef-b20430e948ce,0,1,ea1298d0-9396-4a50-b83e-24064e8dd99d,ea1298d0-9396-4a50-b83e-24064e8dd99d,0,1,038dbb00-e4c6-4e64-b861-3a0764f54ab3,038dbb00-e4c6-4e64-b861-3a0764f54ab3,0,1,1c291f7d-a493-4297-8aaa-912896800066,1c291f7d-a493-4297-8aaa-912896800066,0,1,69149801-a825-4ed2-b077-c26660dff271,69149801-a825-4ed2-b077-c26660dff271,0,1,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,0,1,518ab687-b84a-40c8-8547-aee4257c1b71,518ab687-b84a-40c8-8547-aee4257c1b71,0,1,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,0,1,7732ef07-16eb-46a0-9645-7de95c5482af,7732ef07-16eb-46a0-9645-7de95c5482af,0,1,75dac536-b316-4b04-a57b-03656c678bec,75dac536-b316-4b04-a57b-03656c678bec,0,1,a07d6c85-159d-4d09-b117-561a1e20329f,a07d6c85-159d-4d09-b117-561a1e20329f,0,1,8a2f9733-4f83-41f2-9d74-dca7161a4b41,8a2f9733-4f83-41f2-9d74-dca7161a4b41,0,1,fbd2d900-1e0d-48f3-9793-0186ee49915c,fbd2d900-1e0d-48f3-9793-0186ee49915c,0,1,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,0,1,3a36e0f5-a645-47f1-99ae-5b0493d604ad,3a36e0f5-a645-47f1-99ae-5b0493d604ad,0,1,57f762f7-b8e4-498b-a3dc-3d40c94855ec,57f762f7-b8e4-498b-a3dc-3d40c94855ec,0,1,ca7d4086-de35-40fd-af65-73369d452135,ca7d4086-de35-40fd-af65-73369d452135,0,1,563c0f5c-e0b4-4229-a3f6-183091060aa4,563c0f5c-e0b4-4229-a3f6-183091060aa4,0,1,bf967588-ea8f-49a3-9331-af2331ffa162,bf967588-ea8f-49a3-9331-af2331ffa162,0,1,5083530c-9a24-4def-99c1-6eb9514e9b33,5083530c-9a24-4def-99c1-6eb9514e9b33,0,1,d59c2725-5d98-495e-9f86-f5d38dbfad90,d59c2725-5d98-495e-9f86-f5d38dbfad90,0,1,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,0,1,0ba68198-983d-409b-be27-96f1572b3f12,0ba68198-983d-409b-be27-96f1572b3f12,0,1,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,0,1,decb27a8-7dd3-4601-a694-30429e638b39,decb27a8-7dd3-4601-a694-30429e638b39,0,1,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,0,1,d7a128e4-f31f-4b09-8424-e816ab59d5c3,d7a128e4-f31f-4b09-8424-e816ab59d5c3,0,1,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0,1,aa9513b4-f575-4030-a7f9-ac09aa319e98,aa9513b4-f575-4030-a7f9-ac09aa319e98,0,1,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,0,1,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,0,1,d03f66b1-48a3-434b-bb58-9fd53c183514,d03f66b1-48a3-434b-bb58-9fd53c183514,0,1,a469e55e-d7ca-4c27-b350-fafe7364c18f,a469e55e-d7ca-4c27-b350-fafe7364c18f,0,1,3ad5d8a7-3071-46aa-aebf-306bdb67983b,3ad5d8a7-3071-46aa-aebf-306bdb67983b,0,1,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,0,1,cb954476-c551-4a06-9bcd-18d67ba47dc8,cb954476-c551-4a06-9bcd-18d67ba47dc8,0,1,79201015-bfae-463e-81f1-0ae2d3066f3f,79201015-bfae-463e-81f1-0ae2d3066f3f,0,1,1ea3178b-73dd-4063-9140-c61687a4b1b8,1ea3178b-73dd-4063-9140-c61687a4b1b8,0,1,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,0,1,696723be-7b4f-4321-956e-eff07ea9f5fa,696723be-7b4f-4321-956e-eff07ea9f5fa,0,1,616c27dc-5c59-4469-97a7-27e0752bd3a7,616c27dc-5c59-4469-97a7-27e0752bd3a7,0,1,f7323121-74bc-441c-a3e9-dd5cb4f0accd,f7323121-74bc-441c-a3e9-dd5cb4f0accd,0,1,bb264e83-49f4-4b7a-8be2-094712fc0640,bb264e83-49f4-4b7a-8be2-094712fc0640,0,1,07bf650d-e61e-44f3-9643-6ffc95b913fb,07bf650d-e61e-44f3-9643-6ffc95b913fb,0,1,6b90ed05-813c-4324-8a69-02c2268856b2,6b90ed05-813c-4324-8a69-02c2268856b2,0,1,081ed48d-cb87-459d-97d6-9af121edbabb,081ed48d-cb87-459d-97d6-9af121edbabb,0,1,6c4074b2-f631-451d-b412-1c8c096a71b1,6c4074b2-f631-451d-b412-1c8c096a71b1,0,1,f9931a20-8391-4b13-8c6d-1836f2492e53,f9931a20-8391-4b13-8c6d-1836f2492e53,0,1,c6eec20b-13b9-44a0-968f-1325680c399b,c6eec20b-13b9-44a0-968f-1325680c399b,0,1,02fbf083-1bdd-4900-9dc1-62f415b792a4,02fbf083-1bdd-4900-9dc1-62f415b792a4,0,1,35454c2d-7088-487b-abb3-f95f2dfdcffa,35454c2d-7088-487b-abb3-f95f2dfdcffa,0,1,66b010d9-5294-4dd8-b69f-709e1410c105,66b010d9-5294-4dd8-b69f-709e1410c105,0,1,f922bcdb-bf1a-4381-a26a-15669deb15a2,f922bcdb-bf1a-4381-a26a-15669deb15a2,0,1,f641e65b-0580-4791-a642-95bdc8eb7c1a,f641e65b-0580-4791-a642-95bdc8eb7c1a,0,1,a480b235-eb2c-4f28-8c9d-a6d1455718d8,a480b235-eb2c-4f28-8c9d-a6d1455718d8,0,1,07d5d8d4-c684-4a39-93d3-46fe436e738e,07d5d8d4-c684-4a39-93d3-46fe436e738e,0,1,9e7dcb6e-7343-47aa-9757-d270aaa590b7,9e7dcb6e-7343-47aa-9757-d270aaa590b7,0,1,156c081f-4fbc-44e2-9f3b-df00393ee30f,156c081f-4fbc-44e2-9f3b-df00393ee30f,0,1,e00b724c-ab0f-4d37-9f02-05d22116b324,e00b724c-ab0f-4d37-9f02-05d22116b324,0,1,2fb5460d-c175-4650-9b00-a8af8ec47487,2fb5460d-c175-4650-9b00-a8af8ec47487,0,1,f5bc219e-dbc6-483e-9c33-ca84e556f459,f5bc219e-dbc6-483e-9c33-ca84e556f459,0,1,6bca52bc-8c91-43a9-9381-91b782972640,6bca52bc-8c91-43a9-9381-91b782972640,0,1,3eed74ae-d661-467f-a300-80cfa43b6056,3eed74ae-d661-467f-a300-80cfa43b6056,0,1,84aff2b4-233e-467e-bc00-0c4c745a5d5a,84aff2b4-233e-467e-bc00-0c4c745a5d5a,0,1,5238ef5b-f8cb-4387-b49f-6c46fa14e17f,5238ef5b-f8cb-4387-b49f-6c46fa14e17f,0,1,65dc6c73-94b1-408d-9c5b-82300a6ca1e4,65dc6c73-94b1-408d-9c5b-82300a6ca1e4,0,1,e5db7d04-bec6-4bee-b4d4-d1dadf8114f7,e5db7d04-bec6-4bee-b4d4-d1dadf8114f7,0,1,837c0e19-fe2b-4640-9506-ff36f9d77510,837c0e19-fe2b-4640-9506-ff36f9d77510,0,1,96fe619a-b819-4f96-9788-e1f4ef57833a,96fe619a-b819-4f96-9788-e1f4ef57833a,0,1,94dff2da-f721-411a-9fc0-5d013b685dcc,94dff2da-f721-411a-9fc0-5d013b685dcc,0,1,9343fc5f-7b08-4be5-8cd5-dbed635b819d,9343fc5f-7b08-4be5-8cd5-dbed635b819d,0,1,99e87e66-1b07-451b-a476-f5213cbd7150,99e87e66-1b07-451b-a476-f5213cbd7150,0,1,c3317f75-f6ad-41f6-97f1-77074c3ff62a,c3317f75-f6ad-41f6-97f1-77074c3ff62a,0,1,8800dec9-84f8-4643-8742-1d76fe575f58,8800dec9-84f8-4643-8742-1d76fe575f58,0,1,62903794-3b41-4d21-b800-1c26dbeda3ce,62903794-3b41-4d21-b800-1c26dbeda3ce,0,1,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,0,1,93de88de-0069-4aa8-96b2-d5709e4def2f,93de88de-0069-4aa8-96b2-d5709e4def2f,0,1,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,0,1,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,0,1,3a8d9010-8785-4d8d-b908-b821d7d681c9,3a8d9010-8785-4d8d-b908-b821d7d681c9,0,1,2568a935-ea49-4b99-aa9c-de27de6a0e81,2568a935-ea49-4b99-aa9c-de27de6a0e81,0,1,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,0,1,df459525-4e4d-4819-b996-5a6379b22a88,df459525-4e4d-4819-b996-5a6379b22a88,0,1,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,0,1,e67b4a32-4bac-450e-be6d-88c262383f31,e67b4a32-4bac-450e-be6d-88c262383f31,0,1,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,0,1,6c4c3eca-8b02-451b-af52-93073c3da146,6c4c3eca-8b02-451b-af52-93073c3da146,0,1,095c281c-3903-465d-baea-af1e6abf8019,095c281c-3903-465d-baea-af1e6abf8019,0,1,440d115d-a769-427e-891a-88d65fba2057,440d115d-a769-427e-891a-88d65fba2057,0,1,f7932210-027e-4fad-b7f7-3530789ce803,f7932210-027e-4fad-b7f7-3530789ce803,0,1,7bbfd95e-39a1-485b-930f-c9210c18dcd0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,0,1,4975d3d6-b5a2-41c6-973b-6817013a388d,4975d3d6-b5a2-41c6-973b-6817013a388d,0,1,18ebc799-9724-4ffb-855e-b09a0723869e,18ebc799-9724-4ffb-855e-b09a0723869e,0,1,a06b8ef5-83e6-4fc6-91e1-256004134d69,a06b8ef5-83e6-4fc6-91e1-256004134d69,0,1,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1d6a68ec-917f-4c3b-b970-797a6921cbc9,0,1,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,0,1,5b663988-3599-46dc-8d59-4c82ceac537c,5b663988-3599-46dc-8d59-4c82ceac537c,0,1,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0,1,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,0,1,679cc0df-df5c-4c33-8c64-c0b6cee39116,679cc0df-df5c-4c33-8c64-c0b6cee39116,0,1,b156752b-f25c-4f35-9474-8ac3636597f5,b156752b-f25c-4f35-9474-8ac3636597f5,0,1,17aadd5f-cda2-4785-a07f-3ab4b04434a6,17aadd5f-cda2-4785-a07f-3ab4b04434a6,0,1,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,0,1,1832336e-32f6-42c4-9087-8614ead52bb3,1832336e-32f6-42c4-9087-8614ead52bb3,0,1,ff9f7b5c-70f4-4eed-8216-64448e7da76f,ff9f7b5c-70f4-4eed-8216-64448e7da76f,0,1,44ac2869-990d-4cac-a14b-c1a28854341e,44ac2869-990d-4cac-a14b-c1a28854341e,0,1,d5df31c3-89f9-469c-80a9-fb4706d30bc4,d5df31c3-89f9-469c-80a9-fb4706d30bc4,0,1,e73a6a9d-8ddd-4531-9f17-745117d9da9b,e73a6a9d-8ddd-4531-9f17-745117d9da9b,0,1,9dd4e17c-d10b-435e-8665-08997edc3e7e,9dd4e17c-d10b-435e-8665-08997edc3e7e,0,1,cafd44e1-8509-4550-8329-ff8cab0c31ae,cafd44e1-8509-4550-8329-ff8cab0c31ae,0,1,ee6e5e56-5848-46b6-89bf-b9345a57d94c,ee6e5e56-5848-46b6-89bf-b9345a57d94c,0,1,8817c872-bdee-4577-bcc3-4046edc72803,8817c872-bdee-4577-bcc3-4046edc72803,0,1,5b88c214-4e4e-45c2-b8c5-14eb852e9900,5b88c214-4e4e-45c2-b8c5-14eb852e9900,0,1,105cd740-1f60-45e1-871c-adeecd291b0d,105cd740-1f60-45e1-871c-adeecd291b0d,0,1,95aec7d2-179b-4ea3-a3df-3d737b713564,95aec7d2-179b-4ea3-a3df-3d737b713564,0,1,4bd1cae4-d5b5-444e-9cf5-67a969714293,4bd1cae4-d5b5-444e-9cf5-67a969714293,0,1,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,0,1,f279a625-b88f-43b4-bce9-de1186fe7d7e,f279a625-b88f-43b4-bce9-de1186fe7d7e,0,1,99fc224a-2a61-441a-85e9-d69df6aa8b5e,99fc224a-2a61-441a-85e9-d69df6aa8b5e,0,1,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,0,1,d009782b-d73e-42d1-9979-2cbaf20ee98e,d009782b-d73e-42d1-9979-2cbaf20ee98e,0,1,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,0,1,88d8edf7-654f-4627-b68d-c7e929726da6,88d8edf7-654f-4627-b68d-c7e929726da6,0,1,1725c619-9c4a-40ac-9044-00fee71945a4,1725c619-9c4a-40ac-9044-00fee71945a4,0,1,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,0,1,e95b126d-797d-4071-b7b4-b14aaf595f2d,e95b126d-797d-4071-b7b4-b14aaf595f2d,0,1,9241ea3c-633f-4469-9e70-c5a20e464da8,9241ea3c-633f-4469-9e70-c5a20e464da8,0,1,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,0,1,961ae0fb-7f7b-414d-8fbf-32b893b41085,961ae0fb-7f7b-414d-8fbf-32b893b41085,0,1,10adf8c8-6f5f-477f-b244-4452b774b766,10adf8c8-6f5f-477f-b244-4452b774b766,0,1,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,0,1,04ec5e44-8469-4e9c-8021-83d258f2ec54,04ec5e44-8469-4e9c-8021-83d258f2ec54,0,1,cff36ede-0bd1-424b-8c75-b9695133f32e,cff36ede-0bd1-424b-8c75-b9695133f32e,0,1,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,0,1,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,0,1,58b33683-1916-4aef-9b98-5569ef7782ed,58b33683-1916-4aef-9b98-5569ef7782ed,0,1,d3e1f622-f438-4cad-94ae-0272f51610f7,d3e1f622-f438-4cad-94ae-0272f51610f7,0,1,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,0,1,8569cd73-d40d-4d92-83e0-8ece0c03a86a,8569cd73-d40d-4d92-83e0-8ece0c03a86a,0,1,9ebe2809-be6b-4c91-9443-b237fb7ad43c,9ebe2809-be6b-4c91-9443-b237fb7ad43c,0,1,bf29c091-de15-4cd4-be0e-a9785f97d444,bf29c091-de15-4cd4-be0e-a9785f97d444,0,1,6a675752-fd31-46a5-8a62-2a1ede437c68,6a675752-fd31-46a5-8a62-2a1ede437c68,0,1,8ff109f7-db33-4713-92bf-000f70d2014a,8ff109f7-db33-4713-92bf-000f70d2014a,0,1,97a65f49-845f-4eed-ae81-61266ed3e05b,97a65f49-845f-4eed-ae81-61266ed3e05b,0,1,060b2bb4-ca03-4da9-930f-7f91f6299a35,060b2bb4-ca03-4da9-930f-7f91f6299a35,0,1,394b1a1c-a7ae-41b7-a346-4bac99fa567d,394b1a1c-a7ae-41b7-a346-4bac99fa567d,0,1,9a5fa511-59e8-4a1b-a101-f276f0b7b261,9a5fa511-59e8-4a1b-a101-f276f0b7b261,0,1,ccfe4e36-80b6-419f-8bb3-c1046203d023,ccfe4e36-80b6-419f-8bb3-c1046203d023,0,1,94b2e060-53b7-4b40-af05-30bea3520330,94b2e060-53b7-4b40-af05-30bea3520330,0,1,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0,1,41b0dabd-85a3-4819-84dd-371eaf4f996e,41b0dabd-85a3-4819-84dd-371eaf4f996e,0,1,86a5ba4d-0681-4ddc-a505-0f537528e1a3,86a5ba4d-0681-4ddc-a505-0f537528e1a3,0,1,12d936f5-932b-4561-b934-c8444808a450,12d936f5-932b-4561-b934-c8444808a450,0,1,2ccb06ca-9bb7-4b74-9a96-c109bb117984,2ccb06ca-9bb7-4b74-9a96-c109bb117984,0,1,ac1a661d-db18-4576-80a9-a19d4140c05e,ac1a661d-db18-4576-80a9-a19d4140c05e,0,1,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,0,1,c3ffeb09-121b-4d77-9c15-def4648b4f3c,c3ffeb09-121b-4d77-9c15-def4648b4f3c,0,1,c2de0724-04c1-4adb-b62a-b7ba727dbe67,c2de0724-04c1-4adb-b62a-b7ba727dbe67,0,1,4ae26777-69ff-4a55-942b-0bad8ab7a70a,4ae26777-69ff-4a55-942b-0bad8ab7a70a,0,1,a0d8fb0a-0e90-4140-8687-e249b153dc66,a0d8fb0a-0e90-4140-8687-e249b153dc66,0,1,917c6f60-2a07-4587-9496-d393aff93953,917c6f60-2a07-4587-9496-d393aff93953,0,1,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,0,1,9fe72d73-4c95-47e0-bf92-dcb714d747c6,9fe72d73-4c95-47e0-bf92-dcb714d747c6,0,1,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,0,1,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,0,1,2b94076d-39ee-45ad-9ba5-435115cf5d4f,2b94076d-39ee-45ad-9ba5-435115cf5d4f,0,1,72ace16c-e90a-4d05-bc23-4351d4c87683,72ace16c-e90a-4d05-bc23-4351d4c87683,0,1,bd86e378-84bb-486a-be7b-319a3fe3b70b,bd86e378-84bb-486a-be7b-319a3fe3b70b,0,1,ef3bc279-6721-4949-8dc0-f96141f7f05c,ef3bc279-6721-4949-8dc0-f96141f7f05c,0,1,f81c7e21-48ad-4b64-975d-e62d34c7235a,f81c7e21-48ad-4b64-975d-e62d34c7235a,0,1,d0523c14-585e-45d3-9735-891235631004,d0523c14-585e-45d3-9735-891235631004,0,1,b6f8bc3e-f0cd-43ef-b060-d701cd446197,b6f8bc3e-f0cd-43ef-b060-d701cd446197,0,1,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,0,1,b94e805f-e1ab-4870-b855-98aa401864b2,b94e805f-e1ab-4870-b855-98aa401864b2,0,1,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,0,1,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,0,1,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,0,1,60aaa289-1f07-438c-8f10-81058ac671c3,60aaa289-1f07-438c-8f10-81058ac671c3,0,1,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,0,1,c44b0868-bd7f-4230-973b-544ff4dd2afe,c44b0868-bd7f-4230-973b-544ff4dd2afe,0,1,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,0,1,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,0,1,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,0,1,0153e60e-daca-48ac-b1c6-adecc89f579e,0153e60e-daca-48ac-b1c6-adecc89f579e,0,1,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,0,1,a896bc34-30a6-48b6-acfc-786c24c186bd,a896bc34-30a6-48b6-acfc-786c24c186bd,0,1,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,0,1,da8ae00a-7207-4ceb-b739-9114888c5b27,da8ae00a-7207-4ceb-b739-9114888c5b27,0,1,91af7a52-0825-4af5-94df-cc501e0123cd,91af7a52-0825-4af5-94df-cc501e0123cd,0,1,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,0,1,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,0,1,9693cc78-852e-445b-a7d2-f1689fa9eeec,9693cc78-852e-445b-a7d2-f1689fa9eeec,0,1,eb33e555-db41-462a-a45d-c7e0945cece8,eb33e555-db41-462a-a45d-c7e0945cece8,0,1,9cfd517c-1008-483a-9f65-7d15feb2cefc,9cfd517c-1008-483a-9f65-7d15feb2cefc,0,1,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,0,1,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,0,1,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,0,1,1d76f613-f4f6-4772-8c16-d97b3104a553,1d76f613-f4f6-4772-8c16-d97b3104a553,0,1,3e58d607-b906-449f-b044-9c130a487b86,3e58d607-b906-449f-b044-9c130a487b86,0,1,7a911212-7fde-4ea8-a1fa-229116b60895,7a911212-7fde-4ea8-a1fa-229116b60895,0,1,f4580043-5bc2-4295-8523-909302009b44,f4580043-5bc2-4295-8523-909302009b44,0,1,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,0,1,81936ac2-32fe-4e14-897b-0aba92b90c05,81936ac2-32fe-4e14-897b-0aba92b90c05,0,1,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,0,1,ac028c56-b2a8-4a9b-a325-554c636f838e,ac028c56-b2a8-4a9b-a325-554c636f838e,0,1,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0,1,f99e98ac-cd94-4989-8c02-ef8b323c6815,f99e98ac-cd94-4989-8c02-ef8b323c6815,0,1,e2562347-4549-4111-862e-86c20a6daade,e2562347-4549-4111-862e-86c20a6daade,0,1,b270fc64-15c6-41ed-ad09-44c833ca7c41,b270fc64-15c6-41ed-ad09-44c833ca7c41,0,1,4c3312fd-5613-4e9b-ae7c-572fa1887ded,4c3312fd-5613-4e9b-ae7c-572fa1887ded,0,1,6c8c9618-287a-41ab-890c-60250925ad52,6c8c9618-287a-41ab-890c-60250925ad52,0,1,168fce48-2413-45fc-ad21-9b465121d81b,168fce48-2413-45fc-ad21-9b465121d81b,0,1,55b9650e-098b-4d44-9fb5-d525b46f014b,55b9650e-098b-4d44-9fb5-d525b46f014b,0,1,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,0,1,bc55dc06-a769-40be-9c99-0794bdd2dbea,bc55dc06-a769-40be-9c99-0794bdd2dbea,0,1,7861e179-96d2-422f-a7c2-b38b59074956,7861e179-96d2-422f-a7c2-b38b59074956,0,1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0,1,3797b4c6-e336-4cbe-8d0b-0902e1247b42,3797b4c6-e336-4cbe-8d0b-0902e1247b42,0,1,67ebc493-d29a-4614-890a-feb8b5bd884b,67ebc493-d29a-4614-890a-feb8b5bd884b,0,1,d65c8992-aabc-4b67-9893-01862231ebe1,d65c8992-aabc-4b67-9893-01862231ebe1,0,1,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,0,1,dba6cb38-79c6-4060-87c5-a993548f36c4,dba6cb38-79c6-4060-87c5-a993548f36c4,0,1,6b44227a-e226-4bcb-8638-06b49f830669,6b44227a-e226-4bcb-8638-06b49f830669,0,1,f2406400-87e9-4df2-bcd3-8f1e3ad62088,f2406400-87e9-4df2-bcd3-8f1e3ad62088,0,1,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,0,1,a5623e87-3102-4521-b4ab-c41bf2403a1a,a5623e87-3102-4521-b4ab-c41bf2403a1a,0,1,599b1692-5f4e-42ef-ae1a-822ff527a415,599b1692-5f4e-42ef-ae1a-822ff527a415,0,1,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,0,1,23f70675-6a05-4b50-ad68-c55ddc93e857,23f70675-6a05-4b50-ad68-c55ddc93e857,0,1,4bb7372a-87a9-426e-b09f-fc0110455b10,4bb7372a-87a9-426e-b09f-fc0110455b10,0,1,ac853a0f-c185-4cdb-9f09-c921770937b5,ac853a0f-c185-4cdb-9f09-c921770937b5,0,1,920a7940-4d12-476d-a909-2231787839a9,920a7940-4d12-476d-a909-2231787839a9,0,1,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,0,1,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,0,1,32eb2a75-ff35-4795-bf0c-12b1328441ee,32eb2a75-ff35-4795-bf0c-12b1328441ee,0,1,8e877990-a64c-4c45-91f1-007d47618cc7,8e877990-a64c-4c45-91f1-007d47618cc7,0,1,73c6640e-2fe6-4132-9237-d6f28cbacc1c,73c6640e-2fe6-4132-9237-d6f28cbacc1c,0,1,46c3341c-352c-43fb-b338-15c8ad487fbf,46c3341c-352c-43fb-b338-15c8ad487fbf,0,1,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,0,1,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,0,1,f9450d6a-849c-4621-b528-9cafc4819b44,f9450d6a-849c-4621-b528-9cafc4819b44,0,1,5b7cac99-2fca-4dbb-8d49-b84f310a2496,5b7cac99-2fca-4dbb-8d49-b84f310a2496,0,1,bb11c22e-0fbd-4985-be67-0866df7f7e61,bb11c22e-0fbd-4985-be67-0866df7f7e61,0,1,a4673d5c-9dae-48f7-9c91-53c1302a266a,a4673d5c-9dae-48f7-9c91-53c1302a266a,0,1,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,0,1,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,0,1,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0,1,3f410b53-e762-41fe-9469-d538dfec3a9a,3f410b53-e762-41fe-9469-d538dfec3a9a,0,1,92ea60c0-1027-4337-9130-40028951f09b,92ea60c0-1027-4337-9130-40028951f09b,0,1,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,0,1,d64f18a4-ff93-4284-9eca-085109eafd24,d64f18a4-ff93-4284-9eca-085109eafd24,0,1,bf428e7a-2970-4bab-8c8e-35ea16151c0e,bf428e7a-2970-4bab-8c8e-35ea16151c0e,0,1,232dbd5f-b7f1-4463-946c-b8fbf93ac466,232dbd5f-b7f1-4463-946c-b8fbf93ac466,0,1,a1a74b34-4174-4769-8f03-bd4a32e83418,a1a74b34-4174-4769-8f03-bd4a32e83418,0,1,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,0,1,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,0,1,1731708f-53cb-4b00-b90e-f581b4baa845,1731708f-53cb-4b00-b90e-f581b4baa845,0,1,d4b0feca-c00a-4d48-9f23-d92277ea6483,d4b0feca-c00a-4d48-9f23-d92277ea6483,0,1,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,0,1,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,0,1,23cb5bc2-9638-4d1c-b4bc-d5297e271570,23cb5bc2-9638-4d1c-b4bc-d5297e271570,0,1,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,0,1,04b7389d-697d-4b0d-a239-ac8c674cc46f,04b7389d-697d-4b0d-a239-ac8c674cc46f,0,1,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,0,1,864cad61-8280-415d-8fe1-bcb39d56670a,864cad61-8280-415d-8fe1-bcb39d56670a,0,1,b106bd29-5dc7-44d7-94d0-00f61499392e,b106bd29-5dc7-44d7-94d0-00f61499392e,0,1,a4febff8-0566-4977-bf55-1d574568fe9f,a4febff8-0566-4977-bf55-1d574568fe9f,0,1,5199cc65-bed1-40b9-96fe-cf6d855a8b91,5199cc65-bed1-40b9-96fe-cf6d855a8b91,0,1,f518add9-5c26-4dac-ab2e-b30fe3fbd347,f518add9-5c26-4dac-ab2e-b30fe3fbd347,0,1,23f53317-7aa8-4816-8a69-3d39d5e76da0,23f53317-7aa8-4816-8a69-3d39d5e76da0,0,1,9ade5155-fa6d-4999-b019-a5e7e235a158,9ade5155-fa6d-4999-b019-a5e7e235a158,0,1,8b302c5e-b255-4cb5-94d9-0dfef4250097,8b302c5e-b255-4cb5-94d9-0dfef4250097,0,1,49d713b8-6a61-4bd1-9650-0de1869967d2,49d713b8-6a61-4bd1-9650-0de1869967d2,0,1,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,0,1,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,0,1,0ddeed48-b98a-47c3-84a2-2eac065be06c,0ddeed48-b98a-47c3-84a2-2eac065be06c,0,1,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,0,1,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,0,1,61b947a5-edca-43ca-82c4-5a7b529d8f82,61b947a5-edca-43ca-82c4-5a7b529d8f82,0,1,59eb6a7a-1d96-4985-8d8e-575162759415,59eb6a7a-1d96-4985-8d8e-575162759415,0,1,68564573-ed49-4519-a8b3-997865fe70a6,68564573-ed49-4519-a8b3-997865fe70a6,0,1,6c789969-d066-489d-ad88-92e2a5a6ec69,6c789969-d066-489d-ad88-92e2a5a6ec69,0,1,2a07d696-75d6-4a12-a310-30d6598b4a4c,2a07d696-75d6-4a12-a310-30d6598b4a4c,0,1,dde88f56-417c-4559-a893-85dc91e7e623,dde88f56-417c-4559-a893-85dc91e7e623,0,1,963eedab-6976-4a98-b9ad-b81f89239661,963eedab-6976-4a98-b9ad-b81f89239661,0,1,3370d43e-8e97-4411-8123-2bb2bcf60a75,3370d43e-8e97-4411-8123-2bb2bcf60a75,0,1,d9d377c9-406f-4bc9-8076-1f049348b816,d9d377c9-406f-4bc9-8076-1f049348b816,0,1,dcfcb108-3761-43d9-ad2a-29633bd1ae47,dcfcb108-3761-43d9-ad2a-29633bd1ae47,0,1,36baa776-83c4-413d-b70c-cbbc45e25662,36baa776-83c4-413d-b70c-cbbc45e25662,0,1,b65f9165-c20d-4053-8a0b-cff3f693b762,b65f9165-c20d-4053-8a0b-cff3f693b762,0,1,51af096b-687f-44f4-a0d8-306f670fc5ce,51af096b-687f-44f4-a0d8-306f670fc5ce,0,1,75972f88-aedd-4338-a3b5-320cd632a2e6,75972f88-aedd-4338-a3b5-320cd632a2e6,0,1,a720abc8-dcf0-4684-8d94-22d394a8e4df,a720abc8-dcf0-4684-8d94-22d394a8e4df,0,1,e40f53de-c27b-4e74-8241-f784d7ca5c84,e40f53de-c27b-4e74-8241-f784d7ca5c84,0,1,ef38b84d-277e-48c2-8826-330132eb6807,ef38b84d-277e-48c2-8826-330132eb6807,0,1,67a50910-059a-4724-84e0-c21bc3ac74c2,67a50910-059a-4724-84e0-c21bc3ac74c2,0,1,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,0,1,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,0,1,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,0,1,2c0d11fc-b927-4b5d-a16c-d60e69580824,2c0d11fc-b927-4b5d-a16c-d60e69580824,0,1,5251e744-666e-48a0-a5b4-9cef313c7631,5251e744-666e-48a0-a5b4-9cef313c7631,0,1,0b09cf2f-1759-4362-b997-29e09ac00445,0b09cf2f-1759-4362-b997-29e09ac00445,0,1,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,0,1,828ddf5d-ca09-4baf-897f-77d569e02a6b,828ddf5d-ca09-4baf-897f-77d569e02a6b,0,1,8856015c-a695-4b1a-99ef-770263f9dc4a,8856015c-a695-4b1a-99ef-770263f9dc4a,0,1,183ec2b5-e173-4885-9e26-1098ffa15020,183ec2b5-e173-4885-9e26-1098ffa15020,0,1,74702fdf-bfc5-4658-ba58-e39bcfbaa647,74702fdf-bfc5-4658-ba58-e39bcfbaa647,0,1,2f436ec3-6a04-4d2c-998a-c60ea875ca86,2f436ec3-6a04-4d2c-998a-c60ea875ca86,0,1,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,0,1,ae641a80-4ada-4592-ace9-29a82e6700e4,ae641a80-4ada-4592-ace9-29a82e6700e4,0,1,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,0,1,0c24858a-7e64-426f-9b59-392449aecaf5,0c24858a-7e64-426f-9b59-392449aecaf5,0,1,b1d61e28-f3dc-418b-b5df-f75622a4b980,b1d61e28-f3dc-418b-b5df-f75622a4b980,0,1,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,0,1,4033f86b-d250-475a-8837-071bf31664b0,4033f86b-d250-475a-8837-071bf31664b0,0,1,876e31ff-ab7b-4ea4-b491-161963727dd1,876e31ff-ab7b-4ea4-b491-161963727dd1,0,1,bb43995b-68b4-41a1-8458-e10a2d8925f1,bb43995b-68b4-41a1-8458-e10a2d8925f1,0,1,61730dd9-fed7-43ce-8f38-724cac8f3d08,61730dd9-fed7-43ce-8f38-724cac8f3d08,0,1,e6a494b8-27e7-46a6-9435-7be6e150a69e,e6a494b8-27e7-46a6-9435-7be6e150a69e,0,1,133dc852-59d3-4351-934d-8845f8a38431,133dc852-59d3-4351-934d-8845f8a38431,0,1,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,0,1,b57eca91-04c2-4412-b5e2-f3c71f8ec602,b57eca91-04c2-4412-b5e2-f3c71f8ec602,0,1,b67914a8-d483-4bed-bd4d-a4aadd4998a4,b67914a8-d483-4bed-bd4d-a4aadd4998a4,0,1,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,0,1,707a8a49-fec5-454c-9e80-c3da829d395c,707a8a49-fec5-454c-9e80-c3da829d395c,0,1,6f630213-c16c-421c-a160-09e3c729ab26,6f630213-c16c-421c-a160-09e3c729ab26,0,1,878c638c-7c84-4914-896a-d4fdf0d759ef,878c638c-7c84-4914-896a-d4fdf0d759ef,0,1,6065653e-b7a9-4033-9617-f64430c57d89,6065653e-b7a9-4033-9617-f64430c57d89,0,1,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,0,1,00d1d85b-c258-4f10-9d13-a99375a29fc1,00d1d85b-c258-4f10-9d13-a99375a29fc1,0,1,0544376f-461c-42c3-a102-e0ae65e3c0c6,0544376f-461c-42c3-a102-e0ae65e3c0c6,0,1,6df8d316-6ac3-4626-8951-1ad36d7049ed,6df8d316-6ac3-4626-8951-1ad36d7049ed,0,1,f211b418-899d-4220-a14b-4a7302183e46,f211b418-899d-4220-a14b-4a7302183e46,0,1,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,0,1,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,0,1,876b23bf-2f48-4916-ad0f-4de8306e1864,876b23bf-2f48-4916-ad0f-4de8306e1864,0,1,e983f539-e369-491e-9cee-510518187870,e983f539-e369-491e-9cee-510518187870,0,1,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,0,1,e99a1b17-0e37-489a-bc39-3dd2e23b0861,e99a1b17-0e37-489a-bc39-3dd2e23b0861,0,1,e7c63a25-c804-4bc4-a6f1-81009dd889e2,e7c63a25-c804-4bc4-a6f1-81009dd889e2,0,1,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,0,1,70e710c5-42df-465f-a9c5-8345c87e1f19,70e710c5-42df-465f-a9c5-8345c87e1f19,0,1,4c1576c4-b327-4ec1-87bc-662c5aba343b,4c1576c4-b327-4ec1-87bc-662c5aba343b,0,1,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0,1,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,0,1,4492ac73-eb91-41f8-98f1-54c2b3ad212a,4492ac73-eb91-41f8-98f1-54c2b3ad212a,0,1,869b43fb-968f-4fe0-b945-5030c90a38f2,869b43fb-968f-4fe0-b945-5030c90a38f2,0,1,af071a52-212b-4131-98e6-81f6048a70e6,af071a52-212b-4131-98e6-81f6048a70e6,0,1,37210dde-9a2f-475c-8341-578ac99f0e17,37210dde-9a2f-475c-8341-578ac99f0e17,0,1,e5094d4f-ee61-4142-a97b-d96172350f65,e5094d4f-ee61-4142-a97b-d96172350f65,0,1,3a8fffb6-a732-440c-afb9-d1c699ea53b6,3a8fffb6-a732-440c-afb9-d1c699ea53b6,0,1,b0650787-8ff5-4407-b491-bcdc2f61fd58,b0650787-8ff5-4407-b491-bcdc2f61fd58,0,1,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,0,1,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,0,1,9aadad98-69f5-41ce-ad1c-0afd8c610d86,9aadad98-69f5-41ce-ad1c-0afd8c610d86,0,1,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,0,1,3d662173-e19d-4077-9a08-8c8899226e24,3d662173-e19d-4077-9a08-8c8899226e24,0,1,69fd1e6e-7302-4ca8-8419-ec567ae66bef,69fd1e6e-7302-4ca8-8419-ec567ae66bef,0,1,0eee931a-57bb-4844-8e6e-eaca342640a0,0eee931a-57bb-4844-8e6e-eaca342640a0,0,1,20c57e30-5856-4801-9e77-8006471d89f8,20c57e30-5856-4801-9e77-8006471d89f8,0,1,64eff9f4-c57b-40a0-bd83-7e371fd010ce,64eff9f4-c57b-40a0-bd83-7e371fd010ce,0,1,4a3fe393-8aea-4394-8c10-a234f1f191ad,4a3fe393-8aea-4394-8c10-a234f1f191ad,0,1,88893c1e-afb4-4a08-abb2-6da0745b696a,88893c1e-afb4-4a08-abb2-6da0745b696a,0,1,6f9a3d00-d935-4fa6-9fd2-14700226daff,6f9a3d00-d935-4fa6-9fd2-14700226daff,0,1,d792831c-698d-40c6-96c2-dd0ae6f30707,d792831c-698d-40c6-96c2-dd0ae6f30707,0,1,a1d91c5f-1acd-4b46-887e-d06e7260dd20,a1d91c5f-1acd-4b46-887e-d06e7260dd20,0,1,3fd26019-c464-4c73-b18e-0888740b1747,3fd26019-c464-4c73-b18e-0888740b1747,0,1,a21989bd-a57f-4969-be3b-d8b39ead4145,a21989bd-a57f-4969-be3b-d8b39ead4145,0,1,c4aee120-cdbb-4b48-a1c7-99cccbafb120,c4aee120-cdbb-4b48-a1c7-99cccbafb120,0,1,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,0,1,a3667b25-7c18-446d-a318-685a4fe4bf89,a3667b25-7c18-446d-a318-685a4fe4bf89,0,1,8103f12c-ed50-4052-8117-33b6d11ef620,8103f12c-ed50-4052-8117-33b6d11ef620,0,1,498b012b-bb63-490e-8100-1d33dc84b400,498b012b-bb63-490e-8100-1d33dc84b400,0,1,7c7857b6-90e8-4b3f-9902-fd81bf68d133,7c7857b6-90e8-4b3f-9902-fd81bf68d133,0,1,617de19c-bf01-4900-832a-c169e9faeb79,617de19c-bf01-4900-832a-c169e9faeb79,0,1,70b73fd0-f5dc-411e-9bbb-10a538e8281b,70b73fd0-f5dc-411e-9bbb-10a538e8281b,0,1,758f44ad-54da-4f72-accf-0afecc4f4827,758f44ad-54da-4f72-accf-0afecc4f4827,0,1,05ee4a7c-63e6-4587-8be7-e206345e3471,05ee4a7c-63e6-4587-8be7-e206345e3471,0,1,98d5e98b-0382-4b28-a5d9-24392925664a,98d5e98b-0382-4b28-a5d9-24392925664a,0,1,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,0,1,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,0,1,4378ab20-5467-476b-8f04-4b6876efdee6,4378ab20-5467-476b-8f04-4b6876efdee6,0,1,55e47901-c79c-41c5-9d7f-6b6846ed2782,55e47901-c79c-41c5-9d7f-6b6846ed2782,0,1,3c429fe8-e663-4a58-817f-8f8382697dbb,3c429fe8-e663-4a58-817f-8f8382697dbb,0,1,c37be0c3-d2db-4e63-a8cb-7956a5396650,c37be0c3-d2db-4e63-a8cb-7956a5396650,0,1,83180e0d-fc4b-41ec-9a17-5af555a4776f,83180e0d-fc4b-41ec-9a17-5af555a4776f,0,1,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,0,1,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,0,1,3e8c6546-416c-4437-8c85-2cf591b4fc3f,3e8c6546-416c-4437-8c85-2cf591b4fc3f,0,1,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,0,1,9a0b27db-e4ac-496b-b6de-876b90381527,9a0b27db-e4ac-496b-b6de-876b90381527,0,1,f9c07de6-4765-4088-86af-09172d11ef5c,f9c07de6-4765-4088-86af-09172d11ef5c,0,1,3656d550-60d0-4933-a5d8-537e2d692ef1,3656d550-60d0-4933-a5d8-537e2d692ef1,0,1,a2c4aab7-01da-47d1-9ee6-3d705ed4e19a,a2c4aab7-01da-47d1-9ee6-3d705ed4e19a,0,1,4506a66c-7e8f-4fc1-b1e1-7cf02309a77f,4506a66c-7e8f-4fc1-b1e1-7cf02309a77f,0,1,f5d03455-753c-46db-a84a-f027edbe8ab8,f5d03455-753c-46db-a84a-f027edbe8ab8,0,1,f7c98be4-fb69-4b87-bbb1-920212852625,f7c98be4-fb69-4b87-bbb1-920212852625,0,1,59d7388b-8aa0-4f97-b86c-f34fcb08bf70,59d7388b-8aa0-4f97-b86c-f34fcb08bf70,0,1,36b704fc-bf9e-4ad4-aed9-4e6427699815,36b704fc-bf9e-4ad4-aed9-4e6427699815,0,1,c1899918-6087-460f-a7a1-142e4b914838,c1899918-6087-460f-a7a1-142e4b914838,0,1,07589ac7-152c-42a9-b6b8-c520e82349b0,07589ac7-152c-42a9-b6b8-c520e82349b0,0,1,86e5a214-083e-4907-9cf3-adf0156235de,86e5a214-083e-4907-9cf3-adf0156235de,0,1,4591f2a7-900e-4426-8e3e-50f2b6e02d3a,4591f2a7-900e-4426-8e3e-50f2b6e02d3a,0,1,71e79854-dade-4b5e-b7e4-5a0bc94168e3,71e79854-dade-4b5e-b7e4-5a0bc94168e3,0,1,d299c6a9-38b9-4d03-a480-3d15ede6ef2d,d299c6a9-38b9-4d03-a480-3d15ede6ef2d,0,1,8ddc148a-0bef-4dd8-8391-d98c5fd21a78,8ddc148a-0bef-4dd8-8391-d98c5fd21a78,0,1,accf0864-8bfe-4c40-a555-6ab423594313,accf0864-8bfe-4c40-a555-6ab423594313,0,1,128654ce-708d-4b85-b9fc-1790dc218ff1,128654ce-708d-4b85-b9fc-1790dc218ff1,0,1,857f4270-760b-4b1f-934c-386fad1eec58,857f4270-760b-4b1f-934c-386fad1eec58,0,1,49f781b8-8787-41de-b334-e9732845f542,49f781b8-8787-41de-b334-e9732845f542,0,1,214499fa-765a-4dbd-9f1b-a4ec401afc3f,214499fa-765a-4dbd-9f1b-a4ec401afc3f,0,1,5a54f871-2aa1-4cbd-9832-dae5f0c43718,5a54f871-2aa1-4cbd-9832-dae5f0c43718,0,1,e3673a14-8ee3-4642-945a-1858410d73a9,e3673a14-8ee3-4642-945a-1858410d73a9,0,1,2d4ec9be-b843-4c1d-ad1b-41ec3d1b14bf,2d4ec9be-b843-4c1d-ad1b-41ec3d1b14bf,0,1,97b4ad32-9cf1-4f25-9739-b21f4c33b29c,97b4ad32-9cf1-4f25-9739-b21f4c33b29c,0,1,f8ad793a-9362-4d58-94bf-53d6750f2089,f8ad793a-9362-4d58-94bf-53d6750f2089,0,1,29a3d9f3-88f5-4449-b9e2-56b517833726,29a3d9f3-88f5-4449-b9e2-56b517833726,0,1,41de2373-2d3f-4860-a8ab-88cf271ac6e3,41de2373-2d3f-4860-a8ab-88cf271ac6e3,0,1,e08a44a6-a3b2-49bd-8a47-abaf2631cd01,e08a44a6-a3b2-49bd-8a47-abaf2631cd01,0,1,2dcc72f7-453b-4248-a83e-6f49051bc639,2dcc72f7-453b-4248-a83e-6f49051bc639,0,1,fdb841f4-193a-4cd7-8569-37e0a68b970e,fdb841f4-193a-4cd7-8569-37e0a68b970e,0,1,96a3439e-9aa7-40f7-8b58-7d08d378010b,96a3439e-9aa7-40f7-8b58-7d08d378010b,0,1,f6590f9c-0365-4f32-93ce-258e2f8323b0,f6590f9c-0365-4f32-93ce-258e2f8323b0,0,1,c7a9c238-a830-46cc-b1b2-88d62328cd40,c7a9c238-a830-46cc-b1b2-88d62328cd40,0,1,723794c6-a391-4f82-a178-625781a136b2,723794c6-a391-4f82-a178-625781a136b2,0,1,7fd74e2d-7409-4f30-9ade-8d11dbf32a12,7fd74e2d-7409-4f30-9ade-8d11dbf32a12,0,1,026d090f-7c6f-4d77-8fe0-ff184dbd86b8,026d090f-7c6f-4d77-8fe0-ff184dbd86b8,0,1,2585cae2-5ebf-400b-8be9-a6207fcaefe3,2585cae2-5ebf-400b-8be9-a6207fcaefe3,0,1,f63d85ab-2524-4c7e-9647-0c18833c9c90,f63d85ab-2524-4c7e-9647-0c18833c9c90,0,1,0b81d0cb-e45a-41d7-89ec-ad056a5aa8bc,0b81d0cb-e45a-41d7-89ec-ad056a5aa8bc,0,1,f0dc2d0c-9904-48aa-9690-72a9d46658df,f0dc2d0c-9904-48aa-9690-72a9d46658df,0,1,76d3a71f-8b40-4e3e-9734-d9e998e685bf,76d3a71f-8b40-4e3e-9734-d9e998e685bf,0,1,3356b0cf-fa2c-40ca-8ec2-b3d72451d730,3356b0cf-fa2c-40ca-8ec2-b3d72451d730,0,1,79e0ab1a-228d-4aec-a873-8f379bb8930b,79e0ab1a-228d-4aec-a873-8f379bb8930b,0,1,0a87c592-6321-4519-a99e-620a5c1fda04,0a87c592-6321-4519-a99e-620a5c1fda04,0,1,2fd3d940-9254-4303-9d5f-fd334918b32a,2fd3d940-9254-4303-9d5f-fd334918b32a,0,1,e1ffbb33-35b2-450b-9795-15455574752b,e1ffbb33-35b2-450b-9795-15455574752b,0,1,7b817c44-3408-4473-8b09-d28d9afd0115,7b817c44-3408-4473-8b09-d28d9afd0115,0,1,bac41d45-249f-40b4-a013-008e261369c8,bac41d45-249f-40b4-a013-008e261369c8,0,1,84e34b4a-02e8-4676-8b81-771ddf3c2931,84e34b4a-02e8-4676-8b81-771ddf3c2931,0,1,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0,1,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,0,1,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,0,1,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,0,1,f71ac535-74a5-4001-a613-455a9e1bf734,f71ac535-74a5-4001-a613-455a9e1bf734,0,1,55a42b83-b6d2-409b-a8ff-7849b08e07ed,55a42b83-b6d2-409b-a8ff-7849b08e07ed,0,1,61889399-ecc2-442c-a790-a8b27a7a540c,61889399-ecc2-442c-a790-a8b27a7a540c,0,1,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,0,1,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,0,1,d6aed0fd-686c-430d-b884-74494177422e,d6aed0fd-686c-430d-b884-74494177422e,0,1,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,0,1,3ed64288-8bf0-4049-8d44-1b424f31d40f,3ed64288-8bf0-4049-8d44-1b424f31d40f,0,1,a21cf522-d657-49ba-a198-01ff1de5e3f0,a21cf522-d657-49ba-a198-01ff1de5e3f0,0,1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,0,1,7ceb2f18-4dae-4b13-a5be-e949be165b4e,7ceb2f18-4dae-4b13-a5be-e949be165b4e,0,1,c4f94f6d-e33f-4226-bf47-c4b544098082,c4f94f6d-e33f-4226-bf47-c4b544098082,0,1,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0,1,4e892154-3279-492c-9eae-124304225c5d,4e892154-3279-492c-9eae-124304225c5d,0,1,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,0,1,575a135a-6ffd-4ae8-a597-7e584df9bac4,575a135a-6ffd-4ae8-a597-7e584df9bac4,0,1,693a7196-f525-4bd2-a417-e902977f21cb,693a7196-f525-4bd2-a417-e902977f21cb,0,1,9bb39184-08b7-440e-a8f8-5caf0083ba0f,9bb39184-08b7-440e-a8f8-5caf0083ba0f,0,1,d48e817e-f6a4-47e5-a052-35d09e066490,d48e817e-f6a4-47e5-a052-35d09e066490,0,1,091cb921-c7e3-4a5f-97b7-34e625159b9c,091cb921-c7e3-4a5f-97b7-34e625159b9c,0,1,f6118cdd-1dcd-464e-a49d-e95c69466750,f6118cdd-1dcd-464e-a49d-e95c69466750,0,1,39932897-959b-41a6-94ad-61426abfdbd9,39932897-959b-41a6-94ad-61426abfdbd9,0,1,c56ea6f3-1032-4b7a-a20e-e912196da1cd,c56ea6f3-1032-4b7a-a20e-e912196da1cd,0,1,b69b611d-18d3-4e78-8a09-f010bcf9c261,b69b611d-18d3-4e78-8a09-f010bcf9c261,0,1,e8e087c1-9131-4037-8562-8bce8c38f78c,e8e087c1-9131-4037-8562-8bce8c38f78c,0,1,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,0,1,6adaef8e-82b6-4664-9748-4f41b170d91a,6adaef8e-82b6-4664-9748-4f41b170d91a,0,1,20d655a7-788c-48bc-83ae-25003106bedb,20d655a7-788c-48bc-83ae-25003106bedb,0,1,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,0,1,68a72014-4b2e-4347-aaa7-54d95b8eb919,68a72014-4b2e-4347-aaa7-54d95b8eb919,0,1,a71d9c41-7510-4d38-90df-1034977b8f45,a71d9c41-7510-4d38-90df-1034977b8f45,0,1,25830f5b-27e2-4eff-9728-b21eb498727d,25830f5b-27e2-4eff-9728-b21eb498727d,0,1,379c9295-d0d5-418d-82f3-5ae19985cc53,379c9295-d0d5-418d-82f3-5ae19985cc53,0,1,af02f534-8508-4f9f-bcc1-0c6f3d696971,af02f534-8508-4f9f-bcc1-0c6f3d696971,0,1,dd345cfb-ea0c-4ea8-9b35-22547b000275,dd345cfb-ea0c-4ea8-9b35-22547b000275,0,1,86a871da-3725-43a1-a7c3-98acd187011b,86a871da-3725-43a1-a7c3-98acd187011b,0,1,2447cfeb-d877-4222-8ac2-b0026b85f932,2447cfeb-d877-4222-8ac2-b0026b85f932,0,1,fb94e9cb-1f27-42a6-a701-18bbe5888e70,fb94e9cb-1f27-42a6-a701-18bbe5888e70,0,1,2e26e32e-a0c6-4460-99de-865622202166,2e26e32e-a0c6-4460-99de-865622202166,0,1,c9489a6e-45af-4877-9788-158071571a0a,c9489a6e-45af-4877-9788-158071571a0a,0,1,23959912-f8fc-42bc-9ec2-1d520ebc5dad,23959912-f8fc-42bc-9ec2-1d520ebc5dad,0,1,4770398f-8013-4d43-93ce-ec1165e40c4e,4770398f-8013-4d43-93ce-ec1165e40c4e,0,1,9a706997-90cb-430d-972c-d2bad87c4a79,9a706997-90cb-430d-972c-d2bad87c4a79,0,1,6f661660-b9c4-41d4-99a8-e08006cfe9c8,6f661660-b9c4-41d4-99a8-e08006cfe9c8,0,1,199e79fa-54d6-4748-aaaa-9c55283582a3,199e79fa-54d6-4748-aaaa-9c55283582a3,0,1,5ef026c2-2ef4-45d6-9792-5ba0d298714b,5ef026c2-2ef4-45d6-9792-5ba0d298714b,0,1,45d61391-4cf7-4f45-8775-ada582c42400,45d61391-4cf7-4f45-8775-ada582c42400,0,1,78b2a913-2ab9-455d-85a3-504f0f468468,78b2a913-2ab9-455d-85a3-504f0f468468,0,1,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,0,1,560b5b12-4dee-4c69-ab6b-7680757a2797,560b5b12-4dee-4c69-ab6b-7680757a2797,0,1,3cfb1ce0-de42-4914-85c0-807d0c10f77e,3cfb1ce0-de42-4914-85c0-807d0c10f77e,0,1,a27244c2-ac65-423f-afce-42efd288a83d,a27244c2-ac65-423f-afce-42efd288a83d,0,1,d4002184-8e08-4dcc-9070-62f595e82e23,d4002184-8e08-4dcc-9070-62f595e82e23,0,1,62163fda-1a09-4d4f-b290-76ff324042ab,62163fda-1a09-4d4f-b290-76ff324042ab,0,1,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,0,1,6e6a1557-06fa-45c0-ad98-c43809553cd7,6e6a1557-06fa-45c0-ad98-c43809553cd7,0,1,179f7436-e328-42b8-9382-19ee6f10c768,179f7436-e328-42b8-9382-19ee6f10c768,0,1,aa89881f-f111-4384-911c-847b04bb56dd,aa89881f-f111-4384-911c-847b04bb56dd,0,1,444d9e3b-c702-4ad6-a929-a220eff0f6e7,444d9e3b-c702-4ad6-a929-a220eff0f6e7,0,1,022c4519-1cdb-45b6-a699-89fd6688999c,022c4519-1cdb-45b6-a699-89fd6688999c,0,1,fb5b79a2-caec-4c6e-a112-27e78a184d5e,fb5b79a2-caec-4c6e-a112-27e78a184d5e,0,1,fa523958-ce1e-42e1-ae00-2dcb401b7eda,fa523958-ce1e-42e1-ae00-2dcb401b7eda,0,1,1518bca2-a004-4566-8991-7c60e6745a49,1518bca2-a004-4566-8991-7c60e6745a49,0,1,ed8618e2-3ce6-4956-856a-9f40279b4da6,ed8618e2-3ce6-4956-856a-9f40279b4da6,0,1,733f6bc2-544d-4fac-bca8-11b981b95a03,733f6bc2-544d-4fac-bca8-11b981b95a03,0,1,0333cd9e-392d-40b2-869d-ad47119e0384,0333cd9e-392d-40b2-869d-ad47119e0384,0,1,82cc8820-0b92-4bb7-b097-7ac79e922f01,82cc8820-0b92-4bb7-b097-7ac79e922f01,0,1,f2267d6c-6972-4621-b677-87798056363b,f2267d6c-6972-4621-b677-87798056363b,0,1,243d201b-3714-4700-b410-c74c9093e6f6,243d201b-3714-4700-b410-c74c9093e6f6,0,1,de3cb50c-ef99-419e-b922-c6a453da6a5b,de3cb50c-ef99-419e-b922-c6a453da6a5b,0,1,d4ca4802-756a-494c-bab3-e77e0777a3fa,d4ca4802-756a-494c-bab3-e77e0777a3fa,0,1,134c1054-8d65-405f-ba3b-5beeca803a72,134c1054-8d65-405f-ba3b-5beeca803a72,0,1,cfa1669b-5310-4171-83fd-4dff3c6ac345,cfa1669b-5310-4171-83fd-4dff3c6ac345,0,1,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,0,1,aec7df6a-21a1-495d-b0a9-3769e1069888,aec7df6a-21a1-495d-b0a9-3769e1069888,0,1,463b98bf-b4d4-4edb-995d-0a75ff29b60d,463b98bf-b4d4-4edb-995d-0a75ff29b60d,0,1,317f88a7-12a4-4d21-b637-3050525406f4,317f88a7-12a4-4d21-b637-3050525406f4,0,1,2d9d2319-68fb-436d-b431-98858b88a75a,2d9d2319-68fb-436d-b431-98858b88a75a,0,1,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,0,1,8e9f9baf-8d12-46cc-915f-f6f290af5512,8e9f9baf-8d12-46cc-915f-f6f290af5512,0,1,5808331f-9ab4-4a23-a592-1f65087f3214,5808331f-9ab4-4a23-a592-1f65087f3214,0,1,9316738d-3d38-4068-818e-a001355b19fb,9316738d-3d38-4068-818e-a001355b19fb,0,1,d86d766f-021a-4c11-b9e8-403af08918cc,d86d766f-021a-4c11-b9e8-403af08918cc,0,1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,0,1,29200d04-d7da-435a-89e6-858c11a1a98c,29200d04-d7da-435a-89e6-858c11a1a98c,0,1,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,0,1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,0,1,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,0,1,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0,1,27df6c22-85d7-4cb6-be19-82af76c84bf9,27df6c22-85d7-4cb6-be19-82af76c84bf9,0,1,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,0,1,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0,1,4ec242e0-75d1-4bf7-be18-783e7aa4f236,4ec242e0-75d1-4bf7-be18-783e7aa4f236,0,1,e02b1366-9d7a-462f-86a1-436bbf4532ff,e02b1366-9d7a-462f-86a1-436bbf4532ff,0,1,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,0,1,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,0,1,8811cc64-99d9-4f13-8309-c29965783f5a,8811cc64-99d9-4f13-8309-c29965783f5a,0,1,7c737071-e850-4a3f-8942-697ef52a8ecc,7c737071-e850-4a3f-8942-697ef52a8ecc,0,1,62eff222-7b74-4cab-9138-880db1f05147,62eff222-7b74-4cab-9138-880db1f05147,0,1,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,0,1,860f8893-22fe-4b13-adb1-24e1ea8c6544,860f8893-22fe-4b13-adb1-24e1ea8c6544,0,1,95266e9f-073f-4de3-83c6-cc0d9ee9334f,95266e9f-073f-4de3-83c6-cc0d9ee9334f,0,1,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,0,1,d5012e69-89bc-40af-8e4f-377a042854ee,d5012e69-89bc-40af-8e4f-377a042854ee,0,1,02f79fd8-5315-4c90-b520-db67dcb6e371,02f79fd8-5315-4c90-b520-db67dcb6e371,0,1,9bb52788-4a3a-48b5-a551-5ca753b6c059,9bb52788-4a3a-48b5-a551-5ca753b6c059,0,1,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,0,1,872a0c47-fab5-4a54-8ab9-23940bbdefbb,872a0c47-fab5-4a54-8ab9-23940bbdefbb,0,1,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,0,1,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,0,1,b6c94efd-5994-4c4c-a641-b062ecc38b65,b6c94efd-5994-4c4c-a641-b062ecc38b65,0,1,98501228-7f0e-45a3-b58f-4c654f393f80,98501228-7f0e-45a3-b58f-4c654f393f80,0,1,502384c9-edb7-451a-b7ea-de006f657a6e,502384c9-edb7-451a-b7ea-de006f657a6e,0,1,4e1a4fe0-dca4-40ba-9369-73be303a4aef,4e1a4fe0-dca4-40ba-9369-73be303a4aef,0,1,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,0,1,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,0,1,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,0,1,50968921-76f3-4108-835a-96b153671c8d,50968921-76f3-4108-835a-96b153671c8d,0,1,b773f510-1485-4886-9071-afcbf49ff856,b773f510-1485-4886-9071-afcbf49ff856,0,1,964403f2-0a87-49e1-b183-dbe3624e3805,964403f2-0a87-49e1-b183-dbe3624e3805,0,1,01579044-5659-4a73-a989-c52cfabaae66,01579044-5659-4a73-a989-c52cfabaae66,0,1,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,0,1,911baaa1-a4de-4558-b00e-51644144a762,911baaa1-a4de-4558-b00e-51644144a762,0,1,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,0,1,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,0,1,4e036eff-92a8-4010-89b2-ed949c123311,4e036eff-92a8-4010-89b2-ed949c123311,0,1,38160114-dc22-4d0b-86a5-d650f4756932,38160114-dc22-4d0b-86a5-d650f4756932,0,1,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,0,1,8b3da21b-ea3f-47cf-af48-15b886b21f20,8b3da21b-ea3f-47cf-af48-15b886b21f20,0,1,32c4750b-0096-4bbc-8dcd-c1f717734233,32c4750b-0096-4bbc-8dcd-c1f717734233,0,1,be6740b1-1f57-4c01-a67a-d48152931dc8,be6740b1-1f57-4c01-a67a-d48152931dc8,0,1,40fd038d-a93a-4be7-9221-d8ae83350ca0,40fd038d-a93a-4be7-9221-d8ae83350ca0,0,1,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,0,1,29adc9e5-a994-48ab-a5a1-919d01119c3a,29adc9e5-a994-48ab-a5a1-919d01119c3a,0,1,c47ffce7-c905-4e88-8b1f-156f47047ccd,c47ffce7-c905-4e88-8b1f-156f47047ccd,0,1,e1755eed-88cf-42c1-83e4-f9047f2c30bf,e1755eed-88cf-42c1-83e4-f9047f2c30bf,0,1,c6ec9d48-9131-4735-9cf7-b498705a57e4,c6ec9d48-9131-4735-9cf7-b498705a57e4,0,1,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,0,1,706c421a-74ce-4985-9443-b4a2032481f6,706c421a-74ce-4985-9443-b4a2032481f6,0,1,64da4c24-4aaf-42c8-8595-7f60ff3bc344,64da4c24-4aaf-42c8-8595-7f60ff3bc344,0,1,fb9577e1-00d9-4d52-8de9-23914929a683,fb9577e1-00d9-4d52-8de9-23914929a683,0,1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,0,1,529253ae-9c92-4426-b150-8444ba622f89,529253ae-9c92-4426-b150-8444ba622f89,0,1,06a1955a-2ef0-4607-9dcb-a480a7951af7,06a1955a-2ef0-4607-9dcb-a480a7951af7,0,1,6f8fcc96-bfed-444a-908d-95c5b1c64972,6f8fcc96-bfed-444a-908d-95c5b1c64972,0,1,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,0,1,a84c89d9-2cfe-405f-9bb0-5392b3171695,a84c89d9-2cfe-405f-9bb0-5392b3171695,0,1,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,0,1,91e26e73-027f-4a10-9083-e5182e768723,91e26e73-027f-4a10-9083-e5182e768723,0,1,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,0,1,54433668-4391-4dea-8baf-43e9aa1d624e,54433668-4391-4dea-8baf-43e9aa1d624e,0,1,fc309616-060a-42c3-8401-dfef0f359bc5,fc309616-060a-42c3-8401-dfef0f359bc5,0,1,b968398d-973d-4643-95a5-16633d7e48bc,b968398d-973d-4643-95a5-16633d7e48bc,0,1,b9507495-2536-4895-b68b-62acd74343f6,b9507495-2536-4895-b68b-62acd74343f6,0,1,e05a14cc-9051-4c38-9725-19856e36d260,e05a14cc-9051-4c38-9725-19856e36d260,0,1,8154aa0f-ecd6-4ab0-9498-56ef25486a55,8154aa0f-ecd6-4ab0-9498-56ef25486a55,0,1,9d6429f7-23da-4596-822a-04818deb3088,9d6429f7-23da-4596-822a-04818deb3088,0,1,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,0,1,acb533e7-4610-4f92-b548-1a4ff1a423d4,acb533e7-4610-4f92-b548-1a4ff1a423d4,0,1,8697999d-9cdb-43d8-979b-3f283daffdd3,8697999d-9cdb-43d8-979b-3f283daffdd3,0,1,23378687-249c-4ec6-99b8-b13fb04b8643,23378687-249c-4ec6-99b8-b13fb04b8643,0,1,66315b12-7abf-46e0-a994-894b827b1301,66315b12-7abf-46e0-a994-894b827b1301,0,1,dba174fb-8392-4451-8069-ae8145658e34,dba174fb-8392-4451-8069-ae8145658e34,0,1,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,0,1,4435d99d-a1df-43e6-97ab-5e651017c61d,4435d99d-a1df-43e6-97ab-5e651017c61d,0,1,2398d69d-ecdd-4d34-bdae-34ed5507a61e,2398d69d-ecdd-4d34-bdae-34ed5507a61e,0,1,a707035a-0172-4b55-b589-fa4a8be9b596,a707035a-0172-4b55-b589-fa4a8be9b596,0,1,c4456e94-8c76-49b1-b85a-433e0f65bdb0,c4456e94-8c76-49b1-b85a-433e0f65bdb0,0,1,4a347209-3a07-48ea-b407-6ee37f1d69f2,4a347209-3a07-48ea-b407-6ee37f1d69f2,0,1,e0a3fab1-3fe9-4927-840e-f983f72bdfc1,e0a3fab1-3fe9-4927-840e-f983f72bdfc1,0,1,df31eee8-387d-40d1-98df-1f7d8176b50e,df31eee8-387d-40d1-98df-1f7d8176b50e,0,1,c8364283-5525-4bef-8e96-abced54c6a4a,c8364283-5525-4bef-8e96-abced54c6a4a,0,1,40e2fb30-bb03-4178-a8eb-ddf48337ef23,40e2fb30-bb03-4178-a8eb-ddf48337ef23,0,1,1026fbcb-acd8-40dc-b638-6e02c6378c55,1026fbcb-acd8-40dc-b638-6e02c6378c55,0,1,dc9e2ba6-f4f1-493f-9054-cac633f239dd,dc9e2ba6-f4f1-493f-9054-cac633f239dd,0,1,7b95d0b1-c7b2-43b4-9119-320cb8912032,7b95d0b1-c7b2-43b4-9119-320cb8912032,0,1,004582b7-00aa-405e-8e24-ce76c945edae,004582b7-00aa-405e-8e24-ce76c945edae,0,1,97a9b005-a836-4308-8e63-0e00f6890baa,97a9b005-a836-4308-8e63-0e00f6890baa,0,1,98c34ada-0b78-41db-9183-6d7b9e466bde,98c34ada-0b78-41db-9183-6d7b9e466bde,0,1,fb688339-918e-40a1-8721-a26f3077973e,fb688339-918e-40a1-8721-a26f3077973e,0,1,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,0,1,079ba95c-8293-47e2-b8bd-7acf73c2d880,079ba95c-8293-47e2-b8bd-7acf73c2d880,0,1,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,0,1,a5f264a8-a547-4653-abb1-eb1666d527dc,a5f264a8-a547-4653-abb1-eb1666d527dc,0,1,dabae379-6356-497a-aab5-cf102f16a72a,dabae379-6356-497a-aab5-cf102f16a72a,0,1,337370e0-1021-4887-9d38-6c3833c90a5b,337370e0-1021-4887-9d38-6c3833c90a5b,0,1,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0,1,d6f01f1c-801b-4776-ae11-48236103f76a,d6f01f1c-801b-4776-ae11-48236103f76a,0,1,b6fe68cf-657b-40e0-af2e-247607a86519,b6fe68cf-657b-40e0-af2e-247607a86519,0,1,9b0b8191-94b7-428f-be86-e9e4cd24a72f,9b0b8191-94b7-428f-be86-e9e4cd24a72f,0,1,a923dbcb-7146-4445-ad17-f4a32c16a837,a923dbcb-7146-4445-ad17-f4a32c16a837,0,1,41dec792-1d1a-4e06-a54b-a86193b98225,41dec792-1d1a-4e06-a54b-a86193b98225,0,1,52257beb-3e0c-4681-b430-9690398cd13a,52257beb-3e0c-4681-b430-9690398cd13a,0,1,135e637c-c28e-4547-8da2-d897dca54cb2,135e637c-c28e-4547-8da2-d897dca54cb2,0,1,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,0,1,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,0,1,5356543a-db9a-4265-b83f-31d45544c8e6,5356543a-db9a-4265-b83f-31d45544c8e6,0,1,857dd311-9c6d-4dba-82d8-283d7b05b09e,857dd311-9c6d-4dba-82d8-283d7b05b09e,0,1,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,0,1,af88ea84-5742-4c9f-9a02-6d0f25186f72,af88ea84-5742-4c9f-9a02-6d0f25186f72,0,1,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,0,1,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,0,1,872521e3-413c-45ac-a6ea-39fe1324bae8,872521e3-413c-45ac-a6ea-39fe1324bae8,0,1,81ef02df-498d-4af0-8254-dc6730cbf140,81ef02df-498d-4af0-8254-dc6730cbf140,0,1,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,0,1,fe926c88-d792-4db3-abcf-3c94dfdcc407,fe926c88-d792-4db3-abcf-3c94dfdcc407,0,1,e0c51555-1614-4aa7-a075-c5e1251579ba,e0c51555-1614-4aa7-a075-c5e1251579ba,0,1,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,0,1,51363236-c8eb-4eb7-9692-5c18edc9a5a8,51363236-c8eb-4eb7-9692-5c18edc9a5a8,0,1,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,0,1,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,0,1,2902460a-ed86-41cf-8e8f-895adab9a72f,2902460a-ed86-41cf-8e8f-895adab9a72f,0,1,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,0,1,f82d5bd6-4c74-4c23-978c-565aae3d752a,f82d5bd6-4c74-4c23-978c-565aae3d752a,0,1,7fba41a5-4faa-412b-b367-b30ced0314c0,7fba41a5-4faa-412b-b367-b30ced0314c0,0,1,98422d20-9a71-40e4-966e-6958d44eaefb,98422d20-9a71-40e4-966e-6958d44eaefb,0,1,37333d0b-3589-4b8b-bf6c-e605e0287b66,37333d0b-3589-4b8b-bf6c-e605e0287b66,0,1,1813c469-da20-46a6-8947-6815b66f64c1,1813c469-da20-46a6-8947-6815b66f64c1,0,1,ad083c26-7461-4e94-b524-0174242fbd91,ad083c26-7461-4e94-b524-0174242fbd91,0,1,5ce39370-f918-493f-bb24-53346b6fd836,5ce39370-f918-493f-bb24-53346b6fd836,0,1,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,0,1,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0,1,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,0,1,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,0,1,a76b1fd1-ba00-40e6-8756-f17fee449818,a76b1fd1-ba00-40e6-8756-f17fee449818,0,1,5c913626-48d1-4e0a-a423-64078ce59c7b,5c913626-48d1-4e0a-a423-64078ce59c7b,0,1,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0,1,7b0ec304-1904-413e-a9c6-ff62e87107dd,7b0ec304-1904-413e-a9c6-ff62e87107dd,0,1,d4dd8c96-914d-496f-b735-ef85ec473605,d4dd8c96-914d-496f-b735-ef85ec473605,0,1,62517db4-59e6-4945-bcd6-b3f1845572bf,62517db4-59e6-4945-bcd6-b3f1845572bf,0,1,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,0,1,f0f72149-0e7f-441a-b70d-8f47d4977927,f0f72149-0e7f-441a-b70d-8f47d4977927,0,1,776efc3e-ac27-4550-bafd-6e91aa987af2,776efc3e-ac27-4550-bafd-6e91aa987af2,0,1,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,0,1,cc438366-85ea-48be-8b74-d05cddb1fc51,cc438366-85ea-48be-8b74-d05cddb1fc51,0,1,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,0,1,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,0,1,3271b800-1825-422f-97bb-757baf403e90,3271b800-1825-422f-97bb-757baf403e90,0,1,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,0,1,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,0,1,a040c756-4687-4bfd-a690-b122d3c490e5,a040c756-4687-4bfd-a690-b122d3c490e5,0,1,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,0,1,961a9801-3956-4ea0-b0d3-908f09bf4929,961a9801-3956-4ea0-b0d3-908f09bf4929,0,1,6fac5c14-e126-4342-9078-edf1d0efcbf2,6fac5c14-e126-4342-9078-edf1d0efcbf2,0,1,0a3325a1-21c4-4997-882f-4ac2edc175f0,0a3325a1-21c4-4997-882f-4ac2edc175f0,0,1,f0620d5a-e1fe-419f-af37-e0f462f97e8d,f0620d5a-e1fe-419f-af37-e0f462f97e8d,0,1,3e2f2ae1-c809-43fc-8276-b0a16a92858c,3e2f2ae1-c809-43fc-8276-b0a16a92858c,0,1,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,0,1,1a7c7427-bead-4655-9dd6-df6e722663c5,1a7c7427-bead-4655-9dd6-df6e722663c5,0,1,3ad08f4a-6202-4099-b6cc-bc116e6731a0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,0,1,fd96c8ab-602a-4735-b168-52b501e80351,fd96c8ab-602a-4735-b168-52b501e80351,0,1,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,0,1,370f0c75-d2c5-4be5-a633-4bcc77998ece,370f0c75-d2c5-4be5-a633-4bcc77998ece,0,1,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,0,1,2139532c-f6cb-4393-936e-cc912e5adca9,2139532c-f6cb-4393-936e-cc912e5adca9,0,1,755c3eca-4956-4a44-9b38-c11dae00b87f,755c3eca-4956-4a44-9b38-c11dae00b87f,0,1,f57c558c-2c94-4b9d-8697-448d0548ab1a,f57c558c-2c94-4b9d-8697-448d0548ab1a,0,1,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,0,1,c32db021-eca1-4b67-aa85-3d6e28c51b53,c32db021-eca1-4b67-aa85-3d6e28c51b53,0,1,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,0,1,02466dcf-02a1-4853-814f-a913a9baba45,02466dcf-02a1-4853-814f-a913a9baba45,0,1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,0,1,62b75eb2-42e1-4484-a77f-b676dd36f3d4,62b75eb2-42e1-4484-a77f-b676dd36f3d4,0,1,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,0,1,856510ee-74f5-44e9-a3c0-1c60cfb7a787,856510ee-74f5-44e9-a3c0-1c60cfb7a787,0,1,28b761c6-c286-4125-a4ed-da602e49950f,28b761c6-c286-4125-a4ed-da602e49950f,0,1,4ac66a22-c736-4e06-a8aa-ef4a71788c65,4ac66a22-c736-4e06-a8aa-ef4a71788c65,0,1,9cfe9281-8840-4077-824d-a2c9cbb0b730,9cfe9281-8840-4077-824d-a2c9cbb0b730,0,1,76389fa9-b9e0-492e-9c93-24b5f3bf094c,76389fa9-b9e0-492e-9c93-24b5f3bf094c,0,1,23e3de37-9315-45e6-bbfd-60aae28c25ae,23e3de37-9315-45e6-bbfd-60aae28c25ae,0,1,a9957f43-8b6f-4d98-a2d8-77b78047494c,a9957f43-8b6f-4d98-a2d8-77b78047494c,0,1,e470e15d-1b06-43cb-a9f9-ba489e2f596f,e470e15d-1b06-43cb-a9f9-ba489e2f596f,0,1,0408002c-9255-43a2-8022-82f02ee0e8f4,0408002c-9255-43a2-8022-82f02ee0e8f4,0,1,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,0,1,1851afd4-5324-45c1-b754-54e65943f945,1851afd4-5324-45c1-b754-54e65943f945,0,1,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,0,1,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,0,1,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0,1,c322dc4a-30f3-4d23-9824-4a01c496408d,c322dc4a-30f3-4d23-9824-4a01c496408d,0,1,dcff004c-1b61-4a19-b977-ea21bf688614,dcff004c-1b61-4a19-b977-ea21bf688614,0,0,0,1,0,0,0,1,0,1,0,1,1,1,1}
\ No newline at end of file
+{6,1,1,8ccdacee-97c4-4026-a95c-a6aad4a987e8,1,86317dd1-5dc5-4ab4-a445-3f8d654bd465,"2.2.3.44","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",4534,1,0,6b023fde-1bc8-48ea-b098-0c6d20099af0,6b023fde-1bc8-48ea-b098-0c6d20099af0,0,1,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,0,1,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,0,1,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,0,1,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,0,1,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,0,1,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,0,1,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,0,1,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,0,1,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,0,1,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,0,1,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,0,1,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,0,1,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,0,1,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,0,1,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,0,1,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,0,1,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,0,1,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,0,1,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,0,1,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,0,1,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,0,1,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,0,1,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,0,1,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,0,1,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,0,1,9e36087a-baa8-4812-956a-6e1ac73aa7e0,9e36087a-baa8-4812-956a-6e1ac73aa7e0,0,1,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,0,1,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,0,1,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,0,1,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,0,1,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,0,1,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,0,1,cb8da2f3-f8bb-4736-8381-7c153670e3e2,cb8da2f3-f8bb-4736-8381-7c153670e3e2,0,1,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,0,1,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,0,1,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,0,1,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,0,1,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,0,1,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,0,1,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,0,1,c53df2d1-4564-47a7-b66e-6a23ba28270e,c53df2d1-4564-47a7-b66e-6a23ba28270e,0,1,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,0,1,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,0,1,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,0,1,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,0,1,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,0,1,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,0,1,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,0,1,52176b25-0232-4326-9548-495db32b2660,52176b25-0232-4326-9548-495db32b2660,0,1,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,0,1,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,0,1,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,0,1,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0,1,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,0,1,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82-4a1c-9fdb-a26293d4f713,0,1,a952960b-be1b-4ec4-bd76-80915065a60b,a952960b-be1b-4ec4-bd76-80915065a60b,0,1,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,0,1,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,0,1,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,0,1,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5-45fc-8da2-a36c435085a6,0,1,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,0,1,5d16e042-3889-4851-86f1-bc43bf06ee88,5d16e042-3889-4851-86f1-bc43bf06ee88,0,1,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,0,1,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,0,1,e39ecc8a-ce81-483d-85de-b0488c8b7749,e39ecc8a-ce81-483d-85de-b0488c8b7749,0,1,8f3b124f-bf85-4307-8f0c-47be1fb5c8b0,8f3b124f-bf85-4307-8f0c-47be1fb5c8b0,0,1,1514eaff-faea-4d82-9465-d0d5292bb31d,1514eaff-faea-4d82-9465-d0d5292bb31d,0,1,6d39c6df-8cd4-47ad-9125-252b37d94575,6d39c6df-8cd4-47ad-9125-252b37d94575,0,1,739bd762-01fc-41a8-87df-844eb201962f,739bd762-01fc-41a8-87df-844eb201962f,0,1,ad7c6165-2e44-4808-a77a-526882cf5dea,ad7c6165-2e44-4808-a77a-526882cf5dea,0,1,b7e435a9-6107-4d02-a949-cff793462e31,b7e435a9-6107-4d02-a949-cff793462e31,0,1,f0cda8f5-56f5-423b-8c1c-7113433ebf25,f0cda8f5-56f5-423b-8c1c-7113433ebf25,0,1,1a220e88-428b-4d85-926d-e572bf19997c,1a220e88-428b-4d85-926d-e572bf19997c,0,1,ca0d938b-244e-421f-9fa4-320784b9f416,ca0d938b-244e-421f-9fa4-320784b9f416,0,1,a108b11d-a489-4684-84ea-d5377c7394de,a108b11d-a489-4684-84ea-d5377c7394de,0,1,289a2d84-2477-4177-a6ef-507e2cadeea2,289a2d84-2477-4177-a6ef-507e2cadeea2,0,1,757b547b-b79c-459a-a64a-eef19a09a38f,757b547b-b79c-459a-a64a-eef19a09a38f,0,1,61cd6eab-6bab-4382-986e-4c7fc44f369b,61cd6eab-6bab-4382-986e-4c7fc44f369b,0,1,950f8fd5-fefa-4bfb-97a0-38d77ae830dc,950f8fd5-fefa-4bfb-97a0-38d77ae830dc,0,1,cbbe7903-842c-470e-a2d6-7928df8f13e9,cbbe7903-842c-470e-a2d6-7928df8f13e9,0,1,e02597c4-bf45-4bb6-931d-62d2244f6c58,e02597c4-bf45-4bb6-931d-62d2244f6c58,0,1,42544966-445d-41b8-b6a0-a52c64758232,42544966-445d-41b8-b6a0-a52c64758232,0,1,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,0,1,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,0,1,9eea8645-1ba7-4faf-9c29-868bf99964dd,9eea8645-1ba7-4faf-9c29-868bf99964dd,0,1,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,0,1,0c44fdea-7b81-45be-87f5-d64456a9d379,0c44fdea-7b81-45be-87f5-d64456a9d379,0,1,d09d6f21-cdd0-485e-bd2c-92092a1aefef,d09d6f21-cdd0-485e-bd2c-92092a1aefef,0,1,2fc92784-d7b0-4209-ba06-e54bed2f160f,2fc92784-d7b0-4209-ba06-e54bed2f160f,0,1,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,0,1,a4e4c91c-fd95-4369-98e3-51ffba79937b,a4e4c91c-fd95-4369-98e3-51ffba79937b,0,1,0d0ada8a-09bb-4634-bf50-199f3779dad5,0d0ada8a-09bb-4634-bf50-199f3779dad5,0,1,d343d4e4-d07f-48c3-9db1-774b0d6c1134,d343d4e4-d07f-48c3-9db1-774b0d6c1134,0,1,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,0,1,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,0,1,968588bb-ee60-4399-955a-3ec4228d3c40,968588bb-ee60-4399-955a-3ec4228d3c40,0,1,23dbb528-7ea8-44ae-a1f2-b7608118666e,23dbb528-7ea8-44ae-a1f2-b7608118666e,0,1,b9627855-6773-4a59-b7d3-f9e2e565cd9e,b9627855-6773-4a59-b7d3-f9e2e565cd9e,0,1,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,0,1,283ce432-3553-4de9-94a2-ca9a590437f5,283ce432-3553-4de9-94a2-ca9a590437f5,0,1,0da019ca-1fc7-4aff-8998-3ddcccf10872,0da019ca-1fc7-4aff-8998-3ddcccf10872,0,1,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,0,1,34b0e268-497d-44d4-b822-84909d0685aa,34b0e268-497d-44d4-b822-84909d0685aa,0,1,8961a859-2203-4678-ae1f-63e2474a787a,8961a859-2203-4678-ae1f-63e2474a787a,0,1,fe63db47-3ece-4518-b6a2-0b6499f60a61,fe63db47-3ece-4518-b6a2-0b6499f60a61,0,1,654523be-93d9-4faa-9a35-ce2fede13820,654523be-93d9-4faa-9a35-ce2fede13820,0,1,671afc3e-7589-49d8-95a5-1cf195c3b2f8,671afc3e-7589-49d8-95a5-1cf195c3b2f8,0,1,2c8e45b8-7d80-4137-85db-66cd1db94526,2c8e45b8-7d80-4137-85db-66cd1db94526,0,1,47accdc7-8fa0-4996-9305-c42b6ca12df9,47accdc7-8fa0-4996-9305-c42b6ca12df9,0,1,5abc496c-5745-4220-9fdc-bac092717871,5abc496c-5745-4220-9fdc-bac092717871,0,1,7df36398-7752-4f51-9978-1bcb4bcdd062,7df36398-7752-4f51-9978-1bcb4bcdd062,0,1,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,0,1,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,0,1,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,0,1,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,0,1,f4885af5-6ed6-40e8-81a5-0e9537f943d7,f4885af5-6ed6-40e8-81a5-0e9537f943d7,0,1,87472d14-0d8c-4813-8a3e-2721bbb26811,87472d14-0d8c-4813-8a3e-2721bbb26811,0,1,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,0,1,e8faa1a9-807a-4916-b3c5-76ba2199754c,e8faa1a9-807a-4916-b3c5-76ba2199754c,0,1,99b5c632-61fe-41f5-ac00-ea530633bf28,99b5c632-61fe-41f5-ac00-ea530633bf28,0,1,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,0,1,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,0,1,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,0,1,485911f7-a964-450d-82da-cab020836eb2,485911f7-a964-450d-82da-cab020836eb2,0,1,cedd0b47-07cb-4dae-86b5-31d396b693c7,cedd0b47-07cb-4dae-86b5-31d396b693c7,0,1,c08391e1-c4e3-42aa-8738-061031d0cb75,c08391e1-c4e3-42aa-8738-061031d0cb75,0,1,bf4c6723-e586-4643-9f03-9e672afea26f,bf4c6723-e586-4643-9f03-9e672afea26f,0,1,23204b0b-bf77-4f7c-9945-e73ad924ebb4,23204b0b-bf77-4f7c-9945-e73ad924ebb4,0,1,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,0,1,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,0,1,a54f2d41-a05e-4878-80c6-81ca2899fa4c,a54f2d41-a05e-4878-80c6-81ca2899fa4c,0,1,23a898d9-5bcb-4744-ab6c-97b17dc98f20,23a898d9-5bcb-4744-ab6c-97b17dc98f20,0,1,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,0,1,f8f56806-ed7e-4059-a0c8-940538c14c98,f8f56806-ed7e-4059-a0c8-940538c14c98,0,1,9ff9f92b-c509-48da-82ce-15b524a895d6,9ff9f92b-c509-48da-82ce-15b524a895d6,0,1,c8bf96c8-f359-4940-8e87-3d190371d6d3,c8bf96c8-f359-4940-8e87-3d190371d6d3,0,1,477f0b81-0eb1-4de1-8cb5-38f1e0823947,477f0b81-0eb1-4de1-8cb5-38f1e0823947,0,1,d914eaa9-ce85-4df7-a545-2d411ef915b0,d914eaa9-ce85-4df7-a545-2d411ef915b0,0,1,41881344-82b7-4904-9ab8-0207d9bcd0a9,41881344-82b7-4904-9ab8-0207d9bcd0a9,0,1,21032fa5-9426-40bd-91e4-ace1e4ceb013,21032fa5-9426-40bd-91e4-ace1e4ceb013,0,1,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,0,1,27a80757-c0fd-40c7-ad24-4c819c1ba72b,27a80757-c0fd-40c7-ad24-4c819c1ba72b,0,1,7fce9e49-e558-4760-9d95-dde6ac6c1e78,7fce9e49-e558-4760-9d95-dde6ac6c1e78,0,1,e5aba4a3-6056-4ef3-827c-d74283175393,e5aba4a3-6056-4ef3-827c-d74283175393,0,1,63039e62-7314-42ff-bdc6-c251f38b3827,63039e62-7314-42ff-bdc6-c251f38b3827,0,1,8a4b7aab-b602-4581-8fa4-fab66791f701,8a4b7aab-b602-4581-8fa4-fab66791f701,0,1,7c92c579-4651-4fe3-90dc-6c9b594b76f0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,0,1,a2be2d7a-cca0-460f-a915-dadfb9cd588b,a2be2d7a-cca0-460f-a915-dadfb9cd588b,0,1,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,0,1,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,0,1,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,0,1,1f4408f5-460e-431b-9842-bc6875ccf0ae,1f4408f5-460e-431b-9842-bc6875ccf0ae,0,1,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,0,1,7bfc6163-a62f-45e8-9112-40a5d675ba4a,7bfc6163-a62f-45e8-9112-40a5d675ba4a,0,1,542ff510-0245-4a08-80ac-a9941c66ae93,542ff510-0245-4a08-80ac-a9941c66ae93,0,1,03297623-eaa2-4db0-bf1b-ce2076faf20a,03297623-eaa2-4db0-bf1b-ce2076faf20a,0,1,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,0,1,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,0,1,82a3802c-b6d6-4511-bd8b-eeec003afa33,82a3802c-b6d6-4511-bd8b-eeec003afa33,0,1,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,0,1,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,0,1,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,0,1,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,0,1,a755cb43-492d-4069-9b6a-29b92ebb5b0e,a755cb43-492d-4069-9b6a-29b92ebb5b0e,0,1,86d09107-f511-4148-b5d9-d97e92addfde,86d09107-f511-4148-b5d9-d97e92addfde,0,1,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,0,1,55b78834-3d90-4858-a6f7-e0368b1d8c41,55b78834-3d90-4858-a6f7-e0368b1d8c41,0,1,059b9a75-f53a-4518-a48a-afc72ab9ee36,059b9a75-f53a-4518-a48a-afc72ab9ee36,0,1,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,0,1,31e95872-97c7-49e3-bd1b-8df4de07014d,31e95872-97c7-49e3-bd1b-8df4de07014d,0,1,8b9be02b-cd1f-4231-a895-6c9be26348c2,8b9be02b-cd1f-4231-a895-6c9be26348c2,0,1,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,0,1,fa4f0b33-5253-4a5f-8121-feae3e1968a6,fa4f0b33-5253-4a5f-8121-feae3e1968a6,0,1,e0d21be2-91dc-4a04-9078-49420ddddcd5,e0d21be2-91dc-4a04-9078-49420ddddcd5,0,1,56c97764-7dba-42e0-8ba0-82712aca20e9,56c97764-7dba-42e0-8ba0-82712aca20e9,0,1,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,0,1,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,0,1,ea868745-71fc-483c-aa6e-f242c06c673f,ea868745-71fc-483c-aa6e-f242c06c673f,0,1,7f3c6269-ea41-492f-87b7-7eaaf712762e,7f3c6269-ea41-492f-87b7-7eaaf712762e,0,1,a5d037b0-c666-4179-9d6a-5f48c4a126a8,a5d037b0-c666-4179-9d6a-5f48c4a126a8,0,1,f0850411-4dee-4f1d-baec-7d6c96b10637,f0850411-4dee-4f1d-baec-7d6c96b10637,0,1,12f95031-b81f-4802-b2f3-6f70def90db0,12f95031-b81f-4802-b2f3-6f70def90db0,0,1,5732112a-f31d-41cd-9a7f-312a27395502,5732112a-f31d-41cd-9a7f-312a27395502,0,1,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,0,1,06fc381d-f27a-433c-95c3-e0981e01f22b,06fc381d-f27a-433c-95c3-e0981e01f22b,0,1,f646835e-61eb-4ebd-811e-dac5e70bd1b4,f646835e-61eb-4ebd-811e-dac5e70bd1b4,0,1,61b49c4c-3021-4868-834a-9137476ae169,61b49c4c-3021-4868-834a-9137476ae169,0,1,58911911-5192-45fe-87cf-c4a222a521a1,58911911-5192-45fe-87cf-c4a222a521a1,0,1,70067937-9f27-4442-b87b-6c4576ce1b78,70067937-9f27-4442-b87b-6c4576ce1b78,0,1,115d5d06-a2fc-453e-aab5-c869b6d5850b,115d5d06-a2fc-453e-aab5-c869b6d5850b,0,1,d33ca006-d81d-4ef8-8503-7878e81c599f,d33ca006-d81d-4ef8-8503-7878e81c599f,0,1,123bb339-b95e-44c3-b1e9-482dcaa6f297,123bb339-b95e-44c3-b1e9-482dcaa6f297,0,1,f4119605-beb3-46b6-b372-ecdb74f10a33,f4119605-beb3-46b6-b372-ecdb74f10a33,0,1,d2a2e332-a52c-4277-bd19-5ea8ef198469,d2a2e332-a52c-4277-bd19-5ea8ef198469,0,1,e440c594-14bb-4a6e-af53-a4519c7d5548,e440c594-14bb-4a6e-af53-a4519c7d5548,0,1,4165bdaa-8e27-40de-bcdc-0379c34e8868,4165bdaa-8e27-40de-bcdc-0379c34e8868,0,1,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,0,1,e606f8eb-952a-4abb-b1ae-4211204bed84,e606f8eb-952a-4abb-b1ae-4211204bed84,0,1,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,0,1,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1c2ad932-150a-4b15-b958-62eaa8a1eebc,0,1,b4deaebf-2c21-47d7-9436-10c94c94667c,b4deaebf-2c21-47d7-9436-10c94c94667c,0,1,f8295f29-2533-4013-981b-240f017d9f7c,f8295f29-2533-4013-981b-240f017d9f7c,0,1,538b316b-3876-4da6-8b97-ad8ef59de17d,538b316b-3876-4da6-8b97-ad8ef59de17d,0,1,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,0,1,ebc5f182-482b-4dec-9961-ce3a448abd0e,ebc5f182-482b-4dec-9961-ce3a448abd0e,0,1,83e618f5-1bf4-474a-9d65-389f1e4b16c3,83e618f5-1bf4-474a-9d65-389f1e4b16c3,0,1,1357512e-3ed3-455d-bc91-81db3b92f9fe,1357512e-3ed3-455d-bc91-81db3b92f9fe,0,1,82223d0f-41d9-45a6-9612-ae4d8408fa1b,82223d0f-41d9-45a6-9612-ae4d8408fa1b,0,1,3ee058a9-aff5-46f0-8928-8a417e7800d4,3ee058a9-aff5-46f0-8928-8a417e7800d4,0,1,c9a03f19-42bb-4e07-8ce8-1b954e431ada,c9a03f19-42bb-4e07-8ce8-1b954e431ada,0,1,ed4edc6f-048a-40d5-8f61-989895c95cf3,ed4edc6f-048a-40d5-8f61-989895c95cf3,0,1,dc17d8b6-d277-43eb-8823-71d440ae1e90,dc17d8b6-d277-43eb-8823-71d440ae1e90,0,1,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,0,1,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,0,1,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,0,1,cc770616-f6f6-4054-876c-f319b1f8c6cf,cc770616-f6f6-4054-876c-f319b1f8c6cf,0,1,8486e623-1a54-4ad9-ab44-591b6a559bc3,8486e623-1a54-4ad9-ab44-591b6a559bc3,0,1,dce82d28-9a7b-4d4c-af13-90f459cf4af2,dce82d28-9a7b-4d4c-af13-90f459cf4af2,0,1,cb9f2231-49bb-4b14-a124-8996628afead,cb9f2231-49bb-4b14-a124-8996628afead,0,1,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,0,1,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,0,1,896de79f-3c34-4436-a4e2-4dd4f45c3e20,896de79f-3c34-4436-a4e2-4dd4f45c3e20,0,1,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,0,1,e6c42b5d-57fd-42ce-a968-653620e797f6,e6c42b5d-57fd-42ce-a968-653620e797f6,0,1,724fb328-fec6-4afe-bc99-0ff0951b184b,724fb328-fec6-4afe-bc99-0ff0951b184b,0,1,f6259a3b-98f5-4649-8fd0-da0a0285f375,f6259a3b-98f5-4649-8fd0-da0a0285f375,0,1,c565bf25-c55e-4324-851a-cec497f5114a,c565bf25-c55e-4324-851a-cec497f5114a,0,1,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,0,1,5b0e250c-4d2d-4e37-ade1-593854610d3f,5b0e250c-4d2d-4e37-ade1-593854610d3f,0,1,148f63d5-23ad-4824-a24c-14d5a54c62d3,148f63d5-23ad-4824-a24c-14d5a54c62d3,0,1,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,0,1,eabfa8b7-fb65-43dd-9308-787f7cce88c9,eabfa8b7-fb65-43dd-9308-787f7cce88c9,0,1,30213cef-b2bc-4e6c-8094-74a61f28b2ed,30213cef-b2bc-4e6c-8094-74a61f28b2ed,0,1,8c72f824-b667-4d74-84aa-30eccfbbd2f0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,0,1,ec7b492d-5d38-4f31-90e0-577ad181514e,ec7b492d-5d38-4f31-90e0-577ad181514e,0,1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,0,1,4807629d-8421-4bd9-beb4-5b2940197958,4807629d-8421-4bd9-beb4-5b2940197958,0,1,4bad7c64-131a-42cb-9be7-d61f14f456d0,4bad7c64-131a-42cb-9be7-d61f14f456d0,0,1,d46e141b-7a10-4d65-971f-3a35f2114017,d46e141b-7a10-4d65-971f-3a35f2114017,0,1,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,0,1,766c7fb5-727e-4975-9ea1-3b0df4739620,766c7fb5-727e-4975-9ea1-3b0df4739620,0,1,ba59393c-c499-4999-91d4-b9e34d94db0e,ba59393c-c499-4999-91d4-b9e34d94db0e,0,1,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,0,1,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,0,1,e70a6eab-791f-4c70-bb92-f069c7486d1b,e70a6eab-791f-4c70-bb92-f069c7486d1b,0,1,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,0,1,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,0,1,f58bffe7-4a02-4c4e-bfed-7895177a400c,f58bffe7-4a02-4c4e-bfed-7895177a400c,0,1,fe285122-2257-4fb2-ab7e-1683c31db1c6,fe285122-2257-4fb2-ab7e-1683c31db1c6,0,1,0facc6eb-a178-45ee-a6bc-4bf085d80453,0facc6eb-a178-45ee-a6bc-4bf085d80453,0,1,f74eef36-9441-4b6f-b21c-de9643832f9f,f74eef36-9441-4b6f-b21c-de9643832f9f,0,1,ac2e5217-aaeb-4b6f-b063-538c84f2da06,ac2e5217-aaeb-4b6f-b063-538c84f2da06,0,1,b5e73fbe-499c-4666-a482-0ef399c97c1e,b5e73fbe-499c-4666-a482-0ef399c97c1e,0,1,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,0,1,4ac77dea-3c2b-4566-8857-ba99f7b025c9,4ac77dea-3c2b-4566-8857-ba99f7b025c9,0,1,8e87da88-9fa8-4dd8-b904-622b763239f4,8e87da88-9fa8-4dd8-b904-622b763239f4,0,1,09fec67d-6e45-428c-b858-9ae20979676c,09fec67d-6e45-428c-b858-9ae20979676c,0,1,58ffc4d9-d711-4b68-905c-d2ac4f78b547,58ffc4d9-d711-4b68-905c-d2ac4f78b547,0,1,114ab2a1-f7c3-4453-a6cc-4c5a23c00cb5,114ab2a1-f7c3-4453-a6cc-4c5a23c00cb5,0,1,93c347d8-66cb-406c-9ee6-b1962482893f,93c347d8-66cb-406c-9ee6-b1962482893f,0,1,94ab750f-46b4-427c-a7f2-4e94fb9b0678,94ab750f-46b4-427c-a7f2-4e94fb9b0678,0,1,397d9926-31a3-4c03-acb7-74478f9863e1,397d9926-31a3-4c03-acb7-74478f9863e1,0,1,264dd12a-b4c5-44bf-b3c0-ef9225505f76,264dd12a-b4c5-44bf-b3c0-ef9225505f76,0,1,90b8fdf3-3e42-442f-a002-6a28ad0edc99,90b8fdf3-3e42-442f-a002-6a28ad0edc99,0,1,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,0,1,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,0,1,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,0,1,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0,1,89574884-bce2-406d-9961-d1656b306eb8,89574884-bce2-406d-9961-d1656b306eb8,0,1,3de28e34-3c1e-4e7f-a720-3418c8c9c496,3de28e34-3c1e-4e7f-a720-3418c8c9c496,0,1,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,0,1,dacb236e-42a5-47e5-b239-ff18ae48e21e,dacb236e-42a5-47e5-b239-ff18ae48e21e,0,1,5cdb6e71-fd20-461a-83db-d59ccdb5b366,5cdb6e71-fd20-461a-83db-d59ccdb5b366,0,1,388b8576-9ba4-460f-b71b-3d644663656a,388b8576-9ba4-460f-b71b-3d644663656a,0,1,d4d38827-fce6-4c39-a4b4-51c7d7edc475,d4d38827-fce6-4c39-a4b4-51c7d7edc475,0,1,2d40609d-b56f-4082-9a6f-8216817ebd24,2d40609d-b56f-4082-9a6f-8216817ebd24,0,1,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,0,1,732b19c8-4f22-4748-a796-71538e46fc2f,732b19c8-4f22-4748-a796-71538e46fc2f,0,1,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,0,1,3fe0ef25-ce56-435d-b343-eadfec91a636,3fe0ef25-ce56-435d-b343-eadfec91a636,0,1,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,0,1,74f02619-7fa8-4c6d-81d6-230156ee45f4,74f02619-7fa8-4c6d-81d6-230156ee45f4,0,1,a103cca0-8243-40e9-bcdd-97a1cc8a3943,a103cca0-8243-40e9-bcdd-97a1cc8a3943,0,1,80fd89d7-160d-4528-9aa0-05b8dac64b4c,80fd89d7-160d-4528-9aa0-05b8dac64b4c,0,1,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,0,1,da551cf6-4f86-4e37-8967-a84c80e1fb13,da551cf6-4f86-4e37-8967-a84c80e1fb13,0,1,5fb2c120-fd14-4e78-a35f-c8e9478b3235,5fb2c120-fd14-4e78-a35f-c8e9478b3235,0,1,9d514ce1-f9bd-4018-8107-545cdd372fbd,9d514ce1-f9bd-4018-8107-545cdd372fbd,0,1,fe6b732f-3a33-460f-9686-cffdd5f7d99b,fe6b732f-3a33-460f-9686-cffdd5f7d99b,0,1,06250212-aeb1-4cb8-8785-ea71b1dad848,06250212-aeb1-4cb8-8785-ea71b1dad848,0,1,0c068a61-e5e6-4475-96fa-b7c1d825da42,0c068a61-e5e6-4475-96fa-b7c1d825da42,0,1,1047e34d-397a-42cc-80e6-1be755bd6462,1047e34d-397a-42cc-80e6-1be755bd6462,0,1,1cd473c3-4e36-47a9-b466-73d86ec244b0,1cd473c3-4e36-47a9-b466-73d86ec244b0,0,1,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,0,1,b406b5f9-eeaf-43a0-8930-067554d783c9,b406b5f9-eeaf-43a0-8930-067554d783c9,0,1,47718840-2939-4e30-a72c-a20c88ac4c17,47718840-2939-4e30-a72c-a20c88ac4c17,0,1,58a38994-9fe4-4783-967d-79d1141b90f3,58a38994-9fe4-4783-967d-79d1141b90f3,0,1,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,0,1,7c2e35a8-d05d-4e52-baee-a1e13585c502,7c2e35a8-d05d-4e52-baee-a1e13585c502,0,1,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,0,1,f551f78a-2f05-4932-ac33-cfa1b077f46f,f551f78a-2f05-4932-ac33-cfa1b077f46f,0,1,a96091a7-d3a5-4893-8440-f360231bf468,a96091a7-d3a5-4893-8440-f360231bf468,0,1,9ce6eef0-5280-4374-9714-474ac571e4e2,9ce6eef0-5280-4374-9714-474ac571e4e2,0,1,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,0,1,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,0,1,672c4741-6d7b-4d3e-baa7-389bef0625d7,672c4741-6d7b-4d3e-baa7-389bef0625d7,0,1,04398ec0-1c13-43f8-8f5d-7b7619592a4d,04398ec0-1c13-43f8-8f5d-7b7619592a4d,0,1,ce463861-92df-47f2-bd0f-4a2dbf72aacc,ce463861-92df-47f2-bd0f-4a2dbf72aacc,0,1,eca79a64-3d00-4178-b4eb-cf5468622c96,eca79a64-3d00-4178-b4eb-cf5468622c96,0,1,1487d68c-7a2f-48cf-8c80-4074072ed52c,1487d68c-7a2f-48cf-8c80-4074072ed52c,0,1,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,60cd8bc4-6a5d-4d36-83d0-76a8477eda6a,0,1,6dc4c216-e49f-4833-b45f-6060b67995ef,6dc4c216-e49f-4833-b45f-6060b67995ef,0,1,4655fa12-9169-4d08-bdab-9b3174d0b223,4655fa12-9169-4d08-bdab-9b3174d0b223,0,1,6c07ddfb-8823-4953-9905-9550b847dc3f,6c07ddfb-8823-4953-9905-9550b847dc3f,0,1,2362a8d5-dca2-4527-acc0-63782377f28a,2362a8d5-dca2-4527-acc0-63782377f28a,0,1,dfd6d85c-a734-4458-83b0-87b5949f9c68,dfd6d85c-a734-4458-83b0-87b5949f9c68,0,1,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,0,1,ba5574bd-53ca-413f-a245-272f468a80fb,ba5574bd-53ca-413f-a245-272f468a80fb,0,1,79b6ecf5-8a6b-44a4-9587-5f8764463228,79b6ecf5-8a6b-44a4-9587-5f8764463228,0,1,cd49148c-e385-4b75-a758-a93196e73dba,cd49148c-e385-4b75-a758-a93196e73dba,0,1,ece15c4e-4a4b-421b-9f00-10f698da476b,ece15c4e-4a4b-421b-9f00-10f698da476b,0,1,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,0,1,300ecdd6-144f-48c8-9fd4-6166f1de1047,300ecdd6-144f-48c8-9fd4-6166f1de1047,0,1,b6bbfb59-8249-47af-9394-be262f118811,b6bbfb59-8249-47af-9394-be262f118811,0,1,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,0,1,fb63d488-fb91-4d08-8f8c-f4836538216f,fb63d488-fb91-4d08-8f8c-f4836538216f,0,1,b8be6c09-6880-45d3-a2d1-06ad72d069c9,b8be6c09-6880-45d3-a2d1-06ad72d069c9,0,1,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,0,1,148dd521-8754-451b-803b-cbee7c3d3965,148dd521-8754-451b-803b-cbee7c3d3965,0,1,38bc48c7-3938-47be-be3f-844f19561301,38bc48c7-3938-47be-be3f-844f19561301,0,1,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,0,1,147038fb-6154-41f3-aad6-547db27d1e43,147038fb-6154-41f3-aad6-547db27d1e43,0,1,832fa9d3-deab-4c57-b6e2-dee5d24d6100,832fa9d3-deab-4c57-b6e2-dee5d24d6100,0,1,dd4270ef-6b4c-491e-8871-959dbec14c53,dd4270ef-6b4c-491e-8871-959dbec14c53,0,1,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,0,1,8ccd9be8-ef26-49b9-8cee-03ae4e500386,8ccd9be8-ef26-49b9-8cee-03ae4e500386,0,1,ddca925c-fdcd-40ce-a504-4fca1758de3f,ddca925c-fdcd-40ce-a504-4fca1758de3f,0,1,f64de21f-5a7c-4a1a-a929-07fc53049f6c,f64de21f-5a7c-4a1a-a929-07fc53049f6c,0,1,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,0,1,ea653eca-f96a-447d-8b09-7a7cb6929ed6,ea653eca-f96a-447d-8b09-7a7cb6929ed6,0,1,5efc4bc4-b711-4620-8d2e-9d947c6cc141,5efc4bc4-b711-4620-8d2e-9d947c6cc141,0,1,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,0,1,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,0,1,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,0,1,2b72fe1c-afe1-4905-8db2-2bb1baca6295,2b72fe1c-afe1-4905-8db2-2bb1baca6295,0,1,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,0,1,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,0,1,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,ce5f5470-b704-4f55-8dc8-17cf2c2b367a,0,1,fa44433b-1c44-45a0-9487-47aa092442cf,fa44433b-1c44-45a0-9487-47aa092442cf,0,1,041cecfd-cef2-45d9-90e8-afe0d97d2d95,041cecfd-cef2-45d9-90e8-afe0d97d2d95,0,1,7e4222fd-fb98-4ae5-9d98-d41c3d572a0c,7e4222fd-fb98-4ae5-9d98-d41c3d572a0c,0,1,d9d14a24-c023-4b69-ad57-30d1474e1232,d9d14a24-c023-4b69-ad57-30d1474e1232,0,1,0943dd00-1653-4760-a9fe-ebc083ffa660,0943dd00-1653-4760-a9fe-ebc083ffa660,0,1,4fb8564e-2338-4c23-84a4-31f768047ced,4fb8564e-2338-4c23-84a4-31f768047ced,0,1,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,0,1,f93c9a7f-0249-421e-b3d0-55f02d130017,f93c9a7f-0249-421e-b3d0-55f02d130017,0,1,062c507a-9d35-4eb5-bb91-d106a535a503,062c507a-9d35-4eb5-bb91-d106a535a503,0,1,fd317d96-380e-4ee7-a25b-401e8521cc7a,fd317d96-380e-4ee7-a25b-401e8521cc7a,0,1,3b380a63-9232-42c2-bfa2-e8fc89448bbd,3b380a63-9232-42c2-bfa2-e8fc89448bbd,0,1,e18b4527-8727-4a10-9e99-a80012debe6c,e18b4527-8727-4a10-9e99-a80012debe6c,0,1,1ed910db-e434-4efd-9b12-c25353a31d5a,1ed910db-e434-4efd-9b12-c25353a31d5a,0,1,10556a26-ea4b-46b4-84d1-175eb13b333f,10556a26-ea4b-46b4-84d1-175eb13b333f,0,1,f1e600b0-55ed-4611-b147-f04d5621796b,f1e600b0-55ed-4611-b147-f04d5621796b,1,0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,1,0,101a4eb3-cdda-47af-8c69-615a6920347a,101a4eb3-cdda-47af-8c69-615a6920347a,1,0,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,1,0,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,1,0,f79bada2-838f-4e4f-a017-935cf671a70c,f79bada2-838f-4e4f-a017-935cf671a70c,1,0,ed394820-a216-4c4b-81ae-5dea33ced43b,ed394820-a216-4c4b-81ae-5dea33ced43b,1,0,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,1,0,8a310493-c06f-46db-b2b5-14d6ed203312,8a310493-c06f-46db-b2b5-14d6ed203312,1,0,b68ec95b-64f3-4a2b-9683-231d50f01eeb,b68ec95b-64f3-4a2b-9683-231d50f01eeb,1,0,4a008342-f72f-4ca1-bad1-64b59b509911,4a008342-f72f-4ca1-bad1-64b59b509911,1,0,cefa1723-a4d4-44c4-bd57-ffa713f9306c,cefa1723-a4d4-44c4-bd57-ffa713f9306c,1,0,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,1,0,4920aabf-6f53-4f91-932a-8ace24631a74,4920aabf-6f53-4f91-932a-8ace24631a74,1,0,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,1,0,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,1,0,bbec9c3d-31dd-484e-ab32-41ef845f1370,bbec9c3d-31dd-484e-ab32-41ef845f1370,1,0,8692ba41-d91d-4af0-8aba-69dd5409d593,8692ba41-d91d-4af0-8aba-69dd5409d593,1,0,5bfd74f4-811a-45db-b33d-8f93ba9c873a,5bfd74f4-811a-45db-b33d-8f93ba9c873a,1,0,a95b564a-c895-40f2-b947-ea08462bb2a0,a95b564a-c895-40f2-b947-ea08462bb2a0,1,0,ca63ca2f-703d-4317-8c5d-0650ea638f3f,ca63ca2f-703d-4317-8c5d-0650ea638f3f,1,0,aa2256c7-9847-40a5-9e49-11c508e0d45b,aa2256c7-9847-40a5-9e49-11c508e0d45b,1,0,a04493f4-508c-4047-b0e3-b7d4bde6427b,a04493f4-508c-4047-b0e3-b7d4bde6427b,1,0,418982cd-d403-47cf-a7ef-993a36104947,418982cd-d403-47cf-a7ef-993a36104947,1,0,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,1,0,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,1,0,35eea3b8-d017-442a-b5a0-a1571165b9a9,35eea3b8-d017-442a-b5a0-a1571165b9a9,1,0,7e84901c-cb7f-437c-a135-0902cd47acb6,7e84901c-cb7f-437c-a135-0902cd47acb6,1,0,c4d67026-2c97-4126-b8be-49aa6f567e2d,c4d67026-2c97-4126-b8be-49aa6f567e2d,1,0,fda2906d-f499-4016-b13a-99f7f713b898,fda2906d-f499-4016-b13a-99f7f713b898,1,0,da2b47f5-4109-4f72-a4a5-70be24a6881f,da2b47f5-4109-4f72-a4a5-70be24a6881f,1,0,849f034e-85dc-4515-aae6-240c1e0d46d9,849f034e-85dc-4515-aae6-240c1e0d46d9,1,0,de4d37c9-b278-4c0c-bc10-1b63ecd72947,de4d37c9-b278-4c0c-bc10-1b63ecd72947,1,0,1c7e9baa-7728-4afd-829a-806cee13ecdb,1c7e9baa-7728-4afd-829a-806cee13ecdb,1,0,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,1,0,5a741cf6-8160-4409-9396-2e6d1e67e6fa,5a741cf6-8160-4409-9396-2e6d1e67e6fa,1,0,8242daae-181a-47df-b28e-c1de3fce0359,8242daae-181a-47df-b28e-c1de3fce0359,1,0,5fbea8c7-48e3-4ed0-a8d0-cf942b37a166,5fbea8c7-48e3-4ed0-a8d0-cf942b37a166,1,0,5cc3a29d-aa98-42bf-9800-f584229c8e46,5cc3a29d-aa98-42bf-9800-f584229c8e46,1,0,db82191f-77bd-44da-8b33-86f01018e25a,db82191f-77bd-44da-8b33-86f01018e25a,1,0,acfa1919-07ce-4464-8552-6b104e284dca,acfa1919-07ce-4464-8552-6b104e284dca,1,0,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,1,0,f4cff4ff-68e9-4072-971e-1b359d3aa980,f4cff4ff-68e9-4072-971e-1b359d3aa980,1,0,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,1,0,fdb012c9-583a-42af-95da-070e75a58078,fdb012c9-583a-42af-95da-070e75a58078,1,0,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,1,0,7d069b11-cddd-463d-97be-3cbeaaf0954c,7d069b11-cddd-463d-97be-3cbeaaf0954c,1,0,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,1,0,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,1,0,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,1,0,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,1,0,b9004626-915c-44c8-9cb7-25e5b627ee83,b9004626-915c-44c8-9cb7-25e5b627ee83,1,0,63c6cfad-124d-491a-829d-b298463c95e6,63c6cfad-124d-491a-829d-b298463c95e6,1,0,3da31d2f-24dd-469b-bd3b-073fa3b3d585,3da31d2f-24dd-469b-bd3b-073fa3b3d585,1,0,737404de-5b9d-4445-81c5-2c5b50b36846,737404de-5b9d-4445-81c5-2c5b50b36846,1,0,1ae364d3-0bec-4089-af23-c60d2a274c85,1ae364d3-0bec-4089-af23-c60d2a274c85,1,0,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1,0,f11ffcfd-3588-4785-b222-cebe80455303,f11ffcfd-3588-4785-b222-cebe80455303,1,0,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,1,0,bfdc6346-db5b-427f-acca-9b48db8fefd0,bfdc6346-db5b-427f-acca-9b48db8fefd0,1,0,1c3f258c-345e-47f6-9e29-98b1222fb348,1c3f258c-345e-47f6-9e29-98b1222fb348,1,0,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,1,0,f39b4559-cc42-494f-b856-bd8e575ad75b,f39b4559-cc42-494f-b856-bd8e575ad75b,1,0,35c938f4-065f-47f5-a75b-637ed0080725,35c938f4-065f-47f5-a75b-637ed0080725,0,1,e14c0841-226c-4c79-bec9-cfc8d2c3a160,e14c0841-226c-4c79-bec9-cfc8d2c3a160,0,1,6f3c5b90-b030-4267-a973-33d12c2c7680,6f3c5b90-b030-4267-a973-33d12c2c7680,0,1,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,1ff8210b-26c5-4429-b580-7c6ec7c9b63a,0,1,b107a4a8-0db8-44f4-93f7-9f231e850398,b107a4a8-0db8-44f4-93f7-9f231e850398,0,1,88b879b7-1bb3-4478-b569-35bdb5c56939,88b879b7-1bb3-4478-b569-35bdb5c56939,0,1,7a62d031-c340-4b1e-90af-fff697a2e979,7a62d031-c340-4b1e-90af-fff697a2e979,0,1,18bf6916-83cc-41e5-a35b-1489450ae632,18bf6916-83cc-41e5-a35b-1489450ae632,0,1,ebab97cf-5335-4648-9845-8ca41f79fb49,ebab97cf-5335-4648-9845-8ca41f79fb49,0,1,bb29fa44-6772-4426-a0b8-422115e14288,bb29fa44-6772-4426-a0b8-422115e14288,0,1,a5cc5ae2-be80-4957-8aca-9e477433dfcc,a5cc5ae2-be80-4957-8aca-9e477433dfcc,0,1,62fa393c-687c-49bf-8a25-81adc04430fb,62fa393c-687c-49bf-8a25-81adc04430fb,0,1,36d7d739-b198-487d-8644-76589356c2ec,36d7d739-b198-487d-8644-76589356c2ec,0,1,13fcf1e8-730e-436f-b316-6bcb8301f894,13fcf1e8-730e-436f-b316-6bcb8301f894,0,1,904e1209-91d8-49b1-b291-364ef728cbbf,904e1209-91d8-49b1-b291-364ef728cbbf,0,1,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,1198f2ee-b8a8-456d-9461-61bc5d42c7a1,0,1,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,b8ecb7f0-ef40-4d31-9ec2-a731439d3200,0,1,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,0,1,e51ae56c-d311-46b7-8d4c-19a432f4cd16,e51ae56c-d311-46b7-8d4c-19a432f4cd16,0,1,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,0,1,40d3ed07-3b56-4c9f-8b96-d94455202ef0,40d3ed07-3b56-4c9f-8b96-d94455202ef0,0,1,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,0,1,84282afa-21f5-40db-9386-e6f741c9a06c,84282afa-21f5-40db-9386-e6f741c9a06c,0,1,5b3b3da9-8619-4fbd-b140-3528875cd179,5b3b3da9-8619-4fbd-b140-3528875cd179,0,1,99e5e866-7ac6-4916-ab66-3e2909822c56,99e5e866-7ac6-4916-ab66-3e2909822c56,0,1,03363877-2752-4a03-95f2-d73b732e0bfd,03363877-2752-4a03-95f2-d73b732e0bfd,0,1,8d9d2284-e592-44c5-93bb-247037ab6b95,8d9d2284-e592-44c5-93bb-247037ab6b95,0,1,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0,1,78051e10-74ab-44be-adca-e4c93824a386,78051e10-74ab-44be-adca-e4c93824a386,0,1,73629419-83d8-4727-88a9-76c851d104c9,73629419-83d8-4727-88a9-76c851d104c9,0,1,cadb54f0-dcff-4f96-983e-a309fd72f330,cadb54f0-dcff-4f96-983e-a309fd72f330,0,1,a9c3065b-db68-4f59-9235-33f9fbfdaafd,a9c3065b-db68-4f59-9235-33f9fbfdaafd,0,1,3715cf3d-0abc-4711-8ac9-d41f0be7878f,3715cf3d-0abc-4711-8ac9-d41f0be7878f,0,1,8e8d8078-8b32-4c24-b26e-89a92bf60160,8e8d8078-8b32-4c24-b26e-89a92bf60160,0,1,f96cbb27-7619-41e0-8577-e623ef02dc58,f96cbb27-7619-41e0-8577-e623ef02dc58,0,1,d74dfd31-2016-435b-8652-15fdbca59490,d74dfd31-2016-435b-8652-15fdbca59490,0,1,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,0,1,27651e0e-d560-434b-a49c-f473a5b20c4d,27651e0e-d560-434b-a49c-f473a5b20c4d,0,1,dab1491b-0685-442d-b945-2bfde3f37933,dab1491b-0685-442d-b945-2bfde3f37933,0,1,ce85554b-81ba-4149-a951-d09bdc14fa16,ce85554b-81ba-4149-a951-d09bdc14fa16,0,1,23a1ef35-1469-44ea-8535-fa9c7f535cae,23a1ef35-1469-44ea-8535-fa9c7f535cae,0,1,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,0,1,2558d812-ac0a-49ba-87db-3f661209a3c4,2558d812-ac0a-49ba-87db-3f661209a3c4,0,1,20d712ef-77c1-4374-92e1-f20a3ebc7eab,20d712ef-77c1-4374-92e1-f20a3ebc7eab,0,1,65d23ce8-e326-45ee-86b0-6dcf35797201,65d23ce8-e326-45ee-86b0-6dcf35797201,0,1,a2683c3f-1b21-47d8-951d-7d30cde51efc,a2683c3f-1b21-47d8-951d-7d30cde51efc,0,1,54c77053-1728-4914-a354-73fe8853a0e1,54c77053-1728-4914-a354-73fe8853a0e1,0,1,21136691-078f-4bf7-bddd-f41416a76d86,21136691-078f-4bf7-bddd-f41416a76d86,0,1,30a121c7-c4f5-45c4-9504-9778ed85d9e3,30a121c7-c4f5-45c4-9504-9778ed85d9e3,0,1,c68e2157-2541-4f80-966a-d68ce603f131,c68e2157-2541-4f80-966a-d68ce603f131,0,1,e5dfee58-f748-48ee-81a3-7c6133f06365,e5dfee58-f748-48ee-81a3-7c6133f06365,0,1,68500931-89e0-491e-aba8-b013c9e6f8c3,68500931-89e0-491e-aba8-b013c9e6f8c3,0,1,70b79e56-bb71-4f38-93cf-94dda79d9b4c,70b79e56-bb71-4f38-93cf-94dda79d9b4c,0,1,5c4c9931-3fb0-47a8-9e4f-d552de12b355,5c4c9931-3fb0-47a8-9e4f-d552de12b355,0,1,2a498baf-ec2e-4dda-b568-801bb60db225,2a498baf-ec2e-4dda-b568-801bb60db225,0,1,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,0,1,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,0,1,35989876-16b1-4b02-9381-444a06a7a21d,35989876-16b1-4b02-9381-444a06a7a21d,0,1,f7608000-1e8a-4ca4-afb7-e04ef547b70a,f7608000-1e8a-4ca4-afb7-e04ef547b70a,0,1,26cea519-19d0-4707-be0a-1a43fde6e563,26cea519-19d0-4707-be0a-1a43fde6e563,0,1,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,0,1,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,0,1,60c04f0a-78a8-4c55-8844-b86906350fd1,60c04f0a-78a8-4c55-8844-b86906350fd1,0,1,851306a7-8847-4b43-8214-898bfc24b0ab,851306a7-8847-4b43-8214-898bfc24b0ab,0,1,af8d4bc9-2f0f-44d3-89ce-2593877055c8,af8d4bc9-2f0f-44d3-89ce-2593877055c8,0,1,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,0,1,eb35bff2-8467-48fe-bf93-ece2aa40f506,eb35bff2-8467-48fe-bf93-ece2aa40f506,0,1,68cf55da-b29e-4a65-815b-c9cdc8e5888e,68cf55da-b29e-4a65-815b-c9cdc8e5888e,0,1,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,0,1,1041ed81-c1f7-43b2-9087-914865a3076e,1041ed81-c1f7-43b2-9087-914865a3076e,0,1,5d7174d2-42b3-4e12-b705-4209dd73b53b,5d7174d2-42b3-4e12-b705-4209dd73b53b,0,1,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,0,1,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,0,1,5a4c6511-f8ed-40e4-a251-e28f62629cf2,5a4c6511-f8ed-40e4-a251-e28f62629cf2,0,1,cfe59dfd-a509-4f83-b926-b3ff94234a43,cfe59dfd-a509-4f83-b926-b3ff94234a43,0,1,17df1591-61b0-4204-8379-8d1f58445968,17df1591-61b0-4204-8379-8d1f58445968,0,1,9020fa9d-e7de-4574-ab65-db6651b5b610,9020fa9d-e7de-4574-ab65-db6651b5b610,0,1,e83ad33d-27df-4181-afd2-b7f416e6e705,e83ad33d-27df-4181-afd2-b7f416e6e705,0,1,3309648c-aae6-4684-ae8d-7ed636bc3468,3309648c-aae6-4684-ae8d-7ed636bc3468,0,1,f9aa933e-6684-48de-b802-96c8e61b1fe6,f9aa933e-6684-48de-b802-96c8e61b1fe6,0,1,9de4d430-95ec-4435-b3e8-4fc85778d517,9de4d430-95ec-4435-b3e8-4fc85778d517,0,1,205b8908-fa21-42bd-bff0-fb95e6787f15,205b8908-fa21-42bd-bff0-fb95e6787f15,0,1,8a9ab11b-5bb5-4da9-9053-8f9e8198d019,8a9ab11b-5bb5-4da9-9053-8f9e8198d019,0,1,5320abf1-b09b-4de0-9adf-4cb1da31df6f,5320abf1-b09b-4de0-9adf-4cb1da31df6f,0,1,3916ddbd-9023-42a4-849e-9cda6e591408,3916ddbd-9023-42a4-849e-9cda6e591408,0,1,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,0,1,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,0,1,96d66cdd-d40c-43a3-92ce-40aef2101b64,96d66cdd-d40c-43a3-92ce-40aef2101b64,0,1,9daa8270-4782-4d83-af03-c8d2b11057ff,9daa8270-4782-4d83-af03-c8d2b11057ff,0,1,4b8927df-e124-4bf6-9d70-6e91b4796d90,4b8927df-e124-4bf6-9d70-6e91b4796d90,0,1,871b63a2-c7a6-4343-8d8b-7dda1b0def87,871b63a2-c7a6-4343-8d8b-7dda1b0def87,0,1,52b45b3d-b01b-4aac-8a1e-e256957c39c3,52b45b3d-b01b-4aac-8a1e-e256957c39c3,0,1,fc78d8df-ab27-4544-a65c-73908b9c5425,fc78d8df-ab27-4544-a65c-73908b9c5425,0,1,f8a090d2-b2d1-4ead-a8bf-6325a7552743,f8a090d2-b2d1-4ead-a8bf-6325a7552743,0,1,84f935da-9fe5-44ea-845b-b447b8b0a6f5,84f935da-9fe5-44ea-845b-b447b8b0a6f5,0,1,caf79125-bde8-4f52-8ad2-f915c7a884cc,caf79125-bde8-4f52-8ad2-f915c7a884cc,0,1,a9a0db31-6808-4790-be72-f345197b0c6e,a9a0db31-6808-4790-be72-f345197b0c6e,0,1,36554213-9af4-4fec-8944-35f50b306eda,36554213-9af4-4fec-8944-35f50b306eda,0,1,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,0,1,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,0,1,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,0,1,33343620-673e-4aa3-9e58-c6a25f738001,33343620-673e-4aa3-9e58-c6a25f738001,0,1,8aaf780f-ed74-4f44-9598-c14180053ff9,8aaf780f-ed74-4f44-9598-c14180053ff9,0,1,dbd4d09d-f410-4453-9143-bd72da5464cc,dbd4d09d-f410-4453-9143-bd72da5464cc,0,1,f1bc5034-a4b5-4fa9-97db-d43c2b7e8d36,f1bc5034-a4b5-4fa9-97db-d43c2b7e8d36,0,1,c4fe10b6-d025-4736-be23-3113bd7fe7b4,c4fe10b6-d025-4736-be23-3113bd7fe7b4,0,1,65530aca-7cf2-4a52-b5be-5dcbc15a049e,65530aca-7cf2-4a52-b5be-5dcbc15a049e,0,1,15eb2c2d-305d-42c0-9aec-936b82114bdb,15eb2c2d-305d-42c0-9aec-936b82114bdb,0,1,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,0,1,cbca7272-2aae-4e21-b3f5-12786f085648,cbca7272-2aae-4e21-b3f5-12786f085648,0,1,7718bd0b-7b8a-4ffc-b228-f05683b5531a,7718bd0b-7b8a-4ffc-b228-f05683b5531a,0,1,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,0,1,881f53bc-a52e-4312-b09d-3d3f53ddf84b,881f53bc-a52e-4312-b09d-3d3f53ddf84b,0,1,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,0,1,e3476d0e-0ab4-4734-9261-04aef6281086,e3476d0e-0ab4-4734-9261-04aef6281086,0,1,945ae8d2-b74a-41e9-b740-c82acdd40d04,945ae8d2-b74a-41e9-b740-c82acdd40d04,0,1,29c37223-de1c-49fb-8488-77e44dd79edd,29c37223-de1c-49fb-8488-77e44dd79edd,0,1,19bc0dd8-9e6b-4855-bc42-b4e98443163f,19bc0dd8-9e6b-4855-bc42-b4e98443163f,0,1,a61e10af-eaba-4e7a-a641-65d77453a559,a61e10af-eaba-4e7a-a641-65d77453a559,0,1,e9e242b7-0077-4c47-8f45-df50e7cc90cf,e9e242b7-0077-4c47-8f45-df50e7cc90cf,0,1,820383e1-9b95-4c0f-8464-722f1fe64ad5,820383e1-9b95-4c0f-8464-722f1fe64ad5,0,1,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,0,1,292bfe6b-703e-40cb-856d-abb470e6709f,292bfe6b-703e-40cb-856d-abb470e6709f,0,1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,0,1,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,0,1,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,0,1,8811ea1a-1221-47b7-9574-3f36ff15a3cf,8811ea1a-1221-47b7-9574-3f36ff15a3cf,0,1,a84891cc-e996-489a-abde-5b5af166a057,a84891cc-e996-489a-abde-5b5af166a057,0,1,1d715463-691b-4c01-ae39-57c261f2a6ad,1d715463-691b-4c01-ae39-57c261f2a6ad,0,1,4c3d007f-a62c-4fd9-beda-58dbf08ad188,4c3d007f-a62c-4fd9-beda-58dbf08ad188,0,1,c35373a9-f0b0-4ddb-a985-409ac9c64609,c35373a9-f0b0-4ddb-a985-409ac9c64609,0,1,c1c40916-fee5-46e3-90fc-10e7595866c9,c1c40916-fee5-46e3-90fc-10e7595866c9,0,1,19a307b1-9ef0-4fc6-bf4f-7636e9118399,19a307b1-9ef0-4fc6-bf4f-7636e9118399,0,1,666244a4-5636-4405-89dd-bbd8f4278071,666244a4-5636-4405-89dd-bbd8f4278071,0,1,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,0,1,29a627a9-debc-4074-88d0-ec3561e1ef9c,29a627a9-debc-4074-88d0-ec3561e1ef9c,0,1,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,0,1,39f5e272-9a10-40b0-8a10-92037828b206,39f5e272-9a10-40b0-8a10-92037828b206,0,1,87dad256-122b-4d7e-b249-a2c313a9cf33,87dad256-122b-4d7e-b249-a2c313a9cf33,0,1,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,0,1,958033a6-2a8e-473a-903b-34eee6507f5a,958033a6-2a8e-473a-903b-34eee6507f5a,0,1,b722d6e1-fd6f-4bb4-923d-01764393722d,b722d6e1-fd6f-4bb4-923d-01764393722d,0,1,ac5f945e-2d03-44fb-a8cf-5d786194cefd,ac5f945e-2d03-44fb-a8cf-5d786194cefd,0,1,698ec00f-bf75-420e-81ab-a98808daf3f7,698ec00f-bf75-420e-81ab-a98808daf3f7,0,1,f441907c-d02e-431e-baf4-1854e48a1f50,f441907c-d02e-431e-baf4-1854e48a1f50,0,1,4ad722ca-10fc-4a83-91c9-ef0012685f89,4ad722ca-10fc-4a83-91c9-ef0012685f89,0,1,783dd4ba-a597-45ba-8989-2ed5224d62bc,783dd4ba-a597-45ba-8989-2ed5224d62bc,0,1,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,0,1,d9e08c12-1999-41d8-b530-90187303be0a,d9e08c12-1999-41d8-b530-90187303be0a,0,1,dad9710a-73ca-4e0d-b98b-75f955d0822d,dad9710a-73ca-4e0d-b98b-75f955d0822d,0,1,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,0,1,2191939f-6f71-47c9-a3d2-57acbf7f411e,2191939f-6f71-47c9-a3d2-57acbf7f411e,0,1,19b9cbbb-1fcc-4492-9385-687742cb3d0b,19b9cbbb-1fcc-4492-9385-687742cb3d0b,0,1,247c41dd-c8dc-43dd-b348-1ba31ee92065,247c41dd-c8dc-43dd-b348-1ba31ee92065,0,1,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,0,1,da673406-078d-44c8-9d27-80ef172c4b5e,da673406-078d-44c8-9d27-80ef172c4b5e,0,1,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,0,1,a2c36563-126d-4c3a-9714-5b7a4903073b,a2c36563-126d-4c3a-9714-5b7a4903073b,0,1,2e4da82c-dddb-4462-b34f-6511cd2a8356,2e4da82c-dddb-4462-b34f-6511cd2a8356,0,1,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,0,1,2976c29f-f482-463d-8f6e-6a632fb50893,2976c29f-f482-463d-8f6e-6a632fb50893,0,1,701964a1-7762-45ee-a9a4-41dd9ce94783,701964a1-7762-45ee-a9a4-41dd9ce94783,0,1,55d1909e-f552-441f-8e14-47d2e604cf6a,55d1909e-f552-441f-8e14-47d2e604cf6a,0,1,eae627db-c52b-4e41-94d1-58db28cd0063,eae627db-c52b-4e41-94d1-58db28cd0063,0,1,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,0,1,0a646724-b49d-42cd-82e6-e800466ed127,0a646724-b49d-42cd-82e6-e800466ed127,0,1,47058e36-a281-43a5-a41d-691b3ef32b5b,47058e36-a281-43a5-a41d-691b3ef32b5b,0,1,e620e93c-4382-478f-a700-ad2faa67362b,e620e93c-4382-478f-a700-ad2faa67362b,0,1,a4a8693b-dc91-4762-92e6-35360c8768db,a4a8693b-dc91-4762-92e6-35360c8768db,0,1,2ae236ec-28a7-44e0-a0ba-be62fe52d817,2ae236ec-28a7-44e0-a0ba-be62fe52d817,0,1,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,0,1,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,0,1,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,0,1,ed137e05-1996-411d-9927-45a3d7e3ee3b,ed137e05-1996-411d-9927-45a3d7e3ee3b,0,1,fbebf341-9842-41e1-8e4d-490fa02065ce,fbebf341-9842-41e1-8e4d-490fa02065ce,0,1,067f88f6-ccd2-491e-a466-94345a1f220f,067f88f6-ccd2-491e-a466-94345a1f220f,0,1,642154b8-97da-4c4f-bf34-c1124215077d,642154b8-97da-4c4f-bf34-c1124215077d,0,1,abc10867-39ae-46bf-8bd7-90f645919235,abc10867-39ae-46bf-8bd7-90f645919235,0,1,b3396504-8ccb-43d6-9a0f-ab259ba0a542,b3396504-8ccb-43d6-9a0f-ab259ba0a542,0,1,f59f91c5-026a-4dc5-996e-0d59814a9604,f59f91c5-026a-4dc5-996e-0d59814a9604,0,1,aac9966f-e9ea-4106-97bb-6b9822939bc7,aac9966f-e9ea-4106-97bb-6b9822939bc7,0,1,a752fba8-5084-4fa2-9d0b-7074a42b1312,a752fba8-5084-4fa2-9d0b-7074a42b1312,0,1,640d7486-8abd-40aa-a244-2ed899b7225a,640d7486-8abd-40aa-a244-2ed899b7225a,0,1,c05f87b4-ec5f-4d14-981f-02ca8ba89863,c05f87b4-ec5f-4d14-981f-02ca8ba89863,0,1,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,0,1,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,0,1,875d1fc1-8172-4e48-8192-035882e1665d,875d1fc1-8172-4e48-8192-035882e1665d,0,1,26132b28-98cc-4690-92ad-139f91839ba2,26132b28-98cc-4690-92ad-139f91839ba2,0,1,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0,1,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,0,1,ca81e0ea-c428-47f9-aedb-078214104a2f,ca81e0ea-c428-47f9-aedb-078214104a2f,0,1,9518d09c-6996-4439-9278-3c71d5ae8fce,9518d09c-6996-4439-9278-3c71d5ae8fce,0,1,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,0,1,5fbd9a13-012d-4c36-b72c-da3bc4157cff,5fbd9a13-012d-4c36-b72c-da3bc4157cff,0,1,1126157b-64c0-4d64-8551-f31c5ed0fd29,1126157b-64c0-4d64-8551-f31c5ed0fd29,0,1,6ae6e515-5cd4-4eca-8602-c6abe6d66276,6ae6e515-5cd4-4eca-8602-c6abe6d66276,0,1,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,0,1,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,0,1,35a28677-0653-47f9-82e1-02c4b9266fee,35a28677-0653-47f9-82e1-02c4b9266fee,0,1,2e17464f-9cef-4812-865f-4eb77ff16b6a,2e17464f-9cef-4812-865f-4eb77ff16b6a,0,1,e5ecbb1f-981d-4928-9335-22216879f7e2,e5ecbb1f-981d-4928-9335-22216879f7e2,0,1,461be12a-9f16-4826-978a-436608ca8733,461be12a-9f16-4826-978a-436608ca8733,0,1,9b143299-d300-4b6c-b667-5552fb3bdcde,9b143299-d300-4b6c-b667-5552fb3bdcde,0,1,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0,1,74973d06-f57d-403e-945c-5cd2f4fc4869,74973d06-f57d-403e-945c-5cd2f4fc4869,0,1,259564b8-172e-4eed-9360-d561ec6dad69,259564b8-172e-4eed-9360-d561ec6dad69,0,1,91c799d7-2b3d-4d1a-87ff-221057a428c6,91c799d7-2b3d-4d1a-87ff-221057a428c6,0,1,a50fcacc-6d2d-496c-bea0-9c73cd153437,a50fcacc-6d2d-496c-bea0-9c73cd153437,0,1,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,0,1,0fb72f4b-e6f6-4b70-8ec7-fdb6d4ad928e,0fb72f4b-e6f6-4b70-8ec7-fdb6d4ad928e,0,1,a5633248-8611-4e9b-b223-2f59e7b84a65,a5633248-8611-4e9b-b223-2f59e7b84a65,0,1,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,0,1,e40b8882-737a-40c0-83b4-c35dc042f4a5,e40b8882-737a-40c0-83b4-c35dc042f4a5,0,1,d60c1e9d-1395-4293-8462-6ea2c93a0c86,d60c1e9d-1395-4293-8462-6ea2c93a0c86,0,1,5a2d5d8a-afd9-4954-9868-7c82bad00426,5a2d5d8a-afd9-4954-9868-7c82bad00426,0,1,26aea96b-20f8-4e35-b55f-4fe3602e6597,26aea96b-20f8-4e35-b55f-4fe3602e6597,0,1,a3a3a211-e361-4e41-a6f8-d731a366c163,a3a3a211-e361-4e41-a6f8-d731a366c163,0,1,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,4d5204ae-711d-4c31-8a18-280dbc9d2bf5,0,1,ca01417c-0ffd-4e00-91e8-93cd305be82d,ca01417c-0ffd-4e00-91e8-93cd305be82d,0,1,b84401f2-b8df-4105-8049-6236423d177d,b84401f2-b8df-4105-8049-6236423d177d,0,1,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,0,1,0a0af8bf-0caa-40df-9a69-71f98ca9ff89,0a0af8bf-0caa-40df-9a69-71f98ca9ff89,0,1,6ac7db0c-18ed-4d3b-956a-5985214db474,6ac7db0c-18ed-4d3b-956a-5985214db474,0,1,267103e0-6703-4a74-bb4f-af610d7ef332,267103e0-6703-4a74-bb4f-af610d7ef332,0,1,b98ca634-25a5-4366-af04-815ba34c8bb2,b98ca634-25a5-4366-af04-815ba34c8bb2,0,1,14d69108-4d26-401a-b7ae-2c86dadf831c,14d69108-4d26-401a-b7ae-2c86dadf831c,0,1,d6251f65-d366-4bc9-a5db-42063fe03594,d6251f65-d366-4bc9-a5db-42063fe03594,0,1,22c60cbc-429f-40d9-bf8b-681b7786c41d,22c60cbc-429f-40d9-bf8b-681b7786c41d,0,1,31dd320b-06aa-4314-9914-2c2420f572a1,31dd320b-06aa-4314-9914-2c2420f572a1,0,1,56730848-3bef-4b8c-b449-fe9d09c9c374,56730848-3bef-4b8c-b449-fe9d09c9c374,0,1,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,0,1,91d8c5e4-eaec-4951-9224-16882fda08f6,91d8c5e4-eaec-4951-9224-16882fda08f6,0,1,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,0,1,4654d192-74bf-430f-abee-6f4dc431b182,4654d192-74bf-430f-abee-6f4dc431b182,0,1,d4655391-144c-4ba6-aee5-1edafebe862c,d4655391-144c-4ba6-aee5-1edafebe862c,0,1,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,0,1,4678c704-933a-45ef-9d41-89b8f39016bb,4678c704-933a-45ef-9d41-89b8f39016bb,0,1,8ceea1e8-42ce-469f-823a-ceffdbd6b112,8ceea1e8-42ce-469f-823a-ceffdbd6b112,0,1,086d69d6-e2fa-45cb-84b6-f8f3e2919160,086d69d6-e2fa-45cb-84b6-f8f3e2919160,0,1,6995ee71-5901-46d9-a5c1-b35d795bda20,6995ee71-5901-46d9-a5c1-b35d795bda20,0,1,e93a4293-0497-4f11-b8b9-40300104fb96,e93a4293-0497-4f11-b8b9-40300104fb96,0,1,93531e5d-5dfc-42e8-be52-2e83f37262b0,93531e5d-5dfc-42e8-be52-2e83f37262b0,0,1,61bf78c0-7004-4a74-b362-e979c7316e05,61bf78c0-7004-4a74-b362-e979c7316e05,0,1,c4351896-eff1-4e4d-8823-028d63a9d6bf,c4351896-eff1-4e4d-8823-028d63a9d6bf,0,1,475f83a2-ba5a-4072-94f8-1324b1f198a4,475f83a2-ba5a-4072-94f8-1324b1f198a4,0,1,cd7c15c1-c573-46c9-b109-339b8b54c3ee,cd7c15c1-c573-46c9-b109-339b8b54c3ee,0,1,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,0,1,deee8bde-381f-4094-8794-7a06248860dd,deee8bde-381f-4094-8794-7a06248860dd,0,1,2757ee75-4b36-4901-bff1-044708754edb,2757ee75-4b36-4901-bff1-044708754edb,0,1,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0,1,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,0,1,71144539-6472-4727-8887-0139f6221370,71144539-6472-4727-8887-0139f6221370,0,1,bff07da4-ae19-48a9-806b-14b285d42485,bff07da4-ae19-48a9-806b-14b285d42485,0,1,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,0,1,b0ccc05d-8d39-4f57-8e87-6846014f92ea,b0ccc05d-8d39-4f57-8e87-6846014f92ea,0,1,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,0,1,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,0,1,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,0,1,8986c155-54be-4b1b-b31a-5c00b88bc40d,8986c155-54be-4b1b-b31a-5c00b88bc40d,0,1,d91441cf-d793-4dfa-9225-f0c16818edde,d91441cf-d793-4dfa-9225-f0c16818edde,0,1,42a39785-144c-4d2d-92c6-fd8b345f687b,42a39785-144c-4d2d-92c6-fd8b345f687b,0,1,f3bd841b-fb36-4462-9627-b51801e563cd,f3bd841b-fb36-4462-9627-b51801e563cd,0,1,0a23f273-5589-4a48-be3a-eee7565749aa,0a23f273-5589-4a48-be3a-eee7565749aa,0,1,494eb9d9-4a10-4e85-b511-375408f21bbe,494eb9d9-4a10-4e85-b511-375408f21bbe,0,1,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,0,1,a275802f-937a-49f4-92da-fcdd185a036d,a275802f-937a-49f4-92da-fcdd185a036d,0,1,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,0,1,c05f15b0-a659-4473-b6d0-acebc4a2da57,c05f15b0-a659-4473-b6d0-acebc4a2da57,0,1,f2dc9319-ba60-421a-8340-be3e3a291393,f2dc9319-ba60-421a-8340-be3e3a291393,0,1,bf4eb62a-bc74-4845-bad2-58a2a8302a65,bf4eb62a-bc74-4845-bad2-58a2a8302a65,0,1,b66eb190-1c16-4f20-a94f-954bcdf313b8,b66eb190-1c16-4f20-a94f-954bcdf313b8,0,1,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,0,1,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,0,1,b953eafc-20be-4463-8c3e-903184e18402,b953eafc-20be-4463-8c3e-903184e18402,0,1,dcefdde9-645e-43c7-9244-384dadc75439,dcefdde9-645e-43c7-9244-384dadc75439,0,1,bbdfeebd-cda0-4911-8f31-553d751340a7,bbdfeebd-cda0-4911-8f31-553d751340a7,0,1,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,0,1,20aad006-5b1e-4cc2-94ef-668dd002667b,20aad006-5b1e-4cc2-94ef-668dd002667b,0,1,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,0,1,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,0,1,2befb2e3-7354-4a01-83d6-b24262704a5e,2befb2e3-7354-4a01-83d6-b24262704a5e,0,1,5b93975e-b2a4-4102-a060-2667f5813c94,5b93975e-b2a4-4102-a060-2667f5813c94,0,1,ca75d086-cd01-4f54-b57d-1b35bcb1272a,ca75d086-cd01-4f54-b57d-1b35bcb1272a,0,1,b4a27991-2e18-4ead-80e8-f2956a7539e3,b4a27991-2e18-4ead-80e8-f2956a7539e3,0,1,ac8c40d6-be1e-4733-be2e-ae83bde4ec15,ac8c40d6-be1e-4733-be2e-ae83bde4ec15,0,1,be900d20-c02d-476d-9ede-2bc5303ef6cb,be900d20-c02d-476d-9ede-2bc5303ef6cb,0,1,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,0,1,07b53437-cc8d-4834-a1e0-7007538b6eab,07b53437-cc8d-4834-a1e0-7007538b6eab,0,1,0dbec644-cb98-4368-ab76-5997259cbce7,0dbec644-cb98-4368-ab76-5997259cbce7,0,1,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,0,1,dcdc9c65-c2d5-4531-a325-f64b3861cbab,dcdc9c65-c2d5-4531-a325-f64b3861cbab,0,1,ca542a9e-3040-419f-9a98-2a8de230b734,ca542a9e-3040-419f-9a98-2a8de230b734,0,1,c9fc5155-1df3-4872-a83d-72872baf43c4,c9fc5155-1df3-4872-a83d-72872baf43c4,0,1,9f9adb67-66bd-4c28-8319-44ae097ae1fe,9f9adb67-66bd-4c28-8319-44ae097ae1fe,0,1,0bae3704-b370-48be-b094-f18a2e62ad1b,0bae3704-b370-48be-b094-f18a2e62ad1b,0,1,e097bf94-9235-4a27-b0eb-d6387d22cd62,e097bf94-9235-4a27-b0eb-d6387d22cd62,0,1,eccded1c-f3ca-40d3-a8cd-71947bfed7b8,eccded1c-f3ca-40d3-a8cd-71947bfed7b8,0,1,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,0,1,8d2bfd40-f185-4eab-b374-872d49310eb2,8d2bfd40-f185-4eab-b374-872d49310eb2,0,1,523de426-e5a6-49e0-8144-c637f80d8ddd,523de426-e5a6-49e0-8144-c637f80d8ddd,0,1,09256328-6205-4b04-b908-3287ae8ded75,09256328-6205-4b04-b908-3287ae8ded75,0,1,05a6e161-9791-4c5b-8753-bd6370cc4cc9,05a6e161-9791-4c5b-8753-bd6370cc4cc9,0,1,6362facc-bf95-4adf-8ee7-c65f90972a1c,6362facc-bf95-4adf-8ee7-c65f90972a1c,0,1,08dbba81-68fb-49ef-8aac-9631fcfa87c6,08dbba81-68fb-49ef-8aac-9631fcfa87c6,0,1,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,dd7191b6-cbc0-4b0b-a51a-c27a1e1720fa,0,1,8170a27d-45e9-48b1-860b-c2d9cc5961cd,8170a27d-45e9-48b1-860b-c2d9cc5961cd,0,1,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,0,1,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,0,1,f41d01ec-983a-4b39-9c11-a6d25d08df4f,f41d01ec-983a-4b39-9c11-a6d25d08df4f,0,1,3247e64e-b57e-4c33-8086-7ab93c5b6371,3247e64e-b57e-4c33-8086-7ab93c5b6371,0,1,e5dca369-dc9a-4332-a509-f734b8787e13,e5dca369-dc9a-4332-a509-f734b8787e13,0,1,722af623-156c-4e63-8b2a-93da760f1559,722af623-156c-4e63-8b2a-93da760f1559,0,1,5ff23123-450c-40ae-9b79-c540da53e2a0,5ff23123-450c-40ae-9b79-c540da53e2a0,0,1,dea9af9d-13c0-40d4-a9b0-1908e0a58795,dea9af9d-13c0-40d4-a9b0-1908e0a58795,0,1,9e9b8c05-787a-43c0-891d-3d9ad7e4976f,9e9b8c05-787a-43c0-891d-3d9ad7e4976f,0,1,1abeb10b-0558-4478-8f51-d0964ba3c274,1abeb10b-0558-4478-8f51-d0964ba3c274,0,1,38325a66-588a-4db0-8e0c-21d239408369,38325a66-588a-4db0-8e0c-21d239408369,0,1,7c27e885-33fd-4da2-a60d-50336c0189b0,7c27e885-33fd-4da2-a60d-50336c0189b0,0,1,4b849c66-6a36-4efd-815e-af4467c6f064,4b849c66-6a36-4efd-815e-af4467c6f064,0,1,f6939587-ff87-4eca-ae52-10e1bd2abfce,f6939587-ff87-4eca-ae52-10e1bd2abfce,0,1,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,0,1,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,0,1,3cb575a9-dc82-45e0-81f0-d651e12246da,3cb575a9-dc82-45e0-81f0-d651e12246da,0,1,01a73950-3e8f-4f56-903f-af0d9574e72e,01a73950-3e8f-4f56-903f-af0d9574e72e,0,1,14bd0844-c829-4325-aa7f-0f417bf955dc,14bd0844-c829-4325-aa7f-0f417bf955dc,0,1,7f1cd658-ca10-49c6-80ef-b8956f3269ea,7f1cd658-ca10-49c6-80ef-b8956f3269ea,0,1,b0d9086f-cef7-47a8-ad62-d85fea28ebda,b0d9086f-cef7-47a8-ad62-d85fea28ebda,0,1,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,0,1,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,0,1,49c010fc-f5cc-45f4-ba46-132e7661c3dd,49c010fc-f5cc-45f4-ba46-132e7661c3dd,0,1,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,0,1,2c02a558-8d12-44cf-be6b-9c399b9032e5,2c02a558-8d12-44cf-be6b-9c399b9032e5,0,1,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,0,1,9c267aa6-5f23-49f6-868a-3324ef2845ff,9c267aa6-5f23-49f6-868a-3324ef2845ff,0,1,495eeeee-d7bf-4063-99e2-86daa066451a,495eeeee-d7bf-4063-99e2-86daa066451a,0,1,b6184698-79e4-4c19-9440-092ccd9dabf8,b6184698-79e4-4c19-9440-092ccd9dabf8,0,1,7d01fc0c-378e-421d-ab70-6a418eed5941,7d01fc0c-378e-421d-ab70-6a418eed5941,0,1,6eeb4867-bf9d-48dc-b96b-934a0c293010,6eeb4867-bf9d-48dc-b96b-934a0c293010,0,1,c7f817ee-9f6a-454c-95a0-b279fd08055e,c7f817ee-9f6a-454c-95a0-b279fd08055e,0,1,e1803e54-ec5e-4a82-8097-5e2331820991,e1803e54-ec5e-4a82-8097-5e2331820991,0,1,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,f69ec1f9-826e-4eb4-b52c-3f6a3dfc3361,0,1,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,0,1,8506dbe9-7066-444b-83b6-fb2d71a336e7,8506dbe9-7066-444b-83b6-fb2d71a336e7,0,1,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,0,1,6686d828-3129-4d44-a8a2-a64657d424cb,6686d828-3129-4d44-a8a2-a64657d424cb,0,1,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,0,1,ce235ab9-1dec-459a-9fec-498c262ece56,ce235ab9-1dec-459a-9fec-498c262ece56,0,1,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,0,1,39355e82-30a6-431e-9697-e2c42e82de83,39355e82-30a6-431e-9697-e2c42e82de83,0,1,a9ae364f-b668-4fb4-b976-f227951ffb6b,a9ae364f-b668-4fb4-b976-f227951ffb6b,0,1,edc01b03-8b01-4551-939a-f7e257892040,edc01b03-8b01-4551-939a-f7e257892040,0,1,15d09274-9508-4f64-9ea3-678c5aa50f0f,15d09274-9508-4f64-9ea3-678c5aa50f0f,0,1,4debe032-12e4-4777-b2fc-70b150f2aad1,4debe032-12e4-4777-b2fc-70b150f2aad1,0,1,37558fa2-0833-46d6-9e4f-63d4a3136870,37558fa2-0833-46d6-9e4f-63d4a3136870,0,1,d92cb614-ed09-47db-b70b-d3e533c44c6a,d92cb614-ed09-47db-b70b-d3e533c44c6a,0,1,e660c8bf-af5f-4525-a56e-68925d2b96fa,e660c8bf-af5f-4525-a56e-68925d2b96fa,0,1,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,0,1,528d96cc-8838-49ea-8d76-ea56747882e0,528d96cc-8838-49ea-8d76-ea56747882e0,0,1,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,0,1,1681dd7a-de80-4b8d-9657-c9702a19d653,1681dd7a-de80-4b8d-9657-c9702a19d653,0,1,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,0,1,9f593f27-8009-40c0-94d6-53f177ce55f4,9f593f27-8009-40c0-94d6-53f177ce55f4,0,1,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,0,1,530a3164-4ef1-4b3b-8269-13764ef4bf15,530a3164-4ef1-4b3b-8269-13764ef4bf15,0,1,6df2bb92-558c-4453-9de4-e4176e8f93dc,6df2bb92-558c-4453-9de4-e4176e8f93dc,0,1,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0,1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,0,1,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0,1,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,0,1,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,0,1,be15e947-f671-4848-ada1-51239af73615,be15e947-f671-4848-ada1-51239af73615,0,1,d3e0dd8f-886a-4441-8f05-fd629da80f07,d3e0dd8f-886a-4441-8f05-fd629da80f07,0,1,6417d7c8-6436-4907-98eb-44cd7638f3f1,6417d7c8-6436-4907-98eb-44cd7638f3f1,0,1,ba49877b-6e30-4177-a67c-00e65aa498fb,ba49877b-6e30-4177-a67c-00e65aa498fb,0,1,25b39aeb-94c3-4199-9d56-5bd87e325bf2,25b39aeb-94c3-4199-9d56-5bd87e325bf2,0,1,b0b63551-4e83-4201-af9a-b4ab150c43a5,b0b63551-4e83-4201-af9a-b4ab150c43a5,0,1,2bd80198-4739-4e8f-9af1-40addc91a05b,2bd80198-4739-4e8f-9af1-40addc91a05b,0,1,33c66a15-e48e-406a-a77c-02af72ae96d5,33c66a15-e48e-406a-a77c-02af72ae96d5,0,1,ebd3dcc2-1176-4ee0-b590-ee39f85fb55b,ebd3dcc2-1176-4ee0-b590-ee39f85fb55b,0,1,77fe53c2-de9d-4483-97c9-f7d44e137d5e,77fe53c2-de9d-4483-97c9-f7d44e137d5e,0,1,593be64c-6792-46d9-8618-84c50c9ad9e4,593be64c-6792-46d9-8618-84c50c9ad9e4,0,1,208d29cb-040f-4282-b8e8-dda8417b8e92,208d29cb-040f-4282-b8e8-dda8417b8e92,0,1,9935d602-668e-4df9-a338-0f542def878b,9935d602-668e-4df9-a338-0f542def878b,0,1,459ed297-0c0d-4bdb-90a3-da387868f040,459ed297-0c0d-4bdb-90a3-da387868f040,0,1,ccb5b9a7-1a10-4803-b455-0350afe4b584,ccb5b9a7-1a10-4803-b455-0350afe4b584,0,1,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,0,1,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0,1,ba5e7c41-0442-4f74-ba41-631d864eafb4,ba5e7c41-0442-4f74-ba41-631d864eafb4,0,1,3913f78f-ce34-4ae3-840a-ccdf06319cbb,3913f78f-ce34-4ae3-840a-ccdf06319cbb,0,1,104cf3e3-2104-4ac2-bdc6-792750a63ea0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,0,1,c86aa97a-5898-4cb2-ae62-598bddf8e99f,c86aa97a-5898-4cb2-ae62-598bddf8e99f,0,1,d3c9b925-6b74-42db-8b21-ab21d24797d1,d3c9b925-6b74-42db-8b21-ab21d24797d1,0,1,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,0,1,39261a2d-7c46-40b1-9f8f-02d970aa04bc,39261a2d-7c46-40b1-9f8f-02d970aa04bc,0,1,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,0,1,124a516f-cdab-49ce-95d1-359921140342,124a516f-cdab-49ce-95d1-359921140342,0,1,e4294611-a770-4e67-9578-a1f370879476,e4294611-a770-4e67-9578-a1f370879476,0,1,c5033dd2-0911-4124-8688-dc9dabf3155f,c5033dd2-0911-4124-8688-dc9dabf3155f,0,1,274357df-cb5c-407d-ae72-58046c310db2,274357df-cb5c-407d-ae72-58046c310db2,0,1,5467001e-d025-4669-b16e-26381ac4403f,5467001e-d025-4669-b16e-26381ac4403f,0,1,a4e56049-4de9-40a3-8197-a5c84a11f516,a4e56049-4de9-40a3-8197-a5c84a11f516,0,1,339c9220-fd5b-45d3-b300-cdcc8788f87e,339c9220-fd5b-45d3-b300-cdcc8788f87e,0,1,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,0,1,9042a6de-5048-432d-a448-7e21f2d1d24a,9042a6de-5048-432d-a448-7e21f2d1d24a,0,1,350d46bf-114e-48e7-90c6-6708d949f20d,350d46bf-114e-48e7-90c6-6708d949f20d,0,1,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,0,1,aac20ff3-5873-432e-b763-14411e623d41,aac20ff3-5873-432e-b763-14411e623d41,0,1,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,0,1,6df44466-8750-481a-9baf-c924f0d45353,6df44466-8750-481a-9baf-c924f0d45353,0,1,110121eb-a0eb-4662-8911-3dcc3d341a73,110121eb-a0eb-4662-8911-3dcc3d341a73,0,1,f8980c18-6b9c-4e45-919a-22e976d2a846,f8980c18-6b9c-4e45-919a-22e976d2a846,0,1,c946efb7-c67e-49c1-bf56-d3c2d7220acd,c946efb7-c67e-49c1-bf56-d3c2d7220acd,0,1,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,0,1,6b7c9f74-f2b6-463e-acb9-9f82901986cf,6b7c9f74-f2b6-463e-acb9-9f82901986cf,0,1,fc4c1d64-132b-4687-a37d-05000fdb4ba5,fc4c1d64-132b-4687-a37d-05000fdb4ba5,0,1,528777cd-090b-4b70-82f5-56def98c5893,528777cd-090b-4b70-82f5-56def98c5893,0,1,49dbe467-8832-4ede-9a05-494248619aeb,49dbe467-8832-4ede-9a05-494248619aeb,0,1,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,0,1,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,0,1,09c73108-8528-4970-9b7f-fff9eda7816a,09c73108-8528-4970-9b7f-fff9eda7816a,0,1,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,0,1,f568245a-d158-45dc-af92-2d411f12db7b,f568245a-d158-45dc-af92-2d411f12db7b,0,1,0f17cdac-aa17-45e6-b3d0-220b13345390,0f17cdac-aa17-45e6-b3d0-220b13345390,0,1,c675db75-d0c3-4026-b97c-6b23ecbb336a,c675db75-d0c3-4026-b97c-6b23ecbb336a,0,1,469f67fa-98b0-44b0-abd4-cae136c02834,469f67fa-98b0-44b0-abd4-cae136c02834,0,1,16a18458-999c-420e-80df-8fc10855746c,16a18458-999c-420e-80df-8fc10855746c,0,1,b794f222-0fde-439f-97a3-0da74075b415,b794f222-0fde-439f-97a3-0da74075b415,0,1,3a716aad-9b2c-48a7-b802-80732066391b,3a716aad-9b2c-48a7-b802-80732066391b,0,1,480d959f-aac8-4241-875f-78e1c1f32621,480d959f-aac8-4241-875f-78e1c1f32621,0,1,496e5de8-d75c-4536-9993-75374f070b40,496e5de8-d75c-4536-9993-75374f070b40,0,1,b4e610ba-c9c8-4b25-903b-e567dcbc2556,b4e610ba-c9c8-4b25-903b-e567dcbc2556,0,1,48febdbd-a085-4113-8511-ed7ff6be7d3c,48febdbd-a085-4113-8511-ed7ff6be7d3c,0,1,49413232-c0c3-4983-9d10-291a0399281b,49413232-c0c3-4983-9d10-291a0399281b,0,1,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,0,1,b9b076bb-38ab-4a94-8226-41a4d4d7432c,b9b076bb-38ab-4a94-8226-41a4d4d7432c,0,1,e12da8db-4037-473e-ba2b-d0ceb4534dcb,e12da8db-4037-473e-ba2b-d0ceb4534dcb,0,1,789514e5-8ea3-4a5e-88c5-ed89c4135866,789514e5-8ea3-4a5e-88c5-ed89c4135866,0,1,a16768ff-6137-43d8-8784-4805ed83632a,a16768ff-6137-43d8-8784-4805ed83632a,0,1,61971286-9f94-4a27-aa34-e10848adb70a,61971286-9f94-4a27-aa34-e10848adb70a,0,1,1e75d143-3452-496e-a137-6d7f4c4ed019,1e75d143-3452-496e-a137-6d7f4c4ed019,0,1,e0619d14-c658-4eb5-841a-3a029de28be4,e0619d14-c658-4eb5-841a-3a029de28be4,0,1,99a3b660-7875-47f7-9c6c-c552e5673deb,99a3b660-7875-47f7-9c6c-c552e5673deb,0,1,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,0,1,41cbf934-ea54-41df-abf0-09f319d2e67a,41cbf934-ea54-41df-abf0-09f319d2e67a,0,1,47246084-a5f8-4d0f-b4e2-204c1b97483a,47246084-a5f8-4d0f-b4e2-204c1b97483a,0,1,e58233ec-6cfc-4a8b-9929-689fa69cdb07,e58233ec-6cfc-4a8b-9929-689fa69cdb07,0,1,3291a891-a47c-43ca-b088-aecd3867d38c,3291a891-a47c-43ca-b088-aecd3867d38c,0,1,56cde2b4-00f2-49ba-b407-16e241c17fd2,56cde2b4-00f2-49ba-b407-16e241c17fd2,0,1,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,0,1,219ed110-f2a0-41c1-ac5a-02301b248c54,219ed110-f2a0-41c1-ac5a-02301b248c54,0,1,1c722dfd-2b07-4985-9188-17353de24771,1c722dfd-2b07-4985-9188-17353de24771,0,1,1a630496-2cdd-4c89-a1aa-ed20545ad133,1a630496-2cdd-4c89-a1aa-ed20545ad133,0,1,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,0,1,b19cea0e-e57a-4969-8daf-f48d3d16705f,b19cea0e-e57a-4969-8daf-f48d3d16705f,0,1,d4059340-3361-4baa-ae48-ecbfb9800a2e,d4059340-3361-4baa-ae48-ecbfb9800a2e,0,1,f78f6c43-dd90-4117-acf7-ed5b951cb964,f78f6c43-dd90-4117-acf7-ed5b951cb964,0,1,8eebd519-4989-4784-82b8-39d77eebfb17,8eebd519-4989-4784-82b8-39d77eebfb17,0,1,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0,1,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,0,1,4527877b-5723-4aa5-8705-98174ac9c337,4527877b-5723-4aa5-8705-98174ac9c337,0,1,d6b21e7b-df57-4280-8c95-c269b5316018,d6b21e7b-df57-4280-8c95-c269b5316018,0,1,808c468b-6322-428d-ac6a-ccf2228b05b6,808c468b-6322-428d-ac6a-ccf2228b05b6,0,1,13664bb2-738f-4d18-b382-a7bcf8105a5a,13664bb2-738f-4d18-b382-a7bcf8105a5a,0,1,f3f56abe-9248-4555-bf99-29560eb4f9ee,f3f56abe-9248-4555-bf99-29560eb4f9ee,0,1,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0,1,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,0,1,3eb43a06-b32d-4904-8489-6264d0207623,3eb43a06-b32d-4904-8489-6264d0207623,0,1,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,0,1,18615fe1-cfee-4888-9c09-88d1c5db39eb,18615fe1-cfee-4888-9c09-88d1c5db39eb,0,1,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,0,1,087c83c0-75e7-476b-b7c6-5be55498a190,087c83c0-75e7-476b-b7c6-5be55498a190,0,1,ec5e5413-9e77-4929-83b8-6fee70688b28,ec5e5413-9e77-4929-83b8-6fee70688b28,0,1,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,0,1,8390c864-2b84-4c45-8583-cb4a4ab49168,8390c864-2b84-4c45-8583-cb4a4ab49168,0,1,1b2fefca-fef5-4319-90cc-325444cb63a6,1b2fefca-fef5-4319-90cc-325444cb63a6,0,1,34a128be-8fbb-4dd8-ac23-9f35041feb63,34a128be-8fbb-4dd8-ac23-9f35041feb63,0,1,baa31006-e0d6-496e-a60e-27b3dfd19397,baa31006-e0d6-496e-a60e-27b3dfd19397,0,1,3007d8ff-3942-45ed-bac5-8a6c40ca060c,3007d8ff-3942-45ed-bac5-8a6c40ca060c,0,1,8bfe1474-fd12-4744-a9ab-3383bfe766b3,8bfe1474-fd12-4744-a9ab-3383bfe766b3,0,1,3af97375-f776-4129-9521-b8d65d795db6,3af97375-f776-4129-9521-b8d65d795db6,0,1,0e98801b-a45b-44cb-a341-7e43d723f6ed,0e98801b-a45b-44cb-a341-7e43d723f6ed,0,1,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,0,1,103ac72d-c386-40ea-89d4-35798d064f1a,103ac72d-c386-40ea-89d4-35798d064f1a,0,1,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,0,1,d1fe15e9-8e5c-4819-85cd-24ab31409437,d1fe15e9-8e5c-4819-85cd-24ab31409437,0,1,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,0,1,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,0,1,74f68bda-17b1-4b3c-aa64-b1014300f9b5,74f68bda-17b1-4b3c-aa64-b1014300f9b5,0,1,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,0,1,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,0,1,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,0,1,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,0,1,47ee7d38-9fa9-458d-abee-e11270f79494,47ee7d38-9fa9-458d-abee-e11270f79494,0,1,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,0,1,076daecf-8fcb-496b-9f13-c4faa3a8a722,076daecf-8fcb-496b-9f13-c4faa3a8a722,0,1,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,0,1,296d7725-bdd3-4210-9db9-31de5711ea9b,296d7725-bdd3-4210-9db9-31de5711ea9b,0,1,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,0,1,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1d05f89a-23dd-4d30-8786-abe8a9a39a40,0,1,245c2c6c-7b7f-4381-9304-1d7287a215fa,245c2c6c-7b7f-4381-9304-1d7287a215fa,0,1,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,0,1,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,0,1,8bb5be12-98df-4a38-bffe-432fb13d8101,8bb5be12-98df-4a38-bffe-432fb13d8101,0,1,94209023-ce88-401c-9aff-526fb7e43709,94209023-ce88-401c-9aff-526fb7e43709,0,1,22b99094-b52a-4244-ae91-53848d82560b,22b99094-b52a-4244-ae91-53848d82560b,0,1,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,0,1,b0002134-d5c9-4508-9f0e-97f92461b590,b0002134-d5c9-4508-9f0e-97f92461b590,0,1,1506ec71-cb38-4831-a29d-dac2c4deddda,1506ec71-cb38-4831-a29d-dac2c4deddda,0,1,e05fd82b-b77b-4b7f-b300-43653017f341,e05fd82b-b77b-4b7f-b300-43653017f341,0,1,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,0,1,f15a0526-c207-42fe-aed9-438ae0c4a4b8,f15a0526-c207-42fe-aed9-438ae0c4a4b8,0,1,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,0,1,8583cab0-0620-4346-96e0-bcac40981b8a,8583cab0-0620-4346-96e0-bcac40981b8a,0,1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,0,1,095990b1-187b-400c-941a-275f272239ca,095990b1-187b-400c-941a-275f272239ca,0,1,ba108470-350d-40c3-bb44-9852c2aa8c97,ba108470-350d-40c3-bb44-9852c2aa8c97,0,1,a37c33fa-64b0-4a1b-846a-0a236bad44f8,a37c33fa-64b0-4a1b-846a-0a236bad44f8,0,1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,0,1,a50f4324-da44-449b-b500-74228b2aa7e0,a50f4324-da44-449b-b500-74228b2aa7e0,0,1,04236716-9c36-4a1d-b4fb-4b8c65644ab4,04236716-9c36-4a1d-b4fb-4b8c65644ab4,0,1,97276702-6686-4ac4-8360-d85369a08b20,97276702-6686-4ac4-8360-d85369a08b20,0,1,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,0,1,068883fe-d7ae-40e7-ad82-864867916daa,068883fe-d7ae-40e7-ad82-864867916daa,0,1,c1b02568-2095-4f83-8543-2402f67dbe3d,c1b02568-2095-4f83-8543-2402f67dbe3d,0,1,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,0,1,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,0,1,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,0,1,aecbd726-6952-49e6-b544-4c5cc764c24c,aecbd726-6952-49e6-b544-4c5cc764c24c,0,1,d335cfbf-bc78-4274-a178-10f60372474a,d335cfbf-bc78-4274-a178-10f60372474a,0,1,0f4411b3-addf-4fcf-8da8-c5140dea356c,0f4411b3-addf-4fcf-8da8-c5140dea356c,0,1,c501f9ab-d01b-4137-8cd0-e66103117c84,c501f9ab-d01b-4137-8cd0-e66103117c84,0,1,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,0,1,66e65355-1424-4c74-801c-faf5357257aa,66e65355-1424-4c74-801c-faf5357257aa,0,1,0a93187b-7ae4-4985-8089-3099dfec2b48,0a93187b-7ae4-4985-8089-3099dfec2b48,0,1,044458f3-ed9b-4afb-ae73-8f9162c032bf,044458f3-ed9b-4afb-ae73-8f9162c032bf,0,1,578f618e-5f4a-4e86-959d-39b59e973936,578f618e-5f4a-4e86-959d-39b59e973936,0,1,f74ede2e-2d28-4224-ba44-773eda7760a4,f74ede2e-2d28-4224-ba44-773eda7760a4,0,1,217df06a-1bdf-4394-b617-ed756ff17bc6,217df06a-1bdf-4394-b617-ed756ff17bc6,0,1,a1572e97-a487-497a-9062-49315e237e0f,a1572e97-a487-497a-9062-49315e237e0f,0,1,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,0,1,3c5d87a0-cfce-464a-b946-64c5a589a376,3c5d87a0-cfce-464a-b946-64c5a589a376,0,1,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,0,1,763de8d1-7f53-41b6-8d97-7da724e9f763,763de8d1-7f53-41b6-8d97-7da724e9f763,0,1,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,0,1,4ad59c75-cca4-4968-82e6-babd72d8b318,4ad59c75-cca4-4968-82e6-babd72d8b318,0,1,c248de15-63a2-48ec-8695-7a5213d4fc9b,c248de15-63a2-48ec-8695-7a5213d4fc9b,0,1,272ff0f9-7266-4c22-be12-fe62682b56a5,272ff0f9-7266-4c22-be12-fe62682b56a5,0,1,9f141dd5-d866-4c25-b58a-a7766a08b4e7,9f141dd5-d866-4c25-b58a-a7766a08b4e7,0,1,0570d846-889d-4cfc-98fb-a1ad0181597f,0570d846-889d-4cfc-98fb-a1ad0181597f,0,1,19e17c58-953f-4917-8b6a-c88808fcca36,19e17c58-953f-4917-8b6a-c88808fcca36,0,1,4804316d-3765-4a83-8438-10e8e82656db,4804316d-3765-4a83-8438-10e8e82656db,0,1,59458556-e343-4215-8e6c-69f924ec4183,59458556-e343-4215-8e6c-69f924ec4183,0,1,dd553dca-7eba-41bf-8939-2c61e170ff65,dd553dca-7eba-41bf-8939-2c61e170ff65,0,1,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,0,1,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,0,1,8099e978-28cc-4ade-ac5a-3785f3a45f70,8099e978-28cc-4ade-ac5a-3785f3a45f70,0,1,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,0,1,fe023ca5-f11a-4b98-99c1-363508e4ea4a,fe023ca5-f11a-4b98-99c1-363508e4ea4a,0,1,6f8d515e-13d9-45f8-9793-3757f5b85f81,6f8d515e-13d9-45f8-9793-3757f5b85f81,0,1,25ec541c-c437-4318-b2a8-5146df6ae080,25ec541c-c437-4318-b2a8-5146df6ae080,0,1,148754ed-3063-40a7-a3c3-8ad105552370,148754ed-3063-40a7-a3c3-8ad105552370,0,1,ab3f0862-c355-4fd7-a2a7-4eb8278de510,ab3f0862-c355-4fd7-a2a7-4eb8278de510,0,1,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,0,1,c12c3f3b-3a96-4e70-b131-8d7bd765095f,c12c3f3b-3a96-4e70-b131-8d7bd765095f,0,1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,0,1,c563588c-346e-499e-ae33-9ff3cb62e658,c563588c-346e-499e-ae33-9ff3cb62e658,0,1,40dbc001-97b6-4188-8de9-3adac670bac4,40dbc001-97b6-4188-8de9-3adac670bac4,0,1,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,0,1,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,0,1,93aa5247-6823-4f70-9d47-e5a0f409828a,93aa5247-6823-4f70-9d47-e5a0f409828a,0,1,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,0,1,b19f1223-5ebe-4446-bacc-bc7d53486f2e,b19f1223-5ebe-4446-bacc-bc7d53486f2e,0,1,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,0,1,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,0,1,bf3167d6-3047-482a-b280-184f446ae7a3,bf3167d6-3047-482a-b280-184f446ae7a3,0,1,50c47c0a-a199-4020-9df4-91b17c159454,50c47c0a-a199-4020-9df4-91b17c159454,0,1,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,0,1,faecdc33-fed8-4b44-96f4-4215c26959b6,faecdc33-fed8-4b44-96f4-4215c26959b6,0,1,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,0,1,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,0,1,9df3792e-a4ee-4a2c-9296-c1384925521e,9df3792e-a4ee-4a2c-9296-c1384925521e,0,1,03d423db-f98a-468f-9040-5b76454e5a98,03d423db-f98a-468f-9040-5b76454e5a98,0,1,08f394f9-d254-4fe5-8651-a69c96de7a62,08f394f9-d254-4fe5-8651-a69c96de7a62,0,1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,0,1,6aff6b2f-660b-4d75-9064-fed7a6b0feac,6aff6b2f-660b-4d75-9064-fed7a6b0feac,0,1,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,0,1,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,0,1,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,0,1,e60a9221-7676-456f-8a01-b317b03a278b,e60a9221-7676-456f-8a01-b317b03a278b,0,1,4e81ec90-f668-49ca-9193-22337bafb01b,4e81ec90-f668-49ca-9193-22337bafb01b,0,1,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,0,1,cd60adec-52d6-4fa8-85ca-26551196432c,cd60adec-52d6-4fa8-85ca-26551196432c,0,1,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,0,1,b71ddbdb-08bb-46be-a79d-319c4a557e76,b71ddbdb-08bb-46be-a79d-319c4a557e76,0,1,d3dfa867-3d52-4872-a69e-f27636abe1bd,d3dfa867-3d52-4872-a69e-f27636abe1bd,0,1,6952d1aa-7132-4e40-8542-f64a4dc1e029,6952d1aa-7132-4e40-8542-f64a4dc1e029,0,1,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,0,1,1621811b-dfd3-4c58-8e15-ced16690147a,1621811b-dfd3-4c58-8e15-ced16690147a,0,1,3f266e51-0476-4b7f-8d61-6f9f4456049d,3f266e51-0476-4b7f-8d61-6f9f4456049d,0,1,2b9ce591-ff13-4c2d-85c4-632a2609a211,2b9ce591-ff13-4c2d-85c4-632a2609a211,0,1,689ca0ec-61ce-4590-b73b-ac81e8f1d459,689ca0ec-61ce-4590-b73b-ac81e8f1d459,0,1,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,0,1,55ad36d7-399e-4b82-8d1c-d45bd890abfe,55ad36d7-399e-4b82-8d1c-d45bd890abfe,0,1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0,1,1b39a65f-5425-4bcb-85bd-1425274af8a8,1b39a65f-5425-4bcb-85bd-1425274af8a8,0,1,392a0618-a41a-4713-a561-f3a80b85abd8,392a0618-a41a-4713-a561-f3a80b85abd8,0,1,a453384d-658d-40f1-ac69-578aa3a24e39,a453384d-658d-40f1-ac69-578aa3a24e39,0,1,2215a441-b9b1-4e5c-8df3-e6cee9226c43,2215a441-b9b1-4e5c-8df3-e6cee9226c43,0,1,2a8d4908-ea0d-4837-be3f-bd78f6b61254,2a8d4908-ea0d-4837-be3f-bd78f6b61254,0,1,ec1deb79-7369-4b26-8e91-f51399e8052a,ec1deb79-7369-4b26-8e91-f51399e8052a,0,1,75dde4fb-3a1a-450c-95c2-c1f95a781db9,75dde4fb-3a1a-450c-95c2-c1f95a781db9,0,1,0ae3ac56-160a-417e-9952-719d02e7f089,0ae3ac56-160a-417e-9952-719d02e7f089,0,1,f5b3983d-d22d-44a8-9069-0a60d8b858bf,f5b3983d-d22d-44a8-9069-0a60d8b858bf,0,1,48659b94-ace8-45f4-a043-6b2731ec6925,48659b94-ace8-45f4-a043-6b2731ec6925,0,1,3a8e60f9-19cb-42a6-a448-ad211261d9b8,3a8e60f9-19cb-42a6-a448-ad211261d9b8,0,1,74320602-094a-4645-b2c9-3053377a3ac3,74320602-094a-4645-b2c9-3053377a3ac3,0,1,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,0,1,b066c732-9c5f-4504-894f-96d457b0768f,b066c732-9c5f-4504-894f-96d457b0768f,0,1,9366463d-aa8a-4e89-86d8-c7f746f9551b,9366463d-aa8a-4e89-86d8-c7f746f9551b,0,1,e25da569-d435-45b2-b4e8-fc76d7f1c8df,e25da569-d435-45b2-b4e8-fc76d7f1c8df,0,1,a51a7f57-9c52-4457-819c-13e1b6f886e1,a51a7f57-9c52-4457-819c-13e1b6f886e1,0,1,7d08daba-5e36-4ce3-8a70-17750959b89e,7d08daba-5e36-4ce3-8a70-17750959b89e,0,1,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,0,1,39344a8c-2662-48ff-937b-12951bb268fb,39344a8c-2662-48ff-937b-12951bb268fb,0,1,b577663f-ead2-4b18-a4f6-f7f303e89319,b577663f-ead2-4b18-a4f6-f7f303e89319,0,1,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,0,1,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,0,1,72663843-4010-42ed-989b-0b58bf9f7146,72663843-4010-42ed-989b-0b58bf9f7146,0,1,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,0,1,3adcceea-867e-4b88-a633-4f8d4ccb43c0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,0,1,a132189c-6584-4bb1-9cfd-1415cd83228a,a132189c-6584-4bb1-9cfd-1415cd83228a,0,1,7ba50e13-0a78-4cca-821f-006b1c83b0b0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,0,1,a3670f95-5abe-49ee-8ea5-d7e4438801ba,a3670f95-5abe-49ee-8ea5-d7e4438801ba,0,1,4443dea1-5143-4e76-97a7-c35dbe1665e4,4443dea1-5143-4e76-97a7-c35dbe1665e4,0,1,0d780521-0767-425a-b44d-315d2dc42d04,0d780521-0767-425a-b44d-315d2dc42d04,0,1,c5b1572d-28f5-42f3-b2e0-8b54f091642e,c5b1572d-28f5-42f3-b2e0-8b54f091642e,0,1,0986c1b6-b677-428d-b49f-a93e40e77171,0986c1b6-b677-428d-b49f-a93e40e77171,0,1,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,0,1,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,0,1,b6662b2e-7e93-4eaa-9e4b-b5647285932b,b6662b2e-7e93-4eaa-9e4b-b5647285932b,0,1,4a180f2c-dc54-4591-8f62-f236d1e07799,4a180f2c-dc54-4591-8f62-f236d1e07799,0,1,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,0,1,a9a51e79-4c79-4a43-931b-c0321c1cd65b,a9a51e79-4c79-4a43-931b-c0321c1cd65b,0,1,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,e8644d90-ec2f-4ac0-8fbd-a7aa95c9bcec,0,1,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,048a1d86-bcf5-47aa-a36c-eb20c3f9f7e5,0,1,22f2696e-0ac1-4a74-bca9-987b267b2b59,22f2696e-0ac1-4a74-bca9-987b267b2b59,0,1,d705cacc-3485-46d7-9ff4-48c3c0757c81,d705cacc-3485-46d7-9ff4-48c3c0757c81,0,1,98f043ea-633c-4a03-a56f-efbc9e6ef288,98f043ea-633c-4a03-a56f-efbc9e6ef288,0,1,2033b92a-0750-478a-a12d-cf4f74d0a9da,2033b92a-0750-478a-a12d-cf4f74d0a9da,0,1,92fa2196-d8e5-45f9-9d2e-59d837b163ea,92fa2196-d8e5-45f9-9d2e-59d837b163ea,0,1,25dc2290-e283-4449-81c1-1ce15b58067f,25dc2290-e283-4449-81c1-1ce15b58067f,0,1,c534a865-a17f-41e7-88b9-c6af89c9d202,c534a865-a17f-41e7-88b9-c6af89c9d202,0,1,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,0214bfe6-fb98-4487-8d98-6b10d24a3c4d,0,1,0127937c-94c0-43fe-9630-cc2ec6904ad8,0127937c-94c0-43fe-9630-cc2ec6904ad8,0,1,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,ce7c87b8-e4ab-47e2-b70a-7dcae8bfb8a8,0,1,8df5b3cd-7788-4198-a530-e88be83f1cdf,8df5b3cd-7788-4198-a530-e88be83f1cdf,0,1,ffaeea66-66d5-4741-a9b5-875afebfce7f,ffaeea66-66d5-4741-a9b5-875afebfce7f,0,1,4e36184e-d818-4f38-9257-6d91d9cc85ae,4e36184e-d818-4f38-9257-6d91d9cc85ae,0,1,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,0,1,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,0,1,3893a258-a9c7-441a-b80c-1cc8c3f4735c,3893a258-a9c7-441a-b80c-1cc8c3f4735c,0,1,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,0,1,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,0,1,420748d8-4042-4e1e-aca1-ac0190cdf54e,420748d8-4042-4e1e-aca1-ac0190cdf54e,0,1,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,0,1,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,0,1,f8a456fa-a533-444c-a504-0e74306ada44,f8a456fa-a533-444c-a504-0e74306ada44,0,1,4751a91a-f211-4f66-8238-9bb5668cbc67,4751a91a-f211-4f66-8238-9bb5668cbc67,0,1,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,0,1,e6c871d6-e06f-420b-ae04-dbf735d3233d,e6c871d6-e06f-420b-ae04-dbf735d3233d,0,1,b9a6b053-2b93-4946-9531-040d3131dcc5,b9a6b053-2b93-4946-9531-040d3131dcc5,0,1,6287eded-23d8-4b04-8415-1d9afa17713b,6287eded-23d8-4b04-8415-1d9afa17713b,0,1,8ce3513d-d086-46f4-81c3-1761594a64c5,8ce3513d-d086-46f4-81c3-1761594a64c5,0,1,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,0,1,446f4de6-2af9-439a-9234-a31c439f139c,446f4de6-2af9-439a-9234-a31c439f139c,0,1,2ccbc9aa-52d3-4cf3-8e83-77aaef82a38d,2ccbc9aa-52d3-4cf3-8e83-77aaef82a38d,0,1,e9c632b0-7977-4e44-ac56-882617ad7cdc,e9c632b0-7977-4e44-ac56-882617ad7cdc,0,1,e84acba7-7e0f-43e8-a545-6e53d529d5d4,e84acba7-7e0f-43e8-a545-6e53d529d5d4,0,1,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,0,1,6086d53f-f1b2-4126-ab46-64705fe63b87,6086d53f-f1b2-4126-ab46-64705fe63b87,0,1,6d042890-27b2-4efc-935e-8190bb57c037,6d042890-27b2-4efc-935e-8190bb57c037,0,1,23e79add-7f1c-422a-9df1-8f76ebf805df,23e79add-7f1c-422a-9df1-8f76ebf805df,0,1,9295d88f-0865-440c-a98a-4710c50211be,9295d88f-0865-440c-a98a-4710c50211be,0,1,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,0,1,38ac9a13-665a-4201-b5cc-687fe4a01130,38ac9a13-665a-4201-b5cc-687fe4a01130,0,1,97c59096-b2dc-45d0-a580-b3018a04f9af,97c59096-b2dc-45d0-a580-b3018a04f9af,0,1,6fbf63b7-1692-495e-a8ec-bdda182997a3,6fbf63b7-1692-495e-a8ec-bdda182997a3,0,1,8172256e-f51e-4de0-bd07-3668785f4cb9,8172256e-f51e-4de0-bd07-3668785f4cb9,0,1,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,0,1,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,0,1,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,0,1,c172aeaf-b444-47c0-baee-80ccd91fe934,c172aeaf-b444-47c0-baee-80ccd91fe934,0,1,b8c36d5a-7966-4978-9225-67502b9c60a4,b8c36d5a-7966-4978-9225-67502b9c60a4,0,1,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,0,1,9847676d-f44d-46a0-83e2-4a43a835caf8,9847676d-f44d-46a0-83e2-4a43a835caf8,0,1,43c18cae-21a9-413b-a350-d5cf826980f0,43c18cae-21a9-413b-a350-d5cf826980f0,0,1,16773cdb-b979-42d5-a2a5-d4b79e8737bd,16773cdb-b979-42d5-a2a5-d4b79e8737bd,0,1,c28a190a-f487-4e99-b8f8-6928268086f8,c28a190a-f487-4e99-b8f8-6928268086f8,0,1,bb6e6574-4328-4cf5-a043-a7d8f6c81414,bb6e6574-4328-4cf5-a043-a7d8f6c81414,0,1,b46b5090-5eb1-4950-9031-8b43f611fa9c,b46b5090-5eb1-4950-9031-8b43f611fa9c,0,1,94e02f76-8656-4999-9470-dd996118400c,94e02f76-8656-4999-9470-dd996118400c,0,1,9effd265-3783-44e2-8698-80dd82137546,9effd265-3783-44e2-8698-80dd82137546,0,1,bef52020-98f8-465b-8981-e5f8eed62308,bef52020-98f8-465b-8981-e5f8eed62308,0,1,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,0,1,e731dab7-df9e-48ae-8542-4c0c30666ae9,e731dab7-df9e-48ae-8542-4c0c30666ae9,0,1,6ac484a9-4d96-4521-9b8c-66212a365725,6ac484a9-4d96-4521-9b8c-66212a365725,0,1,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0,1,bde05768-2dd6-4800-985d-27075f610cca,bde05768-2dd6-4800-985d-27075f610cca,0,1,d18956cf-e449-48cc-a127-01b5dc910ea2,d18956cf-e449-48cc-a127-01b5dc910ea2,0,1,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,0,1,e352fc19-96be-4410-a516-bc58cc234422,e352fc19-96be-4410-a516-bc58cc234422,0,1,9b742da4-1696-4c06-9dfa-dd85c9286c74,9b742da4-1696-4c06-9dfa-dd85c9286c74,0,1,757ea742-8c14-4e0a-a867-432eee5cfc64,757ea742-8c14-4e0a-a867-432eee5cfc64,0,1,db1062bc-4164-4095-9640-9804c0ebcd0b,db1062bc-4164-4095-9640-9804c0ebcd0b,0,1,d5a13430-518a-4917-9de9-d00abbcce500,d5a13430-518a-4917-9de9-d00abbcce500,0,1,ea7c61ff-745c-4908-9a94-bba022d12de4,ea7c61ff-745c-4908-9a94-bba022d12de4,0,1,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,0,1,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,0,1,53caada5-1d53-45dc-9432-90075ddca890,53caada5-1d53-45dc-9432-90075ddca890,0,1,d1472d23-954b-4069-b2d6-df08c6ec0be1,d1472d23-954b-4069-b2d6-df08c6ec0be1,0,1,93fe2ce6-7193-42bc-a966-4653b7989eaa,93fe2ce6-7193-42bc-a966-4653b7989eaa,0,1,a7fe0aa5-722c-4a09-889b-ee422421addc,a7fe0aa5-722c-4a09-889b-ee422421addc,0,1,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,0,1,0c838a31-2b08-447c-b39a-a613cfba526c,0c838a31-2b08-447c-b39a-a613cfba526c,0,1,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,0,1,86c679c0-3531-4622-9a1f-3d9d6ccdd431,86c679c0-3531-4622-9a1f-3d9d6ccdd431,0,1,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,0,1,670c62c1-1a33-4dec-9540-5b4c1fe29074,670c62c1-1a33-4dec-9540-5b4c1fe29074,0,1,cc664d81-d0af-4d25-ae29-64f422e51bf2,cc664d81-d0af-4d25-ae29-64f422e51bf2,0,1,e1314cd1-e662-4c29-ad51-492cb0029883,e1314cd1-e662-4c29-ad51-492cb0029883,0,1,4718392b-477c-496b-9d28-ddbdaa7a04f2,4718392b-477c-496b-9d28-ddbdaa7a04f2,0,1,879844f0-30b4-47f5-8d2e-5fea29910368,879844f0-30b4-47f5-8d2e-5fea29910368,0,1,9bc09758-a7ce-44e0-baa3-a3e909869d9b,9bc09758-a7ce-44e0-baa3-a3e909869d9b,0,1,303334ba-2785-47fe-a094-84f9dea33be2,303334ba-2785-47fe-a094-84f9dea33be2,0,1,9690842c-7a2c-4b5d-a238-f730afc49a7b,9690842c-7a2c-4b5d-a238-f730afc49a7b,0,1,04424730-6992-4a5b-838b-7a7c16dedbd0,04424730-6992-4a5b-838b-7a7c16dedbd0,0,1,240bec31-cd59-477b-8459-8e3278da22dc,240bec31-cd59-477b-8459-8e3278da22dc,0,1,e0519f0c-9c99-4f5c-a3a9-27adce45737d,e0519f0c-9c99-4f5c-a3a9-27adce45737d,0,1,554320a0-55dc-4289-bb08-63d405cb4ca5,554320a0-55dc-4289-bb08-63d405cb4ca5,0,1,0874a3c0-0d16-4172-b467-f0666d5fcaee,0874a3c0-0d16-4172-b467-f0666d5fcaee,0,1,cc380a19-ab29-4f20-93ad-9a58cd4de56e,cc380a19-ab29-4f20-93ad-9a58cd4de56e,0,1,6a5f7521-270e-476e-88ec-a8cf79ea61a6,6a5f7521-270e-476e-88ec-a8cf79ea61a6,0,1,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,9bb841e7-e629-4a1f-8ff6-f8bca0b2b133,0,1,e54a8786-86a4-48e3-a210-aaae4e5fce8c,e54a8786-86a4-48e3-a210-aaae4e5fce8c,0,1,86c86ea2-d14e-4443-b36c-c1c17c4f768a,86c86ea2-d14e-4443-b36c-c1c17c4f768a,0,1,14512818-58b0-44cc-b00d-d37913c57aad,14512818-58b0-44cc-b00d-d37913c57aad,0,1,57964dd6-4b0b-4590-bc44-de744cc423af,57964dd6-4b0b-4590-bc44-de744cc423af,0,1,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,0,1,46e0522b-b88b-43b2-9067-a5359e90994b,46e0522b-b88b-43b2-9067-a5359e90994b,0,1,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,0,1,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,0,1,72d41d01-9c9d-4fbe-8a39-932d82d171ef,72d41d01-9c9d-4fbe-8a39-932d82d171ef,0,1,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,0,1,697d5715-dd04-40be-9b28-539734725158,697d5715-dd04-40be-9b28-539734725158,0,1,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,0,1,d95fcb37-fc65-466d-93e2-489f41683276,d95fcb37-fc65-466d-93e2-489f41683276,0,1,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,0,1,a27a9296-46bb-49a1-8308-db675baa81d0,a27a9296-46bb-49a1-8308-db675baa81d0,0,1,1456f317-360c-4190-b2d1-1be7484369a5,1456f317-360c-4190-b2d1-1be7484369a5,0,1,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,0,1,4867948f-b027-44ae-b78c-a94e00eed52b,4867948f-b027-44ae-b78c-a94e00eed52b,0,1,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,0,1,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,0,1,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,0,1,ef044879-e731-418a-b917-6a685f27c5f4,ef044879-e731-418a-b917-6a685f27c5f4,0,1,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,0,1,618d13d5-fd1f-4b70-ad45-dd6a17a50730,618d13d5-fd1f-4b70-ad45-dd6a17a50730,0,1,58037b76-b548-4f07-bd67-67e552a5c6e5,58037b76-b548-4f07-bd67-67e552a5c6e5,0,1,68f19104-5fa3-4f28-a84b-bf68c3bed49b,68f19104-5fa3-4f28-a84b-bf68c3bed49b,0,1,ab0b6824-99ba-4b8d-857d-ed8ef017d499,ab0b6824-99ba-4b8d-857d-ed8ef017d499,0,1,f88ccd7a-8d15-4b24-addf-da522a0b4a43,f88ccd7a-8d15-4b24-addf-da522a0b4a43,0,1,0f8e87d4-ffb7-4cff-a2d3-6d5c5219ff0b,0f8e87d4-ffb7-4cff-a2d3-6d5c5219ff0b,0,1,1511c2e3-aeb4-422a-b6ae-03412b714c93,1511c2e3-aeb4-422a-b6ae-03412b714c93,0,1,349378d1-abe3-44de-84a4-d525b08e0474,349378d1-abe3-44de-84a4-d525b08e0474,0,1,1526b18d-7fab-414e-a5b2-377b67ac0b55,1526b18d-7fab-414e-a5b2-377b67ac0b55,0,1,c561fe6b-53ea-435b-a230-1850e2dc1ff5,c561fe6b-53ea-435b-a230-1850e2dc1ff5,0,1,aba7605f-6baf-42a8-b5ad-8f71c780b81f,aba7605f-6baf-42a8-b5ad-8f71c780b81f,0,1,8fc19eca-1a15-4758-af4b-79637e51edfb,8fc19eca-1a15-4758-af4b-79637e51edfb,0,1,be9144ce-5560-47bb-8c5e-9beefd15bfc3,be9144ce-5560-47bb-8c5e-9beefd15bfc3,0,1,ad09d1e6-5982-4e1c-864e-452ac5b2915a,ad09d1e6-5982-4e1c-864e-452ac5b2915a,0,1,caea53be-d2f7-4109-8017-d2bfdfde8c6f,caea53be-d2f7-4109-8017-d2bfdfde8c6f,0,1,60f30706-9919-4767-a17c-660754b9d542,60f30706-9919-4767-a17c-660754b9d542,0,1,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,0,1,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0,1,28dc34df-1daa-49a2-a12e-db91ee963459,28dc34df-1daa-49a2-a12e-db91ee963459,0,1,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,bf75c4de-b36a-4a7f-8d84-9fa3d020a6cb,0,1,d02fe5f5-412c-4c4f-bfc7-c1d7206cd092,d02fe5f5-412c-4c4f-bfc7-c1d7206cd092,0,1,2233ce53-b8a8-4c83-97a2-683c8575462a,2233ce53-b8a8-4c83-97a2-683c8575462a,0,1,2071f210-dc13-43c0-a58e-b982821d6842,2071f210-dc13-43c0-a58e-b982821d6842,0,1,3cda70d0-3116-4508-82ea-5ea0f0921262,3cda70d0-3116-4508-82ea-5ea0f0921262,0,1,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,0,1,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,0,1,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0,1,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,0,1,19056365-9ff1-4733-876e-a7ebdbbe0557,19056365-9ff1-4733-876e-a7ebdbbe0557,0,1,5e09dc5e-bbb7-4c38-b609-940c24f63c84,5e09dc5e-bbb7-4c38-b609-940c24f63c84,0,1,017b28eb-8ba9-465e-a748-20eadbeb4ea2,017b28eb-8ba9-465e-a748-20eadbeb4ea2,0,1,c0bb2d66-94c9-4bc6-afd5-534075e8395b,c0bb2d66-94c9-4bc6-afd5-534075e8395b,0,1,db7cc693-1645-4416-a9d9-5a7584cd3bbc,db7cc693-1645-4416-a9d9-5a7584cd3bbc,0,1,c849fb09-7833-49c8-9461-98426dc6c0af,c849fb09-7833-49c8-9461-98426dc6c0af,0,1,6c58fc3a-37f8-44b7-b076-2c10ce09b554,6c58fc3a-37f8-44b7-b076-2c10ce09b554,0,1,8ca0258c-96d8-4a12-b94f-db968195ee0a,8ca0258c-96d8-4a12-b94f-db968195ee0a,0,1,245c07a9-98b0-452b-b899-dc8751ab7ce0,245c07a9-98b0-452b-b899-dc8751ab7ce0,1,0,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,ae67dfe5-bb36-4400-81f5-8dab1fd0ca6e,1,0,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,9cd9a3e1-b52c-4151-abd3-2744ed03cc1b,1,0,00579e31-e97d-4d79-ba25-b8d500a17e7f,00579e31-e97d-4d79-ba25-b8d500a17e7f,0,1,75ffd0b9-79be-4600-a310-591fddb6d63e,75ffd0b9-79be-4600-a310-591fddb6d63e,0,1,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,0,1,47da49ee-b243-4e78-9c8f-bb26c60e6136,47da49ee-b243-4e78-9c8f-bb26c60e6136,0,1,39bee714-cacd-4d48-97a5-c838660e049a,39bee714-cacd-4d48-97a5-c838660e049a,0,1,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,0,1,592f55e1-b004-44ef-878a-6c2016ccbeb0,592f55e1-b004-44ef-878a-6c2016ccbeb0,0,1,19add2bd-eede-4a05-901b-cf8ce49a638f,19add2bd-eede-4a05-901b-cf8ce49a638f,0,1,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,0,1,becf53b6-3fbc-4c70-822f-4a70b0434353,becf53b6-3fbc-4c70-822f-4a70b0434353,0,1,9376b18c-cffd-488b-8a1e-cca598f018bc,9376b18c-cffd-488b-8a1e-cca598f018bc,0,1,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,0,1,652ee894-047b-4a5a-a500-2d61b4c4a473,652ee894-047b-4a5a-a500-2d61b4c4a473,0,1,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,0,1,fef727fa-f63b-4467-9367-73a2425b19e3,fef727fa-f63b-4467-9367-73a2425b19e3,0,1,33f8cd94-71e7-4703-92c3-22690fbd871a,33f8cd94-71e7-4703-92c3-22690fbd871a,0,1,b6e5de4d-0156-4342-b646-6e6920a4bd3a,b6e5de4d-0156-4342-b646-6e6920a4bd3a,0,1,c03f9972-5a1f-449b-b170-5a958c2b5846,c03f9972-5a1f-449b-b170-5a958c2b5846,0,1,25896075-2484-4879-8310-7f5680d80b48,25896075-2484-4879-8310-7f5680d80b48,0,1,09858042-6284-4499-8055-c1b5b783ce5f,09858042-6284-4499-8055-c1b5b783ce5f,0,1,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1e3c444d-6f73-4eb0-a12d-7106daf36b14,0,1,1e63c656-a0e7-4b33-8bac-2a196e028ffa,1e63c656-a0e7-4b33-8bac-2a196e028ffa,0,1,085cbea9-1df1-4ee9-afb7-da2bf313697e,085cbea9-1df1-4ee9-afb7-da2bf313697e,0,1,b3152292-5546-4896-ad24-cb41057698d8,b3152292-5546-4896-ad24-cb41057698d8,0,1,38fc1e6e-7cd3-437b-b429-6655be34cd01,38fc1e6e-7cd3-437b-b429-6655be34cd01,0,1,c38d8135-e11f-4860-b370-84ff279b7fbd,c38d8135-e11f-4860-b370-84ff279b7fbd,0,1,ee0798f5-47a8-4118-a25c-cfd3473007c1,ee0798f5-47a8-4118-a25c-cfd3473007c1,0,1,7dc0429d-146a-4c4f-b122-5d5c053bd4ed,7dc0429d-146a-4c4f-b122-5d5c053bd4ed,0,1,e25b2b10-bf08-42db-9642-861efc5e583b,e25b2b10-bf08-42db-9642-861efc5e583b,0,1,29f2094a-d0d1-425c-8161-45a9ba186e19,29f2094a-d0d1-425c-8161-45a9ba186e19,0,1,bfa90848-930f-433d-8f6f-c11ac2c5eba2,bfa90848-930f-433d-8f6f-c11ac2c5eba2,0,1,a4d767a1-d2e6-4e0a-ab35-9207eef54998,a4d767a1-d2e6-4e0a-ab35-9207eef54998,0,1,69149ce1-d3f8-4e12-be8f-b328ade60882,69149ce1-d3f8-4e12-be8f-b328ade60882,0,1,ff592ecb-eb08-4554-87bf-1d2935b21d3c,ff592ecb-eb08-4554-87bf-1d2935b21d3c,0,1,e50cb13a-151b-45d2-a7b7-d23440ddfa24,e50cb13a-151b-45d2-a7b7-d23440ddfa24,0,1,cc3a7f15-4db6-445e-b282-f44d0460b7d3,cc3a7f15-4db6-445e-b282-f44d0460b7d3,0,1,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0,1,0d8770aa-fa6e-471c-92c8-b96576927ef0,0d8770aa-fa6e-471c-92c8-b96576927ef0,0,1,b8a32c33-4e15-4c21-baab-64a86d44321b,b8a32c33-4e15-4c21-baab-64a86d44321b,0,1,e7d51ada-f286-4519-bfae-ece95dd4d7b0,e7d51ada-f286-4519-bfae-ece95dd4d7b0,0,1,d7dd9a03-6818-4987-8f39-58e1c906569f,d7dd9a03-6818-4987-8f39-58e1c906569f,0,1,fce028b8-b530-49f0-b6ad-a28d03e19b0f,fce028b8-b530-49f0-b6ad-a28d03e19b0f,0,1,301eea20-0e7f-441e-a531-28b4627dfd93,301eea20-0e7f-441e-a531-28b4627dfd93,0,1,95a71c2e-aa39-42ec-8889-2390a553f146,95a71c2e-aa39-42ec-8889-2390a553f146,0,1,d975aef4-8da8-4486-baeb-a99c48cff0ec,d975aef4-8da8-4486-baeb-a99c48cff0ec,0,1,75666bb9-f6d3-4dd6-8220-427a81f23fc9,75666bb9-f6d3-4dd6-8220-427a81f23fc9,0,1,9da27139-0bed-47b0-aef6-246929968502,9da27139-0bed-47b0-aef6-246929968502,0,1,68e82adf-bc03-4f23-9ec4-749ed42241da,68e82adf-bc03-4f23-9ec4-749ed42241da,0,1,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,0,1,41f87891-ddd5-4e0f-a4f2-8039fb71981b,41f87891-ddd5-4e0f-a4f2-8039fb71981b,0,1,a57f6dc1-59d7-4311-8acd-65ce57a9f386,a57f6dc1-59d7-4311-8acd-65ce57a9f386,0,1,893b2dd9-a939-4799-9b78-50d788a5f3ba,893b2dd9-a939-4799-9b78-50d788a5f3ba,0,1,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,0,1,e4842271-4fc0-4e15-afef-876f05af78c0,e4842271-4fc0-4e15-afef-876f05af78c0,0,1,135d57fe-d420-4bb0-9120-e43fd9b55c16,135d57fe-d420-4bb0-9120-e43fd9b55c16,0,1,31ee6430-b65d-42fa-859b-c4f1c40686ae,31ee6430-b65d-42fa-859b-c4f1c40686ae,0,1,c59e11f3-6bcb-404a-9d76-1416c12be354,c59e11f3-6bcb-404a-9d76-1416c12be354,0,1,c1a1f12b-3978-4047-956e-a5c7de8371a0,c1a1f12b-3978-4047-956e-a5c7de8371a0,0,1,ac39b903-0c60-417e-a50f-49ed375424f5,ac39b903-0c60-417e-a50f-49ed375424f5,0,1,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,9893e2d6-f3f8-4d73-bb06-19bf26d216ab,0,1,387d3bbf-cddd-4506-b14f-89c1f37adbbc,387d3bbf-cddd-4506-b14f-89c1f37adbbc,0,1,16392cf6-dd83-4df0-a54b-6efc29778a89,16392cf6-dd83-4df0-a54b-6efc29778a89,0,1,64f667e5-6a8f-448f-aed5-a4d461232845,64f667e5-6a8f-448f-aed5-a4d461232845,0,1,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,0,1,037842ca-aeaf-4e27-9a0e-e929438b6f40,037842ca-aeaf-4e27-9a0e-e929438b6f40,0,1,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,0,1,230722e6-942f-4594-be89-eff59c6572bf,230722e6-942f-4594-be89-eff59c6572bf,0,1,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,0,1,eaf6045f-9ac0-43ef-b165-a45be75a4d44,eaf6045f-9ac0-43ef-b165-a45be75a4d44,0,1,237dab99-ed72-432c-ad01-c6045d74f000,237dab99-ed72-432c-ad01-c6045d74f000,0,1,59855d19-29cd-4efd-a453-b19e574113ef,59855d19-29cd-4efd-a453-b19e574113ef,0,1,a1130128-cc48-4555-93a2-99e7f74f77dc,a1130128-cc48-4555-93a2-99e7f74f77dc,0,1,94e08dcf-3885-4a73-82ab-cb291f1cf95f,94e08dcf-3885-4a73-82ab-cb291f1cf95f,0,1,405c52c4-25fe-45ff-abab-bf01041e768d,405c52c4-25fe-45ff-abab-bf01041e768d,0,1,55ce840b-5838-4107-886d-f935b9907bd8,55ce840b-5838-4107-886d-f935b9907bd8,0,1,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0,1,f1753bda-16db-4b00-a16a-37ddade8403f,f1753bda-16db-4b00-a16a-37ddade8403f,0,1,a1875d63-4303-46f1-bdea-fc529b5891f3,a1875d63-4303-46f1-bdea-fc529b5891f3,0,1,59123b12-6052-4480-9c86-f4de1b5cdc04,59123b12-6052-4480-9c86-f4de1b5cdc04,0,1,133f181a-fade-4182-826d-904fac780326,133f181a-fade-4182-826d-904fac780326,0,1,a687748a-0b2a-4277-b935-07616d28430d,a687748a-0b2a-4277-b935-07616d28430d,0,1,f60cb71a-f451-426a-aa3a-aa266b8da149,f60cb71a-f451-426a-aa3a-aa266b8da149,0,1,641ebe22-7135-4adb-bbd6-e0c37d246a2d,641ebe22-7135-4adb-bbd6-e0c37d246a2d,0,1,f71ba01e-9f6b-4241-8048-4368c8888756,f71ba01e-9f6b-4241-8048-4368c8888756,0,1,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,0,1,6010c27f-e857-4fc3-be13-1eea51f02ea7,6010c27f-e857-4fc3-be13-1eea51f02ea7,0,1,6aa814fa-417e-428c-951e-6efd9d0775da,6aa814fa-417e-428c-951e-6efd9d0775da,0,1,a247efe1-8608-4780-9cc8-54e29944475b,a247efe1-8608-4780-9cc8-54e29944475b,0,1,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,0,1,a8f162e9-3f59-41a5-b82f-da20928213c7,a8f162e9-3f59-41a5-b82f-da20928213c7,0,1,ade68dfd-5037-4fd7-b043-9514e3fe6342,ade68dfd-5037-4fd7-b043-9514e3fe6342,0,1,7b008aad-9d05-43e1-8295-62ae58cfff42,7b008aad-9d05-43e1-8295-62ae58cfff42,0,1,fdaf9255-d621-4a98-9530-f618ed440795,fdaf9255-d621-4a98-9530-f618ed440795,0,1,0daac965-2026-4acc-8ba1-3c1f01779257,0daac965-2026-4acc-8ba1-3c1f01779257,0,1,65a331c0-7501-49f6-8027-35b703d11834,65a331c0-7501-49f6-8027-35b703d11834,0,1,c67fab0a-704f-43ae-bd03-4b5b1a880b24,c67fab0a-704f-43ae-bd03-4b5b1a880b24,0,1,c1703a14-61a0-4461-8ad8-7173e2c431fe,c1703a14-61a0-4461-8ad8-7173e2c431fe,0,1,b1b5841d-0cf9-4de5-8561-b35b8f286d21,b1b5841d-0cf9-4de5-8561-b35b8f286d21,0,1,aecf5653-3005-43f2-ab49-40977e70f02b,aecf5653-3005-43f2-ab49-40977e70f02b,0,1,4093fe34-7557-4f15-831b-d654b94b8010,4093fe34-7557-4f15-831b-d654b94b8010,0,1,ee10023f-5c63-4cb3-8e6c-db566c788c9d,ee10023f-5c63-4cb3-8e6c-db566c788c9d,0,1,475f8577-a141-496b-94e1-53215c0dd017,475f8577-a141-496b-94e1-53215c0dd017,0,1,97638762-c01e-4c8f-88e2-b356e517e18f,97638762-c01e-4c8f-88e2-b356e517e18f,0,1,074e34f2-e9be-4bd3-beca-8b916772e2be,074e34f2-e9be-4bd3-beca-8b916772e2be,0,1,28fecf1b-7cab-4087-b66e-2052edb8ce3a,28fecf1b-7cab-4087-b66e-2052edb8ce3a,0,1,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,0,1,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,0,1,f5417147-4d2a-4e49-911b-2bb5eccb8441,f5417147-4d2a-4e49-911b-2bb5eccb8441,0,1,20fbed2b-4393-4de0-a71d-017a336bdac0,20fbed2b-4393-4de0-a71d-017a336bdac0,0,1,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,0,1,fbbb2449-9a07-4229-8ea5-bee0afab5f56,fbbb2449-9a07-4229-8ea5-bee0afab5f56,0,1,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,0,1,0d124daf-dc52-4391-a2d9-3c43a45c422c,0d124daf-dc52-4391-a2d9-3c43a45c422c,0,1,a300ecc3-8031-4a50-a17d-b08cf3a72139,a300ecc3-8031-4a50-a17d-b08cf3a72139,0,1,44b28019-01c0-468d-9b60-e050ff8b71ac,44b28019-01c0-468d-9b60-e050ff8b71ac,0,1,69f6173c-a570-41ff-b07f-5b85f7187515,69f6173c-a570-41ff-b07f-5b85f7187515,0,1,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,0,1,98153b59-8cc6-4dc7-b945-99c1146d07da,98153b59-8cc6-4dc7-b945-99c1146d07da,0,1,3e2828b4-2b55-471e-ac69-55119c2480f8,3e2828b4-2b55-471e-ac69-55119c2480f8,0,1,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,df9db8d5-c5c2-4a9d-88fe-77247b2c417e,0,1,9da32b56-ff89-4739-bb99-615074b72298,9da32b56-ff89-4739-bb99-615074b72298,0,1,08baf3ee-b8ca-4f29-89fc-c15344064ad3,08baf3ee-b8ca-4f29-89fc-c15344064ad3,0,1,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,0,1,01b85e3a-9920-425a-9de5-5079fffeef93,01b85e3a-9920-425a-9de5-5079fffeef93,0,1,82e12316-cc64-4d2f-83fa-054b5a738f02,82e12316-cc64-4d2f-83fa-054b5a738f02,0,1,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,0,1,a890be6b-f050-4ea4-a388-570948ffd22b,a890be6b-f050-4ea4-a388-570948ffd22b,0,1,b00c31d6-4fc6-4189-9f72-f91742ec705f,b00c31d6-4fc6-4189-9f72-f91742ec705f,0,1,1333101b-82e8-41a9-a793-5af5dcd6f68a,1333101b-82e8-41a9-a793-5af5dcd6f68a,0,1,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,0,1,0f25646a-90f9-4747-a778-7efdaabc284c,0f25646a-90f9-4747-a778-7efdaabc284c,0,1,3a2d9324-8260-478d-ad62-a964d860cb8f,3a2d9324-8260-478d-ad62-a964d860cb8f,0,1,9b9cd161-5bee-4433-a0ec-b67deb099b5e,9b9cd161-5bee-4433-a0ec-b67deb099b5e,0,1,ca179cb5-65e1-4a55-bf12-096b926accb0,ca179cb5-65e1-4a55-bf12-096b926accb0,0,1,472ce1c2-9e83-418b-b1ec-e15e126bc919,472ce1c2-9e83-418b-b1ec-e15e126bc919,0,1,9fe30414-8261-4403-a854-f22b61824f69,9fe30414-8261-4403-a854-f22b61824f69,0,1,07bb26ac-bd97-465f-a192-db7fedbb579b,07bb26ac-bd97-465f-a192-db7fedbb579b,0,1,bb129cf2-5a5a-433a-924a-a1d0d895644a,bb129cf2-5a5a-433a-924a-a1d0d895644a,0,1,faa34cb8-2d48-4851-a839-fc40536a0234,faa34cb8-2d48-4851-a839-fc40536a0234,0,1,0894db61-51f6-4068-9634-e55d95e2a8ac,0894db61-51f6-4068-9634-e55d95e2a8ac,0,1,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,0,1,67aed41e-9707-4007-bb3c-7273476664bb,67aed41e-9707-4007-bb3c-7273476664bb,0,1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,0,1,de25a90c-4b46-4340-b649-93e16dde33de,de25a90c-4b46-4340-b649-93e16dde33de,0,1,4f2d0398-49f4-410c-a451-436cbf96a262,4f2d0398-49f4-410c-a451-436cbf96a262,0,1,ed297409-6215-4fd4-b47d-a2247e0343da,ed297409-6215-4fd4-b47d-a2247e0343da,0,1,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,0,1,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,0,1,8c472f51-47ec-43c4-9858-fd19ac3e17f3,8c472f51-47ec-43c4-9858-fd19ac3e17f3,0,1,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,0,1,c54f31ce-114b-46d3-b4c6-12c8f07727ca,c54f31ce-114b-46d3-b4c6-12c8f07727ca,0,1,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,0,1,b2c8bd74-21c9-4495-93e2-ca5355698350,b2c8bd74-21c9-4495-93e2-ca5355698350,0,1,249b6436-bd44-4950-b118-7f40f7aaf794,249b6436-bd44-4950-b118-7f40f7aaf794,0,1,712c2b73-4697-4581-a095-70555aee8be2,712c2b73-4697-4581-a095-70555aee8be2,0,1,c1508d67-ac6d-41e3-884d-b3bdd54659f8,c1508d67-ac6d-41e3-884d-b3bdd54659f8,0,1,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,0,1,ce6d1259-af90-482b-b19a-405512321bd9,ce6d1259-af90-482b-b19a-405512321bd9,0,1,df48bfa3-5502-4a61-a79f-1dea043dac36,df48bfa3-5502-4a61-a79f-1dea043dac36,0,1,adee37e6-f087-422f-91b3-681f3d73189c,adee37e6-f087-422f-91b3-681f3d73189c,0,1,35103a27-230c-45c0-a8c9-24bd46608bbb,35103a27-230c-45c0-a8c9-24bd46608bbb,0,1,c5e9f987-4466-4161-8e36-278b0b3ce056,c5e9f987-4466-4161-8e36-278b0b3ce056,0,1,b6566d54-e821-4a2a-a447-0f533f35de91,b6566d54-e821-4a2a-a447-0f533f35de91,0,1,46568b9a-a765-4037-8a86-b184a570ab37,46568b9a-a765-4037-8a86-b184a570ab37,0,1,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,0,1,547a6dec-6fe8-439d-a8d9-ac2612af20d2,547a6dec-6fe8-439d-a8d9-ac2612af20d2,0,1,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,0,1,84395058-d46a-428c-b782-a9fa89fea14a,84395058-d46a-428c-b782-a9fa89fea14a,0,1,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,0,1,5b7eb8bc-ad6b-4191-a6c1-92561bb944f2,5b7eb8bc-ad6b-4191-a6c1-92561bb944f2,0,1,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,0,1,93016393-c637-4d81-8675-aa5e51e678e0,93016393-c637-4d81-8675-aa5e51e678e0,0,1,d8621f68-106e-4058-963f-56010491ae2e,d8621f68-106e-4058-963f-56010491ae2e,0,1,1f3057c2-135f-44b2-9f86-34481fbc5596,1f3057c2-135f-44b2-9f86-34481fbc5596,0,1,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,0,1,f2e2df50-52fc-4e95-909b-80fc91a68f62,f2e2df50-52fc-4e95-909b-80fc91a68f62,0,1,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,0,1,d2762764-b5c0-4aeb-8e89-3371972f22d8,d2762764-b5c0-4aeb-8e89-3371972f22d8,0,1,1fca06d9-b015-4fc8-abdd-3e2397e0c307,1fca06d9-b015-4fc8-abdd-3e2397e0c307,0,1,573f1753-9194-4aaf-9217-5cac70ff108f,573f1753-9194-4aaf-9217-5cac70ff108f,0,1,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1f7ec25a-05b1-468b-8857-2bb1aed3678a,0,1,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,c121b8bc-ecbf-4775-b210-3c1e3502a6ac,0,1,4a1e6d25-89e7-468a-aef1-6ded0154dca2,4a1e6d25-89e7-468a-aef1-6ded0154dca2,0,1,905624ea-b253-413f-b651-1eb2c5a7d52a,905624ea-b253-413f-b651-1eb2c5a7d52a,0,1,b639ed30-3e37-4c65-a39f-00fe735950eb,b639ed30-3e37-4c65-a39f-00fe735950eb,0,1,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,0,1,f137eb0f-bde7-412d-9229-d7a4f9456e6c,f137eb0f-bde7-412d-9229-d7a4f9456e6c,0,1,90880131-8065-4a7e-a0fa-ecff9e27363c,90880131-8065-4a7e-a0fa-ecff9e27363c,0,1,57e9fcea-342c-4089-bd10-befb3faf0dbd,57e9fcea-342c-4089-bd10-befb3faf0dbd,0,1,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,0,1,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,0,1,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,0,1,51a0444d-13c8-45a8-97f6-f3f976964bf8,51a0444d-13c8-45a8-97f6-f3f976964bf8,0,1,7e2ba519-fbb9-4163-b20b-b99898e6ac57,7e2ba519-fbb9-4163-b20b-b99898e6ac57,0,1,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,0,1,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,0,1,2b1619a6-c841-4963-8c51-c1d8d6ba3746,2b1619a6-c841-4963-8c51-c1d8d6ba3746,0,1,eab50f82-4612-47fd-a5c2-9678016a1937,eab50f82-4612-47fd-a5c2-9678016a1937,0,1,4212bb94-7c24-4d4f-8bb8-4060bd21a135,4212bb94-7c24-4d4f-8bb8-4060bd21a135,0,1,2609ba3c-e4de-45b3-86e0-93db39a21eee,2609ba3c-e4de-45b3-86e0-93db39a21eee,0,1,00dcfeab-7ba1-4a50-996e-4fd693dd0514,00dcfeab-7ba1-4a50-996e-4fd693dd0514,0,1,d21971c9-9aa6-448a-ab37-49ad0b0547ec,d21971c9-9aa6-448a-ab37-49ad0b0547ec,0,1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,0,1,00418e6c-77b2-4753-b9ff-3a8013436f8a,00418e6c-77b2-4753-b9ff-3a8013436f8a,0,1,e2c76c41-4c47-4588-a081-7bd81ac1698b,e2c76c41-4c47-4588-a081-7bd81ac1698b,0,1,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,0,1,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,0,1,d9f1f56b-75c8-43e9-8043-89076c225f78,d9f1f56b-75c8-43e9-8043-89076c225f78,0,1,a3c9a7eb-2104-4402-954c-3e12de4a7de3,a3c9a7eb-2104-4402-954c-3e12de4a7de3,0,1,38bf6d3b-5435-4bac-b9fc-23b80afeb760,38bf6d3b-5435-4bac-b9fc-23b80afeb760,0,1,6c34eef9-9405-4de0-9177-1bae85251ae4,6c34eef9-9405-4de0-9177-1bae85251ae4,0,1,556a0e57-5b3b-4303-a013-0bd296c506b8,556a0e57-5b3b-4303-a013-0bd296c506b8,0,1,fabbac92-cb98-4087-b3fa-387482ed0d86,fabbac92-cb98-4087-b3fa-387482ed0d86,0,1,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,0,1,e09534e3-ac6e-42a6-86e8-564acb20089a,e09534e3-ac6e-42a6-86e8-564acb20089a,0,1,5e380276-2a08-435c-927e-a7f56f5a4dbc,5e380276-2a08-435c-927e-a7f56f5a4dbc,0,1,d06e845a-9f54-40dd-b0df-6988def62017,d06e845a-9f54-40dd-b0df-6988def62017,0,1,7badb97b-c359-42af-9066-6bbfc0650cf9,7badb97b-c359-42af-9066-6bbfc0650cf9,0,1,63223883-06cf-4d01-be95-5e410cc58a22,63223883-06cf-4d01-be95-5e410cc58a22,0,1,1929139f-dabb-4c40-9423-158093360889,1929139f-dabb-4c40-9423-158093360889,0,1,dad92df4-685b-4260-b35f-4d031262dfea,dad92df4-685b-4260-b35f-4d031262dfea,0,1,4399c19a-ddba-42e9-88b4-c5c28abad237,4399c19a-ddba-42e9-88b4-c5c28abad237,0,1,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,0,1,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,0,1,982315ba-df74-4a31-8929-71d1e5e6f147,982315ba-df74-4a31-8929-71d1e5e6f147,0,1,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,0,1,fd3a6a7e-203d-447a-aebd-7626579387fb,fd3a6a7e-203d-447a-aebd-7626579387fb,0,1,2cd04d4c-2619-40c9-adf4-7bb281f045b6,2cd04d4c-2619-40c9-adf4-7bb281f045b6,0,1,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,0,1,ff976027-75e8-475c-abfa-876d36733c13,ff976027-75e8-475c-abfa-876d36733c13,0,1,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,0,1,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,0,1,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,0,1,b3554203-b930-496d-a712-353bc13a0946,b3554203-b930-496d-a712-353bc13a0946,0,1,59775ce0-f778-45f6-9453-bbd0a0ec1f27,59775ce0-f778-45f6-9453-bbd0a0ec1f27,0,1,f772abd3-8ea0-41e9-aaca-c5375778941a,f772abd3-8ea0-41e9-aaca-c5375778941a,0,1,a1e494f8-96a4-41bd-9234-b87e8d8742c5,a1e494f8-96a4-41bd-9234-b87e8d8742c5,0,1,b322b047-16eb-4500-826a-6dfebb7d997a,b322b047-16eb-4500-826a-6dfebb7d997a,0,1,f08afb10-3467-4af8-804c-ba7761f1dac9,f08afb10-3467-4af8-804c-ba7761f1dac9,0,1,c8da922f-e31e-49b0-b90e-1c060424bde5,c8da922f-e31e-49b0-b90e-1c060424bde5,0,1,41462827-fd8b-4ee6-a739-a884d704bba5,41462827-fd8b-4ee6-a739-a884d704bba5,0,1,eca025d2-4fe9-4542-b9f5-46ae2631256e,eca025d2-4fe9-4542-b9f5-46ae2631256e,0,1,35bc58df-8aff-48dd-83a9-b60b0461f94d,35bc58df-8aff-48dd-83a9-b60b0461f94d,0,1,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0,1,b65afceb-a200-42d5-9948-831a5ad84b1b,b65afceb-a200-42d5-9948-831a5ad84b1b,0,1,feb1a5c1-c805-4079-8f05-8a44f51b0b02,feb1a5c1-c805-4079-8f05-8a44f51b0b02,0,1,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,0,1,1f55f330-7c0a-4a29-905f-51d664515bc5,1f55f330-7c0a-4a29-905f-51d664515bc5,0,1,6106e958-354c-4211-992c-3c3819e8828e,6106e958-354c-4211-992c-3c3819e8828e,0,1,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,0,1,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,0,1,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,0,1,231d3950-f363-4e63-83cd-8ddb81507c27,231d3950-f363-4e63-83cd-8ddb81507c27,0,1,87429f11-bf95-4013-bf13-da904570f88d,87429f11-bf95-4013-bf13-da904570f88d,0,1,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,0,1,feb41347-62db-41cf-ace0-d8b9de361af3,feb41347-62db-41cf-ace0-d8b9de361af3,0,1,5a088468-4065-4e0c-9b84-1162de8d3fdd,5a088468-4065-4e0c-9b84-1162de8d3fdd,0,1,dbdf3ae7-a0af-44b9-8e3d-c402d98cda03,dbdf3ae7-a0af-44b9-8e3d-c402d98cda03,0,1,cdce186a-229d-492d-8811-147fc4d7cdf5,cdce186a-229d-492d-8811-147fc4d7cdf5,0,1,5f91b00f-d8fc-4d63-8486-66339357ab22,5f91b00f-d8fc-4d63-8486-66339357ab22,0,1,16d44ab1-4bce-4df8-a215-6ed5173c75a8,16d44ab1-4bce-4df8-a215-6ed5173c75a8,0,1,543f976e-fea3-4a51-9962-b8e0fcd3f707,543f976e-fea3-4a51-9962-b8e0fcd3f707,0,1,375977c1-5745-4e78-a4df-cef966c0ccf8,375977c1-5745-4e78-a4df-cef966c0ccf8,0,1,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,0,1,c3796d85-2a24-43c4-9673-64e56249a1d0,c3796d85-2a24-43c4-9673-64e56249a1d0,0,1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,0,1,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,0,1,731211c2-ef90-4883-9525-83cd91b742ac,731211c2-ef90-4883-9525-83cd91b742ac,0,1,0adf02da-940a-4bfc-afa5-59605494a169,0adf02da-940a-4bfc-afa5-59605494a169,0,1,50a1e3bf-8624-4474-854e-21b89aaf97ed,50a1e3bf-8624-4474-854e-21b89aaf97ed,0,1,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,0,1,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,0,1,847b97a3-d0bc-45e2-b06c-932bb22d8eca,847b97a3-d0bc-45e2-b06c-932bb22d8eca,0,1,503b3eab-b7f1-4ede-8845-3290a834cec7,503b3eab-b7f1-4ede-8845-3290a834cec7,0,1,8361991a-0f30-4a03-9a4c-90556b744f53,8361991a-0f30-4a03-9a4c-90556b744f53,0,1,3116fa60-bc42-4dea-aa03-387896168690,3116fa60-bc42-4dea-aa03-387896168690,0,1,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,0,1,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,0,1,f9196766-4ae2-4a73-bed6-4a8838323e02,f9196766-4ae2-4a73-bed6-4a8838323e02,0,1,ca797560-8802-4bdc-b21f-7a7fd795beae,ca797560-8802-4bdc-b21f-7a7fd795beae,0,1,56242b05-d722-4d4a-82d9-517e0e169d0b,56242b05-d722-4d4a-82d9-517e0e169d0b,0,1,5504f5d1-35d8-4a47-a0e1-003fe00395c1,5504f5d1-35d8-4a47-a0e1-003fe00395c1,0,1,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,0,1,06afe397-1c7e-400e-bb24-f8e611d114e8,06afe397-1c7e-400e-bb24-f8e611d114e8,0,1,f0105e51-9510-426a-8aa0-af827d93ffd9,f0105e51-9510-426a-8aa0-af827d93ffd9,0,1,3df19dbf-efe7-4e31-99ad-fafb59ec1329,3df19dbf-efe7-4e31-99ad-fafb59ec1329,0,1,baf12d47-fbfe-4563-aa23-26d9f7e83169,baf12d47-fbfe-4563-aa23-26d9f7e83169,0,1,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,0,1,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0,1,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,0,1,11fe3a42-98c4-49ba-b697-86ffb172f16f,11fe3a42-98c4-49ba-b697-86ffb172f16f,0,1,07b53818-7318-4400-8af5-457fac012755,07b53818-7318-4400-8af5-457fac012755,0,1,292b47e7-5cf3-462d-a466-dac6253a7f03,292b47e7-5cf3-462d-a466-dac6253a7f03,0,1,8ecc070f-f6fb-46b1-9636-b77aa80f8804,8ecc070f-f6fb-46b1-9636-b77aa80f8804,0,1,8405be9d-465b-4744-b04f-03933b52f02e,8405be9d-465b-4744-b04f-03933b52f02e,0,1,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,0,1,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,f09b09ce-9e3c-406a-8508-b6e7e6ec966e,0,1,9bf55587-1ffe-42bc-b8e8-3f956956f689,9bf55587-1ffe-42bc-b8e8-3f956956f689,0,1,2f67931e-543f-457e-80fd-78ca754e2e9c,2f67931e-543f-457e-80fd-78ca754e2e9c,0,1,595e5752-36a7-4bba-8a40-26920acae01d,595e5752-36a7-4bba-8a40-26920acae01d,0,1,ed5f4a2a-7dfc-4ebf-8656-020597eb24d9,ed5f4a2a-7dfc-4ebf-8656-020597eb24d9,0,1,28801fba-c429-4afa-bdcd-b3ec3ec22fda,28801fba-c429-4afa-bdcd-b3ec3ec22fda,0,1,d1a873ae-d45b-4600-9419-e701dce3da02,d1a873ae-d45b-4600-9419-e701dce3da02,0,1,e3a31f0d-a98f-43c6-bc39-087095ae8c39,e3a31f0d-a98f-43c6-bc39-087095ae8c39,0,1,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,0,1,b1c1c2eb-f9cd-468a-8398-b0b7f611f832,b1c1c2eb-f9cd-468a-8398-b0b7f611f832,0,1,eb3dfdc7-58b8-4b1f-b079-368c262364c9,eb3dfdc7-58b8-4b1f-b079-368c262364c9,0,1,5030a318-f8f7-4ec7-80d6-6eee0772562f,5030a318-f8f7-4ec7-80d6-6eee0772562f,0,1,242e911d-e49c-4b8a-8543-cc2e079220fd,242e911d-e49c-4b8a-8543-cc2e079220fd,0,1,9ea39d31-3775-4fb8-a3f3-202e54354d49,9ea39d31-3775-4fb8-a3f3-202e54354d49,0,1,73044e20-148c-46e9-b5b5-973c91de0d61,73044e20-148c-46e9-b5b5-973c91de0d61,0,1,f8ab477c-8e78-48c0-9f99-27748b109706,f8ab477c-8e78-48c0-9f99-27748b109706,0,1,24cff6c8-6c20-4383-b97c-6afa52738960,24cff6c8-6c20-4383-b97c-6afa52738960,0,1,462e2694-750d-49ef-93ac-17a7779be68d,462e2694-750d-49ef-93ac-17a7779be68d,0,1,c24ff02e-5afc-45df-81cf-64ea2b261c2d,c24ff02e-5afc-45df-81cf-64ea2b261c2d,0,1,2d51aae9-650d-4719-a94d-2609b69a2d36,2d51aae9-650d-4719-a94d-2609b69a2d36,0,1,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,0,1,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,0,1,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,0,1,85639a53-b367-49ce-84f2-4e21d81c489b,85639a53-b367-49ce-84f2-4e21d81c489b,0,1,24b59586-178e-4efc-90ae-529553f3bb6c,24b59586-178e-4efc-90ae-529553f3bb6c,0,1,20e75dd5-222a-4100-aa43-3684991e3f21,20e75dd5-222a-4100-aa43-3684991e3f21,0,1,3c611832-4bc2-4229-a27d-d5dc82f3a498,3c611832-4bc2-4229-a27d-d5dc82f3a498,0,1,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,0,1,5dadc422-1fbd-4918-9db3-09ec72c3404e,5dadc422-1fbd-4918-9db3-09ec72c3404e,0,1,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,0,1,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,0,1,c5478d09-c8d3-4cc6-878e-27656ecc8409,c5478d09-c8d3-4cc6-878e-27656ecc8409,0,1,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,0,1,75974146-5b1a-412c-b7d5-1575704bbdab,75974146-5b1a-412c-b7d5-1575704bbdab,0,1,949f87cb-258c-4b6b-95ee-8a7491a4b64e,949f87cb-258c-4b6b-95ee-8a7491a4b64e,0,1,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,0,1,5c089988-5381-41ed-9f05-f85db46b8d94,5c089988-5381-41ed-9f05-f85db46b8d94,0,1,85a36352-1569-4ce4-aeba-477db524c36d,85a36352-1569-4ce4-aeba-477db524c36d,0,1,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,0,1,9a4a0b04-3dfb-4551-90f0-16231f64b14f,9a4a0b04-3dfb-4551-90f0-16231f64b14f,0,1,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,0,1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,0,1,98edcd6b-1c50-45c6-9a4c-390827a4ba52,98edcd6b-1c50-45c6-9a4c-390827a4ba52,0,1,b99c2068-15ea-43a1-9e9f-db29647e2387,b99c2068-15ea-43a1-9e9f-db29647e2387,0,1,346cb8b7-a20e-4a06-823e-26dfb2e3e741,346cb8b7-a20e-4a06-823e-26dfb2e3e741,0,1,782cb93d-36e6-4923-b2b6-75caa3459cd6,782cb93d-36e6-4923-b2b6-75caa3459cd6,0,1,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,0,1,996c7873-1cc9-44f6-915b-5c6ed7ef2370,996c7873-1cc9-44f6-915b-5c6ed7ef2370,0,1,45a2569e-820c-4d7d-ba74-4a781d26bb2b,45a2569e-820c-4d7d-ba74-4a781d26bb2b,0,1,ced01234-9417-49ce-adf0-8cdd15e6dd7d,ced01234-9417-49ce-adf0-8cdd15e6dd7d,0,1,0eea37cc-47f8-4819-85da-d4991f4e58ed,0eea37cc-47f8-4819-85da-d4991f4e58ed,0,1,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,0,1,c1272bfc-196a-4f99-935f-e2516bc138d2,c1272bfc-196a-4f99-935f-e2516bc138d2,0,1,313e0688-745a-4385-b040-7ef8317a0eb7,313e0688-745a-4385-b040-7ef8317a0eb7,0,1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,0,1,8dc08932-0988-4e82-8a5f-385c0694f9ff,8dc08932-0988-4e82-8a5f-385c0694f9ff,0,1,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,0,1,37c37f15-f84b-456b-aab6-729562dc0908,37c37f15-f84b-456b-aab6-729562dc0908,0,1,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,0,1,7974e41d-5af3-4636-b405-c9405d89fb53,7974e41d-5af3-4636-b405-c9405d89fb53,0,1,21fad9b6-44df-417c-ba18-de4b8af98a34,21fad9b6-44df-417c-ba18-de4b8af98a34,0,1,11c086b0-c646-4701-983d-c38758286354,11c086b0-c646-4701-983d-c38758286354,0,1,92876c9e-52ff-480d-9878-5766f4f9d12c,92876c9e-52ff-480d-9878-5766f4f9d12c,0,1,b729d739-5249-4765-85ee-fd792bb22911,b729d739-5249-4765-85ee-fd792bb22911,0,1,d65c4485-7bac-4206-9a6c-7156f4bb876d,d65c4485-7bac-4206-9a6c-7156f4bb876d,0,1,d431d1e2-13dc-495c-9de1-b5ec872eceed,d431d1e2-13dc-495c-9de1-b5ec872eceed,0,1,e8bec681-d269-41ba-9184-556cbcc27d74,e8bec681-d269-41ba-9184-556cbcc27d74,0,1,b8aaef91-f72c-4127-a494-771c13694ca4,b8aaef91-f72c-4127-a494-771c13694ca4,0,1,433a114f-3198-4ef6-bbf8-ce9b54fdb736,433a114f-3198-4ef6-bbf8-ce9b54fdb736,0,1,02ac711c-e38e-422e-ac28-ba1b298df9cc,02ac711c-e38e-422e-ac28-ba1b298df9cc,0,1,3e090261-4aa2-4ece-9f77-62df83c890b3,3e090261-4aa2-4ece-9f77-62df83c890b3,0,1,bbfd9834-12b4-49ca-bdae-5c94efa80482,bbfd9834-12b4-49ca-bdae-5c94efa80482,0,1,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,0,1,c9ea4e72-5f01-42ae-88e3-52e49757b26f,c9ea4e72-5f01-42ae-88e3-52e49757b26f,0,1,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,0,1,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0,1,a623fef1-96eb-41ba-93fe-09162698f419,a623fef1-96eb-41ba-93fe-09162698f419,0,1,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,0,1,d8e1f92f-9efa-422d-bb21-43bd1a363cec,d8e1f92f-9efa-422d-bb21-43bd1a363cec,0,1,c1416383-bd7e-4dc4-ad88-d98ac87157fd,c1416383-bd7e-4dc4-ad88-d98ac87157fd,0,1,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,0,1,d5d9976a-4cc0-43f7-afd6-d43cebb07940,d5d9976a-4cc0-43f7-afd6-d43cebb07940,0,1,899f1526-d6bc-42ef-852e-7297a06db9e3,899f1526-d6bc-42ef-852e-7297a06db9e3,0,1,c694c132-1ddb-4273-818a-d3cca88c082a,c694c132-1ddb-4273-818a-d3cca88c082a,0,1,cd4da06e-c06b-4233-befc-1bc4c4db58e3,cd4da06e-c06b-4233-befc-1bc4c4db58e3,0,1,918a01fe-f753-4a4a-9200-55bbd6edaf5f,918a01fe-f753-4a4a-9200-55bbd6edaf5f,0,1,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,0,1,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,0,1,d6704410-6297-481e-a6cb-6d6aa566b4f8,d6704410-6297-481e-a6cb-6d6aa566b4f8,0,1,398937ca-b035-43bd-b0da-8c5153a87cb8,398937ca-b035-43bd-b0da-8c5153a87cb8,0,1,5b441321-bd1e-4c56-8f09-365b05985eed,5b441321-bd1e-4c56-8f09-365b05985eed,0,1,559f1e66-e8da-437a-aa27-d0e1be6619b6,559f1e66-e8da-437a-aa27-d0e1be6619b6,0,1,704d69cd-d921-4957-a004-43bd7eb4d979,704d69cd-d921-4957-a004-43bd7eb4d979,0,1,f1594682-16ac-408c-8307-a7a8db79b09f,f1594682-16ac-408c-8307-a7a8db79b09f,0,1,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,0,1,4cb814d8-cb1b-4366-b500-e820ad526b0c,4cb814d8-cb1b-4366-b500-e820ad526b0c,0,1,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,0,1,6c43df9f-ca36-415b-afec-302807820d73,6c43df9f-ca36-415b-afec-302807820d73,0,1,c7fb7551-806a-40b2-8879-14cd897b60d8,c7fb7551-806a-40b2-8879-14cd897b60d8,0,1,68337023-d573-4d04-95b6-44f73258c2a4,68337023-d573-4d04-95b6-44f73258c2a4,0,1,7cf39337-b722-486f-8e37-a62239d0ccd2,7cf39337-b722-486f-8e37-a62239d0ccd2,0,1,2571cfaf-d876-4385-a60a-1488aacf7080,2571cfaf-d876-4385-a60a-1488aacf7080,0,1,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,0,1,44398566-3189-4584-8f8a-9deb1d07ce41,44398566-3189-4584-8f8a-9deb1d07ce41,0,1,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,0,1,accfa63a-479d-4996-95bc-cdf5acdf203c,accfa63a-479d-4996-95bc-cdf5acdf203c,0,1,351998e0-8939-4dd4-a833-f4756bcc53b8,351998e0-8939-4dd4-a833-f4756bcc53b8,0,1,cd69bad8-524e-4be4-88cc-7732a88b38b8,cd69bad8-524e-4be4-88cc-7732a88b38b8,0,1,0a32248c-6994-4988-90d1-30882bc9da6b,0a32248c-6994-4988-90d1-30882bc9da6b,0,1,b57b53cb-6972-4bda-ae46-96571be1ebec,b57b53cb-6972-4bda-ae46-96571be1ebec,0,1,1a1a9636-fb72-4e4a-af96-5858442b1e61,1a1a9636-fb72-4e4a-af96-5858442b1e61,0,1,bca9cf34-9e11-4014-976a-28c4330b136e,bca9cf34-9e11-4014-976a-28c4330b136e,0,1,65fffe1a-6f36-4f50-975f-4471ad29d3ec,65fffe1a-6f36-4f50-975f-4471ad29d3ec,0,1,8fe5dad5-686a-4631-ae05-2917c33f7d83,8fe5dad5-686a-4631-ae05-2917c33f7d83,0,1,edef86c6-73bf-4e47-b62d-b2b548a732cd,edef86c6-73bf-4e47-b62d-b2b548a732cd,0,1,a1715044-d76f-4238-ba3e-989d04078d83,a1715044-d76f-4238-ba3e-989d04078d83,0,1,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,0,1,299c47a7-0b30-4f62-8f5c-f087ad6411fb,299c47a7-0b30-4f62-8f5c-f087ad6411fb,0,1,4d4724df-24fb-4c59-9d04-3f984906214a,4d4724df-24fb-4c59-9d04-3f984906214a,0,1,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,0,1,cb9b73ee-8531-48d9-9266-9aaa4336a612,cb9b73ee-8531-48d9-9266-9aaa4336a612,0,1,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,0,1,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,0,1,d042687f-0725-4611-a868-f5b4f6a3a3a8,d042687f-0725-4611-a868-f5b4f6a3a3a8,0,1,bb143340-7fff-49ef-b121-355c96613f78,bb143340-7fff-49ef-b121-355c96613f78,0,1,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,0,1,f2f69644-80dc-4b5e-a208-ed1de131e25e,f2f69644-80dc-4b5e-a208-ed1de131e25e,0,1,73060f72-6d08-47da-aac8-d4d2ed8f871c,73060f72-6d08-47da-aac8-d4d2ed8f871c,0,1,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,0,1,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,0,1,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,0,1,821225ea-1bad-49a6-a422-80d8a09baf13,821225ea-1bad-49a6-a422-80d8a09baf13,0,1,d0106f3a-8490-4277-a278-75c318ec252c,d0106f3a-8490-4277-a278-75c318ec252c,0,1,5035aa55-d557-419a-89e2-10ed0f8d109b,5035aa55-d557-419a-89e2-10ed0f8d109b,0,1,fb79315a-8d27-4c5e-9cfb-c7778dabedef,fb79315a-8d27-4c5e-9cfb-c7778dabedef,0,1,5f93d2af-64ff-41cc-8403-4a0e83160fea,5f93d2af-64ff-41cc-8403-4a0e83160fea,0,1,c12c90e4-7c40-489b-b14b-6b9442016e0f,c12c90e4-7c40-489b-b14b-6b9442016e0f,0,1,6371e288-3502-4d66-9006-b5a36107c0b7,6371e288-3502-4d66-9006-b5a36107c0b7,0,1,245814f7-028c-4c13-98eb-15412e851f81,245814f7-028c-4c13-98eb-15412e851f81,0,1,0132e564-2cd3-4930-8962-1068532f4be4,0132e564-2cd3-4930-8962-1068532f4be4,0,1,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,0,1,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,0,1,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,0,1,7021fca5-d612-43e1-927b-7f822153cf75,7021fca5-d612-43e1-927b-7f822153cf75,0,1,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,0,1,ee0a8d23-660a-492b-a813-b57394acee05,ee0a8d23-660a-492b-a813-b57394acee05,0,1,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,0,1,ade21e2e-349f-414b-8f35-6ae3b6a4064d,ade21e2e-349f-414b-8f35-6ae3b6a4064d,0,1,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,0,1,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,0,1,83f51efe-e2af-459a-b59f-2c036124ac23,83f51efe-e2af-459a-b59f-2c036124ac23,0,1,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,0,1,b03829e9-ba22-4584-85f0-c36d63f48242,b03829e9-ba22-4584-85f0-c36d63f48242,0,1,084a7c95-a59b-4861-b8b3-b5710a57ac60,084a7c95-a59b-4861-b8b3-b5710a57ac60,0,1,efcea6da-6746-4e00-913a-14cab38b5d84,efcea6da-6746-4e00-913a-14cab38b5d84,0,1,aff367fb-7fca-44d0-adf9-3731f14834f6,aff367fb-7fca-44d0-adf9-3731f14834f6,0,1,a2782760-dd4c-44d2-a785-814d6f610455,a2782760-dd4c-44d2-a785-814d6f610455,0,1,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,0,1,6581ac1f-11ef-42b8-9f3b-590bb7546e63,6581ac1f-11ef-42b8-9f3b-590bb7546e63,0,1,ce952e88-35b7-4506-81ac-d7081e50a650,ce952e88-35b7-4506-81ac-d7081e50a650,0,1,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,0,1,3bf1281f-7570-4633-86b9-3e953a7e6647,3bf1281f-7570-4633-86b9-3e953a7e6647,0,1,715dc289-5b14-4ee0-8716-9c15958b9069,715dc289-5b14-4ee0-8716-9c15958b9069,0,1,92707138-5004-4378-8477-f909166d319d,92707138-5004-4378-8477-f909166d319d,0,1,43661775-43bb-4d9e-bfbb-c46e7d194ca3,43661775-43bb-4d9e-bfbb-c46e7d194ca3,0,1,532637ef-be0d-4f42-9747-a88e17eb3def,532637ef-be0d-4f42-9747-a88e17eb3def,0,1,61127152-3e24-40b4-8a23-5eb6cae568ff,61127152-3e24-40b4-8a23-5eb6cae568ff,0,1,ffd987e3-e8af-4d46-881e-1e312e74dbac,ffd987e3-e8af-4d46-881e-1e312e74dbac,0,1,ad1142ed-183d-47a3-800c-997a3770e11e,ad1142ed-183d-47a3-800c-997a3770e11e,0,1,ebef37c6-4808-4683-93be-036ce19cafd5,ebef37c6-4808-4683-93be-036ce19cafd5,0,1,66364cd4-aaa5-421d-96d6-3c283c14650d,66364cd4-aaa5-421d-96d6-3c283c14650d,0,1,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,0,1,3c54d440-e908-43d6-a5cc-bb64620c82d7,3c54d440-e908-43d6-a5cc-bb64620c82d7,0,1,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,0,1,bf1dd911-8ee1-407b-acae-10c85b74baf3,bf1dd911-8ee1-407b-acae-10c85b74baf3,0,1,e924058f-25c3-4744-a565-836b824991b7,e924058f-25c3-4744-a565-836b824991b7,0,1,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,0,1,518dcd70-4ccf-4866-a94f-7ceec7dd2801,518dcd70-4ccf-4866-a94f-7ceec7dd2801,0,1,8f16763b-86f0-4ad0-b786-cce7dcb3460e,8f16763b-86f0-4ad0-b786-cce7dcb3460e,0,1,0481bc65-6a32-46b9-ae87-993ba52a29a5,0481bc65-6a32-46b9-ae87-993ba52a29a5,0,1,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,0,1,dbc5f419-63b0-4cbe-90ff-c0101105e46c,dbc5f419-63b0-4cbe-90ff-c0101105e46c,0,1,c708f6e9-b7a0-4046-90f3-83527da7b872,c708f6e9-b7a0-4046-90f3-83527da7b872,0,1,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0,1,14256e0a-a947-42a3-8e36-47bfbb052a0c,14256e0a-a947-42a3-8e36-47bfbb052a0c,0,1,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1b1aa77a-d14b-4751-a7da-0b5bac4db461,0,1,c0dcdb22-6719-4597-a781-bca1370909e5,c0dcdb22-6719-4597-a781-bca1370909e5,0,1,7a34f723-cd14-4949-a40f-7ce579bf0449,7a34f723-cd14-4949-a40f-7ce579bf0449,0,1,5cdc9ac7-bba9-4ed1-845a-607976fc4679,5cdc9ac7-bba9-4ed1-845a-607976fc4679,0,1,295f3692-0721-4c41-a69b-171ef20a5018,295f3692-0721-4c41-a69b-171ef20a5018,0,1,86c22871-6d1c-44e0-8ade-ce4bdeb23321,86c22871-6d1c-44e0-8ade-ce4bdeb23321,0,1,da51de81-4d4f-46b5-a308-7b50db6c45a7,da51de81-4d4f-46b5-a308-7b50db6c45a7,0,1,8d31ce6a-4d44-46c6-a11c-47fb33e88691,8d31ce6a-4d44-46c6-a11c-47fb33e88691,0,1,c2a8c2d3-ff13-4a13-acd4-797118c4e767,c2a8c2d3-ff13-4a13-acd4-797118c4e767,0,1,bc6adf75-8666-49f3-9703-b0014dfee123,bc6adf75-8666-49f3-9703-b0014dfee123,0,1,30632f54-b779-4857-a5cc-c53fe8887ee5,30632f54-b779-4857-a5cc-c53fe8887ee5,0,1,df22b227-b2c3-4e65-9706-7582f99fe59c,df22b227-b2c3-4e65-9706-7582f99fe59c,0,1,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,0,1,087480bb-8c89-4b00-a29b-b7e29926478d,087480bb-8c89-4b00-a29b-b7e29926478d,0,1,685373b7-638a-439a-8cba-703d56e4e404,685373b7-638a-439a-8cba-703d56e4e404,0,1,35828c88-f1ec-42e7-b189-78748931ee4a,35828c88-f1ec-42e7-b189-78748931ee4a,0,1,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,0,1,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1cfba08f-d5e5-4833-b494-a25d0477e9c3,0,1,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,0,1,921a0a14-8c06-4894-95ce-423000769364,921a0a14-8c06-4894-95ce-423000769364,0,1,3805ee39-a48a-499a-9ef8-9c2a5985404f,3805ee39-a48a-499a-9ef8-9c2a5985404f,0,1,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,0,1,08c2f92c-eb05-49e7-bfc9-4a89607b9864,08c2f92c-eb05-49e7-bfc9-4a89607b9864,0,1,6d751379-89a7-49b5-93e5-578329c63d9c,6d751379-89a7-49b5-93e5-578329c63d9c,0,1,c3f156ef-947e-4ebb-883f-4f099a116063,c3f156ef-947e-4ebb-883f-4f099a116063,0,1,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,0,1,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,0,1,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,0,1,e98e9e56-2995-430c-bd3b-f1070aec15a5,e98e9e56-2995-430c-bd3b-f1070aec15a5,0,1,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,0,1,8a7546f4-bfc9-4732-bf60-43a41e2c8753,8a7546f4-bfc9-4732-bf60-43a41e2c8753,0,1,16244165-d5a4-4012-8bb5-7f5fee1111af,16244165-d5a4-4012-8bb5-7f5fee1111af,0,1,290b72ad-004f-46ab-be5e-47557543b965,290b72ad-004f-46ab-be5e-47557543b965,0,1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,0,1,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,0,1,263bcd20-9878-48d4-aac4-b371ec49d8d6,263bcd20-9878-48d4-aac4-b371ec49d8d6,0,1,da1d8660-2757-4cea-bae0-c2210b9406ae,da1d8660-2757-4cea-bae0-c2210b9406ae,0,1,d60329c6-8f48-481d-82e7-18da355cb09c,d60329c6-8f48-481d-82e7-18da355cb09c,0,1,c4b14162-b25b-4099-9ec3-7251848ef08a,c4b14162-b25b-4099-9ec3-7251848ef08a,0,1,8eb5ba97-eb38-4357-8bfc-e9618280800d,8eb5ba97-eb38-4357-8bfc-e9618280800d,0,1,b72f73d5-e274-472b-871b-16af72dab603,b72f73d5-e274-472b-871b-16af72dab603,0,1,b008d184-0b61-460d-9490-89ecc1cd58ba,b008d184-0b61-460d-9490-89ecc1cd58ba,0,1,c8340e2f-6958-4bcd-8e17-499c4adfe60b,c8340e2f-6958-4bcd-8e17-499c4adfe60b,0,1,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,0,1,03f68d82-752c-45d1-bf9a-60ecd21a2c81,03f68d82-752c-45d1-bf9a-60ecd21a2c81,0,1,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,0,1,d4fffc79-2841-49a9-a382-e9e4138984df,d4fffc79-2841-49a9-a382-e9e4138984df,0,1,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,0,1,9f41f903-d316-4189-8dc0-603ea9036c1c,9f41f903-d316-4189-8dc0-603ea9036c1c,0,1,e19e70d6-8707-4dde-ae69-7bd97035ca03,e19e70d6-8707-4dde-ae69-7bd97035ca03,0,1,425b5272-1130-457d-8a05-aee8fad681d9,425b5272-1130-457d-8a05-aee8fad681d9,0,1,8d583436-f2a6-4a33-8137-1376f5754643,8d583436-f2a6-4a33-8137-1376f5754643,0,1,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,0,1,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,0,1,2d66502d-77ab-4cc9-9ccf-5433458fae9f,2d66502d-77ab-4cc9-9ccf-5433458fae9f,0,1,cff48da7-3c46-4602-83e8-90c9ea53e107,cff48da7-3c46-4602-83e8-90c9ea53e107,0,1,7155472d-c791-402c-96e1-d25612024c88,7155472d-c791-402c-96e1-d25612024c88,0,1,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,0,1,9005911d-ea81-48b6-bf50-1a328ff4d7be,9005911d-ea81-48b6-bf50-1a328ff4d7be,0,1,7df12006-c0c0-42a6-b852-bdced72c62e3,7df12006-c0c0-42a6-b852-bdced72c62e3,0,1,9c00987d-3c55-40eb-bae8-f36e71e4ef87,9c00987d-3c55-40eb-bae8-f36e71e4ef87,0,1,29273130-5142-48c9-8399-00e5ab4b6203,29273130-5142-48c9-8399-00e5ab4b6203,0,1,9e14cd7e-1293-4008-baf8-88df6a98abf7,9e14cd7e-1293-4008-baf8-88df6a98abf7,0,1,98e3aace-52a6-4911-8205-92165adca6de,98e3aace-52a6-4911-8205-92165adca6de,0,1,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,0,1,577e5fea-b792-4c8b-b3b3-a03a14b64b04,577e5fea-b792-4c8b-b3b3-a03a14b64b04,0,1,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,0,1,b18d312b-f9c3-4f37-ac77-d499e949f154,b18d312b-f9c3-4f37-ac77-d499e949f154,0,1,ace2beea-d393-412f-8b71-b845b665e2c4,ace2beea-d393-412f-8b71-b845b665e2c4,0,1,3fd4bc77-2a1b-4750-a54a-4171c8d40027,3fd4bc77-2a1b-4750-a54a-4171c8d40027,0,1,5b27fde9-fa80-48b1-aea1-73e132b9a944,5b27fde9-fa80-48b1-aea1-73e132b9a944,0,1,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,0,1,a747ec6b-f230-49b4-a929-7ed1ba87b078,a747ec6b-f230-49b4-a929-7ed1ba87b078,0,1,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,0,1,4802e016-a9e9-47d0-916b-b42194a1f388,4802e016-a9e9-47d0-916b-b42194a1f388,0,1,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,0,1,4062674a-4a81-494d-82bc-4984cd7c7903,4062674a-4a81-494d-82bc-4984cd7c7903,0,1,782a8801-06ca-4d63-bf8b-63d2320766d8,782a8801-06ca-4d63-bf8b-63d2320766d8,0,1,93a73123-d98c-4286-9269-7bfcedd115e8,93a73123-d98c-4286-9269-7bfcedd115e8,0,1,c5985c02-1824-4ce9-b415-1621dd2ee864,c5985c02-1824-4ce9-b415-1621dd2ee864,0,1,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,0,1,e819aaf6-3dfb-492a-8a4a-50a7c6854790,e819aaf6-3dfb-492a-8a4a-50a7c6854790,0,1,62b95ba1-f213-42fb-90f3-a03e8094bc9e,62b95ba1-f213-42fb-90f3-a03e8094bc9e,0,1,619b534d-5605-40d3-9b8c-4443a21d7795,619b534d-5605-40d3-9b8c-4443a21d7795,0,1,a010bbf4-d547-4576-9797-28e3096ffed3,a010bbf4-d547-4576-9797-28e3096ffed3,0,1,a44c3eb2-1054-41ca-82e8-fc35336e7009,a44c3eb2-1054-41ca-82e8-fc35336e7009,0,1,01f67911-4ca7-4668-b970-62c299b98e56,01f67911-4ca7-4668-b970-62c299b98e56,0,1,20c89c94-f77f-4e14-8c97-2a70c1419ce3,20c89c94-f77f-4e14-8c97-2a70c1419ce3,0,1,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,0,1,8d7750e9-899f-4434-8702-44cd02681779,8d7750e9-899f-4434-8702-44cd02681779,0,1,d85244dc-c417-4e69-9aa7-7ad313ecb940,d85244dc-c417-4e69-9aa7-7ad313ecb940,0,1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,0,1,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,0,1,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,0,1,0713de12-87d5-4877-bd8a-2b6466df67df,0713de12-87d5-4877-bd8a-2b6466df67df,0,1,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,0,1,c4d7c569-4649-4f98-a048-45f3c5933670,c4d7c569-4649-4f98-a048-45f3c5933670,0,1,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,0,1,426cbebb-880b-49c5-b046-83c5e071273e,426cbebb-880b-49c5-b046-83c5e071273e,0,1,ad08b104-01f8-4900-a06c-baa1d55eba84,ad08b104-01f8-4900-a06c-baa1d55eba84,0,1,9352d10d-188f-4074-8dd1-7be5c11525e3,9352d10d-188f-4074-8dd1-7be5c11525e3,0,1,1933634a-6f10-48e7-99f0-60ac338f7832,1933634a-6f10-48e7-99f0-60ac338f7832,0,1,655deec5-c079-4748-8521-b3f10c243394,655deec5-c079-4748-8521-b3f10c243394,0,1,f6d4d818-d54c-4337-82cf-abd5e6dbe770,f6d4d818-d54c-4337-82cf-abd5e6dbe770,0,1,656c447b-291f-4e62-81ac-1c004841aa72,656c447b-291f-4e62-81ac-1c004841aa72,0,1,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,0,1,5ba93404-58ad-4321-9a62-27db828f75f6,5ba93404-58ad-4321-9a62-27db828f75f6,0,1,3da20e86-1d83-4935-b425-a91392dc8f35,3da20e86-1d83-4935-b425-a91392dc8f35,0,1,b56f25d2-72a9-4d80-8998-77ac3097c873,b56f25d2-72a9-4d80-8998-77ac3097c873,0,1,03bd775a-e0a1-4205-82ce-6068e73ad134,03bd775a-e0a1-4205-82ce-6068e73ad134,0,1,40bed47b-7754-4a70-b51a-47385fd46e83,40bed47b-7754-4a70-b51a-47385fd46e83,0,1,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,0,1,1e5a4f93-1ab9-4775-9538-2a1772215d89,1e5a4f93-1ab9-4775-9538-2a1772215d89,0,1,c25db165-0734-4fef-b161-e5164954a616,c25db165-0734-4fef-b161-e5164954a616,0,1,4f97b909-68f9-482a-b958-b4caa9b83763,4f97b909-68f9-482a-b958-b4caa9b83763,0,1,c31e34db-41ff-4db3-a4d0-f780f67070f6,c31e34db-41ff-4db3-a4d0-f780f67070f6,0,1,7a014fcb-a4b8-4c1c-b0de-21907a917c25,7a014fcb-a4b8-4c1c-b0de-21907a917c25,0,1,1688ef5d-72df-4bc4-a879-89033d466ad7,1688ef5d-72df-4bc4-a879-89033d466ad7,0,1,30f18fbf-4240-4708-a71a-189f8fc324f3,30f18fbf-4240-4708-a71a-189f8fc324f3,0,1,344cb0de-315d-4d05-93f8-8a1f53208470,344cb0de-315d-4d05-93f8-8a1f53208470,0,1,cd869887-0b0e-43db-8b51-04fe4a1341d5,cd869887-0b0e-43db-8b51-04fe4a1341d5,0,1,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,0,1,a7973409-b18e-4b88-ad50-e2ae89470d8f,a7973409-b18e-4b88-ad50-e2ae89470d8f,0,1,a537875e-492e-4cf2-96e9-e2e97bb206da,a537875e-492e-4cf2-96e9-e2e97bb206da,0,1,085a08f3-9d93-429d-9b1b-9065ab8363f7,085a08f3-9d93-429d-9b1b-9065ab8363f7,0,1,a530c0a1-c1d2-40bb-9d0e-320074dbb684,a530c0a1-c1d2-40bb-9d0e-320074dbb684,0,1,55c63580-16f1-4d6f-a40b-e630f71ebb98,55c63580-16f1-4d6f-a40b-e630f71ebb98,0,1,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0,1,208c7b8c-3df9-4441-8ebf-34ffa81572a2,208c7b8c-3df9-4441-8ebf-34ffa81572a2,0,1,8c17fd7c-74d7-496a-a843-42022afb0707,8c17fd7c-74d7-496a-a843-42022afb0707,0,1,b456d820-8034-4381-960d-66d9f86b0a4b,b456d820-8034-4381-960d-66d9f86b0a4b,0,1,bd55fd03-cf67-4333-a554-98e03d18f780,bd55fd03-cf67-4333-a554-98e03d18f780,0,1,6eac5f7b-0952-4c94-9028-529b14ffcd4f,6eac5f7b-0952-4c94-9028-529b14ffcd4f,0,1,1a7c774d-5b86-4051-b797-3081e19fa30a,1a7c774d-5b86-4051-b797-3081e19fa30a,0,1,00949768-5833-4fe2-8752-b009d1bceef8,00949768-5833-4fe2-8752-b009d1bceef8,0,1,167455d1-6658-409f-834c-f6ccfe7b25de,167455d1-6658-409f-834c-f6ccfe7b25de,0,1,c5b3ca21-8f7b-4933-853c-7d95b17b5631,c5b3ca21-8f7b-4933-853c-7d95b17b5631,0,1,8b0faa1e-09da-4ba4-894e-e86abc5d39df,8b0faa1e-09da-4ba4-894e-e86abc5d39df,0,1,cb50b309-1b6c-400c-9e9e-67204dcccaae,cb50b309-1b6c-400c-9e9e-67204dcccaae,0,1,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,0,1,c46fd680-efbe-49a8-91f0-73e36d791fa9,c46fd680-efbe-49a8-91f0-73e36d791fa9,0,1,6995567b-5a3c-4e03-9fb4-e22363ed6555,6995567b-5a3c-4e03-9fb4-e22363ed6555,0,1,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,0,1,b8a966ba-3452-44df-91d0-7040ecd3e4c2,b8a966ba-3452-44df-91d0-7040ecd3e4c2,0,1,80d6883d-c608-4fe5-acae-78bc45e40e5f,80d6883d-c608-4fe5-acae-78bc45e40e5f,0,1,213b173a-c3b7-449c-a618-d479c4dc38e8,213b173a-c3b7-449c-a618-d479c4dc38e8,0,1,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,0,1,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,0,1,7534148d-0124-49a2-a446-c6205d153153,7534148d-0124-49a2-a446-c6205d153153,0,1,32ed8a10-7177-4e45-866e-04a1b6831570,32ed8a10-7177-4e45-866e-04a1b6831570,0,1,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,0,1,8190a432-1037-4334-b2c7-bae39f7f9442,8190a432-1037-4334-b2c7-bae39f7f9442,0,1,4733e5c1-8198-408b-8903-866d3b0fdc43,4733e5c1-8198-408b-8903-866d3b0fdc43,0,1,e1fc5146-37c5-4207-af05-7250976bd406,e1fc5146-37c5-4207-af05-7250976bd406,0,1,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,0,1,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,0,1,f5e27159-789a-4d34-ac51-fd99d753b83a,f5e27159-789a-4d34-ac51-fd99d753b83a,0,1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,0,1,981a74f4-cdc2-4016-b462-9b5fd0d6de4d,981a74f4-cdc2-4016-b462-9b5fd0d6de4d,0,1,1d89e2b7-8f66-4210-8ab4-29efde5e5295,1d89e2b7-8f66-4210-8ab4-29efde5e5295,0,1,fafff964-8daa-4921-9d53-fd6be3878d94,fafff964-8daa-4921-9d53-fd6be3878d94,0,1,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,0,1,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,0,1,4347f77e-bad9-4525-90a0-794787f03585,4347f77e-bad9-4525-90a0-794787f03585,0,1,cfde3330-2bed-4273-8d69-c213ebdde247,cfde3330-2bed-4273-8d69-c213ebdde247,0,1,2d6ca049-89a5-437e-971c-b8e42f61b460,2d6ca049-89a5-437e-971c-b8e42f61b460,0,1,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,0,1,271d58d0-4449-40cc-bae9-cc4c50eebd9b,271d58d0-4449-40cc-bae9-cc4c50eebd9b,0,1,58df9322-c786-4dd1-af49-7cd164b378da,58df9322-c786-4dd1-af49-7cd164b378da,0,1,8d48de7f-61d6-4462-9c14-f728206a482c,8d48de7f-61d6-4462-9c14-f728206a482c,0,1,a87e890a-8924-4f56-9e37-04579b95297a,a87e890a-8924-4f56-9e37-04579b95297a,0,1,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,0,1,4c1f2581-ee42-4df5-9169-20205a18a9be,4c1f2581-ee42-4df5-9169-20205a18a9be,0,1,bb3d9ea3-8895-4950-9ee9-4249ca983d48,bb3d9ea3-8895-4950-9ee9-4249ca983d48,0,1,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,0,1,b806d2b6-bbd1-4abd-9471-7791603a2fcf,b806d2b6-bbd1-4abd-9471-7791603a2fcf,0,1,d7aa519b-9a2e-4946-bd06-9ac22bb7c1e4,d7aa519b-9a2e-4946-bd06-9ac22bb7c1e4,0,1,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,0,1,34f50dd9-de16-4013-a2ef-6595d9c28930,34f50dd9-de16-4013-a2ef-6595d9c28930,0,1,56fcca65-3429-4409-bce7-f434f6530a74,56fcca65-3429-4409-bce7-f434f6530a74,0,1,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,0,1,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,0,1,b286f047-a4d0-4808-b1b4-27997ead6d49,b286f047-a4d0-4808-b1b4-27997ead6d49,0,1,49da2d3a-657a-4cfd-8e37-422b96d2cda5,49da2d3a-657a-4cfd-8e37-422b96d2cda5,0,1,fced16ae-abee-4fbe-9582-dfd368d5610a,fced16ae-abee-4fbe-9582-dfd368d5610a,0,1,afe60bad-1585-487f-9a39-9b9e031f9576,afe60bad-1585-487f-9a39-9b9e031f9576,0,1,4c4f0475-bd11-40c8-af0d-8affec6f838d,4c4f0475-bd11-40c8-af0d-8affec6f838d,0,1,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,0,1,855439d7-a621-48f5-b6d9-bc2bbd11ad90,855439d7-a621-48f5-b6d9-bc2bbd11ad90,0,1,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,0,1,2f25e742-555b-4db8-bff2-2d345ce2a93a,2f25e742-555b-4db8-bff2-2d345ce2a93a,0,1,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,0,1,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,0,1,a7fee9d3-569d-4b5b-bd47-44790e0095f5,a7fee9d3-569d-4b5b-bd47-44790e0095f5,0,1,a258fe12-7e55-4f89-86fa-962b1d2947ac,a258fe12-7e55-4f89-86fa-962b1d2947ac,0,1,93701593-5ac8-4266-b471-7e9ed35a9c3e,93701593-5ac8-4266-b471-7e9ed35a9c3e,0,1,0fdb864e-ede9-4777-835c-0804968ee544,0fdb864e-ede9-4777-835c-0804968ee544,0,1,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,0,1,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,0,1,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,0,1,5dee9814-fe38-4631-8148-8d6c87ef6f47,5dee9814-fe38-4631-8148-8d6c87ef6f47,0,1,37d17053-5c2b-4972-b6a5-a589f2ddbde6,37d17053-5c2b-4972-b6a5-a589f2ddbde6,0,1,c349968a-3f87-425b-8efb-d847934dee4b,c349968a-3f87-425b-8efb-d847934dee4b,0,1,3bb8dc33-970c-4c58-9036-ce716d963847,3bb8dc33-970c-4c58-9036-ce716d963847,0,1,fae0d2e0-1bcd-4a77-86d6-407ca05c1c95,fae0d2e0-1bcd-4a77-86d6-407ca05c1c95,0,1,b3ff39fa-f665-4d01-9a2a-69722e6b1071,b3ff39fa-f665-4d01-9a2a-69722e6b1071,0,1,0abacb0a-ce00-474e-8aec-35685c51ddef,0abacb0a-ce00-474e-8aec-35685c51ddef,0,1,ae407b17-03aa-4268-8603-58d6714dae89,ae407b17-03aa-4268-8603-58d6714dae89,0,1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,0,1,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,0,1,5bb6e52c-ac26-4143-8e90-f04f703f823b,5bb6e52c-ac26-4143-8e90-f04f703f823b,0,1,579baaa4-6493-4d99-8744-6399757295c7,579baaa4-6493-4d99-8744-6399757295c7,0,1,ae6d0e12-8857-476c-b4b2-f03295cbed3e,ae6d0e12-8857-476c-b4b2-f03295cbed3e,0,1,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,7ee1e0d0-9735-45da-bd24-c0dbabfd5b1e,0,1,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,0,1,51d83895-5692-4479-9612-07c790d19dff,51d83895-5692-4479-9612-07c790d19dff,0,1,9c1325af-7492-42be-b3af-51b692534510,9c1325af-7492-42be-b3af-51b692534510,0,1,dface15c-cd65-4fb1-b4dd-b513086d3f8e,dface15c-cd65-4fb1-b4dd-b513086d3f8e,0,1,d854b528-8456-4453-9c2d-4f96caf10481,d854b528-8456-4453-9c2d-4f96caf10481,0,1,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,0,1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,0,1,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,0,1,b7e85f5c-4312-44c6-895a-3f636a8c78d8,b7e85f5c-4312-44c6-895a-3f636a8c78d8,0,1,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,0,1,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,0,1,a1afacc5-f49a-4df2-a44d-479594d50179,a1afacc5-f49a-4df2-a44d-479594d50179,0,1,fe70eba3-7477-4a38-a511-d69960abb928,fe70eba3-7477-4a38-a511-d69960abb928,0,1,6534ea96-2145-49e6-9739-f59459dc7f6b,6534ea96-2145-49e6-9739-f59459dc7f6b,0,1,f49bffa0-cad6-4801-b82e-21aa580e72e6,f49bffa0-cad6-4801-b82e-21aa580e72e6,0,1,bbbfb817-8db3-4415-86c3-af028276d6e9,bbbfb817-8db3-4415-86c3-af028276d6e9,0,1,6a91112c-f6cc-47a0-9d26-a36c7702af7d,6a91112c-f6cc-47a0-9d26-a36c7702af7d,0,1,cb92dc2e-6053-4233-a408-4464514b1257,cb92dc2e-6053-4233-a408-4464514b1257,0,1,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,0,1,85550a7a-8fe0-4296-ace5-63cf053536b4,85550a7a-8fe0-4296-ace5-63cf053536b4,0,1,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,0,1,3f8b6411-6606-4d27-891e-7c77be47c5f9,3f8b6411-6606-4d27-891e-7c77be47c5f9,0,1,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,0,1,5eb4ca7f-027a-4860-a167-e6b424527e7a,5eb4ca7f-027a-4860-a167-e6b424527e7a,0,1,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,f9b98ba5-1fa8-42a4-b1a2-dd71874083cb,0,1,6871015f-d959-4a77-a091-a23cb4ebd8f9,6871015f-d959-4a77-a091-a23cb4ebd8f9,0,1,e5e1631b-a494-4e73-b356-b4330b84cc88,e5e1631b-a494-4e73-b356-b4330b84cc88,0,1,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,0,1,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,0,1,80cf54ed-8677-4c89-a378-0abef6c64010,80cf54ed-8677-4c89-a378-0abef6c64010,0,1,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,0,1,56ee3afd-5ae6-421e-b9f3-26505e40f100,56ee3afd-5ae6-421e-b9f3-26505e40f100,0,1,63c9a839-78b2-4706-b380-5aedf6914930,63c9a839-78b2-4706-b380-5aedf6914930,0,1,40f5c1cb-2654-4738-bb44-6734b0e3490b,40f5c1cb-2654-4738-bb44-6734b0e3490b,0,1,2ec484b1-95eb-43a7-9430-1c1ef49f05af,2ec484b1-95eb-43a7-9430-1c1ef49f05af,0,1,1a314ce2-03bc-4267-89a9-bb5bb866f552,1a314ce2-03bc-4267-89a9-bb5bb866f552,0,1,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,0,1,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,0,1,e859dd18-8baf-49c0-b7a0-1205b6c125d3,e859dd18-8baf-49c0-b7a0-1205b6c125d3,0,1,da59378e-0a97-4cff-977b-cc51967068ee,da59378e-0a97-4cff-977b-cc51967068ee,0,1,bbaad46d-f60d-49e6-a077-075366bca47e,bbaad46d-f60d-49e6-a077-075366bca47e,0,1,0d9f5703-91e4-4769-bedd-5bd974f2f617,0d9f5703-91e4-4769-bedd-5bd974f2f617,0,1,926cdf17-1929-43d6-8205-858aab558ad9,926cdf17-1929-43d6-8205-858aab558ad9,0,1,5ec6838f-2d70-4f91-b41b-16adfe8ed587,5ec6838f-2d70-4f91-b41b-16adfe8ed587,0,1,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,0,1,bee8b8a0-f058-44cb-822c-620351567627,bee8b8a0-f058-44cb-822c-620351567627,0,1,26365e29-903b-47fd-ad96-e0d87f5d6e87,26365e29-903b-47fd-ad96-e0d87f5d6e87,0,1,569180cb-ce54-4267-94b9-332e35e3c17d,569180cb-ce54-4267-94b9-332e35e3c17d,0,1,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,0,1,a2c42946-1cdb-457a-a45b-97781cfb4a15,a2c42946-1cdb-457a-a45b-97781cfb4a15,0,1,20adf54c-044c-4bea-8028-b6d20917a030,20adf54c-044c-4bea-8028-b6d20917a030,0,1,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,0,1,fcb97a46-d5fd-4bb5-b899-17723a9fe346,fcb97a46-d5fd-4bb5-b899-17723a9fe346,0,1,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,0,1,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,0,1,a1a44832-6026-47ae-affd-5b6d52e84307,a1a44832-6026-47ae-affd-5b6d52e84307,0,1,d2fd8650-d13a-411d-8206-61b16016bd82,d2fd8650-d13a-411d-8206-61b16016bd82,0,1,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,f98bcdb8-6eed-4b4f-b3da-d80b5e8bed44,0,1,4033eb31-8281-402a-afff-431fa36e589e,4033eb31-8281-402a-afff-431fa36e589e,0,1,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,0,1,f59488c7-4643-4988-8043-5c9724e04279,f59488c7-4643-4988-8043-5c9724e04279,0,1,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,0,1,77149f7a-8a76-4569-9487-991c41e132ef,77149f7a-8a76-4569-9487-991c41e132ef,0,1,9e1be65e-986f-4d21-91f0-15c66db0c947,9e1be65e-986f-4d21-91f0-15c66db0c947,0,1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,0,1,d2fe4578-a1f8-4586-b052-fa71d25365c9,d2fe4578-a1f8-4586-b052-fa71d25365c9,0,1,f31f3dab-5796-47ac-a54d-3081f8cad817,f31f3dab-5796-47ac-a54d-3081f8cad817,0,1,cd59707e-b9e4-4038-8203-ae22a8060e8d,cd59707e-b9e4-4038-8203-ae22a8060e8d,0,1,db497857-33d3-49a1-b328-dfc62c973ecb,db497857-33d3-49a1-b328-dfc62c973ecb,0,1,139c001c-7b07-465a-9187-399ad32d294f,139c001c-7b07-465a-9187-399ad32d294f,0,1,5d228ce4-069e-4f98-beed-b8e1de17c3d9,5d228ce4-069e-4f98-beed-b8e1de17c3d9,0,1,9770fc09-87bf-4fce-9b0d-410efd30edae,9770fc09-87bf-4fce-9b0d-410efd30edae,0,1,f3d8590a-dcfa-4d41-8d03-642b99ffa040,f3d8590a-dcfa-4d41-8d03-642b99ffa040,0,1,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,0,1,20156709-1481-4007-8e89-9ce79fc589fc,20156709-1481-4007-8e89-9ce79fc589fc,0,1,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,0,1,7e7c5abd-b645-4de5-a40e-5805ec4456e2,7e7c5abd-b645-4de5-a40e-5805ec4456e2,0,1,763a16c3-a728-4b65-a485-705990310b4a,763a16c3-a728-4b65-a485-705990310b4a,0,1,65338920-c744-4d1e-b351-848b90a3feda,65338920-c744-4d1e-b351-848b90a3feda,0,1,2aedb1ac-caf1-45c7-913e-82a36637d5d4,2aedb1ac-caf1-45c7-913e-82a36637d5d4,0,1,56177464-5e9f-4598-96bc-eb311993c503,56177464-5e9f-4598-96bc-eb311993c503,0,1,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,0,1,bdfe65f4-4174-4e66-915c-943137981cf0,bdfe65f4-4174-4e66-915c-943137981cf0,0,1,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,0,1,c895d58a-5be1-4157-81af-f4f6db9b4b9e,c895d58a-5be1-4157-81af-f4f6db9b4b9e,0,1,8ce6cc1a-8570-4704-b9a3-44e815b2e753,8ce6cc1a-8570-4704-b9a3-44e815b2e753,0,1,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,0,1,497cbe4d-586d-48a2-8e98-d20e3e09ed42,497cbe4d-586d-48a2-8e98-d20e3e09ed42,0,1,150c9d05-4ccc-4cb7-879d-b1d9c3534343,150c9d05-4ccc-4cb7-879d-b1d9c3534343,0,1,38b7679d-3739-4572-baf2-d8c7b2a94f0a,38b7679d-3739-4572-baf2-d8c7b2a94f0a,0,1,1470f052-f032-46bc-b1ee-54555e725dfd,1470f052-f032-46bc-b1ee-54555e725dfd,0,1,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,0,1,7d336fdd-5cbf-4c92-a783-f451f7590502,7d336fdd-5cbf-4c92-a783-f451f7590502,0,1,ee8af8ee-e49a-4511-9a91-48814ab99d23,ee8af8ee-e49a-4511-9a91-48814ab99d23,0,1,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,0,1,bc10ad8f-383c-469a-8c0e-60805161055b,bc10ad8f-383c-469a-8c0e-60805161055b,0,1,86760ecb-2ddd-40ce-bc4f-94c23027a55e,86760ecb-2ddd-40ce-bc4f-94c23027a55e,0,1,6fbf844e-ee8d-490f-9177-6392d262312f,6fbf844e-ee8d-490f-9177-6392d262312f,0,1,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,0,1,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,0,1,37722a34-1148-4cc8-95e6-4645ae9cca98,37722a34-1148-4cc8-95e6-4645ae9cca98,0,1,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,0,1,cc34bd23-de0a-4b09-8333-e4693576b9f4,cc34bd23-de0a-4b09-8333-e4693576b9f4,0,1,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,0,1,903af13a-1f73-4145-a3d0-971c3be5fbe6,903af13a-1f73-4145-a3d0-971c3be5fbe6,0,1,65000437-bd07-4841-a458-679d44768c46,65000437-bd07-4841-a458-679d44768c46,0,1,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,0,1,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,0,1,953dbad6-4f5c-4319-874a-db358a77d001,953dbad6-4f5c-4319-874a-db358a77d001,0,1,05243f56-7e9b-4a61-8efb-1b5e525fff21,05243f56-7e9b-4a61-8efb-1b5e525fff21,0,1,7aa86a2d-2b47-447e-8901-806411011279,7aa86a2d-2b47-447e-8901-806411011279,0,1,fca0dfad-f853-4694-9ce9-53a3a10f59b7,fca0dfad-f853-4694-9ce9-53a3a10f59b7,0,1,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,0,1,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,0,1,b4cb92fb-ad82-44ed-9203-397b412b3453,b4cb92fb-ad82-44ed-9203-397b412b3453,0,1,69ceac29-06d3-45f2-b914-7966465cd0d3,69ceac29-06d3-45f2-b914-7966465cd0d3,0,1,b690721d-960b-4374-8d2c-feed3a2b354b,b690721d-960b-4374-8d2c-feed3a2b354b,0,1,271243d3-1871-4a0a-bf7f-63bacacf0a59,271243d3-1871-4a0a-bf7f-63bacacf0a59,0,1,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,0,1,1281fe19-bbca-4a4f-84d8-14187e62000f,1281fe19-bbca-4a4f-84d8-14187e62000f,0,1,9b7051d5-abc4-416c-a0e6-515d120d78e4,9b7051d5-abc4-416c-a0e6-515d120d78e4,0,1,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,0,1,869938e6-6310-4326-bd15-5b91fe2e0911,869938e6-6310-4326-bd15-5b91fe2e0911,0,1,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,0,1,a156521a-ece1-49d3-8056-1c3508273c45,a156521a-ece1-49d3-8056-1c3508273c45,0,1,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,0,1,10018f80-3138-4089-bf9a-a5f178f1e295,10018f80-3138-4089-bf9a-a5f178f1e295,0,1,43aba109-4b7f-45ef-9c30-8b754e81911b,43aba109-4b7f-45ef-9c30-8b754e81911b,0,1,4ccd72e1-7fd7-4a3b-8428-71b44992937e,4ccd72e1-7fd7-4a3b-8428-71b44992937e,0,1,46077650-2b2c-4319-8279-41f277971669,46077650-2b2c-4319-8279-41f277971669,0,1,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,0,1,612f3b95-d7db-4b33-92b5-4873205b424b,612f3b95-d7db-4b33-92b5-4873205b424b,0,1,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,0,1,e82ebd72-7b5a-4f45-b853-1001bf680a05,e82ebd72-7b5a-4f45-b853-1001bf680a05,0,1,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,0,1,e9e9b733-e97a-430d-95ce-45ea27751f64,e9e9b733-e97a-430d-95ce-45ea27751f64,0,1,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,0,1,3dd50c66-27f7-4f1e-86e9-c709995c8609,3dd50c66-27f7-4f1e-86e9-c709995c8609,0,1,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,0,1,ed1369c5-c274-45bd-ae91-7648565ae09f,ed1369c5-c274-45bd-ae91-7648565ae09f,0,1,8d0fce61-a22f-4033-9e03-3f00c4a21722,8d0fce61-a22f-4033-9e03-3f00c4a21722,0,1,bfb3f026-e940-49c3-ac30-408186f9e11e,bfb3f026-e940-49c3-ac30-408186f9e11e,0,1,e1dc83eb-a8cd-454b-8de8-cff2049be78c,e1dc83eb-a8cd-454b-8de8-cff2049be78c,0,1,9edd9288-1463-4d67-b9f0-40f351d978e9,9edd9288-1463-4d67-b9f0-40f351d978e9,0,1,c9db6c68-965f-4567-b26e-5d497a389de1,c9db6c68-965f-4567-b26e-5d497a389de1,0,1,4da2f65d-56bd-4140-9b31-e5ccac4a800a,4da2f65d-56bd-4140-9b31-e5ccac4a800a,0,1,eb163bba-b94c-4a78-9c2d-7b519325e3d4,eb163bba-b94c-4a78-9c2d-7b519325e3d4,0,1,939bdb9a-294b-4b42-a56f-030f69bc29c4,939bdb9a-294b-4b42-a56f-030f69bc29c4,0,1,ee7a763b-bcbf-4ff3-89af-eb7965b33515,ee7a763b-bcbf-4ff3-89af-eb7965b33515,0,1,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,0,1,b8931f98-c1d7-4e9b-be43-065064e7ba95,b8931f98-c1d7-4e9b-be43-065064e7ba95,0,1,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,0,1,60848308-931c-4da3-aa4b-37f6fb4b194f,60848308-931c-4da3-aa4b-37f6fb4b194f,0,1,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,0,1,54b14504-503b-45f6-9b5d-785b49829425,54b14504-503b-45f6-9b5d-785b49829425,0,1,80d3ee33-1cdc-4af6-85c2-787094526592,80d3ee33-1cdc-4af6-85c2-787094526592,0,1,c8b28660-6cb0-4ef5-85c2-a75da863ba96,c8b28660-6cb0-4ef5-85c2-a75da863ba96,0,1,1cd607b4-49fc-460e-a014-6afe50083b47,1cd607b4-49fc-460e-a014-6afe50083b47,0,1,a215e767-36e9-4408-9d18-7b4be757022a,a215e767-36e9-4408-9d18-7b4be757022a,0,1,a3e262bc-9f0d-480d-a1d1-c2326105d22d,a3e262bc-9f0d-480d-a1d1-c2326105d22d,0,1,8eae0c79-288b-4773-90bb-49299ad45628,8eae0c79-288b-4773-90bb-49299ad45628,0,1,2faa5594-f1b4-4312-b674-82fdf9623105,2faa5594-f1b4-4312-b674-82fdf9623105,0,1,185c1ad3-b5db-49b6-9342-d08e1bf64903,185c1ad3-b5db-49b6-9342-d08e1bf64903,0,1,3c69a4ad-001d-4421-88f6-412e15d710d6,3c69a4ad-001d-4421-88f6-412e15d710d6,0,1,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,0,1,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,0,1,6a68a08a-ea37-4573-ab9f-ec822f6d250b,6a68a08a-ea37-4573-ab9f-ec822f6d250b,0,1,00e87d04-8104-420b-b2c6-7304889a75b2,00e87d04-8104-420b-b2c6-7304889a75b2,0,1,bde86820-f7bb-463b-97d0-bfa5f8323af0,bde86820-f7bb-463b-97d0-bfa5f8323af0,0,1,289a6aac-dc4e-4fae-8815-853e78d450bb,289a6aac-dc4e-4fae-8815-853e78d450bb,0,1,557e7d89-83ed-45d0-86cc-6e355f14025d,557e7d89-83ed-45d0-86cc-6e355f14025d,0,1,d681b26b-dd8d-46d7-986e-10f05c37a1e4,d681b26b-dd8d-46d7-986e-10f05c37a1e4,0,1,4d3c216e-c04f-4884-8681-1c861c50ce7d,4d3c216e-c04f-4884-8681-1c861c50ce7d,0,1,4a41eee0-c973-4824-a07c-9fcf731f055e,4a41eee0-c973-4824-a07c-9fcf731f055e,0,1,ee756c33-f408-4449-a6bb-3186a0421362,ee756c33-f408-4449-a6bb-3186a0421362,0,1,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,0,1,6ff66622-4d20-4696-9fe9-4b4faeb21d96,6ff66622-4d20-4696-9fe9-4b4faeb21d96,0,1,46237eec-c206-4d21-883c-27599b9ed38c,46237eec-c206-4d21-883c-27599b9ed38c,0,1,8b451909-2c15-48f2-b869-65e7031cc542,8b451909-2c15-48f2-b869-65e7031cc542,0,1,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,0,1,7b377fca-4466-476f-9eb2-0b00141103d6,7b377fca-4466-476f-9eb2-0b00141103d6,0,1,9ce5eceb-f366-4035-956e-62721358b154,9ce5eceb-f366-4035-956e-62721358b154,0,1,1685c406-d0cb-4e0a-a3b0-036c8c22942a,1685c406-d0cb-4e0a-a3b0-036c8c22942a,0,1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,0,1,81db41a6-2580-4a69-b1fd-57cfd48a7efa,81db41a6-2580-4a69-b1fd-57cfd48a7efa,0,1,0db8b3b2-bf24-4006-9897-797084c241ef,0db8b3b2-bf24-4006-9897-797084c241ef,0,1,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,0,1,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,0,1,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,0,1,20091427-d173-40ca-b2c4-53ee99b0b5ae,20091427-d173-40ca-b2c4-53ee99b0b5ae,0,1,14cbde39-a39a-48e5-9b72-b798a0bcea3f,14cbde39-a39a-48e5-9b72-b798a0bcea3f,0,1,56871c10-e3af-4679-afad-3baa910d73bb,56871c10-e3af-4679-afad-3baa910d73bb,0,1,f81b51c5-57e4-41f8-9ad5-3d2717351b95,f81b51c5-57e4-41f8-9ad5-3d2717351b95,0,1,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,0,1,de0a39e0-d37d-47c6-a019-e44836edc8d1,de0a39e0-d37d-47c6-a019-e44836edc8d1,0,1,1fdcc1e7-ad53-409e-ba13-84c6429740cd,1fdcc1e7-ad53-409e-ba13-84c6429740cd,0,1,71d544bf-15c1-4581-8baa-ac126308425c,71d544bf-15c1-4581-8baa-ac126308425c,0,1,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,0,1,7acfe30e-73cb-465a-88f2-92b7275dc49b,7acfe30e-73cb-465a-88f2-92b7275dc49b,0,1,8e387dac-5029-49da-a013-355df0a51a44,8e387dac-5029-49da-a013-355df0a51a44,0,1,13859664-8307-40e8-855b-557b9cf2f1ec,13859664-8307-40e8-855b-557b9cf2f1ec,0,1,e4397fba-507f-497c-9414-7d08ccd4d799,e4397fba-507f-497c-9414-7d08ccd4d799,0,1,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,0,1,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,0,1,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,0,1,d915d338-3e4c-45c3-aef5-a07cf41b05f6,d915d338-3e4c-45c3-aef5-a07cf41b05f6,0,1,978640a2-5c4b-4e21-857e-34f00840fba8,978640a2-5c4b-4e21-857e-34f00840fba8,0,1,da2913e3-a29b-423f-9aae-08fed56a7d90,da2913e3-a29b-423f-9aae-08fed56a7d90,0,1,149e72b8-cc03-4b4f-8ca4-07987600c34d,149e72b8-cc03-4b4f-8ca4-07987600c34d,0,1,7649bd7b-fe8c-4338-80fc-153160a5e538,7649bd7b-fe8c-4338-80fc-153160a5e538,0,1,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,7779cd6d-8fa1-49cb-9bbc-9dfd0979f3f4,0,1,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,0,1,6137605e-4850-44ec-b4ee-048bd8e0ec3a,6137605e-4850-44ec-b4ee-048bd8e0ec3a,0,1,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,0,1,0e6e9372-beb4-478e-9428-71b19a60739b,0e6e9372-beb4-478e-9428-71b19a60739b,0,1,32b11498-542f-46b2-829f-1525936ab7fa,32b11498-542f-46b2-829f-1525936ab7fa,0,1,64afa916-4750-4008-8c6c-2a470fb11283,64afa916-4750-4008-8c6c-2a470fb11283,0,1,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,0,1,35354abc-9a76-4ee8-8796-c24b37365ea0,35354abc-9a76-4ee8-8796-c24b37365ea0,0,1,7078977f-31bf-427e-ac37-e309d81fe999,7078977f-31bf-427e-ac37-e309d81fe999,0,1,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,0,1,d8854555-9e15-4d82-a1fd-656a848a8e8a,d8854555-9e15-4d82-a1fd-656a848a8e8a,0,1,53191842-ea05-4491-84d7-071cd201992d,53191842-ea05-4491-84d7-071cd201992d,0,1,86c70449-4cf7-4baf-9742-b82b134ed929,86c70449-4cf7-4baf-9742-b82b134ed929,0,1,af3b1881-163a-4c07-a1d9-77ceadf59c77,af3b1881-163a-4c07-a1d9-77ceadf59c77,0,1,b78be6fb-7db8-48c8-ba7b-aab1fea34890,b78be6fb-7db8-48c8-ba7b-aab1fea34890,0,1,bd27276a-e80c-4135-b341-f99a816ffe86,bd27276a-e80c-4135-b341-f99a816ffe86,0,1,35306678-147c-4ad1-a3c6-c80a11afa22f,35306678-147c-4ad1-a3c6-c80a11afa22f,0,1,0da75726-ae71-4d83-a696-a774c787a8a2,0da75726-ae71-4d83-a696-a774c787a8a2,0,1,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,0,1,896a7267-0198-4cbb-b6e6-7aa157c0cc61,896a7267-0198-4cbb-b6e6-7aa157c0cc61,0,1,2005bf54-219b-4111-bff1-e12e2c6dca3e,2005bf54-219b-4111-bff1-e12e2c6dca3e,0,1,abab8f73-d705-4350-b44d-f912649a2190,abab8f73-d705-4350-b44d-f912649a2190,0,1,20c9c25c-f8c9-429f-84bd-543cb809abef,20c9c25c-f8c9-429f-84bd-543cb809abef,0,1,dc5f451e-3275-43a8-9f48-45b83220d461,dc5f451e-3275-43a8-9f48-45b83220d461,0,1,028f5e81-61df-4d13-876d-781c5fd18ee6,028f5e81-61df-4d13-876d-781c5fd18ee6,0,1,3cbb59ef-7f64-4590-8a54-ba01e78283c3,3cbb59ef-7f64-4590-8a54-ba01e78283c3,0,1,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,0,1,388eb513-fadb-40cd-8a7b-33b904dd758e,388eb513-fadb-40cd-8a7b-33b904dd758e,0,1,0613c6aa-e1fe-4632-a396-a17ec773158f,0613c6aa-e1fe-4632-a396-a17ec773158f,0,1,1a330987-4c79-4ab7-b250-db8d32c78751,1a330987-4c79-4ab7-b250-db8d32c78751,0,1,555062ed-9a04-41d8-877f-0a667e9a08cd,555062ed-9a04-41d8-877f-0a667e9a08cd,0,1,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,0,1,ac160e1c-fef7-4625-84e0-964b397f6bdb,ac160e1c-fef7-4625-84e0-964b397f6bdb,0,1,b8946d9c-dda8-4b94-8cbf-db62b647c53e,b8946d9c-dda8-4b94-8cbf-db62b647c53e,0,1,24215916-7732-4030-9f88-163f644e94f7,24215916-7732-4030-9f88-163f644e94f7,0,1,69697945-9748-4cea-a20f-e244b46de2e8,69697945-9748-4cea-a20f-e244b46de2e8,0,1,68538fd1-262c-43ea-b09f-8a66643a0062,68538fd1-262c-43ea-b09f-8a66643a0062,0,1,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,0,1,82ad24cc-d9f8-440b-a720-e204101d85da,82ad24cc-d9f8-440b-a720-e204101d85da,0,1,8010065f-aec8-4768-85ec-9eb7b2b01e7e,8010065f-aec8-4768-85ec-9eb7b2b01e7e,0,1,a44348cb-e20c-4afd-8483-3b9c735b352c,a44348cb-e20c-4afd-8483-3b9c735b352c,0,1,ebfe4c74-6e16-4b64-8a52-cea95c446903,ebfe4c74-6e16-4b64-8a52-cea95c446903,0,1,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,0,1,d912e472-9553-4b96-8b16-7aaff6c14239,d912e472-9553-4b96-8b16-7aaff6c14239,0,1,b04018b5-a74d-43c9-8519-6cc8aa23fe09,b04018b5-a74d-43c9-8519-6cc8aa23fe09,0,1,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,0,1,9283277f-2b75-4c3a-810a-8d4071b3afcc,9283277f-2b75-4c3a-810a-8d4071b3afcc,0,1,d03d5b18-57a2-43c0-99ea-8ad9d5788179,d03d5b18-57a2-43c0-99ea-8ad9d5788179,0,1,c491a7fc-14f9-498a-b7dd-575dfc66878e,c491a7fc-14f9-498a-b7dd-575dfc66878e,0,1,db15f8eb-4736-4b47-9cee-3e6883f0888c,db15f8eb-4736-4b47-9cee-3e6883f0888c,0,1,59064eb2-2770-4f1c-96bd-801926fe68ef,59064eb2-2770-4f1c-96bd-801926fe68ef,0,1,6b2340d7-687f-43a3-8eb8-8ddb86712466,6b2340d7-687f-43a3-8eb8-8ddb86712466,0,1,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,0,1,ca5d586f-81bb-40ee-b3bd-de854857c984,ca5d586f-81bb-40ee-b3bd-de854857c984,0,1,73f89524-dbe8-426f-8ee6-1277eb1967cc,73f89524-dbe8-426f-8ee6-1277eb1967cc,0,1,ee7d970c-cef7-4740-a357-1fe78f88a6e6,ee7d970c-cef7-4740-a357-1fe78f88a6e6,0,1,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,0,1,6733f1bd-7878-4a33-8995-c07526e87c1a,6733f1bd-7878-4a33-8995-c07526e87c1a,0,1,ec34befe-3c0b-4a75-b943-840c52e7dda5,ec34befe-3c0b-4a75-b943-840c52e7dda5,0,1,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,0,1,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0,1,144d5498-bb61-4bec-bef3-85a5a4aec3d5,144d5498-bb61-4bec-bef3-85a5a4aec3d5,0,1,9328da5c-4689-4a60-8136-ae9eac46ab38,9328da5c-4689-4a60-8136-ae9eac46ab38,0,1,42641296-64da-46e0-a407-de2d492f9c90,42641296-64da-46e0-a407-de2d492f9c90,0,1,b834af0b-086c-445d-a271-7e178c324551,b834af0b-086c-445d-a271-7e178c324551,0,1,32c10512-7bb8-423b-9503-ab2fa41386a4,32c10512-7bb8-423b-9503-ab2fa41386a4,0,1,888edfc4-8140-4675-b267-c32bf1d8d29d,888edfc4-8140-4675-b267-c32bf1d8d29d,0,1,f7e73257-fae1-465a-ae74-faaa0273a416,f7e73257-fae1-465a-ae74-faaa0273a416,0,1,2abbd53a-0ead-42af-8df6-fde663aea300,2abbd53a-0ead-42af-8df6-fde663aea300,0,1,24611bf9-5492-443a-935c-a0058e86493f,24611bf9-5492-443a-935c-a0058e86493f,0,1,af22406b-daac-475d-b6a9-577452502b84,af22406b-daac-475d-b6a9-577452502b84,0,1,7a925960-a579-4b06-90e0-5121dc774024,7a925960-a579-4b06-90e0-5121dc774024,0,1,13beb01d-dd08-4a6d-863b-651e70bbf51f,13beb01d-dd08-4a6d-863b-651e70bbf51f,0,1,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,0,1,57a0f5f3-6573-4b35-af25-cea3a25641f1,57a0f5f3-6573-4b35-af25-cea3a25641f1,0,1,ff18803b-4c3a-4720-a718-7547f04c6e2f,ff18803b-4c3a-4720-a718-7547f04c6e2f,0,1,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0,1,40b08a20-51a3-438b-ba54-466917ea809f,40b08a20-51a3-438b-ba54-466917ea809f,0,1,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,0,1,45a8c780-c067-40d7-bbe9-81f854aacf7a,45a8c780-c067-40d7-bbe9-81f854aacf7a,0,1,57885cac-059a-4a08-aa2c-43b116d2c777,57885cac-059a-4a08-aa2c-43b116d2c777,0,1,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,c0403df4-b1f2-4d7e-adb5-9ed881c1359b,0,1,56b570b1-93b0-468a-9672-9c71113753f3,56b570b1-93b0-468a-9672-9c71113753f3,0,1,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,0,1,e7b0ae70-0192-456c-9dc5-e66049fa9df2,e7b0ae70-0192-456c-9dc5-e66049fa9df2,0,1,68944d09-618e-4fa3-a7af-8c84218e0ac7,68944d09-618e-4fa3-a7af-8c84218e0ac7,0,1,91b12ce3-e8ba-4c9d-9daa-1d5532500314,91b12ce3-e8ba-4c9d-9daa-1d5532500314,0,1,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,0,1,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,0,1,cb57aabc-eeef-42b4-9bc2-873cebd9618c,cb57aabc-eeef-42b4-9bc2-873cebd9618c,0,1,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,0,1,52f30ed7-aa16-4ce2-9684-e50229ab0015,52f30ed7-aa16-4ce2-9684-e50229ab0015,0,1,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,0,1,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0,1,54ecaf7b-9bc5-483c-96e1-270bcd323590,54ecaf7b-9bc5-483c-96e1-270bcd323590,0,1,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,0,1,58f6f8fa-7473-40f5-973a-6279335d8f33,58f6f8fa-7473-40f5-973a-6279335d8f33,0,1,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,0,1,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,0,1,fa3632fe-185b-49aa-85ae-dfb721835d40,fa3632fe-185b-49aa-85ae-dfb721835d40,0,1,a4f15108-477c-465e-aaea-cb495ef52cf5,a4f15108-477c-465e-aaea-cb495ef52cf5,0,1,9cda5c2c-f401-4f63-b445-cef160296e48,9cda5c2c-f401-4f63-b445-cef160296e48,0,1,e8ae4a26-3127-43ae-af7a-c2e278d2611d,e8ae4a26-3127-43ae-af7a-c2e278d2611d,0,1,b923c78f-d074-41b4-b832-086686258f19,b923c78f-d074-41b4-b832-086686258f19,0,1,8ff96413-6fdd-4b8d-a181-ea0d8633defc,8ff96413-6fdd-4b8d-a181-ea0d8633defc,0,1,54604ed2-766b-4308-b99e-447817d82799,54604ed2-766b-4308-b99e-447817d82799,0,1,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,0,1,f48b4475-2cd9-41df-962a-6529f84985ca,f48b4475-2cd9-41df-962a-6529f84985ca,0,1,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,0,1,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,0,1,bf94feb9-edf7-4df8-b5f5-805613663a0a,bf94feb9-edf7-4df8-b5f5-805613663a0a,0,1,6d852a13-c85e-4e84-8396-f91c1ed0596e,6d852a13-c85e-4e84-8396-f91c1ed0596e,0,1,9c2d5313-a4fd-417e-a340-ad4980d0028b,9c2d5313-a4fd-417e-a340-ad4980d0028b,0,1,4fb4a280-9426-4c41-a9ba-11f9d01a0740,4fb4a280-9426-4c41-a9ba-11f9d01a0740,0,1,1591ee7e-870c-4bf7-9450-be84f1b2506f,1591ee7e-870c-4bf7-9450-be84f1b2506f,0,1,8f088f33-92d7-4e35-915d-6cda1129dd80,8f088f33-92d7-4e35-915d-6cda1129dd80,0,1,9a8578a2-8a92-4ab3-a480-173340f8b34a,9a8578a2-8a92-4ab3-a480-173340f8b34a,0,1,4889d27b-435b-4059-a34d-6afdf3c77fa3,4889d27b-435b-4059-a34d-6afdf3c77fa3,0,1,4ebf0988-ccc3-440c-bd0f-2d01636bd730,4ebf0988-ccc3-440c-bd0f-2d01636bd730,0,1,69f42341-268b-4e74-9d6d-527800d018ab,69f42341-268b-4e74-9d6d-527800d018ab,0,1,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,0,1,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,0,1,7eb5217f-684d-4a9e-8aef-48cedc809cbb,7eb5217f-684d-4a9e-8aef-48cedc809cbb,0,1,4b54d626-dc59-4e49-a708-0a7f98833b9a,4b54d626-dc59-4e49-a708-0a7f98833b9a,0,1,1c90a423-ef1b-42dc-a43b-1fda89672481,1c90a423-ef1b-42dc-a43b-1fda89672481,0,1,095cf2d6-5a7c-452d-8d60-991afb6e52bd,095cf2d6-5a7c-452d-8d60-991afb6e52bd,0,1,2c155a03-2aff-4632-adb2-be3266e0fac3,2c155a03-2aff-4632-adb2-be3266e0fac3,0,1,f9213a70-bfd6-464f-b28b-ed35bdf351c0,f9213a70-bfd6-464f-b28b-ed35bdf351c0,0,1,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,0,1,7e32c295-a769-4cff-a3eb-992f7031475f,7e32c295-a769-4cff-a3eb-992f7031475f,0,1,eb81610a-eb2f-4068-ba74-75e0f5bbace8,eb81610a-eb2f-4068-ba74-75e0f5bbace8,0,1,21826316-0b49-4034-a49e-6d34c15ceb5c,21826316-0b49-4034-a49e-6d34c15ceb5c,0,1,3abffa47-8d47-4173-897b-708e1a06ef39,3abffa47-8d47-4173-897b-708e1a06ef39,0,1,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0,1,5a398637-a06c-4442-9093-a864fa7f049f,5a398637-a06c-4442-9093-a864fa7f049f,0,1,38692186-a62a-42d1-87cd-7dbc6d4816ed,38692186-a62a-42d1-87cd-7dbc6d4816ed,0,1,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,0,1,3a28cea9-7fd7-4834-ab89-2a74331a64e3,3a28cea9-7fd7-4834-ab89-2a74331a64e3,0,1,0f881709-4520-4f18-af9d-cf08757693ff,0f881709-4520-4f18-af9d-cf08757693ff,0,1,c5151ca9-5103-42b2-8573-273c15416db8,c5151ca9-5103-42b2-8573-273c15416db8,0,1,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,0,1,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,0,1,115a6019-ef87-4126-8ebf-070c1e882940,115a6019-ef87-4126-8ebf-070c1e882940,0,1,162ce023-b2e1-41dc-bcaf-b8e30caccce0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,0,1,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,0,1,c13fb1cd-fe72-48a6-b383-55b6323619ce,c13fb1cd-fe72-48a6-b383-55b6323619ce,0,1,956fc8ee-96be-4309-b1e8-209372f151ab,956fc8ee-96be-4309-b1e8-209372f151ab,0,1,526c688e-a4d4-45f7-8bba-b8ceff38fe27,526c688e-a4d4-45f7-8bba-b8ceff38fe27,0,1,67efa786-312f-4c9c-b970-0320e92069af,67efa786-312f-4c9c-b970-0320e92069af,0,1,12f85e09-1190-4483-b531-630ab718db7f,12f85e09-1190-4483-b531-630ab718db7f,0,1,52f4453e-e968-4290-a79a-470f68fbd07f,52f4453e-e968-4290-a79a-470f68fbd07f,0,1,5b952e35-1037-4447-8293-6d8889692c8b,5b952e35-1037-4447-8293-6d8889692c8b,0,1,05bc8b4e-8c90-4502-8b16-7b1e7625d569,05bc8b4e-8c90-4502-8b16-7b1e7625d569,0,1,ce34d88d-3017-4197-a962-ea23a6a96d32,ce34d88d-3017-4197-a962-ea23a6a96d32,0,1,2cbc16da-aa67-4ad6-82f8-fa6922447be6,2cbc16da-aa67-4ad6-82f8-fa6922447be6,0,1,19d7a1ba-c343-4575-95da-53dac6d4b2cb,19d7a1ba-c343-4575-95da-53dac6d4b2cb,0,1,6cc8b3a0-3377-4b39-b6b0-69c862a15465,6cc8b3a0-3377-4b39-b6b0-69c862a15465,0,1,acb193f4-52e5-4572-a79b-b825a2f6525f,acb193f4-52e5-4572-a79b-b825a2f6525f,0,1,5d46f719-e468-48e2-b4ec-acb85c710451,5d46f719-e468-48e2-b4ec-acb85c710451,0,1,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,0,1,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,0,1,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,0,1,5422610d-b92c-4213-a58c-8db067d93b66,5422610d-b92c-4213-a58c-8db067d93b66,0,1,8f59a635-9e0e-470d-8fda-a47a262a59c2,8f59a635-9e0e-470d-8fda-a47a262a59c2,0,1,ffb50eb9-149a-46ec-9472-d8f20ad09810,ffb50eb9-149a-46ec-9472-d8f20ad09810,0,1,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,0,1,7a6449e2-e90a-4720-a769-192284ef69c1,7a6449e2-e90a-4720-a769-192284ef69c1,0,1,02118b98-2349-46b1-a328-d6e2b5781f7e,02118b98-2349-46b1-a328-d6e2b5781f7e,0,1,67de9cbb-5c80-4cff-bfbe-269a958e08e6,67de9cbb-5c80-4cff-bfbe-269a958e08e6,0,1,2228a457-6805-41ee-85af-5ebca9568bf4,2228a457-6805-41ee-85af-5ebca9568bf4,0,1,96b71795-e230-4ecb-b98d-4feb3f8b9662,96b71795-e230-4ecb-b98d-4feb3f8b9662,0,1,04055821-03ce-4049-af2c-8670c80517f6,04055821-03ce-4049-af2c-8670c80517f6,0,1,0101305d-62eb-4802-9cd4-d615a518d842,0101305d-62eb-4802-9cd4-d615a518d842,0,1,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,0,1,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,0,1,7c424424-9660-462d-9cf2-4c1e6bd284fa,7c424424-9660-462d-9cf2-4c1e6bd284fa,0,1,e118f957-ab2c-473b-ab64-37032f727416,e118f957-ab2c-473b-ab64-37032f727416,0,1,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,0,1,21f64e5f-dc94-4ce9-b836-e75646ae3325,21f64e5f-dc94-4ce9-b836-e75646ae3325,0,1,82e8a180-f2e1-406c-9609-89d33504aff2,82e8a180-f2e1-406c-9609-89d33504aff2,0,1,e7437c81-3d5b-466e-880c-8febe4a68e88,e7437c81-3d5b-466e-880c-8febe4a68e88,0,1,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,0,1,307771e6-bcf7-4016-b369-e1655bbe9e94,307771e6-bcf7-4016-b369-e1655bbe9e94,0,1,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,0,1,38fc6a54-846c-40b0-9254-3261f540bf18,38fc6a54-846c-40b0-9254-3261f540bf18,0,1,d9134d0c-56cd-4b8f-ab11-ae37fc306801,d9134d0c-56cd-4b8f-ab11-ae37fc306801,0,1,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,0,1,8f2af24b-f5fa-4f6d-831e-28453bdedefc,8f2af24b-f5fa-4f6d-831e-28453bdedefc,0,1,d119e21d-0087-4f22-b3bd-b14707b65330,d119e21d-0087-4f22-b3bd-b14707b65330,0,1,dc9b4072-11de-40fe-bf2a-f7b15af0a250,dc9b4072-11de-40fe-bf2a-f7b15af0a250,0,1,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,0,1,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,0,1,932b1c1a-72eb-49cd-8218-d0ced9c454d8,932b1c1a-72eb-49cd-8218-d0ced9c454d8,0,1,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,0,1,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,0,1,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,0,1,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,0,1,5dd336c4-88c5-4f53-acf0-5f86a658c528,5dd336c4-88c5-4f53-acf0-5f86a658c528,0,1,c723112b-286d-46f1-989d-81252062a025,c723112b-286d-46f1-989d-81252062a025,0,1,67e8b47e-4bad-4b2f-b196-8a9708893051,67e8b47e-4bad-4b2f-b196-8a9708893051,0,1,a583e53a-3f3c-48c7-8928-37ce40b2bafe,a583e53a-3f3c-48c7-8928-37ce40b2bafe,0,1,a844dd4a-274a-4894-9446-031dbe006084,a844dd4a-274a-4894-9446-031dbe006084,0,1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,0,1,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,0,1,77bdd30f-4933-4bda-9c7a-b0a097da0910,77bdd30f-4933-4bda-9c7a-b0a097da0910,0,1,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,0,1,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,0,1,a682e9e1-284f-4e32-86b2-6736f159f585,a682e9e1-284f-4e32-86b2-6736f159f585,0,1,84f0bd89-9b86-440f-b942-9b685e22233e,84f0bd89-9b86-440f-b942-9b685e22233e,0,1,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,0,1,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,0,1,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,0,1,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,0,1,fabf8a0b-366f-4f23-9377-315534bb854b,fabf8a0b-366f-4f23-9377-315534bb854b,0,1,7aac6439-64c9-4492-b866-bf91dda82d06,7aac6439-64c9-4492-b866-bf91dda82d06,0,1,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,0,1,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,0,1,08b86f29-64ef-467a-af1a-d27ffdf621ba,08b86f29-64ef-467a-af1a-d27ffdf621ba,0,1,6483d1ab-c53d-4985-ad7e-b799adbcd9da,6483d1ab-c53d-4985-ad7e-b799adbcd9da,0,1,82f66233-ed13-49ae-ab72-7cf91c88c760,82f66233-ed13-49ae-ab72-7cf91c88c760,0,1,75cddbcd-e960-4164-81d8-ac0a2a36e95b,75cddbcd-e960-4164-81d8-ac0a2a36e95b,0,1,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,0,1,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,0,1,d9151001-a911-45c1-a8e6-dcf0da623ed3,d9151001-a911-45c1-a8e6-dcf0da623ed3,0,1,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,0,1,e589a693-ff50-4c36-ae26-a8fcae966d57,e589a693-ff50-4c36-ae26-a8fcae966d57,0,1,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,0,1,90f023f5-5b48-4f98-bfc6-b704277a355d,90f023f5-5b48-4f98-bfc6-b704277a355d,0,1,99485603-706d-4301-be25-82b1c0ee8f4d,99485603-706d-4301-be25-82b1c0ee8f4d,0,1,e7a28021-c75e-41b2-9974-cf4beee34d28,e7a28021-c75e-41b2-9974-cf4beee34d28,0,1,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,0,1,2a603c61-4cbf-4c6d-a0b2-40c835d36737,2a603c61-4cbf-4c6d-a0b2-40c835d36737,0,1,a8d7f071-401b-499e-957c-d077d8002e54,a8d7f071-401b-499e-957c-d077d8002e54,0,1,211a539b-4be9-4816-98f6-f756e65eafd8,211a539b-4be9-4816-98f6-f756e65eafd8,0,1,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,0,1,e9b9da80-7806-4c9c-a002-01cfa3109169,e9b9da80-7806-4c9c-a002-01cfa3109169,0,1,a271041d-0203-4ecd-bb39-70256c50192e,a271041d-0203-4ecd-bb39-70256c50192e,0,1,73eff626-a363-4a5a-879e-61ef6ce0726f,73eff626-a363-4a5a-879e-61ef6ce0726f,0,1,acf15b79-a6c4-4c46-8013-50d3b223baf6,acf15b79-a6c4-4c46-8013-50d3b223baf6,0,1,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,0,1,2d8d5d74-2bc0-4282-af66-e4a37694c147,2d8d5d74-2bc0-4282-af66-e4a37694c147,0,1,cfd31341-287b-4684-9ac0-b28b4e066f15,cfd31341-287b-4684-9ac0-b28b4e066f15,0,1,81de1b0b-7f2d-4098-ae99-061c6a90dc29,81de1b0b-7f2d-4098-ae99-061c6a90dc29,0,1,f829e2a9-5bdb-4171-8b32-8d10d5968813,f829e2a9-5bdb-4171-8b32-8d10d5968813,0,1,647ba8f8-57f7-4c19-af59-525517c1e392,647ba8f8-57f7-4c19-af59-525517c1e392,0,1,39062cb3-4ae8-4c0d-889b-038a55179946,39062cb3-4ae8-4c0d-889b-038a55179946,0,1,c62d4212-36ca-4afb-bac9-269b6f64ca51,c62d4212-36ca-4afb-bac9-269b6f64ca51,0,1,5cec5e16-46ad-4f8c-b869-f5b1cc487884,5cec5e16-46ad-4f8c-b869-f5b1cc487884,0,1,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,0,1,7aacdf81-49fd-47a3-a36a-c483f1b05872,7aacdf81-49fd-47a3-a36a-c483f1b05872,0,1,857015e2-afb2-403d-bfb7-7acb5080797b,857015e2-afb2-403d-bfb7-7acb5080797b,0,1,5657286b-114b-41de-ab7d-45d0f0d95e2d,5657286b-114b-41de-ab7d-45d0f0d95e2d,0,1,42a0271e-6783-44db-95c1-09805ae01f58,42a0271e-6783-44db-95c1-09805ae01f58,0,1,8628783e-4fad-4dff-8220-9e0ddc8580f8,8628783e-4fad-4dff-8220-9e0ddc8580f8,0,1,356fc245-3034-42d1-84d0-632c6dc7a3d5,356fc245-3034-42d1-84d0-632c6dc7a3d5,0,1,07462664-6b58-4f5a-9b3f-2e5c376f17df,07462664-6b58-4f5a-9b3f-2e5c376f17df,0,1,6f23e946-f700-424b-b9bf-3a9c8846908d,6f23e946-f700-424b-b9bf-3a9c8846908d,0,1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,0,1,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,0,1,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,0,1,c656771c-dcb7-4c78-9a16-e62806d5bb5a,c656771c-dcb7-4c78-9a16-e62806d5bb5a,0,1,ec42c45c-18ca-44b0-9c59-1cb204552a43,ec42c45c-18ca-44b0-9c59-1cb204552a43,0,1,2aafb1a1-4321-47e9-9783-03ab616a2873,2aafb1a1-4321-47e9-9783-03ab616a2873,0,1,71109997-6da0-4eaf-bbf2-f94fa24f37cc,71109997-6da0-4eaf-bbf2-f94fa24f37cc,0,1,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,0,1,d601281c-379d-4a9d-843e-478fd6567415,d601281c-379d-4a9d-843e-478fd6567415,0,1,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,0,1,427e6f15-334e-42be-9554-895d8f7ebfc6,427e6f15-334e-42be-9554-895d8f7ebfc6,0,1,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,0,1,36bc8523-41a5-48ff-9bd0-758d078c4408,36bc8523-41a5-48ff-9bd0-758d078c4408,0,1,94ca1b45-3cf0-4857-8299-999c93f4fb56,94ca1b45-3cf0-4857-8299-999c93f4fb56,0,1,ee8419c6-79ca-4546-9a66-bacaa08d2a73,ee8419c6-79ca-4546-9a66-bacaa08d2a73,0,1,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,0,1,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,0,1,ada11ea2-94d5-4172-a383-a51774599568,ada11ea2-94d5-4172-a383-a51774599568,0,1,50515bbc-43ee-4b00-bfc5-105b7981bd8f,50515bbc-43ee-4b00-bfc5-105b7981bd8f,0,1,1ea080b0-0a11-4152-b8bb-4918bc142a23,1ea080b0-0a11-4152-b8bb-4918bc142a23,0,1,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,0,1,6930e471-7935-4d68-a980-2acde93ba801,6930e471-7935-4d68-a980-2acde93ba801,0,1,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,0,1,5135cc48-c749-4acb-a225-d110f386f482,5135cc48-c749-4acb-a225-d110f386f482,0,1,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,0,1,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,0,1,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,0,1,2e9fa546-96fb-4ecb-b933-7921e131e89b,2e9fa546-96fb-4ecb-b933-7921e131e89b,0,1,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,0,1,637a132b-1a88-44ba-b45f-ed4ed1ac1001,637a132b-1a88-44ba-b45f-ed4ed1ac1001,0,1,699f734b-43d2-4351-bff8-e0e21e164a42,699f734b-43d2-4351-bff8-e0e21e164a42,0,1,95f0792a-7ac4-450a-b05c-219741e61abd,95f0792a-7ac4-450a-b05c-219741e61abd,0,1,742a2e8c-496e-4e02-931d-d33f7afe07a5,742a2e8c-496e-4e02-931d-d33f7afe07a5,0,1,c3efa853-cd29-4618-929f-e3bec33dfd65,c3efa853-cd29-4618-929f-e3bec33dfd65,0,1,62185c28-3d24-487a-9441-b309dcf11e31,62185c28-3d24-487a-9441-b309dcf11e31,0,1,9f264aeb-664d-4724-8248-11873d63ef3b,9f264aeb-664d-4724-8248-11873d63ef3b,0,1,b926d058-53a9-4eea-b4f9-98e77f798dd9,b926d058-53a9-4eea-b4f9-98e77f798dd9,0,1,495e2c77-4868-4191-ac18-f94e55a5982e,495e2c77-4868-4191-ac18-f94e55a5982e,0,1,20191a65-322c-457d-85f5-ed1258b6fe8e,20191a65-322c-457d-85f5-ed1258b6fe8e,0,1,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,0,1,769c60aa-44f4-4c98-a461-d3f5c2b67f61,769c60aa-44f4-4c98-a461-d3f5c2b67f61,0,1,f9809c99-0eaa-4249-967c-a4bef4763277,f9809c99-0eaa-4249-967c-a4bef4763277,0,1,37fa88a0-f2c1-455f-a28d-74165e8b933d,37fa88a0-f2c1-455f-a28d-74165e8b933d,0,1,e4476f09-909b-49f7-8e01-72eea8ceaca6,e4476f09-909b-49f7-8e01-72eea8ceaca6,0,1,2861412c-46f0-454e-b81d-fe081afb5c7a,2861412c-46f0-454e-b81d-fe081afb5c7a,0,1,2b4ece05-b694-42e9-8239-55722fd84294,2b4ece05-b694-42e9-8239-55722fd84294,0,1,6564ce89-134f-4726-8693-fd93aad46180,6564ce89-134f-4726-8693-fd93aad46180,0,1,0d743731-da5d-4c99-b19f-e93c69b77e14,0d743731-da5d-4c99-b19f-e93c69b77e14,0,1,d6f15367-23e2-4766-bc7c-8acd0063aa0c,d6f15367-23e2-4766-bc7c-8acd0063aa0c,0,1,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,0,1,fa4c5665-4d73-4db2-a055-8c1c8a302f82,fa4c5665-4d73-4db2-a055-8c1c8a302f82,0,1,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,0,1,9100b286-8ae9-4de3-b116-5ce0fa95b80c,9100b286-8ae9-4de3-b116-5ce0fa95b80c,0,1,3d315df6-e000-4cbd-810d-0b26c0d1bc54,3d315df6-e000-4cbd-810d-0b26c0d1bc54,0,1,fa429302-ccaf-4c89-8a11-3a1d30817c00,fa429302-ccaf-4c89-8a11-3a1d30817c00,0,1,9b4c49ce-93da-439a-8d67-f3774e92800a,9b4c49ce-93da-439a-8d67-f3774e92800a,0,1,5f8fa827-7017-4b45-b458-3571b8b611f5,5f8fa827-7017-4b45-b458-3571b8b611f5,0,1,79749167-2912-4e06-9deb-7915a1b4390d,79749167-2912-4e06-9deb-7915a1b4390d,0,1,1c93fcd3-53a1-403f-a30b-454fbc941d55,1c93fcd3-53a1-403f-a30b-454fbc941d55,0,1,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0,1,adec3963-b22f-4463-a3f4-c9ec27d187a8,adec3963-b22f-4463-a3f4-c9ec27d187a8,0,1,d8dae0c8-8e11-44bf-bf60-d316220f3e82,d8dae0c8-8e11-44bf-bf60-d316220f3e82,0,1,12afec4d-1728-4aa8-86e5-23cd2f1572b3,12afec4d-1728-4aa8-86e5-23cd2f1572b3,0,1,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,0,1,ee0c3960-d1bf-411f-a51f-e6e27dabea87,ee0c3960-d1bf-411f-a51f-e6e27dabea87,0,1,d7fb9441-1aef-4257-af3f-7f16340ac85e,d7fb9441-1aef-4257-af3f-7f16340ac85e,0,1,d07c094c-2795-4e0c-b030-bdb82be7ba6d,d07c094c-2795-4e0c-b030-bdb82be7ba6d,0,1,62637860-2013-4f9d-9aed-7cbb0dce8983,62637860-2013-4f9d-9aed-7cbb0dce8983,0,1,331217f6-7ec2-425d-93bd-f2979c5f2e05,331217f6-7ec2-425d-93bd-f2979c5f2e05,0,1,67c1269a-79e6-44d9-9254-671c50fb3974,67c1269a-79e6-44d9-9254-671c50fb3974,0,1,5d455d2a-910d-48c7-bc74-ba5ad7855110,5d455d2a-910d-48c7-bc74-ba5ad7855110,0,1,7cf3feea-75e2-42cc-9c89-4a9182034910,7cf3feea-75e2-42cc-9c89-4a9182034910,0,1,930a0156-feb3-4e14-96a5-cd183a4891f4,930a0156-feb3-4e14-96a5-cd183a4891f4,0,1,cfa55ab3-1335-4712-8352-03c2f0277708,cfa55ab3-1335-4712-8352-03c2f0277708,0,1,fb176f8b-edb9-4e4b-926d-dabe9552bfa1,fb176f8b-edb9-4e4b-926d-dabe9552bfa1,0,1,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,0,1,e268a337-f576-4ec2-8a22-0500b79b2441,e268a337-f576-4ec2-8a22-0500b79b2441,0,1,eb33a8fa-75a6-4926-a025-05bc0abe4374,eb33a8fa-75a6-4926-a025-05bc0abe4374,0,1,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,0,1,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,0,1,bf480259-6e72-4ad1-ac41-0b0d41a75387,bf480259-6e72-4ad1-ac41-0b0d41a75387,0,1,a41f060a-f0f6-4940-960b-5056082b2c45,a41f060a-f0f6-4940-960b-5056082b2c45,0,1,5d45a926-513f-4bbc-a002-54a2db94b297,5d45a926-513f-4bbc-a002-54a2db94b297,0,1,73f5ce9e-d5a7-45c0-965a-8af1d776a98a,73f5ce9e-d5a7-45c0-965a-8af1d776a98a,0,1,073e14d4-5d43-428b-a9a7-985d173e94c7,073e14d4-5d43-428b-a9a7-985d173e94c7,0,1,2394775b-8910-4667-9c74-e1606e0b13bc,2394775b-8910-4667-9c74-e1606e0b13bc,0,1,43c88ffd-a036-4563-890b-bdc60180e841,43c88ffd-a036-4563-890b-bdc60180e841,0,1,af6e5e8e-6482-4820-a810-9e275ae039bf,af6e5e8e-6482-4820-a810-9e275ae039bf,0,1,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,0,1,7690620b-21d9-463a-8c22-60844927b4a0,7690620b-21d9-463a-8c22-60844927b4a0,0,1,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,0,1,b1db3255-38da-4684-b44e-4e2e9ee1dc35,b1db3255-38da-4684-b44e-4e2e9ee1dc35,0,1,4761f89b-7894-4dca-83b0-3be2d0828781,4761f89b-7894-4dca-83b0-3be2d0828781,0,1,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,0,1,7236d52f-9068-45ad-8b92-a7319e737e08,7236d52f-9068-45ad-8b92-a7319e737e08,0,1,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,0,1,9db23e96-d13a-4847-941a-462f64d0619d,9db23e96-d13a-4847-941a-462f64d0619d,0,1,7575fd54-c91b-4220-a2ef-2cf533f60426,7575fd54-c91b-4220-a2ef-2cf533f60426,0,1,1b751f19-bb0c-40c2-a5d1-068544c36c6b,1b751f19-bb0c-40c2-a5d1-068544c36c6b,0,1,26e2c83b-8873-4ad3-9c50-e94421473a43,26e2c83b-8873-4ad3-9c50-e94421473a43,0,1,f0b2ec05-8e01-4ccf-b927-671329a9013b,f0b2ec05-8e01-4ccf-b927-671329a9013b,0,1,ab442b11-2482-4f80-ac82-01966e0657ec,ab442b11-2482-4f80-ac82-01966e0657ec,0,1,14fe4d39-81a1-470e-9724-6642ce34ad89,14fe4d39-81a1-470e-9724-6642ce34ad89,0,1,457578ab-dfe2-4419-8d8a-64283b341f42,457578ab-dfe2-4419-8d8a-64283b341f42,0,1,67ef6671-f537-46bf-88e6-f5bcf34a17a4,67ef6671-f537-46bf-88e6-f5bcf34a17a4,0,1,de778ca7-feaf-4531-80ae-11a534c56928,de778ca7-feaf-4531-80ae-11a534c56928,0,1,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0,1,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0,1,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,0,1,86df8648-e195-4661-99ee-6052788eb276,86df8648-e195-4661-99ee-6052788eb276,0,1,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,0,1,35133725-9647-42dc-a76a-2e62b2918ac4,35133725-9647-42dc-a76a-2e62b2918ac4,0,1,fa9572ee-0303-4421-9125-70cf3dd5a8c7,fa9572ee-0303-4421-9125-70cf3dd5a8c7,0,1,4cdd7920-0c49-4950-b92f-fdf6e34578b2,4cdd7920-0c49-4950-b92f-fdf6e34578b2,0,1,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0,1,c7b883dc-6c26-4eb5-bc19-7919ad57da27,c7b883dc-6c26-4eb5-bc19-7919ad57da27,0,1,7fc37008-c378-4a70-a9a9-07543c7248a6,7fc37008-c378-4a70-a9a9-07543c7248a6,0,1,6410853e-a17e-44db-b8cc-bfefd7c4d239,6410853e-a17e-44db-b8cc-bfefd7c4d239,0,1,df042e4e-01a6-4480-a9c5-c0d7a454bb41,df042e4e-01a6-4480-a9c5-c0d7a454bb41,0,1,bad3d1fa-9618-427a-93e0-90f151e468bf,bad3d1fa-9618-427a-93e0-90f151e468bf,0,1,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,0,1,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,0,1,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,0,1,ff830967-faa9-415f-aa6e-8d27779f91f8,ff830967-faa9-415f-aa6e-8d27779f91f8,0,1,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,0,1,88618d0f-97af-4055-a490-561d4b8065a7,88618d0f-97af-4055-a490-561d4b8065a7,0,1,faffa228-4f4f-43f6-99b9-ed8c93af85c0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,0,1,7b816ca0-ba60-4637-8348-23b26ad23e3f,7b816ca0-ba60-4637-8348-23b26ad23e3f,0,1,814a6db4-a43c-44e6-ac44-11983642c5ad,814a6db4-a43c-44e6-ac44-11983642c5ad,0,1,0bd74786-e018-4a66-b994-cdb439c57657,0bd74786-e018-4a66-b994-cdb439c57657,0,1,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,0,1,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,0,1,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,0,1,09502176-c53d-4525-b8ed-32d0a2e21a5d,09502176-c53d-4525-b8ed-32d0a2e21a5d,0,1,75ad984e-d41f-4591-b207-e8a4b05757a7,75ad984e-d41f-4591-b207-e8a4b05757a7,0,1,3f020f90-7aeb-4b21-ad71-4572ac796d4c,3f020f90-7aeb-4b21-ad71-4572ac796d4c,0,1,759e2ba0-2941-4cc1-8409-50b8a3620058,759e2ba0-2941-4cc1-8409-50b8a3620058,0,1,491cf25d-091e-4e09-b145-92d7073326cf,491cf25d-091e-4e09-b145-92d7073326cf,0,1,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,0,1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,0,1,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,0,1,900bc96e-fbcc-473e-970c-96f561420f8e,900bc96e-fbcc-473e-970c-96f561420f8e,0,1,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,0,1,21d5a0b0-9a2b-4989-a50a-781645513179,21d5a0b0-9a2b-4989-a50a-781645513179,0,1,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,0,1,d97c6204-3656-4591-aea9-6ebedffe1247,d97c6204-3656-4591-aea9-6ebedffe1247,0,1,7caabe33-184f-45db-bef4-59d4e9cd2394,7caabe33-184f-45db-bef4-59d4e9cd2394,0,1,3255033a-e922-412e-a825-a3e8bd284703,3255033a-e922-412e-a825-a3e8bd284703,0,1,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,0,1,f250f992-ad5a-4dab-ad38-240604adb0c4,f250f992-ad5a-4dab-ad38-240604adb0c4,0,1,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,0,1,e63671f6-c96d-4ea4-8300-af7dbd0d016f,e63671f6-c96d-4ea4-8300-af7dbd0d016f,0,1,2c511469-0df6-470f-a808-decb275e8b1a,2c511469-0df6-470f-a808-decb275e8b1a,0,1,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1bbb289c-a78a-47d0-b082-c2225ae1dc83,0,1,99b40f9f-f8f1-4779-8afc-59d30612f3d6,99b40f9f-f8f1-4779-8afc-59d30612f3d6,0,1,6131e875-3254-4281-9343-9118564c5451,6131e875-3254-4281-9343-9118564c5451,0,1,69622ff8-8a23-42fc-b63d-5097e3f636ac,69622ff8-8a23-42fc-b63d-5097e3f636ac,0,1,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,0,1,ef326bd8-1570-455e-ae8c-063b5578ad15,ef326bd8-1570-455e-ae8c-063b5578ad15,0,1,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,0,1,cb6d4979-2d70-4ceb-af08-deb2b19daf14,cb6d4979-2d70-4ceb-af08-deb2b19daf14,0,1,bf30b754-84fb-4104-b52b-a4f7df6fba12,bf30b754-84fb-4104-b52b-a4f7df6fba12,0,1,7bbd0835-b3e9-40cb-a424-670828b60bbb,7bbd0835-b3e9-40cb-a424-670828b60bbb,0,1,3e2138ea-48f9-4a60-8f22-53933bea49db,3e2138ea-48f9-4a60-8f22-53933bea49db,0,1,16bda2eb-eab8-4230-b89f-517fb943e009,16bda2eb-eab8-4230-b89f-517fb943e009,0,1,00964512-297f-4b8b-8def-8e4fc0eba991,00964512-297f-4b8b-8def-8e4fc0eba991,0,1,4185fea3-baba-4ba5-8019-9023b3011d4d,4185fea3-baba-4ba5-8019-9023b3011d4d,0,1,ea790035-92d6-445e-9fa3-08e565634d2b,ea790035-92d6-445e-9fa3-08e565634d2b,0,1,cce8900a-51eb-487d-b380-227d1b9d3943,cce8900a-51eb-487d-b380-227d1b9d3943,0,1,c043c36c-90c6-483b-bc20-7c2d85109b90,c043c36c-90c6-483b-bc20-7c2d85109b90,0,1,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,0,1,91d2d40a-c271-412c-b344-1fc98b94ba21,91d2d40a-c271-412c-b344-1fc98b94ba21,0,1,7ce47046-aee8-4809-bac9-a98930a844e1,7ce47046-aee8-4809-bac9-a98930a844e1,0,1,f480b8b9-ecec-4207-a0aa-12c5be4c2250,f480b8b9-ecec-4207-a0aa-12c5be4c2250,0,1,32717d25-6644-4903-8950-03e4c9b1a8fe,32717d25-6644-4903-8950-03e4c9b1a8fe,0,1,3644d8f3-db88-4fce-a851-39c115acfe03,3644d8f3-db88-4fce-a851-39c115acfe03,0,1,4653da74-34b2-47b9-ad88-efd761d6f1e9,4653da74-34b2-47b9-ad88-efd761d6f1e9,0,1,abf8a23d-45c3-4feb-8df2-279b709d7722,abf8a23d-45c3-4feb-8df2-279b709d7722,0,1,b0cd056f-c601-4d07-89c4-f7137b88bab6,b0cd056f-c601-4d07-89c4-f7137b88bab6,0,1,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,0,1,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,0,1,96ed4d39-3bdc-480f-af86-218f22000514,96ed4d39-3bdc-480f-af86-218f22000514,0,1,c9f72e74-22ac-4dc0-8462-0aa7819a9342,c9f72e74-22ac-4dc0-8462-0aa7819a9342,0,1,ca650484-293f-403a-b916-5ec7c3a8969e,ca650484-293f-403a-b916-5ec7c3a8969e,0,1,b71e706d-623e-4039-9bf0-24f151d861d8,b71e706d-623e-4039-9bf0-24f151d861d8,0,1,528f4823-33d8-49bd-a8fe-756a08a107c2,528f4823-33d8-49bd-a8fe-756a08a107c2,0,1,4869095b-b76e-45ca-b77d-0e74f59673f0,4869095b-b76e-45ca-b77d-0e74f59673f0,0,1,bcca2442-448b-4760-923b-cc9621ecb441,bcca2442-448b-4760-923b-cc9621ecb441,0,1,ba7657df-429a-4737-b787-19ef09fdebb2,ba7657df-429a-4737-b787-19ef09fdebb2,0,1,867d72be-f406-45a5-a511-b90459683f11,867d72be-f406-45a5-a511-b90459683f11,0,1,88b22e62-c144-401f-9635-3fb4d914772e,88b22e62-c144-401f-9635-3fb4d914772e,0,1,efeb2914-6604-403a-a11e-5cb995ab2bc9,efeb2914-6604-403a-a11e-5cb995ab2bc9,0,1,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,0,1,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,0,1,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,0,1,de506523-241a-4845-9259-37066afbf16a,de506523-241a-4845-9259-37066afbf16a,0,1,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0,1,e616e007-43e7-4740-a083-b85f5435718a,e616e007-43e7-4740-a083-b85f5435718a,0,1,727da5b1-e054-4832-8e44-f5d5e56f52e5,727da5b1-e054-4832-8e44-f5d5e56f52e5,0,1,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,0,1,6feaad7c-9680-4341-b215-14581e2e2b37,6feaad7c-9680-4341-b215-14581e2e2b37,0,1,d5656a92-adfb-4733-830d-2b1565798b1f,d5656a92-adfb-4733-830d-2b1565798b1f,0,1,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,0,1,b0f6ea83-2849-4151-930d-692866919db3,b0f6ea83-2849-4151-930d-692866919db3,0,1,05558ce4-8568-4009-b1d7-307d54967515,05558ce4-8568-4009-b1d7-307d54967515,0,1,74380324-9b7b-49f6-9458-88deb9405f98,74380324-9b7b-49f6-9458-88deb9405f98,0,1,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,0,1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0,1,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,0,1,f66cb2da-3b3c-481f-823a-506f8290f619,f66cb2da-3b3c-481f-823a-506f8290f619,0,1,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,0,1,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,0,1,0bdcf045-5132-4a68-839c-a30515dc569e,0bdcf045-5132-4a68-839c-a30515dc569e,0,1,683861f9-9a5f-47db-8b03-959f839d5a3a,683861f9-9a5f-47db-8b03-959f839d5a3a,0,1,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,0,1,125be5bf-f410-451d-aa96-22fabc6a4d8a,125be5bf-f410-451d-aa96-22fabc6a4d8a,0,1,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,0,1,0a46166a-4562-4a50-b139-39dbe8a1fc84,0a46166a-4562-4a50-b139-39dbe8a1fc84,0,1,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,0,1,6ce64d65-f710-4d3f-a85f-26ce6915451e,6ce64d65-f710-4d3f-a85f-26ce6915451e,0,1,33eb9806-e34f-42a0-9825-3ff2de92c503,33eb9806-e34f-42a0-9825-3ff2de92c503,0,1,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,0,1,bcb58235-7cd7-4c15-a1eb-194ee38259e6,bcb58235-7cd7-4c15-a1eb-194ee38259e6,0,1,e19aefe7-634d-4218-8d40-75802d1691e0,e19aefe7-634d-4218-8d40-75802d1691e0,0,1,b885dbb2-6e18-46a6-929c-3d6d392343ad,b885dbb2-6e18-46a6-929c-3d6d392343ad,0,1,d31e24cf-7493-45dc-ba81-3a00618e53bc,d31e24cf-7493-45dc-ba81-3a00618e53bc,0,1,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,0,1,f942d212-9be0-4d80-84b6-5b63070e33e4,f942d212-9be0-4d80-84b6-5b63070e33e4,0,1,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,0,1,64c91eaa-084f-4801-8dbf-4e075c689c2b,64c91eaa-084f-4801-8dbf-4e075c689c2b,0,1,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,0,1,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,0,1,3aa12805-823a-439b-b039-fb9940aee312,3aa12805-823a-439b-b039-fb9940aee312,0,1,87d53573-f266-4b74-94af-041ae4b6518f,87d53573-f266-4b74-94af-041ae4b6518f,0,1,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,0,1,801cf1f7-2c65-4126-a3e9-b66abfdde67a,801cf1f7-2c65-4126-a3e9-b66abfdde67a,0,1,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,0,1,29c2bc01-8838-4459-8ac2-79862aa1dbc9,29c2bc01-8838-4459-8ac2-79862aa1dbc9,0,1,ad556c33-6811-48b4-ae90-57700a4d3fd6,ad556c33-6811-48b4-ae90-57700a4d3fd6,0,1,6e0833f4-3b57-4a5f-810f-9e2a492335df,6e0833f4-3b57-4a5f-810f-9e2a492335df,0,1,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,0,1,977bc9d8-9843-4343-85af-11a3d91f9966,977bc9d8-9843-4343-85af-11a3d91f9966,0,1,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,0,1,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,0,1,a6582448-734d-4a4c-a32c-c4755ca1bc93,a6582448-734d-4a4c-a32c-c4755ca1bc93,0,1,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,0,1,53327cc4-22b0-40f9-bae7-db483f85901c,53327cc4-22b0-40f9-bae7-db483f85901c,0,1,098d904d-95c9-459e-86d0-357ba9a40191,098d904d-95c9-459e-86d0-357ba9a40191,0,1,e9ab9d00-6e42-439b-8efc-fcacf727016d,e9ab9d00-6e42-439b-8efc-fcacf727016d,0,1,2d58033f-e15d-4a91-8165-dd311025c7c4,2d58033f-e15d-4a91-8165-dd311025c7c4,0,1,49cb3a36-90b3-4154-b571-265fc5cee21e,49cb3a36-90b3-4154-b571-265fc5cee21e,0,1,10472d2c-18ca-49b0-bd9d-c750db8498c5,10472d2c-18ca-49b0-bd9d-c750db8498c5,0,1,8efe5daf-272d-4255-b5c4-66dca7463b50,8efe5daf-272d-4255-b5c4-66dca7463b50,0,1,65af25a6-f699-4c40-b13e-3b7dff3f16fe,65af25a6-f699-4c40-b13e-3b7dff3f16fe,0,1,c4d2486d-289c-4812-b223-5ccfcd7f29e3,c4d2486d-289c-4812-b223-5ccfcd7f29e3,0,1,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,0,1,7da57c89-af2c-445a-96f7-39250f70306f,7da57c89-af2c-445a-96f7-39250f70306f,0,1,b5b94d94-25f7-4cfa-b1e9-6009fb848763,b5b94d94-25f7-4cfa-b1e9-6009fb848763,0,1,a2accf54-5966-42e8-ab2e-e56e415963ee,a2accf54-5966-42e8-ab2e-e56e415963ee,0,1,d8eb5329-5900-4b5d-b45e-458513dddfef,d8eb5329-5900-4b5d-b45e-458513dddfef,0,1,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,0,1,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,0,1,6ffd2da8-db97-46fc-9a53-8e665a598e3c,6ffd2da8-db97-46fc-9a53-8e665a598e3c,0,1,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,0,1,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,0,1,eaaed107-69d4-4963-be83-74519e331715,eaaed107-69d4-4963-be83-74519e331715,0,1,38cddf96-8703-4396-8c73-47fb22828a48,38cddf96-8703-4396-8c73-47fb22828a48,0,1,2c2cb793-0177-4983-91ca-9c292c5b10f1,2c2cb793-0177-4983-91ca-9c292c5b10f1,0,1,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,0,1,221fa473-3327-44e6-a033-6fdfd2be713c,221fa473-3327-44e6-a033-6fdfd2be713c,0,1,7a5973f0-7e29-44af-8e7b-70af71f704a4,7a5973f0-7e29-44af-8e7b-70af71f704a4,0,1,2b2bf0f7-0946-4492-bba0-27f007a70e64,2b2bf0f7-0946-4492-bba0-27f007a70e64,0,1,22c9a703-5ed3-4156-8fa6-476b1c1452f1,22c9a703-5ed3-4156-8fa6-476b1c1452f1,0,1,27089e8e-2c75-431c-b808-5d4dcba3cdca,27089e8e-2c75-431c-b808-5d4dcba3cdca,0,1,9ab3980e-a480-4f90-a8cc-bde99d5ace35,9ab3980e-a480-4f90-a8cc-bde99d5ace35,0,1,ec928563-6e35-4b84-b477-90d2481cec1c,ec928563-6e35-4b84-b477-90d2481cec1c,0,1,5d3e9678-20fe-4128-867a-3f7addaa7831,5d3e9678-20fe-4128-867a-3f7addaa7831,0,1,bb878f73-8a0f-459a-9076-ce57fe7957dc,bb878f73-8a0f-459a-9076-ce57fe7957dc,0,1,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,0,1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,0,1,9f4b8e36-83ff-4694-8540-b5f47b18395f,9f4b8e36-83ff-4694-8540-b5f47b18395f,0,1,b4c026eb-4271-4366-b529-1cdfe2874563,b4c026eb-4271-4366-b529-1cdfe2874563,0,1,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,0,1,314b0da2-24d3-48cc-8532-d36c45eb3bf8,314b0da2-24d3-48cc-8532-d36c45eb3bf8,0,1,4077e700-ec20-4afa-8155-bf7e516a70cb,4077e700-ec20-4afa-8155-bf7e516a70cb,0,1,10008125-3aeb-4912-8ad6-d92d283ea09a,10008125-3aeb-4912-8ad6-d92d283ea09a,0,1,d22a0a50-220d-459e-a23a-39730a1e67c4,d22a0a50-220d-459e-a23a-39730a1e67c4,0,1,dd050ca0-8335-4654-ab5c-7babcb4824ef,dd050ca0-8335-4654-ab5c-7babcb4824ef,0,1,706cbf55-626d-4cab-b589-a2464368f6c1,706cbf55-626d-4cab-b589-a2464368f6c1,0,1,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,0,1,e010c0f9-f770-4fdc-8607-50838c0262ef,e010c0f9-f770-4fdc-8607-50838c0262ef,0,1,483dfce4-9c66-4739-94d4-17a005d64f5b,483dfce4-9c66-4739-94d4-17a005d64f5b,0,1,19506116-43ef-433c-822c-ef8717b0da6b,19506116-43ef-433c-822c-ef8717b0da6b,0,1,464b92cc-b577-4350-ae9f-e697390248d7,464b92cc-b577-4350-ae9f-e697390248d7,0,1,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,0,1,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,0,1,2fac5a7b-cb3e-4442-892f-77f338035eeb,2fac5a7b-cb3e-4442-892f-77f338035eeb,0,1,f2076747-0bc4-41dd-bab9-33cec85111f0,f2076747-0bc4-41dd-bab9-33cec85111f0,0,1,9f74c0bb-b876-4a37-b954-c93898a21067,9f74c0bb-b876-4a37-b954-c93898a21067,0,1,97e853dc-065f-4c6d-84cb-3d3aff367b22,97e853dc-065f-4c6d-84cb-3d3aff367b22,0,1,2f1fdf47-2627-496f-9e1f-77019abb2104,2f1fdf47-2627-496f-9e1f-77019abb2104,0,1,c996532a-8795-4136-8a40-9bb4b263277c,c996532a-8795-4136-8a40-9bb4b263277c,0,1,64c77788-fc49-4979-8163-949a891bd8b7,64c77788-fc49-4979-8163-949a891bd8b7,0,1,c39750ca-e33f-40c2-b830-119423d9a2ae,c39750ca-e33f-40c2-b830-119423d9a2ae,0,1,9372ff6b-27b6-48f3-a2a2-762e7c485766,9372ff6b-27b6-48f3-a2a2-762e7c485766,0,1,f454595a-4a3d-451b-8e8b-b17aa8314591,f454595a-4a3d-451b-8e8b-b17aa8314591,0,1,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,0,1,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,0,1,bc708da8-7fc6-4da1-8129-9ef6a86667af,bc708da8-7fc6-4da1-8129-9ef6a86667af,0,1,061842fe-4077-4d6e-aefe-de79409da730,061842fe-4077-4d6e-aefe-de79409da730,0,1,86249619-8981-4fc4-85fc-ce30e4b9d542,86249619-8981-4fc4-85fc-ce30e4b9d542,0,1,da6e4bff-9835-4b92-b62b-291a5d6c86fe,da6e4bff-9835-4b92-b62b-291a5d6c86fe,0,1,3fadaeb7-2c41-42a4-bfa8-c585602b1028,3fadaeb7-2c41-42a4-bfa8-c585602b1028,0,1,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,0,1,083c709b-ed8c-47e4-a190-421e14259e73,083c709b-ed8c-47e4-a190-421e14259e73,0,1,b98dacc7-29e1-426b-a664-0a988f18186c,b98dacc7-29e1-426b-a664-0a988f18186c,0,1,d678856d-6e7c-443f-a6e3-350bbe8af659,d678856d-6e7c-443f-a6e3-350bbe8af659,0,1,d0979762-22ce-41be-b7a4-5e9ac149d94b,d0979762-22ce-41be-b7a4-5e9ac149d94b,0,1,ae23e70c-479e-47ad-9bfa-58560a903410,ae23e70c-479e-47ad-9bfa-58560a903410,0,1,c0d83781-bbda-43f7-bf0e-5defa3d47143,c0d83781-bbda-43f7-bf0e-5defa3d47143,0,1,21fa5fdd-acbc-403b-9acb-bbf95284bd20,21fa5fdd-acbc-403b-9acb-bbf95284bd20,0,1,576a01e3-4d6d-4241-a3c4-7661ba129bcb,576a01e3-4d6d-4241-a3c4-7661ba129bcb,0,1,9f7290dd-19f4-4163-9795-fe562e84f06d,9f7290dd-19f4-4163-9795-fe562e84f06d,0,1,c3b5c81f-b787-4f63-8cba-79def0921477,c3b5c81f-b787-4f63-8cba-79def0921477,0,1,1f0cb3d4-1344-451b-a257-be3cd854acfd,1f0cb3d4-1344-451b-a257-be3cd854acfd,0,1,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0,1,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,0,1,372150e2-526e-4424-8c54-e4b16bdd25b5,372150e2-526e-4424-8c54-e4b16bdd25b5,0,1,752dc569-cf84-42d7-911d-49d455f7214e,752dc569-cf84-42d7-911d-49d455f7214e,0,1,fecab2b9-27e1-44d6-9082-79c3569b7477,fecab2b9-27e1-44d6-9082-79c3569b7477,0,1,07ae092f-8517-47b7-b54c-5dbcb6506929,07ae092f-8517-47b7-b54c-5dbcb6506929,0,1,db4c25bb-d199-43ec-833d-82972de04a41,db4c25bb-d199-43ec-833d-82972de04a41,0,1,43d19685-0794-41f2-9171-bf565133718d,43d19685-0794-41f2-9171-bf565133718d,0,1,b68c15c4-4966-4f13-8912-2d479b65089a,b68c15c4-4966-4f13-8912-2d479b65089a,0,1,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,0,1,f87e3935-dae1-4192-b6a7-05e3c700c590,f87e3935-dae1-4192-b6a7-05e3c700c590,0,1,ee635706-6ee2-4956-8d58-a235f64687f6,ee635706-6ee2-4956-8d58-a235f64687f6,0,1,a5a40ca7-d665-420b-a516-1355019d6901,a5a40ca7-d665-420b-a516-1355019d6901,0,1,adf9304c-ccf8-492e-95b1-0754764586a2,adf9304c-ccf8-492e-95b1-0754764586a2,0,1,fd175112-ec8f-4088-9b21-d8135056f0c5,fd175112-ec8f-4088-9b21-d8135056f0c5,0,1,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,0,1,df76a1b7-312a-4e77-bac1-79befadb4495,df76a1b7-312a-4e77-bac1-79befadb4495,0,1,ab39fad8-1039-491e-982a-c49637770ec0,ab39fad8-1039-491e-982a-c49637770ec0,0,1,7d93a6ba-3ca7-45ab-a540-743c79587535,7d93a6ba-3ca7-45ab-a540-743c79587535,0,1,76b58810-0527-4dfc-8858-bac68e7e65f3,76b58810-0527-4dfc-8858-bac68e7e65f3,0,1,aba97fd9-f05e-45cd-8404-ed702070e17a,aba97fd9-f05e-45cd-8404-ed702070e17a,0,1,f5c415cd-429b-469f-9332-c43ab5d1c8d6,f5c415cd-429b-469f-9332-c43ab5d1c8d6,0,1,458e9c6b-b828-404b-be5a-c6c0aeea34c9,458e9c6b-b828-404b-be5a-c6c0aeea34c9,0,1,7262eb4d-2d2d-454c-beaa-974645813af7,7262eb4d-2d2d-454c-beaa-974645813af7,0,1,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,0,1,b2265070-9cd3-4176-92c8-6d9f32c2ca84,b2265070-9cd3-4176-92c8-6d9f32c2ca84,0,1,b347e774-2261-4f76-9bdb-3c6736983589,b347e774-2261-4f76-9bdb-3c6736983589,0,1,be7e2715-1243-49a8-8c7c-55d632d3cf6c,be7e2715-1243-49a8-8c7c-55d632d3cf6c,0,1,49221b2f-aae2-4bee-9a1a-18263fc74244,49221b2f-aae2-4bee-9a1a-18263fc74244,0,1,da0cd264-da2f-4044-af28-c91d2efe1d5c,da0cd264-da2f-4044-af28-c91d2efe1d5c,0,1,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,0,1,fad26b16-8638-496b-bd12-381fc6f5b71f,fad26b16-8638-496b-bd12-381fc6f5b71f,0,1,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,ed3cfb74-a37a-4314-a2d7-4ce717a2edd9,0,1,324a56c9-02d9-4177-af84-a817b8c41169,324a56c9-02d9-4177-af84-a817b8c41169,0,1,1e44abfe-c173-4802-b535-96849d384983,1e44abfe-c173-4802-b535-96849d384983,0,1,2751a509-037b-49aa-9ca8-e87057d6d82c,2751a509-037b-49aa-9ca8-e87057d6d82c,0,1,35f62549-eb6a-4284-a6e3-406b0d9df0cf,35f62549-eb6a-4284-a6e3-406b0d9df0cf,0,1,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,0,1,fd66995b-ee76-41d3-983f-33d84bdcbbd4,fd66995b-ee76-41d3-983f-33d84bdcbbd4,0,1,73e97918-b34e-4ad2-8591-4c219eb92f2c,73e97918-b34e-4ad2-8591-4c219eb92f2c,0,1,445cf7eb-35d0-48f8-9579-c2ec574ef324,445cf7eb-35d0-48f8-9579-c2ec574ef324,0,1,1025657e-afd2-4c7b-96d5-ccbedaca4619,1025657e-afd2-4c7b-96d5-ccbedaca4619,0,1,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,0,1,e754ad5c-cf3c-4198-af81-128475924cb0,e754ad5c-cf3c-4198-af81-128475924cb0,0,1,ed65d504-b210-4014-85ec-275ad633ef04,ed65d504-b210-4014-85ec-275ad633ef04,0,1,dc31edb1-273e-4b1a-8e69-32393479ff36,dc31edb1-273e-4b1a-8e69-32393479ff36,0,1,3ab0649b-239f-4466-b897-73c0ab628927,3ab0649b-239f-4466-b897-73c0ab628927,0,1,4c697110-8941-4d6d-ba03-f2b9e96ff82e,4c697110-8941-4d6d-ba03-f2b9e96ff82e,0,1,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,7ea4112d-fc41-4f1e-bd22-f04adeac1d8f,0,1,b172631b-da0d-42f4-ae6b-ae122a46cced,b172631b-da0d-42f4-ae6b-ae122a46cced,0,1,1a25e744-37ae-46ca-a328-ff8eced21a82,1a25e744-37ae-46ca-a328-ff8eced21a82,0,1,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,dddabe54-a93b-4e4b-acbb-cc522e4d7c28,0,1,46169f0b-8514-40a1-9d27-8489cab72503,46169f0b-8514-40a1-9d27-8489cab72503,0,1,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,0,1,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,0,1,c90243af-582c-4f5a-88e7-e0cbc0555fcb,c90243af-582c-4f5a-88e7-e0cbc0555fcb,0,1,14bf4066-15cb-4165-b854-45443ee27da1,14bf4066-15cb-4165-b854-45443ee27da1,0,1,4427cab9-4eea-4415-98ef-6021a447c60c,4427cab9-4eea-4415-98ef-6021a447c60c,0,1,fe46b4da-d865-468f-badd-83644bf88faa,fe46b4da-d865-468f-badd-83644bf88faa,0,1,2851c9d4-4366-4488-926d-a7fcd3b1548c,2851c9d4-4366-4488-926d-a7fcd3b1548c,0,1,31116aa2-cfbc-48e8-886b-45c1c17508fd,31116aa2-cfbc-48e8-886b-45c1c17508fd,0,1,6aa819d3-c56d-4561-a2e4-a1188ab1295a,6aa819d3-c56d-4561-a2e4-a1188ab1295a,0,1,2ddf344d-7065-40d5-9306-23870d8fc04a,2ddf344d-7065-40d5-9306-23870d8fc04a,0,1,c630ab2d-0a20-4136-88b6-220b2cad6a71,c630ab2d-0a20-4136-88b6-220b2cad6a71,0,1,00cd1dea-bc54-475c-956d-dc5221104932,00cd1dea-bc54-475c-956d-dc5221104932,0,1,3807f865-dd2c-44f7-9238-3db191f0a186,3807f865-dd2c-44f7-9238-3db191f0a186,0,1,8f184df5-bfe8-4df3-bc7c-18218cef7650,8f184df5-bfe8-4df3-bc7c-18218cef7650,0,1,387e273a-889f-454b-8b43-feaa12025fde,387e273a-889f-454b-8b43-feaa12025fde,0,1,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1c38ad75-b294-4c05-89ce-69ce4d9a291f,0,1,078d1e8f-6d27-4761-9532-b1e7a60e4c13,078d1e8f-6d27-4761-9532-b1e7a60e4c13,0,1,4262193c-58ad-47c6-8088-735d8cd037ea,4262193c-58ad-47c6-8088-735d8cd037ea,0,1,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,0,1,de6d1aad-39eb-46ce-87aa-d29812bb37bf,de6d1aad-39eb-46ce-87aa-d29812bb37bf,0,1,4ad859ec-cc75-4bac-9e89-397798450e48,4ad859ec-cc75-4bac-9e89-397798450e48,0,1,d93ab94c-0f55-4b80-b226-41b44c73b3ea,d93ab94c-0f55-4b80-b226-41b44c73b3ea,0,1,94cbed80-5a35-471f-b354-439a11629210,94cbed80-5a35-471f-b354-439a11629210,0,1,1162cc0a-42e5-47cb-9507-68459579f110,1162cc0a-42e5-47cb-9507-68459579f110,0,1,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,0,1,bb49dc80-4934-4f44-8f27-9a363dca8dc4,bb49dc80-4934-4f44-8f27-9a363dca8dc4,0,1,7338e497-03a7-4ed4-85a2-ca802c065a9f,7338e497-03a7-4ed4-85a2-ca802c065a9f,0,1,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,0,1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,0,1,d33df51c-3dcd-496c-90f2-7ee05582bdf7,d33df51c-3dcd-496c-90f2-7ee05582bdf7,0,1,24b39ebd-2424-4939-8e3e-d09eb674d409,24b39ebd-2424-4939-8e3e-d09eb674d409,0,1,08c751bb-9e57-4536-901e-bb316c8e96d7,08c751bb-9e57-4536-901e-bb316c8e96d7,0,1,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,0,1,034cdcef-08e5-4751-9885-400aa69e0b94,034cdcef-08e5-4751-9885-400aa69e0b94,0,1,efefebea-2032-4006-b9ca-50a23b7da1ef,efefebea-2032-4006-b9ca-50a23b7da1ef,0,1,4c794d37-3352-4acb-a939-5e90fb682db8,4c794d37-3352-4acb-a939-5e90fb682db8,0,1,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,0,1,008f5068-da9c-4dac-9c0a-a50366d27cbb,008f5068-da9c-4dac-9c0a-a50366d27cbb,0,1,950b3ee3-070f-4946-8b9b-0aa2058de986,950b3ee3-070f-4946-8b9b-0aa2058de986,0,1,bd04a870-0943-4bdb-9e30-50a69daa8a13,bd04a870-0943-4bdb-9e30-50a69daa8a13,0,1,a23e6c77-8c12-4f99-ae2d-68a12274be38,a23e6c77-8c12-4f99-ae2d-68a12274be38,0,1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,0,1,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,0,1,31cac1e9-eb16-489c-9322-30d1e27a80b3,31cac1e9-eb16-489c-9322-30d1e27a80b3,0,1,0d100e33-7941-41c1-962d-7672c874e9c5,0d100e33-7941-41c1-962d-7672c874e9c5,0,1,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,c5ac53c9-c9b2-4b90-a21e-10f1daa756c5,0,1,6e61d717-de36-4dce-8af9-b6c14ed76acb,6e61d717-de36-4dce-8af9-b6c14ed76acb,0,1,474518fe-9cb5-4a12-9388-bc7a64511617,474518fe-9cb5-4a12-9388-bc7a64511617,0,1,64337614-b1c9-4931-b576-448721fa4602,64337614-b1c9-4931-b576-448721fa4602,0,1,1d73b59c-0594-4ed3-b584-cf1261941e1d,1d73b59c-0594-4ed3-b584-cf1261941e1d,0,1,8ff2547f-d596-4fa1-9e12-079e1cc4c057,8ff2547f-d596-4fa1-9e12-079e1cc4c057,0,1,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1ab0c8f8-b908-4618-ae88-af37b8f1224e,0,1,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,0,1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,0,1,b77d748a-d180-432d-91c3-774e6ccf7efa,b77d748a-d180-432d-91c3-774e6ccf7efa,0,1,e5b9c1b0-4690-442c-b160-e6c587e42e57,e5b9c1b0-4690-442c-b160-e6c587e42e57,0,1,e3adb576-6b33-475b-976b-7a6783de3184,e3adb576-6b33-475b-976b-7a6783de3184,0,1,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,0,1,78f5a205-dffb-4009-897a-e8f36372f33c,78f5a205-dffb-4009-897a-e8f36372f33c,0,1,f7597041-f182-42fb-803a-2521c70d627d,f7597041-f182-42fb-803a-2521c70d627d,0,1,ce988b8a-d0c1-400a-9466-aa757501bb58,ce988b8a-d0c1-400a-9466-aa757501bb58,0,1,ab98d665-8da8-406e-9e0e-3e130ab393ef,ab98d665-8da8-406e-9e0e-3e130ab393ef,0,1,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,0,1,118a0e62-c0bb-435b-9e3e-c64563efa602,118a0e62-c0bb-435b-9e3e-c64563efa602,0,1,b57bc8a9-8a59-4192-a442-2e1982e83179,b57bc8a9-8a59-4192-a442-2e1982e83179,0,1,5b06ccda-2a70-4621-8273-78408cbe72a9,5b06ccda-2a70-4621-8273-78408cbe72a9,0,1,89753385-64fd-4e76-9857-bfd5d7c23f71,89753385-64fd-4e76-9857-bfd5d7c23f71,0,1,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,0,1,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,0,1,e20bcb57-2f68-4709-8a11-105d561a2dda,e20bcb57-2f68-4709-8a11-105d561a2dda,0,1,3df3f61a-2c17-4278-8d82-91089f793e6a,3df3f61a-2c17-4278-8d82-91089f793e6a,0,1,ea8beea1-7d80-4613-b2f9-79ee612e977a,ea8beea1-7d80-4613-b2f9-79ee612e977a,0,1,afd62a32-fdbb-429a-9a64-89c61a07e018,afd62a32-fdbb-429a-9a64-89c61a07e018,0,1,027cef43-99bd-48d3-a1a3-2102ac003742,027cef43-99bd-48d3-a1a3-2102ac003742,0,1,00197ea9-de76-4e2a-97bc-93e44053e35e,00197ea9-de76-4e2a-97bc-93e44053e35e,0,1,878fe826-fa99-44ad-9891-5eada9744017,878fe826-fa99-44ad-9891-5eada9744017,0,1,0d61712a-dfaf-46f1-b728-62993dd94fbe,0d61712a-dfaf-46f1-b728-62993dd94fbe,0,1,3a6cf496-09b9-4947-9df5-06d23b474558,3a6cf496-09b9-4947-9df5-06d23b474558,0,1,625b498a-33d1-4162-9525-fb7790cbb6a8,625b498a-33d1-4162-9525-fb7790cbb6a8,0,1,28223f7b-d15a-4f12-b57c-1f6d08a902f9,28223f7b-d15a-4f12-b57c-1f6d08a902f9,0,1,dd9eb5b7-5aed-4e51-9939-9ff14492d240,dd9eb5b7-5aed-4e51-9939-9ff14492d240,0,1,b2a14899-d589-4990-b85e-7bffb427e8af,b2a14899-d589-4990-b85e-7bffb427e8af,0,1,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0,1,3210ba40-382e-4917-ad0f-9bd88d23dc25,3210ba40-382e-4917-ad0f-9bd88d23dc25,0,1,835e3ead-d01f-410b-937a-902dd5e66aec,835e3ead-d01f-410b-937a-902dd5e66aec,0,1,40141982-d1d6-416f-844e-19143a407ff9,40141982-d1d6-416f-844e-19143a407ff9,0,1,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,0,1,d3211832-c8ca-437a-8810-82e06cbb48de,d3211832-c8ca-437a-8810-82e06cbb48de,0,1,8131d701-1014-4196-9b67-914e451f8a3a,8131d701-1014-4196-9b67-914e451f8a3a,0,1,2b102933-c660-4e74-ae9a-5061a88ed672,2b102933-c660-4e74-ae9a-5061a88ed672,0,1,56c897b7-d34e-4d7d-9a3b-d0779be5c189,56c897b7-d34e-4d7d-9a3b-d0779be5c189,0,1,3ac81c80-56bd-4750-b135-07ab522e3eab,3ac81c80-56bd-4750-b135-07ab522e3eab,0,1,5657872f-c7d5-446f-bcc3-d0b86ad63a42,5657872f-c7d5-446f-bcc3-d0b86ad63a42,0,1,d5214cb9-67e2-469f-989f-3f2b662ae830,d5214cb9-67e2-469f-989f-3f2b662ae830,0,1,69679e88-4f2b-4dd6-8cb2-b88293d07b55,69679e88-4f2b-4dd6-8cb2-b88293d07b55,0,1,68679208-9972-4854-8649-49bdf6212255,68679208-9972-4854-8649-49bdf6212255,0,1,98393093-7ba6-4b4d-86be-ee5826cd8cd5,98393093-7ba6-4b4d-86be-ee5826cd8cd5,0,1,87de486d-3f35-4432-a7cd-9d3832db63cf,87de486d-3f35-4432-a7cd-9d3832db63cf,0,1,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,0,1,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,0,1,bb7ce04a-8143-4c0b-a196-1b57f1640142,bb7ce04a-8143-4c0b-a196-1b57f1640142,0,1,4872f12c-705c-4dd3-802f-d27496a0d634,4872f12c-705c-4dd3-802f-d27496a0d634,0,1,3bacfd93-dfc7-4154-9d3f-b61ddc5c6721,3bacfd93-dfc7-4154-9d3f-b61ddc5c6721,0,1,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0,1,f9ada91a-e673-4821-9bce-cb0dd75ca28b,f9ada91a-e673-4821-9bce-cb0dd75ca28b,0,1,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,0,1,90ce635a-0277-4056-980d-d1a16d91cb30,90ce635a-0277-4056-980d-d1a16d91cb30,0,1,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,0,1,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1e77e873-632c-482b-8f46-8f8cc3cc8cef,0,1,766208a3-2780-427b-a7d3-93abe99d236b,766208a3-2780-427b-a7d3-93abe99d236b,0,1,63ce4c3c-5bad-409c-904f-18f34cf1da78,63ce4c3c-5bad-409c-904f-18f34cf1da78,0,1,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,0,1,26ac22f9-0bbb-4671-b446-626e345e2461,26ac22f9-0bbb-4671-b446-626e345e2461,0,1,0d63ee6d-e17f-4a86-b384-adf9793f3331,0d63ee6d-e17f-4a86-b384-adf9793f3331,0,1,f152945b-2a7b-449e-a915-176166af7bac,f152945b-2a7b-449e-a915-176166af7bac,0,1,77f5d86a-7fae-4490-9740-0e31102dab5c,77f5d86a-7fae-4490-9740-0e31102dab5c,0,1,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,0,1,24be43ec-d39e-46aa-9c11-2536b835e515,24be43ec-d39e-46aa-9c11-2536b835e515,0,1,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,0,1,df9af3ee-6a69-4a03-8ff5-0735e9a38013,df9af3ee-6a69-4a03-8ff5-0735e9a38013,0,1,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,0,1,7743fe24-b941-4dad-bc76-05fb6b26b1d7,7743fe24-b941-4dad-bc76-05fb6b26b1d7,0,1,5bf2da0d-f318-4036-9234-8a3a6eca88b2,5bf2da0d-f318-4036-9234-8a3a6eca88b2,0,1,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,0,1,c3634571-6fe5-45ab-9362-161305eef661,c3634571-6fe5-45ab-9362-161305eef661,0,1,ec11342f-594f-416f-a10f-bd1bfa695c08,ec11342f-594f-416f-a10f-bd1bfa695c08,0,1,31c3ac44-204e-43fd-bca3-fd18fa091c58,31c3ac44-204e-43fd-bca3-fd18fa091c58,0,1,74f03c35-5da0-406e-a938-e8e5d49975ef,74f03c35-5da0-406e-a938-e8e5d49975ef,0,1,c9ab3890-6d16-431f-ab2b-b5058e6202a4,c9ab3890-6d16-431f-ab2b-b5058e6202a4,0,1,5ee9eed7-3c6c-4264-ab9a-6f24f9c80598,5ee9eed7-3c6c-4264-ab9a-6f24f9c80598,0,1,3c33adc7-abea-4e0f-9e5d-d8f10abb63df,3c33adc7-abea-4e0f-9e5d-d8f10abb63df,0,1,4090c6f7-1d25-4b17-9baa-18daa0640b0f,4090c6f7-1d25-4b17-9baa-18daa0640b0f,0,1,26125e58-dfc8-4bbb-a3a4-80616471746e,26125e58-dfc8-4bbb-a3a4-80616471746e,0,1,b1c699cd-efdc-461c-ad37-10bfd4bc9674,b1c699cd-efdc-461c-ad37-10bfd4bc9674,0,1,6add1920-5073-4b1e-b7e0-13bf1e65e4c3,6add1920-5073-4b1e-b7e0-13bf1e65e4c3,0,1,f12c946c-98e4-4da6-8a88-c555e9dc3bdd,f12c946c-98e4-4da6-8a88-c555e9dc3bdd,0,1,ec5718b7-1c4d-4bdc-9426-40a339bb29cf,ec5718b7-1c4d-4bdc-9426-40a339bb29cf,0,1,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,0,1,96661303-1286-4f84-93b7-0e6da2bd7893,96661303-1286-4f84-93b7-0e6da2bd7893,0,1,68076431-36e6-46dc-92cb-e0d8e605bf66,68076431-36e6-46dc-92cb-e0d8e605bf66,0,1,239fa55a-6572-4e5c-9918-c2e14063c76d,239fa55a-6572-4e5c-9918-c2e14063c76d,0,1,8211a1b6-c3b1-466b-8d11-22603fb50c7a,8211a1b6-c3b1-466b-8d11-22603fb50c7a,0,1,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,0,1,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,0,1,a83cb338-5707-42c9-9e88-11f6c68fcc32,a83cb338-5707-42c9-9e88-11f6c68fcc32,0,1,985106b7-7476-4b48-90ac-ad86876395b5,985106b7-7476-4b48-90ac-ad86876395b5,0,1,0d8db0c9-adbc-478d-997c-3d7feccac99b,0d8db0c9-adbc-478d-997c-3d7feccac99b,0,1,3fd2ef04-c178-47bf-ab62-7baf83236d99,3fd2ef04-c178-47bf-ab62-7baf83236d99,0,1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,0,1,320bf2e6-a3a8-490b-8aa0-21369ffb121b,320bf2e6-a3a8-490b-8aa0-21369ffb121b,0,1,a3bafc54-8fe4-4841-acc6-74a87baf9caf,a3bafc54-8fe4-4841-acc6-74a87baf9caf,0,1,f93741c9-ab94-464b-b0d4-4af99c9f92d5,f93741c9-ab94-464b-b0d4-4af99c9f92d5,0,1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0,1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,0,1,c59fd3f8-c734-49d3-90ba-e608a22ac981,c59fd3f8-c734-49d3-90ba-e608a22ac981,0,1,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,0,1,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,0,1,475f76ea-f494-41f1-9b65-f39907e5a427,475f76ea-f494-41f1-9b65-f39907e5a427,0,1,986280d1-41bb-4b15-a5ae-516d6a04c1f4,986280d1-41bb-4b15-a5ae-516d6a04c1f4,0,1,43bfd29a-d254-4c33-8639-200b483578c1,43bfd29a-d254-4c33-8639-200b483578c1,0,1,6a274167-7f80-4613-9890-259ffd8ccfc4,6a274167-7f80-4613-9890-259ffd8ccfc4,0,1,4e90e1ab-b1ec-4795-ad45-1db151a5492c,4e90e1ab-b1ec-4795-ad45-1db151a5492c,0,1,91791e56-ca80-4d90-b8a8-16145f6a9721,91791e56-ca80-4d90-b8a8-16145f6a9721,0,1,b242c6a2-5ac9-4edb-b5dd-24eda8162151,b242c6a2-5ac9-4edb-b5dd-24eda8162151,0,1,8d080f3c-06ed-48bf-9709-eea73d676741,8d080f3c-06ed-48bf-9709-eea73d676741,0,1,57b31a5d-9fdc-43d2-ae81-67157822c4b6,57b31a5d-9fdc-43d2-ae81-67157822c4b6,0,1,d4e2da66-9a70-459f-a873-cb4ad71d17b2,d4e2da66-9a70-459f-a873-cb4ad71d17b2,0,1,a84a91d2-d326-4bf4-82e6-d573ee35d090,a84a91d2-d326-4bf4-82e6-d573ee35d090,0,1,39cbda23-db3f-4ddd-8981-8540247406db,39cbda23-db3f-4ddd-8981-8540247406db,0,1,c8a18d99-62ff-45a4-acb5-48e3310c1b53,c8a18d99-62ff-45a4-acb5-48e3310c1b53,0,1,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,0,1,3500c6fa-813a-49dd-a4bf-163500db5b7f,3500c6fa-813a-49dd-a4bf-163500db5b7f,0,1,1d02493a-dd89-4a51-b75e-9c49f9818b95,1d02493a-dd89-4a51-b75e-9c49f9818b95,0,1,2845c5d1-e836-4499-bcae-f3c8fdae75ee,2845c5d1-e836-4499-bcae-f3c8fdae75ee,0,1,fe4e8e4e-9471-4583-b9b3-576007db08ee,fe4e8e4e-9471-4583-b9b3-576007db08ee,0,1,49deaaa8-6d50-4b25-8153-6712d88fb0fb,49deaaa8-6d50-4b25-8153-6712d88fb0fb,0,1,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,0,1,46a06de8-06fd-4b49-835f-4f24b832b3c4,46a06de8-06fd-4b49-835f-4f24b832b3c4,0,1,3845a567-4375-4c3a-af61-5b82674060ab,3845a567-4375-4c3a-af61-5b82674060ab,0,1,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,0,1,a835a3a7-989b-4247-b836-d23bba2f391a,a835a3a7-989b-4247-b836-d23bba2f391a,0,1,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,0,1,9b149c20-9328-4e2d-a34b-95c883ae4dcc,9b149c20-9328-4e2d-a34b-95c883ae4dcc,0,1,f8dbf226-ea56-4b15-baf1-a41fceba2a32,f8dbf226-ea56-4b15-baf1-a41fceba2a32,0,1,fc1476f7-26e6-4374-b99b-e515d86c050a,fc1476f7-26e6-4374-b99b-e515d86c050a,0,1,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,0,1,59fe985a-f169-495b-bd6d-4b64401f81b0,59fe985a-f169-495b-bd6d-4b64401f81b0,0,1,184d1023-fba9-4e56-b592-519254abe922,184d1023-fba9-4e56-b592-519254abe922,0,1,cb68b275-f191-4632-a8ea-aa8809256804,cb68b275-f191-4632-a8ea-aa8809256804,0,1,174011b9-8fe2-43f5-adea-21f6d73835ff,174011b9-8fe2-43f5-adea-21f6d73835ff,0,1,c4753515-a483-453e-a48b-b12d8ef48fd9,c4753515-a483-453e-a48b-b12d8ef48fd9,0,1,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,0,1,98c3bc52-2351-460c-8b8e-0d3f45ca3131,98c3bc52-2351-460c-8b8e-0d3f45ca3131,0,1,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,0,1,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,0,1,29645810-44aa-402c-9561-7819d6f4a7ab,29645810-44aa-402c-9561-7819d6f4a7ab,0,1,46bf4911-5200-44ac-9b4d-eb0089c12e34,46bf4911-5200-44ac-9b4d-eb0089c12e34,0,1,6e1685bd-7269-401c-b36e-def6a36b41d5,6e1685bd-7269-401c-b36e-def6a36b41d5,0,1,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,0,1,e03b6592-b597-4795-a78e-775d4f2258db,e03b6592-b597-4795-a78e-775d4f2258db,0,1,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,0,1,3b207d5f-6584-4cf2-9173-20235484f9f4,3b207d5f-6584-4cf2-9173-20235484f9f4,0,1,878d9efe-b0e7-487f-b8f7-83470c131e09,878d9efe-b0e7-487f-b8f7-83470c131e09,0,1,8270573d-8ed6-449d-853b-462d2dabaaa9,8270573d-8ed6-449d-853b-462d2dabaaa9,0,1,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,0,1,f2502463-67e4-4bfe-8ad5-fb80aa73975a,f2502463-67e4-4bfe-8ad5-fb80aa73975a,0,1,59e885e6-d978-40c2-95b6-35fc61074fb4,59e885e6-d978-40c2-95b6-35fc61074fb4,0,1,267dc512-9ee1-4bc1-9034-3effb7fb2949,267dc512-9ee1-4bc1-9034-3effb7fb2949,0,1,0f211e73-5be9-4015-93e7-ccf63e793cb6,0f211e73-5be9-4015-93e7-ccf63e793cb6,0,1,6574d8f4-fb97-4a26-b166-711fad63aa07,6574d8f4-fb97-4a26-b166-711fad63aa07,0,1,fb3eddaf-3241-4d59-8314-97a5ae9258c4,fb3eddaf-3241-4d59-8314-97a5ae9258c4,0,1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,0,1,d8601e95-af94-4805-974a-99c539725d74,d8601e95-af94-4805-974a-99c539725d74,0,1,6d98f877-f3bb-4795-9025-2631468a331f,6d98f877-f3bb-4795-9025-2631468a331f,0,1,89b9379d-ace9-48cc-b979-a66fd45aeb1d,89b9379d-ace9-48cc-b979-a66fd45aeb1d,0,1,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,0,1,9767a113-5a42-4749-bf40-0f349e85615d,9767a113-5a42-4749-bf40-0f349e85615d,0,1,a3b0494c-f436-45ea-9577-4c0c86b057c9,a3b0494c-f436-45ea-9577-4c0c86b057c9,0,1,5101c142-b25c-4bef-80e7-7407f2c15c90,5101c142-b25c-4bef-80e7-7407f2c15c90,0,1,6d7872f1-fd54-41c4-8253-5f2b125f31ae,6d7872f1-fd54-41c4-8253-5f2b125f31ae,0,1,0c218200-27a8-4f71-9b09-3632dd453644,0c218200-27a8-4f71-9b09-3632dd453644,0,1,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,0,1,b5d30250-18ab-4af1-b99a-ff5dba334d1f,b5d30250-18ab-4af1-b99a-ff5dba334d1f,0,1,936f1aa5-7516-444b-b451-1162fa5d705f,936f1aa5-7516-444b-b451-1162fa5d705f,0,1,e8d5533e-2669-44f6-9eed-eaedab666d42,e8d5533e-2669-44f6-9eed-eaedab666d42,0,1,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,0,1,9e323b0d-4e3b-45d4-9705-aa30e63014f5,9e323b0d-4e3b-45d4-9705-aa30e63014f5,0,1,5afa798a-958e-4e0c-a380-0104f4c037a7,5afa798a-958e-4e0c-a380-0104f4c037a7,0,1,c0295fd9-c749-41b3-8d0d-6af16f484b1f,c0295fd9-c749-41b3-8d0d-6af16f484b1f,0,1,bd32a863-3090-432d-89c4-356ba86a0bdc,bd32a863-3090-432d-89c4-356ba86a0bdc,0,1,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,0,1,ed5465b4-a556-4078-ab18-49fef2afba2e,ed5465b4-a556-4078-ab18-49fef2afba2e,0,1,7368ab8f-59d5-4270-a43b-0f3e422169ed,7368ab8f-59d5-4270-a43b-0f3e422169ed,0,1,eeb0571b-1b74-4889-b8b5-f94186d692d7,eeb0571b-1b74-4889-b8b5-f94186d692d7,0,1,9ef3b72c-caa3-486b-9917-04c00f6689c1,9ef3b72c-caa3-486b-9917-04c00f6689c1,0,1,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,0,1,9245417f-f247-47ba-a1b4-a17ec2e8776c,9245417f-f247-47ba-a1b4-a17ec2e8776c,0,1,a4b721d7-b119-47eb-80e0-7db34c83964f,a4b721d7-b119-47eb-80e0-7db34c83964f,0,1,512629d1-e8b7-4f66-b613-b8c0cb9c250b,512629d1-e8b7-4f66-b613-b8c0cb9c250b,0,1,b7cf4684-4432-4658-9c06-b315d470a3a6,b7cf4684-4432-4658-9c06-b315d470a3a6,0,1,d3bc8211-54d8-47dd-aecf-5da72b65195f,d3bc8211-54d8-47dd-aecf-5da72b65195f,0,1,33f11da8-f670-4ec3-9d40-96fce031c60f,33f11da8-f670-4ec3-9d40-96fce031c60f,0,1,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,0,1,f74c2d41-2433-4bed-8aef-adfeed198252,f74c2d41-2433-4bed-8aef-adfeed198252,0,1,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,0,1,56c9703a-751a-4e6c-81f4-a8756fb040e3,56c9703a-751a-4e6c-81f4-a8756fb040e3,0,1,c3a86eec-1ff5-4392-9904-91a12a2e253a,c3a86eec-1ff5-4392-9904-91a12a2e253a,0,1,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,0,1,f02b7246-dae9-4e15-b4cd-b06133664d34,f02b7246-dae9-4e15-b4cd-b06133664d34,0,1,77f20022-17ce-4e00-8a84-015238bce6f3,77f20022-17ce-4e00-8a84-015238bce6f3,0,1,3734619b-7059-4547-8b97-0b3393389d4d,3734619b-7059-4547-8b97-0b3393389d4d,0,1,a30bf95f-aabd-4da0-8287-61e08f9362fb,a30bf95f-aabd-4da0-8287-61e08f9362fb,0,1,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,0,1,4078867c-2972-47f9-bebd-935a6f1cc667,4078867c-2972-47f9-bebd-935a6f1cc667,0,1,8502fe39-c241-4be5-a313-fd887bbbdfa1,8502fe39-c241-4be5-a313-fd887bbbdfa1,0,1,67a71201-13e5-42a3-902f-fb3a59710dfb,67a71201-13e5-42a3-902f-fb3a59710dfb,0,1,3a79a951-a997-4596-ab62-ba376d67725d,3a79a951-a997-4596-ab62-ba376d67725d,0,1,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,0,1,884c28de-434f-440a-8c63-67e659c097ad,884c28de-434f-440a-8c63-67e659c097ad,0,1,92ead3b5-8c55-4e4d-bd47-009e025b22f8,92ead3b5-8c55-4e4d-bd47-009e025b22f8,0,1,50d8e365-aa58-4b60-8992-01943379d485,50d8e365-aa58-4b60-8992-01943379d485,0,1,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,0,1,b3f7f763-bea9-4f59-9450-df95e5c3d89d,b3f7f763-bea9-4f59-9450-df95e5c3d89d,0,1,9111e28e-c1c7-414b-9288-61bd06a04d04,9111e28e-c1c7-414b-9288-61bd06a04d04,0,1,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,0,1,094d5482-286d-4e1a-8888-c0452d2e5af0,094d5482-286d-4e1a-8888-c0452d2e5af0,0,1,fec102ea-a3f6-49b5-b4b8-6884b0654129,fec102ea-a3f6-49b5-b4b8-6884b0654129,0,1,184405d0-34a7-4668-9a64-d92a6a7da142,184405d0-34a7-4668-9a64-d92a6a7da142,0,1,bccf8909-6f99-44d8-9c91-688958fc95f4,bccf8909-6f99-44d8-9c91-688958fc95f4,0,1,246571fb-38c7-4da6-929d-d8b44bc3437c,246571fb-38c7-4da6-929d-d8b44bc3437c,0,1,047fd6d7-5e30-4184-a09a-6525de526cc7,047fd6d7-5e30-4184-a09a-6525de526cc7,0,1,beb44b02-5d5e-4127-aee7-e184a43a4210,beb44b02-5d5e-4127-aee7-e184a43a4210,0,1,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,0,1,e24641ed-3e92-46d7-852b-9958ab7bc520,e24641ed-3e92-46d7-852b-9958ab7bc520,0,1,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,0,1,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,0,1,2c61114f-abd7-4415-8cdf-4fe95d9fe354,2c61114f-abd7-4415-8cdf-4fe95d9fe354,0,1,abd7a766-5cc1-48db-8d29-797e9d666a78,abd7a766-5cc1-48db-8d29-797e9d666a78,0,1,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1704b5e3-8e77-4df6-9223-e6e5c41a280d,0,1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,0,1,b0dde395-8498-4469-9507-d290798117d7,b0dde395-8498-4469-9507-d290798117d7,0,1,999616ea-0faa-4ae2-9841-6a6997ea6694,999616ea-0faa-4ae2-9841-6a6997ea6694,0,1,c5f91669-13d8-4f0a-a054-2701078da38a,c5f91669-13d8-4f0a-a054-2701078da38a,0,1,34f9872b-e02e-4093-ba06-3cb5b8995850,34f9872b-e02e-4093-ba06-3cb5b8995850,0,1,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,0,1,e61eef89-b3de-4b73-b7d9-af75318093e5,e61eef89-b3de-4b73-b7d9-af75318093e5,0,1,94e68502-adf1-476e-be2f-8418385959fa,94e68502-adf1-476e-be2f-8418385959fa,0,1,bf80ccc5-f907-4e7f-a007-6030c7ba682e,bf80ccc5-f907-4e7f-a007-6030c7ba682e,0,1,a330acd1-bc97-4ef8-8ecb-5604868ca044,a330acd1-bc97-4ef8-8ecb-5604868ca044,0,1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,0,1,58c3936c-4db0-45c8-a22e-b5dd49a61497,58c3936c-4db0-45c8-a22e-b5dd49a61497,0,1,9aa607bc-5870-436a-bbe1-296560393e3b,9aa607bc-5870-436a-bbe1-296560393e3b,0,1,1635be16-4861-4a7d-babc-4caff448a7f7,1635be16-4861-4a7d-babc-4caff448a7f7,0,1,9e399087-c957-4a7a-ab9d-2b689736caab,9e399087-c957-4a7a-ab9d-2b689736caab,0,1,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,0,1,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,0,1,2b7372be-af0d-464e-8d09-8172229790af,2b7372be-af0d-464e-8d09-8172229790af,0,1,d85346db-be25-4dab-a2db-647c3d40dd17,d85346db-be25-4dab-a2db-647c3d40dd17,0,1,c7bafd34-5b15-42ec-b329-0be3002775ad,c7bafd34-5b15-42ec-b329-0be3002775ad,0,1,6feb2278-9149-47f8-a0ec-eb4bd9f44716,6feb2278-9149-47f8-a0ec-eb4bd9f44716,0,1,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,c960082b-8c16-4d7b-b7fd-b1f2bfe07e0b,0,1,fb07fd61-2aae-4759-b6ef-c44c2bba4036,fb07fd61-2aae-4759-b6ef-c44c2bba4036,0,1,cd6770d5-cd3c-47af-bc46-c865993adf63,cd6770d5-cd3c-47af-bc46-c865993adf63,0,1,9f9936fc-54a0-4812-b12d-2f8f91551440,9f9936fc-54a0-4812-b12d-2f8f91551440,0,1,a5667633-9264-4dfa-9e26-c45e96e61ae3,a5667633-9264-4dfa-9e26-c45e96e61ae3,0,1,2eeea138-481c-4fde-9e8a-709d751cc469,2eeea138-481c-4fde-9e8a-709d751cc469,0,1,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,0,1,845262f8-8208-4c90-98ec-c85dd5734cf0,845262f8-8208-4c90-98ec-c85dd5734cf0,0,1,ad066c0d-4f4c-48af-9cc8-bb835372150a,ad066c0d-4f4c-48af-9cc8-bb835372150a,0,1,a2145e81-239e-4267-8a43-ea3f7babe878,a2145e81-239e-4267-8a43-ea3f7babe878,0,1,3326bbcb-b277-44db-a252-2448119e8146,3326bbcb-b277-44db-a252-2448119e8146,0,1,61cac5f7-320c-4098-9078-44fadcdeb219,61cac5f7-320c-4098-9078-44fadcdeb219,0,1,304304b1-36a4-42bb-8ab9-b23b59795001,304304b1-36a4-42bb-8ab9-b23b59795001,0,1,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,0,1,75b9ab9f-7cbb-4468-9570-39f719fd682b,75b9ab9f-7cbb-4468-9570-39f719fd682b,0,1,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,0,1,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,0,1,cd454738-62dd-4f95-af33-b52750678428,cd454738-62dd-4f95-af33-b52750678428,0,1,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,0,1,e4abafc6-f859-4d96-9818-5b9bf8d66d69,e4abafc6-f859-4d96-9818-5b9bf8d66d69,0,1,535acd2c-26d2-4f32-9ae6-cc1956317c59,535acd2c-26d2-4f32-9ae6-cc1956317c59,0,1,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,0,1,ac4e0868-ba49-46b4-8872-d42483a5591f,ac4e0868-ba49-46b4-8872-d42483a5591f,0,1,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,0,1,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0,1,ca4c0299-625a-4b03-be0e-36ffb45c6d08,ca4c0299-625a-4b03-be0e-36ffb45c6d08,0,1,7fa1119b-4321-4b8f-a879-1d940084145a,7fa1119b-4321-4b8f-a879-1d940084145a,0,1,5d9c0841-6ea6-48dc-a53b-9f19894750f8,5d9c0841-6ea6-48dc-a53b-9f19894750f8,0,1,86b5303b-d967-4bc6-b2da-066c5a58613f,86b5303b-d967-4bc6-b2da-066c5a58613f,0,1,853b824d-9377-475f-913e-d02bd60f5f64,853b824d-9377-475f-913e-d02bd60f5f64,0,1,0c5e261f-961e-4780-877a-06589400b88a,0c5e261f-961e-4780-877a-06589400b88a,0,1,ee1f8545-ea64-41de-a29a-2d40e15d4f16,ee1f8545-ea64-41de-a29a-2d40e15d4f16,0,1,4599ef83-5f1e-44af-ae0c-67988656a99e,4599ef83-5f1e-44af-ae0c-67988656a99e,0,1,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,0,1,e1b94dcf-ec37-4b2d-a7af-120eeee40944,e1b94dcf-ec37-4b2d-a7af-120eeee40944,0,1,7d2a37b1-a1a0-435a-846a-95e255655044,7d2a37b1-a1a0-435a-846a-95e255655044,0,1,109db64c-00dc-490e-99a5-4430d9344e99,109db64c-00dc-490e-99a5-4430d9344e99,0,1,85837a55-fed5-4b7b-a622-30d728b9a677,85837a55-fed5-4b7b-a622-30d728b9a677,0,1,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0,1,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,6ede8b5c-7df0-44a5-9136-8109bbd8b5a9,0,1,da9821c3-4b16-48b7-9088-d3cf8ac536a6,da9821c3-4b16-48b7-9088-d3cf8ac536a6,0,1,d5142574-a040-4dd0-a482-cdc61c1d86ab,d5142574-a040-4dd0-a482-cdc61c1d86ab,0,1,fb36c775-1124-4ba6-8af8-133bf66fcb54,fb36c775-1124-4ba6-8af8-133bf66fcb54,0,1,51f9aff4-71da-4b1b-b48b-04122a17d855,51f9aff4-71da-4b1b-b48b-04122a17d855,0,1,778e79ee-eb1a-4d52-8a31-58e781c78fe4,778e79ee-eb1a-4d52-8a31-58e781c78fe4,0,1,90385850-d37b-4b2e-ac87-95c17f32197c,90385850-d37b-4b2e-ac87-95c17f32197c,0,1,f480ac52-e2f1-4ed0-a0b1-20a622f77302,f480ac52-e2f1-4ed0-a0b1-20a622f77302,0,1,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,0,1,b9b0fbdc-8fda-46d1-bb3e-561a03604971,b9b0fbdc-8fda-46d1-bb3e-561a03604971,0,1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,0,1,672c2936-9771-4e32-a970-7ac7f12a21e8,672c2936-9771-4e32-a970-7ac7f12a21e8,0,1,73afaad8-dfa9-43e3-bdaf-543c3545d788,73afaad8-dfa9-43e3-bdaf-543c3545d788,0,1,c264441d-4805-4968-baa2-37b8970049c7,c264441d-4805-4968-baa2-37b8970049c7,0,1,4f0bda80-2246-43be-95f8-ae8480682cd5,4f0bda80-2246-43be-95f8-ae8480682cd5,0,1,ac4fa2a4-93a1-4aa6-986a-5f576457fc8a,ac4fa2a4-93a1-4aa6-986a-5f576457fc8a,0,1,6f683f46-9eef-4e78-bc2f-7174238bf53c,6f683f46-9eef-4e78-bc2f-7174238bf53c,0,1,7d1ed38b-98cf-4a0e-a605-680bb580d904,7d1ed38b-98cf-4a0e-a605-680bb580d904,0,1,b769eda0-11de-401c-a68b-4fce4555d4fc,b769eda0-11de-401c-a68b-4fce4555d4fc,0,1,fd7a668f-3099-4e15-956a-92c6295dd4d5,fd7a668f-3099-4e15-956a-92c6295dd4d5,0,1,afcbd830-ec5f-4865-a176-ea3014dff908,afcbd830-ec5f-4865-a176-ea3014dff908,0,1,dc5fc801-14e4-42e8-b396-76eb30b69eea,dc5fc801-14e4-42e8-b396-76eb30b69eea,0,1,f36150de-33af-4410-8a4c-8c9f4b545793,f36150de-33af-4410-8a4c-8c9f4b545793,0,1,62f97480-7d4a-48f3-9d1d-612909b242c9,62f97480-7d4a-48f3-9d1d-612909b242c9,0,1,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,0,1,3068be84-a401-4701-8ac9-411fae130f84,3068be84-a401-4701-8ac9-411fae130f84,0,1,957394a7-e5b8-47fc-8680-1e71efe2be7d,957394a7-e5b8-47fc-8680-1e71efe2be7d,0,1,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,0,1,4f25ef45-c8d9-401d-b0e8-2217ac310f04,4f25ef45-c8d9-401d-b0e8-2217ac310f04,0,1,504ca240-b5ae-433e-ae5f-d818263eea23,504ca240-b5ae-433e-ae5f-d818263eea23,0,1,32461819-9437-417d-8d1e-851c9a2dcee2,32461819-9437-417d-8d1e-851c9a2dcee2,0,1,74228950-8a4b-4dd6-a053-8650de202521,74228950-8a4b-4dd6-a053-8650de202521,0,1,ff700f82-aba3-417c-be1b-b1b37ad98543,ff700f82-aba3-417c-be1b-b1b37ad98543,0,1,6b9ce91e-08b9-4972-9878-1724c67b68ec,6b9ce91e-08b9-4972-9878-1724c67b68ec,0,1,640814f2-6082-475e-8006-25fd5b24afdb,640814f2-6082-475e-8006-25fd5b24afdb,0,1,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,0,1,f1b66ea8-262d-4b38-a039-b83a843f6ee8,f1b66ea8-262d-4b38-a039-b83a843f6ee8,0,1,bcae6e05-f1fd-413e-9eef-2e1cee42a962,bcae6e05-f1fd-413e-9eef-2e1cee42a962,0,1,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,0,1,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,778b4c8f-7a1e-4b4b-9f68-12cbf52bf195,0,1,91562fe8-e630-4bcb-a14e-c0e1e129141a,91562fe8-e630-4bcb-a14e-c0e1e129141a,0,1,c261abfd-3828-47b5-aa32-dfdd3a1636ad,c261abfd-3828-47b5-aa32-dfdd3a1636ad,0,1,e71f8f26-addf-4b12-a244-11610ed03bba,e71f8f26-addf-4b12-a244-11610ed03bba,0,1,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,e9aa6dab-0d96-42ce-9bd6-b8b10d755f8c,0,1,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,0,1,9155c95b-6afb-41bb-bd0b-d37e503fc163,9155c95b-6afb-41bb-bd0b-d37e503fc163,0,1,d917c19e-be15-41cc-9c8a-a97c8de85309,d917c19e-be15-41cc-9c8a-a97c8de85309,0,1,47907538-9357-4885-8b50-17f2e16c260f,47907538-9357-4885-8b50-17f2e16c260f,0,1,17e1840f-fef3-4f17-8476-273e6af24cb4,17e1840f-fef3-4f17-8476-273e6af24cb4,0,1,a64566fa-b706-49bc-8277-4531145c400e,a64566fa-b706-49bc-8277-4531145c400e,0,1,a8f32b13-249c-4ce6-a521-f06a87f2e670,a8f32b13-249c-4ce6-a521-f06a87f2e670,0,1,815775e4-cfb7-495b-87c4-d134b90d93d4,815775e4-cfb7-495b-87c4-d134b90d93d4,0,1,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,e867f2f1-0550-4d15-9e40-ba36c9aabfbd,0,1,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,8bdbb9ef-3a91-4374-b3c5-9447005bb1b7,0,1,7a27b378-89ac-4cad-8c69-a0cd14812d7e,7a27b378-89ac-4cad-8c69-a0cd14812d7e,0,1,d2433a11-8e1d-4e4c-966d-37cde6283f72,d2433a11-8e1d-4e4c-966d-37cde6283f72,0,1,59eb5919-3c33-48bf-b322-ec78018e4142,59eb5919-3c33-48bf-b322-ec78018e4142,0,1,63f308a5-b955-48a5-8052-50c5bede65d0,63f308a5-b955-48a5-8052-50c5bede65d0,0,1,1b614b97-5c1d-497a-9574-40114059f836,1b614b97-5c1d-497a-9574-40114059f836,0,1,477dfea4-e401-4cf0-b0a8-2df7c3836c58,477dfea4-e401-4cf0-b0a8-2df7c3836c58,0,1,294c000f-6979-4ed1-bbc7-7402facd9185,294c000f-6979-4ed1-bbc7-7402facd9185,0,1,db607fbc-f785-47d5-9550-577424aa3fe9,db607fbc-f785-47d5-9550-577424aa3fe9,0,1,b7111ddf-a623-4bae-90aa-636148492ca2,b7111ddf-a623-4bae-90aa-636148492ca2,0,1,905d9dcd-5793-4362-8fe8-2edce8c35e32,905d9dcd-5793-4362-8fe8-2edce8c35e32,0,1,a96cb6fd-54e0-4514-9210-7f4636acd336,a96cb6fd-54e0-4514-9210-7f4636acd336,0,1,3580e7a7-95d1-4a8e-bc12-a1449fe03757,3580e7a7-95d1-4a8e-bc12-a1449fe03757,0,1,13759790-6c70-4323-9321-a68b90c51663,13759790-6c70-4323-9321-a68b90c51663,0,1,d9704b20-c29c-4e7f-b777-0ac9080a5631,d9704b20-c29c-4e7f-b777-0ac9080a5631,0,1,c1372891-0f55-4868-ab97-906eff52be0e,c1372891-0f55-4868-ab97-906eff52be0e,0,1,33e96bda-1708-4ee4-8d4d-3b919bda3e38,33e96bda-1708-4ee4-8d4d-3b919bda3e38,0,1,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,0,1,93fcaa62-2a19-468b-9128-c7930583fbfd,93fcaa62-2a19-468b-9128-c7930583fbfd,0,1,2d885109-4c96-41c0-a996-785bfd793c2d,2d885109-4c96-41c0-a996-785bfd793c2d,0,1,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,0,1,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0,1,5148d263-de26-4c92-b090-ae59f42dfb05,5148d263-de26-4c92-b090-ae59f42dfb05,0,1,dbefe81f-85cf-4d84-9600-b359598c2543,dbefe81f-85cf-4d84-9600-b359598c2543,0,1,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1a624a06-93b8-4d1f-8c14-2061e1e7927c,0,1,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,0,1,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,0,1,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,0,1,d5967e0f-03cd-4190-a702-7e9290eae1eb,d5967e0f-03cd-4190-a702-7e9290eae1eb,0,1,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,0,1,8eb18de5-8283-4d0c-bb11-b882e78181d5,8eb18de5-8283-4d0c-bb11-b882e78181d5,0,1,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,0,1,7059b117-714c-4710-aebe-76f88c4d41d5,7059b117-714c-4710-aebe-76f88c4d41d5,0,1,ea050453-4947-40dc-aa2a-503ddd1a235a,ea050453-4947-40dc-aa2a-503ddd1a235a,0,1,37d0e6d4-702e-46f5-ae87-4d393fa0c701,37d0e6d4-702e-46f5-ae87-4d393fa0c701,0,1,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1e963c1e-f914-46e1-81d3-90d126fc6f8d,0,1,3a62d88e-9298-42c0-bd87-c749ecd01d19,3a62d88e-9298-42c0-bd87-c749ecd01d19,0,1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,0,1,fc13dd80-ce44-4ed1-a9d7-dae44602b954,fc13dd80-ce44-4ed1-a9d7-dae44602b954,0,1,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,0,1,433b23a1-a863-4775-b2f2-1384e8f3cbbb,433b23a1-a863-4775-b2f2-1384e8f3cbbb,0,1,a1677c47-b9a4-427a-972d-9bb2293445b6,a1677c47-b9a4-427a-972d-9bb2293445b6,0,1,e4a328c0-e73b-465d-ae36-38e5a71690fa,e4a328c0-e73b-465d-ae36-38e5a71690fa,0,1,bf66612b-aec4-414b-bee6-9bcab145c7cc,bf66612b-aec4-414b-bee6-9bcab145c7cc,0,1,811f356f-554a-4a63-90b6-dedb5fec7c05,811f356f-554a-4a63-90b6-dedb5fec7c05,0,1,85bebd81-a355-4010-889b-cff6f72dafcb,85bebd81-a355-4010-889b-cff6f72dafcb,0,1,49521f36-fd1b-47dd-81cc-48b6fb651e22,49521f36-fd1b-47dd-81cc-48b6fb651e22,0,1,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,0,1,bc946e21-53bb-4332-8c63-7b0aa78826eb,bc946e21-53bb-4332-8c63-7b0aa78826eb,0,1,4be2bdad-9a43-4593-acbc-a02e9144a89f,4be2bdad-9a43-4593-acbc-a02e9144a89f,0,1,64a86d5d-f925-45ee-82da-76df1cc20729,64a86d5d-f925-45ee-82da-76df1cc20729,0,1,eb4455f2-a5a0-44fb-8302-7312bc32df66,eb4455f2-a5a0-44fb-8302-7312bc32df66,0,1,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,0,1,9f20e59e-7db8-466f-b965-7045fc3f1489,9f20e59e-7db8-466f-b965-7045fc3f1489,0,1,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,0,1,89ac3d39-1915-4e67-a4e4-5a67a155cb75,89ac3d39-1915-4e67-a4e4-5a67a155cb75,0,1,d27b637d-5a51-49ff-bf73-343891534586,d27b637d-5a51-49ff-bf73-343891534586,0,1,b5a073a2-54e2-47c9-b533-f75fd2c9f343,b5a073a2-54e2-47c9-b533-f75fd2c9f343,0,1,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0,1,989b8ccd-bc05-48c1-9969-b3733028b65f,989b8ccd-bc05-48c1-9969-b3733028b65f,0,1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,0,1,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,0,1,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,0,1,83ae9b22-20ff-4e94-9282-19daf2274328,83ae9b22-20ff-4e94-9282-19daf2274328,0,1,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,0,1,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,0,1,a92b2b70-7e69-49d1-b921-c9d1b0718f94,a92b2b70-7e69-49d1-b921-c9d1b0718f94,0,1,d57a3300-0f9f-4fe5-b627-01c96b723053,d57a3300-0f9f-4fe5-b627-01c96b723053,0,1,19f690a3-d27b-43c1-94b7-585fc628da05,19f690a3-d27b-43c1-94b7-585fc628da05,0,1,d375fac5-098c-42b5-a0bd-9a4ae7516ada,d375fac5-098c-42b5-a0bd-9a4ae7516ada,0,1,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,0,1,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,ce65563d-03dc-46d8-96d4-c2d4ae2a2960,0,1,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,5079f17e-dfd6-43f4-83fa-6ac408e5bd3b,0,1,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,7a4346c3-f1aa-4ce0-886e-76cd9abf563c,0,1,cf783265-a4cb-436f-963a-1ff8220ae246,cf783265-a4cb-436f-963a-1ff8220ae246,0,1,3560f949-48f9-4fca-9fe2-81efc1ec0eee,3560f949-48f9-4fca-9fe2-81efc1ec0eee,0,1,662078f0-b75d-4c44-896f-7b7f74fd1ed4,662078f0-b75d-4c44-896f-7b7f74fd1ed4,0,1,207290c2-5221-48ad-99aa-bb0f7955df3f,207290c2-5221-48ad-99aa-bb0f7955df3f,0,1,162137ef-dea2-4ace-9e67-897dad0e7c3d,162137ef-dea2-4ace-9e67-897dad0e7c3d,0,1,d91a016e-cca9-4976-9c53-2c96fa95cf1a,d91a016e-cca9-4976-9c53-2c96fa95cf1a,0,1,012fb2f1-1c15-4800-8968-78a90c2a1348,012fb2f1-1c15-4800-8968-78a90c2a1348,0,1,a29a36aa-3c90-4be9-8ffc-20237721d1d0,a29a36aa-3c90-4be9-8ffc-20237721d1d0,0,1,aec8f9e6-d177-45f5-ba55-2d662428c2ae,aec8f9e6-d177-45f5-ba55-2d662428c2ae,0,1,b0bf8af5-d824-459c-bc40-17495406af3c,b0bf8af5-d824-459c-bc40-17495406af3c,0,1,7dfdd08b-7cd9-480c-829d-97f5e7152eec,7dfdd08b-7cd9-480c-829d-97f5e7152eec,0,1,64752b64-80ae-4537-986a-d61423dc546b,64752b64-80ae-4537-986a-d61423dc546b,0,1,2c37e123-ea35-4501-93e1-2fa295444bec,2c37e123-ea35-4501-93e1-2fa295444bec,0,1,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,c8bd3ac8-3b49-46bb-aadd-7270ad2868fc,0,1,a997a430-3ea8-4fde-9f53-7b507a04c215,a997a430-3ea8-4fde-9f53-7b507a04c215,0,1,f648e19d-026b-4fa7-8e70-1866b27b94f8,f648e19d-026b-4fa7-8e70-1866b27b94f8,0,1,d32081fc-47d3-4e66-837e-705c94ba8ca8,d32081fc-47d3-4e66-837e-705c94ba8ca8,0,1,69c207c2-7699-4467-b127-286ecd6d0f29,69c207c2-7699-4467-b127-286ecd6d0f29,0,1,e33df42d-4c64-4475-8294-6b05ecdb4e02,e33df42d-4c64-4475-8294-6b05ecdb4e02,0,1,6094a0ed-2051-4649-ad75-dfeb389d3cbb,6094a0ed-2051-4649-ad75-dfeb389d3cbb,0,1,6944a7e2-b9a1-492f-a6f2-9bf31d97ec78,6944a7e2-b9a1-492f-a6f2-9bf31d97ec78,0,1,f3750ea4-5f9e-4ab3-9495-3f182ecff407,f3750ea4-5f9e-4ab3-9495-3f182ecff407,0,1,14002d51-87d4-4647-92ef-a9b1935cb666,14002d51-87d4-4647-92ef-a9b1935cb666,0,1,e941a39d-1f3c-4e6e-af17-75f92a15dd40,e941a39d-1f3c-4e6e-af17-75f92a15dd40,0,1,d9bbedcb-4872-4183-83c2-6c2aae9634b0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,0,1,72c695c3-66f6-4aa8-8a39-737ec6967a1d,72c695c3-66f6-4aa8-8a39-737ec6967a1d,0,1,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,0,1,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,0,1,d5d11480-d5c7-4569-80c1-f872655ff084,d5d11480-d5c7-4569-80c1-f872655ff084,0,1,b1e45d36-08e9-430e-976b-03e6e3320c6a,b1e45d36-08e9-430e-976b-03e6e3320c6a,0,1,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,0,1,8e21374f-5a65-406c-856d-2040607da4bc,8e21374f-5a65-406c-856d-2040607da4bc,0,1,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,0,1,3e5f5167-8978-4191-b0f6-6a262b848b95,3e5f5167-8978-4191-b0f6-6a262b848b95,0,1,ae3aef9e-df3b-4ebc-912d-2bc581063745,ae3aef9e-df3b-4ebc-912d-2bc581063745,0,1,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,0,1,a8c09e65-6e10-4772-b264-6ead83d52fe3,a8c09e65-6e10-4772-b264-6ead83d52fe3,0,1,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,0,1,d5e1806b-9827-40ab-9cfa-23c22456d137,d5e1806b-9827-40ab-9cfa-23c22456d137,0,1,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,0,1,d24170d7-5477-4ec8-acd2-0de8bd2067d6,d24170d7-5477-4ec8-acd2-0de8bd2067d6,0,1,f047da82-7574-4da4-b54e-480195280a11,f047da82-7574-4da4-b54e-480195280a11,0,1,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,0,1,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,0,1,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,0,1,ecbe625a-55eb-437a-8dee-33fb034d4c0d,ecbe625a-55eb-437a-8dee-33fb034d4c0d,0,1,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,0,1,84796b00-79db-42ba-94d0-5bf543e09cd6,84796b00-79db-42ba-94d0-5bf543e09cd6,0,1,948b10b3-0d7c-4dca-8816-75eb86e7881b,948b10b3-0d7c-4dca-8816-75eb86e7881b,0,1,9de91b5a-98e4-414b-b650-b669b0159b49,9de91b5a-98e4-414b-b650-b669b0159b49,0,1,840dc727-288a-4bf2-8b1a-47629d28229c,840dc727-288a-4bf2-8b1a-47629d28229c,0,1,314ac8ca-8845-40c2-b844-91beb05fb601,314ac8ca-8845-40c2-b844-91beb05fb601,0,1,3de3948d-40ff-4e0d-8445-9bf49c916161,3de3948d-40ff-4e0d-8445-9bf49c916161,0,1,37ae1946-9436-47ef-8b8c-17ed0a24971c,37ae1946-9436-47ef-8b8c-17ed0a24971c,0,1,d844d861-fbe9-4391-89e3-00e505b33b33,d844d861-fbe9-4391-89e3-00e505b33b33,0,1,c0688817-fd73-4ead-b9dd-ec966780a2c2,c0688817-fd73-4ead-b9dd-ec966780a2c2,0,1,b1fbfbfe-766f-4018-9491-507748193808,b1fbfbfe-766f-4018-9491-507748193808,0,1,e55dfadb-8e12-4808-ad90-e891a4644548,e55dfadb-8e12-4808-ad90-e891a4644548,0,1,a792b3dc-ac80-492b-bd94-83eb0438ba9f,a792b3dc-ac80-492b-bd94-83eb0438ba9f,0,1,73a093ea-1927-483b-b6f5-8f0cbd253753,73a093ea-1927-483b-b6f5-8f0cbd253753,0,1,345f04c0-0274-4e79-b523-f1fa3cf0d92a,345f04c0-0274-4e79-b523-f1fa3cf0d92a,0,1,f3a14787-de1b-4b65-8cb1-bc33a785821c,f3a14787-de1b-4b65-8cb1-bc33a785821c,0,1,b9ba3ce3-9059-4135-9d31-725f01907431,b9ba3ce3-9059-4135-9d31-725f01907431,0,1,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,0,1,fc9fc58f-c888-41f0-9f57-70748b21706e,fc9fc58f-c888-41f0-9f57-70748b21706e,0,1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,0,1,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,0,1,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,0,1,33596560-3d45-4d3e-b6ec-1c22162110ad,33596560-3d45-4d3e-b6ec-1c22162110ad,0,1,d3e82a06-daae-4f4d-b3f8-45a406e31664,d3e82a06-daae-4f4d-b3f8-45a406e31664,0,1,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,0,1,ac6a184d-1247-4b54-a023-f0d16daa5fe9,ac6a184d-1247-4b54-a023-f0d16daa5fe9,0,1,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,0,1,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,0,1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,0,1,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,0,1,8bf73614-81a4-4702-88b9-3c6f2594d204,8bf73614-81a4-4702-88b9-3c6f2594d204,0,1,b8d4410b-f626-41b8-87c8-67102256bae2,b8d4410b-f626-41b8-87c8-67102256bae2,0,1,484eeb5f-12af-4139-a081-4dcac067a712,484eeb5f-12af-4139-a081-4dcac067a712,0,1,ec61075e-fbcb-494a-b790-81548a212d2b,ec61075e-fbcb-494a-b790-81548a212d2b,0,1,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,0,1,0c444045-302b-4dbd-a9a3-81fd40004948,0c444045-302b-4dbd-a9a3-81fd40004948,0,1,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,0,1,1528b799-1c0f-4244-85e8-e738b827934a,1528b799-1c0f-4244-85e8-e738b827934a,0,1,45d79e4d-8c2a-432b-abb8-fb9046abea40,45d79e4d-8c2a-432b-abb8-fb9046abea40,0,1,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,0,1,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,0,1,256618cc-0956-4cda-9691-e4ced68a791f,256618cc-0956-4cda-9691-e4ced68a791f,0,1,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,0,1,4b9771a7-b924-4e61-8468-4633e3c54706,4b9771a7-b924-4e61-8468-4633e3c54706,0,1,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,0,1,667de710-cee5-4a97-8434-641d199f3b68,667de710-cee5-4a97-8434-641d199f3b68,0,1,e9a2320b-71a1-4974-8b5a-1990062ec7df,e9a2320b-71a1-4974-8b5a-1990062ec7df,0,1,f6e85eeb-d81b-4526-9a33-ab77bd447236,f6e85eeb-d81b-4526-9a33-ab77bd447236,0,1,470e37fe-d149-4007-b397-12fc84f93041,470e37fe-d149-4007-b397-12fc84f93041,0,1,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,0,1,7175cfa0-885c-4807-98ec-af255dcd55d9,7175cfa0-885c-4807-98ec-af255dcd55d9,0,1,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,0,1,f5b66759-8102-4cba-a3fd-ee96db5bc809,f5b66759-8102-4cba-a3fd-ee96db5bc809,0,1,6c205eae-9113-46c1-a245-25d29173646e,6c205eae-9113-46c1-a245-25d29173646e,0,1,4cc4aa90-49fb-4602-9f9c-d4d47d223988,4cc4aa90-49fb-4602-9f9c-d4d47d223988,0,1,66ef1631-277b-4c22-99d7-1434b4dbbb3f,66ef1631-277b-4c22-99d7-1434b4dbbb3f,0,1,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,0,1,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,0,1,898535ff-50cd-464a-aadc-5e4f9de15b04,898535ff-50cd-464a-aadc-5e4f9de15b04,0,1,737f6f1b-9ffc-4916-b378-7321eab1f886,737f6f1b-9ffc-4916-b378-7321eab1f886,0,1,01dedf5b-2cce-4d24-81ea-2e3af82f5794,01dedf5b-2cce-4d24-81ea-2e3af82f5794,0,1,385e209d-65aa-43b1-8591-f92544882740,385e209d-65aa-43b1-8591-f92544882740,0,1,8381bc76-0e0f-4196-9911-ec05730cb1c9,8381bc76-0e0f-4196-9911-ec05730cb1c9,0,1,c224e520-7204-4f4a-aac9-b6221ea9ce44,c224e520-7204-4f4a-aac9-b6221ea9ce44,0,1,771a1900-46be-49fe-a02d-584780de8363,771a1900-46be-49fe-a02d-584780de8363,0,1,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,0,1,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,0,1,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,0,1,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,0,1,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,0,1,ef257b20-da10-4cda-8b9d-7de2d68a2f71,ef257b20-da10-4cda-8b9d-7de2d68a2f71,0,1,de0d41b7-acc0-4ebc-8933-d6b5ad351860,de0d41b7-acc0-4ebc-8933-d6b5ad351860,0,1,04013c34-8d59-4f87-b272-732d5a6dd675,04013c34-8d59-4f87-b272-732d5a6dd675,0,1,7fffceb9-8725-46ab-b797-ad7aa67f1075,7fffceb9-8725-46ab-b797-ad7aa67f1075,0,1,f9df9b6b-5051-46ef-bb1f-1974f41054a7,f9df9b6b-5051-46ef-bb1f-1974f41054a7,0,1,005b3f60-d740-4670-b522-8c352958889e,005b3f60-d740-4670-b522-8c352958889e,0,1,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,0,1,1a354069-07ea-40e0-bbac-e1b6232750c2,1a354069-07ea-40e0-bbac-e1b6232750c2,0,1,df31548b-0b8e-412b-999a-761970ae3c23,df31548b-0b8e-412b-999a-761970ae3c23,0,1,05135747-43e7-4b61-bc30-57b3289ea923,05135747-43e7-4b61-bc30-57b3289ea923,0,1,6d63728d-3384-4131-b890-1b82d14a04b7,6d63728d-3384-4131-b890-1b82d14a04b7,0,1,f4554046-493e-4960-94df-0a8b9d02f474,f4554046-493e-4960-94df-0a8b9d02f474,0,1,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,06abad33-2d69-4e8b-a16c-8aa0d4422d5a,0,1,9222a6c0-b785-4811-bfb6-44ac44a55925,9222a6c0-b785-4811-bfb6-44ac44a55925,0,1,ea84021d-2431-44ad-a446-f1fb979c9e96,ea84021d-2431-44ad-a446-f1fb979c9e96,0,1,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,d86acdeb-fa70-4d1c-bd0c-1b4ea30c03dd,0,1,6da034af-0481-4a3c-aff9-c50ced6f21d4,6da034af-0481-4a3c-aff9-c50ced6f21d4,0,1,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,0,1,d07016c8-7d97-42cd-865b-85b49075adfb,d07016c8-7d97-42cd-865b-85b49075adfb,0,1,9202335d-50bb-4282-9438-24c7fb9cf637,9202335d-50bb-4282-9438-24c7fb9cf637,0,1,a62906e5-27f8-4e72-8769-9a3eed6997d7,a62906e5-27f8-4e72-8769-9a3eed6997d7,0,1,6c5d0ac3-6086-434c-812b-1c1158ecc574,6c5d0ac3-6086-434c-812b-1c1158ecc574,0,1,783536d7-c0db-44c9-96e8-58b57804d7c8,783536d7-c0db-44c9-96e8-58b57804d7c8,0,1,a8295435-c2c4-4aff-874b-7412556aa76d,a8295435-c2c4-4aff-874b-7412556aa76d,0,1,f6c4e24b-172b-4ba3-8e3e-988306ade660,f6c4e24b-172b-4ba3-8e3e-988306ade660,0,1,9baab24c-a5a3-46f4-ad17-a28d4a49f851,9baab24c-a5a3-46f4-ad17-a28d4a49f851,0,1,d1952319-0e42-4684-a386-fbe7c24526c2,d1952319-0e42-4684-a386-fbe7c24526c2,0,1,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,0,1,83b47a9d-d44b-4c40-becd-df74f9cb2e91,83b47a9d-d44b-4c40-becd-df74f9cb2e91,0,1,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,0,1,86e2a2eb-160f-4e93-a449-b2f726286d1b,86e2a2eb-160f-4e93-a449-b2f726286d1b,0,1,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,0,1,364184c2-ec71-44be-b40c-ba719b4ab0e1,364184c2-ec71-44be-b40c-ba719b4ab0e1,0,1,7ef46c54-ec0c-4211-a750-e5949956b593,7ef46c54-ec0c-4211-a750-e5949956b593,0,1,04823681-875e-459a-b3cf-051c89527f38,04823681-875e-459a-b3cf-051c89527f38,0,1,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,0,1,38265f08-3301-40d1-b630-a319c983e826,38265f08-3301-40d1-b630-a319c983e826,0,1,5175c496-bac7-4c57-9628-793b727aecd0,5175c496-bac7-4c57-9628-793b727aecd0,0,1,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,0,1,fc42df4a-93f0-461f-acfe-fea09158030f,fc42df4a-93f0-461f-acfe-fea09158030f,0,1,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,0,1,6d002aef-00c9-4069-80df-153151218831,6d002aef-00c9-4069-80df-153151218831,0,1,4fec3a6c-5a99-4763-aa07-d5de8712559e,4fec3a6c-5a99-4763-aa07-d5de8712559e,0,1,968a1202-d271-43e0-bfd4-d38e49ceadd4,968a1202-d271-43e0-bfd4-d38e49ceadd4,0,1,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,0,1,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,0,1,ea61e442-273e-4ce4-a806-8090893729ba,ea61e442-273e-4ce4-a806-8090893729ba,0,1,e7100f2b-d169-4635-ab87-7a2225ff12ee,e7100f2b-d169-4635-ab87-7a2225ff12ee,0,1,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,0,1,4a2d2790-debf-4dc2-8216-878d8808d161,4a2d2790-debf-4dc2-8216-878d8808d161,0,1,836d0590-a8ee-40d0-a649-41cf4fae36a6,836d0590-a8ee-40d0-a649-41cf4fae36a6,0,1,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,0,1,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,0,1,eda3c675-04b7-4c14-b78a-0caa22843ac0,eda3c675-04b7-4c14-b78a-0caa22843ac0,0,1,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,0,1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,0,1,e5ddc65a-e886-4ed6-9598-bec30ddb7341,e5ddc65a-e886-4ed6-9598-bec30ddb7341,0,1,6cf48813-8097-44ae-8630-58f5b002ff31,6cf48813-8097-44ae-8630-58f5b002ff31,0,1,e0cee0ee-24b9-400a-95af-c61debec912b,e0cee0ee-24b9-400a-95af-c61debec912b,0,1,578bc873-5e23-4222-a655-7d653d761a4c,578bc873-5e23-4222-a655-7d653d761a4c,0,1,09bccd03-1492-4ebe-bfb4-8ace744d367f,09bccd03-1492-4ebe-bfb4-8ace744d367f,0,1,4d9294db-1abd-4e34-812f-fdcac0cf657d,4d9294db-1abd-4e34-812f-fdcac0cf657d,0,1,14bc3be4-3075-418d-90ec-be5d2686f875,14bc3be4-3075-418d-90ec-be5d2686f875,0,1,adffd81c-a566-4b4f-89d5-6abc705da36f,adffd81c-a566-4b4f-89d5-6abc705da36f,0,1,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,0,1,23ced9be-cb9d-451f-aea7-aa211054bd4d,23ced9be-cb9d-451f-aea7-aa211054bd4d,0,1,3991175c-0152-44c6-8e1c-4090d960050a,3991175c-0152-44c6-8e1c-4090d960050a,0,1,ea5767c3-4144-4d94-a666-3f6ac56a17ee,ea5767c3-4144-4d94-a666-3f6ac56a17ee,0,1,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,0,1,d1fabcdd-c072-4341-85d4-9a9ba168f301,d1fabcdd-c072-4341-85d4-9a9ba168f301,0,1,030a9c93-322b-4421-ad70-0acaa94870a2,030a9c93-322b-4421-ad70-0acaa94870a2,0,1,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,0,1,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,0,1,5c660f50-c63a-466d-bb32-de5699ad8a95,5c660f50-c63a-466d-bb32-de5699ad8a95,0,1,032587fa-2993-463c-af9f-bdd67f12604f,032587fa-2993-463c-af9f-bdd67f12604f,0,1,64d4aaed-e068-431b-bed0-faef7b5358f3,64d4aaed-e068-431b-bed0-faef7b5358f3,0,1,4507a92e-abb6-4329-88b2-3429bc694bc6,4507a92e-abb6-4329-88b2-3429bc694bc6,0,1,2694c1b4-536b-4187-adf6-0f8757aaae76,2694c1b4-536b-4187-adf6-0f8757aaae76,0,1,e523f88b-b3de-476e-a3cc-592970492dec,e523f88b-b3de-476e-a3cc-592970492dec,0,1,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,0e2107e2-8648-4b2e-9dfb-c23b1ff5b007,0,1,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,0,1,ea0843f4-60fb-4d44-abf4-0021867c636b,ea0843f4-60fb-4d44-abf4-0021867c636b,0,1,59aadc03-adbc-481f-89bc-d7f391789522,59aadc03-adbc-481f-89bc-d7f391789522,0,1,254f6ccd-0451-4231-91c9-4abe57b647be,254f6ccd-0451-4231-91c9-4abe57b647be,0,1,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,0,1,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0,1,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,0,1,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,0,1,7601fa7e-079a-4347-abea-e161b2d00783,7601fa7e-079a-4347-abea-e161b2d00783,0,1,ee84cb40-f82d-4558-91be-229d68ad9f4a,ee84cb40-f82d-4558-91be-229d68ad9f4a,0,1,101a7eff-9556-4165-879a-a7c8a852e236,101a7eff-9556-4165-879a-a7c8a852e236,0,1,01775932-3603-4efc-9235-abdb97490dea,01775932-3603-4efc-9235-abdb97490dea,0,1,7637844b-4059-4f8a-8436-b4f4e8cb4f74,7637844b-4059-4f8a-8436-b4f4e8cb4f74,0,1,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,0,1,0ee5b788-61dc-464b-86da-f985df7704b6,0ee5b788-61dc-464b-86da-f985df7704b6,0,1,2375c6a8-9799-4b7c-a48d-091a90c67693,2375c6a8-9799-4b7c-a48d-091a90c67693,0,1,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,0,1,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,0,1,63c6522f-be04-422a-b4f4-0f55f58b09a8,63c6522f-be04-422a-b4f4-0f55f58b09a8,0,1,be919dc1-a377-43e1-82e6-ce946cabdd55,be919dc1-a377-43e1-82e6-ce946cabdd55,0,1,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,0,1,9ded532e-9e60-4895-a4c5-4ea6697aa83c,9ded532e-9e60-4895-a4c5-4ea6697aa83c,0,1,106c5159-ffc7-4059-b3e3-acf74326a44f,106c5159-ffc7-4059-b3e3-acf74326a44f,0,1,d39fd717-1a69-4fd3-889e-4fa9abefea1c,d39fd717-1a69-4fd3-889e-4fa9abefea1c,0,1,5b85e6df-7493-4201-97ad-2aea14de6006,5b85e6df-7493-4201-97ad-2aea14de6006,0,1,061e6c0f-ba52-40ec-96ad-2eba3eee3097,061e6c0f-ba52-40ec-96ad-2eba3eee3097,0,1,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,0,1,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,0,1,4840753b-e2e1-4e67-b35f-2f5eab7754f5,4840753b-e2e1-4e67-b35f-2f5eab7754f5,0,1,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,0,1,6ffd9c17-d90b-4d19-b337-0fbc2c717557,6ffd9c17-d90b-4d19-b337-0fbc2c717557,0,1,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,0,1,3bb83275-7a0e-420f-8c6b-028038f11a8c,3bb83275-7a0e-420f-8c6b-028038f11a8c,0,1,e1950a23-f6e7-48af-b78a-77aa61f08ece,e1950a23-f6e7-48af-b78a-77aa61f08ece,0,1,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,0,1,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,0,1,5d726fa3-bde0-4d97-a577-415857bbb5c1,5d726fa3-bde0-4d97-a577-415857bbb5c1,0,1,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,0,1,49068231-202c-4ac6-a39a-69207cb597dd,49068231-202c-4ac6-a39a-69207cb597dd,0,1,5a470575-e012-42ad-9ad7-53930a8e843f,5a470575-e012-42ad-9ad7-53930a8e843f,0,1,5872d4ed-6503-422d-bcf9-63a8df3e777d,5872d4ed-6503-422d-bcf9-63a8df3e777d,0,1,e21cda29-2579-485e-a207-20b76f719c80,e21cda29-2579-485e-a207-20b76f719c80,0,1,1b232a57-2833-42c6-b318-38dae2af1ab2,1b232a57-2833-42c6-b318-38dae2af1ab2,0,1,007ade8c-b102-408b-b877-b531e046560b,007ade8c-b102-408b-b877-b531e046560b,0,1,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,0,1,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,0,1,eb69c41a-392d-43bb-9b67-a0adcb651b1e,eb69c41a-392d-43bb-9b67-a0adcb651b1e,0,1,93b01c88-48a2-4753-b443-0e9892395a8f,93b01c88-48a2-4753-b443-0e9892395a8f,0,1,0b7f8e05-bb34-47cc-9775-04362e814316,0b7f8e05-bb34-47cc-9775-04362e814316,0,1,e71e0297-3709-4247-933e-18a6350cbf39,e71e0297-3709-4247-933e-18a6350cbf39,0,1,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0,1,602dac6f-abe6-407a-92d3-7f1613e5dda6,602dac6f-abe6-407a-92d3-7f1613e5dda6,0,1,db03a88b-2804-45c2-9089-7ddb87ef2f18,db03a88b-2804-45c2-9089-7ddb87ef2f18,0,1,df6417d1-c722-4a87-a543-5d2c31795b20,df6417d1-c722-4a87-a543-5d2c31795b20,0,1,526a85c9-3a8d-4044-adb9-fd0689c70601,526a85c9-3a8d-4044-adb9-fd0689c70601,0,1,c4203772-580c-4db1-9bde-8925faa90688,c4203772-580c-4db1-9bde-8925faa90688,0,1,9ab0fe18-4dd7-4eed-958d-8537d4896d84,9ab0fe18-4dd7-4eed-958d-8537d4896d84,0,1,2278dc46-46ce-4d00-9289-4de1640782d7,2278dc46-46ce-4d00-9289-4de1640782d7,0,1,1f983a04-c2df-40bb-bee2-b326474d89f8,1f983a04-c2df-40bb-bee2-b326474d89f8,0,1,f03f1b68-e924-4c06-b0aa-8033a9a2f592,f03f1b68-e924-4c06-b0aa-8033a9a2f592,0,1,5e453d10-235d-4e53-86b1-20eed3247992,5e453d10-235d-4e53-86b1-20eed3247992,0,1,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0,1,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,0,1,738228ad-c30a-42f4-a6ad-bde0edba6266,738228ad-c30a-42f4-a6ad-bde0edba6266,0,1,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,0,1,df8e8344-d7bc-4cf2-b498-88d3abb66c09,df8e8344-d7bc-4cf2-b498-88d3abb66c09,0,1,e6d13536-3021-45b2-a8e1-bdb0e0be850c,e6d13536-3021-45b2-a8e1-bdb0e0be850c,0,1,b49f538c-b2b2-4a1f-a6b4-a911033b1666,b49f538c-b2b2-4a1f-a6b4-a911033b1666,0,1,794e952b-6b03-4a1e-ad3f-453376bccf45,794e952b-6b03-4a1e-ad3f-453376bccf45,0,1,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,0,1,5cd997ba-f123-47b3-8cde-fbba45a4a11c,5cd997ba-f123-47b3-8cde-fbba45a4a11c,0,1,0d746247-c4f4-47a5-a373-45ec4023d3ef,0d746247-c4f4-47a5-a373-45ec4023d3ef,0,1,a25bcf4e-1a47-472b-9f93-f6ab45abf461,a25bcf4e-1a47-472b-9f93-f6ab45abf461,0,1,958b7dab-0aba-423f-ab81-b70f2b93a027,958b7dab-0aba-423f-ab81-b70f2b93a027,0,1,a17ec3be-2255-42af-a6ee-d3fb8bb00519,a17ec3be-2255-42af-a6ee-d3fb8bb00519,0,1,add0b22d-ff5a-41f7-88a1-ef34880e50c9,add0b22d-ff5a-41f7-88a1-ef34880e50c9,0,1,4b714d9c-26f4-46e8-ac79-471522b3853b,4b714d9c-26f4-46e8-ac79-471522b3853b,0,1,411489de-f907-4d60-a776-64bb0aa12a0e,411489de-f907-4d60-a776-64bb0aa12a0e,0,1,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,0,1,9c47670e-9eb9-49ec-876c-cd545aaa093c,9c47670e-9eb9-49ec-876c-cd545aaa093c,0,1,f57e74e6-75e8-4136-911e-86793036a077,f57e74e6-75e8-4136-911e-86793036a077,0,1,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,0,1,3ba8c378-ef3d-4646-90b3-6d8078aa623e,3ba8c378-ef3d-4646-90b3-6d8078aa623e,0,1,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,b96b2e45-8fb3-4d48-ab53-d3bbf6ef0284,0,1,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,5ac38b5a-92e5-47eb-b956-24d9f010cb9f,0,1,2dd7eb87-8130-425a-be13-85235508cde6,2dd7eb87-8130-425a-be13-85235508cde6,0,1,8a62c997-4fda-4464-90bd-ab719161949f,8a62c997-4fda-4464-90bd-ab719161949f,0,1,28af52dd-3144-428b-956d-b6f27863ec4a,28af52dd-3144-428b-956d-b6f27863ec4a,0,1,c34c330a-991a-4ec9-a0ad-73c04c6a6fc3,c34c330a-991a-4ec9-a0ad-73c04c6a6fc3,0,1,8ac94328-2300-4681-9c35-fd7e2f830310,8ac94328-2300-4681-9c35-fd7e2f830310,0,1,da0ee165-1917-466b-ac5c-16c28e2318bb,da0ee165-1917-466b-ac5c-16c28e2318bb,0,1,4868cb2e-0892-42bc-9de1-73cb8a15a96f,4868cb2e-0892-42bc-9de1-73cb8a15a96f,0,1,e8b80879-33b3-4c45-ad68-1acabcf91faf,e8b80879-33b3-4c45-ad68-1acabcf91faf,0,1,239601eb-e8de-4d58-a32a-01ee52f6e698,239601eb-e8de-4d58-a32a-01ee52f6e698,0,1,11370667-bec5-4a2d-8aa1-97f4d795718f,11370667-bec5-4a2d-8aa1-97f4d795718f,0,1,2032162d-fbb5-4e6a-be72-cda79869b9ff,2032162d-fbb5-4e6a-be72-cda79869b9ff,0,1,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,0,1,10543f9a-4e3f-427a-b36a-9c66709dd6fb,10543f9a-4e3f-427a-b36a-9c66709dd6fb,0,1,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,0,1,96ab5424-7be1-416d-b74d-d0c815726b1f,96ab5424-7be1-416d-b74d-d0c815726b1f,0,1,3714e794-ddef-4ad9-a933-6130bbc84545,3714e794-ddef-4ad9-a933-6130bbc84545,0,1,282b089c-7411-40d6-9a0a-ceaf6abb5586,282b089c-7411-40d6-9a0a-ceaf6abb5586,0,1,678188aa-76e7-49bc-a4be-1c55ccd625b1,678188aa-76e7-49bc-a4be-1c55ccd625b1,0,1,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,0,1,b3415b4a-d8de-4536-aa4b-82e75fd986ee,b3415b4a-d8de-4536-aa4b-82e75fd986ee,0,1,acc996ab-672a-4602-b7ad-8eee83557e61,acc996ab-672a-4602-b7ad-8eee83557e61,0,1,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,0,1,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,0,1,97745768-ed35-44f1-beba-abb8b28a29ae,97745768-ed35-44f1-beba-abb8b28a29ae,0,1,69364942-bcd1-4b06-9b57-fa59b4e7c552,69364942-bcd1-4b06-9b57-fa59b4e7c552,0,1,ab201c5f-4134-42cf-a528-c1c4df02f2d7,ab201c5f-4134-42cf-a528-c1c4df02f2d7,0,1,303fb7b5-6a23-40ea-ae12-b54f4ebae026,303fb7b5-6a23-40ea-ae12-b54f4ebae026,0,1,634cd26b-78f1-4446-8aad-b96ed16e5329,634cd26b-78f1-4446-8aad-b96ed16e5329,0,1,d8e62f1a-92ca-4971-9609-e79da798c083,d8e62f1a-92ca-4971-9609-e79da798c083,0,1,61892a62-9381-401d-af31-9073ef2509fb,61892a62-9381-401d-af31-9073ef2509fb,0,1,6b0ddefa-ee70-4b27-989f-e23c734ab943,6b0ddefa-ee70-4b27-989f-e23c734ab943,0,1,ee873280-28ea-41fb-af52-c10c2018cbe4,ee873280-28ea-41fb-af52-c10c2018cbe4,0,1,a388ed70-a68d-4713-a280-881315351f07,a388ed70-a68d-4713-a280-881315351f07,0,1,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,0,1,2c81edc8-02b9-42dd-be4d-e7ad595421a0,2c81edc8-02b9-42dd-be4d-e7ad595421a0,0,1,83cb38ff-1174-449f-b8ce-44d5e064f2df,83cb38ff-1174-449f-b8ce-44d5e064f2df,0,1,d11b51ac-708a-4ee1-b73e-ae62e162101e,d11b51ac-708a-4ee1-b73e-ae62e162101e,0,1,17a50950-6091-4306-9f15-2a621a29c1a0,17a50950-6091-4306-9f15-2a621a29c1a0,0,1,32012b27-1b43-49be-b9af-df0c877e7a4c,32012b27-1b43-49be-b9af-df0c877e7a4c,0,1,e97d5152-9e58-4a91-a691-b4d358f1c89d,e97d5152-9e58-4a91-a691-b4d358f1c89d,0,1,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,0,1,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,0,1,296c478b-4103-46cb-9d14-97f59034ffd4,296c478b-4103-46cb-9d14-97f59034ffd4,0,1,fb918a68-f86d-46c0-9078-61d2b32b5aef,fb918a68-f86d-46c0-9078-61d2b32b5aef,0,1,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,0,1,1ddfc773-4f3c-4764-978e-585aab4666de,1ddfc773-4f3c-4764-978e-585aab4666de,0,1,e424d122-1dbb-4545-975c-177997129f2e,e424d122-1dbb-4545-975c-177997129f2e,0,1,c83bc626-dfdd-4451-92b0-b53eed40f534,c83bc626-dfdd-4451-92b0-b53eed40f534,0,1,7b9b1d11-4f78-4113-8fca-1a3a30953aef,7b9b1d11-4f78-4113-8fca-1a3a30953aef,0,1,7f84cb85-c3e4-4b53-b829-3b1e216f978a,7f84cb85-c3e4-4b53-b829-3b1e216f978a,0,1,7e621ecc-7d2b-42bf-a502-f8e59de56b63,7e621ecc-7d2b-42bf-a502-f8e59de56b63,0,1,798fd445-d02e-4e97-890a-0283f33317cf,798fd445-d02e-4e97-890a-0283f33317cf,0,1,095583ca-010d-43ad-8c7a-8938fa4cb761,095583ca-010d-43ad-8c7a-8938fa4cb761,0,1,178d210c-e847-4805-a8d4-31acdf4983af,178d210c-e847-4805-a8d4-31acdf4983af,0,1,aa214d9f-23b1-4996-8a43-9010dceeb53d,aa214d9f-23b1-4996-8a43-9010dceeb53d,0,1,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,0,1,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,0,1,d9d103bd-1dd6-48a9-8869-6c8485705393,d9d103bd-1dd6-48a9-8869-6c8485705393,0,1,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,0,1,ff0e8487-bdbf-4b21-877e-00008c81bc09,ff0e8487-bdbf-4b21-877e-00008c81bc09,0,1,39c9f8ac-56a0-4057-8359-7228bf97184a,39c9f8ac-56a0-4057-8359-7228bf97184a,0,1,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,0,1,2c0dd892-1d3e-4497-850b-080bdb9c59d8,2c0dd892-1d3e-4497-850b-080bdb9c59d8,0,1,3b727d49-c9ed-4d9e-af61-c13b9a170c75,3b727d49-c9ed-4d9e-af61-c13b9a170c75,0,1,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1b264744-bdcd-4c5c-932b-0ac4b990dd78,0,1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,0,1,37bde288-8e02-4127-bd80-de8ae7590a14,37bde288-8e02-4127-bd80-de8ae7590a14,0,1,a9b8e517-78cd-4428-b2fc-9e16af0069d7,a9b8e517-78cd-4428-b2fc-9e16af0069d7,0,1,5c592024-c009-4674-bbb8-283669e673ef,5c592024-c009-4674-bbb8-283669e673ef,0,1,e76f16b9-77a0-4033-90d0-6e04e4494747,e76f16b9-77a0-4033-90d0-6e04e4494747,0,1,cfb221fc-8639-4e15-9a78-f7837d657a99,cfb221fc-8639-4e15-9a78-f7837d657a99,0,1,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,0,1,022147c1-1ebe-4c8d-b367-4c47115b101d,022147c1-1ebe-4c8d-b367-4c47115b101d,0,1,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,0,1,fca6b230-a38e-4791-9cc5-3d215f79dc6f,fca6b230-a38e-4791-9cc5-3d215f79dc6f,0,1,04e87de4-940a-4533-8c81-8f145b201dc0,04e87de4-940a-4533-8c81-8f145b201dc0,0,1,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,0,1,fa488af9-a5ec-47d8-8661-fa5058a60a6b,fa488af9-a5ec-47d8-8661-fa5058a60a6b,0,1,97cc84c6-3565-474c-a028-83acb5390446,97cc84c6-3565-474c-a028-83acb5390446,0,1,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,0,1,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,0,1,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,0,1,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,0,1,b366d7eb-626c-4c0c-b4cc-c392763e6e94,b366d7eb-626c-4c0c-b4cc-c392763e6e94,0,1,4c7e24aa-726a-4595-82ad-ef1e525b14fa,4c7e24aa-726a-4595-82ad-ef1e525b14fa,0,1,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,0,1,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,0,1,e849e46c-2ce6-427b-92bc-06d7997f59bf,e849e46c-2ce6-427b-92bc-06d7997f59bf,0,1,5a971dc0-28bf-4426-9426-9f456aea080a,5a971dc0-28bf-4426-9426-9f456aea080a,0,1,aed2ceeb-cc0f-4bdc-bb94-2e15cd68aa96,aed2ceeb-cc0f-4bdc-bb94-2e15cd68aa96,0,1,04b5ae71-7fa4-4a64-b406-59dc603b80c5,04b5ae71-7fa4-4a64-b406-59dc603b80c5,0,1,f23a2023-f776-40db-8689-1fc3f7ebc482,f23a2023-f776-40db-8689-1fc3f7ebc482,0,1,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1e7684f0-1b3b-4a32-8602-dd0672c5a800,0,1,ab178a93-8570-43b6-ae42-f34a7cc4f359,ab178a93-8570-43b6-ae42-f34a7cc4f359,0,1,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,0,1,168e3189-2676-4cdb-bc9d-78d85df51faf,168e3189-2676-4cdb-bc9d-78d85df51faf,0,1,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,0,1,470bbff8-20d0-475c-a61a-1a09ac14c2db,470bbff8-20d0-475c-a61a-1a09ac14c2db,0,1,6ea25680-c4db-4717-9498-62420ca16970,6ea25680-c4db-4717-9498-62420ca16970,0,1,14e20d48-635e-4c52-9099-e743323fc190,14e20d48-635e-4c52-9099-e743323fc190,0,1,c37a660e-16c5-495e-9486-e61bcb693fa0,c37a660e-16c5-495e-9486-e61bcb693fa0,0,1,8f44ebad-1160-474e-a566-fb9da55ffcba,8f44ebad-1160-474e-a566-fb9da55ffcba,0,1,11cf336e-7890-4972-bf71-32d7416ff647,11cf336e-7890-4972-bf71-32d7416ff647,0,1,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,0,1,14bd3392-36cd-4ed0-8847-44375d6fb861,14bd3392-36cd-4ed0-8847-44375d6fb861,0,1,759ede7a-e832-44e6-9b11-5bfb3c507820,759ede7a-e832-44e6-9b11-5bfb3c507820,0,1,64484611-b32c-4155-a063-7df5a3f924dd,64484611-b32c-4155-a063-7df5a3f924dd,0,1,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,0,1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,0,1,56900066-90e3-40c0-b64a-8f7964a4dfc1,56900066-90e3-40c0-b64a-8f7964a4dfc1,0,1,56f0c4d6-9b13-486a-9586-05e657dca8be,56f0c4d6-9b13-486a-9586-05e657dca8be,0,1,c795c0d3-6a0d-4311-9821-df320663727e,c795c0d3-6a0d-4311-9821-df320663727e,0,1,512b8d89-8798-4549-9e79-b9c3f7d9098f,512b8d89-8798-4549-9e79-b9c3f7d9098f,0,1,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,0,1,7f356abf-9045-4a76-89f3-8b52d467122a,7f356abf-9045-4a76-89f3-8b52d467122a,0,1,625a61ac-4ad0-4b31-aa67-9f864154b9c4,625a61ac-4ad0-4b31-aa67-9f864154b9c4,0,1,51fa8d01-44a1-4e75-9b04-6a2504972f08,51fa8d01-44a1-4e75-9b04-6a2504972f08,0,1,73dae482-a1ee-4c57-8859-2dd8e8635a49,73dae482-a1ee-4c57-8859-2dd8e8635a49,0,1,e4ea640f-e3a4-44ad-b17d-51f32136372e,e4ea640f-e3a4-44ad-b17d-51f32136372e,0,1,7dca913d-e37a-4740-8e3d-677d379605ee,7dca913d-e37a-4740-8e3d-677d379605ee,0,1,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,0,1,5351a1ce-3cea-41fa-a03d-41cbc2effc66,5351a1ce-3cea-41fa-a03d-41cbc2effc66,0,1,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,0,1,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,0,1,4cd4694f-17f8-43ba-8940-07628bd937fe,4cd4694f-17f8-43ba-8940-07628bd937fe,0,1,7df6c94b-3cfe-4764-988e-858d733e35d9,7df6c94b-3cfe-4764-988e-858d733e35d9,0,1,8b251c7d-2d55-4734-a1da-7f1115d95080,8b251c7d-2d55-4734-a1da-7f1115d95080,0,1,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,0,1,5a8c3621-595a-4168-8bba-a7f8d499e47e,5a8c3621-595a-4168-8bba-a7f8d499e47e,0,1,fc4cfed6-e492-4420-b357-8143a8c2a41a,fc4cfed6-e492-4420-b357-8143a8c2a41a,0,1,4311a250-64af-443e-a711-93b7c41175cf,4311a250-64af-443e-a711-93b7c41175cf,0,1,804b6c57-1d7b-4927-be5b-84b7959fe55e,804b6c57-1d7b-4927-be5b-84b7959fe55e,0,1,f2655d85-79ea-4736-8f41-94a4f9b2b998,f2655d85-79ea-4736-8f41-94a4f9b2b998,0,1,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,0,1,a8eb5ed9-df99-405b-afad-eeaa98956eee,a8eb5ed9-df99-405b-afad-eeaa98956eee,0,1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,0,1,26a1279f-91f0-4632-ad7c-21cf2f524208,26a1279f-91f0-4632-ad7c-21cf2f524208,0,1,bf751ed0-ee47-4eaf-81bd-f0da00bef343,bf751ed0-ee47-4eaf-81bd-f0da00bef343,0,1,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,0,1,1f1def7c-e0ee-4963-afea-1751bf1b812c,1f1def7c-e0ee-4963-afea-1751bf1b812c,0,1,9a4c0898-ab56-425c-8191-5ab90f4e12bf,9a4c0898-ab56-425c-8191-5ab90f4e12bf,0,1,6841ec47-7a84-441a-b975-69d089072ce7,6841ec47-7a84-441a-b975-69d089072ce7,0,1,ead4001a-0d8a-4b95-8212-2a40e5aa6659,ead4001a-0d8a-4b95-8212-2a40e5aa6659,0,1,22165c8a-2179-4cd5-b195-bd2721e9e232,22165c8a-2179-4cd5-b195-bd2721e9e232,0,1,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,0,1,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,0,1,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,0,1,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,0,1,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,0,1,9d9debfd-4a10-4f09-9d09-2aa5e058b525,9d9debfd-4a10-4f09-9d09-2aa5e058b525,0,1,fc19586c-d89c-495c-b473-6f85967ed48e,fc19586c-d89c-495c-b473-6f85967ed48e,0,1,2ac7c701-a281-4e77-a5f8-294526021e2d,2ac7c701-a281-4e77-a5f8-294526021e2d,0,1,979df549-889d-496a-b6ce-c56d54c771b5,979df549-889d-496a-b6ce-c56d54c771b5,0,1,91b320d8-3426-44d3-97d7-c200287d7343,91b320d8-3426-44d3-97d7-c200287d7343,0,1,b9297f72-b40a-4adb-9975-bb693d4834a4,b9297f72-b40a-4adb-9975-bb693d4834a4,0,1,41cf3916-216f-4c4e-a587-82777f4263e0,41cf3916-216f-4c4e-a587-82777f4263e0,0,1,2ce3a350-86f1-4275-8299-3c3693ca11fa,2ce3a350-86f1-4275-8299-3c3693ca11fa,0,1,59f0ed15-c84c-4f41-bdd4-26317e4e914d,59f0ed15-c84c-4f41-bdd4-26317e4e914d,0,1,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,0,1,8fef790c-a3f4-460c-9093-5065cbdba196,8fef790c-a3f4-460c-9093-5065cbdba196,0,1,79bd24d0-61a9-4558-90ac-4e726066789c,79bd24d0-61a9-4558-90ac-4e726066789c,0,1,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,0,1,ef356548-51a4-4b09-b37d-ede5b8f3edb6,ef356548-51a4-4b09-b37d-ede5b8f3edb6,0,1,53c0d900-5e96-4381-a1ed-4424a5799608,53c0d900-5e96-4381-a1ed-4424a5799608,0,1,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,0,1,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,0,1,45ca9e20-1246-4400-a019-ffb521af6ea7,45ca9e20-1246-4400-a019-ffb521af6ea7,0,1,73eed854-5c3a-4a10-9bfa-793fd517f303,73eed854-5c3a-4a10-9bfa-793fd517f303,0,1,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,0,1,9134dc40-a8f1-4c60-9431-27cb98be5ecd,9134dc40-a8f1-4c60-9431-27cb98be5ecd,0,1,16c4622a-33af-4a95-b44e-0861a6df21d2,16c4622a-33af-4a95-b44e-0861a6df21d2,0,1,d8cac67b-cce2-4a00-a8df-c6570c50153f,d8cac67b-cce2-4a00-a8df-c6570c50153f,0,1,37213c65-bf26-4e50-a2fa-58eb45439b58,37213c65-bf26-4e50-a2fa-58eb45439b58,0,1,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,0,1,b6b31892-73ee-4c9b-92b0-2735536c4938,b6b31892-73ee-4c9b-92b0-2735536c4938,0,1,deb8b883-142e-47d0-a722-7c734a0cf9b3,deb8b883-142e-47d0-a722-7c734a0cf9b3,0,1,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,0,1,29233058-ccb1-4110-a9bc-cdb4c531f35a,29233058-ccb1-4110-a9bc-cdb4c531f35a,0,1,cf3729b2-9ee6-437c-81df-83966793be50,cf3729b2-9ee6-437c-81df-83966793be50,0,1,429d08b7-0b98-4f9b-a053-d04dd84a7026,429d08b7-0b98-4f9b-a053-d04dd84a7026,0,1,b64fd964-cee8-4619-872f-82d2fdc14240,b64fd964-cee8-4619-872f-82d2fdc14240,0,1,5ce7846d-9806-40f5-8631-4e14deb8bc95,5ce7846d-9806-40f5-8631-4e14deb8bc95,0,1,79528a0e-1e48-4d14-bd28-756fd5db57b9,79528a0e-1e48-4d14-bd28-756fd5db57b9,0,1,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,0,1,d9426219-4b37-4776-8d5d-acab5825e789,d9426219-4b37-4776-8d5d-acab5825e789,0,1,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,0,1,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,0,1,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,0,1,29e7299a-ce80-497a-8102-615d0a001ea8,29e7299a-ce80-497a-8102-615d0a001ea8,0,1,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,0,1,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,0,1,adc2cc11-b647-453f-a98e-8a73b7c368c7,adc2cc11-b647-453f-a98e-8a73b7c368c7,0,1,4522c564-61da-40da-a749-5312121a331d,4522c564-61da-40da-a749-5312121a331d,0,1,9394c709-6cbe-4ef6-bc8c-cba8af65821e,9394c709-6cbe-4ef6-bc8c-cba8af65821e,0,1,2943b572-7411-4f92-a6cc-7ee552b85223,2943b572-7411-4f92-a6cc-7ee552b85223,0,1,28478e7a-e8aa-40aa-866c-a3624f903141,28478e7a-e8aa-40aa-866c-a3624f903141,0,1,f692ab21-a8de-4feb-914f-4beef350543a,f692ab21-a8de-4feb-914f-4beef350543a,0,1,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0,1,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,0,1,dabb3395-6100-4f53-913d-e0230e81b494,dabb3395-6100-4f53-913d-e0230e81b494,0,1,e0a3fae1-1582-4c7a-acd8-870b558acec4,e0a3fae1-1582-4c7a-acd8-870b558acec4,0,1,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,0,1,02e1c293-7302-4751-a248-4bbeed9cbad5,02e1c293-7302-4751-a248-4bbeed9cbad5,0,1,c946cde8-c0d7-4acb-a3be-8858e392fc40,c946cde8-c0d7-4acb-a3be-8858e392fc40,0,1,3a111e0d-6466-46fd-95a2-1798b6e51ba0,3a111e0d-6466-46fd-95a2-1798b6e51ba0,0,1,645edcb0-e358-4d32-a9a9-9534af0398ca,645edcb0-e358-4d32-a9a9-9534af0398ca,0,1,efa1b4e5-d16c-4921-a48a-fe700e39dc71,efa1b4e5-d16c-4921-a48a-fe700e39dc71,0,1,e93402db-e7dd-465e-8c62-2a41efd811b8,e93402db-e7dd-465e-8c62-2a41efd811b8,0,1,e0157f72-a362-4b9f-a272-68ca8078b91c,e0157f72-a362-4b9f-a272-68ca8078b91c,0,1,422155c7-1640-48c4-bb21-36595b405c66,422155c7-1640-48c4-bb21-36595b405c66,0,1,16d37b5a-88db-4787-b2de-fb50da0ca94b,16d37b5a-88db-4787-b2de-fb50da0ca94b,0,1,f653bcbf-5659-4605-9bb9-3737f19e79dd,f653bcbf-5659-4605-9bb9-3737f19e79dd,0,1,8b980868-fe63-49ff-ba3d-4c29732e1b90,8b980868-fe63-49ff-ba3d-4c29732e1b90,0,1,54668731-4963-4ec3-b188-9feacaefa182,54668731-4963-4ec3-b188-9feacaefa182,0,1,3702135e-5380-4ca6-82f5-63eff1b043e9,3702135e-5380-4ca6-82f5-63eff1b043e9,0,1,29b2104b-fd02-4d51-951f-51ea213b8ebd,29b2104b-fd02-4d51-951f-51ea213b8ebd,0,1,ba5c945e-554f-45a2-a2de-3157b2d7e931,ba5c945e-554f-45a2-a2de-3157b2d7e931,0,1,f7085f33-f122-4443-a3f5-4e765300175e,f7085f33-f122-4443-a3f5-4e765300175e,0,1,b7e4c512-b856-4679-a025-5f0f28918593,b7e4c512-b856-4679-a025-5f0f28918593,0,1,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,0,1,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,0,1,a9362ac4-85ee-4214-80c1-048fab769885,a9362ac4-85ee-4214-80c1-048fab769885,0,1,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,0,1,241db5c5-e3bc-4db8-bc88-39db84bb60e9,241db5c5-e3bc-4db8-bc88-39db84bb60e9,0,1,9c7b4c11-5ccc-4659-bde9-bf8b7a91793a,9c7b4c11-5ccc-4659-bde9-bf8b7a91793a,0,1,314a9258-5216-405f-8dda-f27d6a167f33,314a9258-5216-405f-8dda-f27d6a167f33,0,1,20f1114a-0b98-464f-aed8-80ce706b808e,20f1114a-0b98-464f-aed8-80ce706b808e,0,1,73a54072-1f14-4835-9615-f4c6df116c7f,73a54072-1f14-4835-9615-f4c6df116c7f,0,1,00359e00-aba0-4afb-8b58-2e1247dbe04f,00359e00-aba0-4afb-8b58-2e1247dbe04f,0,1,fc959221-6313-45d9-b2c4-85befaede226,fc959221-6313-45d9-b2c4-85befaede226,0,1,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,0,1,5206d407-ac91-477e-80e7-97c312da934c,5206d407-ac91-477e-80e7-97c312da934c,0,1,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,0,1,ccb8a530-260a-4488-b1d9-c67325c69bf4,ccb8a530-260a-4488-b1d9-c67325c69bf4,0,1,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0,1,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,0,1,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,0,1,81dd61e5-fe02-4272-a525-affda9b606ca,81dd61e5-fe02-4272-a525-affda9b606ca,0,1,8de7b423-b7d1-46fe-b1dc-fb936736b864,8de7b423-b7d1-46fe-b1dc-fb936736b864,0,1,f565876c-0326-4b12-895e-c248b9e64115,f565876c-0326-4b12-895e-c248b9e64115,0,1,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,0,1,88cefe4a-a6c5-4753-935e-f956d9de9f77,88cefe4a-a6c5-4753-935e-f956d9de9f77,0,1,882e78b7-90bd-4b95-8852-146bdb51ec15,882e78b7-90bd-4b95-8852-146bdb51ec15,0,1,ae4435c3-62c0-4f08-b526-7f9571eed8ae,ae4435c3-62c0-4f08-b526-7f9571eed8ae,0,1,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0,1,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,0,1,80c23bf0-cef0-4d07-a017-d90635f8041d,80c23bf0-cef0-4d07-a017-d90635f8041d,0,1,47a24216-3299-470b-a18c-d8c1258fff24,47a24216-3299-470b-a18c-d8c1258fff24,0,1,72dcfd46-491e-4f88-a0ea-57919f8fbdea,72dcfd46-491e-4f88-a0ea-57919f8fbdea,0,1,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,0,1,8317ac49-890d-4921-8c0d-1bfc676f0b40,8317ac49-890d-4921-8c0d-1bfc676f0b40,0,1,d41f0e3d-f86c-4913-ac44-2f7d823afbb0,d41f0e3d-f86c-4913-ac44-2f7d823afbb0,0,1,f9161bc3-9a1c-4870-8681-8e97d8ce838a,f9161bc3-9a1c-4870-8681-8e97d8ce838a,0,1,a75ed1c8-20c2-49a8-a730-22237ef91366,a75ed1c8-20c2-49a8-a730-22237ef91366,0,1,1c0ebdfd-1913-48fe-b80a-10c30201129b,1c0ebdfd-1913-48fe-b80a-10c30201129b,0,1,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,0,1,14025e38-09af-43b2-a49b-403e398a28ea,14025e38-09af-43b2-a49b-403e398a28ea,0,1,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,0,1,c3b3805b-3501-47a7-b280-46180049b235,c3b3805b-3501-47a7-b280-46180049b235,0,1,29af05c2-37de-495b-b3cf-477d452abe5e,29af05c2-37de-495b-b3cf-477d452abe5e,0,1,0c732569-a50f-4be3-a214-0843c6a3da47,0c732569-a50f-4be3-a214-0843c6a3da47,0,1,5e922083-0ceb-449a-8201-7dd27a46f2fc,5e922083-0ceb-449a-8201-7dd27a46f2fc,0,1,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,0,1,e757303e-c61a-4e42-9829-c5a36dba9414,e757303e-c61a-4e42-9829-c5a36dba9414,0,1,091de87c-0801-4bd3-aaaa-ed37bc4cd161,091de87c-0801-4bd3-aaaa-ed37bc4cd161,0,1,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,9a6bfcbe-6ac7-4839-bfb9-a11b97e64185,0,1,b53c545c-3b1c-4315-a213-4f2b2c7128aa,b53c545c-3b1c-4315-a213-4f2b2c7128aa,0,1,02a84df9-2171-43e6-8135-a74edd384826,02a84df9-2171-43e6-8135-a74edd384826,0,1,ff36356d-cb1d-4316-896a-c6ae83b92437,ff36356d-cb1d-4316-896a-c6ae83b92437,0,1,465cce6a-7064-4b0a-932c-40f842042f33,465cce6a-7064-4b0a-932c-40f842042f33,0,1,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,f9cd82e7-8252-4bb6-8e08-23ab45ed3976,0,1,8f17ec3f-6d62-46b8-baef-b20430e948ce,8f17ec3f-6d62-46b8-baef-b20430e948ce,0,1,ea1298d0-9396-4a50-b83e-24064e8dd99d,ea1298d0-9396-4a50-b83e-24064e8dd99d,0,1,038dbb00-e4c6-4e64-b861-3a0764f54ab3,038dbb00-e4c6-4e64-b861-3a0764f54ab3,0,1,1c291f7d-a493-4297-8aaa-912896800066,1c291f7d-a493-4297-8aaa-912896800066,0,1,69149801-a825-4ed2-b077-c26660dff271,69149801-a825-4ed2-b077-c26660dff271,0,1,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,0,1,518ab687-b84a-40c8-8547-aee4257c1b71,518ab687-b84a-40c8-8547-aee4257c1b71,0,1,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,0,1,7732ef07-16eb-46a0-9645-7de95c5482af,7732ef07-16eb-46a0-9645-7de95c5482af,0,1,75dac536-b316-4b04-a57b-03656c678bec,75dac536-b316-4b04-a57b-03656c678bec,0,1,a07d6c85-159d-4d09-b117-561a1e20329f,a07d6c85-159d-4d09-b117-561a1e20329f,0,1,8a2f9733-4f83-41f2-9d74-dca7161a4b41,8a2f9733-4f83-41f2-9d74-dca7161a4b41,0,1,fbd2d900-1e0d-48f3-9793-0186ee49915c,fbd2d900-1e0d-48f3-9793-0186ee49915c,0,1,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,0,1,3a36e0f5-a645-47f1-99ae-5b0493d604ad,3a36e0f5-a645-47f1-99ae-5b0493d604ad,0,1,57f762f7-b8e4-498b-a3dc-3d40c94855ec,57f762f7-b8e4-498b-a3dc-3d40c94855ec,0,1,ca7d4086-de35-40fd-af65-73369d452135,ca7d4086-de35-40fd-af65-73369d452135,0,1,563c0f5c-e0b4-4229-a3f6-183091060aa4,563c0f5c-e0b4-4229-a3f6-183091060aa4,0,1,bf967588-ea8f-49a3-9331-af2331ffa162,bf967588-ea8f-49a3-9331-af2331ffa162,0,1,5083530c-9a24-4def-99c1-6eb9514e9b33,5083530c-9a24-4def-99c1-6eb9514e9b33,0,1,d59c2725-5d98-495e-9f86-f5d38dbfad90,d59c2725-5d98-495e-9f86-f5d38dbfad90,0,1,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,0,1,0ba68198-983d-409b-be27-96f1572b3f12,0ba68198-983d-409b-be27-96f1572b3f12,0,1,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,0,1,decb27a8-7dd3-4601-a694-30429e638b39,decb27a8-7dd3-4601-a694-30429e638b39,0,1,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,0,1,d7a128e4-f31f-4b09-8424-e816ab59d5c3,d7a128e4-f31f-4b09-8424-e816ab59d5c3,0,1,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0,1,aa9513b4-f575-4030-a7f9-ac09aa319e98,aa9513b4-f575-4030-a7f9-ac09aa319e98,0,1,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,0,1,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,0,1,d03f66b1-48a3-434b-bb58-9fd53c183514,d03f66b1-48a3-434b-bb58-9fd53c183514,0,1,a469e55e-d7ca-4c27-b350-fafe7364c18f,a469e55e-d7ca-4c27-b350-fafe7364c18f,0,1,3ad5d8a7-3071-46aa-aebf-306bdb67983b,3ad5d8a7-3071-46aa-aebf-306bdb67983b,0,1,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,0,1,cb954476-c551-4a06-9bcd-18d67ba47dc8,cb954476-c551-4a06-9bcd-18d67ba47dc8,0,1,79201015-bfae-463e-81f1-0ae2d3066f3f,79201015-bfae-463e-81f1-0ae2d3066f3f,0,1,1ea3178b-73dd-4063-9140-c61687a4b1b8,1ea3178b-73dd-4063-9140-c61687a4b1b8,0,1,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,0,1,696723be-7b4f-4321-956e-eff07ea9f5fa,696723be-7b4f-4321-956e-eff07ea9f5fa,0,1,616c27dc-5c59-4469-97a7-27e0752bd3a7,616c27dc-5c59-4469-97a7-27e0752bd3a7,0,1,f7323121-74bc-441c-a3e9-dd5cb4f0accd,f7323121-74bc-441c-a3e9-dd5cb4f0accd,0,1,bb264e83-49f4-4b7a-8be2-094712fc0640,bb264e83-49f4-4b7a-8be2-094712fc0640,0,1,07bf650d-e61e-44f3-9643-6ffc95b913fb,07bf650d-e61e-44f3-9643-6ffc95b913fb,0,1,6b90ed05-813c-4324-8a69-02c2268856b2,6b90ed05-813c-4324-8a69-02c2268856b2,0,1,081ed48d-cb87-459d-97d6-9af121edbabb,081ed48d-cb87-459d-97d6-9af121edbabb,0,1,6c4074b2-f631-451d-b412-1c8c096a71b1,6c4074b2-f631-451d-b412-1c8c096a71b1,0,1,f9931a20-8391-4b13-8c6d-1836f2492e53,f9931a20-8391-4b13-8c6d-1836f2492e53,0,1,c6eec20b-13b9-44a0-968f-1325680c399b,c6eec20b-13b9-44a0-968f-1325680c399b,0,1,02fbf083-1bdd-4900-9dc1-62f415b792a4,02fbf083-1bdd-4900-9dc1-62f415b792a4,0,1,35454c2d-7088-487b-abb3-f95f2dfdcffa,35454c2d-7088-487b-abb3-f95f2dfdcffa,0,1,66b010d9-5294-4dd8-b69f-709e1410c105,66b010d9-5294-4dd8-b69f-709e1410c105,0,1,f922bcdb-bf1a-4381-a26a-15669deb15a2,f922bcdb-bf1a-4381-a26a-15669deb15a2,0,1,f641e65b-0580-4791-a642-95bdc8eb7c1a,f641e65b-0580-4791-a642-95bdc8eb7c1a,0,1,a480b235-eb2c-4f28-8c9d-a6d1455718d8,a480b235-eb2c-4f28-8c9d-a6d1455718d8,0,1,dc75882d-35bf-401e-92a1-3f0472d1af4f,dc75882d-35bf-401e-92a1-3f0472d1af4f,0,1,9e7dcb6e-7343-47aa-9757-d270aaa590b7,9e7dcb6e-7343-47aa-9757-d270aaa590b7,0,1,156c081f-4fbc-44e2-9f3b-df00393ee30f,156c081f-4fbc-44e2-9f3b-df00393ee30f,0,1,eaedc462-13ae-42c6-a76f-6529881894dd,eaedc462-13ae-42c6-a76f-6529881894dd,0,1,e00b724c-ab0f-4d37-9f02-05d22116b324,e00b724c-ab0f-4d37-9f02-05d22116b324,0,1,2fb5460d-c175-4650-9b00-a8af8ec47487,2fb5460d-c175-4650-9b00-a8af8ec47487,0,1,f5bc219e-dbc6-483e-9c33-ca84e556f459,f5bc219e-dbc6-483e-9c33-ca84e556f459,0,1,6bca52bc-8c91-43a9-9381-91b782972640,6bca52bc-8c91-43a9-9381-91b782972640,0,1,3eed74ae-d661-467f-a300-80cfa43b6056,3eed74ae-d661-467f-a300-80cfa43b6056,0,1,84aff2b4-233e-467e-bc00-0c4c745a5d5a,84aff2b4-233e-467e-bc00-0c4c745a5d5a,0,1,5238ef5b-f8cb-4387-b49f-6c46fa14e17f,5238ef5b-f8cb-4387-b49f-6c46fa14e17f,0,1,65dc6c73-94b1-408d-9c5b-82300a6ca1e4,65dc6c73-94b1-408d-9c5b-82300a6ca1e4,0,1,e5db7d04-bec6-4bee-b4d4-d1dadf8114f7,e5db7d04-bec6-4bee-b4d4-d1dadf8114f7,0,1,a478c330-5fe6-4a3a-bc7e-b126169b9301,a478c330-5fe6-4a3a-bc7e-b126169b9301,0,1,837c0e19-fe2b-4640-9506-ff36f9d77510,837c0e19-fe2b-4640-9506-ff36f9d77510,0,1,4c7ebacf-90bd-4749-aa26-02965451bf70,4c7ebacf-90bd-4749-aa26-02965451bf70,0,1,96fe619a-b819-4f96-9788-e1f4ef57833a,96fe619a-b819-4f96-9788-e1f4ef57833a,0,1,94dff2da-f721-411a-9fc0-5d013b685dcc,94dff2da-f721-411a-9fc0-5d013b685dcc,0,1,9343fc5f-7b08-4be5-8cd5-dbed635b819d,9343fc5f-7b08-4be5-8cd5-dbed635b819d,0,1,99e87e66-1b07-451b-a476-f5213cbd7150,99e87e66-1b07-451b-a476-f5213cbd7150,0,1,c3317f75-f6ad-41f6-97f1-77074c3ff62a,c3317f75-f6ad-41f6-97f1-77074c3ff62a,0,1,8800dec9-84f8-4643-8742-1d76fe575f58,8800dec9-84f8-4643-8742-1d76fe575f58,0,1,62903794-3b41-4d21-b800-1c26dbeda3ce,62903794-3b41-4d21-b800-1c26dbeda3ce,0,1,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,9bda4a0b-e8a7-4acf-9f07-4033b3a84ebc,0,1,93de88de-0069-4aa8-96b2-d5709e4def2f,93de88de-0069-4aa8-96b2-d5709e4def2f,0,1,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,9f94fadf-ac9d-4e57-9fe4-41ce8cfbec6a,0,1,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,12d4ffc8-592e-42a7-b8c6-20bd58f6da90,0,1,3a8d9010-8785-4d8d-b908-b821d7d681c9,3a8d9010-8785-4d8d-b908-b821d7d681c9,0,1,2568a935-ea49-4b99-aa9c-de27de6a0e81,2568a935-ea49-4b99-aa9c-de27de6a0e81,0,1,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,0,1,df459525-4e4d-4819-b996-5a6379b22a88,df459525-4e4d-4819-b996-5a6379b22a88,0,1,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,0,1,e67b4a32-4bac-450e-be6d-88c262383f31,e67b4a32-4bac-450e-be6d-88c262383f31,0,1,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,0,1,6c4c3eca-8b02-451b-af52-93073c3da146,6c4c3eca-8b02-451b-af52-93073c3da146,0,1,095c281c-3903-465d-baea-af1e6abf8019,095c281c-3903-465d-baea-af1e6abf8019,0,1,440d115d-a769-427e-891a-88d65fba2057,440d115d-a769-427e-891a-88d65fba2057,0,1,f7932210-027e-4fad-b7f7-3530789ce803,f7932210-027e-4fad-b7f7-3530789ce803,0,1,7bbfd95e-39a1-485b-930f-c9210c18dcd0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,0,1,4975d3d6-b5a2-41c6-973b-6817013a388d,4975d3d6-b5a2-41c6-973b-6817013a388d,0,1,18ebc799-9724-4ffb-855e-b09a0723869e,18ebc799-9724-4ffb-855e-b09a0723869e,0,1,a06b8ef5-83e6-4fc6-91e1-256004134d69,a06b8ef5-83e6-4fc6-91e1-256004134d69,0,1,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1d6a68ec-917f-4c3b-b970-797a6921cbc9,0,1,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,0,1,5b663988-3599-46dc-8d59-4c82ceac537c,5b663988-3599-46dc-8d59-4c82ceac537c,0,1,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0,1,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,0,1,679cc0df-df5c-4c33-8c64-c0b6cee39116,679cc0df-df5c-4c33-8c64-c0b6cee39116,0,1,b156752b-f25c-4f35-9474-8ac3636597f5,b156752b-f25c-4f35-9474-8ac3636597f5,0,1,17aadd5f-cda2-4785-a07f-3ab4b04434a6,17aadd5f-cda2-4785-a07f-3ab4b04434a6,0,1,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,0,1,1832336e-32f6-42c4-9087-8614ead52bb3,1832336e-32f6-42c4-9087-8614ead52bb3,0,1,ff9f7b5c-70f4-4eed-8216-64448e7da76f,ff9f7b5c-70f4-4eed-8216-64448e7da76f,0,1,44ac2869-990d-4cac-a14b-c1a28854341e,44ac2869-990d-4cac-a14b-c1a28854341e,0,1,d5df31c3-89f9-469c-80a9-fb4706d30bc4,d5df31c3-89f9-469c-80a9-fb4706d30bc4,0,1,e73a6a9d-8ddd-4531-9f17-745117d9da9b,e73a6a9d-8ddd-4531-9f17-745117d9da9b,0,1,9dd4e17c-d10b-435e-8665-08997edc3e7e,9dd4e17c-d10b-435e-8665-08997edc3e7e,0,1,cafd44e1-8509-4550-8329-ff8cab0c31ae,cafd44e1-8509-4550-8329-ff8cab0c31ae,0,1,ee6e5e56-5848-46b6-89bf-b9345a57d94c,ee6e5e56-5848-46b6-89bf-b9345a57d94c,0,1,8817c872-bdee-4577-bcc3-4046edc72803,8817c872-bdee-4577-bcc3-4046edc72803,0,1,5b88c214-4e4e-45c2-b8c5-14eb852e9900,5b88c214-4e4e-45c2-b8c5-14eb852e9900,0,1,105cd740-1f60-45e1-871c-adeecd291b0d,105cd740-1f60-45e1-871c-adeecd291b0d,0,1,95aec7d2-179b-4ea3-a3df-3d737b713564,95aec7d2-179b-4ea3-a3df-3d737b713564,0,1,4bd1cae4-d5b5-444e-9cf5-67a969714293,4bd1cae4-d5b5-444e-9cf5-67a969714293,0,1,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,0,1,f279a625-b88f-43b4-bce9-de1186fe7d7e,f279a625-b88f-43b4-bce9-de1186fe7d7e,0,1,99fc224a-2a61-441a-85e9-d69df6aa8b5e,99fc224a-2a61-441a-85e9-d69df6aa8b5e,0,1,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,0,1,d009782b-d73e-42d1-9979-2cbaf20ee98e,d009782b-d73e-42d1-9979-2cbaf20ee98e,0,1,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,0,1,88d8edf7-654f-4627-b68d-c7e929726da6,88d8edf7-654f-4627-b68d-c7e929726da6,0,1,1725c619-9c4a-40ac-9044-00fee71945a4,1725c619-9c4a-40ac-9044-00fee71945a4,0,1,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,45a85e25-7c33-4ff5-87a0-2a0b4cda8130,0,1,e95b126d-797d-4071-b7b4-b14aaf595f2d,e95b126d-797d-4071-b7b4-b14aaf595f2d,0,1,9241ea3c-633f-4469-9e70-c5a20e464da8,9241ea3c-633f-4469-9e70-c5a20e464da8,0,1,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,bbadbe1b-cb33-4cc5-84c8-a4fdfc8a2247,0,1,961ae0fb-7f7b-414d-8fbf-32b893b41085,961ae0fb-7f7b-414d-8fbf-32b893b41085,0,1,10adf8c8-6f5f-477f-b244-4452b774b766,10adf8c8-6f5f-477f-b244-4452b774b766,0,1,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,ac9dcb8c-d4f5-4f0d-affb-e4187eafdf14,0,1,04ec5e44-8469-4e9c-8021-83d258f2ec54,04ec5e44-8469-4e9c-8021-83d258f2ec54,0,1,cff36ede-0bd1-424b-8c75-b9695133f32e,cff36ede-0bd1-424b-8c75-b9695133f32e,0,1,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,9d872d99-eac7-43ee-8ce2-c9d31a76bd75,0,1,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,0,1,58b33683-1916-4aef-9b98-5569ef7782ed,58b33683-1916-4aef-9b98-5569ef7782ed,0,1,d3e1f622-f438-4cad-94ae-0272f51610f7,d3e1f622-f438-4cad-94ae-0272f51610f7,0,1,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,0,1,8569cd73-d40d-4d92-83e0-8ece0c03a86a,8569cd73-d40d-4d92-83e0-8ece0c03a86a,0,1,9ebe2809-be6b-4c91-9443-b237fb7ad43c,9ebe2809-be6b-4c91-9443-b237fb7ad43c,0,1,bf29c091-de15-4cd4-be0e-a9785f97d444,bf29c091-de15-4cd4-be0e-a9785f97d444,0,1,6a675752-fd31-46a5-8a62-2a1ede437c68,6a675752-fd31-46a5-8a62-2a1ede437c68,0,1,97a65f49-845f-4eed-ae81-61266ed3e05b,97a65f49-845f-4eed-ae81-61266ed3e05b,0,1,060b2bb4-ca03-4da9-930f-7f91f6299a35,060b2bb4-ca03-4da9-930f-7f91f6299a35,0,1,394b1a1c-a7ae-41b7-a346-4bac99fa567d,394b1a1c-a7ae-41b7-a346-4bac99fa567d,0,1,9a5fa511-59e8-4a1b-a101-f276f0b7b261,9a5fa511-59e8-4a1b-a101-f276f0b7b261,0,1,ccfe4e36-80b6-419f-8bb3-c1046203d023,ccfe4e36-80b6-419f-8bb3-c1046203d023,0,1,94b2e060-53b7-4b40-af05-30bea3520330,94b2e060-53b7-4b40-af05-30bea3520330,0,1,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0,1,41b0dabd-85a3-4819-84dd-371eaf4f996e,41b0dabd-85a3-4819-84dd-371eaf4f996e,0,1,86a5ba4d-0681-4ddc-a505-0f537528e1a3,86a5ba4d-0681-4ddc-a505-0f537528e1a3,0,1,12d936f5-932b-4561-b934-c8444808a450,12d936f5-932b-4561-b934-c8444808a450,0,1,2ccb06ca-9bb7-4b74-9a96-c109bb117984,2ccb06ca-9bb7-4b74-9a96-c109bb117984,0,1,ac1a661d-db18-4576-80a9-a19d4140c05e,ac1a661d-db18-4576-80a9-a19d4140c05e,0,1,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,0,1,c3ffeb09-121b-4d77-9c15-def4648b4f3c,c3ffeb09-121b-4d77-9c15-def4648b4f3c,0,1,c2de0724-04c1-4adb-b62a-b7ba727dbe67,c2de0724-04c1-4adb-b62a-b7ba727dbe67,0,1,4ae26777-69ff-4a55-942b-0bad8ab7a70a,4ae26777-69ff-4a55-942b-0bad8ab7a70a,0,1,a0d8fb0a-0e90-4140-8687-e249b153dc66,a0d8fb0a-0e90-4140-8687-e249b153dc66,0,1,917c6f60-2a07-4587-9496-d393aff93953,917c6f60-2a07-4587-9496-d393aff93953,0,1,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,0,1,9fe72d73-4c95-47e0-bf92-dcb714d747c6,9fe72d73-4c95-47e0-bf92-dcb714d747c6,0,1,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,0,1,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,4d84bb11-e06e-4ed9-915b-76ee0e385a8b,0,1,2b94076d-39ee-45ad-9ba5-435115cf5d4f,2b94076d-39ee-45ad-9ba5-435115cf5d4f,0,1,72ace16c-e90a-4d05-bc23-4351d4c87683,72ace16c-e90a-4d05-bc23-4351d4c87683,0,1,bd86e378-84bb-486a-be7b-319a3fe3b70b,bd86e378-84bb-486a-be7b-319a3fe3b70b,0,1,ef3bc279-6721-4949-8dc0-f96141f7f05c,ef3bc279-6721-4949-8dc0-f96141f7f05c,0,1,f81c7e21-48ad-4b64-975d-e62d34c7235a,f81c7e21-48ad-4b64-975d-e62d34c7235a,0,1,d0523c14-585e-45d3-9735-891235631004,d0523c14-585e-45d3-9735-891235631004,0,1,b6f8bc3e-f0cd-43ef-b060-d701cd446197,b6f8bc3e-f0cd-43ef-b060-d701cd446197,0,1,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,0,1,b94e805f-e1ab-4870-b855-98aa401864b2,b94e805f-e1ab-4870-b855-98aa401864b2,0,1,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,0,1,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,0,1,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,0,1,60aaa289-1f07-438c-8f10-81058ac671c3,60aaa289-1f07-438c-8f10-81058ac671c3,0,1,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,0,1,c44b0868-bd7f-4230-973b-544ff4dd2afe,c44b0868-bd7f-4230-973b-544ff4dd2afe,0,1,fc2675c2-1c9b-41f9-88eb-5c8be365fe41,fc2675c2-1c9b-41f9-88eb-5c8be365fe41,0,1,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,0,1,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,0,1,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,0,1,0153e60e-daca-48ac-b1c6-adecc89f579e,0153e60e-daca-48ac-b1c6-adecc89f579e,0,1,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,0,1,a896bc34-30a6-48b6-acfc-786c24c186bd,a896bc34-30a6-48b6-acfc-786c24c186bd,0,1,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,0,1,da8ae00a-7207-4ceb-b739-9114888c5b27,da8ae00a-7207-4ceb-b739-9114888c5b27,0,1,91af7a52-0825-4af5-94df-cc501e0123cd,91af7a52-0825-4af5-94df-cc501e0123cd,0,1,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,0,1,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,0,1,9693cc78-852e-445b-a7d2-f1689fa9eeec,9693cc78-852e-445b-a7d2-f1689fa9eeec,0,1,eb33e555-db41-462a-a45d-c7e0945cece8,eb33e555-db41-462a-a45d-c7e0945cece8,0,1,9cfd517c-1008-483a-9f65-7d15feb2cefc,9cfd517c-1008-483a-9f65-7d15feb2cefc,0,1,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,d66adc5e-25a3-472e-b0a4-5f22f88d7a0f,0,1,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,ae48d48f-cd39-4821-a4b7-9394b2a77ef6,0,1,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,f34d3a69-533e-49df-b91d-f7f7f49c5fb1,0,1,1d76f613-f4f6-4772-8c16-d97b3104a553,1d76f613-f4f6-4772-8c16-d97b3104a553,0,1,3e58d607-b906-449f-b044-9c130a487b86,3e58d607-b906-449f-b044-9c130a487b86,0,1,7a911212-7fde-4ea8-a1fa-229116b60895,7a911212-7fde-4ea8-a1fa-229116b60895,0,1,f4580043-5bc2-4295-8523-909302009b44,f4580043-5bc2-4295-8523-909302009b44,0,1,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,0,1,81936ac2-32fe-4e14-897b-0aba92b90c05,81936ac2-32fe-4e14-897b-0aba92b90c05,0,1,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,0,1,ac028c56-b2a8-4a9b-a325-554c636f838e,ac028c56-b2a8-4a9b-a325-554c636f838e,0,1,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0,1,f99e98ac-cd94-4989-8c02-ef8b323c6815,f99e98ac-cd94-4989-8c02-ef8b323c6815,0,1,e2562347-4549-4111-862e-86c20a6daade,e2562347-4549-4111-862e-86c20a6daade,0,1,b270fc64-15c6-41ed-ad09-44c833ca7c41,b270fc64-15c6-41ed-ad09-44c833ca7c41,0,1,4c3312fd-5613-4e9b-ae7c-572fa1887ded,4c3312fd-5613-4e9b-ae7c-572fa1887ded,0,1,6c8c9618-287a-41ab-890c-60250925ad52,6c8c9618-287a-41ab-890c-60250925ad52,0,1,168fce48-2413-45fc-ad21-9b465121d81b,168fce48-2413-45fc-ad21-9b465121d81b,0,1,55b9650e-098b-4d44-9fb5-d525b46f014b,55b9650e-098b-4d44-9fb5-d525b46f014b,0,1,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,0,1,bc55dc06-a769-40be-9c99-0794bdd2dbea,bc55dc06-a769-40be-9c99-0794bdd2dbea,0,1,7861e179-96d2-422f-a7c2-b38b59074956,7861e179-96d2-422f-a7c2-b38b59074956,0,1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0,1,3797b4c6-e336-4cbe-8d0b-0902e1247b42,3797b4c6-e336-4cbe-8d0b-0902e1247b42,0,1,67ebc493-d29a-4614-890a-feb8b5bd884b,67ebc493-d29a-4614-890a-feb8b5bd884b,0,1,d65c8992-aabc-4b67-9893-01862231ebe1,d65c8992-aabc-4b67-9893-01862231ebe1,0,1,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,0,1,dba6cb38-79c6-4060-87c5-a993548f36c4,dba6cb38-79c6-4060-87c5-a993548f36c4,0,1,6b44227a-e226-4bcb-8638-06b49f830669,6b44227a-e226-4bcb-8638-06b49f830669,0,1,f2406400-87e9-4df2-bcd3-8f1e3ad62088,f2406400-87e9-4df2-bcd3-8f1e3ad62088,0,1,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,0,1,a5623e87-3102-4521-b4ab-c41bf2403a1a,a5623e87-3102-4521-b4ab-c41bf2403a1a,0,1,599b1692-5f4e-42ef-ae1a-822ff527a415,599b1692-5f4e-42ef-ae1a-822ff527a415,0,1,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,0,1,23f70675-6a05-4b50-ad68-c55ddc93e857,23f70675-6a05-4b50-ad68-c55ddc93e857,0,1,4bb7372a-87a9-426e-b09f-fc0110455b10,4bb7372a-87a9-426e-b09f-fc0110455b10,0,1,ac853a0f-c185-4cdb-9f09-c921770937b5,ac853a0f-c185-4cdb-9f09-c921770937b5,0,1,920a7940-4d12-476d-a909-2231787839a9,920a7940-4d12-476d-a909-2231787839a9,0,1,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,0,1,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,0,1,32eb2a75-ff35-4795-bf0c-12b1328441ee,32eb2a75-ff35-4795-bf0c-12b1328441ee,0,1,8e877990-a64c-4c45-91f1-007d47618cc7,8e877990-a64c-4c45-91f1-007d47618cc7,0,1,73c6640e-2fe6-4132-9237-d6f28cbacc1c,73c6640e-2fe6-4132-9237-d6f28cbacc1c,0,1,46c3341c-352c-43fb-b338-15c8ad487fbf,46c3341c-352c-43fb-b338-15c8ad487fbf,0,1,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,0,1,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,0,1,f9450d6a-849c-4621-b528-9cafc4819b44,f9450d6a-849c-4621-b528-9cafc4819b44,0,1,5b7cac99-2fca-4dbb-8d49-b84f310a2496,5b7cac99-2fca-4dbb-8d49-b84f310a2496,0,1,bb11c22e-0fbd-4985-be67-0866df7f7e61,bb11c22e-0fbd-4985-be67-0866df7f7e61,0,1,a4673d5c-9dae-48f7-9c91-53c1302a266a,a4673d5c-9dae-48f7-9c91-53c1302a266a,0,1,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,0,1,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,0,1,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0,1,3f410b53-e762-41fe-9469-d538dfec3a9a,3f410b53-e762-41fe-9469-d538dfec3a9a,0,1,92ea60c0-1027-4337-9130-40028951f09b,92ea60c0-1027-4337-9130-40028951f09b,0,1,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,0,1,d64f18a4-ff93-4284-9eca-085109eafd24,d64f18a4-ff93-4284-9eca-085109eafd24,0,1,bf428e7a-2970-4bab-8c8e-35ea16151c0e,bf428e7a-2970-4bab-8c8e-35ea16151c0e,0,1,232dbd5f-b7f1-4463-946c-b8fbf93ac466,232dbd5f-b7f1-4463-946c-b8fbf93ac466,0,1,a1a74b34-4174-4769-8f03-bd4a32e83418,a1a74b34-4174-4769-8f03-bd4a32e83418,0,1,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,0,1,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,0,1,1731708f-53cb-4b00-b90e-f581b4baa845,1731708f-53cb-4b00-b90e-f581b4baa845,0,1,d4b0feca-c00a-4d48-9f23-d92277ea6483,d4b0feca-c00a-4d48-9f23-d92277ea6483,0,1,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,0,1,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,0,1,23cb5bc2-9638-4d1c-b4bc-d5297e271570,23cb5bc2-9638-4d1c-b4bc-d5297e271570,0,1,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,0,1,04b7389d-697d-4b0d-a239-ac8c674cc46f,04b7389d-697d-4b0d-a239-ac8c674cc46f,0,1,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,0,1,864cad61-8280-415d-8fe1-bcb39d56670a,864cad61-8280-415d-8fe1-bcb39d56670a,0,1,b106bd29-5dc7-44d7-94d0-00f61499392e,b106bd29-5dc7-44d7-94d0-00f61499392e,0,1,a4febff8-0566-4977-bf55-1d574568fe9f,a4febff8-0566-4977-bf55-1d574568fe9f,0,1,5199cc65-bed1-40b9-96fe-cf6d855a8b91,5199cc65-bed1-40b9-96fe-cf6d855a8b91,0,1,f518add9-5c26-4dac-ab2e-b30fe3fbd347,f518add9-5c26-4dac-ab2e-b30fe3fbd347,0,1,23f53317-7aa8-4816-8a69-3d39d5e76da0,23f53317-7aa8-4816-8a69-3d39d5e76da0,0,1,9ade5155-fa6d-4999-b019-a5e7e235a158,9ade5155-fa6d-4999-b019-a5e7e235a158,0,1,8b302c5e-b255-4cb5-94d9-0dfef4250097,8b302c5e-b255-4cb5-94d9-0dfef4250097,0,1,49d713b8-6a61-4bd1-9650-0de1869967d2,49d713b8-6a61-4bd1-9650-0de1869967d2,0,1,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,0,1,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,0,1,0ddeed48-b98a-47c3-84a2-2eac065be06c,0ddeed48-b98a-47c3-84a2-2eac065be06c,0,1,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,0,1,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,0,1,61b947a5-edca-43ca-82c4-5a7b529d8f82,61b947a5-edca-43ca-82c4-5a7b529d8f82,0,1,59eb6a7a-1d96-4985-8d8e-575162759415,59eb6a7a-1d96-4985-8d8e-575162759415,0,1,68564573-ed49-4519-a8b3-997865fe70a6,68564573-ed49-4519-a8b3-997865fe70a6,0,1,6c789969-d066-489d-ad88-92e2a5a6ec69,6c789969-d066-489d-ad88-92e2a5a6ec69,0,1,2a07d696-75d6-4a12-a310-30d6598b4a4c,2a07d696-75d6-4a12-a310-30d6598b4a4c,0,1,dde88f56-417c-4559-a893-85dc91e7e623,dde88f56-417c-4559-a893-85dc91e7e623,0,1,963eedab-6976-4a98-b9ad-b81f89239661,963eedab-6976-4a98-b9ad-b81f89239661,0,1,3370d43e-8e97-4411-8123-2bb2bcf60a75,3370d43e-8e97-4411-8123-2bb2bcf60a75,0,1,d9d377c9-406f-4bc9-8076-1f049348b816,d9d377c9-406f-4bc9-8076-1f049348b816,0,1,dcfcb108-3761-43d9-ad2a-29633bd1ae47,dcfcb108-3761-43d9-ad2a-29633bd1ae47,0,1,36baa776-83c4-413d-b70c-cbbc45e25662,36baa776-83c4-413d-b70c-cbbc45e25662,0,1,b65f9165-c20d-4053-8a0b-cff3f693b762,b65f9165-c20d-4053-8a0b-cff3f693b762,0,1,51af096b-687f-44f4-a0d8-306f670fc5ce,51af096b-687f-44f4-a0d8-306f670fc5ce,0,1,75972f88-aedd-4338-a3b5-320cd632a2e6,75972f88-aedd-4338-a3b5-320cd632a2e6,0,1,a720abc8-dcf0-4684-8d94-22d394a8e4df,a720abc8-dcf0-4684-8d94-22d394a8e4df,0,1,e40f53de-c27b-4e74-8241-f784d7ca5c84,e40f53de-c27b-4e74-8241-f784d7ca5c84,0,1,ef38b84d-277e-48c2-8826-330132eb6807,ef38b84d-277e-48c2-8826-330132eb6807,0,1,67a50910-059a-4724-84e0-c21bc3ac74c2,67a50910-059a-4724-84e0-c21bc3ac74c2,0,1,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,0,1,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,0d190f8b-87c5-4dd1-bcfb-609ec3a44f72,0,1,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,0,1,2c0d11fc-b927-4b5d-a16c-d60e69580824,2c0d11fc-b927-4b5d-a16c-d60e69580824,0,1,5251e744-666e-48a0-a5b4-9cef313c7631,5251e744-666e-48a0-a5b4-9cef313c7631,0,1,0b09cf2f-1759-4362-b997-29e09ac00445,0b09cf2f-1759-4362-b997-29e09ac00445,0,1,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,0,1,828ddf5d-ca09-4baf-897f-77d569e02a6b,828ddf5d-ca09-4baf-897f-77d569e02a6b,0,1,8856015c-a695-4b1a-99ef-770263f9dc4a,8856015c-a695-4b1a-99ef-770263f9dc4a,0,1,183ec2b5-e173-4885-9e26-1098ffa15020,183ec2b5-e173-4885-9e26-1098ffa15020,0,1,74702fdf-bfc5-4658-ba58-e39bcfbaa647,74702fdf-bfc5-4658-ba58-e39bcfbaa647,0,1,2f436ec3-6a04-4d2c-998a-c60ea875ca86,2f436ec3-6a04-4d2c-998a-c60ea875ca86,0,1,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,0,1,ae641a80-4ada-4592-ace9-29a82e6700e4,ae641a80-4ada-4592-ace9-29a82e6700e4,0,1,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,0,1,0c24858a-7e64-426f-9b59-392449aecaf5,0c24858a-7e64-426f-9b59-392449aecaf5,0,1,b1d61e28-f3dc-418b-b5df-f75622a4b980,b1d61e28-f3dc-418b-b5df-f75622a4b980,0,1,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,0,1,4033f86b-d250-475a-8837-071bf31664b0,4033f86b-d250-475a-8837-071bf31664b0,0,1,876e31ff-ab7b-4ea4-b491-161963727dd1,876e31ff-ab7b-4ea4-b491-161963727dd1,0,1,bb43995b-68b4-41a1-8458-e10a2d8925f1,bb43995b-68b4-41a1-8458-e10a2d8925f1,0,1,61730dd9-fed7-43ce-8f38-724cac8f3d08,61730dd9-fed7-43ce-8f38-724cac8f3d08,0,1,e6a494b8-27e7-46a6-9435-7be6e150a69e,e6a494b8-27e7-46a6-9435-7be6e150a69e,0,1,133dc852-59d3-4351-934d-8845f8a38431,133dc852-59d3-4351-934d-8845f8a38431,0,1,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,0,1,b57eca91-04c2-4412-b5e2-f3c71f8ec602,b57eca91-04c2-4412-b5e2-f3c71f8ec602,0,1,b67914a8-d483-4bed-bd4d-a4aadd4998a4,b67914a8-d483-4bed-bd4d-a4aadd4998a4,0,1,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,0,1,707a8a49-fec5-454c-9e80-c3da829d395c,707a8a49-fec5-454c-9e80-c3da829d395c,0,1,b5ea4aff-11be-4232-94a2-cb92801b6c49,b5ea4aff-11be-4232-94a2-cb92801b6c49,0,1,6f630213-c16c-421c-a160-09e3c729ab26,6f630213-c16c-421c-a160-09e3c729ab26,0,1,878c638c-7c84-4914-896a-d4fdf0d759ef,878c638c-7c84-4914-896a-d4fdf0d759ef,0,1,6065653e-b7a9-4033-9617-f64430c57d89,6065653e-b7a9-4033-9617-f64430c57d89,0,1,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,0,1,00d1d85b-c258-4f10-9d13-a99375a29fc1,00d1d85b-c258-4f10-9d13-a99375a29fc1,0,1,0544376f-461c-42c3-a102-e0ae65e3c0c6,0544376f-461c-42c3-a102-e0ae65e3c0c6,0,1,6df8d316-6ac3-4626-8951-1ad36d7049ed,6df8d316-6ac3-4626-8951-1ad36d7049ed,0,1,f211b418-899d-4220-a14b-4a7302183e46,f211b418-899d-4220-a14b-4a7302183e46,0,1,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,0,1,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,0,1,876b23bf-2f48-4916-ad0f-4de8306e1864,876b23bf-2f48-4916-ad0f-4de8306e1864,0,1,e983f539-e369-491e-9cee-510518187870,e983f539-e369-491e-9cee-510518187870,0,1,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,0,1,e99a1b17-0e37-489a-bc39-3dd2e23b0861,e99a1b17-0e37-489a-bc39-3dd2e23b0861,0,1,e7c63a25-c804-4bc4-a6f1-81009dd889e2,e7c63a25-c804-4bc4-a6f1-81009dd889e2,0,1,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,0,1,70e710c5-42df-465f-a9c5-8345c87e1f19,70e710c5-42df-465f-a9c5-8345c87e1f19,0,1,4c1576c4-b327-4ec1-87bc-662c5aba343b,4c1576c4-b327-4ec1-87bc-662c5aba343b,0,1,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0,1,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,0,1,4492ac73-eb91-41f8-98f1-54c2b3ad212a,4492ac73-eb91-41f8-98f1-54c2b3ad212a,0,1,869b43fb-968f-4fe0-b945-5030c90a38f2,869b43fb-968f-4fe0-b945-5030c90a38f2,0,1,af071a52-212b-4131-98e6-81f6048a70e6,af071a52-212b-4131-98e6-81f6048a70e6,0,1,37210dde-9a2f-475c-8341-578ac99f0e17,37210dde-9a2f-475c-8341-578ac99f0e17,0,1,e5094d4f-ee61-4142-a97b-d96172350f65,e5094d4f-ee61-4142-a97b-d96172350f65,0,1,3a8fffb6-a732-440c-afb9-d1c699ea53b6,3a8fffb6-a732-440c-afb9-d1c699ea53b6,0,1,b0650787-8ff5-4407-b491-bcdc2f61fd58,b0650787-8ff5-4407-b491-bcdc2f61fd58,0,1,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,0,1,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,0,1,9aadad98-69f5-41ce-ad1c-0afd8c610d86,9aadad98-69f5-41ce-ad1c-0afd8c610d86,0,1,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,0,1,3d662173-e19d-4077-9a08-8c8899226e24,3d662173-e19d-4077-9a08-8c8899226e24,0,1,69fd1e6e-7302-4ca8-8419-ec567ae66bef,69fd1e6e-7302-4ca8-8419-ec567ae66bef,0,1,0eee931a-57bb-4844-8e6e-eaca342640a0,0eee931a-57bb-4844-8e6e-eaca342640a0,0,1,20c57e30-5856-4801-9e77-8006471d89f8,20c57e30-5856-4801-9e77-8006471d89f8,0,1,64eff9f4-c57b-40a0-bd83-7e371fd010ce,64eff9f4-c57b-40a0-bd83-7e371fd010ce,0,1,4a3fe393-8aea-4394-8c10-a234f1f191ad,4a3fe393-8aea-4394-8c10-a234f1f191ad,0,1,88893c1e-afb4-4a08-abb2-6da0745b696a,88893c1e-afb4-4a08-abb2-6da0745b696a,0,1,6f9a3d00-d935-4fa6-9fd2-14700226daff,6f9a3d00-d935-4fa6-9fd2-14700226daff,0,1,d792831c-698d-40c6-96c2-dd0ae6f30707,d792831c-698d-40c6-96c2-dd0ae6f30707,0,1,a1d91c5f-1acd-4b46-887e-d06e7260dd20,a1d91c5f-1acd-4b46-887e-d06e7260dd20,0,1,3fd26019-c464-4c73-b18e-0888740b1747,3fd26019-c464-4c73-b18e-0888740b1747,0,1,a21989bd-a57f-4969-be3b-d8b39ead4145,a21989bd-a57f-4969-be3b-d8b39ead4145,0,1,c4aee120-cdbb-4b48-a1c7-99cccbafb120,c4aee120-cdbb-4b48-a1c7-99cccbafb120,0,1,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,0,1,a3667b25-7c18-446d-a318-685a4fe4bf89,a3667b25-7c18-446d-a318-685a4fe4bf89,0,1,fd271670-bde6-4351-abec-eb82548c6c98,fd271670-bde6-4351-abec-eb82548c6c98,0,1,498b012b-bb63-490e-8100-1d33dc84b400,498b012b-bb63-490e-8100-1d33dc84b400,0,1,8103f12c-ed50-4052-8117-33b6d11ef620,8103f12c-ed50-4052-8117-33b6d11ef620,0,1,4f8653e4-3f58-4bad-8ded-424fe7b1d18a,4f8653e4-3f58-4bad-8ded-424fe7b1d18a,0,1,799b3dda-fbfc-4dea-a577-30321e64f4d5,799b3dda-fbfc-4dea-a577-30321e64f4d5,0,1,7c7857b6-90e8-4b3f-9902-fd81bf68d133,7c7857b6-90e8-4b3f-9902-fd81bf68d133,0,1,617de19c-bf01-4900-832a-c169e9faeb79,617de19c-bf01-4900-832a-c169e9faeb79,0,1,70b73fd0-f5dc-411e-9bbb-10a538e8281b,70b73fd0-f5dc-411e-9bbb-10a538e8281b,0,1,758f44ad-54da-4f72-accf-0afecc4f4827,758f44ad-54da-4f72-accf-0afecc4f4827,0,1,05ee4a7c-63e6-4587-8be7-e206345e3471,05ee4a7c-63e6-4587-8be7-e206345e3471,0,1,98d5e98b-0382-4b28-a5d9-24392925664a,98d5e98b-0382-4b28-a5d9-24392925664a,0,1,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,0,1,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,0,1,4378ab20-5467-476b-8f04-4b6876efdee6,4378ab20-5467-476b-8f04-4b6876efdee6,0,1,55e47901-c79c-41c5-9d7f-6b6846ed2782,55e47901-c79c-41c5-9d7f-6b6846ed2782,0,1,3c429fe8-e663-4a58-817f-8f8382697dbb,3c429fe8-e663-4a58-817f-8f8382697dbb,0,1,c37be0c3-d2db-4e63-a8cb-7956a5396650,c37be0c3-d2db-4e63-a8cb-7956a5396650,0,1,83180e0d-fc4b-41ec-9a17-5af555a4776f,83180e0d-fc4b-41ec-9a17-5af555a4776f,0,1,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,0,1,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,0,1,3e8c6546-416c-4437-8c85-2cf591b4fc3f,3e8c6546-416c-4437-8c85-2cf591b4fc3f,0,1,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,0,1,9a0b27db-e4ac-496b-b6de-876b90381527,9a0b27db-e4ac-496b-b6de-876b90381527,0,1,f9c07de6-4765-4088-86af-09172d11ef5c,f9c07de6-4765-4088-86af-09172d11ef5c,0,1,3656d550-60d0-4933-a5d8-537e2d692ef1,3656d550-60d0-4933-a5d8-537e2d692ef1,0,1,a2c4aab7-01da-47d1-9ee6-3d705ed4e19a,a2c4aab7-01da-47d1-9ee6-3d705ed4e19a,0,1,9d89415b-d129-4148-84f2-ebf3755f62e1,9d89415b-d129-4148-84f2-ebf3755f62e1,0,1,4506a66c-7e8f-4fc1-b1e1-7cf02309a77f,4506a66c-7e8f-4fc1-b1e1-7cf02309a77f,0,1,f5d03455-753c-46db-a84a-f027edbe8ab8,f5d03455-753c-46db-a84a-f027edbe8ab8,0,1,805ba666-2a3b-493f-a34e-597f25ea653e,805ba666-2a3b-493f-a34e-597f25ea653e,0,1,f7c98be4-fb69-4b87-bbb1-920212852625,f7c98be4-fb69-4b87-bbb1-920212852625,0,1,59d7388b-8aa0-4f97-b86c-f34fcb08bf70,59d7388b-8aa0-4f97-b86c-f34fcb08bf70,0,1,36b704fc-bf9e-4ad4-aed9-4e6427699815,36b704fc-bf9e-4ad4-aed9-4e6427699815,0,1,c1899918-6087-460f-a7a1-142e4b914838,c1899918-6087-460f-a7a1-142e4b914838,0,1,07589ac7-152c-42a9-b6b8-c520e82349b0,07589ac7-152c-42a9-b6b8-c520e82349b0,0,1,be5f2776-7ecd-485c-9be8-4cbc6f1a76ba,be5f2776-7ecd-485c-9be8-4cbc6f1a76ba,0,1,86e5a214-083e-4907-9cf3-adf0156235de,86e5a214-083e-4907-9cf3-adf0156235de,0,1,4591f2a7-900e-4426-8e3e-50f2b6e02d3a,4591f2a7-900e-4426-8e3e-50f2b6e02d3a,0,1,53b75d76-23a4-45a1-94d6-3581b4187949,53b75d76-23a4-45a1-94d6-3581b4187949,0,1,71e79854-dade-4b5e-b7e4-5a0bc94168e3,71e79854-dade-4b5e-b7e4-5a0bc94168e3,0,1,d299c6a9-38b9-4d03-a480-3d15ede6ef2d,d299c6a9-38b9-4d03-a480-3d15ede6ef2d,0,1,8ddc148a-0bef-4dd8-8391-d98c5fd21a78,8ddc148a-0bef-4dd8-8391-d98c5fd21a78,0,1,accf0864-8bfe-4c40-a555-6ab423594313,accf0864-8bfe-4c40-a555-6ab423594313,0,1,128654ce-708d-4b85-b9fc-1790dc218ff1,128654ce-708d-4b85-b9fc-1790dc218ff1,0,1,9c864776-cf3f-426a-a87c-bf1771f9bdce,9c864776-cf3f-426a-a87c-bf1771f9bdce,0,1,857f4270-760b-4b1f-934c-386fad1eec58,857f4270-760b-4b1f-934c-386fad1eec58,0,1,49f781b8-8787-41de-b334-e9732845f542,49f781b8-8787-41de-b334-e9732845f542,0,1,05c2ac4b-ea1b-44f6-8f83-7b11e344ad46,05c2ac4b-ea1b-44f6-8f83-7b11e344ad46,0,1,214499fa-765a-4dbd-9f1b-a4ec401afc3f,214499fa-765a-4dbd-9f1b-a4ec401afc3f,0,1,5a54f871-2aa1-4cbd-9832-dae5f0c43718,5a54f871-2aa1-4cbd-9832-dae5f0c43718,0,1,e3673a14-8ee3-4642-945a-1858410d73a9,e3673a14-8ee3-4642-945a-1858410d73a9,0,1,2d4ec9be-b843-4c1d-ad1b-41ec3d1b14bf,2d4ec9be-b843-4c1d-ad1b-41ec3d1b14bf,0,1,97b4ad32-9cf1-4f25-9739-b21f4c33b29c,97b4ad32-9cf1-4f25-9739-b21f4c33b29c,0,1,f8ad793a-9362-4d58-94bf-53d6750f2089,f8ad793a-9362-4d58-94bf-53d6750f2089,0,1,29a3d9f3-88f5-4449-b9e2-56b517833726,29a3d9f3-88f5-4449-b9e2-56b517833726,0,1,41de2373-2d3f-4860-a8ab-88cf271ac6e3,41de2373-2d3f-4860-a8ab-88cf271ac6e3,0,1,698fec20-5e18-4ae9-b0bc-1b32a65d1bbc,698fec20-5e18-4ae9-b0bc-1b32a65d1bbc,0,1,e08a44a6-a3b2-49bd-8a47-abaf2631cd01,e08a44a6-a3b2-49bd-8a47-abaf2631cd01,0,1,2dcc72f7-453b-4248-a83e-6f49051bc639,2dcc72f7-453b-4248-a83e-6f49051bc639,0,1,5c248c15-16a0-4b83-9ae0-a828e5cf5a40,5c248c15-16a0-4b83-9ae0-a828e5cf5a40,0,1,fdb841f4-193a-4cd7-8569-37e0a68b970e,fdb841f4-193a-4cd7-8569-37e0a68b970e,0,1,96a3439e-9aa7-40f7-8b58-7d08d378010b,96a3439e-9aa7-40f7-8b58-7d08d378010b,0,1,f6590f9c-0365-4f32-93ce-258e2f8323b0,f6590f9c-0365-4f32-93ce-258e2f8323b0,0,1,c7a9c238-a830-46cc-b1b2-88d62328cd40,c7a9c238-a830-46cc-b1b2-88d62328cd40,0,1,723794c6-a391-4f82-a178-625781a136b2,723794c6-a391-4f82-a178-625781a136b2,0,1,7fd74e2d-7409-4f30-9ade-8d11dbf32a12,7fd74e2d-7409-4f30-9ade-8d11dbf32a12,0,1,8acbacb3-6e01-469e-944d-96d4ecea0587,8acbacb3-6e01-469e-944d-96d4ecea0587,0,1,026d090f-7c6f-4d77-8fe0-ff184dbd86b8,026d090f-7c6f-4d77-8fe0-ff184dbd86b8,0,1,2585cae2-5ebf-400b-8be9-a6207fcaefe3,2585cae2-5ebf-400b-8be9-a6207fcaefe3,0,1,d68abad4-bb5e-4bc5-b60f-2d171549d1d6,d68abad4-bb5e-4bc5-b60f-2d171549d1d6,0,1,f63d85ab-2524-4c7e-9647-0c18833c9c90,f63d85ab-2524-4c7e-9647-0c18833c9c90,0,1,0b81d0cb-e45a-41d7-89ec-ad056a5aa8bc,0b81d0cb-e45a-41d7-89ec-ad056a5aa8bc,0,1,f0dc2d0c-9904-48aa-9690-72a9d46658df,f0dc2d0c-9904-48aa-9690-72a9d46658df,0,1,76d3a71f-8b40-4e3e-9734-d9e998e685bf,76d3a71f-8b40-4e3e-9734-d9e998e685bf,0,1,db2ad80b-08a4-4b1b-8f8b-cf43f49b1b87,db2ad80b-08a4-4b1b-8f8b-cf43f49b1b87,0,1,3356b0cf-fa2c-40ca-8ec2-b3d72451d730,3356b0cf-fa2c-40ca-8ec2-b3d72451d730,0,1,79e0ab1a-228d-4aec-a873-8f379bb8930b,79e0ab1a-228d-4aec-a873-8f379bb8930b,0,1,57f42d7c-749e-4e7d-80c7-3c95da266146,57f42d7c-749e-4e7d-80c7-3c95da266146,0,1,0a87c592-6321-4519-a99e-620a5c1fda04,0a87c592-6321-4519-a99e-620a5c1fda04,0,1,2fd3d940-9254-4303-9d5f-fd334918b32a,2fd3d940-9254-4303-9d5f-fd334918b32a,0,1,e1ffbb33-35b2-450b-9795-15455574752b,e1ffbb33-35b2-450b-9795-15455574752b,0,1,7b817c44-3408-4473-8b09-d28d9afd0115,7b817c44-3408-4473-8b09-d28d9afd0115,0,1,17b38dd8-06ee-4a9e-b698-4d8fefe45864,17b38dd8-06ee-4a9e-b698-4d8fefe45864,0,1,bac41d45-249f-40b4-a013-008e261369c8,bac41d45-249f-40b4-a013-008e261369c8,0,1,84e34b4a-02e8-4676-8b81-771ddf3c2931,84e34b4a-02e8-4676-8b81-771ddf3c2931,0,1,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0,1,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,0,1,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,0,1,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,0,1,f71ac535-74a5-4001-a613-455a9e1bf734,f71ac535-74a5-4001-a613-455a9e1bf734,0,1,55a42b83-b6d2-409b-a8ff-7849b08e07ed,55a42b83-b6d2-409b-a8ff-7849b08e07ed,0,1,61889399-ecc2-442c-a790-a8b27a7a540c,61889399-ecc2-442c-a790-a8b27a7a540c,0,1,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,0,1,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,0,1,d6aed0fd-686c-430d-b884-74494177422e,d6aed0fd-686c-430d-b884-74494177422e,0,1,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,0,1,3ed64288-8bf0-4049-8d44-1b424f31d40f,3ed64288-8bf0-4049-8d44-1b424f31d40f,0,1,a21cf522-d657-49ba-a198-01ff1de5e3f0,a21cf522-d657-49ba-a198-01ff1de5e3f0,0,1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,0,1,7ceb2f18-4dae-4b13-a5be-e949be165b4e,7ceb2f18-4dae-4b13-a5be-e949be165b4e,0,1,c4f94f6d-e33f-4226-bf47-c4b544098082,c4f94f6d-e33f-4226-bf47-c4b544098082,0,1,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0,1,4e892154-3279-492c-9eae-124304225c5d,4e892154-3279-492c-9eae-124304225c5d,0,1,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,0,1,575a135a-6ffd-4ae8-a597-7e584df9bac4,575a135a-6ffd-4ae8-a597-7e584df9bac4,0,1,693a7196-f525-4bd2-a417-e902977f21cb,693a7196-f525-4bd2-a417-e902977f21cb,0,1,9bb39184-08b7-440e-a8f8-5caf0083ba0f,9bb39184-08b7-440e-a8f8-5caf0083ba0f,0,1,d48e817e-f6a4-47e5-a052-35d09e066490,d48e817e-f6a4-47e5-a052-35d09e066490,0,1,091cb921-c7e3-4a5f-97b7-34e625159b9c,091cb921-c7e3-4a5f-97b7-34e625159b9c,0,1,f6118cdd-1dcd-464e-a49d-e95c69466750,f6118cdd-1dcd-464e-a49d-e95c69466750,0,1,39932897-959b-41a6-94ad-61426abfdbd9,39932897-959b-41a6-94ad-61426abfdbd9,0,1,c56ea6f3-1032-4b7a-a20e-e912196da1cd,c56ea6f3-1032-4b7a-a20e-e912196da1cd,0,1,b69b611d-18d3-4e78-8a09-f010bcf9c261,b69b611d-18d3-4e78-8a09-f010bcf9c261,0,1,e8e087c1-9131-4037-8562-8bce8c38f78c,e8e087c1-9131-4037-8562-8bce8c38f78c,0,1,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,0,1,6adaef8e-82b6-4664-9748-4f41b170d91a,6adaef8e-82b6-4664-9748-4f41b170d91a,0,1,20d655a7-788c-48bc-83ae-25003106bedb,20d655a7-788c-48bc-83ae-25003106bedb,0,1,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,0,1,68a72014-4b2e-4347-aaa7-54d95b8eb919,68a72014-4b2e-4347-aaa7-54d95b8eb919,0,1,a71d9c41-7510-4d38-90df-1034977b8f45,a71d9c41-7510-4d38-90df-1034977b8f45,0,1,25830f5b-27e2-4eff-9728-b21eb498727d,25830f5b-27e2-4eff-9728-b21eb498727d,0,1,379c9295-d0d5-418d-82f3-5ae19985cc53,379c9295-d0d5-418d-82f3-5ae19985cc53,0,1,af02f534-8508-4f9f-bcc1-0c6f3d696971,af02f534-8508-4f9f-bcc1-0c6f3d696971,0,1,dd345cfb-ea0c-4ea8-9b35-22547b000275,dd345cfb-ea0c-4ea8-9b35-22547b000275,0,1,86a871da-3725-43a1-a7c3-98acd187011b,86a871da-3725-43a1-a7c3-98acd187011b,0,1,2447cfeb-d877-4222-8ac2-b0026b85f932,2447cfeb-d877-4222-8ac2-b0026b85f932,0,1,fb94e9cb-1f27-42a6-a701-18bbe5888e70,fb94e9cb-1f27-42a6-a701-18bbe5888e70,0,1,2e26e32e-a0c6-4460-99de-865622202166,2e26e32e-a0c6-4460-99de-865622202166,0,1,c9489a6e-45af-4877-9788-158071571a0a,c9489a6e-45af-4877-9788-158071571a0a,0,1,23959912-f8fc-42bc-9ec2-1d520ebc5dad,23959912-f8fc-42bc-9ec2-1d520ebc5dad,0,1,4770398f-8013-4d43-93ce-ec1165e40c4e,4770398f-8013-4d43-93ce-ec1165e40c4e,0,1,9a706997-90cb-430d-972c-d2bad87c4a79,9a706997-90cb-430d-972c-d2bad87c4a79,0,1,6f661660-b9c4-41d4-99a8-e08006cfe9c8,6f661660-b9c4-41d4-99a8-e08006cfe9c8,0,1,199e79fa-54d6-4748-aaaa-9c55283582a3,199e79fa-54d6-4748-aaaa-9c55283582a3,0,1,5ef026c2-2ef4-45d6-9792-5ba0d298714b,5ef026c2-2ef4-45d6-9792-5ba0d298714b,0,1,45d61391-4cf7-4f45-8775-ada582c42400,45d61391-4cf7-4f45-8775-ada582c42400,0,1,78b2a913-2ab9-455d-85a3-504f0f468468,78b2a913-2ab9-455d-85a3-504f0f468468,0,1,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,0,1,560b5b12-4dee-4c69-ab6b-7680757a2797,560b5b12-4dee-4c69-ab6b-7680757a2797,0,1,3cfb1ce0-de42-4914-85c0-807d0c10f77e,3cfb1ce0-de42-4914-85c0-807d0c10f77e,0,1,a27244c2-ac65-423f-afce-42efd288a83d,a27244c2-ac65-423f-afce-42efd288a83d,0,1,d4002184-8e08-4dcc-9070-62f595e82e23,d4002184-8e08-4dcc-9070-62f595e82e23,0,1,62163fda-1a09-4d4f-b290-76ff324042ab,62163fda-1a09-4d4f-b290-76ff324042ab,0,1,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,0,1,6e6a1557-06fa-45c0-ad98-c43809553cd7,6e6a1557-06fa-45c0-ad98-c43809553cd7,0,1,179f7436-e328-42b8-9382-19ee6f10c768,179f7436-e328-42b8-9382-19ee6f10c768,0,1,aa89881f-f111-4384-911c-847b04bb56dd,aa89881f-f111-4384-911c-847b04bb56dd,0,1,444d9e3b-c702-4ad6-a929-a220eff0f6e7,444d9e3b-c702-4ad6-a929-a220eff0f6e7,0,1,022c4519-1cdb-45b6-a699-89fd6688999c,022c4519-1cdb-45b6-a699-89fd6688999c,0,1,fb5b79a2-caec-4c6e-a112-27e78a184d5e,fb5b79a2-caec-4c6e-a112-27e78a184d5e,0,1,fa523958-ce1e-42e1-ae00-2dcb401b7eda,fa523958-ce1e-42e1-ae00-2dcb401b7eda,0,1,1518bca2-a004-4566-8991-7c60e6745a49,1518bca2-a004-4566-8991-7c60e6745a49,0,1,ed8618e2-3ce6-4956-856a-9f40279b4da6,ed8618e2-3ce6-4956-856a-9f40279b4da6,0,1,733f6bc2-544d-4fac-bca8-11b981b95a03,733f6bc2-544d-4fac-bca8-11b981b95a03,0,1,0333cd9e-392d-40b2-869d-ad47119e0384,0333cd9e-392d-40b2-869d-ad47119e0384,0,1,82cc8820-0b92-4bb7-b097-7ac79e922f01,82cc8820-0b92-4bb7-b097-7ac79e922f01,0,1,f2267d6c-6972-4621-b677-87798056363b,f2267d6c-6972-4621-b677-87798056363b,0,1,243d201b-3714-4700-b410-c74c9093e6f6,243d201b-3714-4700-b410-c74c9093e6f6,0,1,de3cb50c-ef99-419e-b922-c6a453da6a5b,de3cb50c-ef99-419e-b922-c6a453da6a5b,0,1,d4ca4802-756a-494c-bab3-e77e0777a3fa,d4ca4802-756a-494c-bab3-e77e0777a3fa,0,1,134c1054-8d65-405f-ba3b-5beeca803a72,134c1054-8d65-405f-ba3b-5beeca803a72,0,1,cfa1669b-5310-4171-83fd-4dff3c6ac345,cfa1669b-5310-4171-83fd-4dff3c6ac345,0,1,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,0,1,aec7df6a-21a1-495d-b0a9-3769e1069888,aec7df6a-21a1-495d-b0a9-3769e1069888,0,1,463b98bf-b4d4-4edb-995d-0a75ff29b60d,463b98bf-b4d4-4edb-995d-0a75ff29b60d,0,1,317f88a7-12a4-4d21-b637-3050525406f4,317f88a7-12a4-4d21-b637-3050525406f4,0,1,2d9d2319-68fb-436d-b431-98858b88a75a,2d9d2319-68fb-436d-b431-98858b88a75a,0,1,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,0,1,8e9f9baf-8d12-46cc-915f-f6f290af5512,8e9f9baf-8d12-46cc-915f-f6f290af5512,0,1,5808331f-9ab4-4a23-a592-1f65087f3214,5808331f-9ab4-4a23-a592-1f65087f3214,0,1,9316738d-3d38-4068-818e-a001355b19fb,9316738d-3d38-4068-818e-a001355b19fb,0,1,d86d766f-021a-4c11-b9e8-403af08918cc,d86d766f-021a-4c11-b9e8-403af08918cc,0,1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,0,1,29200d04-d7da-435a-89e6-858c11a1a98c,29200d04-d7da-435a-89e6-858c11a1a98c,0,1,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,0,1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,0,1,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,0,1,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0,1,27df6c22-85d7-4cb6-be19-82af76c84bf9,27df6c22-85d7-4cb6-be19-82af76c84bf9,0,1,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,0,1,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0,1,4ec242e0-75d1-4bf7-be18-783e7aa4f236,4ec242e0-75d1-4bf7-be18-783e7aa4f236,0,1,e02b1366-9d7a-462f-86a1-436bbf4532ff,e02b1366-9d7a-462f-86a1-436bbf4532ff,0,1,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,0,1,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,0,1,8811cc64-99d9-4f13-8309-c29965783f5a,8811cc64-99d9-4f13-8309-c29965783f5a,0,1,7c737071-e850-4a3f-8942-697ef52a8ecc,7c737071-e850-4a3f-8942-697ef52a8ecc,0,1,62eff222-7b74-4cab-9138-880db1f05147,62eff222-7b74-4cab-9138-880db1f05147,0,1,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,0,1,860f8893-22fe-4b13-adb1-24e1ea8c6544,860f8893-22fe-4b13-adb1-24e1ea8c6544,0,1,95266e9f-073f-4de3-83c6-cc0d9ee9334f,95266e9f-073f-4de3-83c6-cc0d9ee9334f,0,1,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,0,1,d5012e69-89bc-40af-8e4f-377a042854ee,d5012e69-89bc-40af-8e4f-377a042854ee,0,1,02f79fd8-5315-4c90-b520-db67dcb6e371,02f79fd8-5315-4c90-b520-db67dcb6e371,0,1,9bb52788-4a3a-48b5-a551-5ca753b6c059,9bb52788-4a3a-48b5-a551-5ca753b6c059,0,1,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,0,1,872a0c47-fab5-4a54-8ab9-23940bbdefbb,872a0c47-fab5-4a54-8ab9-23940bbdefbb,0,1,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,0,1,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,0,1,b6c94efd-5994-4c4c-a641-b062ecc38b65,b6c94efd-5994-4c4c-a641-b062ecc38b65,0,1,98501228-7f0e-45a3-b58f-4c654f393f80,98501228-7f0e-45a3-b58f-4c654f393f80,0,1,502384c9-edb7-451a-b7ea-de006f657a6e,502384c9-edb7-451a-b7ea-de006f657a6e,0,1,4e1a4fe0-dca4-40ba-9369-73be303a4aef,4e1a4fe0-dca4-40ba-9369-73be303a4aef,0,1,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,0,1,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,0,1,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,0,1,50968921-76f3-4108-835a-96b153671c8d,50968921-76f3-4108-835a-96b153671c8d,0,1,b773f510-1485-4886-9071-afcbf49ff856,b773f510-1485-4886-9071-afcbf49ff856,0,1,964403f2-0a87-49e1-b183-dbe3624e3805,964403f2-0a87-49e1-b183-dbe3624e3805,0,1,01579044-5659-4a73-a989-c52cfabaae66,01579044-5659-4a73-a989-c52cfabaae66,0,1,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,0,1,911baaa1-a4de-4558-b00e-51644144a762,911baaa1-a4de-4558-b00e-51644144a762,0,1,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,0,1,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,0,1,4e036eff-92a8-4010-89b2-ed949c123311,4e036eff-92a8-4010-89b2-ed949c123311,0,1,38160114-dc22-4d0b-86a5-d650f4756932,38160114-dc22-4d0b-86a5-d650f4756932,0,1,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,0,1,8b3da21b-ea3f-47cf-af48-15b886b21f20,8b3da21b-ea3f-47cf-af48-15b886b21f20,0,1,32c4750b-0096-4bbc-8dcd-c1f717734233,32c4750b-0096-4bbc-8dcd-c1f717734233,0,1,be6740b1-1f57-4c01-a67a-d48152931dc8,be6740b1-1f57-4c01-a67a-d48152931dc8,0,1,40fd038d-a93a-4be7-9221-d8ae83350ca0,40fd038d-a93a-4be7-9221-d8ae83350ca0,0,1,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,0,1,29adc9e5-a994-48ab-a5a1-919d01119c3a,29adc9e5-a994-48ab-a5a1-919d01119c3a,0,1,c47ffce7-c905-4e88-8b1f-156f47047ccd,c47ffce7-c905-4e88-8b1f-156f47047ccd,0,1,e1755eed-88cf-42c1-83e4-f9047f2c30bf,e1755eed-88cf-42c1-83e4-f9047f2c30bf,0,1,c6ec9d48-9131-4735-9cf7-b498705a57e4,c6ec9d48-9131-4735-9cf7-b498705a57e4,0,1,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,0,1,706c421a-74ce-4985-9443-b4a2032481f6,706c421a-74ce-4985-9443-b4a2032481f6,0,1,64da4c24-4aaf-42c8-8595-7f60ff3bc344,64da4c24-4aaf-42c8-8595-7f60ff3bc344,0,1,fb9577e1-00d9-4d52-8de9-23914929a683,fb9577e1-00d9-4d52-8de9-23914929a683,0,1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,0,1,529253ae-9c92-4426-b150-8444ba622f89,529253ae-9c92-4426-b150-8444ba622f89,0,1,06a1955a-2ef0-4607-9dcb-a480a7951af7,06a1955a-2ef0-4607-9dcb-a480a7951af7,0,1,6f8fcc96-bfed-444a-908d-95c5b1c64972,6f8fcc96-bfed-444a-908d-95c5b1c64972,0,1,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,0,1,a84c89d9-2cfe-405f-9bb0-5392b3171695,a84c89d9-2cfe-405f-9bb0-5392b3171695,0,1,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,0,1,91e26e73-027f-4a10-9083-e5182e768723,91e26e73-027f-4a10-9083-e5182e768723,0,1,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,0,1,54433668-4391-4dea-8baf-43e9aa1d624e,54433668-4391-4dea-8baf-43e9aa1d624e,0,1,fc309616-060a-42c3-8401-dfef0f359bc5,fc309616-060a-42c3-8401-dfef0f359bc5,0,1,b968398d-973d-4643-95a5-16633d7e48bc,b968398d-973d-4643-95a5-16633d7e48bc,0,1,b9507495-2536-4895-b68b-62acd74343f6,b9507495-2536-4895-b68b-62acd74343f6,0,1,e05a14cc-9051-4c38-9725-19856e36d260,e05a14cc-9051-4c38-9725-19856e36d260,0,1,8154aa0f-ecd6-4ab0-9498-56ef25486a55,8154aa0f-ecd6-4ab0-9498-56ef25486a55,0,1,9d6429f7-23da-4596-822a-04818deb3088,9d6429f7-23da-4596-822a-04818deb3088,0,1,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,0,1,acb533e7-4610-4f92-b548-1a4ff1a423d4,acb533e7-4610-4f92-b548-1a4ff1a423d4,0,1,8697999d-9cdb-43d8-979b-3f283daffdd3,8697999d-9cdb-43d8-979b-3f283daffdd3,0,1,23378687-249c-4ec6-99b8-b13fb04b8643,23378687-249c-4ec6-99b8-b13fb04b8643,0,1,66315b12-7abf-46e0-a994-894b827b1301,66315b12-7abf-46e0-a994-894b827b1301,0,1,dba174fb-8392-4451-8069-ae8145658e34,dba174fb-8392-4451-8069-ae8145658e34,0,1,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,0,1,4435d99d-a1df-43e6-97ab-5e651017c61d,4435d99d-a1df-43e6-97ab-5e651017c61d,0,1,2398d69d-ecdd-4d34-bdae-34ed5507a61e,2398d69d-ecdd-4d34-bdae-34ed5507a61e,0,1,a707035a-0172-4b55-b589-fa4a8be9b596,a707035a-0172-4b55-b589-fa4a8be9b596,0,1,c4456e94-8c76-49b1-b85a-433e0f65bdb0,c4456e94-8c76-49b1-b85a-433e0f65bdb0,0,1,4a347209-3a07-48ea-b407-6ee37f1d69f2,4a347209-3a07-48ea-b407-6ee37f1d69f2,0,1,e0a3fab1-3fe9-4927-840e-f983f72bdfc1,e0a3fab1-3fe9-4927-840e-f983f72bdfc1,0,1,df31eee8-387d-40d1-98df-1f7d8176b50e,df31eee8-387d-40d1-98df-1f7d8176b50e,0,1,c8364283-5525-4bef-8e96-abced54c6a4a,c8364283-5525-4bef-8e96-abced54c6a4a,0,1,40e2fb30-bb03-4178-a8eb-ddf48337ef23,40e2fb30-bb03-4178-a8eb-ddf48337ef23,0,1,1026fbcb-acd8-40dc-b638-6e02c6378c55,1026fbcb-acd8-40dc-b638-6e02c6378c55,0,1,dc9e2ba6-f4f1-493f-9054-cac633f239dd,dc9e2ba6-f4f1-493f-9054-cac633f239dd,0,1,7b95d0b1-c7b2-43b4-9119-320cb8912032,7b95d0b1-c7b2-43b4-9119-320cb8912032,0,1,004582b7-00aa-405e-8e24-ce76c945edae,004582b7-00aa-405e-8e24-ce76c945edae,0,1,97a9b005-a836-4308-8e63-0e00f6890baa,97a9b005-a836-4308-8e63-0e00f6890baa,0,1,98c34ada-0b78-41db-9183-6d7b9e466bde,98c34ada-0b78-41db-9183-6d7b9e466bde,0,1,fb688339-918e-40a1-8721-a26f3077973e,fb688339-918e-40a1-8721-a26f3077973e,0,1,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,0,1,079ba95c-8293-47e2-b8bd-7acf73c2d880,079ba95c-8293-47e2-b8bd-7acf73c2d880,0,1,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,0,1,a5f264a8-a547-4653-abb1-eb1666d527dc,a5f264a8-a547-4653-abb1-eb1666d527dc,0,1,dabae379-6356-497a-aab5-cf102f16a72a,dabae379-6356-497a-aab5-cf102f16a72a,0,1,337370e0-1021-4887-9d38-6c3833c90a5b,337370e0-1021-4887-9d38-6c3833c90a5b,0,1,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0,1,d6f01f1c-801b-4776-ae11-48236103f76a,d6f01f1c-801b-4776-ae11-48236103f76a,0,1,b6fe68cf-657b-40e0-af2e-247607a86519,b6fe68cf-657b-40e0-af2e-247607a86519,0,1,9b0b8191-94b7-428f-be86-e9e4cd24a72f,9b0b8191-94b7-428f-be86-e9e4cd24a72f,0,1,a923dbcb-7146-4445-ad17-f4a32c16a837,a923dbcb-7146-4445-ad17-f4a32c16a837,0,1,41dec792-1d1a-4e06-a54b-a86193b98225,41dec792-1d1a-4e06-a54b-a86193b98225,0,1,52257beb-3e0c-4681-b430-9690398cd13a,52257beb-3e0c-4681-b430-9690398cd13a,0,1,135e637c-c28e-4547-8da2-d897dca54cb2,135e637c-c28e-4547-8da2-d897dca54cb2,0,1,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,0,1,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,0,1,5356543a-db9a-4265-b83f-31d45544c8e6,5356543a-db9a-4265-b83f-31d45544c8e6,0,1,857dd311-9c6d-4dba-82d8-283d7b05b09e,857dd311-9c6d-4dba-82d8-283d7b05b09e,0,1,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,0,1,af88ea84-5742-4c9f-9a02-6d0f25186f72,af88ea84-5742-4c9f-9a02-6d0f25186f72,0,1,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,79ad09ba-875a-46bd-9cd9-9d084bf4f6ea,0,1,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,0,1,872521e3-413c-45ac-a6ea-39fe1324bae8,872521e3-413c-45ac-a6ea-39fe1324bae8,0,1,81ef02df-498d-4af0-8254-dc6730cbf140,81ef02df-498d-4af0-8254-dc6730cbf140,0,1,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,bcbdba9e-0b29-4ea7-a7d5-1de819bf86ec,0,1,fe926c88-d792-4db3-abcf-3c94dfdcc407,fe926c88-d792-4db3-abcf-3c94dfdcc407,0,1,e0c51555-1614-4aa7-a075-c5e1251579ba,e0c51555-1614-4aa7-a075-c5e1251579ba,0,1,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,cb65fbad-69a0-47d8-b4a9-da49274c3eb7,0,1,51363236-c8eb-4eb7-9692-5c18edc9a5a8,51363236-c8eb-4eb7-9692-5c18edc9a5a8,0,1,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,0,1,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,0,1,2902460a-ed86-41cf-8e8f-895adab9a72f,2902460a-ed86-41cf-8e8f-895adab9a72f,0,1,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,0,1,f82d5bd6-4c74-4c23-978c-565aae3d752a,f82d5bd6-4c74-4c23-978c-565aae3d752a,0,1,7fba41a5-4faa-412b-b367-b30ced0314c0,7fba41a5-4faa-412b-b367-b30ced0314c0,0,1,98422d20-9a71-40e4-966e-6958d44eaefb,98422d20-9a71-40e4-966e-6958d44eaefb,0,1,37333d0b-3589-4b8b-bf6c-e605e0287b66,37333d0b-3589-4b8b-bf6c-e605e0287b66,0,1,1813c469-da20-46a6-8947-6815b66f64c1,1813c469-da20-46a6-8947-6815b66f64c1,0,1,ad083c26-7461-4e94-b524-0174242fbd91,ad083c26-7461-4e94-b524-0174242fbd91,0,1,5ce39370-f918-493f-bb24-53346b6fd836,5ce39370-f918-493f-bb24-53346b6fd836,0,1,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,0,1,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0,1,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,0,1,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,0,1,a76b1fd1-ba00-40e6-8756-f17fee449818,a76b1fd1-ba00-40e6-8756-f17fee449818,0,1,5c913626-48d1-4e0a-a423-64078ce59c7b,5c913626-48d1-4e0a-a423-64078ce59c7b,0,1,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0,1,7b0ec304-1904-413e-a9c6-ff62e87107dd,7b0ec304-1904-413e-a9c6-ff62e87107dd,0,1,d4dd8c96-914d-496f-b735-ef85ec473605,d4dd8c96-914d-496f-b735-ef85ec473605,0,1,62517db4-59e6-4945-bcd6-b3f1845572bf,62517db4-59e6-4945-bcd6-b3f1845572bf,0,1,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,0,1,f0f72149-0e7f-441a-b70d-8f47d4977927,f0f72149-0e7f-441a-b70d-8f47d4977927,0,1,776efc3e-ac27-4550-bafd-6e91aa987af2,776efc3e-ac27-4550-bafd-6e91aa987af2,0,1,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,0,1,cc438366-85ea-48be-8b74-d05cddb1fc51,cc438366-85ea-48be-8b74-d05cddb1fc51,0,1,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,0,1,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,0,1,3271b800-1825-422f-97bb-757baf403e90,3271b800-1825-422f-97bb-757baf403e90,0,1,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,0,1,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,0,1,a040c756-4687-4bfd-a690-b122d3c490e5,a040c756-4687-4bfd-a690-b122d3c490e5,0,1,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,0,1,961a9801-3956-4ea0-b0d3-908f09bf4929,961a9801-3956-4ea0-b0d3-908f09bf4929,0,1,6fac5c14-e126-4342-9078-edf1d0efcbf2,6fac5c14-e126-4342-9078-edf1d0efcbf2,0,1,0a3325a1-21c4-4997-882f-4ac2edc175f0,0a3325a1-21c4-4997-882f-4ac2edc175f0,0,1,f0620d5a-e1fe-419f-af37-e0f462f97e8d,f0620d5a-e1fe-419f-af37-e0f462f97e8d,0,1,3e2f2ae1-c809-43fc-8276-b0a16a92858c,3e2f2ae1-c809-43fc-8276-b0a16a92858c,0,1,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,0,1,1a7c7427-bead-4655-9dd6-df6e722663c5,1a7c7427-bead-4655-9dd6-df6e722663c5,0,1,3ad08f4a-6202-4099-b6cc-bc116e6731a0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,0,1,fd96c8ab-602a-4735-b168-52b501e80351,fd96c8ab-602a-4735-b168-52b501e80351,0,1,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,0,1,370f0c75-d2c5-4be5-a633-4bcc77998ece,370f0c75-d2c5-4be5-a633-4bcc77998ece,0,1,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,0,1,2139532c-f6cb-4393-936e-cc912e5adca9,2139532c-f6cb-4393-936e-cc912e5adca9,0,1,755c3eca-4956-4a44-9b38-c11dae00b87f,755c3eca-4956-4a44-9b38-c11dae00b87f,0,1,f57c558c-2c94-4b9d-8697-448d0548ab1a,f57c558c-2c94-4b9d-8697-448d0548ab1a,0,1,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,0,1,c32db021-eca1-4b67-aa85-3d6e28c51b53,c32db021-eca1-4b67-aa85-3d6e28c51b53,0,1,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,0,1,02466dcf-02a1-4853-814f-a913a9baba45,02466dcf-02a1-4853-814f-a913a9baba45,0,1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,0,1,62b75eb2-42e1-4484-a77f-b676dd36f3d4,62b75eb2-42e1-4484-a77f-b676dd36f3d4,0,1,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,0,1,856510ee-74f5-44e9-a3c0-1c60cfb7a787,856510ee-74f5-44e9-a3c0-1c60cfb7a787,0,1,28b761c6-c286-4125-a4ed-da602e49950f,28b761c6-c286-4125-a4ed-da602e49950f,0,1,4ac66a22-c736-4e06-a8aa-ef4a71788c65,4ac66a22-c736-4e06-a8aa-ef4a71788c65,0,1,9cfe9281-8840-4077-824d-a2c9cbb0b730,9cfe9281-8840-4077-824d-a2c9cbb0b730,0,1,76389fa9-b9e0-492e-9c93-24b5f3bf094c,76389fa9-b9e0-492e-9c93-24b5f3bf094c,0,1,23e3de37-9315-45e6-bbfd-60aae28c25ae,23e3de37-9315-45e6-bbfd-60aae28c25ae,0,1,a9957f43-8b6f-4d98-a2d8-77b78047494c,a9957f43-8b6f-4d98-a2d8-77b78047494c,0,1,e470e15d-1b06-43cb-a9f9-ba489e2f596f,e470e15d-1b06-43cb-a9f9-ba489e2f596f,0,1,0408002c-9255-43a2-8022-82f02ee0e8f4,0408002c-9255-43a2-8022-82f02ee0e8f4,0,1,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,0,1,1851afd4-5324-45c1-b754-54e65943f945,1851afd4-5324-45c1-b754-54e65943f945,0,1,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,0,1,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,0,1,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0,1,c322dc4a-30f3-4d23-9824-4a01c496408d,c322dc4a-30f3-4d23-9824-4a01c496408d,0,1,dcff004c-1b61-4a19-b977-ea21bf688614,dcff004c-1b61-4a19-b977-ea21bf688614,0,0,0,1,0,0,0,1,0,1,0,1,1,1,1}
\ No newline at end of file
diff --git a/SSL/src/Constants/ПараметрыБазовойФункциональности/ValueManagerModule.bsl b/SSL/src/Constants/ПараметрыБазовойФункциональности/ValueManagerModule.bsl
deleted file mode 100644
index e69de29bb..000000000
diff --git a/SSL/src/Constants/ПараметрыБазовойФункциональности/ПараметрыБазовойФункциональности.mdo b/SSL/src/Constants/ПараметрыБазовойФункциональности/ПараметрыБазовойФункциональности.mdo
deleted file mode 100644
index dea311495..000000000
--- a/SSL/src/Constants/ПараметрыБазовойФункциональности/ПараметрыБазовойФункциональности.mdo
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
- ПараметрыБазовойФункциональности
-
- ru
- Параметры базовой функциональности
-
-
- ValueStorage
-
-
-
- Managed
-
diff --git a/SSL/src/Constants/ПараметрыОграниченияДоступа/ValueManagerModule.bsl b/SSL/src/Constants/ПараметрыОграниченияДоступа/ValueManagerModule.bsl
index 280fe6b7e..63bc8dec3 100644
--- a/SSL/src/Constants/ПараметрыОграниченияДоступа/ValueManagerModule.bsl
+++ b/SSL/src/Constants/ПараметрыОграниченияДоступа/ValueManagerModule.bsl
@@ -296,8 +296,7 @@
|необходимый для перехода на новые версии программы
|не указан в определяемом типе ""Значение доступа"".'");
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- Параметры.ЗаголовокОшибки + ОписаниеОшибки);
+ ВызватьИсключение Параметры.ЗаголовокОшибки + ОписаниеОшибки;
КонецЕсли;
Возврат ОбщегоНазначения.ФиксированныеДанные(СвойстваВидовДоступа);
diff --git a/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl b/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl
index 96f7f3462..c01ccbd69 100644
--- a/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl
+++ b/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl
@@ -19,10 +19,7 @@
УстановитьМонопольныйРежим(Истина);
КонецЕсли;
- НеразделенныеДанныеДоступныеДляИзменения = НеразделенныеДанныеДоступныеДляИзменения();
-
- НедоступныеРолиПоТипамПользователей = НедоступныеРолиПоТипамПользователей(
- НеразделенныеДанныеДоступныеДляИзменения.Таблица);
+ НедоступныеРолиПоТипамПользователей = НедоступныеРолиПоТипамПользователей();
ВсеРоли = ВсеРоли();
@@ -37,34 +34,6 @@
Параметры = СтандартныеПодсистемыСервер.ПараметрыРаботыПрограммы(
"ПараметрыРаботыПользователей");
- // Проверка и обновление параметра НеразделенныеДанныеДоступныеДляИзменения.
- Сохраненные = Неопределено;
-
- Если Параметры.Свойство("НеразделенныеДанныеДоступныеДляИзменения") Тогда
- Сохраненные = Параметры.НеразделенныеДанныеДоступныеДляИзменения;
-
- Если НЕ ОбщегоНазначения.ДанныеСовпадают(
- НеразделенныеДанныеДоступныеДляИзменения.ПоРолям, Сохраненные) Тогда
-
- Сохраненные = Неопределено;
- КонецЕсли;
- КонецЕсли;
-
- Если Сохраненные = Неопределено Тогда
- ЕстьИзменения = Истина;
- Если ТолькоПроверка Тогда
- ЗафиксироватьТранзакцию();
- Возврат;
- КонецЕсли;
- СтандартныеПодсистемыСервер.УстановитьПараметрРаботыПрограммы(
- "ПараметрыРаботыПользователей",
- "НеразделенныеДанныеДоступныеДляИзменения",
- НеразделенныеДанныеДоступныеДляИзменения.ПоРолям);
- КонецЕсли;
-
- СтандартныеПодсистемыСервер.ПодтвердитьОбновлениеПараметраРаботыПрограммы(
- "ПараметрыРаботыПользователей", "НеразделенныеДанныеДоступныеДляИзменения");
-
// Проверка и обновление параметра НедоступныеРолиПоТипамПользователей.
Сохраненные = Неопределено;
@@ -138,10 +107,12 @@
#Область СлужебныеПроцедурыИФункции
-Функция НедоступныеРолиПоТипамПользователей(НеразделенныеДанныеДоступныеДляИзменения)
+Функция НедоступныеРолиПоТипамПользователей()
НедоступныеПрава = НедоступныеПраваПоТипамПользователей();
РазрешеноИзменениеОбщихДанных = РазрешеноИзменениеОбщихДанных();
+ НеразделенныеДанныеДоступныеДляИзменения = НеразделенныеДанныеДоступныеДляИзменения();
+
НедоступныеРолиПоТипамПользователей = Новый Соответствие;
@@ -192,15 +163,22 @@
// Возвращает таблицу полных имен неразделенных объектов метаданных и
// соответствующих им наборов прав доступа.
//
-// Параметры:
-// ИмяРоли - Строка.
-//
// Возвращаемое значение:
-// ТаблицаЗначений с колонками:
-// Имя - Строка - Полное имя объекта метаданных.
-// Право - Строка - Имя права доступа.
+// ТаблицаЗначений с колонками:
+// * Роль - Строка - Имя роли.
+// * Объект - Строка - Полное имя объекта метаданных.
+// * Право - Строка - Имя права доступа.
//
-Функция НеразделенныеДанныеДоступныеДляИзменения()
+Функция НеразделенныеДанныеДоступныеДляИзменения() Экспорт
+
+ ОбщаяТаблица = Новый ТаблицаЗначений;
+ ОбщаяТаблица.Колонки.Добавить("Роль", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
+ ОбщаяТаблица.Колонки.Добавить("Объект", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
+ ОбщаяТаблица.Колонки.Добавить("Право", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
+
+ Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда
+ Возврат ОбщаяТаблица;
+ КонецЕсли;
ВидыМетаданных = Новый Массив;
ВидыМетаданных.Добавить(Новый Структура("Вид, Ссылочный" , Метаданные.ПланыОбмена, Истина));
@@ -223,76 +201,53 @@
ПроверяемыеПрава.Добавить(Новый Структура("Имя, Ссылочное", "Добавление", Истина));
ПроверяемыеПрава.Добавить(Новый Структура("Имя, Ссылочное", "Удаление", Истина));
- ОбщаяТаблица = Новый ТаблицаЗначений;
- ОбщаяТаблица.Колонки.Добавить("Роль", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
- ОбщаяТаблица.Колонки.Добавить("Объект", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
- ОбщаяТаблица.Колонки.Добавить("Право", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
-
- ПоРолям = Новый Соответствие;
-
УстановитьПривилегированныйРежим(Истина);
- Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда
+ МодульРаботаВМоделиСервисаПовтИсп = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервисаПовтИсп");
+ МодельДанных = МодульРаботаВМоделиСервисаПовтИсп.ПолучитьМодельДанныхОбласти();
+
+ РазделенныеОбъектыМетаданных = Новый Соответствие();
+ Для Каждого ЭлементМоделиДанных Из МодельДанных Цикл
- МодульРаботаВМоделиСервисаПовтИсп = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервисаПовтИсп");
- МодельДанных = МодульРаботаВМоделиСервисаПовтИсп.ПолучитьМодельДанныхОбласти();
+ РазделенныеОбъектыМетаданных.Вставить(
+ Метаданные.НайтиПоПолномуИмени(ЭлементМоделиДанных.Ключ), Истина);
- РазделенныеОбъектыМетаданных = Новый Соответствие();
- Для Каждого ЭлементМоделиДанных Из МодельДанных Цикл
+ КонецЦикла;
+
+ Для Каждого ОписаниеВида Из ВидыМетаданных Цикл // По видам метаданных.
+ Для Каждого ОбъектМетаданных Из ОписаниеВида.Вид Цикл // По объектам вида.
- РазделенныеОбъектыМетаданных.Вставить(ЭлементМоделиДанных.Ключ, Истина);
+ Если РазделенныеОбъектыМетаданных.Получить(ОбъектМетаданных) <> Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
- КонецЦикла;
-
- Для каждого Роль Из Метаданные.Роли Цикл
- ИмяРоли = Роль.Имя;
-
- ТаблицаОбъектов = Новый ТаблицаЗначений;
- ТаблицаОбъектов.Колонки.Добавить("Объект", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
- ТаблицаОбъектов.Колонки.Добавить("Право", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
-
- Для Каждого ОписаниеВида Из ВидыМетаданных Цикл // По видам метаданных.
- Для Каждого ОбъектМетаданных Из ОписаниеВида.Вид Цикл // По объектам вида.
-
- ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя();
- Если РазделенныеОбъектыМетаданных.Получить(ПолноеИмяОбъектаМетаданных) = Неопределено Тогда
+ Для каждого Роль Из Метаданные.Роли Цикл
+
+ Если Не ПравоДоступа("Чтение", ОбъектМетаданных, Роль) Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Для каждого ОписаниеПрава Из ПроверяемыеПрава Цикл
+ Если НЕ ОписаниеПрава.Ссылочное
+ ИЛИ ОписаниеВида.Ссылочный Тогда
- Для каждого ОписаниеПрава Из ПроверяемыеПрава Цикл
- Если НЕ ОписаниеПрава.Ссылочное
- ИЛИ ОписаниеВида.Ссылочный Тогда
-
- Если ПравоДоступа(ОписаниеПрава.Имя, ОбъектМетаданных, Роль) Тогда
- // Общая таблица объектов по ролей.
- СтрокаПрава = ОбщаяТаблица.Добавить();
- СтрокаПрава.Роль = ИмяРоли;
- СтрокаПрава.Объект = ПолноеИмяОбъектаМетаданных;
- СтрокаПрава.Право = ОписаниеПрава.Имя;
- // Таблица объектов по ролям.
- СтрокаПрава = ТаблицаОбъектов.Добавить();
- СтрокаПрава.Объект = ПолноеИмяОбъектаМетаданных;
- СтрокаПрава.Право = ОписаниеПрава.Имя;
- КонецЕсли;
-
- КонецЕсли;
- КонецЦикла;
+ Если ПравоДоступа(ОписаниеПрава.Имя, ОбъектМетаданных, Роль) Тогда
+ // Общая таблица объектов по ролям.
+ СтрокаПрава = ОбщаяТаблица.Добавить();
+ СтрокаПрава.Роль = Роль.Имя;
+ СтрокаПрава.Объект = ОбъектМетаданных.ПолноеИмя();
+ СтрокаПрава.Право = ОписаниеПрава.Имя;
+ КонецЕсли;
КонецЕсли;
КонецЦикла;
+
КонецЦикла;
- Если ТаблицаОбъектов.Количество() > 0 Тогда
- ПоРолям.Вставить(ИмяРоли, ТаблицаОбъектов);
- КонецЕсли;
КонецЦикла;
-
- КонецЕсли;
+ КонецЦикла;
ОбщаяТаблица.Индексы.Добавить("Роль");
-
- Итог = Новый Структура;
- Итог.Вставить("Таблица", ОбщаяТаблица);
- Итог.Вставить("ПоРолям", ПоРолям);
-
- Возврат Итог;
+ Возврат ОбщаяТаблица;
КонецФункции
@@ -364,4 +319,4 @@
#КонецОбласти
-#КонецЕсли
\ No newline at end of file
+#КонецЕсли
diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Form.form b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Form.form
index e77f72778..5f76bfa39 100644
--- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Form.form
@@ -402,7 +402,7 @@
ПриСозданииНаСервере50
- DontBlock
+ LockOwnertruetruetrue
diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html
index de8b4f8a1..b051ca6ea 100644
--- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html
+++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html
@@ -1,3 +1,14 @@
-
-
Если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows нужно запустить тонкий или толстый клиент, и на нем открыть обработку «Автоматическое извлечение текстов». Эта обработка в автоматическом режиме будет извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.
Предназначена для управления автоматическим извлечением текстов.
+
Если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows, нужно запустить тонкий или толстый клиент, и на нем выполнить команду Управление полнотекстовым поиском - Запустить извлечение текстов в разделе Администрирование - Поддержка и обслуживание - Регламентные операции. Также можно выполнить команду Автоматическое извлечение текстов панели действий раздела Органайзер.
+
Настройка параметров
+
Установите Интервал времени выполнения - по умолчанию интервал времени выполнения равен 60 секундам;
+
Определите Количество файлов в одной порции - по умолчанию равно 100;
+
Количество файлов с неизвлеченным текстом - программа подсчитывает автоматически.
Извлечение текстов
+
Извлечение текстов можно производить:
+
+
порциями.
+
Нажмите Старт, для того чтобы начать извлечение текстов установленными порциями с возможностью прервать процесс;
+
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/АвтоматическоеИзвлечениеТекстов.mdo b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/АвтоматическоеИзвлечениеТекстов.mdo
index 6827329cf..a6b87fa11 100644
--- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/АвтоматическоеИзвлечениеТекстов.mdo
+++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/АвтоматическоеИзвлечениеТекстов.mdo
@@ -10,6 +10,7 @@
Автоматическое извлечение текстовDataProcessor.АвтоматическоеИзвлечениеТекстов.Form.Форма
+ trueru
diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html
index de8b4f8a1..44afc1ac8 100644
--- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html
+++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html
@@ -1,3 +1,3 @@
-
+
Если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows нужно запустить тонкий или толстый клиент, и на нем открыть обработку «Автоматическое извлечение текстов». Эта обработка в автоматическом режиме будет извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.
Содержит список пользователей, работающих в данный момент времени в программе.
В этом списке отображаются не только пользователи, работающие с информационной базой при помощи приложений "Тонкий клиент", "Веб-клиент" или "Конфигуратор", но и такие пользователи как "COM-соединение", "WS-соединение", "Фоновое задание" и т.п.
Список выводится по соответствующей команде раздела Администрирование - Поддержка и обслуживание.
diff --git a/SSL/src/DataProcessors/АктивныеПользователи/АктивныеПользователи.mdo b/SSL/src/DataProcessors/АктивныеПользователи/АктивныеПользователи.mdo
index 55fe06a78..1a0ba27fc 100644
--- a/SSL/src/DataProcessors/АктивныеПользователи/АктивныеПользователи.mdo
+++ b/SSL/src/DataProcessors/АктивныеПользователи/АктивныеПользователи.mdo
@@ -11,6 +11,7 @@
trueDataProcessor.АктивныеПользователи.Form.ФормаСпискаАктивныхПользователей
+ trueru
diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form
index a3b8a1cea..6a0a4ecab 100644
--- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form
@@ -128,7 +128,7 @@
UsualGroupAuto
- StrongSeparation
+ NormalSeparationtruetrueAuto
diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl
index 362072b08..3ece21169 100644
--- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl
@@ -196,12 +196,14 @@
И ТекущееЗначениеБлокировки <> Объект.ЗапретитьРаботуРегламентныхЗаданий Тогда
Попытка
+
Если КлиентПодключенЧерезВебСервер Тогда
УстановитьБлокировкуРегламентныхЗаданийНаСервере(ПараметрыАдминистрирования);
Иначе
АдминистрированиеКластераКлиентСервер.УстановитьБлокировкуРегламентныхЗаданийИнформационнойБазы(
ПараметрыАдминистрирования,, Объект.ЗапретитьРаботуРегламентныхЗаданий);
КонецЕсли;
+
Исключение
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СоединенияИБКлиентСервер.СобытиеЖурналаРегистрации(), "Ошибка",
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),, Истина);
@@ -580,13 +582,6 @@
КонецПроцедуры
-&НаСервере
-Функция БлокировкаРегламентныхЗаданийИнформационнойБазыНаСервере(ПараметрыАдминистрирования)
-
- Возврат АдминистрированиеКластераКлиентСервер.БлокировкаРегламентныхЗаданийИнформационнойБазы(ПараметрыАдминистрирования);
-
-КонецФункции
-
&НаСервере
Процедура УстановитьБлокировкуРегламентныхЗаданийНаСервере(ПараметрыАдминистрирования)
@@ -594,5 +589,12 @@
ПараметрыАдминистрирования,, Объект.ЗапретитьРаботуРегламентныхЗаданий);
КонецПроцедуры
+
+&НаСервере
+Функция БлокировкаРегламентныхЗаданийИнформационнойБазыНаСервере(ПараметрыАдминистрирования)
+
+ Возврат АдминистрированиеКластераКлиентСервер.БлокировкаРегламентныхЗаданийИнформационнойБазы(ПараметрыАдминистрирования);
+
+КонецФункции
#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html
index cecda1b81..007bccdbd 100644
--- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html
+++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Для администратора в программе предусмотрена возможность завершать работу всех активных пользователей (включая пользователя, инициировавшего блокировку) и блокировать вход в программу на определенный период времени.
Такая возможность востребована для проведения профилактических или срочных работ в программе. Обычно такие работы проводят в ночные часы, чтобы не затруднять работу в программе других пользователей. Однако бывают различные внеплановые ситуации. Например, необходимо провести обновление версии программы, восстановление программы после сбоя электроснабжения, резервное копирование информационной базы, или главному бухгалтеру необходимо срочно рассчитать сложный отчет. Большинство этих работ не могут быть проведены, если пользователи продолжают работать в программе.
При работе в клиент-серверном режиме имеется возможность блокировки работы регламентных заданий.
Форма предназначена для ввода адреса по шаблону. При заполнении формы возможно использование адресного классификатора.
-
Поле "Страна" позволяет выбрать страну адреса. Редактирование адресов за пределами России производится в общем поле, без учета частей адреса
-
Поле "Индекс" предназначено для ввода почтового индекса, соответствующего данному адресу.Если адрес найден а вдресном классификаторе, то индекс может быть проставлен автоматически.
-
Поле "Город, населенный пункт" предназначено для ввода региона, города и т.п. При необходимости можно выбрать или ввести части адреса детально, нажав на кнопку выбора.
-
Поле "Улица" предназначено для выбора или ввода улицы адреса.
-
Поля "Дом", "Корпус", "Квартира" позволяют ввести соответствующие части адреса. Можно изменить эти варианты, выбрав значения из выпадающего списка или добавить дополнительные поля для ввода других предопределенных частей адреса, таких как "Строение", "Литера", "Сооружение", "Участок", "Офис", "Бокс", "Помещение", "Комната". Для этого необходимо воспользоваться кнопкой "Добавить".
Например, для ввода адреса "Санкт-Петербург, Пискаревский проспект, дом 2, корпус 2, литера Щ, офис 12345" необходимо ввести:
-
В поле "Город, населенный пункт" - Санкт-Петербург г.
-
В поле "Улица" - Пискаревский пр-кт.
-
В поле значения "Дом" указать 2.
-
В поле значения "Корпус" - 2.
-
Для ввода литеры необходимо добавить поле кнопкой "Добавить", выбрать из выпадающего списка значение "Литера" и проставить в поле значение Щ.
-
Вместо "Квартира" выбрать из выпадающего списка значение "Офис" и ввести в поле значения 12345.
Аналогично, для ввода адреса, содержащего другие значения полей, например "Москва, улица Адмирала Лазарева, домовладение 89, корпус 16, строение 1 необходимо:
-
В поле "Город, населенный пункт" ввести Москва г.
-
В поле "Улица" - Адмирала Лазарева ул.
-
Вместо "Дом" выбрать из выпадающего списка значение "Домовладение", ввести в поле значения 89.
-
В поле значения "Корпус" указать 16.
-
Добавить поле кнопкой "Добавить", выбрать из выпадающего списка значение "Строение", проставить в поле значение 1.
Поле "Комментарий" позволяет указать произвольный комментарий к адресу, который не будет включаться в его представление и выводится на печать.
-
Кнопка "Проверить заполнение" анализирует корректность заполнения адреса и выводит список ошибок.
Из меню "Все действия" также доступны команды "Очистить адрес" и "Загрузить классификатор"
-
\ No newline at end of file
+
+
Предназначена для ввода адреса по шаблону. При заполнении возможно использование адресного классификатора.
+
В поле Страна выберите страну адреса. Редактирование адресов за пределами России производится в общем поле, без учета частей адреса. Страна "Россия" выбрана программой по умолчанию, при этом поле может быть недоступным в зависимости от настроек. Для того чтобы изменить страну, нажмите Выбрать. Выбор осуществляется из списка Классификатор стран мира (ОКСМ).
+
Поле Индекс предназначено для ввода почтового индекса, соответствующего данному адресу. Если адрес найден в адресном классификаторе, то индекс может быть проставлен автоматически. Также по индексу, если адресный классификатор по соответствующему региону загружен, можно заполнить адрес.
+
Поле Город, населенный пункт предназначено для ввода региона, города и т.п. При необходимости можно ввести части адреса детально, нажав Выбрать. В открывшемся шаблоне введите данные населенного пункта.
+
Поле Улица предназначено для выбора (нажмите кнопку Выбрать, в списке улиц найдите нужную) или ввода улицы адреса.
+
Поля Дом, Корпус, Квартира позволяют ввести соответствующие части адреса. Можно изменить эти варианты, выбрав дополнительные значения из выпадающего списка.
+
Также можно Добавить дополнительные поля для ввода других предопределенных частей адреса, таких как Строение, Литера, Сооружение, Участок, Офис, Бокс, Помещение, Комната.
+
Поле Представление адреса при заполнении адреса по шаблону недоступно, заполняется программой автоматически по мере заполнения полей адреса.
+
Поле Комментарий позволяет указать произвольный комментарий к адресу, который не будет включаться в его представление и выводится на печать.
Примеры заполнения адреса
+
Для ввода адреса "Санкт-Петербург, Пискаревский проспект, дом 2, корпус 2, литера Щ, офис 12345" необходимо:
+
В поле Город, населенный пункт выбрать "Санкт-Петербург г".
+
В поле Улица выбрать "Пискаревский пр-кт".
+
В поле Дом написать "2".
+
В поле Корпус написать "2".
+
Для ввода литеры необходимо Добавить поле, выбрать из выпадающего списка значение Литера и проставить в поле значение "Щ".
+
Вместо поля Квартира выбрать из выпадающего списка поле Офис и ввести значение "12345".
Для ввода адреса, содержащего другие значения полей, например "Москва, улица Адмирала Лазарева, домовладение 89, корпус 16, строение 1" необходимо:
+
В поле Город, населенный пункт выбрать "Москва г".
+
В поле Улица выбрать "Адмирала Лазарева ул".
+
Вместо поля Дом выбрать из выпадающего списка поле Домовладение, введите значение "89".
+
В поле Корпус написать "16".
+
Нажмите Добавить, выберите из выпадающего списка поле Строение, проставьте в поле "1".
Проверка заполнения адреса
+
Нажмите Проверить заполнение, для того чтобы проанализировать корректность заполнения адреса. Программа производит проверку:
+
на заполненность адреса;
+
на наличие недопустимых символов;
+
длины наименований реквизитов адреса;
+
на соответствие классификатору. В клиент-серверной базе проверка адреса на соответствие классификатору производится на сервере. После проверки правильности заполнения адреса программа выдает сообщение "Адрес введен корректно" или список ошибок. Проверка правильности невозможна для иностранных адресов, они не проверяются. Также команда становится недоступной, если адрес введен в свободной форме.
Ввод адреса в свободной форме
+
Воспользуйтесь этой командой меню Все действия (в интерфейсе Такси Еще), для того чтобы при вводе адреса по шаблону ввести заведомо некорректный адрес (например, с товаром на накладной неправильный адрес поставщика, его надо временно зафиксировать для печати, но в дальнейшем его использовать нельзя). Такой адрес используется для хранения, поэтому можно рекомендовать использовать его только для единичных случаев.
+
После выбора команды программой выводится сообщение с предупреждением: "Адреса, введенные в свободной форме, могут не пройти проверку по адресному классификатору". Для подтверждения выбора нажмите кнопку Да, для возврата к вводу адреса по шаблону нажмите Нет.
+
Выводится шаблон для ввода адреса, но все его поля, кроме полей Представление адреса и Комментарий, становятся неактивными. Заполните поле Представление адреса. При переходе к полю Комментарий или нажатии кнопки ОК заполняются те поля шаблона, которые программе удалось распознать в строке адреса (т.е. в этих полях нет ошибок). Проверка заполнения адреса в данном случае отключена.
+
Для подтверждения адреса нажмите ОК. Программой будет зафиксировано, что адрес заполнен в свободной форме и на просмотр адрес будет выводиться в таком виде.
Если известен индекс адреса и адресный классификатор по соответствующему региону загружен, то с помощью команды Все действия (в интерфейсе Такси Еще) - Заполнить по почтовому индексу имеется возможность по индексу найти адрес. Для выбора выводятся только те адреса, которые соответствуют введенному индексу. Выберите нужную часть адреса, дозаполните оставшиеся поля.
+
Очистка адреса
+
С помощью команды меню Все действия (в интерфейсе Такси нажмите Еще) - Очистить адрес можно стереть неправильно введенный адрес.
+
Загрузка классификатора
+
Выполните команду Все действия (в интерфейсе Такси Еще) - Загрузить классификатор. После проведения обновления адресного классификатора по выбранному региону можно продолжить редактирование адреса. При заполнении некоторых полей программа автоматически предлагает загрузить классификатор.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl
index ea84e9ae0..0c38f39c0 100644
--- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl
@@ -1,18 +1,21 @@
// Форма параметризуется:
//
-// Заголовок (строка) - заголовок формы
-// ЗначенияПолей (строка) - сериализованное значение контактной информации или пустая строка для
+// Заголовок - Строка - заголовок формы
+// ЗначенияПолей - Строка - сериализованное значение контактной информации или пустая строка для
// ввода нового
-// Представление (строка) - представление адреса (используется только при работе со старыми данными)
-// ВидКонтактнойИнформации - ссылка на справочник ВидыКонтактнойИнформации, описывающий то, что мы
-// редактируем или структура, совместимая по полям со справочником.
-// Комментарий (строка) - необязательный комментарий, для подстановки в поле "Комментарий"
+// Представление - Строка - представление адреса (используется только при работе со старыми данными)
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание того, что мы редактируем
+// Комментарий - Строка - необязательный комментарий, для подстановки в поле "Комментарий"
//
-// ВозвращатьСписокЗначений (булево) - необязательный флаг того, что возвращаемое значение поля
-// КонтактнаяИнформация будет иметь тип СписокЗначений (совместимость)
+// ВозвращатьСписокЗначений - Булево - необязательный флаг того, что возвращаемое значение поля
+// КонтактнаяИнформация будет иметь тип СписокЗначений (совместимость)
//
-// Результатом выбора является структура с полями:
-// "КонтактнаяИнформация, Представление, Комментарий, ВведеноВСвободнойФорме"
+// Результат выбора:
+// Структура - поля:
+// * КонтактнаяИнформация - Строка - XML контактной информации
+// * Представление - Строка - Представление
+// * Комментарий - Строка - Комментарий
+// * ВведеноВСвободнойФорме - Булево - флаг ввода
//
// -------------------------------------------------------------------------------------------------
@@ -40,8 +43,8 @@
СтранаРоссия = Справочники.СтраныМира.Россия;
- ВидКонтактнойИнформации = УправлениеКонтактнойИнформацией.СтруктураВидаКонтактнойИнформации();
- ЗаполнитьЗначенияСвойств(ВидКонтактнойИнформации, Параметры.ВидКонтактнойИнформации);
+ ВидКонтактнойИнформации = УправлениеКонтактнойИнформацией.СтруктураВидаКонтактнойИнформации(Параметры.ВидКонтактнойИнформации);
+ ВидКонтактнойИнформации.Вставить("Ссылка", Параметры.ВидКонтактнойИнформации);
// Заголовок
Если ПустаяСтрока(Параметры.Заголовок) Тогда
@@ -54,8 +57,6 @@
КонецЕсли;
// Режимы
- ПроверятьКорректность = ВидКонтактнойИнформации.ПроверятьКорректность;
- ЗапрещатьВводНекорректного = ВидКонтактнойИнформации.ЗапрещатьВводНекорректного;
МожноЗагружатьКлассификатор = КонтактнаяИнформацияСлужебный.ЕстьВозможностьИзмененияАдресногоКлассификатора();
ЕстьКлассификатор = Неопределено <> КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор();
@@ -135,7 +136,6 @@
КонецЕсли;
КонецЕсли;
Страна = СтранаРоссия;
- Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
@@ -169,15 +169,27 @@
Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда
МожноЗагружатьКлассификатор = Ложь;
- Иначе
- КнопкаПанели = Элементы.Добавить("ФормаЗагрузитьКлассификатор", Тип("КнопкаФормы"));
- КнопкаПанели.ИмяКоманды = "ЗагрузитьКлассификатор";
- Элементы.Переместить(КнопкаПанели, Элементы.ФормаВсеДействия, Элементы.ФормаСтандартныеДействия);
- Элементы.ФормаЗагрузитьКлассификатор.Видимость = МожноЗагружатьКлассификатор;
КонецЕсли;
+ Элементы.ЗагрузитьКлассификатор.Видимость = МожноЗагружатьКлассификатор;
+ Элементы.ЗагрузитьКлассификаторВсеДействия.Видимость = МожноЗагружатьКлассификатор;
Если Не ЕстьКлассификатор Тогда
+ Элементы.ЗаполнитьПоПочтовомуИндексу.Видимость = Ложь;
+ Элементы.ЗаполнитьПоПочтовомуИндексуВсеДействия.Видимость = Ложь;
+ КонецЕсли;
+
+ // По умолчанию выводим представление
+ Элементы.АдресПредставлениеКомментарий.ТекущаяСтраница = Элементы.АдресСтраницаПредставление;
+
+ // Группа команд "все действия" зависит от интерфейса
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
+ Элементы.ФормаВсеДействия.Видимость = Ложь;
+ Иначе
+ Элементы.ВвестиАдресВСвободнойФорме.Видимость = Ложь;
Элементы.ЗаполнитьПоПочтовомуИндексу.Видимость = Ложь;
+ Элементы.ФормаОчиститьАдрес.Видимость = Ложь;
+ Элементы.ЗагрузитьКлассификатор.Видимость = Ложь;
+ Элементы.ИзменитьФорму.Видимость = Ложь;
КонецЕсли;
УстановитьКлючИспользованияФормы();
@@ -185,6 +197,8 @@
&НаКлиенте
Процедура ПриОткрытии(Отказ)
+ УстановитьПиктограммуКомментария();
+
Элементы.ДобавитьОбъект.Доступность = МожноДобавлятьДополнительныеОбъекты();
ОбработкаИзмененияСтраныКлиент();
@@ -205,7 +219,6 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
-//
&НаКлиенте
Процедура СтранаПриИзменении(Элемент)
@@ -219,12 +232,16 @@
// Обход особенности платформы
Элемент.ОбновитьТекстРедактирования();
#КонецЕсли
-
+
+ // Выводим всегда представление
+ Элементы.АдресПредставлениеКомментарий.ТекущаяСтраница = Элементы.АдресСтраницаПредставление;
КонецПроцедуры
&НаКлиенте
Процедура СтранаОчистка(Элемент, СтандартнаяОбработка)
+
СтандартнаяОбработка = Ложь;
+
КонецПроцедуры
&НаКлиенте
@@ -243,12 +260,15 @@
&НаКлиенте
Процедура СтранаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
+ Если ПустаяСтрока(Текст) Тогда
+ СтандартнаяОбработка = Ложь;
+ КонецЕсли;
+
#Если ВебКлиент Тогда
// Обход особенности платформы
СтандартнаяОбработка = Ложь;
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.Добавить(Страна);
- Возврат;
#КонецЕсли
КонецПроцедуры
@@ -312,6 +332,13 @@
ЗаполнитьПредставлениеАдреса(Контекст);
КонецПроцедуры
+&НаКлиенте
+Процедура КомментарийПриИзменении(Элемент)
+
+ УстановитьПиктограммуКомментария();
+
+КонецПроцедуры
+
&НаКлиенте
Процедура ТипДомаПриИзменении(Элемент)
Контекст = КонтекстФормыКлиент();
@@ -427,8 +454,9 @@
Если МожноЗагружатьКлассификатор И РегионНеЗагружен Тогда
// Предлагаем загрузить классификатор
УправлениеКонтактнойИнформациейКлиент.ПредложениеЗагрузкиКлассификатора(
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление));
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление),
+ ВыбранноеЗначение.Представление
+ );
КонецЕсли;
Иначе
@@ -520,13 +548,13 @@
Улица = Элемент.ТекстРедактирования;
КонецЕсли;
- Если КодКлассификатораНаселенногоПункта>0 Тогда
- ПараметрыФормы = Новый Структура("СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица",
- СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица);
+ Если КодКлассификатораНаселенногоПункта > 0 Тогда
+ ПараметрыФормы = Новый Структура("СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица, ДополнительнаяТерритория",
+ СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица, ДополнительнаяТерритория);
Иначе
// Родитель улицы неопределен, открываем форму в которой ничего нет
- ПараметрыФормы = Новый Структура("СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица, Заголовок",
- СкрыватьНеактуальныеАдреса, -1, Улица, НаселенныйПункт + " " + НСтр("ru = '(не найден)'"));
+ ПараметрыФормы = Новый Структура("СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица, Заголовок, ДополнительнаяТерритория",
+ СкрыватьНеактуальныеАдреса, -1, Улица, НаселенныйПункт + " " + НСтр("ru = '(не найден)'"), ДополнительнаяТерритория);
КонецЕсли;
УправлениеКонтактнойИнформациейКлиент.НачалоВыбораУлицы(Элемент, КодКлассификатораНаселенногоПункта, Улица, ПараметрыФормы);
@@ -609,19 +637,15 @@
ПредставлениеАдресаПриИзмененииСервер();
КонецПроцедуры
-&НаКлиенте
-Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
- ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект, "Комментарий")
-КонецПроцедуры
-
#КонецОбласти
#Область ОбработчикиКомандФормы
-//
&НаКлиенте
Процедура КомандаОК(Команда)
+
ПодтвердитьИЗакрыть();
+
КонецПроцедуры
&НаКлиенте
@@ -701,7 +725,17 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-//
+
+&НаКлиенте
+Процедура УстановитьПиктограммуКомментария()
+
+ Если ПустаяСтрока(Комментарий) Тогда
+ Элементы.АдресСтраницаКомментарий.Картинка = Новый Картинка;
+ Иначе
+ Элементы.АдресСтраницаКомментарий.Картинка = БиблиотекаКартинок.Комментарий;
+ КонецЕсли;
+
+КонецПроцедуры
&НаКлиенте
Процедура ПодтвердитьИЗакрыть(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
@@ -711,10 +745,14 @@
// Изменено значение адреса
Контекст = КонтекстФормыКлиент();
- Результат = РезультатВыбора(Контекст, ВозвращатьСписокЗначений);
- Если ПроверятьКорректность И (Не РазрешитьВводАдресаВСвободнойФорме) И Результат.ОшибкиЗаполнения.Количество()>0 Тогда
+ Результат = РезультатаВыбораПоОбновлениюФлагов(Контекст, ВозвращатьСписокЗначений);
+
+ // Флаги вида были прочитаны заново
+ ВидКонтактнойИнформации = Контекст.ВидКонтактнойИнформации;
+
+ Если ВидКонтактнойИнформации.ПроверятьКорректность И (Не РазрешитьВводАдресаВСвободнойФорме) И Результат.ОшибкиЗаполнения.Количество()>0 Тогда
СообщитьОбОшибкахЗаполнения(Результат.ОшибкиЗаполнения, Ложь);
- Если ЗапрещатьВводНекорректного Тогда
+ Если ВидКонтактнойИнформации.ЗапрещатьВводНекорректного Тогда
Возврат;
КонецЕсли;
КонецЕсли;
@@ -732,7 +770,7 @@
#КонецЕсли
СохранитьСостояниеФормы();
- ИначеЕсли Комментарий<>КопияКомментария Тогда
+ ИначеЕсли Комментарий <> КопияКомментария Тогда
// Изменен только комментарий, пробуем вернуть обновленное
Результат = РезультатВыбораТолькоКомментария(Параметры.ЗначенияПолей, Параметры.Представление, Комментарий);
Результат = Результат.ДанныеВыбора;
@@ -821,18 +859,32 @@
КонецПроцедуры
&НаСервереБезКонтекста
-Функция РезультатВыбора(Контекст, ВозвращатьСписокЗначений=Ложь)
+Функция РезультатаВыбораПоОбновлениюФлагов(Контекст, ВозвращатьСписокЗначений = Ложь)
+ // Обновляем некоторые флаги
+ ЗначениеФлагов = УправлениеКонтактнойИнформацией.СтруктураВидаКонтактнойИнформации(Контекст.ВидКонтактнойИнформации.Ссылка);
+
+ Контекст.ВидКонтактнойИнформации.АдресТолькоРоссийский = ЗначениеФлагов.АдресТолькоРоссийский;
+ Контекст.ВидКонтактнойИнформации.ЗапрещатьВводНекорректного = ЗначениеФлагов.ЗапрещатьВводНекорректного;
+ Контекст.ВидКонтактнойИнформации.ПроверятьКорректность = ЗначениеФлагов.ПроверятьКорректность;
+
+ Возврат РезультатВыбора(Контекст, ВозвращатьСписокЗначений);
+КонецФункции
+
+&НаСервереБезКонтекста
+Функция РезультатВыбора(Контекст, ВозвращатьСписокЗначений = Ложь)
XDTOИнформация = КонтактнаяИнформацияПоЗначениюРеквизитов(Контекст);
Результат = Новый Структура("ДанныеВыбора, ОшибкиЗаполнения");
Если ВозвращатьСписокЗначений Тогда
ДанныеВыбора = КонтактнаяИнформацияСлужебный.КонтактнаяИнформацияВСтаруюСтруктуру(XDTOИнформация);
ДанныеВыбора = ДанныеВыбора.ЗначенияПолей;
- ИначеЕсли Контекст.Страна<>Контекст.СтранаРоссия И ПустаяСтрока(Контекст.ПредставлениеИностранногоАдреса) Тогда
- // Иностранный адрес с пустой страной, вернем чистый адрес
+
+ ИначеЕсли Контекст.Страна = Контекст.СтранаРоссия И ПустаяСтрока(XDTOИнформация.Представление) Тогда
ДанныеВыбора = "";
+
Иначе
ДанныеВыбора = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(XDTOИнформация);
+
КонецЕсли;
Результат.ДанныеВыбора = Новый Структура("КонтактнаяИнформация, Представление, Комментарий, ВведеноВСвободнойФорме",
@@ -967,8 +1019,12 @@
// Проверять, вводить в свободной форме и искать по индексу можем только российские адреса
Элементы.ПроверитьЗаполнениеАдреса.Доступность = ЭтоРоссийскийАдрес;
- Элементы.ВвестиАдресВСвободнойФорме.Доступность = ЭтоРоссийскийАдрес;
- Элементы.ЗаполнитьПоПочтовомуИндексу.Доступность = ЭтоРоссийскийАдрес;
+
+ Элементы.ВвестиАдресВСвободнойФорме.Доступность = ЭтоРоссийскийАдрес;
+ Элементы.ВвестиАдресВСвободнойФормеВсеДействия.Доступность = ЭтоРоссийскийАдрес;
+
+ Элементы.ЗаполнитьПоПочтовомуИндексу.Доступность = ЭтоРоссийскийАдрес;
+ Элементы.ЗаполнитьПоПочтовомуИндексуВсеДействия.Доступность = ЭтоРоссийскийАдрес;
// Загружать можем только российские адреса
Если МожноЗагружатьКлассификатор Тогда
@@ -1124,10 +1180,12 @@
Контекст.Индекс = Формат(КонтактнаяИнформацияСлужебный.ПочтовыйИндексАдреса(ДанныеАдреса), "ЧГ=");
// Синтетический "Населенный пункт" получаем как представление
- Контекст.НаселенныйПункт = КонтактнаяИнформацияСлужебный.ПредставлениеНаселенногоПункта(ДанныеАдреса);
+ НаселенныйПунктПолноеПредставление = КонтактнаяИнформацияСлужебный.ПредставлениеНаселенногоПункта(ДанныеАдреса, Ложь);
+ Контекст.НаселенныйПункт = НаселенныйПунктПолноеПредставление;
Контекст.Улица = КонтактнаяИнформацияСлужебный.ПредставлениеУлицы(ДанныеАдреса);
- АнализКлассификатора = КонтактнаяИнформацияСлужебный.НаселенныеПунктыПоПредставлению(Контекст.НаселенныйПункт, , , Контекст.Улица);
+ НаселенныйПунктВФорматеКЛАДР = КонтактнаяИнформацияСлужебный.ПредставлениеНаселенногоПункта(ДанныеАдреса);
+ АнализКлассификатора = КонтактнаяИнформацияСлужебный.НаселенныеПунктыПоПредставлению(НаселенныйПунктВФорматеКЛАДР, , , Контекст.Улица);
НайденоНаселенных = АнализКлассификатора.ДанныеВыбора.Количество();
Если НайденоНаселенных = 0 Тогда
// Не нашли, наименование населенного пункта не трогаем
@@ -1139,26 +1197,41 @@
ВыбранноеЗначение = АнализКлассификатора.ДанныеВыбора[0].Значение.Значение;
Контекст.КодКлассификатораНаселенногоПункта = ВыбранноеЗначение.Код;
Контекст.НаселенныйПунктНайденТочно = Истина;
- Контекст.НаселенныйПункт = ВыбранноеЗначение.Представление;
+ Контекст.НаселенныйПункт = НаселенныйПунктПолноеПредставление;
КонецЕсли;
СформироватьДетальныйНаселенныйПункт(Контекст, ДанныеАдреса);
- // Синтетическую "Улицу" получаем как представление
-
- АнализКлассификатора = КонтактнаяИнформацияСлужебный.УлицыПоПредставлению(Контекст.КодКлассификатораНаселенногоПункта, Контекст.Улица);
- НайденоУлиц = АнализКлассификатора.ДанныеВыбора.Количество();
- Если НайденоУлиц = 1 Тогда
- // Найдено точно
- ВыбранноеЗначение = АнализКлассификатора.ДанныеВыбора[0].Значение.Значение;
- Контекст.КодКлассификатораУлицы = ВыбранноеЗначение.Код;
- Контекст.УлицаНайденаТочно = Истина;
- Контекст.Улица = ВыбранноеЗначение.Представление;
- Иначе
- // Не найдено или найдено несколько, наименование улицы не трогаем
- Контекст.КодКлассификатораУлицы = 0;
- Контекст.УлицаНайденаТочно = Ложь;
+ УлицаОпределена = Ложь;
+ ДополнительнаяТерритория = "";
+ Если ДанныеАдреса.Состав <> Неопределено И ТипЗнч(ДанныеАдреса.Состав) <> Тип("Строка") Тогда
+ Свойство = КонтактнаяИнформацияСлужебный.ЗначениеСвойстваПоXPath(ДанныеАдреса.Состав, "ДопАдрЭл[ТипАдрЭл='10200000']");
+ Если Свойство <> Неопределено Тогда
+ ДополнительнаяТерритория = Свойство.Значение;
+ АнализКлассификатора = КонтактнаяИнформацияСлужебный.УлицыПоПредставлению(Контекст.КодКлассификатораНаселенногоПункта, ДополнительнаяТерритория);
+ НайденоУлиц = АнализКлассификатора.ДанныеВыбора.Количество();
+ Если НайденоУлиц = 1 Тогда
+ ВыбранноеЗначение = АнализКлассификатора.ДанныеВыбора[0].Значение.Значение;
+ Контекст.КодКлассификатораУлицы = ВыбранноеЗначение.Код;
+ Контекст.УлицаНайденаТочно = Истина;
+ Контекст.Улица = ВыбранноеЗначение.Представление;
+ УлицаОпределена = Истина;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если УлицаОпределена= Ложь Тогда
+ АнализКлассификатора = КонтактнаяИнформацияСлужебный.УлицыПоПредставлению(Контекст.КодКлассификатораНаселенногоПункта, Контекст.Улица);
+ НайденоУлиц = АнализКлассификатора.ДанныеВыбора.Количество();
+ Если НайденоУлиц = 1 Тогда
+ // Найдено точно
+ ВыбранноеЗначение = АнализКлассификатора.ДанныеВыбора[0].Значение.Значение;
+ Контекст.КодКлассификатораУлицы = ВыбранноеЗначение.Код;
+ Контекст.УлицаНайденаТочно = Истина;
+ Контекст.Улица = ВыбранноеЗначение.Представление;
+ Контекст.ДополнительнаяТерритория = ДополнительнаяТерритория;
+ КонецЕсли;
КонецЕсли;
// Дом, строение, помещение
@@ -1203,11 +1276,6 @@
ЗаполнитьЗначенияСвойств(Контекст.ДополнительныеПомещения.Вставить(0), ТаблицаДанных[НомерСтроки]);
КонецЦикла;
- // Если переданное представление отличается от вычисленного, то адрес изменен
- Если Не Контекст.РазрешитьВводАдресаВСвободнойФорме И Не ПредставленияАдресаОдинаковы(Контекст.ПредставлениеАдреса, ВычисленноеПредставление) Тогда
- Контекст.Модифицированность = Истина;
- КонецЕсли;
-
КонецПроцедуры
&НаСервереБезКонтекста
@@ -1590,7 +1658,7 @@
КонецЕсли;
КонецЕсли;
- // Сообщаем об ошибках с привязкой к полям
+ // Сообщаем список с привязкой к полям
Для Каждого Элемент Из СписокОшибок Цикл
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Элемент.Представление,,,ПутьКДаннымФормыПоПутиXPath(Элемент.Значение)
@@ -1628,6 +1696,31 @@
КонецЕсли;
+ // Дополнительно добавленные строения и помещения
+ Фильтр = Новый Структура("ПутьXPath", ПутьXPath);
+
+ Строки = ДополнительныеЗдания.НайтиСтроки(Фильтр);
+ Если Строки.Количество() > 0 Тогда
+ // Первое непустое
+ Для Каждого СтрокаЗдания Из Строки Цикл
+ ИмяРеквизита = "Строение" + Формат(ДополнительныеЗдания.Индекс(СтрокаЗдания), "ЧН=; ЧГ=");
+ Если ЗначениеЗаполнено(ЭтотОбъект[ИмяРеквизита]) Тогда
+ Возврат ИмяРеквизита;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ Строки = ДополнительныеПомещения.НайтиСтроки(Фильтр);
+ Если Строки.Количество() > 0 Тогда
+ // Первое непустое
+ Для Каждого СтрокаПомещения Из Строки Цикл
+ ИмяРеквизита = "Помещение" + Формат(ДополнительныеПомещения.Индекс(СтрокаПомещения), "ЧН=; ЧГ=");
+ Если ЗначениеЗаполнено(ЭтотОбъект[ИмяРеквизита]) Тогда
+ Возврат ИмяРеквизита;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
// Варианты дома
Для Каждого ЭлементСписка Из Элементы.ТипДома.СписокВыбора Цикл
Если ПутьXPath = КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации(ЭлементСписка.Значение) Тогда
@@ -1649,18 +1742,6 @@
КонецЕсли;
КонецЦикла;
- // Дополнительно добавленные
- Фильтр = Новый Структура("ПутьXPath", ПутьXPath);
- Строки = ДополнительныеЗдания.НайтиСтроки(Фильтр);
- Если Строки.Количество()>0 Тогда
- Возврат "Строение" + Формат(ДополнительныеЗдания.Индекс(Строки[0]), "ЧН=; ЧГ=");
- КонецЕсли;
-
- Строки = ДополнительныеПомещения.НайтиСтроки(Фильтр);
- Если Строки.Количество()>0 Тогда
- Возврат "Помещение" + Формат(ДополнительныеПомещения.Индекс(Строки[0]), "ЧН=; ЧГ=");
- КонецЕсли;
-
// Не нашли
Возврат "";
КонецФункции
@@ -1810,7 +1891,7 @@
|Улица, КодКлассификатораУлицы, УлицаНайденаТочно,
|ТипДома, Дом, ДомНайденТочно, ТипСтроения, Строение, ТипПомещения, Помещение,
|РазрешитьВводАдресаВСвободнойФорме, ПредставлениеАдресаИзменено,
- |Модифицированность
+ |Модифицированность, ДополнительнаяТерритория
|";
СписокКоллекций = "ДополнительныеЗдания, ДополнительныеПомещения";
@@ -1843,8 +1924,8 @@
// Разрешение элементов для ввода в свободном формате
//
// Параметры:
-// - Режим - Истина - можно редактировать представление адреса, Ложь - нельзя
-// - ФормироватьПредставление - необязательный флаг. По умолчанию установлен.
+// - Режим - Булево - Истина - можно редактировать представление адреса, Ложь - нельзя
+// - ФормироватьПредставление - Булево - необязательный флаг. По умолчанию установлен.
//
&НаКлиенте
Процедура СостояниеВводаПредставленияАдреса(Режим, ФормироватьПредставление=Истина)
@@ -1870,7 +1951,9 @@
СостояниеГруппыВвода(Элементы.ТипАдреса, Не Режим);
// Пометка режима
- Элементы.ВвестиАдресВСвободнойФорме.Пометка = Режим;
+ Элементы.ВвестиАдресВСвободнойФорме.Пометка = Режим;
+ Элементы.ВвестиАдресВСвободнойФормеВсеДействия.Пометка = Режим;
+
Элементы.ПредставлениеАдресаКонтекстноеМенюВвестиАдресВСвободнойФорме.Пометка = Режим;
// Проверять адрес, введенный вручную нельзя
@@ -1888,16 +1971,14 @@
Элементы.ПредставлениеАдреса.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх;
Элементы.ПредставлениеАдреса.Заголовок = НСтр("ru='Адрес в свободной форме'");
- Элементы.ГруппаПредставления.Отображение = ОтображениеОбычнойГруппы.Нет;
- Элементы.СтранаАдреса.Отображение = Элементы.ГруппаПредставления.Отображение;
+ Элементы.СтранаАдреса.Отображение = ОтображениеОбычнойГруппы.Нет;
ТекущийЭлемент = Элементы.ПредставлениеАдреса;
Иначе
Элементы.ПредставлениеАдреса.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элементы.ПредставлениеАдреса.Заголовок = "";
- Элементы.ГруппаПредставления.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
- Элементы.СтранаАдреса.Отображение = Элементы.ГруппаПредставления.Отображение;
+ Элементы.СтранаАдреса.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
ТекущийЭлемент = Элементы.НаселенныйПункт;
КонецЕсли;
@@ -1915,21 +1996,23 @@
Для Каждого Элемент Из Группа.ПодчиненныеЭлементы Цикл
ТипЭлемента = ТипЗнч(Элемент);
- Если ТипЭлемента=Тип("ГруппаФормы") Тогда
- Если Элемент<>Элементы.ГруппаПредставления И Элемент<>Элементы.ИностранныйАдрес Тогда
+ Если ТипЭлемента = Тип("ГруппаФормы") Тогда
+ Если Элемент <> Элементы.ИностранныйАдрес Тогда
СостояниеГруппыВвода(Элемент, Режим);
КонецЕсли;
- ИначеЕсли ТипЭлемента=Тип("КнопкаФормы") Тогда
- Если Элемент=Элементы.ДобавитьОбъект Тогда
+ ИначеЕсли ТипЭлемента = Тип("КнопкаФормы") Тогда
+ Если Элемент = Элементы.ДобавитьОбъект Тогда
Элемент.Доступность = Режим И МожноДобавлятьДополнительныеОбъекты();
Иначе
Элемент.Доступность = Режим;
КонецЕсли;
- ИначеЕсли ТипЭлемента=Тип("ПолеФормы") И Элемент.Вид=ВидПоляФормы.ПолеВвода Тогда
- Элемент.ТолькоПросмотр = Не Режим;
- Элемент.ЦветФона = ?(Режим, АвтоЦвет, ЦветФонаФормы);
+ ИначеЕсли ТипЭлемента = Тип("ПолеФормы") И Элемент.Вид = ВидПоляФормы.ПолеВвода Тогда
+ Если Элемент <> Элементы.ПредставлениеАдреса Тогда
+ Элемент.ТолькоПросмотр = Не Режим;
+ Элемент.ЦветФона = ?(Режим, АвтоЦвет, ЦветФонаФормы);
+ КонецЕсли;
Иначе
Элемент.Доступность = Режим;
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form
index b5f56e2af..7595fd5db 100644
--- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form
@@ -2,37 +2,312 @@
ru
- Номер телефона
+ Номер телефона, факса
- ОсновнойНомер
- 14
+ ТелефонПредставлениеКомментарий
+ 56
- ГруппаТелефона
- 24
-
- КодСтраны
- 5
+ ТелефонСтраницаПредставление
+ 58
+
+ ОсновнойНомер
+ 14
+
+ ГруппаТелефона
+ 24
+
+ КодСтраны
+ 5
+ true
+ true
+
+ true
+
+
+ КодСтраны
+
+ Top
+
+ ru
+ Код страны в телефонном номере
+
+
+ OnChange
+ КодСтраныПриИзменении
+
+
+ КодСтраныExtendedTooltip
+ 41
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КодСтраныКонтекстноеМеню
+ 6
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ 6
+ true
+ true
+ false
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ КодГорода
+ 3
+ true
+ true
+
+ true
+
+
+ КодГорода
+
+ Top
+
+ ru
+ Код города в телефонном номере
+
+
+ OnChange
+ КодГородаПриИзменении
+
+
+ КодГородаExtendedTooltip
+ 42
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КодГородаКонтекстноеМеню
+ 4
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ 6
+ true
+ true
+ false
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ НомерТелефона
+ 9
+ true
+ true
+
+ true
+
+
+ НомерТелефона
+
+ Top
+
+ ru
+ Номер телефона в телефонном номере
+
+
+ OnChange
+ НомерТелефонаПриИзменении
+
+
+ НомерТелефонаExtendedTooltip
+ 43
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НомерТелефонаКонтекстноеМеню
+ 10
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ 21
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ Добавочный
+ 1
+ true
+ true
+
+ true
+
+
+ Добавочный
+
+ Top
+
+ ru
+ Добавочный номер
+
+
+ OnChange
+ ДобавочныйПриИзменении
+
+
+ ДобавочныйExtendedTooltip
+ 44
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДобавочныйКонтекстноеМеню
+ 2
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ 8
+ true
+ true
+ false
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ ГруппаТелефонаExtendedTooltip
+ 40
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ Представление
+ 11
+ true
+ true
+
+ true
+
+
+ Представление
+
+ None
+
+ ПредставлениеExtendedTooltip
+ 45
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПредставлениеКонтекстноеМеню
+ 12
+ true
+
+ InputField
+ true
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+ truetruetrue
-
- КодСтраны
-
- Top
+
+ ru
+ Основной номер
+ ru
- Код страны в телефонном номере
+ Основной номер
-
- OnChange
- КодСтраныПриИзменении
-
- КодСтраныExtendedTooltip
- 41
+ ОсновнойНомерExtendedTooltip
+ 39Labeltruetrue
@@ -40,182 +315,14 @@
Left
-
- КодСтраныКонтекстноеМеню
- 6
- true
-
- InputField
- Enter
- true
- Left
- true
-
- 6
- true
- true
- false
- true
- true
- true
- true
- Normal
-
-
-
- КодГорода
- 3
- true
- true
-
- true
-
-
- КодГорода
-
- Top
-
- ru
- Код города в телефонном номере
-
-
- OnChange
- КодГородаПриИзменении
-
-
- КодГородаExtendedTooltip
- 42
- Label
- true
- true
-
- Left
-
-
-
- КодГородаКонтекстноеМеню
- 4
- true
-
- InputField
- Enter
- true
- Left
- true
-
- 6
- true
- true
- false
- true
- true
- true
- true
- Normal
-
-
-
- НомерТелефона
- 9
- true
- true
-
- true
-
-
- НомерТелефона
-
- Top
-
- ru
- Номер телефона в телефонном номере
-
-
- OnChange
- НомерТелефонаПриИзменении
-
-
- НомерТелефонаExtendedTooltip
- 43
- Label
- true
- true
-
- Left
-
-
-
- НомерТелефонаКонтекстноеМеню
- 10
- true
-
- InputField
- Enter
- true
- Left
- true
-
- 21
- true
- true
- true
- true
- true
- true
- true
- Normal
-
-
-
- Добавочный
- 1
- true
- true
-
- true
-
-
- Добавочный
-
- Top
-
- ru
- Добавочный номер
-
-
- OnChange
- ДобавочныйПриИзменении
-
-
- ДобавочныйExtendedTooltip
- 44
- Label
- true
- true
-
- Left
-
-
-
- ДобавочныйКонтекстноеМеню
- 2
- true
-
- InputField
- Enter
- true
- Left
- true
-
- 8
- true
- true
- false
- true
- true
- true
- true
- Normal
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Autotrue
@@ -223,9 +330,17 @@
true
+
+ ru
+ Номер
+
+
+ ru
+ Телефон страница представление
+
- ГруппаТелефонаExtendedTooltip
- 40
+ ТелефонСтраницаПредставлениеРасширеннаяПодсказка
+ 59Labeltruetrue
@@ -233,62 +348,15 @@
Left
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
-
-
-
- Представление
- 11
- true
- true
-
- true
-
-
- Представление
-
- None
-
- ПредставлениеExtendedTooltip
- 45
- Label
- true
- true
-
- Left
-
-
-
- ПредставлениеКонтекстноеМеню
- 12
- true
-
- InputField
- true
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
- true
- Normal
+ Page
+
+ Vertical
+ auto
- ГруппаКомментария
- 38
+ ТелефонСтраницаКомментарий
+ 60Комментарий7
@@ -300,11 +368,15 @@
Комментарий
- Left
+ NoneruДополнительный комментарий, не попадающий в представление
+
+ OnChange
+ КомментарийПриИзменении
+ КомментарийExtendedTooltip47
@@ -326,16 +398,11 @@
Lefttrue
-
- StartChoice
- КомментарийНачалоВыбора
- truetruetruetruetrue
- truetruetruetrue
@@ -349,15 +416,15 @@
ru
- Группа комментария
+ Комментарийru
- Группа комментария
+ Телефон страница комментарий
- ГруппаКомментарияExtendedTooltip
- 46
+ ТелефонСтраницаКомментарийРасширеннаяПодсказка
+ 61Labeltruetrue
@@ -365,15 +432,10 @@
Left
- UsualGroup
-
+ Page
+ Vertical
- Auto
- NormalSeparation
- true
- true
- Auto
- Auto
+ autotrue
@@ -383,15 +445,15 @@
ru
- Основной номер
+ Телефон представление комментарийru
- Основной номер
+ Телефон представление комментарий
- ОсновнойНомерExtendedTooltip
- 39
+ ТелефонПредставлениеКомментарийРасширеннаяПодсказка
+ 57Labeltruetrue
@@ -399,19 +461,17 @@
Left
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
+ Pages
+
+ TabsOnTopAuto
-
- ПанельКоманд
- 28
+ Bottom
+ true
+
+ ФормаКоманднаяПанель
+ -1КомандаОК32
@@ -464,6 +524,60 @@
UserCmdsAuto
+
+ ОчиститьТелефон
+ 34
+ true
+ true
+
+ true
+
+
+ ОчиститьТелефонExtendedTooltip
+ 53
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОчиститьТелефон
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ИзменитьФорму
+ 35
+ true
+ true
+
+ true
+
+
+ ИзменитьФормуExtendedTooltip
+ 55
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CustomizeForm
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+ Справка31
@@ -489,21 +603,22 @@
trueUserCmdsAuto
+ InCommandBarAndInAdditionalSubmenuФормаВсеДействия
- 33
+ 62
- ОчиститьТелефон
- 34
+ ОчиститьТелефонВсеДействия
+ 64truetruetrue
- ОчиститьТелефонExtendedTooltip
- 53
+ ОчиститьТелефонВсеДействияРасширеннаяПодсказка
+ 65Labeltruetrue
@@ -521,18 +636,18 @@
Группа5
- 37
+ 66
- ИзменитьФорму
- 35
+ ИзменитьФормуВсеДействия
+ 68truetruetrue
- ИзменитьФормуExtendedTooltip
- 55
+ ИзменитьФормуВсеДействияРасширеннаяПодсказка
+ 69Labeltruetrue
@@ -550,16 +665,16 @@
InCommandBarAndInAdditionalSubmenu
- СправкаФормы
- 36
+ СправкаФормыВсеДействия
+ 70truetruetrue
- СправкаФормыExtendedTooltip
- 56
+ СправкаФормыВсеДействияРасширеннаяПодсказка
+ 71Labeltruetrue
@@ -583,7 +698,7 @@
Группа5ExtendedTooltip
- 54
+ 67Labeltruetrue
@@ -608,7 +723,7 @@
ФормаВсеДействияExtendedTooltip
- 52
+ 63Labeltruetrue
@@ -625,39 +740,13 @@
Normal
- true
- true
-
- true
-
-
- ru
- Панель команд
-
-
- ru
- Панель команд
-
-
- ПанельКомандExtendedTooltip
- 48
- Label
- true
- true
-
- Left
-
-
- CommandBar
-
- Right
-
-
-
- ФормаКоманднаяПанель
- -1
- Left
+ Right
+ true
+
+ OnOpen
+ ПриОткрытии
+ BeforeCloseПередЗакрытием
@@ -736,7 +825,7 @@
НомерТелефонаru
- Номер телефона
+ Номер4
@@ -914,6 +1003,24 @@
true
+
+ ТекстПредупрежденияПриОткрытии
+
+ ru
+ Текст предупреждения при открытии
+
+ 14
+
+ String
+
+
+
+ true
+
+
+ true
+
+ КомандаОК
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Help/ru.html b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Help/ru.html
new file mode 100644
index 000000000..0269575c3
--- /dev/null
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Help/ru.html
@@ -0,0 +1,14 @@
+
+
Предназначена для ввода номера телефона (факса) с использованием шаблона.
+
Открывается из табличной части документов или элементов списков - носителей контактной информации по кнопке Выбрать.
+
Для того чтобы ввести телефон (факс), необходимо заполнить поля:
+
Код страны - программа автоматически добавляет "+" к коду страны;
+
Код города - автоматически заключается в скобки;
+
Номер телефона - пишется в произвольной форме;
+
Добавочный номер - перед цифрами добавочного номера программа автоматически проставляет доб;
+
Комментарий - введите дополнительную информацию о телефоне.
Очистка номера телефона (факса)
+
Для того чтобы удалить ошибочно введенный номер телефона (факса) и начать заполнение заново, воспользуйтесь командой Все действия (в интерфейсе Такси - Еще) - Очистить номер телефона. В интерфейсе "Такси" нажмите Еще, для того чтобы воспользоваться этой командой.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl
index 6034f79f7..6d48a4a32 100644
--- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl
@@ -1,21 +1,24 @@
// Форма параметризуется:
//
-// Заголовок - Строка - заголовок формы
-// ЗначенияПолей - Строка - сериализованное значение контактной информации или пустая строка для
-// ввода нового
-// Представление - Строка - представление телефона (используется только при работе со старыми данными)
-// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание редактируемого
-// Комментарий - Строка - необязательный комментарий, для подстановки в поле "Комментарий"
+// Заголовок - Строка - заголовок формы
+// ЗначенияПолей - Строка - сериализованное значение контактной информации или пустая строка для
+// ввода нового
+// Представление - Строка - представление адреса (используется только при работе со старыми данными)
+// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание того, что мы редактируем
+// Комментарий - Строка - необязательный комментарий, для подстановки в поле "Комментарий"
//
// ВозвращатьСписокЗначений - Булево - необязательный флаг того, что возвращаемое значение поля
-// КонтактнаяИнформация будет иметь тип СписокЗначений (совместимость)
+// КонтактнаяИнформация будет иметь тип СписокЗначений (совместимость)
//
-// Результатом выбора является структура с полями:
-// "КонтактнаяИнформация, Представление, Комментарий"
+// Результат выбора:
+// Структура - поля:
+// * КонтактнаяИнформация - Строка - XML контактной информации
+// * Представление - Строка - Представление
+// * Комментарий - Строка - Комментарий
//
+// -------------------------------------------------------------------------------------------------
#Область ОбработчикиСобытийФормы
-//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
@@ -35,19 +38,48 @@
Заголовок = ?(ПустаяСтрока(Параметры.Заголовок), Строка(ВидКонтактнойИнформации), Параметры.Заголовок);
- Если ТипКонтактнойИнформации=Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
- XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияТелефона(
- Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации);
+ Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(Параметры.ЗначенияПолей) Тогда
+ РезультатыЧтения = Новый Структура;
+ XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияКонтактнойИнформации(Параметры.ЗначенияПолей, ТипКонтактнойИнформации, РезультатыЧтения);
+ Если РезультатыЧтения.Свойство("ТекстОшибки") Тогда
+ // Распознали с ошибками, сообщим при открытии
+ ТекстПредупрежденияПриОткрытии = РезультатыЧтения.ТекстОшибки;
+ XDTOКонтактная.Представление = Параметры.Представление;
+ КонецЕсли;
+
+ ИначеЕсли ТипКонтактнойИнформации = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
+ XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияТелефона(Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации);
+
Иначе
- XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияФакса(
- Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации);
+ XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияФакса(Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации);
+
КонецЕсли;
- Если Параметры.Комментарий<>Неопределено Тогда
+ Если Параметры.Комментарий <> Неопределено Тогда
КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(XDTOКонтактная, Параметры.Комментарий);
КонецЕсли;
ЗначениеРеквизитовПоКонтактнойИнформации(XDTOКонтактная);
+
+ // Группа команд "все действия" зависит от интерфейса
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
+ Элементы.ФормаВсеДействия.Видимость = Ложь;
+ Иначе
+ Элементы.ОчиститьТелефон.Видимость = Ложь;
+ Элементы.ИзменитьФорму.Видимость = Ложь;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриОткрытии(Отказ)
+
+ УстановитьПиктограммуКомментария();
+
+ Если Не ПустаяСтрока(ТекстПредупрежденияПриОткрытии) Тогда
+ ПодключитьОбработчикОжидания("Подключаемый_ПредупредитьПослеОткрытияФормы", 0.1, Истина);
+ КонецЕсли;
+
КонецПроцедуры
&НаКлиенте
@@ -59,37 +91,45 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
-//
&НаКлиенте
Процедура КодСтраныПриИзменении(Элемент)
+
ЗаполнитьПредставлениеТелефона();
+
КонецПроцедуры
&НаКлиенте
Процедура КодГородаПриИзменении(Элемент)
+
ЗаполнитьПредставлениеТелефона();
+
КонецПроцедуры
&НаКлиенте
Процедура НомерТелефонаПриИзменении(Элемент)
+
ЗаполнитьПредставлениеТелефона();
+
КонецПроцедуры
&НаКлиенте
Процедура ДобавочныйПриИзменении(Элемент)
+
ЗаполнитьПредставлениеТелефона();
+
КонецПроцедуры
&НаКлиенте
-Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
- ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект, "Комментарий");
+Процедура КомментарийПриИзменении(Элемент)
+
+ УстановитьПиктограммуКомментария();
+
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
-//
&НаКлиенте
Процедура КомандаОК(Команда)
@@ -98,19 +138,40 @@
&НаКлиенте
Процедура КомандаОтмена(Команда)
+
Модифицированность = Ложь;
Закрыть();
+
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьТелефон(Команда)
+
ОчиститьТелефонСервер();
+
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-//
+
+&НаКлиенте
+Процедура Подключаемый_ПредупредитьПослеОткрытияФормы()
+
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстПредупрежденияПриОткрытии);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьПиктограммуКомментария()
+
+ Если ПустаяСтрока(Комментарий) Тогда
+ Элементы.ТелефонСтраницаКомментарий.Картинка = Новый Картинка;
+ Иначе
+ Элементы.ТелефонСтраницаКомментарий.Картинка = БиблиотекаКартинок.Комментарий;
+ КонецЕсли;
+
+КонецПроцедуры
&НаКлиенте
Процедура ПодтвердитьИЗакрыть(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
@@ -158,8 +219,10 @@
&НаКлиенте
Процедура СброситьМодифицированностьПриВыборе()
+
Модифицированность = Ложь;
КопияКомментария = Комментарий;
+
КонецПроцедуры
&НаСервере
@@ -299,4 +362,5 @@
Модифицированность = Истина;
КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Help/ru.html b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Help/ru.html
index c4023be58..a39ac8989 100644
--- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Help/ru.html
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Help/ru.html
@@ -1,4 +1,10 @@
-
-
Форма предназначена для ввода населенного пункта по детальному шаблону.
-
В поле "Регион" необходимо ввести название субъекта Российской Федерации, к которому относится населенный пункт. Поля "Район", "Город", "Нас. пункт" предназначены для ввода соответствующих частей адреса. Поля, которые должны быть заполнены, зависят от адреса. Например, в некоторых адресах может не быть района, в других - города или населенного пункта.
-
Если для региона адреса загружен адресный классификатор, то по мере набора в каждом поле будут предлагаться варианты соотвествующей части адреса с учетом полей, заполненных ранее. Также, при загруженном классификаторе, можно выбрать часть адреса из списка, нажав на кнопку выбора. При вводе поля "Регион", если адресный классификатор для этого субъекта Российской Федерации не заполнен и у текущего пользователя есть права на загрузку, будет выведено предложение загрузить классификатор.
\ No newline at end of file
+
+
Предназначена для ввода населенного пункта по детальному шаблону.
+
Открывается из шаблона ввода адреса в поле Город, населенный пункт по кнопке Выбрать.
+
В поле Регион необходимо ввести наименование субъекта Российской Федерации, к которому относится населенный пункт. При вводе поля Регион, если адресный классификатор для этого субъекта Российской Федерации не заполнен и у текущего пользователя есть права на загрузку, будет выведено предложение загрузить классификатор. Также, при загруженном классификаторе, можно выбрать часть адреса из списка, нажав Выбрать.
+
Поля Район, Город, Нас.пункт предназначены для ввода соответствующих частей адреса. Поля, которые должны быть заполнены, зависят от адреса. Например, в некоторых адресах может не быть района, в других - города или населенного пункта. Если выбрано устаревшее наименование, программа выводит сообщение. Подтвердите свой выбор, нажав кнопку Да для продолжения ввода. Для того чтобы программа не показывала в списках устаревшие адреса, при настройке данного вида контактной информации включите флажок Скрывать неактуальные адреса.
+
После окончания ввода города или населенного пункта нажмите ОК для продолжения ввода адреса.
+
Если для региона адреса загружен адресный классификатор, то по мере набора в каждом поле будут предлагаться варианты соответствующей части адреса с учетом полей, заполненных ранее.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl
index 573ed7d3a..0b60bc246 100644
--- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl
@@ -1,14 +1,14 @@
// Форма параметризуется при помощи:
//
-// КодНаселенногоПункта (число) - если указано, то код текущего адресного классификатора для
-// определения и редактирования частей формы.
+// КодНаселенногоПункта -Число - если указано, то код текущего адресного классификатора для
+// определения и редактирования частей формы.
//
-// НаселенныйПунктДетально - структура, зависящая от адресного классификатора с
-// описанием частей населенного пункта. Используется, только если
-// указан нулевой КодНаселенногоПункта
+// НаселенныйПунктДетально - Структура - зависит от адресного классификатора,
+// описывает части населенного пункта. Используется, только если указан
+// нулевой КодНаселенногоПункта
//
-// СкрыватьНеактуальныеАдреса - флаг того, что при редактировании неактуальные адреса будут
-// скрываться
+// СкрыватьНеактуальныеАдреса - Булево - флаг того, что при редактировании неактуальные адреса будут
+// скрываться
//
// -------------------------------------------------------------------------------------------------
@@ -95,6 +95,9 @@
Элемент.ПутьКДанным = Элемент.Имя;
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.КнопкаВыбора = Истина;
+ Если Часть.ТолькоПросмотр Тогда
+ Элемент.КнопкаВыбора = Ложь;
+ КонецЕсли;
Часть.Свойство("Подсказка", Элемент.Подсказка);
Если ПустаяСтрока(Элемент.Подсказка) Тогда
@@ -215,7 +218,9 @@
ДанныеВыбора = СписокАвтоПодбораЭлементаАдреса(Текст, ИмяЧастиАдресаЭлемента(Элемент), ЧастиАдреса, Истина);
// Стандартную обработку отключаем, только если есть наши варианты
- СтандартнаяОбработка = ДанныеВыбора.Количество() = 0;
+ Если ДанныеВыбора = Неопределено ИЛИ ДанныеВыбора.Количество() = 0 Тогда
+ СтандартнаяОбработка = Истина;
+ КонецЕсли;
КонецПроцедуры
&НаКлиенте
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Form.form b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Form.form
index c21b5b48b..cbdbdd186 100644
--- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Form.form
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Form.form
@@ -652,7 +652,7 @@
ПриСозданииНаСервере50
- 16
+ 10LockOwnertruetrue
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Help/ru.html b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Help/ru.html
new file mode 100644
index 000000000..ed9f73aa4
--- /dev/null
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Help/ru.html
@@ -0,0 +1,9 @@
+
+
Предназначена для выбора адреса по почтовому индексу.
+
Для поиска адреса по индексу необходимо, чтобы по соответствующему региону был загружен адресный классификатор.
+
Открывается из окна ввода адреса по команде Все действия (в интерфейсе Такси Еще) - Заполнить по почтовому индексу после ввода почтового индекса.
+
Вверху окна выводится часть адреса, которую удалось восстановить по индексу. Остается только уточнить. Для выбора предлагаются: улицы крупного города или населенные пункты и улицы населенных пунктов района. Выделите соответствующую часть адреса, нажмите Выбрать. Также можно воспользоваться двойным щелчком мыши. После выбора улицы в открывшемся окне ввода адреса введите оставшиеся части адреса.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Module.bsl
index a3d4dde32..bd4ce08bf 100644
--- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Module.bsl
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ПоискАдресаПоПочтовомуИндексу/Module.bsl
@@ -1,12 +1,14 @@
// Параметры формы:
-// Индекс - Число - Почтовый индекс для поиска вариантов адресов
+// Индекс - Число - Почтовый индекс для поиска вариантов адресов
// СкрыватьНеактуальныеАдреса - Булево - флаг того, что при неактуальные адреса будут скрываться
//
-// В качестве значения выбора возвращается:
-// При отказе от выбора - неопределено
-// При успешном выборе - структура с полями Код, Представление с данными классификатора
+// Результат выбора:
+// Структура - с полями:
+// * Код - Число - Данные адреса
+// * Представление - Данные адреса
+//
+// ---------------------------------------------------------------------------------------------------------------------
//
-
#Область ОбработчикиСобытийФормы
&НаСервере
diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Help/ru.html b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Help/ru.html
new file mode 100644
index 000000000..26158c9a8
--- /dev/null
+++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Help/ru.html
@@ -0,0 +1,18 @@
+
+
После настройки необходимых видов контактной информации, используемых на предприятии или в организации, и загрузки адресного классификатора, можно приступать к заполнению контактной информации в списках и документах программы.
+
Контактную информацию можно вводить:
+
в виде произвольной строки,
+
с помощью шаблонов.
Использование шаблонов позволяет унифицировать ввод информации, улучшает ее восприятие при просмотре и поиске в списках.
+
При использовании шаблона адреса поля адреса можно заполнять с помощью адресного классификатора. Заполнение адресов с помощью шаблонов и с использованием адресного классификатора значительно убыстряет ввод, снижает количество ошибок при вводе, что в свою очередь облегчает сдачу отчетности в различные организации. Кроме того, адресный классификатор постоянно обновляется, следовательно, адреса сотрудников всегда будут в актуальном состоянии. В программе предусмотрена возможность при использовании шаблонов адресов в порядке исключения ввести некоторые адреса, указанные с ошибкой, в свободной форме.
+
Использование шаблона при вводе телефонов и факсов облегчает ввод информации, сокращает количество ошибок при вводе.
+
При вводе контактной информации доступны не только предопределенные поля, но и те поля, которые были добавлены в список Виды контактной информации в процессе работы программы.
+
Если при настройке одного или нескольких видов контактной информации включен флажок Разрешить ввод нескольких значений, то в окне для ввода предусмотрена кнопка Добавить. При нажатии на нее предлагается список возможных видов контактной информации для добавления. Например, у организации может быть несколько адресов электронной почты, веб-страниц и т.п.
+
Для работы с контактной информацией можно воспользоваться командами контекстного меню по правой кнопке мыши:
+
Выбрать (клавиша F4) - ввести контактную информацию по шаблону, аналогично кнопке Выбрать. По шаблону можно ввести адрес, телефон или факс.
+
Открыть (сочетание клавиш Ctrl+Shift+F4) - просмотр введенной контактной информации (например, слишком длинный адрес можно увидеть целиком с помощью этой команды);
+
Вырезать (сочетание клавиш Ctrl+X);
+
Копировать (сочетание клавиш Ctrl+C);
+
Вставить (сочетание клавиш Ctrl+V);
+
Очистить (сочетание клавиш Shift+F4) - также очищаются поля для ввода по шаблону адреса и телефона. В поле Страна адреса автоматически вводится значение Россия.
+
Выделить все (сочетание клавиш Ctrl+A).
+
Ввести комментарий - с помощью этой команды можно ввести или изменить комментарий, не открывая окно редактирования поля. Комментарии предусмотрены для всех видов контактной информации, кроме текстового поля Другое, т.к. в это поле можно ввести всю нужную информацию. Воспользуйтесь командой, затем введите текст комментария, нажмите кнопку ОК для продолжения работы в программе. Если комментарий не пуст, то он выводится под полем контактной информации.
После ввода значений для изменения реквизитов можно задать особые настройки с помощью команды Дополнительные параметры:
Изменять в транзакции (по умолчанию флажок установлен) - программа позволяет обрабатывать выбранные для изменения элементы списка в транзакции. Если в процессе записи при установленном флажке не удается записать один из объектов (например, потому что объект редактируется другим пользователем), то будут отменены изменения во всех объектах.
diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Form.form b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Form.form
index 8ce6137e3..f802519a8 100644
--- a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Form.form
@@ -282,7 +282,7 @@
truetruetrue
- 5
+ 7truetrueMultiRow
@@ -890,7 +890,6 @@
ruИзменяемые реквизиты
- 15ИзменяемыеРеквизитыРасширеннаяПодсказка184
@@ -1285,7 +1284,7 @@
truetrue
- 5
+ 2truefalsetrue
@@ -2295,7 +2294,8 @@
NumberAnyRef
- 20
+ 30
+ 10
diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Module.bsl
index 0c68936b0..da395f9e2 100644
--- a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Forms/Форма/Module.bsl
@@ -38,6 +38,7 @@
Если УчитыватьИерархию И ОбрабатыватьРекурсивно <> ВыбранноеЗначение.ОбрабатыватьРекурсивно Тогда
ОбрабатыватьРекурсивно = ВыбранноеЗначение.ОбрабатыватьРекурсивно;
ПерезаполнитьСтруктуруРеквизитовОбъекта = Истина;
+ ИнициализироватьКомпоновщикНастроек();
КонецЕсли;
Объект.ИзменятьВТранзакции = ВыбранноеЗначение.ИзменятьВТранзакции;
Объект.ПрерыватьПриОшибке = ВыбранноеЗначение.ПрерыватьПриОшибке;
@@ -363,10 +364,17 @@
&НаСервере
Процедура ВыполнитьДействияПриКонтекстномОткрытии()
- ТипПереданногоОбъекта = ТипЗнч(Параметры.МассивОбъектов[0]);
+ ТипПереданныхОбъектов = ТипЗнч(Параметры.МассивОбъектов[0]);
+
+ Для Каждого ПереданныйОбъект Из Параметры.МассивОбъектов Цикл
+ Если ТипЗнч(ПереданныйОбъект) <> ТипПереданныхОбъектов Тогда
+ ВызватьИсключение НСтр("ru = 'Групповое изменение возможно только для элементов одного типа.'");
+ КонецЕсли;
+ КонецЦикла;
+
КоличествоОбъектов = Параметры.МассивОбъектов.Количество();
ШаблонЗаголовка = НСтр("ru = 'Изменение выделенных элементов ""%1"" (%2)'");
- Заголовок = ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ТипПереданногоОбъекта, КоличествоОбъектов);
+ Заголовок = ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ТипПереданныхОбъектов, КоличествоОбъектов);
ЗапретРедактированияВстроен = Метаданные.НайтиПоПолномуИмени("ОбщийМодуль.ЗапретРедактированияРеквизитовОбъектовКлиент") <> Неопределено;
СвойстваВстроены = Метаданные.НайтиПоПолномуИмени("ОбщийМодуль.УправлениеСвойствами") <> Неопределено;
@@ -515,11 +523,11 @@
Массив = Новый Массив;
- XMLСтрокаМассив = РазложитьСтрокуВМассивПодстрок(XMLСтрока, "%%");
+ XMLСтрокаМассив = РазложитьСтрокуВМассивПодстрок(XMLСтрока, "#");
Для Каждого Элемент Из XMLСтрокаМассив Цикл
- ЭлементМассив = РазложитьСтрокуВМассивПодстрок(Элемент, "%");
+ ЭлементМассив = РазложитьСтрокуВМассивПодстрок(Элемент, "*");
ЗначениеЭлемента = XMLЗначение(Тип(ЭлементМассив[0]), ЭлементМассив[1]);
@@ -891,7 +899,7 @@
ТекущееСостояниеИзменения.КоличествоОшибок
);
- Элементы.ФормаНазад.Видимость = Не КонтекстныйВызов;
+ Элементы.ФормаНазад.Видимость = Истина;
ТекущееСостояниеИзменения = Неопределено;
@@ -2095,10 +2103,10 @@
Для Каждого Элемент Из ОписаниеПараметраВыбора.Значение Цикл
- ЗначениеСтрокаШаблон = "[Тип]%[Значение]";
+ ЗначениеСтрокаШаблон = "[Тип]*[Значение]";
ЗначениеСтрокаШаблон = СтрЗаменить(ЗначениеСтрокаШаблон, "[Тип]", СтроковоеПредставлениеТипа(ТипЗнч(Элемент)));
ЗначениеСтрокаШаблон = СтрЗаменить(ЗначениеСтрокаШаблон, "[Значение]", XMLСтрока(Элемент));
- ЗначениеСтрока = ЗначениеСтрока + ?(ПустаяСтрока(ЗначениеСтрока), "", "%%") + ЗначениеСтрокаШаблон;
+ ЗначениеСтрока = ЗначениеСтрока + ?(ПустаяСтрока(ЗначениеСтрока), "", "#") + ЗначениеСтрокаШаблон;
КонецЦикла;
diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Help/ru.html b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Help/ru.html
index 462f62078..e2d3eef78 100644
--- a/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Help/ru.html
+++ b/SSL/src/DataProcessors/ГрупповоеИзменениеРеквизитов/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Групповое изменение реквизитов
Групповое изменение реквизитов предусмотрено в двух вариантах:
в большинстве списков программы предусмотрена команда Изменить выделенные.
diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form
index 98b1a1295..ce5315977 100644
--- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form
+++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form
@@ -151,6 +151,7 @@
falsetruetrue
+ truetruetruetrue
@@ -328,6 +329,7 @@
Lefttrue
+ 5truetruetrue
@@ -752,14 +754,6 @@
truetrue
-
- ru
- Группа сервер
-
-
- ru
- Группа сервер
- ГруппаСерверExtendedTooltip154
@@ -777,125 +771,6 @@
true
Отображает полную информацию о событии в программе, а не только те данные, которые показываются в журнале регистрации:
diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Module.bsl b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Module.bsl
index 6f962dd7f..e0001b88e 100644
--- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Module.bsl
+++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Module.bsl
@@ -96,7 +96,7 @@
СвойстваПользователяИБ.Колонки.Добавить("Значение");
МассивРолей = Неопределено;
Если ДанныеСобытия <> Неопределено Тогда
- Для каждого КлючИЗначение ИЗ ДанныеСобытия Цикл
+ Для каждого КлючИЗначение Из ДанныеСобытия Цикл
Если КлючИЗначение.Ключ = "Роли" Тогда
МассивРолей = КлючИЗначение.Значение;
Продолжить;
@@ -125,6 +125,8 @@
Элементы.РазделениеДанныхСеанса.Видимость = Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных();
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект, "ГруппаДанные, ГруппаСобытие, ГруппаСоединение, ГруппаТранзакция");
+
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html b/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html
index f66569d1f..f3fa432ee 100644
--- a/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html
+++ b/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html
@@ -1,7 +1,7 @@
-
+
Администратору программы часто требуется выяснить, какие события происходили в программе в определенный момент времени или какие действия выполнял тот или иной пользователь. Для этих целей предназначен журнал регистрации.
В журнале регистрации могут фиксироваться основные действия, выполняемые по модификации данных, выполнению регламентных операций, подключению и отключению от программы и т.д. Настройка журнала производится в Конфигураторе.
-
Открыть журнал регистрации можно по соответствующей команде раздела Настройка и администрирование - Поддержка и обслуживание.
+
Открыть журнал регистрации можно по соответствующей команде раздела Администрирование - Поддержка и обслуживание.
При работе с программой могут возникать события следующих видов, каждый из которых отображается в журнале регистрации специальным значком:
- Ошибка;
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Commands/ЗагрузкаДанныхИзФайла/CommandModule.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Commands/ЗагрузкаДанныхИзФайла/CommandModule.bsl
new file mode 100644
index 000000000..d45226a9a
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Commands/ЗагрузкаДанныхИзФайла/CommandModule.bsl
@@ -0,0 +1,5 @@
+
+&НаКлиенте
+Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
+КонецПроцедуры
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ВыборКолонок/Form.form b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ВыборКолонок/Form.form
new file mode 100644
index 000000000..b8d8efa3f
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ВыборКолонок/Form.form
@@ -0,0 +1,420 @@
+
+
+
+ ru
+ Колонки для сопоставления
+
+
+ СписокКолонок
+ 1
+ true
+ true
+
+ true
+
+
+ СписокКолонок
+
+ None
+ Add
+ Change
+ Copy
+ CopyToClipboard
+ Delete
+ EndEdit
+ MoveDown
+ MoveUp
+ Pickup
+ SelectAll
+ SortListAsc
+ SortListDesc
+
+ СписокКолонокГруппа1
+ 17
+
+ СписокКолонокПометка
+ 8
+ true
+ true
+
+ true
+
+
+ СписокКолонок.Check
+
+
+ СписокКолонокПометкаРасширеннаяПодсказка
+ 10
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокПометкаКонтекстноеМеню
+ 9
+ true
+
+ CheckBoxField
+ Auto
+ true
+ Left
+ true
+
+
+
+ СписокКолонокЗначение
+ 5
+ true
+ true
+
+ true
+
+
+ СписокКолонок.Value
+
+
+ СписокКолонокЗначениеРасширеннаяПодсказка
+ 7
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокЗначениеКонтекстноеМеню
+ 6
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ СписокКолонокГруппа1РасширеннаяПодсказка
+ 18
+ Label
+ true
+ true
+
+ Left
+
+
+ ColumnGroup
+
+ InCell
+ auto
+ true
+
+
+
+ СписокКолонокКоманднаяПанель
+ 3
+
+ ФормаВыбор
+ 11
+ true
+ true
+
+ true
+
+
+ ФормаВыборРасширеннаяПодсказка
+ 12
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Выбрать
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СписокКолонокУстановитьФлажки
+ 13
+ true
+ true
+
+ true
+
+
+ СписокКолонокУстановитьФлажкиРасширеннаяПодсказка
+ 14
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СписокКолонок.StandardCommand.CheckAll
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ СписокКолонокСнятьФлажки
+ 15
+ true
+ true
+
+ true
+
+
+ СписокКолонокСнятьФлажкиРасширеннаяПодсказка
+ 16
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СписокКолонок.StandardCommand.UncheckAll
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+ Left
+ true
+
+
+ Selection
+ СписокКолонокВыбор
+
+
+ СписокКолонокСтрокаПоиска
+ 19
+
+ СписокКолонокСтрокаПоискаРасширеннаяПодсказка
+ 21
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокСтрокаПоискаКонтекстноеМеню
+ 20
+ true
+
+ СписокКолонок
+
+ true
+
+
+
+ СписокКолонокСостояниеПросмотра
+ 22
+
+ СписокКолонокСостояниеПросмотраРасширеннаяПодсказка
+ 24
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокСостояниеПросмотраКонтекстноеМеню
+ 23
+ true
+
+ ViewStatusAddition
+ СписокКолонок
+
+ true
+
+
+
+ СписокКолонокУправлениеПоиском
+ 25
+
+ СписокКолонокУправлениеПоискомРасширеннаяПодсказка
+ 27
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокУправлениеПоискомКонтекстноеМеню
+ 26
+ true
+
+ SearchControlAddition
+ СписокКолонок
+
+ true
+
+
+
+ СписокКолонокРасширеннаяПодсказка
+ 4
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокКонтекстноеМеню
+ 2
+ true
+
+ true
+ true
+ true
+ true
+ true
+ MultiRow
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ false
+ false
+ true
+ Auto
+ Auto
+ true
+ true
+
+ СписокКолонок.Picture
+
+ None
+ None
+ None
+ true
+
+
+ ФормаКоманднаяПанель
+ -1
+ Left
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ DontBlock
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ Объект
+ 1
+
+ DataProcessorObject.ЗагрузкаДанныхИзФайла
+
+
+ true
+
+
+ true
+
+ true
+
+
+ СписокКолонок
+
+ ru
+ Список колонок
+
+ 2
+
+ ValueList
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+ Выбрать
+
+ ru
+ Сопоставить
+
+ 1
+
+ ru
+ Выбрать колонки для сопоставления
+
+
+ true
+
+
+
+ Выбор
+
+
+ Auto
+ Auto
+
+
+ СписокКолонок
+
+ ValueList
+
+
+
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ВыборКолонок/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ВыборКолонок/Module.bsl
new file mode 100644
index 000000000..3a6077f93
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ВыборКолонок/Module.bsl
@@ -0,0 +1,32 @@
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
+ СписокКолонок = Параметры.СписокКолонок;
+ СписокКолонок.СортироватьПоПредставлению();
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура Выбор(Команда)
+ Закрыть(СписокКолонок);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовТаблицыВыбор
+
+&НаКлиенте
+Процедура СписокКолонокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ СписокКолонок.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка = НЕ СписокКолонок.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка;
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/ConditionalAppearance.dcssca b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/ConditionalAppearance.dcssca
new file mode 100644
index 000000000..92629595b
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/ConditionalAppearance.dcssca
@@ -0,0 +1,24 @@
+
+
+
+ false
+
+
+ ИнформацияПоКолонкамИмяКолонки
+
+
+
+
+ ИнформацияПоКолонкам.ИмяКолонки
+ Contains
+ Штрихкод
+
+
+
+
+ ЦветТекста
+ style:SpecialTextColor
+
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Form.form b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Form.form
new file mode 100644
index 000000000..5defbfd95
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Form.form
@@ -0,0 +1,4181 @@
+
+
+
+ СтраницыПомощника
+ 1
+
+ ВыборСправочникаДляЗагрузки
+ 3
+
+ ПояснениеДляВыбораСправочника
+ 15
+
+ ПояснениеДляВыбораСправочникаДляЗагрузки
+ 12
+
+ ru
+ Загрузка данных в справочники из электронных таблиц, расположенных во внешних файлах (например: Microsoft Office Excel, Microsoft Office Word, OpenOffice Calc и др.).
+
+ true
+ true
+
+ true
+
+
+ ПояснениеДляВыбораСправочникаДляЗагрузкиРасширеннаяПодсказка
+ 14
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеДляВыбораСправочникаДляЗагрузкиКонтекстноеМеню
+ 13
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+ Top
+
+
+
+ ВидЗагрузкиДанных
+ 17
+ true
+ true
+
+ true
+
+
+ СписокВариантовЗагрузки
+
+ None
+
+ ВидЗагрузкиДанныхЗначение
+ 29
+ true
+ true
+
+ true
+
+
+ СписокВариантовЗагрузки.Value
+
+
+ ВидЗагрузкиДанныхЗначениеРасширеннаяПодсказка
+ 31
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВидЗагрузкиДанныхЗначениеКонтекстноеМеню
+ 30
+ true
+
+ InputField
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ false
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ВидЗагрузкиДанныхКоманднаяПанель
+ 19
+ Left
+
+
+ ValueChoice
+ ВидЗагрузкиДанныхВыборЗначения
+
+
+ ВидЗагрузкиДанныхСтрокаПоиска
+ 661
+
+ ВидЗагрузкиДанныхСтрокаПоискаРасширеннаяПодсказка
+ 663
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВидЗагрузкиДанныхСтрокаПоискаКонтекстноеМеню
+ 662
+ true
+
+ ВидЗагрузкиДанных
+
+ true
+
+
+
+ ВидЗагрузкиДанныхСостояниеПросмотра
+ 664
+
+ ВидЗагрузкиДанныхСостояниеПросмотраРасширеннаяПодсказка
+ 666
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВидЗагрузкиДанныхСостояниеПросмотраКонтекстноеМеню
+ 665
+ true
+
+ ViewStatusAddition
+ ВидЗагрузкиДанных
+
+ true
+
+
+
+ ВидЗагрузкиДанныхУправлениеПоиском
+ 667
+
+ ВидЗагрузкиДанныхУправлениеПоискомРасширеннаяПодсказка
+ 669
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВидЗагрузкиДанныхУправлениеПоискомКонтекстноеМеню
+ 668
+ true
+
+ SearchControlAddition
+ ВидЗагрузкиДанных
+
+ true
+
+
+
+ ВидЗагрузкиДанныхРасширеннаяПодсказка
+ 20
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВидЗагрузкиДанныхКонтекстноеМеню
+ 18
+ true
+
+ true
+ true
+ true
+ true
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ false
+ false
+ true
+ Auto
+ Auto
+ true
+ true
+
+ СписокВариантовЗагрузки.Picture
+
+ None
+ None
+ None
+ true
+
+ true
+ true
+
+ true
+
+
+ ru
+ Выбор справочника для загрузки
+
+ true
+
+ ПояснениеДляВыбораСправочникаРасширеннаяПодсказка
+ 16
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ NormalSeparation
+ true
+ true
+ auto
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Выбор справочника для загрузки
+
+
+ ВыборСправочникаДляЗагрузкиРасширеннаяПодсказка
+ 4
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ ЗаполнениеТаблицыДанными
+ 5
+
+ ВариантЗагрузки
+ 652
+ true
+ true
+
+ true
+
+
+ ВариантЗагрузки
+
+
+ OnChange
+ ВариантЗагрузкиПриИзменении
+
+
+ ВариантЗагрузкиРасширеннаяПодсказка
+ 654
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантЗагрузкиКонтекстноеМеню
+ 653
+ true
+
+ RadioButtonField
+ Enter
+ true
+ Left
+ true
+
+ Tumbler
+
+
+ ru
+ Заполнение таблицы
+
+
+ 0
+
+
+
+
+ ru
+ Загрузки из файла
+
+
+ 1
+
+
+ Vertical
+
+
+
+ СтраницыЗаполненияДанных
+ 492
+
+ СтраницаВариантЗаполнениеТаблицы
+ 655
+
+ НадписьПодсказкаДляЗаполнения
+ 139
+
+ ru
+ Для заполнения таблицы необходимо скопировать данные в таблицу из внешнего файла через буфер обмена.
+
+ true
+ true
+
+ true
+
+
+ НадписьПодсказкаДляЗаполненияРасширеннаяПодсказка
+ 141
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьПодсказкаДляЗаполненияКонтекстноеМеню
+ 140
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ ШаблонСДанными
+ 47
+
+ ru
+ Предварительный просмотр
+
+ true
+ true
+
+ true
+
+
+ ШаблонСДанными
+
+ None
+ AlignCenter
+ AlignJustify
+ AlignLeft
+ AlignRight
+ BackColor
+ Bold
+ BorderAll
+ BorderBottom
+ BorderColor
+ BorderInside
+ BorderLeft
+ BorderNone
+ BorderOutline
+ BorderRight
+ BorderTop
+ ClearAll
+ ClearContent
+ CollapseAllGroups
+ CopyToClipboard
+ DeleteColumns
+ DeleteRows
+ Edit
+ ExpandAllGroups
+ Find
+ FindNext
+ FindPrevious
+ FixTable
+ Font
+ InsertColumnsLeft
+ InsertColumnsRight
+ InsertRowsBottom
+ InsertRowsTop
+ Italic
+ Merge
+ PageSetup
+ Preview
+ Print
+ PrintImmediately
+ Properties
+ Redo
+ Save
+ SaveAs
+ SelectAll
+ ShowGroups
+ TextColor
+ ThickBorderBottom
+ ThickBorderOutline
+ ThickBorderTop
+ Underline
+ Undo
+
+ ШаблонСДаннымиРасширеннаяПодсказка
+ 49
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ШаблонСДаннымиКонтекстноеМеню
+ 48
+ true
+
+ SpreadsheetDocumentField
+ Enter
+ true
+ Left
+ true
+
+
+ Selection
+ ШаблонСДаннымиВыбор
+
+ 50
+ true
+ 1
+ true
+ true
+ true
+ true
+ true
+ Special
+ ScrollAlways
+ ScrollAlways
+ Always
+ Auto
+ true
+ true
+ true
+ true
+
+
+
+ ИзменитьБланкЗаполнениеТаблицы
+ 657
+ true
+ true
+
+ true
+
+
+ ИзменитьБланкЗаполнениеТаблицыРасширеннаяПодсказка
+ 658
+ Label
+ true
+ true
+
+ Left
+
+
+ Hyperlink
+ Form.Command.ИзменитьБланк
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Button
+ Auto
+
+ true
+ true
+
+ true
+
+
+ СтраницаВариантЗаполнениеТаблицыРасширеннаяПодсказка
+ 656
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ СтраницаВариантЗагрузкаИзФайла
+ 494
+
+ ПояснениеВариантЗагрузкаИзФайла
+ 609
+
+ ru
+ Для загрузки данных необходимо заполнить таблицу сохранив бланк в файл для заполнения в другой программе.
+После редактирования загрузить готовые данные в таблицу.
+
+ true
+ true
+
+ true
+
+
+ ПояснениеВариантЗагрузкаИзФайлаРасширеннаяПодсказка
+ 611
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеВариантЗагрузкаИзФайлаКонтекстноеМеню
+ 610
+ true
+
+ Label
+ true
+ 4
+ true
+
+ Left
+
+
+
+ ЗагрузитьТаблицуИзФайла
+ 127
+ true
+ true
+
+ true
+
+
+ ЗагрузитьТаблицуИзФайлаРасширеннаяПодсказка
+ 128
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.ЗагрузитьТаблицуИзФайла
+ Normal
+ Auto
+ 25
+ true
+ 2
+ true
+ UserCmds
+ Auto
+
+
+ СохранитьБланкДляЗаполнения
+ 125
+ true
+ true
+
+ true
+
+
+ СохранитьБланкДляЗаполненияРасширеннаяПодсказка
+ 126
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.СохранитьБланкДляЗаполнения
+ Normal
+ PictureAndText
+ 25
+ true
+ 2
+ true
+ UserCmds
+ Auto
+
+
+ ИзменитьБланк
+ 581
+ true
+ true
+
+ true
+
+
+ ИзменитьБланкРасширеннаяПодсказка
+ 582
+ Label
+ true
+ true
+
+ Left
+
+
+ Hyperlink
+ Form.Command.ИзменитьБланк
+ Normal
+ Auto
+ 25
+ true
+ 2
+ true
+ UserCmds
+ Button
+ Auto
+
+ true
+ true
+
+ true
+
+
+ СтраницаВариантЗагрузкаИзФайлаРасширеннаяПодсказка
+ 495
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ СтраницаОднаКолонка
+ 496
+
+ НадписьПриВводеВОднуКолонку
+ 498
+
+ ru
+ Введите данные, скопированные ранее в буфер обмена:
+
+ true
+
+ true
+
+
+ НадписьПриВводеВОднуКолонкуРасширеннаяПодсказка
+ 500
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьПриВводеВОднуКолонкуКонтекстноеМеню
+ 499
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ ШаблонСДаннымиОднаКолонка
+ 489
+ true
+ true
+
+ true
+
+
+ ШаблонСДаннымиОднаКолонка
+
+ None
+
+ ШаблонСДаннымиОднаКолонкаРасширеннаяПодсказка
+ 491
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ШаблонСДаннымиОднаКолонкаКонтекстноеМеню
+ 490
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница одна колонка
+
+
+ СтраницаОднаКолонкаРасширеннаяПодсказка
+ 497
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+ true
+ true
+
+ true
+
+
+ СтраницыЗаполненияДанныхРасширеннаяПодсказка
+ 493
+ Label
+ true
+ true
+
+ Left
+
+
+ Pages
+
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Заполнение таблицы данными
+
+
+ ЗаполнениеТаблицыДаннымиРасширеннаяПодсказка
+ 6
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ Ненайдено
+ 543
+
+ ГруппаНеНайдено
+ 551
+
+ ДекорацияИнформация32
+ 548
+
+ ru
+ Декорация информация32
+
+ true
+ true
+
+ true
+
+
+ ДекорацияИнформация32РасширеннаяПодсказка
+ 550
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияИнформация32КонтекстноеМеню
+ 549
+ true
+
+ 4
+ true
+ 2
+ true
+
+
+ CommonPicture.Информация32
+
+
+
+
+ ДекорацияНичегоНеНайдено
+ 545
+
+ ru
+ Не удалось вставить введенные данные в список, т.к. в программе нет соответствующих данных.
+
+ true
+ true
+
+ true
+
+
+ ДекорацияНичегоНеНайденоРасширеннаяПодсказка
+ 547
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияНичегоНеНайденоКонтекстноеМеню
+ 546
+ true
+
+ Label
+ true
+ 2
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа не найдено
+
+
+ ru
+ Группа не найдено
+
+
+ ГруппаНеНайденоРасширеннаяПодсказка
+ 552
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Ненайдено
+
+
+ ru
+ Ненайдено
+
+
+ НенайденоРасширеннаяПодсказка
+ 544
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ РезультатыСопоставления
+ 504
+
+ ГруппаРезультатСопоставления
+ 528
+
+ НадписьРезультатСопоставления
+ 530
+
+ ru
+ Из %1 введенных строк в список будут вставлены %2.
+
+ true
+ true
+
+ true
+
+
+ НадписьРезультатСопоставленияРасширеннаяПодсказка
+ 532
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьРезультатСопоставленияКонтекстноеМеню
+ 531
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияНенайденоИНеоднозначность
+ 509
+
+ ru
+ Будут пропущены:
+- Нет данных в программе: 8
+- Несколько вариантов для вставки: 2
+Для просмотра пропущенных строк и подбора данных для вставки нажмите "Далее".
+
+ true
+ true
+
+ true
+
+
+ ДекорацияНенайденоИНеоднозначностьРасширеннаяПодсказка
+ 511
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияНенайденоИНеоднозначностьКонтекстноеМеню
+ 510
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Результат сопоставления
+
+
+ ru
+ Группа результат сопоставления
+
+
+ ГруппаРезультатСопоставленияРасширеннаяПодсказка
+ 529
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ NormalSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Результаты сопоставления
+
+
+ ru
+ Результаты сопоставления
+
+
+ РезультатыСопоставленияРасширеннаяПодсказка
+ 505
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ СопоставлениеЗагружаемыхДанных
+ 191
+
+ ПояснениеДляСопоставленияДанных
+ 401
+
+ ПояснениеДляПоискаСсылок
+ 501
+
+ ru
+ Для некоторых введенных строк не найдено данных в программе, либо имеется несколько вариантов.
+Для вставки таких строк следует выбрать соответствующие объекты, щелкнув левой кнопкой мыши в колонке "Объект".
+
+ true
+ true
+
+ true
+
+
+ ПояснениеДляПоискаСсылокРасширеннаяПодсказка
+ 503
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеДляПоискаСсылокКонтекстноеМеню
+ 502
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+ Top
+
+
+
+ ПояснениеДляПрикладнойЗагрузки
+ 406
+
+ ru
+ Для некоторых загруженных данных в программе не найдено однозначного соответствия. Для несопоставленных данных будут созданы новые записи, либо они будут пропущены (в зависимости от настройки). При необходимости возможно сопоставить данные вручную, заполнив колонку "%1".
+
+ true
+
+ true
+
+
+ ПояснениеДляПрикладнойЗагрузкиРасширеннаяПодсказка
+ 408
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеДляПрикладнойЗагрузкиКонтекстноеМеню
+ 407
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+ Top
+
+
+
+ ПояснениеДляУниверсальнойЗагрузки
+ 409
+
+ ru
+ Сопоставьте загружаемые данные с элементами в справочнике. Сопоставление возможно произвести несколько раз, выбирая разные колонки для сравнения. Также возможно сопоставить отдельные строки таблицы, выбрав значение в колонке.
+
+В зависимости от настройки, для несопоставленных данных будут созданы новые элементы, либо они будут пропущены, сопоставленные данные также будут обновлены либо не загружены.
+
+ true
+
+ true
+
+
+ ПояснениеДляУниверсальнойЗагрузкиРасширеннаяПодсказка
+ 411
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеДляУниверсальнойЗагрузкиКонтекстноеМеню
+ 410
+ true
+
+ Label
+ true
+ 5
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеДляТабличнойЧасти
+ 464
+
+ ru
+ Для некоторых значений в колонках таблицы не найдены однозначные соответствия в данных программы (выделены <colorstyle -16>красным цветом</>).
+Необходимо сопоставить эти значения с данными в программе вручную.
+В случае если в программе отсутствуют необходимые данные, то ввести их.
+
+ true
+
+ true
+
+
+ ПояснениеДляТабличнойЧастиРасширеннаяПодсказка
+ 466
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеДляТабличнойЧастиКонтекстноеМеню
+ 465
+ true
+
+ true
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Сопоставление загружаемых данных
+
+ true
+
+ ПояснениеДляСопоставленияДанныхРасширеннаяПодсказка
+ 402
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ NormalSeparation
+ true
+ true
+ auto
+ Auto
+ Auto
+
+
+
+ СписокКолонокСопоставления
+ 456
+
+ ru
+ Выполнить сопоставление по колонкам
+
+ true
+ true
+
+ true
+
+
+ СписокКолонокСопоставления
+
+
+ ru
+ Выберите одну или несколько колонок, по которым будут сопоставлены загруженные данные с данными из программы
+
+
+ СписокКолонокСопоставленияРасширеннаяПодсказка
+ 458
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокСопоставленияКонтекстноеМеню
+ 457
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ СписокКолонокСопоставленияНачалоВыбора
+
+ 35
+ true
+ true
+ false
+ true
+ true
+ OnActivate
+ true
+ Normal
+
+ ru
+ Укажите колонки для сопоставления
+
+
+
+
+ ГруппаСопоставления
+ 214
+
+ ФильтрТаблицаСопоставления
+ 450
+
+ ru
+ Показывать
+
+ true
+ true
+
+ true
+
+
+ ФильтрТаблицаСопоставления
+
+
+ OnChange
+ ФильтрТаблицаСопоставленияПриИзменении
+
+
+ ФильтрТаблицаСопоставленияРасширеннаяПодсказка
+ 452
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ФильтрТаблицаСопоставленияКонтекстноеМеню
+ 451
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ 20
+ true
+ true
+ false
+ true
+ true
+ true
+ true
+ OnActivate
+ true
+
+
+ ru
+ Все
+
+
+
+
+
+ ru
+ Невсе
+
+
+ 1
+
+
+ Normal
+
+
+
+ РазрешитьНеоднозначность
+ 459
+ true
+ false
+
+ true
+
+
+ РазрешитьНеоднозначностьРасширеннаяПодсказка
+ 460
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.РазрешитьНеоднозначность
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ГруппаКоманднаяПанель
+ 431
+
+ СопоставлениеДанныхНайти
+ 446
+ true
+ true
+
+ true
+
+
+ СопоставлениеДанныхНайтиРасширеннаяПодсказка
+ 447
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ТаблицаСопоставленияДанных.StandardCommand.Find
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СопоставлениеДанныхОтменитьПоиск
+ 448
+ true
+ true
+
+ true
+
+
+ СопоставлениеДанныхОтменитьПоискРасширеннаяПодсказка
+ 449
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ТаблицаСопоставленияДанных.StandardCommand.CancelSearch
+ Normal
+ Picture
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ТаблицаСопоставленияДанныхОтменитьСопоставление
+ 659
+ true
+ true
+
+ true
+
+
+ ТаблицаСопоставленияДанныхОтменитьСопоставлениеРасширеннаяПодсказка
+ 660
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОтменитьСопоставление
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа командная панель
+
+
+ ГруппаКоманднаяПанельРасширеннаяПодсказка
+ 432
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Item.ТаблицаСопоставленияДанных
+
+
+ true
+ true
+
+ true
+
+
+ ГруппаСопоставленияРасширеннаяПодсказка
+ 215
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ WeakSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаСопоставляемыеДанные
+ 435
+
+ ТаблицаСопоставленияДанных
+ 437
+ true
+ true
+
+ true
+
+
+ ТаблицаСопоставленияДанных
+
+ None
+ Add
+ Change
+ Copy
+ Delete
+ EndEdit
+
+ ТаблицаСопоставленияДанныхКоманднаяПанель
+ 439
+ Left
+
+
+ OnEditEnd
+ ТаблицаСопоставленияДанныхПриОкончанииРедактирования
+
+
+ Selection
+ ТаблицаСопоставленияДанныхВыбор
+
+
+ OnActivateCell
+ ТаблицаСопоставленияДанныхПриАктивизацииЯчейки
+
+
+ ТаблицаСопоставленияДанныхСтрокаПоиска
+ 684
+
+ ТаблицаСопоставленияДанныхСтрокаПоискаРасширеннаяПодсказка
+ 686
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТаблицаСопоставленияДанныхСтрокаПоискаКонтекстноеМеню
+ 685
+ true
+
+ ТаблицаСопоставленияДанных
+
+ true
+
+
+
+ ТаблицаСопоставленияДанныхСостояниеПросмотра
+ 687
+
+ ТаблицаСопоставленияДанныхСостояниеПросмотраРасширеннаяПодсказка
+ 689
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТаблицаСопоставленияДанныхСостояниеПросмотраКонтекстноеМеню
+ 688
+ true
+
+ ViewStatusAddition
+ ТаблицаСопоставленияДанных
+
+ true
+
+
+
+ ТаблицаСопоставленияДанныхУправлениеПоиском
+ 690
+
+ ТаблицаСопоставленияДанныхУправлениеПоискомРасширеннаяПодсказка
+ 692
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТаблицаСопоставленияДанныхУправлениеПоискомКонтекстноеМеню
+ 691
+ true
+
+ SearchControlAddition
+ ТаблицаСопоставленияДанных
+
+ true
+
+
+
+ ТаблицаСопоставленияДанныхРасширеннаяПодсказка
+ 440
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТаблицаСопоставленияДанныхКонтекстноеМеню
+ 438
+
+ ТаблицаСопоставленияДанныхКонтекстноеМенюРазрешитьНеоднозначность
+ 487
+ true
+ true
+
+ true
+
+
+ ТаблицаСопоставленияДанныхКонтекстноеМенюРазрешитьНеоднозначностьРасширеннаяПодсказка
+ 488
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.РазрешитьНеоднозначность
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+
+ true
+ true
+ true
+ true
+ 2
+ true
+ MultiRow
+ true
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ Auto
+ Auto
+ true
+ true
+ None
+ None
+ None
+ true
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа сопоставляемые данные
+
+
+ ГруппаСопоставляемыеДанныеРасширеннаяПодсказка
+ 436
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаНастройкиСопоставления
+ 419
+
+ ГруппаИтогоНеспоставленых
+ 421
+
+ ОбновлятьСуществующие
+ 428
+
+ ru
+ Сопоставленные элементы (%1)
+
+ true
+ true
+
+ true
+
+
+ ОбновлятьСуществующие
+
+ Left
+
+ ОбновлятьСуществующиеРасширеннаяПодсказка
+ 430
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОбновлятьСуществующиеКонтекстноеМеню
+ 429
+ true
+
+ RadioButtonField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ru
+ Обновлять
+
+
+ 1
+
+
+
+
+ ru
+ Пропускать
+
+
+ 0
+
+
+ Vertical
+
+
+
+ СоздаватьЕслиНеСопоставлено
+ 423
+
+ ru
+ Несопоставленные (%1)
+
+ true
+ true
+
+ true
+
+
+ СоздаватьЕслиНеСопоставлено
+
+ Left
+
+ СоздаватьЕслиНеСопоставленоРасширеннаяПодсказка
+ 425
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СоздаватьЕслиНеСопоставленоКонтекстноеМеню
+ 424
+ true
+
+ RadioButtonField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ru
+ Создавать
+
+
+ 1
+
+
+
+
+ ru
+ Пропускать
+
+
+ 0
+
+
+ Vertical
+
+
+
+ ОписаниеНеоднозначность
+ 461
+
+ ru
+ ( в т.ч. неоднозначностей: %1 )
+
+ true
+
+ true
+
+
+ ОписаниеНеоднозначностьРасширеннаяПодсказка
+ 463
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОписаниеНеоднозначностьКонтекстноеМеню
+ 462
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа итого неспоставленых
+
+
+ ru
+ Группа итого неспоставленых
+
+
+ ГруппаИтогоНеспоставленыхРасширеннаяПодсказка
+ 422
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Сопоставление загружаемых данных:
+
+ false
+
+ ГруппаНастройкиСопоставленияРасширеннаяПодсказка
+ 420
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Сопоставление загружаемых данных
+
+
+ СопоставлениеЗагружаемыхДанныхРасширеннаяПодсказка
+ 192
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ ОтчетОЗагрузкеДанных
+ 72
+
+ ШапкаОтчетаОЗагрузкеДанных
+ 367
+
+ РасшифровкаСводныхДанных
+ 321
+
+ ГруппаОтчетИтог
+ 316
+
+ ГруппаОтчетСозданныеИОбновленные
+ 467
+
+ ИтогоОтчетСоздано
+ 475
+ true
+ true
+
+ true
+
+
+ ИтогоОтчетСоздано
+
+
+ ИтогоОтчетСозданоРасширеннаяПодсказка
+ 477
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИтогоОтчетСозданоКонтекстноеМеню
+ 476
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ ru
+ ЧН=0
+
+
+ System.DefaultGUIFont
+ true
+ false
+ false
+ false
+
+
+
+
+ ИтогоОтчетПропущено
+ 481
+ true
+ true
+
+ true
+
+
+ ИтогоОтчетПропущено
+
+
+ ИтогоОтчетПропущеноРасширеннаяПодсказка
+ 483
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИтогоОтчетПропущеноКонтекстноеМеню
+ 482
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ ru
+ ЧН=0
+
+
+ System.DefaultGUIFont
+ true
+ false
+ false
+ false
+
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа отчет созданные и обновленные
+
+
+ ГруппаОтчетСозданныеИОбновленныеРасширеннаяПодсказка
+ 468
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаПропущенные
+ 469
+
+ ИтогоОтчетОбновлено
+ 478
+ true
+ true
+
+ true
+
+
+ ИтогоОтчетОбновлено
+
+
+ ИтогоОтчетОбновленоРасширеннаяПодсказка
+ 480
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИтогоОтчетОбновленоКонтекстноеМеню
+ 479
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ ru
+ ЧН=0
+
+
+ System.DefaultGUIFont
+ true
+ false
+ false
+ false
+
+
+
+
+ ИтогоОтчетНекорректных
+ 484
+ true
+ true
+
+ true
+
+
+ ИтогоОтчетНекорректных
+
+
+ ИтогоОтчетНекорректныхРасширеннаяПодсказка
+ 486
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИтогоОтчетНекорректныхКонтекстноеМеню
+ 485
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ ru
+ ЧН=0
+
+
+ System.DefaultGUIFont
+ true
+ false
+ false
+ false
+
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пропущенные
+
+
+ ГруппаПропущенныеРасширеннаяПодсказка
+ 470
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа отчет итог
+
+
+ ГруппаОтчетИтогРасширеннаяПодсказка
+ 317
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Equal
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Расшифровка сводных данных
+
+
+ РасшифровкаСводныхДанныхРасширеннаяПодсказка
+ 322
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ПояснениеОтчетаОЗагрузке
+ 375
+
+ ru
+ Созданные и обновленные элементы справочника "%1" можно откорректировать, выделив сразу несколько строк и нажав кнопку "Измененить реквизиты". Отдельные элементы можно открыть по двойному щелчку мыши.
+При необходимости, пропущенные строки можно сохранить в файл, подкорректировать и позднее загрузить повторно.
+
+ true
+ true
+
+ true
+
+
+ ПояснениеОтчетаОЗагрузкеРасширеннаяПодсказка
+ 377
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеОтчетаОЗагрузкеКонтекстноеМеню
+ 376
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+ Top
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Загрузка данных завершена
+
+
+ ШапкаОтчетаОЗагрузкеДанныхРасширеннаяПодсказка
+ 368
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ WeakSeparation
+ true
+ true
+ auto
+ Auto
+ Auto
+
+
+
+ КоманднаяПанельУправленияОтчета
+ 170
+
+ ФильтрОтчет
+ 345
+
+ ru
+ Показывать
+
+ true
+ true
+
+ true
+
+
+ ФильтрОтчет
+
+
+ OnChange
+ ФильтрОтчетПриИзменении
+
+
+ ФильтрОтчетРасширеннаяПодсказка
+ 347
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ФильтрОтчетКонтекстноеМеню
+ 346
+ true
+
+ InputField
+ Right
+ Enter
+ true
+ Left
+ true
+
+ 15
+ true
+ true
+ false
+ true
+ false
+ true
+ 6
+ true
+ true
+
+
+ ru
+ Все (100)
+
+
+ 0
+
+
+
+
+ ru
+ Новые (20)
+
+
+ 1
+
+
+
+
+ ru
+ Обновленные (78)
+
+
+ 2
+
+
+
+
+ ru
+ Пропущенные (2)
+
+
+ 3
+
+
+
+
+ ru
+ Некорректные (2)
+
+
+ 4
+
+
+ Normal
+ 7
+
+
+
+ КомандыПанелиУправленияОтчета
+ 433
+
+ Сохранить
+ 172
+
+ ru
+ Сохранить...
+
+ true
+ true
+
+ true
+
+
+ СохранитьРасширеннаяПодсказка
+ 173
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ТаблицаОтчет.StandardCommand.Save
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ Печать
+ 179
+ true
+ true
+
+ true
+
+
+ ПечатьРасширеннаяПодсказка
+ 180
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ТаблицаОтчет.StandardCommand.Print
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ИзменитьРеквизиты
+ 378
+ true
+ true
+
+ true
+
+
+ ИзменитьРеквизитыРасширеннаяПодсказка
+ 379
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ИзменитьРеквизиты
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Команды панели управления отчета
+
+
+ КомандыПанелиУправленияОтчетаРасширеннаяПодсказка
+ 434
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель управления отчета
+
+
+ КоманднаяПанельУправленияОтчетаРасширеннаяПодсказка
+ 171
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ТаблицаОтчет
+ 157
+
+ ru
+ Отчет о загрузке
+
+ true
+ true
+
+ true
+
+
+ ТаблицаОтчет
+
+ None
+
+ ТаблицаОтчетРасширеннаяПодсказка
+ 159
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТаблицаОтчетКонтекстноеМеню
+ 158
+ true
+
+ SpreadsheetDocumentField
+ Enter
+ true
+ Left
+ true
+
+
+ OnActivate
+ ТаблицаОтчетПриАктивизацииОбласти
+
+ 50
+ true
+ 1
+ true
+ true
+ true
+ Special
+ ScrollAlways
+ ScrollAlways
+ Always
+ Auto
+ true
+ true
+ true
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Отчет о загрузке данных
+
+
+ ОтчетОЗагрузкеДанныхРасширеннаяПодсказка
+ 73
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ ДлительныеОперации
+ 553
+
+ ГруппаИнформацияОВыполенение
+ 561
+
+ ГруппаПрогресс
+ 569
+
+ ДекорацияСостояниеФоновогоЗадания
+ 558
+
+ ru
+ Пожалуйста, подождите...
+
+ true
+ true
+
+ true
+
+
+ ДекорацияСостояниеФоновогоЗаданияРасширеннаяПодсказка
+ 560
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияСостояниеФоновогоЗаданияКонтекстноеМеню
+ 559
+ true
+
+ Label
+ true
+ 2
+ true
+
+ Left
+ Bottom
+
+
+
+ ФоновоеЗаданиеПроцент
+ 566
+ true
+ true
+
+ true
+
+
+ ФоновоеЗаданиеПроцент
+
+ None
+
+ ФоновоеЗаданиеПроцентРасширеннаяПодсказка
+ 568
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ФоновоеЗаданиеПроцентКонтекстноеМеню
+ 567
+ true
+
+ ProgressBarField
+ Enter
+ true
+ Left
+ true
+
+ 32
+ true
+ 1
+ true
+ true
+ 100
+ true
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа прогресс
+
+
+ ru
+ Группа прогресс
+
+ 6
+
+ ГруппаПрогрессРасширеннаяПодсказка
+ 570
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа информация о выполенение
+
+
+ ru
+ Группа информация о выполенение
+
+
+ ГруппаИнформацияОВыполенениеРасширеннаяПодсказка
+ 562
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Длительные операции
+
+
+ ru
+ Длительные операции
+
+
+ ДлительныеОперацииРасширеннаяПодсказка
+ 554
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страницы помощника
+
+ None
+
+ СтраницыПомощникаРасширеннаяПодсказка
+ 2
+ Label
+ true
+ true
+
+ Left
+
+
+ Pages
+
+ Auto
+
+
+
+ КоманднаяПанель
+ 32
+
+ ГруппаНазад
+ 473
+
+ Назад
+ 36
+
+ ru
+ < Назад
+
+ true
+
+ true
+
+
+ НазадРасширеннаяПодсказка
+ 37
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Назад
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа назад
+
+
+ ГруппаНазадРасширеннаяПодсказка
+ 474
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+
+
+
+ ОткрытьСправочникПослеЗакрытияПомощника
+ 351
+
+ ru
+ Открыть справочник "%1" по кнопке "Готово"
+
+ true
+
+ true
+
+
+ ОткрытьСправочникПослеЗакрытияПомощника
+
+ Right
+
+ ОткрытьСправочникПослеЗакрытияПомощникаРасширеннаяПодсказка
+ 353
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОткрытьСправочникПослеЗакрытияПомощникаКонтекстноеМеню
+ 352
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ДекорацияРазделитель
+ 38
+
+ ru
+
+
+ true
+ true
+
+ true
+
+
+ ДекорацияРазделительРасширеннаяПодсказка
+ 40
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияРазделительКонтекстноеМеню
+ 39
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ ГруппаДалееЗакрыть
+ 471
+
+ ВставитьВСписок
+ 541
+ true
+
+ true
+
+
+ ВставитьВСписокРасширеннаяПодсказка
+ 542
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ВставитьВСписок
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Далее
+ 43
+ true
+ true
+
+ true
+
+
+ ДалееРасширеннаяПодсказка
+ 44
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Далее
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Закрыть
+ 45
+
+ ru
+ Закрыть
+
+ true
+ true
+
+ true
+
+
+ ЗакрытьРасширеннаяПодсказка
+ 46
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Close
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа далее закрыть
+
+
+ ГруппаДалееЗакрытьРасширеннаяПодсказка
+ 472
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Right
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 33
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ФормаКоманднаяПанель
+ -1
+ Left
+
+
+ BeforeClose
+ ПередЗакрытием
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ LockOwner
+ UseList
+ true
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ Объект
+ 1
+
+ DataProcessorObject.ЗагрузкаДанныхИзФайла
+
+
+ true
+
+
+ true
+
+ true
+
+
+ СписокВариантовЗагрузки
+
+ ru
+ Список вариантов загрузки
+
+ 3
+
+ ValueList
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+ ШаблонСДанными
+
+ ru
+ Шаблон с данными
+
+ 4
+
+ SpreadsheetDocument
+
+
+ true
+
+
+ true
+
+
+
+
+ ОбновлятьСуществующие
+
+ ru
+ Обновлять существующие
+
+ 7
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ СопоставитьПоКолонке
+
+ ru
+ Сопоставить по колонке
+
+ 8
+
+ ValueList
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+ СоздаватьЕслиНеСопоставлено
+
+ ru
+ Создавать если не сопоставлено
+
+ 11
+
+ Number
+
+
+
+ true
+
+
+ true
+
+
+
+ ТаблицаОтчет
+
+ ru
+ Таблица отчет
+
+ 12
+
+ SpreadsheetDocument
+
+
+ true
+
+
+ true
+
+
+
+
+ ФильтрОтчет
+
+ ru
+ Фильтр отчет
+
+ 15
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ОткрытьСправочникПослеЗакрытияПомощника
+
+ ru
+ Открыть справочник после закрытия помощника
+
+ 16
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ТаблицаСопоставленияДанных
+
+ ru
+ Таблица сопоставления данных
+
+ 18
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+
+ ИмяОбъектаСопоставления
+
+ ru
+ Имя объекта сопоставления
+
+ 6
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ТипЗагрузки
+
+ ru
+ Тип загрузки
+
+ 9
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ИнформацияПоКолонкам
+
+ ru
+ Информация по колонкам
+
+ 13
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+ ИмяКолонки
+
+ ru
+ Имя колонки
+
+ 1
+
+ String
+
+ 150
+
+
+
+ true
+
+
+ true
+
+
+
+ ПредставлениеКолонки
+
+ ru
+ Представление колонки
+
+ 2
+
+ String
+
+ 150
+
+
+
+ true
+
+
+ true
+
+
+
+ ТипКолонки
+
+ ru
+ Тип колонки
+
+ 3
+
+
+ true
+
+
+ true
+
+
+
+ ОбязательнаДляЗаполнения
+
+ ru
+ Обязательна для заполнения
+
+ 4
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Позиция
+
+ ru
+ Позиция
+
+ 5
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ Ассоциация
+
+ ru
+ Ассоциация
+
+ 6
+
+ String
+
+ 150
+
+
+
+ true
+
+
+ true
+
+
+
+ Синоним
+
+ ru
+ Синоним
+
+ 7
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Видимость
+
+ ru
+ Видимость
+
+ 8
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Примечание
+
+ ru
+ Примечание
+
+ 9
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Ширина
+
+ ru
+ Ширина
+
+ 10
+
+ Number
+
+ 10
+ 3
+
+
+
+ true
+
+
+ true
+
+
+
+
+ ВнешняяОбработкаСсылка
+
+ ru
+ Внешняя обработка ссылка
+
+ 5
+
+ AnyRef
+
+
+ true
+
+
+ true
+
+
+
+ ФильтрТаблицаСопоставления
+
+ ru
+ Фильтр таблица сопоставления
+
+ 14
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ СписокКолонокСопоставления
+
+ ru
+ Список колонок сопоставления
+
+ 19
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ПараметрыЗагрузки
+
+ ru
+ Параметры загрузки
+
+ 20
+
+
+ true
+
+
+ true
+
+
+
+ ИтогоОтчетСоздано
+
+ ru
+ Создано новых элементов
+
+ 17
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ИтогоОтчетОбновлено
+
+ ru
+ Обновлено существующих
+
+ 21
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ИтогоОтчетПропущено
+
+ ru
+ Пропущено
+
+ 22
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ИтогоОтчетНекорректных
+
+ ru
+ в т.ч. из-за некорректных данных
+
+ 23
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ИдентификаторКоманды
+
+ ru
+ Идентификатор команды
+
+ 2
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ПараметрыОтбора
+
+ ru
+ Параметры отбора
+
+ 10
+
+
+ true
+
+
+ true
+
+
+
+ ШаблонСДаннымиОднаКолонка
+
+ ru
+ Шаблон с данными одна колонка
+
+ 24
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ФоновоеЗаданиеИдентификатор
+
+ ru
+ Фоновое задание идентификатор
+
+ 25
+
+
+ true
+
+
+ true
+
+
+
+ ФоновоеЗаданиеАдресХранилища
+
+ ru
+ Фоновое задание адрес хранилища
+
+ 26
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ФоновоеЗаданиеПроцент
+
+ ru
+ Фоновое задание процент
+
+ 27
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ВариантЗагрузки
+
+ ru
+ Вариант загрузки
+
+ 28
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ РеквизитыСозданы
+
+ ru
+ Реквизиты созданы
+
+ 29
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ЗагрузитьТаблицуИзФайла
+
+ ru
+ Загрузить таблицу из файла...
+
+ 2
+
+ ru
+ Загрузка подготовленных данных из файла в таблицу
+
+
+ true
+
+
+
+ ЗагрузитьШаблонИзФайла
+
+
+ Auto
+ Auto
+
+
+ СохранитьБланкДляЗаполнения
+
+ ru
+ Сохранить бланк для заполнения...
+
+ 3
+
+ ru
+ Сохраняет в файл бланк для заполнения в виде пустой таблицы. Доступно сохранение в один из трех выбраных форматов файла (Книга Excel 2007, Текстовый файл с разделителями CSV, MXL таблица)
+
+
+ true
+
+
+
+ ВыгрузитьШаблонВФайл
+
+
+ Auto
+ Auto
+
+
+ Далее
+
+ ru
+ Далее >
+
+ 6
+
+ true
+
+
+
+ Далее
+
+
+ Auto
+ Auto
+
+
+ Назад
+
+ ru
+ Назад
+
+ 7
+
+ ru
+ Назад
+
+
+ true
+
+
+
+ Назад
+
+
+ Auto
+ Auto
+
+
+ ИзменитьРеквизиты
+
+ ru
+ Изменить реквизиты
+
+ 9
+
+ ru
+ Изменить реквизиты
+
+
+ true
+
+
+
+ ГрупповоеИзменениеРеквизитов
+
+
+ Auto
+ Auto
+
+
+ РазрешитьНеоднозначность
+
+ ru
+ Разрешить неоднозначность...
+
+ 10
+
+ ru
+ Открывает окно со списков совпадающих элементов справочника для выбора правильногоэлемента
+
+
+ true
+
+
+
+ РазрешитьНеоднозначность
+
+
+ Auto
+ Auto
+
+
+ ВставитьВСписок
+
+ ru
+ Вставить в список
+
+ 1
+
+ ru
+ Вставить в список
+
+
+ true
+
+
+
+ ВставитьВСписок
+
+
+ Auto
+ Auto
+
+
+ ИзменитьБланк
+
+ ru
+ Изменить бланк
+
+ 4
+
+ ru
+ Если регулярно требуется загрузка данных, то можно настроить наименование колонок, их отображение и порядок следования для упрощения загрузки.
+
+
+ true
+
+
+
+ ИзменитьБланк
+
+
+ Auto
+ Auto
+
+
+ ОтменитьСопоставление
+
+ ru
+ Отменить сопоставление
+
+ 5
+
+ ru
+ Отменить сопоставление
+
+
+ true
+
+
+
+ ОтменитьСопоставление
+
+
+ Auto
+ Auto
+
+
+ ПолноеИмяТабличнойЧасти
+
+ String
+
+
+
+
+ ИмяМакетаСШаблоном
+
+ String
+
+ 100
+
+
+
+
+ Сценарий
+
+ String
+
+
+
+
+ Заголовок
+
+ String
+
+
+
+
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Module.bsl
new file mode 100644
index 000000000..0e07511bb
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/ЗагрузкаДанныхИзФайла/Module.bsl
@@ -0,0 +1,2488 @@
+&НаКлиенте
+Перем ПараметрыОбработчика;
+
+&НаКлиенте
+Перем ФормаДлительнойОперации;
+
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если Параметры.Сценарий = "ПоискСсылок" ИЛИ Параметры.Сценарий = "ВставкаИзБуфераОбмена" Тогда
+ ТипЗагрузки = "ВставкаИзБуфераОбмена";
+ ИначеЕсли ЗначениеЗаполнено(Параметры.ПолноеИмяТабличнойЧасти) Тогда
+ ТипЗагрузки = "ТабличнаяЧасть";
+ ИначеЕсли НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
+ ВызватьИсключение(НСтр("ru = 'Недостаточно прав для открытия загрузки данных из файла'"));
+ Отказ = Истина;
+ Возврат;
+ КонецЕсли;
+
+ УстановитьОформлениеДанных();
+ СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект);
+
+ СоздаватьЕслиНеСопоставлено = 1;
+ ОбновлятьСуществующие = 0;
+
+ Если ЗначениеЗаполнено(Параметры.Заголовок) Тогда
+ ЭтотОбъект.АвтоЗаголовок = Ложь;
+ ЭтотОбъект.Заголовок = Параметры.Заголовок;
+ Иначе
+ ЭтотОбъект.АвтоЗаголовок = Ложь;
+ ЭтотОбъект.Заголовок = НСтр("ru = 'Загрузка данных из файла'")
+ КонецЕсли;
+
+ ВебКлиент = ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент();
+ Если ВебКлиент Тогда
+ Элементы.СтраницаВариантЗаполнениеТаблицы.Видимость = Ложь;
+ Элементы.СтраницыЗаполненияДанных.ТекущаяСтраница = Элементы.СтраницаВариантЗагрузкаИзФайла;
+ Элементы.ВариантЗагрузки.Видимость = Ложь;
+ ВидЗагрузкиДанных = 1;
+ КонецЕсли;
+
+ Если ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ ФильтрТаблицаСопоставления = "Несопоставленные";
+ Если Параметры.Свойство("ПредставлениеПоля") Тогда
+ Заголовок = НСтр("ru = 'Вставка из буфера обмена'") + " (" + Параметры.ПредставлениеПоля + ")";
+ ЭтотОбъект.АвтоЗаголовок = Ложь;
+ Иначе
+ Заголовок = НСтр("ru = 'Вставка из буфера обмена'");
+ КонецЕсли;
+
+ Обработки.ЗагрузкаДанныхИзФайла.ИнициализироватьРежимПоискСсылок(ШаблонСДанными, ИнформацияПоКолонкам, Параметры.ОписаниеТипов);
+ СоздатьТаблицуСопоставленияПоИнформацииОКолонкахАвто(Параметры.ОписаниеТипов);
+
+ Если ИнформацияПоКолонкам.Количество() = 1 Тогда
+ Элементы.СтраницыЗаполненияДанных.ТекущаяСтраница = Элементы.СтраницаОднаКолонка;
+ Элементы.ВариантЗагрузки.Видимость = Ложь;
+ Элементы.ВставитьВСписок.Видимость = Ложь;
+ Элементы.Далее.Заголовок = Нстр("ru = 'Вставить в список'");
+ Иначе
+ Элементы.СтраницыЗаполненияДанных.ТекущаяСтраница = Элементы.СтраницаМногоКолонок;
+ КонецЕсли;
+
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными;
+ Элементы.ГруппаНастройкиСопоставления.Видимость = Ложь;
+ Элементы.СписокКолонокСопоставления.Видимость = Ложь;
+ Элементы.Закрыть.Заголовок = НСтр("ru = 'Отмена'");
+
+ Иначе
+ Если НЕ ЗначениеЗаполнено(Параметры.ПолноеИмяТабличнойЧасти) тогда
+ ЗаполнитьСписокВидЗагрузкиДанных();
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ВыборСправочникаДляЗагрузки;
+ Иначе
+ ИмяОбъектаСопоставления = Обработки.ЗагрузкаДанныхИзФайла.ПолноеИмяОбъектаТабличнаяЧасть(Параметры.ПолноеИмяТабличнойЧасти);
+
+ ИнформацияПоКолонкамИзХранилища = ХранилищеСистемныхНастроек.Загрузить("ЗагрузкаДанныхИзФайла", ИмяОбъектаСопоставления);
+ Если ИнформацияПоКолонкамИзХранилища <> Неопределено Тогда
+ ЗначениеВРеквизитФормы(ИнформацияПоКолонкамИзХранилища, "ИнформацияПоКолонкам");
+ КонецЕсли;
+ Обработки.ЗагрузкаДанныхИзФайла.ИнициализироватьЗагрузкуВТабличнуюЧасть(ИмяОбъектаСопоставления, Параметры.ИмяМакетаСШаблоном, ИнформацияПоКолонкам, ШаблонСДанными, Отказ);
+ Если Отказ Тогда
+ Возврат;
+ КонецЕсли;
+ ПоказатьИнформационнуюСтрокуПроОбязательныеКолонки();
+ ИзменитьБланкПоИнформацииПоКолонкам();
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными;
+ Элементы.ГруппаНастройкиСопоставления.Видимость = Ложь;
+ Элементы.СписокКолонокСопоставления.Видимость = Ложь;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
+
+ Если ОткрытьСправочникПослеЗакрытияПомощника Тогда
+ ОткрытьФорму(ФормаСписка(ИмяОбъектаСопоставления));
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура ОтменитьСопоставление(Команда)
+ Оповещение = новый ОписаниеОповещения("ПослеВопросаПроОтменитьСопоставление", ЭтотОбъект);
+ ПоказатьВопрос(Оповещение, НСтр("ru = 'Отменить сопоставление?'"), РежимДиалогаВопрос.ДаНет);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ИзменитьБланк(Команда)
+ ПараметрыФормы = Новый Структура();
+ ПараметрыФормы.Вставить("ИнформацияПоКолонкам", ИнформацияПоКолонкам);
+ ПараметрыФормы.Вставить("ИмяОбъектаСопоставления", ИмяОбъектаСопоставления);
+
+ Оповещение = новый ОписаниеОповещения("ПослеВызоваФормыИзменитьБланк", ЭтотОбъект);
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма.РедактированиеБланка", ПараметрыФормы, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура РазрешитьНеоднозначность(Команда)
+ ОткрытьФормуРазрешенияНеоднозначности(Элементы.ТаблицаСопоставленияДанных.ТекущаяСтрока,Элементы.ТаблицаСопоставленияДанных.ТекущийЭлемент.Имя, Истина);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВставитьВСписок(Команда)
+ ЗакрытьФормуИВернутьМассивСсылок();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Далее(Команда)
+
+ Если Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ВыборСправочникаДляЗагрузки Тогда
+ ОписаниеСтрокиВыбора = Элементы.ВидЗагрузкиДанных.ТекущиеДанные.Значение;
+ ВыполнитьШагЗаполнениеТаблицыДаннымиНаСервере(ОписаниеСтрокиВыбора);
+ ВыполнитьШагЗаполнениеТаблицыДаннымиНаКлиенте();
+ ИначеЕсли Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными Тогда
+ ВыполнитьШагСопоставлениеЗагружаемыхДанных();
+ ИначеЕсли Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.РезультатыСопоставления Тогда
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СопоставлениеЗагружаемыхДанных;
+ Элементы.ВставитьВСписок.Видимость = Ложь;
+ Элементы.Далее.Заголовок = НСтр("ru = 'Вставить в список'");
+ Элементы.Далее.КнопкаПоУмолчанию = Истина;
+ Элементы.Назад.Заголовок = НСтр("ru = '< В начало'");
+ ИначеЕсли Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СопоставлениеЗагружаемыхДанных Тогда
+ Элементы.ВставитьВСписок.Видимость = Ложь;
+ Если ТипЗагрузки = "ТабличнаяЧасть" Тогда
+ Отбор = Новый Структура("РезультатСопоставленияСтроки", "НеСопоставлен");
+ Строки = ТаблицаСопоставленияДанных.НайтиСтроки(Отбор);
+
+ Если Строки.Количество() > 0 Тогда
+ Оповещение = Новый ОписаниеОповещения("ПослеВопросаОДобавлениеВТабличнуюЧасть", ЭтотОбъект);
+ ПоказатьВопрос(Оповещение, НСтр("ru = 'Строки в которых не заполнены обязательные колонки будут пропущены.'") +
+ Символы.ПС + НСтр("ru = 'Продолжить?'"), РежимДиалогаВопрос.ДаНет);
+ Возврат;
+ КонецЕсли;
+
+ АдресЗагруженныхДанных = АдресВХранилищеТаблицыСопоставления();
+ Закрыть(АдресЗагруженныхДанных);
+
+ ИначеЕсли ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Элементы.Назад.Заголовок = НСтр("ru = '< В начало_'");
+ ЗакрытьФормуИВернутьМассивСсылок();
+ Иначе
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ДлительныеОперации;
+ ЗаписатьЗагружаемыеДанныеКлиент();
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеВопросаОДобавлениеВТабличнуюЧасть(Результат, ДополнительныеПараметры) Экспорт
+ Если Результат = КодВозвратаДиалога.Да Тогда
+ АдресЗагруженныхДанных = АдресВХранилищеТаблицыСопоставления();
+ Закрыть(АдресЗагруженныхДанных);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗаполнитьТаблицуСопоставленияИзВременногоХранилища()
+ СопоставленныеДанные = ПолучитьИзВременногоХранилища(ФоновоеЗаданиеАдресХранилища);
+ ЗначениеВРеквизитФормы(СопоставленныеДанные, "ТаблицаСопоставленияДанных");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗакрытьФормуИВернутьМассивСсылок()
+ МассивСсылок = Новый Массив;
+ Для каждого Строка Из ТаблицаСопоставленияДанных Цикл
+ Если ЗначениеЗаполнено(Строка.ОбъектСопоставления) Тогда
+ МассивСсылок.Добавить(Строка.ОбъектСопоставления);
+ КонецЕсли;
+ КонецЦикла;
+
+ Закрыть(МассивСсылок);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Назад(Команда)
+
+ Если Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными Тогда
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ВыборСправочникаДляЗагрузки;
+ Элементы.Назад.Видимость = Ложь;
+ ОчиститьТаблицу();
+ ИначеЕсли Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СопоставлениеЗагружаемыхДанных ИЛИ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.НеНайдено Тогда
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными;
+ Элементы.ВставитьВСписок.Видимость = Ложь;
+ Элементы.Далее.КнопкаПоУмолчанию = Истина;
+ Элементы.Далее.Видимость = Истина;
+ Если ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Элементы.Далее.Заголовок = НСтр("ru = 'Вставить в список'");
+ Иначе
+ Элементы.Далее.Заголовок = НСтр("ru = 'Далее >'");
+ КонецЕсли;
+ Если ТипЗагрузки = "ТабличнаяЧасть" ИЛИ ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Элементы.Назад.Видимость = Ложь;
+ КонецЕсли;
+
+
+ ИначеЕсли Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ОтчетОЗагрузкеДанных Тогда
+ Элементы.ОткрытьСправочникПослеЗакрытияПомощника.Видимость = Ложь;
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СопоставлениеЗагружаемыхДанных;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВыгрузитьШаблонВФайл(Команда)
+
+ Если ПодключитьРасширениеРаботыСФайлами() Тогда
+ Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ФайловыеФункции") Тогда
+ МодульФайловыеФункцииСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ФайловыеФункцииСлужебныйКлиент");
+ ПутьКФайлу = МодульФайловыеФункцииСлужебныйКлиент.КаталогМоиДокументы();
+ Иначе
+ ПутьКФайлу = "";
+ КонецЕсли;
+
+ ИмяФайла = СформироватьИмяФайлаДляОбъектаМетаданных(ИмяОбъектаСопоставления);
+ ПолучитьПутьКФайлуНачалоВыбора(РежимДиалогаВыбораФайла.Сохранение, ПутьКФайлу, ИмяФайла);
+ ВыбранныйФайл = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПутьКФайлу);
+ РасширениеФайла = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(ВыбранныйФайл.Расширение);
+ Если ЗначениеЗаполнено(ВыбранныйФайл.Имя) тогда
+ Если РасширениеФайла = "csv" тогда
+ СохранитьТаблицуВCSVФайл(ПутьКФайлу);
+ ИначеЕсли РасширениеФайла = "xlsx" тогда
+ АдресВоВременномХранилище = ТабличныйДокументУдалениеПримечаний();
+ ТабличныйДокументБезПримечаний = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
+ ТабличныйДокументБезПримечаний.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.xlsx);
+ ШаблонСДанными = ТабличныйДокументБезПримечаний;
+ ИначеЕсли РасширениеФайла = "mxl" тогда
+ ШаблонСДанными.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.mxl);
+ Иначе
+ ПоказатьПредупреждение(, НСтр("ru = 'Шаблон файла не был сохранен.'"));
+ КонецЕсли;
+ КонецЕсли;
+ Иначе
+ Оповещение = Новый ОписаниеОповещения("ПослеВыбораРасширенияФайла", ЭтотОбъект);
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма.РасширениеФайла",, ЭтотОбъект, Истина,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+ ПутьКФайлу = "";
+ КонецЕсли;
+
+КонецПроцедуры
+
+
+// Функция для обхода ошибки сохранения, если в документе есть примечания
+//
+&НаСервере
+Функция ТабличныйДокументУдалениеПримечаний()
+ ТабличныйДокументДляСохранения = новый ТабличныйДокумент;
+ ИзменитьБланкПоИнформацииПоКолонкам(ТабличныйДокументДляСохранения);
+ АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличныйДокументДляСохранения);
+ Возврат АдресВоВременномХранилище;
+КонецФункции
+
+&НаКлиенте
+Процедура ЗагрузитьШаблонИзФайла(Команда)
+
+ АдресВременногоХранилища = "";
+ Оповещение = Новый ОписаниеОповещения("ПередатьФайлНаСервер", ЭтотОбъект);
+ НачатьПомещениеФайла(Оповещение, АдресВременногоХранилища);
+
+ ТаблицаОтчет.ФиксацияСверху = 1;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовШапкиФормы
+
+&НаКлиенте
+Процедура ВидЗагрузкиДанныхВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
+ СтандартнаяОбработка=Ложь;
+ Далее(Неопределено);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ФильтрОтчетПриИзменении(Элемент)
+
+ ФоновоеЗаданиеОтчетНаКлиенте();
+
+ Если ФильтрОтчет = "Пропущенные" Тогда
+ Элементы.ИзменитьРеквизиты.Доступность=Ложь;
+ Иначе
+ Элементы.ИзменитьРеквизиты.Доступность=Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ФильтрТаблицаСопоставленияПриИзменении(Элемент)
+ УстановитьФильтрациюТаблицыСопоставления();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьФильтрациюТаблицыСопоставления()
+
+ Фильтр = ФильтрТаблицаСопоставления;
+
+ Если ТипЗагрузки = "ТабличнаяЧасть" Тогда
+ Если Фильтр = "Сопоставленные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "СтрокаСопоставлена");
+ ИначеЕсли Фильтр = "Несопоставленные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "НеСопоставлен");
+ ИначеЕсли Фильтр = "Неоднозначные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("ОписаниеОшибки", "");
+ Иначе
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Неопределено;
+ КонецЕсли;
+ ИначеЕсли ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Если Фильтр = "Сопоставленные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "СтрокаСопоставлена");
+ ИначеЕсли Фильтр = "Несопоставленные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "Не");
+ ИначеЕсли Фильтр = "Неоднозначные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "Неоднозначность");
+ Иначе
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Неопределено;
+ КонецЕсли;
+ Иначе
+ Если Фильтр = "Сопоставленные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "СтрокаСопоставлена");
+ ИначеЕсли Фильтр = "Несопоставленные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "Не");
+ ИначеЕсли Фильтр = "Неоднозначные" Тогда
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Новый ФиксированнаяСтруктура("РезультатСопоставленияСтроки", "Неоднозначность");
+ Иначе
+ Элементы.ТаблицаСопоставленияДанных.ОтборСтрок = Неопределено;
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+
+&НаКлиенте
+Процедура СписокКолонокСопоставленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+
+ Если СопоставитьПоКолонке.Количество() = 0 Тогда
+ Для каждого строка Из ИнформацияПоКолонкам Цикл
+ Если ЗначениеЗаполнено(Строка.Синоним) Тогда
+ ПредставлениеКолонки = Строка.Синоним;
+ Иначе
+ ПредставлениеКолонки = Строка.ПредставлениеКолонки;
+ КонецЕсли;
+ СопоставитьПоКолонке.Добавить(строка.ИмяКолонки, ПредставлениеКолонки);
+ КонецЦикла;
+ КонецЕсли;
+ ПараметрыФормы = Новый Структура("СписокКолонок", СопоставитьПоКолонке);
+ ОписаниеОповещения = НОвый ОписаниеОповещения("ПослеВыбораКолонокДляСопоставления", ЭтотОбъект);
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма.ВыборКолонок", ПараметрыФормы, ЭтотОбъект, , , , ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеВыбораКолонокДляСопоставления(Результат, Параметр) Экспорт
+
+ Если Результат = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ СопоставитьПоКолонке = Результат;
+ КолонкиВСтроку = "";
+ Разделитель = "";
+ КоличествоВыбранныхКолонок = 0;
+ Для каждого Элемент Из СопоставитьПоКолонке Цикл
+ Если Элемент.Пометка Тогда
+ КолонкиВСтроку = КолонкиВСтроку + Разделитель + Элемент.Представление;
+ Разделитель = ", ";
+ КоличествоВыбранныхКолонок = КоличествоВыбранныхКолонок + 1;
+ КонецЕсли;
+ КонецЦикла;
+
+ СписокКолонокСопоставления = КолонкиВСтроку;
+ ВыполнитьСопоставление();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВариантЗагрузкиПриИзменении(Элемент)
+
+ Если ВариантЗагрузки = 0 Тогда
+ Элементы.СтраницыЗаполненияДанных.ТекущаяСтраница = Элементы.СтраницаВариантЗаполнениеТаблицы;
+ Иначе
+ Элементы.СтраницыЗаполненияДанных.ТекущаяСтраница = Элементы.СтраницаВариантЗагрузкаИзФайла;
+ КонецЕсли;
+
+ ПоказатьИнформационнуюСтрокуПроОбязательныеКолонки();
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовТаблицыФормыШаблонСДанными
+
+&НаКлиенте
+Процедура ШаблонСДаннымиВыбор(Элемент, Область, СтандартнаяОбработка)
+ Если Область.Верх = 1 Тогда
+ СтандартнаяОбработка = Ложь; // Нельзя редактировать шапку
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовТаблицыСопоставленияДанных
+
+&НаКлиенте
+Процедура ТаблицаСопоставленияДанныхПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
+
+ Если ТипЗагрузки <> "ТабличнаяЧасть" Тогда
+ Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.ОбъектСопоставления) тогда
+ Элемент.ТекущиеДанные.РезультатСопоставленияСтроки = "СтрокаСопоставлена";
+ иначе
+ Элемент.ТекущиеДанные.РезультатСопоставленияСтроки = "НеСопоставлен";
+ КонецЕсли;
+ Иначе
+ Отбор = Новый Структура("ОбязательнаДляЗаполнения", Истина);
+ КолонкиОбязательнаДляЗаполнения = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ РезультатСопоставленияСтроки = "СтрокаСопоставлена";
+ Для каждого КолонкаТаблицы Из КолонкиОбязательнаДляЗаполнения Цикл
+ Если НЕ ЗначениеЗаполнено(Элемент.ТекущиеДанные["ТЧ_" + КолонкаТаблицы.Ассоциация]) Тогда
+ РезультатСопоставленияСтроки = "НеСопоставлен";
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ Элемент.ТекущиеДанные.РезультатСопоставленияСтроки = РезультатСопоставленияСтроки;
+ КонецЕсли;
+
+ ПоказатьСтатистикуПоСопоставлениюЗагрузкаИзФайла();
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ТаблицаСопоставленияДанныхПриАктивизацииЯчейки(Элемент)
+ Элементы.РазрешитьНеоднозначность.Доступность = Ложь;
+ Элементы.ТаблицаСопоставленияДанныхКонтекстноеМенюРазрешитьНеоднозначность.Доступность = Ложь;
+
+ Если Элемент.ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(Элемент.ТекущиеДанные.РезультатСопоставленияСтроки) Тогда
+ Если ТипЗагрузки = "ТабличнаяЧасть" Тогда
+ Если СтрДлина(Элемент.ТекущийЭлемент.Имя) > 3 И Лев(Элемент.ТекущийЭлемент.Имя,3) = "тч_" Тогда
+ ИмяКолонки = Сред(Элемент.ТекущийЭлемент.Имя, 4);
+ Если Найти(Элемент.ТекущиеДанные.ОписаниеОшибки, ИмяКолонки) > 0 Тогда
+ Элементы.РазрешитьНеоднозначность.Доступность = Истина;
+ Элементы.ТаблицаСопоставленияДанныхКонтекстноеМенюРазрешитьНеоднозначность.Доступность = Истина;
+ КонецЕсли;
+ КонецЕсли;
+ ИначеЕсли Элемент.ТекущиеДанные.РезультатСопоставленияСтроки = "Неоднозначность" Тогда
+ Элементы.РазрешитьНеоднозначность.Доступность = Истина;
+ Элементы.ТаблицаСопоставленияДанныхКонтекстноеМенюРазрешитьНеоднозначность.Доступность = Истина;
+ КонецЕсли;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ТаблицаСопоставленияДанныхВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ ОткрытьФормуРазрешенияНеоднозначности(ВыбраннаяСтрока, Поле.Имя, СтандартнаяОбработка);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовТаблицыОтчет
+
+&НаКлиенте
+Процедура ТаблицаОтчетПриАктивизацииОбласти(Элемент)
+ Если ТаблицаОтчет.ТекущаяОбласть.Низ = 1 И ТаблицаОтчет.ТекущаяОбласть.Верх = 1 Тогда
+ Элементы.ИзменитьРеквизиты.Доступность = Ложь;
+ Иначе
+ Элементы.ИзменитьРеквизиты.Доступность = Истина;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ГрупповоеИзменениеРеквизитов(Команда)
+
+ Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") Тогда
+ Если ТаблицаОтчет.ТекущаяОбласть.Верх = 1 Тогда
+ ВерхняяПозиция = 2;
+ Иначе
+ ВерхняяПозиция = ТаблицаОтчет.ТекущаяОбласть.Верх;
+ КонецЕсли;
+ МассивСсылок = ГрупповоеИзменениеРеквизитовНаСервере(ВерхняяПозиция, ТаблицаОтчет.ТекущаяОбласть.Низ);
+ Если массивСсылок.Количество() > 0 Тогда
+ ПараметрыФормы = Новый Структура("МассивОбъектов", МассивСсылок);
+ ИмяОбъекта = "Обработка.";
+ ОткрытьФорму(ИмяОбъекта + "ГрупповоеИзменениеРеквизитов.Форма", ПараметрыФормы);
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+
+#Область ШагВыборВариантаЗагрузки
+
+&НаСервере
+Процедура ЗаполнитьСписокВидЗагрузкиДанных()
+ Обработки.ЗагрузкаДанныхИзФайла.СоздатьСписокСправочниковДляЗагрузки(СписокВариантовЗагрузки);
+КонецПроцедуры
+
+#КонецОбласти
+
+
+#Область ШагЗаполнениеТаблицыДанными
+
+&НаКлиенте
+Процедура ВыполнитьШагЗаполнениеТаблицыДаннымиНаКлиенте()
+
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ЗаполнениеТаблицыДанными;
+ Элементы.Назад.Видимость = Истина;
+
+КонецПроцедуры
+
+&НаКлиенте
+Функция ТаблицаСДаннымиПустая()
+
+ Если ИнформацияПоКолонкам.Количество() = 1 Тогда
+ Если НЕ ЗначениеЗаполнено(ШаблонСДаннымиОднаКолонка) Тогда
+ Возврат Истина;
+ КонецЕсли;
+ Иначе
+ Если ШаблонСДанными.ВысотаТаблицы < 2 Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Ложь;
+КонецФункции
+
+&НаСервереБезКонтекста
+Функция ПолучитьПолноеИмяОбъектаМетаданных(Имя)
+ ОбъектМетаданных = Метаданные.Справочники.Найти(Имя);
+ Если ОбъектМетаданных <> Неопределено Тогда
+ Возврат ОбъектМетаданных.ПолноеИмя();
+ КонецЕсли;
+ ОбъектМетаданных = Метаданные.Документы.Найти(Имя);
+ Если ОбъектМетаданных <> Неопределено Тогда
+ Возврат ОбъектМетаданных.ПолноеИмя();
+ КонецЕсли;
+ ОбъектМетаданных = Метаданные.ПланыВидовХарактеристик.Найти(Имя);
+ Если ОбъектМетаданных <> Неопределено Тогда
+ Возврат ОбъектМетаданных.ПолноеИмя();
+ КонецЕсли;
+
+ Возврат Неопределено;
+КонецФункции
+
+&НаСервере
+Процедура ВыполнитьШагЗаполнениеТаблицыДаннымиНаСервере(ОписаниеСтрокиВыбора)
+
+ Если Найти(ОписаниеСтрокиВыбора.ПолноеИмяОбъектаМетаданных, ".") > 0 Тогда
+ ИмяОбъектаСопоставления = ОписаниеСтрокиВыбора.ПолноеИмяОбъектаМетаданных;
+ Иначе
+ ИмяОбъектаСопоставления = ПолучитьПолноеИмяОбъектаМетаданных(ОписаниеСтрокиВыбора.ПолноеИмяОбъектаМетаданных);
+ КонецЕсли;
+
+ ТипЗагрузки = ОписаниеСтрокиВыбора.Тип;
+ Если ТипЗагрузки = "ВнешняяЗагрузка" Тогда
+ ВнешняяОбработкаСсылка = ОписаниеСтрокиВыбора.Ссылка;
+ КонецЕсли;
+
+ СформироватьМакетПоТипуЗагрузки();
+ СоздатьТаблицуСопоставленияПоИнформацииОКолонках();
+ ПоказатьИнформационнуюСтрокуПроОбязательныеКолонки();
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СформироватьМакетПоТипуЗагрузки()
+
+ ПараметрыЗагрузки = Неопределено;
+ Если ТипЗагрузки = "УниверсальнаяЗагрузка" Тогда
+ ЭтотОбъект.Заголовок = НСтр("ru = 'Загрузка из файла в справочник ""'") + ПредставлениеСправочника(ИмяОбъектаСопоставления)+"""";
+ ЭтотОбъект.АвтоЗаголовок = Ложь;
+ ИначеЕсли ТипЗагрузки = "ПрикладнаяЗагрузка" Тогда
+ ЗагрузитьМакетВТабличныйДокумент(ПараметрыЗагрузки);
+ ЭтотОбъект.Заголовок = НСтр("ru = 'Загрузка из файла в справочник ""'") + ПредставлениеСправочника(ИмяОбъектаСопоставления)+"""";
+ ИначеЕсли ТипЗагрузки = "ВнешняяЗагрузка" Тогда
+ ИдентификаторКоманды = ИмяОбъектаСопоставления;
+ ПараметрыЗагрузки = Обработки.ЗагрузкаДанныхИзФайла.ПараметрыЗагрузкиИзФайлаВнешняяОбработка(ИмяОбъектаСопоставления,
+ ВнешняяОбработкаСсылка);
+ КонецЕсли;
+
+ СформироватьМакет(ПараметрыЗагрузки);
+КонецПроцедуры
+
+
+&НаСервере
+Процедура СформироватьМакет(ПараметрыЗагрузки)
+
+ ИнформацияПоКолонкамИзХранилища = ХранилищеСистемныхНастроек.Загрузить("ЗагрузкаДанныхИзФайла", ИмяОбъектаСопоставления);
+ Если ИнформацияПоКолонкамИзХранилища <> Неопределено Тогда
+ ЗначениеВРеквизитФормы(ИнформацияПоКолонкамИзХранилища, "ИнформацияПоКолонкам");
+ Иначе
+ Если ТипЗагрузки = "УниверсальнаяЗагрузка" Тогда
+ Обработки.ЗагрузкаДанныхИзФайла.ИнформациюПоКолонкамИзРеквизитовСправочника(ИмяОбъектаСопоставления, ИнформацияПоКолонкам);
+ ИначеЕсли ТипЗагрузки = "ПрикладнаяЗагрузка" Тогда
+ Макет = МенеджерОбъекта(ИмяОбъектаСопоставления).ПолучитьМакет("ЗагрузкаИзФайла");
+ ОбластьЗаголовокТаблицы = ОбластьЗаголовкаШаблонаТаблицы(Макет);
+ Обработки.ЗагрузкаДанныхИзФайла.СоздатьИнформациюПоКолонкамНаОснованиеШаблона(ОбластьЗаголовокТаблицы, ПараметрыЗагрузки, ИнформацияПоКолонкам);
+ ИначеЕсли ТипЗагрузки = "ВнешняяЗагрузка" Тогда
+ ЗагрузитьМакетВТабличныйДокументВнешняяОбработка(ПараметрыЗагрузки);
+ КонецЕсли;
+ КонецЕсли;
+
+ ИзменитьБланкПоИнформацииПоКолонкам();
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СохранитьТаблицуВCSVФайл(ПолноеИмяФайла)
+ Обработки.ЗагрузкаДанныхИзФайла.СохранитьТаблицуВCSVФайл(ПолноеИмяФайла, ИнформацияПоКолонкам);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ШагСопоставлениеЗагруженныхДанных
+
+&НаСервере
+Процедура СкопироватьОднуКолонкуВШаблонСДанными()
+
+ ОчисткаШаблонСДанными();
+
+ КоличествоСтрок = СтрЧислоСтрок(ШаблонСДаннымиОднаКолонка);
+ НомерСтрокиВШаблоне = 2;
+ Для НомерСтроки = 1 По КоличествоСтрок Цикл
+ Строка = СтрПолучитьСтроку(ШаблонСДаннымиОднаКолонка, НомерСтроки);
+ Если ЗначениеЗаполнено(Строка) Тогда
+ Ячейка = ШаблонСДанными.ПолучитьОбласть(НомерСтрокиВШаблоне, 1, НомерСтрокиВШаблоне, 1);
+ Ячейка.ТекущаяОбласть.Текст = Строка;
+ ШаблонСДанными.Вывести(Ячейка);
+ НомерСтрокиВШаблоне = НомерСтрокиВШаблоне + 1;
+ КонецЕсли;
+ КонецЦикла;
+КонецПроцедуры
+
+&НаСервере
+Функция СоздатьТаблицуСоСпискомНеоднозначностей()
+ СписокНеоднозначностей = Новый ТаблицаЗначений;
+ СписокНеоднозначностей.Колонки.Добавить("Идентификатор");
+ СписокНеоднозначностей.Колонки.Добавить("Колонка");
+
+ Возврат СписокНеоднозначностей;
+КонецФункции
+
+&НаСервере
+Процедура ВыполнитьШагСопоставлениеЗагружаемыхДанныхНаСервере(ФоновоеЗадание = Ложь)
+
+ Если ИнформацияПоКолонкам.Количество() = 1 Тогда
+ СкопироватьОднуКолонкуВШаблонСДанными();
+ КонецЕсли;
+
+ ТаблицаСопоставления = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+ Если ТипЗагрузки = "ТабличнаяЧасть" Тогда
+ АдресЗагруженныхДанных = "";
+ АдресКопииТабличнойЧасти = "";
+ СписокНеоднозначностей = СоздатьТаблицуСоСпискомНеоднозначностей();
+
+ Обработки.ЗагрузкаДанныхИзФайла.ВыгрузитьДанныеДляТЧ(ШаблонСДанными, ИнформацияПоКолонкам, АдресЗагруженныхДанных);
+ СкопироватьСтруктуруТабличнойЧасти(АдресКопииТабличнойЧасти);
+
+ МенеджерОбъекта = МенеджерОбъекта(ИмяОбъектаСопоставления);
+ МенеджерОбъекта.СопоставитьЗагружаемыеДанные(АдресЗагруженныхДанных, АдресКопииТабличнойЧасти, СписокНеоднозначностей, ИмяОбъектаСопоставления);
+
+ Если НЕ РеквизитыСозданы Тогда
+ СоздатьТаблицуСопоставленияПоИнформацииОКолонкахДляТЧ();
+ КонецЕсли;
+
+ ПоместитьДанныеВТаблицуСопоставления(АдресЗагруженныхДанных, АдресКопииТабличнойЧасти, СписокНеоднозначностей);
+ ИначеЕсли ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Обработки.ЗагрузкаДанныхИзФайла.ЗаполнитьТаблицуСопоставленияДаннымиИзШаблона(ШаблонСДанными, ТаблицаСопоставления, ИнформацияПоКолонкам);
+ Обработки.ЗагрузкаДанныхИзФайла.СопоставитьЗначениеКолонкиАвто(ТаблицаСопоставления, "Ссылки");
+ ЗначениеВРеквизитФормы(ТаблицаСопоставления, "ТаблицаСопоставленияДанных");
+ Иначе
+ ПараметрыВызоваСервера = Новый Структура();
+ ПараметрыВызоваСервера.Вставить("ШаблонСДанными", ШаблонСДанными);
+ ПараметрыВызоваСервера.Вставить("ТаблицаСопоставления", ТаблицаСопоставления);
+ ТаблицаИнформацияПоКолонкам = РеквизитФормыВЗначение("ИнформацияПоКолонкам");
+
+ ПараметрыВызоваСервера.Вставить("ИнформацияПоКолонкам", ТаблицаИнформацияПоКолонкам);
+
+ РезультатФоновогоЗадания = ДлительныеОперации.ЗапуститьВыполнениеВФоне(УникальныйИдентификатор,
+ "Обработки.ЗагрузкаДанныхИзФайла.ЗаполнитьТаблицуСопоставленияДаннымиИзШаблонаФон",
+ ПараметрыВызоваСервера,
+ НСтр("ru = 'ЗагрузкаДанныхИзФайла: Выполнение серверного метода обработки ЗаполнитьТаблицуСопоставленияДаннымиИзШаблона'"));
+
+ Если РезультатФоновогоЗадания.ЗаданиеВыполнено Тогда
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ ВыполнитьШагСопоставлениеЗагружаемыхДанныхПослеСопоставленияНаСервере();
+ Иначе
+ ФоновоеЗадание = Истина;
+ ФоновоеЗаданиеИдентификатор = РезультатФоновогоЗадания.ИдентификаторЗадания;
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ КонецЕсли;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ВыполнитьШагСопоставлениеЗагружаемыхДанныхПослеСопоставленияНаСервере()
+
+ ТаблицаСопоставления = ПолучитьИзВременногоХранилища(ФоновоеЗаданиеАдресХранилища);
+
+ Если ТипЗагрузки = "ПрикладнаяЗагрузка" Тогда
+ СопоставитьДанныеПрикладнаяЗагрузка(ТаблицаСопоставления);
+ Элементы.ПояснениеДляПрикладнойЗагрузки.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ Элементы.ПояснениеДляПрикладнойЗагрузки.Заголовок, ПредставлениеСправочника(ИмяОбъектаСопоставления));
+ ИначеЕсли ТипЗагрузки = "ВнешняяЗагрузка" Тогда
+ СопоставитьДанныеВнешняяОбработка(ТаблицаСопоставления);
+ КонецЕсли;
+
+ Элементы.ПояснениеДляПрикладнойЗагрузки.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ Элементы.ПояснениеДляПрикладнойЗагрузки.Заголовок, ПредставлениеСправочника(ИмяОбъектаСопоставления));
+
+ ЗначениеВРеквизитФормы(ТаблицаСопоставления, "ТаблицаСопоставленияДанных");
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВыполнитьШагСопоставлениеЗагружаемыхДанных()
+
+ Если ТаблицаСДаннымиПустая() Тогда
+ ПоказатьПредупреждение(, (НСтр("ru ='Для перехода к этапу сопоставления и загрузки данных, необходимо заполнить таблицу.'")));
+ Возврат;
+ КонецЕсли;
+
+ СписокНезаполненныхКолонок = НезаполненныеОбязательныеКолонки();
+ Если СписокНезаполненныхКолонок.Количество() > 0 Тогда
+ Если СписокНезаполненныхКолонок.Количество() =1 Тогда
+ ТекстПроКолонки = НСтр("ru = 'Обязательная колонка""'") + " " + СписокНезаполненныхКолонок[0] +
+ НСтр("ru = '"" содержит незаполненные строки, эти строки будут пропущены при загрузке'");
+ Иначе
+ ТекстПроКолонки = НСтр("ru = 'Обязательные колонки""'") + " " + СтроковыеФункцииКлиентСервер.СтрокаИзМассиваПодстрок(СписокНезаполненныхКолонок,", ") +
+ НСтр("ru = '"" содержат незаполненные строки, эти строки будут пропущены при загрузке'");
+ КонецЕсли;
+ ТекстПроКолонки = ТекстПроКолонки + Символы.ПС + НСтр("ru = 'Продолжить?'");
+
+ Оповещение = Новый ОписаниеОповещения("ПослеВопросаОНезаполненныхСтроках", ЭтотОбъект);
+ ПоказатьВопрос(Оповещение, ТекстПроКолонки, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет);
+ Иначе
+ ВыполнитьШагСопоставлениеЗагружаемыхДанныхПослеПроверки();
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеВопросаОНезаполненныхСтроках(Результат, Параметр) Экспорт
+ Если Результат = КодВозвратаДиалога.Да Тогда
+ ВыполнитьШагСопоставлениеЗагружаемыхДанныхПослеПроверки();
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВыполнитьШагСопоставлениеЗагружаемыхДанныхПослеПроверки()
+
+ ФоновоеЗадание = Ложь;
+ ВыполнитьШагСопоставлениеЗагружаемыхДанныхНаСервере(ФоновоеЗадание);
+
+ Если ФоновоеЗадание = Истина Тогда
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ДлительныеОперации;
+ ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеСопоставлениеНаКлиенте", 1, Истина);
+ ПараметрыОбработчика.МаксимальныйИнтервал = 5;
+ Иначе
+ Если ВсеДанныеСопоставлены() И ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ ЗакрытьФормуИВернутьМассивСсылок();
+ Иначе
+ ВыполнитьШагСопоставлениеЗагружаемыхДанныхКлиент();
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+#Область ДлительныеОперации
+
+&НаКлиенте
+Процедура ФоновоеЗаданиеЗагрузкаФайлаНаКлиенте()
+ Результат = ФоновоеЗаданиеЗагрузкаФайлаПолучитьРезультат();
+ Если Результат.ФоновоеЗаданиеВыполнено Тогда
+ Если ФормаДлительнойОперации.Открыта()
+ И ФормаДлительнойОперации.ИдентификаторЗадания = ФоновоеЗаданиеИдентификатор Тогда
+ ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации);
+ КонецЕсли;
+ ШаблонСДанными = ПолучитьИзВременногоХранилища(ФоновоеЗаданиеАдресХранилища);
+ Элементы.ШаблонСДанными.Видимость = Истина;
+ Иначе
+ ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеЗагрузкаФайлаНаКлиенте", ПараметрыОбработчика.ТекущийИнтервал, Истина);
+
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ФоновоеЗаданиеСопоставлениеНаКлиенте()
+ Результат = ФоновоеЗаданиеСопоставлениеПолучитьРезультат();
+ Если Результат.ФоновоеЗаданиеВыполнено Тогда
+ Если ВсеДанныеСопоставлены() И ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ ЗакрытьФормуИВернутьМассивСсылок();
+ Иначе
+ ВыполнитьШагСопоставлениеЗагружаемыхДанныхКлиент();
+ КонецЕсли;
+ Иначе
+ ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеСопоставлениеНаКлиенте", ПараметрыОбработчика.ТекущийИнтервал, Истина);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ФоновоеЗаданиеЗаписьНаКлиенте()
+ Результат = ФоновоеЗаданиеЗаписьПолучитьРезультат();
+ Если Результат.ФоновоеЗаданиеВыполнено Тогда
+ ЗаполнитьТаблицуСопоставленияИзВременногоХранилища();
+ ФоновоеЗаданиеОтчетНаКлиенте(Ложь);
+ Иначе
+ ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеЗаписьНаКлиенте", ПараметрыОбработчика.ТекущийИнтервал, Истина);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗаписатьЗагружаемыеДанныеКлиент()
+
+ ФоновоеЗаданиеПроцент = 0;
+ ФоновоеЗадание = Ложь;
+ ЗаписатьЗагружаемыеДанныеОтчет(ФоновоеЗадание);
+
+ Если ФоновоеЗадание = Истина Тогда
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ДлительныеОперации;
+ ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеЗаписьНаКлиенте", 1, Истина);
+ ПараметрыОбработчика.МаксимальныйИнтервал = 5;
+ Иначе
+ ФоновоеЗаданиеОтчетНаКлиенте(Ложь);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Функция ФоновоеЗаданиеЗаписьПолучитьРезультат()
+ Результат = Новый Структура;
+ Результат.Вставить("ФоновоеЗаданиеВыполнено", Ложь);
+ Результат.ФоновоеЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ФоновоеЗаданиеИдентификатор);
+ Если НЕ Результат.ФоновоеЗаданиеВыполнено Тогда
+ ФоновоеЗаданиеПрочитатьПромежуточныйРезультат(Результат);
+ КонецЕсли;
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Процедура ФоновоеЗаданиеОтчетНаКлиенте(ВыводитьОкноОжидания = Истина)
+
+ ФоновоеЗадание = Ложь;
+ СформироватьОтчетОЗагрузке(ФильтрОтчет, ФоновоеЗадание, НЕ ВыводитьОкноОжидания);
+
+ Если ФоновоеЗадание Тогда
+ Если ВыводитьОкноОжидания Тогда
+ ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтотОбъект, ФоновоеЗаданиеИдентификатор);
+ КонецЕсли;
+ ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеСозданиеОтчетаНаКлиенте", ПараметрыОбработчика.ТекущийИнтервал, Истина);
+ Иначе
+ Результат = ПолучитьИзВременногоХранилища(ФоновоеЗаданиеАдресХранилища);
+ ПоказатьОтчет(Результат);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПоказатьОтчет(Отчет)
+
+ Если Элементы.СтраницыПомощника.ТекущаяСтраница <> Элементы.ОтчетОЗагрузкеДанных Тогда
+ ВыполнитьШагОтчетОЗагрузкеДанныхКлиент();
+ КонецЕсли;
+
+ ИтогоОтчетСоздано = Отчет.Создано;
+ ИтогоОтчетОбновлено = Отчет.Обновлено;
+ ИтогоОтчетПропущено = Отчет.Пропущено;
+ ИтогоОтчетНекорректных = Отчет.Некорректных;
+
+ Элементы.ФильтрОтчет.СписокВыбора.Очистить();
+ Элементы.ФильтрОтчет.СписокВыбора.Добавить("ВсеЭлементы", НСтр("ru = 'Все ('") + Отчет.Всего + ")");
+ Элементы.ФильтрОтчет.СписокВыбора.Добавить("Новые", НСтр("ru = 'Новые ('") + Отчет.Создано+ ")");
+ Элементы.ФильтрОтчет.СписокВыбора.Добавить("Обновленные", НСтр("ru = 'Обновленные ('") + Отчет.Обновлено+ ")");
+ Элементы.ФильтрОтчет.СписокВыбора.Добавить("Пропущенные", НСтр("ru = 'Пропущенные ('") + Отчет.Пропущено+ ")");
+ ФильтрОтчет = Отчет.ТипОтчета;
+
+ ТаблицаОтчет = Отчет.ТаблицаОтчет;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ФоновоеЗаданиеСозданиеОтчетаНаКлиенте()
+
+ РезультатВыполнения = ФоновоеЗаданиеОтчетПолучитьРезультат();
+ Если РезультатВыполнения.ФоновоеЗаданиеВыполнено Тогда
+ Попытка
+ Если ФормаДлительнойОперации.Открыта()
+ И ФормаДлительнойОперации.ИдентификаторЗадания = ФоновоеЗаданиеИдентификатор Тогда
+ ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации);
+ КонецЕсли;
+ Исключение
+ КонецПопытки;
+
+ Результат = ПолучитьИзВременногоХранилища(ФоновоеЗаданиеАдресХранилища);
+ ПоказатьОтчет(Результат);
+ Иначе
+ ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеСозданиеОтчетаНаКлиенте", ПараметрыОбработчика.ТекущийИнтервал, Истина);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция ФоновоеЗаданиеЗагрузкаФайлаПолучитьРезультат()
+ Результат = Новый Структура;
+ Результат.Вставить("ФоновоеЗаданиеВыполнено", Ложь);
+ Результат.ФоновоеЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ФоновоеЗаданиеИдентификатор);
+ Возврат Результат;
+КонецФункции
+
+&НаСервере
+Функция ФоновоеЗаданиеСопоставлениеПолучитьРезультат()
+ Результат = Новый Структура;
+ Результат.Вставить("ФоновоеЗаданиеВыполнено", Ложь);
+ Результат.ФоновоеЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ФоновоеЗаданиеИдентификатор);
+ Если Результат.ФоновоеЗаданиеВыполнено Тогда
+ ВыполнитьШагСопоставлениеЗагружаемыхДанныхПослеСопоставленияНаСервере();
+ Иначе
+ ФоновоеЗаданиеПрочитатьПромежуточныйРезультат(Результат);
+ КонецЕсли;
+ Возврат Результат;
+КонецФункции
+
+&НаСервере
+Функция ФоновоеЗаданиеОтчетПолучитьРезультат()
+ Результат = Новый Структура;
+ Результат.Вставить("ФоновоеЗаданиеВыполнено", Ложь);
+ Результат.ФоновоеЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ФоновоеЗаданиеИдентификатор);
+ Если НЕ Результат.ФоновоеЗаданиеВыполнено Тогда
+ ФоновоеЗаданиеПрочитатьПромежуточныйРезультат(Результат);
+ КонецЕсли;
+ Возврат Результат;
+КонецФункции
+
+&НаСервере
+Процедура ФоновоеЗаданиеПрочитатьПромежуточныйРезультат(Результат)
+ Прогресс = ДлительныеОперации.ПрочитатьПрогресс(ФоновоеЗаданиеИдентификатор);
+ Если Прогресс <> Неопределено Тогда
+ ФоновоеЗаданиеПроцент = Прогресс.Процент;
+ КонецЕсли;
+КонецПроцедуры
+
+
+#КонецОбласти
+
+&НаКлиенте
+Процедура ВыполнитьШагСопоставлениеЗагружаемыхДанныхКлиент()
+
+ Если ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Статистика = СтатисткаСопоставления();
+
+ Если Статистика.Сопоставленных > 0 Тогда
+ ТекстНайдено = НСтр("ru = 'Из %1 введенных строк в список будут вставлены: %2.'");
+ Элементы.НадписьРезультатСопоставления.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстНайдено,
+ Статистика.Всего, Статистика.Сопоставленных);
+
+ Если Статистика.Неоднозначных > 0 и Статистика.НеНайдено > 0 Тогда
+ ТекстНеНайдено = НСтр("ru = '11 строк будут пропущены:'") + Символы.ПС + " - " + НСтр("ru = 'Нет данных в программе: %1'")
+ + Символы.ПС + " - " +НСтр("ru = 'Несколько вариантов для вставки: %2'");
+ ТекстНеНайдено = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстНеНайдено, Статистика.НеНайдено, Статистика.Неоднозначных);
+ ИначеЕсли Статистика.Неоднозначных > 0 Тогда
+ ТекстНеНайдено = НСтр("ru = 'Строки, для которых в программе имеется несколько вариантов, будут пропущены: %1'");
+ ТекстНеНайдено = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстНеНайдено, Статистика.Неоднозначных);
+ ИначеЕсли Статистика.НеНайдено > 0 Тогда
+ ТекстНеНайдено = НСтр("ru = 'Строки, для которых в программе нет соответствующих данных, будут пропущены: %1'");
+ ТекстНеНайдено = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстНеНайдено, Статистика.НеНайдено);
+ КонецЕсли;
+ ТекстНеНайдено = ТекстНеНайдено + Символы.ПС + НСтр("ru = 'Для просмотра пропущенных строк и подбора данных для вставки нажмите ""Далее"".'");
+ Элементы.ДекорацияНеНайденоИНеоднозначность.Заголовок = ТекстНеНайдено;
+
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.РезультатыСопоставления;
+ Элементы.Назад.Видимость = Истина;
+ Элементы.ВставитьВСписок.Видимость = Истина;
+ Элементы.Далее.Видимость = Истина;
+ Элементы.Назад.Заголовок = НСтр("ru = '< Назад'");
+ Элементы.Далее.Заголовок = Нстр("ru = 'Далее >'");
+ Элементы.Далее.АктивизироватьПоУмолчанию = Ложь;
+ Элементы.ВставитьВСписок.АктивизироватьПоУмолчанию = Истина;
+ Элементы.ВставитьВСписок.КнопкаПоУмолчанию = Истина;
+
+ ПоказатьСтатистикуПоСопоставлениюЗагрузкаИзФайла();
+ УстановитьОформлениеДляСтраницыСопоставления(Ложь, Элементы.ПояснениеДляПоискаСсылок, Ложь, НСтр("ru = 'Далее >'"));
+ Иначе
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.НеНайдено;
+ Элементы.Закрыть.Заголовок = НСтр("ru = 'Закрыть'");
+ Элементы.Назад.Видимость = Истина;
+ Элементы.ВставитьВСписок.Видимость = Ложь;
+ Элементы.Далее.Видимость = Ложь;
+ КонецЕсли;
+
+ Иначе
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СопоставлениеЗагружаемыхДанных;
+ ПоказатьСтатистикуПоСопоставлениюЗагрузкаИзФайла();
+
+ Если ТипЗагрузки = "УниверсальнаяЗагрузка" Тогда
+ УстановитьОформлениеДляСтраницыСопоставления(Истина, Элементы.ПояснениеДляУниверсальнойЗагрузки, Истина, НСтр("ru = 'Загрузить данные >'"));
+ ИначеЕсли ТипЗагрузки = "ТабличнаяЧасть" Тогда
+ УстановитьОформлениеДляСтраницыСопоставления(Ложь, Элементы.ПояснениеДляТабличнойЧасти, Истина, НСтр("ru = 'Загрузить данные'"));
+ ИначеЕсли ТипЗагрузки = "ВнешняяЗагрузка" Тогда
+ УстановитьОформлениеДляСтраницыСопоставления(Ложь, Элементы.ПояснениеДляПрикладнойЗагрузки, Ложь, НСтр("ru = 'Загрузить данные >'"));
+ Иначе
+ УстановитьОформлениеДляСтраницыСопоставления(Ложь, Элементы.ПояснениеДляПрикладнойЗагрузки, Ложь, НСтр("ru = 'Загрузить данные >'"));
+ КонецЕсли;
+
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьОформлениеДляСтраницыСопоставления(ВидимостьКнопкиСопоставление, ЭлементДляПоясняющегоТекста, ВидимостьКнопкиРазрешитьНеоднозначность, ТекстКнопкиДалее)
+
+ Элементы.СписокКолонокСопоставления.Видимость = ВидимостьКнопкиСопоставление;
+ Элементы.Назад.Видимость = Истина;
+ Элементы.ПояснениеДляУниверсальнойЗагрузки.Видимость = Ложь;
+ Элементы.ПояснениеДляПрикладнойЗагрузки.Видимость = Ложь;
+ Элементы.ПояснениеДляТабличнойЧасти.Видимость = Ложь;
+ Элементы.ПояснениеДляПоискаСсылок.Видимость = Ложь;
+ Если ЭлементДляПоясняющегоТекста = Элементы.ПояснениеДляУниверсальнойЗагрузки Тогда
+ Элементы.ПояснениеДляУниверсальнойЗагрузки.Видимость = Истина;
+ ИначеЕсли ЭлементДляПоясняющегоТекста = Элементы.ПояснениеДляТабличнойЧасти Тогда
+ Элементы.ПояснениеДляТабличнойЧасти.Видимость = Истина;
+ ИначеЕсли ЭлементДляПоясняющегоТекста = Элементы.ПояснениеДляПоискаСсылок Тогда
+ Элементы.ПояснениеДляПоискаСсылок.Видимость = Истина;
+ Элементы.ПояснениеДляСопоставленияДанных.ОтображатьЗаголовок = Ложь;
+ Иначе
+ Элементы.ПояснениеДляПрикладнойЗагрузки.Видимость = Истина;
+ КонецЕсли;
+
+ Элементы.РазрешитьНеоднозначность.Видимость = ВидимостьКнопкиРазрешитьНеоднозначность;
+ Элементы.Далее.Заголовок = ТекстКнопкиДалее;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОткрытьФормуРазрешенияНеоднозначности(ВыбраннаяСтрока, ПолеИмя, СтандартнаяОбработка)
+ Строка = ТаблицаСопоставленияДанных.НайтиПоИдентификатору(ВыбраннаяСтрока);
+
+ Если ТипЗагрузки = "ТабличнаяЧасть" Тогда
+ Если Строка.РезультатСопоставленияСтроки = "НеСопоставлен" и СтрДлина(Строка.ОписаниеОшибки) > 0 Тогда
+
+ Если СтрДлина(ПолеИмя) > 3 И Лев(ПолеИмя,3) = "тч_" Тогда
+ Имя = Сред(ПолеИмя, 4);
+ Если Найти(Строка.ОписаниеОшибки, Имя) Тогда
+ СтандартнаяОбработка = Ложь;
+ СтрокаИзТаблицы = новый Массив;
+ ЗначенияЗагружаемыхКолонок = Новый Структура();
+ Для каждого Колонка из ИнформацияПоКолонкам Цикл
+ м = Новый Массив();
+ м.Добавить(Колонка.ИмяКолонки);
+ м.Добавить(Колонка.ПредставлениеКолонки);
+ м.Добавить(Строка["фл_" + Колонка.ИмяКолонки]);
+ м.Добавить(Колонка.ТипКолонки);
+ СтрокаИзТаблицы.Добавить(м);
+ Если Имя = Колонка.Ассоциация Тогда
+ ЗначенияЗагружаемыхКолонок.Вставить(Колонка.ИмяКолонки, Строка["фл_" + Колонка.ИмяКолонки]);
+ КонецЕсли;
+ КонецЦикла;
+
+ ПараметрыФормы = Новый Структура();
+ ПараметрыФормы.Вставить("ТипЗагрузки", ТипЗагрузки);
+ ПараметрыФормы.Вставить("Имя", Имя);
+ ПараметрыФормы.Вставить("СтрокаИзТаблицы", СтрокаИзТаблицы);
+ ПараметрыФормы.Вставить("ЗначенияЗагружаемыхКолонок", ЗначенияЗагружаемыхКолонок);
+ ПараметрыФормы.Вставить("СписокНеоднозначностей", Неопределено);
+ ПараметрыФормы.Вставить("ПолноеИмяТабличнойЧасти", ИмяОбъектаСопоставления);
+
+ Параметр = Новый Структура();
+ Параметр.Вставить("Идентификатор", ВыбраннаяСтрока);
+ Параметр.Вставить("Имя", Имя);
+
+ Оповещение = Новый ОписаниеОповещения("ПослеСопоставленияНеоднозначностей", ЭтотОбъект, Параметр);
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма.РазрешенияНеоднозначностей", ПараметрыФормы, ЭтотОбъект, Истина , , , Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+ Иначе
+ Если Строка.РезультатСопоставленияСтроки = "Неоднозначность" Тогда
+ СтандартнаяОбработка = Ложь;
+
+ СтрокаИзТаблицы = новый Массив;
+ Для каждого Колонка из ИнформацияПоКолонкам Цикл
+ м = Новый Массив();
+ м.Добавить(Колонка.ИмяКолонки);
+ м.Добавить(Колонка.ПредставлениеКолонки);
+ м.Добавить(Строка[Колонка.ИмяКолонки]);
+ м.Добавить(Колонка.ТипКолонки);
+ СтрокаИзТаблицы.Добавить(м);
+ КонецЦикла;
+
+ КолонкиСопоставления = Новый СписокЗначений;
+ Для каждого Элемент из СопоставитьПоКолонке Цикл
+ Если Элемент.Пометка Тогда
+ КолонкиСопоставления.Добавить(Элемент.Значение);
+ КонецЕсли;
+ КонецЦикла;
+
+ ПараметрыФормы = Новый Структура();
+ ПараметрыФормы.Вставить("СтрокаИзТаблицы", СтрокаИзТаблицы);
+ ПараметрыФормы.Вставить("СписокНеоднозначностей", Строка.СписокНеоднозначностей);
+ ПараметрыФормы.Вставить("КолонкиСопоставления", КолонкиСопоставления);
+ ПараметрыФормы.Вставить("ТипЗагрузки", ТипЗагрузки);
+
+ Параметр = Новый Структура("Идентификатор", ВыбраннаяСтрока);
+
+ Оповещение = Новый ОписаниеОповещения("ПослеСопоставленияНеоднозначностей", ЭтотОбъект, Параметр);
+ ОткрытьФорму("Обработка.ЗагрузкаДанныхИзФайла.Форма.РазрешенияНеоднозначностей", ПараметрыФормы, ЭтотОбъект, Истина , , , Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+ КонецЕсли;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СопоставитьДанныеПрикладнаяЗагрузка(ТаблицаСопоставленияДанныхСервер)
+
+ МенеджерОбъект = МенеджерОбъекта(ИмяОбъектаСопоставления);
+
+ МенеджерОбъект.СопоставитьЗагружаемыеДанныеИзФайла(ТаблицаСопоставленияДанныхСервер);
+ Для каждого Строка из ТаблицаСопоставленияДанныхСервер Цикл
+ Если ЗначениеЗаполнено(Строка.ОбъектСопоставления) Тогда
+ Строка.РезультатСопоставленияСтроки = "СтрокаСопоставлена";
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ШагОтчетОЗагрузке
+
+&НаСервере
+Процедура ЗаписатьЗагружаемыеДанныеОтчет(ФоновоеЗадание = Ложь)
+
+ СопоставленныеДанные = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+
+ Если ТипЗагрузки = "УниверсальнаяЗагрузка" Тогда
+
+ ПараметрыЗагрузки = Новый Структура();
+ ПараметрыЗагрузки.Вставить("СоздаватьЕслиНеСопоставлено", СоздаватьЕслиНеСопоставлено);
+ ПараметрыЗагрузки.Вставить("ОбновлятьСуществующие", ОбновлятьСуществующие);
+
+ ПараметрыВызоваСервера = Новый Структура();
+ ПараметрыВызоваСервера.Вставить("СопоставленныеДанные", СопоставленныеДанные);
+ ПараметрыВызоваСервера.Вставить("ПараметрыЗагрузки", ПараметрыЗагрузки);
+ ПараметрыВызоваСервера.Вставить("ИмяОбъектаСопоставления", ИмяОбъектаСопоставления);
+ ТаблицаИнформацияПоКолонкам = РеквизитФормыВЗначение("ИнформацияПоКолонкам");
+ ПараметрыВызоваСервера.Вставить("ИнформацияПоКолонкам", ТаблицаИнформацияПоКолонкам);
+
+ РезультатФоновогоЗадания = ДлительныеОперации.ЗапуститьВыполнениеВФоне(УникальныйИдентификатор,
+ "Обработки.ЗагрузкаДанныхИзФайла.ЗаписатьСопоставленныеДанные",
+ ПараметрыВызоваСервера,
+ НСтр("ru = 'Подсистема ЗагрузкаДанныхИзФайла: Запись загружаемых данных'"));
+
+ Если РезультатФоновогоЗадания.ЗаданиеВыполнено Тогда
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ СопоставленныеДанные = ПолучитьИзВременногоХранилища(ФоновоеЗаданиеАдресХранилища);
+ Иначе
+ ФоновоеЗадание = Истина;
+ ФоновоеЗаданиеИдентификатор = РезультатФоновогоЗадания.ИдентификаторЗадания;
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ КонецЕсли;
+ ИначеЕсли ТипЗагрузки = "ВнешняяЗагрузка" Тогда
+ ЗаписатьСопоставленныеДанныеВнешняяОбработка(СопоставленныеДанные);
+ Иначе
+ ЗаписатьСопоставленныеДанныеПрикладнаяЗагрузка(СопоставленныеДанные);
+ КонецЕсли;
+
+ Если НЕ ФоновоеЗадание Тогда
+ ЗначениеВРеквизитФормы(СопоставленныеДанные, "ТаблицаСопоставленияДанных");
+ КонецЕсли;
+
+ Элементы.ОткрытьСправочникПослеЗакрытияПомощника.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ОткрытьСправочникПослеЗакрытияПомощника.Заголовок, ПредставлениеСправочника(ИмяОбъектаСопоставления));
+ Элементы.ПояснениеОтчетаОЗагрузке.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ПояснениеОтчетаОЗагрузке.Заголовок, ПредставлениеСправочника(ИмяОбъектаСопоставления));
+
+ ТипОтчета = "ВсеЭлементы";
+
+КонецПроцедуры
+
+
+&НаКлиенте
+Процедура ВыполнитьШагОтчетОЗагрузкеДанныхКлиент()
+
+ Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ОтчетОЗагрузкеДанных;
+ Элементы.ОткрытьСправочникПослеЗакрытияПомощника.Видимость = Истина;
+ Элементы.Закрыть.Заголовок = "Готово";
+ Элементы.Далее.Видимость = Ложь;
+ Элементы.Назад.Видимость = Ложь;
+
+КонецПроцедуры
+#КонецОбласти
+
+&НаСервере
+Процедура ОчиститьТаблицу()
+
+ ТаблицаСопоставленияДанныхСервер = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+ ТаблицаСопоставленияДанныхСервер.Колонки.Очистить();
+ ИнформацияПоКолонкам.Очистить();
+
+ Пока Элементы.ТаблицаСопоставленияДанных.ПодчиненныеЭлементы.Количество() > 0 Цикл
+ ЭтотОбъект.Элементы.Удалить(Элементы.ТаблицаСопоставленияДанных.ПодчиненныеЭлементы.Получить(0));
+ КонецЦикла;
+ ШаблонСДанными = Новый ТабличныйДокумент;
+
+ РеквизитыТаблицыСопоставления = ЭтотОбъект.ПолучитьРеквизиты("ТаблицаСопоставленияДанных");
+ МассивПутейРеквизитов = Новый Массив;
+ Для каждого РеквизитТаблицы Из РеквизитыТаблицыСопоставления Цикл
+ МассивПутейРеквизитов.Добавить("ТаблицаСопоставленияДанных." + РеквизитТаблицы.Имя);
+ КонецЦикла;
+ Если МассивПутейРеквизитов.Количество() > 0 Тогда
+ ИзменитьРеквизиты(,МассивПутейРеквизитов);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура УстановитьОформлениеДанных()
+
+ Если ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ ТекстОбъектНеНайден = НСтр("ru='<Не найден>'");
+ ЦветОбъектНеНайден = ЦветаСтиля.ФайлЗанятыйДругимПользователем;
+ ЦветНеоднозначность = ЦветаСтиля.ИзмененноеЗначениеРеквизитаЦвет;
+ Иначе
+ ТекстОбъектНеНайден = НСтр("ru='<Новый>'");
+ ЦветОбъектНеНайден = ЦветаСтиля.РезультатУспехЦвет;
+ ЦветНеоднозначность = ЦветаСтиля.ПоясняющийОшибкуТекст;
+ КонецЕсли;
+
+ УсловноеОформление.Элементы.Очистить();
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+
+ ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ОбъектСопоставления");
+ ПолеОформления.Использование = Истина;
+
+ ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставленияДанных.ОбъектСопоставления");
+ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
+ ЭлементОтбора.Использование = Истина;
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветОбъектНеНайден);
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", ТекстОбъектНеНайден);
+
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+ ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ОбъектСопоставления");
+ ПолеОформления.Использование = Истина;
+ ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставленияДанных.РезультатСопоставленияСтроки");
+ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ ЭлементОтбора.ПравоеЗначение = "Неоднозначность";
+ ЭлементОтбора.Использование = Истина;
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветНеоднозначность);
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru='<неоднозначность>'"));
+
+КонецПроцедуры
+
+&НаСервере
+Функция ИнформацияОКолонке(ИмяКолонки)
+ Отбор = новый Структура("ИмяКолонки", ИмяКолонки);
+ Результат = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ Если Результат.Количество() > 0 Тогда
+ Возврат Результат[0];
+ КонецЕсли;
+
+ Возврат Неопределено;
+КонецФункции
+
+&НаСервере
+Функция ИнформацияОбОбъектеМетаданныхПоТипу(ПолныйТипОбъекта)
+ ОписаниеОбъекта = новый Структура("ТипОбъекта, ИмяОбъекта");
+ ПолноеИмя = Метаданные.НайтиПоТипу(ПолныйТипОбъекта).ПолноеИмя();
+ Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПолноеИмя,".");
+ Если Результат.Количество()>1 Тогда
+ ОписаниеОбъекта.ТипОбъекта = Результат[0];
+ ОписаниеОбъекта.ИмяОбъекта = Результат[1];
+
+ Возврат ОписаниеОбъекта;
+ Иначе
+ Возврат Неопределено;
+ КонецЕсли;
+
+КонецФункции
+
+&НаСервере
+Функция УсловияПоВыбраннымКолонкам()
+
+ Разделитель = "";
+ РазделительИ = "";
+ ТипСравнения = " = ";
+ сГде = "";
+ СтрокаУсловие = "";
+
+ Для каждого Элемент Из СопоставитьПоКолонке Цикл
+ Если Элемент.Пометка Тогда
+ Колонка = ИнформацияОКолонке(Элемент.Значение);
+ // Создаем запрос в зависимости от типов
+ Если Колонка <> Неопределено тогда
+ ТипКолонки = Колонка.ТипКолонки.Типы()[0];
+ Если ТипКолонки = Тип("Строка") Тогда
+ Если Колонка.ТипКолонки.КвалификаторыСтроки.Длина = 0 ТОгда
+ СтрокаУсловие = СтрокаУсловие + РазделительИ + "СправочникСопоставления." + Колонка.ИмяКолонки + " ПОДОБНО ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ сГДЕ = сГДЕ + " И СправочникСопоставления." + Колонка.ИмяКолонки + " <> """"";
+ Иначе
+ СтрокаУсловие = СтрокаУсловие + РазделительИ + "СправочникСопоставления." + Колонка.ИмяКолонки + " = ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ сГДЕ = сГДЕ + " И СправочникСопоставления." + Колонка.ИмяКолонки + " <> """"";
+ КонецЕсли;
+ ИначеЕсли ТипКолонки = Тип("Число") Тогда
+ СтрокаУсловие = СтрокаУсловие + РазделительИ + "СправочникСопоставления." + Колонка.ИмяКолонки + " = ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ ИначеЕсли ТипКолонки = Тип("Дата") Тогда
+ СтрокаУсловие = СтрокаУсловие + РазделительИ + "СправочникСопоставления." + Колонка.ИмяКолонки + " = ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ ИначеЕсли ТипКолонки = Тип("Булево") Тогда
+ СтрокаУсловие = СтрокаУсловие + РазделительИ + "СправочникСопоставления." + Колонка.ИмяКолонки + " = ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ Иначе
+ ИнфоОбъект = ИнформацияОбОбъектеМетаданныхПоТипу(ТипКолонки);
+ Если ИнфоОбъект.ТипОбъекта = "Справочник" Тогда
+ Справочник = Метаданные.Справочники.Найти(ИнфоОбъект.ИмяОбъекта);
+ ТекстУсловияСправочник = "";
+ РазделительИЛИ = "";
+ Для каждого СтрокаВвода из Справочник.ВводПоСтроке Цикл
+ Если СтрокаВвода.Имя = "Код" И НЕ Справочник.Автонумерация Тогда
+ ТекстУсловияВВодаПоСтроке = "СправочникСопоставления." + Колонка.ИмяКолонки+ ".Код " + ТипСравнения + " ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ Иначе
+ ТекстУсловияВВодаПоСтроке = "СправочникСопоставления." + Колонка.ИмяКолонки+ "." + СтрокаВвода.Имя + ТипСравнения + " ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ КонецЕсли;
+ ТекстУсловияСправочник = ТекстУсловияСправочник + РазделительИЛИ + ТекстУсловияВВодаПоСтроке;
+ РазделительИЛИ = " ИЛИ ";
+ КонецЦикла;
+ СтрокаУсловие = СтрокаУсловие + РазделительИ + " ( "+ ТекстУсловияСправочник + " )";
+ ИначеЕсли ИнфоОбъект.ТипОбъекта = "Перечисление" Тогда
+ СтрокаУсловие = СтрокаУсловие + РазделительИ + "СправочникСопоставления." + Колонка.ИмяКолонки + " = ТаблицаСопоставления." + Колонка.ИмяКолонки;
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЕсли;
+
+ РазделительИ = " И ";
+ Разделитель = ",";
+
+ КонецЕсли;
+ КонецЦикла;
+
+ Условия = Новый Структура("УсловиеОбъединения , Где");
+ Условия.УсловиеОбъединения = СтрокаУсловие;
+ Условия.Где = сГДЕ;
+ Возврат Условия;
+КонецФункции
+
+&НаСервере
+Процедура ВыполнитьСопоставлениеПоВыбранномуРеквизиту(КоличествоСопоставленных = 0, СписокКолонокСопоставления = "")
+
+ Условия = УсловияПоВыбраннымКолонкам();
+
+ Если Не ЗначениеЗаполнено(Условия.УсловиеОбъединения ) Тогда
+ Возврат;
+ КонецЕсли;
+
+ СтруктураОбъекта = Обработки.ЗагрузкаДанныхИзФайла.РазложитьПолноеИмяОбъекта(ИмяОбъектаСопоставления);
+ ИмяСправочника = СтруктураОбъекта.НазваниеОбъекта;
+ ТаблицаСопоставления = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+
+ СписокКолонок = "";
+ Разделитель = "";
+ Для каждого Колонка из ТаблицаСопоставления.Колонки Цикл
+ Если Колонка.Имя <> "СписокНеоднозначностей" И Колонка.Имя <> "РезультатСопоставленияСтроки" И Колонка.Имя <> "ОписаниеОшибки" Тогда
+ СписокКолонок = СписокКолонок + Разделитель + Колонка.Имя;
+ Разделитель = ", ";
+ КонецЕсли;
+ КонецЦикла;
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ " + СписокКолонок + "
+ |ПОМЕСТИТЬ ТаблицаСопоставления
+ |ИЗ &ТаблицаСопоставления КАК ТаблицаСопоставления
+ |;
+ |ВЫБРАТЬ
+ | СправочникСопоставления.Ссылка, ТаблицаСопоставления.Идентификатор
+ |ИЗ
+ | Справочник." + ИмяСправочника + " КАК СправочникСопоставления
+ | ПРАВОЕ СОЕДИНЕНИЕ ТаблицаСопоставления КАК ТаблицаСопоставления
+ | ПО " + Условия.УсловиеОбъединения + "
+ |ГДЕ
+ | СправочникСопоставления.ПометкаУдаления = ЛОЖЬ " + Условия.Где + "
+ | УПОРЯДОЧИТЬ ПО ТаблицаСопоставления.Идентификатор ИТОГИ ПО ТаблицаСопоставления.Идентификатор";
+
+ Запрос.УстановитьПараметр("ТаблицаСопоставления", ТаблицаСопоставления);
+
+ РезультатЗапроса = Запрос.Выполнить();
+ ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
+
+ ПустоеЗначение = МенеджерОбъекта(ИмяОбъектаСопоставления).ПустаяСсылка();
+
+ Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
+ Строка = ТаблицаСопоставления.Найти(ВыборкаДетальныеЗаписи.Идентификатор, "Идентификатор");
+
+ Если ЗначениеЗаполнено(Строка.ОбъектСопоставления) Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ВыборкаДетальныеЗаписиГруппа = ВыборкаДетальныеЗаписи.Выбрать();
+
+ Если ВыборкаДетальныеЗаписиГруппа.Количество() > 1 Тогда
+ СписокНеоднозначностей = Новый СписокЗначений;
+ Пока ВыборкаДетальныеЗаписиГруппа.Следующий() Цикл
+ СписокНеоднозначностей.Добавить(ВыборкаДетальныеЗаписиГруппа.Ссылка);
+ КонецЦикла;
+ Строка.РезультатСопоставленияСтроки = "Неоднозначность";
+ Строка.ОписаниеОшибки = СписокКолонокСопоставления;
+ Строка.СписокНеоднозначностей = СписокНеоднозначностей;
+ Иначе
+ ВыборкаДетальныеЗаписиГруппа.Следующий();
+ КоличествоСопоставленных = КоличествоСопоставленных + 1;
+ Строка.РезультатСопоставленияСтроки = "СтрокаСопоставлена";
+ Строка.ОписаниеОшибки = "";
+ Строка.ОбъектСопоставления = ВыборкаДетальныеЗаписиГруппа.Ссылка;
+ КонецЕсли;
+ КонецЦикла;
+
+ ЗначениеВРеквизитФормы(ТаблицаСопоставления, "ТаблицаСопоставленияДанных");
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ПоместитьДанныеВТаблицуСопоставления(АдресЗагруженныхДанных, АдресКопииТабличнойЧасти, СписокНеоднозначностей)
+
+ ТабличнаяЧасть = ПолучитьИзВременногоХранилища(АдресКопииТабличнойЧасти);
+
+ Если ТабличнаяЧасть = Неопределено ИЛИ ТипЗнч(ТабличнаяЧасть) <> Тип("ТаблицаЗначений") ИЛИ ТабличнаяЧасть.Количество() = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
+ Отбор = Новый Структура("ОбязательнаДляЗаполнения", Истина);
+ ОтобранныеКолонкиОбязательнаДляЗаполненияТаблицы= ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ КолонкиОбязательныеДляЗаполнения = Новый Соответствие;
+ Для каждого КолонкаТаблицы Из ОтобранныеКолонкиОбязательнаДляЗаполненияТаблицы Цикл
+ КолонкиОбязательныеДляЗаполнения.Вставить(КолонкаТаблицы.Ассоциация, Истина);
+ КонецЦикла;
+
+ ТаблицаСопоставленияДанных.Очистить();
+ ЗагружаемыеДанные = ПолучитьИзВременногоХранилища(АдресЗагруженныхДанных);
+
+ Для каждого Строка Из ТабличнаяЧасть Цикл
+ НоваяСтрока = ТаблицаСопоставленияДанных.Добавить();
+ НоваяСтрока.Идентификатор = Строка.Идентификатор;
+ ЗаполненыВсеОбязательныеКолонки = Истина;
+ Для каждого Колонка Из ТабличнаяЧасть.Колонки Цикл
+ Если Колонка.Имя <> "Идентификатор" Тогда
+ НоваяСтрока["ТЧ_" + Колонка.Имя] = Строка[Колонка.Имя];
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(КолонкиОбязательныеДляЗаполнения.Получить(Колонка.Имя))
+ И ЗаполненыВсеОбязательныеКолонки
+ И НЕ ЗначениеЗаполнено(Строка[Колонка.Имя]) Тогда
+ ЗаполненыВсеОбязательныеКолонки = Ложь;
+ КонецЕсли;
+ КонецЦикла;
+
+ НоваяСтрока["РезультатСопоставленияСтроки"] = ?(ЗаполненыВсеОбязательныеКолонки, "СтрокаСопоставлена", "НеСопоставлен");
+
+ Отбор = Новый Структура("Идентификатор", Строка.Идентификатор);
+
+ Неоднозначности = СписокНеоднозначностей.НайтиСтроки(Отбор);
+ Если Неоднозначности.Количество() > 0 Тогда
+ НоваяСтрока["РезультатСопоставленияСтроки"] = "НеСопоставлен";
+ Для каждого Неоднозначность Из Неоднозначности Цикл
+ НоваяСтрока["ОписаниеОшибки"] = НоваяСтрока["ОписаниеОшибки"] + Неоднозначность.Колонка+ ";";
+
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+ ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("тч_" + Неоднозначность.Колонка);
+ ПолеОформления.Использование = Истина;
+ ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаСопоставленияДанных.ОписаниеОшибки");
+ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
+ ЭлементОтбора.ПравоеЗначение = Неоднозначность.Колонка;
+ ЭлементОтбора.Использование = Истина;
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru='<неоднозначность>'"));
+ КонецЦикла;
+
+ КонецЕсли;
+ КонецЦикла;
+
+ Для каждого Строка Из ЗагружаемыеДанные Цикл
+ Отбор = Новый Структура("Идентификатор", Строка.Идентификатор);
+
+ Строки = ТаблицаСопоставленияДанных.НайтиСтроки(Отбор);
+ Если Строки.Количество() > 0 Тогда
+ НоваяСтрока = Строки[0];
+ Для каждого Колонка Из ЗагружаемыеДанные.Колонки Цикл
+ Если Колонка.Имя <> "Идентификатор" И Колонка.Имя <> "РезультатСопоставленияСтроки" И Колонка.Имя <> "ОписаниеОшибки"
+ И Колонка.Имя <> "Количество" И Колонка.Имя <> "Цена" Тогда
+ НоваяСтрока["фл_" + Колонка.Имя] = Строка[Колонка.Имя];
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+&НаСервере
+Функция АдресВХранилищеТаблицыСопоставления()
+ Таблица = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+
+ ТаблицаДляТЧ = Новый ТаблицаЗначений;
+ Для Каждого Колонка Из Таблица.Колонки цикл
+ Если Лев(Колонка.Имя, 3) = "тч_" тогда
+ ТаблицаДляТЧ.Колонки.Добавить(Сред(Колонка.имя, 4), Колонка.ТипЗначения, Колонка.Заголовок, Колонка.Ширина);
+ ИначеЕсли Колонка.Имя = "РезультатСопоставленияСтроки" ИЛИ Колонка.Имя = "ОписаниеОшибки" ИЛИ Колонка.Имя = "Идентификатор" тогда
+ ТаблицаДляТЧ.Колонки.Добавить(Колонка.имя, Колонка.ТипЗначения, Колонка.Заголовок, Колонка.Ширина);
+ КонецЕсли;
+ КонецЦикла;
+
+ Для Каждого Строка Из Таблица цикл
+ НоваяСтрока = ТаблицаДляТЧ.Добавить();
+ Для Каждого Колонка из ТаблицаДляТЧ.Колонки Цикл
+ Если Колонка.Имя = "Идентификатор" Тогда
+ НоваяСтрока[Колонка.Имя] = Строка[Колонка.Имя];
+ ИначеЕсли Колонка.Имя <> "РезультатСопоставленияСтроки" И Колонка.Имя <> "ОписаниеОшибки" Тогда
+ НоваяСтрока[Колонка.Имя] = Строка["тч_"+ Колонка.Имя];
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+
+ Возврат ПоместитьВоВременноеХранилище(ТаблицаДляТЧ);
+КонецФункции
+
+&НаСервереБезКонтекста
+Функция ПредставлениеСправочника(ПолноеИмяОбъектаМетаданных)
+ Возврат Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных).Представление();
+КонецФункции
+
+&НаСервереБезКонтекста
+Функция МенеджерОбъекта(ИмяОбъектаСопоставления)
+ МассивОбъекта = Обработки.ЗагрузкаДанныхИзФайла.РазложитьПолноеИмяОбъекта(ИмяОбъектаСопоставления);
+ Если МассивОбъекта.ТипОбъекта = "Документ" Тогда
+ МенеджерОбъекта = Документы[МассивОбъекта.НазваниеОбъекта];
+ ИначеЕсли МассивОбъекта.ТипОбъекта = "Справочник" Тогда
+ МенеджерОбъекта = Справочники[МассивОбъекта.НазваниеОбъекта];
+ Иначе
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Объект ""%1"" не найден'"), ИмяОбъектаСопоставления);
+ КонецЕсли;
+
+ Возврат МенеджерОбъекта;
+КонецФункции
+
+&НаСервереБезКонтекста
+Функция ФормаСписка(ИмяОбъектаСопоставления)
+ ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаСопоставления);
+ Возврат ОбъектМетаданных.ОсновнаяФормаСписка.ПолноеИмя();
+КонецФункции
+
+
+&НаСервере
+Функция ОписаниеТипаПоМетаданным(ПолноеИмяОбъектаМетаданных)
+ Результат = Обработки.ЗагрузкаДанныхИзФайла.РазложитьПолноеИмяОбъекта(ПолноеИмяОбъектаМетаданных);
+ Если Результат.ТипОбъекта = "Справочник" Тогда
+ Возврат Новый ОписаниеТипов("СправочникСсылка." + Результат.НазваниеОбъекта);
+ ИначеЕсли Результат.ТипОбъекта = "Документ" Тогда
+ Возврат Новый ОписаниеТипов("ДокументСсылка." + Результат.НазваниеОбъекта);
+ КонецЕсли;
+
+ Возврат Неопределено;
+КонецФункции
+
+&НаСервере
+Функция НезаполненныеОбязательныеКолонки()
+ НазванияКолонокБезДанных = Новый Массив;
+
+ Отбор = Новый Структура("ОбязательнаДляЗаполнения", Истина);
+ ОбязательныеКолонки = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+
+ Шапка = ОбластьЗаголовкаШаблонаТаблицы(ШаблонСДанными);
+ Для НомерКолонки = 1 По Шапка.ШиринаТаблицы Цикл
+ Ячейка = Шапка.ПолучитьОбласть(1, НомерКолонки, 1, НомерКолонки);
+ ИмяКолонки = СокрЛП(Ячейка.ТекущаяОбласть.Текст);
+
+ ИнформацияОКолонке = Неопределено;
+ Отбор = Новый Структура("ПредставлениеКолонки", ИмяКолонки);
+ КолонкиОтбор = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+
+ Если КолонкиОтбор.Количество() > 0 Тогда
+ ИнформацияОКолонке = КолонкиОтбор[0];
+ Иначе
+ Отбор = Новый Структура("ИмяКолонки", ИмяКолонки);
+ КолонкиОтбор = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+
+ Если КолонкиОтбор.Количество() > 0 Тогда
+ ИнформацияОКолонке = КолонкиОтбор[0];
+ КонецЕсли;
+ КонецЕсли;
+ Если ИнформацияОКолонке <> Неопределено Тогда
+ Если ИнформацияОКолонке.ОбязательнаДляЗаполнения Тогда
+ Для НомерСтроки = 2 По ШаблонСДанными.ВысотаТаблицы Цикл
+ Ячейка = ШаблонСДанными.ПолучитьОбласть(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
+ Если НЕ ЗначениеЗаполнено(Ячейка.ТекущаяОбласть.Текст) Тогда
+ НазванияКолонокБезДанных.Добавить(ИнформацияОКолонке.ПредставлениеКолонки);
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат НазванияКолонокБезДанных;
+КонецФункции
+
+#Область ВнешняяЗагрузка
+
+&НаСервере
+Процедура СопоставитьДанныеВнешняяОбработка(ТаблицаСопоставленияДанныхСервер )
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
+ МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
+ ВнешнийОбъект = МодульДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(ВнешняяОбработкаСсылка);
+ ВнешнийОбъект.СопоставитьЗагружаемыеДанныеИзФайла(ИдентификаторКоманды, ТаблицаСопоставленияДанныхСервер);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗаписатьСопоставленныеДанныеВнешняяОбработка(СопоставленныеДанные)
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
+ МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
+ ВнешнийОбъект = МодульДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(ВнешняяОбработкаСсылка);
+ КонецЕсли;
+
+ Отказ = Ложь;
+ ПараметрыЗагрузки = Новый Структура();
+ ПараметрыЗагрузки.Вставить("СоздаватьНовые", СоздаватьЕслиНеСопоставлено);
+ ПараметрыЗагрузки.Вставить("ОбновлятьСуществующие", ОбновлятьСуществующие);
+ ВнешнийОбъект.ЗагрузитьИзФайла(ИдентификаторКоманды, СопоставленныеДанные, ПараметрыЗагрузки, Отказ);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗагрузитьМакетВТабличныйДокументВнешняяОбработка(ПараметрыЗагрузки)
+
+ ОбластьЗаголовокТаблицы = ОбластьЗаголовкаШаблонаТаблицы(ПараметрыЗагрузки.Макет);
+ ОбластьЗаголовокТаблицы.Защита = Истина;
+ ШаблонСДанными.ФиксацияСверху = 1;
+ ШаблонСДанными.Вывести(ОбластьЗаголовокТаблицы);
+
+ Обработки.ЗагрузкаДанныхИзФайла.СоздатьИнформациюПоКолонкамНаОснованиеШаблона(ОбластьЗаголовокТаблицы, ПараметрыЗагрузки.СоответствиеТипаДанныхКолонок, ИнформацияПоКолонкам);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ЗагрузкаИзФайла
+
+&НаСервере
+Процедура ЗаписатьСопоставленныеДанныеПрикладнаяЗагрузка(СопоставленныеДанные)
+
+ МенеджерОбъекта = МенеджерОбъекта(ИмяОбъектаСопоставления);
+
+ Отказ = Ложь;
+ ПараметрыЗагрузки = Новый Структура();
+ ПараметрыЗагрузки.Вставить("СоздаватьНовые", СоздаватьЕслиНеСопоставлено);
+ ПараметрыЗагрузки.Вставить("ОбновлятьСуществующие", ОбновлятьСуществующие);
+ МенеджерОбъекта.ЗагрузитьИзФайла(СопоставленныеДанные, ПараметрыЗагрузки, Отказ)
+
+КонецПроцедуры
+
+
+#КонецОбласти
+
+#Область ЗагрузкаВТабличнуюЧасть
+
+&НаСервере
+Процедура СкопироватьСтруктуруТабличнойЧасти(АдресТабличнойЧасти)
+
+ ТабличнаяЧасть = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаСопоставления);
+
+ ДанныеДляТабличнойЧасти = Новый ТаблицаЗначений;
+ ДанныеДляТабличнойЧасти.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Число"), "Идентификатор");
+ Для каждого РеквизитТабличнойЧасти из ТабличнаяЧасть.Реквизиты Цикл
+ ДанныеДляТабличнойЧасти.Колонки.Добавить(РеквизитТабличнойЧасти.Имя, РеквизитТабличнойЧасти.Тип, РеквизитТабличнойЧасти.Представление());
+ КонецЦикла;
+
+ АдресТабличнойЧасти = ПоместитьВоВременноеХранилище(ДанныеДляТабличнойЧасти);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+&НаСервере
+Процедура СформироватьОтчетОЗагрузке(ТипОтчета = "ВсеЭлементы", ФоновоеЗадание = Ложь, РассчитыватьПроцентПрогресса = Ложь)
+
+ СопоставленныеДанные = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+
+ ПараметрыВызоваСервера = Новый Структура();
+
+ ПараметрыВызоваСервера.Вставить("ТаблицаОтчет", ТаблицаОтчет);
+ ПараметрыВызоваСервера.Вставить("ТипОтчета", ТипОтчета);
+ ПараметрыВызоваСервера.Вставить("СопоставленныеДанные", СопоставленныеДанные);
+ ПараметрыВызоваСервера.Вставить("ШаблонСДанными", ШаблонСДанными);
+ ПараметрыВызоваСервера.Вставить("ИмяОбъектаСопоставления", ИмяОбъектаСопоставления);
+ ТаблицаИнформацияПоКолонкам = РеквизитФормыВЗначение("ИнформацияПоКолонкам");
+ ПараметрыВызоваСервера.Вставить("ИнформацияПоКолонкам", ТаблицаИнформацияПоКолонкам);
+
+
+ Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
+ ПараметрыВызоваСервера.Вставить("РассчитыватьПроцентПрогресса", Ложь);
+ АдресХранилища = ПоместитьВоВременноеХранилище("");
+ Обработки.ЗагрузкаДанныхИзФайла.СформироватьОтчетОЗагрузкеФон(ПараметрыВызоваСервера, АдресХранилища);
+ ФоновоеЗаданиеАдресХранилища = АдресХранилища;
+ Иначе
+ ПараметрыВызоваСервера.Вставить("РассчитыватьПроцентПрогресса", РассчитыватьПроцентПрогресса);
+ РезультатФоновогоЗадания = ДлительныеОперации.ЗапуститьВыполнениеВФоне(УникальныйИдентификатор,
+ "Обработки.ЗагрузкаДанныхИзФайла.СформироватьОтчетОЗагрузкеФон",
+ ПараметрыВызоваСервера,
+ НСтр("ru = 'Подсистема ЗагрузкаДанныхИзФайла: Выполнение серверного метода обработки сформировать отчет о загрузке'"));
+
+ Если РезультатФоновогоЗадания.ЗаданиеВыполнено Тогда
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ Иначе
+ ФоновоеЗадание = Истина;
+ ФоновоеЗаданиеИдентификатор = РезультатФоновогоЗадания.ИдентификаторЗадания;
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ КонецЕсли;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция ОбластьЗаголовкаШаблонаТаблицы(Шаблон)
+ МетаданныеОбластьЗаголовокТаблицы = Шаблон.Области.Найти("Шапка");
+
+ Если МетаданныеОбластьЗаголовокТаблицы = Неопределено тогда
+ ОбластьЗаголовокТаблицы = Шаблон.ПолучитьОбласть("R1");
+ Иначе
+ ОбластьЗаголовокТаблицы = Шаблон.ПолучитьОбласть("Шапка");
+ КонецЕсли;
+
+ Возврат ОбластьЗаголовокТаблицы;
+
+КонецФункции
+
+&НаСервере
+Процедура ПоказатьИнформационнуюСтрокуПроОбязательныеКолонки()
+
+ Если Элементы.СтраницыЗаполненияДанных.ТекущаяСтраница = Элементы.СтраницаВариантЗагрузкаИзФайла Тогда
+ ТекстПодсказки = НСтр("ru = 'Для загрузки данных необходимо заполнить таблицу сохранив бланк в файл для заполнения в другой программе.'") + Символы.ПС;
+ ТекстПодсказки = ТекстПодсказки + НСтр("ru = 'После редактирования загрузить готовые данные в таблицу.'") + Символы.ПС;
+ Иначе
+ ТекстПодсказки = НСтр("ru = 'Для заполнения таблицы необходимо скопировать данные в таблицу из внешнего файла через буфер обмена.'") + Символы.ПС;
+ КонецЕсли;
+
+ Отбор = Новый Структура("ОбязательнаДляЗаполнения", Истина);
+ ОбязательныеКолонки= ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+
+ Если ОбязательныеКолонки.Количество() > 0 Тогда
+ СписокКолонок = "";
+
+ Для каждого Колонка Из ОбязательныеКолонки Цикл
+ Если ЗначениеЗаполнено(Колонка.Синоним) Тогда
+ СписокКолонок = СписокКолонок + ", """ + Колонка.Синоним + """";
+ Иначе
+ СписокКолонок = СписокКолонок + ", """ + Колонка.ПредставлениеКолонки + """";
+ КонецЕсли;
+ КонецЦикла;
+ СписокКолонок = Сред(СписокКолонок, 3);
+
+ Если ОбязательныеКолонки.Количество() = 1 Тогда
+ ТекстПодсказки = ТекстПодсказки + НСтр("ru = 'Колонка обязательная для заполнения:'") + " " + СписокКолонок;
+ Иначе
+ ТекстПодсказки = ТекстПодсказки + НСтр("ru = 'Колонки обязательные для заполнения:'") + " " + СписокКолонок;
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Элементы.НадписьПодсказкаДляЗаполнения.Заголовок = ТекстПодсказки;
+ Элементы.ПояснениеВариантЗагрузкаИзФайла.Заголовок = ТекстПодсказки;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗагрузитьМакетВТабличныйДокумент(ПараметрыЗагрузкиИзФайла)
+
+ МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаСопоставления);
+ ПараметрыЗагрузкиИзФайла = Обработки.ЗагрузкаДанныхИзФайла.ПараметрыЗагрузкиИзФайла(МетаданныеОбъекта);
+
+ МенеджерОбъекта(ИмяОбъектаСопоставления).ОпределитьПараметрыЗагрузкиДанныхИзФайла(ПараметрыЗагрузкиИзФайла);
+
+ Если ЗначениеЗаполнено(ПараметрыЗагрузкиИзФайла.Заголовок) Тогда
+ ЭтотОбъект.Заголовок = ПараметрыЗагрузкиИзФайла.Заголовок;
+ ЭтотОбъект.АвтоЗаголовок = Ложь;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ДобавитьСтандартныеКолонкиВТаблицуСопоставления(ВременнаяТЗ, СтруктураОбъектаСопоставления = Неопределено, ДобавитьИдентификатор = Истина,
+ ДобавитьОписаниеОшибки = Истина, ДобавитьРезультатСопоставленияСтроки = Истина,
+ ДобавитьСписокНеоднозначностей = Истина)
+
+ Если ДобавитьИдентификатор Тогда
+ ВременнаяТЗ.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Число"), НСтр("ru = 'п/п'"));
+ КонецЕсли;
+ Если ЗначениеЗаполнено(СтруктураОбъектаСопоставления) Тогда
+ Если Не ЗначениеЗаполнено(СтруктураОбъектаСопоставления.Синоним) Тогда
+ ЗаголовокКолонки = "";
+ Если СтруктураОбъектаСопоставления.ОписаниеТипаОбъектаСопоставления.Типы().Количество() > 1 Тогда
+ ЗаголовокКолонки = "Объекты";
+ Иначе
+ ЗаголовокКолонки = Строка(СтруктураОбъектаСопоставления.ОписаниеТипаОбъектаСопоставления.Типы()[0]);
+ КонецЕсли;
+
+ Иначе
+ ЗаголовокКолонки = СтруктураОбъектаСопоставления.Синоним;
+ КонецЕсли;
+ ВременнаяТЗ.Колонки.Добавить("ОбъектСопоставления", СтруктураОбъектаСопоставления.ОписаниеТипаОбъектаСопоставления, ЗаголовокКолонки);
+ КонецЕсли;
+ Если ДобавитьРезультатСопоставленияСтроки Тогда
+ ВременнаяТЗ.Колонки.Добавить("РезультатСопоставленияСтроки", Новый ОписаниеТипов("Строка"), НСтр("ru = 'Результат'"));
+ КонецЕсли;
+ Если ДобавитьОписаниеОшибки Тогда
+ ВременнаяТЗ.Колонки.Добавить("ОписаниеОшибки", Новый ОписаниеТипов("Строка"), НСтр("ru = 'Причина'"));
+ КонецЕсли;
+
+ Если ДобавитьСписокНеоднозначностей Тогда
+ ТипСЗ = Новый ОписаниеТипов("СписокЗначений");
+ ВременнаяТЗ.Колонки.Добавить("СписокНеоднозначностей", ТипСЗ, "СписокНеоднозначностей");
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ДобавитьСтандартныеКолонкиВМассивРеквизитов(МассивРеквизитов, СтруктураОбъектаСопоставления = Неопределено, ДобавитьИдентификатор = Истина,
+ ДобавитьОписаниеОшибки = Истина, ДобавитьРезультатСопоставленияСтроки = Истина,
+ ДобавитьСписокНеоднозначностей = Истина)
+
+ ТипСтрока = Новый ОписаниеТипов("Строка");
+ Если ДобавитьИдентификатор Тогда
+ ТипЧисло = Новый ОписаниеТипов("Число");
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("Идентификатор", ТипЧисло, "ТаблицаСопоставленияДанных", "Идентификатор"));
+ КонецЕсли;
+ Если ЗначениеЗаполнено(СтруктураОбъектаСопоставления) Тогда
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("ОбъектСопоставления", СтруктураОбъектаСопоставления.ОписаниеТипаОбъектаСопоставления, "ТаблицаСопоставленияДанных", ИмяОбъектаСопоставления));
+ КонецЕсли;
+
+ Если ДобавитьРезультатСопоставленияСтроки Тогда
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("РезультатСопоставленияСтроки", ТипСтрока, "ТаблицаСопоставленияДанных", "Результат"));
+ КонецЕсли;
+ Если ДобавитьОписаниеОшибки Тогда
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("ОписаниеОшибки", ТипСтрока, "ТаблицаСопоставленияДанных", "Причина"));
+ КонецЕсли;
+
+ Если ДобавитьСписокНеоднозначностей Тогда
+ ТипСЗ = Новый ОписаниеТипов("СписокЗначений");
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("СписокНеоднозначностей", ТипСЗ, "ТаблицаСопоставленияДанных", "СписокНеоднозначностей"));
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СоздатьТаблицуСопоставленияПоИнформацииОКолонкахАвто(ОписаниеТипаОбъектаСопоставления)
+
+ МассивРеквизитов = Новый Массив;
+
+ ВременнаяТЗ = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+ ВременнаяТЗ.Колонки.Очистить();
+
+ СтруктураОбъектаСопоставления = Новый Структура("ОписаниеТипаОбъектаСопоставления, Синоним", ОписаниеТипаОбъектаСопоставления, "");
+ ДобавитьСтандартныеКолонкиВТаблицуСопоставления(ВременнаяТЗ, СтруктураОбъектаСопоставления,, Ложь);
+ ДобавитьСтандартныеКолонкиВМассивРеквизитов(МассивРеквизитов, СтруктураОбъектаСопоставления, ,Ложь);
+
+ Для каждого Колонка из ИнформацияПоКолонкам Цикл
+ ВременнаяТЗ.Колонки.Добавить(Колонка.ИмяКолонки, Колонка.ТипКолонки, Колонка.ПредставлениеКолонки);
+ МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.ИмяКолонки, Колонка.ТипКолонки, "ТаблицаСопоставленияДанных", Колонка.ПредставлениеКолонки));
+ КонецЦикла;
+
+ ИзменитьРеквизиты(МассивРеквизитов);
+
+ ЗначениеВРеквизитФормы(ВременнаяТЗ, "ТаблицаСопоставленияДанных");
+
+ Для Каждого Колонка Из ВременнаяТЗ.Колонки Цикл
+ НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ТаблицаСопоставленияДанных);
+ НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+ НовыйЭлемент.ПутьКДанным = "ТаблицаСопоставленияДанных." + Колонка.Имя;
+ НовыйЭлемент.Заголовок = Колонка.Заголовок;
+ НовыйЭлемент.ТолькоПросмотр = Истина;
+ Если НовыйЭлемент.Вид <> ВидПоляФормы.ПолеНадписи Тогда
+ ОбязательнаДляЗаполнения = ЭтаКолонкаОбязательнаДляЗаполнения(Колонка.Имя);
+ НовыйЭлемент.АвтоОтметкаНезаполненного = ОбязательнаДляЗаполнения;
+ НовыйЭлемент.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
+
+ КонецЕсли;
+ Если Колонка.Имя = "ОбъектСопоставления" Тогда
+ НовыйЭлемент.ФиксацияВТаблице = ФиксацияВТаблице.Лево;
+ НовыйЭлемент.ЦветФона = ЦветаСтиля.ФонУправляющегоПоля;
+ НовыйЭлемент.КартинкаШапки = БиблиотекаКартинок.Изменить;
+ НовыйЭлемент.ТолькоПросмотр = Ложь;
+
+ НовыйЭлемент.РежимРедактирования = РежимРедактированияКолонки.Вход;
+ НовыйЭлемент.КнопкаВыпадающегоСписка = Ложь;
+ НовыйЭлемент.КнопкаСоздания = Ложь;
+ НовыйЭлемент.РедактированиеТекста = Ложь;
+ НовыйЭлемент.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
+ НовыйЭлемент.РежимВыбораНезаполненного = РежимВыбораНезаполненного.ПриАктивизации;
+ ИначеЕсли Колонка.Имя = "Идентификатор" Тогда
+ НовыйЭлемент.ФиксацияВТаблице = ФиксацияВТаблице.Лево;
+ НовыйЭлемент.ТолькоПросмотр = Истина;
+ НовыйЭлемент.Ширина = 4;
+ ИначеЕсли Колонка.Имя = "РезультатСопоставленияСтроки" ИЛИ Колонка.Имя = "СписокНеоднозначностей" Тогда
+ НовыйЭлемент.Видимость = Ложь;
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СоздатьТаблицуСопоставленияПоИнформацииОКолонках()
+
+ МассивРеквизитов = Новый Массив;
+
+ ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаСопоставления);
+ ОписаниеТипаОбъектаСопоставления = ОписаниеТипаПоМетаданным(ИмяОбъектаСопоставления);
+ ТипСтрока = Новый ОписаниеТипов("Строка");
+ ТипЧисло = Новый ОписаниеТипов("Число");
+ ТипСЗ = Новый ОписаниеТипов("СписокЗначений");
+
+ ВременнаяТЗ = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+ ВременнаяТЗ.Колонки.Очистить();
+
+ Синоним = ОбъектМетаданных.Синоним;
+ СтруктураОбъектаСопоставления = Новый Структура("ОписаниеТипаОбъектаСопоставления, Синоним", ОписаниеТипаОбъектаСопоставления, Синоним);
+ ДобавитьСтандартныеКолонкиВТаблицуСопоставления(ВременнаяТЗ, СтруктураОбъектаСопоставления);
+ ДобавитьСтандартныеКолонкиВМассивРеквизитов(МассивРеквизитов, СтруктураОбъектаСопоставления);
+
+ Для каждого Колонка из ИнформацияПоКолонкам Цикл
+ ПредставлениеКолонки = ?(ЗначениеЗаполнено(Колонка.Синоним), Колонка.Синоним, Колонка.ПредставлениеКолонки);
+ ВременнаяТЗ.Колонки.Добавить(Колонка.ИмяКолонки, Колонка.ТипКолонки,ПредставлениеКолонки);
+ МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.ИмяКолонки, Колонка.ТипКолонки, "ТаблицаСопоставленияДанных", ПредставлениеКолонки));
+ КонецЦикла;
+
+ ИзменитьРеквизиты(МассивРеквизитов);
+
+ Для Каждого Колонка Из ВременнаяТЗ.Колонки Цикл
+ НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ТаблицаСопоставленияДанных);
+ НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+ НовыйЭлемент.ПутьКДанным = "ТаблицаСопоставленияДанных." + Колонка.Имя;
+ НовыйЭлемент.Заголовок = Колонка.Заголовок;
+ НовыйЭлемент.ТолькоПросмотр = Истина;
+ Если НовыйЭлемент.Вид <> ВидПоляФормы.ПолеНадписи Тогда
+ ОбязательнаДляЗаполнения = ЭтаКолонкаОбязательнаДляЗаполнения(Колонка.Имя);
+ НовыйЭлемент.АвтоОтметкаНезаполненного = ОбязательнаДляЗаполнения;
+ НовыйЭлемент.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
+ КонецЕсли;
+ Если Колонка.Имя = "ОбъектСопоставления" Тогда
+ НовыйЭлемент.ФиксацияВТаблице = ФиксацияВТаблице.Лево;
+ НовыйЭлемент.ЦветФона = ЦветаСтиля.ФонУправляющегоПоля;
+ НовыйЭлемент.КартинкаШапки = БиблиотекаКартинок.Изменить;
+ НовыйЭлемент.ТолькоПросмотр = Ложь;
+ НовыйЭлемент.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
+ НовыйЭлемент.РежимВыбораНезаполненного = РежимВыбораНезаполненного.ПриАктивизации;
+ ИначеЕсли Колонка.Имя = "Идентификатор" Тогда
+ НовыйЭлемент.ФиксацияВТаблице = ФиксацияВТаблице.Лево;
+ НовыйЭлемент.ТолькоПросмотр = Истина;
+ НовыйЭлемент.Ширина = 4;
+ ИначеЕсли Колонка.Имя = "РезультатСопоставленияСтроки" ИЛИ Колонка.Имя = "ОписаниеОшибки" ИЛИ Колонка.Имя = "СписокНеоднозначностей" Тогда
+ НовыйЭлемент.Видимость = Ложь;
+ КонецЕсли;
+
+ Отбор = Новый Структура("ИмяКолонки", Колонка.Имя);
+ Колонки = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ Если Колонки.Количество() > 0 Тогда
+ НовыйЭлемент.Видимость = Колонки[0].Видимость;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ЗначениеВРеквизитФормы(ВременнаяТЗ, "ТаблицаСопоставленияДанных");
+КонецПроцедуры
+
+&НаСервере
+Процедура СоздатьТаблицуСопоставленияПоИнформацииОКолонкахДляТЧ()
+
+ МассивРеквизитов = Новый Массив;
+ ТипСтрока = Новый ОписаниеТипов("Строка");
+ ТипЧисло = Новый ОписаниеТипов("Число");
+
+ ВременнаяТЗ = РеквизитФормыВЗначение("ТаблицаСопоставленияДанных");
+ ВременнаяТЗ.Колонки.Очистить();
+
+ ДобавитьСтандартныеКолонкиВТаблицуСопоставления(ВременнаяТЗ,,,,, Ложь);
+ ДобавитьСтандартныеКолонкиВМассивРеквизитов(МассивРеквизитов,,,,, Ложь);
+
+ ОбязательныеКолонки = Новый Массив;
+ РеквизитыТЧ = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаСопоставления).Реквизиты;
+ Для каждого Колонка из РеквизитыТЧ Цикл
+ Если Колонка.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку Тогда
+ ОбязательныеКолонки.Добавить("тч_" + Колонка.Имя);
+ КонецЕсли;
+ ВременнаяТЗ.Колонки.Добавить("тч_" + Колонка.Имя, Колонка.Тип, Колонка.Представление());
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("тч_" + Колонка.Имя, Колонка.Тип, "ТаблицаСопоставленияДанных", Колонка.Представление()));
+ КонецЦикла;
+
+ Для каждого Колонка из ИнформацияПоКолонкам Цикл
+ ВременнаяТЗ.Колонки.Добавить("фл_" + Колонка.ИмяКолонки, ТипСтрока, Колонка.ПредставлениеКолонки);
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("фл_" + Колонка.ИмяКолонки, ТипСтрока, "ТаблицаСопоставленияДанных", Колонка.ПредставлениеКолонки));
+ КонецЦикла;
+
+ ИзменитьРеквизиты(МассивРеквизитов);
+ РеквизитыСозданы = Истина;
+
+ ГруппаКолонокЗагружаемыеДанные = Элементы.Добавить("ЗагружаемыеДанные", Тип("ГруппаФормы"), Элементы.ТаблицаСопоставленияДанных);
+ ГруппаКолонокЗагружаемыеДанные.Группировка = ГруппировкаКолонок.Горизонтальная;
+
+ Для Каждого Колонка Из ВременнаяТЗ.Колонки Цикл
+
+
+ Если Лев(Колонка.Имя, 3) = "тч_" Тогда
+ ГруппаКолонокЗагружаемыеДанныеТЧ = Элементы.Добавить("ЗагружаемыеДанные_" + Колонка.Имя , Тип("ГруппаФормы"), ГруппаКолонокЗагружаемыеДанные);
+ ГруппаКолонокЗагружаемыеДанныеТЧ.Группировка = ГруппировкаКолонок.Вертикальная;
+ род = ГруппаКолонокЗагружаемыеДанныеТЧ;
+ иначеЕсли Лев(Колонка.Имя, 3) = "фл_" Тогда
+ Продолжить;
+ иначе
+ род = ГруппаКолонокЗагружаемыеДанные;
+ КонецЕсли;
+
+ НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), род);
+
+ НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+ НовыйЭлемент.ПутьКДанным = "ТаблицаСопоставленияДанных." + Колонка.Имя;
+ НовыйЭлемент.Заголовок = Колонка.Заголовок;
+ НовыйЭлемент.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
+ НовыйЭлемент.Ширина = 5;
+
+ Если СтрДлина(Колонка.Имя) > 3 и Лев(Колонка.Имя, 3) = "тч_" Тогда
+ Отбор = НОвый Структура("ИмяКолонки", Сред(Колонка.Имя, 4));
+ Колонки = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ Если Колонки.Количество() > 0 Тогда
+ НовыйЭлемент.Видимость = Колонки[0].Видимость;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если Колонка.Имя = "Идентификатор" Тогда
+ НовыйЭлемент.ФиксацияВТаблице = ФиксацияВТаблице.Лево;
+ НовыйЭлемент.ТолькоПросмотр = Истина;
+ НовыйЭлемент.Ширина = 1;
+ ИначеЕсли Колонка.Имя = "РезультатСопоставленияСтроки" ИЛИ Колонка.Имя = "ОписаниеОшибки" Тогда
+ НовыйЭлемент.Видимость = Ложь;
+ КонецЕсли;
+
+ Если ОбязательныеКолонки.Найти(Колонка.Имя) <> Неопределено Тогда
+ НовыйЭлемент.АвтоОтметкаНезаполненного = Истина;
+ КонецЕсли;
+
+ Если Лев(Колонка.Имя, 3) = "тч_" Тогда
+ ТипКолонки = Метаданные.НайтиПоТипу(Колонка.ТипЗначения.Типы()[0]);
+ Если ТипКолонки <> Неопределено И Найти(ТипКолонки.ПолноеИмя(), "Справочник") > 0 тогда
+ НовыйЭлемент.КартинкаШапки = БиблиотекаКартинок.Изменить;
+ КонецЕсли;
+
+ Отбор = Новый Структура("Ассоциация", Сред(Колонка.Имя, 4));
+ КолонкиАссоциация = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+
+ Если КолонкиАссоциация.Количество() = 1 Тогда
+
+ КолонкаУровень2 = ВременнаяТЗ.Колонки.Найти("фл_" + КолонкиАссоциация[0].ИмяКолонки);
+ Если КолонкаУровень2 <> Неопределено Тогда
+ НовыйЭлемент = Элементы.Добавить(КолонкаУровень2.Имя, Тип("ПолеФормы"), род);
+ НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+ НовыйЭлемент.ПутьКДанным = "ТаблицаСопоставленияДанных." + КолонкаУровень2.Имя;
+ ТипКолонки = Метаданные.НайтиПоТипу(КолонкаУровень2.ТипЗначения.Типы()[0]);
+ Если ТипКолонки <> Неопределено И Найти(ТипКолонки.ПолноеИмя(), "Справочник") > 0 тогда
+ НовыйЭлемент.Заголовок = Нстр("ru = 'Данные из файла'");
+ Иначе
+ НовыйЭлемент.Заголовок = " ";
+ КонецЕсли;
+ НовыйЭлемент.ТолькоПросмотр = Истина;
+ НовыйЭлемент.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;
+ КонецЕсли;
+
+ ИначеЕсли КолонкиАссоциация.Количество() > 1 Тогда
+ ГруппаКолонокЗагружаемыеДанныеТЧ = Элементы.Добавить("ЗагружаемыеДанные_фл_" + Колонка.Имя , Тип("ГруппаФормы"), род);
+ ГруппаКолонокЗагружаемыеДанныеТЧ.Группировка = ГруппировкаКолонок.ВЯчейке;
+ род = ГруппаКолонокЗагружаемыеДанныеТЧ;
+
+ Префикс = Нстр("ru = 'Данные из файла:'");
+ Для каждого КолонкаАссоциация Из КолонкиАссоциация Цикл
+ Колонка2 = ВременнаяТЗ.Колонки.Найти("фл_" + КолонкаАссоциация.ИмяКолонки);
+ Если Колонка2 <> Неопределено Тогда
+ НовыйЭлемент = Элементы.Добавить(Колонка2.Имя, Тип("ПолеФормы"), род);
+ НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+ НовыйЭлемент.ПутьКДанным = "ТаблицаСопоставленияДанных." + Колонка2.Имя;
+ НовыйЭлемент.Заголовок = Префикс + Колонка2.Заголовок;
+ НовыйЭлемент.ТолькоПросмотр = Истина;
+ НовыйЭлемент.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;
+
+ Если СтрДлина(Колонка.Имя) > 3 и Лев(Колонка.Имя, 3) = "фл_" Тогда
+ Отбор = НОвый Структура("ИмяКолонки", Сред(Колонка.Имя, 4));
+ Колонки = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ Если Колонки.Количество() > 0 Тогда
+ НовыйЭлемент.Видимость = Колонки[0].Видимость;
+ КонецЕсли;
+ КонецЕсли;
+
+
+ КонецЕсли;
+ Префикс = "";
+ КонецЦикла;
+ Иначе
+ НовыйЭлемент.Видимость = Ложь;
+ КонецЕсли;
+ КонецЕсли;
+
+
+
+ КонецЦикла;
+
+ ЗначениеВРеквизитФормы(ВременнаяТЗ, "ТаблицаСопоставленияДанных");
+КонецПроцедуры
+
+&НаСервере
+Функция ЭтаКолонкаОбязательнаДляЗаполнения(ИмяКолонки)
+ Отбор = Новый Структура("ИмяКолонки", ИмяКолонки);
+ Колонка = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ Если Колонка.Количество()>0 Тогда
+ Возврат Колонка[0].ОбязательнаДляЗаполнения;
+ КонецЕсли;
+
+ Возврат Ложь;
+КонецФункции
+
+&НаСервере
+Процедура ОчисткаШаблонСДанными()
+ ОбластьЗаголовка = ШаблонСДанными.ПолучитьОбласть(1, 1, 1, ШаблонСДанными.ШиринаТаблицы);
+ ШаблонСДанными.Очистить();
+ ШаблонСДанными.Вывести(ОбластьЗаголовка);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеСопоставленияНеоднозначностей(Результат, Параметр) Экспорт
+
+ Если ТипЗагрузки = "ТабличнаяЧасть" Тогда
+ Если Результат <> Неопределено Тогда
+ Строка = ТаблицаСопоставленияДанных.НайтиПоИдентификатору(Параметр.Идентификатор);
+
+ Строка["тч_" + Параметр.Имя] = Результат;
+ Строка.ОписаниеОшибки = СтрЗаменить(Строка.ОписаниеОшибки, Параметр.Имя+";", "");
+ Строка.РезультатСопоставленияСтроки = ?(СтрДлина(Строка.ОписаниеОшибки) = 0, "СтрокаСопоставлена", "НеСопоставлен");
+ КонецЕсли;
+ Иначе
+ Строка = ТаблицаСопоставленияДанных.НайтиПоИдентификатору(Параметр.Идентификатор);
+ Строка.ОбъектСопоставления = Результат;
+ Если Результат <> Неопределено Тогда
+ Строка.РезультатСопоставленияСтроки = "СтрокаСопоставлена";
+ Строка.СписокНеоднозначностей = Неопределено;
+ Иначе
+ Если Строка.РезультатСопоставленияСтроки <> "Неоднозначность" Тогда
+ Строка.РезультатСопоставленияСтроки = "НеСопоставлен";
+ Строка.СписокНеоднозначностей = Неопределено;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ ПоказатьСтатистикуПоСопоставлениюЗагрузкаИзФайла();
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВыполнитьСопоставление()
+ КоличествоСопоставленныхПоКолонкам = 0;
+ СписокКолонок = "";
+ ВыполнитьСопоставлениеПоВыбранномуРеквизиту(КоличествоСопоставленныхПоКолонкам, СписокКолонок);
+ ПоказатьОповещениеПользователя(Нстр("ru = 'Выполнено сопоставление'"),, Нстр("ru = 'Сопоставлено элементов:'") + " " + Строка(КоличествоСопоставленныхПоКолонкам));
+ ПоказатьСтатистикуПоСопоставлениюЗагрузкаИзФайла();
+КонецПроцедуры
+
+&НаКлиенте
+Функция ВсеДанныеСопоставлены()
+ Отбор = Новый Структура("РезультатСопоставленияСтроки", "СтрокаСопоставлена");
+ Результат = ТаблицаСопоставленияДанных.НайтиСтроки(Отбор);
+ КоличествоСопоставленных = Результат.Количество();
+
+ Если ТаблицаСопоставленияДанных.Количество() = КоличествоСопоставленных Тогда
+ Возврат Истина;
+ Иначе
+ Возврат Ложь;
+ КонецЕсли;
+
+КонецФункции
+
+&НаКлиенте
+Функция СтатисткаСопоставления()
+ Отбор = Новый Структура("РезультатСопоставленияСтроки", "СтрокаСопоставлена");
+ Результат = ТаблицаСопоставленияДанных.НайтиСтроки(Отбор);
+ КоличествоСопоставленных = Результат.Количество();
+
+ Отбор = Новый Структура("ОписаниеОшибки", "");
+ Результат = ТаблицаСопоставленияДанных.НайтиСтроки(Отбор);
+ КолоВоНеоднозначных = ТаблицаСопоставленияДанных.Количество() - Результат.Количество();
+
+ КоличествоНеСопоставленных = ТаблицаСопоставленияДанных.Количество() - КоличествоСопоставленных;
+
+ Результат = Новый Структура;
+ Результат.Вставить("Всего", ТаблицаСопоставленияДанных.Количество());
+ Результат.Вставить("Сопоставленных", КоличествоСопоставленных);
+ Результат.Вставить("Неоднозначных", КолоВоНеоднозначных);
+ Результат.Вставить("Несопоставленных", КоличествоНеСопоставленных);
+ Результат.Вставить("НеНайдено", КоличествоНеСопоставленных - КолоВоНеоднозначных);
+
+ Возврат Результат;
+
+КонецФункции
+
+&НаКлиенте
+Процедура ПоказатьСтатистикуПоСопоставлениюЗагрузкаИзФайла()
+
+ Статистика = СтатисткаСопоставления();
+
+ ДанныеОСопоставление = СтатисткаСопоставления();
+
+ ТекстВсе = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Все (%1)'"), Статистика.Всего);
+
+ Элементы.СоздаватьЕслиНеСопоставлено.Заголовок = НСтр("ru = 'Несопоставленные ('") + Статистика.НеСопоставленных + ")";
+ Элементы.ОбновлятьСуществующие.Заголовок = НСтр("ru = 'Сопоставленные элементы ('") + Строка(Статистика.Сопоставленных) + ")";
+
+ СписокВыбора = Элементы.ФильтрТаблицаСопоставления.СписокВыбора;
+ СписокВыбора.Очистить();
+ СписокВыбора.Добавить("Все", ТекстВсе, Истина);
+ СписокВыбора.Добавить("Несопоставленные", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Несопоставленные (%1 из %2)'"), Статистика.НеСопоставленных, Статистика.Всего));
+ СписокВыбора.Добавить("Сопоставленные", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Сопоставленные (%1 из %2)'"), Статистика.Сопоставленных, Статистика.Всего));
+ СписокВыбора.Добавить("Неоднозначные", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Неоднозначные (%1 из %2)'"), Статистика.Неоднозначных, Статистика.Всего));
+
+ Если Статистика.Неоднозначных > 0 Тогда
+ Элементы.ОписаниеНеоднозначность.Видимость=Истина;
+ Элементы.ОписаниеНеоднозначность.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = '(неоднозначностей: %1)'"), Статистика.Неоднозначных);
+ Иначе
+ Элементы.ОписаниеНеоднозначность.Видимость=Ложь;
+ КонецЕсли;
+
+ Если НЕ ЗначениеЗаполнено(ФильтрТаблицаСопоставления) Тогда
+ ФильтрТаблицаСопоставления = "Несопоставленные";
+ КонецЕсли;
+
+ Если ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ УстановитьФильтрациюТаблицыСопоставления();
+ Иначе
+ УстановитьФильтрациюТаблицыСопоставления();
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция ГрупповоеИзменениеРеквизитовНаСервере(ВерхняяПозиция, НижняяПозиция)
+ МассивСсылок = новый Массив;
+ Для Позиция = ВерхняяПозиция По НижняяПозиция Цикл
+ Ячейка = ТаблицаОтчет.ПолучитьОбласть(Позиция, 2, Позиция, 2);
+ Если ЗначениеЗаполнено(Ячейка.ТекущаяОбласть.Расшифровка) Тогда
+ МассивСсылок.Добавить(Ячейка.ТекущаяОбласть.Расшифровка);
+ КонецЕсли;
+ КонецЦикла;
+ Возврат МассивСсылок;
+КонецФункции
+
+#Область РаботаСФайлами
+
+&НаКлиенте
+Процедура ПередатьФайлНаСервер(Результат, АдресВременногоХранилища, ИмяФайла, Параметр) Экспорт
+
+ Если Результат = Истина Тогда
+ Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(
+ ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ИмяФайла));
+ Если Расширение = "csv" ИЛИ Расширение = "xlsx" ИЛИ Расширение = "mxl" Тогда
+
+ ФоновоеЗадание = Ложь;
+ ЗагрузитьФайлСДаннымиВТабличныйДокументНаСервере(АдресВременногоХранилища, Расширение, ФоновоеЗадание);
+ Если ФоновоеЗадание Тогда
+ ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчика);
+ ПодключитьОбработчикОжидания("ФоновоеЗаданиеЗагрузкаФайлаНаКлиенте", 1, Истина);
+ ПараметрыОбработчика.МаксимальныйИнтервал = 5;
+ ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтотОбъект, ФоновоеЗаданиеИдентификатор);
+ Иначе
+ Далее(Неопределено);
+ КонецЕсли;
+ Иначе
+ ПоказатьПредупреждение(,НСтр("ru ='Не получилось загрузить данные из этого файла. Убедитесь в корректности данных в файле.'"));
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеВыбораРасширенияФайла(Результат, Параметр) Экспорт
+ Если ЗначениеЗаполнено(Результат) Тогда
+ АдресВоВременномХранилище = ЭтотОбъект.УникальныйИдентификатор;
+ СохранитьШаблонВоВременноеХранилище(Результат, АдресВоВременномХранилище);
+ ПолучитьФайл(АдресВоВременномХранилище, ИмяОбъектаСопоставления + "." + Результат, Истина);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура СохранитьШаблонВоВременноеХранилище(РасширениеФайла, АдресВоВременномХранилище)
+
+ ИмяФайла = ПолучитьИмяВременногоФайла(РасширениеФайла);
+ Если РасширениеФайла = "csv" тогда
+ СохранитьТаблицуВCSVФайл(ИмяФайла);
+ ИначеЕсли РасширениеФайла = "xlsx" тогда
+ ШаблонСДанными.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.xlsx);
+ Иначе
+ ШаблонСДанными.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.mxl);
+ КонецЕсли;
+ ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
+
+ АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, АдресВоВременномХранилище);
+КонецПроцедуры
+
+&НаСервереБезКонтекста
+Функция СформироватьИмяФайлаДляОбъектаМетаданных(ИмяОбъектаМетаданных)
+ МетаданныеСправочника = Метаданные.НайтиПоПолномуИмени(ИмяОбъектаМетаданных);
+
+ Если МетаданныеСправочника <> Неопределено Тогда
+ ИмяФайла = СокрЛП(МетаданныеСправочника.Синоним);
+ Если СтрДлина(ИмяФайла) = 0 Тогда
+ ИмяФайла = ИмяОбъектаМетаданных;
+ КонецЕсли;
+ Иначе
+ ИмяФайла = ИмяОбъектаМетаданных;
+ КонецЕсли;
+
+ ИмяФайла = СтрЗаменить(ИмяФайла,":","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,"*","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,"\","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,"/","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,"&","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,"<","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,">","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,"|","");
+ ИмяФайла = СтрЗаменить(ИмяФайла,"""","");
+
+ Возврат ИмяФайла;
+КонецФункции
+
+&НаКлиенте
+Процедура ПолучитьПутьКФайлуНачалоВыбора(РежимДиалога, ПутьКФайлу, ИмяФайла = "")
+
+ ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
+
+ ДиалогВыбораФайла.Фильтр = НСтр("ru='Книга Excel 2007 (*.xlsx)|*.xlsx|Текстовый документ c разделителями (*.csv)|*.csv|Табличный документ (*.mxl)|*.mxl'");
+ ДиалогВыбораФайла.Заголовок = Заголовок;
+ ДиалогВыбораФайла.ПредварительныйПросмотр = Ложь;
+ ДиалогВыбораФайла.Расширение = "csv";
+ ДиалогВыбораФайла.ИндексФильтра = 0;
+ ДиалогВыбораФайла.ПолноеИмяФайла = ИмяФайла;
+ ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Ложь;
+
+ Если ДиалогВыбораФайла.Выбрать() Тогда
+ ПутьКФайлу = ДиалогВыбораФайла.ПолноеИмяФайла;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеВопросаПроОтменитьСопоставление(Результат, Параметр) Экспорт
+
+ Если Результат = КодВозвратаДиалога.Да Тогда
+ Для каждого СтрокаТаблицы Из ТаблицаСопоставленияДанных Цикл
+ СтрокаТаблицы.ОбъектСопоставления = Неопределено;
+ СтрокаТаблицы.РезультатСопоставленияСтроки = "НеСопоставлен";
+ СтрокаТаблицы.СписокНеоднозначностей = Неопределено;
+ СтрокаТаблицы.ОписаниеОшибки = "";
+ КонецЦикла;
+ ПоказатьСтатистикуПоСопоставлениюЗагрузкаИзФайла();
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗагрузитьФайлСДаннымиВТабличныйДокументНаСервере(АдресВременногоХранилища, Расширение, ФоновоеЗадание = Ложь)
+ ИмяВременногоФайла=ПолучитьИмяВременногоФайла(Расширение);
+ ДвоичныеДанные = ПолучитьИЗВременногоХранилища(АдресВременногоХранилища);
+ ДвоичныеДанные.Записать(ИмяВременногоФайла);
+
+ ОчисткаШаблонСДанными();
+
+ ПараметрыВызоваСервера = Новый Структура();
+ ПараметрыВызоваСервера.Вставить("Расширение", Расширение);
+ ПараметрыВызоваСервера.Вставить("ШаблонСДанными", ШаблонСДанными);
+ ПараметрыВызоваСервера.Вставить("ИмяВременногоФайла", ИмяВременногоФайла);
+ ТаблицаИнформацияПоКолонкам = РеквизитФормыВЗначение("ИнформацияПоКолонкам");
+ ПараметрыВызоваСервера.Вставить("ИнформацияПоКолонкам", ТаблицаИнформацияПоКолонкам);
+
+ Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
+ Обработки.ЗагрузкаДанныхИзФайла.ЗагрузитьФайлВТаблицу(ПараметрыВызоваСервера, АдресВременногоХранилища);
+ ШаблонСДанными = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
+ Иначе
+ РезультатФоновогоЗадания = ДлительныеОперации.ЗапуститьВыполнениеВФоне(УникальныйИдентификатор,
+ "Обработки.ЗагрузкаДанныхИзФайла.ЗагрузитьФайлВТаблицу",
+ ПараметрыВызоваСервера,
+ НСтр("ru = 'Подсистема ЗагрузкаДанныхИзФайла: Выполнение серверного метода загрузка данных из файла'"));
+
+ Если РезультатФоновогоЗадания.ЗаданиеВыполнено Тогда
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ ШаблонСДанными = ПолучитьИзВременногоХранилища(ФоновоеЗаданиеАдресХранилища);
+ Иначе
+ ФоновоеЗадание = Истина;
+ ФоновоеЗаданиеИдентификатор = РезультатФоновогоЗадания.ИдентификаторЗадания;
+ ФоновоеЗаданиеАдресХранилища = РезультатФоновогоЗадания.АдресХранилища;
+ КонецЕсли;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПослеВызоваФормыИзменитьБланк(Результат, Параметр) Экспорт
+
+ Если Результат <> Неопределено Тогда
+ Если Результат.Количество() > 0 Тогда
+ Для Каждого СтрокаТаблицы Из Результат Цикл
+ ПараметрыОтбора = Новый Структура("ИмяКолонки", СтрокаТаблицы.ИмяКолонки);
+ НайденнаяСтрока = ИнформацияПоКолонкам.НайтиСтроки(ПараметрыОтбора)[0];
+ ЗаполнитьЗначенияСвойств(НайденнаяСтрока, СтрокаТаблицы);
+ КонецЦикла;
+ Иначе
+ СформироватьМакетПоТипуЗагрузки();
+ КонецЕсли;
+ ИнформацияПоКолонкам.Сортировать("Позиция Возр");
+ ИзменитьБланкПоИнформацииПоКолонкам();
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ИзменитьБланкПоИнформацииПоКолонкам(Бланк = Неопределено)
+
+ СПримечаниями = Ложь;
+ Если Бланк = Неопределено Тогда
+ Бланк = ШаблонСДанными;
+ СПримечаниями = Истина;
+ КонецЕсли;
+
+ ТаблицаКолонок = РеквизитФормыВЗначение("ИнформацияПоКолонкам");
+ ХранилищеСистемныхНастроек.Сохранить("ЗагрузкаДанныхИзФайла", ИмяОбъектаСопоставления, ТаблицаКолонок, НСтр("ru = 'Настройки бланка'"));
+ Бланк.Очистить();
+ Шапка = Обработки.ЗагрузкаДанныхИзФайла.ШапкаБланкаДляЗаполненияПоИнформацииПоКолонкам(ТаблицаКолонок, СПримечаниями);
+ Бланк.Вывести(Шапка);
+ ПоказатьИнформационнуюСтрокуПроОбязательныеКолонки();
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецОбласти
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РазрешенияНеоднозначностей/Form.form b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РазрешенияНеоднозначностей/Form.form
new file mode 100644
index 000000000..aa249a8ae
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РазрешенияНеоднозначностей/Form.form
@@ -0,0 +1,1242 @@
+
+
+
+ ru
+ Разрешение неоднозначности
+
+
+ ДекорацияЗаголовокПоискСсылок
+ 62
+
+ ru
+ Для строки "%1" найдено несколько совпадающих вариантов.
+Выберите правильный вариант, если он присутствует в списке.
+
+ true
+ true
+
+ true
+
+
+ ДекорацияЗаголовокПоискСсылокРасширеннаяПодсказка
+ 64
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияЗаголовокПоискСсылокКонтекстноеМеню
+ 63
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияЗаголовок
+ 29
+
+ ru
+ При сопоставление по колонке "%1" в программе было найдено несколько вариантов.
+Выберите правильный элемент в соответствие с данными из файла
+
+ true
+
+ true
+
+
+ ДекорацияЗаголовокРасширеннаяПодсказка
+ 31
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияЗаголовокКонтекстноеМеню
+ 30
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияЗагрузкаИзФайла
+ 32
+
+ ru
+ При сопоставлении элементов в программе с загружаемыми данными было найдено несколько совпадающих вариантов.
+Выберите элемент в соответствие с данными из файла. Для создания нового элемента нажмите "Создать новый элемент"
+
+ true
+ true
+
+ true
+
+
+ ДекорацияЗагрузкаИзФайлаРасширеннаяПодсказка
+ 34
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияЗагрузкаИзФайлаКонтекстноеМеню
+ 33
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантРазрешенияНеоднозначности
+ 26
+ true
+
+ true
+
+
+ ВариантРазрешенияНеоднозначности
+
+ None
+
+ OnChange
+ ВариантРазрешенияНеоднозначностиПриИзменении
+
+
+ ВариантРазрешенияНеоднозначностиРасширеннаяПодсказка
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантРазрешенияНеоднозначностиКонтекстноеМеню
+ 27
+ true
+
+ RadioButtonField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ru
+ Выбрать элемент в соответствие с данными из файла
+
+
+ 0
+
+
+
+
+ ru
+ Создать новый элемент
+
+
+ 1
+
+
+ Vertical
+
+
+
+ ВариантыВыбора
+ 40
+ true
+ true
+
+ true
+
+
+ ВариантыВыбора
+
+ None
+ Add
+ Change
+ Copy
+ Delete
+ EndEdit
+ HierarchicalList
+ List
+ Tree
+
+ ВариантыВыбораПредставление
+ 44
+ true
+ true
+
+ true
+
+
+ ВариантыВыбора.Представление
+
+
+ ВариантыВыбораПредставлениеРасширеннаяПодсказка
+ 46
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантыВыбораПредставлениеКонтекстноеМеню
+ 45
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ВариантыВыбораСсылка
+ 50
+ true
+
+ true
+
+
+ ВариантыВыбора.Ссылка
+
+
+ ВариантыВыбораСсылкаРасширеннаяПодсказка
+ 52
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантыВыбораСсылкаКонтекстноеМеню
+ 51
+ true
+
+ InputField
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ВариантыВыбораЗначение
+ 53
+ true
+ true
+
+ true
+
+
+ ВариантыВыбора.Значение
+
+
+ ВариантыВыбораЗначениеРасширеннаяПодсказка
+ 55
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантыВыбораЗначениеКонтекстноеМеню
+ 54
+ true
+
+ InputField
+ true
+ Auto
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ВариантыВыбораКоманднаяПанель
+ 42
+
+ ВариантыВыбораВыбрать
+ 56
+ true
+ true
+
+ true
+
+
+ ВариантыВыбораВыбратьРасширеннаяПодсказка
+ 57
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Выбрать
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ВариантыВыбораНовыйЭлемент
+ 58
+ true
+
+ true
+
+
+ ВариантыВыбораНовыйЭлементРасширеннаяПодсказка
+ 59
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.НовыйЭлемент
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ВариантыВыбораОткрыть
+ 60
+ true
+
+ true
+
+
+ ВариантыВыбораОткрытьРасширеннаяПодсказка
+ 61
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Открыть
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ Left
+ true
+
+
+ Selection
+ ВариантыВыбораВыбор
+
+
+ ВариантыВыбораСтрокаПоиска
+ 66
+
+ ВариантыВыбораСтрокаПоискаРасширеннаяПодсказка
+ 68
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантыВыбораСтрокаПоискаКонтекстноеМеню
+ 67
+ true
+
+ ВариантыВыбора
+
+ true
+
+
+
+ ВариантыВыбораСостояниеПросмотра
+ 69
+
+ ВариантыВыбораСостояниеПросмотраРасширеннаяПодсказка
+ 71
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантыВыбораСостояниеПросмотраКонтекстноеМеню
+ 70
+ true
+
+ ViewStatusAddition
+ ВариантыВыбора
+
+ true
+
+
+
+ ВариантыВыбораУправлениеПоиском
+ 72
+
+ ВариантыВыбораУправлениеПоискомРасширеннаяПодсказка
+ 74
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантыВыбораУправлениеПоискомКонтекстноеМеню
+ 73
+ true
+
+ SearchControlAddition
+ ВариантыВыбора
+
+ true
+
+
+
+ ВариантыВыбораРасширеннаяПодсказка
+ 43
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВариантыВыбораКонтекстноеМеню
+ 41
+ true
+
+ Tree
+ true
+ true
+ 70
+ true
+ 5
+ true
+ true
+ MultiRow
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ Auto
+ Auto
+ true
+ true
+ true
+ true
+ None
+ None
+ None
+ true
+
+
+ ЭлементыСправочника
+ 6
+ true
+
+ true
+
+
+ ЭлементыСправочника
+
+ None
+ Add
+ Change
+ Copy
+ CopyToClipboard
+ Delete
+ EndEdit
+ MoveDown
+ MoveUp
+ SelectAll
+
+ ЭлементыСправочникаПредставление
+ 37
+ true
+ true
+
+ true
+
+
+ ЭлементыСправочника.Представление
+
+
+ ЭлементыСправочникаПредставлениеРасширеннаяПодсказка
+ 39
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЭлементыСправочникаПредставлениеКонтекстноеМеню
+ 38
+ true
+
+ InputField
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ЭлементыСправочникаКоманднаяПанель
+ 8
+
+ Выбрать
+ 20
+ true
+ true
+
+ true
+
+
+ ВыбратьРасширеннаяПодсказка
+ 21
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Выбрать
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ЭлементыСправочникаНовыйЭлемент
+ 35
+
+ ru
+ Создать новый элемент
+
+ true
+ true
+
+ true
+
+
+ ЭлементыСправочникаНовыйЭлементРасширеннаяПодсказка
+ 36
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.НовыйЭлемент
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ЭлементыСправочникаНайти
+ 22
+ true
+ true
+
+ true
+
+
+ ЭлементыСправочникаНайтиРасширеннаяПодсказка
+ 23
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ЭлементыСправочника.StandardCommand.Find
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ЭлементыСправочникаОтменитьПоиск
+ 24
+ true
+ true
+
+ true
+
+
+ ЭлементыСправочникаОтменитьПоискРасширеннаяПодсказка
+ 25
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.ЭлементыСправочника.StandardCommand.CancelSearch
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+ Left
+ true
+
+
+ Selection
+ ЭлементыСправочникаВыбор
+
+
+ ЭлементыСправочникаСтрокаПоиска
+ 86
+
+ ЭлементыСправочникаСтрокаПоискаРасширеннаяПодсказка
+ 88
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЭлементыСправочникаСтрокаПоискаКонтекстноеМеню
+ 87
+ true
+
+ ЭлементыСправочника
+
+ true
+
+
+
+ ЭлементыСправочникаСостояниеПросмотра
+ 89
+
+ ЭлементыСправочникаСостояниеПросмотраРасширеннаяПодсказка
+ 91
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЭлементыСправочникаСостояниеПросмотраКонтекстноеМеню
+ 90
+ true
+
+ ViewStatusAddition
+ ЭлементыСправочника
+
+ true
+
+
+
+ ЭлементыСправочникаУправлениеПоиском
+ 92
+
+ ЭлементыСправочникаУправлениеПоискомРасширеннаяПодсказка
+ 94
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЭлементыСправочникаУправлениеПоискомКонтекстноеМеню
+ 93
+ true
+
+ SearchControlAddition
+ ЭлементыСправочника
+
+ true
+
+
+
+ ЭлементыСправочникаРасширеннаяПодсказка
+ 9
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЭлементыСправочникаКонтекстноеМеню
+ 7
+ true
+
+ true
+ true
+ true
+ true
+ 10
+ true
+ true
+ MultiRow
+ true
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ true
+ Auto
+ Auto
+ true
+ true
+ true
+ true
+ None
+ None
+ None
+ true
+
+
+
+ ГруппаДанныеИзФайла
+ 4
+
+ ОсновныеДанныеИзФайла
+ 16
+ true
+ true
+
+ true
+
+
+ ru
+ Основные загружаемые данные
+
+
+ ru
+ Основные данные из файла
+
+
+ ОсновныеДанныеИзФайлаРасширеннаяПодсказка
+ 17
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ПрочиеДанныеИзФайла
+ 18
+ true
+ true
+
+ true
+
+
+ ru
+ Прочие загружаемые данные
+
+
+ ru
+ Прочие данные из файла
+
+
+ ПрочиеДанныеИзФайлаРасширеннаяПодсказка
+ 19
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Collapsible
+ true
+ WeakSeparation
+ true
+ true
+ auto
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Загружаемые данные
+
+
+ ru
+ Группа данные из файла
+
+ true
+
+ ГруппаДанныеИзФайлаРасширеннаяПодсказка
+ 5
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ NormalSeparation
+ true
+ true
+ auto
+ Auto
+ Auto
+
+
+
+ ФормаКоманднаяПанель
+ -1
+ Left
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ 12
+ DontBlock
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ Объект
+ 1
+
+ DataProcessorObject.ЗагрузкаДанныхИзФайла
+
+
+ true
+
+
+ true
+
+ true
+
+
+ ЭлементыСправочника
+
+ ru
+ Элементы справочника
+
+ 3
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+ Представление
+
+ ru
+ Представление
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+
+ СписокДанных
+
+ ru
+ Список данных
+
+ 4
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+ Ключ
+
+ ru
+ Ключ
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Значение
+
+ ru
+ Значение
+
+ 2
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+
+ ВариантРазрешенияНеоднозначности
+
+ ru
+ Вариант разрешения неоднозначности
+
+ 2
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ КолонкиСопоставления
+
+ ru
+ Колонки сопоставления
+
+ 5
+
+ ValueList
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+ ВариантыВыбора
+
+ ru
+ Варианты выбора
+
+ 6
+
+ ValueTree
+
+
+ true
+
+
+ true
+
+
+ Представление
+
+ ru
+ Представление
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Ссылка
+
+ ru
+ Ссылка
+
+ 3
+
+ AnyRef
+
+
+ true
+
+
+ true
+
+
+
+ Значение
+
+ ru
+ Значение
+
+ 2
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+
+ Выбрать
+
+ ru
+ Выбрать
+
+ 1
+
+ ru
+ Выбрать
+
+
+ true
+
+
+
+ Выбрать
+
+
+ Auto
+ Auto
+
+
+ НовыйЭлемент
+
+ ru
+ Создать новый элемент
+
+ 2
+
+ ru
+ Новый элемент
+
+
+ true
+
+
+
+ НовыйЭлемент
+
+
+ Auto
+ Auto
+
+
+ Открыть
+
+ ru
+ Открыть
+
+ 3
+
+ ru
+ Открыть
+
+
+ true
+
+ Auto
+ Auto
+
+
+ СписокНеоднозначностей
+
+ ValueList
+
+
+
+ СтрокаИзТаблицы
+
+
+
+ ТипЗагрузки
+
+ String
+
+ 50
+
+
+
+
+ ПолноеИмяТабличнойЧасти
+
+ String
+
+
+
+
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РазрешенияНеоднозначностей/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РазрешенияНеоднозначностей/Module.bsl
new file mode 100644
index 000000000..569904251
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РазрешенияНеоднозначностей/Module.bsl
@@ -0,0 +1,228 @@
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
+ УстановитьОформлениеДанных();
+
+ Если Параметры.ТипЗагрузки = "ТабличнаяЧасть" И ЗначениеЗаполнено(Параметры.ПолноеИмяТабличнойЧасти) Тогда
+ СписокНеоднозначностей = Новый СписокЗначений;
+
+ МассивОбъекта = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов(Параметры.ПолноеИмяТабличнойЧасти);
+ Если МассивОбъекта[0] = "Документ" Тогда
+ МенеджерОбъекта = Документы[МассивОбъекта[1]];
+ ИначеЕсли МассивОбъекта[0] = "Справочник" Тогда
+ МенеджерОбъекта = Справочники[МассивОбъекта[1]];
+ Иначе
+ Отказ = Истина;
+ Возврат;
+ КонецЕсли;
+
+ МенеджерОбъекта.ЗаполнитьСписокНеоднозначностей(Параметры.ПолноеИмяТабличнойЧасти, СписокНеоднозначностей, Параметры.Имя, Параметры.ЗначенияЗагружаемыхКолонок);
+ Элементы.ВариантРазрешенияНеоднозначности.Видимость = Ложь;
+ Элементы.ДекорацияЗаголовок.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ДекорацияЗаголовок.Заголовок, Параметры.Имя);
+ Элементы.ДекорацияЗаголовок.Видимость = Истина;
+ Элементы.ДекорацияЗагрузкаИзФайла.Видимость = Ложь;
+ Элементы.ЭлементыСправочника.КоманднаяПанель.ПодчиненныеЭлементы.ЭлементыСправочникаНовыйЭлемент.Видимость = Ложь;
+ Для каждого Колонка Из Параметры.ЗначенияЗагружаемыхКолонок Цикл
+ КолонкиСопоставления.Добавить(Колонка.Ключ);
+ КонецЦикла;
+ Элементы.ДекорацияЗаголовокПоискСсылок.Видимость = Ложь;
+
+ ИначеЕсли Параметры.ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Элементы.ГруппаДанныеИзФайла.Видимость = Ложь;
+ Элементы.ДекорацияЗаголовок.Видимость = Ложь;
+ Элементы.ДекорацияЗагрузкаИзФайла.Видимость = Ложь;
+ Элементы.ДекорацияЗаголовокПоискСсылок.Видимость = Истина;
+ СписокНеоднозначностей = Параметры.СписокНеоднозначностей;
+ КолонкиСопоставления = Параметры.КолонкиСопоставления;
+ Иначе
+ СписокНеоднозначностей = Параметры.СписокНеоднозначностей;
+ КолонкиСопоставления = Параметры.КолонкиСопоставления;
+ Элементы.ДекорацияЗаголовок.Видимость = Ложь;
+ Элементы.ДекорацияЗагрузкаИзФайла.Видимость = Истина;
+ Элементы.ДекорацияЗаголовокПоискСсылок.Видимость = Ложь;
+ КонецЕсли;
+ Индекс = 0;
+
+ Если СписокНеоднозначностей.Количество() = 0 Тогда
+ Отказ = Истина;
+ Возврат;
+ КонецЕсли;
+
+ ВременнаяТЗ = РеквизитФормыВЗначение("ЭлементыСправочника");
+ ВременнаяТЗ.Колонки.Очистить();
+ МассивРеквизитов = Новый Массив;
+
+ ПервыйЭлемент = СписокНеоднозначностей.Получить(0).Значение;
+ МетаданныеОбъект = ПервыйЭлемент.Метаданные();
+
+ Для каждого Реквизит Из ПервыйЭлемент.Метаданные().Реквизиты Цикл
+ Если Реквизит.Тип.Типы().Найти(Тип("ХранилищеЗначения")) = Неопределено Тогда
+ ВременнаяТЗ.Колонки.Добавить(Реквизит.Имя, Реквизит.Тип, Реквизит.Представление());
+ МассивРеквизитов.Добавить(Новый РеквизитФормы(Реквизит.Имя, Реквизит.Тип, "ЭлементыСправочника", Реквизит.Представление()));
+ КонецЕсли;
+ КонецЦикла;
+
+ Для каждого Реквизит Из МетаданныеОбъект.СтандартныеРеквизиты Цикл
+ ВременнаяТЗ.Колонки.Добавить(Реквизит.Имя, Реквизит.Тип, Реквизит.Представление());
+ МассивРеквизитов.Добавить(Новый РеквизитФормы(Реквизит.Имя, Реквизит.Тип, "ЭлементыСправочника", Реквизит.Представление()));
+ КонецЦикла;
+
+ Для каждого Элемент из Параметры.СтрокаИзТаблицы Цикл
+ МассивРеквизитов.Добавить(Новый РеквизитФормы("фл_" + Элемент[Индекс], Новый ОписаниеТипов("Строка"),, Элемент[1]));
+ КонецЦикла;
+
+ ИзменитьРеквизиты(МассивРеквизитов);
+
+ Элементы.ЭлементыСправочника.Высота = СписокНеоднозначностей.Количество() + 3;
+
+ Для каждого Элемент из СписокНеоднозначностей Цикл
+ Строка = ВариантыВыбора.ПолучитьЭлементы().Добавить();
+ Строка.Представление = Строка(Элемент.Значение);
+ Строка.Ссылка = Элемент.Значение.Ссылка;
+ МетаданныеОбъект = Элемент.Значение.Метаданные();
+
+ Для каждого Реквизит Из МетаданныеОбъект.СтандартныеРеквизиты Цикл
+ Если Реквизит.Имя = "Код" ИЛИ Реквизит.Имя = "Наименование" Тогда
+ ПодСтрока = Строка.ПолучитьЭлементы().Добавить();
+ ПодСтрока.Представление = Реквизит.Представление() + ":";
+ ПодСтрока.Значение = Элемент.Значение[Реквизит.Имя];
+ ПодСтрока.Ссылка = Элемент.Значение.Ссылка;
+ КонецЕсли;
+ КонецЦикла;
+
+ Для каждого Реквизит Из МетаданныеОбъект.Реквизиты Цикл
+ ПодСтрока = Строка.ПолучитьЭлементы().Добавить();
+ ПодСтрока.Представление = Реквизит.Представление() + ":";
+ ПодСтрока.Значение = Элемент.Значение[Реквизит.Имя];
+ ПодСтрока.Ссылка = Элемент.Значение.Ссылка;
+ КонецЦикла;
+
+ КонецЦикла;
+
+ Для каждого Элемент из СписокНеоднозначностей Цикл
+ Строка = ЭлементыСправочника.Добавить();
+ Строка.Представление = Строка(Элемент.Значение);
+ Для Каждого Колонка Из ВременнаяТЗ.Колонки Цикл
+ Попытка
+ Строка[Колонка.Имя] = Элемент.Значение[Колонка.Имя];
+ Исключение
+ КонецПопытки;
+ КонецЦикла;
+ КонецЦикла;
+
+ Для Каждого Колонка Из ВременнаяТЗ.Колонки Цикл
+ НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ЭлементыСправочника);
+ НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
+ НовыйЭлемент.ПутьКДанным = "ЭлементыСправочника." + Колонка.Имя;
+ НовыйЭлемент.Заголовок = Колонка.Заголовок;
+ КонецЦикла;
+
+ Если Параметры.ТипЗагрузки = "ВставкаИзБуфераОбмена" Тогда
+ Разделитель = "";
+ СтрокаСоЗначениями = "";
+ Для каждого Элемент Из Параметры.СтрокаИзТаблицы Цикл
+ СтрокаСоЗначениями = СтрокаСоЗначениями + Разделитель + Элемент[2];
+ Разделитель = ", ";
+ КонецЦикла;
+ Если СтрДлина(СтрокаСоЗначениями) > 70 Тогда
+ СтрокаСоЗначениями = Лев(СтрокаСоЗначениями, 70) + "...";
+ КонецЕсли;
+ Элементы.ДекорацияЗаголовокПоискСсылок.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ДекорацияЗаголовокПоискСсылок.Заголовок,
+ СтрокаСоЗначениями);
+ Иначе
+ КоличествоСвернутыхЭлементов = 0;
+ Для каждого Элемент Из Параметры.СтрокаИзТаблицы Цикл
+
+ Если Параметры.СтрокаИзТаблицы.Количество() > 3 Тогда
+ Если КолонкиСопоставления.НайтиПоЗначению(Элемент[Индекс]) = Неопределено Тогда
+ ГруппаЭлементов = Элементы.ПрочиеДанныеИзФайла;
+ КоличествоСвернутыхЭлементов = КоличествоСвернутыхЭлементов + 1;
+ Иначе
+ ГруппаЭлементов = Элементы.ОсновныеДанныеИзФайла;
+ КонецЕсли;
+ Иначе
+ ГруппаЭлементов = Элементы.ОсновныеДанныеИзФайла;
+ КонецЕсли;
+
+ НовыйЭлемент2 = Элементы.Добавить(Элемент[Индекс] + "_знач", Тип("ПолеФормы"), ГруппаЭлементов);
+ НовыйЭлемент2.ПутьКДанным = "фл_"+Элемент[Индекс];
+ НовыйЭлемент2.Заголовок = Элемент[1];
+ НовыйЭлемент2.Вид = ВидПоляФормы.ПолеВвода;
+ НовыйЭлемент2.ТолькоПросмотр = Истина;
+ ЭтотОбъект["фл_" + Элемент[Индекс]] = Элемент[2];
+ КонецЦикла;
+ КонецЕсли;
+
+ Элементы.ПрочиеДанныеИзФайла.Заголовок = Элементы.ПрочиеДанныеИзФайла.Заголовок + " (" +Строка(КоличествоСвернутыхЭлементов) + ")";
+ ЭтотОбъект.Высота = Параметры.СтрокаИзТаблицы.Количество() + СписокНеоднозначностей.Количество() + 7;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура Выбрать(Команда)
+ Закрыть(Элементы.ВариантыВыбора.ТекущиеДанные.Ссылка);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура НовыйЭлемент(Команда)
+ Закрыть(Неопределено);
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовТаблицыЭлементыСправочника
+
+&НаКлиенте
+Процедура ЭлементыСправочникаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ Закрыть(Элементы.ЭлементыСправочника.ТекущиеДанные.Ссылка);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВариантРазрешенияНеоднозначностиПриИзменении(Элемент)
+ Элементы.ЭлементыСправочника.ТолькоПросмотр = Не ВариантРазрешенияНеоднозначности;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВариантыВыбораВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.Ссылка) И Поле.Имя="ВариантыВыбораЗначение" Тогда
+ СтандартнаяОбработка = Ложь;
+ ПоказатьЗначение(, Элемент.ТекущиеДанные.Ссылка);
+ ИначеЕсли ЗначениеЗаполнено(Элемент.ТекущиеДанные.Ссылка) И Поле.Имя="ВариантыВыбораПредставление" Тогда
+ СтандартнаяОбработка = Ложь;
+ Закрыть(Элементы.ВариантыВыбора.ТекущиеДанные.Ссылка);
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеФункции
+
+&НаСервере
+Процедура УстановитьОформлениеДанных()
+
+ УсловноеОформление.Элементы.Очистить();
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+
+ ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ВариантыВыбораЗначение");
+ ПолеОформления.Использование = Истина;
+
+ ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВариантыВыбора.Значение");
+ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
+ ЭлементОтбора.Использование = Истина;
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РасширениеФайла/Form.form b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РасширениеФайла/Form.form
new file mode 100644
index 000000000..6a26c94b6
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РасширениеФайла/Form.form
@@ -0,0 +1,238 @@
+
+
+
+ ru
+ Сохранение бланка для заполнения
+
+
+ ТипФайла
+ 1
+ true
+ true
+
+ true
+
+
+ ТипСохраняемогоФайла
+
+ Top
+
+ ТипФайлаРасширеннаяПодсказка
+ 3
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТипФайлаКонтекстноеМеню
+ 2
+ true
+
+ RadioButtonField
+ Enter
+ true
+ Left
+ true
+
+ 1
+
+
+ ru
+ Книга MS Excel 2007 (.xlsx)
+
+
+ 0
+
+
+
+
+ ru
+ Текстовый формат CSV (.csv)
+
+
+ 1
+
+
+
+
+ ru
+ Формат MXL (.mxl)
+
+
+ 2
+
+
+ Vertical
+
+
+
+ УстановитьРасширениеРаботыСФайлами
+ 6
+ true
+ true
+
+ true
+
+
+ УстановитьРасширениеРаботыСФайламиРасширеннаяПодсказка
+ 7
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.УстановитьДополнениеДляРаботыСФайлами
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаКоманднаяПанель
+ -1
+
+ ФормаВыбрать
+ 4
+ true
+ true
+
+ true
+
+
+ ФормаВыбратьРасширеннаяПодсказка
+ 5
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Выбрать
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+ Left
+ true
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ Abort
+ Cancel
+ Close
+ CustomizeForm
+ Help
+ Ignore
+ No
+ OK
+ RestoreValues
+ Retry
+ SaveValues
+ Yes
+ DontBlock
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ Объект
+ 1
+
+ DataProcessorObject.ЗагрузкаДанныхИзФайла
+
+
+ true
+
+
+ true
+
+ true
+
+
+ ТипСохраняемогоФайла
+
+ ru
+ Тип сохраняемого файла
+
+ 2
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ Выбрать
+
+ ru
+ Выбрать
+
+ 1
+
+ ru
+ Выбрать
+
+
+ true
+
+
+
+ Выбрать
+
+
+ Auto
+ Auto
+
+
+ УстановитьДополнениеДляРаботыСФайлами
+
+ ru
+ Установить дополнение для работы с файлами
+
+ 2
+
+ 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..052861066
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РасширениеФайла/Module.bsl
@@ -0,0 +1,39 @@
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура Выбрать(Команда)
+ Если ТипСохраняемогоФайла = 0 Тогда
+ Результат = "xlsx";
+ ИначеЕсли ТипСохраняемогоФайла = 1 Тогда
+ Результат = "csv";
+ Иначе
+ Результат = "mxl";
+ КонецЕсли;
+ Закрыть(Результат);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьДополнениеДляОблегченияРаботыСФайлами(Команда)
+ НачатьУстановкуРасширенияРаботыСФайлами(Неопределено);
+КонецПроцедуры
+
+#КонецОбласти
+
+
+
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РедактированиеБланка/Form.form b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РедактированиеБланка/Form.form
new file mode 100644
index 000000000..96e681b71
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РедактированиеБланка/Form.form
@@ -0,0 +1,920 @@
+
+
+
+ ru
+ Изменение бланка
+
+
+ Пояснение
+ 22
+
+ ru
+ Если регулярно требуется загрузка данных, то можно настроить наименование колонок, их отображение и порядок следования для упрощения загрузки.
+
+ true
+ true
+
+ true
+
+
+ ПояснениеРасширеннаяПодсказка
+ 24
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеКонтекстноеМеню
+ 23
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонок
+ 1
+ true
+ true
+
+ true
+
+
+ СписокКолонок
+
+ None
+ Add
+ CancelSearch
+ Change
+ Copy
+ Delete
+ EndEdit
+ Find
+ SelectAll
+ SortListAsc
+ SortListDesc
+
+ СписокКолонокГруппаНаименование
+ 20
+
+ СписокКолонокВидимость
+ 5
+ true
+ true
+
+ true
+
+
+ СписокКолонок.Видимость
+
+ None
+
+ СписокКолонокВидимостьРасширеннаяПодсказка
+ 7
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокВидимостьКонтекстноеМеню
+ 6
+ true
+
+ CheckBoxField
+ Auto
+ true
+ Left
+ true
+
+
+
+ СписокКолонокНаименование
+ 8
+ true
+ true
+
+ true
+
+
+ СписокКолонок.ПредставлениеКолонки
+
+
+ СписокКолонокНаименованиеРасширеннаяПодсказка
+ 10
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокНаименованиеКонтекстноеМеню
+ 9
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Список колонок группа наименование
+
+
+ ru
+ Список колонок группа наименование
+
+
+ СписокКолонокГруппаНаименованиеРасширеннаяПодсказка
+ 21
+ Label
+ true
+ true
+
+ Left
+
+
+ ColumnGroup
+
+ InCell
+ auto
+ true
+
+
+
+ СписокКолонокСиноним
+ 11
+ true
+ true
+
+ true
+
+
+ СписокКолонок.Синоним
+
+
+ СписокКолонокСинонимРасширеннаяПодсказка
+ 13
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокСинонимКонтекстноеМеню
+ 12
+ true
+
+ InputField
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ СписокКолонокКоманднаяПанель
+ 3
+
+ СписокКолонокУстановитьФлажки
+ 25
+ true
+ true
+
+ true
+
+
+ СписокКолонокУстановитьФлажкиРасширеннаяПодсказка
+ 26
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.УстановитьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СписокКолонокСнятьФлажки
+ 27
+ true
+ true
+
+ true
+
+
+ СписокКолонокСнятьФлажкиРасширеннаяПодсказка
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СнятьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СписокКолонокПереместитьВверх
+ 33
+ true
+ true
+
+ true
+
+
+ СписокКолонокПереместитьВверхРасширеннаяПодсказка
+ 34
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СписокКолонок.StandardCommand.MoveUp
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ СписокКолонокПереместитьВниз
+ 35
+ true
+ true
+
+ true
+
+
+ СписокКолонокПереместитьВнизРасширеннаяПодсказка
+ 36
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СписокКолонок.StandardCommand.MoveDown
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ФормаСброситьВсеНастройки
+ 29
+ true
+ true
+
+ true
+
+
+ ФормаСброситьВсеНастройкиРасширеннаяПодсказка
+ 30
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СброситьНастройки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ Left
+ true
+
+
+ OnActivateRow
+ СписокКолонокПриАктивизацииСтроки
+
+
+ СписокКолонокСтрокаПоиска
+ 49
+
+ СписокКолонокСтрокаПоискаРасширеннаяПодсказка
+ 51
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокСтрокаПоискаКонтекстноеМеню
+ 50
+ true
+
+ СписокКолонок
+
+ true
+
+
+
+ СписокКолонокСостояниеПросмотра
+ 52
+
+ СписокКолонокСостояниеПросмотраРасширеннаяПодсказка
+ 54
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокСостояниеПросмотраКонтекстноеМеню
+ 53
+ true
+
+ ViewStatusAddition
+ СписокКолонок
+
+ true
+
+
+
+ СписокКолонокУправлениеПоиском
+ 55
+
+ СписокКолонокУправлениеПоискомРасширеннаяПодсказка
+ 57
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКолонокУправлениеПоискомКонтекстноеМеню
+ 56
+ true
+
+ SearchControlAddition
+ СписокКолонок
+
+ true
+
+
+
+ СписокКолонокРасширеннаяПодсказка
+ 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
+ None
+ None
+ None
+ true
+
+
+
+ ОписаниеКолонки
+ 46
+ true
+ true
+
+ true
+
+
+ ОписаниеКолонки
+
+ Top
+
+ ОписаниеКолонкиРасширеннаяПодсказка
+ 48
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОписаниеКолонкиКонтекстноеМеню
+ 47
+ true
+
+ InputField
+ true
+ Enter
+ true
+ Left
+ true
+
+ true
+ 3
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ГруппаКоманднаяПанель
+ 14
+
+ ОК
+ 16
+ true
+ true
+
+ true
+
+
+ ОКРасширеннаяПодсказка
+ 17
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОК
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Закрыть
+ 31
+
+ ru
+ Отмена
+
+ true
+ true
+
+ true
+
+
+ ЗакрытьРасширеннаяПодсказка
+ 32
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Close
+ Normal
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа командная панель
+
+
+ ru
+ Группа командная панель
+
+
+ ГруппаКоманднаяПанельРасширеннаяПодсказка
+ 15
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Right
+
+
+
+ ФормаКоманднаяПанель
+ -1
+ Left
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ 50
+ LockOwner
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ Объект
+ 1
+
+ DataProcessorObject.ЗагрузкаДанныхИзФайла
+
+
+ true
+
+
+ true
+
+ true
+
+
+ СписокКолонок
+
+ ru
+ Список колонок
+
+ 2
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+ Видимость
+
+ ru
+ Видимость
+
+ 1
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ПредставлениеКолонки
+
+ ru
+ Колонка
+
+ 2
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Синоним
+
+ ru
+ Наименование колонки
+
+ 3
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ОбязательнаДляЗаполнения
+
+ ru
+ Обязательна для заполнения
+
+ 4
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Позиция
+
+ ru
+ Позиция
+
+ 5
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ИмяКолонки
+
+ ru
+ Имя колонки
+
+ 6
+
+ String
+
+ 150
+
+
+
+ true
+
+
+ true
+
+
+
+ Примечание
+
+ ru
+ Примечание
+
+ 7
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+
+ ИмяОбъектаСопоставления
+
+ ru
+ Имя объекта сопоставления
+
+ 3
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ОписаниеКолонки
+
+ ru
+ Описание колонки
+
+ 4
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ОК
+
+ ru
+ ОК
+
+ 2
+
+ ru
+ ОК
+
+
+ true
+
+
+
+ ОК
+
+
+ Auto
+ Auto
+
+
+ УстановитьФлажки
+
+ ru
+ Установить флажки
+
+ 3
+
+ ru
+ Установить флажки
+
+
+ true
+
+
+ StdPicture.CheckAll
+
+
+
+ УстановитьФлажки
+
+
+ Auto
+ Auto
+
+
+ СнятьФлажки
+
+ ru
+ Снять флажки
+
+ 4
+
+ ru
+ Снять флажки
+
+
+ true
+
+
+ StdPicture.UncheckAll
+
+
+
+ СнятьФлажки
+
+
+ Auto
+ Auto
+
+
+ СброситьНастройки
+
+ ru
+ Сбросить настройки
+
+ 5
+
+ ru
+ Сбросить настройки
+
+
+ true
+
+
+
+ СброситьНастройки
+
+
+ Auto
+ Auto
+
+
+ ИмяОбъектаСопоставления
+
+ String
+
+
+
+
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РедактированиеБланка/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РедактированиеБланка/Module.bsl
new file mode 100644
index 000000000..8a57732bd
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Forms/РедактированиеБланка/Module.bsl
@@ -0,0 +1,122 @@
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Параметры.Свойство("АвтоТест") Тогда
+ Возврат;
+ КонецЕсли;
+
+ УстановитьОформлениеДанных();
+
+ ИмяОбъектаСопоставления = Параметры.ИмяОбъектаСопоставления;
+ Если Параметры.Свойство("ИнформацияПоКолонкам") Тогда
+ СписокКолонок.Загрузить(Параметры.ИнформацияПоКолонкам.Выгрузить());
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура ОК(Команда)
+ ПозицияКолонки = 0;
+ Для Каждого СтрокаТаблицы Из СписокКолонок Цикл
+ ПозицияКолонки = ПозицияКолонки + 1;
+ СтрокаТаблицы.Позиция = ПозицияКолонки;
+ КонецЦикла;
+ Закрыть(СписокКолонок);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СброситьНастройки(Команда)
+ Оповещение = Новый ОписаниеОповещения("СброситьНастройкиЗавершение", ЭтотОбъект, ИмяОбъектаСопоставления);
+ ПоказатьВопрос(Оповещение, НСтр("ru = 'Установить настройки колонок в первоначальное состояние?'"), РежимДиалогаВопрос.ДаНет);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьФлажки(Команда)
+ Для каждого СтрокаТаблицы Из СписокКолонок Цикл
+ СтрокаТаблицы.Видимость = Истина;
+ КонецЦикла;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СнятьФлажки(Команда)
+ Для каждого СтрокаТаблицы Из СписокКолонок Цикл
+ Если Не СтрокаТаблицы.ОбязательнаДляЗаполнения Тогда
+ СтрокаТаблицы.Видимость = Ложь;
+ КонецЕсли;
+ КонецЦикла;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСписокКолонок
+
+&НаКлиенте
+Процедура СписокКолонокПриАктивизацииСтроки(Элемент)
+ Если Элемент.ТекущиеДанные <> Неопределено Тогда
+ ОписаниеКолонки = Элемент.ТекущиеДанные.Примечание;
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+&НаСервере
+Процедура УстановитьОформлениеДанных()
+
+ УсловноеОформление.Элементы.Очистить();
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+ ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокКолонокНаименование");
+ ПолеОформления.Использование = Истина;
+ ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокКолонок.ОбязательнаДляЗаполнения");
+ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ ЭлементОтбора.ПравоеЗначение =Истина;
+ ЭлементОтбора.Использование = Истина;
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,, Истина));
+
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+ ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокКолонокВидимость");
+ ПолеОформления.Использование = Истина;
+ ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокКолонок.ОбязательнаДляЗаполнения");
+ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ ЭлементОтбора.ПравоеЗначение =Истина;
+ ЭлементОтбора.Использование = Истина;
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
+
+ ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
+ ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
+ ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокКолонокСиноним");
+ ПолеОформления.Использование = Истина;
+ ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокКолонок.Синоним");
+ ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
+ ЭлементОтбора.Использование = Истина;
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Стандартное наименование'"));
+ ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НепринятаяВерсия);
+
+КонецПроцедуры
+
+&НаСервереБезКонтекста
+Процедура СброситьНастройкиНаСервере(ИмяОбъектаСопоставления)
+ ХранилищеСистемныхНастроек.Удалить("ЗагрузкаДанныхИзФайла", ИмяОбъектаСопоставления, Неопределено);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СброситьНастройкиЗавершение(РезультатВопроса, ИмяОбъектаСопоставления) Экспорт
+ Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
+ СброситьНастройкиНаСервере(ИмяОбъектаСопоставления);
+ СписокКолонок.Очистить();
+ Закрыть(СписокКолонок);
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ManagerModule.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ManagerModule.bsl
new file mode 100644
index 000000000..690de48c7
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ManagerModule.bsl
@@ -0,0 +1,1725 @@
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+
+// Сообщает все требуемые сведения о процедуре загрузки данных из файла.
+//
+// Возвращаемое значение
+// Структура - содержит структуру со свойствами:
+// * Представление - Строка - Представление в списке вариантов загрузки.
+// * ИмяМакетаСШаблоном - Строка - Название макета со структурой данных(необязательный параметр, значение по умолчанию - "ЗагрузкаДанныхИзФайла").
+// * ОбязательныеКолонкиМакета - Массив - Содержит список обязательных полей для заполнения.
+// * ЗаголовокКолонкиСопоставления - Строка - Представление колонки сопоставления в шапке таблицы сопоставления данных(необязательный параметр, значение по умолчанию формируются - "Справочник: <синоним справочника>").
+// * ИмяОбъекта - Строка - Имя Объекта
+//
+Функция ПараметрыЗагрузкиИзФайла(МетаданныеСправочника = Неопределено) Экспорт
+
+ ОбязательныеКолонкиМакета = Новый Массив;
+ //Для каждого Реквизит из МетаданныеСправочника.Реквизиты Цикл
+ // Если Реквизит.ПроверкаЗаполнения=ПроверкаЗаполнения.ВыдаватьОшибку тогда
+ // ОбязательныеКолонкиМакета.Добавить(Реквизит.Имя);
+ // КонецЕсли;
+ //КонецЦикла;
+
+ ПараметрыПоУмолчанию = Новый Структура;
+ ПараметрыПоУмолчанию.Вставить("Заголовок", МетаданныеСправочника.Представление());
+ ПараметрыПоУмолчанию.Вставить("ОбязательныеКолонки", ОбязательныеКолонкиМакета);
+ ПараметрыПоУмолчанию.Вставить("ТипДанныхКолонки", Новый Соответствие);
+ Возврат ПараметрыПоУмолчанию;
+КонецФункции
+
+// Сообщает все требуемые сведения о процедуре загрузки данных из файла в Табличную часть
+Функция ПараметрыЗагрузкиИзФайлаВТЧ(ИмяТабличнойЧасти) Экспорт
+
+ ПараметрыПоУмолчанию= новый Структура;
+ ПараметрыПоУмолчанию.Вставить("ОбязательныеКолонки",Новый Массив);
+ ПараметрыПоУмолчанию.Вставить("ИмяМакетаСШаблоном","ЗагрузкаИзФайла");
+ ПараметрыПоУмолчанию.Вставить("ИмяТабличнойЧасти", ИмяТабличнойЧасти);
+
+ Возврат ПараметрыПоУмолчанию;
+
+КонецФункции
+
+// Сообщает все требуемые сведения о процедуре загрузки данных из файла для внешней обработки.
+//
+// Параметры:
+// ИмяКоманды - Строка - Имя команды (Идентификатор)
+// СсылкаНаОбработку - Ссылка - Ссылка на обработку
+// ИмяМакетаСШаблоном - Строка - Имя шаблона с макетом колонок для загрузки данных
+// Возвращаемое значение
+// Структура - содержит структуру со свойствами:
+// * Представление - Строка - Представление в списке вариантов загрузки.
+// * ИмяМакетаСШаблоном - Строка - Название макета со структурой данных(необязательный параметр, значение по умолчанию - "ЗагрузкаДанныхИзФайла").
+// * ОбязательныеКолонкиМакета - Массив - Содержит список обязательных полей для заполнения.
+// * ЗаголовокКолонкиСопоставления - Строка - Представление колонки сопоставления в шапке таблицы сопоставления данных(необязательный параметр, значение по умолчанию формируются - "Справочник: <синоним справочника>").
+// * ИмяОбъекта - Строка - Имя Объекта
+//
+Функция ПараметрыЗагрузкиИзФайлаВнешняяОбработка(ИмяКоманды, СсылкаНаОбработку, ИмяМакетаСШаблоном) Экспорт
+ ОбязательныеКолонкиМакета = Новый Массив;
+
+ Если НЕ ЗначениеЗаполнено(ИмяМакетаСШаблоном) Тогда
+ ИмяМакетаСШаблоном = "ЗагрузкаИзФайла";
+ КонецЕсли;
+
+ ПараметрыЗагрузки = Новый Структура;
+ ПараметрыЗагрузки.Вставить("ИмяМакетаСШаблоном", ИмяМакетаСШаблоном);
+ ПараметрыЗагрузки.Вставить("ОбязательныеКолонкиМакета", ОбязательныеКолонкиМакета);
+ ПараметрыЗагрузки.Вставить("СоответствиеТипаДанныхКолонок", Новый Соответствие);
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
+ МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
+ ВнешнийОбъект = МодульДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(СсылкаНаОбработку);
+ КонецЕсли;
+
+ Попытка
+ ВнешнийОбъект.ОпределитьПараметрыЗагрузкиДанныхИзФайла(ИмяКоманды, ПараметрыЗагрузки);
+ Исключение
+ // Если функция определена во внешней обработке, то он переопределяет настройки по умолчанию.
+ КонецПопытки;
+
+ ПараметрыЗагрузки.Вставить("Макет", ВнешнийОбъект.МакетСШаблоном(ПараметрыЗагрузки.ИмяМакетаСШаблоном));
+
+ Возврат ПараметрыЗагрузки;
+КонецФункции
+
+// Создает таблицу значений со списком команд во внешней обработке для загрузки из файла
+//
+Процедура ЗадатьКомандыЗагрузки(ПараметрыРегистрации) Экспорт
+
+ ТаблицаКоманд = Новый ТаблицаЗначений;
+ ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
+ ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
+ ТаблицаКоманд.Колонки.Добавить("МакетСШаблоном", Новый ОписаниеТипов("Строка"));
+ ТаблицаКоманд.Колонки.Добавить("ПолноеИмяОбъектаМетаданных", Новый ОписаниеТипов("Строка"));
+
+ ПараметрыРегистрации.Вставить("КомандыЗагрузки", ТаблицаКоманд);
+
+КонецПроцедуры
+
+#Область СлужебныеФункции
+
+// Формирует информацию по колонкам на основание шаблона и описания типов
+//
+Процедура ИнициализироватьРежимПоискСсылок(ШаблонСДанными, ИнформацияПоКолонкам, ОписаниеТипов) Экспорт
+ СоответствиеКолонок = Новый Соответствие;
+ ЗаголовокКолонки = "";
+ Разделитель = "";
+
+ Для каждого Тип Из ОписаниеТипов.Типы() Цикл
+ ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
+ СтруктураОбъекта = РазложитьПолноеИмяОбъекта(ОбъектМетаданных.ПолноеИмя());
+
+ Для каждого Колонка Из ОбъектМетаданных.ВводПоСтроке Цикл
+ Если СоответствиеКолонок.Получить(Колонка.Имя) = Неопределено Тогда
+
+ ЗаголовокКолонки = ЗаголовокКолонки + Разделитель +Колонка.Имя;
+ Разделитель = ", ";
+ СоответствиеКолонок.Вставить(Колонка.Имя, Колонка.Имя);
+ КонецЕсли;
+ КонецЦикла;
+ Если СтруктураОбъекта.ТипОбъекта = "Документ" Тогда
+ ЗаголовокКолонки = ЗаголовокКолонки + Разделитель + "Представление";
+ КонецЕсли;
+
+ ЗаголовокКолонки = НСтр("ru = 'Введенные данные'");
+
+ КонецЦикла;
+
+ ДобавитьИнформациюПоКолонке(ИнформацияПоКолонкам, "Ссылки", ЗаголовокКолонки, Новый ОписаниеТипов("Строка"), Ложь, 1);
+
+ Шапка = ШапкаБланкаДляЗаполненияПоИнформацииПоКолонкам(ИнформацияПоКолонкам);
+ ШаблонСДанными.Очистить();
+ ШаблонСДанными.Вывести(Шапка);
+
+
+КонецПроцедуры
+
+// Выполняет автоматическое сопоставление данных для режима вставки данных из буфера обмена
+//
+Процедура СопоставитьЗначениеКолонкиАвто(ТаблицаСопоставления, ИмяКолонки) Экспорт
+
+ Типы = ТаблицаСопоставления.Колонки.ОбъектСопоставления.ТипЗначения.Типы();
+ ТекстЗапроса = "";
+ Для каждого Тип Из Типы Цикл
+ ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
+ СтруктураОбъекта = РазложитьПолноеИмяОбъекта(ОбъектМетаданных.ПолноеИмя());
+
+ МассивКолонок = Новый Массив;
+ Для каждого Поле Из ОбъектМетаданных.ВводПоСтроке Цикл
+ МассивКолонок.Добавить(Поле.Имя);
+ КонецЦикла;
+ Если СтруктураОбъекта.ТипОбъекта = "Документ" Тогда
+ МассивКолонок.Добавить("Ссылка");
+ КонецЕсли;
+
+ ТекстЗапроса = СтрокаЗапроса(ТекстЗапроса, СтруктураОбъекта.ТипОбъекта,
+ СтруктураОбъекта.НазваниеОбъекта, МассивКолонок);
+ КонецЦикла;
+
+ Для каждого Строка из ТаблицаСопоставления Цикл
+ Если НЕ ЗначениеЗаполнено(Строка[ИмяКолонки]) Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ТекстЗапроса) Тогда
+ Значение = ДокументПоПредставлению(Строка[ИмяКолонки], Типы);
+ Если Значение = Неопределено Тогда
+ Значение = Строка[ИмяКолонки];
+ КонецЕсли;
+ МассивСсылок = НайтиСсылкиПоПараметрамОтбора(ТекстЗапроса, Значение);
+ Если МассивСсылок.Количество() = 1 Тогда
+ Строка.ОбъектСопоставления = МассивСсылок[0];
+ Строка.РезультатСопоставленияСтроки = "СтрокаСопоставлена";
+ ИначеЕсли МассивСсылок.Количество() > 1 Тогда
+ СписокНеоднозначностей = Новый СписокЗначений;
+ Строка.СписокНеоднозначностей.ЗагрузитьЗначения(МассивСсылок);
+ Строка.РезультатСопоставленияСтроки = "Неоднозначность";
+ Иначе
+ Строка.РезультатСопоставленияСтроки = "НеСопоставлен";
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+функция ДокументПоПредставлению(Представление, Типы)
+
+ Для каждого Тип Из Типы Цикл
+ ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
+ СтруктураИмениОбъекта = РазложитьПолноеИмяОбъекта(ОбъектМетаданных.ПолноеИмя());
+ если СтруктураИмениОбъекта.ТипОбъекта <> "Документ" Тогда
+ Продолжить;
+ КонецЕсли;
+
+ СтандартныеСвойства = Новый Структура("ПредставлениеОбъекта, РасширенноеПредставлениеОбъекта, ПредставлениеСписка, РасширенноеПредставлениеСписка");
+ ЗаполнитьЗначенияСвойств(СтандартныеСвойства, ОбъектМетаданных);
+
+ Если ЗначениеЗаполнено(СтандартныеСвойства.ПредставлениеОбъекта) Тогда
+ ПредставлениеЭлемента = СтандартныеСвойства.ПредставлениеОбъекта;
+ ИначеЕсли ЗначениеЗаполнено(СтандартныеСвойства.РасширенноеПредставлениеОбъекта) Тогда
+ ПредставлениеЭлемента = СтандартныеСвойства.РасширенноеПредставлениеОбъекта;
+ Иначе
+ ПредставлениеЭлемента = ОбъектМетаданных.Представление();
+ КонецЕсли;
+
+ Если Найти(Представление, ПредставлениеЭлемента) > 0 Тогда
+ ПредставлениеНомерИДата = СокрЛП(Сред(Представление, СтрДлина(ПредставлениеЭлемента) + 1));
+ ПозицияОкончанияНомера = Найти(ПредставлениеНомерИДата, " ");
+ Номер = Лев(ПредставлениеНомерИДата, ПозицияОкончанияНомера - 1);
+ ПозицияОт = Найти(НРег(ПредставлениеНомерИДата), "от");
+ ПредставлениеДата = СокрЛ(Сред(ПредставлениеНомерИДата, ПозицияОт + 2));
+ ПозицияОкончаниеДаты = Найти(ПредставлениеДата, " ");
+ ДатаОкругленнаяДоДня = Лев(ПредставлениеДата, ПозицияОкончаниеДаты - 1) + " 00:00:00";
+ НомерДокумент = Номер;
+ ДатаДокумента = ПреобразоватьВДату(ДатаОкругленнаяДоДня);
+ КонецЕсли;
+ Документ = Документы[ОбъектМетаданных.Имя].НайтиПоНомеру(НомерДокумент, ДатаДокумента);
+
+ Если НЕ (Документ = Неопределено ИЛИ Документ = Документы[ОбъектМетаданных.Имя].ПустаяСсылка()) Тогда
+ Возврат Документ;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат Неопределено;
+
+КонецФункции
+
+Функция ПреобразоватьВДату(ДатаСтрока)
+
+ Попытка
+ Возврат Дата(ДатаСтрока);
+ Исключение
+ Возврат Неопределено;
+ КонецПопытки;
+
+КонецФункции
+
+Функция СтрокаЗапроса(ТекстЗапроса, ТипОбъекта, ИмяОбъекта, МассивКолонок)
+
+ Если МассивКолонок.Количество() > 0 Тогда
+ ТекстГде = "";
+ РазделительГде = "";
+ Для Каждого Поле из МассивКолонок Цикл
+ ТекстГде = ТекстГде + РазделительГде + ИмяОбъекта + "." + Поле + " = &ПараметрПоиска";
+ РазделительГде = " ИЛИ ";
+ КонецЦикла;
+
+ ТекстШаблон = "ВЫБРАТЬ %1.Ссылка КАК СсылкаНаОбъект ИЗ %2.%1 КАК %1 ГДЕ " + ТекстГде;
+ Если ЗначениеЗаполнено(ТекстЗапроса) Тогда
+ ТекстОбъеденитьВсе = Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС;
+ Иначе
+ ТекстОбъеденитьВсе = "";
+ КонецЕсли;
+ ТекстЗапроса = ТекстЗапроса + ТекстОбъеденитьВсе + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстШаблон, ИмяОбъекта, ТипОбъекта);
+ КонецЕсли;
+ Возврат ТекстЗапроса;
+
+КонецФункции
+
+Функция НайтиСсылкиПоПараметрамОтбора(ТекстЗапроса, Значение)
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("ПараметрПоиска", Значение);
+
+ ТаблицаРезультатов = Запрос.Выполнить().Выгрузить();
+ МассивРезультат = ТаблицаРезультатов.ВыгрузитьКолонку("СсылкаНаОбъект");
+ Возврат МассивРезультат;
+КонецФункции
+
+// Создает список справочников доступных для загрузки
+//
+Процедура СоздатьСписокСправочниковДляЗагрузки(СписокСправочниковДляЗагрузки) Экспорт
+
+ ТипСтрока = Новый ОписаниеТипов("Строка");
+ ИнформацияОСправочниках = Новый ТаблицаЗначений;
+ ИнформацияОСправочниках.Колонки.Добавить("ПолноеИмяОбъектаМетаданных", ТипСтрока);
+ ИнформацияОСправочниках.Колонки.Добавить("Представление", ТипСтрока);
+ ИнформацияОСправочниках.Колонки.Добавить("Параметры");
+
+ СправочникиИсключения = СписокСправочниковИсключений();
+
+ Для каждого ОбъектМетаданныхДляВывода Из Метаданные.Справочники Цикл
+ Если СправочникиИсключения.Найти(ОбъектМетаданныхДляВывода.Имя) = Неопределено Тогда
+ ИнформацияОТипеЗагрузки = Новый Структура();
+ ИнформацияОТипеЗагрузки.Вставить("Тип", "УниверсальнаяЗагрузка");
+ ИнформацияОТипеЗагрузки.Вставить("ПолноеИмяОбъектаМетаданных", ОбъектМетаданныхДляВывода.ПолноеИмя());
+
+ Строка = ИнформацияОСправочниках.Добавить();
+ Строка.ПолноеИмяОбъектаМетаданных = ОбъектМетаданныхДляВывода.ПолноеИмя();
+ Строка.Представление = ОбъектМетаданныхДляВывода.Представление();
+ Строка.Параметры = ИнформацияОТипеЗагрузки;
+ КонецЕсли;
+ КонецЦикла;
+
+ Для каждого Справочник из Метаданные.Справочники Цикл
+ Менеджер = Справочники[Справочник.Имя];
+
+ Если Справочник.Макеты.Найти("ЗагрузкаИзФайла") <> Неопределено тогда
+
+ ПараметрыЗагрузки = ПараметрыЗагрузкиИзФайла(Справочник);
+ Попытка
+ Менеджер.ОпределитьПараметрыЗагрузкиДанныхИзФайла(ПараметрыЗагрузки);
+ Исключение
+ КонецПопытки;
+
+ СправочникПредставление = ПараметрыЗагрузки.Заголовок;
+ ИнформацияОТипеЗагрузки = Новый Структура();
+ ИнформацияОТипеЗагрузки.Вставить("Тип", "ПрикладнаяЗагрузка");
+ ИнформацияОТипеЗагрузки.Вставить("ПолноеИмяОбъектаМетаданных", Справочник.ПолноеИмя());
+
+ Строка = ИнформацияОСправочниках.Найти(Справочник.ПолноеИмя(), "ПолноеИмяОбъектаМетаданных");
+ Если Строка = Неопределено Тогда
+ Строка = ИнформацияОСправочниках.Добавить();
+ Строка.ПолноеИмяОбъектаМетаданных = ОбъектМетаданныхДляВывода.ПолноеИмя();
+ Строка.Представление = СправочникПредставление;
+ Строка.Параметры = ИнформацияОТипеЗагрузки;
+ Иначе
+ Строка.Параметры = ИнформацияОТипеЗагрузки;
+ Строка.Представление = СправочникПредставление;
+ КонецЕсли;
+
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ДополнительныеОтчетыИОбработкиКоманды.Ссылка,
+ | ДополнительныеОтчетыИОбработкиКоманды.Идентификатор,
+ | ДополнительныеОтчетыИОбработкиКоманды.Представление,
+ | ДополнительныеОтчетыИОбработкиКоманды.Модификатор
+ |ИЗ
+ | Справочник.ДополнительныеОтчетыИОбработки.Команды КАК ДополнительныеОтчетыИОбработкиКоманды
+ |ГДЕ
+ | ДополнительныеОтчетыИОбработкиКоманды.ВариантЗапуска = &ВариантЗапуска
+ | И ДополнительныеОтчетыИОбработкиКоманды.Ссылка.Вид = &Вид
+ | И Не ДополнительныеОтчетыИОбработкиКоманды.Ссылка.ПометкаУдаления
+ | И ДополнительныеОтчетыИОбработкиКоманды.Ссылка.Публикация = &Публикация";
+ Запрос.УстановитьПараметр("ВариантЗапуска", Перечисления.СпособыВызоваДополнительныхОбработок.ЗагрузкаДанныхИзФайла);
+ Запрос.УстановитьПараметр("Вид", Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка);
+ Запрос.УстановитьПараметр("Публикация", Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется);
+ ТаблицаКоманд = Запрос.Выполнить().Выгрузить();
+
+ Для Каждого СтрокаТаблицы Из ТаблицаКоманд Цикл
+ ИнформацияОТипеЗагрузки = Новый Структура;
+ ИнформацияОТипеЗагрузки.Вставить("Тип", "ВнешняяЗагрузка");
+ ИнформацияОТипеЗагрузки.Вставить("ПолноеИмяОбъектаМетаданных", СтрокаТаблицы.Идентификатор);
+ ИнформацияОТипеЗагрузки.Вставить("Ссылка", СтрокаТаблицы.Ссылка);
+ ИнформацияОТипеЗагрузки.Вставить("МакетСШаблоном", СтрокаТаблицы.Модификатор);
+
+ Строка = ИнформацияОСправочниках.Добавить();
+ Строка.ПолноеИмяОбъектаМетаданных = ОбъектМетаданныхДляВывода.Имя;
+ Строка.Параметры = ИнформацияОТипеЗагрузки;
+ Строка.Представление = СтрокаТаблицы.Представление;
+ КонецЦикла;
+ КонецЕсли;
+
+ СписокСправочниковДляЗагрузки.Очистить();
+ Для каждого строка Из ИнформацияОСправочниках Цикл
+ СписокСправочниковДляЗагрузки.Добавить(Строка.Параметры, Строка.Представление);
+ КонецЦикла;
+
+ СписокСправочниковДляЗагрузки.СортироватьПоПредставлению();
+
+
+КонецПроцедуры
+
+Функция СписокСправочниковИсключений()
+
+ СправочникиИсключения = Новый Массив;
+
+ Для каждого Справочник из Метаданные.Справочники Цикл
+
+ Если СправочникСодержитРеквизитИсключение(Справочник) Тогда
+ Попытка
+ Менеджер = Справочники[Справочник.Имя];
+ Если Менеджер.ИспользоватьЗагрузкуДанныхИзФайла() Тогда
+ Продолжить;
+ КонецЕсли;
+ Исключение
+ // Функция разрешения загрузки не определена в модуле менеджера справочника.
+ КонецПопытки;
+ СправочникиИсключения.Добавить(Справочник.Имя);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат СправочникиИсключения;
+
+КонецФункции
+
+Функция СправочникСодержитРеквизитИсключение(Справочник)
+
+ Для каждого Реквизит Из Справочник.ТабличныеЧасти Цикл
+ Если Реквизит.Имя <> "КонтактнаяИнформация" И
+ Реквизит.Имя <> "ДополнительныеРеквизиты" И
+ Реквизит.Имя <> "СертификатыШифрования" Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Для каждого Реквизит Из Справочник.Реквизиты Цикл
+ Для каждого ТипРеквизита Из Реквизит.Тип.Типы() Цикл
+ Если ТипРеквизита = Тип("ХранилищеЗначения") Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+
+ Если ТРег(Лев(Справочник.Имя, 7)) = "Удалить" Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Возврат Ложь;
+
+КонецФункции
+
+// Заполняет таблицу значений Сопоставленные данные по данным из макета
+//
+Процедура ЗаполнитьТаблицуСопоставленияДаннымиИзШаблонаФон(ПараметрыВыгрузки, АдресХранилища) Экспорт
+
+ ШаблонСДанными = ПараметрыВыгрузки.ШаблонСДанными;
+ ТаблицаСопоставления = ПараметрыВыгрузки.ТаблицаСопоставления;
+ ИнформацияПоКолонкам = ПараметрыВыгрузки.ИнформацияПоКолонкам;
+
+ ТаблицаСопоставления.Очистить();
+ ЗаполнитьТаблицуСопоставленияЗагружаемымиДанными(ШаблонСДанными, ИнформацияПоКолонкам, ТаблицаСопоставления, Истина);
+
+ ПоместитьВоВременноеХранилище(ТаблицаСопоставления, АдресХранилища);
+
+КонецПроцедуры
+
+// Заполняет таблицу данными из загруженного шаблона
+//
+Процедура ЗаполнитьТаблицуСопоставленияДаннымиИзШаблона(ШаблонСДанными, ТаблицаСопоставления, ИнформацияПоКолонкам) Экспорт
+
+ ОпределитьПозицииКолонокВМакете(ШаблонСДанными, ИнформацияПоКолонкам);
+ ТаблицаСопоставления.Очистить();
+ ЗаполнитьТаблицуСопоставленияЗагружаемымиДанными(ШаблонСДанными, ИнформацияПоКолонкам, ТаблицаСопоставления);
+
+КонецПроцедуры
+
+Процедура ЗаполнитьТаблицуСопоставленияЗагружаемымиДанными(ШаблонСДанными, ТаблицаИнформацияПоКолонкам, ТаблицаСопоставления, ФоновоеЗадание = Ложь)
+
+ Для НомерСтроки = 2 По ШаблонСДанными.ВысотаТаблицы Цикл
+ НоваяСтрока = ТаблицаСопоставления.Добавить();
+ НоваяСтрока.Идентификатор = НомерСтроки - 1;
+ НоваяСтрока.РезультатСопоставленияСтроки = "НеСопоставлен";
+ Для НомерКолонки = 1 По ШаблонСДанными.ШиринаТаблицы Цикл
+ Ячейка = ШаблонСДанными.ПолучитьОбласть(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки).ТекущаяОбласть;
+
+ Колонка = НайтиИнформациюОКолонке(ТаблицаИнформацияПоКолонкам, "Позиция", НомерКолонки);
+
+ Если Колонка <> Неопределено Тогда
+ ИмяКолонки = Колонка.ИмяКолонки;
+
+ ТипДанных = ТипЗнч(НоваяСтрока[ИмяКолонки]);
+
+ Если ТипДанных <> Тип("Строка") И ТипДанных <> Тип("Булево") И ТипДанных <> Тип("Число") И ТипДанных <> Тип("Дата") И ТипДанных <> Тип("УникальныйИдентификатор") Тогда
+ ДанныеЯчейки = ЗначениеЯчейки(Колонка, Ячейка.Текст);
+ Иначе
+ ДанныеЯчейки = Ячейка.Текст;
+ КонецЕсли;
+ НоваяСтрока[ИмяКолонки] = ДанныеЯчейки;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ФоновоеЗадание Тогда
+ Процент = Окр(НомерСтроки *100 / ШаблонСДанными.ВысотаТаблицы);
+ МодульДлительныеОперации = ОбщегоНазначения.ОбщийМодуль("ДлительныеОперации");
+ МодульДлительныеОперации.СообщитьПрогресс(Процент);
+ КонецЕсли;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Функция НайтиИнформациюОКолонке(ТаблицаИнформацияПоКолонкам, ИмяКолонки, Значение)
+
+
+ Отбор = Новый Структура(ИмяКолонки, Значение);
+ НайденныеКолонки = ТаблицаИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ Колонка = Неопределено;
+ Если НайденныеКолонки.Количество() > 0 Тогда
+ Колонка = НайденныеКолонки[0];
+ КонецЕсли;
+
+ Возврат Колонка;
+КонецФункции
+
+Функция ЗначениеЯчейки(Колонка, ЗначениеЯчейки)
+
+ ДанныеЯчейки = "";
+ Для каждого ТипДанных Из Колонка.ТипКолонки.Типы() Цикл
+ Объект = Метаданные.НайтиПоТипу(ТипДанных);
+ ОписаниеОбъекта = РазложитьПолноеИмяОбъекта(Объект.ПолноеИмя());
+ Если ОписаниеОбъекта.ТипОбъекта = "Справочник" Тогда
+ Если НЕ Объект.Автонумерация И Объект.ДлинаКода > 0 Тогда
+ ДанныеЯчейки = Справочники[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки, Истина);
+ КонецЕсли;
+ Если НЕ ЗначениеЗаполнено(ДанныеЯчейки) Тогда
+ ДанныеЯчейки = Справочники[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоНаименованию(ЗначениеЯчейки, Истина);
+ КонецЕсли;
+ ИначеЕсли ОписаниеОбъекта.ТипОбъекта = "Перечисление" Тогда
+ Для каждого ЗначениеПеречисления Из Перечисления[ОписаниеОбъекта.НазваниеОбъекта] Цикл
+ Если Строка(ЗначениеПеречисления) = СокрЛП(ЗначениеЯчейки) Тогда
+ ДанныеЯчейки = ЗначениеПеречисления;
+ КонецЕсли;
+ КонецЦикла;
+ ИначеЕсли ОписаниеОбъекта.ТипОбъекта = "ПланСчетов" Тогда
+ ДанныеЯчейки = ПланыСчетов[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки);
+ Если ДанныеЯчейки.Пустая() Тогда
+ ДанныеЯчейки = ПланыСчетов[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоНаименованию(ЗначениеЯчейки, Истина);
+ КонецЕсли;
+ ИначеЕсли ОписаниеОбъекта.ТипОбъекта = "ПланВидовХарактеристик" Тогда
+ Если НЕ Объект.Автонумерация И Объект.ДлинаКода > 0 Тогда
+ ДанныеЯчейки = ПланыВидовХарактеристик[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоКоду(ЗначениеЯчейки, Истина);
+ КонецЕсли;
+ Если НЕ ЗначениеЗаполнено(ДанныеЯчейки) Тогда
+ ДанныеЯчейки = ПланыВидовХарактеристик[ОписаниеОбъекта.НазваниеОбъекта].НайтиПоНаименованию(ЗначениеЯчейки, Истина);
+ КонецЕсли;
+ Иначе
+ ДанныеЯчейки = Строка(ЗначениеЯчейки);
+ КонецЕсли;
+ Если ЗначениеЗаполнено(ДанныеЯчейки) Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат ДанныеЯчейки;
+
+КонецФункции
+
+Процедура ОпределитьПозицииКолонокВМакете(ШаблонСДанными, ИнформацияПоКолонкам)
+
+ ОбластьЗаголовка = ОбластьЗаголовкаШаблонаТаблицы(ШаблонСДанными);
+
+ СоответствиеКолонок = Новый Соответствие;
+ Для НомерКолонки = 1 По ОбластьЗаголовка.ШиринаТаблицы Цикл
+ Ячейка=ШаблонСДанными.ПолучитьОбласть(1, НомерКолонки, 1, НомерКолонки).ТекущаяОбласть;
+ ИмяКолонкиВМакете = Ячейка.Текст;
+ СоответствиеКолонок.Вставить(ИмяКолонкиВМакете, НомерКолонки);
+ КонецЦикла;
+
+ Для каждого Колонка Из ИнформацияПоКолонкам Цикл
+ Позиция = СоответствиеКолонок.Получить(Колонка.ПредставлениеКолонки);
+ Если Позиция <> Неопределено Тогда
+ Колонка.Позиция = Позиция;
+ Иначе
+ Колонка.Позиция = -1;
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+Функция ОбластьЗаголовкаШаблонаТаблицы(Шаблон)
+ МетаданныеОбластьЗаголовокТаблицы = Шаблон.Области.Найти("Шапка");
+
+ Если МетаданныеОбластьЗаголовокТаблицы = Неопределено тогда
+ ОбластьЗаголовокТаблицы = Шаблон.ПолучитьОбласть("R1");
+ Иначе
+ ОбластьЗаголовокТаблицы = Шаблон.ПолучитьОбласть("Шапка");
+ КонецЕсли;
+
+ Возврат ОбластьЗаголовокТаблицы;
+
+КонецФункции
+
+// Формирует макет табличного документа на основание реквизитов справочника
+//
+Процедура ИнформациюПоКолонкамИзРеквизитовСправочника(ИмяОбъектаСопоставления, ИнформацияПоКолонкам) Экспорт
+
+ ИнформацияПоКолонкам.Очистить();
+
+ МетаданныеСправочника= Метаданные.НайтиПоПолномуИмени(ИмяОбъектаСопоставления);
+ ОписаниеТиповСтрока = Новый ОписаниеТипов("Строка");
+
+ ТекстПримечания = "";
+
+ Позиция = 1;
+ Если НЕ МетаданныеСправочника.Автонумерация И МетаданныеСправочника.ДлинаКода > 0 Тогда
+ СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Код", Позиция);
+ Позиция = Позиция + 1;
+ КонецЕсли;
+
+ Если МетаданныеСправочника.ДлинаНаименования > 0 Тогда
+ СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Наименование", Позиция);
+ Позиция = Позиция + 1;
+ КонецЕсли;
+
+ Если МетаданныеСправочника.Иерархический Тогда
+ СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Родитель", Позиция);
+ Позиция = Позиция + 1;
+ КонецЕсли;
+
+ Если МетаданныеСправочника.Владельцы.Количество() > 0 Тогда
+ СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, "Владелец", Позиция);
+ Позиция = Позиция + 1;
+ КонецЕсли;
+
+ Для каждого Реквизит Из МетаданныеСправочника.Реквизиты Цикл
+
+ Если Реквизит.Тип.СодержитТип(Тип("ХранилищеЗначения")) тогда
+ Продолжить;
+ КонецЕсли;
+
+ ОписаниеТипаКолонки = "";
+
+ Если Реквизит.Тип.СодержитТип(Тип("Булево")) Тогда
+ ОписаниеТипаКолонки = НСтр("ru = 'Флаг, Да или 1 / Нет или 0'");
+ ИначеЕсли Реквизит.Тип.СодержитТип(Тип("Число")) Тогда
+ ОписаниеТипаКолонки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Число, Длина: %1, Точность: %2'"),
+ Строка(Реквизит.Тип.КвалификаторыЧисла.Разрядность),
+ Строка(Реквизит.Тип.КвалификаторыЧисла.РазрядностьДробнойЧасти));
+ ИначеЕсли Реквизит.Тип.СодержитТип(Тип("Строка")) Тогда
+ Если Реквизит.Тип.КвалификаторыСтроки.Длина > 0 Тогда
+ ДлинаСтроки = Строка(Реквизит.Тип.КвалификаторыСтроки.Длина);
+ ОписаниеТипаКолонки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Строка, макс. количество символов: %1'"), ДлинаСтроки);
+ Иначе
+ ОписаниеТипаКолонки = НСтр("ru = 'Строка неограниченой длины'");
+ КонецЕсли;
+ ИначеЕсли Реквизит.Тип.СодержитТип(Тип("Дата")) Тогда
+ ОписаниеТипаКолонки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = '%1'"),Строка(Реквизит.Тип.КвалификаторыДаты.ЧастиДаты));
+ ИначеЕсли Реквизит.Тип.СодержитТип(Тип("УникальныйИдентификатор")) Тогда
+ ОписаниеТипаКолонки = НСтр("ru = 'УникальныйИдентификатор'");
+ Иначе
+ //ПолучитьДанныеПоКолонкамСсылочногоТипа(Реквизит.Тип, ОписаниеТипаКолонки);
+ КонецЕсли;
+
+ ШиринаКолонки = ШиринаКолонкиПоТипу(Реквизит.Тип);
+ Подсказка = ?(ЗначениеЗаполнено(Реквизит.Подсказка), Реквизит.Подсказка, Реквизит.Представление()) + Символы.ПС + ОписаниеТипаКолонки;
+ ОбязательноеПоле = ?(Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку, Истина, Ложь);
+
+ СтрокаИнфоПроКолонки = ИнформацияПоКолонкам.Добавить();
+ СтрокаИнфоПроКолонки.ИмяКолонки = Реквизит.Имя;
+ СтрокаИнфоПроКолонки.ПредставлениеКолонки = Реквизит.Представление();
+ СтрокаИнфоПроКолонки.ТипКолонки = Реквизит.Тип;
+ СтрокаИнфоПроКолонки.ОбязательнаДляЗаполнения = ОбязательноеПоле;
+ СтрокаИнфоПроКолонки.Позиция = Позиция;
+ СтрокаИнфоПроКолонки.Видимость = Истина;
+ СтрокаИнфоПроКолонки.Примечание = Подсказка;
+ СтрокаИнфоПроКолонки.Ширина = ШиринаКолонки;
+
+ Позиция = Позиция + 1;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+Функция ШиринаКолонкиПоТипу(Тип)
+
+ ШиринаКолонки = 20;
+ Если Тип.СодержитТип(Тип("Булево")) Тогда
+ ШиринаКолонки = 3;
+ ИначеЕсли Тип.СодержитТип(Тип("Число")) Тогда
+ ШиринаКолонки = Тип.КвалификаторыЧисла.Разрядность + 1;
+ ИначеЕсли Тип.СодержитТип(Тип("Строка")) Тогда
+ Если Тип.КвалификаторыСтроки.Длина > 0 Тогда
+ ШиринаКолонки = ?(Тип.КвалификаторыСтроки.Длина > 20, 20, Тип.КвалификаторыСтроки.Длина);
+ Иначе
+ ШиринаКолонки = 20;
+ КонецЕсли;
+ ИначеЕсли Тип.СодержитТип(Тип("Дата")) Тогда
+ ШиринаКолонки = 12;
+ ИначеЕсли Тип.СодержитТип(Тип("УникальныйИдентификатор")) Тогда
+ ШиринаКолонки = 20;
+ Иначе
+ Для каждого ТипОбъекта Из Тип.Типы() Цикл
+ МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипОбъекта);
+ СтруктураОбъекта = РазложитьПолноеИмяОбъекта(МетаданныеОбъекта.ПолноеИмя());
+ Если СтруктураОбъекта.ТипОбъекта = "Справочник" Тогда
+ Если НЕ МетаданныеОбъекта.Автонумерация И МетаданныеОбъекта.ДлинаКода > 0 Тогда
+ ШиринаКолонки = МетаданныеОбъекта.ДлинаКода + 1;
+ КонецЕсли;
+ Если МетаданныеОбъекта.ДлинаНаименования > 0 Тогда
+ Если МетаданныеОбъекта.ДлинаНаименования > ШиринаКолонки Тогда
+ ШиринаКолонки = ?(МетаданныеОбъекта.ДлинаНаименования > 30, 30, МетаданныеОбъекта.ДлинаНаименования + 1);
+ КонецЕсли;
+ КонецЕсли;
+ ИначеЕсли СтруктураОбъекта.ТипОбъекта = "Перечисление" Тогда
+ ДлинаПредставления = СтрДлина(МетаданныеОбъекта.Представление());
+ ШиринаКолонки = ?( ДлинаПредставления > 30, 30, ДлинаПредставления + 1);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ Возврат ШиринаКолонки;
+
+КонецФункции
+
+Процедура СоздатьКолонкуСтандартныеРеквизиты(ИнформацияПоКолонкам, МетаданныеСправочника, ИмяКолонки, Позиция)
+
+ Реквизит = МетаданныеСправочника.СтандартныеРеквизиты[ИмяКолонки];
+ Представление = МетаданныеСправочника.СтандартныеРеквизиты[ИмяКолонки].Представление();
+ ТипДанных = МетаданныеСправочника.СтандартныеРеквизиты[ИмяКолонки].Тип.Типы()[0];
+ ОписаниеТипа = МетаданныеСправочника.СтандартныеРеквизиты[ИмяКолонки].Тип;
+
+ ШиринаКолонки = 11;
+
+ Если ТипДанных = Тип("Строка") Тогда
+ ПредставлениеТипа = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Строка (не более %1 символов)"), ОписаниеТипа.КвалификаторыСтроки.Длина);
+ ШиринаКолонки = ?(ОписаниеТипа.КвалификаторыСтроки.Длина < 30, ОписаниеТипа.КвалификаторыСтроки.Длина + 1, 30);
+ ИначеЕсли ТипДанных = Тип("Число") Тогда
+ ПредставлениеТипа = НСтр("ru = 'Число'");
+ Иначе
+ Если МетаданныеСправочника.СтандартныеРеквизиты[ИмяКолонки].Тип.Типы().Количество() = 1 Тогда
+ ПредставлениеТипа = Строка(ТипДанных);
+ Иначе
+ ПредставлениеТипа = "";
+ Разделитель = "";
+ Для каждого ТипДанные Из МетаданныеСправочника.СтандартныеРеквизиты[ИмяКолонки].Тип.Типы() Цикл
+ ПредставлениеТипа = ПредставлениеТипа + Разделитель + Строка(ТипДанные);
+ Разделитель = " или ";
+ КонецЦикла;
+ КонецЕсли;
+ КонецЕсли;
+ ТекстПримечания = Реквизит.Подсказка + Символы.ПС + ПредставлениеТипа;
+
+ ОбязательнаДляЗаполнения = ?(Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку, Истина, Ложь);
+ СтрокаИнфоПроКолонки = ИнформацияПоКолонкам.Добавить();
+ СтрокаИнфоПроКолонки.ИмяКолонки = ИмяКолонки;
+ СтрокаИнфоПроКолонки.ПредставлениеКолонки = Представление;
+ СтрокаИнфоПроКолонки.ТипКолонки = ОписаниеТипа;
+ СтрокаИнфоПроКолонки.ОбязательнаДляЗаполнения = ОбязательнаДляЗаполнения;
+ СтрокаИнфоПроКолонки.Позиция = Позиция;
+ СтрокаИнфоПроКолонки.Видимость = Истина;
+ СтрокаИнфоПроКолонки.Примечание = ТекстПримечания;
+ СтрокаИнфоПроКолонки.Ширина = ШиринаКолонки;
+
+КонецПроцедуры
+
+// Формирует ячейку макета по переданным параметрам
+//
+Процедура ЗаполнитьЯчейкуЗаголовкаМакета(Ячейка, Текст, Ширина, Подсказка, ОбязательноеПоле, Имя = "") Экспорт
+
+ Ячейка.ТекущаяОбласть.Текст = Текст;
+ Ячейка.ТекущаяОбласть.Имя = Имя;
+ Ячейка.ТекущаяОбласть.ПараметрРасшифровки = Имя;
+ Ячейка.ТекущаяОбласть.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
+ Ячейка.ТекущаяОбласть.ШиринаКолонки = Ширина;
+ Ячейка.ТекущаяОбласть.Примечание.Текст = Подсказка;
+ Если ОбязательноеПоле Тогда
+ Ячейка.ТекущаяОбласть.Шрифт = Новый Шрифт(,,Истина);
+ Иначе
+ Ячейка.ТекущаяОбласть.Шрифт = Новый Шрифт(,,Ложь);
+ КонецЕсли;
+
+КонецПроцедуры
+
+// Заполняет таблицу с полной информаций о колонках в макете. Информация используется для построения таблицы сопоставления
+Процедура СоздатьИнформациюПоКолонкамНаОснованиеШаблона(ОбластьЗаголовокТаблицы, ПараметрыЗагрузкиИзФайла, ИнформацияПоКолонкам) Экспорт
+
+ ИнформацияПоКолонкам.Очистить();
+ Если ПараметрыЗагрузкиИзФайла <> Неопределено Тогда
+ СоответствиеТипаДанныхКолонок = ПараметрыЗагрузкиИзФайла.ТипДанныхКолонки;
+ Иначе
+ СоответствиеТипаДанныхКолонок = новый Соответствие;
+ КонецЕсли;
+
+ Для НомерКолонки = 1 По ОбластьЗаголовокТаблицы.ШиринаТаблицы Цикл
+ Ячейка = ОбластьЗаголовокТаблицы.ПолучитьОбласть(1, НомерКолонки, 1, НомерКолонки).ТекущаяОбласть;
+
+ Если Найти(Ячейка.Имя, "R") > 0 И Найти(Ячейка.Имя, "C") > 0 Тогда
+ ИмяРеквизита = ?(ЗначениеЗаполнено(Ячейка.ПараметрРасшифровки), Ячейка.ПараметрРасшифровки, Ячейка.Текст);
+ ПредставлениеРеквизита = ?(ЗначениеЗаполнено(Ячейка.Текст), Ячейка.Текст, Ячейка.ПараметрРасшифровки);
+ Ассоциация = ?(ЗначениеЗаполнено(Ячейка.ПараметрРасшифровки), Ячейка.ПараметрРасшифровки, Ячейка.Текст);
+ Иначе
+ ИмяРеквизита = Ячейка.Имя;
+ ПредставлениеРеквизита = ?(ЗначениеЗаполнено(Ячейка.Текст), Ячейка.Текст, Ячейка.Имя);
+ Ассоциация = ?(ЗначениеЗаполнено(Ячейка.ПараметрРасшифровки), Ячейка.ПараметрРасшифровки, Ячейка.Имя);
+ КонецЕсли;
+
+ ТипДанныхКолонки = Новый ОписаниеТипов("Строка");
+ Если СоответствиеТипаДанныхКолонок <> Неопределено Тогда
+ ТипДанныхКолонкиПереопределенный = СоответствиеТипаДанныхКолонок.Получить(ИмяРеквизита);
+ Если ТипДанныхКолонкиПереопределенный <> Неопределено Тогда
+ ТипДанныхКолонки = ТипДанныхКолонкиПереопределенный;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ИмяРеквизита) Тогда
+ СтрокаИнфоПроКолонки = ИнформацияПоКолонкам.Добавить();
+ СтрокаИнфоПроКолонки.ИмяКолонки = ИмяРеквизита;
+ СтрокаИнфоПроКолонки.ПредставлениеКолонки = ПредставлениеРеквизита;
+ СтрокаИнфоПроКолонки.ТипКолонки = ТипДанныхКолонки;
+ СтрокаИнфоПроКолонки.ОбязательнаДляЗаполнения = Ячейка.Шрифт.Жирный;
+ СтрокаИнфоПроКолонки.Позиция = НомерКолонки;
+ СтрокаИнфоПроКолонки.Ассоциация = ?(ЗначениеЗаполнено(Ассоциация), Ассоциация, ИмяРеквизита);
+ СтрокаИнфоПроКолонки.Видимость = Истина;
+ СтрокаИнфоПроКолонки.Примечание = Ячейка.Примечание.Текст;
+ СтрокаИнфоПроКолонки.Ширина = Ячейка.ШиринаКолонки;
+ КонецЕсли;
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ДобавитьИнформациюПоКолонке(ИнформацияПоКолонкам, Имя, Представление, Тип, ОбязательнаДляЗаполнения, Позиция, Ассоциация = "")
+ СтрокаИнфоПроКолонки = ИнформацияПоКолонкам.Добавить();
+ СтрокаИнфоПроКолонки.ИмяКолонки = Имя;
+ СтрокаИнфоПроКолонки.ПредставлениеКолонки = Представление;
+ СтрокаИнфоПроКолонки.ТипКолонки = Тип;
+ СтрокаИнфоПроКолонки.ОбязательнаДляЗаполнения = ОбязательнаДляЗаполнения;
+ СтрокаИнфоПроКолонки.Позиция = Позиция;
+ СтрокаИнфоПроКолонки.Ассоциация = ?(ЗначениеЗаполнено(Ассоциация), Ассоциация, Имя);
+ СтрокаИнфоПроКолонки.Видимость = Истина;
+КонецПроцедуры
+
+// Создает таблицу значений по данным из шаблона и сохраняет ее во временное хранилище
+//
+Процедура ВыгрузитьДанныеДляТЧ(ШаблонСДанными, ИнформацияПоКолонкам, АдресЗагруженныхДанных) Экспорт
+
+ ЗагружаемыеДанные = Новый ТаблицаЗначений;
+
+ ОбластьЗаголовка = ОбластьЗаголовкаШаблонаТаблицы(ШаблонСДанными);
+
+ Для каждого Колонка Из ИнформацияПоКолонкам Цикл
+ ЗагружаемыеДанные.Колонки.Добавить(Колонка.ИмяКолонки, Новый ОписаниеТипов("Строка"), Колонка.ПредставлениеКолонки);
+ КонецЦикла;
+ ОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
+ ОписаниеТипаСтрока = Новый ОписаниеТипов("Строка");
+ ЗагружаемыеДанные.Колонки.Добавить("Идентификатор",ОписаниеТипаЧисло, "Идентификатор");
+ ЗагружаемыеДанные.Колонки.Добавить("РезультатСопоставленияСтроки",ОписаниеТипаСтрока, "Результат");
+ ЗагружаемыеДанные.Колонки.Добавить("ОписаниеОшибки",ОписаниеТипаСтрока, "Причина");
+
+ КорректировкаИдентификатора = 0;
+ Для НомерСтроки = 2 По ШаблонСДанными.ВысотаТаблицы Цикл
+ СтрокаТаблицыПустая = Истина;
+
+ НоваяСтрока = ЗагружаемыеДанные.Добавить();
+ НоваяСтрока.Идентификатор = НомерСтроки - 1 - КорректировкаИдентификатора;
+ Для НомерКолонки = 1 По ШаблонСДанными.ШиринаТаблицы Цикл
+
+ Ячейка = ШаблонСДанными.ПолучитьОбласть(НомерСтроки,НомерКолонки,НомерСтроки,НомерКолонки).ТекущаяОбласть;
+ НайденнаяКолонка = НайтиИнформациюОКолонке(ИнформацияПоКолонкам, "Позиция", НомерКолонки);
+ Если НайденнаяКолонка <> Неопределено Тогда
+ ИмяКолонки = НайденнаяКолонка.ИмяКолонки;
+ НоваяСтрока[ИмяКолонки] = Ячейка.Текст;
+
+ Если СтрокаТаблицыПустая Тогда
+ СтрокаТаблицыПустая = Не ЗначениеЗаполнено(Ячейка.Текст);
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Если СтрокаТаблицыПустая Тогда
+ ЗагружаемыеДанные.Удалить(НоваяСтрока);
+ КорректировкаИдентификатора = КорректировкаИдентификатора + 1;
+ КонецЕсли;
+ КонецЦикла;
+
+ АдресЗагруженныхДанных = ПоместитьВоВременноеХранилище(ЗагружаемыеДанные);
+КонецПроцедуры
+
+// Заполняет информацию по колонкам и формирует шаблон по табличной части документа
+//
+Процедура ИнициализироватьЗагрузкуВТабличнуюЧасть(ПолноеИмяТабличнойЧасти, ИмяМакетаСШаблоном, ИнформацияПоКолонкам, ШаблонСДанными, Отказ) Экспорт
+ ИмяОбъекта = РазложитьПолноеИмяОбъекта(ПолноеИмяТабличнойЧасти);
+
+ Попытка
+ ПараметрыЗагрузкиИзФайла = ПараметрыЗагрузкиИзФайлаВТЧ(ПолноеИмяТабличнойЧасти);
+ Исключение
+ КонецПопытки;
+
+ Если ИмяОбъекта.ТипОбъекта = "Документ" Тогда
+ МенеджерОбъекта = Документы[ИмяОбъекта.НазваниеОбъекта];
+ МетаданныеТЧ = Метаданные.Документы[ИмяОбъекта.НазваниеОбъекта].ТабличныеЧасти[ИмяОбъекта.ИмяТабличнойЧасти];
+
+ Попытка
+ МенеджерОбъекта.УстановитьПараметрыЗагрузкиИзФайлаВТЧ(ПараметрыЗагрузкиИзФайла);
+ Исключение
+ КонецПопытки;
+
+ ПараметрыЗагрузки = ПараметрыЗагрузкиИзФайла;
+ МакетМетаданные = Метаданные.Документы[ИмяОбъекта.НазваниеОбъекта].Макеты.Найти(ИмяМакетаСШаблоном);
+
+ МакетМетаданные= Метаданные.Документы[ИмяОбъекта.НазваниеОбъекта].Макеты.Найти("ЗагрузкаИзФайла"+ИмяОбъекта.ИмяТабличнойЧасти);
+ Если МакетМетаданные = Неопределено тогда
+ МакетМетаданные = Метаданные.Документы[ИмяОбъекта.НазваниеОбъекта].Макеты.Найти("ЗагрузкаИзФайла");
+ КонецЕсли;
+
+ Если МакетМетаданные <> Неопределено тогда
+ Макет = МенеджерОбъекта.ПолучитьМакет(МакетМетаданные.Имя);
+ Иначе
+ Отказ = Истина;
+ Возврат;
+ КонецЕсли;
+
+ ЗаголовокТаблицы = ОбластьЗаголовкаШаблонаТаблицы(Макет);
+ Если ИнформацияПоКолонкам.Количество() = 0 Тогда
+ СоздатьИнформациюПоКолонкамНаОснованиеШаблона(ЗаголовокТаблицы, Неопределено, ИнформацияПоКолонкам);
+
+ Для каждого Реквизит Из МетаданныеТЧ.Реквизиты Цикл
+
+ Колонка = НайтиИнформациюОКолонке(ИнформацияПоКолонкам, "ИмяКолонки", Реквизит.Имя);
+
+ Если Колонка <> Неопределено тогда
+ Колонка.ТипКолонки = Реквизит.Тип;
+ Если Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку тогда
+ Колонка.ОбязательнаДляЗаполнения = Истина;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
+ КонецЕсли;
+
+ ШаблонСДанными.Вывести(ЗаголовокТаблицы);
+ КонецЕсли;
+
+КонецПроцедуры
+
+// Создает шапку бланка по информации о колонках
+//
+Функция ШапкаБланкаДляЗаполненияПоИнформацииПоКолонкам(ИнформацияПоКолонкам, СПримечаниями = Истина) Экспорт
+
+ ТабличныйДокумент = новый ТабличныйДокумент;
+
+ ПростойШаблон = Обработки.ЗагрузкаДанныхИзФайла.ПолучитьМакет("ПростойШаблон");
+ ОбластьЗаголовок = ПростойШаблон.ПолучитьОбласть("Заголовок");
+ ИнформацияПоКолонкам.Сортировать("Позиция");
+
+ Для Позиция = 0 По ИнформацияПоКолонкам.Количество() -1 Цикл
+ Колонка = ИнформацияПоКолонкам.Получить(Позиция);
+
+ Если Колонка.Видимость = Истина Тогда
+ ОбластьЗаголовок.ТекущаяОбласть.Имя = Колонка.ИмяКолонки;
+ ОбластьЗаголовок.ТекущаяОбласть.Расшифровка = Колонка.Ассоциация;
+ Если ЗначениеЗаполнено(Колонка.Синоним) Тогда
+ ОбластьЗаголовок.Параметры.Заголовок = Колонка.Синоним;
+ Иначе
+ ОбластьЗаголовок.Параметры.Заголовок = Колонка.ПредставлениеКолонки;
+ КонецЕсли;
+ Если Колонка.ОбязательнаДляЗаполнения Тогда
+ ОбластьЗаголовок.ТекущаяОбласть.Шрифт = Новый Шрифт(,, Истина);
+ Иначе
+ ОбластьЗаголовок.ТекущаяОбласть.Шрифт = Новый Шрифт(,, Ложь);
+ КонецЕсли;
+ Если Колонка.Ширина = 0 Тогда
+ ОбластьЗаголовок.ТекущаяОбласть.ШиринаКолонки = ШиринаКолонкиПоТипу(Колонка.ТипКолонки);
+ Иначе
+ ОбластьЗаголовок.ТекущаяОбласть.ШиринаКолонки = Колонка.Ширина;
+ КонецЕсли;
+ Если СПримечаниями Тогда
+ ОбластьЗаголовок.ТекущаяОбласть.Примечание.Текст = Колонка.Примечание;
+ КонецЕсли;
+ ТабличныйДокумент.Присоединить(ОбластьЗаголовок);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат ТабличныйДокумент;
+КонецФункции
+
+// Возвращает полное имя объекта в виде структуры
+//
+Функция ПолноеИмяОбъектаТабличнаяЧасть(ИмяОбъекта) Экспорт
+
+ Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяОбъекта,".");
+ Если Результат.Количество() = 4 тогда
+ Объект = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
+ Если Объект <> Неопределено Тогда
+ Возврат ИмяОбъекта;
+ КонецЕсли;
+ ИначеЕсли Результат.Количество() = 3 тогда
+ Если Результат[2] <> "ТабличнаяЧасть" Тогда
+ ИмяОбъекта = Результат[0] + "." + Результат[1] + ".ТабличнаяЧасть." + Результат[2];
+ Объект = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
+ Если Объект <> Неопределено Тогда
+ Возврат ИмяОбъекта;
+ КонецЕсли;
+ ИначеЕсли Результат[1] = "ТабличнаяЧасть" Тогда
+ ИмяОбъекта = "Документ." + Результат[0] + ".ТабличнаяЧасть." + Результат[2];
+ Объект = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
+ Если Объект <> Неопределено Тогда
+ Возврат ИмяОбъекта;
+ КонецЕсли;
+ ИмяОбъекта = "Справочник." + Результат[0] + ".ТабличнаяЧасть." + Результат[2];
+ Объект = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
+ Если Объект <> Неопределено Тогда
+ Возврат ИмяОбъекта;
+ КонецЕсли;
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Возврат Неопределено;
+ ИначеЕсли Результат.Количество() = 2 тогда
+ Если Результат[0] <> "Документ" или Результат[0] <> "Справочник" Тогда
+ ИмяОбъекта = "Документ." + Результат[0] + ".ТабличнаяЧасть." + Результат[1];
+ Объект = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
+ Если Объект <> Неопределено Тогда
+ Возврат ИмяОбъекта;
+ КонецЕсли;
+ ИмяОбъекта = "Справочник." + Результат[0] + ".ТабличнаяЧасть." + Результат[1];
+ Объект = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
+ Если Объект <> Неопределено Тогда
+ Возврат ИмяОбъекта;
+ КонецЕсли;
+ Возврат Неопределено;
+ КонецЕсли;
+ НазваниеОбъектаМетаданных = Результат[0];
+ ИмяТабличнойЧасти = Результат[1];
+ ТипОбъектаМетаданных = Метаданные.Справочники.Найти(НазваниеОбъектаМетаданных);
+ Если ТипОбъектаМетаданных <> Неопределено Тогда
+ ТипОбъектаМетаданных = "Справочник";
+ Иначе
+ ТипОбъектаМетаданных = Метаданные.Документы.Найти(НазваниеОбъектаМетаданных);
+ Если ТипОбъектаМетаданных <> Неопределено Тогда
+ ТипОбъектаМетаданных = "Документ";
+ Иначе
+ Возврат Неопределено;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Неопределено;
+
+КонецФункции
+
+// Возвращает имя объекта в виде структуры
+//
+// Параметры:
+// ПолноеИмяОбъекта - Структура - Имя объекта
+// * ТипОбъекта - Строка - Тип объекта
+// * НазваниеОбъекта - Строка - Название объекта
+// * ИмяТабличнойЧасти - Строка - Имя табличной части
+Функция РазложитьПолноеИмяОбъекта(ПолноеИмяОбъекта) Экспорт
+ Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПолноеИмяОбъекта, ".");
+
+ ИмяОбъекта = Новый Структура;
+ ИмяОбъекта.Вставить("ТипОбъекта");
+ ИмяОбъекта.Вставить("НазваниеОбъекта");
+ ИмяОбъекта.Вставить("ИмяТабличнойЧасти");
+
+ Если Результат.Количество() = 2 Тогда
+ Если Результат[0] = "Документ" ИЛИ Результат[0] = "Справочник" ИЛИ Результат[0] = "БизнесПроцесс" ИЛИ
+ Результат[0] = "Перечисление" ИЛИ Результат[0] = "ПланВидовХарактеристик" ИЛИ Результат[0] = "ПланСчетов" Тогда
+ ИмяОбъекта.ТипОбъекта = Результат[0];
+ ИмяОбъекта.НазваниеОбъекта = Результат[1];
+ Иначе
+ ИмяОбъекта.ТипОбъекта = ОпределитьТипОбъектаМетаданныхПоИмени(Результат[0]);
+ ИмяОбъекта.НазваниеОбъекта = Результат[0];
+ ИмяОбъекта.ИмяТабличнойЧасти = Результат[1];
+ КонецЕсли;
+ ИначеЕсли Результат.Количество() = 3 Тогда
+ ИмяОбъекта.ТипОбъекта = Результат[0];
+ ИмяОбъекта.НазваниеОбъекта = Результат[1];
+ ИмяОбъекта.ИмяТабличнойЧасти = Результат[2];
+ ИначеЕсли Результат.Количество() = 4 Тогда
+ ИмяОбъекта.ТипОбъекта = Результат[0];
+ ИмяОбъекта.НазваниеОбъекта = Результат[1];
+ ИмяОбъекта.ИмяТабличнойЧасти = Результат[3];
+ ИначеЕсли Результат.Количество() = 1 Тогда
+ ИмяОбъекта.ТипОбъекта = ОпределитьТипОбъектаМетаданныхПоИмени(Результат[0]);
+ ИмяОбъекта.НазваниеОбъекта = Результат[0];
+ КонецЕсли;
+
+ Возврат ИмяОбъекта;
+
+КонецФункции
+
+Функция ОпределитьТипОбъектаМетаданныхПоИмени(Имя)
+ Для каждого Объект Из Метаданные.Справочники Цикл
+ Если Объект.Имя = Имя Тогда
+ Возврат "Справочник";
+ КонецЕсли;
+ КонецЦикла;
+
+ Для каждого Объект Из Метаданные.Документы Цикл
+ Если Объект.Имя = Имя Тогда
+ Возврат "Документ";
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Неопределено;
+КонецФункции
+
+// Загружает данные из файла в таблицу
+//
+Процедура ЗаполнитьТаблицуПоЗагруженнымДаннымИзФайла(ДанныеИзФайла, ШаблонСДанными, ИнформацияПоКолонкам) Экспорт
+
+ СтрокаЗаголовок= ДанныеИзФайла.Получить(0);
+ СоответствиеКолонок = Новый Соответствие;
+
+ Для каждого Колонка Из ДанныеИзФайла.Колонки Цикл
+ НайденнаяКолонка = НайтиИнформациюОКолонке(ИнформацияПоКолонкам, "Синоним", СтрокаЗаголовок[Колонка.Имя]);
+ Если НайденнаяКолонка = Неопределено Тогда
+ НайденнаяКолонка = НайтиИнформациюОКолонке(ИнформацияПоКолонкам, "ПредставлениеКолонки", СтрокаЗаголовок[Колонка.Имя]);
+ КонецЕсли;
+ Если НайденнаяКолонка <> Неопределено Тогда
+ СоответствиеКолонок.Вставить(НайденнаяКолонка.Позиция, Колонка.Имя);
+ КонецЕсли;
+ КонецЦикла;
+
+ Для Индекс= 1 По ДанныеИзФайла.Количество() - 1 Цикл
+ СтрокаТЗ = ДанныеИзФайла.Получить(Индекс);
+
+ Для НомерКолонки =1 По ШаблонСДанными.ШиринаТаблицы Цикл
+ КолонкаВТаблице = СоответствиеКолонок.Получить(НомерКолонки);
+ Колонка = ИнформацияПоКолонкам.Найти(НомерКолонки, "Позиция");
+ Если Колонка <> Неопределено И Колонка.Видимость = Ложь Тогда
+ Продолжить;
+ КонецЕсли;
+ Ячейка = ШаблонСДанными.ПолучитьОбласть(2, НомерКолонки, 2, НомерКолонки);
+ Если КолонкаВТаблице <> Неопределено тогда
+ Ячейка.ТекущаяОбласть.Текст = СтрокаТЗ[КолонкаВТаблице];
+ Ячейка.ТекущаяОбласть.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Обрезать;
+ Иначе
+ Ячейка.ТекущаяОбласть.Текст = "";
+ КонецЕсли;
+ Если НомерКолонки = 1 Тогда
+ ШаблонСДанными.Вывести(Ячейка);
+ иначе
+ ШаблонСДанными.Присоединить(Ячейка);
+ КонецЕсли;
+ КонецЦикла;
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Загружает файл в таблицу
+//
+Процедура ЗагрузитьФайлВТаблицу(ПараметрыВызоваСервера, АдресХранилища) Экспорт
+
+ Расширение = ПараметрыВызоваСервера.Расширение;
+ ШаблонСДанными = ПараметрыВызоваСервера.ШаблонСДанными;
+ ИмяВременногоФайла = ПараметрыВызоваСервера.ИмяВременногоФайла;
+ ИнформацияПоКолонкам = ПараметрыВызоваСервера.ИнформацияПоКолонкам;
+
+ Если Расширение = "xlsx" Тогда
+ ЗагрузитьФайлExcel2007ВТаблицу(ИмяВременногоФайла, ШаблонСДанными, ИнформацияПоКолонкам);
+ ИначеЕсли Расширение = "csv" Тогда
+ ЗагрузитьCSVФайлВТаблицу(ИмяВременногоФайла, ШаблонСДанными, ИнформацияПоКолонкам);
+ Иначе
+ ШаблонСДанными.Прочитать(ИмяВременногоФайла);
+ КонецЕсли;
+
+ АдресХранилища = ПоместитьВоВременноеХранилище(ШаблонСДанными, АдресХранилища);
+
+КонецПроцедуры
+
+#Область ЗагрузкаФайловФорматаExcel2007
+
+// Загружает файл формата Excel 2007 в шаблон
+//
+Процедура ЗагрузитьФайлExcel2007ВТаблицу(ПутьКФайлу, ШаблонСДанными, ИнформацияПоКолонкам) Экспорт
+ Файл = Новый Файл(ПутьКФайлу);
+ Если НЕ Файл.Существует() Тогда
+ Возврат;
+ КонецЕсли;
+
+ ФайлЭкзель = ПутьКФайлу;
+ ВременныйКаталог = КаталогВременныхФайлов() + ПолучитьРазделительПути() + "excel2007";
+ УдалитьФайлы(ВременныйКаталог);
+
+ РаспаковатьФайл(ФайлЭкзель, ВременныйКаталог);
+
+ ФайлСтрок = ВременныйКаталог + ПолучитьРазделительПути() + "xl" + ПолучитьРазделительПути() +"sharedStrings.xml";
+ СписокСтрок = ПрочитатьСписокСтрок(ФайлСтрок);
+
+ ФайлФорматов = ВременныйКаталог + ПолучитьРазделительПути() + "xl" + ПолучитьРазделительПути() +"styles.xml";
+ СписокФорматов = ПрочитатьСписокФорматов(ФайлФорматов);
+
+ НомерЛиста = 1;
+ ФайлЛиста = ВременныйКаталог + ПолучитьРазделительПути() + "xl" + ПолучитьРазделительПути() + "worksheets" + ПолучитьРазделительПути() + "sheet" + НомерЛиста + ".xml";
+ Файл = Новый Файл(ФайлЛиста);
+ Если НЕ Файл.Существует() Тогда
+ Возврат;
+ КонецЕсли;
+
+ МассивБукв = ПолучитьМассивБукв();
+ ДеревоДанных = ПолучитьДеревоДанных(ФайлЛиста);
+
+ Таблица = Новый ТаблицаЗначений;
+
+ //создаем колонки
+ Колонки = ДеревоДанных.Строки.Найти("dimension", "Объект", Истина);
+ Счетчик = 0;
+ Для Каждого Строка Из Колонки.Строки Цикл
+ Если Строка.Объект = "ref" Тогда
+ Диапозон = Строка.Значение;
+ //поиск максимального значения колонки
+ Счетчик = МассивБукв.Количество();
+ Пока Счетчик > 0 Цикл
+ Счетчик = Счетчик - 1;
+ Если Найти(Диапозон, МассивБукв[Счетчик]) > 0 Тогда
+ Для Индекс = 0 По Счетчик Цикл
+ Таблица.Колонки.Добавить(МассивБукв[Индекс]);
+ КонецЦикла;
+ Счетчик = 0;
+ КонецЕсли;
+ КонецЦикла;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ //читаем строки
+ СтрСтрок = ДеревоДанных.Строки.Найти("sheetData", "Объект", Истина);
+ Для Каждого Строка Из СтрСтрок.Строки Цикл
+ НоваяСтрока = Таблица.Добавить();
+
+ Для Каждого Колонка Из Строка.Строки Цикл
+ Если Колонка.Объект <> "c" Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ЗначениеЯчейки = Неопределено;
+
+ СтрЗначение = Колонка.Строки.Найти("v", "Объект");
+ Если СтрЗначение <> Неопределено Тогда
+ ЗначениеЯчейки = СтрЗначение.Значение;
+ КонецЕсли;
+
+ СтрЗначение = Колонка.Строки.Найти("t", "Объект");
+ Если СтрЗначение <> Неопределено И СтрЗначение.Значение = "s" И ЗначениеЯчейки <> Неопределено Тогда
+ Позиция = Число(ЗначениеЯчейки);
+ Если СписокСтрок.Количество() > Позиция Тогда
+ ЗначениеЯчейки = СписокСтрок.Получить(Позиция).Значение;
+ КонецЕсли;
+ КонецЕсли;
+
+
+ сОбъект = Колонка.Строки.Найти("s", "Объект");
+ Если сОбъект <> Неопределено Тогда
+ СтрЗначение = СтрокуВЧисло(Колонка.Строки.Найти("s", "Объект").Значение, -1);
+ Если СтрЗначение >= 0 Тогда
+ ИмяФормата = СписокФорматов.Получить(СтрЗначение);
+ Если ИмяФормата = "Дата" ИЛИ ИмяФормата = "ДатаВремя" ИЛИ ИмяФормата = "Время" Тогда
+ ПозицияРазделителя = Найти(ЗначениеЯчейки, ".");
+ Если ПозицияРазделителя > 0 Тогда
+ КоличествоДней = СтрокуВЧисло(Лев(ЗначениеЯчейки, ПозицияРазделителя - 1)) * 86400 - 2 * 86400;
+ КоличествоСекунд = СтрокуВЧисло(Сред(ЗначениеЯчейки, ПозицияРазделителя + 1)) - 2 * 60;
+ Иначе
+ КоличествоДней = СтрокуВЧисло(ЗначениеЯчейки) * 86400 - 2 * 86400;
+ КоличествоСекунд = 0;
+ КонецЕсли;
+ ПолученнаяДата = Дата(1900, 1, 1, 0, 0, 0) + КоличествоДней + КоличествоСекунд;
+ Если ИмяФормата = "Дата" Тогда
+ ЗначениеЯчейки = Формат(ПолученнаяДата, "ДЛФ=D");
+ ИначеЕсли ИмяФормата = "ДатаВремя" Тогда
+ ЗначениеЯчейки = Формат(ПолученнаяДата, "ДЛФ=DT");
+ ИначеЕсли ИмяФормата = "Время" Тогда
+ ЗначениеЯчейки = Формат(ПолученнаяДата, "ДЛФ=T");
+ КонецЕсли;
+ ИначеЕсли ИмяФормата = "Число" Тогда
+ ЗначениеЯчейки = СтрокуВЧисло(ЗначениеЯчейки);
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ //поиск колонки
+ СтрЗначение = Колонка.Строки.Найти("r", "Объект");
+ Если СтрЗначение <> Неопределено Тогда
+ ИмяКолонки = СтрЗначение.Значение;
+ КонецЕсли;
+ ИндексСтроки = Неопределено;
+ Счетчик = МассивБукв.Количество();
+ Пока Счетчик > 0 Цикл
+ Счетчик = Счетчик - 1;
+ Если Найти(ИмяКолонки, МассивБукв[Счетчик])>0 Тогда
+ ИндексСтроки = Счетчик;
+ Счетчик = 0;
+ КонецЕсли;
+ КонецЦикла;
+
+ НоваяСтрока[МассивБукв[ИндексСтроки]] = ЗначениеЯчейки;
+ КонецЦикла;
+ КонецЦикла;
+
+ ЗаполнитьТаблицуПоЗагруженнымДаннымИзФайла(Таблица, ШаблонСДанными, ИнформацияПоКолонкам);
+
+КонецПроцедуры
+
+Процедура РаспаковатьФайл(Файл, Каталог)
+ Зип = Новый ЧтениеZipФайла;
+ Зип.Открыть(Файл);
+ Зип.ИзвлечьВсе(Каталог, РежимВосстановленияПутейФайловZIP.Восстанавливать);
+КонецПроцедуры
+
+Функция ПолучитьМассивБукв()
+ МассивБукв = Новый Массив;
+ МассивБукв.Добавить("A");
+ МассивБукв.Добавить("B");
+ МассивБукв.Добавить("C");
+ МассивБукв.Добавить("D");
+ МассивБукв.Добавить("E");
+ МассивБукв.Добавить("F");
+ МассивБукв.Добавить("G");
+ МассивБукв.Добавить("H");
+ МассивБукв.Добавить("I");
+ МассивБукв.Добавить("J");
+ МассивБукв.Добавить("K");
+ МассивБукв.Добавить("L");
+ МассивБукв.Добавить("M");
+ МассивБукв.Добавить("N");
+ МассивБукв.Добавить("O");
+ МассивБукв.Добавить("P");
+ МассивБукв.Добавить("Q");
+ МассивБукв.Добавить("R");
+ МассивБукв.Добавить("S");
+ МассивБукв.Добавить("T");
+ МассивБукв.Добавить("U");
+ МассивБукв.Добавить("V");
+ МассивБукв.Добавить("W");
+ МассивБукв.Добавить("X");
+ МассивБукв.Добавить("Y");
+ МассивБукв.Добавить("Z");
+
+ Возврат МассивБукв;
+КонецФункции
+
+Функция ПрочитатьСписокСтрок(ФайлСтрок)
+ Строки = Новый СписокЗначений;
+
+ Хмл = Новый ЧтениеXML;
+ Хмл.ОткрытьФайл(ФайлСтрок);
+
+ Пока Хмл.Прочитать() Цикл
+ Если Хмл.ТипУзла = ТипУзлаXML.Текст Тогда
+ Строки.Добавить(Хмл.Значение);
+ КонецЕсли;
+ КонецЦикла;
+
+ Хмл.Закрыть();
+
+ Возврат Строки;
+КонецФункции
+
+Функция ПолучитьДеревоДанных(Файл)
+
+ ДеревоДанных = Новый ДеревоЗначений;
+ ДеревоДанных.Колонки.Добавить("Объект");
+ ДеревоДанных.Колонки.Добавить("Значение");
+
+ ЧтениеXML = Новый ЧтениеXML;
+ ЧтениеXML.ОткрытьФайл(Файл);
+
+ ТекЭлемент = Неопределено;
+ ТекБаза = Неопределено;
+
+ Пока ЧтениеXML.Прочитать() Цикл
+ Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
+ РежимЗагрузки = ЧтениеXML.Имя;
+
+ Если ТекЭлемент = Неопределено Тогда
+ ТекЭлемент = ДеревоДанных.Строки.Добавить();
+ ТекЭлемент.Объект = РежимЗагрузки;
+ Иначе
+ ТекЭлемент = ТекЭлемент.Строки.Добавить();
+ ТекЭлемент.Объект = РежимЗагрузки;
+ КонецЕсли;
+
+ ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
+ Если ТекЭлемент = Неопределено Тогда
+ ТекЭлемент = Неопределено;
+ Иначе
+ ТекЭлемент = ТекЭлемент.Родитель;
+ КонецЕсли;
+ ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
+ ТекЭлемент.Значение = ЧтениеXML.Значение;
+ КонецЕсли;
+
+ Для Индекс = 0 По ЧтениеXML.КоличествоАтрибутов() - 1 Цикл
+ Строка = ТекЭлемент.Строки.Добавить();
+ Строка.Объект = ЧтениеXML.ИмяАтрибута(Индекс);
+ Строка.Значение = ЧтениеXML.ЗначениеАтрибута(Индекс);
+ КонецЦикла;
+ КонецЦикла;
+
+ ЧтениеXML.Закрыть();
+
+ Возврат ДеревоДанных;
+КонецФункции
+
+Функция ПрочитатьСписокФорматов(ФайлФорматов)
+
+ Хмл = Новый ЧтениеXML;
+ Хмл.ОткрытьФайл(ФайлФорматов);
+ ОписаниеФорматов = Новый Соответствие;
+ Позиция = -1;
+
+ Пока Хмл.Прочитать() Цикл
+ Если Хмл.ТипУзла = ТипУзлаXML.НачалоЭлемента и Хмл.Имя = "xf" Тогда
+ // Описание формата даты http://social.msdn.microsoft.com/Forums/office/en-US/e27aaf16-b900-4654-8210-83c5774a179c/xlsx-numfmtid-predefined-id-14-doesnt-match?forum=oxmlsdk
+ Если Хмл.ЗначениеАтрибута("numFmtId") <> Неопределено Тогда
+ НомерФормата = Число(Хмл.ЗначениеАтрибута("numFmtId"));
+ Если НомерФормата > 0 И НомерФормата < 12 Тогда
+ ОписаниеФорматов.Вставить(Позиция, "Число");
+ ИначеЕсли НомерФормата > 13 И НомерФормата <= 17 Тогда
+ ОписаниеФорматов.Вставить(Позиция, "Дата");
+ ИначеЕсли НомерФормата >= 18 И НомерФормата <= 21 Тогда
+ ОписаниеФорматов.Вставить(Позиция, "Время");
+ ИначеЕсли НомерФормата = 22 ИЛИ НомерФормата = 165 ИЛИ НомерФормата = 166 Тогда
+ ОписаниеФорматов.Вставить(Позиция, "ДатаВремя");
+ Иначе
+ ОписаниеФорматов.Вставить(Позиция, "Строка");
+ КонецЕсли;
+ КонецЕсли;
+ Позиция = Позиция + 1;
+ КонецЕсли;
+ КонецЦикла;
+
+ Хмл.Закрыть();
+
+ Возврат ОписаниеФорматов;
+
+КонецФункции
+
+// Превращает строку в число без вызова исключений. Стандартная функция преобразования
+// Число() строго контролирует отсутствие каких либо символов кроме числовых.
+//
+Функция СтрокуВЧисло(Значение, ЗначениеПоУмолчанию = 0)
+
+ Если Значение ="0" Тогда
+ // Представление значения по умолчанию обрабатываем отдельно
+ Результат = 0
+ Иначе
+ СтепеньЧисла = 0;
+ Позиция = Найти(Значение, "E");
+ Если Позиция > 0 Тогда
+ СтепеньЧисла = Сред(Значение, Позиция + 1);
+ Значение = Лев(Значение, Позиция - 1);
+ КонецЕсли;
+
+ ЦелевойТип = Новый ОписаниеТипов("Число");
+ Результат = ЦелевойТип.ПривестиЗначение(Значение);
+
+ Если СтепеньЧисла <> 0 Тогда
+ Результат = Результат * Pow(10, СтепеньЧисла);
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат ?(Результат = 0, ЗначениеПоУмолчанию, Результат);
+КонецФункции
+
+#КонецОбласти
+
+#Область РаботаСCSVФайлами
+
+// Загружает файл формата CSV в шаблон
+//
+Процедура ЗагрузитьCSVФайлВТаблицу(ИмяФайла, ШаблонСДанными, ИнформацияПоКолонкам) Экспорт
+
+ Файл = новый Файл(ИмяФайла);
+ Если НЕ Файл.Существует() Тогда
+ Возврат;
+ КонецЕсли;
+
+ ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла);
+ Строка = ЧтениеТекста.ПрочитатьСтроку();
+ Если Строка = Неопределено Тогда
+ ТекстСообщения = НСтр("ru = 'Не получилось загрузить данные из этого файла. Убедитесь в корректности данных в файле.'");
+ Возврат;
+ КонецЕсли;
+
+ КолонкиШапки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов(Строка, ";");
+ Источник = Новый ТаблицаЗначений;
+
+
+ Для каждого Колонка Из КолонкиШапки Цикл
+
+ НайденнаяКолонка = НайтиИнформациюОКолонке(ИнформацияПоКолонкам, "ПредставлениеКолонки", Колонка);
+
+ Если НайденнаяКолонка <> Неопределено Тогда
+ НоваяКолонка = Источник.Колонки.Добавить();
+ НоваяКолонка.Имя = НайденнаяКолонка.ИмяКолонки;
+ НоваяКолонка.Заголовок = Колонка;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если Источник.Колонки.Количество() = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
+ Пока Строка <> Неопределено Цикл
+ НоваяСтрока = Источник.Добавить();
+ Позиция = Найти(Строка, ";");
+ Индекс = 0;
+ Пока Позиция > 0 Цикл
+ Если Источник.Колонки.Количество() < Индекс + 1 Тогда
+ Прервать;
+ КонецЕсли;
+ НоваяСтрока[Индекс] = Лев(Строка, Позиция - 1);
+ Строка = Сред(Строка, Позиция + 1);
+ Позиция = Найти(Строка, ";");
+ Индекс = Индекс + 1;
+ КонецЦикла;
+ Если Источник.Колонки.Количество() = Индекс + 1 Тогда
+ НоваяСтрока[Индекс] = Строка;
+ КонецЕсли;
+
+ Строка = ЧтениеТекста.ПрочитатьСтроку();
+ КонецЦикла;
+
+ ЗаполнитьТаблицуПоЗагруженнымДаннымИзФайла(Источник, ШаблонСДанными, ИнформацияПоКолонкам);
+
+КонецПроцедуры
+
+// Сохраняет файл формата CSV в шаблон
+//
+Процедура СохранитьТаблицуВCSVФайл(ПутьКФайлу, ИнформацияПоКолонкам) Экспорт
+
+ ФорматЗаголовкаДляCSV = "";
+
+ Для каждого Колонка Из ИнформацияПоКолонкам Цикл
+ ФорматЗаголовкаДляCSV = ФорматЗаголовкаДляCSV + Колонка.ПредставлениеКолонки + ";";
+ КонецЦикла;
+
+ Если СтрДлина(ФорматЗаголовкаДляCSV) > 0 Тогда
+ ФорматЗаголовкаДляCSV = Лев(ФорматЗаголовкаДляCSV, СтрДлина(ФорматЗаголовкаДляCSV)-1);
+ КонецЕсли;
+
+ Файл = Новый ЗаписьТекста(ПутьКФайлу);
+ Файл.ЗаписатьСтроку(ФорматЗаголовкаДляCSV);
+ Файл.Закрыть();
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ДлительныеОперации
+
+// Сохраняет загруженные и сопоставленные данные в справочник
+//
+Процедура ЗаписатьСопоставленныеДанные(ПараметрыВыгрузки, АдресХранилища) Экспорт
+
+ СопоставленныеДанные = ПараметрыВыгрузки.СопоставленныеДанные;
+ ИмяОбъектаСопоставления =ПараметрыВыгрузки.ИмяОбъектаСопоставления;
+ ПараметрыЗагрузки = ПараметрыВыгрузки.ПараметрыЗагрузки;
+ ИнформацияПоКолонкам = ПараметрыВыгрузки.ИнформацияПоКолонкам;
+
+ СоздаватьЕслиНеСопоставлено = ПараметрыЗагрузки.СоздаватьЕслиНеСопоставлено;
+ ОбновлятьСуществующие = ПараметрыЗагрузки.ОбновлятьСуществующие;
+
+ ТипСтрока = Новый ОписаниеТипов("Строка");
+
+ ИмяСправочника = РазложитьПолноеИмяОбъекта(ИмяОбъектаСопоставления).НазваниеОбъекта;
+ МенеджерСправочника = Справочники[ИмяСправочника];
+
+ НомерСтроки = 0;
+ ВсегоСтрок = СопоставленныеДанные.Количество();
+ Для каждого СтрокаТаблицы Из СопоставленныеДанные Цикл
+ НомерСтроки = НомерСтроки + 1;
+ Попытка
+ НачатьТранзакцию();
+ Если НЕ ЗначениеЗаполнено(СтрокаТаблицы.ОбъектСопоставления) Тогда
+ Если СоздаватьЕслиНеСопоставлено Тогда
+ ЭлементСправочника = МенеджерСправочника.СоздатьЭлемент();
+ СтрокаТаблицы.ОбъектСопоставления = ЭлементСправочника;
+ СтрокаТаблицы.РезультатСопоставленияСтроки = "Создан";
+ Иначе
+ СтрокаТаблицы.РезультатСопоставленияСтроки = "Пропущен";
+ УстановитьПроцентПрогресса(ВсегоСтрок, НомерСтроки);
+ Продолжить;
+ КонецЕсли;
+ Иначе
+ Если НЕ ОбновлятьСуществующие Тогда
+ СтрокаТаблицы.РезультатСопоставленияСтроки = "Пропущен";
+ УстановитьПроцентПрогресса(ВсегоСтрок, НомерСтроки);
+ Продолжить;
+ КонецЕсли;
+
+ Блокировка = Новый БлокировкаДанных;
+ ЭлементБлокировки = Блокировка.Добавить("Справочник." + ИмяСправочника);
+ ЭлементБлокировки.УстановитьЗначение("Ссылка", СтрокаТаблицы.ОбъектСопоставления);
+
+ ЭлементСправочника = СтрокаТаблицы.ОбъектСопоставления.ПолучитьОбъект();
+ СтрокаТаблицы.РезультатСопоставленияСтроки = "Обновлен";
+ Если ЭлементСправочника = Неопределено Тогда
+ ТексСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Номенклатура с артикулом %1 не существует.'"), СтрокаТаблицы.Артикул);
+ ВызватьИсключение ТексСообщения;
+ КонецЕсли;
+ КонецЕсли;
+
+ Для каждого Колонка из ИнформацияПоКолонкам Цикл
+ ЭлементСправочника[Колонка.ИмяКолонки] = СтрокаТаблицы[Колонка.ИмяКолонки];
+ КонецЦикла;
+
+ Если ЭлементСправочника.ПроверитьЗаполнение() Тогда
+ ЭлементСправочника.Записать();
+ ЗафиксироватьТранзакцию();
+ Иначе
+ СтрокаТаблицы.РезультатСопоставленияСтроки = "Пропущен";
+ СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
+
+ Если СообщенияПользователю.Количество() > 0 Тогда
+ ТекстСообщений = "";
+ Для каждого СообщениеПользователю Из СообщенияПользователю Цикл
+ ТекстСообщений = текстСообщений + СообщениеПользователю.Текст + Символы.ПС;
+ КонецЦикла;
+ СтрокаТаблицы.ОписаниеОшибки = ТекстСообщений;
+ КонецЕсли;
+
+ ОтменитьТранзакцию();
+
+ КонецЕсли;
+
+ УстановитьПроцентПрогресса(ВсегоСтрок, НомерСтроки);
+ Исключение
+ ОтменитьТранзакцию();
+ СтрокаТаблицы.РезультатСопоставленияСтроки = "Пропущен";
+ СтрокаТаблицы.ОписаниеОшибки = НСтр("ru = 'Невозможна запись из-за некорректности данных'");
+ КонецПопытки;
+
+ КонецЦикла;
+
+ АдресХранилища = ПоместитьВоВременноеХранилище(СопоставленныеДанные, АдресХранилища);
+
+КонецПроцедуры
+
+Процедура УстановитьПроцентПрогресса(Всего, НомерСтроки)
+ Процент = НомерСтроки * 50 / Всего;
+ МодульДлительныеОперации = ОбщегоНазначения.ОбщийМодуль("ДлительныеОперации");
+ МодульДлительныеОперации.СообщитьПрогресс(Процент);
+КонецПроцедуры
+
+// Формирует отчет о загрузке в фоне
+//
+Процедура СформироватьОтчетОЗагрузкеФон(ПараметрыВыгрузки, АдресХранилища) Экспорт
+
+ ТаблицаОтчет = ПараметрыВыгрузки.ТаблицаОтчет;
+ СопоставленныеДанные = ПараметрыВыгрузки.СопоставленныеДанные;
+ ИнформацияПоКолонкам = ПараметрыВыгрузки.ИнформацияПоКолонкам;
+ ШаблонСДанными = ПараметрыВыгрузки.ШаблонСДанными;
+ ТипОтчета = ПараметрыВыгрузки.ТипОтчета;
+ РассчитыватьПроцентПрогресса = ПараметрыВыгрузки.РассчитыватьПроцентПрогресса;
+
+ Если Не ЗначениеЗаполнено(ТипОтчета) Тогда
+ ТипОтчета = "ВсеЭлементы";
+ КонецЕсли;
+
+ СформироватьМакетОтчета(ТаблицаОтчет, ШаблонСДанными);
+
+ ОбластьЗаголовка = ОбластьЗаголовкаШаблонаТаблицы(ТаблицаОтчет);
+
+ КоличествоСозданных = 0;
+ КоличествоОбновленных = 0;
+ КоличествоПропущенных = 0;
+ КоличествоПропущенныхСОшибкой = 0;
+ Для НомерСтроки = 1 По СопоставленныеДанные.Количество() Цикл
+ Строка = СопоставленныеДанные.Получить(НомерСтроки - 1);
+
+ Ячейка = ТаблицаОтчет.ПолучитьОбласть(НомерСтроки + 1, 1, НомерСтроки + 1, 1);
+ Ячейка.ТекущаяОбласть.Текст = Строка.РезультатСопоставленияСтроки;
+ Ячейка.ТекущаяОбласть.Расшифровка = Строка.ОбъектСопоставления;
+ Ячейка.ТекущаяОбласть.Примечание.Текст = Строка.ОписаниеОшибки;
+ Если Строка.РезультатСопоставленияСтроки = "Создан" Тогда
+ Ячейка.ТекущаяОбласть.ЦветТекста = ЦветаСтиля.РезультатУспехЦвет;
+ КоличествоСозданных = КоличествоСозданных + 1;
+ ИначеЕсли Строка.РезультатСопоставленияСтроки = "Обновлен" Тогда
+ Ячейка.ТекущаяОбласть.ЦветТекста = ЦветаСтиля.ИзмененноеЗначениеРеквизитаЦвет;
+ КоличествоОбновленных = КоличествоОбновленных + 1;
+ Иначе
+ Ячейка.ТекущаяОбласть.ЦветТекста = ЦветаСтиля.ФайлЗанятыйДругимПользователем;
+ КоличествоПропущенных = КоличествоПропущенных + 1;
+ Если ЗначениеЗаполнено(Строка.ОписаниеОшибки) Тогда
+ КоличествоПропущенныхСОшибкой = КоличествоПропущенныхСОшибкой + 1;
+ КонецЕсли;
+ КонецЕсли;
+
+ Если ТипОтчета = "Новые" И Строка.РезультатСопоставленияСтроки <> "Создан" Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если ТипОтчета = "Обновленные" И Строка.РезультатСопоставленияСтроки <> "Обновлен" Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если ТипОтчета = "Пропущенные" И Строка.РезультатСопоставленияСтроки <> "Пропущен" Тогда
+ Продолжить;
+ КонецЕсли;
+
+ ТаблицаОтчет.Вывести(Ячейка);
+ Для Индекс = 1 По ИнформацияПоКолонкам.Количество() Цикл
+ Ячейка = ТаблицаОтчет.ПолучитьОбласть(НомерСтроки + 1, Индекс + 1, НомерСтроки + 1, Индекс + 1);
+
+ Отбор = Новый Структура("Позиция", Индекс);
+ НайденныеКолонки = ИнформацияПоКолонкам.НайтиСтроки(Отбор);
+ Если НайденныеКолонки.Количество() > 0 Тогда
+ ИмяКолонки = НайденныеКолонки[0].ИмяКолонки;
+ Ячейка.ТекущаяОбласть.Расшифровка = Строка.ОбъектСопоставления;
+ Ячейка.ТекущаяОбласть.Текст = Строка[ИмяКолонки];
+ Ячейка.ТекущаяОбласть.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Обрезать;
+ КонецЕсли;
+ ТаблицаОтчет.Присоединить(Ячейка);
+
+ КонецЦикла;
+
+ Если РассчитыватьПроцентПрогресса Тогда
+ Процент = Окр(НомерСтроки * 50 / СопоставленныеДанные.Количество()) + 50;
+ МодульДлительныеОперации = ОбщегоНазначения.ОбщийМодуль("ДлительныеОперации");
+ МодульДлительныеОперации.СообщитьПрогресс(Процент);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Результат = Новый Структура;
+ Результат.Вставить("ТипОтчета", ТипОтчета);
+ Результат.Вставить("Всего", СопоставленныеДанные.Количество());
+ Результат.Вставить("Создано", КоличествоСозданных);
+ Результат.Вставить("Обновлено", КоличествоОбновленных);
+ Результат.Вставить("Пропущено", КоличествоПропущенных);
+ Результат.Вставить("Некорректных", КоличествоПропущенныхСОшибкой);
+ Результат.Вставить("ТаблицаОтчет", ТаблицаОтчет);
+
+ АдресХранилища = ПоместитьВоВременноеХранилище(Результат, АдресХранилища);
+
+КонецПроцедуры
+
+Процедура СформироватьМакетОтчета(ТаблицаОтчет, ШаблонСДанными)
+
+ ТаблицаОтчет.Очистить();
+ Ячейка = ШаблонСДанными.ПолучитьОбласть(1, 1, 1, 1);
+
+ ШапкаТаблицы = ШаблонСДанными.ПолучитьОбласть("R1");
+ ЗаполнитьЯчейкуЗаголовкаМакета(Ячейка, НСтр("ru ='Результат'"), 12, НСтр("ru ='Результат загрузки данных'"), Истина);
+ ТаблицаОтчет.Присоединить(ШапкаТаблицы);
+ ТаблицаОтчет.ВставитьОбласть(Ячейка.ТекущаяОбласть, ТаблицаОтчет.Область("C1"), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
+
+ ТаблицаОтчет.ФиксацияСверху = 1;
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецОбласти
+
+#КонецЕсли
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ObjectModule.bsl b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ObjectModule.bsl
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ObjectModule.bsl
@@ -0,0 +1 @@
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Templates/ПростойШаблон/Template.mxlx b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Templates/ПростойШаблон/Template.mxlx
new file mode 100644
index 000000000..49fdf6b30
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/Templates/ПростойШаблон/Template.mxlx
@@ -0,0 +1,66 @@
+
+
+
+ ru
+ ru
+
+ ru
+ Русский
+ Русский
+
+
+
+ 1
+
+ 0
+
+ 1
+
+
+
+
+ 0
+
+
+
+ 2
+ Заголовок
+ Наименование
+
+
+
+
+ true
+ 3
+ 1
+ 1
+
+ Заголовок
+
+ Rectangle
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+ 135
+
+
+ 0
+ 66
+ 319
+ Center
+ style:ButtonBackColor
+ Parameter
+ false
+ 1
+ 0
+
+
+
+ 72
+
+
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ЗагрузкаДанныхИзФайла.mdo b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ЗагрузкаДанныхИзФайла.mdo
new file mode 100644
index 000000000..165ea9d93
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗагрузкаДанныхИзФайла/ЗагрузкаДанныхИзФайла.mdo
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+ ЗагрузкаДанныхИзФайла
+
+ ru
+ Загрузка данных из файла
+
+ true
+ DataProcessor.ЗагрузкаДанныхИзФайла.Form.ЗагрузкаДанныхИзФайла
+
+ ru
+ Загрузка справочной информации из табличных документов (файлы Microsoft Office Excel, Microsoft Office Word, OpenOffice Calc и др.) в справочники программы.
+
+
+ ЗагрузкаДанныхИзФайла
+
+ ru
+ Загрузка данных из файла
+
+ PersonalComputer
+ MobileDevice
+
+
+ ВыборКолонок
+
+ ru
+ Выбор колонок сопоставления
+
+ PersonalComputer
+ MobileDevice
+
+
+ РазрешенияНеоднозначностей
+
+ ru
+ Разрешение неоднозначностей
+
+ PersonalComputer
+ MobileDevice
+
+
+ РасширениеФайла
+
+ ru
+ Выбор формата файла
+
+ PersonalComputer
+ MobileDevice
+
+
+ РедактированиеБланка
+
+ ru
+ Редактирование бланка
+
+ PersonalComputer
+ MobileDevice
+
+
+ ПростойШаблон
+
+ ru
+ Простой шаблон
+
+
+
+ ЗагрузкаДанныхИзФайла
+
+ ru
+ Загрузка данных из файла
+
+ NavigationPanelOrdinary
+ Auto
+
+ ru
+ Загрузка справочной информации из табличных документов (файлы Microsoft Office Excel, Microsoft Office Word, OpenOffice Calc и др.) в справочники программы.
+
+
+
diff --git a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Form.form b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Form.form
index 708f1d5db..45da085d5 100644
--- a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Form.form
@@ -1,7 +1,7 @@
- Группа1
+ КоманднаяПанель43КоманднаяПанельЛевая
@@ -45,7 +45,6 @@
ru
- 10falseКоманднаяПанельЛеваяExtendedTooltip
@@ -251,7 +250,7 @@
- Группа1ExtendedTooltip
+ КоманднаяПанельРасширеннаяПодсказка46Labeltrue
@@ -269,406 +268,396 @@
Auto
-
- СписокВалют
- 7
- true
- true
-
- true
-
-
- Объект.СписокВалют
-
- false
- None
- Add
- CancelSearch
- Change
- Copy
- CopyToClipboard
- Delete
- EndEdit
- Find
- MoveDown
- MoveUp
- SortListAsc
- SortListDesc
-
- Загружать
- 33
- true
- true
-
- true
-
-
- Объект.СписокВалют.Загружать
-
- None
-
- ru
- Загружать курсы для этой валюты
-
-
- ЗагружатьExtendedTooltip
- 56
- Label
- true
- true
-
- Left
-
-
-
- ЗагружатьКонтекстноеМеню
- 34
- true
-
- CheckBoxField
- Auto
- true
-
- StdPicture.Refresh
-
- Left
- true
-
-
-
- КодВалюты
- 9
- true
- true
-
-
- Объект.СписокВалют.ЦифровойКод
-
-
- КодВалютыExtendedTooltip
- 57
- Label
- true
- true
-
- Left
-
-
-
- КодВалютыКонтекстноеМеню
- 22
- true
-
- LabelField
- Auto
- true
- Left
- true
- Left
-
- true
- true
-
-
-
- СписокВалютСимвольныйКод
- 40
- true
- true
-
- true
-
-
- Объект.СписокВалют.СимвольныйКод
-
-
- СписокВалютСимвольныйКодExtendedTooltip
- 58
- Label
- true
- true
-
- Left
-
-
-
- СписокВалютСимвольныйКодКонтекстноеМеню
- 41
- true
-
- LabelField
- Auto
- true
- Left
- true
-
- true
- true
-
-
-
- СписокВалютПредставление
- 38
- true
- true
-
- true
-
-
- Объект.СписокВалют.Представление
-
-
- СписокВалютПредставлениеExtendedTooltip
- 59
- Label
- true
- true
-
- Left
-
-
-
- СписокВалютПредставлениеКонтекстноеМеню
- 39
- true
-
- InputField
- Auto
- true
- Left
- true
-
- 20
- true
- true
- true
- true
- true
- true
- Normal
-
-
-
- ДатаКурса
- 11
- true
- true
-
- true
-
-
- Объект.СписокВалют.ДатаКурса
-
-
- ДатаКурсаExtendedTooltip
- 60
- Label
- true
- true
-
- Left
-
-
-
- ДатаКурсаКонтекстноеМеню
- 23
- true
-
- LabelField
- Auto
- true
- Left
- true
- Left
-
- true
- true
-
-
-
- Курс
- 12
- true
- true
-
- true
-
-
- Объект.СписокВалют.Курс
-
-
- КурсExtendedTooltip
- 61
- Label
- true
- true
-
- Left
-
-
-
- КурсКонтекстноеМеню
- 24
- true
-
- LabelField
- Auto
- true
- Left
- true
- Left
-
- true
- true
-
-
-
- Кратность
- 13
- true
- true
-
- true
-
-
- Объект.СписокВалют.Кратность
-
-
- КратностьExtendedTooltip
- 62
- Label
- true
- true
-
- Left
-
-
-
- КратностьКонтекстноеМеню
- 25
- true
-
- LabelField
- Auto
- true
- Left
- true
- Left
-
- true
- true
-
-
- None
-
- СписокВалютКоманднаяПанель
- 26
- Left
- true
-
-
- Selection
- СписокВалютВыбор
-
-
- BeforeRowChange
- СписокВалютПередНачаломИзменения
-
-
- СписокВалютСтрокаПоиска
+
+ Страницы
+ 63
+
+ СтраницаСписокВалют65
-
- СписокВалютСтрокаПоискаРасширеннаяПодсказка
- 67
- Label
- true
- true
-
- Left
-
-
-
- СписокВалютСтрокаПоискаКонтекстноеМеню
- 66
- true
-
- СписокВалют
-
- true
-
-
-
- СписокВалютСостояниеПросмотра
- 68
-
- СписокВалютСостояниеПросмотраРасширеннаяПодсказка
- 70
- Label
- true
- true
-
- Left
-
-
-
- СписокВалютСостояниеПросмотраКонтекстноеМеню
- 69
- true
-
- ViewStatusAddition
- СписокВалют
-
- true
-
-
-
- СписокВалютУправлениеПоиском
- 71
-
- СписокВалютУправлениеПоискомРасширеннаяПодсказка
- 73
- Label
- true
- true
-
- Left
-
-
-
- СписокВалютУправлениеПоискомКонтекстноеМеню
- 72
- true
-
- SearchControlAddition
- СписокВалют
-
- true
-
-
-
- СписокВалютExtendedTooltip
- 55
- Label
- true
- true
-
- Left
-
-
-
- СписокВалютКонтекстноеМеню
- 20
-
- СписокВалютКонтекстноеМенюОтключитьЗагрузкуИзИнтернета
- 45
+
+ СписокВалют
+ 7truetruetrue
+
+ Объект.СписокВалют
+
+ false
+ None
+ Add
+ CancelSearch
+ Change
+ Copy
+ CopyToClipboard
+ Delete
+ EndEdit
+ Find
+ MoveDown
+ MoveUp
+ SortListAsc
+ SortListDesc
+
+ Загружать
+ 33
+ true
+ true
+
+ true
+
+
+ Объект.СписокВалют.Загружать
+
+ None
+
+ ru
+ Загружать курсы для этой валюты
+
+
+ OnChange
+ ЗагружатьПриИзменении
+
+
+ ЗагружатьExtendedTooltip
+ 56
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЗагружатьКонтекстноеМеню
+ 34
+ true
+
+ CheckBoxField
+ true
+
+ StdPicture.Refresh
+
+ Left
+ true
+
+
+
+ КодВалюты
+ 9
+ true
+ true
+
+
+ Объект.СписокВалют.ЦифровойКод
+
+
+ КодВалютыExtendedTooltip
+ 57
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КодВалютыКонтекстноеМеню
+ 22
+ true
+
+ LabelField
+ true
+ Auto
+ true
+ Left
+ true
+ Left
+
+ true
+ true
+
+
+
+ СписокВалютСимвольныйКод
+ 40
+ true
+ true
+
+ true
+
+
+ Объект.СписокВалют.СимвольныйКод
+
+
+ СписокВалютСимвольныйКодExtendedTooltip
+ 58
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокВалютСимвольныйКодКонтекстноеМеню
+ 41
+ true
+
+ LabelField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ СписокВалютПредставление
+ 38
+ true
+ true
+
+ true
+
+
+ Объект.СписокВалют.Представление
+
+
+ СписокВалютПредставлениеExtendedTooltip
+ 59
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокВалютПредставлениеКонтекстноеМеню
+ 39
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ 20
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ДатаКурса
+ 11
+ true
+ true
+
+ true
+
+
+ Объект.СписокВалют.ДатаКурса
+
+
+ ДатаКурсаExtendedTooltip
+ 60
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДатаКурсаКонтекстноеМеню
+ 23
+ true
+
+ LabelField
+ true
+ Auto
+ true
+ Left
+ true
+ Left
+
+ true
+ true
+
+
+
+ Курс
+ 12
+ true
+ true
+
+ true
+
+
+ Объект.СписокВалют.Курс
+
+
+ КурсExtendedTooltip
+ 61
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КурсКонтекстноеМеню
+ 24
+ true
+
+ LabelField
+ true
+ Auto
+ true
+ Left
+ true
+ Left
+
+ true
+ true
+
+
+
+ Кратность
+ 13
+ true
+ true
+
+ true
+
+
+ Объект.СписокВалют.Кратность
+
+
+ КратностьExtendedTooltip
+ 62
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КратностьКонтекстноеМеню
+ 25
+ true
+
+ LabelField
+ true
+ Auto
+ true
+ Left
+ true
+ Left
+
+ true
+ true
+
+
+ None
+
+ СписокВалютКоманднаяПанель
+ 26
+ Left
+ true
+
+
+ Selection
+ СписокВалютВыбор
+
+
+ СписокВалютСтрокаПоиска
+ 77
+
+ СписокВалютСтрокаПоискаРасширеннаяПодсказка
+ 79
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокВалютСтрокаПоискаКонтекстноеМеню
+ 78
+ true
+
+ СписокВалют
+
+ true
+
+
+
+ СписокВалютСостояниеПросмотра
+ 80
+
+ СписокВалютСостояниеПросмотраРасширеннаяПодсказка
+ 82
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокВалютСостояниеПросмотраКонтекстноеМеню
+ 81
+ true
+
+ ViewStatusAddition
+ СписокВалют
+
+ true
+
+
+
+ СписокВалютУправлениеПоиском
+ 83
+
+ СписокВалютУправлениеПоискомРасширеннаяПодсказка
+ 85
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокВалютУправлениеПоискомКонтекстноеМеню
+ 84
+ true
+
+ SearchControlAddition
+ СписокВалют
+
+ true
+
+
- СписокВалютКонтекстноеМенюОтключитьЗагрузкуИзИнтернетаExtendedTooltip
- 54
+ СписокВалютExtendedTooltip
+ 55Labeltruetrue
@@ -676,43 +665,224 @@
Left
- Form.Command.ОтключитьЗагрузкуКурсаЭтойВалютыИзИнтернета
- Normal
- Auto
+
+ СписокВалютКонтекстноеМеню
+ 20
+
+ СписокВалютКонтекстноеМенюОтключитьЗагрузкуИзИнтернета
+ 45
+ true
+ true
+
+ true
+
+
+ СписокВалютКонтекстноеМенюОтключитьЗагрузкуИзИнтернетаExtendedTooltip
+ 54
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОтключитьЗагрузкуКурсаЭтойВалютыИзИнтернета
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+
+ HierarchicalList
+ 40truetrue
- UserCmds
- Auto
+ 10
+ true
+ Row
+ true
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ Auto
+ Auto
+ true
+ true
+
+ Style.BorderColor
+
+ None
+ None
+ None
+ true
+
- true
-
- HierarchicalList
- 40
- true
- true
- 10
- true
- Row
- true
- 1
- 1
- AutoUse
- AutoUse
- true
- true
- false
- Auto
- Auto
- true
- true
-
- Style.BorderColor
-
- None
- None
- None
- true
-
+ true
+ true
+
+ true
+
+
+ ru
+ Страница список валют
+
+
+ ru
+ Страница список валют
+
+
+ СтраницаСписокВалютРасширеннаяПодсказка
+ 66
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ СтраницаВыполняетсяЗагрузкаКурсов
+ 67
+
+ КартинкаДлительнаяОперация
+ 69
+
+ ru
+ Картинка длительная операция
+
+ true
+ true
+
+ true
+
+
+ КартинкаДлительнаяОперацияРасширеннаяПодсказка
+ 71
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаДлительнаяОперацияКонтекстноеМеню
+ 70
+ true
+
+ 6
+ true
+ 3
+ true
+
+
+ CommonPicture.ДлительнаяОперация48
+
+
+
+
+ НадписьВыполняетсяЗагрузкаКурсовВалют
+ 72
+
+ ru
+ Выполняется загрузка курсов валют...
+
+ true
+ true
+
+ true
+
+
+ НадписьВыполняетсяЗагрузкаКурсовВалютРасширеннаяПодсказка
+ 74
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьВыполняетсяЗагрузкаКурсовВалютКонтекстноеМеню
+ 73
+ true
+
+ Label
+ true
+ 3
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница выполняется загрузка курсов
+
+
+ ru
+ Страница выполняется загрузка курсов
+
+
+ СтраницаВыполняетсяЗагрузкаКурсовРасширеннаяПодсказка
+ 68
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страницы
+
+
+ ru
+ Страницы
+
+
+ СтраницыРасширеннаяПодсказка
+ 64
+ Label
+ true
+ true
+
+ Left
+
+
+ Pages
+
+ Auto
+ ФормаКоманднаяПанель
@@ -770,6 +940,41 @@
true
+
+ ИдентификаторФоновогоЗадания
+
+ ru
+ Идентификатор фонового задания
+
+ 3
+
+ UUID
+
+
+ true
+
+
+ true
+
+
+
+ АдресРезультата
+
+ ru
+ Адрес результата
+
+ 4
+
+ String
+
+
+
+ true
+
+
+ true
+
+ ЗагрузитьКурсыВалют
diff --git a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl
index 821ee2577..272ae7f80 100644
--- a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl
@@ -48,12 +48,6 @@
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокВалют
-&НаКлиенте
-Процедура СписокВалютПередНачаломИзменения(Элемент, Отказ)
- Отказ = Истина;
- ПереключитьЗагрузку();
-КонецПроцедуры
-
&НаКлиенте
Процедура СписокВалютВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
@@ -67,8 +61,6 @@
&НаКлиенте
Процедура ЗагрузитьКурсыВалют()
- // Загрузка курсов
-
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.НачалоПериодаЗагрузки) Тогда
@@ -87,23 +79,11 @@
Возврат;
КонецЕсли;
- Состояние(НСтр("ru = 'Загружаются курсы валют...'"));
- РезультатЗагрузки = ЗагрузитьКурсыСРБК();
+ ВыполнитьЗагрузкуКурсов();
+ ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗагрузкиКурсов", 1, Истина);
+ Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыполняетсяЗагрузкаКурсов;
+ Элементы.КоманднаяПанель.Доступность = Ложь;
- Если РезультатЗагрузки <> Неопределено Тогда
- ПараметрыЗаписи = Неопределено;
- МассивОбновляемыхВалют = Новый Массив;
- Для Каждого СтрокаТаблицы Из Объект.СписокВалют Цикл
- МассивОбновляемыхВалют.Добавить(СтрокаТаблицы.Валюта);
- КонецЦикла;
- Оповестить("Запись_ЗагрузкаКурсовВалют", ПараметрыЗаписи, МассивОбновляемыхВалют);
-
- РаботаСКурсамиВалютКлиент.ОповеститьКурсыУспешноОбновлены();
-
- Если РезультатЗагрузки = Истина Тогда
- Закрыть();
- КонецЕсли;
- КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -150,40 +130,6 @@
КонецЦикла;
КонецПроцедуры
-&НаСервере
-Функция ЗагрузитьКурсыСРБК()
- // Истина - Все успешно загружены.
- // Ложь - Часть загружена.
- // Неопределено - Ни один не загружен.
-
- СписокВалют = Объект.СписокВалют.Выгрузить(, "КодВалюты,Валюта,Загружать").НайтиСтроки(Новый Структура("Загружать", Истина));
-
- Результат = РаботаСКурсамиВалютКлиентСервер.ЗагрузитьКурсыВалютПоПараметрам(
- СписокВалют,
- Объект.НачалоПериодаЗагрузки,
- Объект.ОкончаниеПериодаЗагрузки);
-
- ЕстьУспешноЗагруженныеКурсы = Ложь;
- БезОшибок = Истина;
-
- Для Каждого СостояниеЗагрузки Из Результат Цикл
- Если СостояниеЗагрузки.СтатусОперации Тогда
- ЕстьУспешноЗагруженныеКурсы = Истина;
- Иначе
- БезОшибок = Ложь;
- Индекс = Объект.СписокВалют.Индекс(Объект.СписокВалют.НайтиСтроки(Новый Структура("Валюта", СостояниеЗагрузки.Валюта))[0]);
- ИмяПоля = СтрЗаменить("СписокВалют[x].Валюта", "x", Строка(Индекс));
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СостояниеЗагрузки.Сообщение,, ИмяПоля, "Объект");
- КонецЕсли;
- КонецЦикла;
-
- Если ЕстьУспешноЗагруженныеКурсы Тогда
- ОбновитьСведенияВСпискеВалют();
- КонецЕсли;
-
- Возврат ?(ЕстьУспешноЗагруженныеКурсы, БезОшибок, Неопределено);
-КонецФункции
-
&НаСервере
Процедура ЗаполнитьВалюты()
@@ -278,7 +224,7 @@
&НаСервере
Процедура СнятьПризнакЗагрузкиИзИнтернета(ВалютаСсылка)
ВалютаОбъект = ВалютаСсылка.ПолучитьОбъект();
- ВалютаОбъект.ЗагружаетсяИзИнтернета = Ложь;
+ ВалютаОбъект.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РучнойВвод;
ВалютаОбъект.Записать();
КонецПроцедуры
@@ -288,4 +234,109 @@
УстановитьДоступностьЭлементов();
КонецПроцедуры
+&НаСервере
+Процедура ВыполнитьЗагрузкуКурсов()
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ЗагрузкаКурсовВалют);
+
+ Отбор = Новый Структура;
+ Отбор.Вставить("РегламентноеЗадание", РегламентноеЗадание);
+ Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
+ ФоновыеЗаданияОчистки = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
+ Если ФоновыеЗаданияОчистки.Количество() > 0 Тогда
+ ИдентификаторФоновогоЗадания = ФоновыеЗаданияОчистки[0].УникальныйИдентификатор;
+ Иначе
+ АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
+ НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Запуск вручную: %1'"), РегламентноеЗадание.Метаданные.Синоним);
+
+ ПараметрыЗагрузки = Новый Структура;
+ ПараметрыЗагрузки.Вставить("НачалоПериода", Объект.НачалоПериодаЗагрузки);
+ ПараметрыЗагрузки.Вставить("КонецПериода", Объект.ОкончаниеПериодаЗагрузки);
+ ПараметрыЗагрузки.Вставить("СписокВалют", ОбщегоНазначения.ТаблицаЗначенийВМассив(Объект.СписокВалют.Выгрузить(
+ Объект.СписокВалют.НайтиСтроки(Новый Структура("Загружать", Истина)), "КодВалюты,Валюта")));
+
+ ПараметрыЗадания = Новый Массив;
+ ПараметрыЗадания.Добавить(ПараметрыЗагрузки);
+ ПараметрыЗадания.Добавить(АдресРезультата);
+
+ ФоновоеЗадание = ФоновыеЗадания.Выполнить(
+ РегламентноеЗадание.Метаданные.ИмяМетода,
+ ПараметрыЗадания,
+ Строка(РегламентноеЗадание.УникальныйИдентификатор),
+ НаименованиеФоновогоЗадания);
+
+ ИдентификаторФоновогоЗадания = ФоновоеЗадание.УникальныйИдентификатор;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ПроверитьВыполнениеЗагрузкиКурсов()
+
+ Попытка
+ ЗаданиеВыполнено = ЗаданиеВыполнено(ИдентификаторФоновогоЗадания);
+ Исключение
+ Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСписокВалют;
+ Элементы.КоманднаяПанель.Доступность = Истина;
+ ВызватьИсключение;
+ КонецПопытки;
+
+ Если ЗаданиеВыполнено(ИдентификаторФоновогоЗадания) Тогда
+ Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСписокВалют;
+ Элементы.КоманднаяПанель.Доступность = Истина;
+ ОбработатьРезультатЗагрузки();
+ Иначе
+ ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗагрузкиКурсов", 2, Истина);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОбработатьРезультатЗагрузки()
+
+ РезультатЗагрузки = ПолучитьИзВременногоХранилища(АдресРезультата);
+
+ ЕстьУспешноЗагруженныеКурсы = Ложь;
+ БезОшибок = Истина;
+
+ Для Каждого СостояниеЗагрузки Из РезультатЗагрузки Цикл
+ Если СостояниеЗагрузки.СтатусОперации Тогда
+ ЕстьУспешноЗагруженныеКурсы = Истина;
+ Иначе
+ БезОшибок = Ложь;
+ Индекс = Объект.СписокВалют.Индекс(Объект.СписокВалют.НайтиСтроки(Новый Структура("Валюта", СостояниеЗагрузки.Валюта))[0]);
+ ИмяПоля = СтрЗаменить("СписокВалют[x].Представление", "x", Строка(Индекс));
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СостояниеЗагрузки.Сообщение,, ИмяПоля, "Объект");
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ЕстьУспешноЗагруженныеКурсы Тогда
+ ОбновитьСведенияВСпискеВалют();
+ ПараметрыЗаписи = Неопределено;
+ МассивОбновляемыхВалют = Новый Массив;
+ Для Каждого СтрокаТаблицы Из Объект.СписокВалют Цикл
+ МассивОбновляемыхВалют.Добавить(СтрокаТаблицы.Валюта);
+ КонецЦикла;
+ Оповестить("Запись_ЗагрузкаКурсовВалют", ПараметрыЗаписи, МассивОбновляемыхВалют);
+
+ РаботаСКурсамиВалютКлиент.ОповеститьКурсыУспешноОбновлены();
+
+ Если БезОшибок Тогда
+ Закрыть();
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервереБезКонтекста
+Функция ЗаданиеВыполнено(ИдентификаторФоновогоЗадания)
+ Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторФоновогоЗадания);
+КонецФункции
+
+&НаКлиенте
+Процедура ЗагружатьПриИзменении(Элемент)
+ УстановитьДоступностьЭлементов();
+КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html
index 74e74ef24..7d435687c 100644
--- a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html
+++ b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Позволяет заменить один или несколько элементов на выбранный элемент.
Такая возможность востребована при удалении элементов, например, т.к. для окончательного удаления элемента необходимо избавиться от ссылок на него.
Командой Заменить во всех местах использования можно воспользоваться из окна Удаление помеченных объектов.
diff --git a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ЗаменаЭлементов/Module.bsl b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ЗаменаЭлементов/Module.bsl
index 84afbd16c..65d0b5c31 100644
--- a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ЗаменаЭлементов/Module.bsl
+++ b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ЗаменаЭлементов/Module.bsl
@@ -1,7 +1,8 @@
// Форма параметризуется
//
// Параметры:
-// НаборСсылок - Массив, СписокЗначений, Коллекция элементов, обладающих полем "Ссылка" - набор
+// НаборСсылок - Массив, СписокЗначений - набор элементов для анализа.
+// Может быть коллекцией элементов, обладающих полем "Ссылка"
//
// Флаг подтверждения, используется при не модальном закрытии
@@ -58,7 +59,7 @@
КонецЕсли;
Элементы.НадписьТипВыбираемого.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Выберите элемент %1, на который будет произведена замена.'"),
+ НСтр("ru = 'Выберите элемент ""%1"", на который будет произведена замена.'"),
ОсновныеМетаданные.Представление()
);
@@ -99,10 +100,11 @@
// ОБРАБОТЧИКИ СОБЫТИЙ ШАПКИ ФОРМЫ
&НаКлиенте
-Процедура ПодсказкаВыбораЦелевогоЭлементаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
+Процедура СписокРасширеннаяПодсказкаОбработкаНавигационнойСсылки(Элемент, ЗначениеНавигационнойСсылки, СтандартнаяОбработка)
+
СтандартнаяОбработка = Ложь;
- Если НавигационнаяСсылка = "ПереключениеРежимаУдаления" Тогда
+ Если ЗначениеНавигационнойСсылки = "ПереключениеРежимаУдаления" Тогда
Если ТекущийВариантУдаления = "Непосредственно" Тогда
ТекущийВариантУдаления = "Пометка"
Иначе
@@ -257,7 +259,7 @@
ТекстПодсказки = НСтр("ru = 'Заменить ""%1"" на ""%2"".
|Элемент ""%1"" будет %3'");
- Контекст.Элементы.ПодсказкаВыбораЦелевогоЭлемента.Заголовок = ФорматированнаяСтрока(
+ Контекст.Элементы.Список.РасширеннаяПодсказка.Заголовок = ФорматированнаяСтрока(
ТекстПодсказки,
Контекст.ЗаменяемыеСсылки[0].Ссылка, Контекст.ЦелевойЭлемент,
Гиперссылка
@@ -282,7 +284,7 @@
ТекстПодсказки = НСтр("ru = 'Заменить элементы (%1) на ""%2"".
|Заменяемые элементы будут %3'");
- Контекст.Элементы.ПодсказкаВыбораЦелевогоЭлемента.Заголовок = ФорматированнаяСтрока(
+ Контекст.Элементы.Список.РасширеннаяПодсказка.Заголовок = ФорматированнаяСтрока(
ТекстПодсказки,
Количество, Контекст.ЦелевойЭлемент,
Гиперссылка
@@ -380,6 +382,7 @@
ПараметрыЗамены = Новый Структура;
ПараметрыЗамены.Вставить("СпособУдаления", ТекущийВариантУдаления);
ПараметрыЗамены.Вставить("ВключатьБизнесЛогику", Истина);
+ ПараметрыЗамены.Вставить("ЗаменаПарыВТранзакции", Ложь);
ПараметрыМетода.Добавить(ПараметрыЗамены);
@@ -486,6 +489,7 @@
// ---------------------------------------------------------------------------------------------------------------------
// Преобразует массив, список значений или коллекцию в массив
+//
&НаСервереБезКонтекста
Функция МассивСсылокИзСписка(Знач Ссылки)
@@ -510,7 +514,10 @@
Возврат МассивСсылок;
КонецФункции
-// Возвращает код справочника и т.п. если он есть по метаданным, Неопределено, если кода нет
+// Возвращаемое значение:
+// Произвольный - код справочника и т.п. если он есть по метаданным,
+// Неопределено - если кода нет
+//
&НаСервереБезКонтекста
Функция ВозможныйКодСсылки(Знач Ссылка, КэшМетаданных)
Мета = Ссылка.Метаданные();
@@ -529,6 +536,7 @@
КонецФункции
// Безопасное получение значения реквизита
+//
&НаКлиентеНаСервереБезКонтекста
Функция ЗначениеРеквизита(Знач Данные, Знач ИмяРеквизита, Знач ЗначениеПриОтсутствии = Неопределено)
@@ -1079,39 +1087,39 @@
//
// Действия - Структура - Описание действий, возможных на текущем шаге. Поля структуры:
//
-// ПриАктивации - Строка - Необязательное имя процедуры, которая будет выполнена перед активацией страницы
-// с двумя параметрами:
+// * ПриАктивации - Строка - Необязательное имя процедуры, которая будет выполнена перед активацией страницы
+// с двумя параметрами:
// <Страница> - ГруппаФормы - группа-страница, которая активизируется
// <ДополнительныеПараметры> - Неопределено
//
-// ПередДействиемДалее - Строка - Необязательное имя процедуры, которая будет выполнена при нажатии кнопки "Далее",
-// перед переходом на следующую страницу. Процедура будет вызвана с двумя параметрами:
-// <ПараметрыШага> - служебный реквизит. При успешном завершении цепочки немодальных
-// вызовов последняя процедура-обработчик должна произвести вызов
-// ЗавершитьШагМастера(ПараметрыШага), подтверждая действие.
-// <ДополнительныеПараметры> - Неопределено
+// * ПередДействиемДалее - Строка - Необязательное имя процедуры, которая будет выполнена при нажатии кнопки "Далее",
+// перед переходом на следующую страницу. Процедура будет вызвана с двумя параметрами:
+// <ПараметрыШага> - служебный реквизит. При успешном завершении цепочки немодальных
+// вызовов последняя процедура-обработчик должна произвести вызов
+// ЗавершитьШагМастера(ПараметрыШага), подтверждая действие.
+// <ДополнительныеПараметры> - Неопределено
//
-// ПередДействиемНазад - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Назад"
+// * ПередДействиемНазад - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Назад"
//
-// ПередДействиемОтмена - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Отмена"
+// * ПередДействиемОтмена - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Отмена"
//
-// ПриОбработкеОжидания - Строка - Необязательное имя процедуры, которая будет периодически вызываться с двумя
-// параметрами:
-// <Прекратить> - Если при выходе из процедуры установить в значение Истина, то
-// периодические вызовы будут прекращены.
-// <ДополнительныеПараметры> - Неопределено
+// * ПриОбработкеОжидания - Строка - Необязательное имя процедуры, которая будет периодически вызываться с двумя
+// параметрами:
+// <Прекратить> - Если при выходе из процедуры установить в значение Истина, то
+// периодические вызовы будут прекращены.
+// <ДополнительныеПараметры> - Неопределено
//
// Кнопки - Структура - описание кнопок на текущем шаге. Поля структуры:
//
-// Далее - Структура - Описание кнопки "Далее". поля: Заголовок, Подсказка, Доступность, Видимость, КнопкаПоУмолчанию.
-// Пустая подсказка заменяется на заголовок. По умолчанию будут использованы значения:
-// Заголовок = "Далее >", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Истина;
+// * Далее - Структура - Описание кнопки "Далее". поля: Заголовок, Подсказка, Доступность, Видимость, КнопкаПоУмолчанию.
+// Пустая подсказка заменяется на заголовок. По умолчанию будут использованы значения:
+// Заголовок = "Далее >", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Истина;
//
-// Назад - Структура - Аналогично кнопке "Далее", значения по умолчанию:
-// Заголовок = "< Назад", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
+// * Назад - Структура - Аналогично кнопке "Далее", значения по умолчанию:
+// Заголовок = "< Назад", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
//
-// Отмена - Структура - Аналогично кнопке "Далее", значения по умолчанию:
-// Заголовок = "Отмена", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
+// * Отмена - Структура - Аналогично кнопке "Далее", значения по умолчанию:
+// Заголовок = "Отмена", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
//
// Для составления параметров рекомендуется использовать вспомогательные методы "ДобавитьШагМастера", "ДействиеШагаМастера", "КнопкаШагаМастера"
//
@@ -1157,7 +1165,9 @@
// ИмяОбработчика - Строка - Имя процедуры, см описание метода "ДобавитьШагМастера"
// СлужебныеДанные - Структура - Накапливает значения.
//
-// Возвращаемое значение - Структура - СлужебныеДанные с добавленными полями
+// Возвращаемое значение:
+// Структура - СлужебныеДанные с добавленными полями
+//
&НаСервере
Функция ДействиеШагаМастера(Знач Идентификатор, Знач ИмяОбработчика, СлужебныеДанные = Неопределено)
Если СлужебныеДанные = Неопределено Тогда
@@ -1179,7 +1189,8 @@
// КнопкаПоУмолчанию - Булево - параметр отображения кнопки
// СлужебныеДанные - Структура - Накапливает значения
//
-// Возвращаемое значение - Структура - СлужебныеДанные с добавленными полями
+// Возвращаемое значение:
+//- Структура - СлужебныеДанные с добавленными полями
//
&НаСервере
Функция КнопкаШагаМастера(Знач Идентификатор, Знач Заголовок = "", Знач Подсказка = "", Знач Видимость = Истина, Знач Доступность = Истина, Знач КнопкаПоУмолчанию = Ложь, Знач СлужебныеДанные = Неопределено)
@@ -1228,6 +1239,7 @@
КонецПроцедуры
// Запускает начальную работу мастера с шага, установленного предварительно при помощи "УстановитьНачальнуюСтраницуМастера"
+//
&НаКлиенте
Процедура ЗапуститьРаботуМастера()
НастройкиМастера = ЭтотОбъект.НастройкиПошаговогоМастера;
@@ -1387,6 +1399,16 @@
// Переключаем на новую страницу
Элементы[НастройкиМастера.ГруппаСтраниц].ТекущаяСтраница = Элементы[ОписаниеШага.Страница];
+ // Обход особенности платформы
+ ГруппаСтраницМастера = Элементы[НастройкиМастера.ГруппаСтраниц];
+ НоваяТекущаяСтраница = Элементы[ОписаниеШага.Страница];
+ ВидГруппыСтраница = ВидГруппыФормы.Страница;
+ ТипГруппаФормы = Тип("ГруппаФормы");
+ Для Каждого Страница Из ГруппаСтраницМастера.ПодчиненныеЭлементы Цикл
+ Если ТипЗнч(Страница) = ТипГруппаФормы И Страница.Вид = ВидГруппыСтраница Тогда
+ Страница.Видимость = (Страница = НоваяТекущаяСтраница);
+ КонецЕсли;
+ КонецЦикла;
// Обновляем кнопки
ОбновитьСвойстваКнопкиМастера(НастройкиМастера.КнопкаДалее, ОписаниеШага.КнопкаДалее);
@@ -1434,6 +1456,7 @@
КонецПроцедуры
// Может быть номер шага или группа-страница, или ее идентификатор
+//
&НаКлиенте
Функция НомерШагаМастераПоИдентификатору(Знач ИдентификаторШага)
НастройкиМастера = ЭтотОбъект.НастройкиПошаговогоМастера;
@@ -1509,19 +1532,18 @@
// Получает состояние текущей длительной операцию
//
-// Возвращаемое значение - Структура - Описание состояния с полями:
-// Завершено - Булево - Флаг активности длительной операции
-// ИнформацияОбОшибке - ИнформацияОбОшибке - Если операция завершилась аварийно, то содержит информацию почему
-// СообщенияПользователю - ФиксированныйМассив - Объекты типа "СообщениеПользователю"
-// Результат - Произвольный - Если длительное задание было запущено с флагом возвращения результата,
-// то содержит текущее значение результата.
+// Возвращаемое значение:
+// Структура - Описание состояния с полями:
+// * Завершено - Булево - Флаг активности длительной операции
+// * ИнформацияОбОшибке - ИнформацияОбОшибке - Если операция завершилась аварийно, то содержит информацию почему
+// * Результат - Произвольный - Если длительное задание было запущено с флагом возвращения результата,
+// то содержит текущее значение результата.
//
&НаСервере
Функция СостояниеДлительнойОперацииМастера()
НастройкиМастера = ЭтотОбъект.НастройкиПошаговогоМастера;
Данные = Новый Структура("Завершено, Результат, ИнформацияОбОшибке", Истина);
- Данные.Вставить("СообщенияПользователю", Новый ФиксированныйМассив(Новый Массив));
Если НастройкиМастера.ИдентификаторФоновогоЗадания = Неопределено Тогда
Возврат Данные;
@@ -1535,10 +1557,12 @@
КонецЕсли;
Данные.Завершено = Задание.Состояние <> СостояниеФоновогоЗадания.Активно;
Если Данные.Завершено Тогда
- // Неперехваченные сообщения фонового задания
+ // Текущие сообщения фонового задания
НакопленныеСообщения = Задание.ПолучитьСообщенияПользователю(Истина);
Если НакопленныеСообщения <> Неопределено Тогда
- Данные.СообщенияПользователю = НакопленныеСообщения;
+ Для Каждого Сообщение Из НакопленныеСообщения Цикл
+ Сообщение.Сообщить();
+ КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
diff --git a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/МногострочноеПредупреждение/Form.form b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/МногострочноеПредупреждение/Form.form
index 695cbe39b..944cc97f8 100644
--- a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/МногострочноеПредупреждение/Form.form
+++ b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/МногострочноеПредупреждение/Form.form
@@ -113,7 +113,7 @@
truetrue
- 10
+ 6truetruetrue
diff --git a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Form.form b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Form.form
index 15a495a14..f0df112ef 100644
--- a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Form.form
+++ b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Form.form
@@ -570,6 +570,7 @@
Lefttrue
+ 10truetruefalse
@@ -620,6 +621,7 @@
ShowAlways
+ 15truetruefalse
@@ -665,6 +667,7 @@
Lefttrue
+ 15truetruefalse
@@ -1016,7 +1019,7 @@
truetrue
- 88
+ 69truetruetrue
@@ -1162,7 +1165,7 @@
Labeltrue
- 3
+ 2trueStyle.ПоясняющийТекст
@@ -1838,8 +1841,10 @@
Lefttrue
+ 10truetrue
+ falsetruetruetrue
@@ -2017,6 +2022,7 @@
Treetruetrue
+ 6truetrueMultiRow
@@ -2337,7 +2343,6 @@
UsualGroupAuto
- NormalSeparationtruetrueAuto
diff --git a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Help/ru.html b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Help/ru.html
index c18612b37..935cab9db 100644
--- a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Help/ru.html
+++ b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Help/ru.html
@@ -1,6 +1,5 @@
-
+
Предназначено для устранения дублирующихся данных.
-
Объединение элементов доступно в списках программы по команде Все действия - Объединить выделенные.
В списке элементов для объединения выводится:
Наименование,
Код,
diff --git a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Module.bsl b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Module.bsl
index b2bf44cdd..7fa40bd1a 100644
--- a/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Module.bsl
+++ b/SSL/src/DataProcessors/ЗаменаСсылок/Forms/ОбъединениеЭлементов/Module.bsl
@@ -1,7 +1,8 @@
// Форма параметризуется
//
// Параметры:
-// СписокСсылок - Массив, СписокЗначений, Коллекция элементов, обладающих полем "Ссылка" - набор
+// СписокСсылок - Массив, СписокЗначений - набор ссылок для анализа
+// Может быть коллекцией элементов, обладающих полем "Ссылка"
//
// Флаг подтверждения, используется при не модальном закрытии
@@ -69,10 +70,10 @@
// ОБРАБОТЧИКИ СОБЫТИЙ ШАПКИ ФОРМЫ
&НаКлиенте
-Процедура ПодсказкаВыбораОсновногоЭлементаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
+Процедура ПодсказкаВыбораОсновногоЭлементаОбработкаНавигационнойСсылки(Элемент, ЗначениеНавигационнойСсылки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
- Если НавигационнаяСсылка = "ПереключениеРежимаУдаления" Тогда
+ Если ЗначениеНавигационнойСсылки = "ПереключениеРежимаУдаления" Тогда
Если ТекущийВариантУдаления = "Непосредственно" Тогда
ТекущийВариантУдаления = "Пометка"
Иначе
@@ -510,7 +511,7 @@
Закрыть();
КонецПроцедуры
-&НаКлиенте
+&НаСервере
Процедура СформироватьПодсказкуОбъединения()
Если ЕстьПравоБезвозвратногоУдаления Тогда
@@ -684,6 +685,7 @@
ПараметрыЗамены = Новый Структура;
ПараметрыЗамены.Вставить("СпособУдаления", ТекущийВариантУдаления);
ПараметрыЗамены.Вставить("ВключатьБизнесЛогику", Истина);
+ ПараметрыЗамены.Вставить("ЗаменаПарыВТранзакции", Ложь);
ПараметрыМетода.Добавить(ПараметрыЗамены);
@@ -775,6 +777,7 @@
КонецФункции
// Преобразует массив, список значений или коллекцию в массив
+//
&НаСервереБезКонтекста
Функция МассивСсылокИзНабора(Знач Ссылки)
@@ -830,14 +833,20 @@
КонецЕсли;
КонецПроцедуры
-// Возвращает код справочника и т.п. если он есть по метаданным, Неопределено, если кода нет
+// Возвращаемое значение:
+// Произвольный - код справочника и т.п. если он есть по метаданным,
+// Неопределено - если кода нет
+//
&НаСервереБезКонтекста
Функция ВозможныйКодСсылки(Знач Ссылка, КэшМетаданных)
Данные = ОписаниеМетаПоСсылке(Ссылка, КэшМетаданных);
Возврат ?(Данные.ЕстьКод, Ссылка.Код, Неопределено);
КонецФункции
-// Возвращает владельца справочника и т.п. если он есть по метаданным, Неопределено, если владельца нет
+// Возвращаемое значение:
+// Произвольный - владелец справочника если он есть по метаданным,
+// Неопределено - если владельца нет
+//
&НаСервереБезКонтекста
Функция ВозможныйВладелецСсылки(Знач Ссылка, КэшМетаданных)
Данные = ОписаниеМетаПоСсылке(Ссылка, КэшМетаданных);
@@ -848,10 +857,6 @@
&НаСервереБезКонтекста
Функция ОписаниеМетаПоСсылке(Знач Ссылка, КэшМетаданных)
- Если Ссылка = Неопределено Тогда
- Возврат Новый Структура("ЕстьКод, ЕстьВладелец", Ложь, Ложь);
- КонецЕсли;
-
Мета = Ссылка.Метаданные();
Данные = КэшМетаданных[Мета];
@@ -1366,39 +1371,39 @@
//
// Действия - Структура - Описание действий, возможных на текущем шаге. Поля структуры:
//
-// ПриАктивации - Строка - Необязательное имя процедуры, которая будет выполнена перед активацией страницы
-// с двумя параметрами:
-// <Страница> - ГруппаФормы - группа-страница, которая активизируется
-// <ДополнительныеПараметры> - Неопределено
-//
-// ПередДействиемДалее - Строка - Необязательное имя процедуры, которая будет выполнена при нажатии кнопки "Далее",
-// перед переходом на следующую страницу. Процедура будет вызвана с двумя параметрами:
-// <ПараметрыШага> - служебный реквизит. При успешном завершении цепочки немодальных
-// вызовов последняя процедура-обработчик должна произвести вызов
-// ЗавершитьШагМастера(ПараметрыШага), подтверждая действие.
+// * ПриАктивации - Строка - Необязательное имя процедуры, которая будет выполнена перед активацией страницы
+// с двумя параметрами:
+// <Страница> - ГруппаФормы - группа-страница, которая активизируется
// <ДополнительныеПараметры> - Неопределено
//
-// ПередДействиемНазад - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Назад"
+// * ПередДействиемДалее - Строка - Необязательное имя процедуры, которая будет выполнена при нажатии кнопки "Далее",
+// перед переходом на следующую страницу. Процедура будет вызвана с двумя параметрами:
+// <ПараметрыШага> - служебный реквизит. При успешном завершении цепочки немодальных
+// вызовов последняя процедура-обработчик должна произвести вызов
+// ЗавершитьШагМастера(ПараметрыШага), подтверждая действие.
+// <ДополнительныеПараметры> - Неопределено
//
-// ПередДействиемОтмена - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Отмена"
+// * ПередДействиемНазад - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Назад"
//
-// ПриОбработкеОжидания - Строка - Необязательное имя процедуры, которая будет периодически вызываться с двумя
-// параметрами:
-// <Прекратить> - Если при выходе из процедуры установить в значение Истина, то
-// периодические вызовы будут прекращены.
-// <ДополнительныеПараметры> - Неопределено
+// * ПередДействиемОтмена - Строка - Аналогично ПередДействиемДалее, описывает поведение при нажатии кнопки "Отмена"
+//
+// * ПриОбработкеОжидания - Строка - Необязательное имя процедуры, которая будет периодически вызываться с двумя
+// параметрами:
+// <Прекратить> - Если при выходе из процедуры установить в значение Истина, то
+// периодические вызовы будут прекращены.
+// <ДополнительныеПараметры> - Неопределено
//
// Кнопки - Структура - описание кнопок на текущем шаге. Поля структуры:
//
-// Далее - Структура - Описание кнопки "Далее". поля: Заголовок, Подсказка, Доступность, Видимость, КнопкаПоУмолчанию.
-// Пустая подсказка заменяется на заголовок. По умолчанию будут использованы значения:
-// Заголовок = "Далее >", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Истина;
+// * Далее - Структура - Описание кнопки "Далее". поля: Заголовок, Подсказка, Доступность, Видимость, КнопкаПоУмолчанию.
+// Пустая подсказка заменяется на заголовок. По умолчанию будут использованы значения:
+// Заголовок = "Далее >", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Истина;
//
-// Назад - Структура - Аналогично кнопке "Далее", значения по умолчанию:
-// Заголовок = "< Назад", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
+// * Назад - Структура - Аналогично кнопке "Далее", значения по умолчанию:
+// Заголовок = "< Назад", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
//
-// Отмена - Структура - Аналогично кнопке "Далее", значения по умолчанию:
-// Заголовок = "Отмена", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
+// * Отмена - Структура - Аналогично кнопке "Далее", значения по умолчанию:
+// Заголовок = "Отмена", Доступность = Истина, Видимость = Истина, КнопкаПоУмолчанию = Ложь;
//
// Для составления параметров рекомендуется использовать вспомогательные методы "ДобавитьШагМастера", "ДействиеШагаМастера", "КнопкаШагаМастера"
//
@@ -1674,6 +1679,16 @@
// Переключаем на новую страницу
Элементы[НастройкиМастера.ГруппаСтраниц].ТекущаяСтраница = Элементы[ОписаниеШага.Страница];
+ // Обход особенности платформы
+ ГруппаСтраницМастера = Элементы[НастройкиМастера.ГруппаСтраниц];
+ НоваяТекущаяСтраница = Элементы[ОписаниеШага.Страница];
+ ВидГруппыСтраница = ВидГруппыФормы.Страница;
+ ТипГруппаФормы = Тип("ГруппаФормы");
+ Для Каждого Страница Из ГруппаСтраницМастера.ПодчиненныеЭлементы Цикл
+ Если ТипЗнч(Страница) = ТипГруппаФормы И Страница.Вид = ВидГруппыСтраница Тогда
+ Страница.Видимость = (Страница = НоваяТекущаяСтраница);
+ КонецЕсли;
+ КонецЦикла;
// Обновляем кнопки
ОбновитьСвойстваКнопкиМастера(НастройкиМастера.КнопкаДалее, ОписаниеШага.КнопкаДалее);
@@ -1796,19 +1811,18 @@
// Получает состояние текущей длительной операцию
//
-// Возвращаемое значение - Структура - Описание состояния с полями:
-// Завершено - Булево - Флаг активности длительной операции
-// ИнформацияОбОшибке - ИнформацияОбОшибке - Если операция завершилась аварийно, то содержит информацию почему
-// СообщенияПользователю - ФиксированныйМассив - Объекты типа "СообщениеПользователю"
-// Результат - Произвольный - Если длительное задание было запущено с флагом возвращения результата,
-// то содержит текущее значение результата.
+// Возвращаемое значение:
+// Структура - Описание состояния с полями:
+// * Завершено - Булево - Флаг активности длительной операции
+// * ИнформацияОбОшибке - ИнформацияОбОшибке - Если операция завершилась аварийно, то содержит информацию почему
+// * Результат - Произвольный - Если длительное задание было запущено с флагом возвращения результата,
+// то содержит текущее значение результата.
//
&НаСервере
Функция СостояниеДлительнойОперацииМастера()
НастройкиМастера = ЭтотОбъект.НастройкиПошаговогоМастера;
Данные = Новый Структура("Завершено, Результат, ИнформацияОбОшибке", Истина);
- Данные.Вставить("СообщенияПользователю", Новый ФиксированныйМассив(Новый Массив));
Если НастройкиМастера.ИдентификаторФоновогоЗадания = Неопределено Тогда
Возврат Данные;
@@ -1822,10 +1836,12 @@
КонецЕсли;
Данные.Завершено = Задание.Состояние <> СостояниеФоновогоЗадания.Активно;
Если Данные.Завершено Тогда
- // Неперехваченные сообщения фонового задания
+ // Текущие сообщения фонового задания
НакопленныеСообщения = Задание.ПолучитьСообщенияПользователю(Истина);
Если НакопленныеСообщения <> Неопределено Тогда
- Данные.СообщенияПользователю = НакопленныеСообщения;
+ Для Каждого Сообщение Из НакопленныеСообщения Цикл
+ Сообщение.Сообщить();
+ КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
diff --git a/SSL/src/DataProcessors/ЗаменаСсылок/ManagerModule.bsl b/SSL/src/DataProcessors/ЗаменаСсылок/ManagerModule.bsl
index 4427dfde0..caf6e8104 100644
--- a/SSL/src/DataProcessors/ЗаменаСсылок/ManagerModule.bsl
+++ b/SSL/src/DataProcessors/ЗаменаСсылок/ManagerModule.bsl
@@ -2,7 +2,8 @@
#Область СлужебныйПрограммныйИнтерфейс
-// Возвращает имя события для оповещения о замене
+// Возвращаемое значение:
+// Строка - имя события для оповещения о замене
//
Функция СобытиеОповещенияОЗамене() Экспорт
Возврат "ПроизведенаЗаменаСсылок";
diff --git a/SSL/src/DataProcessors/ЗаменаСсылок/ЗаменаСсылок.mdo b/SSL/src/DataProcessors/ЗаменаСсылок/ЗаменаСсылок.mdo
index e4b41c37e..0a6cf235b 100644
--- a/SSL/src/DataProcessors/ЗаменаСсылок/ЗаменаСсылок.mdo
+++ b/SSL/src/DataProcessors/ЗаменаСсылок/ЗаменаСсылок.mdo
@@ -11,6 +11,7 @@
trueDataProcessor.ЗаменаСсылок.Form.ЗаменаЭлементов
+ trueЗаменаЭлементов
diff --git a/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Help/ru.html b/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Help/ru.html
new file mode 100644
index 000000000..f5d088307
--- /dev/null
+++ b/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Help/ru.html
@@ -0,0 +1,28 @@
+
+
Предназначена для просмотра событий доступа к персональным данным, зарегистрированным в программе.
+
Открывается по команде Защита персональных данных в разделе Администрирование - Поддержка и обслуживание.
+
Согласно Федеральному закону от 27.06.2006 №152-Ф3 "О персональных данных" и подзаконным актам в программе реализована регистрация следующих событий:
+
вход в программу;
+
выход из программы;
+
аутентификация;
+
отказ в аутентификации;
+
доступ к персональным данным;
+
отказ в доступе к персональным данным.
В программе могут регистрироваться события доступа к персональным данным с указанием субъекта. Для этого необходимо настроить регистрацию событий доступа к персональным данным.
+
Регистрация почти всех событий (кроме событий доступа к персональным данным) в программе выполняется по умолчанию. Для регистрации событий доступа к персональным данным физических лиц администратору программы необходимо выполнить команду Поддержка и обслуживание - Регистрация событий доступа к персональным данным раздела Администрирование. Далее необходимо установить флажок Личные данные для регистрации доступа к личным данным, установить флажок Паспортные данные для регистрации доступа к паспортным данным. После этого программа автоматически регистрирует события доступа к этим данным в списке событий.
+
Администратор открывает список событий, устанавливает отбор по периоду и по событию, получает список зарегистрированных в программе событий. Полученный список можно вывести на печать стандартными средствами программы.
+
События, связанные с защитой персональных данных, фиксируются в программе автоматически. Зарегистрированные в программе события можно увидеть в списке.
+
Каждое событие фиксируется в отдельной строке списка. Важные события (с точки зрения доступа к персональным данным) выделяются в списке цветом. В списке выводится:
+
Дата, время - помимо даты и времени значком отображается вид события;
+
Событие - наименование события;
+
Пользователь, связанный с событием;
+
Сведения о событии - дополнительная информация о событии (текущий пользователь ОС, который заходил в программу, справочник программы, связанный с персональными данными, в который заходил пользователь и т.п.).
Просмотр события
+
+
Для просмотра детальной информации о событии можно воспользоваться двойным щелчком мыши или кнопкой Просмотр текущего события.
+
+
Также можно воспользоваться командой контекстного меню по правой кнопке мыши или меню Еще.
Отбор событий
+
В списке показаны не все события, а то количество, которое задано в поле Количество отбираемых событий.
+
С помощью кнопки Установить интервал дат для просмотра можно управлять интервалом показа событий, также можно воспользоваться двойным щелчком по содержимому колонки Дата, время.
+
С помощью кнопок Установить отбор по значению в текущей колонке и Отключить отбор можно управлять отбором событий.
+
Для этого выделите нужное событие в списке (например, Доступ), затем нажмите кнопку Установить отбор по значению в текущей колонке.
Также можно воспользоваться командами контекстного меню по правой кнопке мыши или меню Еще.
diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl
index 14069a877..8b5173f79 100644
--- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl
+++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl
@@ -7,8 +7,10 @@
// Опирается на значения реквизитов "УзелИнформационнойБазы", "ДополнительнаяРегистрация"
//
// Параметры:
-// СписокИменМетаданных: массив (или перечислимое с полем "ПолноеИмяМетаданных") полных имен
-// метаданных для ограничения запроса
+// СписокИменМетаданных - Массив - содержит строки с полными именами метаданных для ограничения запроса
+// Может быть коллекцией элементов с полем "ПолноеИмяМетаданных"
+// Возвращаемое значение:
+// ТабличныйДокумент - отчет
//
Функция СформироватьТабличныйДокумент(СписокИменМетаданных=Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -28,10 +30,13 @@
КонецФункции
// Запускает фоновое задание для дополнительной регистрации
-// Возвращает идентификатор фонового задания (или Неопределено для файловой базы)
//
// Параметры:
-// АдресОбъекта: адрес временного хранилища с параметрами дополнительной регистрации
+// АдресОбъекта - Строка, УникальныйИдентификатор - адрес временного хранилища с параметрами дополнительной регистрации
+//
+// Возвращаемое значение:
+// УникальныйИдентификатор - идентификатор фонового задания
+// Неопределено - если задание уже выполнено
//
Функция ФоноваяРегистрацияДополнительныхИзменений() Экспорт
@@ -50,7 +55,6 @@
КонецФункции
// Запускает фоновое задание для формирования отчета.
-// Возвращает идентификатор фонового задания (или Неопределено для файловой базы)
// Опирается на значения реквизитов "УзелИнформационнойБазы", "ДополнительнаяРегистрация"
//
// Параметры:
@@ -59,6 +63,10 @@
// Представление - Строка - параметр отчета
// УпрощенныйРежим - Булево - параметр формирования отчета, влияет на состав печатной формы
//
+// Возвращаемое значение:
+// УникальныйИдентификатор - идентификатор фонового задания
+// Неопределено - если задание уже выполнено
+//
Функция ФоновоеФормированиеТабличногоДокументаПользователя(АдресРезультата, ПолноеИмяМетаданных="", Представление="", УпрощенныйРежим=Ложь) Экспорт
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
@@ -80,12 +88,15 @@
КонецФункции
// Запускает фоновое задание для формирования дерева значений с данными.
-// Возвращает идентификатор фонового задания (или Неопределено для файловой базы)
// Опирается на значения реквизитов "УзелИнформационнойБазы", "ДополнительнаяРегистрация"
//
// Параметры:
-// АдресРезультата: адрес во временном хранилище, куда будет помещен результат
-// СписокИменМетаданных: параметр отчета
+// АдресРезультата - Строка, УникальныйИдентификатор - адрес во временном хранилище, куда будет помещен результат
+// СписокИменМетаданных - Массив - строки - имена для отчета
+//
+// Возвращаемое значение:
+// УникальныйИдентификатор - идентификатор фонового задания
+// Неопределено - если задание уже выполнено
//
Функция ФоновоеФормированиеДереваЗначений(АдресРезультата, СписокИменМетаданных=Неопределено) Экспорт
@@ -108,6 +119,14 @@
// Возвращает пользовательский отчет в виде табличного документа.
// Опирается на значения реквизитов "УзелИнформационнойБазы", "ДополнительнаяРегистрация"
//
+// Параметры:
+// ПолноеИмяМетаданных - Строка - ограничение
+// Представление - Строка - параметр результата
+// УпрощенныйРежим - Булево - выбор макета
+//
+// Возвращаемое значение:
+// ТабличныйДокумент - отчет
+//
Функция СформироватьТабличныйДокументПользователя(ПолноеИмяМетаданных="", Представление="", УпрощенныйРежим=Ложь) Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -185,10 +204,10 @@
// Опирается на значения реквизитов "УзелИнформационнойБазы", "ДополнительнаяРегистрация"
//
// Параметры:
-// СписокИменМетаданных: массив (или перечислимое с полем "ПолноеИмяМетаданных") полных имен
-// метаданных для ограничения запроса
+// СписокИменМетаданных - Массив - полные имена метаданных для ограничения запроса.
+// Может быть коллекцией элементов с полем "ПолноеИмяМетаданных"
//
-Функция СформироватьДеревоЗначений(СписокИменМетаданных=Неопределено) Экспорт
+Функция СформироватьДеревоЗначений(СписокИменМетаданных = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ДанныеКомпоновки = ИнициализироватьКомпоновщик(СписокИменМетаданных);
@@ -209,9 +228,12 @@
// Инициализирует весь объект
//
// Параметры:
-// Источник: адрес объекта-источника во временном хранилище или данные
+// Источник - Строка, УникальныйИдентификатор - адрес объекта-источника во временном хранилище или данные
//
-Функция ИнициализироватьЭтотОбъект(Знач Источник="") Экспорт
+// Возвращаемое значение:
+// ОбработкаОбъект - ИнтерактивноеИзменениеВыгрузки
+//
+Функция ИнициализироватьЭтотОбъект(Знач Источник = "") Экспорт
Если ТипЗнч(Источник)=Тип("Строка") Тогда
Если ПустаяСтрока(Источник) Тогда
@@ -249,7 +271,10 @@
// Сохраняет данные этого объекта во временном хранилище
//
// Параметры:
-// АдресХранилища: идентификатор формы хранилища или адрес для помещения
+// АдресХранилища - Строка, УникальныйИдентификатор - идентификатор формы хранилища или адрес для помещения
+//
+// Возвращаемое значение:
+// Строка - адрес сохраненного
//
Функция СохранитьЭтотОбъект(Знач АдресХранилища) Экспорт
Данные = Новый Структура;
@@ -268,12 +293,12 @@
// Опирается на значения реквизитов "УзелИнформационнойБазы", "ДополнительнаяРегистрация"
//
// Параметры:
-// АдресСохраненияСхемы: адрес временного хранилища для сохранения схемы компоновки
-// (обход особенности платформы)
+// АдресСохраненияСхемы - Строка, УникальныйИдентификатор - адрес временного хранилища для сохранения схемы компоновки
//
-// Возвращаемое значение - Структура с полями
-// Настройки - НастройкиКомпоновкиДанных - Настройки компоновщика
-// СхемаКомпоновки - СхемаКомпоновкиДанных - Схема компоновки
+// Возвращаемое значение:
+// Структура - поля:
+// * Настройки - НастройкиКомпоновкиДанных - Настройки компоновщика
+// * СхемаКомпоновки - СхемаКомпоновкиДанных - Схема компоновки
//
Функция КомпоновщикНастроекОбщегоОтбора(АдресСохраненияСхемы=Неопределено) Экспорт
@@ -297,15 +322,17 @@
// Возвращает компоновщик для отборов одного вида метаданных узла "УзелИнформационнойБазы"
//
// Параметры:
-// ПолноеИмяМетаданных: имя таблицы для построения компоновщика. Возможно там будут
-// идентификаторы для "всех документов" или "всех справочников"
-// или ссылка на группу.
-// Представление: представление объекта в отборе
-// Отбор: отбор компоновки для заполнения
-// АдресСохраненияСхемы: адрес временного хранилища для сохранения схемы компоновки
-// (обход особенности платформы)
+// ПолноеИмяМетаданных - Строка - имя таблицы для построения компоновщика. Возможно там будут
+// идентификаторы для "всех документов" или "всех справочников"
+// или ссылка на группу.
+// Представление - Строка - представление объекта в отборе
+// Отбор - ОтборКомпоновкиДанных - отбор компоновки для заполнения
+// АдресСохраненияСхемы - Строка, УникальныйИдентификатор - адрес временного хранилища для сохранения схемы компоновки
//
-Функция КомпоновщикНастроекПоИмениТаблицы(ПолноеИмяМетаданных, Представление=Неопределено, Отбор=Неопределено, АдресСохраненияСхемы=Неопределено) Экспорт
+// Возвращаемое значение:
+// КомпоновщикНастроекКомпоновкиДанных - инициализированный компоновщик
+//
+Функция КомпоновщикНастроекПоИмениТаблицы(ПолноеИмяМетаданных, Представление = Неопределено, Отбор = Неопределено, АдресСохраненияСхемы = Неопределено) Экспорт
СхемаКомпоновки = Новый СхемаКомпоновкиДанных;
@@ -331,18 +358,23 @@
Возврат Компоновщик;
КонецФункции
-// Возвращает префикс для получения имен форм текущего объекта
+// Возвращаемое значение:
+// Строка - префикс для получения имен форм текущего объекта
//
Функция БазовоеИмяДляФормы() Экспорт
Возврат Метаданные().ПолноеИмя() + "."
КонецФункции
-// Возвращает заголовок для формирования представления отбора по всем документам
+// Возвращаемое значение:
+// Строка - заголовок для формирования представления отбора по всем документам
+//
Функция ЗаголовокГруппыОтбораВсехДокументов() Экспорт
Возврат НСтр("ru='Все документы'");
КонецФункции
-// Возвращает заголовок для формирования представления отбора по всем справочникам
+// Возвращаемое значение:
+// Строка - заголовок для формирования представления отбора по всем справочникам
+//
Функция ЗаголовокГруппыОтбораВсехСправочников() Экспорт
Возврат НСтр("ru='Все справочники'");
КонецФункции
@@ -350,20 +382,20 @@
// Возвращает описание периода и отбора строкой
//
// Параметры:
-// Период: период для описания отбора
-// Отбор: отбор компоновки данных для описания
-// ОписаниеПустогоОтбора: значение, возвращаемое в случае пустого отбора
+// Период - СтандартныйПериод - период для описания отбора
+// Отбор - ОтборКомпоновкиДанных - отбор компоновки данных для описания
+// ОписаниеПустогоОтбора - Строка - значение, возвращаемое в случае пустого отбора
//
-Функция ПредставлениеОтбора(Период, Отбор, Знач ОписаниеПустогоОтбора=Неопределено) Экспорт
+Функция ПредставлениеОтбора(Период, Отбор, Знач ОписаниеПустогоОтбора = Неопределено) Экспорт
Возврат ОбменДаннымиСервер.ПредставлениеОтбораДополненияВыгрузки(Период, Отбор, ОписаниеПустогоОтбора);
КонецФункции
// Возвращает описание периода и отбора по реквизитам "ПериодОтбораВсехДокументов" и "КомпоновщикОтбораВсехДокументов"
//
// Параметры:
-// ОписаниеПустогоОтбора: значение, возвращаемое в случае пустого отбора
+// ОписаниеПустогоОтбора - Строка - значение, возвращаемое в случае пустого отбора
//
-Функция ПредставлениеОтбораВсехДокументов(Знач ОписаниеПустогоОтбора=Неопределено) Экспорт
+Функция ПредставлениеОтбораВсехДокументов(Знач ОписаниеПустогоОтбора = Неопределено) Экспорт
Если ОписаниеПустогоОтбора=Неопределено Тогда
ОписаниеПустогоОтбора = ЗаголовокГруппыОтбораВсехДокументов();
@@ -375,7 +407,7 @@
// Возвращает описание детального отбора по реквизиту "ДополнительнаяРегистрация"
//
// Параметры:
-// ОписаниеПустогоОтбора: значение, возвращаемое в случае пустого отбора
+// ОписаниеПустогоОтбора - Строка - значение, возвращаемое в случае пустого отбора
//
Функция ПредставлениеДетальногоОтбора(Знач ОписаниеПустогоОтбора=Неопределено) Экспорт
Возврат ОбменДаннымиСервер.ПредставлениеДетальногоДополненияВыгрузки(ДополнительнаяРегистрация, ОписаниеПустогоОтбора);
@@ -388,25 +420,24 @@
Возврат ОбменДаннымиСервер.ДополнениеВыгрузкиИдентификаторВсехДокументов();
КонецФункции
-//
-// Идентификатор служебной группы объектов метаданных "Все справочники"
+// Возвращаемое значение:
+// Строка - идентификатор служебной группы объектов метаданных "Все справочники"
//
Функция ИдентификаторВсехСправочников() Экспорт
// Не должно пересекаться с полным именем метаданных
Возврат ОбменДаннымиСервер.ДополнениеВыгрузкиИдентификаторВсехСправочников();
КонецФункции
-//
// Добавляет отбор в конец отбора с возможной коррекцией полей
//
// Параметры:
-// ЭлементыПриемника: КоллекцияЭлементовОтбораКомпоновкиДанных - приемник
-// ЭлементыИсточника: КоллекцияЭлементовОтбораКомпоновкиДанных - источник
-// СоответствиеПолей: Коллекция объектов КлючИЗначение, у которых
-// Ключ - исходный путь к данным поля, Значение - путь
-// для результата. Например для замены полей типа
-// "Ссылка.Наименование" -> "ОбъектРегистрации.Наименование"
-// надо передать Новый Структура("Ссылка", "ОбъектРегистрации")
+// ЭлементыПриемника - КоллекцияЭлементовОтбораКомпоновкиДанных - приемник
+// ЭлементыИсточника - КоллекцияЭлементовОтбораКомпоновкиДанных - источник
+// СоответствиеПолей - Коллекция объектов КлючИЗначение, у которых
+// Ключ - исходный путь к данным поля, Значение - путь
+// для результата. Например для замены полей типа
+// "Ссылка.Наименование" -> "ОбъектРегистрации.Наименование"
+// надо передать Новый Структура("Ссылка", "ОбъектРегистрации")
//
Процедура ДобавитьЗначенияОтбораКомпоновки(ЭлементыПриемника, ЭлементыИсточника, СоответствиеПолей=Неопределено) Экспорт
@@ -442,8 +473,12 @@
// Возвращает элемент списка значений по представлению
//
// Параметры:
-// СписокЗначений: список для поиска
-// Представление: параметр для поиска
+// СписокЗначений - СписокЗначений - список для поиска
+// Представление - Строка - параметр для поиска
+//
+// Возвращаемое значение:
+// ЭлементСписка - найденный элемент
+// Неопределено - если элемент не найден
//
Функция НайтиПоПредставлениюЭлементСписка(СписокЗначений, Представление) Экспорт
Для Каждого ЭлементСписка Из СписокЗначений Цикл
@@ -458,7 +493,7 @@
//
Процедура ЗарегистрироватьДополнительныеИзменения() Экспорт
- Если ВариантВыгрузки<=0 Тогда
+ Если ВариантВыгрузки <= 0 Тогда
// без изменений
Возврат;
КонецЕсли;
@@ -468,7 +503,7 @@
УстановитьПривилегированныйРежим(Истина);
Для Каждого СтрокаГруппы Из ДеревоИзменений.Строки Цикл
Для Каждого Строка Из СтрокаГруппы.Строки Цикл
- Если Строка.КоличествоДляВыгрузки>0 Тогда
+ Если Строка.КоличествоДляВыгрузки > 0 Тогда
ОбменДаннымиСобытия.ЗарегистрироватьИзмененияДанных(УзелИнформационнойБазы, Строка.ОбъектРегистрации, Ложь);
КонецЕсли;
КонецЦикла;
@@ -484,6 +519,9 @@
// Варианты - Массив - если указано, то фильтруем восстанавливаемые настройки по вариантам
// 0 - без отбора, 1 - отбор всех документов, 2 - подробный, 3 - сценарий узла
//
+// Возвращаемое значение:
+// СписокЗначений - возможные настройки
+//
Функция ПрочитатьПредставленияСпискаНастроек(УзелОбмена=Неопределено, Варианты=Неопределено) Экспорт
ПараметрыНастроек = СтруктураПараметровНастроек(УзелОбмена);
@@ -543,8 +581,8 @@
// Сохраняет значения реквизитов текущего объекта в настройки с указанным представлением
//
// Параметры:
-// АдресВариантовНастроек: адрес во временном хранилище списка значений настроек
-// Представление: представление сохраняемых настроек
+// АдресВариантовНастроек - Строка, УникальныйИдентификатор -адрес во временном хранилище списка значений настроек
+// Представление: - Строка - представление настроек
//
Процедура СохранитьТекущееВНастройки(Представление) Экспорт
СписокВариантов = ПрочитатьСписокНастроек();
@@ -575,8 +613,8 @@
// Удаляет вариант настроек из списка
//
// Параметры:
-// АдресВариантовНастроек: адрес во временном хранилище списка значений настроек
-// Представление: представление удаляемых настроек
+// АдресВариантовНастроек - Строка, УникальныйИдентификатор -адрес во временном хранилище списка значений настроек
+// Представление: - Строка - представление настроек
//
Процедура УдалитьВариантНастроек(Представление) Экспорт
СписокВариантов = ПрочитатьСписокНастроек();
@@ -594,9 +632,12 @@
// Опирается на текущее значение реквизита "УзелИнформационнойБазы"
//
// Параметры:
-// ПолноеИмяМетаданных - имя таблицы (например "Справочник.Валюты") или имя предопределенной группы
+// ПолноеИмяМетаданных - Строка, ДеревоЗначений- имя таблицы (например "Справочник.Валюты") или имя предопределенной группы
// (например "ВсеДокументы") или дерево значений, описывающее группу
//
+// Возвращаемое значение:
+// Массив - имена метаданных
+//
Функция СоставУкрупненнойГруппыМетаданных(ПолноеИмяМетаданных) Экспорт
Если ТипЗнч(ПолноеИмяМетаданных)<>Тип("Строка") Тогда
@@ -643,13 +684,15 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-//
// Конструктор таблиц значений. Генерирует таблицу с колонками произвольного типа.
//
// Параметры:
-// СписокКолонок: список имен колонок таблицы через запятую.
-// СписокИндексов: список индексов таблицы через запятую.
+// СписокКолонок - Строка - список имен колонок таблицы через запятую.
+// СписокИндексов - Строка - список индексов таблицы через запятую.
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - построенная таблица
//
Функция ТаблицаЗначений(СписокКолонок, СписокИндексов="")
ТаблицаРезультата = Новый ТаблицаЗначений;
@@ -667,11 +710,11 @@
// Добавляет одиночный элемент отбора в список.
//
// Параметры:
-// ЭлементыОтбора: ссылка на проверяемый объект.
-// ПутьПоляКДанным: путь к данным для добавляемого элемента
-// ВидСравнения: вид сравнения для добавляемого элемента
-// Значение: значение сравнения для добавляемого элемента
-// Представление: необязательное представление поля
+// ЭлементыОтбора - ЭлементОтбораКомпоновкиДанных - ссылка на проверяемый объект.
+// ПутьПоляКДанным - Строка - путь к данным для добавляемого элемента
+// ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнения для добавляемого элемента
+// Значение - Произвольный - значение сравнения для добавляемого элемента
+// Представление -Строка - необязательное представление поля
//
Процедура ДобавитьЭлементОтбора(ЭлементыОтбора, ПутьПоляКДанным, ВидСравнения, Значение, Представление=Неопределено)
@@ -689,9 +732,9 @@
// Добавляет в схему компоновки набор данных с одним полем "Ссылка" по имени таблицы
//
// Параметры:
-// СхемаКомпоновкиДанных: схема, в которую происходит добавление
-// ИмяТаблицы: имя таблицы данных
-// Представление: представление для поля "ссылка"
+// СхемаКомпоновкиДанных - СхемаКомпоновкиДанных - схема, в которую происходит добавление
+// ИмяТаблицы: - Строка - имя таблицы данных
+// Представление: - Строка - представление для поля "ссылка"
//
Процедура ДобавитьНаборВСхемуКомпоновки(СхемаКомпоновкиДанных, ИмяТаблицы, Представление=Неопределено)
@@ -715,8 +758,8 @@
// Добавляет в структуру компоновки структуру из коллекции
//
// Параметры:
-// ЭлементыПриемника: КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных - приемник
-// ЭлементыИсточника: КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных - источник
+// ЭлементыПриемника - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных - приемник
+// ЭлементыИсточника - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных - источник
//
Процедура ДобавитьЗначенияСтруктурыКомпоновки(ЭлементыПриемника, ЭлементыИсточника)
Для Каждого Элемент Из ЭлементыИсточника Цикл
@@ -734,17 +777,21 @@
// "УзелИнформационнойБазы", "ДополнительнаяРегистрация",
// "ВариантВыгрузки", "ПериодОтбораВсехДокументов", "КомпоновщикОтбораВсехДокументов"
//
-// Вовзращает структуру с полями "ТаблицаМетаданныхСоставаУзла, СхемаКомпоновки, КомпоновщикНастроек"
-//
// Параметры:
-// СписокИменМетаданных: массив (или перечислимое с полем "ПолноеИмяМетаданных") имен
-// метаданных (деревья значений группы ограничений, служебных идентификаторов
-// "все документов" или "все НСИ"), для которых будет построена схема.
-// Если не указано, то для всего состава узла.
-// ОграничиватьИспользованиеОтбором: флаг того, что компоновка будет инициализирована только
-// для отбора элементов выгрузки
-// АдресСохраненияСхемы: адрес временного хранилища для сохранения схемы компоновки
-// (обход особенности платформы)
+// СписокИменМетаданных - Массив - имена метаданных (деревья значений группы ограничений, служебных идентификаторов
+// "все документов" или "все НСИ"), для которых будет построена схема.
+// Если не указано, то для всего состава узла.
+//
+// ОграничиватьИспользованиеОтбором - Булево - флаг того, что компоновка будет инициализирована только
+// для отбора элементов выгрузки
+//
+// АдресСохраненияСхемы - Строка, УникальныйИдентификатор - адрес временного хранилища для сохранения схемы компоновки
+//
+// Возвращаемое значение:
+// Структура - поля:
+// * ТаблицаМетаданныхСоставаУзла - ТаблицаЗначений - описание состава узла
+// * СхемаКомпоновки - СхемаКомпоновкиДанных - инициированное значение
+// * КомпоновщикНастроек - КомпоновщикНастроекКомпоновкиДанных - инициированное значение
//
Функция ИнициализироватьКомпоновщик(СписокИменМетаданных=Неопределено, ОграничиватьИспользованиеОтбором=Ложь, АдресСохраненияСхемы=Неопределено)
@@ -1079,8 +1126,8 @@
Для Каждого Элемент Из ЭлементыИсточника Цикл
// Ветка разбора аналогична ветке в ДобавитьДополнительныеНаборыКомпоновкиТабличныхЧастей
- Тип=ТипЗнч(Элемент);
- Если Тип=Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
+ Тип = ТипЗнч(Элемент);
+ Если Тип = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
// Группу копируем
ЭлементОтбора = ЭлементыПриемника.Добавить(Тип);
ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент);
@@ -1094,16 +1141,16 @@
// Это элемент, смотрим чтобы попало на нашу табличку
ИмяПоля = Строка(Элемент.ЛевоеЗначение);
- Если ИмяПоля="Ссылка" Тогда
+ Если ИмяПоля = "Ссылка" Тогда
ЭлементОтбора = ЭлементыПриемника.Добавить(Тип);
ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент);
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбъектРегистрации");
Продолжить;
- ИначеЕсли Лев(ИмяПоля, 7)="Ссылка." Тогда
+ ИначеЕсли Лев(ИмяПоля, 7) = "Ссылка." Тогда
ИмяПоля = Сред(ИмяПоля, 8);
- ИначеЕсли Лев(ИмяПоля, 18)="ОбъектРегистрации." Тогда
+ ИначеЕсли Лев(ИмяПоля, 18) = "ОбъектРегистрации." Тогда
ИмяПоля = Сред(ИмяПоля, 19);
Иначе
@@ -1114,7 +1161,7 @@
КонецЕсли;
Позиция = Найти(ИмяПоля, ".");
- ИмяТаблицы = Лев(ИмяПоля, Позиция-1);
+ ИмяТаблицы = Лев(ИмяПоля, Позиция - 1);
МетаТабличнаяЧасть = МетаОбъекта.ТабличныеЧасти.Найти(ИмяТаблицы);
Если Позиция = 0 Тогда
@@ -1190,8 +1237,11 @@
// Возвращает параметры-ключи для сохранения настроек в разрезе плана обмена для всех пользователей
//
// Параметры:
-// УзелОбмена: ссылка на узел обмена для возвращаемых настроек. Если не указано, то используется
-// текущее значение реквизита "УзелИнформационнойБазы"
+// УзелОбмена - ПланОбменаСсылка - ссылка на узел обмена для возвращаемых настроек. Если не указано, то используется
+// текущее значение реквизита "УзелИнформационнойБазы"
+//
+// Возвращаемое значение:
+// ОписаниеНастроек - описание настроек
//
Функция СтруктураПараметровНастроек(УзелОбмена=Неопределено)
Узел = ?(УзелОбмена=Неопределено, УзелИнформационнойБазы, УзелОбмена);
@@ -1221,6 +1271,9 @@
// Варианты - Массив - если указано, то фильтруем восстанавливаемые настройки по вариантам
// 0 - без отбора, 1 - отбор всех документов, 2 - подробный, 3 - сценарий узла
//
+// Возвращаемое значение:
+// СписокЗначений - настройки
+//
Функция ПрочитатьСписокНастроек(Варианты=Неопределено)
ПараметрыНастроек = СтруктураПараметровНастроек();
@@ -1250,7 +1303,7 @@
// Сохраняет список значений настроек для текущего значения "УзелИнформационнойБазы"
//
// Параметры:
-// СписокВариантов: сохраняемый список вариантов
+// СписокВариантов - СписокЗначений - сохраняемый список вариантов
//
Процедура СохранитьСписокНастроек(СписокВариантов)
ПараметрыНастроек = СтруктураПараметровНастроек();
diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Templates/СхемаКомпоновкиДанных/Template.dcs b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Templates/СхемаКомпоновкиДанных/Template.dcs
index 74396de4c..a850ee163 100644
--- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Templates/СхемаКомпоновкиДанных/Template.dcs
+++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Templates/СхемаКомпоновкиДанных/Template.dcs
@@ -247,7 +247,7 @@
ВыгрузкаОбъектаВозможна
- ОбменДаннымиСервер.ВыгрузкаСсылкиРазрешена(&УзелИнформационнойБазы, ОбъектРегистрации)
+ ОбменДаннымиСервер.ВыгрузкаСсылкиИзИнтерактивногоДополненияРазрешена(&УзелИнформационнойБазы, ОбъектРегистрации)ru
diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo
index 076d1472d..23e8a6d67 100644
--- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo
+++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo
@@ -10,6 +10,7 @@
Интерактивное изменение выгрузкиDataProcessor.ИнтерактивноеИзменениеВыгрузки.Form.Форма
+ trueru
diff --git a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl
index 19c3fdce9..4394cccc9 100644
--- a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl
@@ -73,10 +73,16 @@
Если Найти(ИмяОткрываемойСтраницы, СтандартныйПрефикс) > 0 Тогда
ИмяОткрываемойСтраницы = СтрЗаменить(ИмяОткрываемойСтраницы, СтандартныйПрефикс, "");
+ Если Лев(ИмяОткрываемойСтраницы, 1) = "#" Тогда
+ Возврат;
+ КонецЕсли;
ПросмотрСтраницы("ПоВнутреннейСсылке", ИмяОткрываемойСтраницы);
ИначеЕсли Найти(ИмяОткрываемойСтраницы, СтрЗаменить(СтандартныйПрефикс, " ", "%20")) > 0 Тогда
ИмяОткрываемойСтраницы = СтрЗаменить(ИмяОткрываемойСтраницы, "%20", " ");
ИмяОткрываемойСтраницы = СтрЗаменить(ИмяОткрываемойСтраницы, СтандартныйПрефикс, "");
+ Если Лев(ИмяОткрываемойСтраницы, 1) = "#" Тогда
+ Возврат;
+ КонецЕсли;
ПросмотрСтраницы("ПоВнутреннейСсылке", ИмяОткрываемойСтраницы);
Иначе
#Если ТолстыйКлиентОбычноеПриложение Тогда
@@ -213,6 +219,14 @@
ДобавленныеКоманды.Сортировать("Раздел");
Для Каждого СтрокаТаблицы Из ДобавленныеКоманды Цикл
+ СтрокаТаблицы.ЗаголовокФормы = НСтр("ru = 'Информация'");
+
+ МинимальныйПриоритет = Мин(СтрокаТаблицы.Приоритет, МинимальныйПриоритет);
+
+ Если Не ЗначениеЗаполнено(СтрокаТаблицы.НаименованиеСтартовойСтраницы) Тогда
+ Продолжить;
+ КонецЕсли;
+
НаименованиеРаздела = СокрЛП(СтрокаТаблицы.Раздел);
Если НаименованиеТекущегоРаздела <> НаименованиеРаздела Тогда
@@ -229,7 +243,6 @@
КонецЕсли;
- СтрокаТаблицы.ЗаголовокФормы = НСтр("ru = 'Информация'");
Если ТекущееПодменю <> Элементы.БезПодменю Тогда
СтрокаТаблицы.ЗаголовокФормы = СтрокаТаблицы.ЗаголовокФормы + ": " + СтрокаТаблицы.Раздел +" / "+ СтрокаТаблицы.НаименованиеСтартовойСтраницы;
КонецЕсли;
@@ -243,8 +256,6 @@
Кнопка = Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), ТекущееПодменю);
Кнопка.ИмяКоманды = ИмяКоманды;
- МинимальныйПриоритет = Мин(СтрокаТаблицы.Приоритет, МинимальныйПриоритет);
-
КонецЦикла;
Если МинимальныйПриоритет = 100 Тогда
diff --git a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html
index 500791f3e..6b2f122af 100644
--- a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html
+++ b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html
@@ -1,7 +1,7 @@
-
-
В этой форме выводится справочная, нормативная и другая информация, поставляемая в составе программы.
-
Для открытия формы откройте Рабочий стол и вызовите команду "Информация при запуске" из группы "Информация" панели действий. При открытии сразу показывается одна из страниц дополнительной информации.
-
В командной панели формы размещены навигационные кнопки "Назад" и "Вперед", с помощью которых осуществляется переход по уже просмотренным страницам, а также пункты меню, соответствующие названиям разделов дополнительной информации. При выборе в командной панели раздела открывается список страниц дополнительной информации, относящихся к данному разделу. Страница показывается в форме при выборе пункта меню с названием страницы.
+
+
Предназначена для просмотра справочной, нормативной и другой информации, поставляемой в составе программы.
+
Для базовых версий показ дополнительной информации при начале работы программы выполняется всегда.
+
Открывается по команде Информация при запуске из группы Информация на странице Главное. При открытии сразу показывается одна из страниц дополнительной информации.
+
В командной панели размещены навигационные кнопки Назад и Вперед, с помощью которых осуществляется переход по уже просмотренным страницам, а также пункты меню, соответствующие названиям разделов дополнительной информации. При выборе в командной панели раздела открывается список страниц дополнительной информации, относящихся к данному разделу. Страница показывается при выборе пункта меню с названием страницы.
Текст страницы может содержать ссылки на другие страницы дополнительной информации (внутренние ссылки), а также ссылки на разделы сайтов, размещенных в сети Интернет (внешние ссылки). Для перехода по внешним ссылкам необходимо, чтобы компьютер имел доступ в сеть Интернет.
-
Для пользователей конфигураций ПРОФ-версий доступна настройка показа дополнительной информации при начале работы программы. Если дополнительная информация показывается в режиме рабочего стола, то в командной панели размещается флажок "Показывать при начале работы". Если снять его установку, то дополнительная информация не будет показываться при начале работы. Флажок "Показывать при начале работы" автоматически сбрасывается два раза в месяц и после обновления версии программы.
-
Для пользователей базовых версий конфигураций показ дополнительной информации при начале работы программы выполняется всегда.
\ No newline at end of file
+
Для ПРОФ-версий доступна настройка показа дополнительной информации при начале работы программы. Если дополнительная информация показывается в режиме рабочего стола, то в командной панели размещается флажок Показывать при начале работы. Если снять флажок, то дополнительная информация не будет показываться при начале работы. Флажок Показывать при начале работы автоматически снимается два раза в месяц и после обновления версии программы.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Form.form b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Form.form
index a759fde3b..0fa392885 100644
--- a/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Form.form
@@ -183,46 +183,6 @@
false
- Задачи
+ ПоказатьЗадачиru
- Задачи в точке маршрута
+ Показать задачи для точки маршрута2
@@ -765,9 +725,6 @@
true
-
- StdPicture.Task
- ЗадачиВыполнить
diff --git a/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Module.bsl
index 205b7e27e..6cd01d6a1 100644
--- a/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Forms/Форма/Module.bsl
@@ -64,9 +64,10 @@
Возврат;
КонецЕсли;
+ ЕстьСостояние = БизнесПроцесс.Метаданные().Реквизиты.Найти("Состояние") <> Неопределено;
СвойстваБизнесПроцесса = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
БизнесПроцесс, "Автор,Дата,ДатаЗавершения,Завершен,Стартован" +
- ?(БизнесПроцесс.Метаданные().Реквизиты.Найти("Состояние") = Неопределено, "", ",Состояние"));
+ ?(ЕстьСостояние, ",Состояние", ""));
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СвойстваБизнесПроцесса);
Если СвойстваБизнесПроцесса.Завершен Тогда
Статус = НСтр("ru = 'Завершен'");
@@ -78,6 +79,9 @@
Статус = НСтр("ru = 'Не стартован'");
Элементы.ГруппаСтатус.ТекущаяСтраница = Элементы.ГруппаНеЗавершен;
КонецЕсли;
+ Если ЕстьСостояние Тогда
+ Статус = Статус + ", " + НРег(Состояние);
+ КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Help/ru.html b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Help/ru.html
new file mode 100644
index 000000000..a8829d28b
--- /dev/null
+++ b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/Help/ru.html
@@ -0,0 +1,47 @@
+
+
Открывается из списка Мои бизнес-процессы или из окна бизнес-процесса (например, Задания) по кнопке Карта маршрута.
+
Ход выполнения бизнес-процесса в программе наглядно представлен в виде карты маршрута. Карта маршрута описывает логику бизнес-процесса и весь его жизненный цикл в виде схематического изображения - последовательности прохождения точек маршрута. Точка маршрута отражает этап бизнес-процесса, связанный с выполнением, как правило, одной операции. При переходе бизнес-процесса в какую-либо точку маршрута, предусматривающую действия конкретного исполнителя, формируется задача. После того как исполнитель отметит задачу как выполненную, бизнес-процесс автоматически перейдет к следующей точке маршрута. Таким образом, с помощью выполнения задач бизнес-процесс продвигается к точке своего завершения.
+
При работе с программой предусмотрена возможность отображения актуальной карты маршрута для конкретного бизнес-процесса, с учетом пройденных и активных точек маршрута. Пройденные (выполненные) точки маршрута обозначаются штриховкой.
+
В каждой точке маршрута доступно одно или несколько действий, меняющих состояние бизнес-процесса.
+
+
Действие
+
Кто выполняет
+
Выполнение команды
Принять к исполнению
+
Исполнитель бизнес-процесса, указанный в качестве исполнителя для первой точки маршрута.
+
+
Исполнитель может принять к исполнению задачу, назначенную на данную роль. Тем самым, задача скрывается из списков задач других исполнителей этой роли.
+
Создать на основании
+
+
Сотрудник, имеющий доступ для работы с бизнес-процессом.
+
+
С помощью этой команды можно создать подчиненные бизнес-процессы.
+
Выполнено
+
+
Исполнитель задания, указанный в качестве исполнителя для первой точки маршрута Выполнить.
+
+
После нажатия кнопки Выполнено задача меняет свой статус, переходит в список выполненных задач и становится неактивной в списках.
+
+
Проверяющий задания, указанный в качестве исполнителя для второй точки маршрута Проверить.
+
+
Проверяющий задания подтверждает выполнение, нажав кнопку Выполнено. Можно написать комментарий о выполнении задания. После этого задача становится неактивной в списках.
+
Отменено
+
+
Исполнитель задания, указанный в качестве исполнителя для первой точки маршрута Выполнить.
+
+
Нажатие кнопки Отменено означает невыполнение задачи. Задача получает соответствующий статус.
+
+
Проверяющий задания, указанный в качестве исполнителя для второй точки маршрута Проверить.
+
+
Проверяющий подтверждает невыполнение задачи.
+
Возвращено
+
+
Проверяющий задания, в качестве исполнителя для второй точки маршрута Проверить.
+
+
Проверяющий может вернуть задачу для более качественного выполнения исполнителем, нажав кнопку Возвращено исполнителю.
+
Перенаправить
+
+
Исполнитель и проверяющий
+
+
С помощью кнопки Перенаправить задача появляется в списке задач другого исполнителя.
Просмотр задач по точке маршрута бизнес-процесса
+
+
Для того чтобы просмотреть список задач по точке маршрута бизнес-процесса, нажмите кнопку Показать задачи для точки маршрута. Также для этого можно воспользоваться двойным щелчком мыши по точке маршрута.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/КартаМаршрутаБизнесПроцесса.mdo b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/КартаМаршрутаБизнесПроцесса.mdo
index 60cf5fc37..71fbeba77 100644
--- a/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/КартаМаршрутаБизнесПроцесса.mdo
+++ b/SSL/src/DataProcessors/КартаМаршрутаБизнесПроцесса/КартаМаршрутаБизнесПроцесса.mdo
@@ -11,6 +11,12 @@
trueDataProcessor.КартаМаршрутаБизнесПроцесса.Form.Форма
+ true
+
+
+ ru
+
+ Форма
diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl
index a892a7542..8c7595c70 100644
--- a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl
+++ b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl
@@ -261,19 +261,21 @@
Колонки = ПолеТаблицаДанныхЗаголовкаПакета.Колонки;
- Колонки.Добавить("ТипОбъектаСтрокой", одОписаниеТипа("Строка"));
+ одОписаниеТипаСтрока = одОписаниеТипа("Строка");
+ одОписаниеТипаБулево = одОписаниеТипа("Булево");
+
+ Колонки.Добавить("ТипОбъектаСтрокой", одОписаниеТипаСтрока);
Колонки.Добавить("КоличествоОбъектовВИсточнике", одОписаниеТипа("Число"));
- Колонки.Добавить("ПоляПоиска", одОписаниеТипа("Строка"));
- Колонки.Добавить("ПоляТаблицы", одОписаниеТипа("Строка"));
+ Колонки.Добавить("ПоляПоиска", одОписаниеТипаСтрока);
+ Колонки.Добавить("ПоляТаблицы", одОписаниеТипаСтрока);
- Колонки.Добавить("ТипИсточникаСтрокой", одОписаниеТипа("Строка"));
- Колонки.Добавить("ТипПриемникаСтрокой", одОписаниеТипа("Строка"));
-
- Колонки.Добавить("СинхронизироватьПоИдентификатору", одОписаниеТипа("Булево"));
- Колонки.Добавить("ЭтоУдалениеОбъекта", одОписаниеТипа("Булево"));
- Колонки.Добавить("ЭтоКлассификатор", одОписаниеТипа("Булево"));
- Колонки.Добавить("ИспользоватьПредварительныйПросмотр", одОписаниеТипа("Булево"));
+ Колонки.Добавить("ТипИсточникаСтрокой", одОписаниеТипаСтрока);
+ Колонки.Добавить("ТипПриемникаСтрокой", одОписаниеТипаСтрока);
+ Колонки.Добавить("СинхронизироватьПоИдентификатору", одОписаниеТипаБулево);
+ Колонки.Добавить("ЭтоУдалениеОбъекта", одОписаниеТипаБулево);
+ Колонки.Добавить("ЭтоКлассификатор", одОписаниеТипаБулево);
+ Колонки.Добавить("ИспользоватьПредварительныйПросмотр", одОписаниеТипаБулево);
КонецЕсли;
Возврат ПолеТаблицаДанныхЗаголовкаПакета;
@@ -1042,16 +1044,20 @@
КонецПроцедуры
// Выполняет последовательное чтение файла сообщения обмена при этом:
-// - удаляется регистрация изменений по номеру входящей квитанции
-// - загружаются правила обмена
-// - загружается информация о типах данных
-// - зачитывается информация сопоставления данных и записывается и ИБ
-// - собирается информация о типах объектов и их количестве
+// - удаляется регистрация изменений по номеру входящей квитанции
+// - загружаются правила обмена
+// - загружается информация о типах данных
+// - зачитывается информация сопоставления данных и записывается и ИБ
+// - собирается информация о типах объектов и их количестве
//
// Параметры:
-// Нет.
+// ПараметрыАнализа - Структура. Необязательные дополнительные параметры анализа. Допустимые поля:
+// * СобиратьСтатистикуКлассификаторов - Булево - Флаг того, что данные по классификаторам будут включены в статистику.
+// Под классификаторами понимаются справочники, ПВХ, планы счетов, ПВР,
+// у которых в ПКО установлены СинхронизироватьПоИдентификатору
+// и ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли
//
-Процедура ВыполнитьАнализСообщенияОбмена() Экспорт
+Процедура ВыполнитьАнализСообщенияОбмена(ПараметрыАнализа = Неопределено) Экспорт
ЧтениеСообщения = Неопределено;
Попытка
@@ -1083,7 +1089,7 @@
Попытка
// зачитываем данные из сообщения обмена
- ПроизвестиЧтениеДанныхВРежимеАнализа(ЧтениеСообщения);
+ ПроизвестиЧтениеДанныхВРежимеАнализа(ЧтениеСообщения, ПараметрыАнализа);
Если ФлагОшибки() Тогда
ВызватьИсключение НСтр("ru = 'Возникли ошибки при анализе данных.'");
@@ -1100,18 +1106,15 @@
//
ТаблицаДанныхЗаголовкаПакета().Колонки.Добавить("ПоляПоиска", одОписаниеТипа("Строка"));
ТаблицаДанныхЗаголовкаПакета().Колонки.Добавить("ПоляТаблицы", одОписаниеТипа("Строка"));
+ ТаблицаДанныхЗаголовкаПакета().Индексы.Добавить("ТипИсточникаСтрокой, ТипПриемникаСтрокой");
Для Каждого СтрокаТаблицы Из ТаблицаДанныхЗаголовкаПакета() Цикл
- Отбор = Новый Структура;
- Отбор.Вставить("ТипИсточникаСтрокой", СтрокаТаблицы.ТипИсточникаСтрокой);
- Отбор.Вставить("ТипПриемникаСтрокой", СтрокаТаблицы.ТипПриемникаСтрокой);
-
+ Отбор = Новый Структура("ТипИсточникаСтрокой, ТипПриемникаСтрокой", СтрокаТаблицы.ТипИсточникаСтрокой, СтрокаТаблицы.ТипПриемникаСтрокой);
СтрокиВременнойТаблицы = ТаблицаДанныхЗаголовкаПакетаВременная.НайтиСтроки(Отбор);
СтрокаТаблицы.ПоляПоиска = СтрокиВременнойТаблицы[0].ПоляПоиска;
СтрокаТаблицы.ПоляТаблицы = СтрокиВременнойТаблицы[0].ПоляТаблицы;
-
КонецЦикла;
ЗакончитьЧтениеСообщения(ЧтениеСообщения);
@@ -1536,6 +1539,10 @@
//
Процедура ОтменитьПроведениеОбъектаВИБ(Объект, Тип, ЗаписатьОбъект = Ложь) Экспорт
+ Если ОбменДаннымиСобытия.ЗагрузкаЗапрещена(Объект, УзелОбменаЗагрузкаДанных) Тогда
+ Возврат;
+ КонецЕсли;
+
// устанавливаем режим загрузки данных для объекта
УстановитьОбменДаннымиЗагрузка(Объект);
@@ -1636,17 +1643,17 @@
ИсточникВСтроку = " ";
КонецПопытки;
- ПрОбъекта = ИсточникВСтроку + " (" + ТипЗнч(Источник) + ")";
+ ИмяДействия = ?(ТолькоПолучитьУзелСсылки, Нстр("ru = 'Конвертация ссылки на объект'"), Нстр("ru = 'Конвертация объекта'"));
- СтрокаНазванияПКО = " ПКО: " + СокрЛП(ИмяПКО) + " (" + СокрЛП(ПКО.Наименование) + ")";
+ ТекстСообщения = Нстр("ru = '[ИмяДействия]: [Объект]([ТипОбъекта]), ПКО: [ПКО](НаименованиеПКО)'");
+ ТекстСообщения = СтрЗаменить(ТекстСообщения, "[ИмяДействия]", ИмяДействия);
+ ТекстСообщения = СтрЗаменить(ТекстСообщения, "[Объект]", ИсточникВСтроку);
+ ТекстСообщения = СтрЗаменить(ТекстСообщения, "[ТипОбъекта]", ТипЗнч(Источник));
+ ТекстСообщения = СтрЗаменить(ТекстСообщения, "[ПКО]", СокрЛП(ИмяПКО));
+ ТекстСообщения = СтрЗаменить(ТекстСообщения, "[НаименованиеПКО]", СокрЛП(ПКО.Наименование));
- Если ТолькоПолучитьУзелСсылки Тогда
- СтрокаПользователю = НСтр("ru = 'Конвертация ссылки на объект: %1%2'");
- Иначе
- СтрокаПользователю = НСтр("ru = 'Конвертация объекта: %1%2'");
- КонецЕсли;
+ ЗаписатьВПротоколВыполнения(ТекстСообщения, , Ложь, ТекущийУровеньВложенностиВыгрузитьПоПравилу + 1, 7);
- ЗаписатьВПротоколВыполнения(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаПользователю, ПрОбъекта, СтрокаНазванияПКО), , Ложь, ТекущийУровеньВложенностиВыгрузитьПоПравилу + 1, 7);
КонецЕсли;
ЭтоПравилоСГлобальнойВыгрузкойОбъектов = Ложь;
@@ -2470,7 +2477,7 @@
Процедура УстановитьПометкуУдаленияУОбъекта(Объект, ПометкаУдаления, ИмяТипаОбъекта) Экспорт
Если (ПометкаУдаления = Неопределено И Объект.ПометкаУдаления <> Истина)
- Или Объект.ДополнительныеСвойства.Свойство("НайденЗапретЗагрузкиДанных") Тогда
+ Или ОбменДаннымиСобытия.ЗагрузкаЗапрещена(Объект, УзелОбменаЗагрузкаДанных) Тогда
Возврат;
КонецЕсли;
@@ -3362,11 +3369,12 @@
ВременныйЗаписьXML.ЗаписатьНачалоЭлемента("ФайлОбмена");
- УстановитьАтрибут(ВременныйЗаписьXML, "ВерсияФормата", ВерсияФорматаСообщенияОбмена());
- УстановитьАтрибут(ВременныйЗаписьXML, "ДатаВыгрузки", ТекущаяДатаСеанса());
- УстановитьАтрибут(ВременныйЗаписьXML, "ИмяКонфигурацииИсточника", Конвертация.Источник);
- УстановитьАтрибут(ВременныйЗаписьXML, "ИмяКонфигурацииПриемника", Конвертация.Приемник);
- УстановитьАтрибут(ВременныйЗаписьXML, "ИдПравилКонвертации", Конвертация.Ид);
+ УстановитьАтрибут(ВременныйЗаписьXML, "ВерсияФормата", ВерсияФорматаСообщенияОбмена());
+ УстановитьАтрибут(ВременныйЗаписьXML, "ДатаВыгрузки", ТекущаяДатаСеанса());
+ УстановитьАтрибут(ВременныйЗаписьXML, "ИмяКонфигурацииИсточника", Конвертация.Источник);
+ УстановитьАтрибут(ВременныйЗаписьXML, "ВерсияКонфигурацииИсточника", Конвертация.ВерсияКонфигурацииИсточника);
+ УстановитьАтрибут(ВременныйЗаписьXML, "ИмяКонфигурацииПриемника", Конвертация.Приемник);
+ УстановитьАтрибут(ВременныйЗаписьXML, "ИдПравилКонвертации", Конвертация.Ид);
ВременныйЗаписьXML.ЗаписатьКонецЭлемента();
@@ -3918,7 +3926,7 @@
Процедура ДобавитьПолеКСтрокеПоиска(СтрокаПолейПоиска, ИмяПоля)
- Если ПустаяСтрока(ИмяПоля) ТОгда
+ Если ПустаяСтрока(ИмяПоля) Тогда
Возврат;
КонецЕсли;
@@ -5794,6 +5802,18 @@
ПолеВерсияФорматаВходящегоСообщенияОбмена = одАтрибут(ФайлОбмена, ТипСтрока, "ВерсияФормата");
+ ВерсияКонфигурацииИсточника = "";
+ Конвертация.Свойство("ВерсияКонфигурацииИсточника", ВерсияКонфигурацииИсточника);
+ ВерсияИсточникаИзПравил = одАтрибут(ФайлОбмена, ТипСтрока, "ВерсияКонфигурацииИсточника");
+ ТекстСообщения = "";
+
+ Если ОбменДаннымиСервер.РазличаютсяВерсииКорреспондента(ИмяПланаОбмена(), КлючСообщенияЖурналаРегистрации(),
+ ВерсияКонфигурацииИсточника, ВерсияИсточникаИзПравил, ТекстСообщения) Тогда
+
+ ВызватьИсключение ТекстСообщения;
+
+ КонецЕсли;
+
ФайлОбмена.Прочитать(); // ПравилаОбмена
Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда
@@ -6237,9 +6257,12 @@
КонецЕсли;
- Если НЕ ПравоДоступа("Изменение", Набор.Метаданные()) Тогда
+ Если Не ПравоДоступа("Изменение", Набор.Метаданные()) Тогда
// отсутствуют права на всю таблицу регистра
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Нарушение прав доступа: %1'"), СтрокаДвижения.Имя);
+ ТекстИсключения = Нстр("ru = 'Нарушение прав доступа: %1'");
+ ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, СтрокаДвижения.Имя);
+ ВызватьИсключение ТекстИсключения;
+ Возврат;
КонецЕсли;
Набор.Отбор.Регистратор.Установить(ДокументОбъект.Ссылка);
@@ -6257,11 +6280,11 @@
СтрокаДвижения.НаборЗаписей.Записать();
Исключение
// возможно «сработал» RLS или подсистема даты запрета изменения
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Операция не выполнена: %1
- |%2'"),
- СтрокаДвижения.Имя, КраткоеПредставлениеОшибки( ИнформацияОбОшибке() )
- );
+ ТекстИсключения = Нстр("ru = 'Операция не выполнена: %1
+ |%2'");
+ ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения,
+ СтрокаДвижения.Имя, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
+ ВызватьИсключение ТекстИсключения;
КонецПопытки;
КонецЦикла;
@@ -7492,7 +7515,7 @@
Исключение
ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(73, ОписаниеОшибки(), "", "",
- ТипОбъекта, Неопределено, НСтр("ru = 'Последовательность полей поиска'") );
+ ТипОбъекта, Неопределено, Нстр("ru = 'Последовательность полей поиска'"));
КонецПопытки;
@@ -8309,11 +8332,9 @@
Если ФлагКомментироватьОбработкуОбъектов Тогда
- Если Нпп <> 0 Тогда
- СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Загрузка объекта № %1'"), Нпп );
- Иначе
- СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Загрузка объекта № %1'"), ГНпп );
- КонецЕсли;
+ СтрокаСообщения = Нстр("ru = 'Загрузка объекта № %1'");
+ Номер = ?(Нпп <> 0, Нпп, ГНпп);
+ СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Номер);
ЗП = ПолучитьСтруктуруЗаписиПротокола();
@@ -9872,7 +9893,6 @@
Возврат;
КонецЕсли;
-
// Получение коллекции подчиненных объектов
@@ -9947,6 +9967,8 @@
Если ВыгружатьГруппуЧерезФайл Тогда
+ ПКГС.НуженУзелXMLПриВыгрузке = Ложь;
+
Если СписокВременныхФайлов = Неопределено Тогда
СписокВременныхФайлов = Новый СписокЗначений();
КонецЕсли;
@@ -9961,30 +9983,24 @@
Исключение
- СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при создании временного файла для выгрузки данных.
- |Имя файла ""%1"".
- |Описание ошибки:
- |%2'"),
- Строка(ИмяФайлаЗаписей), ПодробноеПредставлениеОшибки( ИнформацияОбОшибке() )
- );
-
+ СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Ошибка при создании временного файла для выгрузки данных.
+ |Имя файла ""%1"".
+ |Описание ошибки:
+ |%2'"),
+ Строка(ИмяФайлаЗаписей),
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+
ЗаписатьВПротоколВыполнения(СтрокаСообщенияОбОшибке);
- ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(1000, ОписаниеОшибки(),
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '%1: Ошибка при создании временного файла для выгрузки данных'"), ИмяФайлаЗаписей )
- );
-
- КонецПопытки;
+ КонецПопытки;
ИнформацияДляЗаписиВФайл = УзелКоллекцииОбъектов.Закрыть();
- ВременныйФайЗаписей.ЗаписатьСтроку(ИнформацияДляЗаписиВФайл);
+ ВременныйФайЗаписей.ЗаписатьСтроку(ИнформацияДляЗаписиВФайл);
КонецЕсли;
Для каждого ОбъектКоллекции Из КоллекцияОбъектов Цикл
-
// Обработчик ПередВыгрузкой
Если ПКГС.ЕстьОбработчикПередВыгрузкой Тогда
@@ -10014,14 +10030,13 @@
КонецПопытки;
- Если Отказ Тогда // Отказ от выгрузки подчиненного объекта
+ Если Отказ Тогда // Отказ от выгрузки подчиненного объекта
Продолжить;
КонецЕсли;
- КонецЕсли;
-
+ КонецЕсли;
// Обработчик ПриВыгрузке
@@ -10062,9 +10077,8 @@
КонецПопытки;
КонецЕсли;
-
-
- // Выгрузка свойств объекта коллекции
+
+ // Выгрузка свойств объекта коллекции
Если СтандартнаяОбработка Тогда
Если ПКГС.ПравилаГруппы.Количество() > 0 Тогда
@@ -10075,7 +10089,6 @@
КонецЕсли;
КонецЕсли;
-
// Обработчик ПослеВыгрузки
Если ПКГС.ЕстьОбработчикПослеВыгрузки Тогда
@@ -10105,9 +10118,9 @@
Прервать;
- КонецПопытки;
+ КонецПопытки;
- Если Отказ Тогда // Отказ от выгрузки подчиненного объекта
+ Если Отказ Тогда // Отказ от выгрузки подчиненного объекта
Продолжить;
@@ -10175,9 +10188,9 @@
ВызватьИсключение СтрокаСообщенияОбОшибке;
КонецЕсли;
- КонецПопытки;
+ КонецПопытки;
- Если Отказ Тогда // Отказ от записи коллекции подчиненных объектов
+ Если Отказ Тогда // Отказ от записи коллекции подчиненных объектов
Возврат;
@@ -10187,7 +10200,7 @@
Если ВыгружатьГруппуЧерезФайл Тогда
ВременныйФайЗаписей.ЗаписатьСтроку("" + ИмяГоловногоУзла + ">"); // закрыть узел
- ВременныйФайЗаписей.Закрыть(); // закрыть файл явно
+ ВременныйФайЗаписей.Закрыть(); // закрыть файл явно
Иначе
ПроизвестиЗаписьДанныхВГоловнойУзел(УзелКоллекцииСвойств, СтруктураУзлаСвойств, УзелКоллекцииОбъектов);
КонецЕсли;
@@ -10776,7 +10789,7 @@
Иначе
- СтруктураДанных = Новый Структура("Имя", ИмяУзла);
+ СтруктураДанных = Новый Структура("Имя", ИмяУзла);
КонецЕсли;
@@ -11468,15 +11481,15 @@
Если ФлагКомментироватьОбработкуОбъектов Тогда
Попытка
- ПрОбъекта = Строка(Объект) + " (" + ТипЗнч(Объект) + ")";
+ ПрОбъекта = Строка(Объект) + " (" + ТипЗнч(Объект) + ")";
Исключение
- ПрОбъекта = ТипЗнч(Объект);
+ ПрОбъекта = ТипЗнч(Объект);
КонецПопытки;
- ЗаписатьВПротоколВыполнения(
- СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'ВЫГРУЗКА ОБЪЕКТА: %1'"), ПрОбъекта), , Ложь, 1, 7
- );
+ ИмяСобытия = Нстр("ru = 'ВыгрузкаОбъекта: %1'");
+ ИмяСобытия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИмяСобытия, ПрОбъекта);
+ ЗаписатьВПротоколВыполнения(ИмяСобытия, , Ложь, 1, 7);
КонецЕсли;
@@ -12097,9 +12110,7 @@
КонецЕсли;
Исключение
- СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(76, ОписаниеОшибки(),
- НСтр("ru = 'ПередОтправкойИнформацииОбУдалении (конвертация)'")
- );
+ СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(76, ОписаниеОшибки(), Нстр("ru = 'ПередОтправкойИнформацииОбУдалении (конвертация)'"));
Если Не ПродолжитьПриОшибке Тогда
ВызватьИсключение СтрокаСообщенияОбОшибке;
@@ -12376,34 +12387,80 @@
КонецЦикла;
- Иначе // реквизиты табличной части
-
- Если ОбъектМД.ТабличныеЧасти.Найти(СтрокаТаблицы.ИмяТабличнойЧасти) = Неопределено Тогда
- СтрокаСообщения = НСтр("ru = 'Неправильно указана табличная часть ""%1"" объекта ""%2"". Табличная часть не существует.'");
- СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, СтрокаТаблицы.ИмяТабличнойЧасти, Строка(ОбъектМД));
- ЗаписатьВПротоколВыполнения(СтрокаСообщения);
+ Иначе
+ // Табличная часть, стандартная табличная часть, движения
+ МетаТаблица = МетаТабличнаяЧастьРеквизитовРегистрацииОбъектов(ОбъектМД, СтрокаТаблицы.ИмяТабличнойЧасти);
+ Если МетаТаблица = Неопределено Тогда
+ ЗаписатьВПротоколВыполнения(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Табличная часть (стандартная табличная часть, движения) ""%1"" объекта ""%2"" не существует.'"),
+ СтрокаТаблицы.ИмяТабличнойЧасти, ОбъектМД));
Продолжить;
КонецЕсли;
+ // Пробуем найти каждый реквизит хоть где-нибудь
Для Каждого Реквизит Из СтрокаТаблицы.СтруктураРеквизитовРегистрации Цикл
- Если НЕ (ОбъектМД.ТабличныеЧасти[СтрокаТаблицы.ИмяТабличнойЧасти].Реквизиты.Найти(Реквизит.Ключ) <> Неопределено
- ИЛИ ОбменДаннымиСервер.ЭтоСтандартныйРеквизит(ОбъектМД.ТабличныеЧасти[СтрокаТаблицы.ИмяТабличнойЧасти].СтандартныеРеквизиты, Реквизит.Ключ)) Тогда
-
- СтрокаСообщения = НСтр("ru = 'Неправильно указаны реквизиты табличной части ""%1"" объекта ""%2"". Реквизит ""%3"" не существует.'");
- СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, СтрокаТаблицы.ИмяТабличнойЧасти, Строка(ОбъектМД), Реквизит.Ключ);
- ЗаписатьВПротоколВыполнения(СтрокаСообщения);
-
+ Если Не РеквизитНайденВТабличнойЧастиРеквизитовРегистрацииОбъектов(МетаТаблица, Реквизит.Ключ) Тогда
+ ЗаписатьВПротоколВыполнения(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Реквизит ""%3"" не существует в табличной части (стандартной табличной части, движениях) ""%1"" объекта ""%2"".'"),
+ СтрокаТаблицы.ИмяТабличнойЧасти, ОбъектМД, Реквизит.Ключ));
+ Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
-
КонецЦикла;
КонецПроцедуры
+Функция МетаТабличнаяЧастьРеквизитовРегистрацииОбъектов(МетаданныеТекущегоОбъекта, ИмяИскомойТабличнойЧасти)
+
+ МетаТест = Новый Структура("ТабличныеЧасти, СтандартныеТабличныеЧасти, Движения");
+ ЗаполнитьЗначенияСвойств(МетаТест, МетаданныеТекущегоОбъекта);
+
+ ИмяКандидата = ВРег(ИмяИскомойТабличнойЧасти);
+
+ Для Каждого КлючЗначение Из МетаТест Цикл
+ МетаКоллекцияТаблиц = КлючЗначение.Значение;
+ Если МетаКоллекцияТаблиц <> Неопределено Тогда
+
+ Для Каждого МетаТаблица Из МетаКоллекцияТаблиц Цикл
+ Если ВРег(МетаТаблица.Имя) = ИмяКандидата Тогда
+ Возврат МетаТаблица;
+ КонецЕсли;
+ КонецЦикла;
+
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Неопределено;
+КонецФункции
+
+Функция РеквизитНайденВТабличнойЧастиРеквизитовРегистрацииОбъектов(МетаданныеТабличнойЧасти, ИмяИскомогоРеквизита)
+
+ МетаТест = Новый Структура("Реквизиты, СтандартныеРеквизиты, Измерения, Ресурсы");
+ ЗаполнитьЗначенияСвойств(МетаТест, МетаданныеТабличнойЧасти);
+
+ ИмяКандидата = ВРег(ИмяИскомогоРеквизита);
+
+ Для Каждого КлючЗначение Из МетаТест Цикл
+ МетаКоллекцияРеквизитов = КлючЗначение.Значение;
+ Если МетаКоллекцияРеквизитов <> Неопределено Тогда
+
+ Для Каждого МетаРеквизит Из МетаКоллекцияРеквизитов Цикл
+ Если ВРег(МетаРеквизит.Имя) = ИмяКандидата Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Ложь;
+КонецФункции
+
+
Процедура ЗаполнитьТаблицуРеквизитовРегистрацииОбъектовПоПравилу(ПКО, ТаблицаРезультат)
ИмяОбъекта = СтрЗаменить(ПКО.ТипИсточника, "Ссылка", "");
@@ -12576,18 +12633,18 @@
РежимСовместимости = (Конвертация.РежимСовместимости = ""
Или Конвертация.РежимСовместимости = "РежимСовместимостиСБСП20");
- СтрокаИнформации = НСтр("ru = 'Правила конвертации %1 от %21:
- |Конфигурация источник: %3
- |Конфигурация приемник: %4'");
+ Если ЭтоПравилаКорреспондента Тогда
+ СтрокаИнформации = НСтр("ru = 'Правила конвертации корреспондента (%1) от %2'");
+ Иначе
+ СтрокаИнформации = НСтр("ru = 'Правила конвертации этой информационной базы (%1) от %2'");
+ КонецЕсли;
ПредставлениеКонфигурацииИсточника = ПолучитьПредставлениеКонфигурацииИзПравилОбмена("Источника");
ПредставлениеКонфигурацииПриемника = ПолучитьПредставлениеКонфигурацииИзПравилОбмена("Приемника");
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаИнформации,
- ?(ЭтоПравилаКорреспондента, НСтр("ru = 'корреспондента'"), НСтр("ru = 'этой программы'")),
- Конвертация.ДатаВремяСоздания,
ПредставлениеКонфигурацииИсточника,
- ПредставлениеКонфигурацииПриемника);
+ Формат(Конвертация.ДатаВремяСоздания, "ДЛФ =ДД"));
КонецФункции
Функция ПолучитьПредставлениеКонфигурацииИзПравилОбмена(ИмяОпределения)
@@ -12606,7 +12663,7 @@
ТочнаяВерсия = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ТочнаяВерсия);
- ИмяКонфигурации = ИмяКонфигурации + " (" + ТочнаяВерсия + ")";
+ ИмяКонфигурации = ИмяКонфигурации + " версия " + ТочнаяВерсия;
КонецЕсли;
@@ -12651,7 +12708,7 @@
Для Каждого СтрокаПолей Из ПКС Цикл
- Если СтрокаПолей.ЭтоГруппа ТОгда
+ Если СтрокаПолей.ЭтоГруппа Тогда
Если СтрокаПолей.ВидПриемника = "ТабличнаяЧасть"
ИЛИ Найти(СтрокаПолей.ВидПриемника, "НаборДвижений") > 0 Тогда
@@ -12936,7 +12993,7 @@
// Источник - Объект, из которого осуществляется загрузка правил обмена;
// ТипИсточника - Строка, указывающая тип источника: "XMLФайл", "ЧтениеXML", "Строка"
//
-Процедура ЗагрузитьПравилаОбмена( Источник="",
+Процедура ЗагрузитьПравилаОбмена(Источник="",
ТипИсточника="XMLФайл",
СтрокаСообщенияОбОшибке = "",
ЗагружатьТолькоЗаголовокПравил = Ложь
@@ -13238,7 +13295,7 @@
// нужно вызвать событие после загрузки правил обмена
ТекстСобытияПослеЗагрузкиПравилОбмена = "";
- Если Конвертация.Свойство("ПослеЗагрузкиПравилОбмена", ТекстСобытияПослеЗагрузкиПравилОбмена)
+ Если РежимОбмена <> "Загрузка" И Конвертация.Свойство("ПослеЗагрузкиПравилОбмена", ТекстСобытияПослеЗагрузкиПравилОбмена)
И Не ПустаяСтрока(ТекстСобытияПослеЗагрузкиПравилОбмена) Тогда
Попытка
@@ -13657,7 +13714,7 @@
Если Колонка.ТипЗначения.СодержитТип(ТипСтрока) Тогда
- СтрокаТаблицы[Колонка.Имя] = НСтр("ru = 'удаление объекта'");
+ СтрокаТаблицы[Колонка.Имя] = НСтр("ru = 'Удаление объекта'");
КонецЕсли;
@@ -13710,30 +13767,66 @@
КонецПроцедуры
-Процедура ПроизвестиЧтениеДанныхВРежимеАнализа(ЧтениеСообщения)
+// Под классификатором понимаем справочник, ПВХ, план счетов, ПВР, у которых
+// в ПКО выставлены флаги СинхронизироватьПоИдентификатору И ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли
+//
+Функция ЭтоОбъектКлассификатор(ТипОбъектаСтрокой, ПКО)
+
+ ВидОбъекта = ТипОбъектаСтрокой;
+ Позиция = Найти(ВидОбъекта, ".");
+ Если Позиция > 0 Тогда
+ ВидОбъекта = Лев(ВидОбъекта, Позиция - 1);
+ КонецЕсли;
+
+ Если ВидОбъекта = "СправочникСсылка"
+ Или ВидОбъекта = "ПланВидовХарактеристикСсылка"
+ Или ВидОбъекта = "ПланСчетовСсылка"
+ Или ВидОбъекта = "ПланВидовРасчетаСсылка"
+ Тогда
+ Возврат ПКО.СинхронизироватьПоИдентификатору И ПКО.ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли
+ КонецЕсли;
+
+ Возврат Ложь;
+КонецФункции
+
+Процедура ПроизвестиЧтениеДанныхВРежимеАнализа(ЧтениеСообщения, ПараметрыАнализа = Неопределено)
+
+ // Параметры по умолчанию
+ ПараметрыСбораСтатистики = Новый Структура("СобиратьСтатистикуКлассификаторов", Ложь);
+ Если ПараметрыАнализа <> Неопределено Тогда
+ ЗаполнитьЗначенияСвойств(ПараметрыСбораСтатистики, ПараметрыАнализа);
+ КонецЕсли;
Пока ФайлОбмена.Прочитать() Цикл
ИмяУзла = ФайлОбмена.ЛокальноеИмя;
Если ИмяУзла = "Объект" Тогда
-
ТипОбъектаСтрокой = одАтрибут(ФайлОбмена, ТипСтрока, "Тип");
Если ТипОбъектаСтрокой <> "КонстантыНабор" Тогда
-
ИмяПравила = одАтрибут(ФайлОбмена, ТипСтрока, "ИмяПравила");
+ ПКО = Правила[ИмяПравила];
- ПКО = Правила[ИмяПравила];
-
- // Объекты, для которых выполняется автоматическое сопоставление в процессе обмена (классификаторы),
- // не отображаются пользователю в таблице информации статистики.
- // Поэтому сбор информации статистики для них не нужен.
- // Также не отображаются объекты, которые идентифицируются по полям поиска, а не по уникальному идентификатору ссылки.
- ЭтоКлассификатор = ПКО.СинхронизироватьПоИдентификатору И ПКО.ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли;
-
- Если Не ЭтоКлассификатор И ПКО.СинхронизироватьПоИдентификатору Тогда
+ Если ПараметрыСбораСтатистики.СобиратьСтатистикуКлассификаторов И ЭтоОбъектКлассификатор(ТипОбъектаСтрокой, ПКО) Тогда
+ // Новое поведение
+ СобиратьСтатистику = Истина;
+ ЭтоКлассификатор = Истина;
+ ИначеЕсли Не (ПКО.СинхронизироватьПоИдентификатору И ПКО.ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли) И ПКО.СинхронизироватьПоИдентификатору Тогда
+ // Ветка совместимости.
+ // Объекты, для которых выполняется автоматическое сопоставление в процессе обмена (классификаторы),
+ // не отображаются пользователю в таблице информации статистики. Поэтому сбор информации статистики для них не нужен.
+ // Также не отображаются объекты, которые идентифицируются по полям поиска, а не по уникальному идентификатору ссылки.
+ СобиратьСтатистику = Истина;
+ ЭтоКлассификатор = Ложь;
+
+ Иначе
+ СобиратьСтатистику = Ложь;
+
+ КонецЕсли;
+
+ Если СобиратьСтатистику Тогда
СтрокаТаблицы = ТаблицаДанныхЗаголовкаПакета().Добавить();
СтрокаТаблицы.ТипОбъектаСтрокой = ТипОбъектаСтрокой;
@@ -13747,9 +13840,8 @@
СтрокаТаблицы.СинхронизироватьПоИдентификатору = ПКО.СинхронизироватьПоИдентификатору;
СтрокаТаблицы.ИспользоватьПредварительныйПросмотр = ПКО.СинхронизироватьПоИдентификатору;
- СтрокаТаблицы.ЭтоКлассификатор = Ложь;
+ СтрокаТаблицы.ЭтоКлассификатор = ЭтоКлассификатор;
СтрокаТаблицы.ЭтоУдалениеОбъекта = Ложь;
-
КонецЕсли;
КонецЕсли;
@@ -14084,9 +14176,7 @@
КонецЕсли;
Исключение
- ВызватьИсключение ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(176, ОписаниеОшибки(),
- НСтр("ru = 'ПослеПолученияИнформацииОбУзлахОбмена (конвертация)'")
- );
+ ВызватьИсключение ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(176, ОписаниеОшибки(), Нстр("ru = 'ПослеПолученияИнформацииОбУзлахОбмена (конвертация)'"));
КонецПопытки;
КонецЕсли;
@@ -14915,9 +15005,7 @@
КонецЕсли;
Исключение
- ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(175, ОписаниеОшибки(),
- НСтр("ru = 'ПередПолучениемИзмененныхОбъектов (конвертация)'")
- );
+ ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(175, ОписаниеОшибки(), Нстр("ru = 'ПередПолучениемИзмененныхОбъектов (конвертация)'"));
Возврат;
КонецПопытки;
diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo
index 40361e489..5754bfa5c 100644
--- a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo
+++ b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo
@@ -70,6 +70,32 @@
+
+ ЗагрузкаДанныхВыполняетсяВоВнешнемСоединении
+
+ ru
+ Загрузка данных выполняется во внешнем соединении
+
+ Флаг определяет контекст выполнения загрузки данных. Истина – загрузка данных выполняется во внешнем соединении; Ложь – загрузка выполняется в контексте текущей ИБ.
+
+ Boolean
+
+
+
+
+
+ ЗагрузкаДанныхВыполняетсяЧерезВнешнееСоединение
+
+ ru
+ Загрузка данных выполняется через внешнее соединение
+
+ Флаг определяет режим загрузки данных. Истина – загрузка данных выполняется через внешнее соединение. Ложь – загрузка данных выполняется как обычно, через файл.
+
+ Boolean
+
+
+
+ ИмяПланаОбменаВРО
@@ -85,6 +111,36 @@
+
+ ИмяФайлаВнешнейОбработкиОтладкиВыгрузки
+
+ ru
+ Имя файла внешней обработки отладки выгрузки
+
+
+ String
+
+ 255
+
+
+
+
+
+
+ ИмяФайлаВнешнейОбработкиОтладкиЗагрузки
+
+ ru
+ Имя файла внешней обработки отладки загрузки
+
+
+ String
+
+ 255
+
+
+
+
+ ИмяФайлаОбмена
@@ -244,6 +300,30 @@
+
+ ОтладкаОбработчиковВыгрузки
+
+ ru
+ Отладка обработчиков выгрузки
+
+
+ Boolean
+
+
+
+
+
+ ОтладкаОбработчиковЗагрузки
+
+ ru
+ Отладка обработчиков загрузки
+
+
+ Boolean
+
+
+
+ Параметры
@@ -264,6 +344,18 @@
+
+ ПродолжитьПриОшибке
+
+ ru
+ Продолжить при ошибке
+
+
+ Boolean
+
+
+
+ РежимЗагрузкиДанных
@@ -292,6 +384,18 @@
+
+ РежимПротоколированияОбменаДанными
+
+ ru
+ Режим протоколирования обмена данными
+
+
+ Boolean
+
+
+
+ СохраненныеНастройки
@@ -410,110 +514,6 @@
-
- ЗагрузкаДанныхВыполняетсяВоВнешнемСоединении
-
- ru
- Загрузка данных выполняется во внешнем соединении
-
- Флаг определяет контекст выполнения загрузки данных. Истина – загрузка данных выполняется во внешнем соединении; Ложь – загрузка выполняется в контексте текущей ИБ.
-
- Boolean
-
-
-
-
-
- ЗагрузкаДанныхВыполняетсяЧерезВнешнееСоединение
-
- ru
- Загрузка данных выполняется через внешнее соединение
-
- Флаг определяет режим загрузки данных. Истина – загрузка данных выполняется через внешнее соединение. Ложь – загрузка данных выполняется как обычно, через файл.
-
- Boolean
-
-
-
-
-
- ОтладкаОбработчиковВыгрузки
-
- ru
- Отладка обработчиков выгрузки
-
-
- Boolean
-
-
-
-
-
- ОтладкаОбработчиковЗагрузки
-
- ru
- Отладка обработчиков загрузки
-
-
- Boolean
-
-
-
-
-
- ИмяФайлаВнешнейОбработкиОтладкиВыгрузки
-
- ru
- Имя файла внешней обработки отладки выгрузки
-
-
- String
-
- 255
-
-
-
-
-
-
- ИмяФайлаВнешнейОбработкиОтладкиЗагрузки
-
- ru
- Имя файла внешней обработки отладки загрузки
-
-
- String
-
- 255
-
-
-
-
-
-
- ПродолжитьПриОшибке
-
- ru
- Продолжить при ошибке
-
-
- Boolean
-
-
-
-
-
- РежимПротоколированияОбменаДанными
-
- ru
- Режим протоколирования обмена данными
-
-
- Boolean
-
-
-
- Форма
diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl
index ae68a7846..bbaba59e4 100644
--- a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl
+++ b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl
@@ -407,14 +407,23 @@
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Данные.Ссылка);
Если Данные.ЭтоНовый() Тогда
- Если ОбщегоНазначения.ЭтоСправочник(МетаданныеОбъекта)
- Или ОбщегоНазначения.ЭтоПланВидовХарактеристик(МетаданныеОбъекта) Тогда
-
- Объект = МенеджерОбъекта.СоздатьЭлемент();
-
+ Если ОбщегоНазначения.ЭтоСправочник(МетаданныеОбъекта) Тогда
+ Если МетаданныеОбъекта.Иерархический
+ И МетаданныеОбъекта.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов
+ И Данные.ЭтоГруппа Тогда
+ Объект = МенеджерОбъекта.СоздатьГруппу();
+ Иначе
+ Объект = МенеджерОбъекта.СоздатьЭлемент();
+ КонецЕсли;
+ ИначеЕсли ОбщегоНазначения.ЭтоПланВидовХарактеристик(МетаданныеОбъекта) Тогда
+ Если МетаданныеОбъекта.Иерархический
+ И Данные.ЭтоГруппа Тогда
+ Объект = МенеджерОбъекта.СоздатьГруппу();
+ Иначе
+ Объект = МенеджерОбъекта.СоздатьЭлемент();
+ КонецЕсли;
ИначеЕсли ОбщегоНазначения.ЭтоПланСчетов(МетаданныеОбъекта) Тогда
Объект = МенеджерОбъекта.СоздатьСчет();
-
ИначеЕсли ОбщегоНазначения.ЭтоПланВидовРасчета(МетаданныеОбъекта) Тогда
Объект = МенеджерОбъекта.СоздатьВидРасчета();
КонецЕсли;
diff --git a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Help/ru.html b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Help/ru.html
new file mode 100644
index 000000000..fc0e5c5d0
--- /dev/null
+++ b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Help/ru.html
@@ -0,0 +1,6 @@
+
+
Предназначена для проверки легальности получения обновлений.
+
При обновлении программа запрашивает у администратора подтверждение, что файлы обновления были получены легальным способом.
+
Выберите с помощью переключателя:
+
Я подтверждаю легальность получения обновления в соответствии с вышеизложенными условиями - в этом случае будет проведено обновление программы.
+
Я НЕ подтверждаю легальность получения обновления в соответствии с вышеизложенными условиями - в этом случае работа программы будет завершена.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html
index 674b34d3d..4ebcdf671 100644
--- a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html
+++ b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html
@@ -1,4 +1,4 @@
-
+
УСЛОВИЯ РАСПРОСТРАНЕНИЯ ОБНОВЛЕНИЙ ПРОГРАММ "1С:ПРЕДПРИЯТИЕ"
Обновления к программам производства фирмы "1С", также как и сами программы, являются объектами исключительного права фирмы "1С" и распространяются по правилам, установленным фирмой "1С" как правообладателем в соответствии со ст. 1225 Гражданского кодекса.
diff --git a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo
index e3345489b..a380e65af 100644
--- a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo
+++ b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo
@@ -10,6 +10,12 @@
Легальность получения обновленийDataProcessor.ЛегальностьПолученияОбновлений.Form.ПроверкаЛегальностиПолученияОбновления
+ true
+
+
+ ru
+
+ ПроверкаЛегальностиПолученияОбновления
diff --git a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ЗавершениеЗапросаРазрешений/Form.form b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ЗавершениеЗапросаРазрешений/Form.form
index 8ebc6e850..b0ce718f5 100644
--- a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ЗавершениеЗапросаРазрешений/Form.form
+++ b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ЗавершениеЗапросаРазрешений/Form.form
@@ -47,8 +47,8 @@
4ru
- Выполняется ожидание применения изменений в
-настройках профилей безопасности в кластере серверов.
+ Применяются изменения в настройках профилей безопасности
+в кластере серверов.
Это может занять длительное время (в пределах минуты).
Пожалуйста, подождите...
diff --git a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ИнициализацияЗапросаРазрешений/Form.form b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ИнициализацияЗапросаРазрешений/Form.form
index 25951952a..38fa2349f 100644
--- a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ИнициализацияЗапросаРазрешений/Form.form
+++ b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/ИнициализацияЗапросаРазрешений/Form.form
@@ -145,7 +145,6 @@
Form.StandardCommand.CloseNormal
- PictureAndTexttruetrueUserCmds
diff --git a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Form.form b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Form.form
index 31f5f722f..ac15bbf0e 100644
--- a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Form.form
+++ b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Form.form
@@ -1,7 +1,7 @@
- ГруппаСтраницыГлобальный
+ СтраницыГлобальный205СтраницаДействия
@@ -15,62 +15,447 @@
ГруппаШапка161
-
- Предупреждение
- 69
-
- ru
- Предупреждение
-
- true
- true
-
- true
-
-
- ПредупреждениеExtendedTooltip
- 71
- Label
- true
- true
-
- Left
+
+ СтраницыШапка
+ 244
+
+ СтраницаШапкаПриВключенииБудутУстановленыСледующиеНастройкиВКластере
+ 252
+
+ ИнформацияПриВключенииБудутУстановленыСледующиеНастройкиВКластере
+ 260
+
+ ru
+ Информация при включении будут установлены следующие настройки в кластере
+
+ true
+ true
+
+ true
+
+
+ ИнформацияПриВключенииБудутУстановленыСледующиеНастройкиВКластереРасширеннаяПодсказка
+ 262
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИнформацияПриВключенииБудутУстановленыСледующиеНастройкиВКластереКонтекстноеМеню
+ 261
+ true
+
+ 4
+ true
+ 2
+ true
+
+
+ CommonPicture.Информация32
+
+
+
+
+ ШапкаПриВключенииБудутУстановленыСледующиеНастройкиВКластере
+ 254
+
+ ru
+ При включении использования профилей безопасности в кластере серверов 1С:Предприятия для текущей информационной базы будут предоставлены следующие разрешения:
+
+ true
+ true
+
+ true
+
+
+ ШапкаПриВключенииБудутУстановленыСледующиеНастройкиВКластереРасширеннаяПодсказка
+ 256
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ШапкаПриВключенииБудутУстановленыСледующиеНастройкиВКластереКонтекстноеМеню
+ 255
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница шапка при включении будут установлены следующие настройки в кластере
+
+
+ ru
+ Страница шапка при включении будут установлены следующие настройки в кластере
+
+ true
+
+ СтраницаШапкаПриВключенииБудутУстановленыСледующиеНастройкиВКластереРасширеннаяПодсказка
+ 253
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ auto
-
-
- ПредупреждениеКонтекстноеМеню
- 70
- true
-
- 5
- true
- 2
- true
-
-
- CommonPicture.Предупреждение32
-
-
-
-
- ШапкаТекст
- 74
-
- ru
- В кластере серверов 1С:Предприятия для данной информационной базы настроены профили безопасности,
-ограничивающие доступ к внешним ресурсам.
+
+
+ СтраницаШапкаТребуетсяВнестиИзмененияВКластере
+ 246
+
+ ПредупреждениеТребуетсяВнестиИзмененияВКластере
+ 69
+
+ ru
+ Предупреждение требуется внести изменения в кластере
+
+ true
+ true
+
+ true
+
+
+ ПредупреждениеТребуетсяВнестиИзмененияВКластереРасширеннаяПодсказка
+ 71
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПредупреждениеТребуетсяВнестиИзмененияВКластереКонтекстноеМеню
+ 70
+ true
+
+ 5
+ true
+ 2
+ true
+ false
+
+
+ CommonPicture.Предупреждение32
+
+
+
+
+ ШапкаТребуетсяВнестиИзмененияВКластере
+ 74
+
+ ru
+ В кластере серверов 1С:Предприятия для данной информационной базы настроены профили безопасности, ограничивающие доступ к внешним ресурсам.
-Для продолжения работы требуется внести изменения в состав разрешений в профиле безопасности:
+Для продолжения выполняемого действия требуется внести изменения в состав разрешений в профиле безопасности:
-
+
+ true
+ true
+
+ true
+
+
+ ШапкаТребуетсяВнестиИзмененияВКластереРасширеннаяПодсказка
+ 76
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ШапкаТребуетсяВнестиИзмененияВКластереКонтекстноеМеню
+ 75
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница шапка требуется внести изменения в кластере
+
+
+ ru
+ Страница шапка требуется внести изменения в кластере
+
+
+ СтраницаШапкаТребуетсяВнестиИзмененияВКластереРасширеннаяПодсказка
+ 247
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ auto
+
+
+
+ СтраницаШапкаПриВосстановленииБудутУстановленыСледующиеНастройкиВКластере
+ 248
+
+ ИнформацияПриВосстановленииБудутУстановленыСледующиеНастройкиВКластере
+ 263
+
+ ru
+ Информация при включении будут установлены следующие настройки в кластере
+
+ true
+ true
+
+ true
+
+
+ ИнформацияПриВосстановленииБудутУстановленыСледующиеНастройкиВКластереРасширеннаяПодсказка
+ 265
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИнформацияПриВосстановленииБудутУстановленыСледующиеНастройкиВКластереКонтекстноеМеню
+ 264
+ true
+
+ 4
+ true
+ 2
+ true
+
+
+ CommonPicture.Информация32
+
+
+
+
+ ШапкаПриВосстановленииБудутУстановленыСледующиеНастройкиВКластере
+ 233
+
+ ru
+ При восстановлении профилей безопасности в кластере серверов 1С:Предприятия для текущей информационной базы будут предоставлены следующие разрешения:
+
+ true
+ true
+
+ true
+
+
+ ШапкаПриВосстановленииБудутУстановленыСледующиеНастройкиВКластереРасширеннаяПодсказка
+ 235
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ШапкаПриВосстановленииБудутУстановленыСледующиеНастройкиВКластереКонтекстноеМеню
+ 234
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница шапка при восстановлении будут установлены следующие настройки в кластере
+
+
+ ru
+ Страница шапка при восстановлении будут установлены следующие настройки в кластере
+
+
+ СтраницаШапкаПриВосстановленииБудутУстановленыСледующиеНастройкиВКластереРасширеннаяПодсказка
+ 249
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ auto
+
+
+
+ СтраницаШапкаТребуетсяОтменитьНеактуальныеРазрешенияВКластере
+ 250
+
+ ПредупреждениеТребуетсяОтменитьНеактуальныеРазрешенияВКластере
+ 257
+
+ ru
+ Предупреждение требуется внести изменения в кластере
+
+ true
+ true
+
+ true
+
+
+ ПредупреждениеТребуетсяОтменитьНеактуальныеРазрешенияВКластереРасширеннаяПодсказка
+ 259
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПредупреждениеТребуетсяОтменитьНеактуальныеРазрешенияВКластереКонтекстноеМеню
+ 258
+ true
+
+ 5
+ true
+ 2
+ true
+ false
+
+
+ CommonPicture.Предупреждение32
+
+
+
+
+ ШапкаТребуетсяОтменитьНеактуальныеРазрешенияВКластере
+ 241
+
+ ru
+ В кластере серверов 1С:Предприятия для данной информационной базы настроены профили безопасности, ограничивающие доступ к внешним ресурсам. Ранее были предоставлены разрешения в профилях безопасности в кластере серверов, которые более не требуются для работы программы. Нужно удалить следующие разрешения из профилей безопасности в кластере серверов:
+
+
+ true
+ true
+
+ true
+
+
+ ШапкаТребуетсяОтменитьНеактуальныеРазрешенияВКластереРасширеннаяПодсказка
+ 243
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ШапкаТребуетсяОтменитьНеактуальныеРазрешенияВКластереКонтекстноеМеню
+ 242
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница шапка требуется отменить неактуальные разрешения в кластере
+
+
+ ru
+ Страница шапка требуется отменить неактуальные разрешения в кластере
+
+
+ СтраницаШапкаТребуетсяОтменитьНеактуальныеРазрешенияВКластереРасширеннаяПодсказка
+ 251
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ auto
+
+ truetruetrue
+
+ ru
+ Страницы шапка
+
+
+ ru
+ Страницы шапка
+
+ 4
+ true
+ false
- ШапкаТекстРасширеннаяПодсказка
- 76
+ СтраницыШапкаРасширеннаяПодсказка
+ 245Labeltruetrue
@@ -78,16 +463,9 @@
Left
-
- ШапкаТекстКонтекстноеМеню
- 75
- true
-
- Label
- true
- true
-
- Left
+ Pages
+
+ Autotrue
@@ -103,6 +481,7 @@
ruГруппа шапка
+ trueГруппаШапкаРасширеннаяПодсказка162
@@ -122,225 +501,6 @@
Auto
-
- ГруппаШапкаРежимВосстановления
- 228
-
- ПредупреждениеРежимВосстановления
- 230
-
- ru
- Предупреждение
-
- true
- true
-
- true
-
-
- ПредупреждениеРежимВосстановленияРасширеннаяПодсказка
- 232
- Label
- true
- true
-
- Left
-
-
-
- ПредупреждениеРежимВосстановленияКонтекстноеМеню
- 231
- true
-
- 5
- true
- 2
- true
-
-
- CommonPicture.Предупреждение32
-
-
-
-
- ШапкаТекстРежимВосстановления
- 233
-
- ru
- При восстановлении профилей безопасности в кластере серверов 1С:Предприятия будут предоставлены
-следующие разрешения:
-
- true
- true
-
- true
-
-
- ШапкаТекстРежимВосстановленияРасширеннаяПодсказка
- 235
- Label
- true
- true
-
- Left
-
-
-
- ШапкаТекстРежимВосстановленияКонтекстноеМеню
- 234
- true
-
- Label
- true
- true
-
- Left
-
-
- true
- true
-
- true
-
-
- ru
- Группа шапка
-
-
- ru
- Группа шапка
-
-
- ГруппаШапкаРежимВосстановленияРасширеннаяПодсказка
- 229
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
-
-
-
- ГруппаШапкаРежимВосстановленияПослеПредоставленияРазрешений
- 236
-
- ПредупреждениеРежимВосстановленияПослеПредоставленияРазрешений
- 238
-
- ru
- Предупреждение
-
- true
- true
-
- true
-
-
- ПредупреждениеРежимВосстановленияПослеПредоставленияРазрешенийРасширеннаяПодсказка
- 240
- Label
- true
- true
-
- Left
-
-
-
- ПредупреждениеРежимВосстановленияПослеПредоставленияРазрешенийКонтекстноеМеню
- 239
- true
-
- 5
- true
- 2
- true
-
-
- CommonPicture.Предупреждение32
-
-
-
-
- ШапкаТекстРежимВосстановленияПослеПредоставленияРазрешений
- 241
-
- ru
- В кластере серверов 1С:Предприятия для данной информационной базы настроены профили безопасности,
-ограничивающие доступ к внешним ресурсам.
-
-Ранее были предоставлены разрешения в профилях безопасности в кластере серверов,
-которые более не требуются для работы программы.
-Нужно удалить следующие разрешения из профилей безопасности в кластере серверов:
-
-
- true
- true
-
- true
-
-
- ШапкаТекстРежимВосстановленияПослеПредоставленияРазрешенийРасширеннаяПодсказка
- 243
- Label
- true
- true
-
- Left
-
-
-
- ШапкаТекстРежимВосстановленияПослеПредоставленияРазрешенийКонтекстноеМеню
- 242
- true
-
- Label
- true
- true
-
- Left
-
-
- true
- true
-
- true
-
-
- ru
- Группа шапка
-
-
- ru
- Группа шапка
-
-
- ГруппаШапкаРежимВосстановленияПослеПредоставленияРазрешенийРасширеннаяПодсказка
- 237
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
-
- ПредставлениеРазрешений119
@@ -1568,37 +1728,6 @@
Auto
-
- ДекорацияОтступ
- 217
- true
- true
-
- true
-
-
- ДекорацияОтступРасширеннаяПодсказка
- 219
- Label
- true
- true
-
- Left
-
-
-
- ДекорацияОтступКонтекстноеМеню
- 218
- true
-
- Label
- true
- true
- true
-
- Left
-
- ГруппаПредупреждениеОНеобходимостиПерезапуска197
@@ -1644,8 +1773,7 @@
202ru
- После внесения изменений в настройки профилей безопасности в кластере серверов
-программа будет автоматически перезапущена.
+ После внесения изменений в настройки профилей безопасности в кластере серверов программа будет автоматически перезапущена.truetrue
@@ -1869,7 +1997,6 @@
Form.Command.Далее
- Autotruetruetrue
@@ -2018,23 +2145,338 @@
- СтраницаОжиданиеЗавершения
- 220
-
- ДекорацияОжиданиеЗавершенияДлительнаяОперация
- 222
-
- ru
- Декорация ожидание длительная операция
-
+ СтраницаОперацияНеПоддерживаетсяВВебКлиенте
+ 266
+
+ ГруппаОперацияНеПоддерживаетсяВВебКлиенте
+ 288
+
+ ДекорацияОперацияНеПоддерживаетсяВВебКлиенте
+ 292
+
+ ru
+ Декорация операция не поддерживается в веб клиенте
+
+ true
+ true
+
+ true
+
+
+ ДекорацияОперацияНеПоддерживаетсяВВебКлиентеРасширеннаяПодсказка
+ 294
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияОперацияНеПоддерживаетсяВВебКлиентеКонтекстноеМеню
+ 293
+ true
+
+ 5
+ true
+ true
+
+
+ CommonPicture.Ошибка32
+
+
+
+
+ ГруппаОперацияНеПоддерживаетсяВВебКлиентеПодробности
+ 290
+
+ ЗаголовокОперацияНеПоддерживаетсяВВебКлиенте
+ 271
+
+ ru
+ В кластере серверов 1С:Предприятия для данной информационной базы настроены профили безопасности, ограничивающие доступ к внешним ресурсам.
+
+Для продолжения выполняемого действия требуется внести следующие изменения в настройки профилей безопасности в кластере серверов:
+
+ true
+ true
+
+ true
+
+
+ ЗаголовокОперацияНеПоддерживаетсяВВебКлиентеРасширеннаяПодсказка
+ 273
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЗаголовокОперацияНеПоддерживаетсяВВебКлиентеКонтекстноеМеню
+ 272
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ ПредставлениеРазрешенийОперацияНеПоддерживаетсяВВебКлиенте
+ 276
+ true
+ true
+
+ true
+
+
+ ПредставлениеРазрешений
+
+ None
+
+ ПредставлениеРазрешенийОперацияНеПоддерживаетсяВВебКлиентеРасширеннаяПодсказка
+ 278
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПредставлениеРазрешенийОперацияНеПоддерживаетсяВВебКлиентеКонтекстноеМеню
+ 277
+ true
+
+ SpreadsheetDocumentField
+ Enter
+ true
+ Left
+ true
+
+ 50
+ true
+ 10
+ true
+ true
+ true
+ Special
+ ScrollAlways
+ ScrollAlways
+ Always
+ Auto
+ true
+ true
+ true
+
+
+
+ Декорация1
+ 295
+ true
+ true
+
+ true
+
+
+ Декорация1РасширеннаяПодсказка
+ 297
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация1КонтекстноеМеню
+ 296
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЗаголовокОперацияНеПоддерживаетсяВВебКлиентеПродолжение
+ 279
+
+ ru
+ Внесение изменений в настройки профилей безопасности в кластере серверов не может быть выполнено при подключении к программе с использованием веб-клиента.
+
+Для выполнения запрошенной операции требуется подключиться к программе с использованием тонкого клиента и повторить выполняемую операцию.
+
+ true
+ true
+
+ true
+
+
+ ЗаголовокОперацияНеПоддерживаетсяВВебКлиентеПродолжениеРасширеннаяПодсказка
+ 281
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЗаголовокОперацияНеПоддерживаетсяВВебКлиентеПродолжениеКонтекстноеМеню
+ 280
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ КомандыОперацияНеПоддерживаетсяВВебКлиенте
+ 282
+
+ Закрыть
+ 284
+ true
+ true
+
+ true
+
+
+ ЗакрытьРасширеннаяПодсказка
+ 285
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Close
+ Normal
+ PictureAndText
+ true
+ true
+ UserCmds
+
+ StdPicture.Close
+
+ Auto
+
+
+ СправкаОперацияНеПоддерживаетсяВВебКлиенте
+ 286
+ true
+ true
+
+ true
+
+
+ СправкаОперацияНеПоддерживаетсяВВебКлиентеРасширеннаяПодсказка
+ 287
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Help
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Команды операция не поддерживается в веб клиенте
+
+
+ ru
+ Команды операция не поддерживается в веб клиенте
+
+
+ КомандыОперацияНеПоддерживаетсяВВебКлиентеРасширеннаяПодсказка
+ 283
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Right
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа операция не поддерживается в веб клиенте подробности
+
+
+ ru
+ Группа операция не поддерживается в веб клиенте подробности
+
+
+ ГруппаОперацияНеПоддерживаетсяВВебКлиентеПодробностиРасширеннаяПодсказка
+ 291
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ truetruetrue
+
+ ru
+ Группа операция не поддерживается в веб клиенте
+
+
+ ru
+ Группа операция не поддерживается в веб клиенте
+
- ДекорацияОжиданиеЗавершенияДлительнаяОперацияРасширеннаяПодсказка
- 224
+ ГруппаОперацияНеПоддерживаетсяВВебКлиентеРасширеннаяПодсказка
+ 289Labeltruetrue
@@ -2042,59 +2484,13 @@
Left
-
- ДекорацияОжиданиеЗавершенияДлительнаяОперацияКонтекстноеМеню
- 223
- true
-
- 7
- true
- 3
- true
- false
- true
-
-
- CommonPicture.ДлительнаяОперация48
-
-
-
-
- ДекорацияОжиданиеЗавершенияНадпись
- 225
-
- ru
- Выполняется применение изменений в настройки профилей безопасности в кластере серверов.
-Пожалуйста, подождите...
-
- true
- true
-
- true
-
-
- ДекорацияОжиданиеЗавершенияНадписьРасширеннаяПодсказка
- 227
- Label
- true
- true
-
- Left
-
-
-
- ДекорацияОжиданиеЗавершенияНадписьКонтекстноеМеню
- 226
- true
-
- Label
- true
- true
- false
- true
-
- Left
- Center
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Autotrue
@@ -2104,15 +2500,17 @@
ru
- Страница ожидание
+ Страница операция не поддерживается в веб клиентеru
- Страница ожидание
+ Страница операция не поддерживается в веб клиенте
+ true
+ true
- СтраницаОжиданиеЗавершенияРасширеннаяПодсказка
- 221
+ СтраницаОперацияНеПоддерживаетсяВВебКлиентеРасширеннаяПодсказка
+ 267Labeltruetrue
@@ -2132,14 +2530,14 @@
ru
- Группа страницы глобальный
+ Страницы глобальныйru
- Группа страницы глобальный
+ Страницы глобальный
- ГруппаСтраницыГлобальныйРасширеннаяПодсказка
+ СтраницыГлобальныйРасширеннаяПодсказка206Labeltrue
@@ -2526,23 +2924,6 @@
true
-
- ВебКлиент
-
- ru
- Веб клиент
-
- 20
-
- Boolean
-
-
- true
-
-
- true
-
- АдресХранилищаНаСервере
diff --git a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Help/ru.html b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Help/ru.html
index 7f3244ae5..1c04bbd73 100644
--- a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Help/ru.html
+++ b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Forms/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/Help/ru.html
@@ -1,4 +1,4 @@
-
+
В случае если в кластере серверов 1С:Предприятия для данной информационной базы используются профили безопасности, ограничивающие доступ к внешним (относительно кластера серверов 1С:Предприятия) ресурсам, то для корректной работы программы требуется внести изменения в состав разрешений в профиле безопасности.
В списке перечислены внешние ресурсы, возможность использования которых будет разрешена.
В данной панели осуществляется настройка использования для информационной базы профилей безопасности кластера серверов 1С:Предприятия. Профили безопасности предназначены для контроля за использованием программой внешних ресурсов (относительно кластера серверов 1С:Предприятия).
Находится в разделе Администрирование - Поддержка и обслуживание - Безопасность.
Профили безопасности - механизм версии 8.3 платформы "1С:Предприятие", позволяющий ограничивать использование информационной базой внешних (по отношению к кластеру серверов платформы "1С:Предприятие" ресурсов, такие, как каталоги файловой системы, COM-объекты (на Windows-системах), внешние (по отношению к конфигурации) программные модули на встроенном языке платформы "1С:Предприятие" (внешние отчеты и обработки, вызовы методов Выполнить и Вычислить, внешние компоненты, приложения операционной системы и Интернет-ресурсы. Таким образом, с помощью профилей безопасности можно изолировать каждую информационную базу, позволяя ей использовать только те внешние ресурсы, использование которых явно одобрено администратором.
Ранее программа могла работать только с профилем безопасности, в котором разрешен полный доступ к внешним отчетам и обработкам. В данной версии это ограничение снято, что позволяет предоставлять для внешнего кода (в том числе, кода внешних отчетов и обработок) более строгие разрешения на использование внешних ресурсов, нежели для информационной базы.
Реализовано автоматическое управление разрешениями на доступ к внешним (относительно кластера серверов платформы "1С:Предприятие ресурсам. Таким образом, администратору не требуется самостоятельно отслеживать перечень внешних ресурсов, к которым нужно предоставить доступ (иначе программа не сможет функционировать), вместо этого - при необходимости получения разрешения администратору выводится диалог с перечнем требуемых разрешений. В случае одобрения новых разрешений администратором, они будут автоматически добавлены в профиль безопасности в кластере серверов. При этом для программы автоматически формируется максимально ограниченный профиль безопасности, в котором, в частности, снят признак Полный доступ к внешним отчетам и обработкам.
diff --git a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl
index 88c1a4375..4cd8a4f44 100644
--- a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl
+++ b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl
@@ -37,27 +37,34 @@
Возврат Новый УникальныйИдентификатор();
КонецЕсли;
- Менеджер = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.СоздатьМенеджерЗаписи();
- Менеджер.Идентификатор = Новый УникальныйИдентификатор();
- Менеджер.МоментВремени = ТекущаяУниверсальнаяДата();
-
- Если РаботаВБезопасномРежиме.УстановленБезопасныйРежим() Тогда
- Менеджер.БезопасныйРежим = БезопасныйРежим();
- Иначе
- Менеджер.БезопасныйРежим = Ложь;
- КонецЕсли;
-
Если Владелец = Неопределено Тогда
- Владелец = СлужебныйИОМ();
+ Владелец = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
КонецЕсли;
- Менеджер.Владелец = Владелец;
Если ВнешнийМодуль = Неопределено Тогда
- ВнешнийМодуль = СлужебныйИОМ();
+ ВнешнийМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
КонецЕсли;
- Менеджер.ВнешнийМодуль = ВнешнийМодуль;
+ Если РаботаВБезопасномРежиме.УстановленБезопасныйРежим() Тогда
+ БезопасныйРежим = БезопасныйРежим();
+ Иначе
+ БезопасныйРежим = Ложь;
+ КонецЕсли;
+
+ Менеджер = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.СоздатьМенеджерЗаписи();
+ Менеджер.ИдентификаторЗапроса = Новый УникальныйИдентификатор();
+ Менеджер.МоментВремени = ТекущаяУниверсальнаяДата();
+ Менеджер.БезопасныйРежим = БезопасныйРежим;
Менеджер.РежимЗамещения = РежимЗамещения;
+ Менеджер.Состояние = Перечисления.СостоянияЗапросовНаИспользованиеВнешнихРесурсов.Новый;
+
+ СвойстваВладельца = СвойстваДляРегистраРазрешений(Владелец);
+ Менеджер.ТипВладельца = СвойстваВладельца.Тип;
+ Менеджер.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
+
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Менеджер.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Менеджер.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
Если ДобавляемыеРазрешения <> Неопределено Тогда
@@ -85,10 +92,9 @@
КонецЕсли;
- Менеджер.Состояние = Перечисления.СостоянияЗапросовНаИспользованиеВнешнихРесурсов.Новый;
Менеджер.Записать();
- Возврат Менеджер.Идентификатор;
+ Возврат Менеджер.ИдентификаторЗапроса;
КонецФункции
@@ -109,22 +115,26 @@
Возврат Новый УникальныйИдентификатор();
КонецЕсли;
+ Если Операция = Перечисления.ОперацииСНаборамиРазрешений.Создание Тогда
+ ИмяПрофиляБезопасности = НовоеИмяПрофиляБезопасности(ВнешнийМодуль);
+ Иначе
+ ИмяПрофиляБезопасности = ИмяПрофиляБезопасности(ВнешнийМодуль);
+ КонецЕсли;
+
Менеджер = РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.СоздатьМенеджерЗаписи();
- Менеджер.Идентификатор = Новый УникальныйИдентификатор();
- Менеджер.Владелец = ВнешнийМодуль;
+ Менеджер.ИдентификаторЗапроса = Новый УникальныйИдентификатор();
Менеджер.Операция = Операция;
Менеджер.МоментВремени = ТекущаяУниверсальнаяДата();
Менеджер.Состояние = Перечисления.СостоянияЗапросовНаИспользованиеВнешнихРесурсов.Новый;
+ Менеджер.Имя = ИмяПрофиляБезопасности;
- Если Операция = Перечисления.ОперацииСНаборамиРазрешений.Создание Тогда
- Менеджер.Имя = НовоеИмяПрофиляБезопасности(ВнешнийМодуль);
- Иначе
- Менеджер.Имя = ИмяПрофиляБезопасности(ВнешнийМодуль);
- КонецЕсли;
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Менеджер.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Менеджер.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
Менеджер.Записать();
- Возврат Менеджер.Идентификатор;
+ Возврат Менеджер.ИдентификаторЗапроса;
КонецФункции
@@ -145,18 +155,25 @@
Попытка
Если ВключаяПрофильИБ Тогда
- Результат.Добавить(РаботаВБезопасномРежимеСлужебный.ЗапросНаУдалениеНабораРазрешений(СлужебныйИОМ()));
+
+ ИдентификаторЗапросаУдаленияПрофиляИБ = РаботаВБезопасномРежимеСлужебный.ЗапросНаУдалениеНабораРазрешений(
+ Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка());
+
+ Результат.Добавить(ИдентификаторЗапросаУдаленияПрофиляИБ);
+
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
- | РежимыПодключенияВнешнихМодулей.ВнешнийМодуль КАК ВнешнийМодуль
+ | РежимыПодключенияВнешнихМодулей.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | РежимыПодключенияВнешнихМодулей.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
|ИЗ
| РегистрСведений.РежимыПодключенияВнешнихМодулей КАК РежимыПодключенияВнешнихМодулей";
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
- Результат.Добавить(РаботаВБезопасномРежимеСлужебный.ЗапросНаУдалениеНабораРазрешений(Выборка.ВнешнийМодуль));
+ Результат.Добавить(РаботаВБезопасномРежимеСлужебный.ЗапросНаУдалениеНабораРазрешений(
+ СсылкаИзРегистраРазрешений(Выборка.ТипПрограммногоМодуля, Выборка.ИдентификаторПрограммногоМодуля)));
КонецЦикла;
ЗафиксироватьТранзакцию();
@@ -182,7 +199,7 @@
МенеджерыРегистров = МенеджерыРегистровРазрешений();
- ШаблонЗапросаКТаблицеРегистра = "ВЫБРАТЬ РАЗЛИЧНЫЕ ТаблицаРазрешений.ВнешнийМодуль КАК ВнешнийМодуль, ТаблицаРазрешений.Владелец КАК Владелец ИЗ %1 КАК ТаблицаРазрешений";
+ ШаблонЗапросаКТаблицеРегистра = "ВЫБРАТЬ РАЗЛИЧНЫЕ ТаблицаРазрешений.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля, ТаблицаРазрешений.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля, ТаблицаРазрешений.ТипВладельца КАК ТипВладельца, ТаблицаРазрешений.ИдентификаторВладельца КАК ИдентификаторВладельца ИЗ %1 КАК ТаблицаРазрешений";
ТекстЗапросаКТаблицамРегистров = "";
Для Каждого МенеджерРегистра Из МенеджерыРегистров Цикл
@@ -199,15 +216,23 @@
КонецЦикла;
ТекстЗапроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- "ВЫБРАТЬ РАЗЛИЧНЫЕ ВложенныйЗапрос.ВнешнийМодуль КАК ВнешнийМодуль, ВложенныйЗапрос.Владелец КАК Владелец ИЗ (%1) КАК ВложенныйЗапрос",
+ "ВЫБРАТЬ РАЗЛИЧНЫЕ ВложенныйЗапрос.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля, ВложенныйЗапрос.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля, ВложенныйЗапрос.ТипВладельца КАК ТипВладельца, ВложенныйЗапрос.ИдентификаторВладельца КАК ИдентификаторВладельца ИЗ (%1) КАК ВложенныйЗапрос",
ТекстЗапросаКТаблицамРегистров);
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
+ ПрограммныйМодуль = СсылкаИзРегистраРазрешений(
+ Выборка.ТипПрограммногоМодуля,
+ Выборка.ИдентификаторПрограммногоМодуля);
+
+ Владелец = СсылкаИзРегистраРазрешений(
+ Выборка.ТипВладельца,
+ Выборка.ИдентификаторВладельца);
+
ЗапросЗамещения = РаботаВБезопасномРежимеСлужебный.ЗапросНаИзменениеРазрешенийИспользованияВнешнихРесурсов(
- Выборка.Владелец, Истина, Новый Массив(), , Выборка.ВнешнийМодуль);
+ Владелец, Истина, Новый Массив(), , ПрограммныйМодуль);
Результат.Добавить(ЗапросЗамещения);
@@ -231,96 +256,6 @@
КонецФункции
-// Очищает просроченные запросы на использование внешних ресурсов.
-//
-Процедура ОчисткаНеактуальныхЗапросовНаИспользованиеВнешнихРесурсов() Экспорт
-
- ТекстЗапроса =
- "ВЫБРАТЬ
- | Запросы.Идентификатор КАК Идентификатор,
- | Запросы.ВнешнийМодуль КАК ВнешнийМодуль,
- | Запросы.Владелец КАК Владелец,
- | Запросы.БезопасныйРежим
- |ИЗ
- | РегистрСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов КАК Запросы
- |ГДЕ
- | Запросы.МоментВремени <= &ДатаЗапроса";
- Запрос = Новый Запрос(ТекстЗапроса);
- Запрос.УстановитьПараметр("ДатаЗапроса", ТекущаяУниверсальнаяДата() - 3600); // Время жизни запроса - час
- Выборка = Запрос.Выполнить().Выбрать();
- Пока Выборка.Следующий() Цикл
-
- НачатьТранзакцию();
-
- Попытка
-
- Ключ = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.СоздатьКлючЗаписи(
- Новый Структура("Идентификатор, ВнешнийМодуль, Владелец, БезопасныйРежим", Выборка.Идентификатор, Выборка.ВнешнийМодуль, Выборка.Владелец, Выборка.БезопасныйРежим));
- ЗаблокироватьДанныеДляРедактирования(Ключ);
-
- Исключение
-
- // Обработка исключения не требуется.
- // Ожидаемое исключение - попытка удалить ту же запись регистра из другого сеанса.
- ОтменитьТранзакцию();
- Продолжить;
-
- КонецПопытки;
-
- Менеджер = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.СоздатьМенеджерЗаписи();
- Менеджер.Идентификатор = Выборка.Идентификатор;
- Менеджер.Прочитать();
- Если Менеджер.Выбран() Тогда
- Менеджер.Удалить();
- КонецЕсли;
-
- ЗафиксироватьТранзакцию();
-
- КонецЦикла;
-
- ТекстЗапроса =
- "ВЫБРАТЬ
- | Запросы.Идентификатор КАК Идентификатор,
- | Запросы.Владелец КАК Владелец
- |ИЗ
- | РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов КАК Запросы
- |ГДЕ
- | Запросы.МоментВремени <= &ДатаЗапроса";
- Запрос = Новый Запрос(ТекстЗапроса);
- Запрос.УстановитьПараметр("ДатаЗапроса", ТекущаяУниверсальнаяДата() - 3600); // Время жизни запроса - час
- Выборка = Запрос.Выполнить().Выбрать();
- Пока Выборка.Следующий() Цикл
-
- НачатьТранзакцию();
-
- Попытка
-
- Ключ = РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.СоздатьКлючЗаписи(
- Новый Структура("Идентификатор, Владелец", Выборка.Идентификатор, Выборка.Владелец));
- ЗаблокироватьДанныеДляРедактирования(Ключ);
-
- Исключение
-
- // Обработка исключения не требуется.
- // Ожидаемое исключение - попытка удалить ту же запись регистра из другого сеанса.
- ОтменитьТранзакцию();
- Продолжить;
-
- КонецПопытки;
-
- Менеджер = РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.СоздатьМенеджерЗаписи();
- Менеджер.Идентификатор = Выборка.Идентификатор;
- Менеджер.Прочитать();
- Если Менеджер.Выбран() Тогда
- Менеджер.Удалить();
- КонецЕсли;
-
- ЗафиксироватьТранзакцию();
-
- КонецЦикла;
-
-КонецПроцедуры
-
// Проверяет возможность интерактивного запроса разрешений на использование внешних ресурсов.
//
// Возвращаемое значение: Булево.
@@ -349,6 +284,100 @@
КонецФункции
+// Очищает просроченные запросы на использование внешних ресурсов.
+//
+Процедура ОчисткаНеактуальныхЗапросовНаИспользованиеВнешнихРесурсов() Экспорт
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | Запросы.ИдентификаторЗапроса КАК ИдентификаторЗапроса,
+ | Запросы.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Запросы.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Запросы.ТипВладельца КАК ТипВладельца,
+ | Запросы.ИдентификаторВладельца КАК ИдентификаторВладельца,
+ | Запросы.БезопасныйРежим КАК БезопасныйРежим
+ |ИЗ
+ | РегистрСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов КАК Запросы
+ |ГДЕ
+ | Запросы.МоментВремени <= &ДатаЗапроса";
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("ДатаЗапроса", ТекущаяУниверсальнаяДата() - 3600); // Время жизни запроса - час
+ Выборка = Запрос.Выполнить().Выбрать();
+ Пока Выборка.Следующий() Цикл
+
+ НачатьТранзакцию();
+
+ Попытка
+
+ Ключ = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.СоздатьКлючЗаписи(
+ Новый Структура("ИдентификаторЗапроса, ТипПрограммногоМодуля, ИдентификаторПрограммногоМодуля, ТипВладельца, ИдентификаторВладельца, БезопасныйРежим",
+ Выборка.ИдентификаторЗапроса,
+ Выборка.ТипПрограммногоМодуля,
+ Выборка.ИдентификаторПрограммногоМодуля,
+ Выборка.ТипВладельца,
+ Выборка.ИдентификаторВладельца,
+ Выборка.БезопасныйРежим));
+ ЗаблокироватьДанныеДляРедактирования(Ключ);
+
+ Исключение
+
+ // Обработка исключения не требуется.
+ // Ожидаемое исключение - попытка удалить ту же запись регистра из другого сеанса.
+ ОтменитьТранзакцию();
+ Продолжить;
+
+ КонецПопытки;
+
+ Набор = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.СоздатьНаборЗаписей();
+ Набор.Отбор.ИдентификаторЗапроса.Установить(Выборка.ИдентификаторЗапроса);
+ Набор.Записать();
+
+ ЗафиксироватьТранзакцию();
+
+ КонецЦикла;
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | Запросы.ИдентификаторЗапроса КАК ИдентификаторЗапроса,
+ | Запросы.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Запросы.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
+ |ИЗ
+ | РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов КАК Запросы
+ |ГДЕ
+ | Запросы.МоментВремени <= &ДатаЗапроса";
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("ДатаЗапроса", ТекущаяУниверсальнаяДата() - 3600); // Время жизни запроса - час
+ Выборка = Запрос.Выполнить().Выбрать();
+ Пока Выборка.Следующий() Цикл
+
+ НачатьТранзакцию();
+
+ Попытка
+
+ Ключ = РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.СоздатьКлючЗаписи(
+ Новый Структура("ИдентификаторЗапроса, ТипПрограммногоМодуля, ИдентификаторПрограммногоМодуля",
+ Выборка.ИдентификаторЗапроса, Выборка.ТипПрограммногоМодуля, Выборка.ИдентификаторПрограммногоМодуля));
+ ЗаблокироватьДанныеДляРедактирования(Ключ);
+
+ Исключение
+
+ // Обработка исключения не требуется.
+ // Ожидаемое исключение - попытка удалить ту же запись регистра из другого сеанса.
+ ОтменитьТранзакцию();
+ Продолжить;
+
+ КонецПопытки;
+
+ Набор = РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.СоздатьНаборЗаписей();
+ Набор.Отбор.ИдентификаторЗапроса.Установить(Выборка.ИдентификаторЗапроса);
+ Набор.Записать();
+
+ ЗафиксироватьТранзакцию();
+
+ КонецЦикла;
+
+КонецПроцедуры
+
////////////////////////////////////////////////////////////////////////////////
// Работа с таблицами разрешений
//
@@ -490,7 +519,9 @@
Для Каждого Регистр Из Регистры Цикл
БлокировкаРегистра = Блокировка.Добавить(Регистр.СоздатьНаборЗаписей().Метаданные().ПолноеИмя());
Если ВнешнийМодуль <> Неопределено Тогда
- БлокировкаРегистра.УстановитьЗначение("ВнешнийМодуль", ВнешнийМодуль);
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ БлокировкаРегистра.УстановитьЗначение("ТипПрограммногоМодуля", СвойстваПрограммногоМодуля.Тип);
+ БлокировкаРегистра.УстановитьЗначение("ИдентификаторПрограммногоМодуля", СвойстваПрограммногоМодуля.Идентификатор);
КонецЕсли;
КонецЦикла;
@@ -524,7 +555,9 @@
Для Каждого Менеджер Из Менеджеры Цикл
Набор = Менеджер.СоздатьНаборЗаписей();
Если ВнешнийМодуль <> Неопределено Тогда
- Набор.Отбор.ВнешнийМодуль.Установить(ВнешнийМодуль);
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Тип);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Идентификатор);
КонецЕсли;
Набор.Записать(Истина);
КонецЦикла;
@@ -661,7 +694,7 @@
КонецЦикла;
Результат = Новый ТаблицаЗначений();
- Результат.Колонки.Добавить("ВнешнийМодуль", ОписаниеТипаЛюбаяСсылка());
+ Результат.Колонки.Добавить("ВнешнийМодуль");
Результат.Колонки.Добавить("Изменения", Новый ОписаниеТипов("Структура"));
Для Каждого КлючИЗначение Из Добавляемые Цикл
@@ -671,7 +704,8 @@
Для Каждого Строка Из Таблица Цикл
- ВнешнийМодуль = Строка.ВнешнийМодуль;
+ ВнешнийМодуль = СсылкаИзРегистраРазрешений(
+ Строка.ТипПрограммногоМодуля, Строка.ИдентификаторПрограммногоМодуля);
ОтборПоМодулю = Новый Структура("ВнешнийМодуль", ВнешнийМодуль);
СтрокиПоМодулю = Результат.НайтиСтроки(ОтборПоМодулю);
@@ -705,7 +739,8 @@
Для Каждого Строка Из Таблица Цикл
- ВнешнийМодуль = Строка.ВнешнийМодуль;
+ ВнешнийМодуль = СсылкаИзРегистраРазрешений(
+ Строка.ТипПрограммногоМодуля, Строка.ИдентификаторПрограммногоМодуля);
ОтборПоМодулю = Новый Структура("ВнешнийМодуль", ВнешнийМодуль);
СтрокиПоМодулю = Результат.НайтиСтроки(ОтборПоМодулю);
@@ -734,7 +769,7 @@
Результат.Колонки.Добавить("Приоритет", Новый ОписаниеТипов("Число"));
Для Каждого СтрокаРезультата Из Результат Цикл
- Если СтрокаРезультата.ВнешнийМодуль = СлужебныйИОМ() Тогда
+ Если СтрокаРезультата.ВнешнийМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
СтрокаРезультата.Приоритет = 1;
Иначе
СтрокаРезультата.Приоритет = 2;
@@ -759,7 +794,7 @@
//
// Параметры:
// ТекущаяТаблица - ТаблицаЗначений - см. ТаблицаРазрешений(),
-// ПсевдонимТаблицы - Строка - пвседоним для таблицы (для текста запроса),
+// ПсевдонимТаблицы - Строка - псевдоним для таблицы (для текста запроса),
// ИмяВТ - Строка - имя временной таблицы (для текста запроса).
//
// Возвращаемое значение: Строка - текст запроса.
@@ -835,35 +870,37 @@
Менеджеры = МенеджерыРегистровРазрешений();
ЗамещаемыеПоТипам = Новый ТаблицаЗначений();
- ЗамещаемыеПоТипам.Колонки.Добавить("ВнешнийМодуль", ОписаниеТипаЛюбаяСсылка());
- ЗамещаемыеПоТипам.Колонки.Добавить("Владелец", ОписаниеТипаЛюбаяСсылка());
+ ЗамещаемыеПоТипам.Колонки.Добавить("ВнешнийМодуль");
+ ЗамещаемыеПоТипам.Колонки.Добавить("Владелец");
ЗамещаемыеПоТипам.Колонки.Добавить("Тип", Новый ОписаниеТипов("Строка"));
ДобавляемыеПоТипам = Новый ТаблицаЗначений();
- ДобавляемыеПоТипам.Колонки.Добавить("ВнешнийМодуль", ОписаниеТипаЛюбаяСсылка());
- ДобавляемыеПоТипам.Колонки.Добавить("Владелец", ОписаниеТипаЛюбаяСсылка());
+ ДобавляемыеПоТипам.Колонки.Добавить("ВнешнийМодуль");
+ ДобавляемыеПоТипам.Колонки.Добавить("Владелец");
ДобавляемыеПоТипам.Колонки.Добавить("Тип", Новый ОписаниеТипов("Строка"));
ДобавляемыеПоТипам.Колонки.Добавить("Разрешения", Новый ОписаниеТипов("Массив"));
УдаляемыеПоТипам = Новый ТаблицаЗначений();
- УдаляемыеПоТипам.Колонки.Добавить("ВнешнийМодуль", ОписаниеТипаЛюбаяСсылка());
- УдаляемыеПоТипам.Колонки.Добавить("Владелец", ОписаниеТипаЛюбаяСсылка());
+ УдаляемыеПоТипам.Колонки.Добавить("ВнешнийМодуль");
+ УдаляемыеПоТипам.Колонки.Добавить("Владелец",);
УдаляемыеПоТипам.Колонки.Добавить("Тип", Новый ОписаниеТипов("Строка"));
УдаляемыеПоТипам.Колонки.Добавить("Разрешения", Новый ОписаниеТипов("Массив"));
ТекстЗапроса =
"ВЫБРАТЬ
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Идентификатор,
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.ВнешнийМодуль,
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Владелец,
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.РежимЗамещения,
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.ДобавляемыеРазрешения,
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.УдаляемыеРазрешения,
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.МоментВремени
+ | Запросы.ИдентификаторЗапроса,
+ | Запросы.ТипПрограммногоМодуля,
+ | Запросы.ИдентификаторПрограммногоМодуля,
+ | Запросы.ТипВладельца,
+ | Запросы.ИдентификаторВладельца,
+ | Запросы.РежимЗамещения,
+ | Запросы.ДобавляемыеРазрешения,
+ | Запросы.УдаляемыеРазрешения,
+ | Запросы.МоментВремени
|ИЗ
- | РегистрСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов КАК ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов
+ | РегистрСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов КАК Запросы
|ГДЕ
- | ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Идентификатор В(&Идентификаторы)";
+ | Запросы.ИдентификаторЗапроса В(&Идентификаторы)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификаторы", ИдентификаторыЗапросов);
@@ -880,8 +917,10 @@
ТипТаблицы = Менеджер.ТипXDTOПредставленияРазрешений().Имя;
СтрокаЗамещения = ЗамещаемыеПоТипам.Добавить();
- СтрокаЗамещения.ВнешнийМодуль = Выборка.ВнешнийМодуль;
- СтрокаЗамещения.Владелец = Выборка.Владелец;
+ СтрокаЗамещения.ВнешнийМодуль = СсылкаИзРегистраРазрешений(
+ Выборка.ТипПрограммногоМодуля, Выборка.ИдентификаторПрограммногоМодуля);
+ СтрокаЗамещения.Владелец = СсылкаИзРегистраРазрешений(
+ Выборка.ТипВладельца, Выборка.ИдентификаторВладельца);
СтрокаЗамещения.Тип = ТипТаблицы;
КонецЦикла;
@@ -895,13 +934,17 @@
Разрешение = ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(ПредставлениеРазрешения);
+ ПрограммныйМодуль = СсылкаИзРегистраРазрешений(
+ Выборка.ТипПрограммногоМодуля, Выборка.ИдентификаторПрограммногоМодуля);
+ Владелец = СсылкаИзРегистраРазрешений(Выборка.ТипВладельца, Выборка.ИдентификаторВладельца);
+
ТипРазрешения = Разрешение.Тип().Имя;
- Отбор = Новый Структура("ВнешнийМодуль,Владелец,Тип", Выборка.ВнешнийМодуль, Выборка.Владелец, ТипРазрешения);
+ Отбор = Новый Структура("ВнешнийМодуль,Владелец,Тип", ПрограммныйМодуль, Владелец, ТипРазрешения);
Строки = ДобавляемыеПоТипам.НайтиСтроки(Отбор);
Если Строки.Количество() = 0 Тогда
Строка = ДобавляемыеПоТипам.Добавить();
- Строка.ВнешнийМодуль = Выборка.ВнешнийМодуль;
- Строка.Владелец = Выборка.Владелец;
+ Строка.ВнешнийМодуль = ПрограммныйМодуль;
+ Строка.Владелец = Владелец;
Строка.Тип = ТипРазрешения;
Иначе
Строка = Строки.Получить(0);
@@ -920,13 +963,17 @@
Разрешение = ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(ПредставлениеРазрешения);
+ ПрограммныйМодуль = СсылкаИзРегистраРазрешений(
+ Выборка.ТипПрограммногоМодуля, Выборка.ИдентификаторПрограммногоМодуля);
+ Владелец = СсылкаИзРегистраРазрешений(Выборка.ТипВладельца, Выборка.ИдентификаторВладельца);
+
ТипРазрешения = Разрешение.Тип().Имя;
- Отбор = Новый Структура("ВнешнийМодуль,Владелец,Тип", Выборка.ВнешнийМодуль, Выборка.Владелец, ТипРазрешения);
+ Отбор = Новый Структура("ВнешнийМодуль,Владелец,Тип", ПрограммныйМодуль, Владелец, ТипРазрешения);
Строки = УдаляемыеПоТипам.НайтиСтроки(Отбор);
Если Строки.Количество() = 0 Тогда
Строка = ДобавляемыеПоТипам.Добавить();
- Строка.ВнешнийМодуль = Выборка.ВнешнийМодуль;
- Строка.Владелец = Выборка.Владелец;
+ Строка.ВнешнийМодуль = ПрограммныйМодуль;
+ Строка.Владелец = Владелец;
Строка.Тип = ТипРазрешения;
Иначе
Строка = Строки.Получить(0);
@@ -970,8 +1017,14 @@
Таблица = ТаблицыРазрешений[ИмяТипа];
ПараметрыОтбора = Новый Структура();
- ПараметрыОтбора.Вставить("ВнешнийМодуль", ЗамещаемыеПоТипу.ВнешнийМодуль);
- ПараметрыОтбора.Вставить("Владелец", ЗамещаемыеПоТипу.Владелец);
+
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(ЗамещаемыеПоТипу.ВнешнийМодуль);
+ ПараметрыОтбора.Вставить("ТипПрограммногоМодуля", СвойстваПрограммногоМодуля.Тип);
+ ПараметрыОтбора.Вставить("ИдентификаторПрограммногоМодуля", СвойстваПрограммногоМодуля.Идентификатор);
+
+ СвойстваВладельца = СвойстваДляРегистраРазрешений(ЗамещаемыеПоТипу.Владелец);
+ ПараметрыОтбора.Вставить("ТипВладельца", СвойстваВладельца.Тип);
+ ПараметрыОтбора.Вставить("ИдентификаторВладельца", СвойстваВладельца.Идентификатор);
Строки = Таблица.НайтиСтроки(ПараметрыОтбора);
Для Каждого Строка Из Строки Цикл
@@ -1047,6 +1100,103 @@
КонецПроцедуры
+// Применяет запросы на использование внешних ресурсов к регистрам разрешений.
+//
+// Параметры:
+// ИдентификаторыЗапросов - Массив(УникальныйИдентификатор) - идентификаторы запросов на
+// использование внешних ресурсов, для которых требуется получить изменения, которые должны
+// быть внесены в настройки профилей безопасности при применении разрешений.
+//
+Процедура ПрименитьЗапросыКРегистрамРазрешений(Знач ИдентификаторыЗапросов)
+
+ НачатьТранзакцию();
+
+ Попытка
+
+ Менеджеры = МенеджерыРегистровРазрешений();
+
+ План = ПланПримененияЗапросовНаИспользованиеВнешнихРесурсов(ИдентификаторыЗапросов);
+
+ Для Каждого ЗамещаемыеПоТипу Из План.ЗамещаемыеПоТипам Цикл
+
+ ИмяТипа = ЗамещаемыеПоТипу.Тип;
+ ТекущийМенеджер = Неопределено;
+ Для Каждого Менеджер Из Менеджеры Цикл
+ Если Менеджер.ТипXDTOПредставленияРазрешений().Имя = ИмяТипа Тогда
+ ТекущийМенеджер = Менеджер;
+ КонецЕсли;
+ КонецЦикла;
+ Если ТекущийМенеджер = Неопределено Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при разборе запроса разрешений на использование внешних ресурсов: неизвестное имя типа %1!'"),
+ ИмяТипа);
+ КонецЕсли;
+
+ Модуль = ЗамещаемыеПоТипу.ВнешнийМодуль;
+ Владелец = ЗамещаемыеПоТипу.Владелец;
+
+ НаборЗаписей = ТекущийМенеджер.НаборЗаписейИзXDTOПредставления(Неопределено, Модуль, Владелец, Истина);
+ НаборЗаписей.Записать(Истина);
+
+ КонецЦикла;
+
+ Для Каждого ДобавляемыеПоТипу Из План.ДобавляемыеПоТипам Цикл
+
+ ИмяТипа = ДобавляемыеПоТипу.Тип;
+ ТекущийМенеджер = Неопределено;
+ Для Каждого Менеджер Из Менеджеры Цикл
+ Если Менеджер.ТипXDTOПредставленияРазрешений().Имя = ИмяТипа Тогда
+ ТекущийМенеджер = Менеджер;
+ КонецЕсли;
+ КонецЦикла;
+ Если ТекущийМенеджер = Неопределено Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при разборе запроса разрешений на использование внешних ресурсов: неизвестное имя типа %1!'"),
+ ИмяТипа);
+ КонецЕсли;
+
+ Модуль = ДобавляемыеПоТипу.ВнешнийМодуль;
+ Владелец = ДобавляемыеПоТипу.Владелец;
+
+ НаборЗаписей = ТекущийМенеджер.НаборЗаписейИзXDTOПредставления(ДобавляемыеПоТипу.Разрешения, Модуль, Владелец, Ложь);
+ НаборЗаписей.Записать(Ложь);
+
+ КонецЦикла;
+
+ Для Каждого УдаляемыеПоТипу Из План.УдаляемыеПоТипам Цикл
+
+ ИмяТипа = УдаляемыеПоТипу.Тип;
+ ТекущийМенеджер = Неопределено;
+ Для Каждого Менеджер Из Менеджеры Цикл
+ Если Менеджер.ТипXDTOПредставленияРазрешений().Имя = ИмяТипа Тогда
+ ТекущийМенеджер = Менеджер;
+ КонецЕсли;
+ КонецЦикла;
+ Если ТекущийМенеджер = Неопределено Тогда
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка при разборе запроса разрешений на использование внешних ресурсов: неизвестное имя типа %1!'"),
+ ИмяТипа);
+ КонецЕсли;
+
+ Модуль = УдаляемыеПоТипу.ВнешнийМодуль;
+ Владелец = УдаляемыеПоТипу.Владелец;
+
+ НаборЗаписей = ТекущийМенеджер.НаборЗаписейИзXDTOПредставления(УдаляемыеПоТипу.Разрешения, Модуль, Владелец, Истина);
+ НаборЗаписей.Записать(Истина);
+
+ КонецЦикла;
+
+ ЗафиксироватьТранзакцию();
+
+ Исключение
+
+ ОтменитьТранзакцию();
+ ВызватьИсключение;
+
+ КонецПопытки;
+
+КонецПроцедуры
+
// Применяет запросы на использование внешних ресурсов (должна вызываться после изменения настроек
// профилей безопасности в кластере серверов).
//
@@ -1066,7 +1216,7 @@
ПараметрыЗадания = Новый Массив();
ПараметрыЗадания.Добавить("Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.ОчисткаНеактуальныхЗапросовНаИспользованиеВнешнихРесурсов");
- ФоновыеЗадания.Выполнить("РаботаВБезопасномРежиме.ВыполнитьМетодКонфигурации", ,"f023cc5d-1846-4c49-b0ba-27aa65924879");
+ ФоновыеЗадания.Выполнить("РаботаВБезопасномРежиме.ВыполнитьМетодКонфигурации", ПараметрыЗадания,"f023cc5d-1846-4c49-b0ba-27aa65924879");
Исключение
// Обработка исключения не требуется.
@@ -1079,41 +1229,8 @@
Попытка
- МенеджерыРегистров = МенеджерыРегистровРазрешений();
-
ЗаблокироватьРегистрыПредоставленныхРазрешений();
-
- ТекущийСрез = ТекущийСрезРазрешений();
- ПрименитьЗапросыКТаблицамРазрешений(ИдентификаторыЗапросов, ТекущийСрез);
-
- Для Каждого ЭлементСреза Из ТекущийСрез Цикл
-
- ИмяТаблицы = ЭлементСреза.Ключ;
- Таблица = ЭлементСреза.Значение;
- МенеджерТекущегоРегистра = Неопределено;
-
- Для Каждого МенеджерРегистра Из МенеджерыРегистров Цикл
-
- Если МенеджерРегистра.ТипXDTOПредставленияРазрешений().Имя = ИмяТаблицы Тогда
-
- МенеджерТекущегоРегистра = МенеджерРегистра;
- Прервать;
-
- КонецЕсли;
-
- КонецЦикла;
-
- Если МенеджерТекущегоРегистра = Неопределено Тогда
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Ошибка при разборе запроса разрешений на использование внешних ресурсов: неизвестное имя типа %1!'"),
- ИмяТаблицы);
- КонецЕсли;
-
- НаборЗаписей = МенеджерТекущегоРегистра.СоздатьНаборЗаписей();
- НаборЗаписей.Загрузить(Таблица);
- НаборЗаписей.Записать(Истина);
-
- КонецЦикла;
+ ПрименитьЗапросыКРегистрамРазрешений(ИдентификаторыЗапросов);
ЗафиксироватьТранзакцию();
@@ -1139,20 +1256,24 @@
ТекстЗапроса =
"ВЫБРАТЬ
- | ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Идентификатор,
- | ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Владелец,
- | ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Операция,
- | ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Имя
+ | Запросы.ИдентификаторЗапроса КАК ИдентификаторЗапроса,
+ | Запросы.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Запросы.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Запросы.Операция,
+ | Запросы.Имя
|ИЗ
- | РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов КАК ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов
+ | РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов КАК Запросы
|ГДЕ
- | ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Идентификатор В(&Идентификаторы)";
+ | Запросы.ИдентификаторЗапроса В(&Идентификаторы)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификаторы", ИдентификаторыЗапросов);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
- ЭтоПрофильКонфигурации = (Выборка.Владелец = СлужебныйИОМ());
+ ПрограммныйМодуль = СсылкаИзРегистраРазрешений(
+ Выборка.ТипПрограммногоМодуля, Выборка.ИдентификаторПрограммногоМодуля);
+
+ ЭтоПрофильКонфигурации = (ПрограммныйМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка());
Если Выборка.Операция = Перечисления.ОперацииСНаборамиРазрешений.Создание Тогда
@@ -1163,9 +1284,11 @@
Иначе
Набор = РегистрыСведений.РежимыПодключенияВнешнихМодулей.СоздатьНаборЗаписей();
- Набор.Отбор.ВнешнийМодуль.Установить(Выборка.Владелец);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(Выборка.ТипПрограммногоМодуля);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(Выборка.ИдентификаторПрограммногоМодуля);
Запись = Набор.Добавить();
- Запись.ВнешнийМодуль = Выборка.Владелец;
+ Запись.ТипПрограммногоМодуля = Выборка.ТипПрограммногоМодуля;
+ Запись.ИдентификаторПрограммногоМодуля = Выборка.ИдентификаторПрограммногоМодуля;
Запись.БезопасныйРежим = Выборка.Имя;
Набор.Записать();
@@ -1180,7 +1303,7 @@
Иначе
- ОчиститьПредоставленныеРазрешения(Выборка.Владелец, Истина);
+ ОчиститьПредоставленныеРазрешения(ПрограммныйМодуль, Истина);
КонецЕсли;
@@ -1246,7 +1369,7 @@
Для Каждого Строка Из Таблица Цикл
- ВнешнийМодуль = Строка.ВнешнийМодуль;
+ ВнешнийМодуль = СсылкаИзРегистраРазрешений(Строка.ТипПрограммногоМодуля, Строка.ИдентификаторПрограммногоМодуля);
РезультатПоМодулю = Результат.Получить(ВнешнийМодуль);
Если РезультатПоМодулю = Неопределено Тогда
@@ -1299,7 +1422,7 @@
Для Каждого Описание Из ОперацииАдминистрирования Цикл
- ЭтоПрофильКонфигурации = (Описание.ВнешнийМодуль = СлужебныйИОМ());
+ ЭтоПрофильКонфигурации = (Описание.ВнешнийМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка());
ИмяПрофиля = Описание.Имя;
ИменаПрофилей.Вставить(Описание.ВнешнийМодуль, ИмяПрофиля);
@@ -1363,8 +1486,8 @@
ИмяПрофиля = ИменаПрофилей.Получить(Модуль);
Если ИмяПрофиля = Неопределено Тогда
- Если Модуль <> СлужебныйИОМ() Тогда
- ИмяПрофиля = РаботаВБезопасномРежимеСлужебный.РежимПодключенияВнешнегоМодуля(Модуль);
+ Если Модуль <> Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
+ ИмяПрофиля = РежимПодключенияВнешнегоМодуля(Модуль);
Иначе
ИмяПрофиля = Константы.ПрофильБезопасностиИнформационнойБазы.Получить();
КонецЕсли;
@@ -1392,7 +1515,7 @@
Добавлять = Ложь;
КонецЕсли;
- Если Модуль <> СлужебныйИОМ() И ЭлементРезультата.Операция = Перечисления.ОперацииСНаборамиРазрешений.Обновление Тогда
+ Если Модуль <> Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() И ЭлементРезультата.Операция = Перечисления.ОперацииСНаборамиРазрешений.Обновление Тогда
Если Не ПрофильБезопасностиНазначенВнешнемуМодулю(ЭлементРезультата.Профиль) Тогда
ЭлементРезультата.Операция = Перечисления.ОперацииСНаборамиРазрешений.Создание;
@@ -1400,7 +1523,7 @@
КонецЕсли;
- ЭлементРезультата.Разрешения = ПрофильВНотацииКластера(ЭлементРезультата.Профиль, ОписаниеПрофиля, РезультатПримененияЗапросов.Получить(Модуль));
+ ЭлементРезультата.Разрешения = ПрофильВНотацииИнтерфейсаАдминистрированияКластера(ЭлементРезультата.Профиль, ОписаниеПрофиля, РезультатПримененияЗапросов.Получить(Модуль));
Если Добавлять Тогда
Результат.Добавить(ЭлементРезультата);
@@ -1424,7 +1547,7 @@
//
// Возвращаемое значение: Структура - см. АдминистрированиеКластераКлиентСервер.СвойстваПрофиляБезопасности().
//
-Функция ПрофильВНотацииКластера(Знач ИмяПрофиля, Знач ОписаниеПрофиля, Знач Разрешения)
+Функция ПрофильВНотацииИнтерфейсаАдминистрированияКластера(Знач ИмяПрофиля, Знач ОписаниеПрофиля, Знач Разрешения)
Профиль = АдминистрированиеКластераКлиентСервер.СвойстваПрофиляБезопасности();
Профиль.Имя = ИмяПрофиля;
@@ -1489,27 +1612,29 @@
Функция ОперацииАдминистрированияВЗапросах(Знач ИдентификаторыЗапросов) Экспорт
Результат = Новый ТаблицаЗначений();
- Результат.Колонки.Добавить("ВнешнийМодуль", ОписаниеТипаЛюбаяСсылка());
+ Результат.Колонки.Добавить("ВнешнийМодуль");
Результат.Колонки.Добавить("Операция", Новый ОписаниеТипов("ПеречислениеСсылка.ОперацииСНаборамиРазрешений"));
Результат.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка"));
ТекстЗапроса =
"ВЫБРАТЬ
- | Запросы.Идентификатор,
- | Запросы.Владелец,
- | Запросы.Операция,
- | Запросы.Имя
+ | Запросы.ИдентификаторЗапроса КАК ИдентификаторЗапроса,
+ | Запросы.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Запросы.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Запросы.Операция КАК Операция,
+ | Запросы.Имя КАК Имя
|ИЗ
| РегистрСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов КАК Запросы
|ГДЕ
- | Запросы.Идентификатор В(&Идентификаторы)";
+ | Запросы.ИдентификаторЗапроса В(&Идентификаторы)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Идентификаторы", ИдентификаторыЗапросов);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Строка = Результат.Добавить();
- Строка.ВнешнийМодуль = Выборка.Владелец;
+ Строка.ВнешнийМодуль = СсылкаИзРегистраРазрешений(
+ Выборка.ТипПрограммногоМодуля, Выборка.ИдентификаторПрограммногоМодуля);
Строка.Операция = Выборка.Операция;
Строка.Имя = Выборка.Имя;
@@ -1538,7 +1663,7 @@
Для Каждого Идентификатор Из Идентификаторы Цикл
Набор = РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.СоздатьНаборЗаписей();
- Набор.Отбор.Идентификатор.Установить(Идентификатор);
+ Набор.Отбор.ИдентификаторЗапроса.Установить(Идентификатор);
Набор.Прочитать();
Если Набор.Количество() > 0 Тогда
@@ -1551,7 +1676,7 @@
КонецЕсли;
Набор = РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.СоздатьНаборЗаписей();
- Набор.Отбор.Идентификатор.Установить(Идентификатор);
+ Набор.Отбор.ИдентификаторЗапроса.Установить(Идентификатор);
Набор.Прочитать();
Если Набор.Количество() > 0 Тогда
@@ -1742,6 +1867,7 @@
ОчиститьПредоставленныеРазрешения(, Ложь);
ИдентификаторыЗапросов = РаботаВБезопасномРежимеСлужебный.ЗапросыНаОбновлениеРазрешенийКонфигурации(Ложь);
+
СериализацияЗапросов = СериализоватьЗапросыДляОбработкиСВосстановлением(ИдентификаторыЗапросов);
ВыполнитьОбработкуЗапросов(ИдентификаторыЗапросов, АдресВременногоХранилища);
@@ -1785,36 +1911,49 @@
КонецПроцедуры
+////////////////////////////////////////////////////////////////////////////////
+// Внешние модули
+//
+
+// Возвращает режим подключения внешнего модуля.
+//
+// Параметры:
+// ВнешнийМодуль - ЛюбаяСсылка, ссылка, соответствующая внешнему модулю, для которого запрашиваются
+// режим подключения.
+//
+// Возвращаемое значение: Строка - имя профиля безопасности, который должен использоваться для подключения
+// внешнего модуля. Если для внешнего модуля не зарегистрирован режим подключения - возвращается Неопределено.
+//
+Функция РежимПодключенияВнешнегоМодуля(Знач ВнешнийМодуль) Экспорт
+
+ Если РаботаВБезопасномРежиме.УстановленБезопасныйРежим() Тогда
+
+ Возврат БезопасныйРежим();
+
+ Иначе
+
+ УстановитьПривилегированныйРежим(Истина);
+
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+
+ Менеджер = РегистрыСведений.РежимыПодключенияВнешнихМодулей.СоздатьМенеджерЗаписи();
+ Менеджер.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Менеджер.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Менеджер.Прочитать();
+ Если Менеджер.Выбран() Тогда
+ Возврат Менеджер.БезопасныйРежим;
+ Иначе
+ Возврат Неопределено;
+ КонецЕсли;
+
+ КонецЕсли;
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Прочее
//
-// Возвращает служебный идентификатор объектов метаданных, который используется для хранения
-// разрешений, связанных с конфигурацией (а не с объектами конфигурации).
-//
-// Возвращаемое значение: СправочникСсылка.ИдентификаторыОбъектовМетаданных.
-//
-Функция СлужебныйИОМ()
-
- Возврат РаботаВБезопасномРежимеСлужебныйПовтИсп.СлужебныйИОМ();
-
-КонецФункции
-
-// Возвращает описание типов для набора ссылок вида ЛюбаяСсылка.
-//
-// Вовзращаемое значение: ОписаниеТипов.
-//
-Функция ОписаниеТипаЛюбаяСсылка()
-
- ОписаниеТипаЛюбаяСсылкаXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "TypeDescription"));
- ОписаниеТипаЛюбаяСсылкаXDTO.TypeSet.Добавить(СериализаторXDTO.ЗаписатьXDTO(Новый РасширенноеИмяXML(
- "http://v8.1c.ru/8.1/data/enterprise/current-config", "AnyRef")));
- ОписаниеТипаЛюбаяСсылка = СериализаторXDTO.ПрочитатьXDTO(ОписаниеТипаЛюбаяСсылкаXDTO);
-
- Возврат ОписаниеТипаЛюбаяСсылка;
-
-КонецФункции
-
// Формирует имя профиля безопасности для информационной базы или внешнего модуля.
//
// Параметры:
@@ -1823,14 +1962,16 @@
//
// Вовзращаемое значение: Строка - имя профиля безопасности.
//
-Функция НовоеИмяПрофиляБезопасности(Знач ВнешнийМодуль) Экспорт
+Функция НовоеИмяПрофиляБезопасности(Знач ВнешнийМодуль)
- Если ВнешнийМодуль = СлужебныйИОМ() Тогда
+ Если ВнешнийМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
Результат = "Infobase_" + Строка(Новый УникальныйИдентификатор());
Иначе
+ ВнешнийМодуль = ВнешнийМодуль;
+
МенеджерМодуля = РаботаВБезопасномРежимеСлужебный.МенеджерВнешнегоМодуля(ВнешнийМодуль);
Шаблон = МенеджерМодуля.ШаблонИмениПрофиляБезопасности(ВнешнийМодуль);
Возврат СтрЗаменить(Шаблон, "%1", Строка(Новый УникальныйИдентификатор()));
@@ -1865,7 +2006,7 @@
ВызватьИсключение НСтр("ru = 'Строка соединения информационной базы не содержит имени информационной базы!'");
КонецЕсли;
- Если ВнешнийМодуль = СлужебныйИОМ() Тогда
+ Если ВнешнийМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ИмяИБ,
НСтр("ru = 'Основной профиль безопасности для информационной базы'"), СтрокаСоединенияИнформационнойБазы());
Иначе
@@ -1886,13 +2027,13 @@
//
Функция ИмяПрофиляБезопасности(Знач ВнешнийМодуль) Экспорт
- Если ВнешнийМодуль = СлужебныйИОМ() Тогда
+ Если ВнешнийМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
Возврат Константы.ПрофильБезопасностиИнформационнойБазы.Получить();
Иначе
- Возврат РаботаВБезопасномРежимеСлужебный.РежимПодключенияВнешнегоМодуля(ВнешнийМодуль);
+ Возврат РежимПодключенияВнешнегоМодуля(ВнешнийМодуль);
КонецЕсли;
@@ -1909,7 +2050,8 @@
ТекстЗапроса =
"ВЫБРАТЬ
- | РежимыПодключенияВнешнихМодулей.ВнешнийМодуль
+ | РежимыПодключенияВнешнихМодулей.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | РежимыПодключенияВнешнихМодулей.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
|ИЗ
| РегистрСведений.РежимыПодключенияВнешнихМодулей КАК РежимыПодключенияВнешнихМодулей
|ГДЕ
@@ -1921,6 +2063,83 @@
КонецФункции
+// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме.
+//
+// Параметры:
+// Обработчики - ТаблицаЗначений - См. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления().
+//
+Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
+
+ Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "2.2.2.31";
+ Обработчик.Процедура = "Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.ЗаполнитьВнешнийМодульДляПредоставленныхРазрешений";
+ Обработчик.ОбщиеДанные = Истина;
+
+ Обработчик = Обработчики.Добавить();
+ Обработчик.Версия = "2.2.3.23";
+ Обработчик.Процедура = "Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.ЗаполнитьТипыИИдентификаторыВРегистрахРазрешений";
+ Обработчик.ОбщиеДанные = Истина;
+
+КонецПроцедуры
+
+// Формирует параметры для хранения ссылки в регистрах разрешений.
+//
+// Параметры:
+// Ссылка - ЛюбаяСсылка.
+//
+// Возвращаемое значение: Структура:
+// * Тип - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
+// * Идентификатор - Строка, в которой хранится приведенный к строке
+// уникальный идентификатор ссылки.
+//
+Функция СвойстваДляРегистраРазрешений(Знач Ссылка) Экспорт
+
+ Результат = Новый Структура("Тип,Идентификатор");
+
+ Если Ссылка = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
+
+ Результат.Тип = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
+ Результат.Идентификатор = "";
+
+ Иначе
+
+ Результат.Тип = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Ссылка.Метаданные());
+ Результат.Идентификатор = Строка(Ссылка.УникальныйИдентификатор());
+
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
+// Формирует ссылку из данных, хранящихся в регистрах разрешений.
+//
+// Параметры:
+// Тип - СправочникСсылка.ИдентификаторОбъектаМетаданных,
+// Идентификатор - Строка, в которой хранится приведенный к строке уникальный идентификатор ссылки.
+//
+// Возвращаемое значение: ЛюбаяСсылка.
+//
+Функция СсылкаИзРегистраРазрешений(Знач Тип, Знач Идентификатор)
+
+ Если Тип = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
+ Возврат Тип;
+ Иначе
+
+ ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Тип);
+ Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя());
+
+ Если ПустаяСтрока(Идентификатор) Тогда
+ Возврат Менеджер.ПустаяСсылка();
+ Иначе
+ УникальныйИдентификатор = Новый УникальныйИдентификатор(Идентификатор);
+ Возврат Менеджер.ПолучитьСсылку(УникальныйИдентификатор);
+ КонецЕсли;
+
+ КонецЕсли;
+
+КонецФункции
+
////////////////////////////////////////////////////////////////////////////////
// Обработчики обновления
//
@@ -1947,16 +2166,20 @@
СоответствиеРежимовМодулям = Новый ТаблицаЗначений();
СоответствиеРежимовМодулям.Колонки.Добавить("БезопасныйРежим", Метаданные.ОпределяемыеТипы.БезопасныйРежим.Тип);
- СоответствиеРежимовМодулям.Колонки.Добавить("ВнешнийМодуль", ОписаниеТипаЛюбаяСсылка());
+ СоответствиеРежимовМодулям.Колонки.Добавить("ТипПрограммногоМодуля", Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных"));
+ СоответствиеРежимовМодулям.Колонки.Добавить("ИдентификаторПрограммногоМодуля", Новый ОписаниеТипов("Строка"));
- МодульКонфигурации = СлужебныйИОМ();
+ МодульКонфигурации = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
СтрокаКонфигурации = СоответствиеРежимовМодулям.Добавить();
- СтрокаКонфигурации.ВнешнийМодуль = СлужебныйИОМ();
- СтрокаКонфигурации.БезопасныйРежим = ИмяПрофиляБезопасности(СлужебныйИОМ());
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка());
+ СтрокаКонфигурации.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ СтрокаКонфигурации.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ СтрокаКонфигурации.БезопасныйРежим = ИмяПрофиляБезопасности(Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка());
ТекстЗапроса =
"ВЫБРАТЬ
- | РежимыПодключенияВнешнихМодулей.ВнешнийМодуль КАК ВнешнийМодуль,
+ | РежимыПодключенияВнешнихМодулей.ТипПрограммногоМодуля КАК ТипПрограмнмогоМодуля,
+ | РежимыПодключенияВнешнихМодулей.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
| РежимыПодключенияВнешнихМодулей.БезопасныйРежим КАК БезопасныйРежим
|ИЗ
| РегистрСведений.РежимыПодключенияВнешнихМодулей КАК РежимыПодключенияВнешнихМодулей";
@@ -1964,7 +2187,8 @@
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаМодуля = СоответствиеРежимовМодулям.Добавить();
- СтрокаМодуля.ВнешнийМодуль = Выборка.ВнешнийМодуль;
+ СтрокаМодуля.ТипПрограммногоМодуля = Выборка.ТипПрограммногоМодуля;
+ СтрокаМодуля.ИдентификаторПрограммногоМодуля = Выборка.ИдентификаторПрограммногоМодуля;
СтрокаМодуля.БезопасныйРежим = Выборка.БезопасныйРежим;
КонецЦикла;
@@ -1973,7 +2197,8 @@
ТекстЗапросаСозданияВТ =
"ВЫБРАТЬ
| Соответствие.БезопасныйРежим КАК БезопасныйРежим,
- | Соответствие.ВнешнийМодуль КАК ВнешнийМодуль
+ | Соответствие.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Соответствие.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
|ПОМЕСТИТЬ Соответствие
|ИЗ
| &Соответствие КАК Соответствие";
@@ -1985,7 +2210,7 @@
МетаданныеРегистра = Регистр.СоздатьНаборЗаписей().Метаданные();
- ТекстЗапросаРезультата = "Выбрать [ПоляРегистра], Соответствие.ВнешнийМодуль Из [ТаблицаРегистра] КАК ТаблицаРегистра ЛЕВОЕ СОЕДИНЕНИЕ Соответствие По ТаблицаРегистра.БезопасныйРежим = Соответствие.БезопасныйРежим";
+ ТекстЗапросаРезультата = "Выбрать [ПоляРегистра], Соответствие.ТипПрограммногоМодуля, Соответствие.ИдентификаторПрограммногоМодуля Из [ТаблицаРегистра] КАК ТаблицаРегистра ЛЕВОЕ СОЕДИНЕНИЕ Соответствие По ТаблицаРегистра.БезопасныйРежим = Соответствие.БезопасныйРежим";
ИмяТаблицы = МетаданныеРегистра.ПолноеИмя();
ПсевдонимТаблицы = "ТаблицаРегистра";
@@ -2032,6 +2257,98 @@
КонецПроцедуры
+// [2.2.3.23] Процедура заполняет типы и идентификаторы программных модулей и владельцев разрешений в
+// регистрах разрешений.
+//
+Процедура ЗаполнитьТипыИИдентификаторыВРегистрахРазрешений() Экспорт
+
+ НачатьТранзакцию();
+
+ Попытка
+
+ СлужебныйИОМ = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(
+ Метаданные.РегистрыСведений.РежимыПодключенияВнешнихМодулей);
+
+ ОчисткаНеактуальныхЗапросовНаИспользованиеВнешнихРесурсов();
+
+ План = Новый Соответствие();
+
+ План.Вставить(РегистрыСведений.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов, "ВнешнийМодуль");
+ План.Вставить(РегистрыСведений.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов, "ВнешнийМодуль,Владелец");
+ План.Вставить(РегистрыСведений.РежимыПодключенияВнешнихМодулей, "ВнешнийМодуль");
+
+ Для Каждого МенеджерРегистра Из МенеджерыРегистровРазрешений() Цикл
+ План.Вставить(МенеджерРегистра, "ВнешнийМодуль,Владелец");
+ КонецЦикла;
+
+ Для Каждого СтрокаПлана Из План Цикл
+
+ Регистр = СтрокаПлана.Ключ;
+ Поля = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаПлана.Значение, ",");
+
+ Выборка = Регистр.Выбрать();
+ Пока Выборка.Следующий() Цикл
+
+ МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи();
+ МенеджерЗаписи.Прочитать();
+
+ Для Каждого Поле Из Поля Цикл
+
+ Если Поле = "Владелец" Тогда
+
+ Ссылка = МенеджерЗаписи.ТипВладельца;
+
+ Если ЗначениеЗаполнено(Ссылка) И Не ЗначениеЗаполнено(МенеджерЗаписи.ИдентификаторВладельца) Тогда
+
+ Если Ссылка <> СлужебныйИОМ Тогда
+ СвойстваВладельца = СвойстваДляРегистраРазрешений(Ссылка);
+ МенеджерЗаписи.ТипВладельца = СвойстваВладельца.Тип;
+ МенеджерЗаписи.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
+ Иначе
+ МенеджерЗаписи.ТипВладельца = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
+ МенеджерЗаписи.ИдентификаторВладельца = "";
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ИначеЕсли Поле = "ВнешнийМодуль" Тогда
+
+ Ссылка = МенеджерЗаписи.ТипПрограммногоМодуля;
+
+ Если ЗначениеЗаполнено(Ссылка) И Не ЗначениеЗаполнено(МенеджерЗаписи.ИдентификаторПрограммногоМодуля) Тогда
+
+ Если Ссылка <> СлужебныйИОМ Тогда
+ СвойстваПрограммногоМодуля = СвойстваДляРегистраРазрешений(Ссылка);
+ МенеджерЗаписи.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ МенеджерЗаписи.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Иначе
+ МенеджерЗаписи.ТипПрограммногоМодуля = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
+ МенеджерЗаписи.ИдентификаторПрограммногоМодуля = "";
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ МенеджерЗаписи.Записать();
+
+ КонецЦикла;
+
+ КонецЦикла;
+
+ КонецЦикла;
+
+ ЗафиксироватьТранзакцию();
+
+ Исключение
+
+ ОтменитьТранзакцию();
+ ВызватьИсключение;
+
+ КонецПопытки;
+
+КонецПроцедуры
+
#КонецОбласти
#КонецЕсли
diff --git a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.mdo b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.mdo
index 1452b1ef2..73aaa6ea6 100644
--- a/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.mdo
+++ b/SSL/src/DataProcessors/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов/НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.mdo
@@ -10,6 +10,7 @@
Настройка разрешений на использование внешних ресурсовDataProcessor.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.Form.Форма
+ trueru
diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/НапоминаниеКлиентСервер/Module.bsl b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/НапоминаниеКлиентСервер/Module.bsl
index 91d268af0..d10e84622 100644
--- a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/НапоминаниеКлиентСервер/Module.bsl
+++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/НапоминаниеКлиентСервер/Module.bsl
@@ -36,6 +36,7 @@
&НаКлиенте
Процедура ОК(Команда)
+ ПараметрыРезервногоКопированияИБ.ПараметрОповещения = ?(ОтключитьНапоминания, "НеОповещать", "ЕщеНеНастроено");
ОКНаСервере();
Оповестить("ЗакрытаФормаНастройкиРезервногоКопирования");
Закрыть();
diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Form.form b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Form.form
index 05f7bf051..2fd721c60 100644
--- a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Form.form
@@ -1304,7 +1304,7 @@
ru
- 1. Если задан неправильный пароль администратора, введите его еще раз
+ Если задан неправильный пароль администратора, введите его еще разАвторизацияАдминистратораИнформационнойБазыExtendedTooltip
@@ -1328,80 +1328,6 @@
Auto
-
- ГруппаComcntrФайловыйРежим
- 212
-
- НадписьОбновитьВерсиюКомпоненты
- 213
-
- ru
- 2. При ошибке версии компоненты "comcntr", рекомендуется
- выполнить ее <link ОбновитьВерсиюКомпоненты>перерегистрацию</> (потребуется перезапуск сеанса).
-
- true
- true
-
- true
-
-
- ru
- Возможно необходимо обновить версию компоненты "comcntr". При этом потребуется перезапустить сеанс 1С. Для этого нажмите здесь
-
-
- НадписьОбновитьВерсиюКомпонентыРасширеннаяПодсказка
- 341
- Label
- true
- true
-
- Left
-
-
-
- НадписьОбновитьВерсиюКомпонентыКонтекстноеМеню
- 214
- true
-
- true
- Label
- true
- true
- false
-
-
- URLProcessing
- НадписьОбновитьВерсиюКомпонентыОбработкаНавигационнойСсылки
-
- Left
- 2
-
-
- true
- true
-
- true
-
-
- ГруппаComcntrФайловыйРежимExtendedTooltip
- 340
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Auto
- NormalSeparation
- true
- true
- Auto
- Auto
-
- truetrue
diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Module.bsl
index 683dbfd5b..f205f9ec0 100644
--- a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/Форма/Module.bsl
@@ -76,10 +76,6 @@
Элементы.АвторизацияАдминистратораИнформационнойБазы.Видимость = Ложь;
КонецЕсли;
-#Если ВебКлиент Тогда
- Элементы.ГруппаComcntrФайловыйРежим.Видимость = Ложь;
-#КонецЕсли
-
КонецПроцедуры
&НаКлиенте
@@ -128,14 +124,6 @@
КонецПроцедуры
-&НаКлиенте
-Процедура НадписьОбновитьВерсиюКомпонентыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
-
- СтандартнаяОбработка = Ложь;
- ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель();
-
-КонецПроцедуры
-
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -299,10 +287,11 @@
Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоБазоваяВерсияКонфигурации Тогда
Возврат Результат;
КонецЕсли;
- ПараметрыПодключения = ПолучитьПараметрыАутентификацииАдминистратораОбновления();
+ ПараметрыПодключения = ПолучитьПараметрыАутентификацииАдминистратораОбновления();
+ ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель(Ложь);
Попытка
- ComConnector = Новый COMОбъект(СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИмяCOMСоединителя);
+ ComConnector = Новый COMОбъект(СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИмяCOMСоединителя);
СтрокаСоединенияИнформационнойБазы = ПараметрыПодключения.СтрокаСоединенияИнформационнойБазы + ПараметрыПодключения.СтрокаПодключения;
Соединение = ComConnector.Connect(СтрокаСоединенияИнформационнойБазы);
Исключение
diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html
index 149a057f5..82922a6e0 100644
--- a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html
+++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html
@@ -1,10 +1,28 @@
-
-
Форма настройки системы резервного копирования информационной базы.
-
Предлагает следующие возможности:
-
1) Выполнять резервное копирование автоматически.(Доступен только для файлового режима информационной базы). При выборе данного пункта, программа предложит выбрать расписание резервного копирования из нескольких наиболее часто используемых вариантов, а также возможность выбора своего собственного варианта расписания ( см. Расписание регламентного задания). Также необходимо выбрать каталог, куда будут помещаться резервные копии, и, при необходимости, параметры очистки данного каталога от устаревших резервных копий. При завершении настройки система перейдет в режим автоматического резервного копирования.
-
2) Копирование выполняется сторонними средствами. Позволяет полностью отказаться от использования данного механизма. Рекомендуется выбирать только в случае использования клиент-серверного режима информационной базы, либо при использовании сторонних программ копирования.
-
3) Напомнить о резервном копировании позднее. Данный пункт выбирается в том случае, если нет возможности четко определить, насколько другие пункты меню актуальны. В данном случае система предложит ввести промежуток времени, по истечению которого снова предложит вам настроить резервное копирование. Без выбора этого пункта предупреждения о необходимости настроить резервное копирование будут появляться каждый час.
-
Если резервное копирование завершилоcь неудачей, а во временном log-файле имеется запись: Исключение в createConnection: Error, Automation server can't create object то, скорее всего, используется 32-разрядная компонента comcntr.dll на компьютере под управлением 64-разрядной операционной системы. Для устранения данной проблемы необходимо взять 64-разрядную компоненту comcntr.dll из поставки 1С Предприятие x64 Сервер и зарегистрировать ее, запустив из командной строки:
+
+
Предназначена для настройки резервного копирования информационной базы.
+
Иногда возникают ситуации, которые приводят к потере данных, например, сбои энергоснабжения, отказы компьютеров или неправильные действия в программе. С целью уменьшения риска потери данных администратору программы необходимо регулярно выполнять резервное копирование информационной базы, в этом случае информационную базу можно восстановить. Частота создания резервных копий зависит от интенсивности ввода новых данных в программу. Также резервные копии рекомендуется создавать перед любыми операциями в программе, которые связаны с изменением большого объема данных, например, перед групповым изменением объектов.
+
В любой момент времени можно восстановить данные из созданной ранее резервной копии. Однако необходимо учитывать, что в восстановленной информационной базе будут только те данные, которые были введены на момент создания резервной копии. Данные, которые были введены позже, будут безвозвратно утеряны. Поэтому очень важно составить расписание резервного копирования так, чтобы снизить потери данных до минимума.
+
Использование резервного копирования в режиме 1С:Предприятия предусмотрено только для файлового варианта работы. В клиент-серверном варианте работы программы для создания резервных копий рекомендуется использовать средства СУБД. Более подробную информацию об этом можно найти в книге "1С:Предприятие 8.2. Клиент-серверный вариант. Руководство администратора".
+
Открывается по соответствующей ссылке в предупреждении, которое выводится при запуске программы, если резервное копирование не настроено. В данном предупреждении предлагается настроить резервное копирование информационной базы. Если проигнорировать его, то предупреждения о необходимости настроить резервное копирование будут появляться каждый час.
+
Также можно воспользоваться командой Настройка резервного копирования в разделе Администрирование - Поддержка и обслуживание - Резервное копирование и восстановление. Под этой командой размещается информация о состоянии резервного копирования в программе.
+
Настройка резервного копирования (файловый режим работы программы)
+
+
Программа позволяет создавать резервные копии в режиме 1С:Предприятие. Резервное копирование может выполняться как в автоматическом режиме, так и в ручном. Для выполнения резервного копирования в автоматическом режиме необходимо предварительно его настроить.
+
+
Включите флажок Выполнять автоматическое резервное копирование.
+
После этого с помощью переключателя можно выбрать следующие возможности:
+
Регулярно по расписанию - выполнять резервное копирование автоматически. Перейдите по ссылке, для того чтобы настроить расписание резервного копирования. Ссылка отражает введенное расписание.
+
При составлении расписания необходимо учитывать, что если к моменту запуска резервного копирования программа не будет работать, то резервное копирование не выполнится.
При завершении работы - при каждом выходе из программы администратору предлагается выполнить резервное копирование. При выходе из программы, для того чтобы началось резервное копирование, подтвердите свой выбор - нажмите кнопку Завершить. В окне Завершение работы флажок Выполнить резервное копирование по умолчанию включен. Для того чтобы при завершении работы больше не предлагалось резервное копирование, выключите флажок.
Выберите Каталог для сохранения резервных копий. Для этого нажмите Выбрать, укажите путь к папке, в которую будут помещаться резервные копии, например, E:\Резервное копирование. Поле является обязательным. Рекомендуется выполнять резервное копирование на другой компьютер или внешний носитель.
+
С помощью переключателя выберите срок, на протяжении которого программа будет Хранить резервные копии, или количество хранимых резервных копий:
+
Все - если объем жесткого диска, на котором будет находиться каталог для резервного копирования, позволяет, можно выбрать это значение.
+
За последние 6 мес. (по умолчанию). Можно выбрать срок хранения резервных копий.
+
Последние 10 шт. (по умолчанию). Можно ограничить количество хранимых копий.
Нажмите Готово, для того чтобы подтвердить свой выбор и вернуться в программу. После этого программа перейдет в режим автоматического резервного копирования.
Выполнение резервного копирования сторонними средствами
+
Можно отказаться от настройки автоматического резервного копирования, если резервное копирование будет осуществляться сторонними средствами, например, средствами СУБД при клиент-серверном варианте работы, или сторонними программами резервного копирования.
+
Для этого выключите флажок Выполнять автоматическое резервное копирование.
Резервное копирование при хранении файлов в томах
+
При хранении файлов в томах на диске для этих файлов также необходимо проводить резервное копирование, другими средствами.
Ошибки при резервном копировании
+
Если резервное копирование завершилось неудачей, а во временном log-файле имеется запись: "Исключение в createConnection: Error, Automation server can't create object", то, скорее всего, используется 32-разрядная компонента comcntr.dll на компьютере под управлением 64-разрядной операционной системы. Для устранения данной проблемы необходимо взять 64-разрядную компоненту comcntr.dll из поставки 1С Предприятие x64 Сервер и зарегистрировать ее, запустив из командной строки:
Важно: для того, чтобы войти в информационную базу, если резервное копирование не выполнилось, необходимо запустить 1С:Предприятие с параметрами: ENTERPRISE /F <путь к информационной базе> /CРазрешитьРаботуПользователей /UC РезервноеКопирование.
-
\ No newline at end of file
+
Важно: для того чтобы войти в информационную базу, если резервное копирование не выполнилось, необходимо запустить 1С:Предприятие с параметрами: ENTERPRISE /F <путь к информационной базе> /CРазрешитьРаботуПользователей /UC РезервноеКопирование.
Список состоит из двух частей: в левой части списка располагаются группы, в правой отражаются входящие в них пользователи (внешние пользователи). По умолчанию выбрана группа Все пользователи (Все внешние пользователи).
Для того чтобы увидеть всех пользователей, включенных в дочерние группы с учетом иерархии, необходимо установить флажок Показывать пользователей дочерних групп в нижней части списка.
Предназначена для копирования настроек одного пользователя другим пользователям программы. При этом скопировать можно настройки в пределах одного списка - Пользователи или Внешние пользователи.
Удобно использовать в случае, если настраивается несколько новых пользователей в одной группе, в которой уже есть пользователи.
Команда для копирования настроек пользователей находится в разделе Администрирование - Настройки пользователей и прав.
diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Module.bsl b/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Module.bsl
index 16afd73d6..cc126bc48 100644
--- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Module.bsl
+++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Module.bsl
@@ -305,7 +305,7 @@
Если ПереключательКомуКопироватьНастройки = "ВыбраннымПользователям" Тогда
- ПояснениеКомуСкопированыНастройки = НастройкиПользователейКлиент.ПояснениеПользователи(
+ ПояснениеКомуСкопированыНастройки = ПользователиСлужебныйКлиент.ПояснениеПользователи(
КоличествоПользователей, ПользователиПолучателиНастроек.МассивПользователей[0]);
Иначе
@@ -330,7 +330,7 @@
Если Отчет = Неопределено Тогда
- ТекстПояснения = НастройкиПользователейКлиент.ФормированиеПоясненияПриКопировании(
+ ТекстПояснения = ПользователиСлужебныйКлиент.ФормированиеПоясненияПриКопировании(
ПредставлениеНастройки, КоличествоНастроек, ПояснениеКомуСкопированыНастройки);
ПоказатьОповещениеПользователя(НСтр("ru = 'Копирование настроек'"), , ТекстПояснения, БиблиотекаКартинок.Информация32);
@@ -356,29 +356,9 @@
НСтр("ru = 'Копирование настроек'"), , ТекстПояснения, БиблиотекаКартинок.Информация32);
КонецЕсли;
- // При копировании настроек внешнего вида или всех настроек от другого пользователь предлагаем
- // перезапустить программу для их принятия.
- Если РезультатПроверки = "ТекущийПользовательПолучатель" Или РезультатПроверки = "ТекущийПользовательСредиПолучателей" Тогда
-
- Если ПереключательКопируемыеНастройки = "СкопироватьВсе" Тогда
-
- ПредложениеПерезапускаПрограммы(ИмяКоманды);
-
- ИначеЕсли ПереключательКопируемыеНастройки = "СкопироватьОтдельные" Тогда
-
- Если ВыбранныеНастройки.ВнешнийВид.Количество() <> 0
- Или ПереключательКопируемыеНастройки = "СкопироватьВсе" Тогда
-
- ПредложениеПерезапускаПрограммы(ИмяКоманды);
-
- КонецЕсли;
-
- КонецЕсли;
-
- КонецЕсли;
-
// Если копирование настроек от другого пользователя, оповещаем об этом форму НастройкиПользователей.
Если РежимОткрытияФормы = "СкопироватьОт" Тогда
+ ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
Оповестить("СкопированыНастройки", Истина);
КонецЕсли;
@@ -405,40 +385,6 @@
КонецПроцедуры
-&НаКлиенте
-Функция ПредложениеПерезапускаПрограммы(ИмяКоманды)
-
- ТекстСообщения = НСтр("ru = 'Для того чтобы скопированные настройки внешнего вида вступили в силу, необходимо перезапустить программу.
- |Перезапустить сейчас?'");
- КнопкиВопроса = Новый СписокЗначений;
- КнопкиВопроса.Добавить("Перезапустить", НСтр("ru='Перезапустить сейчас'"));
- КнопкиВопроса.Добавить("НеПерезапускать", НСтр("ru='Не перезапускать'"));
- Оповещение = Новый ОписаниеОповещения("ПредложениеПерезапускаПрограммыЗавершение", ЭтотОбъект, ИмяКоманды);
- ПоказатьВопрос(Оповещение, ТекстСообщения, КнопкиВопроса,, КнопкиВопроса[1].Значение);
-
-КонецФункции
-
-&НаКлиенте
-Процедура ПредложениеПерезапускаПрограммыЗавершение(Ответ, ИмяКоманды) Экспорт
-
- Если Ответ = "Перезапустить" Тогда
- ПодключитьОбработчикОжидания("Подключаемый_ПерезапуститьПрограмму", 0.01, Истина);
- КонецЕсли;
-
- Если ИмяКоманды = "СкопироватьИЗакрыть" Тогда
- Закрыть();
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_ПерезапуститьПрограмму()
-
- СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
- ЗавершитьРаботуСистемы(Истина, Истина);
-
-КонецПроцедуры
-
&НаСервере
Процедура СкопироватьВыбранныеНастройки(Отчет)
diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form
index ef68ce14c..177b8aafe 100644
--- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form
+++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form
@@ -87,7 +87,7 @@
Leftru
- Введите имя или часть фразы для поиска настроек. Например: отчет
+ Введите слово или часть фразы для поиска настроек. Например: отчетOnChange
@@ -123,6 +123,10 @@
truetrueNormal
+
+ ru
+ слово или часть фразы
+ true
@@ -2132,63 +2136,6 @@
Auto
-
- ГруппаЗакрыть
- 43
-
- Закрыть
- 42
- true
- true
-
- true
-
- false
-
- ЗакрытьExtendedTooltip
- 179
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Close
- true
- true
- true
- UserCmds
- Auto
-
- true
- true
-
- true
-
-
- ru
- Закрыть
-
-
- ru
- Группа закрыть
-
-
- ГруппаЗакрытьExtendedTooltip
- 178
- Label
- true
- true
-
- Left
-
-
- CommandBar
-
- Right
-
- truetrue
diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html
index 039662905..7f508d829 100644
--- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html
+++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для управления пользовательскими настройками.
В списке можно производить просмотр, очистку и копирование пользовательских настроек отчетов, настроек внешнего вида программы и прочих настроек.
Список настроек можно открыть из раздела Администрирование - Настройки пользователей и прав по команде Настройки пользователей.
Предназначена для удаления пользовательских настроек.
Иногда требуется удалить пользовательские настройки, например, если из-за этих неправильных настроек работа в программе стала невозможной. Очистить можно все настройки, в том числе и личные варианты отчетов.
Команда для очистки настроек пользователей находится в разделе Администрирование - Настройки пользователей и прав.
Администрирование пользователей, которые работают с программой.
-
Группы пользователей
-
Флажок учета пользователей в разрезе групп. Один пользователь может быть участником нескольких групп. Права доступа, указанные для группы, назначаются всем ее участникам.
Очистка настроек пользователя или группы пользователей. Это восстанавливает целостность настроек и в некоторых случаях помогает нормализовать работу сеансов этого пользователя в программе.
Учет пользователей, которые работают с программой "извне", например Партнеров. Администрирование внешних пользователей выполняется аналогично пользователям программы.
-
-
-
Адрес публикации информационной базы в интернете
-
Адрес информационной базы на веб-сервере. Используется при формировании навигационных ссылок на объекты информационной базы в электронных письмах.
В данной панели осуществляется администрирование пользователей и настройка прав доступа. Доступны команды:
+
Пользователи - администрирование пользователей, которые работают с программой.
+
Группы пользователей - включите флажок, для того чтобы можно было использовать группы для пользователей и внешних пользователей. Один пользователь может быть участником нескольких групп. Права доступа, указанные для группы, назначаются всем ее участникам. Использование групп имеет смысл, если пользователей программы много.
+
Группы доступа - настройка прав доступа и ограничений для пользователей и групп пользователей. Группа доступа определяет совокупность действий с данными программы, которые могут выполнять участники этой группы.
+
Ограничивать доступ на уровне записей - включите этот флажок, для того чтобы максимально гибко настраивать прав доступа пользователей к справочникам, документам и другим данным программы.
+
Профили групп доступа - настройка предустановленных шаблонов групп доступа пользователей. Профили групп доступа, как правило, объединяют в себе несколько ролей. При включении пользователя в группу доступа ему назначаются все роли, заданные в профиле группы доступа.
+
Копирование настроек - копирование настроек контекста работы программы от одного пользователя другим. Это бывает полезно при вводе нового пользователя.
+
Очистка настроек - очистка настроек пользователя, группы пользователей или всех пользователей. Это восстанавливает целостность настроек и в некоторых случаях помогает нормализовать работу сеансов этого пользователя в программе.
+
Разрешить доступ внешним пользователям - включите флажок, для того чтобы настраивать доступ внешних пользователей и использовать их в программе.
+
Внешние пользователи - учет пользователей, которые работают с программой "извне". В качестве внешних пользователей программы могут выступать партнеры, респонденты различных опросов, клиенты интернет-магазина и др. Администрирование внешних пользователей выполняется аналогично пользователям программы.
+
Адрес публикации информационной базы в интернете - адрес информационной базы на веб-сервере. Используется при формировании навигационных ссылок на объекты информационной базы в электронных письмах.
Настройка подключения к томам (папкам) хранения файлов на файловом сервере.
-
Запретить загрузку файлов с расширениями
-
Включите флажок, чтобы запретить загрузку в программу файлов с указанными расширениями и укажите запрещенные к загрузке расширения файлов в поле ввода через пробел.
-
Максимальный размер файла
-
Максимально допустимый размер файлов, загружаемых в программу. Файлы, превышающие указанный размер, не будут загружаться в программу.
-
Расширения файлов ODF
-
Расширения файлов открытого формата документов для офисных приложений. Расширения указываются через пробел.
-
Расширения текстовых файлов
-
Расширения файлов, содержащих текстовые данные. Расширения указываются через пробел.
-
электронные подписи
-
Разрешить использовать электронные подписи и проверять отсутствие изменений файла с момента формирования электронной подписи.
В данной панели осуществляется настройка параметров загрузки, хранения и обработки файлов. Доступны команды:
+
Хранить файлы в томах на диске - выбор между хранением файлов в информационной базе или в томах на диске. В последнем случае файлы не будут храниться в программе.
+
Если флажок включен, становится доступной команда Тома хранения файлов - переход к настройке подключения к томам (папкам) хранения файлов на файловом сервере.
Запретить загрузку файлов с расширениями - включите флажок, для того чтобы запретить загрузку в программу файлов с указанными расширениями и укажите запрещенные к загрузке расширения файлов в поле ввода через пробел.
+
Максимальный размер файла - введите ограничение загрузки в программу файлов, превышающих указанный размер. По умолчанию указан размер 50 Мб. Файлы большего размера не будут загружаться в программу. Если максимальный размер равен нулю, то объем файлов не ограничен.
+
Расширения файлов ODF - можно указать расширения файлов открытого формата документов для офисных приложений, текст из которых также будет извлекаться для построения индекса полнотекстового поиска. Расширения указываются через пробел. По умолчанию список заполнен основными расширениями файлов. Указывать или уточнять список расширений файлов открытого формата документов нужно при использовании операционных систем фирмы Microsoft, если для программы OpenOffice не установлено расширение IFilter.
+
Расширения текстовых файлов - введите расширения файлов, содержащих текстовые данные. Расширения указываются через пробел.
+
Электронные подписи - включите флажок, для того чтобы разрешить использовать электронные подписи и проверять отсутствие изменений файла с момента формирования электронной подписи, а также получить доступ к команде:
+
Настройки криптографии - переход к настройке параметров подключения средств криптографии: электронной подписи и шифрования. В случае организации совместной работы в распределенной информационной базе эти настройки могут быть созданы и изменены только в главном узле.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиСинхронизацииДанных/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиСинхронизацииДанных/Help/ru.html
index ba48fa57a..865188003 100644
--- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиСинхронизацииДанных/Help/ru.html
+++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиСинхронизацииДанных/Help/ru.html
@@ -1,32 +1,28 @@
+
В данной панели осуществляется настройка синхронизации данных с другими программами и организация совместной работы в распределенной информационной базе.
-
-
Синхронизация данных
-
Флажок синхронизации данных с другими программами, например с 1С:Бухгалтерия предприятия, редакция 3.0.
Настройка и выполнение синхронизации данных с другими программами.
-
Предупреждения при синхронизации данных
-
Просмотр непроведенных документов, незаполненных реквизитов, конфликтов и непринятых по дате запрета.
-
Префикс этой информационной базы
-
Префикс добавляется автоматически к кодам элементов справочников и номерам документов для того, чтобы различать программы, в которых они были введены, и избежать дублирования данных.
Установка запрета загрузки данных прошлых периодов из других программ. См. также: Даты запрета изменения данных в Поддержка и обслуживание.
-
Каталог временных файлов Windows
-
Путь к единому каталогу временных файлов всех серверов кластера, который будет использоваться для серверов, работающих под управлением ОС Windows.
-
Каталог временных файлов Linux
-
Путь к единому каталогу временных файлов всех серверов кластера, который будет использоваться для серверов, работающих под управлением ОС Linux.
-
Каталоги временных файлов можно не заполнять, когда в кластере 1С:Предприятия работает только один сервер или программа работает в файловом режиме. Если все сервера кластера работают под управлением операционных систем одного семейства (Windows/Linux), то второе поле заполнять не обязательно.
-
Каталог должен быть доступен на чтение и запись для всех серверов кластера. В том числе - для всех пользователей операционных систем, от имени которых запускаются сервера 1С:Предприятия. Так же UNC путь к нему должен быть одинаковым для всех серверов одного семейства - для этого каталог необходимо подключать к серверам под одним именем.
-
В поле Каталог временных файлов Linux можно указать только локальный путь, например /home/path.
-
Чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора (root) сделайте следующее:
-
mkdir folder --- вместо folder напишите имя каталога. например в каталоге /home делаем mkdir shared - создаст каталог shared с полным путем /home/shared.
-
mount -t cifs //server/share folder -o //domain/user, password=pwd - где //server/share - UNC путь к другому компьютеру , folder - путь каталога на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если нужно, pwd - пароль пользователя (если нужно).
-
Если имя и пароль не нужны, команда выглядит так: mount -t cifs //server/share folder
-
После этого в пути к тому указываем folder, например /home/shared
-
Подробнее об администрировании сервера 1С:Предприятия см. документацию к платформе 1С:Предприятие
Синхронизация данных - включите флажок, для того чтобы стали доступными раздел программы Синхронизация данных и команды:
+
Синхронизация данных - переход к настройке и выполнению синхронизации данных с другими программами (например, с 1С:Бухгалтерия предприятия, редакция 3.0), а также организации совместной работы в распределенной информационной базе.
+
Предупреждения при синхронизации данных - переход к просмотру предупреждений, возникших при синхронизации данных (непроведенных документов, незаполненных реквизитов, конфликтов и непринятых по дате запрета данных).
+
Префикс этой информационной базы - префикс добавляется автоматически к кодам элементов справочников и номерам документов для того, чтобы различать программы, в которых они были введены, и избежать дублирования данных.
+
Изменить - с помощью этой команды можно назначить префикс информационной базы или при необходимости изменить его.
+
Путь к единому сетевому каталогу для общих временных файлов серверов 1С:Предприятие, работающих в одном кластере:
+
Под управлением ОС Windows - укажите путь к единому каталогу временных файлов всех серверов кластера, который будет использоваться для серверов, работающих под управлением ОС Windows.
+
Под управлением ОС Linux - укажите путь к единому каталогу временных файлов всех серверов кластера, который будет использоваться для серверов, работающих под управлением ОС Linux.
Каталоги временных файлов можно не заполнять, когда в кластере 1С:Предприятия работает только один сервер или программа работает в файловом режиме.
+
Если все сервера кластера работают под управлением операционных систем одного семейства (Windows/Linux), то второе поле заполнять не обязательно.
+
Каталог должен быть доступен на чтение и запись для всех серверов кластера. В том числе - для всех пользователей операционных систем, от имени которых запускаются сервера 1С:Предприятия.
+
UNC путь к каталогу должен быть одинаковым для всех серверов одного семейства - для этого каталог необходимо подключать к серверам под одним именем.
+
В поле Каталог временных файлов Linux можно указать только локальный путь, например, /home/path.
+
Для того чтобы использовать UNC путь, нужно сделать на него ссылку. Для этого под правами администратора (root) сделайте следующее:
+
mkdir folder --- вместо folder напишите имя каталога. например, в каталоге /home делаем mkdir shared - эта команда создаст каталог shared с полным путем /home/shared.
+
mount -t cifs //server/share folder -o //domain/user, password=pwd - где //server/share - UNC путь к другому компьютеру , folder - путь каталога на Linux компьютере, например \home\shared, //domain/user - имя домена/пользователя, если нужно, pwd - пароль пользователя (если нужно).
+
Если имя и пароль не нужны, команда выглядит так: mount -t cifs //server/share folder
+
После этого в пути к каталогу указываем folder, например /home/shared.
Подробнее об администрировании сервера 1С:Предприятия см. документацию к платформе 1С:Предприятие.
Заголовок программы - введите текст, который будет отображаться в заголовке окна программы.
+
Часовой пояс - часовой пояс, по которому ведется учет в программе. Все даты документов и регистров программы хранятся в этом часовом поясе.
+
Время текущего сеанса - с помощью этой команды можно узнать, насколько время клиента отличается от времени сервера с поправкой на часовой пояс.
Виды контактной информации
+
Виды контактной информации - добавление и настройка видов контактной информации различных объектов программы, например, партнеров, контрагентов, сотрудников и т.д.
+
Дополнительные реквизиты и сведения
+
Дополнительные реквизиты и сведения - включите флажок, для того чтобы использовать дополнительные свойства для справочников и документов.
+
Реквизиты и сведения с общим списком значений - включите флажок, для того чтобы разрешить добавление реквизитов, у которых общий список значений с другими реквизитами (команда Добавить - По образцу).
+
Общие реквизиты и сведения - включите флажок, для того чтобы разрешить добавление реквизитов сразу к нескольким объектам программы одновременно (команда Добавить - Общий).
+
Дополнительные реквизиты - настройка состава дополнительных реквизитов для справочников и документов.
+
Дополнительные сведения - настройка состава дополнительных сведений для справочников и документов.
Использование профилей безопасности - использование профилей безопасности для контроля за использованием программой внешних (относительно кластера серверов 1С:Предприятия) ресурсов.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl
index f48163b6f..6afb99f09 100644
--- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl
+++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl
@@ -60,13 +60,6 @@
КонецЕсли;
КонецПроцедуры
-// СтандартныеПодсистемы.ВерсионированиеОбъектов
-&НаКлиенте
-Процедура ИспользоватьВерсионированиеОбъектовПриИзменении(Элемент)
- Подключаемый_ПриИзмененииРеквизита(Элемент);
-КонецПроцедуры
-// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
-
// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура ИспользоватьДополнительныеРеквизитыИСведенияПриИзменении(Элемент)
@@ -78,15 +71,6 @@
#Область ОбработчикиКомандФормы
-// СтандартныеПодсистемы.ВерсионированиеОбъектов
-&НаКлиенте
-Процедура РегистрСведенийНастройкиВерсионированияОбъектов(Команда)
-
- ОткрытьФорму("РегистрСведений.НастройкиВерсионированияОбъектов.ФормаСписка", , ЭтотОбъект);
-
-КонецПроцедуры
-// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
-
// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура ДополнительныеРеквизиты(Команда)
@@ -262,18 +246,6 @@
&НаСервере
Процедура УстановитьДоступность(РеквизитПутьКДанным = "")
- // СтандартныеПодсистемы.ВерсионированиеОбъектов
- Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьВерсионированиеОбъектов"
- ИЛИ РеквизитПутьКДанным = "" Тогда
-
- ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
- Элементы,
- "РегистрСведенийНастройкиВерсионированияОбъектов",
- "Доступность",
- НаборКонстант.ИспользоватьВерсионированиеОбъектов);
- КонецЕсли;
- // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
-
// СтандартныеПодсистемы.Свойства
Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьДополнительныеРеквизитыИСведения"
ИЛИ РеквизитПутьКДанным = "" Тогда
diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form
index 7700ca4b4..aade88244 100644
--- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form
+++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form
@@ -1542,10 +1542,6 @@
ruГруппа использовать бизнес процессы и задачи
-
- ru
- Группа использовать бизнес процессы и задачи
- ГруппаИспользоватьБизнесПроцессыИЗадачиExtendedTooltip1678
@@ -1588,7 +1584,7 @@
Hyperlink
- Form.Command.ОткрытьРолиИИсполнителиБизнесПроцессов
+ Form.Command.РолиИИсполнителиЗадачNormalAutotrue
@@ -1601,7 +1597,7 @@
1358ru
- Настройка ролей для адресации задач группам исполнителей.
+ Настройка ролей для назначения задач группам исполнителей.truetrue
@@ -1702,65 +1698,19 @@
- ГруппаИспользоватьПодчиненныеБизнесПроцессы
- 1603
-
- ИспользоватьПодчиненныеБизнесПроцессы
- 1601
-
- ru
- Подчиненные бизнес-процессы и задачи
-
- true
- true
-
- true
-
-
- НаборКонстант.ИспользоватьПодчиненныеБизнесПроцессы
-
- Right
-
- OnChange
- ИспользоватьПодчиненныеБизнесПроцессыПриИзменении
-
-
- ИспользоватьПодчиненныеБизнесПроцессыExtendedTooltip
- 1685
- Label
- true
- true
-
- Left
-
-
-
- ИспользоватьПодчиненныеБизнесПроцессыКонтекстноеМеню
- 1602
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
-
+ ГруппаБизнесПроцессыИЗадачи
+ 1697
- ПояснениеИспользоватьПодчиненныеБизнесПроцессы
- 1606
-
- ru
- Запуск подчиненных бизнес-процессов для учета иерархических работ.
-
+ Отступ
+ 1699truetruetrue
- ПояснениеИспользоватьПодчиненныеБизнесПроцессыExtendedTooltip
- 1686
+ ОтступРасширеннаяПодсказка
+ 1701Labeltruetrue
@@ -1769,195 +1719,112 @@
- ПояснениеИспользоватьПодчиненныеБизнесПроцессыКонтекстноеМеню
- 1607
+ ОтступКонтекстноеМеню
+ 1700trueLabeltruetrue
-
- Style.ПоясняющийТекст
- Left
- true
- true
-
- true
-
- 43
- false
-
- ГруппаИспользоватьПодчиненныеБизнесПроцессыExtendedTooltip
- 1684
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
-
- ГруппаИзменятьЗаданияЗаднимЧислом
- 1353
-
- ИзменятьЗаданияЗаднимЧислом
- 766
-
- ru
- Изменять запущенные бизнес-процессы
-
- true
- true
-
- true
-
-
- НаборКонстант.ИзменятьЗаданияЗаднимЧислом
-
- Right
-
- ru
-
-
-
- OnChange
- ИзменятьЗаданияЗаднимЧисломПриИзменении
-
-
- ИзменятьЗаданияЗаднимЧисломExtendedTooltip
- 1688
- Label
- true
- true
-
- Left
-
-
-
- ИзменятьЗаданияЗаднимЧисломКонтекстноеМеню
- 767
- true
-
- CheckBoxField
- Auto
- true
- Left
- true
-
-
-
- ПояснениеИзменятьЗаданияЗаднимЧислом
- 1354
-
- ru
- Внесение изменений в задачи запущенных бизнес-процессов.
-
- true
- true
-
- true
-
-
- ПояснениеИзменятьЗаданияЗаднимЧисломExtendedTooltip
- 1689
- Label
- true
- true
-
- Left
-
-
-
- ПояснениеИзменятьЗаданияЗаднимЧисломКонтекстноеМеню
- 1355
- true
-
- Label
- true
- true
-
- Style.ПоясняющийТекст
-
-
- Left
-
-
- true
- true
-
- true
-
-
- ru
- Группа изменять задания задним числом
-
-
- ru
- Группа изменять задания задним числом
-
-
- ГруппаИзменятьЗаданияЗаднимЧисломExtendedTooltip
- 1687
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
-
- Группа4
- 1598
- ГруппаИспользоватьДатуНачалаЗадач
- 1350
-
- ИспользоватьДатуНачалаЗадач
- 761
-
- ru
- Дата начала задач
-
+ ГруппаБизнесПроцессыИЗадачиНастройки
+ 1702
+
+ ГруппаИспользоватьПодчиненныеБизнесПроцессы
+ 1603
+
+ ИспользоватьПодчиненныеБизнесПроцессы
+ 1601
+
+ ru
+ Подчиненные бизнес-процессы и задачи
+
+ true
+ true
+
+ true
+
+
+ НаборКонстант.ИспользоватьПодчиненныеБизнесПроцессы
+
+ Right
+
+ OnChange
+ ИспользоватьПодчиненныеБизнесПроцессыПриИзменении
+
+
+ ИспользоватьПодчиненныеБизнесПроцессыExtendedTooltip
+ 1685
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИспользоватьПодчиненныеБизнесПроцессыКонтекстноеМеню
+ 1602
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ПояснениеИспользоватьПодчиненныеБизнесПроцессы
+ 1606
+
+ ru
+ Запуск подчиненных бизнес-процессов для учета иерархических работ.
+
+ true
+ true
+
+ true
+
+
+ ПояснениеИспользоватьПодчиненныеБизнесПроцессыExtendedTooltip
+ 1686
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеИспользоватьПодчиненныеБизнесПроцессыКонтекстноеМеню
+ 1607
+ true
+
+ Label
+ true
+ true
+
+ Style.ПоясняющийТекст
+
+
+ Left
+
+ truetruetrue
-
- НаборКонстант.ИспользоватьДатуНачалаЗадач
-
- Right
-
- OnChange
- ИспользоватьДатуНачалаЗадачПриИзменении
-
+ 40
+ false
- ИспользоватьДатуНачалаЗадачExtendedTooltip
- 1692
+ ГруппаИспользоватьПодчиненныеБизнесПроцессыExtendedTooltip
+ 1684Labeltruetrue
@@ -1965,120 +1832,395 @@
Left
-
- ИспользоватьДатуНачалаЗадачКонтекстноеМеню
- 762
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
-
- ПояснениеИспользоватьДатуНачалаЗадач
- 1351
+
+ ГруппаИзменятьЗаданияЗаднимЧислом
+ 1353
+
+ ИзменятьЗаданияЗаднимЧислом
+ 766
+
+ ru
+ Изменять запущенные бизнес-процессы
+
+ true
+ true
+
+ true
+
+
+ НаборКонстант.ИзменятьЗаданияЗаднимЧислом
+
+ Right
+
+ ru
+
+
+
+ OnChange
+ ИзменятьЗаданияЗаднимЧисломПриИзменении
+
+
+ ИзменятьЗаданияЗаднимЧисломExtendedTooltip
+ 1688
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИзменятьЗаданияЗаднимЧисломКонтекстноеМеню
+ 767
+ true
+
+ CheckBoxField
+ Auto
+ true
+ Left
+ true
+
+
+
+ ПояснениеИзменятьЗаданияЗаднимЧислом
+ 1354
+
+ ru
+ Внесение изменений в задачи запущенных бизнес-процессов.
+
+ true
+ true
+
+ true
+
+
+ ПояснениеИзменятьЗаданияЗаднимЧисломExtendedTooltip
+ 1689
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеИзменятьЗаданияЗаднимЧисломКонтекстноеМеню
+ 1355
+ true
+
+ Label
+ true
+ true
+
+ Style.ПоясняющийТекст
+
+
+ Left
+
+
+ true
+ true
+
+ true
+ ru
- Разрешить исполнителям заполнять поле "Дата начала"
+ Группа изменять задания задним числом
+
+
+ ru
+ Группа изменять задания задним числом
+
+ 40
+ false
+
+ ГруппаИзменятьЗаданияЗаднимЧисломExtendedTooltip
+ 1687
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ Группа4
+ 1598
+
+ ГруппаИспользоватьДатуНачалаЗадач
+ 1350
+
+ ИспользоватьДатуНачалаЗадач
+ 761
+
+ ru
+ Дата начала задач
+
+ true
+ true
+
+ true
+
+
+ НаборКонстант.ИспользоватьДатуНачалаЗадач
+
+ Right
+
+ OnChange
+ ИспользоватьДатуНачалаЗадачПриИзменении
+
+
+ ИспользоватьДатуНачалаЗадачExtendedTooltip
+ 1692
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИспользоватьДатуНачалаЗадачКонтекстноеМеню
+ 762
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ПояснениеИспользоватьДатуНачалаЗадач
+ 1351
+
+ ru
+ Разрешить исполнителям заполнять поле "Дата начала"
и сортировать по нему список своих задач.
-
+
+ true
+ true
+
+ true
+
+
+ ПояснениеИспользоватьДатуНачалаЗадачExtendedTooltip
+ 1693
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеИспользоватьДатуНачалаЗадачКонтекстноеМеню
+ 1352
+ true
+
+ Label
+ true
+ true
+
+ Style.ПоясняющийТекст
+
+
+ Left
+ Top
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа использовать дату начала задач
+
+
+ ru
+ Группа использовать дату начала задач
+
+ 40
+ false
+
+ ГруппаИспользоватьДатуНачалаЗадачExtendedTooltip
+ 1691
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаИспользоватьДатуИВремяВСрокахЗадач
+ 1347
+
+ ИспользоватьДатуИВремяВСрокахЗадач
+ 757
+
+ ru
+ Дата и время в сроках задач
+
+ true
+ true
+
+ true
+
+
+ НаборКонстант.ИспользоватьДатуИВремяВСрокахЗадач
+
+ Right
+
+ ru
+
+
+
+ OnChange
+ ИспользоватьДатуИВремяВСрокахЗадачПриИзменении
+
+
+ ИспользоватьДатуИВремяВСрокахЗадачExtendedTooltip
+ 1695
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИспользоватьДатуИВремяВСрокахЗадачКонтекстноеМеню
+ 758
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ПояснениеИспользоватьДатуИВремяВСрокахЗадач
+ 1348
+
+ ru
+ Ввод сроков задач с точностью до минут.
+
+ true
+ true
+
+ true
+
+
+ ПояснениеИспользоватьДатуИВремяВСрокахЗадачExtendedTooltip
+ 1696
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеИспользоватьДатуИВремяВСрокахЗадачКонтекстноеМеню
+ 1349
+ true
+
+ Label
+ true
+ true
+
+ Style.ПоясняющийТекст
+
+
+ Left
+ Top
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа использовать дату и время в сроках задач
+
+
+ ru
+ Группа использовать дату и время в сроках задач
+
+
+ ГруппаИспользоватьДатуИВремяВСрокахЗадачExtendedTooltip
+ 1694
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ truetruetrue
-
- ПояснениеИспользоватьДатуНачалаЗадачExtendedTooltip
- 1693
- Label
- true
- true
-
- Left
-
-
-
- ПояснениеИспользоватьДатуНачалаЗадачКонтекстноеМеню
- 1352
- true
-
- Label
- true
- true
-
- Style.ПоясняющийТекст
-
-
- Left
- Top
-
-
- true
- true
-
- true
-
-
- ru
- Группа использовать дату начала задач
-
-
- ru
- Группа использовать дату начала задач
-
-
- ГруппаИспользоватьДатуНачалаЗадачExtendedTooltip
- 1691
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
-
- ГруппаИспользоватьДатуИВремяВСрокахЗадач
- 1347
-
- ИспользоватьДатуИВремяВСрокахЗадач
- 757ru
- Дата и время в сроках задач
+
- true
- true
-
- true
-
-
- НаборКонстант.ИспользоватьДатуИВремяВСрокахЗадач
-
- Rightru
-
- OnChange
- ИспользоватьДатуИВремяВСрокахЗадачПриИзменении
-
- ИспользоватьДатуИВремяВСрокахЗадачExtendedTooltip
- 1695
+ Группа4ExtendedTooltip
+ 1690Labeltruetrue
@@ -2086,54 +2228,14 @@
Left
-
- ИспользоватьДатуИВремяВСрокахЗадачКонтекстноеМеню
- 758
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
-
-
- ПояснениеИспользоватьДатуИВремяВСрокахЗадач
- 1348
-
- ru
- Ввод сроков задач с точностью до минут.
-
- true
- true
-
- true
-
-
- ПояснениеИспользоватьДатуИВремяВСрокахЗадачExtendedTooltip
- 1696
- Label
- true
- true
-
- Left
-
-
-
- ПояснениеИспользоватьДатуИВремяВСрокахЗадачКонтекстноеМеню
- 1349
- true
-
- Label
- true
- true
-
- Style.ПоясняющийТекст
-
-
- Left
- Top
+ UsualGroup
+
+ Auto
+ true
+ true
+ Equal
+ Auto
+ Autotrue
@@ -2143,15 +2245,15 @@
ru
- Группа использовать дату и время в сроках задач
+ Группа бизнес процессы и задачи настройкиru
- Группа использовать дату и время в сроках задач
+ Группа бизнес процессы и задачи настройки
- ГруппаИспользоватьДатуИВремяВСрокахЗадачExtendedTooltip
- 1694
+ ГруппаБизнесПроцессыИЗадачиНастройкиРасширеннаяПодсказка
+ 1703Labeltruetrue
@@ -2176,17 +2278,15 @@
ru
-
+ Группа бизнес процессы и задачиru
-
+ Группа бизнес процессы и задачи
- 86
- false
- Группа4ExtendedTooltip
- 1690
+ ГруппаБизнесПроцессыИЗадачиРасширеннаяПодсказка
+ 1698Labeltruetrue
@@ -2197,9 +2297,9 @@
UsualGroupAuto
+ NormalSeparationtruetrue
- EqualAutoAuto
@@ -2312,15 +2412,15 @@
- ОткрытьРолиИИсполнителиБизнесПроцессов
+ РолиИИсполнителиЗадачru
- Роли и исполнители бизнес-процессов
+ Роли и исполнители задач41ru
- Открыть список ролей и исполнителей бизнес процессов
+ Список ролей и исполнителей задачtrue
diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html
index 8f41fcff2..611d247e9 100644
--- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html
+++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html
@@ -1,41 +1,25 @@
-
В данной панели осуществляется настройка электронной почты, заметок, напоминаний и бизнес-процессов.
-
-
Почтовый клиент
-
Флажок использования возможностей встроенного в программу почтового клиента для взаимодействий с помощью электронных писем (e-mail).
-
Исходящие письма в формате HTML
-
Флажок редактирования исходящих писем в формате HTML.
-
Звонки, встречи и запланированные взаимодействия
-
Флажок регистрирации в программе звонков, встреч и запланированных взаимодействий.
-
Признаки "Рассмотрено" и "На контроле"
-
Возможность устанавливать признаки "Рассмотрено" и "На контроле" для входящих писем, встреч, телефонных звонков и запланированных взаимодействий. Этот флажок полезно использовать для организации совместной работы в программе.
Эта настройка используется для отправки SMS сообщений из программы.
-
Заметки
-
Флажок добавления заметок к справочникам и документам.
-
Напоминания
-
Флажок добавления напоминаний, которые срабатывают в назначенное время. Напоминания могут быть произвольными, или по предмету, ссылаясь, например на элемент справочника, документ, или другой объект программы.
-
Анкетирование
-
Флажок составления анкет, проведения опросов и анализа результатов опросов.
-
Бизнес-процессы и задачи
-
Включает использование запускаемых бизнес-процессов и позволяет работу с задачами.
В данной панели осуществляется настройка электронной почты, заметок, напоминаний и бизнес-процессов. Доступны команды:
+
Почтовый клиент - включите флажок, для того чтобы использовать возможности встроенного в программу почтового клиента для взаимодействий с помощью электронных писем (e-mail).
+
Исходящие письма в формате HTML - включите флажок, для того чтобы редактировать исходящие письма в формате HTML.
+
Звонки, SMS, встречи и запланированные взаимодействия - включите флажок, для того чтобы регистрировать в программе звонки, встречи, сообщения SMS и запланированные взаимодействия.
+
Настройка отправки SMS - переход к настройке параметров отправки SMS-сообщений из программы.
+
Заметки - включите этот флажок, для того чтобы можно было использовать заметки - произвольную текстовую информацию, для которой не получается подобрать какого-либо более подходящего справочника или документа, и которая больше никому не должна быть доступна. Заметки могут быть произвольными или по предмету, ссылаясь, например, на элемент справочника, документ, или другой объект программы.
+
Напоминания - включите этот флажок, для того чтобы можно было вводить напоминания, которые срабатывают в назначенное время. Укажите время и предмет, по поводу которого в программе в указанное время будет выведен список напоминаний. Напоминания могут быть произвольными или по предмету, ссылаясь, например, на элемент справочника, документ, или другой объект программы.
+
Анкетирование - включите этот флажок, для того чтобы стал доступным соответствующий раздел программы, в котором можно готовить опросы, составлять анкеты, проводить опросы среди респондентов, а также и анализировать результаты опросов.
+
Бизнес-процессы и задачи - включите флажок, для того чтобы стал доступным раздел программы Бизнес-процессы и задачи, который предполагает использование запускаемых бизнес-процессов и позволяет работу с задачами. Также становится доступным ряд других команд, с помощью которых можно запустить бизнес-процессы и использовать задачи:
+
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html
index 0e4591b60..b5ae64cd2 100644
--- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html
+++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html
@@ -1,17 +1,13 @@
-
В данной панели осуществляется настройка печатных форм, вариантов отчетов, рассылок отчетов, дополнительных отчетов и обработок.
В данной панели осуществляется настройка печатных форм, вариантов отчетов, рассылок отчетов, дополнительных отчетов и обработок. Доступны команды:
+
Макеты печатных форм - переход к списку макетов для настройки печатных форм, формируемых из программы.
+
Отчеты - переход к списку вариантов отчетов для настройки их доступности и размещения в разделах программы.
+
Дополнительные отчеты и обработки - включите флажок, для того чтобы подключать к программе внешние печатные формы, отчеты и обработки в дополнение к предусмотренным в программе. После включения становится доступной команда:
+
Дополнительные отчеты и обработки - переход к подключению внешних печатных форм, отчетов и обработок в дополнение к предусмотренным в программе.
Рассылки отчетов - переход к списку рассылок отчетов для автоматического формирования отчетов и доставки сформированных отчетов получателям.
Настройка, выполнение и отслеживание состояний регламентных и фоновых заданий. Регламентные задания автоматически выполняют регламентные операции по расписанию.
Управление итогами регистров накопления и бухгалтерии и агрегатами оборотных регистров. Правильная настройка итогов и агрегатов может повысить производительность программы.
Поддержка индекса полнотекстового поиска в актуальном состоянии.
Резервное копирование и восстановление
-
-
С целью уменьшения риска потери данных необходимо регулярно выполнять резервное копирование программы. Частота создания резервных копий зависит от интенсивности ввода новых данных.
Настройка автоматического резервного копирования по расписанию, или отключение контроля за резервным копированием, если оно выполняется сторонними средствами.
В данной панели осуществляется контроль над состоянием программы, резервное копирование и восстановление, обновление версии, оптимизация быстродействия.
+
Журнал регистрации - просмотр событий и действий, которые происходили в регламентных заданиях или в процессе работы пользователей в программе.
+
Активные пользователи - список пользователей, которые сейчас работают в программе.
+
Блокировка работы пользователей - установка и снятие запрета работы пользователей с программой. При установке запрета завершается работа всех активных пользователей (включая текущего).
+
Удаление помеченных объектов - окончательное удаление тех объектов программы, которым ранее была присвоена пометка на удаление.
Дополнительные отчеты по администрированию - команды дополнительных отчетов, подключенных к программе.
+
+
Дополнительные обработки по администрированию - команды дополнительных обработок, подключенных к программе.
Регламентные операции
+
+
Регламентные и фоновые задания - переход к списку регламентных и фоновых заданий. Настройка, выполнение и отслеживание состояний регламентных и фоновых заданий. Регламентные задания автоматически выполняют регламентные операции по расписанию.
+
+
Даты запрета изменения данных - установка запрета изменения данных прошлых периодов для пользователей этой программы. Также предусмотрена команда Даты запрета загрузки данных в подразделе Синхронизация данных.
+
+
Управление итогами и агрегатами - управление итогами регистров накопления и бухгалтерии и агрегатами оборотных регистров накопления. Правильная настройка итогов и агрегатов может повысить производительность программы.
+
+
+
Управление полнотекстовым поиском - настройка полнотекстового поиска: включение полнотекстового поиска данных, поддержка индекса полнотекстового поиска в актуальном состоянии.
+
+
+
Автоматически удалять помеченные объекты по расписанию - включите флажок, для того чтобы настроить регламентное задание по автоматическому удалению помеченных объектов
С целью уменьшения риска потери данных необходимо регулярно выполнять резервное копирование программы. Частота создания резервных копий зависит от интенсивности ввода новых данных в программу.
+
+
Создание резервной копии - выполнение резервного копирования программы: прямо сейчас, через некоторое время или при завершении работы.
+
+
Настройка резервного копирования - настройка автоматического резервного копирования по расписанию, или отключение контроля резервного копирования, если оно выполняется сторонними средствами.
Адресный классификатор - загрузка и обновление классификатора адресов РФ с сайта поддержки пользователей 1С:Предприятия, диска 1С:ИТС или файлов ГНИВЦ ФНС РФ. Проверка обновлений и очистка данных классификатора.
Защита персональных данных
+
+
Регистрация событий доступа к персональным данным - настройка регистрация событий доступа к персональным данным физических лиц в соответствии с требованиями Федерального закона от 27.07.2006 N152-ФЗ "О персональных данных".
+
+
Защита персональных данных - просмотр обращений к персональным данным выбранных объектов программы. События, связанные с защитой персональных данных, фиксируются в программе автоматически.
Обновление версии программы
+
+
Поиск и установка обновлений - получение информации о последних обновлениях на пользовательском сайте в сети Интернет и помощник автоматической установки обновлений программы
+
+
Настройка обновления программы через Интернет - включение и настройка расписания автоматического обновления программы через интернет, настройка доступа на пользовательский сайт для получения обновлений.
+
+
Описание изменений программы - просмотр списка изменений в установленной версии программы и рекомендаций по обновлению программы.
+
+
Детализировать ход обновления в журнале регистрации - при включенной настройке в журнал регистрации записываются выполняемые обработчики обновления с указанием времени выполнения.
Полнотекстовый поиск используется при поиске данных в программе по содержимому справочников, документов и других объектов программы. Для начала работы с полнотекстовым поиском необходимо включить флажок Полнотекстовый поиск данных. После этого появится возможность управлять индексом полнотекстового поиска, обновлять и очищать его.
-
Команды управления полнотекстовым поиском:
-
-
Обновить индекс
-
Выполняет обновление полнотекстового индекса, добавляя к нему новые или измененные объекты.
-
Очистить индекс
-
Удаляет все файлы полнотекстового индекса.
Автоматическое извлечение текстов
Извлечение текстов из файлов необходимо для полнотекстового поиска в программе. В клиент-среверном варианте если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows нужно запустить тонкий или толстый клиент, и на нем открыть обработку «Автоматическое извлечение текстов». Эта обработка в автоматическом режиме будет извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам. В файловом варианте работы тексты извлекаются автоматически при загрузке файла в программу.
Предназначена для включения и отключения полнотекстового поиска, обновления индекса полнотекстового поиска, а также настройки извлечения текстов из файлов для использования при поиске.
+
Открывается по команде Управление полнотекстовым поиском раздела Администрирование - Поддержка и обслуживание - Регламентные операции.
+
Программа позволяет производить полнотекстовый поиск в любых справочниках, документах и других объектах, отыскивая заданную строку во всех полях объектов. При наличии присоединенных файлов, содержащих текстовую информацию, поиск осуществляется также и по ним. Полнотекстовый поиск используется при поиске данных в программе по содержимому справочников, документов и других объектов программы.
+
Также полнотекстовый поиск предоставляет такие возможности как: поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ); поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами); нечеткий поиск (буквы в найденных словах могут отличаться).
+
Для начала работы с полнотекстовым поиском необходимо включить флажок Полнотекстовый поиск данных. В этом случае становятся доступными команды, которые позволяют настроить полнотекстовый поиск данных в программе, управлять индексом полнотекстового поиска, обновлять и очищать его. По умолчанию флажок включен.
+
В файловом режиме работы программы доступны только команды управления полнотекстовым индексом, тексты извлекаются автоматически при загрузке файла в программу.
+
Обновление индекса полнотекстового поиска
+
Для того чтобы можно было осуществлять поиск по всем введенным в программу данным, необходимо регулярно актуализировать индекс полнотекстового поиска. Для регулярного автоматического обновления индекса предназначены регламентные задания Обновление индекса ППД и Слияние индекса ППД (выполняется раз в сутки).
+
Если индекс уже был обновлен, то отображается Дата актуальности индекса - дата последнего обновления индекса.
+
Если в программе есть данные, которые не прошли индексирование, то становится доступна кнопка Обновить индекс и выводится Статус индекса "Требуется обновление".
Очистка индекса полнотекстового поиска
+
Если работа поиска по каким-то причинам нарушена, то с помощью кнопки Очистить индекс можно удалить все файлы полнотекстового индекса. После удаления индекса необходимо заново его построить, используя кнопку Обновить индекс.
В клиент-серверном режиме доступны команды по настройке автоматического извлечения текстов.
+
Автоматическое извлечение текстов
+
Извлечение текстов из файлов необходимо для полнотекстового поиска в программе.
+
Для настройки необходимо с помощью переключателя выбрать:
+
Все сервера в кластере 1С:Предприятие работают под управлением ОС Windows - в этом случае становится доступной команда Настроить регламентное задание. Укажите расписание и другие параметры регламентного задания по извлечению текстов из файлов.
+
Один или несколько серверов работают под управлением ОС Linux - в этом случае с помощью команды Извлечение текстов можно начать извлечение текстов в тонком клиенте на рабочей станции под управлением ОС Windows.
Если в клиент-серверном варианте один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows, нужно запустить тонкий или толстый клиент, и на нем выполнить команду Извлечение текстов, для того чтобы в автоматическом режиме извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.
В разделе "Настройка и администрирование" предусмотрены средства, при помощи которых можно изменять параметры работы, проводить регламентные операции и контролировать состояние программы.
-
При необходимости, часто используемые настройки можно вынести в командный интерфейс раздела "Настройка и администрирование" в настройках панели навигации или панели действий, в зависимости от типа настройки.
В разделе Администрирование предусмотрены средства, при помощи которых можно изменять параметры работы, проводить регламентные операции и контролировать состояние программы.
+
Для эффективной работы программы ее необходимо правильно настроить.
+
При необходимости, часто используемые настройки можно вынести в командный интерфейс раздела Администрирование в настройках панели навигации или панели действий, в зависимости от типа настройки.
+
См. также:
+
Поддержка и обслуживание - в данном подразделе администратору предоставляются возможности по поддержанию программы в работоспособном состоянии;
+
Общие настройки - в данном подразделе производятся основные настройки программы;
+
Настройки пользователей и прав - в данном подразделе предусмотрены команды, связанные с управлением доступом и настройкой прав пользователей;
+
Органайзер - в данном подразделе предусмотрены команды настройки электронной почты, заметок, напоминаний и бизнес-процессов;
+
Настройки синхронизации данных - в данном подразделе производится настройка синхронизации данных с другими программами, а также организация совместной работы в распределенной информационной базе;
+
Настройки работы с файлами - в данном подразделе предоставляется возможность настройки параметров загрузки, хранения и обработки файлов;
+
Печатные формы, отчеты и обработки - в данном подразделе производится настройка печатных форм, вариантов отчетов, дополнительных отчетов и обработок.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo
index 6b33a22ad..d0e67ece3 100644
--- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo
+++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo
@@ -7,9 +7,10 @@
ПанельАдминистрированияБСПru
- Панель администрирования (стандартные функции)
+ Панель администрирования БСПDataProcessor.ПанельАдминистрированияБСП.Form.Форма
+ trueru
@@ -144,6 +145,10 @@
NavigationPanelImportantAuto
+
+ ru
+ Контроль за состоянием программы, резервное копирование и восстановление, обновление версии, оптимизация быстродействия.
+ ОбщиеНастройки
@@ -153,6 +158,10 @@
NavigationPanelOrdinaryAuto
+
+ ru
+ Изменение заголовка программы, настройка версионирования объектов, дополнительных реквизитов и других общих настроек.
+ НастройкиПользователейИПрав
@@ -162,6 +171,10 @@
NavigationPanelOrdinaryAuto
+
+ ru
+ Администрирование пользователей, настройка групп доступа, предоставление доступа для внешних пользователей, управление пользовательскими настройками.
+ Органайзер
@@ -171,6 +184,10 @@
NavigationPanelOrdinaryAuto
+
+ ru
+ Настройка электронной почты, заметок, напоминаний и бизнес-процессов.
+ НастройкиСинхронизацииДанных
@@ -180,6 +197,11 @@
NavigationPanelOrdinaryAuto
+
+ ru
+ Настройка синхронизации данных с другими программами
+и организация совместной работы в распределенной информационной базе.
+ НастройкиРаботыСФайлами
@@ -189,6 +211,10 @@
NavigationPanelOrdinaryAuto
+
+ ru
+ Настройка параметров загрузки, хранения и обработки файлов.
+ ПечатныеФормыОтчетыИОбработки
@@ -198,5 +224,9 @@
NavigationPanelOrdinaryAuto
+
+ ru
+ Настройка печатных форм, вариантов отчетов, рассылок отчетов, дополнительных отчетов и обработок.
+
diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСПВМоделиСервиса/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСПВМоделиСервиса/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html
index e0576cfcc..73d48b734 100644
--- a/SSL/src/DataProcessors/ПанельАдминистрированияБСПВМоделиСервиса/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html
+++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСПВМоделиСервиса/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html
@@ -4,7 +4,7 @@
TD {
VERTICAL-ALIGN: top
}
-
+
В данной панели осуществляется настройка синхронизации данных с моими приложениями.
diff --git a/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html b/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html
index 9818c4100..3741db89c 100644
--- a/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html
+++ b/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html
@@ -1 +1,12 @@
-Обработка предназначена для переноса файлов, хранящихся в информационной базе в тома хранения файлов. При этом в настройках программы должна быть включена настройка "Хранить файлы в томах на диске".
\ No newline at end of file
+
+
Предназначена для переноса файлов, хранящихся в информационной базе, в тома хранения файлов.
+
Для успешного переноса файлов необходимо:
+
В настройках программы в разделе Администрирование - Настройки работы с файлами включить флажок Хранить файлы в томах на диске.
+
Предназначена для поиска и устранения дублирования элементов во всех списках программы (для администраторов программы).
При работе пользователей в программе часто ошибочно вводятся дубли (например, неправильно производился поиск элемента, в результате его не нашли и ввели заново), которые мешают правильному учету. В документах указывают то один экземпляр элемента, то другой, в результате при проведении документов возникают неправильные проводки, и баланс не сходится. Поэтому от дублирования в программе необходимо избавляться.
Программа позволяет найти вхождения всех дублирующихся элементов и производит в документах замену всех ссылок на дубли ссылками на выбранный "правильный" элемент, затем помечает на удаление дублирующиеся элементы в списке.
diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl
index 5c43de852..68230aa82 100644
--- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl
+++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl
@@ -124,6 +124,7 @@
ПараметрыЗамены = Новый Структура;
ПараметрыЗамены.Вставить("СпособУдаления", Параметры.СпособУдаления);
ПараметрыЗамены.Вставить("ВключатьБизнесЛогику", Истина);
+ ПараметрыЗамены.Вставить("ЗаменаПарыВТранзакции", Ложь);
ЗаменитьСсылки(Параметры.ПарыЗамен, ПараметрыЗамены, АдресРезультата);
diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo
index 38031d253..c9146053f 100644
--- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo
+++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo
@@ -11,6 +11,7 @@
trueDataProcessor.ПоискИУдалениеДублей.Form.ПоискДублей
+ trueru
diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Form.form b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Form.form
index 0d792ebfc..3878bf802 100644
--- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Form.form
+++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Form.form
@@ -47,6 +47,10 @@
Style.BorderColorNormal
+
+ ru
+ Найти документ или файл
+
@@ -70,7 +74,7 @@
UsualButtonForm.Command.ВыполнитьПоиск
- PictureAndText
+ Autotruetrue1
@@ -148,12 +152,12 @@
ВыполнитьПоискru
- Найти...
+ Найти2ru
- Найти текст
+ Найти документ по наименованию или части фразыtrue
diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Form.form b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Form.form
index 22ea7bea7..da5912257 100644
--- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Form.form
@@ -62,6 +62,10 @@
Style.BorderColorNormal
+
+ ru
+ Введите искомый текст или часть фразы
+
@@ -142,10 +146,6 @@
true
-
- ru
- Группа поиска
- ГруппаПоискаExtendedTooltip52
@@ -401,6 +401,7 @@
truetrueUserCmds
+ NoneAuto
@@ -449,14 +450,6 @@
true
-
- ru
- Группа обновление индекса
-
-
- ru
- Группа обновление индекса
- ГруппаОбновлениеИндексаExtendedTooltip62
diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl
index 45b180df5..2e24c73e7 100644
--- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl
@@ -110,8 +110,16 @@
ЧастьURL = ЭлементHTML.outerHTML;
Позиция = Найти(ЧастьURL, "sel_num=");
+ ЧастьURLОбрезанная = Сред(ЧастьURL, Позиция + 9);
+ ПозицияОкончание = Найти(ЧастьURLОбрезанная, """");
+ Если ПозицияОкончание = 0 Тогда
+ ПозицияОкончание = Найти(ЧастьURLОбрезанная, "'");
+ Если ПозицияОкончание = 0 Тогда
+ ПозицияОкончание = 2;
+ КонецЕсли;
+ КонецЕсли;
Если Позиция <> 0 Тогда
- ЧастьURL = Сред(ЧастьURL, Позиция+9, 1);
+ ЧастьURL = Сред(ЧастьURLОбрезанная, 1, ПозицияОкончание - 1);
КонецЕсли;
НомерВСписке = Число(ЧастьURL);
diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html
index 34483a7f7..8e4bff58d 100644
--- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html
+++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html
@@ -1,7 +1,14 @@
-
+
Полнотекстовый поиск данных позволяет находить любые сведения не только по полям карточек, но и по содержимому присоединенных файлов.
+
Полнотекстовый поиск можно выполнять прямо с Рабочего стола программы.
+
Полнотекстовый поиск предоставляет такие возможности как:
+
Поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ);
+
Поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами);
+
Нечеткий поиск (буквы в найденных словах могут отличаться).
Для поиска данных в программе наберите слово или его начало. Нажмите Найти. Поиск может осуществляться по одному или нескольким словам. В строке ввода допускается использование поисковых операторов типа И, ИЛИ, НЕ.
В поле ввода строки поиска можно вставить навигационную ссылку на данные. В этом случае поиск произведен не будет, а будет сразу открыта нужная карточка. Навигационную ссылку на любой объект информационной базы можно получить при помощи команды в заголовке каждого окна 1С:Предприятия 8.
-
В файловом варианте информационной базы индекс полнотекстового поиска не обновляется автоматически и поэтому должен периодически обновляться вручную. Если индекс полнотекстового поиска не актуален (т.е. есть такие данные, которые еще не прошли индексирование), то в файловом варианте информационной базы становится доступна кнопка «Обновить индекс».
+
Обновление индекса
+
В файловом варианте информационной базы индекс полнотекстового поиска не обновляется автоматически и поэтому должен периодически обновляться вручную. Если индекс полнотекстового поиска не актуален (т.е. есть такие данные, которые еще не прошли индексирование), то в файловом варианте информационной базы становится доступна кнопка Обновить индекс.
+
Примеры
Пример поиска
Результат
«Реализация 00016422»
@@ -11,16 +18,16 @@
Найдет все документы «реализация товаров и услуг» по контрагенту ООО «Акация»
«Акация 05.07»
Найдет все документы по контрагенту ООО «Акация», оформленные 5-го июля
«Кроссовки»
Найдет все упоминания товаров типа «кроссовки» по порядку: • Кроссовки белые (Товар) • Кроссовки черные (Товар) • Поступление товаров и услуг № 00086822 • Реализация товаров и услуг № 00016422
-
Советы:
+
Советы
-
Если нашлось много данных, то уточните поисковый запрос, добавив к нему какое-либо уточнение (дату, сумму, название контрагента)
-
Если нашлось мало данных, то упростите запрос, исключив из него какое-либо слово
+
Если нашлось много данных, то уточните поисковый запрос, добавив к нему какое-либо уточнение (дату, сумму, название контрагента).
+
Если нашлось мало данных, то упростите запрос, исключив из него какое-либо слово.
Для точного поиска используйте:
-
Кавычки - для поиска точной фразы, например: «"мини пылесос"»
+
Кавычки - для поиска точной фразы, например: «"мини пылесос"».
ИЛИ - для поиска одного из двух слов, например «Акация ИЛИ Стройпромвсе» - найдет все упоминания контрагентов ООО "Акация" и ЗАО "Стройпромвсе".
Скобки - для группировки выражений, например поиск «Иванов (Акация ИЛИ Стройпромвсе)» найдет все документы, выписанные Ивановым по контрагентам ООО "Акация" и ЗАО "Стройпромвсе".
-
Для поиска с учетом синонимов используйте "!", например, поиск "!номер" найдет все документы в которых встречается слово "номер" или "число"
-
Для "нечеткого" поиска используйте "#" например "Стройпромвсе#2" найдет все документы, содержащие такие слова, которые отличаются от слова "Стройпромвсе" на одну или две буквы.
+
Для поиска с учетом синонимов используйте "!", например, поиск "!номер" найдет все документы в которых встречается слово "номер" или "число".
+
Для "нечеткого" поиска используйте "#", например поиск "Стройпромвсе#2" найдет все документы, содержащие такие слова, которые отличаются от слова "Стройпромвсе" на одну или две буквы.
Для поиска по началу слова используйте "*", например, поиск "Строй*" найдет все документы, которые содержат слова, начинающиеся на "Строй" - "Стройка", "Стройпромвсе" и т.д.
Помощник интерактивной синхронизации данных предназначен для выполнения синхронизации данных с возможностью предварительного просмотра и сопоставления загружаемых данных. Помощник позволяет выполнять сопоставление объектов двух информационных баз, между которыми настроена синхронизация данных. После выполнения сопоставления выполняется загрузка данных и последующая выгрузка данных.
Режим интерактивной синхронизации данных следует использовать в случае, когда до начала синхронизации один и тот же объект мог быть введен независимо в обеих обменивающихся ИБ. Другими словами, интерактивный режим синхронизации данных следует выбирать при первой синхронизации данных между ИБ, учет в которых уже ведется. Поскольку вероятность существования в таких ИБ одних и тех же объектов очень высока. В этом случае интерактивный режим позволит такие объекты сопоставить вручную.
Открыть помощник можно, нажав кнопку Синхронизировать с дополнительными параметрами в списке Синхронизация данных.
Предназначен для настройки синхронизации данных между двумя программами. Возможна настройка синхронизации данных по правилам обмена, без использования правил обмена и организация совместной работы в распределенной информационной базе (РИБ).
Этапы настройки параметров синхронизации данных
Настройка синхронизации данных при выборе варианта подключения через другие каналы связи выполняется в два этапа. Первый шаг настройки синхронизации данных выполняется в текущей программе, затем необходимо перейти в другую программу и закончить в ней настройку синхронизации данных. Для передачи информации между этапами настройки синхронизации данных используется временный файл с настройками. При настройке синхронизации данных через прямое соединение с базой или через веб-сервисы вся настройка для обеих программ выполняется в текущей программе.
@@ -74,7 +74,7 @@
При настройке синхронизации данных в клиент-серверном варианте работы информационной базы необходимо иметь в виду, что данные синхронизируются на компьютере, на котором установлен сервер 1С:Предприятия. Для сервера 1С:Предприятия под управлением операционной системы Microsoft Windows это путь вида: \\servername\resource а для сервера под управлением Linux: //servername/resource.
Необходимо убедиться в том, что каталог синхронизации доступен для чтения и записи пользователю операционной системы, от имени которого запущен сервер 1С:Предприятия. Если это не так, то необходимо дать этому пользователю необходимые права, или выбрать другого пользователя для запуска сервера 1С:Предприятия с необходимыми правами на каталог, используемый для синхронизации данных. Эти же рекомендации актуальны и для доступа к ресурсам FTP и электронной почты. Подробнее об администрировании сервера 1С:Предприятия см. документацию к платформе 1С:Предприятие.
Особенности создания узла РИБ.
-
На первом этапе создается начальный образ РИБ. Все страницы помощника остаются без изменений. На странице Первый этап настройки успешно завершен по умолчанию включен флажок Создать начальный образ подчиненного узла РИБ (рекомендуется это сделать сразу). Этот шаг можно сделать и позже, из настройки синхронизации в любой момент.
+
На первом этапе создается начальный образ РИБ. Все страницы помощника остаются без изменений. На странице Первый этап настройки успешно завершен по умолчанию включен флажок Создать начальный образ подчиненного узла РИБ (рекомендуется это сделать сразу). Этот шаг можно сделать и позже, из настройки синхронизации в любой момент.
После нажатия на кнопку Готово с включенным флажком предлагается создать начальный образ РИБ. Для этого перейдите по гиперссылке Создать начальный образ.
@@ -101,7 +101,7 @@
Нажмите Создать начальный образ.
Созданный файл с начальным образом подчиненного узла распределенной информационной базы сохраните на компьютере филиала в новую папку, которая будет рабочим каталогом новой базы.
+
Создайте новую базу, выбрав Добавление в список существующей информационной базы, укажите путь к файлу с начальным образом. Указанная информационная база будет добавлена в список баз.
-
Создайте новую базу, выбрав Добавление в список существующей информационной базы, укажите путь к файлу с начальным образом. Указанная информационная база будет добавлена в список баз.
-
-
После входа в программу автоматически запустится Помощник на странице Продолжение настройки синхронизации данных с главным узлом, продолжите настройку синхронизации, нажмите кнопку Далее, чтобы продолжить настройку и задать вариант подключения к главному узлу.
\ No newline at end of file
+
После входа в программу автоматически запустится Помощник на странице Продолжение настройки синхронизации данных с главным узлом, продолжите настройку синхронизации, нажмите кнопку Далее, чтобы продолжить настройку и задать вариант подключения к главному узлу.
Создание узла РИБ (внешние файлы)
+
Если у вас есть файлы в томах, то при создании начального образа вам также потребуется указать путь к файлу, в который будет записан архив (zip) со всеми файлами в томах. При первом запуске в базе филиала вам нужно будет выполнить команду Разместить файлы начального образа, указав в ней путь к файлу архива.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ManagerModule.bsl b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ManagerModule.bsl
new file mode 100644
index 000000000..3b1d1acd1
--- /dev/null
+++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ManagerModule.bsl
@@ -0,0 +1,32 @@
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Для внутреннего использования
+//
+Процедура ВыполнитьЗагрузкуСправочников(Параметры, АдресВременногоХранилища) Экспорт
+
+ ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЧерезФайлИлиСтроку(
+ Параметры.УзелИнформационнойБазы,
+ Параметры.ИмяФайлаСообщенияОбмена,
+ Перечисления.ДействияПриОбмене.ЗагрузкаДанных);
+
+КонецПроцедуры
+
+// Для внутреннего использования
+//
+Процедура ВыполнитьЗагрузкуДанных(Параметры, АдресВременногоХранилища) Экспорт
+
+ ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЗавершениеДлительнойОперации(
+ Ложь,
+ Параметры.УзелИнформационнойБазы,
+ Параметры.ИдентификаторФайла,
+ Параметры.ДатаНачалаОперации,
+ Параметры.ПараметрыАутентификации,
+ Истина);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключения/Template.htmldoc b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключения/Template.htmldoc
deleted file mode 100644
index 1621f1d23..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключения/Template.htmldoc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключения/ru.html b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключения/ru.html
deleted file mode 100644
index 80b6322e3..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключения/ru.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
Параметры подключения
-
-
Для настройки синхронизации данных необходимо знать где находится программа, с которой нужно настроить синхронизацию (другая программа). Для этого достаточно открыть программу. В главном меню выбрать пункт "Справка\О программе...".
-
Обратите внимание на следующие параметры (все они могут быть скопированы из формы "О программе..."):
-
Режим - либо файловый либо серверный. Если режим файловый, то информационная база находится в каталоге на данном компьютере или в локальной сети. Если режим серверный, то для подключения нужно знать имя сервера и имя информационной базы на сервере.
-
Каталог - для файлового режима указывается каталог, в котором располагается информационная база.
-
Сервер - для серверного режима указывается имя сервера 1С:Предприятия, на котором расположена информационная база.
-
База - для серверного режима указывается имя информационной базы на сервере 1С:Предприятия.
-
Пользователь - имя пользователя, который вошел в информационную базу. Если в имени пользователя присутствует ";", то в качестве имени пользователя для подключения нужно использовать имя от начала строки до ";".
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКВебСервису/Template.htmldoc b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКВебСервису/Template.htmldoc
deleted file mode 100644
index 1621f1d23..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКВебСервису/Template.htmldoc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКВебСервису/ru.html b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКВебСервису/ru.html
deleted file mode 100644
index c9e696016..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКВебСервису/ru.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
Параметры подключения
-
-
Для настройки синхронизации данных нужно знать где находится программа, с которой нужно настроить синхронизацию (другая программа). Для этого достаточно открыть программу в режиме веб-клиента. В главном меню выбрать пункт "Справка\О программе...".
-
Обратите внимание на следующие параметры (все они могут быть скопированы из формы "О программе..."):
-
Адрес - адрес информационной базы в Интернете.
-
Пользователь - имя пользователя, который вошел в информационную базу. Если в имени пользователя присутствует ";", то в качестве имени пользователя для подключения нужно использовать имя от начала строки до ";".
Важно! Имя пользователя не должно содержать служебных символов [НедопустимыеСимволы]. В противном случае во второй информационной базе необходимо создать пользователя, в имени которого не будут содержаться служебные символы. Этот пользователь должен быть администратором.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКСервису/Template.htmldoc b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКСервису/Template.htmldoc
deleted file mode 100644
index 1621f1d23..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКСервису/Template.htmldoc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКСервису/ru.html b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКСервису/ru.html
deleted file mode 100644
index d98f74f09..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПараметрыПодключенияКСервису/ru.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
Параметры подключения
-
-
Для настройки синхронизации данных с приложением, расположенным в Интернете, необходимо указать в поле Адрес веб-ссылку к этому приложению (точно такую же, как при открытии этого приложения в браузере). Например: http://www.1cfresh.com/ea_demo/123/ В полях Пользователь и Пароль необходимо указать имя и пароль администратора приложения.
-
Важно! Имя пользователя не должно содержать служебных символов [НедопустимыеСимволы]. В противном случае в приложении, расположенном в Интернете, необходимо создать пользователя, в имени которого не будут содержаться служебные символы. Этот пользователь должен быть администратором приложения.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПрефиксВторойИнформационнойБазы/Template.htmldoc b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПрефиксВторойИнформационнойБазы/Template.htmldoc
deleted file mode 100644
index 1621f1d23..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПрефиксВторойИнформационнойБазы/Template.htmldoc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПрефиксВторойИнформационнойБазы/ru.html b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПрефиксВторойИнформационнойБазы/ru.html
deleted file mode 100644
index b104fa918..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакОпределитьПрефиксВторойИнформационнойБазы/ru.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
Префикс второй информационной базы
-
-
Для того чтобы узнать префикс второй информационной базы следует выполнить запуск программы и перейти в форму синхронизации данных. Если во второй информационной базе префикс не задан, то следует указать любой желаемый префикс. Этот префикс будет установлен во второй базе при настройке синхронизации данных.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакСформироватьФайлСНастройкамиОбменаДанными/Template.htmldoc b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакСформироватьФайлСНастройкамиОбменаДанными/Template.htmldoc
deleted file mode 100644
index 1621f1d23..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакСформироватьФайлСНастройкамиОбменаДанными/Template.htmldoc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакСформироватьФайлСНастройкамиОбменаДанными/ru.html b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакСформироватьФайлСНастройкамиОбменаДанными/ru.html
deleted file mode 100644
index b3fa25420..000000000
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Templates/КакСформироватьФайлСНастройкамиОбменаДанными/ru.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
Файл с настройками синхронизации данных
-
-
Если файл настроек синхронизации данных утерян, то для формирования нового файла необходимо:
-
перейти в первую программу
-
перейти в форму синхронизации данных
-
выбрать требуемую синхронизацию данных и открыть ее параметры
-
в командной панели формы следует выбрать пункт меню: "Все действия" –> "Получить настройки синхронизации данных для другой программы..."
Предназначена для регистрации изменений данных в программе. Это необходимо для последующей отправки данных при синхронизации в другие программы.
Список можно открыть по команде Все действия -Состав отправляемых данных из списка Синхронизации данных.
Ведется регистрация номеров сообщений. Нажмите на гиперссылку с номерами сообщений, чтобы просмотреть их или исправить.
diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl
index abe564c3d..da6f6a773 100644
--- a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl
+++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl
@@ -6,26 +6,26 @@
// план обмена -> узлы обмена. Служебные узлы выброшены.
//
// Параметры:
-// ОбъектДанных - Ссылка или структура со значениями измерений набор записей. Для этих данных
-// которых анализируются узлы обмена. Если не указано, то для всех
-// ИмяТаблицы - Если ОбъектДанных - структура, то имя таблицы для набора записей
+// ОбъектДанных - ЛюбаяСсылка, Структура - Ссылка или структура со значениями измерений набор записей. Для этих данных
+// которых анализируются узлы обмена. Если не указано, то для всех
+// ИмяТаблицы - Строка - Если ОбъектДанных - структура, то имя таблицы для набора записей
//
-// Колонки в результате:
-// - Наименование - Представление плана обмена или узла обмена
-// - ИндексКартинки - 1 = план обмена, 2 = узел , 3 = помеченный для удаления узел
-// - ИндексКартинкиАвторегистрация - Если не указан параметр ОбъектДанных, то Неопределено
-// Иначе: 0 = нет, 1 = запрещена, 2 = разрешена.
-// Неопределено для плана обмена
-// - ПланОбменаИмя - Имя плана обмена узла
-// - Ссылка - Ссылка узла, Неопределено для плана обмена
-// - Код - Код узла, Неопределено для плана обмена
-// - НомерОтправленного - Данные узла
-// - НомерПринятого - Данные узла
-// - НомерСообщения - Если указан объект, то номер сообщения для него, иначе NULL
-// - НеВыгружалось - Если указан объект, то флаг выгрузки, иначе NULL
-// - Пометка - Если указан объект, то 0 = нет регистрации, 1 - есть, иначе всегда 0
-// - ИсходнаяПометка - Копия "Пометка"
-// - ИдентификаторСтроки - Индекс добавленной строки (обход дерева сверху вниз слева направо)
+// Возвращаемое значение:
+// ДеревоЗначений - данные с колонками:
+// * Наименование - Строка - Представление плана обмена или узла обмена
+// * ИндексКартинки - Число - 1 = план обмена, 2 = узел , 3 = помеченный для удаления узел
+// * ИндексКартинкиАвторегистрация - Число - Если не указан параметр ОбъектДанных, то Неопределено
+// Иначе: 0 = нет, 1 = запрещена, 2 = разрешена, Неопределено для плана обмена
+// * ПланОбменаИмя - Строка - Имя плана обмена узла
+// * Ссылка - ПланОбменаСсылка - Ссылка узла, Неопределено для плана обмена
+// * Код - Число, Строка - Код узла, Неопределено для плана обмена
+// * НомерОтправленного - Число - Данные узла
+// * НомерПринятого - Число - Данные узла
+// * НомерСообщения - Число, NULL - Если указан объект, то номер сообщения для него, иначе NULL
+// * НеВыгружалось - Булево, NULL - Если указан объект, то флаг выгрузки, иначе NULL
+// * Пометка - Булево - Если указан объект, то 0 = нет регистрации, 1 - есть, иначе всегда 0
+// * ИсходнаяПометка - Булево - аналогично колонке "Пометка"
+// * ИдентификаторСтроки - Число - Индекс добавленной строки (обход дерева сверху вниз слева направо)
//
Функция СформироватьДеревоУзлов(ОбъектДанных = Неопределено, ИмяТаблицы = Неопределено) Экспорт
@@ -134,7 +134,12 @@
ТекНомерСтроки = 0;
Для Каждого Мета Из Метаданные.ПланыОбмена Цикл
+ Если Не ПравоДоступа("Чтение", Мета) Тогда
+ Продолжить;
+ КонецЕсли;
+
ИмяПлана = Мета.Имя;
+
Попытка
ЭтотУзелПланаОбмена = ПланыОбмена[ИмяПлана].ЭтотУзел();
Исключение
@@ -189,40 +194,29 @@
КонецФункции
// Возвращает структуру, описывающую метаданные для плана обмена.
+// Объекты, не входящие в состав плана обмена, выбрасываются.
//
// Параметры:
-// ИмяПланаОбмена - Если передана строка, то она интерпретируется как имя метаданных
-// плана обмена, для которого строится дерево конфигурации.
-// - Если передан узел обмена, то дерево конфигурации строится для его плана обмена.
-// - Если параметр неопределен, то строится дерево всей конфигурации.
+// ИмяПланаОбмена - Строка - имя метаданных плана обмена, для которого строится дерево конфигурации.
+// - ПланОбменаСсылка - дерево конфигурации строится для его плана обмена.
+// - Неопределено - строится дерево всей конфигурации.
//
-// Возвращает структуру с полями "СтруктураИмен", "СтруктураПредставлений", "Дерево",
-// описывающую метаданные. Объекты, не входящие в состав плана обмена, выбрасываются.
-//
-// "СтруктураИмен" - структура, где имя - группа метаданных (константы, справочники и т.п.),
-// значение - массив полных имен.
-//
-// "СтруктураПредставлений" - структура, где имя - группа метаданных (константы, справочники
-// и т.п.), значение - массив представлений. Порядок представлений в массиве совпадает с массивом
-// полных имен.
-//
-// "СтруктураАвторегистрации" - структура, где имя - группа метаданных (константы, справочники
-// и т.п.), значение - массив флагов авторегистрации на узле. Порядок данных в массиве совпадает
-// с массивом полных имен. Входят только те группы, которые не входят в дерево.
-//
-// "Дерево" - дерево значений, 3 уровня: конфигурация -> вид объекта -> объект.
-// Колонки дерева:
-// - Наименование - Представление вида объекта метаданных
-// - МетаПолноеИмя - Полное имя объекта метаданных
-// - ИндексКартинки - Зависит от метаданных
-// - Пометка - Неопределено
-// - ИдентификаторСтроки - Индекс добавленной строки (обход дерева сверху вниз слева направо)
-// - Авторегистрация - Если указан ИмяПланаОбмена, то для листьев: 1-разрешена, 2-запрещена. Иначе Неопределено
-//
-// - КоличествоИзменений - Неопределено, нужно для дальнейшего расчета
-// - КоличествоВыгруженных - Неопределено, нужно для дальнейшего расчета
-// - КоличествоНевыгруженных - Неопределено, нужно для дальнейшего расчета
-// - КоличествоИзмененийСтрокой - Неопределено, нужно для дальнейшего расчета
+// Возвращаемое значение:
+// Структура - описание метаданных. Поля:
+// * СтруктураИмен - Структура - Ключ - группа метаданных (константы, справочники и т.п.), значение - массив полных имен.
+// * СтруктураПредставлений - Структура - Ключ - группа метаданных (константы, справочники и т.п.), значение - массив полных имен.
+// * СтруктураАвторегистрации - Структура - Ключ - группа метаданных (константы, справочники и т.п.), значение - массив флагов авторегистрации на узле.
+// * КоличествоИзменений - Неопределено - нужно для дальнейшего расчета
+// * КоличествоВыгруженных - Неопределено - нужно для дальнейшего расчета
+// * КоличествоНевыгруженных - Неопределено - нужно для дальнейшего расчета
+// * КоличествоИзмененийСтрокой - Неопределено - нужно для дальнейшего расчета
+// * Дерево - ДеревоЗначений - содержит колонки:
+// ** Наименование - Строка - Представление вида объекта метаданных
+// ** МетаПолноеИмя - Строка - Полное имя объекта метаданных
+// ** ИндексКартинки - Число - Зависит от метаданных
+// ** Пометка - Неопределено
+// ** ИдентификаторСтроки - Число - Индекс добавленной строки (обход дерева сверху вниз слева направо)
+// ** Авторегистрация - Булево - Если указан ИмяПланаОбмена, то для листьев: 1-разрешена, 2-запрещена. Иначе Неопределено
//
Функция СформироватьСтруктуруМетаданных(ИмяПланаОбмена = Неопределено) Экспорт
@@ -280,18 +274,19 @@
Возврат Результат;
КонецФункции
-// Вычисляет количества изменений для объектов метаданных для узлов обмена.
+// Вычисляет количества изменений для объектов метаданных для узлов обмена.
//
// Параметры:
-// - СписокТаблиц - Или массив или коллекция "ключ/значение" где "значение" - массивы имен
-// - СписокУзлов - Узел или массив списков узлов
+// СписокТаблиц - Массив - имена. Может быть коллекцией"ключ/значение" где "значение" - массивы имен
+// СписокУзлов - ПланОбменаСсылка, Массив - узлы
//
-// Возвращает таблицу значений. Колонки:
-// - МетаПолноеИмя - Полное имя метаданных, для которых рассчитываем количество
-// - УзелОбмена - Ссылка на узел обмена, для которого рассчитываем количество
-// - КоличествоИзменений - Число
-// - КоличествоВыгруженных - Число
-// - КоличествоНеВыгруженных - Число
+// Возвращаемое значение:
+// ТаблицаЗначений - колонки:
+// * МетаПолноеИмя - Строка - Полное имя метаданных, для которых рассчитываем количество
+// * УзелОбмена - ПланОбменаСсылка - Ссылка на узел обмена, для которого рассчитываем количество
+// * КоличествоИзменений - Число
+// * КоличествоВыгруженных - Число
+// * КоличествоНеВыгруженных - Число
//
Функция ПолучитьКоличествоИзменений(СписокТаблиц, СписокУзлов) Экспорт
@@ -331,6 +326,10 @@
Продолжить;
КонецЕсли;
+ Если Не ПравоДоступа("Чтение", Метаданные.НайтиПоПолномуИмени(Элемент)) Тогда
+ Продолжить;
+ КонецЕсли;
+
Текст = Текст + ?(Текст = "", "", "ОБЪЕДИНИТЬ ВСЕ") + "
|ВЫБРАТЬ
| """ + Элемент + """ КАК МетаПолноеИмя,
@@ -375,7 +374,10 @@
// Возвращает объект метаданных по его полному имени. Пустая строка обозначает конфигурацию.
//
// Параметры:
-// - ИмяМетаданных - Строка - Имя объекта метаданных, например "Справочник.Валюты" или "Константы"
+// ИмяМетаданных - Строка - Имя объекта метаданных, например "Справочник.Валюты" или "Константы"
+//
+// Возвращаемое значение:
+// ОБъектМетаданных -
//
Функция МетаданныеПоПолномуИмени(ИмяМетаданных) Экспорт
@@ -395,11 +397,13 @@
// Возвращает флаг регистрации объекта на узле
//
// Параметры:
-// - Узел - Узел плана обмена для которого получаем информацию,
-// - ОбъектРегистрации - Объект, для которого получаем информацию. Может быть строкой -
-// обрабатываем метаданные, ссылкой или структурой со значениями
-// изменений набора записей
-// - ИмяТаблицы - Если ОбъектРегистрации - структура, то содержит имя таблицы для набора измерений
+// Узел - ПланОбменаСсылка - Узел плана обмена для которого получаем информацию,
+// ОбъектРегистрации - Строка, ЛюбаяСсылка, Структура - объект, для которого получаем информацию.
+// Структура хранит значения изменений набора записей
+// ИмяТаблицы - Строка - Если ОбъектРегистрации - структура, то содержит имя таблицы для набора измерений
+//
+// Возвращаемое значение:
+// Булево - результат регистрации
//
Функция ОбъектЗарегистрированНаУзле(Узел, ОбъектРегистрации, ИмяТаблицы = Неопределено) Экспорт
ТипПараметра = ТипЗнч(ОбъектРегистрации);
@@ -426,14 +430,16 @@
// Изменяет регистрацию переданного.
//
// Параметры:
-// - Команда - Истина, если надо добавлять, Ложь, если удалять
-// - БезУчетаАвторегистрации - Истина, если не надо анализировать флаг авторегистрации
-// - Узел - Ссылка на узел плана обмена
-// - Данные - Ссылка, строка (полное имя метаданных), структура (измерения набора)
-// или массив таких данных.
-// - ИмяТаблицы - Если Данные является структурой, то содержит имя таблицы
+// Команда - Булево - Истина, если надо добавлять, Ложь, если удалять
+// БезУчетаАвторегистрации - Булево - Истина, если не надо анализировать флаг авторегистрации
+// Узел - ПланОбменаСсылка - Ссылка на узел плана обмена
+// Данные - ЛюбаяСсылка, Строка, Структура - данные или массив таких данных.
+// ИмяТаблицы - Строка - Если Данные является структурой, то содержит имя таблицы
//
-// Возвращает структуру с общим числом объектов и числом успешно обработанных объектов
+// Возвращаемое значение:
+// Структура - результат операции:
+// * Всего - Число - общее число объектов
+// * Успешно - Число - числом успешно обработанных объектов
//
Функция ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Данные, ИмяТаблицы = Неопределено) Экспорт
@@ -594,7 +600,7 @@
// Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве.
//
// Параметры:
-// - ДанныеСтроки - ДанныеФормыЭлементДерева. Пометка хранится в числовой колонке "Пометка"
+// ДанныеСтроки - ДанныеФормыЭлементДерева - Пометка хранится в числовой колонке "Пометка"
//
Процедура ИзменениеПометки(ДанныеСтроки) Экспорт
ДанныеСтроки.Пометка = ДанныеСтроки.Пометка % 2;
@@ -605,7 +611,7 @@
// Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве.
//
// Параметры:
-// - ДанныеСтроки - ДанныеФормыЭлементДерева. Пометка хранится в числовой колонке "Пометка"
+// ДанныеСтроки - ДанныеФормыЭлементДерева - Пометка хранится в числовой колонке "Пометка"
//
Процедура ПроставитьПометкиВниз(ДанныеСтроки) Экспорт
Значение = ДанныеСтроки.Пометка;
@@ -618,7 +624,7 @@
// Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве.
//
// Параметры:
-// - ДанныеСтроки - ДанныеФормыЭлементДерева. Пометка хранится в числовой колонке "Пометка"
+// ДанныеСтроки - ДанныеФормыЭлементДерева - Пометка хранится в числовой колонке "Пометка"
//
Процедура ПроставитьПометкиВверх(ДанныеСтроки) Экспорт
РодительСтроки = ДанныеСтроки.ПолучитьРодителя();
@@ -643,17 +649,21 @@
// Чтение реквизитов узла обмена.
//
// Параметры:
-// - Ссылка - Ссылка на узел обмена
-// - Данные - Список имен реквизитов для чтения через запятую
+// Ссылка - ПланОбменаСсылка - Ссылка на узел обмена
+// Данные - Строка - Список имен реквизитов для чтения через запятую
//
-// Возвращает структуру с данными или Неопределено, если нет данных по переданной ссылке
+// Возвращаемое значение:
+// Структура - считанные данные
+// Неопределено - если нет данных по переданной ссылке
//
-Функция ПолучитьПараметрыУзлаОбмена(Ссылка, Данные) Экспорт
+Функция ПолучитьПараметрыУзлаОбмена(Ссылка, Данные, Поле = Неопределено, Значение = Неопределено) Экспорт
+
Запрос = Новый Запрос("
|ВЫБРАТЬ " + Данные + " ИЗ " + Ссылка.Метаданные().ПолноеИмя() + "
|ГДЕ Ссылка = &Ссылка
|");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
+
Времянка = Запрос.Выполнить().Выгрузить();
Если Времянка.Количество() = 0 Тогда
Возврат Неопределено;
@@ -661,14 +671,19 @@
Результат = Новый Структура(Данные);
ЗаполнитьЗначенияСвойств(Результат, Времянка[0]);
+
+ Если Поле <> Неопределено И Значение = Истина Тогда
+ Значение = Поле["КартинкаКнопкиВыбора"];
+ КонецЕсли;
+
Возврат Результат;
КонецФункции
// Запись реквизитов узла обмена.
//
// Параметры:
-// - Ссылка - Ссылка на узел обмена
-// - Данные - Список имен реквизитов для чтения через запятую
+// Ссылка - ПланОбменаСсылка - Ссылка на узел обмена
+// Данные - Строка - Список имен реквизитов для чтения через запятую
//
Процедура УстановитьПараметрыУзлаОбмена(Ссылка, Данные) Экспорт
@@ -695,7 +710,7 @@
// Возвращает описание данных по имени таблицы/полному имени метаданных или метаданным
//
// Параметры:
-// - ИмяТаблицы - Имя таблицы, например "Справочник.Валюты"
+// - ИмяТаблицы - Строка - Имя таблицы, например "Справочник.Валюты"
//
Функция ХарактеристикиПоМетаданным(ИмяТаблицыМетаданных) Экспорт
@@ -865,14 +880,15 @@
// Возвращает таблицу, описывающую измерения для регистрации изменений набора данных
//
// Параметры:
-// - ИмяТаблицы - Имя таблицы, например "РегистрСведений.КурсыВалют"
-// - ВсеИзмерения - Флаг того, что для регистра сведений получаем все измерения, а не
-// только основные и ведущие
+// ИмяТаблицы - Строка - Имя таблицы, например "РегистрСведений.КурсыВалют"
+// ВсеИзмерения - Булево - Флаг того, что для регистра сведений получаем все измерения, а не
+// только основные и ведущие
//
-// Возвращает таблицу с колонками:
-// - Имя - Строка имени измерения
-// - ТипЗначения - ОписаниеТипов
-// - Заголовок - Представление для измерения
+// Возвращаемое значение:
+// ТаблицаЗначений - колонки:
+// * Имя - Строка - имя измерения
+// * ТипЗначения - ОписаниеТипов - типы
+// * Заголовок - Строка - Представление для измерения
//
Функция ИзмеренияНабораЗаписей(ИмяТаблицы, ВсеИзмерения = Ложь) Экспорт
@@ -891,7 +907,10 @@
Если Не ВсеИзмерения Тогда
// Что-то регистрируемое
- НеУчитывать = "НомерСообщения, Узел,";
+ НеУчитывать = "НомерСообщения,Узел,";
+ Для Каждого МетаОбщий Из Метаданные.ОбщиеРеквизиты Цикл
+ НеУчитывать = НеУчитывать + МетаОбщий.Имя + "," ;
+ КонецЦикла;
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ " + Мета.ПолноеИмя() + ".Изменения ГДЕ ЛОЖЬ");
ПустойРезультат = Запрос.Выполнить();
@@ -959,10 +978,10 @@
// Модифицирует таблицу формы, добавляя туда колонки
//
// Параметры:
-// - ТаблицаФормы - Элемент, связанный с данными, в который будут добавлены колонки данных
-// - СохранятьИмена - Список имен колонок, которые будут сохранены, через запятую.
-// - Добавлять - Коллекция добавляемых колонок или перечислимое с атрибутами Имя, ТипЗначения, Заголовок
-// - ГруппаКолонок - Группа колонок, в которую происходит добавление
+// ТаблицаФормы - ЭлементФормы - Элемент, связанный с данными, в который будут добавлены колонки данных
+// СохранятьИмена - Строка - Список имен колонок, которые будут сохранены, через запятую.
+// Добавлять - Массив - Структуры с описанием добавляемых колонок с атрибутами Имя, ТипЗначения, Заголовок
+// ГруппаКолонок - ЭлементФормы - Группа колонок, в которую происходит добавление
//
Процедура ДобавитьКолонкиВТаблицуФормы(ТаблицаФормы, СохранятьИмена, Добавлять, ГруппаКолонок = Неопределено) Экспорт
@@ -1035,7 +1054,7 @@
// Возвращает подробное представление объекта.
//
// Параметры:
-// - ОбъектПредставления - Объект, представление которого получаем
+// - ОбъектПредставления - ЛюбаяСсылка - представление которого получаем
//
Функция ПредставлениеСсылки(ОбъектПредставления) Экспорт
@@ -1092,7 +1111,7 @@
// Читает текущие данные из динамического списка по его настройкам и возвращает в виде таблицы значений
//
// Параметры:
-// - ИсточникДанных - ДинамическийСписок, реквизит формы
+// - ИсточникДанных - ДинамическийСписок - реквизит формы
//
Функция ТекущиеДанныеДинамическогоСписка(ИсточникДанных) Экспорт
@@ -1127,6 +1146,7 @@
// Отбор
СкопироватьОтборКомпоновкиДанных(ТекНастройки.Отбор, ИсточникДанных.Отбор);
+ СкопироватьОтборКомпоновкиДанных(ТекНастройки.Отбор, ИсточникДанных.КомпоновщикНастроек.ПолучитьНастройки().Отбор);
// Выводим
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
@@ -1200,8 +1220,10 @@
КонецПроцедуры
// Проверяем настройки на корректность, сбрасываем в случае нарушения.
-// Возвращает структуру с ключом - именем настройки, значением содержит описанием ошибки или Неопределено
-// при отсутствии ошибки для данного параметра
+//
+// Возвращаемое значение:
+// Структура - ключ - имя настройки, значением содержит описанием ошибки или Неопределено
+// при отсутствии ошибки для данного параметра
//
Функция ПроверитьКорректностьНастроек(КлючНастройки = "") Экспорт
@@ -1307,7 +1329,7 @@
//
//
-// Копирует отбор компоновки данных
+// Копирует отбор компоновки данных добавлением к существующим
//
Процедура СкопироватьОтборКомпоновкиДанных(ГруппаПриемник, ГруппаИсточник)
@@ -1445,7 +1467,7 @@
Иначе
Элемент = МетаПлан.Состав.Найти(Мета);
- Если Элемент <> Неопределено Тогда
+ Если Элемент <> Неопределено И ПравоДоступа("Чтение", Мета) Тогда
БылиПодчиненные = Истина;
МетаПолноеИмя = Мета.ПолноеИмя();
Наименование = Мета.Представление();
@@ -1700,20 +1722,11 @@
//
Функция БСП_КонтрольВыгрузкиОбъекта(Узел, ОбъектРегистрации)
- МодульОбменДаннымиПовтИсп = ОбщегоНазначенияОбщийМодуль("ОбменДаннымиПовтИсп");
- Если МодульОбменДаннымиПовтИсп <> Неопределено Тогда
- РежимВыгрузкиОбъекта = МодульОбменДаннымиПовтИсп.РежимВыгрузкиОбъекта(ОбъектРегистрации.Метаданные().ПолноеИмя(), Узел);
- Если РежимВыгрузкиОбъекта = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости Тогда
- // Выгружаемые по ссылке можно всегда
- Возврат Истина;
- КонецЕсли;
- КонецЕсли;
-
Отправка = ОтправкаЭлементаДанных.Авто;
МодульОбменДаннымиСобытия = ОбщегоНазначенияОбщийМодуль("ОбменДаннымиСобытия");
Если МодульОбменДаннымиСобытия <> Неопределено Тогда
МодульОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(ОбъектРегистрации, Отправка, , Узел);
- Возврат Отправка <> ОтправкаЭлементаДанных.Удалить;
+ Возврат Отправка = ОтправкаЭлементаДанных.Авто;
КонецЕсли;
// Неизвестная версия БСП
diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/РегистрацияИзмененийДляОбменаДанными.mdo b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/РегистрацияИзмененийДляОбменаДанными.mdo
index 098431a23..00c40c703 100644
--- a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/РегистрацияИзмененийДляОбменаДанными.mdo
+++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/РегистрацияИзмененийДляОбменаДанными.mdo
@@ -12,6 +12,7 @@
trueDataProcessor.РегистрацияИзмененийДляОбменаДанными.Form.ФормаDataProcessor.РегистрацияИзмененийДляОбменаДанными.Form.СообщениеОбОбычномИнтерфейсе
+ trueru
@@ -28,7 +29,7 @@
ru
- Авторегистрация последовательностей
+ Автоматически регистрировать изменения последовательностей вместе с документами.
@@ -44,7 +45,7 @@
ru
- Авторегистрация движений
+ Автоматически регистрировать изменения движений вместе с документами.
@@ -61,7 +62,7 @@
ru
- Адрес внешней обработки запросов
+ Путь к внешней обработке - консоли запросов
diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Form.form b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Form.form
index ca843b384..030dd36f1 100644
--- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Form.form
+++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Form.form
@@ -7,25 +7,90 @@
Основное30
-
- Использование
- 9
+
+ ГруппаВключениеИРасписание
+ 71
+
+ Использование
+ 9
+ true
+ true
+
+ true
+
+
+ Использование
+
+ Right
+
+ ru
+ Включено - выполнять задание.
+
+
+ ИспользованиеExtendedTooltip
+ 51
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИспользованиеКонтекстноеМеню
+ 10
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ НастроитьРасписание
+ 73
+ true
+ true
+
+ true
+
+
+ НастроитьРасписаниеРасширеннаяПодсказка
+ 74
+ Label
+ true
+ true
+
+ Left
+
+
+ Hyperlink
+ Form.Command.НастроитьРасписание
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ truetruetrue
-
- Использование
-
- Right
+
+ ru
+ Группа включение и расписание
+ ru
- Включено - выполнять задание.
+ Группа включение и расписание
- ИспользованиеExtendedTooltip
- 51
+ ГруппаВключениеИРасписаниеРасширеннаяПодсказка
+ 72Labeltruetrue
@@ -33,17 +98,14 @@
Left
-
- ИспользованиеКонтекстноеМеню
- 10
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+ Наименование
@@ -102,13 +164,7 @@
ru1. Основное
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
+ ОсновноеExtendedTooltip50
@@ -133,92 +189,20 @@
ДействияПриОшибках40
-
- Группа1
- 41
-
- КоличествоПовторовПриАварийномЗавершении
- 13
- true
- true
-
- true
-
-
- КоличествоПовторовПриАварийномЗавершении
-
-
- КоличествоПовторовПриАварийномЗавершенииExtendedTooltip
- 55
- Label
- true
- true
-
- Left
-
-
-
- КоличествоПовторовПриАварийномЗавершенииКонтекстноеМеню
- 14
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
- Normal
-
-
-
- Декорация1
- 43
-
- ru
- раз
-
- true
- true
-
- true
-
-
- Декорация1ExtendedTooltip
- 56
- Label
- true
- true
-
- Left
-
-
-
- Декорация1КонтекстноеМеню
- 44
- true
-
- Label
- true
- true
-
- Left
-
-
+
+ КоличествоПовторовПриАварийномЗавершении
+ 13truetruetrue
+
+ КоличествоПовторовПриАварийномЗавершении
+
- Группа1ExtendedTooltip
- 54
+ КоличествоПовторовПриАварийномЗавершенииExtendedTooltip
+ 55Labeltruetrue
@@ -226,101 +210,41 @@
Left
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
+
+ КоличествоПовторовПриАварийномЗавершенииКонтекстноеМеню
+ 14
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
-
- Группа2
- 42
-
- ИнтервалПовтораПриАварийномЗавершении
- 11
- true
- true
-
- true
-
-
- ИнтервалПовтораПриАварийномЗавершении
-
-
- ИнтервалПовтораПриАварийномЗавершенииExtendedTooltip
- 58
- Label
- true
- true
-
- Left
-
-
-
- ИнтервалПовтораПриАварийномЗавершенииКонтекстноеМеню
- 12
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
- Normal
-
-
-
- Декорация2
- 45
-
- ru
- секунд
-
- true
- true
-
- true
-
-
- Декорация2ExtendedTooltip
- 59
- Label
- true
- true
-
- Left
-
-
-
- Декорация2КонтекстноеМеню
- 46
- true
-
- Label
- true
- true
-
- Left
-
-
+
+ ДекорацияРаз
+ 43
+
+ ru
+ раз
+ truetruetrue
- Группа2ExtendedTooltip
- 57
+ ДекорацияРазРасширеннаяПодсказка
+ 56Labeltruetrue
@@ -328,13 +252,95 @@
Left
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
+
+ ДекорацияРазКонтекстноеМеню
+ 44
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИнтервалПовтораПриАварийномЗавершении
+ 11
+
+ ru
+ через
+
+ true
+ true
+
+ true
+
+
+ ИнтервалПовтораПриАварийномЗавершении
+
+
+ ИнтервалПовтораПриАварийномЗавершенииExtendedTooltip
+ 58
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИнтервалПовтораПриАварийномЗавершенииКонтекстноеМеню
+ 12
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ДекорацияСекунд
+ 45
+
+ ru
+ секунд
+
+ true
+ true
+
+ true
+
+
+ ДекорацияСекундРасширеннаяПодсказка
+ 59
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДекорацияСекундКонтекстноеМеню
+ 46
+ true
+
+ Label
+ true
+ true
+
+ Lefttrue
@@ -346,13 +352,7 @@
ru2. Действия при ошибках
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
+ ruДействия при ошибках
@@ -369,7 +369,6 @@
UsualGroup
- VerticalAutotruetrue
@@ -573,13 +572,7 @@
ru3. Дополнительно
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
+ ДополнительноExtendedTooltip60
@@ -737,13 +730,7 @@
ru4. Метаданные
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
+ МетаданныеExtendedTooltip65
@@ -805,8 +792,8 @@
truetrue
- 4true
+ truetruetruetrue
@@ -824,13 +811,7 @@
ru5. Сообщения пользователю и описание информации об ошибке
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
+ СообщенияПользователюИОписаниеИнформацииОбОшибкеExtendedTooltip69
@@ -908,33 +889,6 @@
UserCmdsAuto
-
- ОткрытьРасписание
- 29
- true
- true
-
- true
-
- false
-
- ОткрытьРасписаниеExtendedTooltip
- 49
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОткрытьРасписание
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Lefttrue
@@ -1017,7 +971,9 @@
6String
-
+
+ 128
+ true
@@ -1281,20 +1237,20 @@
ЗаписатьИЗакрытьВыполнить
- TextPicture
+ TextAutoAuto
- ОткрытьРасписание
+ НастроитьРасписаниеru
- Открыть расписание...
+ Расписание1ru
- Открыть расписание
+ Настроить расписаниеtrue
@@ -1304,7 +1260,7 @@
- ОткрытьРасписаниеВыполнить
+ НастроитьРасписаниеВыполнитьTextPicture
@@ -1333,7 +1289,7 @@
Записать
- Picture
+ TextAutoAuto
diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html
index ac16beeb8..12c5b4b8f 100644
--- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html
+++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html
@@ -1,29 +1,21 @@
-
-
В этой форме можно посмотреть и изменить различные свойства регламентного задания.
-
Как правило, необходимость в изменении свойств регламентных заданий возникает редко. Чаще всего, используется флажок Использование, с помощью которого можно отключить выполнение регламентного задания.
-
1. Группа свойств "Основное".
+
+
Описание свойств регламентного задания.
+
Как правило, необходимость в изменении свойств регламентных заданий возникает редко. Чаще всего, используется флажок Включено, с помощью которого можно отключить выполнение регламентного задания.
+
В некоторых случаях бывает необходимо задать два разных расписания для одного регламентного задания. Тогда в список можно добавить новое регламентное задание по одному из предопределенных шаблонов, предусмотренных в программе.
+
Основное
Это наиболее нужные свойства при настройке регламентного задания. Но, как и все остальные свойства, они уже установлены в поставке, и необходимость их изменения возникает в исключительных случаях.
-
-
Наименование свойства
-
Назначение свойства
Наименование
-
Наименование регламентного задания. Обычно пустое, и в качестве него применяется синоним, указанный в шаблоне регламентного задания, заданного в конфигураторе. Если синоним шаблона не задан, используется его имя.
Использование
-
-
Флажок позволять включить или отключить выполнение регламентного задания. Полезно, когда нужно ненадолго отключить регламентное задание не меняя расписание.
При ошибке повторять, раз
-
Число попыток выполнения регламентного задания, при возникновении ошибки.
При ошибке повторять через, сек
-
Пауза (в секундах) между попытками выполнения регламентного задания, при возникновении ошибки.
2. Группа свойств "Дополнительно".
-
Наименование свойства
-
Назначение свойства
Идентификатор
-
-
Нужен только для продвинутого администратора, знающего встроенный язык. Требуется для исследования нестандартных проблем в работе регламентных заданий, если таковые есть.
Ключ
-
-
Нужен только для продвинутого администратора. Требуется для тонкой настройки выполнения регламентных заданий и для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. Если ключ указан, то перед запуском фонового задания проверяется, что нет других активных фоновых заданий по тому же шаблону регламентного задания, который применен экземпляре регламентного задания.
Имя пользователя
-
Имя пользователя информационной базы, который будет использован для выполнения регламентного задания.
-
3. Группа свойств "Метаданные".
-
Наименование свойства
-
Назначение свойства
Имя
-
Имя шаблона регламентного задания, определенного в конфигураторе.
Синоним
-
Синоним шаблона регламентного задания, определенного в конфигураторе.
Имя метода
-
Имя процедуры в конфигруции, которая будет выполнятся в фоновом задании созданным по расписанию регламентного задания.
-
4. Сообщения пользователю и описание информации об ошибке.
-
Поле содержит текс сообщений и текст сведений об ошибке, если сообщения и/или ошибки произошли при выполнении последнего фонового задания созданного по этому регламентному заданию. То же содержание доступно, если открыть последнее фоновое задание этого регламентного задания.
-
\ No newline at end of file
+
Наименование - наименование регламентного задания. Обычно пустое, и в качестве него применяется синоним, указанный в шаблоне регламентного задания, заданного в конфигураторе. Если синоним шаблона не задан, используется его имя.
+
Включено - флажок позволяет включить или отключить выполнение регламентного задания. Полезно, когда нужно ненадолго отключить регламентное задание, не меняя расписание.
+
Повторять, раз - число попыток выполнения регламентного задания, при возникновении ошибки.
+
Повторять через, сек - пауза (в секундах) между попытками выполнения регламентного задания, при возникновении ошибки.
+
Дополнительно
+
Предопределенное - принимает значения Да и Нет. Непредопределенные (введенные вручную) регламентные задания используются в редких случаях.
+
Идентификатор - нужен только для продвинутого администратора, знающего встроенный язык. Требуется для исследования нестандартных проблем в работе регламентных заданий, если таковые есть.
+
Ключ - нужен только для продвинутого администратора. Требуется для тонкой настройки выполнения регламентных заданий и для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. Если ключ указан, то перед запуском фонового задания проверяется, что нет других активных фоновых заданий по тому же шаблону регламентного задания, который применен в экземпляре регламентного задания.
+
Имя пользователя - имя пользователя информационной базы, который будет использован для выполнения регламентного задания. Выбирается из списка Пользователи.
Метаданные
+
Имя - имя шаблона регламентного задания, определенного в конфигураторе.
+
Синоним - синоним шаблона регламентного задания, определенного в конфигураторе.
+
Имя метода - имя процедуры в конфигурации, которая будет выполняться в фоновом задании, созданным по расписанию регламентного задания.
Сообщения пользователю и описание информации об ошибке
+
Поле содержит текст сообщений и текст сведений об ошибке, если сообщения и/или ошибки произошли при выполнении последнего фонового задания созданного по этому регламентному заданию. То же содержание доступно, если открыть последнее фоновое задание этого регламентного задания.
В этой форме можно посмотреть различные свойства фонового задания.
-
1. Группа свойств "Основное".
-
-
Наименование свойства
-
Назначение свойства
Наименование
-
Обычно пустое, копия свойства "наименование" регламентного задания. При применении кнопки "Выполнить сейчас" на командной панели регламентного задания, наименованию фонового задания устанавливается текст "Запуск вручную: <Представление регламентного задания>".
Состояние
-
-
Возможны значения: "Выполнено", "Завершено с ошибками", "Отменено пользователем", "Выполняется".
Дата начала
-
Дата и время начала выполнения фонового задания.
Дата окончания
-
Дата и время окончания выполнения фонового задания (если задание еще выполняется, тогда пустая дата и время: <>.
Место выполнения
-
Имя компьютера сети без домена, на котором выполнялось фоновое задание. Это либо имя сервера, либо имя компьютера пользователя, если регламентные задания обрабатывались в файловой информационной базе.
2. Группа свойств "Дополнительно".
-
Наименование свойства
-
Назначение свойства
Идентификатор
-
-
Нужен только для продвинутого администратора, знающего внутренний язык 1С. Требуется для исследования нестандартных проблем в работе фоновых заданий, если таковые есть.
Ключ
-
-
Значение свойства Ключ, указанного в регламентном задании (на момент создания фонового задания) или другое, указанное явно, если фоновое задание создано программно, а не планировщиком сервера.
Имя метода
-
Имя процедуры в конфигруции, которая выполнятся или выполнялась в фоновом задании. Обычно соответствует свойству "имя метода" соответствующего регламентного задания.
-
3. Группа свойств "Регламентное задание".
-
Наименование свойства
-
Назначение свойства
Наименование
-
-
Одно из значений свойств (по порядку поиска заполненного): 1. Наименование. 2. Синоним. 3. Имя.
4. Сообщения пользователю и описание информации об ошибке.
-
Поле содержит текс сообщений и текст сведений об ошибке, если сообщения и/или ошибки произошли при выполнении фонового задания.
-
\ No newline at end of file
+
+
Описание свойств фонового задания.
+
Основное
+
Наименование - копия поля Наименованиерегламентного задания. При применении кнопки Выполнить сейчас на командной панели регламентного задания, наименованию фонового задания присваивается значение "Запуск вручную: <Представление регламентного задания>".
+
Состояние - возможны значения: "Задание выполнено", "Задание завершено с ошибками", "Задание отменено пользователем", "Задание выполняется".
+
Дата начала - дата и время начала выполнения фонового задания.
+
Дата окончания - дата и время окончания выполнения фонового задания (если задание еще выполняется, тогда пустая дата и время: <>).
+
Место выполнения - имя компьютера сети без домена, на котором выполнялось фоновое задание. Это либо имя сервера, либо имя компьютера пользователя, если регламентные задания обрабатывались в файловой информационной базе.
Дополнительно
+
Идентификатор - нужен только для продвинутого администратора, знающего внутренний язык 1С. Требуется для исследования нестандартных проблем в работе фоновых заданий, если таковые есть.
+
Ключ - значение поля Ключ, указанного в регламентном задании (на момент создания фонового задания) или другое, указанное явно, если фоновое задание создано программно, а не планировщиком сервера.
+
Имя метода метаданных - имя процедуры в конфигурации, которая выполняется или выполнялась в фоновом задании. Обычно соответствует значению поля Имя метода соответствующего регламентного задания.
Регламентное задание
+
Наименование - выбирается одно из значений полей (по порядку поиска заполненного):
+
Простой контроль - это анализ колонок "Состояние" и "Дата окончания" на странице "Регламентные задания", а также анализ текста поля "Сообщения пользователю и описание информации об ошибке" в форме редактирования регламентного задания.
-
Детальный контроль - это анализ списка фоновых заданий (на странице "Фоновые задания"), которые были созданы и выполнены для выполнения регламентного задания.
-
-
Детальный контроль производится отбором фоновых заданий по интересующему регламентному заданию, и анализом реквизитов фоновых заданий. Следует учитывать, что сведения о выполнении регламентного задания получаются выборкой части сведений о выполнении последнего фонового задания.
-
Прим.: отбор фоновых заданий производится только по команде Обновить, поэтому после изменения настройки отбора нужно выполнить эту команду.
Обновляет список регламентных заданий (и список фоновых с учетом заданного отбора, т.к. списки связаны).
Добавить
-
Открывает форму редактирования нового регламентного задания.
Изменить
-
Открывает форму редактирования регламентного задания.
-
Скопировать
-
Открывает форму редактирования нового регламентного задания, предварительно заполненную значениями копируемого задания.
-
Удалить
-
Удаляет регламентное задание, выбранное в списке (кроме предопределенных).
Расписание
-
Открывает форму редактирования расписания регламентного задания.
Выполнить сейчас
-
-
Выполняет процедуру регламентного задания, либо в этом сеансе (для файловой информационной базы), либо в фоновом задании на сервере (для серверной информационной базы). При выполнении процедуры в фоновом задании на сервере, не меняется дата последнего выполнения, используемая для запуска по расписанию.
Предназначен для администрирования регламентных и фоновых заданий.
+
Ряд действий в программе может выполняться автоматически в фоновом режиме, по определенному расписанию. Такие действия называются регламентными заданиями, например, это ежедневная загрузка курсов валют, регулярная рассылка отчетов, отложенное проведение документов и т.п. Регламентные задания облегчают работу в программе, позволяя перенести выполнение рутинных задач в саму программу, и в то же время они снижают человеческий фактор (например, можно забыть загрузить курсы валют в один из перегруженных другими задачами дней).
+
Открывается по команде Регламентные и фоновые задания в разделе Администрирование - Поддержка и обслуживание.
В списке можно включить (или отключить) то или иное регламентное задание и поменять расписание.
+
В списке выводится:
+
- флажок в колонке означает, что регламентное задание Включено и выполняется в соответствии с заданным расписанием;
+
Наименование - полное наименование регламентного задания;
+
Состояние - информация о выполнении регламентного задания;
+
Дата окончания - дата и время завершения регламентного задания.
Обновление списка
+
+
С помощью кнопки Обновить можно актуализировать информацию в списке регламентных заданий, а также на вкладке Фоновые задания, т.к. списки связаны, при этом будет произведен отбор в соответствии с указанными ранее настройками.
Настройка расписания
+
+
Для каждого регламентного задания может быть задано расписание, в соответствии с которым регламентное задание будет автоматически запущено на исполнение. В программе поддерживаются однократные и периодические расписания.
+
+
Нажмите Настроить расписание.
Выполнение регламентного задания
+
+
Для того чтобы начать выполнение регламентного задания сразу же, нажмите Выполнить сейчас.
+
+
В файловом режиме работы программы оно будет выполнено в текущем сеансе.
+
+
В клиент-серверном режиме работы программы выполнение произойдет в фоновом задании на сервере. При выполнении процедуры в фоновом задании на сервере не меняется дата последнего выполнения, используемая для запуска по расписанию.
+
+
Одновременное выполнение двух версий одного и того же регламентного задания невозможно. Если запустить то же самое регламентное задание, которое выполняется в данный момент, то программа выведет сообщение о невозможности вторичного запуска регламентного задания.
Ввод нового регламентного задания
+
+
В некоторых случаях бывает необходимо задать два разных расписания для одного регламентного задания. Тогда в список можно добавить новое регламентное задание по одному из предопределенных шаблонов, предусмотренных в программе.
+
+
Нажмите Добавить, выберите из списка шаблон, нажмите кнопку ОК. Заполните необходимые поля.
Технически, в соответствии с заданным расписанием для выполнения регламентного задания создается фоновое задание, которое выполняет регламентные действия. Например, если задано ежедневное расписание на 9:15, то каждый день в 9:15 будет запускаться новый сеанс фонового задания. После завершения регламентной операции фоновое задание автоматически завершается.
+
В списке выводится:
+
Состояние - выполнение задания;
+
Наименование - наименование фонового задания;
+
Начало - дата и время начала выполнения фонового задания;
+
Окончание - дата и время окончания выполнения фонового задания;
+
Регламентное задание - наименование регламентного задания.
Для контроля выполнения регламентных заданий можно воспользоваться отбором фоновых заданий по различным признакам:
Отбор
-
Описание
По состоянию
+
Описание
По состоянию
-
Позволяет выполнить отбор по состоянию (дополнительно к отбору по периоду и по регламентному заданию): 1) выполнено, 2) завершено с ошибками, 3) отменено пользователем, 4) выполняется.
По периоду
+
Позволяет выполнить отбор по состоянию (дополнительно к отбору по периоду и по регламентному заданию):
+
Выполнено;
+
Завершено с ошибками;
+
Отменено;
+
Выполняется.
Включите нужные отборы с помощью флажков.
По периоду
-
Позволяет выполнить отбор по периоду (дополнительно к отбору по состоянию и по регламентному заданию): 1) произвольный - можно установить нестандартный период, 2) без отбора - отбор по периоду не выполняется, 3) ночь - стандартный период 12 часов с 21:00-09:00, 4) вчера - стандартный период 24 часа с 00:00-23:59 вчерашнего дня, 5) сегодня - стандартный период 24 часа с 00:00-23:59 сегодняшнего дня.
По регламентному заданию
-
Позволяет выполнить отбор по регламентному заданию (дополнительно к отбору по состоянию и по периоду): 1) флажок обозначает необходимость отбора, 2) наименование регламентного задания "<не определено>" используется для отбора фоновых заданий, запущенных для выполнения прочих (не регламентных) задний.
Команда
-
Описание
Обновить
-
Обновляет список фоновых заданий с учетом заданного отбора (и список регламентных, т.к. списки связаны).
Открыть
-
Открывает детальную форму свойств фонового задания.
Отменить
-
Отменяет выполнение фонового задание (если выполняется).
Позволяет выполнить отбор по периоду (дополнительно к отбору по состоянию и по регламентному заданию):
+
произвольный - можно установить нестандартный период;
+
все время - отбор по периоду не выполняется;
+
прошлая ночь - стандартный период 12 часов с 21:00-09:00;
+
вчера - стандартный период 24 часа с 00:00-23:59 вчерашнего дня;
+
сегодня - стандартный период 24 часа с 00:00-23:59 сегодняшнего дня.
По регламентному заданию
+
+
Позволяет выполнить отбор по регламентному заданию (дополнительно к отбору по состоянию и по периоду).
+
Включите флажок Отбирать по регламентному заданию.
+
Выберите наименование регламентного задания из списка.
+
Наименование регламентного задания "<не определено>" используется для отбора фоновых заданий, запущенных для выполнения прочих (не регламентных) заданий.
Внимание! Для того чтобы отобрать фоновые задания в соответствии с выбранными настройками, нажмите Обновить.
+
Просмотр информации о фоновом задании
+
Для того чтобы просмотреть свойства фонового задания, дважды щелкните мышью по нужной строке. Также можно нажать Открыть.
Контроль может быть либо простым, либо детальным.
+
Простой контроль - это анализ колонок Состояние и Дата окончания на вкладке Регламентные задания, а также анализ текста поля Сообщения пользователю и описание информации об ошибке в окне редактирования регламентного задания.
+
Детальный контроль - это анализ списка фоновых заданий (на вкладке Фоновые задания), которые были созданы и выполнены для выполнения регламентного задания.
+
Детальный контроль производится отбором фоновых заданий по интересующему регламентному заданию, и анализом реквизитов фоновых заданий. Следует учитывать, что сведения о выполнении регламентного задания получаются выборкой части сведений о выполнении последнего фонового задания.
+
Отбор фоновых заданий производится только по команде Обновить, поэтому после изменения настройки отбора нужно выполнить эту команду.
+
Для детального анализа хода выполнения регламентных заданий в клиент-серверном режиме см. отчет Продолжительность работы регламентных заданий из группы отчетов Анализ журнала регистрации, который открывается по соответствующей команде в разделе Администрирование - Поддержка и обслуживание - Отчеты администратора.
Выполняет восстановление данных из резервной копии.
-
Обязательное заполнение: Путь к файлу с резервной копией. В данном поле необходимо выбрать файл, из которого будет восстановлена информационная база. Примечание: в данном помощнике при восстановлении данных можно использовать только архивы формата .zip, содержащие один файл - файл информационной базы 1cv8.cd. Лучше всего использовать архивы, созданные помощником создания резервной копии.
-
Также предоставляет возможность создать резервную копию базы перед ее восстановлением - таким образом, можно сохранить те данные, которые имеются на данный момент. Для формирования резервной копии необходимо установить флажок "Создать резервную копию перед восстановлением данных". Кроме того, потребуется указать каталог, куда будет сохранена резервная копия.
-
При нажатии кнопки "Далее" и правильном заполнении реквизитов, программа проверит ваши права, а также количество пользователей, которые кроме вас работают с базой. Если они присутствуют, будет запущен механизм отключения их от информационной базы.
-
Важно: для того, чтобы войти в информационную базу, если восстановление данных не выполнилось, необходимо запустить 1С:Предприятие с параметрами: ENTERPRISE /F <путь к информационной базе> /CРазрешитьРаботуПользователей /UC РезервноеКопирование.
\ No newline at end of file
+
+
Предназначена для восстановления данных из резервной копии.
+
Открывается командой Восстановление из резервной копии раздела Администрирование - Поддержка и обслуживание - Резервное копирование и восстановление.
+
В любой момент времени можно восстановить данные из созданной ранее резервной копии. Необходимо учитывать, что все данные в восстановленной информационно базе будут актуальны на момент создания копии. Данные, введенные в программу после создания резервной копии, будут отсутствовать в восстановленной ИБ.
+
Восстановление данных
+
С помощью кнопки Выбрать укажите путь к файлу с резервной копией, из которого будет восстановлена информационная база (поле обязательно для заполнения).
+
В данном помощнике при восстановлении данных можно использовать только архивы формата .zip, содержащие один файл - файл информационной базы 1cv8.cd. Лучше всего использовать архивы, созданные помощником создания резервной копии.
+
Программа выводит предупреждение о том, что имеются другие пользователи, которые кроме вас работают с информационной базой в текущий момент. Перейдите по ссылке, для того чтобы Посмотреть список активных сеансов.
+
Нажмите Восстановить данные. Если присутствуют активные сеансы, будет запущен механизм отключения их от информационной базы. Затем программа выполнит восстановление данных.
Вход в базу в случае сбоя восстановления данных
+
Важно: Для того чтобы войти в информационную базу, если восстановление данных не выполнилось, необходимо запустить 1С:Предприятие с параметрами: ENTERPRISE /F <путь к информационной базе> /CРазрешитьРаботуПользователей /UC РезервноеКопирование.
Основная форма создания резервной копии информационной базы.
-
Предоставляет следующие возможности:
-
"Проведение резервного копирования прямо сейчас". При выборе этого пункта, программа попытается произвести резервное копирование в настоящий момент. При этом будет завершена работа всех пользователей. Когда в базе останется только ваша программа, то она закроется автоматически, проведется резервное копирование, и программа откроется снова с информационной формой, на которой можно будет узнать о результате проведения резервного копирования.
-
"Проведение резервного копирования через указанное время". При выборе данного пункта, программа предложит задать промежуток времени, через который будет проведено резервное копирование. Также, периодически программа будет проверять, сколько пользователей сейчас находится в базе, и, если в базе останется только один сеанс, будет предлагать выполнить резервное копирование немедленно. Если Вы закроете программу раньше истечения срока ожидания резервного копирования, программа выдаст предупреждение с выбором вариантов дальнейших действий.
-
"Проведение резервного копирования при завершении работы". При выборе данного пункта вы можете продолжать работу. При завершении работы, программа напомнит о том, что планировалось резервное копирование, и предложит варианты действий.
-
Обязательные поля для заполнения : Каталог резервной копии. Папка, в которую будет помещена сформированная резервная копия базы.
-
-
В низу формы находится гиперссылка, перейдя по которой можно попасть на страницу первичной настройки резервного копирования, в том случае, если текущая настройка вас не устраивает.
-
-
Важно: для того, чтобы войти в информационную базу, если резервное копирование не выполнилось, необходимо запустить 1С:Предприятие с параметрами: ENTERPRISE /F <путь к информационной базе> /CРазрешитьРаботуПользователей /UC РезервноеКопирование.
\ No newline at end of file
+
+
Предназначена для создания резервной копии информационной базы.
+
Рекомендуется создавать резервные копии перед любой операцией в программе, которая может необратимо изменить большие объемы данных, например, перед групповым изменением реквизитов объектов программы. В этом случае необходимо выполнить резервное копирование в ручном режиме.
+
Открывается по команде Создание резервной копии из раздела Администрирование - Поддержка и обслуживание - Резервное копирование.
+
Создание резервной копии
+
В верхней части окна выводится информация о том, когда последний раз выполнялось резервное копирование.
+
С помощью кнопки Выбрать в поле Каталог для сохранения резервной копии (обязательное поле для заполнения) укажите папку, в которую программа сохранит резервную копию информационной базы. Рекомендуется выполнять резервное копирование на другой компьютер или внешний носитель.
+
Если в программе имеются текущие сеансы, программа выводит предупреждение об этом. Перейдите по ссылке, для того чтобы Посмотреть список активных сеансов. Работу пользователей в программе необходимо завершить.
+
После установки необходимых параметров нажмите Сохранить резервную копию.
Процедура резервного копирования
+
Программа попытается произвести резервное копирование в настоящий момент. При этом в окне выводится сообщение Проводится подготовка к созданию резервной копии и ссылка Активные пользователи, по которой можно открыть список подключений к программе. Программа предпримет попытку завершения работы всех пользователей.
+
После завершения работы всех пользователей программа установит блокировку и выполнит резервное копирование.
+
Если программа не сможет завершить работу всех пользователей, то она предложит выполнить резервное копирование при подключенных к программе пользователях. С предложением программы можно согласиться, если администратор уверен в том, что подключенные пользователи не вводят данные в программу (например, если пользователи в конце рабочего дня забыли выйти из программы). В противном случае необходимо завершить сеансы таких пользователей на их рабочих местах.
+
После успешного окончания резервного копирования программа запускается снова, при этом выводится сообщение о выполненной процедуре резервного копирования, в котором указан путь к файлу с резервной копией.
+
Если программе не удалось принудительно отключить сеансы, и администратором также не были предприняты какие-либо действия, то резервное копирование может не состояться. В этом случае программа выводит предупреждение, что резервное копирование не было проведено, и список сеансов, которые не удалось завершить (например, Конфигуратор).
+
Запуск программы в случае ошибок во время резервного копирования
+
Перед началом резервного копирования программа выводит сообщение с рекомендациями по немедленному запуску.
+
Для того, чтобы войти в информационную базу, если резервное копирование не выполнилось, необходимо запустить 1С:Предприятие с параметрами: ENTERPRISE /F <путь к информационной базе> /CРазрешитьРаботуПользователей /UC РезервноеКопирование.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl
index dd2ec86a9..d84f7471e 100644
--- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl
+++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl
@@ -38,7 +38,16 @@
Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаОшибокПриКопировании;
КонецЕсли;
- Объект.КаталогСРезервнымиКопиями = НастройкиРезервногоКопирования.КаталогХраненияРезервныхКопий;
+ АвтоматическоеВыполнение = (Параметры.РежимРаботы = "ВыполнитьСейчас" Или Параметры.РежимРаботы = "ВыполнитьПриЗавершенииРаботы");
+
+ Если НастройкиРезервногоКопирования.Свойство("КаталогХраненияРезервныхКопийПриРучномЗапуске")
+ И Не ПустаяСтрока(НастройкиРезервногоКопирования.КаталогХраненияРезервныхКопийПриРучномЗапуске)
+ И Не АвтоматическоеВыполнение Тогда
+ Объект.КаталогСРезервнымиКопиями = НастройкиРезервногоКопирования.КаталогХраненияРезервныхКопийПриРучномЗапуске;
+ Иначе
+ Объект.КаталогСРезервнымиКопиями = НастройкиРезервногоКопирования.КаталогХраненияРезервныхКопий;
+ КонецЕсли;
+
Если НастройкиРезервногоКопирования.ДатаПоследнегоРезервногоКопирования = Дата(1, 1, 1) Тогда
ТекстЗаголовка = НСтр("ru = 'Резервное копирование еще ни разу не проводилось'");
Иначе
@@ -126,8 +135,17 @@
КонецПроцедуры
-////////////////////////////////////////////////////////////////////////////////
-// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ
+&НаКлиенте
+Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
+ Если ИмяСобытия = "ЗавершениеРаботыПользователей" И Параметр.КоличествоСеансов <= 1
+ И ПараметрыРезервногоКопированияИБ.ПроцессВыполняется Тогда
+ НачатьРезервноеКопирование();
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СписокПользователейНажатие(Элемент)
@@ -282,14 +300,7 @@
ОчиститьСообщения();
- НазванияСоединенийИБ = "";
- Если НЕ АктивныТолькоКлиентскиеПриложения(НазванияСоединенийИБ) Тогда
- ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Имеются активные сеансы работы с программой, которые не могут быть завершены принудительно.
- |%1'"),
- НазванияСоединенийИБ);
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
- КонецЕсли;
+ ПроверитьНаличиеБлокирующихСеансов();
СоединенияИБВызовСервера.УстановитьБлокировкуСоединений(Нстр("ru = 'Для выполнения резервного копирования.'"), "РезервноеКопирование");
СоединенияИБКлиент.УстановитьОбработчикиОжиданияЗавершенияРаботыПользователей(УстановитьБлокировкуСоединений);
@@ -300,6 +311,28 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ПроверитьНаличиеБлокирующихСеансов()
+
+ НазванияСоединенийИБ = "";
+
+ Если АктивныТолькоКлиентскиеПриложения(НазванияСоединенийИБ) Тогда
+ Видимость = Ложь;
+ Иначе
+ ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Имеются активные сеансы работы с программой,
+ |которые не могут быть завершены принудительно:
+ |%1'"), НазванияСоединенийИБ);
+ Видимость = Истина;
+ Элементы.ДекорацияАктивныеСеансы.Заголовок = ТекстСообщения;
+ КонецЕсли;
+
+ Если Элементы.ДекорацияАктивныеСеансы.Видимость <> Видимость Тогда
+ Элементы.ДекорацияАктивныеСеансы.Видимость = Видимость;
+ КонецЕсли;
+
+КонецПроцедуры
+
&НаКлиенте
Процедура ПерейтиНаСтраницуРезультатовРезервногоКопирования()
@@ -325,7 +358,7 @@
Результат = Истина;
НазванияСоединенийИБ = "";
НомерТекущегоСеанса = НомерСеансаИнформационнойБазы();
- Для каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
+ Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
Если Сеанс.НомерСеанса = НомерТекущегоСеанса Тогда
Продолжить;
КонецЕсли;
@@ -555,6 +588,8 @@
Элементы.КоличествоАктивныхПользователей.Заголовок = Строка(КоличествоПользователей);
Если КоличествоПользователей = 1 Тогда
НачатьРезервноеКопирование();
+ Иначе
+ ПроверитьНаличиеБлокирующихСеансов();
КонецЕсли;
КонецПроцедуры
@@ -605,8 +640,10 @@
Если Параметры.РежимРаботы = "ВыполнитьПриЗавершенииРаботы" Тогда
РезервноеКопированиеИБКлиент.УдалитьРезервныеКопииПоНастройке();
КонецЕсли;
-
+
+ ЗакрытьФормуБезусловно = Истина;
Закрыть();
+
ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина;
ЗавершитьРаботуСистемы(Ложь);
@@ -621,7 +658,7 @@
Процедура УстановитьПутьАрхиваСКопиями(Путь)
НастройкиПути = РезервноеКопированиеИБСервер.НастройкиРезервногоКопирования();
- НастройкиПути.КаталогХраненияРезервныхКопий = Путь;
+ НастройкиПути.Вставить("КаталогХраненияРезервныхКопийПриРучномЗапуске", Путь);
РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиПути);
КонецПроцедуры
@@ -776,8 +813,7 @@
Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаПрограммы]" , ПодготовитьТекст(ИмяИсполняемогоФайлаПрограммы));
Результат = СтрЗаменить(Результат, "[ИмяФайлаЗапускаПриложенияВРежимеПредприятия]", ПодготовитьТекст(ИмяФайлаЗапускаПриложенияВРежимеПредприятия));
Результат = СтрЗаменить(Результат, "[ПараметрПутиКИнформационнойБазе]" , ПодготовитьТекст(ПараметрПутиКИнформационнойБазе));
- Результат = СтрЗаменить(Результат, "[СтрокаПутиКФайлуИнформационнойБазы]" , ПодготовитьТекст(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", "")) +
- "1Cv8.1CD"));
+ Результат = СтрЗаменить(Результат, "[СтрокаПутиКФайлуИнформационнойБазы]" , ПодготовитьТекст(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", ""))));
Результат = СтрЗаменить(Результат, "[СтрокаСоединенияИнформационнойБазы]" , ПодготовитьТекст(СтрокаСоединенияИнформационнойБазы));
Результат = СтрЗаменить(Результат, "[ПараметрыАутентификацииПользователя]" , ПодготовитьТекст(СтруктураПараметров.ПараметрыСкрипта.ПараметрыАутентификации));
Результат = СтрЗаменить(Результат, "[СобытиеЖурналаРегистрации]" , ПодготовитьТекст(СтруктураПараметров.СобытиеЖурналаРегистрации));
diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаЗагрузкаИБ/Template.txt b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаЗагрузкаИБ/Template.txt
index 9f605d800..bdd00a81c 100644
--- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаЗагрузкаИБ/Template.txt
+++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаЗагрузкаИБ/Template.txt
@@ -9,7 +9,7 @@ var v8exeEnterprise = [ИмяФайлаЗапускаПриложенияВРе
var infoBasePath = [ПараметрПутиКИнформационнойБазе];
var BaseFileName = [СтрокаПутиКФайлуИнформационнойБазы];
var BaseFileName2 = [СтрокаПутиКФайлуИнформационнойБазы2];
-var connectionString = [СтрокаСоединенияИнформационнойБазы] + 'С=РазрешитьРаботуПользователей'+ 'UC=РезервноеКопированиеИБ';
+var connectionString = [СтрокаСоединенияИнформационнойБазы] + 'С="РазрешитьРаботуПользователей";'+ 'UC=РезервноеКопирование';
var infoBaseAuthorization = [ПараметрыАутентификацииПользователя];
var backupFileCopyName = [КаталогРезервнойКопии2] + '1Cv8' + now.valueOf() + '.zip'; // Файл резервной копии
var backupFileName = [КаталогРезервнойКопии]; // Файл резервной копии
@@ -21,6 +21,7 @@ var doBlockUsers = [БлокироватьСоединенияИБ]; // уст
var comConnectorName = [ИмяCOMСоединителя]; // имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение
var useComConnector = [ИспользоватьCOMСоединитель]; // флаг использования COM-соединения для работы с 1С:Предприятием 8
var tempLogFileName = "templog.txt";
+var retryCount = 0;
#КонецОбласти
#Область ОбластьРезервногоКопирования
@@ -50,7 +51,6 @@ var successMarker = "{OK }";
// Переменные состояния
var backupCreated = false;
-var connectionsDenied = false;
var logging1C = false;
var ComConnection = null;
@@ -224,7 +224,7 @@ function finalize(success)
if (!success)
{
- allowConnections(false); // Разрешение подключений
+ allowConnections(); // Разрешение подключений
}
write1CEventLog(); // Запись всей информации из log-файла в журнал регистрации
@@ -370,7 +370,7 @@ function writeEventLog(success)
catch(e)
{
CollectGarbage(); // предотвращает исключение out of memory
- log(format("Исключение при создании резервной копии базы", e.name, e.message), true);
+ log(format("Исключение при создании резервной копии базы: {0}, {1}.", e.name, e.message), true);
ret = -1;
}
@@ -378,7 +378,6 @@ function writeEventLog(success)
}
// Восстановление БД
function backupDB()
-
{
var oShellApplication = new ActiveXObject("Shell.Application");
var ZIPFile = oFileSystemObject.GetAbsolutePathName(backupFileName);
@@ -388,14 +387,32 @@ function backupDB()
var FileObject = oFileSystemObject.GetFile(BaseFileName + BaseFileName2);
var FileObject2 = new ActiveXObject("Scripting.FileSystemObject");
- // сначала переместим наш cd-файл в стороннюю директорию
+ // сначала переместим cd-файл базы во временный каталог
if (FileObject2.FileExists(TempCatalog + BaseFileName2)) {
FileObject2.DeleteFile(TempCatalog + BaseFileName2);
}
- FileObject.Move(TempCatalog);
+ try
+ {
+ FileObject.Move(TempCatalog);
+ }
+ catch(e)
+ {
+ retryCount++;
+ CollectGarbage(); // предотвращает исключение out of memory
+ if (retryCount > 5)
+ {
+ log(format("Ошибка переноса файла базы во временный каталог (возможно есть активные сеансы к файлу базы): {0}, {1}.", e.name, e.message), true);
+ return 1;
+ }
+ else
+ {
+ log(format("Попытка переноса файла базы во временный каталог ({0} из 5): {1}, {2}.", retryCount, e.name, e.message));
+ return -1;
+ }
+ }
if (!createBackup)
- return 0;
+ return 0;
try
{
@@ -403,13 +420,13 @@ function backupDB()
ret = 0;
- log(format("Восстановление базы данных проведено", ret), ret != 0);
+ log(format("Восстановление базы данных проведено: {0}", ret), ret != 0);
}
catch(e)
{
CollectGarbage(); // предотвращает исключение out of memory
- log(format("Исключение при восстановлении базы из резервной копии", e.name, e.message), true);
- ret = -1;
+ log(format("Исключение при восстановлении базы из резервной копии: {0}, {1}.", e.name, e.message), true);
+ ret = 1;
}
if (ret == 0)
backupCreated = true;
@@ -453,34 +470,29 @@ function restoreDB()
return ret;
}
-function doAllowConnections(updateAndFillDB)
+function doAllowConnections()
{
- if (updateAndFillDB == undefined)
- updateAndFillDB = true;
-
- var connection = createConnection();
- if (connection == null)
- return (useComConnector ? 1 : 0);
-
- try
- {
- connection.СоединенияИБ.РазрешитьРаботуПользователей();
- connectionsDenied = false;
- }
- catch(e)
- {
- CollectGarbage(); // предотвращает исключение out of memory
- log(format("Исключение при вызове СоединенияИБ.РазрешитьРаботуПользователей: {0}, {1}.", e.name, e.message), true);
- return 3;
- }
- return 0;
+ var BlockFilePath = BaseFileName + '1Cv8.cdn';
+ if (oFileSystemObject.FileExists(BlockFilePath))
+ {
+ try
+ {
+ oFileSystemObject.DeleteFile(BaseFileName + '1Cv8.cdn');
+ }
+ catch(e)
+ {
+ log(format("Ошибка при удалении файла блокировок 1Cv8.cdn: {0}, {1}.", e.name, e.message), true);
+ return 3;
+ }
+ }
+ return 0;
}
// Первоначальное заполнение информационной базы, разрешение подключений новых соединений,
// и оповещение о результате обновления
-function allowConnections(updateAndFillDB)
+function allowConnections()
{
- var result = doAllowConnections(updateAndFillDB);
+ var result = doAllowConnections();
CollectGarbage(); // освобождает соединения с COM-объектом
return result;
}
@@ -499,7 +511,7 @@ function doDisconnectAndBlockUsersHTA(connection)
case 0:
{
connection.СоединенияИБ.УстановитьБлокировкуСоединений("в связи с необходимостью восстановления информационной базы.",
- "РезервноеКопированиеИБ");
+ "РезервноеКопирование");
disconnectionInterval = connection.СоединенияИБ.ПараметрыБлокировкиСеансов().ИнтервалОжиданияЗавершенияРаботыПользователей * 1000;
disconnectionStartDateTime = connection.СоединенияИБ.ПараметрыБлокировкиСеансов().Начало;
if (connection.ЗначениеЗаполнено(disconnectionStartDateTime))
@@ -603,7 +615,7 @@ function doDisconnectAndBlockUsers()
try
{
connection.СоединенияИБ.УстановитьБлокировкуСоединений("в связи с необходимостью восстановления данных информационной базы.",
- "РезервноеКопированиеИБ");
+ "РезервноеКопирование");
var interval = 0;
var startDateTime = connection.ПолучитьБлокировкуУстановкиСоединений().Начало;
diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt
index a48d4f2e3..4590c79f5 100644
--- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt
+++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt
@@ -45,7 +45,6 @@ var successMarker = "{OK }";
// Переменные состояния
var backupCreated = false;
-var connectionsDenied = false;
var logging1C = false;
var ComConnection = null;
@@ -220,7 +219,7 @@ function finalize(success)
if (!(oFileSystemObject.FileExists(backupFileName)))
- log("Внимание!!! Произошла ошибка при создании резервной копии ИБ. Для диагностики запустите резервное копирование вручную");
+ log("Произошла ошибка при создании резервной копии ИБ. Для диагностики запустите резервное копирование вручную");
@@ -228,7 +227,7 @@ function finalize(success)
log("Резервная копия успешно создана");
if (TestFolder== null)
{
- log("Внимание!!! Произошла ошибка при создании резервной копии ИБ. Для диагностики запустите резервное копирование вручную");
+ log("Произошла ошибка при создании резервной копии ИБ. Для диагностики запустите резервное копирование вручную");
success = false;
}
@@ -238,7 +237,7 @@ function finalize(success)
if (!success)
{
- allowConnections(false); // Разрешение подключений
+ allowConnections(); // Разрешение подключений
}
@@ -367,7 +366,7 @@ function backupDB()
var ZIPFile = oFileSystemObject.GetAbsolutePathName(backupFileName);
var dFolder = oShellApplication.NameSpace(ZIPFile);
- var file = oFileSystemObject.GetAbsolutePathName(BaseFileName);
+ var file = oFileSystemObject.GetAbsolutePathName(BaseFileName + '1Cv8.1CD');
var FolderNameSpace = oFileSystemObject.GetParentFolderName(file);
var Folder = oShellApplication.Namespace(FolderNameSpace);
var FolderItemNameSpace = oFileSystemObject.GetFileName(file);
@@ -416,34 +415,29 @@ function WaitUntilFinish()
return 0;
}
-function doAllowConnections(updateAndFillDB)
+function doAllowConnections()
{
- if (updateAndFillDB == undefined)
- updateAndFillDB = false;
-
- var connection = createConnection();
- if (connection == null)
- return (useComConnector ? 1 : 0);
-
- try
- {
- connection.СоединенияИБ.РазрешитьРаботуПользователей();
- connectionsDenied = false;
- }
- catch(e)
- {
- CollectGarbage(); // предотвращает исключение out of memory
- log(format("Исключение при вызове СоединенияИБ.РазрешитьРаботуПользователей: {0}, {1}.", e.name, e.message), true);
- return 3;
- }
- return 0;
+ var BlockFilePath = BaseFileName + '1Cv8.cdn';
+ if (oFileSystemObject.FileExists(BlockFilePath))
+ {
+ try
+ {
+ oFileSystemObject.DeleteFile(BaseFileName + '1Cv8.cdn');
+ }
+ catch(e)
+ {
+ log(format("Ошибка при удалении файла блокировок 1Cv8.cdn: {0}, {1}.", e.name, e.message), true);
+ return 3;
+ }
+ }
+ return 0;
}
// Первоначальное заполнение информационной базы, разрешение подключений новых соединений,
// и оповещение о результате обновления
-function allowConnections(updateAndFillDB)
+function allowConnections()
{
- var result = doAllowConnections(updateAndFillDB);
+ var result = doAllowConnections();
CollectGarbage(); // освобождает соединения с COM-объектом
return result;
}
diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/РезервноеКопированиеИБ.mdo b/SSL/src/DataProcessors/РезервноеКопированиеИБ/РезервноеКопированиеИБ.mdo
index ca8456a6d..be028d7cf 100644
--- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/РезервноеКопированиеИБ.mdo
+++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/РезервноеКопированиеИБ.mdo
@@ -11,6 +11,7 @@
trueDataProcessor.РезервноеКопированиеИБ.Form.РезервноеКопированиеДанных
+ trueВариантРасписанияРезервногоКопирования
@@ -188,8 +189,9 @@
ПоказатьРезультатru
- Показать результат
+ Показать результат резервного копирования
+ Служебная команда. Не для размещения в командном интерфейсеNavigationPanelSeeAlsoAuto
diff --git a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html
index 75e5d2eb8..68b05307c 100644
--- a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html
+++ b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Управление итогами включает в себя процедуры, связанные с итогами регистров накопления и бухгалтерии, а также агрегатами оборотных регистров накопления. Управление итогами разделяется на два режима:
Частно используемые возможности - позволяют "одним нажатием" выполнить наиболее частые действия, возникающие при обслуживании системы.
Полные возможности - позволяет выполнять все операции как с одним регистром, так и с произвольным списком регистров.
Для переключения режимов служит гиперссылка в правом нижнем углу формы. Форма запоминает режим открытия.
diff --git a/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Form.form b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Form.form
index abc0e078d..3ef173dfa 100644
--- a/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Form.form
+++ b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Form.form
@@ -201,7 +201,7 @@
VerticalAuto
- StrongSeparation
+ WeakSeparationtruetrueauto
diff --git a/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl
index c12657421..84265efd4 100644
--- a/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl
+++ b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl
@@ -113,7 +113,7 @@
Если Отказ Тогда
Возврат;
КонецЕсли;
-
+
ПечатьСогласияНаОбработкуПерсональныхДанных("Обработка.СогласиеНаОбработкуПерсональныхДанных", "СогласиеНаОбработкуПерсональныхДанных(ODT)", ДанныеПечатиСогласия(), ЭтотОбъект);
КонецПроцедуры
@@ -133,14 +133,14 @@
Функция ДанныеПечатиСогласия()
ОбщиеДанные = Новый Структура;
- ОбщиеДанные.Вставить("ДатаСогласия", ?(ЗначениеЗаполнено(ДатаСогласия), Формат(ДатаСогласия, "ДЛФ=DD"), "«____»_______________20___г."));
- ОбщиеДанные.Вставить("Организация", ?(ЗначениеЗаполнено(Организация), Организация, "<Организация>"));
- ОбщиеДанные.Вставить("АдресОрганизации", ?(ЗначениеЗаполнено(АдресОрганизации), АдресОрганизации, "<Адрес организации>"));
- ОбщиеДанные.Вставить("ОтветственныйЗаОбработкуПерсональныхДанных", ?(ЗначениеЗаполнено(ОтветственныйЗаОбработкуПерсональныхДанных), ОтветственныйЗаОбработкуПерсональныхДанных, "<ФИО ответственного лица>"));
+ ОбщиеДанные.Вставить("ДатаСогласия", ?(ЗначениеЗаполнено(ДатаСогласия), Формат(ДатаСогласия, "ДЛФ=DD"), НСтр("ru = '«____»_______________20___г.'")));
+ ОбщиеДанные.Вставить("Организация", ?(ЗначениеЗаполнено(Организация), Организация, НСтр("ru = '<Организация>'")));
+ ОбщиеДанные.Вставить("АдресОрганизации", ?(ЗначениеЗаполнено(АдресОрганизации), АдресОрганизации, НСтр("ru = '<Адрес организации>'")));
+ ОбщиеДанные.Вставить("ОтветственныйЗаОбработкуПерсональныхДанных", ?(ЗначениеЗаполнено(ОтветственныйЗаОбработкуПерсональныхДанных), ОтветственныйЗаОбработкуПерсональныхДанных, НСтр("ru = '<ФИО ответственного лица>'")));
Субъекты = Новый Массив;
Если ВариантПечатиСогласия = "ВыводитьБланк" Тогда
- Субъекты.Добавить(Новый Структура("ФИО, Адрес, ПаспортныеДанные", "<ФИО субъекта>", "<Адрес субъекта>", "<Паспортные данные субъекта>"));
+ Субъекты.Добавить(Новый Структура("ФИО, Адрес, ПаспортныеДанные", НСтр("ru = '<ФИО субъекта>'"), НСтр("ru = '<Адрес субъекта>'"), НСтр("ru = '<Паспортные данные субъекта>'")));
Иначе
Для Каждого Субъект Из СубъектыПерсональныхДанных Цикл
ДанныеСубъекта = Новый Структура("ФИО, Адрес, ПаспортныеДанные");
diff --git a/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Help/ru.html b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Help/ru.html
new file mode 100644
index 000000000..a75411af7
--- /dev/null
+++ b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Help/ru.html
@@ -0,0 +1,22 @@
+
+
Предназначена для печати формы согласия на обработку персональных данных.
+
Федеральный закон от 27.06.2006 № 152-Ф3 "О персональных данных" предписывает со всех субъектов, чьи персональные данные в программе обрабатываются, получить согласие на такую обработку.
+
Открывается из списков программы или из элементов списков по команде Еще - Согласие на обработку персональных данных. Печать формы возможна из всех списков программы, в которых имеются персональные данные.
+
Оператор персональных данных
+
Заполните Дату согласия.
+
В поле Организация выберите из списка наименование организации - оператора персональных данных.
+
Поле Адрес заполняется автоматически, если оно заполнено в списке Организации. Если оно не заполнено, можно заполнить его вручную или (при наличии соответствующих прав) заполнить адрес в карточкеОрганизации и выбрать ее из списка повторно, для того чтобы поле Адрес заполнилось автоматически.
+
В поле Ответственный за обработку ПДн напишите ФИО сотрудника, который вводит личные данные.
При этом возможна ситуация, когда данные субъектов уже были внесены в программу (до вступления в силу закона, до принятия в компании положения и т.д.), а возможна ситуация, когда данные субъекта пока не внесены. То есть после утверждения положения, принимаем сотрудника, и до ввода его данных в программу формируем бланк согласия. Для этого в программе поддерживаются два режима печати формы согласия.
+
Печать формы для новых сотрудников
+
В случае если сотрудник принимается на работу, его персональные данные пока не введены в программу. Кадровик формирует печатную форму согласия, в которой заполнены данные организации, но не заполнены данные физического лица, вместо них нижнее подчеркивание для заполнения. Сотрудник заполняет свои данные, подписывает документ, после этого кадровик вводит данные в программу, согласие остается в организации в бумажном виде.
+
Если данные о субъекте на момент составления согласия в программе еще отсутствуют (сотрудник только принимается на работу), то их можно указать непосредственно в печатной форме или распечатать форму с графами для заполнения, для этого переключатель Персональные данные субъекта необходимо переключить в положение пока отсутствуют в информационной базе.
Печать формы с использованием данных программы
+
В случае если персональные данные субъектов уже существуют в программе, кадровик выбирает из списка тех субъектов персональных данных, от которых нужно получить согласие, выводит печатные формы согласия. При этом в форме будут заполнены все данные, как организации, так и субъектов персональных данных.
+
Для печати формы Согласие на обработку персональных данных на каждого субъекта персональных данных необходимо в соответствующей строке списка или в одном из элементов списка воспользоваться командой Еще - Согласие на обработку персональных данных.
+
Для того чтобы распечатать форму согласия для физических лиц, данные о которых есть в программе, переключатель Персональные данные субъекта переключите в положение будут использованы из информационной базы, при этом имеющиеся в программе данные по выделенным в списке субъектам будут помещены в табличную часть.
+
Для печати формы на несколько элементов списка (например, сотрудников одной организации) выделите несколько записей с помощью левой кнопки мыши и клавиш Ctrl или Shift.
+
Если было выделено несколько записей списка, то их данными заполняется табличная часть документа. Можно уточнить недостающие в таблице данные по каждому субъекту (Адрес и Паспортные данные).
+
При необходимости внесите в список недостающие записи с помощью кнопки Добавить, напишите данные вручную.
+
Если список в табличной части содержит несколько человек, то в этом случае количество сформированных печатных форм будет равно количеству строк в табличной части (для каждого элемента списка будет сформирована своя форма).
Для печати в формате Microcoft Word или OpenOffice.org Writer используйте соответствующие кнопки. Необходимо иметь в виду, что на компьютере должно быть установлено соответствующее приложение.
Предназначена для сопоставления данных двух программ.
Список открывается по команде Выполнить сопоставление на странице Сопоставление данныхПомощника интерактивной синхронизации данных. Также можно дважды щелкнуть мышью по строке, в которой обнаружены проблемы сопоставления данных.
Список состоит из двух колонок, каждая из которых соответствует информационной базе, участвующей в обмене. Данные сгруппированы по объектам программы (документы, списки). В нижней части списка выводится информационная строка: сколько элементов сопоставлено, сколько не сопоставлено.
diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl
index b54447cd0..1add678d5 100644
--- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl
+++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl
@@ -1,11 +1,17 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Для внутреннего использования.
+//
Процедура ВыполнитьСопоставлениеОбъектов(Параметры, АдресВременногоХранилища) Экспорт
ПоместитьВоВременноеХранилище(РезультатСопоставленияОбъектов(Параметры), АдресВременногоХранилища);
КонецПроцедуры
+// Для внутреннего использования.
+//
Функция РезультатСопоставленияОбъектов(Параметры) Экспорт
СопоставлениеОбъектов = Обработки.СопоставлениеОбъектовИнформационныхБаз.Создать();
@@ -68,14 +74,16 @@
Возврат Результат;
КонецФункции
+// Для внутреннего использования.
//
-
Процедура ВыполнитьАвтоматическоеСопоставлениеОбъектов(Параметры, АдресВременногоХранилища) Экспорт
ПоместитьВоВременноеХранилище(РезультатАвтоматическогоСопоставленияОбъектов(Параметры), АдресВременногоХранилища);
КонецПроцедуры
+// Для внутреннего использования.
+//
Функция РезультатАвтоматическогоСопоставленияОбъектов(Параметры) Экспорт
СопоставлениеОбъектов = Обработки.СопоставлениеОбъектовИнформационныхБаз.Создать();
@@ -108,4 +116,6 @@
Возврат Результат;
КонецФункции
+#КонецОбласти
+
#КонецЕсли
diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl
index 0836a0453..6f1d10915 100644
--- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl
+++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl
@@ -20,7 +20,7 @@
// - несопоставленные объекты приемника (этой базы)
//
// Параметры:
-// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибок при работе процедуры
+// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибок при работе процедуры
//
Процедура ВыполнитьСопоставлениеОбъектов(Отказ) Экспорт
@@ -36,9 +36,9 @@
// Формирует таблицу автоматического сопоставления для вывода пользователю.
//
// Параметры:
-// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибок при работе процедуры
-// СписокПолейСопоставления - СписокЗначений - список значений с полями,
-// по которым необходимо выполнить сопоставление объектов
+// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибок при работе процедуры
+// СписокПолейСопоставления - СписокЗначений - список значений с полями,
+// по которым необходимо выполнить сопоставление объектов
//
Процедура ВыполнитьАвтоматическоеСопоставлениеОбъектов(Отказ, СписокПолейСопоставления) Экспорт
@@ -52,7 +52,7 @@
// Список полей сопоставления равен списку используемых полей
//
// Параметры:
-// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
+// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
//
Процедура ВыполнитьАвтоматическоеСопоставлениеПоУмолчанию(Отказ) Экспорт
@@ -73,7 +73,7 @@
// Записи хранятся в РС СоответствияОбъектовИнформационныхБаз.
//
// Параметры:
-// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
+// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
//
Процедура ПрименитьТаблицуНеутвержденныхЗаписей(Отказ) Экспорт
@@ -113,7 +113,7 @@
// Инициализируется свойство ДайджестСопоставления()
//
// Параметры:
-// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
+// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
//
Процедура ПолучитьИнформациюДайджестаСопоставленияОбъектов(Отказ) Экспорт
@@ -143,8 +143,8 @@
// Выполняет загрузку данных из файла сообщения обмена в Информационную Базу только заданных типов объектов
//
// Параметры:
-// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
-// ТаблицыДляЗагрузки - Массив - массив типов, которые необходимо загрузить из сообщения обмена; элемент массива - Строка
+// Отказ - Булево - флаг отказа от обработки; поднимается в случае возникновения ошибки
+// ТаблицыДляЗагрузки - Массив - массив типов, которые необходимо загрузить из сообщения обмена; элемент массива - Строка
//
Процедура ВыполнитьЗагрузкуДанныхВИнформационнуюБазу(Отказ, ТаблицыДляЗагрузки) Экспорт
@@ -178,9 +178,6 @@
// Конструктор обработки
//
-// Параметры:
-// Нет.
-//
Процедура Конструктор() Экспорт
// заполняем список полей таблицы; из этих полей можно выбирать поля для сопоставления и отображения (поля поиска)
@@ -248,7 +245,7 @@
// Таблица сопоставления объектов
//
// Возвращаемое значение:
-// ТаблицаЗначений - Таблица сопоставления объектов.
+// ТаблицаЗначений - Таблица сопоставления объектов.
//
Функция ТаблицаСопоставления() Экспорт
@@ -268,7 +265,7 @@
// Количество объектов текущего типа данных в файле сообщения обмена
//
// Возвращаемое значение:
-// Число - количество объектов текущего типа данных в файле сообщения обмена.
+// Число - количество объектов текущего типа данных в файле сообщения обмена.
//
Функция КоличествоОбъектовВИсточнике() Экспорт
@@ -279,7 +276,7 @@
// Количество объектов текущего типа данных в этой информационной базе
//
// Возвращаемое значение:
-// Число - Количество объектов текущего типа данных в этой информационной базе.
+// Число - Количество объектов текущего типа данных в этой информационной базе.
//
Функция КоличествоОбъектовВПриемнике() Экспорт
@@ -290,7 +287,7 @@
// Количество объектов, которые сопоставлены для текущего типа данных
//
// Возвращаемое значение:
-// Число - Количество объектов, которые сопоставлены для текущего типа данных.
+// Число - Количество объектов, которые сопоставлены для текущего типа данных.
//
Функция КоличествоОбъектовСопоставленных() Экспорт
@@ -301,7 +298,7 @@
// Количество объектов, которые не сопоставлены для текущего типа данных
//
// Возвращаемое значение:
-// Число - Количество объектов, которые не сопоставлены для текущего типа данных.
+// Число - Количество объектов, которые не сопоставлены для текущего типа данных.
//
Функция КоличествоОбъектовНесопоставленных() Экспорт
@@ -312,7 +309,7 @@
// Процент сопоставления объектов для текущего типа данных
//
// Возвращаемое значение:
-// Число - процент сопоставления объектов для текущего типа данных.
+// Число - процент сопоставления объектов для текущего типа данных.
//
Функция ПроцентСопоставленияОбъектов() Экспорт
@@ -1482,39 +1479,25 @@
Функция ОбъединитьТаблицыНеутвержденныхСвязейИАвтоматическогоСопоставления(МенеджерВременныхТаблиц)
ТекстЗапроса = "
- |ВЫБРАТЬ
- |
+ |ВЫБРАТЬ РАЗЛИЧНЫЕ
| // {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
| УникальныйИдентификаторИсточника,
| УникальныйИдентификаторПриемника,
| ТипИсточника,
| ТипПриемника
|ИЗ
- | (
- | ВЫБРАТЬ
+ | ТаблицаНеутвержденныхСвязей
|
- | // {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
- | УникальныйИдентификаторИсточника,
- | УникальныйИдентификаторПриемника,
- | ТипИсточника,
- | ТипПриемника
- | ИЗ
- | ТаблицаНеутвержденныхСвязей
- |
- | ОБЪЕДИНИТЬ
- |
- | ВЫБРАТЬ
- |
- | // {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
- | УникальныйИдентификаторПриемника КАК УникальныйИдентификаторИсточника,
- | УникальныйИдентификаторИсточника КАК УникальныйИдентификаторПриемника,
- | ТипПриемника КАК ТипИсточника,
- | ТипИсточника КАК ТипПриемника
- | ИЗ
- | ТаблицаАвтоматическиСопоставленныхОбъектов
- |
- | ) КАК ВложенныйЗапрос
+ |ОБЪЕДИНИТЬ
|
+ |ВЫБРАТЬ
+ | // {ДАННЫЕ РЕГИСТРА СОПОСТАВЛЕНИЯ}
+ | УникальныйИдентификаторПриемника КАК УникальныйИдентификаторИсточника,
+ | УникальныйИдентификаторИсточника КАК УникальныйИдентификаторПриемника,
+ | ТипПриемника КАК ТипИсточника,
+ | ТипИсточника КАК ТипПриемника
+ |ИЗ
+ | ТаблицаАвтоматическиСопоставленныхОбъектов
|";
Запрос = Новый Запрос;
diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/СопоставлениеОбъектовИнформационныхБаз.mdo b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/СопоставлениеОбъектовИнформационныхБаз.mdo
index c5162d50f..ca24c93ba 100644
--- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/СопоставлениеОбъектовИнформационныхБаз.mdo
+++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/СопоставлениеОбъектовИнформационныхБаз.mdo
@@ -11,6 +11,7 @@
trueDataProcessor.СопоставлениеОбъектовИнформационныхБаз.Form.Форма
+ trueru
diff --git a/SSL/src/DataProcessors/СписокРеспондента/Forms/АрхивАнкет/Form.form b/SSL/src/DataProcessors/СписокРеспондента/Forms/АрхивАнкет/Form.form
index 0d04fe22e..4bbf768a1 100644
--- a/SSL/src/DataProcessors/СписокРеспондента/Forms/АрхивАнкет/Form.form
+++ b/SSL/src/DataProcessors/СписокРеспондента/Forms/АрхивАнкет/Form.form
@@ -4,6 +4,41 @@
ruАрхив анкет
+
+ ГруппаПользовательскихНастроек
+ 21
+ true
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 22
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ auto
+ Auto
+ Auto
+
+ ОтвеченныеАнкеты1
@@ -217,10 +252,10 @@
ОтвеченныеАнкетыСтрокаПоиска
- 21
+ 23ОтвеченныеАнкетыСтрокаПоискаРасширеннаяПодсказка
- 23
+ 25Labeltruetrue
@@ -230,7 +265,7 @@
ОтвеченныеАнкетыСтрокаПоискаКонтекстноеМеню
- 22
+ 24trueОтвеченныеАнкеты
@@ -240,10 +275,10 @@
ОтвеченныеАнкетыСостояниеПросмотра
- 24
+ 26ОтвеченныеАнкетыСостояниеПросмотраРасширеннаяПодсказка
- 26
+ 28Labeltruetrue
@@ -253,7 +288,7 @@
ОтвеченныеАнкетыСостояниеПросмотраКонтекстноеМеню
- 25
+ 27trueViewStatusAddition
@@ -264,10 +299,10 @@
ОтвеченныеАнкетыУправлениеПоиском
- 27
+ 29ОтвеченныеАнкетыУправлениеПоискомРасширеннаяПодсказка
- 29
+ 31Labeltruetrue
@@ -277,7 +312,7 @@
ОтвеченныеАнкетыУправлениеПоискомКонтекстноеМеню
- 28
+ 30trueSearchControlAddition
@@ -342,6 +377,7 @@
truetrue
+ ГруппаПользовательскихНастроек
@@ -365,7 +401,7 @@
RetrySaveValuesYes
- LockOwner
+ DontBlocktruetrueVertical
diff --git a/SSL/src/DataProcessors/СписокРеспондента/Forms/АрхивАнкет/Help/ru.html b/SSL/src/DataProcessors/СписокРеспондента/Forms/АрхивАнкет/Help/ru.html
new file mode 100644
index 000000000..4a56a0a12
--- /dev/null
+++ b/SSL/src/DataProcessors/СписокРеспондента/Forms/АрхивАнкет/Help/ru.html
@@ -0,0 +1,10 @@
+
+
Предназначен для просмотра анкет, работа над которыми была завершена.
+
Открывается с рабочего стола респондента по команде Архив анкет.
+
В списке отображаются анкеты, у которых составитель установил флажок Показывать в архиве анкет.
+
В списке выводится:
+
Анкета - наименование анкеты;
+
Дата заполнения - дата и время окончания работы над анкетой.
Просмотр анкеты
+
Для просмотра анкеты выделите ее в списке, нажмите Выбрать.
+
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/СписокРеспондента/Help/ru.html b/SSL/src/DataProcessors/СписокРеспондента/Help/ru.html
new file mode 100644
index 000000000..4ba6c2b41
--- /dev/null
+++ b/SSL/src/DataProcessors/СписокРеспондента/Help/ru.html
@@ -0,0 +1,7 @@
+
+
Предназначен для просмотра и редактирования анкет, доступных респонденту.
+
После входа в программу респондента для него открывается список Доступные анкеты. В списке выводятся наименования анкет.
+
Если опрос был запланирован с ограничением по времени проведения, то в списке доступных анкет после названия анкеты будет указан срок, до которого необходимо ее заполнить.
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/СписокРеспондента/СписокРеспондента.mdo b/SSL/src/DataProcessors/СписокРеспондента/СписокРеспондента.mdo
index fbe0b28ec..0822e1ab2 100644
--- a/SSL/src/DataProcessors/СписокРеспондента/СписокРеспондента.mdo
+++ b/SSL/src/DataProcessors/СписокРеспондента/СписокРеспондента.mdo
@@ -11,6 +11,11 @@
trueDataProcessor.СписокРеспондента.Form.Форма
+
+
+ ru
+
+ Респондент
@@ -41,6 +46,11 @@
ruАрхив анкет
+
+
+ ru
+
+ PersonalComputerMobileDevice
diff --git a/SSL/src/DataProcessors/ТекущиеДела/Forms/НастройкаПанели/Form.form b/SSL/src/DataProcessors/ТекущиеДела/Forms/НастройкаПанели/Form.form
new file mode 100644
index 000000000..13f41b5af
--- /dev/null
+++ b/SSL/src/DataProcessors/ТекущиеДела/Forms/НастройкаПанели/Form.form
@@ -0,0 +1,1034 @@
+
+
+
+ СтраницыНастроек
+ 1
+
+ СтраницаОтображаемыеДела
+ 3
+
+ ДеревоОтображаемыхДел
+ 7
+ true
+ true
+
+ true
+
+
+ ДеревоОтображаемыхДел
+
+ None
+
+ ГруппаПометкаНазвание
+ 17
+
+ ДеревоОтображаемыхДелПометка
+ 14
+ true
+ true
+
+ true
+
+
+ ДеревоОтображаемыхДел.Пометка
+
+ None
+
+ ДеревоОтображаемыхДелПометкаРасширеннаяПодсказка
+ 16
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДеревоОтображаемыхДелПометкаКонтекстноеМеню
+ 15
+ true
+
+ CheckBoxField
+ Auto
+ true
+ Left
+ true
+
+
+
+ ДеревоОтображаемыхДелПредставление
+ 34
+ true
+ true
+
+ true
+
+
+ ДеревоОтображаемыхДел.Представление
+
+
+ ДеревоОтображаемыхДелПредставлениеРасширеннаяПодсказка
+ 36
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДеревоОтображаемыхДелПредставлениеКонтекстноеМеню
+ 35
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+ None
+
+ ГруппаПометкаНазваниеРасширеннаяПодсказка
+ 18
+ Label
+ true
+ true
+
+ Left
+
+
+ ColumnGroup
+
+ InCell
+ auto
+ true
+
+
+
+ ДеревоОтображаемыхДелКоманднаяПанель
+ 9
+
+ ДеревоОтображаемыхДелУстановитьФлажки
+ 19
+ true
+ true
+
+ true
+
+
+ ДеревоОтображаемыхДелУстановитьФлажкиРасширеннаяПодсказка
+ 20
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.УстановитьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ДеревоОтображаемыхДелСнятьФлажки
+ 21
+ true
+ true
+
+ true
+
+
+ ДеревоОтображаемыхДелСнятьФлажкиРасширеннаяПодсказка
+ 22
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СнятьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ДеревоОтображаемыхДелПереместитьВверх
+ 23
+ true
+ true
+
+ true
+
+
+ ДеревоОтображаемыхДелПереместитьВверхРасширеннаяПодсказка
+ 24
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПереместитьВверх
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ДеревоОтображаемыхДелПереместитьВниз
+ 25
+ true
+ true
+
+ true
+
+
+ ДеревоОтображаемыхДелПереместитьВнизРасширеннаяПодсказка
+ 26
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПереместитьВниз
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+ Left
+
+
+ OnChange
+ ДеревоОтображаемыхДелПриИзменении
+
+
+ ДеревоОтображаемыхДелСтрокаПоиска
+ 51
+
+ ДеревоОтображаемыхДелСтрокаПоискаРасширеннаяПодсказка
+ 53
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДеревоОтображаемыхДелСтрокаПоискаКонтекстноеМеню
+ 52
+ true
+
+ ДеревоОтображаемыхДел
+
+ true
+
+
+
+ ДеревоОтображаемыхДелСостояниеПросмотра
+ 54
+
+ ДеревоОтображаемыхДелСостояниеПросмотраРасширеннаяПодсказка
+ 56
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДеревоОтображаемыхДелСостояниеПросмотраКонтекстноеМеню
+ 55
+ true
+
+ ViewStatusAddition
+ ДеревоОтображаемыхДел
+
+ true
+
+
+
+ ДеревоОтображаемыхДелУправлениеПоиском
+ 57
+
+ ДеревоОтображаемыхДелУправлениеПоискомРасширеннаяПодсказка
+ 59
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДеревоОтображаемыхДелУправлениеПоискомКонтекстноеМеню
+ 58
+ true
+
+ SearchControlAddition
+ ДеревоОтображаемыхДел
+
+ true
+
+
+
+ ДеревоОтображаемыхДелРасширеннаяПодсказка
+ 10
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДеревоОтображаемыхДелКонтекстноеМеню
+ 8
+ true
+
+ Tree
+ true
+ true
+ true
+ MultiRow
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ false
+ false
+ true
+ Auto
+ Auto
+ ExpandAllLevels
+ true
+ true
+ None
+ None
+ None
+ true
+
+
+ ТолькоВажныеДела
+ 31
+ true
+
+ true
+
+
+ ТолькоВажныеДела
+
+ Right
+
+ ТолькоВажныеДелаРасширеннаяПодсказка
+ 33
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТолькоВажныеДелаКонтекстноеМеню
+ 32
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Отображаемые дела
+
+
+ СтраницаОтображаемыеДелаРасширеннаяПодсказка
+ 4
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ СтраницаДругое
+ 5
+
+ ГруппаАвтообновление
+ 40
+
+ ИспользоватьАвтообновление
+ 45
+ true
+ true
+
+ true
+
+
+ ИспользоватьАвтообновление
+
+ Right
+
+ ИспользоватьАвтообновлениеРасширеннаяПодсказка
+ 47
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИспользоватьАвтообновлениеКонтекстноеМеню
+ 46
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ПериодОбновления
+ 42
+ true
+ true
+
+ true
+
+
+ ПериодОбновления
+
+ None
+
+ ПериодОбновленияРасширеннаяПодсказка
+ 44
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПериодОбновленияКонтекстноеМеню
+ 43
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ 4
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+ ru
+ 5
+
+
+ 5
+
+
+
+
+ ru
+ 10
+
+
+ 10
+
+
+
+
+ ru
+ 30
+
+
+ 30
+
+
+ Normal
+
+
+
+ Надпись
+ 48
+
+ ru
+ минут
+
+ true
+ true
+
+ true
+
+
+ НадписьРасширеннаяПодсказка
+ 50
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьКонтекстноеМеню
+ 49
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа автообновление
+
+
+ ru
+ Группа автообновление
+
+ false
+
+ ГруппаАвтообновлениеРасширеннаяПодсказка
+ 41
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Другое
+
+
+ СтраницаДругоеРасширеннаяПодсказка
+ 6
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+ true
+ true
+
+ true
+
+
+ СтраницыНастроекРасширеннаяПодсказка
+ 2
+ Label
+ true
+ true
+
+ Left
+
+
+ Pages
+
+ TabsOnTop
+ Auto
+
+
+ Bottom
+ true
+
+ ФормаКоманднаяПанель
+ -1
+
+ ФормаКнопкаОК
+ 27
+ true
+ true
+
+ true
+
+
+ ФормаКнопкаОКРасширеннаяПодсказка
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.КнопкаОК
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаКнопкаОтмена
+ 29
+ true
+ true
+
+ true
+
+
+ ФормаКнопкаОтменаРасширеннаяПодсказка
+ 30
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.КнопкаОтмена
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ Right
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ LockOwner
+ true
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ ДеревоОтображаемыхДел
+
+ ru
+ Дерево отображаемых дел
+
+ 1
+
+ ValueTree
+
+
+ true
+
+
+ true
+
+
+ Представление
+
+ ru
+ Представление
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ЭтоРаздел
+
+ ru
+ Это раздел
+
+ 2
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Пометка
+
+ ru
+ Пометка
+
+ 3
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Идентификатор
+
+ ru
+ Идентификатор
+
+ 4
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Индекс
+
+ ru
+ Индекс
+
+ 5
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+
+ ТолькоВажныеДела
+
+ ru
+ Только важные дела
+
+ 2
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ПериодОбновления
+ 3
+
+ Number
+
+ 10
+
+
+
+ true
+
+
+ true
+
+
+
+ ИспользоватьАвтообновление
+
+ ru
+ Обновлять автоматически каждые:
+
+ 4
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ АвтообновлениеВключено
+
+ ru
+ Автообновление включено
+
+ 5
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ АвтообновлениеВыключено
+
+ ru
+ Автообновление выключено
+
+ 6
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ УстановитьФлажки
+
+ ru
+ Установить флажки
+
+ 1
+
+ true
+
+
+ StdPicture.CheckAll
+
+
+
+ УстановитьФлажки
+
+
+ Auto
+ Auto
+
+
+ СнятьФлажки
+
+ ru
+ Снять флажки
+
+ 2
+
+ true
+
+
+ StdPicture.UncheckAll
+
+
+
+ СнятьФлажки
+
+
+ Auto
+ Auto
+
+
+ КнопкаОК
+
+ ru
+ ОК
+
+ 3
+
+ ru
+ Кнопка ОК
+
+
+ true
+
+
+
+ КнопкаОК
+
+
+ Auto
+ Auto
+
+
+ КнопкаОтмена
+
+ ru
+ Отмена
+
+ 4
+
+ ru
+ Кнопка отмена
+
+
+ true
+
+
+
+ КнопкаОтмена
+
+
+ Auto
+ Auto
+
+
+ ПереместитьВверх
+
+ ru
+ Переместить вверх
+
+ 5
+
+ true
+
+
+ StdPicture.MoveUp
+
+
+
+ ПереместитьВверх
+
+
+ Auto
+ Auto
+
+
+ ПереместитьВниз
+
+ ru
+ Переместить вниз
+
+ 6
+
+ true
+
+
+ StdPicture.MoveDown
+
+
+
+ ПереместитьВниз
+
+
+ Auto
+ Auto
+
+
+ ТекущиеДела
+
+ String
+
+
+
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ТекущиеДела/Forms/НастройкаПанели/Module.bsl b/SSL/src/DataProcessors/ТекущиеДела/Forms/НастройкаПанели/Module.bsl
new file mode 100644
index 000000000..4483cd137
--- /dev/null
+++ b/SSL/src/DataProcessors/ТекущиеДела/Forms/НастройкаПанели/Module.bsl
@@ -0,0 +1,270 @@
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ Возврат;
+ КонецЕсли;
+
+ НастройкиОтображения = ТекущиеДелаСлужебный.СохраненныеНастройкиОтображения();
+ ЗаполнитьДеревоДел(НастройкиОтображения);
+ УстановитьПорядокРазделов(НастройкиОтображения);
+
+ НастройкиАвтообновления = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиАвтообновления");
+ Если ТипЗнч(НастройкиАвтообновления) = Тип("Структура") Тогда
+ НастройкиАвтообновления.Свойство("АвтообновлениеВключено", ИспользоватьАвтообновление);
+ НастройкиАвтообновления.Свойство("ПериодАвтообновления", ПериодОбновления);
+ Иначе
+ ПериодОбновления = 5;
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовУправленияФормы
+
+&НаКлиенте
+Процедура ДеревоОтображаемыхДелПриИзменении(Элемент)
+
+ Модифицированность = Истина;
+ Если Элемент.ТекущиеДанные.ЭтоРаздел Тогда
+ Для Каждого Дело Из Элемент.ТекущиеДанные.ПолучитьЭлементы() Цикл
+ Дело.Пометка = Элемент.ТекущиеДанные.Пометка;
+ КонецЦикла;
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура КнопкаОК(Команда)
+
+ СохранитьНастройки();
+
+ Если АвтообновлениеВключено Тогда
+ Оповестить("ТекущиеДела_ВключеноАвтообновление");
+ ИначеЕсли АвтообновлениеВыключено Тогда
+ Оповестить("ТекущиеДела_ВыключеноАвтообновление");
+ КонецЕсли;
+
+ Закрыть(Модифицированность);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура КнопкаОтмена(Команда)
+ Закрыть(Ложь);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПереместитьВверх(Команда)
+
+ Модифицированность = Истина;
+ // Перемещение текущей строки на 1 позицию вверх.
+ ТекущаяСтрокаДерева = Элементы.ДеревоОтображаемыхДел.ТекущиеДанные;
+
+ Если Не ТекущаяСтрокаДерева.ЭтоРаздел Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИндексТекущейСтроки = ТекущаяСтрокаДерева.Индекс;
+ Если ИндексТекущейСтроки = 0 Тогда
+ Возврат; // Текущая строка вверху списка, не перемещаем.
+ КонецЕсли;
+ РазделыДерева = ДеревоОтображаемыхДел.ПолучитьЭлементы();
+ РазделыДерева.Сдвинуть(ТекущаяСтрокаДерева.Индекс, -1);
+ ТекущаяСтрокаДерева.Индекс = ИндексТекущейСтроки - 1;
+ // Изменение индекса предыдущей строки.
+ ПредыдущаяСтрока = РазделыДерева.Получить(ИндексТекущейСтроки);
+ ПредыдущаяСтрока.Индекс = ИндексТекущейСтроки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПереместитьВниз(Команда)
+
+ Модифицированность = Истина;
+ // Перемещение текущей строки на 1 позицию вниз.
+ ТекущаяСтрокаДерева = Элементы.ДеревоОтображаемыхДел.ТекущиеДанные;
+
+ Если Не ТекущаяСтрокаДерева.ЭтоРаздел Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИндексТекущейСтроки = ТекущаяСтрокаДерева.Индекс;
+ РазделыДерева = ДеревоОтображаемыхДел.ПолучитьЭлементы();
+ Если ИндексТекущейСтроки = (РазделыДерева.Количество() -1) Тогда
+ Возврат; // Текущая строка внизу списка, не перемещаем.
+ КонецЕсли;
+ РазделыДерева.Сдвинуть(ТекущаяСтрокаДерева.Индекс, 1);
+ ТекущаяСтрокаДерева.Индекс = ИндексТекущейСтроки + 1;
+ // Изменение индекса следующей строки.
+ СледующаяСтрока = РазделыДерева.Получить(ИндексТекущейСтроки);
+ СледующаяСтрока.Индекс = ИндексТекущейСтроки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СнятьФлажки(Команда)
+
+ Модифицированность = Истина;
+ Для Каждого СтрокаРаздела Из ДеревоОтображаемыхДел.ПолучитьЭлементы() Цикл
+ СтрокаРаздела.Пометка = Ложь;
+ Для Каждого СтрокаДела Из СтрокаРаздела.ПолучитьЭлементы() Цикл
+ СтрокаДела.Пометка = Ложь;
+ КонецЦикла;
+ КонецЦикла;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьФлажки(Команда)
+
+ Модифицированность = Истина;
+ Для Каждого СтрокаРаздела Из ДеревоОтображаемыхДел.ПолучитьЭлементы() Цикл
+ СтрокаРаздела.Пометка = Истина;
+ Для Каждого СтрокаДела Из СтрокаРаздела.ПолучитьЭлементы() Цикл
+ СтрокаДела.Пометка = Истина;
+ КонецЦикла;
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+&НаСервере
+Процедура ЗаполнитьДеревоДел(НастройкиОтображения)
+
+ ТекущиеДела = ПолучитьИзВременногоХранилища(Параметры.ТекущиеДела);
+ ДеревоДел = РеквизитФормыВЗначение("ДеревоОтображаемыхДел");
+ ТекущийРаздел = "";
+ Индекс = 0;
+
+ Для Каждого Дело Из ТекущиеДела Цикл
+
+ Если Дело.ЭтоРаздел
+ И ТекущийРаздел <> Дело.ИдентификаторВладельца Тогда
+ СтрокаДерева = ДеревоДел.Строки.Добавить();
+ СтрокаДерева.Представление = Дело.ПредставлениеРаздела;
+ СтрокаДерева.Идентификатор = Дело.ИдентификаторВладельца;
+ СтрокаДерева.ЭтоРаздел = Истина;
+ СтрокаДерева.Пометка = Истина;
+ СтрокаДерева.Индекс = Индекс;
+
+ Если НастройкиОтображения <> Неопределено Тогда
+ ВидимостьРаздела = НастройкиОтображения.ВидимостьРазделов[СтрокаДерева.Идентификатор];
+ Если ВидимостьРаздела <> Неопределено Тогда
+ СтрокаДерева.Пометка = ВидимостьРаздела;
+ КонецЕсли;
+ КонецЕсли;
+ Индекс = Индекс + 1;
+
+ ИначеЕсли Не Дело.ЭтоРаздел Тогда
+ Продолжить;
+ КонецЕсли;
+
+ СтрокаДела = СтрокаДерева.Строки.Добавить();
+ СтрокаДела.Представление = Дело.Представление;
+ СтрокаДела.Идентификатор = Дело.Идентификатор;
+ СтрокаДела.ЭтоРаздел = Ложь;
+ СтрокаДела.Пометка = Истина;
+
+ Если НастройкиОтображения <> Неопределено Тогда
+ ВидимостьДела = НастройкиОтображения.ВидимостьДел[СтрокаДела.Идентификатор];
+ Если ВидимостьДела <> Неопределено Тогда
+ СтрокаДела.Пометка = ВидимостьДела;
+ КонецЕсли;
+ КонецЕсли;
+
+ ТекущийРаздел = Дело.ИдентификаторВладельца;
+
+ КонецЦикла;
+
+ ЗначениеВРеквизитФормы(ДеревоДел, "ДеревоОтображаемыхДел");
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СохранитьНастройки()
+
+ СтарыеНастройкиОтображения = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиОтображения");
+ СвернутыеРазделы = Неопределено;
+ Если ТипЗнч(СтарыеНастройкиОтображения) = Тип("Структура") Тогда
+ СтарыеНастройкиОтображения.Свойство("СвернутыеРазделы", СвернутыеРазделы);
+ КонецЕсли;
+
+ Если СвернутыеРазделы = Неопределено Тогда
+ СвернутыеРазделы = Новый Соответствие;
+ КонецЕсли;
+
+ // Сохранение положения и видимости разделов.
+ ВидимостьРазделов = Новый Соответствие;
+ ВидимостьДел = Новый Соответствие;
+
+ ДеревоДел = РеквизитФормыВЗначение("ДеревоОтображаемыхДел");
+ Для Каждого Раздел Из ДеревоДел.Строки Цикл
+ ВидимостьРазделов.Вставить(Раздел.Идентификатор, Раздел.Пометка);
+ Для Каждого Дело Из Раздел.Строки Цикл
+ ВидимостьДел.Вставить(Дело.Идентификатор, Дело.Пометка);
+ КонецЦикла;
+ КонецЦикла;
+
+ Результат = Новый Структура;
+ Результат.Вставить("ДеревоДел", ДеревоДел);
+ Результат.Вставить("ВидимостьРазделов", ВидимостьРазделов);
+ Результат.Вставить("ВидимостьДел", ВидимостьДел);
+ Результат.Вставить("СвернутыеРазделы", СвернутыеРазделы);
+
+ ХранилищеОбщихНастроек.Сохранить("ТекущиеДела", "НастройкиОтображения", Результат);
+
+ // Сохранение настроек автообновления.
+ НастройкиАвтообновления = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиАвтообновления");
+
+ Если НастройкиАвтообновления = Неопределено Тогда
+ НастройкиАвтообновления = Новый Структура;
+ Иначе
+ Если ИспользоватьАвтообновление Тогда
+ АвтообновлениеВключено = НастройкиАвтообновления.АвтообновлениеВключено <> ИспользоватьАвтообновление;
+ Иначе
+ АвтообновлениеВыключено = НастройкиАвтообновления.АвтообновлениеВключено <> ИспользоватьАвтообновление;
+ КонецЕсли;
+ КонецЕсли;
+
+ НастройкиАвтообновления.Вставить("АвтообновлениеВключено", ИспользоватьАвтообновление);
+ НастройкиАвтообновления.Вставить("ПериодАвтообновления", ПериодОбновления);
+
+ ХранилищеОбщихНастроек.Сохранить("ТекущиеДела", "НастройкиАвтообновления", НастройкиАвтообновления);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура УстановитьПорядокРазделов(НастройкиОтображения)
+
+ Если НастройкиОтображения = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ДеревоДел = РеквизитФормыВЗначение("ДеревоОтображаемыхДел");
+ Разделы = ДеревоДел.Строки;
+ СохраненноеДеревоДел = НастройкиОтображения.ДеревоДел;
+ Для Каждого СтрокаРаздела Из Разделы Цикл
+ СохраненныйРаздел = СохраненноеДеревоДел.Строки.Найти(СтрокаРаздела.Идентификатор, "Идентификатор");
+ Если СохраненныйРаздел = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ СтрокаРаздела.Индекс = СохраненныйРаздел.Индекс;
+ КонецЦикла;
+
+ Разделы.Сортировать("Индекс возр");
+ ЗначениеВРеквизитФормы(ДеревоДел, "ДеревоОтображаемыхДел");
+
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Form.form b/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Form.form
new file mode 100644
index 000000000..dea2756ec
--- /dev/null
+++ b/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Form.form
@@ -0,0 +1,478 @@
+
+
+
+ ru
+ Текущие дела
+
+
+ СтраницаДела
+ 14
+ true
+
+ true
+
+
+ СтраницаДелаРасширеннаяПодсказка
+ 15
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ СтраницаДлительнаяОперация
+ 9
+
+ КартинкаДлительнаяОперация
+ 11
+ true
+ true
+
+ true
+
+
+ КартинкаДлительнаяОперацияРасширеннаяПодсказка
+ 13
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаДлительнаяОперацияКонтекстноеМеню
+ 12
+ true
+
+ 6
+ true
+ 3
+ true
+
+
+ CommonPicture.ДлительнаяОперация48
+
+
+
+ true
+ true
+
+ true
+
+
+ СтраницаДлительнаяОперацияРасширеннаяПодсказка
+ 10
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ СтраницаТекущихДелНет
+ 16
+
+ КартинкаИнформация
+ 18
+ true
+ true
+
+ true
+
+
+ КартинкаИнформацияРасширеннаяПодсказка
+ 20
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаИнформацияКонтекстноеМеню
+ 19
+ true
+
+ 4
+ true
+ 2
+ true
+
+
+ CommonPicture.Информация32
+
+
+
+
+ ТекстИнформация
+ 21
+
+ ru
+ Текущих дел нет.
+
+ true
+ true
+
+ true
+
+
+ ТекстИнформацияРасширеннаяПодсказка
+ 23
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТекстИнформацияКонтекстноеМеню
+ 22
+ true
+
+ Label
+ true
+ 2
+ true
+
+ Left
+
+
+ true
+
+ true
+
+
+ СтраницаТекущихДелНетРасширеннаяПодсказка
+ 17
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ Bottom
+ true
+
+ ФормаКоманднаяПанель
+ -1
+
+ ФормаНастроить
+ 1
+ true
+ true
+
+ true
+
+
+ ФормаНастроитьРасширеннаяПодсказка
+ 2
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Настроить
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаОбновить
+ 3
+ true
+ true
+
+ true
+
+
+ ФормаОбновитьРасширеннаяПодсказка
+ 4
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Обновить
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ Right
+
+
+ NotificationProcessing
+ ОбработкаОповещения
+
+
+ OnOpen
+ ПриОткрытии
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+
+ OnClose
+ ПриЗакрытии
+
+ DontBlock
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ ПараметрыДел
+
+ ru
+ Параметры дел
+
+ 2
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+ Идентификатор
+
+ ru
+ Идентификатор
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Форма
+
+ ru
+ Форма
+
+ 2
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ПараметрыФормы
+
+ ru
+ Параметры формы
+
+ 3
+
+
+ true
+
+
+ true
+
+
+
+
+ ТекущиеДелаВХранилище
+
+ ru
+ Текущие дела в хранилище
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ НастройкиАвтообновления
+
+ ru
+ Настройки автообновления
+
+ 3
+
+
+ true
+
+
+ true
+
+
+
+ ИнтерфейсТакси
+
+ ru
+ Интерфейс такси
+
+ 4
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ИдентификаторЗадания
+
+ ru
+ Идентификатор задания
+
+ 5
+
+
+ true
+
+
+ true
+
+
+
+ ТолькоОбновлениеДел
+
+ ru
+ Только обновление дел
+
+ 6
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Настроить
+
+ ru
+ Настроить
+
+ 1
+
+ ru
+ Настроить список дел
+
+
+ true
+
+
+ CommonPicture.ПрочиеПользовательскиеНастройки
+
+
+
+ Настроить
+
+
+ Text
+ Auto
+ Auto
+
+
+ Обновить
+
+ ru
+ Обновить
+
+ 2
+
+ ru
+ Обновить список дел
+
+
+ true
+
+
+ StdPicture.Refresh
+
+
+
+ Обновить
+
+
+ Auto
+ Auto
+
+
+
+
+
+
diff --git a/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Module.bsl
new file mode 100644
index 000000000..f0d1d8fe7
--- /dev/null
+++ b/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Module.bsl
@@ -0,0 +1,760 @@
+&НаСервере
+Перем ВыводимыеДелаИРазделы;
+
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Не ОбщегоНазначения.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИнтерфейсТакси = (ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Такси);
+
+ ЗапуститьФоновоеЗаданиеНаСервере();
+
+ ЗагрузитьНастройкиАвтообновления();
+
+ Элементы.ФормаНастроить.Доступность = Ложь;
+ Элементы.ФормаОбновить.Доступность = Ложь;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриОткрытии(Отказ)
+
+ ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 2);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
+
+ Если ИмяСобытия = "ТекущиеДела_ВключеноАвтообновление" Тогда
+ ЗагрузитьНастройкиАвтообновления();
+ ПериодОбновления = НастройкиАвтообновления.ПериодАвтообновления * 60;
+ ПодключитьОбработчикОжидания("ОбновитьТекущиеДелаАвтоматически", ПериодОбновления);
+ ИначеЕсли ИмяСобытия = "ТекущиеДела_ВыключеноАвтообновление" Тогда
+ ОтключитьОбработчикОжидания("ОбновитьТекущиеДелаАвтоматически");
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриЗакрытии()
+ ДействияПриЗакрытииПанелиТекущихДел();
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовУправленияФормы
+
+&НаКлиенте
+Процедура Подключаемый_ОбработатьНажатиеНаГиперссылку(Элемент, СтандартнаяОбработка)
+
+ СтандартнаяОбработка = Ложь;
+
+ ПараметрыОтбора = Новый Структура();
+ ПараметрыОтбора.Вставить("Идентификатор", Элемент.Имя);
+ ПараметрыДела = ПараметрыДел.НайтиСтроки(ПараметрыОтбора)[0];
+
+ ОткрытьФорму(ПараметрыДела.Форма, ПараметрыДела.ПараметрыФормы);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ОбработкаНажатияНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
+
+ СтандартнаяОбработка = Ложь;
+
+ ПараметрыОтбора = Новый Структура();
+ ПараметрыОтбора.Вставить("Идентификатор", НавигационнаяСсылка);
+ ПараметрыДела = ПараметрыДел.НайтиСтроки(ПараметрыОтбора)[0];
+
+ ОткрытьФорму(ПараметрыДела.Форма, ПараметрыДела.ПараметрыФормы);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Подключаемый_ОбработатьНажатиеНаКартинку(Элемент)
+
+#Если ВебКлиент Тогда
+ ПереключитьКартинкуВВебКлиенте(Элемент.Имя);
+ Возврат;
+#КонецЕсли
+
+ ИмяГруппыРаздела = СтрЗаменить(Элемент.Имя, "Картинка", "Группа");
+
+ Если Элемент.Картинка = БиблиотекаКартинок.СтрелкаВниз Тогда
+ Элемент.Картинка = БиблиотекаКартинок.СтрелкаВправо;
+ Элементы[ИмяГруппыРаздела].Видимость = Ложь;
+ Иначе
+ Элемент.Картинка = БиблиотекаКартинок.СтрелкаВниз;
+ Элементы[ИмяГруппыРаздела].Видимость = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура Настроить(Команда)
+
+ ОбработчикРезультата = Новый ОписаниеОповещения("ПрименитьНастройкиПанелиДел", ЭтотОбъект);
+
+ ПараметрыФормы = Новый Структура;
+ ПараметрыФормы.Вставить("ТекущиеДела", ТекущиеДелаВХранилище);
+ ОткрытьФорму("Обработка.ТекущиеДела.Форма.НастройкаПанели", ПараметрыФормы,,,,,ОбработчикРезультата);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура Обновить(Команда)
+ ЗапуститьОбновлениеСпискаТекущихДел();
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Процедуры и функции формирования списка дел пользователя
+
+&НаКлиенте
+Процедура ОбновитьТекущиеДелаАвтоматически()
+ ЗапуститьОбновлениеСпискаТекущихДел(Истина);
+КонецПроцедуры
+
+&НаСервере
+Процедура ОбновитьСписокТекущихДел(ТекущиеДела)
+
+ ТекущиеДела.Сортировать("ЭтоРаздел Убыв, ПредставлениеРаздела Возр, Важное Убыв");
+
+ СохраненныеНастройкиОтображения = ТекущиеДелаСлужебный.СохраненныеНастройкиОтображения();
+ Если СохраненныеНастройкиОтображения = Неопределено Тогда
+ ЗаданнаяВидимостьРазделов = Новый Соответствие;
+ ЗаданнаяВидимостьДел = Новый Соответствие;
+ Иначе
+ ЗаданнаяВидимостьРазделов = СохраненныеНастройкиОтображения.ВидимостьРазделов;
+ ЗаданнаяВидимостьДел = СохраненныеНастройкиОтображения.ВидимостьДел;
+ КонецЕсли;
+
+ ТекущийРаздел = "";
+ Для Каждого Дело Из ТекущиеДела Цикл
+
+ Если Дело.ЭтоРаздел Тогда
+ // Сбрасываем видимость раздела. Ее установку выполняем из самого дела.
+ ИмяРаздела = "ОбщаяГруппа" + Дело.ИдентификаторВладельца;
+ Если ИмяРаздела <> ТекущийРаздел Тогда
+ ЭлементРодитель = Элементы.Найти(ИмяРаздела);
+ Если ЭлементРодитель = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ ЭлементРодитель.Видимость = Ложь;
+ КонецЕсли;
+ // Обновление дела.
+ ОбновитьДело(Дело, ЭлементРодитель, ЗаданнаяВидимостьРазделов, ЗаданнаяВидимостьДел);
+ ТекущийРаздел = ИмяРаздела;
+ Иначе
+ // Дочерние дела создаем заново.
+ СоздатьДочернееДело(Дело);
+ КонецЕсли;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ОбновитьДело(Дело, РодительДела, ЗаданнаяВидимостьРазделов, ЗаданнаяВидимостьДел)
+
+ ВключенаВидимостьРаздела = ЗаданнаяВидимостьРазделов[Дело.ИдентификаторВладельца];
+ Если ВключенаВидимостьРаздела = Неопределено Тогда
+ ВключенаВидимостьРаздела = Истина;
+ КонецЕсли;
+ ВключенаВидимостьДела = ЗаданнаяВидимостьДел[Дело.Идентификатор];
+ Если ВключенаВидимостьДела = Неопределено Тогда
+ ВключенаВидимостьДела = Истина;
+ КонецЕсли;
+
+ Элемент = Элементы.Найти(Дело.Идентификатор);
+ Если Элемент = Неопределено Тогда
+ // Дела нету в списке, вероятно оно появилось после включения функциональной опции,
+ // в таком случае добавим его.
+ СоздатьДело(Дело, РодительДела, ВключенаВидимостьДела);
+ ЗаполнитьПараметрыДела(Дело);
+ Возврат;
+ КонецЕсли;
+
+ ЗаголовокДела = Дело.Представление + ?(Дело.Количество <> 0," (" + Дело.Количество + ")", "");
+ Элемент.Заголовок = ЗаголовокДела;
+ Если Дело.Важное Тогда
+ Элемент.ЦветТекста = ЦветаСтиля.ПросроченныеДанныеЦвет;
+ КонецЕсли;
+ Элемент.Видимость = Дело.ЕстьДела И ВключенаВидимостьДела;
+ // Сброс дочерних дел, если они есть. Их обновление будет дальше.
+ Элемент.РасширеннаяПодсказка.Заголовок = "";
+
+ // Установка подсказки, если задана
+ Если ЗначениеЗаполнено(Дело.Подсказка) Тогда
+ Отступ = Символы.НПП+Символы.НПП+Символы.НПП;
+ Подсказка = Новый ФорматированнаяСтрока(Отступ + Дело.Подсказка);
+ Элемент.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
+ Элемент.РасширеннаяПодсказка.Шрифт = Новый Шрифт(, 8);
+ Элемент.РасширеннаяПодсказка.РастягиватьПоГоризонтали = Истина;
+ Элемент.РасширеннаяПодсказка.Заголовок = Подсказка;
+ КонецЕсли;
+
+ // Установка видимости раздела.
+ Если Элемент.Видимость И ВключенаВидимостьРаздела Тогда
+ ЗаголовокРаздела = СтрЗаменить(РодительДела.Имя, "ОбщаяГруппа", "ЗаголовокРаздела");
+ РодительДела.Видимость = Истина;
+ ВыводимыеДелаИРазделы.Вставить(ЗаголовокРаздела);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СформироватьСписокТекущихДел(ТекущиеДела)
+
+ СохраненныеНастройкиОтображения = ТекущиеДелаСлужебный.СохраненныеНастройкиОтображения();
+ Если СохраненныеНастройкиОтображения = Неопределено Тогда
+ ЗаданнаяВидимостьРазделов = Новый Соответствие;
+ ЗаданнаяВидимостьДел = Новый Соответствие;
+ Иначе
+ СохраненныеНастройкиОтображения.Свойство("ВидимостьРазделов", ЗаданнаяВидимостьРазделов);
+ СохраненныеНастройкиОтображения.Свойство("ВидимостьДел", ЗаданнаяВидимостьДел);
+ КонецЕсли;
+
+ СвернутыеРазделы = СвернутыеРазделы();
+
+ ТекущиеДела.Сортировать("ЭтоРаздел Убыв, ПредставлениеРаздела Возр, Важное Убыв");
+
+ // Если пользователь не настраивал положение разделов в списке дел, то
+ // они сортируются согласно порядку, определенному в процедуре ПриОпределенииПорядкаРазделовКомандногоИнтерфейса.
+ Если СохраненныеНастройкиОтображения = Неопределено Тогда
+ УстановитьНачальныйПорядокРазделов(ТекущиеДела);
+ КонецЕсли;
+
+ ТекущаяГруппа = "";
+ ТекущаяОбщаяГруппа = "";
+ Для Каждого Дело Из ТекущиеДела Цикл
+
+ Если Дело.ЭтоРаздел Тогда
+
+ // Создание общей группы раздела.
+ ИмяОбщейГруппы = "ОбщаяГруппа" + Дело.ИдентификаторВладельца;
+ Если ТекущаяОбщаяГруппа <> ИмяОбщейГруппы Тогда
+ ТекущаяОбщаяГруппа = ИмяОбщейГруппы;
+
+ РазделСвернут = СвернутыеРазделы[Дело.ИдентификаторВладельца];
+ Если РазделСвернут = Неопределено Тогда
+ СвернутыеРазделы.Вставить(Дело.ИдентификаторВладельца, Ложь);
+ КонецЕсли;
+
+ ВключенаВидимостьРаздела = ЗаданнаяВидимостьРазделов[Дело.ИдентификаторВладельца];
+ Если ВключенаВидимостьРаздела = Неопределено Тогда
+ ВключенаВидимостьРаздела = Истина;
+ КонецЕсли;
+
+ ОбщаяГруппа = Группа(ИмяОбщейГруппы,, "ОбщаяГруппа");
+ ОбщаяГруппа.Видимость = Ложь;
+ // Создание группы заголовка раздела.
+ ИмяГруппыЗаголовка = "ЗаголовокРаздела" + Дело.ИдентификаторВладельца;
+ ГруппаЗаголовка = Группа(ИмяГруппыЗаголовка, ОбщаяГруппа, "ЗаголовокРаздела");
+ // Создание заголовка раздела.
+ СоздатьЗаголовок(Дело, ГруппаЗаголовка, РазделСвернут);
+ КонецЕсли;
+
+ // Создание группы дел.
+ ИмяГруппы = "Группа" + Дело.ИдентификаторВладельца;
+ Если ТекущаяГруппа <> ИмяГруппы Тогда
+ ТекущаяГруппа = ИмяГруппы;
+ Группа = Группа(ИмяГруппы, ОбщаяГруппа);
+ Если РазделСвернут = Истина Тогда
+ Группа.Видимость = Ложь;
+ КонецЕсли;
+ КонецЕсли;
+
+ ВключенаВидимостьДела = ЗаданнаяВидимостьДел[Дело.Идентификатор];
+ Если ВключенаВидимостьДела = Неопределено Тогда
+ ВключенаВидимостьДела = Истина;
+ КонецЕсли;
+
+ Если ВключенаВидимостьРаздела И ВключенаВидимостьДела И Дело.ЕстьДела Тогда
+ ВыводимыеДелаИРазделы.Вставить(ИмяГруппыЗаголовка);
+ ОбщаяГруппа.Видимость = Истина;
+ КонецЕсли;
+
+ СоздатьДело(Дело, Группа, ВключенаВидимостьДела);
+
+ Иначе
+ СоздатьДочернееДело(Дело);
+ КонецЕсли;
+
+ ЗаполнитьПараметрыДела(Дело);
+
+ КонецЦикла;
+
+ СохранитьСвернутыеРазделы(СвернутыеРазделы);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура УпорядочитьСписокТекущихДел()
+
+ СохраненныеНастройкиОтображения = ТекущиеДелаСлужебный.СохраненныеНастройкиОтображения();
+ Если СохраненныеНастройкиОтображения = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ СохраненноеДеревоДел = СохраненныеНастройкиОтображения.ДеревоДел;
+ ЭтоПервыйРаздел = Истина;
+ Для Каждого СтрокаРаздел Из СохраненноеДеревоДел.Строки Цикл
+ Если Не ЭтоПервыйРаздел Тогда
+ ПереместитьРаздел(СтрокаРаздел);
+ КонецЕсли;
+ ЭтоПервыйРаздел = Ложь;
+ КонецЦикла;
+
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// Фоновое обновление
+
+&НаСервере
+Процедура ЗапуститьФоновоеЗаданиеНаСервере(ВыполнениеПрервано = Ложь)
+
+ Если МонопольныйРежим() Тогда
+ ВыполнениеПрервано = Истина;
+ Возврат;
+ КонецЕсли;
+
+ ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
+ ИдентификаторЗадания = Неопределено;
+
+ ТекущиеДелаВХранилище = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
+
+ ПараметрыПроцедуры = Новый Массив;
+ ПараметрыПроцедуры.Добавить(ТекущиеДелаВХранилище);
+
+ ПараметрыЗадания = Новый Массив;
+ ПараметрыЗадания.Добавить("ТекущиеДелаСлужебный.СписокТекущихДелПользователя");
+ ПараметрыЗадания.Добавить(ПараметрыПроцедуры);
+
+ НаименованиеЗадания = НСтр("ru = 'Обновление списка текущих дел'");
+
+ Задание = ФоновыеЗадания.Выполнить("РаботаВБезопасномРежиме.ВыполнитьМетодКонфигурации", ПараметрыЗадания,, НаименованиеЗадания);
+
+ ИдентификаторЗадания = Задание.УникальныйИдентификатор;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗагрузитьТекущиеДела()
+
+ ТекущиеДела = ПолучитьИзВременногоХранилища(ТекущиеДелаВХранилище);
+ ВыводимыеДелаИРазделы = Новый Структура;
+ Если ТолькоОбновлениеДел Тогда
+ ОбновитьСписокТекущихДел(ТекущиеДела);
+ Иначе
+ СформироватьСписокТекущихДел(ТекущиеДела);
+ КонецЕсли;
+
+ Если ВыводимыеДелаИРазделы.Количество() = 0 Тогда
+ Элементы.СтраницаДела.Видимость = Ложь;
+ Элементы.СтраницаТекущихДелНет.Видимость = Истина;
+ Иначе
+ Элементы.СтраницаДела.Видимость = Истина;
+ Элементы.СтраницаТекущихДелНет.Видимость = Ложь;
+ // Если выводятся дела только из одного раздела - скрываем его заголовок.
+ Если ВыводимыеДелаИРазделы.Количество() = 1 Тогда
+ ОтображатьРаздел = Ложь;
+ Иначе
+ ОтображатьРаздел = Истина;
+ КонецЕсли;
+ Для Каждого ЭлементЗаголовокРаздела Из ВыводимыеДелаИРазделы Цикл
+ ЗаголовокРаздела = ЭлементЗаголовокРаздела.Ключ;
+ Элементы[ЗаголовокРаздела].Видимость = ОтображатьРаздел;
+ КонецЦикла;
+ КонецЕсли;
+
+ УпорядочитьСписокТекущихДел();
+
+КонецПроцедуры
+
+&НаСервере
+Функция ЗаданиеВыполнено(ИдентификаторЗадания)
+
+ ЗаданиеВыполненоУспешно = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
+ Если ЗаданиеВыполненоУспешно = Истина Тогда
+ ЗагрузитьТекущиеДела();
+ КонецЕсли;
+ Возврат ЗаданиеВыполненоУспешно;
+
+КонецФункции
+
+&НаКлиенте
+Процедура Подключаемый_ПроверитьВыполнениеЗадания()
+
+ ЗаданиеВыполненоУспешно = Ложь;
+ Попытка
+ Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда
+ ЗаданиеВыполненоУспешно = Истина;
+ Элементы.СтраницаДела.Видимость = Истина;
+ Элементы.СтраницаДлительнаяОперация.Видимость = Ложь;
+ ОтключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания");
+ КонецЕсли;
+ Исключение
+ ОтключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания");
+ Элементы.СтраницаДела.Видимость = Истина;
+ Элементы.СтраницаДлительнаяОперация.Видимость = Ложь;
+ КонецПопытки;
+
+ Если ЗаданиеВыполненоУспешно Тогда
+ Элементы.ФормаНастроить.Доступность = Истина;
+ Элементы.ФормаОбновить.Доступность = Истина;
+ Если НастройкиАвтообновления.Свойство("АвтообновлениеВключено")
+ И НастройкиАвтообновления.АвтообновлениеВключено Тогда
+ ПериодОбновления = НастройкиАвтообновления.ПериодАвтообновления * 60;
+ ПодключитьОбработчикОжидания("ОбновитьТекущиеДелаАвтоматически", ПериодОбновления);
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+////////////////////////////////////////////////////////////////////////////////
+// Вспомогательные процедуры и функции
+
+&НаКлиенте
+Процедура ЗапуститьОбновлениеСпискаТекущихДел(АвтоматическоеОбновление = Ложь)
+
+ // Если обновление инициировано вручную - отключаем обработчик автоматического обновления дел.
+ // Он будет подключен заново после завершения "ручного" обновления.
+ Если Не АвтоматическоеОбновление Тогда
+ ОтключитьОбработчикОжидания("ОбновитьТекущиеДелаАвтоматически");
+ КонецЕсли;
+
+ ВыполнениеПрервано = Ложь;
+ ТолькоОбновлениеДел = Истина;
+ ЗапуститьФоновоеЗаданиеНаСервере(ВыполнениеПрервано);
+ Если ВыполнениеПрервано Тогда
+ Возврат;
+ КонецЕсли;
+
+ Элементы.СтраницаДела.Видимость = Ложь;
+ Элементы.СтраницаДлительнаяОперация.Видимость = Истина;
+ Элементы.СтраницаТекущихДелНет.Видимость = Ложь;
+ Элементы.ФормаНастроить.Доступность = Ложь;
+ Элементы.ФормаОбновить.Доступность = Ложь;
+
+ ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 2);
+
+КонецПроцедуры
+
+&НаСервере
+Функция Группа(ИмяГруппы, Родитель = Неопределено, ТипГруппы = "")
+
+ Если Родитель = Неопределено Тогда
+ Родитель = Элементы.СтраницаДела;
+ КонецЕсли;
+
+ Группа = Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"), Родитель);
+ Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
+ Группа.Отображение = ОтображениеОбычнойГруппы.Нет;
+
+ Если ТипГруппы = "ЗаголовокРаздела" Тогда
+ Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
+ Иначе
+ Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
+ КонецЕсли;
+
+ Группа.ОтображатьЗаголовок = Ложь;
+
+ Возврат Группа;
+
+КонецФункции
+
+&НаСервере
+Процедура СоздатьДело(Дело, Группа, ВключенаВидимостьДела)
+
+ ЗаголовокДела = Дело.Представление + ?(Дело.Количество <> 0," (" + Дело.Количество + ")", "");
+
+ Элемент = Элементы.Добавить(Дело.Идентификатор, Тип("ДекорацияФормы"), Группа);
+ Элемент.Вид = ВидДекорацииФормы.Надпись;
+ Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево;
+ Элемент.Заголовок = ЗаголовокДела;
+ Элемент.Видимость = (ВключенаВидимостьДела И Дело.ЕстьДела);
+ Элемент.Гиперссылка = ЗначениеЗаполнено(Дело.Форма);
+ Элемент.УстановитьДействие("Нажатие", "Подключаемый_ОбработатьНажатиеНаГиперссылку");
+
+ Если Дело.Важное Тогда
+ Элемент.ЦветТекста = ЦветаСтиля.ПросроченныеДанныеЦвет;
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(Дело.Подсказка) Тогда
+ Отступ = Символы.НПП+Символы.НПП+Символы.НПП;
+ Подсказка = Новый ФорматированнаяСтрока(Отступ + Дело.Подсказка);
+ Элемент.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
+ Элемент.РасширеннаяПодсказка.Шрифт = Новый Шрифт(, 8);
+ Элемент.РасширеннаяПодсказка.РастягиватьПоГоризонтали = Истина;
+ Элемент.РасширеннаяПодсказка.ЦветТекста= ЦветаСтиля.ЗаголовокДелаЦвет;
+ Элемент.РасширеннаяПодсказка.Заголовок = Подсказка;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СоздатьЗаголовок(Дело, Группа, РазделСвернут)
+
+ // Создание картинки сворачивания/разворачивания раздела.
+ Элемент = Элементы.Добавить("Картинка" + Дело.ИдентификаторВладельца, Тип("ДекорацияФормы"), Группа);
+ Элемент.Вид = ВидДекорацииФормы.Картинка;
+ Элемент.Гиперссылка = Истина;
+
+ Если РазделСвернут = Истина Тогда
+ Элемент.Картинка = БиблиотекаКартинок.СтрелкаВправо;
+ Иначе
+ Элемент.Картинка = БиблиотекаКартинок.СтрелкаВниз;
+ КонецЕсли;
+
+ Элемент.РазмерКартинки = РазмерКартинки.АвтоРазмер;
+ Элемент.Ширина = 2;
+ Элемент.Высота = 1;
+ Элемент.УстановитьДействие("Нажатие", "Подключаемый_ОбработатьНажатиеНаКартинку");
+ Элемент.Подсказка = НСтр("ru = 'Развернуть/свернуть раздел'");
+
+ // Создание заголовка раздела.
+ Элемент = Элементы.Добавить("Заголовок" + Дело.ИдентификаторВладельца, Тип("ДекорацияФормы"), Группа);
+ Элемент.Вид = ВидДекорацииФормы.Надпись;
+ Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево;
+ Элемент.Заголовок = Дело.ПредставлениеРаздела;
+ Если ИнтерфейсТакси Тогда
+ Элемент.Шрифт = Новый Шрифт("ШрифтДиалоговИМеню", 12);
+ Иначе
+ Элемент.Шрифт = Новый Шрифт(,, Истина);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СоздатьДочернееДело(Дело)
+
+ Если Не Дело.ЕстьДела Тогда
+ Возврат;
+ КонецЕсли;
+
+ ЭлементДелоВладелец = Элементы.Найти(Дело.ИдентификаторВладельца);
+ Если ЭлементДелоВладелец = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ ЭлементДелоВладелец.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
+ ЭлементДелоВладелец.РасширеннаяПодсказка.Шрифт = Новый Шрифт(, 8);
+ ЭлементДелоВладелец.РасширеннаяПодсказка.РастягиватьПоГоризонтали = Истина;
+
+ ЗаголовокПодчиненногоДела = ЗаголовокПодчиненногоДела(ЭлементДелоВладелец.РасширеннаяПодсказка.Заголовок, Дело);
+
+ ЭлементДелоВладелец.РасширеннаяПодсказка.Заголовок = ЗаголовокПодчиненногоДела;
+ ЭлементДелоВладелец.РасширеннаяПодсказка.УстановитьДействие("ОбработкаНавигационнойСсылки", "Подключаемый_ОбработкаНажатияНавигационнойСсылки");
+
+КонецПроцедуры
+
+&НаСервере
+Функция ЗаголовокПодчиненногоДела(ТекущийЗаголовок, Дело)
+
+ ТекущийЗаголовокПустой = Не ЗначениеЗаполнено(ТекущийЗаголовок);
+ ЗаголовокДела = Дело.Представление + ?(Дело.Количество <> 0," (" + Дело.Количество + ")", "");
+ СтрокаЗаголовкаДела = ЗаголовокДела;
+ Если Дело.Важное Тогда
+ ЦветДела = ЦветаСтиля.ПросроченныеДанныеЦвет;
+ Иначе
+ ЦветДела = ЦветаСтиля.ЗаголовокДелаЦвет;
+ КонецЕсли;
+
+ ФорматированнаяСтрокаПеренос = Новый ФорматированнаяСтрока(Символы.ПС);
+ ФорматированнаяСтрокаОтступ = Новый ФорматированнаяСтрока(Символы.НПП+Символы.НПП+Символы.НПП);
+
+ Если Дело.Важное Тогда
+ Если ЗначениеЗаполнено(Дело.Форма) Тогда
+ ФорматированнаяСтрокаЗаголовкаДела = Новый ФорматированнаяСтрока(
+ СтрокаЗаголовкаДела,,
+ ЦветДела,,
+ Дело.Идентификатор);
+ Иначе
+ ФорматированнаяСтрокаЗаголовкаДела = Новый ФорматированнаяСтрока(
+ СтрокаЗаголовкаДела,,
+ ЦветДела);
+ КонецЕсли;
+ Иначе
+ Если ЗначениеЗаполнено(Дело.Форма) Тогда
+ ФорматированнаяСтрокаЗаголовкаДела = Новый ФорматированнаяСтрока(
+ СтрокаЗаголовкаДела,,,,
+ Дело.Идентификатор);
+ Иначе
+ ФорматированнаяСтрокаЗаголовкаДела = Новый ФорматированнаяСтрока(СтрокаЗаголовкаДела,,ЦветДела);
+ КонецЕсли;
+ КонецЕсли;
+
+ Если ТекущийЗаголовокПустой Тогда
+ Возврат Новый ФорматированнаяСтрока(ФорматированнаяСтрокаОтступ, ФорматированнаяСтрокаЗаголовкаДела);
+ Иначе
+ Возврат Новый ФорматированнаяСтрока(ТекущийЗаголовок, ФорматированнаяСтрокаПеренос, ФорматированнаяСтрокаОтступ, ФорматированнаяСтрокаЗаголовкаДела);
+ КонецЕсли;
+
+КонецФункции
+
+&НаСервере
+Процедура ЗаполнитьПараметрыДела(Дело)
+
+ СтрокаДело = ПараметрыДел.Добавить();
+ СтрокаДело.Идентификатор = Дело.Идентификатор;
+ СтрокаДело.Форма = Дело.Форма;
+ СтрокаДело.ПараметрыФормы = Дело.ПараметрыФормы;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗагрузитьНастройкиАвтообновления()
+
+ НастройкиАвтообновления = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиАвтообновления");
+
+ Если НастройкиАвтообновления = Неопределено Тогда
+ НастройкиАвтообновления = Новый Структура;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПрименитьНастройкиПанелиДел(ПрименитьНастройки, ДополнительныеПараметры) Экспорт
+ Если ПрименитьНастройки = Истина Тогда
+ ЗапуститьОбновлениеСпискаТекущихДел();
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервере
+Процедура ПереместитьРаздел(СтрокаРаздел)
+
+ ИмяЭлемента = "ОбщаяГруппа" + СтрокаРаздел.Идентификатор;
+ ПеремещаемыйЭлемент = Элементы.Найти(ИмяЭлемента);
+ Если ПеремещаемыйЭлемент = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+ Элементы.Переместить(ПеремещаемыйЭлемент, ПеремещаемыйЭлемент.Родитель);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура СохранитьСвернутыеРазделы(СвернутыеРазделы)
+
+ НастройкиОтображения = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиОтображения");
+
+ Если ТипЗнч(НастройкиОтображения) <> Тип("Структура") Тогда
+ НастройкиОтображения = Новый Структура;
+ КонецЕсли;
+
+ НастройкиОтображения.Вставить("СвернутыеРазделы", СвернутыеРазделы);
+ ХранилищеОбщихНастроек.Сохранить("ТекущиеДела", "НастройкиОтображения", НастройкиОтображения);
+
+КонецПроцедуры
+
+&НаСервере
+Функция СвернутыеРазделы()
+
+ НастройкиОтображения = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиОтображения");
+ Если НастройкиОтображения <> Неопределено И НастройкиОтображения.Свойство("СвернутыеРазделы") Тогда
+ СвернутыеРазделы = НастройкиОтображения.СвернутыеРазделы;
+ Иначе
+ СвернутыеРазделы = Новый Соответствие;
+ КонецЕсли;
+
+ Возврат СвернутыеРазделы;
+
+КонецФункции
+
+&НаСервере
+Процедура ДействияПриЗакрытииПанелиТекущихДел()
+
+ ЗаполнитьСвернутыеГруппыПередЗакрытием();
+ ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗаполнитьСвернутыеГруппыПередЗакрытием()
+
+ НастройкиОтображения = ХранилищеОбщихНастроек.Загрузить("ТекущиеДела", "НастройкиОтображения");
+ Если НастройкиОтображения = Неопределено Или Не НастройкиОтображения.Свойство("СвернутыеРазделы") Тогда
+ Возврат;
+ КонецЕсли;
+
+ СвернутыеРазделы = Новый Соответствие;
+ Для Каждого СтрокаСоответствия Из НастройкиОтображения.СвернутыеРазделы Цикл
+
+ ЭлементФормы = Элементы.Найти("Картинка" + СтрокаСоответствия.Ключ);
+ Если ЭлементФормы = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если ЭлементФормы.Картинка = БиблиотекаКартинок.СтрелкаВправо Тогда
+ СвернутыеРазделы.Вставить(СтрокаСоответствия.Ключ, Истина);
+ Иначе
+ СвернутыеРазделы.Вставить(СтрокаСоответствия.Ключ, Ложь);
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Если СвернутыеРазделы.Количество() = 0 Тогда
+ Возврат;
+ КонецЕсли;
+
+ СохранитьСвернутыеРазделы(СвернутыеРазделы);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ПереключитьКартинкуВВебКлиенте(ИмяЭлемента)
+
+ ИмяГруппыРаздела = СтрЗаменить(ИмяЭлемента, "Картинка", "Группа");
+ Элемент = Элементы[ИмяЭлемента];
+
+ Если Элемент.Картинка = БиблиотекаКартинок.СтрелкаВниз Тогда
+ Элемент.Картинка = БиблиотекаКартинок.СтрелкаВправо;
+ Элементы[ИмяГруппыРаздела].Видимость = Ложь;
+ Иначе
+ Элемент.Картинка = БиблиотекаКартинок.СтрелкаВниз;
+ Элементы[ИмяГруппыРаздела].Видимость = Истина;
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура УстановитьНачальныйПорядокРазделов(ТекущиеДела)
+
+ ПорядокРазделовКомандногоИнтерфейса = Новый Массив;
+ ТекущиеДелаПереопределяемый.ПриОпределенииПорядкаРазделовКомандногоИнтерфейса(ПорядокРазделовКомандногоИнтерфейса);
+
+ Индекс = 0;
+ Для Каждого РазделКомандногоИнтерфейса Из ПорядокРазделовКомандногоИнтерфейса Цикл
+ РазделКомандногоИнтерфейса = СтрЗаменить(РазделКомандногоИнтерфейса.ПолноеИмя(), ".", "");
+ ОтборСтрок = Новый Структура;
+ ОтборСтрок.Вставить("ИдентификаторВладельца", РазделКомандногоИнтерфейса);
+
+ НайденныеСтроки = ТекущиеДела.НайтиСтроки(ОтборСтрок);
+ Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
+ ИндексСтрокиВТаблице = ТекущиеДела.Индекс(НайденнаяСтрока);
+ Если ИндексСтрокиВТаблице = Индекс Тогда
+ Индекс = Индекс + 1;
+ Продолжить;
+ КонецЕсли;
+
+ ТекущиеДела.Сдвинуть(ИндексСтрокиВТаблице, (Индекс - ИндексСтрокиВТаблице));
+ Индекс = Индекс + 1;
+ КонецЦикла;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/DataProcessors/ТекущиеДела/ТекущиеДела.mdo b/SSL/src/DataProcessors/ТекущиеДела/ТекущиеДела.mdo
new file mode 100644
index 000000000..6f7d9b9b4
--- /dev/null
+++ b/SSL/src/DataProcessors/ТекущиеДела/ТекущиеДела.mdo
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ ТекущиеДела
+
+ ru
+ Текущие дела
+
+ true
+ DataProcessor.ТекущиеДела.Form.Форма
+
+ Форма
+
+ ru
+ Форма
+
+ PersonalComputer
+ MobileDevice
+
+
+ НастройкаПанели
+
+ ru
+ Настройка текущих дел
+
+ PersonalComputer
+ MobileDevice
+
+
diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Commands/УдалениеПомеченныхОбъектов/CommandModule.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Commands/УдалениеПомеченныхОбъектов/CommandModule.bsl
new file mode 100644
index 000000000..37675ee1a
--- /dev/null
+++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Commands/УдалениеПомеченныхОбъектов/CommandModule.bsl
@@ -0,0 +1,8 @@
+#Область ОбработчикиСобытий
+
+&НаКлиенте
+Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
+ ОткрытьФорму("Обработка.УдалениеПомеченныхОбъектов.Форма", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
+КонецПроцедуры
+
+#КонецОбласти
\ No newline at end of file
diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form
index 20d099a7e..116b0c304 100644
--- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form
+++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form
@@ -345,6 +345,7 @@
EnterLeft
+ 10truetruetrue
@@ -362,10 +363,7 @@
ruСтрока списка помеченных
-
- ru
- Строка списка помеченных
-
+ 20СтрокаСпискаПомеченныхExtendedTooltip98
@@ -602,10 +600,10 @@
ДеревоПомеченныхНаУдалениеСтрокаПоиска
- 389
+ 410ДеревоПомеченныхНаУдалениеСтрокаПоискаРасширеннаяПодсказка
- 391
+ 412Labeltruetrue
@@ -615,7 +613,7 @@
ДеревоПомеченныхНаУдалениеСтрокаПоискаКонтекстноеМеню
- 390
+ 411trueДеревоПомеченныхНаУдаление
@@ -625,10 +623,10 @@
ДеревоПомеченныхНаУдалениеСостояниеПросмотра
- 392
+ 413ДеревоПомеченныхНаУдалениеСостояниеПросмотраРасширеннаяПодсказка
- 394
+ 415Labeltruetrue
@@ -638,7 +636,7 @@
ДеревоПомеченныхНаУдалениеСостояниеПросмотраКонтекстноеМеню
- 393
+ 414trueViewStatusAddition
@@ -649,10 +647,10 @@
ДеревоПомеченныхНаУдалениеУправлениеПоиском
- 395
+ 416ДеревоПомеченныхНаУдалениеУправлениеПоискомРасширеннаяПодсказка
- 397
+ 418Labeltruetrue
@@ -662,7 +660,7 @@
ДеревоПомеченныхНаУдалениеУправлениеПоискомКонтекстноеМеню
- 396
+ 417trueSearchControlAddition
@@ -1493,7 +1491,7 @@
ГруппаНеУдаленные229
- Группа4
+ ГруппаНеУдаленныеТаблица313НеУдаленные
@@ -1557,10 +1555,9 @@
OpeningНеУдаленныеПредставлениеОткрытие
+ 10truetrue
- true
- truetruefalsefalse
@@ -1699,10 +1696,10 @@
НеУдаленныеСтрокаПоиска
- 410
+ 431НеУдаленныеСтрокаПоискаРасширеннаяПодсказка
- 412
+ 433Labeltruetrue
@@ -1712,7 +1709,7 @@
НеУдаленныеСтрокаПоискаКонтекстноеМеню
- 411
+ 432trueНеУдаленные
@@ -1722,10 +1719,10 @@
НеУдаленныеСостояниеПросмотра
- 413
+ 434НеУдаленныеСостояниеПросмотраРасширеннаяПодсказка
- 415
+ 436Labeltruetrue
@@ -1735,7 +1732,7 @@
НеУдаленныеСостояниеПросмотраКонтекстноеМеню
- 414
+ 435trueViewStatusAddition
@@ -1746,10 +1743,10 @@
НеУдаленныеУправлениеПоиском
- 416
+ 437НеУдаленныеУправлениеПоискомРасширеннаяПодсказка
- 418
+ 439Labeltruetrue
@@ -1759,7 +1756,7 @@
НеУдаленныеУправлениеПоискомКонтекстноеМеню
- 417
+ 438trueSearchControlAddition
@@ -1925,8 +1922,12 @@
true
+
+ ru
+ Группа не удаленные таблица
+
- Группа4РасширеннаяПодсказка
+ ГруппаНеУдаленныеТаблицаРасширеннаяПодсказка314Labeltrue
@@ -1946,8 +1947,283 @@
- Группа3
+ ГруппаПричины315
+
+ СтраницыВариантовОтображенияПричинШапка
+ 390
+
+ СтраницаВыберитеНеУдаленныйОбъектШапка
+ 392
+
+ Декорация4
+ 406
+ true
+ true
+
+ true
+
+
+ Декорация4РасширеннаяПодсказка
+ 408
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация4КонтекстноеМеню
+ 407
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница выберите не удаленный объект шапка
+
+
+ ru
+ Страница выберите не удаленный объект шапка
+
+
+ СтраницаВыберитеНеУдаленныйОбъектШапкаРасширеннаяПодсказка
+ 393
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ СтраницаТекстОшибкиШапка
+ 394
+
+ Декорация3
+ 400
+
+ ru
+ Причины, по которым не удалось удалить объект
+
+ true
+ true
+
+ true
+
+
+ Декорация3РасширеннаяПодсказка
+ 402
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация3КонтекстноеМеню
+ 401
+ true
+
+ Label
+ true
+ true
+
+ System.DefaultGUIFont
+ Arial
+ 13.0
+ 80
+
+
+ Left
+ Bottom
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница текст ошибки шапка
+
+
+ ru
+ Страница текст ошибки шапка
+
+
+ СтраницаТекстОшибкиШапкаРасширеннаяПодсказка
+ 395
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+
+ СтраницаПричиныНеУдаленияШапка
+ 396
+
+ НадписьСвязиНеУдаленных_2
+ 385
+
+ ru
+ Надпись связи не удаленных 2
+
+ true
+
+ true
+
+
+ НадписьСвязиНеУдаленных_2РасширеннаяПодсказка
+ 387
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьСвязиНеУдаленных_2КонтекстноеМеню
+ 386
+ true
+
+ Label
+ true
+ 1
+ true
+ true
+
+ Left
+ Bottom
+
+
+
+ НадписьСвязиНеУдаленных
+ 403
+
+ ru
+ Надпись связи не удаленных
+
+ true
+ true
+
+ true
+
+
+ НадписьСвязиНеУдаленныхРасширеннаяПодсказка
+ 405
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьСвязиНеУдаленныхКонтекстноеМеню
+ 404
+ true
+
+ Label
+ true
+ true
+
+ System.DefaultGUIFont
+ Arial
+ 13.0
+ 80
+
+
+ Left
+ Bottom
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страница причины не удаления шапка
+
+
+ ru
+ Страница причины не удаления шапка
+
+
+ СтраницаПричиныНеУдаленияШапкаРасширеннаяПодсказка
+ 397
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ Vertical
+ auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Страницы вариантов отображения причин шапка
+
+
+ ru
+ Страницы вариантов отображения причин шапка
+
+
+ СтраницыВариантовОтображенияПричинШапкаРасширеннаяПодсказка
+ 391
+ Label
+ true
+ true
+
+ Left
+
+
+ Pages
+
+ Auto
+
+ СтраницыВариантовОтображенияПричин255
@@ -1961,7 +2237,6 @@
ru
- truetruetrue
@@ -2023,6 +2298,7 @@
Lefttrue
+ 10truetruetrue
@@ -2072,7 +2348,6 @@
ru
- truetruetrue
@@ -2136,58 +2411,6 @@
-
- ТекстОшибки
- 261
- true
- true
-
- true
-
-
- ТекстОшибки
-
- None
-
- ТекстОшибкиРасширеннаяПодсказка
- 263
- Label
- true
- true
-
- Left
-
-
-
- ТекстОшибкиКонтекстноеМеню
- 262
- true
-
- InputField
- true
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
- true
- true
-
- Style.FormBackColor
-
-
- Style.FormBackColor
-
- Normal
-
-
- truetruetrue
@@ -2217,6 +2440,57 @@
Auto
+
+ ТекстОшибки
+ 261
+ true
+ true
+
+ true
+
+
+ ТекстОшибки
+
+ None
+
+ ТекстОшибкиРасширеннаяПодсказка
+ 263
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТекстОшибкиКонтекстноеМеню
+ 262
+ true
+
+ InputField
+ true
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+
+ Style.FormBackColor
+
+
+ Style.FormBackColor
+
+ Normal
+
+ truetrue
@@ -2249,43 +2523,6 @@
СтраницаПричиныНеУдаления257
-
- НадписьСвязиНеУдаленных
- 385
-
- ru
- Надпись связи не удаленных
-
- true
- true
-
- true
-
-
- НадписьСвязиНеУдаленныхРасширеннаяПодсказка
- 387
- Label
- true
- true
-
- Left
-
-
-
- НадписьСвязиНеУдаленныхКонтекстноеМеню
- 386
- true
-
- Label
- true
- 2
- true
- true
-
- Left
- Bottom
-
- СвязиНеУдаленных235
@@ -2434,10 +2671,10 @@
СвязиНеУдаленныхСтрокаПоиска
- 430
+ 451СвязиНеУдаленныхСтрокаПоискаРасширеннаяПодсказка
- 432
+ 453Labeltruetrue
@@ -2447,7 +2684,7 @@
СвязиНеУдаленныхСтрокаПоискаКонтекстноеМеню
- 431
+ 452trueСвязиНеУдаленных
@@ -2457,10 +2694,10 @@
СвязиНеУдаленныхСостояниеПросмотра
- 433
+ 454СвязиНеУдаленныхСостояниеПросмотраРасширеннаяПодсказка
- 435
+ 456Labeltruetrue
@@ -2470,7 +2707,7 @@
СвязиНеУдаленныхСостояниеПросмотраКонтекстноеМеню
- 434
+ 455trueViewStatusAddition
@@ -2481,10 +2718,10 @@
СвязиНеУдаленныхУправлениеПоиском
- 436
+ 457СвязиНеУдаленныхУправлениеПоискомРасширеннаяПодсказка
- 438
+ 459Labeltruetrue
@@ -2494,7 +2731,7 @@
СвязиНеУдаленныхУправлениеПоискомКонтекстноеМеню
- 437
+ 458trueSearchControlAddition
@@ -2667,8 +2904,16 @@
true
+
+ ru
+ Группа причины
+
+
+ ru
+ Группа причины
+
- Группа3РасширеннаяПодсказка
+ ГруппаПричиныРасширеннаяПодсказка316Labeltrue
@@ -2720,11 +2965,12 @@
- НадписьИтогиЧастичногоУдаления1
+ НадписьИтогиЧастичногоУдаленияПояснение377ru
- Для удаления объектов необходимо либо пометить на удаление все связанные с ними объекты (в списке "Места использования"), либо очистить (заменить) их ссылки в перечисленных местах использования.
+ Для удаления объектов необходимо либо пометить на удаление все связанные с ними объекты
+(в списке "Места использования"), либо очистить (заменить) их ссылки в перечисленных местах использования.truetrue
@@ -2732,7 +2978,7 @@
true
- НадписьИтогиЧастичногоУдаления1РасширеннаяПодсказка
+ НадписьИтогиЧастичногоУдаленияПояснениеРасширеннаяПодсказка379Labeltrue
@@ -2742,13 +2988,13 @@
- НадписьИтогиЧастичногоУдаления1КонтекстноеМеню
+ НадписьИтогиЧастичногоУдаленияПояснениеКонтекстноеМеню378trueLabeltrue
- 2
+ 3trueStyle.ПоясняющийТекст
@@ -3086,7 +3332,6 @@
RetrySaveValuesYes
- 80LockOwnerUsetrue
diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl
index af570b37e..e89baca58 100644
--- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl
+++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl
@@ -15,6 +15,12 @@
Возврат; // Отказ устанавливается в ПриОткрытии.
КонецЕсли;
+ Если ОбщегоНазначенияПовтИсп.РазделениеВключено()
+ И Не ОбщегоНазначения.ИспользованиеРазделителяСеанса() Тогда
+ ТекстОшибки = НСтр("ru = 'Для удаления помеченных необходимо войти в область данных.'");
+ Возврат; // Отказ устанавливается в ПриОткрытии.
+ КонецЕсли;
+
РежимУдаления = "Полный";
ПриСозданииНаСервереУстановитьТекстПоясненияКОбработке();
ВидимостьДоступность(ЭтотОбъект);
@@ -326,6 +332,7 @@
Если СтрокаДерева = Неопределено Или СтрокаДерева.НомерКартинки < 1 Тогда
// Ничего не выбрано или выбрана группа.
Элементы.СтраницыВариантовОтображенияПричин.ТекущаяСтраница = Элементы.СтраницаВыберитеНеУдаленныйОбъект;
+ Элементы.СтраницыВариантовОтображенияПричинШапка.ТекущаяСтраница = Элементы.СтраницаВыберитеНеУдаленныйОбъектШапка;
ТекстОшибки = НСтр("ru = 'Выберите объект, чтобы узнать причину,
|по которой его не удалось удалить.'");
Возврат;
@@ -355,8 +362,10 @@
Если ПоказыватьТекстОшибки Тогда
Элементы.СтраницыВариантовОтображенияПричин.ТекущаяСтраница = Элементы.СтраницаТекстОшибки;
+ Элементы.СтраницыВариантовОтображенияПричинШапка.ТекущаяСтраница = Элементы.СтраницаТекстОшибкиШапка;
Иначе
Элементы.СтраницыВариантовОтображенияПричин.ТекущаяСтраница = Элементы.СтраницаПричиныНеУдаления;
+ Элементы.СтраницыВариантовОтображенияПричинШапка.ТекущаяСтраница = Элементы.СтраницаПричиныНеУдаленияШапка;
Шаблон = НСтр("ru = 'Места использования объекта ""%1"" (%2):'");
КраткоеПредставлениеОбъекта = СтрокаДерева.Представление;
@@ -409,44 +418,48 @@
&НаКлиенте
Процедура ПометитьВыделенныеОбъектыТаблицыНаУдаление(ТаблицаЭлемент)
+ Перем Значение;
+
МассивИдентификаторов = ТаблицаЭлемент.ВыделенныеСтроки;
КоличествоВыделено = МассивИдентификаторов.Количество();
Если КоличествоВыделено = 0 Тогда
Возврат;
КонецЕсли;
- ТаблицаРеквизит = ЭтотОбъект[ТаблицаЭлемент.Имя];
+
+ ТаблицаИмя = ТаблицаЭлемент.Имя;
+ Если ТаблицаИмя = "ДеревоПомеченныхНаУдаление" Тогда
+ ИмяРеквизитаЗначение = "Значение";
+ ЭтоСвязиНеУдаленных = Ложь;
+ ИначеЕсли ТаблицаИмя = "НеУдаленные" Тогда
+ ИмяРеквизитаЗначение = "УдаляемыйСсылка";
+ ЭтоСвязиНеУдаленных = Ложь;
+ ИначеЕсли ТаблицаИмя = "СвязиНеУдаленных" Тогда
+ ИмяРеквизитаЗначение = "ОбнаруженныйСсылка";
+ ЭтоСвязиНеУдаленных = Истина;
+ КонецЕсли;
+
+ ТаблицаРеквизит = ЭтотОбъект[ТаблицаИмя];
МассивСтрокТаблицы = Новый Массив;
МассивСсылокПомеченныхНаУдаление = Новый Массив;
МассивСсылокНеПомеченныхНаУдаление = Новый Массив;
ЕстьПомеченныеНаУдаление = Ложь;
- ИмяРеквизитаЗначение = "";
- Значение = Неопределено;
- СсылочногоТипа = Неопределено;
- ЕстьСвойствоСсылочногоТипа = Ложь;
+ ЕстьЗаписиРегистров = Ложь;
+ ЕстьКонстанты = Ложь;
Для Каждого Идентификатор Из МассивИдентификаторов Цикл
СтрокаТаблицы = ТаблицаРеквизит.НайтиПоИдентификатору(Идентификатор);
- Если ИмяРеквизитаЗначение = "" Тогда
- Если СтрокаТаблицы.Свойство("Значение") Тогда
- ИмяРеквизитаЗначение = "Значение";
- ИначеЕсли СтрокаТаблицы.Свойство("ОбнаруженныйСсылка") Тогда
- ИмяРеквизитаЗначение = "ОбнаруженныйСсылка";
- ИначеЕсли СтрокаТаблицы.Свойство("УдаляемыйСсылка") Тогда
- ИмяРеквизитаЗначение = "УдаляемыйСсылка";
- Иначе
- Возврат;
+ Если ЭтоСвязиНеУдаленных Тогда
+ Если СтрокаТаблицы.ЭтоКонстанта Тогда
+ ЕстьКонстанты = Истина;
+ Продолжить;
+ ИначеЕсли Не СтрокаТаблицы.СсылочногоТипа Тогда
+ ЕстьЗаписиРегистров = Истина;
+ Продолжить;
КонецЕсли;
- ЕстьСвойствоСсылочногоТипа = СтрокаТаблицы.Свойство("СсылочногоТипа");
КонецЕсли;
СтрокаТаблицы.Свойство(ИмяРеквизитаЗначение, Значение);
Если ТипЗнч(Значение) = Тип("Строка") Тогда
+ КоличествоВыделено = КоличествоВыделено - 1; // Группы не должны считаться выделенными.
Продолжить; // Пропуск групп.
- ИначеЕсли ЕстьСвойствоСсылочногоТипа И Не СтрокаТаблицы["СсылочногоТипа"] Тогда
- Если КоличествоВыделено = 1 Тогда
- ПоказатьПредупреждение(, НСтр("ru = 'Удаление записи регистра выполняется из ее карточки'"));
- Возврат;
- Иначе
- Продолжить; // Пропуск записей регистров.
- КонецЕсли;
КонецЕсли;
Если СтрокаТаблицы.ПометкаУдаления Тогда
ЕстьПомеченныеНаУдаление = Истина;
@@ -464,19 +477,28 @@
КонецЕсли;
КонецЦикла;
- КоличествоМожноУдалить = МассивСтрокТаблицы.Количество();
+ МассивСсылок = ?(ЕстьПомеченныеНаУдаление, МассивСсылокПомеченныхНаУдаление, МассивСсылокНеПомеченныхНаУдаление);
+ КоличествоМожноУдалить = МассивСсылок.Количество();
Если КоличествоМожноУдалить = 0 Тогда
+ ТекстОшибки = НСтр("ru = 'Выберите объект.'");
Если КоличествоВыделено = 1 Тогда
- ПоказатьПредупреждение(, НСтр("ru = 'Выберите объект'"));
+ Если ЕстьЗаписиРегистров Тогда
+ ТекстОшибки = НСтр("ru = 'Удаление записи регистра выполняется из ее карточки.'");
+ ИначеЕсли ЕстьКонстанты Тогда
+ ТекстОшибки = НСтр("ru = 'Очистка значения константы выполняется из ее карточки.'");
+ КонецЕсли;
Иначе
- ПоказатьПредупреждение(, НСтр("ru = 'Выберите объекты'"));
+ Если ЕстьЗаписиРегистров Или ЕстьКонстанты Тогда
+ ТекстОшибки = НСтр("ru = 'Удаление записей регистров или очистка значений констант выполняется из их карточек.'");
+ КонецЕсли;
КонецЕсли;
+ ПоказатьПредупреждение(, ТекстОшибки);
Возврат;
КонецЕсли;
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("МассивСтрокТаблицы", МассивСтрокТаблицы);
- ПараметрыОбработчика.Вставить("МассивСсылок", ?(ЕстьПомеченныеНаУдаление, МассивСсылокПомеченныхНаУдаление, МассивСсылокНеПомеченныхНаУдаление));
+ ПараметрыОбработчика.Вставить("МассивСсылок", МассивСсылок);
ПараметрыОбработчика.Вставить("ИмяРеквизитаЗначение", ИмяРеквизитаЗначение);
ПараметрыОбработчика.Вставить("ЕстьПомеченныеНаУдаление", ЕстьПомеченныеНаУдаление);
@@ -670,13 +692,13 @@
ПараметрыВыполнения = Новый Структура;
// Заполнение дерева помеченных на удаление
+ ПомеченныеНаУдаление = ПомеченныеНаУдалениеСоСтраницыРезультатов();
+ ПометкиУстанавливаютсяВыборочно = (ПомеченныеНаУдаление.Количество() > 0);
+
ДеревоЗначений = РеквизитФормыВЗначение("ДеревоПомеченныхНаУдаление");
ДеревоЗначений.Строки.Очистить();
ДеревоЗначений.Колонки.Добавить("Количество");
- ПомеченныеНаУдаление = ПомеченныеНаУдалениеСоСтраницыРезультатов();
- ПометкиУстанавливаютсяВыборочно = (ПомеченныеНаУдаление.Количество() > 0);
-
УзлыПервогоУровня = Новый Соответствие;
ОбработкаМенеджер.ИнициализироватьПараметры(ПараметрыВыполнения);
@@ -750,7 +772,7 @@
Найденные = ТаблицаЗначений.НайтиСтроки(Новый Структура("ПометкаУдаления", Истина));
Для Каждого СтрокаДерева Из Найденные Цикл
Если ТипЗнч(СтрокаДерева.ОбнаруженныйСсылка) <> Тип("Строка")
- И ПомеченныеНаУдаление.Найти(СтрокаДерева.УдаляемыйСсылка) = Неопределено Тогда
+ И ПомеченныеНаУдаление.Найти(СтрокаДерева.ОбнаруженныйСсылка) = Неопределено Тогда
ПомеченныеНаУдаление.Добавить(СтрокаДерева.ОбнаруженныйСсылка);
КонецЕсли;
КонецЦикла;
@@ -841,10 +863,17 @@
&НаСервереБезКонтекста
Функция ИзменитьПометкуУдаленияОбъектов(МассивСсылок, ПометкаУдаления)
Результат = СтандартныеПодсистемыКлиентСервер.НовыйРезультатВыполнения();
- Для Каждого Ссылка Из МассивСсылок Цикл
- ИзменяемыйОбъект = Ссылка.ПолучитьОбъект();
- ИзменяемыйОбъект.УстановитьПометкуУдаления(ПометкаУдаления);
+ Количество = МассивСсылок.Количество();
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+ ИзменяемыйОбъект = МассивСсылок[ОбратныйИндекс].ПолучитьОбъект();
+ Если ИзменяемыйОбъект = Неопределено Тогда
+ МассивСсылок.Удалить(ОбратныйИндекс);
+ Иначе
+ ИзменяемыйОбъект.УстановитьПометкуУдаления(ПометкаУдаления);
+ КонецЕсли;
КонецЦикла;
+
СтандартныеПодсистемыКлиентСервер.ПодготовитьОповещениеДинамическихСписков(МассивСсылок, Результат);
Результат.ВыводОповещения.Использование = Истина;
Если ПометкаУдаления Тогда
@@ -853,7 +882,9 @@
Результат.ВыводОповещения.Заголовок = НСтр("ru = 'Пометка удаления снята'");
КонецЕсли;
КоличествоОбъектов = МассивСсылок.Количество();
- Если КоличествоОбъектов =1 Тогда
+ Если КоличествоОбъектов = 0 Тогда
+ Результат.ВыводОповещения.Заголовок = НСтр("ru = 'Объект не найден'");
+ ИначеЕсли КоличествоОбъектов = 1 Тогда
Результат.ВыводОповещения.Ссылка = МассивСсылок[0];
Результат.ВыводОповещения.Текст = Строка(Результат.ВыводОповещения.Ссылка);
Иначе
diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html
index 00e92caed..11002eca5 100644
--- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html
+++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html
@@ -1,7 +1,7 @@
-
+
Предназначена для окончательного удаления помеченных объектов.
В процессе работы с программой можно помечать на удаление объекты (например, ошибочно введенные). Помеченные на удаление объекты могут быть безвозвратно удалены пользователем с административными правами.
-
Команда Удаление помеченных объектов находится в разделе Настройка и администрирование - Поддержка и обслуживание.
+
Команда Удаление помеченных объектов находится в разделе Администрирование - Поддержка и обслуживание.
Удаление выполняется с контролем ссылочной целостности. Это значит, что если на тот или иной объект программы (документ, элемент справочника и т.д.) ссылаются другие объекты, то удаление объекта не будет выполнено. Тем не менее, следует помнить, что удаление помеченных объектов - необратимая операция.
Удаление ранее помеченных объектов можно выполнить двумя способами, которые можно выбрать с помощью переключателя:
Автоматическое удаление всех объектов - производится попытка автоматического удаления всех объектов, помеченных на удаление.
diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl
index 570b004aa..a8d8021eb 100644
--- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl
+++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl
@@ -138,7 +138,7 @@
НачатьТранзакцию();
Попытка
- ПопробоватьУдалитьСсылку(Ссылка, Информация, Результат);
+ ПопробоватьУдалитьСсылку(ПараметрыВыполнения, Ссылка, Информация, Результат);
Исключение
Результат.Успех = Ложь;
Результат.ИнформацияОбОшибке = ИнформацияОбОшибке();
@@ -165,7 +165,7 @@
КонецФункции
// Механика удаления объекта и поиска ссылок.
-Процедура ПопробоватьУдалитьСсылку(Ссылка, Информация, Результат)
+Процедура ПопробоватьУдалитьСсылку(ПараметрыВыполнения, Ссылка, Информация, Результат)
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(Информация.ПолноеИмя);
ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка);
@@ -182,11 +182,11 @@
Возврат;
КонецЕсли;
- НайтиВложенныеИПодчиненныеОбъекты(Ссылка, Информация, Результат);
+ НайтиВложенныеИПодчиненныеОбъекты(ПараметрыВыполнения, Ссылка, Информация, Результат);
Объект.Удалить();
- НайтиПрепятствующиеУдалению(Ссылка, Информация, Результат);
+ НайтиПрепятствующиеУдалению(ПараметрыВыполнения, Ссылка, Информация, Результат);
Если Результат.Количество = 0 Тогда
Результат.Успех = Истина;
@@ -197,7 +197,7 @@
КонецПроцедуры
// Поиск ссылок вложенных и подчиненных (иерархия и связь по владельцу). Выполняется до удаления.
-Процедура НайтиВложенныеИПодчиненныеОбъекты(Ссылка, Информация, Результат)
+Процедура НайтиВложенныеИПодчиненныеОбъекты(ПараметрыВыполнения, Ссылка, Информация, Результат)
Если Информация.Иерархический Тогда
Запрос = Новый Запрос(Информация.ТекстЗапросаПоИерархии);
@@ -222,23 +222,46 @@
КонецПроцедуры
// Поиск ссылок путем сканирования всех таблиц. Выполняется после удаления.
-Процедура НайтиПрепятствующиеУдалению(Ссылка, Информация, Результат)
+Процедура НайтиПрепятствующиеУдалению(ПараметрыВыполнения, Ссылка, Информация, Результат)
ПоискСсылок = Новый Массив;
ПоискСсылок.Добавить(Ссылка);
- Результат.ПрепятствующиеУдалению = НайтиПоСсылкам(ПоискСсылок);
+ ПрепятствующиеУдалению = НайтиПоСсылкам(ПоискСсылок);
- ПоискНеПрепятствующих = Новый Структура(Результат.ПрепятствующиеУдалению.Колонки[1].Имя, Ссылка);
- НеПрепятствующие = Результат.ПрепятствующиеУдалению.НайтиСтроки(ПоискНеПрепятствующих);
- Для Каждого СтрокаТаблицы Из НеПрепятствующие Цикл
- Результат.ПрепятствующиеУдалению.Удалить(СтрокаТаблицы);
+ // Пропуск ссылок из границ последовательности.
+ Количество = ПрепятствующиеУдалению.Количество();
+ ИмяКолонки = ПрепятствующиеУдалению.Колонки[1].Имя;
+ Для Номер = 1 По Количество Цикл
+ ОбратныйИндекс = Количество - Номер;
+ СтрокаТаблицы = ПрепятствующиеУдалению[ОбратныйИндекс];
+ ПрепятствующийСсылка = СтрокаТаблицы[ИмяКолонки];
+ Если ПрепятствующийСсылка = Ссылка
+ Или ДокументУжеУдален(ПараметрыВыполнения, ПрепятствующийСсылка) Тогда
+ ПрепятствующиеУдалению.Удалить(СтрокаТаблицы);
+ КонецЕсли;
КонецЦикла;
+ // Регистрация результата.
+ Результат.ПрепятствующиеУдалению = ПрепятствующиеУдалению;
Результат.Количество = Результат.Количество + Результат.ПрепятствующиеУдалению.Количество();
КонецПроцедуры
+// Поиск ссылки документа в базе данных.
+Функция ДокументУжеУдален(ПараметрыВыполнения, Ссылка)
+ Если Ссылка = Неопределено Тогда
+ Возврат Ложь; // Не документ.
+ КонецЕсли;
+ Информация = СформироватьИнформациюОТипах(ПараметрыВыполнения, ТипЗнч(Ссылка));
+ Если Информация.Вид <> "ДОКУМЕНТ" Тогда
+ Возврат Ложь; // Не документ.
+ КонецЕсли;
+ Запрос = Новый Запрос("Выбрать Первые 1 1 Из "+ Информация.ПолноеИмя +" Где Ссылка = &Ссылка");
+ Запрос.УстановитьПараметр("Ссылка", Ссылка);
+ Возврат Запрос.Выполнить().Пустой();
+КонецФункции
+
// Удаление циклов (кольцевых связей объектов).
Процедура УдалитьОставшиесяОбъектыВОднойТранзакции(ПараметрыВыполнения)
Перем Ссылка;
@@ -318,6 +341,16 @@
Если МассивСсылок.Количество() > 0 Тогда
ПрепятствующиеУдалению = НайтиПоСсылкам(МассивСсылок);
+
+ ИмяКолонки = ПрепятствующиеУдалению.Колонки[1].Имя;
+ Для Каждого Ссылка Из МассивСсылок Цикл
+ ПоискНеПрепятствующих = Новый Структура(ИмяКолонки, Ссылка);
+ НеПрепятствующие = ПрепятствующиеУдалению.НайтиСтроки(ПоискНеПрепятствующих);
+ Для Каждого СтрокаТаблицы Из НеПрепятствующие Цикл
+ ПрепятствующиеУдалению.Удалить(СтрокаТаблицы);
+ КонецЦикла;
+ КонецЦикла;
+
Если ПрепятствующиеУдалению.Количество() = 0 Тогда
Успех = Истина;
КонецЕсли;
@@ -343,11 +376,17 @@
ПараметрыВыполнения.НеУдаленные.Удалить(Индекс);
КонецЕсли;
- // Очистка информации о связях.
+ // Очистка информации о связях "от" удаленных объектов.
Найденные = ПараметрыВыполнения.ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("УдаляемыйСсылка", Ссылка));
Для Каждого СтрокаТаблицы Из Найденные Цикл
ПараметрыВыполнения.ПрепятствующиеУдалению.Удалить(СтрокаТаблицы);
КонецЦикла;
+
+ // Очистка информации о связях "к" удаленным объектам.
+ Найденные = ПараметрыВыполнения.ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка", Ссылка));
+ Для Каждого СтрокаТаблицы Из Найденные Цикл
+ ПараметрыВыполнения.ПрепятствующиеУдалению.Удалить(СтрокаТаблицы);
+ КонецЦикла;
КонецЦикла;
Иначе
ОтменитьТранзакцию();
@@ -545,6 +584,10 @@
Продолжить; // Неразделенные объекты запрещено изменять из области данных.
КонецЕсли;
+ Если Информация.ЕстьПредопределенные И Информация.Предопределенные.Найти(Ссылка) <> Неопределено Тогда
+ Продолжить; // Предопределенные элементы создаются и удаляются только автоматически.
+ КонецЕсли;
+
Если Информация.Технический = Истина Тогда
ПараметрыВыполнения.ТехнологическиеОбъекты.Добавить(Ссылка);
Иначе
@@ -563,7 +606,8 @@
Информация = Новый Структура("ПолноеИмя, ПредставлениеЭлемента, ПредставлениеСписка,
|Вид, Ссылочный, Технический, Разделенный,
|Иерархический, ТекстЗапросаПоИерархии,
- |ЕстьПодчиненные, ТекстЗапросаПоПодчиненным");
+ |ЕстьПодчиненные, ТекстЗапросаПоПодчиненным,
+ |ЕстьПредопределенные, Предопределенные");
// Поиск объекта метаданных.
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
@@ -655,6 +699,17 @@
КонецЕсли;
КонецЕсли;
+ Если Информация.Вид = "СПРАВОЧНИК"
+ Или Информация.Вид = "ПЛАНВИДОВХАРАКТЕРИСТИК"
+ Или Информация.Вид = "ПЛАНСЧЕТОВ"
+ Или Информация.Вид = "ПЛАНВИДОВРАСЧЕТА" Тогда
+ Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ "+ Информация.ПолноеИмя +" ГДЕ Предопределенный И ПометкаУдаления");
+ Информация.Предопределенные = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
+ Информация.ЕстьПредопределенные = Информация.Предопределенные.Количество() > 0;
+ Иначе
+ Информация.ЕстьПредопределенные = Ложь;
+ КонецЕсли;
+
ПараметрыВыполнения.ИнформацияОТипах.Вставить(Тип, Информация);
Возврат Информация;
@@ -669,7 +724,7 @@
КонецЕсли;
ЗаписьЖурналаРегистрации(
- НСтр("ru = 'Удаление помеченных'"),
+ НСтр("ru = 'Удаление помеченных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Предупреждение,
,
Ссылка,
diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo
index a74cd3a4c..8aba38ea4 100644
--- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo
+++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo
@@ -12,6 +12,7 @@
Поиск и удаление объектов, помеченных на удалениеtrueDataProcessor.УдалениеПомеченныхОбъектов.Form.ОсновнаяФорма
+ trueru
@@ -31,4 +32,17 @@
PersonalComputerMobileDevice
+
+ УдалениеПомеченныхОбъектов
+
+ ru
+ Удаление помеченных объектов
+
+ NavigationPanelOrdinary
+ Auto
+
+ ru
+ Поиск и удаление объектов, предварительно помеченных на удаление
+
+
diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl
index 02ebfeb3e..8dfdd03fe 100644
--- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl
+++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl
@@ -812,7 +812,7 @@
ДеревоДанных.Строки.Очистить();
СтрокаДерева = ДеревоДанных.Строки.Добавить();
- СтрокаДерева.Представление = "Справочники";
+ СтрокаДерева.Представление = Нстр("ru = 'Справочники'");
Для каждого ОбъектМД Из Метаданные.Справочники Цикл
@@ -827,7 +827,7 @@
КонецЦикла;
СтрокаДерева = ДеревоДанных.Строки.Добавить();
- СтрокаДерева.Представление = НСтр("ru = 'Планы видов характеристик'");
+ СтрокаДерева.Представление = Нстр("ru = 'Планы видов характеристик'");
Для каждого ОбъектМД Из Метаданные.ПланыВидовХарактеристик Цикл
@@ -1301,7 +1301,7 @@
&НаКлиенте
Процедура ВыполнитьЗагрузкуИзФормыЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
- Если Результат ТОгда
+ Если Результат Тогда
Состояние(НСтр("ru = 'Выполняется загрузка данных. Пожалуйста, подождите...'"));
ВыполнитьЗагрузкуНаСервере(Адрес, ВыбранноеИмяФайла);
diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html
index 2b4057220..246f42b4c 100644
--- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html
+++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Обработка "Универсальный обмен данными в формате XML" предназначена для загрузки и выгрузки данных в файл из любой конфигурации, реализованной на платформе 1С:Предприятие 8.
Режим работы
При использовании управляемой формы обработка имеет два режим работы: 1. На клиенте. При использовании этого режима файлы правил и загружаемых данных передаются с клиента на сервер, а файл выгружаемых данных передается с сервера на клиент. Пути к этим файлам, находящимся на клиенте, необходимо указывать в диалоговом окне непосредственно перед выполнением действия. 2. На сервере. В этом режиме файлы не передаются на клиент и пути к ним необходимо указывать на сервере. Примечание: Файл внешней обработки и файлы протоколов обмена всегда должны находиться на сервере вне зависимости от режима работы.
diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl
index 3d853fd67..2b1fb3f10 100644
--- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl
+++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl
@@ -3588,7 +3588,7 @@
//Инициализируем возвращаемое значение
ОбработчикНовый = "";
- ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, АлгоритмВладелец, СтрокаПрефикса, НСтр("ru = '{НАЧАЛО АЛГОРИТМА}'"));
+ ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, АлгоритмВладелец, СтрокаПрефикса, Нстр("ru = '{НАЧАЛО АЛГОРИТМА}'"));
Для Индекс = 1 По СтрЧислоСтрок(Обработчик) Цикл
@@ -3607,14 +3607,14 @@
Если МассивЗапрошенныхЭлементов.Найти(ВРег(Алгоритм)) <> Неопределено Тогда //Рекурсивный вызов алгоритма
- ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, Алгоритм, СтрокаПрефиксаДляВложенногоКода, НСтр("ru = '{РЕКУРСИВНЫЙ ВЫЗОВ АЛГОРИТМА}'"));
+ ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, Алгоритм, СтрокаПрефиксаДляВложенногоКода, Нстр("ru = '{РЕКУРСИВНЫЙ ВЫЗОВ АЛГОРИТМА}'"));
СтрокаОператора = Нстр("ru = 'ВызватьИсключение ""РЕКУРСИВНЫЙ ВЫЗОВ АЛГОРИТМА: %1"";'");
СтрокаОператора = ПодставитьПараметрыВСтроку(СтрокаОператора, Алгоритм);
ОбработчикНовый = ОбработчикНовый + Символы.ПС + СтрокаПрефиксаДляВложенногоКода + СтрокаОператора;
- ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, Алгоритм, СтрокаПрефиксаДляВложенногоКода, НСтр("ru = '{РЕКУРСИВНЫЙ ВЫЗОВ АЛГОРИТМА}'"));
+ ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, Алгоритм, СтрокаПрефиксаДляВложенногоКода, Нстр("ru = '{РЕКУРСИВНЫЙ ВЫЗОВ АЛГОРИТМА}'"));
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("Алгоритм_1", АлгоритмВладелец);
@@ -3636,7 +3636,7 @@
КонецЦикла;
- ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, АлгоритмВладелец, СтрокаПрефикса, НСтр("ru = '{КОНЕЦ АЛГОРИТМА}'"));
+ ЗаписатьЗаголовокБлокаАлгоритма(ОбработчикНовый, АлгоритмВладелец, СтрокаПрефикса, Нстр("ru = '{КОНЕЦ АЛГОРИТМА}'"));
Возврат ОбработчикНовый;
@@ -6015,8 +6015,8 @@
Исключение
- ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(73, ОписаниеОшибки(), "", "",
- ТипОбъекта, Неопределено, НСтр("ru = 'Последовательность полей поиска'"));
+ ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(73, ОписаниеОшибки(), "", "",
+ ТипОбъекта, Неопределено, Нстр("ru = 'Последовательность полей поиска'"));
КонецПопытки;
@@ -6030,8 +6030,8 @@
СсылкаНаОбъект = НайтиЭлементПоСвойствамПоиска(ТипОбъекта, ИмяТипаОбъекта, СвойстваПоиска, СтруктураСвойств,
СтрокаИменСвойствПоиска, ПоискПоДатеНаРавенство);
- НеНужноВыполнятьПоиск = ЗначениеЗаполнено(СсылкаНаОбъект);
-
+ НеНужноВыполнятьПоиск = ЗначениеЗаполнено(СсылкаНаОбъект);
+
КонецЕсли;
Если НеНужноВыполнятьПоиск Тогда
@@ -6865,10 +6865,10 @@
Исключение
ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(53, ОписаниеОшибки(), ИмяПравила, Источник,
- ТипОбъекта, Неопределено, НСтр("ru = 'ПередЗагрузкойОбъекта (глобальный)'"));
-
+ ТипОбъекта, Неопределено, Нстр("ru = 'ПередЗагрузкойОбъекта (глобальный)'"));
+
КонецПопытки;
-
+
Если Отказ Тогда // Отказ от загрузки объекта
одПропустить(ФайлОбмена, "Объект");
@@ -7238,19 +7238,18 @@
Исключение
- ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(54, ОписаниеОшибки(), ИмяПравила, Источник,
- ТипОбъекта, Объект, НСтр("ru = 'ПослеЗагрузкиОбъекта (глобальный)'"));
+ ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(54, ОписаниеОшибки(), ИмяПравила, Источник,
+ ТипОбъекта, Объект, Нстр("ru = 'ПослеЗагрузкиОбъекта (глобальный)'"));
КонецПопытки;
КонецЕсли;
-
- // Обработчик события ПослеЗагрузкиОбъекта
+ // Обработчик события ПослеЗагрузкиОбъекта
Если ЕстьОбработчикПослеЗагрузки Тогда
НужноБылоЗаписатьОбъект = НужноЗаписатьОбъект;
- ОбъектМодифицирован = Истина;
+ ОбъектМодифицирован = Истина;
Попытка
@@ -7825,12 +7824,14 @@
Если ВыгружатьГруппуЧерезФайл Тогда
+ ПКГС.НуженУзелXMLПриВыгрузке = Ложь;
+
Если СписокВременныхФайлов = Неопределено Тогда
СписокВременныхФайлов = Новый СписокЗначений();
КонецЕсли;
ИмяФайлаЗаписей = ПолучитьИмяВременногоФайла();
- СписокВременныхФайлов.Добавить(ИмяФайлаЗаписей);
+ СписокВременныхФайлов.Добавить(ИмяФайлаЗаписей);
ВременныйФайЗаписей = Новый ЗаписьТекста;
Попытка
@@ -7839,9 +7840,8 @@
Исключение
- СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(8);
- ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(1000, ОписаниеОшибки(), ИмяФайлаЗаписей + ": " + НСтр("ru = 'Ошибка при создании временного файла для выгрузки данных'"));
-
+ ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(1000, ОписаниеОшибки(), Нстр("ru = 'Ошибка при создании временного файла для выгрузки данных'"));
+
КонецПопытки;
ИнформацияДляЗаписиВФайл = УзелКоллекцииОбъектов.Закрыть();
@@ -9151,7 +9151,7 @@
КонецЕсли;
Исключение
- ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(64, ОписаниеОшибки(), ПКО, Источник, НСтр("ru = 'ПередКонвертациейОбъекта (глобальный)'"));
+ ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(64, ОписаниеОшибки(), ПКО, Источник, Нстр("ru = 'ПередКонвертациейОбъекта (глобальный)'"));
КонецПопытки;
Если Отказ Тогда // Отказ от дальнейшей обработки правила
@@ -9160,11 +9160,10 @@
КонецЕсли;
КонецЕсли;
-
-
+
// Обработчик ПередВыгрузкой
Если ПКО.ЕстьОбработчикПередВыгрузкой Тогда
-
+
Попытка
Если ФлагРежимОтладкиОбработчиков Тогда
@@ -9187,7 +9186,7 @@
КонецЕсли;
КонецЕсли;
-
+
// Возможно такие данные уже выгружались
Если Не ВсеОбъектыВыгружены Тогда
@@ -9231,7 +9230,7 @@
Нпп = мСчетчикНПП;
КонецЕсли;
-
+
// Это позволит избежать циклических ссылок
Если ЗапоминатьВыгруженные Тогда
@@ -9246,9 +9245,9 @@
КонецЕсли;
КонецЕсли;
-
+
КонецЕсли;
-
+
СоответствиеЗначений = ПКО.Значения;
КоличествоЭлементовСоответствияЗначений = СоответствиеЗначений.Количество();
@@ -9278,19 +9277,19 @@
И КоличествоЭлементовСоответствияЗначений > 0 Тогда
ИмяПредопределенногоЭлемента = СоответствиеЗначений[Источник];
-
+
Иначе
- ИмяПредопределенногоЭлемента = Неопределено;
+ ИмяПредопределенногоЭлемента = Неопределено;
КонецЕсли;
- КонецЕсли;
+ КонецЕсли;
Если ИмяПредопределенногоЭлемента <> Неопределено Тогда
КоличествоЭлементовСоответствияЗначений = 0;
- КонецЕсли;
+ КонецЕсли;
- Иначе
- ИмяПредопределенногоЭлемента = Неопределено;
+ Иначе
+ ИмяПредопределенногоЭлемента = Неопределено;
КонецЕсли;
НеНужноВыгружатьПоСоответствиюЗначений = (КоличествоЭлементовСоответствияЗначений = 0);
@@ -9307,7 +9306,7 @@
Если СтруктураСвойств.ИмяТипа = "Перечисление"
И Найти(ПКО.Приемник, "ПеречислениеСсылка.") > 0 Тогда
- УзелСсылки = "";
+ УзелСсылки = "";
Иначе
@@ -9325,10 +9324,10 @@
Если ПКО.СвойстваПоиска.Количество() > 0
ИЛИ ИмяПредопределенногоЭлемента <> Неопределено Тогда
-
+
// Формируем узел ссылки
УзелСсылки = СоздатьУзел("Ссылка");
-
+
Если НужноЗапоминатьОбъект Тогда
Если ЭтоПравилоСГлобальнойВыгрузкойОбъектов Тогда
@@ -9342,11 +9341,11 @@
ВыгрузитьТолькоСсылку = ПКО.НеВыгружатьОбъектыСвойствПоСсылкам ИЛИ ТолькоПолучитьУзелСсылки;
Если НеСоздаватьЕслиНеНайден Тогда
- УстановитьАтрибут(УзелСсылки, "НеСоздаватьЕслиНеНайден", НеСоздаватьЕслиНеНайден);
+ УстановитьАтрибут(УзелСсылки, "НеСоздаватьЕслиНеНайден", НеСоздаватьЕслиНеНайден);
КонецЕсли;
Если ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD Тогда
- УстановитьАтрибут(УзелСсылки, "ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD", ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD);
+ УстановитьАтрибут(УзелСсылки, "ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD", ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD);
КонецЕсли;
ВыгрузитьСвойства(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКО.СвойстваПоиска,
@@ -9358,7 +9357,7 @@
Если НужноЗапоминатьОбъект Тогда
ВыгруженныеОбъекты[КлючВыгружаемыхДанных] = УзелСсылки;
-
+
КонецЕсли;
Иначе
@@ -9370,10 +9369,10 @@
// Поиск в соответствии значений по ПКЗ
Если УзелСсылки = Неопределено Тогда
// по Соответствию значений не нашли - пробуем найти по свойствам поиска
- СтруктураЗаписи = Новый Структура("Источник,ТипИсточника", Источник, ТипЗнч(Источник));
+ СтруктураЗаписи = Новый Структура("Источник,ТипИсточника", Источник, ТипЗнч(Источник));
ЗаписатьВПротоколВыполнения(71, СтруктураЗаписи);
Если СтрокаВСтекеВыгрузки <> Неопределено Тогда
- мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
+ мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
КонецЕсли;
ТекущийУровеньВложенностиВыгрузитьПоПравилу = ТекущийУровеньВложенностиВыгрузитьПоПравилу - 1;
Возврат Неопределено;
@@ -9384,24 +9383,22 @@
КонецЕсли;
Если СтрокаВСтекеВыгрузки <> Неопределено Тогда
- мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
+ мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
КонецЕсли;
ТекущийУровеньВложенностиВыгрузитьПоПравилу = ТекущийУровеньВложенностиВыгрузитьПоПравилу - 1;
Возврат УзелСсылки;
КонецЕсли;
-
-
- Если ТолькоПолучитьУзелСсылки
- Или ВсеОбъектыВыгружены Тогда
-
- Если СтрокаВСтекеВыгрузки <> Неопределено Тогда
- мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
+
+ Если ТолькоПолучитьУзелСсылки Или ВсеОбъектыВыгружены Тогда
+
+ Если СтрокаВСтекеВыгрузки <> Неопределено Тогда
+ мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
КонецЕсли;
ТекущийУровеньВложенностиВыгрузитьПоПравилу = ТекущийУровеньВложенностиВыгрузитьПоПравилу - 1;
Возврат УзелСсылки;
- КонецЕсли;
+ КонецЕсли;
Если Приемник = Неопределено Тогда
@@ -9461,7 +9458,7 @@
Если Отказ Тогда // отказ от записи объекта в файл
Если СтрокаВСтекеВыгрузки <> Неопределено Тогда
- мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
+ мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
КонецЕсли;
ТекущийУровеньВложенностиВыгрузитьПоПравилу = ТекущийУровеньВложенностиВыгрузитьПоПравилу - 1;
Возврат УзелСсылки;
@@ -9472,12 +9469,12 @@
// Выгрузка свойств
Если СтандартнаяОбработка Тогда
- ВыгрузитьСвойства(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКО.Свойства, , ВыборкаДляВыгрузкиДанных, ,
+ ВыгрузитьСвойства(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКО.Свойства, , ВыборкаДляВыгрузкиДанных, ,
ПКО.НеВыгружатьОбъектыСвойствПоСсылкам ИЛИ ТолькоПолучитьУзелСсылки, СписокВременныхФайлов);
- КонецЕсли;
+ КонецЕсли;
- // Обработчик ПослеВыгрузки
+ // Обработчик ПослеВыгрузки
Если ПКО.ЕстьОбработчикПослеВыгрузки Тогда
Попытка
@@ -9491,15 +9488,15 @@
Выполнить(ПКО.ПослеВыгрузки);
КонецЕсли;
-
+
Исключение
ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(43, ОписаниеОшибки(), ПКО, Источник, "ПослеВыгрузкиОбъекта");
КонецПопытки;
-
+
Если Отказ Тогда // отказ от записи объекта в файл
Если СтрокаВСтекеВыгрузки <> Неопределено Тогда
- мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
+ мСтекВызововВыгрузкиДанных.Удалить(СтрокаВСтекеВыгрузки);
КонецЕсли;
ТекущийУровеньВложенностиВыгрузитьПоПравилу = ТекущийУровеньВложенностиВыгрузитьПоПравилу - 1;
Возврат УзелСсылки;
@@ -9507,18 +9504,17 @@
КонецЕсли;
КонецЕсли;
-
+
Если СписокВременныхФайлов = Неопределено Тогда
// Запись объекта в файл
- Приемник.ЗаписатьКонецЭлемента();
-
- ЗаписатьВФайл(Приемник);
+ Приемник.ЗаписатьКонецЭлемента();
+ ЗаписатьВФайл(Приемник);
Иначе
ЗаписатьВФайл(Приемник);
-
+
ВременныйФайл = Новый ЧтениеТекста;
Для каждого ИмяВременногоФайла Из СписокВременныхФайлов Цикл
@@ -9531,7 +9527,7 @@
СтрокаВременногоФайла = ВременныйФайл.ПрочитатьСтроку();
Пока СтрокаВременногоФайла <> Неопределено Цикл
ЗаписатьВФайл(СтрокаВременногоФайла);
- СтрокаВременногоФайла = ВременныйФайл.ПрочитатьСтроку();
+ СтрокаВременногоФайла = ВременныйФайл.ПрочитатьСтроку();
КонецЦикла;
ВременныйФайл.Закрыть();
@@ -9612,12 +9608,10 @@
КонецЕсли;
-
ИмяПКО = Правило.ПравилоКонвертации;
Отказ = Ложь;
ИсходящиеДанные = Неопределено;
-
// Глобальный обработчик ПередВыгрузкойОбъекта
Если ЕстьГлобальныйОбработчикПередВыгрузкойОбъекта Тогда
@@ -9632,17 +9626,17 @@
Выполнить(Конвертация.ПередВыгрузкойОбъекта);
КонецЕсли;
-
+
Исключение
- ЗаписатьИнформациюОбОшибкеОбработчикиПВД(65, ОписаниеОшибки(), Правило.Имя, НСтр("ru = 'ПередВыгрузкойОбъектаВыборки (глобальный)'"), Объект);
+ ЗаписатьИнформациюОбОшибкеОбработчикиПВД(65, ОписаниеОшибки(), Правило.Имя, Нстр("ru = 'ПередВыгрузкойОбъектаВыборки (глобальный)'"), Объект);
КонецПопытки;
Если Отказ Тогда
Возврат;
КонецЕсли;
- КонецЕсли;
-
+ КонецЕсли;
+
// Обработчик ПередВыгрузкой
Если Не ПустаяСтрока(Правило.ПередВыгрузкой) Тогда
@@ -9655,9 +9649,9 @@
Иначе
Выполнить(Правило.ПередВыгрузкой);
-
+
КонецЕсли;
-
+
Исключение
ЗаписатьИнформациюОбОшибкеОбработчикиПВД(33, ОписаниеОшибки(), Правило.Имя, "ПередВыгрузкойОбъектаВыборки", Объект);
КонецПопытки;
@@ -9666,12 +9660,11 @@
Возврат;
КонецЕсли;
- КонецЕсли;
-
- УзелСсылки = Неопределено;
-
+ КонецЕсли;
+
+ УзелСсылки = Неопределено;
+
ВыгрузитьПоПравилу(Объект, , ИсходящиеДанные, , ИмяПКО, УзелСсылки, , , , ВыборкаДляВыгрузкиДанных);
-
// Глобальный обработчик ПослеВыгрузкиОбъекта
Если ЕстьГлобальныйОбработчикПослеВыгрузкиОбъекта Тогда
@@ -9689,13 +9682,12 @@
КонецЕсли;
Исключение
- ЗаписатьИнформациюОбОшибкеОбработчикиПВД(69, ОписаниеОшибки(), Правило.Имя, НСтр("ru = 'ПослеВыгрузкиОбъектаВыборки (глобальный)'"), Объект);
+ ЗаписатьИнформациюОбОшибкеОбработчикиПВД(69, ОписаниеОшибки(), Правило.Имя, Нстр("ru = 'ПослеВыгрузкиОбъектаВыборки (глобальный)'"), Объект);
КонецПопытки;
КонецЕсли;
-
- // Обработчик ПослеВыгрузки
+ // Обработчик ПослеВыгрузки
Если Не ПустаяСтрока(Правило.ПослеВыгрузки) Тогда
Попытка
@@ -10103,22 +10095,19 @@
ПКО = Правила[ИмяПКО];
КонецЕсли;
-
-
+
Если ФлагКомментироватьОбработкуОбъектов Тогда
СтрокаСообщения = ПодставитьПараметрыВСтроку(Нстр("ru = 'Правило выгрузки данных: %1 (%2)'"), СокрЛП(Правило.Имя), СокрЛП(Правило.Наименование));
ЗаписатьВПротоколВыполнения(СтрокаСообщения, , Ложь, , 4);
КонецЕсли;
-
// Обработчик ПередОбработкой
- Отказ = Ложь;
+ Отказ = Ложь;
ИсходящиеДанные = Неопределено;
ВыборкаДанных = Неопределено;
-
-
+
Если Не ПустаяСтрока(Правило.ПередОбработкой) Тогда
Попытка
@@ -10136,9 +10125,9 @@
Исключение
ЗаписатьИнформациюОбОшибкеОбработчикиПВД(31, ОписаниеОшибки(), Правило.Имя, "ПередОбработкойВыгрузкиДанных");
-
+
КонецПопытки;
-
+
Если Отказ Тогда
Возврат;
@@ -10146,19 +10135,17 @@
КонецЕсли;
КонецЕсли;
-
-
+
// Стандартная выборка с отбором
Если Правило.СпособОтбораДанных = "СтандартнаяВыборка" И Правило.ИспользоватьОтбор Тогда
-
+
Свойства = Менеджеры[Правило.ОбъектВыборки];
ИмяТипа = Свойства.ИмяТипа;
ВыборкаДляПКО = Неопределено;
Выборка = ПолучитьВыборкуДляВыгрузкиСОграничениями(Правило, ВыборкаДляПКО, Свойства);
- ЭтоНеСсылочныйТип = ИмяТипа = "РегистрСведений"
- ИЛИ ИмяТипа = "РегистрБухгалтерии";
+ ЭтоНеСсылочныйТип = ИмяТипа = "РегистрСведений" Или ИмяТипа = "РегистрБухгалтерии";
Пока Выборка.Следующий() Цикл
@@ -10169,7 +10156,7 @@
КонецЕсли;
КонецЦикла;
-
+
// Стандартная выборка без отбора
ИначеЕсли (Правило.СпособОтбораДанных = "СтандартнаяВыборка") Тогда
@@ -10178,7 +10165,7 @@
Если ИмяТипа = "Константы" Тогда
- ВыгрузитьНаборКонстант(Правило, Свойства, ИсходящиеДанные);
+ ВыгрузитьНаборКонстант(Правило, Свойства, ИсходящиеДанные);
Иначе
@@ -10195,7 +10182,6 @@
ВыбиратьВсеПоля = Правило.ВыбиратьДанныеДляВыгрузкиОднимЗапросом;
КонецЕсли;
-
Выборка = ПолучитьВыборкуДляВыгрузкиОчисткиДанных(Свойства, ИмяТипа, , , ВыбиратьВсеПоля);
ВыборкаДляПКО = ?(Правило.ВыбиратьДанныеДляВыгрузкиОднимЗапросом, Выборка, Неопределено);
@@ -10553,31 +10539,30 @@
Выполнить(ПоследняяСтрокаПравилаВыгрузки.ПослеОбработки);
КонецЕсли;
-
+
Исключение
-
+
ЗаписатьИнформациюОбОшибкеОбработчикиПВД(32, ОписаниеОшибки(), ПоследняяСтрокаПравилаВыгрузки.Имя, "ПослеОбработкиВыгрузкиДанных");
-
+
КонецПопытки;
- КонецЕсли;
+ КонецЕсли;
КонецЕсли;
-
-
// перед обработкой
Если ТекущаяСтрокаПравилаВыгрузки <> Неопределено Тогда
Если ФлагКомментироватьОбработкуОбъектов Тогда
+
СтрокаСообщения = ПодставитьПараметрыВСтроку(Нстр("ru = 'Правило выгрузки данных: %1 (%2)'"),
СокрЛП(ТекущаяСтрокаПравилаВыгрузки.Имя), СокрЛП(ТекущаяСтрокаПравилаВыгрузки.Наименование));
ЗаписатьВПротоколВыполнения(СтрокаСообщения, , Ложь, , 4);
-
+
КонецЕсли;
-
+
// Обработчик ПередОбработкой
- Отказ = Ложь;
+ Отказ = Ложь;
ИсходящиеДанные = Неопределено;
ВыборкаДанных = Неопределено;
@@ -10598,26 +10583,24 @@
Исключение
ЗаписатьИнформациюОбОшибкеОбработчикиПВД(31, ОписаниеОшибки(), ТекущаяСтрокаПравилаВыгрузки.Имя, "ПередОбработкойВыгрузкиДанных");
-
+
КонецПопытки;
КонецЕсли;
-
+
Если Отказ Тогда
// удаляем правило из массива правил
ТекущаяСтрокаПравилаВыгрузки = Неопределено;
УдалитьСтрокуДереваПравилВыгрузкиПоТипуВыгрузкиИзМассива(ВременныйМассивПравилКонвертации, ТекущаяСтрокаПравилаВыгрузки);
- ОбъектДляПравилВыгрузки = Неопределено;
+ ОбъектДляПравилВыгрузки = Неопределено;
КонецЕсли;
- КонецЕсли;
-
+ КонецЕсли;
КонецЕсли;
-
// есть правило по которому нужно делать выгрузку данных
Если ТекущаяСтрокаПравилаВыгрузки <> Неопределено Тогда
@@ -10632,7 +10615,7 @@
Свойства = Менеджеры[ТекущаяСтрокаПравилаВыгрузки.ОбъектВыборки];
ВыгрузитьНаборКонстант(ТекущаяСтрокаПравилаВыгрузки, Свойства, ИсходящиеДанные);
- Иначе
+ Иначе
ВыгрузкаОбъектаВыборки(ОбъектДляПравилВыгрузки, ТекущаяСтрокаПравилаВыгрузки, , ИсходящиеДанные);
@@ -10665,7 +10648,6 @@
КоличествоНайденныхДляЗаписиОбъектов = 0;
КонецЕсли;
-
КонецЦикла;
Если ИспользоватьТранзакцииПриВыгрузкеДляПлановОбмена Тогда
@@ -10674,12 +10656,9 @@
// Завершаем запись сообщения
ЗаписьСообщения.ЗакончитьЗапись();
-
+
ЗаписьXML.Закрыть();
-
-
-
// событие после обработки
Если ПоследняяСтрокаПравилаВыгрузки <> Неопределено Тогда
@@ -10707,7 +10686,6 @@
КонецЕсли;
-
Исключение
Если ИспользоватьТранзакцииПриВыгрузкеДляПлановОбмена Тогда
@@ -10724,7 +10702,7 @@
ЗаписьXML.Закрыть();
Возврат Ложь;
-
+
КонецПопытки;
СтруктураДляУдаленияРегистрацииИзменений.МассивПКО = ВременныйМассивПравилКонвертации;
@@ -11895,14 +11873,14 @@
КонецЕсли;
ИначеЕсли ИмяУзла = "ПравилаОбмена" Тогда
-
- мБылиПрочитаныПравилаОбменаПриЗагрузке = Истина;
+
+ мБылиПрочитаныПравилаОбменаПриЗагрузке = Истина;
Если ТаблицаПравилКонвертации.Количество() = 0 Тогда
ЗагрузитьПравилаОбмена(ФайлОбмена, "ЧтениеXML");
Иначе
одПропустить(ФайлОбмена);
- КонецЕсли;
+ КонецЕсли;
ИначеЕсли ИмяУзла = "ИнформацияОТипахДанных" Тогда
@@ -11913,9 +11891,9 @@
Иначе
СтруктураЗаписи = Новый Структура("ИмяУзла", ИмяУзла);
ЗаписатьВПротоколВыполнения(9, СтруктураЗаписи);
- КонецЕсли;
+ КонецЕсли;
- КонецЦикла;
+ КонецЦикла;
Исключение
@@ -11927,7 +11905,7 @@
ФайлОбмена.Закрыть();
Возврат;
- КонецПопытки;
+ КонецПопытки;
КонецПроцедуры
@@ -12028,7 +12006,7 @@
КонецЕсли;
Исключение
- СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(22, ОписаниеОшибки(), НСтр("ru = 'ПередЗагрузкойДанных (конвертация)'"));
+ СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(22, ОписаниеОшибки(), Нстр("ru = 'ПередЗагрузкойДанных (конвертация)'"));
Отказ = Истина;
КонецПопытки;
@@ -12088,7 +12066,7 @@
КонецЕсли;
Исключение
- СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(23, ОписаниеОшибки(), НСтр("ru = 'ПослеЗагрузкиДанных (конвертация)'"));
+ СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(23, ОписаниеОшибки(), Нстр("ru = 'ПослеЗагрузкиДанных (конвертация)'"));
КонецПопытки;
КонецЕсли;
@@ -12217,7 +12195,7 @@
мОбработкаДляЗагрузкиДанных.ФайлОбмена.УстановитьСтроку(ИнформацияДляЗаписиВФайл);
- мОбработкаДляЗагрузкиДанных.ПроизвестиЧтениеДанных(СтрокаОшибкиВБазеПриемнике);
+ мОбработкаДляЗагрузкиДанных.ПроизвестиЧтениеДанных(СтрокаОшибкиВБазеПриемнике);
Если Не ПустаяСтрока(СтрокаОшибкиВБазеПриемнике) Тогда
@@ -12479,8 +12457,8 @@
Выполнить(Конвертация.ПередВыгрузкойДанных);
- КонецЕсли;
-
+ КонецЕсли;
+
Исключение
ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(62, ОписаниеОшибки(), Нстр("ru = 'ПередВыгрузкойДанных (конвертация)'"));
Отказ = Истина;
@@ -12500,7 +12478,7 @@
// нужно параметры передать в приемник
ПередатьДополнительныеПараметрыВПриемник();
-
+
ТекстСобытияПослеЗагрузкиПараметров = "";
Если Конвертация.Свойство("ПослеЗагрузкиПараметров", ТекстСобытияПослеЗагрузкиПараметров)
И Не ПустаяСтрока(ТекстСобытияПослеЗагрузкиПараметров) Тогда
@@ -12508,13 +12486,13 @@
ЗаписьСобытия = Новый ЗаписьXML;
ЗаписьСобытия.УстановитьСтроку();
одЗаписатьЭлемент(ЗаписьСобытия, "АлгоритмПослеЗагрузкиПараметров", ТекстСобытияПослеЗагрузкиПараметров);
- ЗаписатьВФайл(ЗаписьСобытия);
-
+ ЗаписатьВФайл(ЗаписьСобытия);
+
КонецЕсли;
СоответствиеУзловИПравилВыгрузки = Новый Соответствие();
СтруктураДляУдаленияРегистрацииИзменений = Новый Соответствие();
-
+
ОбработатьПравилаВыгрузки(ТаблицаПравилВыгрузки.Строки, СоответствиеУзловИПравилВыгрузки);
УдачноВыгруженоПоПланамОбмена = ОбработатьВыгрузкуДляПлановОбмена(СоответствиеУзловИПравилВыгрузки, СтруктураДляУдаленияРегистрацииИзменений);
@@ -12525,7 +12503,6 @@
КонецЕсли;
-
// Обработчик ПослеВыгрузкиДанных
Попытка
diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Templates/ОбщиеПроцедурыФункции/Template.txt b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Templates/ОбщиеПроцедурыФункции/Template.txt
index aec85c49a..2d77bb51e 100644
--- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Templates/ОбщиеПроцедурыФункции/Template.txt
+++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Templates/ОбщиеПроцедурыФункции/Template.txt
@@ -32,7 +32,7 @@
// ОБРАБОТЧИКИ ОЧИСТКИ ДАННЫХ
#Область Предупреждение_Комментарий
////////////////////////////////////////////////////////////////////////////////
-// !!!ВНИМАНИЕ!!!
+// ВНИМАНИЕ
// ИЗМЕНЯТЬ КОД В ЭТОМ БЛОКЕ (НИЖЕ) ЗАПРЕЩЕНО!
////////////////////////////////////////////////////////////////////////////////
#Область ОбщиеПроцедурыФункции_Комментарий
@@ -328,7 +328,7 @@
// Читает текст элемента и приводит значение к указанному типу
//
// Параметры:
-// Объект - объект типа XMLЧтение, из которого осуществлется чтение
+// Объект - объект типа XMLЧтение, из которого осуществляется чтение
// Тип - тип получаемого значения
// ИскатьПоСвойству - для ссылочных типов может быть указано свойство, по которому
// следует искать объект: "Код", "Наименование", <ИмяРеквизита>, "Имя" (предопределенного значения)
@@ -352,24 +352,24 @@
// не является ошибкой проверки конфигурации
//
// Параметры:
-// Значение - значение перечисления
+// Значение - значение перечисления
//
// Возвращаемое значение:
-// Строка - имя переданного значения перечисления.
+// Строка - имя переданного значения перечисления.
//
Функция одИмяЗначенияПеречисления(Значение) Экспорт
-
- Возврат ОбщиеПроцедурыФункции.одИмяЗначенияПеречисления(Значение);
+
+ Возврат ОбщиеПроцедурыФункции.одИмяЗначенияПеречисления(Значение);
КонецФункции
// Определяет заполнено ли переданное значение
//
-// Параметры:
-// Значение - значение, заполенение которого надо проверить
+// Параметры:
+// Значение - значение, заполнение которого надо проверить
//
// Возвращаемое значение:
-// Истина - значение не заполнено, ложь - иначе.
+// Истина - значение не заполнено, ложь - иначе.
//
Функция одПустое(Значение, ЭтоNULL=Ложь) Экспорт
@@ -380,28 +380,28 @@
// Возвращает объект ОписаниеТипов, содержащий указанный тип.
//
// Параметры:
-// ЗначениеТипа - строка с именем типа или значение типа Тип.
-//
+// ЗначениеТипа - строка с именем типа или значение типа Тип.
+//
// Возвращаемое значение:
-// ОписаниеТипов
+// ОписаниеТипов
//
Функция одОписаниеТипа(ЗначениеТипа) Экспорт
Возврат ОбщиеПроцедурыФункции.одОписаниеТипа(ЗначениеТипа);
-
+
КонецФункции
// Возвращает пустое (дефолтное) значение указанного типа
//
// Параметры:
-// Тип - строка с именем типа или значение типа Тип.
+// Тип - строка с именем типа или значение типа Тип.
//
// Возвращаемое значение:
-// Пустое значение указанного типа.
+// Пустое значение указанного типа.
//
Функция одПолучитьПустоеЗначение(Тип) Экспорт
-
- Возврат ОбщиеПроцедурыФункции.одПолучитьПустоеЗначение(Тип);
+
+ Возврат ОбщиеПроцедурыФункции.одПолучитьПустоеЗначение(Тип);
КонецФункции
@@ -416,33 +416,33 @@
// Возвращаемое значение:
// Найденный объект информационной базы.
//
-Функция одНайтиОбъектПоСвойству(Менеджер, Свойство, Значение,
- НайденныйОбъектПоУникальномуИдентификатору = Неопределено,
- ОбщаяСтруктураСвойств = Неопределено, ОбщиеСвойстваПоиска = Неопределено,
- РежимПоискаОсновногоОбъекта = Истина, СтрокаЗапросаПоискаПоУникальномуИдентификатору = "") Экспорт
-
- Возврат ОбщиеПроцедурыФункции.одНайтиОбъектПоСвойству(Менеджер, Свойство, Значение,
- НайденныйОбъектПоУникальномуИдентификатору,
- ОбщаяСтруктураСвойств, ОбщиеСвойстваПоиска,
- РежимПоискаОсновногоОбъекта, СтрокаЗапросаПоискаПоУникальномуИдентификатору);
+Функция одНайтиОбъектПоСвойству(Менеджер, Свойство, Значение,
+ НайденныйОбъектПоУникальномуИдентификатору = Неопределено,
+ ОбщаяСтруктураСвойств = Неопределено, ОбщиеСвойстваПоиска = Неопределено,
+ РежимПоискаОсновногоОбъекта = Истина,
+ СтрокаЗапросаПоискаПоУникальномуИдентификатору = "") Экспорт
+
+ Возврат ОбщиеПроцедурыФункции.одНайтиОбъектПоСвойству(Менеджер, Свойство, Значение,
+ НайденныйОбъектПоУникальномуИдентификатору,
+ ОбщаяСтруктураСвойств, ОбщиеСвойстваПоиска,
+ РежимПоискаОсновногоОбъекта, СтрокаЗапросаПоискаПоУникальномуИдентификатору);
КонецФункции
// Осуществляет простой поиск объекта информационной базы по указанному свойству.
//
// Параметры:
-// Стр - Строка - значение свойства, по которому осуществляется
-// поиск объект;
-// Тип - тип искомого объекта;
-// Свойство - Строка - имя свойства, по-которому ищем объект.
+// Стр - Строка - значение свойства, по которому осуществляется поиск объекта;
+// Тип - тип искомого объекта;
+// Свойство - Строка - имя свойства, по-которому ищем объект.
//
// Возвращаемое значение:
-// Найденный объект информационной базы
+// Найденный объект информационной базы
//
Функция одПолучитьЗначениеПоСтроке(Стр, Тип, Свойство = "") Экспорт
-
+
Возврат ОбщиеПроцедурыФункции.одПолучитьЗначениеПоСтроке(Стр, Тип, Свойство);
-
+
КонецФункции
// Возвращает строковое представление типа значения
@@ -454,7 +454,7 @@
// Строка - строковое представление типа значения
//
Функция одТипЗначенияСтрокой(ЗначениеИлиТип) Экспорт
-
+
Возврат ОбщиеПроцедурыФункции.одТипЗначенияСтрокой(ЗначениеИлиТип);
КонецФункции
@@ -472,7 +472,7 @@
// Строка - XML представление переданного объекта ОписаниеТипов
//
Функция одПолучитьXMLПредставлениеОписанияТипов(ОписаниеТипов) Экспорт
-
+
Возврат ОбщиеПроцедурыФункции.одПолучитьXMLПредставлениеОписанияТипов(ОписаниеТипов);
КонецФункции
@@ -483,29 +483,29 @@
// Разбирает строку на две части: до подстроки разделителя и после.
//
// Параметры:
-// Стр - разбираемая строка;
-// Разделитель - подстрока-разделитель:
+// Стр - разбираемая строка;
+// Разделитель - подстрока-разделитель:
// Режим - 0 - разделитель в возвращаемые подстроки не включается;
// 1 - разделитель включается в левую подстроку;
// 2 - разделитель включается в правую подстроку.
//
// Возвращаемое значение:
-// Правая часть строки - до символа-разделителя.
+// Правая часть строки - до символа-разделителя.
//
Функция ОтделитьРазделителем(Стр, Знач Разделитель, Режим=0) Экспорт
-
- Возврат ОбщиеПроцедурыФункции.ОтделитьРазделителем(Стр, Разделитель, Режим);
+
+ Возврат ОбщиеПроцедурыФункции.ОтделитьРазделителем(Стр, Разделитель, Режим);
КонецФункции
// Преобразует значения из строки в массив, используя указанный разделитель
//
// Параметры:
-// Стр - Разбираемая строка
-// Разделитель - подстрока разделитель
+// Стр - Разбираемая строка
+// Разделитель - подстрока разделитель
//
// Возвращаемое значение:
-// Массив значений
+// Массив значений
//
Функция МассивИзСтроки(Знач Стр, Разделитель=",") Экспорт
@@ -513,6 +513,16 @@
КонецФункции
+// Возвращает строку номера без символьных префиксов
+// Например:
+// ПолучитьСтроковыйНомерБезПрефиксов("УТ0000001234") = "0000001234"
+//
+// Параметры:
+// Номер - Строка - номер, из которого необходимо вычислить результат функции
+//
+// Возвращаемое значение:
+// Строка номера без символьных префиксов
+//
Функция ПолучитьСтроковыйНомерБезПрефиксов(Номер) Экспорт
Возврат ОбщиеПроцедурыФункции.ПолучитьСтроковыйНомерБезПрефиксов(Номер);
@@ -530,9 +540,9 @@
// Префикс строки
//
Функция ПолучитьПрефиксЧислоНомера(Знач Стр, ЧисловаяЧасть = "", Режим = "") Экспорт
-
+
Возврат ОбщиеПроцедурыФункции.ПолучитьПрефиксЧислоНомера(Стр, ЧисловаяЧасть, Режим);
-
+
КонецФункции
// Приводит номер (код) к требуемой длине. При этом выделяется префикс
@@ -550,10 +560,12 @@
// Возвращаемое значение:
// Строка - код или номер, приведенная к требуемой длине.
//
-Функция ПривестиНомерКДлине(Знач Стр, Длина, ДобавлятьНулиЕслиДлинаНеМеньшеТекущейДлиныНомера = Истина, Префикс = "") Экспорт
-
- Возврат ОбщиеПроцедурыФункции.ПривестиНомерКДлине(Стр, Длина, ДобавлятьНулиЕслиДлинаНеМеньшеТекущейДлиныНомера, Префикс);
-
+Функция ПривестиНомерКДлине(Знач Стр, Длина, ДобавлятьНулиЕслиДлинаНеМеньшеТекущейДлиныНомера = Истина,
+ Префикс = "") Экспорт
+
+ Возврат ОбщиеПроцедурыФункции.ПривестиНомерКДлине(Стр, Длина,
+ ДобавлятьНулиЕслиДлинаНеМеньшеТекущейДлиныНомера, Префикс);
+
КонецФункции
// Добавляет к префиксу номера или кода подстроку
@@ -564,8 +576,8 @@
//
// Параметры:
// Стр - Строка. Номер или код;
-// Добавок - добаляемая к префиксу подстрока;
-// Длина - требуемая результрирующая длина строки;
+// Добавок - добавляемая к префиксу подстрока;
+// Длина - требуемая результирующая длина строки;
// Режим - "Слева" - подстрока добавляется слева к префиксу, иначе - справа.
//
// Возвращаемое значение:
@@ -599,7 +611,7 @@
// Сохраняет в файл указанный xml-узел
//
// Параметры:
-// Узел - xml-узел, сохранямый в файл
+// Узел - xml-узел, сохраняемый в файл
//
Процедура ЗаписатьВФайл(Узел) Экспорт
@@ -626,22 +638,31 @@
КонецФункции
-
////////////////////////////////////////////////////////////////////////////////
//
+// Выполняет передачу строки данных для загрузки в базе-приемнике
+//
+// Параметры:
+// ИнформацияДляЗаписиВФайл - Строка (текст XML) - строка с данными
+// СтрокаОшибкиВБазеПриемнике - Строка - содержит описание ошибки при загрузке в базе-приемнике
+//
Процедура ПередатьИнформациюОЗаписиВПриемник(ИнформацияДляЗаписиВФайл, СтрокаОшибкиВБазеПриемнике = "") Экспорт
ОбщиеПроцедурыФункции.ПередатьИнформациюОЗаписиВПриемник(ИнформацияДляЗаписиВФайл, СтрокаОшибкиВБазеПриемнике);
КонецПроцедуры
+// Выполняет запись имени, типа и значения параметра в файл сообщения обмена для передачи в базу-приемник
+//
Процедура ПередатьОдинПараметрВПриемник(Имя, ИсходноеЗначениеПараметра, ПравилоКонвертации = "") Экспорт
ОбщиеПроцедурыФункции.ПередатьОдинПараметрВПриемник(Имя, ИсходноеЗначениеПараметра, ПравилоКонвертации);
КонецПроцедуры
+// Передает все дополнительные параметры в приемник
+//
Процедура ПередатьДополнительныеПараметрыВПриемник() Экспорт
ОбщиеПроцедурыФункции.ПередатьДополнительныеПараметрыВПриемник();
diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form
index de74e75a2..d792b762f 100644
--- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form
+++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form
@@ -84,7 +84,7 @@
falsetrue
- Web.DarkBlue
+ Style.ПоясняющийТекстLeft
@@ -192,7 +192,7 @@
falsetrue
- Web.DarkBlue
+ Style.ПоясняющийТекстLeft
@@ -240,13 +240,6 @@
ruИтоги
-
- System.DefaultGUIFont
- true
- false
- false
- false
- ruБыстрый доступ итоги
@@ -275,7 +268,7 @@
- ГруппаБыстрыйДоступАггрегаты
+ ГруппаБыстрыйДоступАгрегаты214ГруппаПерестроениеИЗаполнениеАгрегатов
@@ -346,7 +339,7 @@
falsetrue
- Web.DarkBlue
+ Style.ПоясняющийТекстLeft
@@ -454,7 +447,7 @@
falsetrue
- Web.DarkBlue
+ Style.ПоясняющийТекстLeft
@@ -502,19 +495,12 @@
ruАгрегаты
-
- System.DefaultGUIFont
- true
- false
- false
- false
- ruГруппа быстрый доступ агрегаты
- ГруппаБыстрыйДоступАггрегатыExtendedTooltip
+ ГруппаБыстрыйДоступАгрегатыРасширеннаяПодсказка339Labeltrue
@@ -596,47 +582,6 @@
MoveDownMoveUpOutputList
-
- ИтогиНаименование
- 12
- true
- true
-
- true
-
-
- СписокИтогов.Наименование
-
-
- ИтогиНаименованиеExtendedTooltip
- 372
- Label
- true
- true
-
- Left
-
-
-
- ИтогиНаименованиеКонтекстноеМеню
- 13
- true
-
- InputField
- true
- Auto
- true
- Left
- true
-
- true
- true
- true
- true
- true
- Normal
-
- ИтогиИспользоватьИтоги14
@@ -674,24 +619,118 @@
true
-
- ИтогиИспользоватьТекущиеИтоги
- 16
+
+ СписокИтоговНаименованиеИРежим
+ 414
+
+ ИтогиНаименование
+ 12
+ true
+ true
+
+ true
+
+
+ СписокИтогов.Наименование
+
+
+ ИтогиНаименованиеExtendedTooltip
+ 372
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИтогиНаименованиеКонтекстноеМеню
+ 13
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ИтогиАгрегатыИтоги
+ 71
+ true
+ true
+
+ true
+
+
+ СписокИтогов.АгрегатыИтоги
+
+
+ ru
+ Какой режим использует регистр: итогов или агрегатов
+
+
+ ИтогиАгрегатыИтогиExtendedTooltip
+ 377
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИтогиАгрегатыИтогиКонтекстноеМеню
+ 72
+ true
+
+ InputField
+ true
+ Left
+ Auto
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+ System.DefaultGUIFont
+ false
+ true
+ false
+ false
+
+
+ truetruetrue
-
- СписокИтогов.ИспользоватьТекущиеИтоги
-
+
+ ru
+ Список итогов наименование и режим
+ ru
- Признак использования текущих итогов данным регистром.
+ Список итогов наименование и режим
- ИтогиИспользоватьТекущиеИтогиExtendedTooltip
- 374
+ СписокИтоговНаименованиеИРежимРасширеннаяПодсказка
+ 415Labeltruetrue
@@ -699,17 +738,12 @@
Left
-
- ИтогиИспользоватьТекущиеИтогиКонтекстноеМеню
- 17
- true
-
- CheckBoxField
- Auto
- true
- Left
- true
-
+ ColumnGroup
+
+ Vertical
+ auto
+ true
+ ИтогиПериодИтогов
@@ -763,6 +797,43 @@
Normal
+
+ ИтогиИспользоватьТекущиеИтоги
+ 16
+ true
+ true
+
+ true
+
+
+ СписокИтогов.ИспользоватьТекущиеИтоги
+
+
+ ru
+ Признак использования текущих итогов данным регистром.
+
+
+ ИтогиИспользоватьТекущиеИтогиExtendedTooltip
+ 374
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИтогиИспользоватьТекущиеИтогиКонтекстноеМеню
+ 17
+ true
+
+ CheckBoxField
+ Auto
+ true
+ Left
+ true
+
+ ИтогиРазделениеИтогов185
@@ -801,52 +872,6 @@
true
-
- ИтогиАгрегатыИтоги
- 71
- true
- true
-
- true
-
-
- СписокИтогов.АгрегатыИтоги
-
-
- ru
- Какой режим использует регистр: итогов или агрегатов
-
-
- ИтогиАгрегатыИтогиExtendedTooltip
- 377
- Label
- true
- true
-
- Left
-
-
-
- ИтогиАгрегатыИтогиКонтекстноеМеню
- 72
- true
-
- InputField
- true
- Left
- Auto
- true
- Left
- true
-
- true
- true
- true
- true
- true
- Normal
-
- СписокИтоговКоманднаяПанель11
@@ -871,7 +896,6 @@
Form.Command.ОбновитьСостояниеИтоговNormal
- AutotruetrueUserCmds
@@ -1369,10 +1393,10 @@
СписокИтоговСтрокаПоиска
- 414
+ 424СписокИтоговСтрокаПоискаРасширеннаяПодсказка
- 416
+ 426Labeltruetrue
@@ -1382,7 +1406,7 @@
СписокИтоговСтрокаПоискаКонтекстноеМеню
- 415
+ 425trueСписокИтогов
@@ -1392,10 +1416,10 @@
СписокИтоговСостояниеПросмотра
- 417
+ 427СписокИтоговСостояниеПросмотраРасширеннаяПодсказка
- 419
+ 429Labeltruetrue
@@ -1405,7 +1429,7 @@
СписокИтоговСостояниеПросмотраКонтекстноеМеню
- 418
+ 428trueViewStatusAddition
@@ -1416,10 +1440,10 @@
СписокИтоговУправлениеПоиском
- 420
+ 430СписокИтоговУправлениеПоискомРасширеннаяПодсказка
- 422
+ 432Labeltruetrue
@@ -1429,7 +1453,7 @@
СписокИтоговУправлениеПоискомКонтекстноеМеню
- 421
+ 431trueSearchControlAddition
@@ -1591,11 +1615,8 @@
ПрерыватьПриОшибке264
- truetrue
-
- true
-
+ ПрерыватьПриОшибке
@@ -1667,97 +1688,6 @@
falseNone
-
- АгрегатыПоРегистрамНаименование
- 59
- true
- true
-
- true
-
-
- АгрегатыПоРегистрам.Наименование
-
-
- АгрегатыПоРегистрамНаименованиеРасширеннаяПодсказка
- 397
- Label
- true
- true
-
- Left
-
-
-
- АгрегатыПоРегистрамНаименованиеКонтекстноеМеню
- 60
- true
-
- InputField
- true
- Auto
- true
- Left
- true
-
- 30
- true
- true
- true
- true
- true
- Normal
-
-
-
- АгрегатыПоРегистрамРежимАгрегатов
- 61
- true
- true
-
- true
-
-
- АгрегатыПоРегистрам.РежимАгрегатов
-
-
- АгрегатыПоРегистрамРежимАгрегатовРасширеннаяПодсказка
- 398
- Label
- true
- true
-
- Left
-
-
-
- АгрегатыПоРегистрамРежимАгрегатовКонтекстноеМеню
- 62
- true
-
- InputField
- true
- Auto
- true
- Left
- true
-
- true
- true
-
- ru
- BF=Итоги; BT=Агрегаты
-
-
- ru
- BF=Итоги; BT=Агрегаты
-
- true
- true
- true
- Normal
-
- АгрегатыПоРегистрамИспользованиеАгрегатов63
@@ -1769,6 +1699,7 @@
АгрегатыПоРегистрам.ИспользованиеАгрегатов
+ NoneruПризнак использования агрегатов для регистра.
@@ -1792,24 +1723,120 @@
trueAutotrue
+
+ CommonPicture.Успешно
+ Lefttrue
-
- АгрегатыПоРегистрамДатаПостроения
- 69
+
+ АгрегатыПоРегистрамНаименованиеИРежим
+ 420
+
+ АгрегатыПоРегистрамНаименование
+ 59
+ true
+ true
+
+ true
+
+
+ АгрегатыПоРегистрам.Наименование
+
+
+ АгрегатыПоРегистрамНаименованиеРасширеннаяПодсказка
+ 397
+ Label
+ true
+ true
+
+ Left
+
+
+
+ АгрегатыПоРегистрамНаименованиеКонтекстноеМеню
+ 60
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ АгрегатыПоРегистрамРежимАгрегатов
+ 61
+ true
+ true
+
+ true
+
+
+ АгрегатыПоРегистрам.РежимАгрегатов
+
+
+ АгрегатыПоРегистрамРежимАгрегатовРасширеннаяПодсказка
+ 398
+ Label
+ true
+ true
+
+ Left
+
+
+
+ АгрегатыПоРегистрамРежимАгрегатовКонтекстноеМеню
+ 62
+ true
+
+ InputField
+ true
+ Auto
+ Left
+ true
+
+ true
+ true
+
+ ru
+ БЛ='Используются данные итогов'; БИ='Используются данные агрегатов'
+
+
+ ru
+ БЛ='Используются данные итогов'; БИ='Используются данные агрегатов'
+
+ true
+ true
+ true
+ Normal
+
+ System.DefaultGUIFont
+ false
+ true
+ false
+ false
+
+
+ truetruetrue
-
- АгрегатыПоРегистрам.ДатаПостроения
-
- АгрегатыПоРегистрамДатаПостроенияРасширеннаяПодсказка
- 400
+ АгрегатыПоРегистрамНаименованиеИРежимРасширеннаяПодсказка
+ 421Labeltruetrue
@@ -1817,41 +1844,119 @@
Left
В данной форме задаются параметры перестроения использования агрегатов и получения списка оптимальных агрегатов.
Максимальный относительный размер - максимальная сумма размеров агрегатов в процентах от таблицы движений. Если не указан или равен нулю, то нет ограничения размера агрегатов.
Управление итогами включает в себя процедуры, связанные с итогами регистров накопления и бухгалтерии, а также агрегатами оборотных регистров накопления. Управление итогами разделяется на два режима:
Частно используемые возможности - позволяют "одним нажатием" выполнить наиболее частые действия, возникающие при обслуживании системы.
Полные возможности - позволяет выполнять все операции как с одним регистром, так и с произвольным списком регистров.
Для переключения режимов служит гиперссылка в правом нижнем углу формы. Форма запоминает режим открытия.
Данная обработка позволяет управлять индексом полнотекстового поиска, обновлять и очищать его. В клиент-серверном варианте обновление полнотекстового индекса выполняется автоматически.
\ No newline at end of file
diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Form.form b/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Form.form
index a040081a4..12a644045 100644
--- a/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Form.form
+++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Form.form
@@ -47,7 +47,7 @@
СтраницыНастроек16
- Подписи
+ ПодписьДляНового42ГруппаДляНовыхСообщений
@@ -424,6 +424,37 @@
Auto
+ true
+ true
+
+ true
+
+
+ ru
+ Подпись для нового
+
+
+ ru
+ Подпись для нового
+
+
+ ПодписьДляНовогоРасширеннаяПодсказка
+ 58
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ auto
+
+
+
+ ПодписьПриОтвете
+ 87ГруппаПриОтветеПересылке18
@@ -771,15 +802,15 @@
ru
- Подписи
+ Подпись при ответеru
- Подписи
+ Подпись при ответе
- ПодписиExtendedTooltip
- 58
+ ПодписьПриОтветеРасширеннаяПодсказка
+ 88Labeltruetrue
@@ -789,6 +820,7 @@
Page
+ Verticalauto
@@ -1218,15 +1250,11 @@
Left
-
- OnOpen
- ПриОткрытии
- OnCreateAtServerПриСозданииНаСервере
- LockOwner
+ DontBlocktruetrueVertical
diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Help/ru.html b/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Help/ru.html
index 772ef81dc..49f59b25b 100644
--- a/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Help/ru.html
+++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/НастройкиРаботыСПочтой/Help/ru.html
@@ -1,24 +1,51 @@
-
-
Настройки работы с почтой
+
+
Предназначена для настройки работы с почтой.
+
Перед тем как начать работать с почтовыми сообщениями, в программе необходимо настроить работу с почтой. Для этого в списке взаимодействий выполните команду Все действия (в интерфейсе Такси Еще) - Персональные настройки.
Настройка подписей производится на одноименной закладке. Можно создать подпись двух видов: для новых сообщений и для сообщений при ответе или пересылке. Установите флаг Включить для нужного вида подписи. Укажите формат подписи. Создание подписи в формате HTML позволит форматировать текст и вставлять в него картинки.
-
-
Важно. Создание подписей в формате HTML доступно, если это предусмотрено настройками программы. Данную настройку можно изменить в разделе Администрирование/Органайзер отредактировав значение флага Исходящие письма в формате HTML.
-
Важно. Если для учетной записи настроена подпись, то при создании письма подставляется подпись учетной записи.
Данные настройки можно выполнить на закладке Отслеживание писем. Установите флаги Уведомление о прочтении и Уведомление о доставке. Эти значения будут использоваться для каждого исходящего письма как значения по умолчанию, при этом их можно будет изменить.
для новых сообщений - на вкладке Подпись для нового.
+
+
для сообщений при ответе или пересылке - на вкладке Подпись при ответе.
+
Установите флажок Включать для нужного вида подписи. Выберите Формат подписи:
+
+
Обычный текст;
+
+
HTML. Создание подписи в формате HTML позволит форматировать текст и вставлять в него картинки.
+
+
Создание подписей в формате HTML доступно, если это предусмотрено настройками программы. Данную настройку можно изменить в разделе Администрирование - Органайзер, отредактировав значение флажка Исходящие письма в формате HTML.
+
Напишите подпись в соответствующем поле. При выборе формата HTML можно выбирать различные способы форматирования текста, вставлять картинки и гиперссылки. Текст можно форматировать с помощью соответствующих кнопок, а также команд меню Все действия (в интерфейсе Такси Еще).
Данные настройки можно выполнить на закладке Отслеживание писем. Доступны следующие варианты поведения программы при получении запросов уведомлений о прочтении писем (выберите один из вариантов с помощью переключателя):
+
Всегда отправлять уведомление - после установки во входящем электронном письме флажка Рассмотрено будет отправлено уведомление о прочтении.
Никогда не отправлять уведомление - запросы на отправку уведомления о прочтении будут игнорироваться.
-
Запрашивать перед тем как отправить уведомление - при установке флага Рассмотрено в письме будет задан вопрос о отправке уведомления о прочтении.
Установите флаг Отображать тело исходного письма при ответе или пересылке на закладке Прочее. Это значение будут использоваться для каждого исходящего письма как значение по умолчанию, при этом в самом письме его можно будет изменить.
Установите флаг Включать тело исходного письма при ответе или пересылке на закладке Прочее. Это значение будут использоваться для каждого исходящего письма как значение по умолчанию, при этом в самом письме его можно будет изменить.
-
\ No newline at end of file
+
Запрашивать перед тем как отправить уведомление - при установке в письме флажка Рассмотрено будет задан вопрос об отправке уведомления о прочтении.
В файловом режиме работы программы предусмотрена возможность Отправлять почтовые сообщения сразу после нажатия кнопки Отправить (по умолчанию письма отправляются по расписанию регламентного заданияПолучение и отправка электронных писем).
+
В файловом режиме письма можно отправить также с помощью команды Отправить и получить списка взаимодействий.
Открывается по соответствующей команде меню Все действия (в интерфейсе Такси Еще) из электронных писем.
+
Параметры письма:
+
Создано - для исходящего письма означает дату окончания редактирования письма перед отправкой, для входящего означает дату отправки письма.
+
Внутренний номер - номер, под которым письмо зарегистрировано в программе.
Отправлено - дата отправки письма, отображается только для исходящего письма.
Получено - дата получения письма, отображается только для входящего письма.
-
Включать тело исходного письма - доступна для изменения для исходящего письма в статус Черновик или Исходящее. Если данный флаг установлен, то к телу письма при отправке будет приложен текст письма основания.
-
Папка - текущая папка письма, доступна для изменения.
-
Уведомить о доставке - признак того что отправитель запрашивает уведомление о доставке. Доступен для изменения для исходящего письма в статус Черновик или Исходящее.
-
Уведомить о прочтении - признак того что отправитель запрашивает уведомление о прочтении. Доступен для изменения для исходящего письма в статус Черновик или Исходящее.
-
Идентификаторы - служебная информация о письме.
\ No newline at end of file
+
Включать тело исходного письма - можно изменить для исходящего письма в статусе Черновик или Исходящее. Если данный флажок включен, то к телу письма при отправке будет приложен текст письма-основания.
+
Папка - текущая папка письма, доступна для изменения. Нажмите Показать все, выберите нужную папку из списка.
+
Уведомить о доставке - признак того, что отправитель запрашивает уведомление о доставке. Доступен для изменения, если статус исходящего письма Черновик или Исходящее.
+
Уведомить о прочтении - признак того, что отправитель запрашивает уведомление о прочтении. Доступен для изменения, если статус исходящего письма Черновик или Исходящее.
+
Заголовки Интернета - служебная информация о входящем письме.
+
Идентификаторы - служебная информация об исходящем письме.
Предназначен для работы с документами взаимодействий.
+
Бизнес-процессы помимо обычного делопроизводства в настоящее время включают и общение партнеров между собой, т.е. их взаимодействие: между партнерами проходят различные встречи, переговоры, электронная переписка. В процессе общения принимаются важные решения, заключаются различные договоры, составляются другие документы, поэтому необходимо это взаимодействие также задокументировать.
+
Программа позволяет планировать, регистрировать, упорядочивать и работать с результатами взаимодействия - общения пользователей программы с кем-либо по поводу предмета взаимодействия. Например, один сотрудник может взаимодействовать с другим сотрудником (контактом) по поводу заказа клиента (предмета).
+
Программа позволяет выстраивать различные взаимодействия, возникшие на основании одного и того же предмета, в цепочку. В цепочке взаимодействий в качестве предмета у всех взаимодействий указывается одно, как правило, первое по времени взаимодействие. При этом в любой момент времени в любом взаимодействии из цепочки можно указать другой предмет, не являющийся взаимодействием, например, один из документов программы, программа после этого в автоматическом режиме поменяет предмет у всей цепочки. Например, переговоры с потенциальным клиентом, состоявшие из встреч, телефонных звонков и переписки (цепочки взаимодействий) закончились заказом клиента. В этом случае программа позволяет изменить предмет во всех взаимодействиях, предшествовавших заказу, на итоговый заказ клиента.
+
Кроме этого, для удобства работы с контактами программа формирует единую адресную книгу на основании контактной информации.
+
Список взаимодействий состоит из двух частей: в левой части списка обычно отображается панель навигации, в правой части - документы взаимодействий.
По предметам - панель навигации будет заполнена предметами взаимодействий. При позиционировании на предмете, в списке будут отображаться взаимодействия по данному предмету.
-
По контактам - панель навигации будет заполнена контактами, с которыми были взаимодействия. При позиционировании на контакте, в списке будут отображаться взаимодействия с данным контактом.
-
По папкам электронных писем - панель навигации будет доступными пользователю учетными записями и их папками. При позиционировании на папке в списке будут отображаться письма данной папки.
-
По закладкам - панель навигации будет заполнена закладками пользователя. При позиционировании на закладке в списке будет отображаться те взаимодействия, которые соответствуют отбору, настроенному в закладке.
-
По свойствам - для каждого дополнительного реквизита или сведения документов взаимодействий формируется отдельный вид панели навигации. При выборе такого вида навигации панель заполняется всеми возможными значениями данного дополнительного реквизита или сведения. При позиционировании на одном из значений, в списке взаимодействий отображаются только те документы, у которых соответствующее сведение имеет такое же значение.
-
По категориям - панель данного вида заполняется видами свойств документов взаимодействий, значениями которых могут быть либо Истина либо Ложь. При позиционировании на виде свойства в панели навигации в списке взаимодействий отображаются только те документы, у которых значение данного свойства Истина.
Да, можно, для этого надо ввести строку поиска в поле, расположенное в правой верхней части формы. Будет выполненный поиск по текстам, содержащимся в документах взаимодействий.
-
Данный поиск позволяет найти взаимодействия, для которых либо в самой форме, либо в текстах присоединенных файлов найдена строка, удовлетворяющая условиям.
-
После выполнения поиска в списке взаимодействий остаются только те, которые удовлетворяют условию поиска. При позиционировании на взаимодействии внизу на форме отображается информация о тексте, который совпадает с условием поиска.
-
В случае если ни одно взаимодействие найдено не будет, поле ввода строки поиска будет подсвечено красным.
-
Для того чтобы отменить отображение списка по результатам полнотекстового поиска необходимо очистить строку поиска.
-
-
Важно. Следует учитывать, что некоторые символы, введенные в строку поиска, будут трактоваться как служебные символы языка запросов полнотекстового поиска в данных. Информацию о списке таких служебных символов можно получить в справке (раздел 1С:Предприятие - Работа пользователя - Язык запросов полнотекстового поиска в данных).
В файловом варианте хранения информационной базы это возможно. Для этого можно воспользоваться командой Получить и отправить, расположенной в командной панели списка взаимодействий. В клиент-серверном варианте хранения информационной базы отправка и получение писем выполняются с определенным администратором системы интервалом.
Да, если вид панели навигации По папкам электронных писем. Если выполнено позиционировании на папке, в командной панели списка взаимодействий появляются соответствующие назначению папки команды. Например, для папки Входящие, будут доступны команды Ответить, Ответить всем, Переслать. При выполнении одной из этих команд будет выполнено соответствующее действие с письмом, на котором выполнено позиционирование в списке взаимодействий.
-
Для просмотра отложенных взаимодействий используется статус Отложенные. При установке этого статуса в списке отображаются все неотработанные взаимодействия, у которых заполнена информация в поле На контроле или Рассмотреть после.
Выделите документы, у которых необходимо установить признак Рассмотрено. Воспользуйтесь командой Рассмотрено (Ctrl+R) командной панели списка.
-
Для групповой установки признака Рассмотрено можно воспользоваться соответствующей командой контекстного меню панели навигации. В этом случае признак Рассмотрено будет установлен для всех документов, удовлетворяющих отбору списка. Например, при выполнении данной команды на папке Входящие, будет установлен признак Рассмотрено для всех писем данной папки.
Выделите документы, у которых необходимо снять признак Рассмотрено. Воспользуйтесь командой Снять признак рассмотрено (Alt+Shift+R), расположенной в меню Все действия списка взаимодействий.
Выделите документы, рассмотрение которых необходимо отложить. Воспользуйтесь командой Отложить рассмотрение командной панели.
-
Отложить рассмотрение несколько взаимодействий можно также воспользовавшись соответствующей командной контекстного меню панели навигации. В этом случае будет отложено рассмотрение взаимодействий, удовлетворяющих отбору списка. Например, при выполнении данной команды на папке Входящие, будет отложено рассмотрение всех писем данной папки.
Выделите документы, у которых необходимо установить новый предмет. Воспользуйтесь командой Установить предмет взаимодействия (Ctrl+G) командной панели списка.
-
Для групповой установки предмета взаимодействий можно воспользоваться соответствующей командой контекстного меню панели навигации. В этом случае выбранный предмет будет установлен для всех документов, удовлетворяющих отбору списка. Например, при выполнении данной команды на папке Входящие, будет установлен указанный предмет для всех писем данной папки.
Выделите документы, у которых необходимо установить ответственного. Воспользуйтесь командой Установить ответственного (Ctrl+M) командной панели списка.
-
Для групповой установки ответственного можно воспользоваться соответствующей командой контекстного меню панели навигации. В этом случае ответственный будет установлен для всех документов, удовлетворяющих отбору списка. Например, при выполнении данной команды на папке Входящие, будет установлен выбранный ответственный для всех писем данной папки.
Выделите одно или несколько писем. Воспользуйтесь командой Переместить в папку контекстного меню списка. Выберите папку, в которую необходимо перенести письма.
-
Если установлен вид навигации По папкам электронных писем то для перемещения писем в другую папку можно использовать перетаскивание. Выделите одно или несколько писем и перетащите их на папку в панели навигации.
Достаточно выделить в списке одно или несколько взаимодействий и воспользоваться командой Добавить в закладки контекстного меню списка. Будет создана закладка, включаюящая в себя отбор по выбранным взаимодействиям
-
Для создания закладки можно воспользоваться соответствующей командой контекстного меню панели навигации. В этом случае закладка будет создана для всех документов, удовлетворяющих отбору списка. Например, при выполнении данной команды на папке Входящие, будет создана закладка для всех писем данной папки.
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения: Низкая, Обычная (значение по умолчанию), Высокая. Отображается в списке взаимодействий специальными значками.
+
+
Наличие вложений - к письмам можно приложить различные файлы;
+
+
Вид взаимодействия - взаимодействия в списке отображаются соответствующими значками:
Участники - контакты, с которыми были взаимодействия;
+
+
Тема - краткое содержание взаимодействия.
В нижней части списка (в зависимости от настроек) может отображаться описание, текст выделенного в списке взаимодействия или тело письма.
+
Жирным шрифтом в списке выделяются документы к рассмотрению, письма и сообщения SMS с установленным признаком На контроле. Программа ведет подсчет нерассмотренных документов и писем с флажком На контроле в каждой группе списка. Группы, которые содержат такие документы, выделяются жирным шрифтом.
+
В случае, если взаимодействия создавались на основании друг друга, с помощью кнопки Установить режим просмотра в виде дерева можно изменить режим просмотра и проследить всю цепочку взаимодействий.
В левой части списка отображается панель, с помощью которой можно удобно группировать взаимодействия:
+
По предметам - панель навигации заполняется предметами взаимодействий. Все взаимодействия в списке группируются по предметам.
+
При позиционировании на предмете в списке отображаются взаимодействия по данному предмету.
+
В панели группировки можно открывать предметы, по которым сгруппированы взаимодействия (двойным щелчком мыши в панели группировки).
+
С помощью перетаскивания мышью взаимодействия можно перемещать между предметами, при этом в самом взаимодействии меняется предмет.
+
Включите соответствующий флажок в контекстном меню панели навигации по правой кнопке мыши, для того чтобы показывать Только активные предметы или Только значимые предметы.
По контактам - панель навигации заполняется контактами, с которыми были взаимодействия.
+
При позиционировании на контакте в списке отображаются взаимодействия с данным контактом.
+
Включите флажок в контекстном меню панели навигации по правой кнопке мыши, для того чтобы показывать Только значимые контакты.
По папкам - панель навигации заполняется доступными пользователюучетными записями электронной почты и их папками. В отличие от остальных видов панелей навигации, используется только для работы с электронными письмами. Подробнее см. ниже.
+
По закладкам - панель навигации заполняется закладками пользователя. При позиционировании на закладке в списке будет отображаться те взаимодействия, которые соответствуют отбору, настроенному в закладке. Подробнее о работе с закладками в списке см. ниже.
+
По свойствам - для каждого дополнительного реквизита или сведения документов взаимодействий формируется отдельный вид панели навигации.
+
При выборе такого вида навигации панель заполняется всеми возможными значениями данного дополнительного реквизита или сведения.
+
При позиционировании на одном из значений в списке взаимодействий отображаются только те документы, у которых соответствующее сведение имеет такое же значение.
По категориям - панель навигации заполняется видами свойств документов взаимодействий:
+
Если дополнительный реквизит или сведение имеет тип Булево, значениями которого могут быть либо Истина, либо Ложь, то в панели навигации отображаются наименования дополнительных реквизитов;
+
При позиционировании на виде свойства в панели навигации в списке взаимодействий отображаются только те документы, у которых значение данного свойства Истина.
Если дополнительный реквизит или сведение имеет значение, отличное от типа Булево, то в панели навигации доступна группировка, соответствующая названию дополнительного реквизита.
+
При такой группировке в панели навигации отображаются значения дополнительного реквизита, а в списке взаимодействий отображаются взаимодействия, дополнительные реквизиты которых соответствуют значениям, выделенным в панели навигации.
Для удобства просмотра списка взаимодействий можно Скрыть панель навигации с помощью соответствующей команды меню Все действия (в интерфейсе Такси Еще).
В поле Ответственный можно установить отбор по ответственному за отработку взаимодействий, которого можно выбрать из списка Пользователи.
+
С помощью команды Все действия (в интерфейсе Такси Еще) - Тип взаимодействий можно установить отбор по определенному типу взаимодействий, например, по входящим письмам или телефонным звонкам.
+
С помощью команды Все действия (в интерфейсе Такси Еще) -Статус можно отобрать взаимодействия с определенным статусом рассмотрения, например, только нерассмотренные, или только отложенные.
+
Если в поле установлено значение К рассмотрению, то будут отображены взаимодействия, которые необходимо отработать до текущей даты и с неустановленным флажком Рассмотрено.
+
Если в поле установлено значение Отложенные, то в списке показываются взаимодействия с заполненным полем Рассмотреть после и неустановленным флажком Рассмотрено.
+
Если в поле установлено значение Рассмотренные, то в списке показываются взаимодействия с установленным флажком Рассмотрено.
Нажмите, для того чтобы Установить интервал дат документов взаимодействий и выбрать период просмотра.
Введите строку поиска в поле Найти, расположенное в правой верхней части окна.
+
+
Будет выполнен поиск по текстам, содержащимся в документах взаимодействий.
+
+
Данный поиск позволяет найти взаимодействия, для которых либо в самом документе, либо в текстах присоединенных файлов имеется строка, удовлетворяющая условиям.
+
+
После выполнения поиска в списке взаимодействий остаются только те документы, которые удовлетворяют условию поиска.
+
+
При позиционировании на взаимодействии в нижней части списка отображается информация о тексте, который совпадает с условием поиска.
+
+
Если ни одно взаимодействие не найдено, поле ввода строки поиска подсвечивается красным.
+
+
Для того чтобы отменить отображение списка по результатам полнотекстового поиска, необходимо очистить строку поиска.
+
+
Следует учитывать, что некоторые символы, введенные в строку поиска, будут трактоваться как служебные символы языка запросов полнотекстового поиска в данных. Информацию о списке таких служебных символов можно получить в справке (раздел 1С:Предприятие - Работа пользователя - Язык запросов полнотекстового поиска в данных).
Воспользуйтесь командой Все действия (в интерфейсе Такси Еще) - Снять признак рассмотрено (Alt+Shift+R). Для писем устанавливается признак На контроле.
Нажмите Отложить рассмотрение (Ctrl+B). Введите дату и время, после которых надо будет отработать документ.
+
Для того чтобы отложить рассмотрение нескольких взаимодействий, можно также воспользоваться соответствующей командной контекстного меню панели навигации.
+
В этом случае будет отложено рассмотрение взаимодействий, удовлетворяющих отбору списка.
+
Например, при выполнении данной команды на папке Входящие будет отложено рассмотрение всех писем данной папки.
Для просмотра отложенных взаимодействий используется статус Отложенные. При установке этого статуса в списке отображаются все неотработанные взаимодействия, у которых включен флажок На контроле или заполнена информация в поле Рассмотреть после.
Нажмите Установить предмет взаимодействия (Ctrl+G). Выберите тип документа, который будет выступать в качестве предмета взаимодействий, затем из соответствующего списка выберите документ.
+
Для групповой установки предмета взаимодействий можно также воспользоваться соответствующей командой контекстного меню панели навигации.
+
В этом случае выбранный предмет будет установлен для всех документов, удовлетворяющих отбору списка.
+
Например, при выполнении данной команды на папке Входящие будет установлен указанный предмет для всех писем данной папки.
Назначение ответственного для документов
+
+
Выделите нужные документы.
+
Нажмите Установить ответственного (Ctrl+M) командной панели списка. Выберите ответственного из списка пользователей.
+
Для групповой установки ответственного можно воспользоваться соответствующей командой контекстного меню панели навигации.
+
В этом случае ответственный будет установлен для всех документов, удовлетворяющих отбору списка.
+
Например, при выполнении данной команды на папке Входящие будет установлен выбранный ответственный для всех писем данной папки.
Достаточно выделить в списке одно или несколько взаимодействий и воспользоваться командой Добавить в закладки контекстного меню списка.
+
Будет создана закладка Избранные взаимодействия, включающая в себя отбор по выбранным взаимодействиям.
Для создания закладки можно воспользоваться соответствующей командой контекстного меню панели навигации.
+
В этом случае закладка будет создана для всех документов, удовлетворяющих отбору списка. Например, при выполнении данной команды на папке Входящие будет создана закладка для всех писем данной папки, которая будет называться В папке Входящие.
Для того чтобы создать свою закладку и отобрать документы по необходимым для вас признакам, установите вид панели навигации По закладкам.
+
С помощью команды контекстного меню панели навигации можно Создать закладки, а с помощью команды Создать группу - группы закладок.
С электронной перепиской в списке удобно работать при группировке По папкам.
+
+
В этом случае вся корреспонденция группируется сначала по учетным записям электронной почты, затем внутри каждой учетной записи по папкам электронных писем, предопределенным и пользовательским.
+
+
Двойным щелчком мыши по наименованию учетной записи электронной почты можно открыть ее.
+
+
Предопределенные папки, всегда имеющиеся по умолчанию:
+
+
Входящие - в эту папку попадают по умолчанию все входящие письма.
+
+
Исходящие - в эту папку попадают все исходящие, но еще не отправленные письма.
+
+
Нежелательная почта - в данную папку попадают письма, которые почтовый сервер опознал как спам (подробнее см. документацию почтового сервера).
+
+
Отправленные - в эту папку по умолчанию попадают все отправленные письма.
+
+
Удаленные - в эту папку попадают все помеченные к удалению письма.
+
+
Черновики - папка, в которой находятся письма, редактирование которых не завершено.
+
В каждую папку письма попадают автоматически при получении или смене статуса, а также при применении правил обработки. Выполните команду Применить правила обработки контекстного меню панели группировки, для того чтобы произвести сортировку писем согласно ранее разработанным правилам обработки.
+
При позиционировании на папке в списке отображаются письма данной папки.
Для работы с папками электронных писем предусмотрены команды контекстного меню панели группировки по правой кнопки мыши:
+
Перенести в папку - команда доступна только для пользовательских папок (при наличии соответствующих прав). Для перемещения папок можно также использовать перетаскивание мышью. Воспользовавшись командой, можно выбрать нужную папку из списка или создать новую;
+
+
Создать папку - для создания новой папки заполните необходимые поля.
+
+
Для перемещения писем из одной папки в другую можно пользоваться перетаскиванием мышью.
+
Также можно использовать команду контекстного меню правой части списка Перенести в папку. Выберите нужную папку из списка или создайте новую. Нажмите Выбрать для возврата в список.
+
При работе в папках доступны команды для работы с письмами:
В файловом варианте работы программы нажмите Отправить и получить почту (Ctrl+F9) и проверьте свой почтовый ящик.
+
Если за период от последней проверки почтового ящика до текущего момента были получены новые письма, то программа загрузит их в список, после чего выдаст сообщение о количестве новых писем.
+
По этой команде отправляются только письма текущего пользователя, и получается только почта с доступных ему учетных записей.
В клиент-серверном варианте отправка и получение писем (всех пользователей, всех учетных записей) выполняются с помощью регламентного задания с определенным администратором программы интервалом.
Выберите нужную папку, в этом случае в командной панели списка взаимодействий появляются соответствующие команды.
+
Выберите письмо.
+
Нажмите соответствующую кнопку:
+
Ответить - в созданном исходящем письме в качестве получателя будет указан отправитель письма. Исходящее письмо при этом входит в цепочку взаимодействий.
+
Ответить всем - в созданном исходящем письме в качестве получателей будут указаны отправитель и все получатели данного письма (в полях Кому и Копии).
+
Переслать - получатели не заполняются. Будет сформировано исходящее письмо, включающее в себя текст и вложения входящего письма.
С помощью команды Все действия (в интерфейсе Такси Еще) - Персональные настройки можно перейти к настройке персональной учетной записи электронной почты.
Предназначен для отражения взаимодействий по предмету или по контакту.
+
В панели навигации различных документов и элементов некоторых списков, например, списка пользователей, доступна команда Взаимодействия, которая открывает списки взаимодействий по предмету или контакту.
+
Например, если вызов произошел из карточки контактного лица партнера, то выводятся все взаимодействия с участием данного контактного лица. А если вызов произошел из какого-либо документа, то отображаются все взаимодействия по данному предмету.
+
Все Взаимодействия без исключения можно посмотреть в списке взаимодействий, который открывается по соответствующей команде раздела Органайзер.
Взаимодействия по предмету или по контакту, в зависимости от контекста вызова данной формы. Например, если вызов произошел из карточки контактного лица партнера, то в данную форму выводятся все взаимодействия с участием данного контактного лица. А если это форма вызвана из формы претензии клиента, то в ней отображаются все взаимодействия по данному предмету.
Выделите документы, у которых необходимо снять признак Рассмотрено. Воспользуйтесь командой Снять признак рассмотрено, расположенной в меню Все действия формы.
Участники - контакты, с которыми были взаимодействия;
+
+
Дата - дата создания документа;
+
+
Тема - краткое содержание взаимодействия.
Жирным шрифтом в списке выделяются документы к рассмотрению, письма и сообщения SMS с установленным признаком На контроле. После установки флажка Рассмотрено выделение снимается.
С помощью поля Статус можно отобрать взаимодействия с определенным статусом рассмотрения:
+
+
По умолчанию выводятся Все документы взаимодействий;
+
+
Если в поле установлено значение К рассмотрению, то будут отображены взаимодействия, которые необходимо отработать до текущей даты и с неустановленным флажком Рассмотрено.
+
+
Если в поле установлено значение Отложенные, то в списке показываются взаимодействия с заполненным полем Рассмотреть после и не установленным флажком Рассмотрено.
+
+
Если в поле установлено значение Рассмотренные, то в списке показываются взаимодействия с установленным флажком Рассмотрено.
+
С помощью поля Ответственный можно установить отбор по ответственному за отработку взаимодействий, который выбирается из списка пользователей.
+
+
С помощью команды Все действия (в интерфейсе Такси Еще) - Тип взаимодействия можно установить отбор по определенному типу взаимодействий, например, по входящим письмам или телефонным звонкам.
+
+
С помощью команды меню Все действия (в интерфейсе Такси Еще) - Установить интервал дат можно выбрать период просмотра документов взаимодействий.
Ввод документа взаимодействий
+
+
Нажмите Создать, выберите нужный документ, заполните необходимые поля.
+
+
Если список выведен по предмету, то в поле Предмет нового документа взаимодействий программа автоматически проставляет тот же предмет.
Документ предназначен для ответов на вопросы анкеты.
-
-
Форма заполнения:
-
-
При открытии документа на форме отображается вступительный текст Анкеты.
-
При нажатии кнопки "Показать разделы" в верхнем левом углу формы, будет отображено дерево разделов "Анкеты".
-
Двойным кликом можно выбрать раздел анкеты. После выбора раздела анкеты динамически сформируется форма заполнения раздела анкеты.
-
Передвигаться по разделам анкеты возможно также при помощи кнопок "Вперед" и "Назад", расположенных в верхнем правом углу формы.
-
Данный способ является более предпочтительным. Дерево разделов рекомендуется открывать для просмотра структуры анкеты, выбора нужного раздела,
-
если это необходимо. Для корректного отображения элементов на форме заполнения анкеты рекомендуется скрывать отображение дерева разделов.
-
-
-
Завершение редактирования анкеты:
-
-
Для завершения редактирования анкеты нажмите кнопку "Завершить и закрыть", расположенную в верхнем левом углу формы. Если составитель предусмот-
-
рел возможность сохранения анкеты, то вам будет доступна кнопка "Записать". Следует отметить, что составитель анкеты может предусмотреть обязательные
-
вопросы. Если вы не дадите ответы на такие вопросы, то при попытке завершить редактирование анкеты, будет выведено сообщение о обязательных вопросах,
-
на который не даны ответы. Возможность завершить редактирование анкеты появится только после, того как респондент даст ответы на все обязательные вопросы.
\ No newline at end of file
+
+
Предназначена для ответов на вопросы при проведении анкетирования.
+
Открывается по двойному щелчку мыши в списке анкет, который становится доступным после входа респондента в программу.
+
Разделы анкеты
+
На первой странице анкеты отображается текст из вступительного раздела.
+
Передвигаться по разделам анкеты можно при помощи кнопок Далее и Назад, расположенных в верхнем правом углу окна (рекомендуется).
+
Также для перемещения по разделам можно использовать навигационный список (дерево) разделов, видимость которого настраивается с помощью кнопок Показать разделы/Скрыть разделы.
+
Дерево разделов рекомендуется открывать для просмотра структуры анкеты, выбора нужного раздела, если это необходимо. Для корректного отображения элементов анкеты рекомендуется скрывать отображение дерева разделов.
+
Двойным щелчком мыши можно выбрать один из разделов анкеты в дереве. После выбора раздела анкеты формируется окно заполнения раздела.
Анкета заканчивается заключительным разделом.
Способы ответов на вопросы
+
В зависимости от типа вопросов ответ можно написать вручную, выбрать из списка или с помощью переключателя.
+
Даты можно написать вручную или выбрать из календаря с помощью кнопки .
+
Ответы на некоторые вопросы необходимо ввести в таблицу. В некоторых таблицах требуется Добавить строки с помощью соответствующей кнопки.
Сохранение анкеты
+
Если составитель предусмотрел возможность сохранения анкеты, то будет доступна кнопка Записать. С помощью этой кнопки можно сохранить частично заполненную анкету, для того чтобы вернуться к ее заполнению позднее.
+
Если анкета уже заполнялась ранее, но не была завершена, то в списке доступных анкет указывается дата ее последнего редактирования.
+
Нажмите Закрыть, для того чтобы выйти из анкеты без сохранения.
Завершение редактирования анкеты
+
Для завершения редактирования анкеты нажмите Завершить и закрыть.
+
Программа выводит сообщение, что дальнейшее заполнение анкеты будет невозможно.
+
Для подтверждения нажмите кнопку Да, для того чтобы сохранить возможность вернуться к заполнению анкеты еще раз, нажмите Нет. После подтверждения анкета пропадает из списка доступных анкет, но ее можно посмотреть по команде Архив анкет (зависит от настроек анкеты).
Обязательные вопросы
+
Составитель анкеты может предусмотреть обязательные вопросы. Поля для ответов на такие вопросы выделены красным цветом.
+
Если вы не дадите ответы на обязательные вопросы, то при попытке завершить редактирование анкеты выполняется автоматическая проверка и выводится сообщение об обязательных вопросах, на которые не даны ответы.
+
Возможность завершить редактирование анкеты появится только после того, как респондент ответит на все обязательные вопросы.
Сотрудник, ответственный за проведение опроса, имеет возможность в реальном времени отслеживать и контролировать ход анкетирования. Заполненные респондентами анкеты попадают в список.
+
Список открывается по команде Анкеты раздела Анкетирование.
+
В списке выводится:
+
Дата - дата и время завершения редактирования анкеты респондентом.
+
Номер - номер анкеты, присваивается программой автоматически.
+
Открывается по кнопке после выбора типа данных Встреча (например, при заполнении поля Предмет в каком-либо документе взаимодействий).
+
В списке выводится:
+
Дата регистрации - дата создания документа;
+
Номер - присваивается автоматически;
+
Описание - в поле указывается, какие действия необходимо выполнить в рамках взаимодействия;
+
Предмет - то, чему посвящен документ взаимодействий, например претензии клиента. Предметом могут быть документы программы и документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета автоматически проставляется значение текущего документа, т.е. такой документ начинает цепочку взаимодействий;
+
Список участников - контакты, которые указаны в документах взаимодействий.
Выбор документа
+
+
Выделите документ, нажмите Выбрать.
+
+
Также можно использовать двойной щелчок мыши.
Отбор по периоду
+
С помощью соответствующей команды меню Все действия (в интерфейсе Такси Еще) можно Установить интервал дат.
Ввод документа Встреча
+
Нажмите Создать. Заполните необходимые поля.
+
Создание взаимодействий на основании встречи
+
Выделите нужный документ. Нажмите Взаимодействия, для того чтобы:
Документ Встреча предназначен для регистрации информации о прошедших встречах, например по результатам обсуждения с клиентом нового коммерческого предложения.
+
+
Документ предназначен для регистрации информации о прошедших встречах, для планирования и отражения факта встреч - совещаний, семинаров и т.п. Например, в этом документе можно отразить результаты обсуждения с клиентом нового коммерческого предложения.
Предмет - то чему, посвящена встреча, например обсуждению претензии клиента. Если предмет встречи не определен, то в качестве предмета выступает первое взаимодействие цепочки.
-
Важность - признак необходимости уделения данному взаимодействию дополнительного внимания, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая.
-
Ответственный - указывается ответственный за данное взаимодействие.
-
Рассмотреть после - необходимо заполнить, если рассмотрение данной встречи планируется отложить до определенной даты.
-
Рассмотрено - признак того, что данное взаимодействие рассмотрено и не требует дальнейшего внимания.
-
Тема - краткое описание того, чему была посвящена встеча.
-
Описание - подробное описание хода и итогов встречи.
-
Комментарий - произвольный текстовый комментарий.
-
Реквизиты Рассмотрено и Рассмотреть после доступны для указания если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование/Органайзер.
Если участник уже зарегистрирован в информационной базе, то информация о нем указывается в поле Контакт. Поля Представление контакта и Как связаться будут заполнены автоматически.
-
Если информацию о участнике встречи не планируется хранить, то достаточно указать Представление контакта и Как связаться.
-
Зарегистрировать контакт можно непосредственно из формы встречи, нажав на кнопку "Создать контакт" в командной панели табличной части Участники.
Информация об участниках вводится в табличную часть документа. Указывается имя участника и информация о том, как связаться с участником.
Написать письмо, отразить факт телефонного звонка, запланировать взаимодействие, отправить сообщение SMS.
-
\ No newline at end of file
+
Предмет - то, чему посвящена встреча, например, обсуждению претензии клиента. Нажмите Выбрать, укажите Тип данных, затем из соответствующего списка выберите документ взаимодействий или какой-либо документ программы. Если предмет встречи не определен, то в качестве предмета выступает текущий документ, который представляет собой первое взаимодействие цепочки. При выполнении команды Взаимодействия во вновь созданном документе автоматически проставляется предмет, указанный в исходном документе, при этом основные поля будут также скопированы. Так можно создать цепочку взаимодействий.
+
Место - укажите адрес (номер) помещения, в котором происходила встреча.
+
Тема - краткое описание того, чему была посвящена встреча.
+
Ответственный - выберите ответственного за данное взаимодействие из списка пользователей. По умолчанию программа указывает в качестве ответственного для большинства документов взаимодействия текущего пользователя.
+
Рассмотрено - признак того, что данное взаимодействие рассмотрено и не требует дальнейшего внимания. С рассмотренных документов программа снимает выделение. Использовать флажок Рассмотрено рекомендуется при коллективной работе с документами взаимодействия.
+
Рассмотреть после - необходимо заполнить дату и время, если рассмотрение данной встречи планируется отложить до определенной даты. Выберите из списка нужное значение: Через 15 мин, Через 30 мин, Через 1 час,Через 3 часа, Завтра. Помимо этих значений можно указать произвольную дату и время с помощью кнопки .
+
Важность - выберите из списка признак необходимости уделения данному взаимодействию дополнительного внимания, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая. Отображается в списке специальными значками.
+
Описание - подробное описание хода и итогов встречи. Поле является обязательным. Располагается на специальной вкладке.
+
Комментарий - произвольный текстовый комментарий. Располагается на специальной вкладке.
+
Создана - дата и время создания документа. По умолчанию в этом поле программой автоматически проставляется текущая дата и время записи документа. Поле недоступно для редактирования.
+
Автор - пользователь, который создал документ. Указывается программой автоматически. Поле недоступно для редактирования.
+
Реквизиты Рассмотрено и Рассмотреть после доступны для указания, если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование - Органайзер.
Для фиксирования контактов, которые участвовали в мероприятии, используется список Участники. Перейдите на соответствующую вкладку. Информация об участниках вводится в табличную часть документа. Нажмите Добавить. В списке указывается имя участника и информация о том, как с ним связаться. Список является обязательным - хотя бы один участник должен быть указан.
+
Список состоит из колонок:
+
+
Представление контакта - полное наименование контакта;
+
+
+
Как связаться - контактная информация (телефон, адрес электронной почты и т.п.);
+
+
Контакт - поле выбора участника.
+
Если участник уже зарегистрирован в программе, то информация о нем указывается в поле Контакт. С помощью кнопки Выбрать найдите контакт в окне Выбор контакта. После выбора контакта поля Представление контакта и Как связаться будут заполнены автоматически.
+
Если информацию о участнике встречи не планируется хранить, то достаточно указать Представление контакта и Как связаться. В этом случае в документе появляется информационное сообщение Не все контакты подобраны.
Зарегистрировать контакт можно после сохранения документа, нажав Создать контакт. Для выбора предлагаются списки программы. Заполните необходимые поля.
Предназначен для выбора документа Запланированное взаимодействие. Документ предназначен для планирования взаимодействия с одним или несколькими контактами. Документ вводится в том случае, если необходимо запланировать взаимодействие, однако как именно будет производиться взаимодействие (телефонный звонок, встреча, электронное письмо, сообщение SMS), еще не известно.
+
Открывается по кнопке после выбора типа данных Запланированное взаимодействие (например, при заполнении поля Предмет в каком-либо документе взаимодействий).
+
В списке выводится:
+
Дата регистрации - дата создания документа;
+
Номер - присваивается автоматически;
+
Описание - в поле указывается, какие действия необходимо выполнить в рамках взаимодействия;
+
Предмет - то, чему посвящен документ взаимодействий, например претензии клиента. Предметом могут быть документы программы и документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета автоматически проставляется значение текущего документа, т.е. такой документ начинает цепочку взаимодействий;
+
Список участников - контакты, которые указаны в документах взаимодействий.
Выбор документа
+
+
Выделите документ, нажмите Выбрать.
+
+
Также можно использовать двойной щелчок мыши.
Отбор по периоду
+
С помощью соответствующей команды меню Все действия (в интерфейсе Такси Еще) можно Установить интервал дат.
Ввод документа Запланированное взаимодействие
+
Нажмите Создать. Заполните необходимые поля.
+
Создание взаимодействий на основании запланированного взаимодействия
+
Выделите нужный документ. Нажмите Взаимодействия, для того чтобы:
Документ предназначен для планирования взаимодействия с одним или несколькими контактами. Документ вводится в том случае, если необходимо запланировать взаимодействие, однако как именно будет производиться взаимодействие (телефонный звонок, встреча, электронное письмо, сообщение SMS) еще не известно.
+
+
Документ предназначен для планирования взаимодействия с одним или несколькими контактами. Вводится в том случае, если необходимо запланировать взаимодействие, однако как именно будет производиться взаимодействие (телефонный звонок, встреча, электронное письмо, сообщение SMS), еще не известно.
Предмет - то чему, посвящено взаимодействие, например претензии клиента. Если предмет взаимодействия не определен, то в качестве предмета выступает первое взаимодействие цепочки.
-
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая.
-
Ответственный - указывается ответственный за данное взаимодействие.
-
Рассмотреть после - необходимо заполнить, если рассмотрение данного взаимодействие планируется отложить до определенной даты.
-
Рассмотрено - признак того, что данное взаимодействие рассмотрено и не требует дальнейшего внимания.
+
Предмет - то, чему посвящено взаимодействие, например, претензии клиента. Предметом могут быть документы программы, а также документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета выступает текущий документ (т.е. такой документ начинает цепочку взаимодействий).
Тема - краткое описание того, чему будет посвящено запланированное взаимодействие.
-
Описание - подробное описание того, чему будет посвящено запланированное взаимодействие.
-
Комментарий - произвольный текстовый комментарий.
-
Реквизиты Рассмотрено и Рассмотреть после доступны для указания если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование/Органайзер.
Информация об участниках вводится в табличную часть документа. Указывается имя участника и информация о том, как связаться с участником.
-
Если участник уже зарегистрирован в информационной базе, то информация о нем указывается в поле "Контакт".
-
Если это новый участник, то непосредственно из формы планируемого взаимодействия его можно зарегистрировать, нажав на кнопку "Создать контакт" в панели действий табличной части.
-
Если информацию о участнике запланированного взаимодействия не планируется хранить, то достаточно указать Представление контакта и Как связаться.
Написать письмо, отразить факт телефонного звонка, зарегистрировать встречу, отправить сообщение SMS.
-
\ No newline at end of file
+
Ответственный - выберите ответственного за данное взаимодействие из списка пользователей. По умолчанию для большинства документов взаимодействия программа указывает в качестве ответственного текущего пользователя.
+
Рассмотрено - признак того, что данное взаимодействие рассмотрено и не требует дальнейшего внимания. С рассмотренных документов программа снимает выделение. Использовать флажок Рассмотрено рекомендуется при коллективной работе с документами взаимодействия.
+
Рассмотреть после - необходимо заполнить дату и время, если рассмотрение данного взаимодействия планируется отложить до определенной даты. Выберите из списка нужное значение: Через 15 мин, Через 30 мин, Через 1 час,Через 3 часа, Завтра. Помимо этих значений можно указать произвольную дату и время с помощью кнопки .
+
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая.
+
Описание - подробное описание того, чему будет посвящено запланированное взаимодействие. Располагается на специальной вкладке.
+
Комментарий - произвольный текстовый комментарий. Располагается на специальной вкладке.
+
Создано - дата и время создания документа. По умолчанию в этом поле программой автоматически проставляется текущая дата и время записи документа. Поле недоступно для редактирования.
+
Автор - пользователь, который создал документ. Указывается программой автоматически. Поле недоступно для редактирования.
+
Реквизиты Рассмотрено и Рассмотреть после доступны для указания, если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование - Органайзер.
Для фиксирования контактов, которые будут участвовать в мероприятии, используется список Участники. Перейдите на соответствующую вкладку. Информация об участниках вводится в табличную часть документа. Нажмите Добавить. В списке указывается имя предполагаемого участника и информация о том, как связаться с участником. Список является обязательным - хотя бы один участник должен быть указан.
+
Список состоит из колонок:
+
+
Представление контакта - полное наименование контакта;
+
+
+
Как связаться - контактная информация (телефон, адрес электронной почты и т.п.);
+
Контакт - поле выбора участника.
+
Если участник уже зарегистрирован в программе, то информация о нем указывается в поле Контакт. С помощью кнопки Выбрать найдите контакт в окне Выбор контакта. Поля Представление контакта и Как связаться будут заполнены автоматически.
+
+
Если информацию о участнике встречи не планируется хранить, то достаточно указать Представление контакта и заполнить поле Как связаться. В этом случае в документе появляется информационное сообщение Не все контакты подобраны.
+
Если это новый участник, зарегистрировать контакт можно после сохранения документа, нажав Создать контакт. Для выбора предлагаются списки программы. Заполните необходимые поля.
Документ предназначен для планирования взаимодействия с одним или несколькими контактами. Документ вводится в том случае, если необходимо запланировать взаимодействие, однако как именно будет производиться взаимодействие (телефонный звонок, встреча, электронное письмо, сообщение SMS) еще не известно.
+
Документ предназначен для планирования взаимодействия с одним или несколькими контактами. Документ вводится в том случае, если необходимо запланировать взаимодействие, однако как именно будет производиться взаимодействие (телефонный звонок, встреча, электронное письмо, сообщение SMS), еще не известно.
Дата - дата и время создания документа Назначение опроса;
+
Наименование - полное наименование документа.
Выбор документа Назначение опроса
+
+
Выделите нужный документ, нажмите Выбрать.
+
+
Также можно воспользоваться двойным щелчком мыши.
Отбор по периоду
+
Выполните команду Все действия (В интерфейсе Такси Еще) - Установить интервал дат, выберите нужный период для просмотра документов.
Назначение нового опроса
+
Нажмите Создать, заполните необходимые поля.
Создание нового опроса
+
По команде Провести создается новый опрос с учетом установленных параметров. У респондентов появляется возможность заполнить анкету по данному опросу.
Отмена опроса
+
Выполните команду Все действия (в интерфейсе Такси Еще) - Отмена проведения, для того чтобы отменить опрос. После этого респонденты не увидят анкету по данному опросу.
Для того чтобы респондент приступил к заполнению анкеты по составленному шаблону, необходимо выполнить ряд подготовительных действий. Сначала необходимо организовать проведение опроса, в рамках которого определить сроки его проведения, состав респондентов и шаблон анкеты, на основании которого будут сформированы анкеты респондентов.
+
Назначение опроса
+
Заполните следующие поля:
+
Номер - проставляется программой автоматически.
+
Дата - дата и время создания документа, проставляется программой автоматически, при необходимости можно изменить.
+
В поле Наименование укажите заголовок опроса, под которым данная анкета появится в списке доступных анкет у респондентов. Поле является обязательным.
+
Период проведения опроса задается в полях Действует с... по... - заполните дату начала и дату окончания опроса. Поля не обязательны к заполнению. Если период проведения опроса не задан, то такая анкета будет находиться в списке доступных анкет у респондента до тех пор, пока он не ответит на нее.
+
В поле Шаблон анкеты указывается ранее подготовленный шаблон анкеты для этого опроса (выбирается из списка Шаблоны анкет). Поле обязательно для заполнения.
+
Выберите Тип респондентов. Респонденты - это внешние пользователи программы, которые связаны с объектами программы, например, со списком партнеров. В поле Тип респондентов необходимо указать, для какого типа внешних пользователей программы предназначен опрос. Для этого выберите один из списков программы.
+
Затем в список Респонденты необходимо добавить из выбранного списка конкретных внешних пользователей, для которых предназначен опрос.
+
Если в опросе участвуют все респонденты указанного типа, например, все партнеры, то необходимо установить флажок Свободный опрос. В этом случае список Респонденты недоступен для редактирования.
+
Напишите Комментарий - дополнительные сведения о назначении опроса.
+
Установите флажок Показывать в архиве анкет, такая анкета будет доступна респонденту в списке архивных анкет. Все свои ранее заполненные анкеты с установленным флажком респондент может посмотреть по команде Архив анкет.
+
Установив флажок Предварительное сохранение, можно разрешить респонденту заполнять анкету в несколько подходов. Если флажок установлен, то респондент сможет сохранить частично заполненную анкету с помощью команды Записать. Респондент может вернуться к заполнению анкеты в любое время. При этом анкета не будет считаться окончательно заполненной до тех пор, пока респондент не воспользуется командой Завершить и закрыть. Если флажок Предварительное сохранение не установлен, то респонденту нужно будет заполнить анкету за один подход. В этом случае в анкете для записи будет доступна только одна команда Завершить и закрыть.
+
По команде Провести (или Провести и закрыть) с учетом установленных параметров создается новый опрос. У респондентов появляется возможность заполнить анкеты по данному опросу.
Для того чтобы респондент приступил к заполнению анкеты по составленному шаблону, необходимо выполнить ряд подготовительных действий. Сначала необходимо организовать проведение опроса, в рамках которого определить сроки его проведения, состав респондентов и шаблон анкеты, на основании которого будут сформированы анкеты респондентов.
+
Открывается по команде Назначения опросов раздела Анкетирование.
+
В списке выводится:
+
Номер - автоматически присваивается программой;
+
Дата - дата и время создания документа Назначение опроса;
+
Наименование - полное наименование документа;
+
Шаблон анкеты - наименование выбранного для проведения опроса шаблона анкеты;
+
По команде Еще (Все действия) - Провести создается новый опрос с учетом установленных параметров. У респондентов появляется возможность заполнить анкеты по данному опросу.
Отмена проведения
+
Выполните команду Еще (Все действия) - Отмена проведения, для того чтобы отменить опрос. После этого респонденты не увидят анкету по данному опросу.
Отбор по периоду
+
Выполните команду Еще (Все действия) - Установить интервал дат, выберите нужный период для просмотра документов.
Документ предназначен для отправки сообщения SMS одному или нескольким адресатам.
+
+
Документ предназначен для отправки сообщения SMS одному или нескольким адресатам, проведения SMS-рассылки и последующего отражения факта отправки сообщений.
+
Документ позволяет создавать, редактировать и отправлять сообщения SMS, помимо их документирования и хранения. Возможна отправка нескольких сообщений с одинаковым текстом разным адресатам посредством одного документа. При этом отслеживается как состояние документа в целом, так и состояния отдельного сообщения каждому из различных адресатов в рамках документа.
Предмет - то чему, посвящено взаимодействие, например претензии клиента. Если предмет взаимодействия не определен, то в качестве предмета выступает первое взаимодействие цепочки.
-
Ответственный - указывается ответственный за данное взаимодействие.
-
На контроле - признак того, что данное сообщение потребует дальнейшего внимания и после отправки. Например требуется проконтролировать, что сообщение доставлено адресату.
-
Рассмотреть после - необходимо заполнить, если контроль данного сообщения планируется отложить до определенной даты. Доступно, если установлен флаг На контроле.
-
Преобразовывать кирилические символы в латинские - признак того, что сообщение необходимо отправить в транслите.
-
Текст сообщения - текст, который будет отправлен всем укзанным адресатам.
-
Комментарий - произвольный текстовый комментарий.
-
Реквизиты На контроле и Рассмотреть после доступны для указания если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование/Органайзер.
Информация об адресатах вводится в табличную часть Адресаты. Указывается представление адресата и номер телефона.
-
Если адресат уже зарегистрирован в информационной базе, то информация о нем указывается в поле "Контакт".
-
Если информацию о адресате сообщения не планируется хранить, то достаточно указать Представление контакта и Номер телефона.
-
Если это новый адресат, то непосредственно из формы планируемого взаимодействия его можно зарегистрировать, нажав на кнопку "Создать контакт" в панели действий табличной части.
-
Важно. Номер телефона должен быть указан в формате +xx (xxx) xxxxxxx
Состояние доставки сообщений проверяется автоматически, в соответствии с расписанием настроенным администратором системы. Состояние доставки сообщений документа можно также проверить из формы воспользовавшись командой Проверить состояние доставки.
-
Состояние сообщения конкретному адресату отображается в табличной части Адресаты. Может принимать одно из следующих значений:
-
Черновик - сообщение еще отправлялось и может быть отредактировано.
+
Предмет - то, чему посвящено взаимодействие, например, претензии клиента. Предметом могут быть документы программы, а также документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета выступает текущий документ (т.е. такой документ начинает цепочку взаимодействий).
+
Ответственный - выберите ответственного за данное взаимодействие из списка пользователей. По умолчанию программа указывает в качестве ответственного для большинства документов взаимодействия текущего пользователя.
+
На контроле - признак того, что данное сообщение потребует дальнейшего внимания и после отправки. Например, требуется проконтролировать, что сообщение доставлено адресату. В списке взаимодействий такое сообщение SMS выделяется жирным шрифтом.
+
Рассмотреть после - необходимо заполнить, если контроль данного сообщения планируется отложить до определенной даты. Выберите из списка нужное значение: Через 15 мин, Через 30 мин, Через 1 час,Через 3 часа, Завтра. Помимо этих значений можно указать произвольную дату и время с помощью кнопки . Доступно, если установлен флажок На контроле.
+
Преобразовывать кириллические символы в латинские - признак того, что сообщение необходимо отправить в транслите.
+
Сообщение - текст, который будет отправлен всем указанным адресатам. Располагается на специальной вкладке. Программа производит подсчет букв введенного текста и указывает количество оставшихся символов до конца сообщения по правилам, принятым всеми провайдерами, в случае превышения размера одного сообщения текст автоматически разбивается на несколько отдельных сообщений.
+
Комментарий - произвольный текстовый комментарий. Располагается на специальной вкладке.
+
Создано - дата и время создания документа. По умолчанию в этом поле программой автоматически проставляется текущая дата и время записи документа. Поле недоступно для редактирования.
+
Автор - пользователь, который создал документ. Указывается программой автоматически. Поле недоступно для редактирования.
+
Поля На контроле и Рассмотреть после доступны для заполнения, если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование - Органайзер.
Информация об адресатах сообщения вводится в список Адресаты.
+
С помощью кнопки Добавить можно указать один или несколько контактов.
+
Контакты являются обязательным для заполнения элементом.
+
Если адресат уже зарегистрирован в информационной базе, то информация о нем указывается в поле Контакт. Укажите контакт, используя список Выбор контакта. В этом случае после выбора контакта остальные поля заполняются автоматически.
+
Если информацию об адресате сообщения не планируется хранить, то достаточно указать Представление контакта (его полное наименование) и Номер телефона. В этом случае в правой части документа выводится сообщение Не все контакты подобраны.
+
Номер телефона должен быть указан в формате +xx (xxx) xxxxxxx. Является обязательным для заполнения.
+
Если это новый адресат, то непосредственно из окна документа его можно зарегистрировать, нажав Создать контакт. Выберите соответствующий список и внесите в него данные нового адресата.
С помощью кнопки Отправить можно разослать сообщения SMS всем перечисленным контактам.
+
Действие кнопки:
+
В файловом режиме пользователь выполняет непосредственную отправку;
+
В клиент-серверном режиме пользователь инициирует отправку, сообщение переходит в состояние Исходящее. Непосредственная отправка выполняется в фоне регламентным заданием "Отправка SMS".
Состояние доставки сообщений проверяется автоматически, в соответствии с расписанием, настроенным администратором программы.
+
Состояние доставки сообщений документа можно также проверить из окна документа, воспользовавшись командой Проверить состояние доставки.
+
Состояние SMS-сообщений отражается внизу документа и в таблице адресатов в колонке Состояние сообщения по каждому контакту отдельно.
+
Состояние сообщения конкретному адресату отображается в табличной части Адресаты. Может принимать одно из следующих значений:
+
Черновик - сообщение еще отправлялось и может быть отредактировано.
Исходящее - пользователь уже отправил сообщение, но оно еще не передавалось провайдеру.
-
Не удалось передать провайдеру - система пыталась передать сообщение провайдеру, но не смогла этого сделать. Например, возникли технические проблемы на стороне провайдера.
+
Не удалось передать провайдеру - программа пыталась передать сообщение провайдеру, но не смогла этого сделать. Например, возникли технические проблемы на стороне провайдера.
Не отправлено провайдером - сообщение успешно передано провайдеру, но еще не было им обработано.
Отправляется провайдером - сообщение в данный момент отправляется провайдером.
Отправлено провайдером - сообщение отправлено провайдером, состояние доставки на данный момент не известно.
Доставлено - сообщение успешно доставлено адресату.
Не доставлено - сообщение не удалось доставить адресату. Дальнейших попыток доставки сообщения не будет.
Не опознано провайдером - провайдер не опознал, что когда то принимал данное сообщение к доставке.
-
Ошибка получения статуса у провайдера - не удалось связаться с провайдером при попытке получения состояния сообщения.
Состояние документа в целом отображается в нижней левой части формы документа. Может принимать одно из следующих значений.
-
Черновик - сообщение не отправлялось и доступно для редактирования.
+
Ошибка получения статуса у провайдера - не удалось связаться с провайдером при попытке получения состояния сообщения.
Состояние документа в целом отображается в нижней левой части окна документа. Может принимать одно из следующих значений.
+
Черновик - сообщение не отправлялось и доступно для редактирования.
Исходящее - пользователь уже отправил сообщение, но оно еще не передавалось провайдеру.
Доставляется - все сообщения переданы провайдеру и хотя бы по одному из них не закончена доставка до адресата.
Доставлено - все сообщения успешно доставлены адресатам.
-
Частично доставлено - доставка сообщений прекращено, часть сообщений доставлены адресатам, часть нет.
Написать письмо, отразить факт телефонного звонка, зарегистрировать встречу, запланировать взаимодействие.
-
\ No newline at end of file
+
Частично доставлено - доставка сообщений прекращено, часть сообщений доставлены адресатам, часть нет.
+
Не доставлено.
Проверка состояния доставки осуществляется регламентным заданием "Обновление статусов доставки SMS". Также можно вручную проверить, воспользовавшись командой Все действия (в интерфейсе Такси Еще) - Проверить состояние доставки на вкладке Адресаты (команда становится активной после отправки сообщений).
Предмет - то чему, посвящен звонок, например претензии клиента. Если предмет взаимодействия не определен, то в качестве предмета выступает первое взаимодействие цепочки.
-
Входящий - признак того что телефонный звонок Входящий, если данный флаг не установлен, то Исходящий.
-
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая.
-
Ответственный - указывается ответственный за данный звонок.
-
Рассмотреть после - необходимо заполнить, если рассмотрение телефонного звонка планируется отложить до определенной даты.
-
Рассмотрено - признак того, что телефонный звонок рассмотрен и не требует дальнейшего внимания.
+
Предмет - то, чему посвящен телефонный звонок, например, претензии клиента. Предметом могут быть документы программы и документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета автоматически проставляется значение текущего документа, т.е. такой документ начинает цепочку взаимодействий. При выполнении команды Взаимодействия из документа предметом взаимодействия во вновь созданном документе будет предмет, указанный в исходном документе, при этом основные поля будут также скопированы.
+
Включите флажок, для того чтобы указать, что телефонный звонок Входящий. Если флажок не установлен, то Исходящий.
+
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная (значение по умолчанию), Высокая. Отображается в списке взаимодействий специальными значками.
+
Ответственный - выберите ответственного за данный звонок из списка пользователей. По умолчанию программа указывает в качестве ответственного для большинства документов взаимодействия текущего пользователя.
+
Рассмотреть после - необходимо заполнить, если рассмотрение телефонного звонка планируется отложить до определенной даты. Выберите из списка нужное значение: Через 15 мин, Через 30 мин, Через 1 час,Через 3 часа, Завтра. Помимо этих значений можно указать произвольную дату и время с помощью кнопки .
+
Рассмотрено - признак того, что телефонный звонок рассмотрен и не требует дальнейшего внимания. С рассмотренных документов программа снимает выделение. Использовать флажок Рассмотрено рекомендуется при коллективной работе с документами взаимодействий.
Тема - краткое описание того, чему был посвящен телефонный звонок.
-
Описание - подробное описание телефонного звонка.
-
Комментарий - произвольный текстовый комментарий.
-
Реквизиты Рассмотрено и Рассмотреть после доступны для указания если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование/Органайзер.
Если участник уже зарегистрирован в информационной базе, то информация о нем указывается в поле "Контакт".
-
Если информацию о участнике запланированного взаимодействия не планируется хранить, то достаточно указать Как связаться и текстовое представление в поле Абонент .
-
Зарегистрировать контакт можно непосредственно из формы телефонного звонка, нажав на кнопку "Создать контакт" в панели командной панели формы.
Написать письмо, запланировать взаимодействие, зарегистрировать встречу, отправить сообщение SMS.
-
\ No newline at end of file
+
Описание - подробное описание телефонного звонка. Укажите, какие действия необходимо выполнить в рамках взаимодействия. Поле является обязательным.
+
Комментарий - произвольный текстовый комментарий, дополнительная информация о телефонном звонке.
+
Создан - дата и время создания документа. По умолчанию в этом поле программой автоматически проставляется текущая дата и время записи документа. Поле недоступно для редактирования.
+
Автор - пользователь, который создал документ. Указывается программой автоматически. Поле недоступно для редактирования.
+
Реквизиты Рассмотрено и Рассмотреть после доступны для указания, если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование - Органайзер.
Если абонент уже зарегистрирован в программе, то информация о нем указывается в поле Контакт. Нажмите Выбрать, для того чтобы найти контакт в списке Выбор контакта. После выбора контакта автоматически заполняются поля Абонент и Как связаться.
+
Если информацию об абоненте не планируется хранить (например, поступил телефонный звонок от нового контрагента, и вы еще не решили, будете ли вы с ним работать), то достаточно заполнить поле Как связаться и текстовое представление в поле Абонент. При этом рядом с полем Контакт программа выводит предупреждение Контакт не подобран.
+
Зарегистрировать контакт можно непосредственно из окна телефонного звонка, воспользовавшись командой Все действия (в интерфейсе Такси Еще) - Создать контакт. Выберите соответствующий список, нажмите ОК, затем введите данные контакта и дозаполните документ.
Открывается по кнопке после выбора типа данных Телефонный звонок (например, при заполнении поля Предмет в каком-либо документе взаимодействий).
+
В списке выводится:
+
Дата регистрации - дата создания документа;
+
Номер - присваивается автоматически;
+
Описание - в поле указывается, какие действия необходимо выполнить в рамках взаимодействия;
+
Предмет - то, чему посвящен документ взаимодействий, например претензии клиента. Предметом могут быть документы программы и документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета автоматически проставляется значение текущего документа, т.е. такой документ взаимодействия начинает цепочку взаимодействий;
+
Абонент - контакт, который указан в телефонном звонке.
Выбор документа
+
+
Выделите документ, нажмите Выбрать.
+
+
Также можно использовать двойной щелчок мыши.
Отбор по периоду
+
С помощью соответствующей команды меню Все действия (в интерфейсе Такси Еще) можно Установить интервал дат.
Ввод документа Телефонный звонок
+
Нажмите Создать. Заполните нужные поля.
+
Создание взаимодействий на основании телефонного звонка
+
Выделите нужный документ Телефонный звонок. Нажмите Взаимодействия, для того чтобы:
\ No newline at end of file
diff --git a/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl b/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl
index d27e3603f..5bdb27ab1 100644
--- a/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl
+++ b/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl
@@ -2,6 +2,14 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+// Получает абонента телефонного звонка
+//
+// Параметры:
+// Ссылка - ДокументСсылка.ТелефонныйЗвонок - документ, абонента которого необходимо получить.
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - таблица, содержащая колонки "Контакт", "Представление" и "Адрес"
+//
Функция ПолучитьКонтакты(Ссылка) Экспорт
Запрос = Новый Запрос;
diff --git a/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo b/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo
index 4abacdd6b..44f6a611a 100644
--- a/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo
+++ b/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo
@@ -442,6 +442,11 @@
ruФорма списка
+
+
+ ru
+
+ PersonalComputerMobileDevice
@@ -519,7 +524,7 @@
ruУточняет значение доступа:
- если идентификатор объекта метаданных, тогда уточняет проверку права
-(ПустаяСсылка - Изменение, иначе Чтение);
+(пустая ссылка - Изменение, иначе Чтение);
- если владелец настроек прав, тогда уточняет таблицу для выбора настроек прав.
diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form
index 09e5ddf20..e0b9453a7 100644
--- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form
+++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form
@@ -1,5 +1,40 @@
+
+ ГруппаПользовательскихНастроек
+ 23
+ true
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 24
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ auto
+ Auto
+ Auto
+
+ Список1
@@ -246,10 +281,10 @@
СписокСтрокаПоиска
- 23
+ 25СписокСтрокаПоискаРасширеннаяПодсказка
- 25
+ 27Labeltruetrue
@@ -259,7 +294,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 24
+ 26trueСписок
@@ -269,10 +304,10 @@
СписокСостояниеПросмотра
- 26
+ 28СписокСостояниеПросмотраРасширеннаяПодсказка
- 28
+ 30Labeltruetrue
@@ -282,7 +317,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 27
+ 29trueViewStatusAddition
@@ -293,10 +328,10 @@
СписокУправлениеПоиском
- 29
+ 31СписокУправлениеПоискомРасширеннаяПодсказка
- 31
+ 33Labeltruetrue
@@ -306,7 +341,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 30
+ 32trueSearchControlAddition
diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Help/ru.html b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Help/ru.html
new file mode 100644
index 000000000..618330cd4
--- /dev/null
+++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Help/ru.html
@@ -0,0 +1,33 @@
+
+
Предназначен для выбора документа Входящее электронное письмо. Этот документ можно только получить, ввести его невозможно.
+
Открывается по кнопке после выбора типа данных Входящее электронное письмо (например, при заполнении поля Предмет в каком-либо документе взаимодействий).
+
В списке выводится:
+
Отправлено - дата отправки письма;
+
Номер - номер присваивается автоматически;
+
Тема - поле заполняется отправителем;
+
Предмет - то, чему посвящен документ взаимодействий, например, претензии клиента. Предметом могут быть документы программы и документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета автоматически проставляется значение текущего документа, т.е. такой документ взаимодействия начинает цепочку взаимодействий;
+
Отправитель - адрес электронной почты отправителя входящего письма.
Отбор по периоду
+
С помощью соответствующей команды меню Все действия (в интерфейсе Такси Еще) можно Установить интервал дат.
Выбор документа
+
+
Выделите документ, нажмите Выбрать.
+
+
Также можно использовать двойной щелчок мыши.
Создание исходящего электронного письма на основании входящего электронного письма
+
Воспользуйтесь одной из кнопок или командами меню Все действия (в интерфейсе Такси Еще):
+
Ответить - в созданном исходящем письме в качестве получателя будет указан отправитель письма. Исходящее письмо при этом входит в цепочку взаимодействий.
+
Ответить всем - в созданном исходящем письме в качестве получателей будут указаны отправитель и все получатели данного письма (в полях Кому и Копии).
+
Переслать - получатели не заполняются. Будет сформировано исходящее письмо, включающее в себя текст и вложения входящего письма.
Предмет - то чему, посвящено взаимодействие, например претензии клиента. Если предмет взаимодействия не определен, то в качестве предмета выступает первое взаимодействие цепочки.
-
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая.
-
Ответственный - указывается ответственный за данное взаимодействие.
-
Рассмотреть после - необходимо заполнить, если рассмотрение данного взаимодействие планируется отложить до определенной даты.
-
Рассмотрено - признак того, что данное взаимодействие рассмотрено и не требует дальнейшего внимания.
-
Комментарий - произвольный текстовый комментарий.
-
Реквизиты Рассмотрено и Рассмотреть после доступны для указания если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование/Органайзер.
Система позволяет в качестве участников взаимодействий указывать объекты информационной базы. Например, клиентов или поставщиков. При получении письма анализируются адреса отправителя и получателей письма. Например, если находится однозначное соответствие адреса отправителя и клиента, то система в письме сопоставляет отправителя и клиента. Это позволяет в дальнейшем получить информацию о всех взаимодействиях с клиентом. Если однозначное соответствие найти не удалось, например адрес не найден или указан у нескольких клиентов, то эти данные необходимо указать вручную. Если хотя бы один получатель или отправитель не сопоставлен, то на форме будет отображаться гиперссылка Уточнить контакты. При нажатии на неё откроется форма Уточнение контактов, в которой можно будет выполнить сопоставление.
-
-
Примечание. Если все контакты сопоставлены, то данная гиперссылка на форме не отображается, открыть форму сопоставления контактов возможно по команде Уточнить контакты, которая располагается в меню формы Все действия.
+
Тема - тема письма. Заполняется отправителем.
+
Письмо - тело письма. Располагается на специальной вкладке.
+
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая. Проставляется отправителем письма.
+
Номер - номер, под которым данное письмо зарегистрировано в программе.
+
Предмет - то, чему посвящено взаимодействие, например претензии клиента. Если предмет взаимодействия не определен, то в качестве предмета выступает текущий документ (т.е. такой документ начинает цепочку взаимодействий). При выполнении команды Взаимодействия из документа предметом взаимодействия во вновь созданном документе будет предмет, указанный в исходном документе, при этом основные поля будут также скопированы.
+
Ответственный - выберите ответственного за данное взаимодействие из списка пользователей. По умолчанию программа указывает для входящих писем ответственного учетной записи.
+
Рассмотрено - признак того, что данное взаимодействие рассмотрено и не требует дальнейшего внимания. С рассмотренных документов программа снимает выделение в списке взаимодействий. При соответствующих настройках после установки флажка отправителю будет отправлено уведомление о прочтении.
+
Рассмотреть после - необходимо заполнить, если рассмотрение данного взаимодействия планируется отложить до определенной даты. Выберите из списка нужное значение: Через 15 мин, Через 30 мин, Через 1 час,Через 3 часа, Завтра. Помимо этих значений можно указать произвольную дату и время с помощью кнопки .
+
Комментарий - дополнительная информация о входящем письме.
+
Поля Рассмотрено и Рассмотреть после доступны для указания, если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование - Органайзер.
Воспользуйтесь одной из кнопок или командами меню Все действия (в интерфейсе Такси Еще):
+
Ответить - в созданном исходящем письме в качестве получателя будет указан отправитель письма. Исходящее письмо при этом входит в цепочку взаимодействий.
+
Ответить всем - в созданном исходящем письме в качестве получателей будут указаны отправитель и все получатели данного письма (в полях Кому и Копии).
+
Переслать - получатели не заполняются. Будет сформировано исходящее письмо, включающее в себя текст и вложения входящего письма.
Программа позволяет в качестве участников взаимодействий указывать элементы списков. Например, клиентов или поставщиков.
+
+
При получении письма анализируются адреса отправителя и получателей письма. Если находится однозначное соответствие адреса отправителя и клиента, то программа в письме сопоставляет отправителя и клиента. Это позволяет в дальнейшем получить информацию обо всех взаимодействиях с клиентом.
+
+
Если однозначное соответствие найти не удалось, например, адрес не найден или указан у нескольких клиентов, то эти данные необходимо указать вручную.
+
+
Если хотя бы один получатель или отправитель не сопоставлен, в письме отображается гиперссылка Уточнить контакты. Перейдите по гиперссылке, для того чтобы сопоставить и обновить адреса электронной почты, содержащиеся в письме, с контактами и их текущей контактной информацией в программе в окне Сохранение адресов в контактах.
+
+
Если адрес был ранее сопоставлен с контактом, то он будет отображен в списке. Если адрес не был ранее сопоставлен с контактом, или если необходимо сопоставить адрес с другим контактом, или записать адрес в другое поле контактной информации, то в поле Контакт можно выбрать контакт, в который будет записан новый адрес электронной почты. В поле Вид эл. почты контакта можно уточнить, в какое именно поле будет записан электронный адрес контакта.
+
Если у контакта в программе указан адрес электронной почты, то при получении письма от такого контакта сопоставление контакта с адресом произойдет автоматически.
+
+
Если все контакты сопоставлены, то данная гиперссылка не отображается, открыть окно сопоставления контактов возможно по команде Все действия (в интерфейсе Такси Еще) - Уточнить контакты.
Воспользуйтесь командой Печать командной панели формы.
-
\ No newline at end of file
+
Параметры письма. Изменение папки электронного письма
+
+
Дополнительную информацию о письме можно узнать, выполнив команду Все действия (в интерфейсе Такси Еще) - Параметры письма.
+
+
Для того чтобы изменить папку входящего письма, выполните команду Все действия (в интерфейсе Такси Еще) - Параметры письма, в открывшемся окне измените поле Папка.
Если в письме имеются вложения, то с помощью контекстного меню по правой кнопке мыши можно:
+
Открыть вложение - открыть файл с помощью соответствующего внешнего приложения.
+
Сохранить как - сохранить файл в папку на компьютере. Выберите папку на компьютере, нажмите Сохранить. Программа выводит сообщение об успешном сохранении файла.
+
Предназначен для работы с документами Входящее электронное письмо. Этот документ можно только получить, ввести его невозможно.
+
В списке выводится:
+
Отправлено - дата отправки письма;
+
Отправитель - адрес электронной почты отправителя входящего письма.
+
Тема - поле заполняется отправителем;
Отбор по периоду
+
С помощью соответствующей команды меню Все действия (в интерфейсе Такси Еще) можно Установить интервал дат.
Создание исходящего электронного письма на основании входящего электронного письма
+
Воспользуйтесь одной из кнопок или командами меню Все действия (в интерфейсе Такси Еще):
+
Ответить - в созданном исходящем письме в качестве получателя будет указан отправитель письма. Исходящее письмо при этом входит в цепочку взаимодействий.
+
Ответить всем - в созданном исходящем письме в качестве получателей будут указаны отправитель и все получатели данного письма (в полях Кому и Копии).
+
Переслать - получатели не заполняются. Будет сформировано исходящее письмо, включающее в себя текст и вложения входящего письма.
Открывается по кнопке после выбора типа данных Исходящее электронное письмо (например, при заполнении поля Предмет в каком-либо документе взаимодействий).
+
В списке выводится:
+
Создано - дата создания документа;
+
Номер - номер присваивается автоматически;
+
Тема - краткое описание содержания письма;
+
Предмет - то, чему посвящен документ взаимодействий, например, претензии клиента. Предметом могут быть документы программы и документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета автоматически проставляется значение текущего документа, т.е. такой документ взаимодействия начинает цепочку взаимодействий;
+
Получатели - контакты, которые указаны в качестве адресатов письма.
Выбор документа
+
+
Выделите документ, нажмите Выбрать.
+
+
Также можно использовать двойной щелчок мыши.
Ввод документа Исходящее электронное письмо
+
Нажмите Создать. Заполните нужные поля.
Пересылка исходящего электронного письма
+
+
Выделите нужное письмо.
+
+
Нажмите Переслать. В этом случае получатели автоматически не заполняются. Будет сформировано исходящее письмо, включающее в себя текст и вложения выбранного исходящего письма.
В поле От (электронный адрес отправителя) программой автоматически проставляется:
+
Учетная запись письма-основания, если данное письмо создается на основании другого письма. Например, как ответ на входящее письмо;
+
Первая из доступных пользовательских учетных записей, если письмо создается не на основании другого письма.
Учетную запись, с которой предполагается отправка письма, можно изменить. Для того чтобы заполнить адрес отправителя, выберите учетную запись электронной почты из выпадающего списка.
Адресаты письма могут быть указаны в трех списках:
+
Кому - основные адресаты письма, участвующие в переписке.
Копии - дополнительные адресаты письма. В это поле обычно помещают тех, кто не участвует непосредственно в переписке, но должен быть проинформирован о ее содержании.
-
Скрытые копии - указанные в данном поле адресаты получат письмо, но остальные адресаты письма не будут знать об этом.
Указать адресата можно двумя способами:
-
Вводом по строке - начните вводить имя адресата или адрес его электронной почты и система предложит вам адресата по найденным совпадениям.
-
Подбор адресата - воспользуйтесь кнопкой выбора в поле с адресатам. Откроется Адресная книга, с помощью которой можно подобрать адресатов.
Скрытые - указанные в данном поле адресаты получат письмо, но остальные адресаты письма не будут знать об этом.
Если в программе имеются нужные контакты, то указать адресата можно двумя способами:
+
Вводом по строке - начните вводить имя адресата или адрес его электронной почты, и программа предложит вам адресата по найденным совпадениям. Будет выполнена его подстановка в письмо. Вводить можно как наименование контакта, так и адрес его электронной почты. Ввести можно несколько адресов через точку с запятой;
+
С помощью подбора адресата - нажмите Выбрать в поле с адресатом. Откроется Адресная книга, с помощью которой можно подобрать адресатов.
Если контактов нет в программе, можно заполнить поля с адресатами письма вручную. После отправки письма становится доступной команда Уточнить контакты, с помощью которой можно вызвать Адресную книгу.
Тема - краткое описание того, чему посвящено письмо.
-
Текст сообщения - собственно текст письма.
-
Предмет - то чему, посвящено взаимодействие, например претензии клиента. Если предмет взаимодействия не определен, то в качестве предмета выступает первое взаимодействие цепочки.
-
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная, Высокая.
-
Ответственный - указывается ответственный за данное взаимодействие.
-
Рассмотреть после - необходимо заполнить, если контроль данного письма планируется отложить до определенной даты.
-
На контроле - признак того, что данное письмо потребует внимания в дальнейшем.
-
Комментарий - произвольный текстовый комментарий.
-
Реквизиты На контроле и Рассмотреть после доступны для указания если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование/Органайзер.
Да, если это предусмотрено в настройках программы. Изменить формат редактирования можно при помощи переключателя, расположенного в командной панели формы. Доступно два формат редактирования письма: Обычный текст и HTML. Во втором случае доступно форматирование текста и возможность вставлять в него картинки.
-
-
Важно. Редактирование письма в формате HTML доступно, если это предусмотрено настройками программы. Данную настройку можно изменить в разделе Администрирование/Органайзер отредактировав значение флага Исходящие письма в формате HTML.
Открыть вложение - команда доступна в контекстном меню таблицы вложений.
-
Удалить вложение - команда доступна в контекстном меню таблицы вложений или при нажатии кнопки DEL.
-
Свойства вложения - команда доступна в контекстном меню таблицы вложений. В отрывшейся форме можно будет подписать вложение электронной цифровой подписью.
Необходимо выполнить команду Параметры письма, расположенную в меню формы Все действия, откроется форма, в которой возможно изменить значения флагов Включать тело исходного письма . По умолчанию данное значение заполняется из персональных настроек, которые можно изменить из формы списка взаимодействий.
Необходимо выполнить команду Параметры письма, расположенную в меню формы Все действия, откроется форма, в которой возможно измененить значения флагов Уведомить о доставке и Уведомить о прочтении. По умолчанию данные значения заполняются из персональных настроек, которые можно изменить из формы списка взаимодействий.
Система позволяет в качестве участников взаимодействий указывать объекты информационной базы. Например, клиентов или поставщиков. Это позволяет в дальнейшем получить информацию о всех взаимодействиях с клиентом. Если при создании письма хотя бы один адресат не будет сопоставлен контакту, то на форме будет отображаться гиперссылка Уточнить контакты. При нажатии на неё откроется форма Уточнение контактов, в которой можно будет выполнить сопоставление.
-
Если все контакты сопоставлены, то данная гиперссылка на форме не отображается, открыть форму сопоставления контактов возможно по команде Уточнить контакты, которая располагается в меню формы Все действия.
Воспользуйтесь командой Печать командной панели формы.
-
\ No newline at end of file
+
Письмо - собственно текст письма, располагается на специальной вкладке.
+
Комментарий - произвольный текстовый комментарий, дополнительная информация о письме. Располагается на специальной вкладке.
+
Список вложений - к письму можно прикрепить различные файлы с помощью соответствующих команд.
+
Предмет - то, чему посвящено взаимодействие, например, претензии клиента. Предметом могут быть документы программы и документы взаимодействий. Если предмет взаимодействия не определен, то в качестве предмета автоматически проставляется значение текущего документа, т.е. такой документ взаимодействия начинает цепочку взаимодействий. При выполнении команды Взаимодействия из документа предметом взаимодействия во вновь созданном документе будет предмет, указанный в исходном документе, при этом основные поля будут также скопированы.
+
Ответственный - выберите ответственного за данное взаимодействие из списка пользователей. По умолчанию программа указывает в качестве ответственного для большинства документов взаимодействия текущего пользователя.
+
На контроле - признак того, что данное письмо потребует внимания в дальнейшем. В списке взаимодействий выделяется жирным шрифтом. Использовать флажок рекомендуется при коллективной работе с документами взаимодействия.
+
Рассмотреть после - необходимо заполнить, если контроль данного письма планируется отложить до определенной даты. Выберите из списка нужное значение: Через 15 мин, Через 30 мин, Через 1 час,Через 3 часа, Завтра. Помимо этих значений можно указать произвольную дату и время с помощью кнопки .
+
Важность - признак необходимости акцентировать внимание на данном взаимодействии, или наоборот, признак несущественности. Может принимать значения Низкая, Обычная (значение по умолчанию), Высокая. Отображается в списке взаимодействий специальными значками.
+
Создано - дата и время создания документа. По умолчанию в этом поле программой автоматически проставляется текущая дата и время записи документа. Поле нельзя отредактировать.
+
Автор - пользователь, который создал документ. Указывается программой автоматически. Поле нельзя отредактировать.
+
Реквизиты На контроле и Рассмотреть после доступны для указания, если это предусмотрено настройками программы. Изменить данные настройки можно в разделе Администрирование - Органайзер.
Редактирование письма в формате HTML доступно, если это предусмотрено настройками программы. Данную настройку можно изменить в разделе Администрирование - Органайзер, отредактировав значение флажка Исходящие письма в формате HTML.
+
+
Формат письма по умолчанию определяется согласно формату предыдущего письма, написанного пользователем.
+
+
Изменить формат редактирования можно при помощи выпадающего меню во время ввода письма.
+
+
Доступно два формата редактирования письма:
+
+
Обычный текст - при переключении письма в обычный текст будут утеряны все элементы оформления, картинки и прочие вставленные элементы. Программа выводит об этом предупреждение. На вопрос программы для подтверждения действия нажмите Да, для отмены Нет.
+
+
HTML - доступно форматирование текста и возможность вставлять в него картинки и гиперссылки с помощью стандартных команд.
+
+
Стандартные кнопки форматирования размещены над текстом письма, также можно найти команды форматирования текста в меню Все действия (в интерфейсе Такси Еще).
+
После сохранения введенного письма изменение формата письма становится недоступным.
Открыть вложение - открыть файл с помощью соответствующего внешнего приложения.
+
Удалить вложение. Также можно удалить файл вложения с помощью кнопки Del.
+
Свойства вложения - просмотр карточки присоединенного файла. С помощью соответствующих команд в карточке можно также подписать вложение электронной цифровой подписью или зашифровать.
Выполните команду Все действия (в интерфейсе Такси Еще) - Параметры письма, включите флажки Уведомить о доставке и Уведомить о прочтении. По умолчанию данные значения заполняются из персональных настроек, которые можно изменить из списка взаимодействий.
+
+
Отображаются также другие параметры письма и служебная информация.
Программа позволяет в качестве участников взаимодействий указывать элементы списков. Например, клиентов или поставщиков. Это позволяет в дальнейшем получить информацию обо всех взаимодействиях с клиентом. Если при создании письма хотя бы один адресат не будет сопоставлен контакту, в письме будет отображаться гиперссылка Уточнить контакты. По гиперссылке открывается Адресная книга, в которой можно будет выполнить сопоставление.
+
+
Если все контакты сопоставлены, то данная гиперссылка не отображается, произвести сопоставление контактов можно по команде Все действия (в интерфейсе Такси Еще) -Уточнить контакты.
Для отправки письма (в файловом варианте) используется кнопка Отправить. В клиент-серверном варианте регламентным заданием осуществляется отправка и получение писем всех пользователей, всех учетных записей.
В окне Печать укажите необходимые настройки для принтера - количество копий, размер бумаги и т.п.
Статусы исходящего письма
+
Исходящим письмам присваиваются следующие статусы:
+
Если письмо еще не отправлено, то оно имеет статус Черновик. Его можно редактировать и записывать изменения. С помощью соответствующей кнопки можно Отправить письмо (для файлового варианта) и оно перейдет в другой статус.
+
Если письмо находится в процессе отправки, то ему присваивается статус Исходящее. После попытки отправить письмо его статус меняется, а наименование кнопки меняется на Отправить сейчас. Редактировать такие письма уже нельзя.
+
После отправки исходящего письма его статус меняется на статус Отправлено. Редактирование такого письма также невозможно.
+
В зависимости от статуса письмо помещается в ту или иную папку. Для размещения писем в папки также можно настроить правила обработки писем.
С помощью соответствующей команды меню Все действия (в интерфейсе Такси Еще) можно Вставить внешнюю ссылку на объект информационной базы. Адрес, по которому информационная база доступна внешнему пользователю, заполняется автоматически. Для получения внутренней ссылки на объект откройте нужный объект, нажмите Ctrl+F11 и вставьте ссылку в соответствующее поле. Нажмите Вставить, в письме будет проставлена необходимая ссылка.
\ No newline at end of file
diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl
index 61e79647e..f06926a86 100644
--- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl
+++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl
@@ -152,6 +152,14 @@
Если ПроверитьЗаполнениеСписковАдресатов() Тогда
Отказ = Истина;
+ КонецЕсли;
+
+ Если Объект.СтатусПисьма = ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Черновик")
+ ИЛИ Объект.СтатусПисьма = ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Отправлено") Тогда
+ ВзаимодействияКлиент.ПроверкаЗаполненностиРеквизитовОтложеннойОтправки(Объект, Отказ);
+ КонецЕсли;
+
+ Если Отказ Тогда
Возврат;
КонецЕсли;
@@ -939,6 +947,17 @@
Процедура УправлениеДоступностью()
Элементы.РассмотретьПосле.Доступность = НаКонтроле;
+
+ Если Объект.СтатусПисьма = ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее") И
+ (НЕ ИнформационнаяБазаФайловая
+ ИЛИ (Объект.ДатаКогдаОтправить <> Дата(1,1,1) И Объект.ДатаКогдаОтправить > ОбщегоНазначенияКлиент.ДатаСеанса())
+ ИЛИ (Объект.ДатаАктуальностиОтправки <> Дата(1,1,1) И Объект.ДатаАктуальностиОтправки < ОбщегоНазначенияКлиент.ДатаСеанса())) Тогда
+ Элементы.Отправить.Доступность = Ложь;
+ Иначе
+ Элементы.Отправить.Доступность = Истина;
+ КонецЕсли;
+
+ Элементы.ГруппаДатаОтправкиАктуальность.Доступность = (Объект.СтатусПисьма <> ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Отправлено"));
КонецПроцедуры
@@ -968,12 +987,10 @@
Если Объект.СтатусПисьма <> Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик Тогда
Если Вложения.Количество() > 0 Тогда
- Элементы.СтраницыВложения.ТекущаяСтраница = Элементы.СтраницаРедактирование;
Элементы.ДобавитьВложение.Доступность = Ложь;
Элементы.УдалитьВложение.Доступность = Ложь;
- Элементы.ДобавитьВложениеСкрепка.Видимость = Ложь;
Иначе
- Элементы.СтраницыВложения.Видимость = Ложь;
+ Элементы.Вложения.Видимость = Ложь;
КонецЕсли;
Если Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTML Тогда
@@ -987,25 +1004,17 @@
Элементы.ТекстПисьма.ТолькоПросмотр = Истина;
КонецЕсли;
- Если Вложения.Количество() > 0 Тогда
- Элементы.СтраницыВложения.ТекущаяСтраница = Элементы.СтраницаРедактирование;
- Элементы.Вложения.ВысотаВСтрокахТаблицы = 2;
- КонецЕсли;
-
Если Объект.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Исходящее И
- НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
+ (НЕ ИнформационнаяБазаФайловая
+ ИЛИ (Объект.ДатаКогдаОтправить <> Дата(1,1,1) И Объект.ДатаКогдаОтправить > ТекущаяДатаСеанса())
+ ИЛИ (Объект.ДатаАктуальностиОтправки <> Дата(1,1,1) И Объект.ДатаАктуальностиОтправки < ТекущаяДатаСеанса())) Тогда
+
Элементы.Отправить.Доступность = Ложь;
+
КонецЕсли;
Иначе
- Элементы.СтраницыВложения.ТекущаяСтраница = Элементы.СтраницаРедактирование;
- Если Вложения.Количество() > 0 Тогда
- Элементы.Вложения.ВысотаВСтрокахТаблицы = 2;
- Иначе
- Элементы.Вложения.ВысотаВСтрокахТаблицы = 1;
- КонецЕсли;
-
ОпределитьСпособРедактированияПисьма();
КонецЕсли;
@@ -1082,16 +1091,6 @@
Возврат;
КонецЕсли;
- Если Вложения.Количество() > 0 Тогда
- Элементы.СтраницыВложения.ТекущаяСтраница = Элементы.СтраницаРедактирование;
- Элементы.Вложения.ВысотаВСтрокахТаблицы = 2;
- Иначе
- Если Объект.СтатусПисьма <> ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Черновик") Тогда
- Элементы.СтраницыВложения.ТекущаяСтраница = Элементы.СтраницаДобавить;
- КонецЕсли;
- Элементы.Вложения.ВысотаВСтрокахТаблицы = 1;
- КонецЕсли;
-
КонецПроцедуры
&НаКлиенте
@@ -1187,8 +1186,8 @@
Иначе
Вложения.Очистить();
- табВложения = УправлениеЭлектроннойПочтой.ПолучитьВложенияЭлектронногоПисьма(Объект.Ссылка, Истина);
- Для Каждого СтрокаТаблицыВложений Из табВложения Цикл
+ ТабВложения = УправлениеЭлектроннойПочтой.ПолучитьВложенияЭлектронногоПисьма(Объект.Ссылка, Истина);
+ Для Каждого СтрокаТаблицыВложений Из ТабВложения Цикл
Если ПустаяСтрока(СтрокаТаблицыВложений.ИДФайлаЭлектронногоПисьма) Тогда
НоваяСтрока = Вложения.Добавить();
НоваяСтрока.Ссылка = СтрокаТаблицыВложений.Ссылка;
@@ -1561,6 +1560,9 @@
Если Параметры.Свойство("Кому") И Параметры.Кому <> Неопределено Тогда
+ //Если передан параметр "Кому", то эта табличная часть очищается перед заполнением согласно данным параметра.
+ Объект.ПолучателиПисьма.Очистить();
+
Если ТипЗнч(Параметры.Кому) = Тип("Строка") И НЕ ПустаяСтрока(Параметры.Кому) Тогда
Объект.СписокПолучателейПисьма = Параметры.Кому;
НоваяСтрока = Объект.ПолучателиПисьма.Добавить();
@@ -1600,6 +1602,8 @@
КонецЕсли;
+ ОчиститьДублиАдресатов(Объект.ПолучателиПисьма);
+
Если НЕ Параметры.УчетнаяЗапись.Пустая() Тогда
Объект.УчетнаяЗапись = Параметры.УчетнаяЗапись;
@@ -1754,6 +1758,7 @@
&НаСервере
Процедура ПриСозданииИПриЧтенииНаСервере()
+ ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая();
Взаимодействия.УстановитьЗаголовокФормыЭлектронногоПисьма(ЭтотОбъект);
УстановитьЗаголовокКнопкиПоУмолчанию();
ОбработатьПереданныеПараметры(Параметры);
@@ -2044,6 +2049,8 @@
КонецЦикла;
+ ОчиститьДублиАдресатов(Объект.ПолучателиПисьма);
+
СформироватьСпискиПолучателей();
КонецПроцедуры
@@ -2409,6 +2416,50 @@
КонецПроцедуры
+&НаКлиентеНаСервереБезКонтекста
+Процедура ОчиститьДублиАдресатов(ТаблицаПолучателей)
+
+ СоответствиеАдресовСтрокКУдалению = Новый Соответствие;
+
+ Для Каждого СтрокаПолучатель Из ТаблицаПолучателей Цикл
+ Если СоответствиеАдресовСтрокКУдалению.Получить(СтрокаПолучатель.Адрес) <> Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+ НайденныеСтроки = ТаблицаПолучателей.НайтиСтроки(Новый Структура("Адрес", СтрокаПолучатель.Адрес));
+ Если НайденныеСтроки.Количество() > 1 Тогда
+ МассивКУдалению = Новый Массив;
+ Для Инд = 0 По НайденныеСтроки.Количество() - 1 Цикл
+ Если Инд = 0 Тогда
+ Если НЕ ЗначениеЗаполнено(НайденныеСтроки[Инд].Контакт) Тогда
+ МассивКУдалению.Добавить(НайденныеСтроки[Инд]);
+ КонецЕсли;
+ Иначе
+ Если МассивКУдалению.Количество() = 0 ИЛИ (НЕ ЗначениеЗаполнено(НайденныеСтроки[Инд].Контакт)) Тогда
+ МассивКУдалению.Добавить(НайденныеСтроки[Инд]);
+ ИначеЕсли ЗначениеЗаполнено(НайденныеСтроки[Инд].Контакт) И НЕ (Инд = МассивКУдалению.Количество()) Тогда
+ МассивКУдалению.Добавить(НайденныеСтроки[Инд]);
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Если НайденныеСтроки.Количество() = МассивКУдалению.Количество() Тогда
+ МассивКУдалению.Удалить(0);
+ КонецЕсли;
+
+ СоответствиеАдресовСтрокКУдалению.Вставить(СтрокаПолучатель.Адрес,МассивКУдалению);
+
+ КонецЕсли;
+ КонецЦикла;
+
+ Для Каждого СтрокаСоответствия ИЗ СоответствиеАдресовСтрокКУдалению Цикл
+ Для Каждого СтрокаКУдалению Из СтрокаСоответствия.Значение Цикл
+ ТаблицаПолучателей.Удалить(СтрокаКУдалению);
+ КонецЦикла;
+ КонецЦикла;
+
+КонецПроцедуры
+
// СтандартныеПодсистемы.Свойства
&НаСервере
diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl
index 5ac142a2f..8460da557 100644
--- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl
+++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl
@@ -2,6 +2,14 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+// Получает адресатов электронного письма
+//
+// Параметры:
+// Ссылка - ДокументСсылка.ЭлектронноеПисьмоИсходящее - документ, абонента которого необходимо получить.
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - таблица, содержащая колонки "Контакт", "Представление" и "Адрес"
+//
Функция ПолучитьКонтакты(Ссылка) Экспорт
ТекстЗапроса =
diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo
index 454c84015..b81bf718d 100644
--- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo
+++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo
@@ -747,6 +747,46 @@
UseUse
+
+ ДатаКогдаОтправить
+
+ ru
+ Дата когда отправить
+
+
+ Date
+
+
+
+ ru
+ Если указана, то сообщение будет отправлено в указанную дату.
+
+
+
+
+ Index
+ Use
+
+
+ ДатаАктуальностиОтправки
+
+ ru
+ Дата актуальности отправки
+
+
+ Date
+
+
+
+ ru
+ Дата, до которой письмо имеет смысл отправлять. Если не заполнено, то без ограничений.
+
+
+
+
+ Index
+ Use
+ ФормаДокумента
@@ -767,6 +807,11 @@
ruФорма выбора
+
+
+ ru
+
+ PersonalComputerMobileDevice
@@ -1181,7 +1226,7 @@
ruУточняет значение доступа:
- если идентификатор объекта метаданных, тогда уточняет проверку права
-(ПустаяСсылка - Изменение, иначе Чтение);
+(пустая ссылка - Изменение, иначе Чтение);
- если владелец настроек прав, тогда уточняет таблицу для выбора настроек прав.
diff --git a/SSL/src/Enums/ВариантыВерсионированияОбъектов/ВариантыВерсионированияОбъектов.mdo b/SSL/src/Enums/ВариантыВерсионированияОбъектов/ВариантыВерсионированияОбъектов.mdo
index f25d2483c..b95a49313 100644
--- a/SSL/src/Enums/ВариантыВерсионированияОбъектов/ВариантыВерсионированияОбъектов.mdo
+++ b/SSL/src/Enums/ВариантыВерсионированияОбъектов/ВариантыВерсионированияОбъектов.mdo
@@ -42,6 +42,13 @@
Версионировать при проведении
+
+ ВерсионироватьПриСтарте
+
+ ru
+ Версионировать при старте
+
+ НеВерсионировать
diff --git a/SSL/src/Enums/СостоянияЗаданий/СостоянияЗаданий.mdo b/SSL/src/Enums/СостоянияЗаданий/СостоянияЗаданий.mdo
index 5a49962f6..328649292 100644
--- a/SSL/src/Enums/СостоянияЗаданий/СостоянияЗаданий.mdo
+++ b/SSL/src/Enums/СостоянияЗаданий/СостоянияЗаданий.mdo
@@ -76,7 +76,7 @@
Задание не активно
-
+ ОбработкаОшибкиПриАварийномЗавершенииru
diff --git a/SSL/src/Enums/СпособыВызоваДополнительныхОбработок/СпособыВызоваДополнительныхОбработок.mdo b/SSL/src/Enums/СпособыВызоваДополнительныхОбработок/СпособыВызоваДополнительныхОбработок.mdo
index d04cf483a..5ebe147a2 100644
--- a/SSL/src/Enums/СпособыВызоваДополнительныхОбработок/СпособыВызоваДополнительныхОбработок.mdo
+++ b/SSL/src/Enums/СпособыВызоваДополнительныхОбработок/СпособыВызоваДополнительныхОбработок.mdo
@@ -64,4 +64,11 @@
Сценарий в безопасном режиме
+
+ ЗагрузкаДанныхИзФайла
+
+ ru
+ Загрузка данных из файла
+
+
diff --git a/SSL/src/Enums/СпособыУстановкиКурсаВалюты/СпособыУстановкиКурсаВалюты.mdo b/SSL/src/Enums/СпособыУстановкиКурсаВалюты/СпособыУстановкиКурсаВалюты.mdo
new file mode 100644
index 000000000..c2d6fb0d8
--- /dev/null
+++ b/SSL/src/Enums/СпособыУстановкиКурсаВалюты/СпособыУстановкиКурсаВалюты.mdo
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+ СпособыУстановкиКурсаВалюты
+
+ ru
+ Способы установки курса валюты
+
+
+ Use
+ Order
+
+ Use
+
+
+
+
+ Use
+ Ref
+
+ Use
+
+
+
+ true
+ BothWays
+
+ ЗагрузкаИзИнтернета
+
+ ru
+ Загрузка из интернета
+
+
+
+ РучнойВвод
+
+ ru
+ Ручной ввод
+
+
+
+ НаценкаНаКурсДругойВалюты
+
+ ru
+ Наценка на курс другой валюты
+
+
+
+ РасчетПоФормуле
+
+ ru
+ Расчет по формуле
+
+
+
diff --git a/SSL/src/Enums/СрокиХраненияВерсий/СрокиХраненияВерсий.mdo b/SSL/src/Enums/СрокиХраненияВерсий/СрокиХраненияВерсий.mdo
new file mode 100644
index 000000000..82e712b42
--- /dev/null
+++ b/SSL/src/Enums/СрокиХраненияВерсий/СрокиХраненияВерсий.mdo
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+ СрокиХраненияВерсий
+
+ ru
+ Сроки хранения версий
+
+
+ Use
+ Order
+
+ Use
+
+
+
+
+ Use
+ Ref
+
+ Use
+
+
+
+ true
+ BothWays
+
+ ЗаПоследнююНеделю
+
+ ru
+ За последнюю неделю
+
+
+
+ ЗаПоследнийМесяц
+
+ ru
+ За последний месяц
+
+
+
+ ЗаПоследниеТриМесяца
+
+ ru
+ За последние три месяца
+
+
+
+ ЗаПоследниеШестьМесяцев
+
+ ru
+ За последние шесть месяцев
+
+
+
+ ЗаПоследнийГод
+
+ ru
+ За последний год
+
+
+
+ Бессрочно
+
+ ru
+ Бессрочно
+
+
+
diff --git a/SSL/src/EventSubscriptions/ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданных/ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданных.mdo b/SSL/src/EventSubscriptions/ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданных/ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданных.mdo
new file mode 100644
index 000000000..0a5b8a535
--- /dev/null
+++ b/SSL/src/EventSubscriptions/ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданных/ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданных.mdo
@@ -0,0 +1,13 @@
+
+
+ ДополнительныеОтчетыИОбработкиПередУдалениемИдентификатораОбъектаМетаданных
+
+ ru
+ Дополнительные отчеты и обработки перед удалением идентификатора объекта метаданных
+
+
+ CatalogObject.ИдентификаторыОбъектовМетаданных
+
+ BeforeDelete
+ CommonModule.ДополнительныеОтчетыИОбработки.ПередУдалениемИдентификатораОбъектаМетаданных
+
diff --git a/SSL/src/EventSubscriptions/ЗапретитьПометкуУдаленияПредопределенныхЭлементов/ЗапретитьПометкуУдаленияПредопределенныхЭлементов.mdo b/SSL/src/EventSubscriptions/ЗапретитьПометкуУдаленияПредопределенныхЭлементов/ЗапретитьПометкуУдаленияПредопределенныхЭлементов.mdo
new file mode 100644
index 000000000..12b4c83ca
--- /dev/null
+++ b/SSL/src/EventSubscriptions/ЗапретитьПометкуУдаленияПредопределенныхЭлементов/ЗапретитьПометкуУдаленияПредопределенныхЭлементов.mdo
@@ -0,0 +1,16 @@
+
+
+ ЗапретитьПометкуУдаленияПредопределенныхЭлементов
+
+ ru
+ Запретить пометку удаления предопределенных элементов
+
+
+ ChartOfCalculationTypesObject
+ ChartOfAccountsObject
+ ChartOfCharacteristicTypesObject
+ CatalogObject
+
+ BeforeWrite
+ CommonModule.СтандартныеПодсистемыСервер.ЗапретитьПометкуУдаленияПредопределенныхЭлементовПередЗаписью
+
diff --git a/SSL/src/EventSubscriptions/ЗапретитьУдалениеПредопределенныхЭлементов/ЗапретитьУдалениеПредопределенныхЭлементов.mdo b/SSL/src/EventSubscriptions/ЗапретитьУдалениеПредопределенныхЭлементов/ЗапретитьУдалениеПредопределенныхЭлементов.mdo
new file mode 100644
index 000000000..42eb79cf3
--- /dev/null
+++ b/SSL/src/EventSubscriptions/ЗапретитьУдалениеПредопределенныхЭлементов/ЗапретитьУдалениеПредопределенныхЭлементов.mdo
@@ -0,0 +1,16 @@
+
+
+ ЗапретитьУдалениеПредопределенныхЭлементов
+
+ ru
+ Запретить удаление предопределенных элементов
+
+
+ ChartOfCalculationTypesObject
+ ChartOfAccountsObject
+ ChartOfCharacteristicTypesObject
+ CatalogObject
+
+ BeforeDelete
+ CommonModule.СтандартныеПодсистемыСервер.ЗапретитьУдалениеПредопределенныхЭлементовПередУдалением
+
diff --git a/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo b/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo
index a18ef0f27..7038e4a0f 100644
--- a/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo
+++ b/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo
@@ -57,7 +57,6 @@
ConstantValueManager.СписокРасширенийФайловOpenDocumentConstantValueManager.ИспользоватьРазделениеПоОбластямДанныхConstantValueManager.ИспользоватьСинхронизациюДанныхВМоделиСервисаСЛокальнойПрограммой
- ConstantValueManager.ПараметрыБазовойФункциональностиConstantValueManager.НастройкаПодчиненногоУзлаРИБЗавершенаConstantValueManager.КопироватьОбластиДанныхИзЭталоннойCatalogObject.ПоставляемыеДанные
diff --git a/SSL/src/EventSubscriptions/ПолучениеПолейПредставленияВзамоимодействия/ПолучениеПолейПредставленияВзамоимодействия.mdo b/SSL/src/EventSubscriptions/ПолучениеПолейПредставленияВзамоимодействия/ПолучениеПолейПредставленияВзамоимодействия.mdo
new file mode 100644
index 000000000..4baa6b818
--- /dev/null
+++ b/SSL/src/EventSubscriptions/ПолучениеПолейПредставленияВзамоимодействия/ПолучениеПолейПредставленияВзамоимодействия.mdo
@@ -0,0 +1,18 @@
+
+
+ ПолучениеПолейПредставленияВзамоимодействия
+
+ ru
+ Получение полей представления взаимодействия
+
+
+ DocumentManager.СообщениеSMS
+ DocumentManager.Встреча
+ DocumentManager.ЗапланированноеВзаимодействие
+ DocumentManager.ЭлектронноеПисьмоИсходящее
+ DocumentManager.ЭлектронноеПисьмоВходящее
+ DocumentManager.ТелефонныйЗвонок
+
+ PresentationFieldsGetProcessing
+ CommonModule.ВзаимодействияКлиентСервер.ОбработкаПолученияПолейПредставления
+
diff --git a/SSL/src/EventSubscriptions/ПолучениеПредставленияВзаимодействия/ПолучениеПредставленияВзаимодействия.mdo b/SSL/src/EventSubscriptions/ПолучениеПредставленияВзаимодействия/ПолучениеПредставленияВзаимодействия.mdo
new file mode 100644
index 000000000..9e6b7ac62
--- /dev/null
+++ b/SSL/src/EventSubscriptions/ПолучениеПредставленияВзаимодействия/ПолучениеПредставленияВзаимодействия.mdo
@@ -0,0 +1,18 @@
+
+
+ ПолучениеПредставленияВзаимодействия
+
+ ru
+ Получение представления взаимодействия
+
+
+ DocumentManager.СообщениеSMS
+ DocumentManager.Встреча
+ DocumentManager.ЗапланированноеВзаимодействие
+ DocumentManager.ЭлектронноеПисьмоИсходящее
+ DocumentManager.ЭлектронноеПисьмоВходящее
+ DocumentManager.ТелефонныйЗвонок
+
+ PresentationGetProcessing
+ CommonModule.ВзаимодействияКлиентСервер.ОбработкаПолученияПредставления
+
diff --git a/SSL/src/EventSubscriptions/ПолучитьПоляПредставленияБизнесПроцесса/ПолучитьПоляПредставленияБизнесПроцесса.mdo b/SSL/src/EventSubscriptions/ПолучитьПоляПредставленияБизнесПроцесса/ПолучитьПоляПредставленияБизнесПроцесса.mdo
new file mode 100644
index 000000000..766f26334
--- /dev/null
+++ b/SSL/src/EventSubscriptions/ПолучитьПоляПредставленияБизнесПроцесса/ПолучитьПоляПредставленияБизнесПроцесса.mdo
@@ -0,0 +1,13 @@
+
+
+ ПолучитьПоляПредставленияБизнесПроцесса
+
+ ru
+ Получить поля представления бизнес процесса
+
+
+ BusinessProcessManager.Задание
+
+ PresentationFieldsGetProcessing
+ CommonModule.БизнесПроцессыИЗадачиКлиентСервер.ОбработкаПолученияПолейПредставленияБизнесПроцесса
+
diff --git a/SSL/src/EventSubscriptions/ПолучитьПредставлениеБизнесПроцесса/ПолучитьПредставлениеБизнесПроцесса.mdo b/SSL/src/EventSubscriptions/ПолучитьПредставлениеБизнесПроцесса/ПолучитьПредставлениеБизнесПроцесса.mdo
new file mode 100644
index 000000000..c0aa3e71f
--- /dev/null
+++ b/SSL/src/EventSubscriptions/ПолучитьПредставлениеБизнесПроцесса/ПолучитьПредставлениеБизнесПроцесса.mdo
@@ -0,0 +1,13 @@
+
+
+ ПолучитьПредставлениеБизнесПроцесса
+
+ ru
+ Получить представление бизнес процесса
+
+
+ BusinessProcessManager.Задание
+
+ PresentationGetProcessing
+ CommonModule.БизнесПроцессыИЗадачиКлиентСервер.ОбработкаПолученияПредставленияБизнесПроцесса
+
diff --git a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаВыбора/Form.form b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаВыбора/Form.form
index a8bb1f9e3..59c1e51bf 100644
--- a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаВыбора/Form.form
+++ b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаВыбора/Form.form
@@ -31,8 +31,8 @@
true
- НаименованиеExtendedTooltip
- 7
+ НаименованиеРасширеннаяПодсказка
+ 16Labeltruetrue
@@ -63,10 +63,10 @@
СписокСтрокаПоиска
- 8
+ 7СписокСтрокаПоискаРасширеннаяПодсказка
- 10
+ 9Labeltruetrue
@@ -76,7 +76,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 9
+ 8trueСписок
@@ -86,10 +86,10 @@
СписокСостояниеПросмотра
- 11
+ 10СписокСостояниеПросмотраРасширеннаяПодсказка
- 13
+ 12Labeltruetrue
@@ -99,7 +99,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 12
+ 11trueViewStatusAddition
@@ -110,10 +110,10 @@
СписокУправлениеПоиском
- 14
+ 13СписокУправлениеПоискомРасширеннаяПодсказка
- 16
+ 15Labeltruetrue
@@ -123,7 +123,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 15
+ 14trueSearchControlAddition
@@ -133,7 +133,7 @@
- СписокExtendedTooltip
+ СписокРасширеннаяПодсказка6Labeltrue
diff --git a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаСписка/Form.form b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаСписка/Form.form
index e3e92ad00..4410b9c0d 100644
--- a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаСписка/Form.form
+++ b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаСписка/Form.form
@@ -1,5 +1,73 @@
+
+ ГруппаПользовательскихНастроек
+ 8
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 9
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 10
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 11
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -58,10 +126,10 @@
СписокСтрокаПоиска
- 8
+ 12СписокСтрокаПоискаРасширеннаяПодсказка
- 10
+ 14Labeltruetrue
@@ -71,7 +139,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 9
+ 13trueСписок
@@ -81,10 +149,10 @@
СписокСостояниеПросмотра
- 11
+ 15СписокСостояниеПросмотраРасширеннаяПодсказка
- 13
+ 17Labeltruetrue
@@ -94,7 +162,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 12
+ 16trueViewStatusAddition
@@ -105,10 +173,10 @@
СписокУправлениеПоиском
- 14
+ 18СписокУправлениеПоискомРасширеннаяПодсказка
- 16
+ 20Labeltruetrue
@@ -118,7 +186,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 15
+ 19trueSearchControlAddition
@@ -177,13 +245,13 @@
truetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1Left
- trueDontBlocktrue
diff --git a/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl b/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl
index fbc116f14..274948d66 100644
--- a/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl
+++ b/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl
@@ -2,15 +2,24 @@
#Область ПрограммныйИнтерфейс
+// Позволяет переопределить настройки плана обмена, заданные по умолчанию.
+// Значения настроек по умолчанию см. в ОбменДаннымиСервер.НастройкиПланаОбменаПоУмолчанию
+//
+// Параметры:
+// Настройки - Структура - Содержит настройки по умолчанию
+//
+Процедура ОпределитьНастройки(Настройки) Экспорт
+
+ Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Ложь;
+
+КонецПроцедуры
+
// Возвращает имя файла настроек по умолчанию;
// В этот файл будут выгружены настройки обмена для приемника;
// Это значение должно быть одинаковым в плане обмена источника и приемника.
//
-// Параметры:
-// Нет.
-//
// Возвращаемое значение:
-// Строка, 255 - имя файла по умолчанию для выгрузки настроек обмена данными
+// Строка - имя файла по умолчанию для выгрузки настроек обмена данными
//
Функция ИмяФайлаНастроекДляПриемника() Экспорт
@@ -25,10 +34,13 @@
// содержащие массивы значений полей табличных частей плана обмена.
//
// Параметры:
-// Нет.
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для
+// разного состава настроек на узле для разных версий корреспондента
+// ИмяФормы - Строка - Имя используемой формы настройки узла. Возможно, например, использование
+// различных форм для разных версий корреспондента.
//
// Возвращаемое значение:
-// СтруктураНастроек - Структура - структура отборов на узле плана обмена
+// СтруктураНастроек - Структура - структура отборов на узле плана обмена
//
Функция НастройкаОтборовНаУзле() Экспорт
@@ -41,7 +53,10 @@
// Для реквизитов шапки используются аналогичные по ключу и значению элементы структуры.
//
// Параметры:
-// Нет.
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для разного
+// состава значений по умолчанию на узле для разных версий корреспондента.
+// ИмяФормы - Строка - Имя используемой формы настройки значений по умолчанию.
+// Возможно, например, использование различных форм для разных версий корреспондента.
//
// Возвращаемое значение:
// СтруктураНастроек - Структура - структура значений по умолчанию на узле плана обмена
@@ -57,11 +72,12 @@
// удобную для восприятия пользователем.
//
// Параметры:
-// НастройкаОтборовНаУзле - Структура - структура отборов на узле плана обмена,
-// полученная при помощи функции НастройкаОтборовНаУзле().
-//
+// НастройкаОтборовНаУзле - Структура - структура отборов на узле плана обмена,
+// полученная при помощи функции НастройкаОтборовНаУзле().
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для различного
+// описания ограничеий передачи данных в зависимости от версии корреспондента.
// Возвращаемое значение:
-// Строка, Неогранич. - строка описания ограничений миграции данных для пользователя
+// Строка - Строка описания ограничений миграции данных для пользователя
//
Функция ОписаниеОграниченийПередачиДанных(НастройкаОтборовНаУзле) Экспорт
@@ -74,11 +90,13 @@
// удобную для восприятия пользователем.
//
// Параметры:
-// ЗначенияПоУмолчаниюНаУзле - Структура - структура значений по умолчанию на узле плана обмена,
-// полученная при помощи функции ЗначенияПоУмолчаниюНаУзле().
+// ЗначенияПоУмолчаниюНаУзле - Структура - структура значений по умолчанию на узле плана обмена,
+// полученная при помощи функции ЗначенияПоУмолчаниюНаУзле().
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для различного
+// описания значений по умолчанию в зависимости от версии корреспондента.
//
// Возвращаемое значение:
-// Строка, Неогранич. - строка описания для пользователя значений по умолчанию
+// Строка - строка описания для пользователя значений по умолчанию
//
Функция ОписаниеЗначенийПоУмолчанию(ЗначенияПоУмолчаниюНаУзле) Экспорт
@@ -86,13 +104,10 @@
КонецФункции
-// Возвращает представление команды создания нового обмена данными.
+// Устанавливает представление команды создания нового обмена данными.
//
// Возвращаемое значение:
-// Строка, Неогранич - представление команды, выводимое в пользовательском интерфейсе.
-//
-// Например:
-// Возврат НСтр("ru = 'Создать обмен в распределенной информационной базе'");
+// Строка - представление команды, выводимое в пользовательском интерфейсе.
//
Функция ЗаголовокКомандыДляСозданияНовогоОбменаДанными() Экспорт
@@ -114,8 +129,8 @@
// Определяет использование механизма регистрации объектов
//
// Возвращаемое значение:
-// Истина - механизм регистрации объектов необходимо использовать для текущего плана обмена.
-// Ложь - механизм регистрации объектов использовать не требуется.
+// Булево - Истина - если механизм регистрации объектов необходимо использовать для текущего плана обмена.
+// Ложь - если механизм регистрации объектов использовать не требуется.
//
Функция ИспользоватьМеханизмРегистрацииОбъектов() Экспорт
@@ -128,10 +143,10 @@
// Для планов обмена не РИБ функция возвращает пустую строку
//
// Возвращаемое значение:
-// Строка, Неогранич - имя формы
+// Строка - имя используемой формы
//
-// Например:
-// Возврат "ПланОбмена.РаспределеннаяИнформационнаяБаза.Форма.ФормаСозданияНачальногоОбраза";
+// Пример:
+// Возврат "ПланОбмена.ОбменВРаспределеннойИнформационнойБазе.Форма.ФормаСозданияНачальногоОбраза";
//
Функция ИмяФормыСозданияНачальногоОбраза() Экспорт
@@ -141,7 +156,11 @@
// Возвращает массив используемых транспортов сообщений для этого плана обмена
//
-// 1. Например, если план обмена поддерживает только два транспорта сообщений FILE и FTP,
+// Возвращаемое значение:
+// Массив - массив содержит значения перечисления ВидыТранспортаСообщенийОбмена
+//
+// Пример:
+// 1. Если план обмена поддерживает только два транспорта сообщений FILE и FTP,
// то тело функции следует определить следующим образом:
//
// Результат = Новый Массив;
@@ -149,14 +168,11 @@
// Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
// Возврат Результат;
//
-// 2. Например, если план обмена поддерживает все транспорты сообщений, определенных в конфигурации,
+// 2. Если план обмена поддерживает все транспорты сообщений, определенных в конфигурации,
// то тело функции следует определить следующим образом:
//
// Возврат ОбменДаннымиСервер.ВсеТранспортыСообщенийОбменаКонфигурации();
//
-// Возвращаемое значение:
-// Массив - массив содержит значения перечисления ВидыТранспортаСообщенийОбмена
-//
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
Результат = Новый Массив;
@@ -169,12 +185,15 @@
КонецФункции
-// Возвращает признак использования плана обмена для организации обмена в модели сервиса.
-// Если признак установлен, то в сервисе можно включить обмен данными
-// с использованием этого плана обмена.
-// Если признак не установлен, то план обмена будет использоваться только
-// для обмена в локальном режиме работы конфигурации.
-//
+// Устанавливает признак использования плана обмена для организации обмена в модели сервиса.
+// Если признак установлен, то в сервисе можно включить обмен данными
+// с использованием этого плана обмена.
+// Если признак не установлен, то план обмена будет использоваться только
+// для обмена в локальном режиме работы конфигурации.
+//
+// Возвращаемое значение:
+// Булево - признак использования плана обмена в модели сервиса
+//
Функция ПланОбменаИспользуетсяВМоделиСервиса() Экспорт
Возврат Ложь;
@@ -185,6 +204,9 @@
// Если признак установлен, то становится возможным создать обмен данными когда эта информационная база
// работает в локальном режиме, а корреспондент в модели сервиса.
//
+// Возвращаемое значение:
+// Булево - признак возможности настройки обмена с корреспондентов в модели сервиса.
+//
Функция КорреспондентВМоделиСервиса() Экспорт
Возврат Ложь;
@@ -197,8 +219,8 @@
// Определяет режим удаления объектов при загрузке данных.
//
// Возвращающее значение:
-// Булево. Истина - при получении информации удаления объект будет физически удален из ИБ;
-// Ложь - объект будет помечен на удаление.
+// Булево - Истина - при получении информации удаления объект будет физически удален из ИБ;
+// Ложь - объект будет помечен на удаление.
//
Функция РазрешитьУдалениеОбъектов() Экспорт
@@ -212,6 +234,15 @@
// Возвращает имена реквизитов и табличных частей плана обмена, перечисленных через запятую,
// которые являются общими для пары обменивающихся конфигураций.
//
+// Параметры:
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для разного
+// состава общих данных узлов в зависимости от версии корреспондента.
+// ИмяФормы - Строка - Имя используемой формы настройки значений по умолчанию.
+// Возможно, например, использование различных форм для разных версий корреспондента.
+//
+// Возвращаемое значение:
+// Строка - Список имен реквизитов.
+//
Функция ОбщиеДанныеУзлов(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат "";
@@ -224,7 +255,10 @@
// содержащие массивы значений полей табличных частей плана обмена.
//
// Параметры:
-// Нет.
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для
+// разного состава настроек на узле для разных версий корреспондента
+// ИмяФормы - Строка - Имя используемой формы настройки узла. Возможно, например, использование
+// различных форм для разных версий корреспондента.
//
// Возвращаемое значение:
// СтруктураНастроек - Структура - структура отборов на узле плана обмена базы корреспондента
@@ -239,7 +273,10 @@
// Для реквизитов шапки используются аналогичные по ключу и значению элементы структуры.
//
// Параметры:
-// Нет.
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для разного
+// состава значений по умолчанию на узле для разных версий корреспондента.
+// ИмяФормы - Строка - Имя используемой формы настройки значений по умолчанию.
+// Возможно, например, использование различных форм для разных версий корреспондента.
//
// Возвращаемое значение:
// СтруктураНастроек - Структура - структура значений по умолчанию на узле плана обмена базы корреспондента
@@ -254,11 +291,13 @@
// удобную для восприятия пользователем.
//
// Параметры:
-// НастройкаОтборовНаУзле - Структура - структура отборов на узле плана обмена базы корреспондента,
+// НастройкаОтборовНаУзле - Структура - структура отборов на узле плана обмена базы корреспондента,
// полученная при помощи функции НастройкаОтборовНаУзлеБазыКорреспондента().
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для различного
+// описания ограничеий передачи данных в зависимости от версии корреспондента.
//
// Возвращаемое значение:
-// Строка, Неогранич. - строка описания ограничений миграции данных для пользователя
+// Строка - строка описания ограничений миграции данных для пользователя
//
Функция ОписаниеОграниченийПередачиДанныхБазыКорреспондента(НастройкаОтборовНаУзле, ВерсияКорреспондента) Экспорт
@@ -272,15 +311,26 @@
// Параметры:
// ЗначенияПоУмолчаниюНаУзле - Структура - структура значений по умолчанию на узле плана обмена базы корреспондента,
// полученная при помощи функции ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента().
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для различного
+// описания значений по умолчанию в зависимости от версии корреспондента.
//
// Возвращаемое значение:
-// Строка, Неогранич. - строка описания для пользователя значений по умолчанию
+// Строка - строка описания для пользователя значений по умолчанию
//
Функция ОписаниеЗначенийПоУмолчаниюБазыКорреспондента(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
+// Определяет текст пояснения для настройки параметров учета базы-корреспондента
+//
+// Параметры:
+// ВерсияКорреспондента - Строка - Номер версии корреспондента. Используется, например, для различного
+// пояснения для настройки параметров учета в зависимости от версии корреспондента.
+//
+// Возвращаемое значение:
+// Строка - строка описания пояснения для настройки параметров учета базы-корреспондента
+//
Функция ПояснениеДляНастройкиПараметровУчетаБазыКорреспондента(ВерсияКорреспондента) Экспорт
Возврат "";
@@ -288,10 +338,10 @@
// Процедура предназначена для получения дополнительных данных, используемых при настройке обмена в базе-корреспонденте.
//
-// Параметры:
-// ДополнительныеДанные - Структура. Дополнительные данные, которые будут использованы
-// в базе-корреспонденте при настройке обмена.
-// В качестве значений структуры применимы только значения, поддерживающие XDTO-сериализацию.
+// Параметры:
+// ДополнительныеДанные - Структура. Дополнительные данные, которые будут использованы
+// в базе-корреспонденте при настройке обмена.
+// В качестве значений структуры применимы только значения, поддерживающие XDTO-сериализацию.
//
Процедура ПолучитьДополнительныеДанныеДляКорреспондента(ДополнительныеДанные) Экспорт
@@ -347,12 +397,24 @@
////////////////////////////////////////////////////////////////////////////////
// Константы и проверка параметров учета
+// Определяет текст пояснения для настройки параметров учета
+//
+// Возвращаемое значение:
+// Строка - строка описания пояснения для настройки параметров учета
+//
Функция ПояснениеДляНастройкиПараметровУчета() Экспорт
Возврат "";
КонецФункции
+// Проверяет корректность настройки параметров учета
+//
+// Параметры:
+// Отказ - Булево - Признак невозможности продолжения настройки обмена из-за некорректно настроенных параметров учета
+// Получатель - ПланОбменаСсылка - Узел обмена, для которого выполняется проверка параметров учета
+// Сообщение - Строка - Содержит текст сообщения о некорректных параметрах учета
+//
Процедура ОбработчикПроверкиПараметровУчета(Отказ, Получатель, Сообщение) Экспорт
КонецПроцедуры
@@ -363,6 +425,9 @@
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов
//
+// Возвращаемое значение:
+// Массив - Содержит имена реквизитов, запрещенных для редактирования
+//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
diff --git a/SSL/src/FilterCriteria/ФайлыВТоме/Forms/ФормаСписка/Form.form b/SSL/src/FilterCriteria/ФайлыВТоме/Forms/ФормаСписка/Form.form
index 75d9a65ab..19961a1da 100644
--- a/SSL/src/FilterCriteria/ФайлыВТоме/Forms/ФормаСписка/Form.form
+++ b/SSL/src/FilterCriteria/ФайлыВТоме/Forms/ФормаСписка/Form.form
@@ -1,5 +1,121 @@
+
+ ГруппаПользовательскихНастроек
+ 23
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+ false
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 24
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ WeakSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 21
+
+ ФормаИзменить
+ 27
+ true
+ true
+
+ true
+
+
+ ФормаИзменитьРасширеннаяПодсказка
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Change
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ФормаОбновить
+ 25
+ true
+ true
+
+ true
+
+
+ ФормаОбновитьРасширеннаяПодсказка
+ 26
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Refresh
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 22
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -159,6 +275,7 @@
Lefttrue
+ 11truetrue
@@ -207,10 +324,10 @@
СписокСтрокаПоиска
- 21
+ 29СписокСтрокаПоискаРасширеннаяПодсказка
- 23
+ 31Labeltruetrue
@@ -220,7 +337,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 22
+ 30trueСписок
@@ -230,10 +347,10 @@
СписокСостояниеПросмотра
- 24
+ 32СписокСостояниеПросмотраРасширеннаяПодсказка
- 26
+ 34Labeltruetrue
@@ -243,7 +360,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 25
+ 33trueViewStatusAddition
@@ -254,10 +371,10 @@
СписокУправлениеПоиском
- 27
+ 35СписокУправлениеПоискомРасширеннаяПодсказка
- 29
+ 37Labeltruetrue
@@ -267,7 +384,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 28
+ 36trueSearchControlAddition
@@ -323,14 +440,16 @@
truetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1Left
- true
+ 60
+ 10DontBlocktruetrue
diff --git a/SSL/src/FunctionalOptions/ИспользоватьДополнительныеОтчетыИОбработки/ИспользоватьДополнительныеОтчетыИОбработки.mdo b/SSL/src/FunctionalOptions/ИспользоватьДополнительныеОтчетыИОбработки/ИспользоватьДополнительныеОтчетыИОбработки.mdo
index 05009ace1..f45e090f4 100644
--- a/SSL/src/FunctionalOptions/ИспользоватьДополнительныеОтчетыИОбработки/ИспользоватьДополнительныеОтчетыИОбработки.mdo
+++ b/SSL/src/FunctionalOptions/ИспользоватьДополнительныеОтчетыИОбработки/ИспользоватьДополнительныеОтчетыИОбработки.mdo
@@ -11,4 +11,6 @@
InformationRegister.НазначениеДополнительныхОбработокInformationRegister.ПользовательскиеНастройкиДоступаКОбработкамEnum.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок
+ CommonCommand.ДополнительныеОбработкиАдминистрирование
+ CommonCommand.ДополнительныеОтчетыАдминистрирование
diff --git a/SSL/src/FunctionalOptions/СтандартныеПодсистемыВЛокальномРежиме/СтандартныеПодсистемыВЛокальномРежиме.mdo b/SSL/src/FunctionalOptions/СтандартныеПодсистемыВЛокальномРежиме/СтандартныеПодсистемыВЛокальномРежиме.mdo
index 40f132207..93c491b88 100644
--- a/SSL/src/FunctionalOptions/СтандартныеПодсистемыВЛокальномРежиме/СтандартныеПодсистемыВЛокальномРежиме.mdo
+++ b/SSL/src/FunctionalOptions/СтандартныеПодсистемыВЛокальномРежиме/СтандартныеПодсистемыВЛокальномРежиме.mdo
@@ -17,4 +17,6 @@
InformationRegister.АдресныйКлассификатор.Command.АдресныйКлассификаторDataProcessor.УправлениеИтогамиИАгрегатамиDataProcessor.СдвигГраницыИтоговПриЗавершенииРаботы
+ DataProcessor.АвтоматическоеИзвлечениеТекстов
+ DataProcessor.АвтоматическоеИзвлечениеТекстов.Command.АвтоматическоеИзвлечениеТекстов
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form
index 586acaf72..7a3a14fe3 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form
@@ -1,10 +1,14 @@
+
+ ru
+ Авторизация на сайте поддержки пользователей
+ ВведитеДанные16
- КодПользователя
+ Логин10truetrue
@@ -12,14 +16,14 @@
true
- КодПользователя
+ ЛогинruКод пользователя для авторизации на сайте фирмы 1С
- КодПользователяExtendedTooltip
+ ЛогинРасширеннаяПодсказка23Labeltrue
@@ -29,7 +33,7 @@
- КодПользователяКонтекстноеМеню
+ ЛогинКонтекстноеМеню11true
@@ -95,7 +99,7 @@
- ЗапомнитьИмяИПароль
+ ЗапомнитьПароль4truetrue
@@ -107,7 +111,7 @@
Right
- ЗапомнитьИмяИПарольExtendedTooltip
+ ЗапомнитьПарольРасширеннаяПодсказка25Labeltrue
@@ -117,7 +121,7 @@
- ЗапомнитьИмяИПарольКонтекстноеМеню
+ ЗапомнитьПарольКонтекстноеМеню5true
@@ -133,10 +137,6 @@
true
-
- ru
- Введите данные регистрации на сайте поддержки пользователей 1С:Предприятия:
- ruВведите данные
@@ -158,7 +158,6 @@
NormalSeparationtruetrue
- autoAutoAuto
@@ -294,9 +293,9 @@
OnCreateAtServerПриСозданииНаСервере
+ 40LockOwnertrue
- truetrueVerticaltrue
@@ -341,10 +340,10 @@
- КодПользователя
+ Логинru
- Код пользователя
+ Логин4
@@ -374,7 +373,7 @@
- СохранитьДанныеАутентификацииИПродолжитьВыполнить
+ СохранитьДанныеАутентификацииИПродолжитьAuto
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html
index 668b8abd6..b06a5b4fd 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html
@@ -1,2 +1,7 @@
-
-
Для того чтобы больше не вводить эти данные в дальнейшем, включите флажок Запомнить пароль.
+
Если вы еще не зарегистрированы, то с помощью гиперссылки можно Перейти к регистрации на сайте поддержки пользователей.
+
Нажмите Продолжить для перехода к загрузке адресного классификатора.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl
index 818e714da..ba1e4ca5d 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl
@@ -1,6 +1,5 @@
#Область ОбработчикиСобытийФормы
-//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
@@ -9,51 +8,57 @@
Возврат;
КонецЕсли;
- АдресныйКлассификатор.ПолучитьПараметрыАутентификации(КодПользователя, Пароль);
- ЗапомнитьПароль = ? (ПустаяСтрока(Пароль), Ложь, Истина);
+ Авторизация = АдресныйКлассификатор.ПараметрыАутентификацииНаСайте();
+ Если Авторизация.Заполнено Тогда
+ Логин = Авторизация.Логин;
+ Пароль = Авторизация.Пароль;
+ КонецЕсли;
+ ЗапомнитьПароль = Не ПустаяСтрока(Пароль);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
-//
&НаКлиенте
Процедура ПерейтиКРегистрацииНаСайтеНажатие(Элемент)
- ЗапуститьПриложение("http://users.v8.1c.ru/");
+
+ ПерейтиПоНавигационнойСсылке("http://users.v8.1c.ru/");
+
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
-//
// Кнопка "Продолжить", выполнение выбора.
//
-// Результат выбора: Неопределено, если пользователь отказался от ввода пароля, или структура с полями:
-// Статус - истина или ложь в зависимости от успеха вызова
-// КодПользователя - строка кода пользователя, имеет смысл только если Статус=Истина
-// Пароль - строка пароля, имеет смысл только если Статус=Истина
+// Результат выбора:
+// Структура, Неопределено - Если пользователь отказался от ввода пароля, то Неопределено. Иначе - структура с полями:
+// * Логин - Строка - Логин на сайте
+// * Пароль - Строка - Введенный пароль
+//
&НаКлиенте
-Процедура СохранитьДанныеАутентификацииИПродолжитьВыполнить()
+Процедура СохранитьДанныеАутентификацииИПродолжить()
- СохраняемыйПароль = ?(ЗапомнитьПароль, Пароль, Неопределено);
- СохранитьДанныеАутентификации(КодПользователя, СохраняемыйПароль);
+ Результат = Новый Структура("Логин, Пароль", Логин, Пароль);
+ Если ЗапомнитьПароль Тогда
+ СохранитьДанныеАутентификации(Результат);
+ КонецЕсли;
- Результат = Новый Структура("Статус, КодПользователя ,Пароль", Истина, КодПользователя, Пароль);
ОповеститьОВыборе(Результат);
-
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-//
&НаСервереБезКонтекста
-Процедура СохранитьДанныеАутентификации(Код, Пароль)
- АдресныйКлассификатор.СохранитьПараметрыАутентификации(Код, Пароль);
+Процедура СохранитьДанныеАутентификации(Знач Аутентификация)
+
+ АдресныйКлассификатор.ПараметрыАутентификацииНаСайте(Аутентификация);
+
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Form.form b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Form.form
index 586c66e0d..041103b4a 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Form.form
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Form.form
@@ -1,20 +1,20 @@
-
-
- СостояниеРегистра
- 1
-
- ru
- Объектов в адресном классификаторе: XX
-
+
+
+ ОписаниеЗагруженныхОбъектов
+ 26truetruetrue
+
+ ОписаниеЗагруженныхОбъектов
+
+ None
- СостояниеРегистраExtendedTooltip
- 16
+ ОписаниеЗагруженныхОбъектовРасширеннаяПодсказка
+ 28Labeltruetrue
@@ -23,338 +23,36 @@
- СостояниеРегистраКонтекстноеМеню
- 2
+ ОписаниеЗагруженныхОбъектовКонтекстноеМеню
+ 27true
- Label
- true
- true
-
- Left
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
-
- ВерхнийУровень
- 3
-
- ПроверитьОбновление
- 12
-
- ПроверитьОбновлениеАдресногоКлассификатора
- 13
- true
- true
-
- true
-
-
- ПроверитьОбновлениеАдресногоКлассификатораExtendedTooltip
- 19
- Label
- true
- true
-
- Left
-
-
- UsualButton
- Form.Command.ПроверитьОбновлениеАдресногоКлассификатора
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ПояснениеПроверитьОбновление
- 14
-
- ru
- Проверить наличие обновлений адресных сведений
-на сайте поддержки пользователей 1С:Предприятия фирмы "1С"
-
- true
- true
-
- true
-
-
- ПояснениеПроверитьОбновлениеExtendedTooltip
- 20
- Label
- true
- true
-
- Left
-
-
-
- ПояснениеПроверитьОбновлениеКонтекстноеМеню
- 15
- true
-
- Label
- true
- true
-
- Style.ПоясняющийТекст
-
-
- Left
-
-
- true
- true
-
- true
-
-
- ru
- Проверить обновление
-
-
- ru
- Проверить обновление
-
-
- ПроверитьОбновлениеExtendedTooltip
- 18
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
-
-
-
- Загрузить
- 4
-
- ЗагрузитьАдресныйКлассификатор
- 5
- true
- true
-
- true
-
-
- ЗагрузитьАдресныйКлассификаторExtendedTooltip
- 22
- Label
- true
- true
-
- Left
-
-
- UsualButton
- Form.Command.ЗагрузитьАдресныйКлассификатор
- Normal
- Auto
- 17
- true
- true
- UserCmds
- Auto
-
-
- ПояснениеЗагрузить
- 6
-
- ru
- Перейти к загрузке адресного классификатора
-с сайта фирмы "1С", диска 1С:ИТС или из указанного каталога
-
- true
- true
-
- true
-
-
- ПояснениеЗагрузитьExtendedTooltip
- 23
- Label
- true
- true
-
- Left
-
-
-
- ПояснениеЗагрузитьКонтекстноеМеню
- 7
- true
-
- Label
- true
- true
-
- Style.ПоясняющийТекст
-
-
- Left
-
-
- true
- true
-
- true
-
-
- ru
- Загрузить
-
-
- ru
- Загрузить
-
-
- ЗагрузитьExtendedTooltip
- 21
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
-
-
-
- Очистить
- 8
-
- ОчиститьАдресныйКлассификатор
- 9
- true
- true
-
- true
-
-
- ОчиститьАдресныйКлассификаторExtendedTooltip
- 25
- Label
- true
- true
-
- Left
-
-
- UsualButton
- Form.Command.ОчиститьАдресныйКлассификатор
- Normal
- Auto
- 17
- true
- true
- UserCmds
- Auto
-
-
- ПояснениеОчистить
- 10
-
- ru
- Удалить все сведения из адресного классификатора или выборочно,
-по указанным регионам
-
- true
- true
-
- true
-
-
- ПояснениеОчиститьExtendedTooltip
- 26
- Label
- true
- true
-
- Left
-
-
-
- ПояснениеОчиститьКонтекстноеМеню
- 11
- true
-
- Label
- true
- true
-
- Style.ПоясняющийТекст
-
-
- Left
-
-
- true
- true
-
- true
-
-
- ru
- Очистить
-
-
- ru
- Очистить
-
-
- ОчиститьExtendedTooltip
- 24
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
-
-
+
+ ПроверитьОбновлениеАдресногоКлассификатора
+ 13truetruetrue
-
- ru
- Верхний уровень
-
-
- ru
- Верхний уровень
-
- ВерхнийУровеньExtendedTooltip
- 17
+ ПроверитьОбновлениеАдресногоКлассификатораExtendedTooltip
+ 19
+
+ ru
+ Проверить наличие обновлений адресных сведений
+на сайте поддержки пользователей 1С:Предприятия фирмы "1С"
+ Labeltruetrue
@@ -362,16 +60,84 @@
Left
- UsualGroup
-
- Vertical
- Auto
- NormalSeparation
- true
- true
- Auto
- Auto
-
+ UsualButton
+ Form.Command.ПроверитьОбновлениеАдресногоКлассификатора
+ Normal
+ Auto
+ 17
+ true
+ true
+ UserCmds
+ ShowRight
+ Auto
+
+
+ ЗагрузитьАдресныйКлассификатор
+ 5
+ true
+ true
+
+ true
+
+
+ ЗагрузитьАдресныйКлассификаторExtendedTooltip
+ 22
+
+ ru
+ Перейти к загрузке адресного классификатора
+с сайта фирмы "1С", диска 1С:ИТС или из указанного каталога
+
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.ЗагрузитьАдресныйКлассификатор
+ Normal
+ Auto
+ 17
+ true
+ true
+ UserCmds
+ ShowRight
+ Auto
+
+
+ ОчиститьАдресныйКлассификатор
+ 9
+ true
+ true
+
+ true
+
+
+ ОчиститьАдресныйКлассификаторExtendedTooltip
+ 25
+
+ ru
+ Удалить все сведения из адресного классификатора или выборочно,
+по указанным регионам
+
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.ОчиститьАдресныйКлассификатор
+ Normal
+ Auto
+ 17
+ true
+ true
+ UserCmds
+ ShowRight
+ AutoToptrue
@@ -379,7 +145,6 @@
ФормаКоманднаяПанель-1Right
- trueNotificationProcessing
@@ -409,6 +174,24 @@
UseIfNecessaryautotrue
+
+ ОписаниеЗагруженныхОбъектов
+
+ ru
+ Описание загруженных объектов
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+ ЗагрузитьАдресныйКлассификатор
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Help/ru.html
deleted file mode 100644
index 4106d5002..000000000
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Help/ru.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
На форме выводится сводная информация об имеющихся в системе адресных сведениях, а также доступны основные операции по управлению ими: загрузка, очистка и проверка обновлений через Интернет.
Перед тем как начать загрузку адресного классификатора, необходимо выбрать регионы РФ, адресные сведения по которым необходимо загрузить в программу. Загрузка адресного классификатора по всем регионам может занять длительное время.
-
Затем выберите один из трех вариантов, откуда будут загружаться адресные сведения: с сайта поддержки пользователей 1С:Предприятия фирмы "1С", с диска информационно-технологического сопровождения (1С:ИТС), или из файлов, полученных каким-либо способом от ГНИВЦ ФНС РФ.
-
Для загрузки адресного классификатора с сайта фирмы "1С" необходим доступ в сеть Интернет, а также данные регистрации на сайте поддержки пользователей 1С:Предприятие (код пользователя и пароль).
-
В случае если выбран вариант загрузки с диска 1С:ИТС, необходимо указать локальный или сетевой путь, по которому располагается диск 1С:ИТС.
-
В последнем варианте необходимо самостоятельно загрузить файлы адресного классификатора с сайта ГНИВЦ ФНС РФ, распаковать их в каталог на своем компьютере и указать путь к этому каталогу.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl
index db75d328b..bd3c05aae 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl
@@ -1,33 +1,122 @@
+// Форма параметризуется. Необязательные параметры:
+// КодРегионаДляЗагрузки - Число, Строка, Массив - Код субъекта РФ (или их массив), загрузка которого предлагается.
+// НазваниеРегионаДляЗагрузки - Строка - Название субъекта РФ, загрузка которого предлагается.
+//
+// Если указан хоть один из параметров, то предлагаемый регион будет отмечен для загрузки и выделен как текущий
+//
+
+// Флаг подтверждения, используется при закрытии
+&НаКлиенте
+Перем ПодтверждениеЗакрытияФормы;
+
+// Хранилище передаваемых файлов
+&НаКлиенте
+Перем ПомещенныеФайлы;
+
+// Параметры загрузки для передачи между клиентскими вызовами
+&НаКлиенте
+Перем ПараметрыФоновойЗагрузкиКлассификатора;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
- Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ УстановитьУсловноеОформление();
+ Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
- АдресныеОбъектыПереданные = ?(Параметры.Свойство("АдресныеОбъекты"), Параметры.АдресныеОбъекты, Неопределено);
+ // Источник по умолчанию, может быть переопределен при восстановлении параметров
+ КодИсточникаЗагрузки = КодИсточникаЗагрузкиПоУмолчанию();
- ЗаполнитьТаблицуАдресныхОбъектов(АдресныеОбъектыПереданные);
+ ПараметрыДлительнойОперации = Новый Структура("ИнтервалОжидания, Завершено, АдресРезультата, Идентификатор, Ошибка", 5);
- ИсточникДанныхДляЗагрузки = 0;
- ПутьКФайламДанныхНаДиске = "";
- ДискИТС = "";
+ ДоступныеИсточникиЗагрузки.Очистить();
- Если АдресныеОбъектыПереданные = Неопределено Тогда
- ЗагрузитьСохраненныеПараметрыЗагрузки();
- Иначе
- ИсточникДанныхДляЗагрузки = 1;
+ ДоступныеИсточникиЗагрузки.Добавить("КАТАЛОГ", НСтр("ru = 'Из каталога на диске'") );
+
+ // ИТС поставляет файлы в виде самораспаковывающихся exe, на linux недоступно.
+ Если АдресныйКлассификаторКлиентСервер.ЭтоWindowsКлиент() Тогда
+ ДоступныеИсточникиЗагрузки.Добавить("ИТС", НСтр("ru = 'С диска 1С:ИТС'") );
КонецЕсли;
- ЭтоLinuxКлиент = ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент();
- Если ЭтоLinuxКлиент Тогда
- // Запрещаем загрузку с ИТС, так как там поставляются *.exe - самораспаковывающийся RAR,
- // Запускать распаковку можно только на клиенте.
- СписокВыбора = Элементы.СпособЗагрузки.СписокВыбора;
- СписокВыбора.Удалить(СписокВыбора.НайтиПоЗначению(2));
+ ДоступныеИсточникиЗагрузки.Добавить("САЙТ", НСтр("ru = 'С сайта поддержки пользователей 1С:Предприятия'") );
+
+ // Получаем уже загруженные регионы
+ ТаблицаРегионов = РегистрыСведений.АдресныйКлассификатор.СведенияОЗагрузкеСубъектовРФ();
+ ТаблицаРегионов.Колонки.Добавить("Загружать", Новый ОписаниеТипов("Булево"));
+ ТаблицаРегионов.ЗагрузитьКолонку(ТаблицаРегионов.ВыгрузитьКолонку("Загружено"), "Загружать");
+
+ Для Каждого Регион Из ТаблицаРегионов Цикл
+ Регион.Представление = Формат(Регион.КодСубъектаРФ, "ЧЦ=2; ЧН=; ЧВН=; ЧГ=") + ", " + Регион.Представление;
+ КонецЦикла;
+
+ // Добавляем пометку для загружаемого региона-параметра и ставим его текущей строкой
+ НазваниеРегионаДляЗагрузки = Неопределено;
+ ТекущийКодРегиона = Неопределено;
+
+ Параметры.Свойство("КодРегионаДляЗагрузки", ТекущийКодРегиона);
+
+ ТипТекущегоКодаРегиона = ТипЗнч(ТекущийКодРегиона);
+ ТипЧисло = Новый ОписаниеТипов("Число");
+
+ Если ТипТекущегоКодаРегиона = Тип("Массив") И ТекущийКодРегиона.Количество() > 0 Тогда
+ // Указан массив для загрузки
+ Для Каждого КодРегиона Из ТекущийКодРегиона Цикл
+ Кандидаты = СубъектыРФ.НайтиСтроки(Новый Структура("КодСубъектаРФ", ТипЧисло.ПривестиЗначение(КодРегиона) ));
+ Если Кандидаты.Количество() > 0 Тогда
+ Кандидаты[0].Загружать = Истина;
+ КонецЕсли;
+ КонецЦикла;
+ ТекущийКодРегиона = ТекущийКодРегиона[0];
+
+ ИначеЕсли ТипТекущегоКодаРегиона = Тип("Строка") Тогда
+ ТекущийКодРегиона = ТипЧисло.ПривестиЗначение(ТекущийКодРегиона);
+
+ КонецЕсли;
+
+ Если ТекущийКодРегиона = Неопределено И Параметры.Свойство("НазваниеРегионаДляЗагрузки", НазваниеРегионаДляЗагрузки) Тогда;
+ // Пытаемся установить по наименованию
+ ТекущийКодРегиона = РегистрыСведений.АдресныйКлассификатор.КодРегионаПоНаименованию(НазваниеРегионаДляЗагрузки);
+ КонецЕсли;
+
+ ЗначениеВРеквизитФормы(ТаблицаРегионов, "СубъектыРФ");
+
+ Если ТекущийКодРегиона <> Неопределено Тогда
+ Кандидаты = СубъектыРФ.НайтиСтроки(Новый Структура("КодСубъектаРФ", ТекущийКодРегиона));
+ Если Кандидаты.Количество() > 0 Тогда
+ ТекущаяСтрока = Кандидаты[0];
+ ТекущаяСтрока.Загружать = Истина;
+ Элементы.СубъектыРФ.ТекущаяСтрока = ТекущаяСтрока.ПолучитьИдентификатор();
+ КонецЕсли;
+ КонецЕсли;
+
+ // Если не установили текущую строку по параметру, то пытаемся поставить ее на первый отмеченный
+ Если Элементы.СубъектыРФ.ТекущаяСтрока = Неопределено Тогда
+ Кандидаты = СубъектыРФ.НайтиСтроки(Новый Структура("Загружать", Истина));
+ Если Кандидаты.Количество() > 0 Тогда
+ Элементы.СубъектыРФ.ТекущаяСтрока = Кандидаты[0].ПолучитьИдентификатор();
+ КонецЕсли;
+ КонецЕсли;
+
+ // Зависимости от интерфейса
+ Если ТекущийВариантИнтерфейсаКлиентскогоПриложения() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
+ Элементы.АдресЗагрузки.КартинкаКнопкиВыбора = Новый Картинка;
+ КонецЕсли;
+
+ // Автосохранение настроек
+ СохраняемыеВНастройкахДанныеМодифицированы = Истина;
+КонецПроцедуры
+
+&НаСервере
+Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
+
+ // Контроль корректности кода источника данных для загрузки
+ КодИсточника = Настройки["КодИсточникаЗагрузки"];
+ Если ДоступныеИсточникиЗагрузки.НайтиПоЗначению(КодИсточника) = Неопределено Тогда
+ Настройки.Удалить("КодИсточникаЗагрузки");
+ Настройки.Удалить("АдресЗагрузки");
КонецЕсли;
КонецПроцедуры
@@ -36,116 +125,80 @@
Процедура ПриОткрытии(Отказ)
#Если ВебКлиент Тогда
+ ПоказатьПредупреждение(, НСтр("ru='В веб-клиенте загрузка адресного классификатора не поддерживается.'"));
Отказ = Истина;
- ПоказатьПредупреждение(, НСтр("ru = 'Загрузка адресного классификатора не доступна в веб-клиенте.'"));
Возврат;
#КонецЕсли
+
+ УстановитьНадписьИсточникаДанных();
+ ОбновитьИнтерфейсПоКоличествуЗагружаемых();
+
+КонецПроцедуры
- УстановитьИзмененияВИнтерфейсе();
+&НаКлиенте
+Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
+
+ // Проверяем клиентскую переменную
+ Если ПодтверждениеЗакрытияФормы<>Истина Тогда
+ Оповещение = Новый ОписаниеОповещения("ЗакрытиеФормыЗавершение", ЭтотОбъект);
+ Отказ = Истина;
+
+ Текст = НСтр("ru = 'Прервать загрузку адресного классификатора?'");
+ ПоказатьВопрос(Оповещение, Текст, РежимДиалогаВопрос.ДаНет);
+ КонецЕсли;
+
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
- Если ИдентификаторЗадания<>Неопределено Тогда
- ОтменитьПроцессЗагрузки(ИдентификаторЗадания);
+
+ Если ПараметрыДлительнойОперации.Идентификатор <> Неопределено Тогда
+ ОтменитьФоновоеЗадание(ПараметрыДлительнойОперации.Идентификатор);
КонецЕсли;
+
КонецПроцедуры
#КонецОбласти
-#Область ОбработчикиСобытийЭлементовШапкиФормы
+#Область ОбработчикиСобытийЭлементовФормы
-// Обработчик события НачалоВыбора поля ввода формы ПутьКФайламДанныхНаДиске.
-// Вызывает диалог выбора директории, после выбора проверяет, существуют
-// ли в выбранной директории файлы данных.
-//
&НаКлиенте
-Процедура ПутьКФайламДанныхНаДискеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+Процедура СубъектыРФВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
-#Если Не ВебКлиент Тогда
- ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
- ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выбор каталога с файлами адресных сведений'");
- ДиалогОткрытияФайла.Каталог = Элементы.ПутьКФайламДанныхНаДиске.ТекстРедактирования;
-
- Если ДиалогОткрытияФайла.Выбрать() Тогда
- ПутьКФайламДанныхНаДиске = ДиалогОткрытияФайла.Каталог;
-
- ОчиститьСообщения();
-
- Если АдресныйКлассификаторКлиент.ПроверитьНаличиеФайловДанныхВКаталоге(ПутьКФайламДанныхНаДиске) Тогда
- УстановитьИзмененияВИнтерфейсе ();
- Иначе
- СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Файлы адресных сведений не найдены в каталоге ""%1"".'"),
- ПутьКФайламДанныхНаДиске);
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю, , "ПутьКФайламДанныхНаДиске");
- КонецЕсли;
+ Если Поле = Элементы.СубъектыРФПредставление Тогда
+ ТекущиеДанные = СубъектыРФ.НайтиПоИдентификатору(ВыбраннаяСтрока);
+ Если ТекущиеДанные <> Неопределено Тогда
+ ТекущиеДанные.Загружать = Не ТекущиеДанные.Загружать;
+ ОбновитьИнтерфейсПоКоличествуЗагружаемых();
+ КонецЕсли
КонецЕсли;
-#КонецЕсли
-
-КонецПроцедуры
-
-// Обработчик события НачалоВыбора поля ввода формы ДискИТС.
-// Вызывает диалог выбора директории, после выбора проверяет, существуют
-// ли в выбранной директории файлы архивов данных.
-//
-&НаКлиенте
-Процедура ДискИТСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
-
-#Если Не ВебКлиент Тогда
- ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
- ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выбор пути к диску 1С:ИТС'");
- ДиалогОткрытияФайла.Каталог = ДискИТС;
-
- Если ДиалогОткрытияФайла.Выбрать() Тогда
- ДискИТС = ДиалогОткрытияФайла.Каталог;
-
- ФайлыСуществуют = АдресныйКлассификаторКлиент.ПроверитьНаличиеФайловНаДискеИТС(ДискИТС);
-
- ОчиститьСообщения();
-
- Если ФайлыСуществуют Тогда
- УстановитьИзмененияВИнтерфейсе();
- Иначе
- СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Файлы адресных сведений не найдены: ""%1"".
- |Проверьте правильность указанного пути к диску 1С:ИТС.'"),
- ДискИТС);
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю, , "ДискИТС");
- КонецЕсли;
- КонецЕсли;
-#КонецЕсли
-
-КонецПроцедуры
-
-// Обработчик события выбора поля таблицы "ЭлементАдресныйОбъект"
-// Изменяет статус загрузки адресного объекта поля на противоположный
-//
-&НаКлиенте
-Процедура ТаблицаАдресныхОбъектовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
-
- Элемент.ТекущиеДанные.Пометка = Не Элемент.ТекущиеДанные.Пометка;
- ОтметитьОбязательные(ЭтотОбъект);
- ВыбраноРегионовДляЗагрузки = КоличествоОтмеченныхАдресныхОбъектов();
КонецПроцедуры
&НаКлиенте
-Процедура ТаблицаАдресныхОбъектовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
+Процедура ПредставлениеИсточникаЗагрузкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
- ОтметитьОбязательные(ЭтотОбъект);
- ВыбраноРегионовДляЗагрузки = КоличествоОтмеченныхАдресныхОбъектов();
+ Оповещение = Новый ОписаниеОповещения("ЗавершениеИзмененияИсточникаЗагрузки", ЭтотОбъект);
+
+ ПоказатьВыборИзМеню(Оповещение, ДоступныеИсточникиЗагрузки, Элемент);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура АдресЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+
+ АдресныйКлассификаторКлиент.ВыбратьКаталог(ЭтотОбъект, "АдресЗагрузки",
+ НСтр("ru = 'Каталог с файлами адресного классификатора'"),
+ СтандартнаяОбработка
+ );
КонецПроцедуры
-// Обработчик события ПриИзменении поля переключателя ИсточникДанныхДляЗагрузки
-// Устанавливает параметры видимости элементов (параметров вида загрузки)
-// в зависимости от значения переключателя.
-//
&НаКлиенте
-Процедура СпособЗагрузкиПриИзменении(Элемент)
+Процедура СубъектыРФЗагружатьПриИзменении(Элемент)
- УстановитьИзмененияВИнтерфейсе();
+ ОбновитьИнтерфейсПоКоличествуЗагружаемых();
КонецПроцедуры
@@ -154,691 +207,691 @@
#Область ОбработчикиКомандФормы
&НаКлиенте
-Процедура ВыбратьВсе()
+Процедура УстановитьФлажки(Команда)
УстановитьПометкиСпискаРегионов(Истина);
КонецПроцедуры
&НаКлиенте
-Процедура СнятьОтметкуСоВсех()
+Процедура СнятьФлажки(Команда)
УстановитьПометкиСпискаРегионов(Ложь);
КонецПроцедуры
&НаКлиенте
-Процедура ЗагрузитьВыполнить()
- ОчиститьСообщения();
+Процедура Загрузить(Команда)
- УстановитьДоступностьКнопокПриЗагрузке(Ложь);
-
- // Подготавливаем массив адресных объектов для загрузки
- ОбъектыЗагрузки = ВыбранныеОбъектыЗагрузки();
-
- // Смотрим на источник данных
- Если ИсточникДанныхДляЗагрузки = 1 Тогда
- // Загрузка с сайта
- Аутентификация = СохраненныеДанныеАутентификацииСервер();
- Если Аутентификация = Неопределено Тогда
- // Нет сохраненных данных, проходим через форму авторизации
- Оповещение = Новый ОписаниеОповещения("ЗагрузитьФайлыКЛАДРСайтПодтверждениеАутентификации", ЭтотОбъект, Новый Структура);
- Оповещение.ДополнительныеПараметры.Вставить("ОбъектыЗагрузки", ОбъектыЗагрузки);
-
- ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.АвторизацияНаПользовательскомСайте", , ЭтотОбъект, , , ,
- Оповещение, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс
- );
- Возврат;
- КонецЕсли;
- ЗагрузитьФайлыКЛАДРСайт(ОбъектыЗагрузки, Аутентификация);
+ Если КодИсточникаЗагрузки = "КАТАЛОГ" Тогда
+ Текст = НСтр("ru = 'Для загрузки адресного классификатора из каталога
+ |необходимо установить расширение для работы с файлами.'");
+ КонтрольРасширенияРаботыСФайлами(Текст, КодИсточникаЗагрузки, АдресЗагрузки);
- ИначеЕсли ИсточникДанныхДляЗагрузки=2 Тогда
- // Загрузка с диска ИТС
-#Если ВебКлиент Тогда
- ПоказатьПредупреждение(,НСтр("ru = 'В веб-клиенте загрузка с диска ИТС недоступна.'"));
- Возврат;
-#Иначе
- ЗагрузитьФайлыКЛАДРДискИТС(ОбъектыЗагрузки);
-#КонецЕсли
+ ИначеЕсли КодИсточникаЗагрузки = "ИТС" Тогда
+ Текст = НСтр("ru = 'Для загрузки адресного классификатора с диска ИТС
+ |необходимо установить расширение для работы с файлами.'");
+ КонтрольРасширенияРаботыСФайлами(Текст, КодИсточникаЗагрузки, АдресЗагрузки);
+
+ ИначеЕсли КодИсточникаЗагрузки = "САЙТ" Тогда
+ Текст = НСтр("ru = 'Для загрузки адресного классификатора с сайта
+ |необходимо установить расширение для работы с файлами.'");
+ КонтрольРасширенияРаботыСФайлами(Текст, КодИсточникаЗагрузки, АдресЗагрузки);
- ИначеЕсли ИсточникДанныхДляЗагрузки = 3 Тогда
- // Загрузка с файловой системы клиента
- ЗагрузитьФайлыКЛАДРДиск(ОбъектыЗагрузки);
-
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ЗагрузитьФайлыКЛАДРСайтПодтверждениеАутентификации(Знач РезультатЗакрытия, Знач ДополнительныеПараметры) Экспорт
- Если ТипЗнч(РезультатЗакрытия) <> Тип("Структура") Тогда
- Возврат;
- КонецЕсли;
-
- ЗагрузитьФайлыКЛАДРСайт(ДополнительныеПараметры.ОбъектыЗагрузки, РезультатЗакрытия);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ЗагрузитьФайлыКЛАДРСайт(Знач ОбъектыЗагрузки, Знач Аутентификация)
- Перем ПутьКДанным;
-
- // Первый файл есть всегда, там сокращения
- Результат = АдресныйКлассификаторКлиент.ЗагрузитьКЛАДРСВебСервера(ОбъектыЗагрузки[0], Аутентификация, ПутьКДанным);
- Если Не Результат.Статус Тогда
- // Ошибка загрузки первого файла, возможно некорректная аутентификация, выводим на вопрос
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru='Ошибка загрузки файлов КЛАДР с сайта 1С.
- |%1'"),
- Результат.СообщениеОбОшибке));
-
- Оповещение = Новый ОписаниеОповещения("ЗагрузитьФайлыКЛАДРСайтПодтверждениеАутентификации", ЭтотОбъект, Новый Структура);
- Оповещение.ДополнительныеПараметры.Вставить("ОбъектыЗагрузки", ОбъектыЗагрузки);
-
- ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.АвторизацияНаПользовательскомСайте", , ЭтотОбъект, , , ,
- Оповещение, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс
- );
-
- УдалитьЗагруженныеФайлы(ПутьКДанным);
- Возврат;
- КонецЕсли;
-
- // Теперь ПутьКДанным указывает каталог, куда будут загружены файлы на клиенте
-
- // Загружаем остальные файлы
- Для Позиция=1 По ОбъектыЗагрузки.ВГраница() Цикл
- ОбъектЗагрузки = ОбъектыЗагрузки[Позиция];
- УстановитьСтатусЗагрузки(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- НСтр("ru = 'Загрузка файлов адресных сведений с веб-сервера: регион %1'"), ОбъектЗагрузки
- ));
-
- Результат = АдресныйКлассификаторКлиент.ЗагрузитьКЛАДРСВебСервера(ОбъектЗагрузки, Аутентификация, ПутьКДанным);
- Если Не Результат.Статус Тогда
- Текст = Новый ФорматированнаяСтрока(
- НСтр("ru='Ошибка загрузки файлов КЛАДР с сайта 1С.
- |Подробности в'"), " ",
- Новый ФорматированнаяСтрока(
- НСтр("ru='журнале регистрации'"),,,,"e1cib/app/Обработка.ЖурналРегистрации"
- )
- );
- УстановитьСтатусЗагрузки("");
- ПоказатьПредупреждение(, Текст);
-
- УдалитьЗагруженныеФайлы(ПутьКДанным);
- Возврат;
- КонецЕсли;
- КонецЦикла;
- УстановитьСтатусЗагрузки("");
-
- // Передаем файлы на сервер и продолжаем загрузку
- ЗагрузитьФайлыКЛАДР(ПутьКДанным, ОбъектыЗагрузки, 1);
-КонецПроцедуры
-
-&НаКлиенте
-Процедура УдалитьЗагруженныеФайлы(Путь)
- Попытка
- УдалитьФайлы(Путь);
- Исключение
- // Будут удалены при перезапуске сеанса, обработка не требуется
- КонецПопытки;
-КонецПроцедуры
-
-// Параметры:
-// КаталогКлиента - Строка - путь на клиенте, где расположены исходные файлы
-// ОбъектыДляЗагрузки - Массив - регионы для загрузки
-// ИсточникДанных - Число - код источника данных: 1 - сайт 2 - ИТС, 3 - диск
-&НаКлиенте
-Процедура ЗагрузитьФайлыКЛАДР(Знач КаталогКлиента, Знач ОбъектыЗагрузки, Знач ИсточникДанных)
-
- // Передаем файлы на сервер
- Путь = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СокрЛП(КаталогКлиента));
-
- УстановитьСтатусЗагрузки(НСтр("ru = 'Передача файлов адресных сведений на сервер приложения.'"));
- ПереданныеФайлы = Новый Массив;
-
- ФайлыДляПередачи = Новый Массив;
- Для Каждого Файл Из НайтиФайлы(Путь, ?(ЭтоLinuxКлиент, "*.[Dd][Bb][Ff]", "*.dbf")) Цикл
- ФайлыДляПередачи.Добавить( Новый ОписаниеПередаваемогоФайла(Файл.ПолноеИмя) );
- КонецЦикла;
- Если ФайлыДляПередачи.Количество() = 0 Тогда
- Для Каждого Файл Из НайтиФайлы(Путь, ?(ЭтоLinuxКлиент, "*.[Zz][Ii][Pp]", "*.zip")) Цикл
- ФайлыДляПередачи.Добавить( Новый ОписаниеПередаваемогоФайла(Файл.ПолноеИмя) );
- КонецЦикла;
- КонецЕсли;
-
- Если ФайлыДляПередачи.Количество() = 0 Тогда
- ПереданныеФайлы = НСтр("ru = 'Не найдено файлов для передачи на сервер.'");
Иначе
- Попытка
- Если Не ПоместитьФайлы(ФайлыДляПередачи , ПереданныеФайлы, , Ложь, ЭтотОбъект.УникальныйИдентификатор) Тогда
- ПереданныеФайлы = "";
- КонецЕсли;
- Исключение
- // Получаем строковое описание ошибки
- ИнформацияОшибки = ИнформацияОбОшибке();
- ЗаписьИнформацииОбОшибке( ПодробноеПредставлениеОшибки(ИнформацияОшибки) );
- ПереданныеФайлы = КраткоеПредставлениеОшибки(ИнформацияОшибки)
- КонецПопытки;
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
+ НСтр("ru = 'Не указан источник загрузки классификатора.'"), , "НевидимоеПредставлениеИсточникаЗагрузки");
КонецЕсли;
-
- Если ТипЗнч(ПереданныеФайлы)<>Тип("Массив") Тогда
- Текст = Новый ФорматированнаяСтрока(
- НСтр("ru='Ошибка передачи файлов КЛАДР на сервер.'"), Символы.ПС,
- ПереданныеФайлы, Символы.ПС,
- НСтр("ru='Подробности в'"), " ", Новый ФорматированнаяСтрока(
- НСтр("ru='журнале регистрации'"),,,,"e1cib/app/Обработка.ЖурналРегистрации"
- )
- );
- ПоказатьПредупреждение(, Текст);
- УстановитьСтатусЗагрузки("");
- Возврат;
- КонецЕсли;
-
- // И запускаем загрузку на сервере в фоновом задании
- УстановитьСтатусЗагрузки(НСтр("ru = 'Загрузка адресных сведений в программу.'"));
-
- Результат = ЗагрузитьФайлыКЛАДРСервер(ОбъектыЗагрузки, ПереданныеФайлы, ИсточникДанных);
- Если Результат.ЗаданиеВыполнено Тогда
- // Готово
- ИдентификаторЗадания = Неопределено;
- УстановитьСтатусЗагрузки("");
- Иначе
- // Ожидаем выполнения
- ИдентификаторЗадания = Результат.ИдентификаторЗадания;
- АдресХранилища = Результат.АдресХранилища;
-
- ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
- ПараметрыОбработчикаОжидания.МаксимальныйИнтервал = 5;
-
- ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 1, Истина);
- КонецЕсли;
-
- ОбновитьСодержание(Результат);
-КонецПроцедуры
-
-&НаСервере
-Функция ЗагрузитьФайлыКЛАДРСервер(Знач ОбъектыЗагрузки, Знач ПереданныеФайлы, Знач ИсточникДанных)
-
- Возврат АдресныйКлассификатор.ОбработатьФайлыКЛАДР(ОбъектыЗагрузки, ПереданныеФайлы, ИсточникДанных, ЭтотОбъект.УникальныйИдентификатор);
-
-КонецФункции
-
-&НаСервере
-Процедура ЗаписьИнформацииОбОшибке(Знач ПодробноеПредставление)
- ЗаписьЖурналаРегистрации(АдресныйКлассификатор.СобытиеЖурналаРегистрации(),
- УровеньЖурналаРегистрации.Ошибка, , ПодробноеПредставление
- );
КонецПроцедуры
&НаКлиенте
-Процедура ЗагрузитьФайлыКЛАДРДискИТС(Знач ОбъектыЗагрузки)
- // На ИТС сейчас поставляются *.exe, представляющие собой самораспаковывающийся RAR
- // В целях безопасности запускаем их на клиенте
-
-#Если Не ВебКлиент Тогда
- КаталогКлиента = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПолучитьИмяВременногоФайла());
- СоздатьКаталог(КаталогКлиента);
-
- КаталогИТС = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ДискИТС)
- + АдресныйКлассификаторКлиент.ПутьККаталогуСДаннымиКЛАДРНаДискеИТС(ДискИТС);
-
- Для Каждого Файл Из НайтиФайлы(КаталогИТС, "*.exe", Ложь) Цикл
- Команда = """" + Файл.ПолноеИмя + """ -s -d """ + КаталогКлиента + """";
- ЗапуститьПриложение(Команда, КаталогКлиента, Истина);
- КонецЦикла;
-
- ЗагрузитьФайлыКЛАДР(КаталогКлиента, ОбъектыЗагрузки, 2)
-#КонецЕсли
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ЗагрузитьФайлыКЛАДРДиск(Знач ОбъектыЗагрузки)
-
- ЗагрузитьФайлыКЛАДР(ПутьКФайламДанныхНаДиске, ОбъектыЗагрузки, 3)
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура КомандаДалее(Команда)
-
- ОчиститьСообщения();
-
- Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборАдресныхОбъектов Тогда
- Если КоличествоОтмеченныхАдресныхОбъектов() = 0 Тогда
- СообщениеПользователю = НСтр("ru = 'Необходимо выбрать хотя бы один регион для загрузки адресных сведений.'");
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю, , "АдресныеОбъектыДляЗагрузки");
- Возврат;
- КонецЕсли;
- Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника;
- УстановитьИзмененияВИнтерфейсе();
-
- ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника Тогда
- Если ИсточникДанныхДляЗагрузки = 2
- И (ПустаяСтрока(ДискИТС) Или Не АдресныйКлассификаторКлиент.ПроверитьНаличиеФайловНаДискеИТС(ДискИТС))
- Тогда
- СообщениеПользователю = НСтр("ru = 'Проверьте правильность указания пути к диску 1С:ИТС.'");
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю, , "ДискИТС");
- Возврат;
-
- ИначеЕсли ИсточникДанныхДляЗагрузки = 3
- И (ПустаяСтрока(ПутьКФайламДанныхНаДиске) Или Не АдресныйКлассификаторКлиент.ПроверитьНаличиеФайловДанныхВКаталоге(ПутьКФайламДанныхНаДиске))
- Тогда
- СообщениеПользователю = НСтр("ru = 'Проверьте правильность указания пути, а также состав файлов КЛАДР.'");
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю, , "ПутьКФайламДанныхНаДиске");
- Возврат;
- КонецЕсли;
-
- Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаЗагрузка;
- УстановитьИзмененияВИнтерфейсе();
-
- ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаЗагрузка Тогда
- ЗагрузитьВыполнить();
-
- ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаУспех Тогда
-
- Закрыть(Истина);
-
- КонецЕсли;
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура КомандаНазад(Команда)
- Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника Тогда
- Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборАдресныхОбъектов;
- ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаЗагрузка Тогда
- Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника;
- КонецЕсли;
-
- УстановитьИзмененияВИнтерфейсе();
+Процедура ПрерватьЗагрузку(Команда)
+ ПодтверждениеЗакрытияФормы = Неопределено;
+ Закрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-// Устанавливаем пометку только видимым элементам
-//
&НаКлиенте
-Процедура УстановитьПометкиСпискаРегионов(Знач Пометка)
+Процедура КонтрольРасширенияРаботыСФайлами(Знач ТекстПредложения, Знач КодИсточника, Знач АдресИсточника)
- Для Каждого ЭлементАдресныйОбъект Из АдресныеОбъектыДляЗагрузки Цикл
- ИдентификаторСтроки = ЭлементАдресныйОбъект.ПолучитьИдентификатор();
- Если Элементы.ТаблицаАдресныхОбъектов.ДанныеСтроки(ИдентификаторСтроки) <> Неопределено Тогда
- // Строка видимая
- ЭлементАдресныйОбъект.Пометка = Пометка;
- КонецЕсли;
- КонецЦикла;
+ Оповещение = Новый ОписаниеОповещения("КонтрольРасширенияРаботыСФайламиЗавершение", ЭтотОбъект, Новый Структура);
+ Оповещение.ДополнительныеПараметры.Вставить("КодИсточникаЗагрузки", КодИсточника);
+ Оповещение.ДополнительныеПараметры.Вставить("АдресЗагрузки", АдресИсточника);
- Если Не Пометка Тогда
- // Обязательные должны быть помечены всегда
- ОтметитьОбязательные(ЭтотОбъект);
+ ОбщегоНазначенияКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Оповещение, ТекстПредложения, Ложь);
+КонецПроцедуры
+
+// Завершение диалога предложения расширения для работы с файлами
+&НаКлиенте
+Процедура КонтрольРасширенияРаботыСФайламиЗавершение(Знач Результат, Знач ДополнительныеПараметры) Экспорт
+
+ Если Результат <> Истина Тогда
+ Возврат;
+
+ ИначеЕсли Не ПодключитьРасширениеРаботыСФайлами() Тогда
+ ПоказатьПредупреждение(, НСтр("ru = 'Расширение для работы с файлами не подключено.'"));
+ Возврат;
+
КонецЕсли;
- УстановитьИзмененияВИнтерфейсе();
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ПерейтиНаСтраницуВыбораИсточника()
- Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника;
- УстановитьИзмененияВИнтерфейсе();
-КонецПроцедуры
-
-&НаКлиенте
-Процедура УстановитьДоступностьКнопокПриЗагрузке(Флаг = Истина)
-
- Элементы.Назад.Видимость = Флаг;
- Элементы.Далее.Видимость = Флаг;
-
- ОбновитьИнтерфейс();
-КонецПроцедуры
-
-&НаСервере
-Процедура СохранитьПараметрыЗагрузки()
-
- МассивЗагружаемыхАО = Новый Массив;
-
- Для Каждого ЭлементАО Из АдресныеОбъектыДляЗагрузки Цикл
- Если ЭлементАО.Пометка Тогда
- МассивЗагружаемыхАО.Добавить(Лев(ЭлементАО.НаименованиеАдресногоОбъекта, 2));
- КонецЕсли;
- КонецЦикла;
-
- ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
- "ПараметрыЗагрузкиАдресногоКлассификатора", "ЗагружаемыеРегионы", МассивЗагружаемыхАО);
-
- ИсточникКЛАДР = Новый Структура("ИсточникДанныхДляЗагрузки");
- ИсточникКЛАДР.ИсточникДанныхДляЗагрузки = ИсточникДанныхДляЗагрузки;
-
- Если ИсточникДанныхДляЗагрузки = 2 Тогда
- ИсточникКЛАДР.Вставить("ДискИТС", ДискИТС);
- ИначеЕсли ИсточникДанныхДляЗагрузки = 3 Тогда
- ИсточникКЛАДР.Вставить("ПутьКФайламДанныхНаДиске", ПутьКФайламДанныхНаДиске);
- КонецЕсли;
-
- ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
- "ПараметрыЗагрузкиАдресногоКлассификатора", "ИсточникКЛАДР", ИсточникКЛАДР);
-
-КонецПроцедуры
-
-&НаСервере
-Процедура ЗагрузитьСохраненныеПараметрыЗагрузки()
-
- ИсточникКЛАДР = ЗагрузитьНастройкуЗагрузкиКЛАДР("ИсточникКЛАДР");
-
- Если ИсточникКЛАДР <> Неопределено Тогда
- ИсточникДанныхДляЗагрузки = ИсточникКЛАДР.ИсточникДанныхДляЗагрузки;
- Если ИсточникДанныхДляЗагрузки = 2 Тогда
- ДискИТС = ИсточникКЛАДР.ДискИТС;
- ИначеЕсли ИсточникДанныхДляЗагрузки = 3 Тогда
- ПутьКФайламДанныхНаДиске = ИсточникКЛАДР.ПутьКФайламДанныхНаДиске;
- КонецЕсли;
+ Если ДополнительныеПараметры.КодИсточникаЗагрузки = "КАТАЛОГ" Тогда
+ ЗагрузитьКлассификаторИзКаталога(ДополнительныеПараметры.АдресЗагрузки);
+
+ ИначеЕсли ДополнительныеПараметры.КодИсточникаЗагрузки = "ИТС" Тогда
+ ЗагрузитьКлассификаторИзКаталогаИТС(ДополнительныеПараметры.АдресЗагрузки);
+
+ ИначеЕсли ДополнительныеПараметры.КодИсточникаЗагрузки = "САЙТ" Тогда
+ ЗагрузитьКлассификаторССайта();
+
КонецЕсли;
КонецПроцедуры
-// Получает значение из системного хранилища настроек ИБ
-//
-&НаСервереБезКонтекста
-Функция ЗагрузитьНастройкуЗагрузкиКЛАДР(КлючНастроек)
-
- Возврат ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ПараметрыЗагрузкиАдресногоКлассификатора", КлючНастроек);
-
-КонецФункции
-
-// Устанавливает текст статус загрузки
-//
+// Завершение диалога изменения загрузки
&НаКлиенте
-Процедура УстановитьСтатусЗагрузки(Знач Сообщение = "")
-
- СтатусЗагрузки = НСтр("ru = 'Пожалуйста, подождите...'") + Символы.ПС + Сообщение;
- СтраницаСтатусаЗагрузки = ?(ПустаяСтрока(Сообщение), Элементы.ГруппаПустаяГруппа, Элементы.СтраницаСтатусЗагрузки);
- Элементы.СтраницыЗагрузки.ТекущаяСтраница = СтраницаСтатусаЗагрузки;
- ОбновитьОтображениеДанных();
-
-КонецПроцедуры
-
-&НаКлиенте
-Процедура Подключаемый_ПроверитьВыполнениеЗадания()
-
- Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаЗагрузка Тогда
- СостояниеЗагрузки = СостояниеЗадания(ИдентификаторЗадания);
- Если СостояниеЗагрузки = 0 Тогда
- // Выполнено успешно
- ИдентификаторЗадания = Неопределено;
- ОбновитьСодержание(Новый Структура("РезультатЗагрузки", ПолучитьИзВременногоХранилища(АдресХранилища)) );
-
- ИначеЕсли СостояниеЗагрузки < 0 Тогда
- // Завершено аварийно, сообщения показаны
- ИдентификаторЗадания = Неопределено;
- ПерейтиНаСтраницуВыбораИсточника();
-
- Иначе
- // Процесс продолжается
- ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
- ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания",
- ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина);
- КонецЕсли;
- КонецЕсли;
-
-КонецПроцедуры
-
-// Возвращаемое значение:
-// -1, если завершено с ошибкой
-// 0, если завершено или отменено
-// 1, если все еще работает
-//
-&НаСервереБезКонтекста
-Функция СостояниеЗадания(ИдентификаторЗадания)
-
- // Оставим запись в логах
- Попытка
- ФлагВыполнения = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания)
- Исключение
- // Запись в журнал регистрации уже сделана
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
- Возврат -1;
- КонецПопытки;
-
- Если Не ФлагВыполнения Тогда
- Возврат 1
- КонецЕсли;
-
- // Проверим дополнительно
- Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
- Если Задание=Неопределено Тогда
- Возврат 0;
- ИначеЕсли Задание.Состояние=СостояниеФоновогоЗадания.Отменено Тогда
- Возврат 0;
- ИначеЕсли Задание.Состояние=СостояниеФоновогоЗадания.Завершено Тогда
- Возврат 0;
- ИначеЕсли Задание.Состояние=СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
- Возврат -1;
- КонецЕсли;
-
- Возврат 1;
-КонецФункции
-
-&НаКлиенте
-Процедура ОбновитьСодержание(Результат)
-
- Если Не Результат.Свойство("РезультатЗагрузки") Тогда
+Процедура ЗавершениеИзмененияИсточникаЗагрузки(Знач Результат, Знач ДополнительныеПараметры) Экспорт
+ Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
- УстановитьДоступностьКнопокПриЗагрузке();
+ КодИсточникаЗагрузки = Результат.Значение;
+ УстановитьНадписьИсточникаДанных();
+КонецПроцедуры
+
+// Завершение диалога закрытия формы
+&НаКлиенте
+Процедура ЗакрытиеФормыЗавершение(Знач РезультатВопроса, Знач ДополнительныеПараметры) Экспорт
+ Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
+ ПодтверждениеЗакрытияФормы = Истина;
+ Закрыть();
+ Иначе
+ ПодтверждениеЗакрытияФормы = Неопределено;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьНадписьИсточникаДанных()
- ОбщегоНазначенияКлиентСервер.УдалитьКаталогСФайлами(Результат.РезультатЗагрузки.ПутьКДанным);
- ПутьКДаннымНаСервере = Результат.РезультатЗагрузки.ПутьКДаннымНаСервере;
-
- Если Не ПустаяСтрока(Результат.РезультатЗагрузки.СообщениеПользователю) Тогда
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Результат.РезультатЗагрузки.СообщениеПользователю);
+ Если КодИсточникаЗагрузки = "КАТАЛОГ" Тогда
+ Текст = ДоступныеИсточникиЗагрузки.НайтиПоЗначению(КодИсточникаЗагрузки).Представление + ":";
+ ВидимостьИсточника = Истина;
+
+ ИначеЕсли КодИсточникаЗагрузки = "ИТС" Тогда
+ Текст = ДоступныеИсточникиЗагрузки.НайтиПоЗначению(КодИсточникаЗагрузки).Представление + ":";
+ ВидимостьИсточника = Истина;
+
+ ИначеЕсли КодИсточникаЗагрузки = "САЙТ" Тогда
+ Текст = ДоступныеИсточникиЗагрузки.НайтиПоЗначению(КодИсточникаЗагрузки).Представление;
+ ВидимостьИсточника = Ложь;
+
+ Иначе
+ Текст = НСтр("ru = 'Источник не указан'");
+ ВидимостьИсточника = Ложь;
+
КонецЕсли;
- Если Результат.РезультатЗагрузки.СтатусВыполнения Тогда
- // Успешно загружено
- Оповестить("Запись_АдресныйКлассификатор", Новый Структура("Событие", "Загрузить"));
-
- СохранитьПараметрыЗагрузки();
- Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаУспех;
- УстановитьИзмененияВИнтерфейсе();
+ ПредставлениеИсточникаЗагрузки = Новый ФорматированнаяСтрока(Текст, , , , "Ссылка");
+
+ Если ВидимостьИсточника Тогда
+ Элементы.ГруппаОтображенияАдресаЗагрузки.ТекущаяСтраница = Элементы.ВидимыйАдресЗагрузки;
+ Иначе
+ Элементы.ГруппаОтображенияАдресаЗагрузки.ТекущаяСтраница = Элементы.НевидимыйАдресЗагрузки;
+ КонецЕсли;
+
+ УстановитьРазрешениеЗагрузки();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьРазрешениеЗагрузки(Знач КоличествоЗагружаемых = Неопределено)
+
+ Если КоличествоЗагружаемых = Неопределено Тогда
+ КоличествоЗагружаемых = СубъектыРФ.НайтиСтроки( Новый Структура("Загружать", Истина) ).Количество();
+ КонецЕсли;
+
+ Элементы.Загрузить.Доступность = (КоличествоЗагружаемых > 0)
+ И ДоступныеИсточникиЗагрузки.НайтиПоЗначению(КодИсточникаЗагрузки) <> Неопределено;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура УстановитьУсловноеОформление()
+ УсловноеОформление.Элементы.Очистить();
+
+ Элемент = УсловноеОформление.Элементы.Добавить();
+
+ Поля = Элемент.Поля.Элементы;
+ Поля.Добавить().Поле = Новый ПолеКомпоновкиДанных("СубъектыРФКодСубъектаРФ");
+ Поля.Добавить().Поле = Новый ПолеКомпоновкиДанных("СубъектыРФПредставление");
+
+ ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СубъектыРФ.Загружено");
+ ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ ОтборЭлемента.ПравоеЗначение = Ложь;
+
+ Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ТемноСерый);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьПометкиСпискаРегионов(Знач Пометка)
+
+ // Устанавливаем пометки только для видимых строк
+ ЭлементТаблицы = Элементы.СубъектыРФ;
+ Для Каждого СтрокаРегиона Из СубъектыРФ Цикл
+ Если ЭлементТаблицы.ДанныеСтроки( СтрокаРегиона.ПолучитьИдентификатор() ) <> Неопределено Тогда
+ СтрокаРегиона.Загружать = Пометка;
+ КонецЕсли;
+ КонецЦикла;
+
+ ОбновитьИнтерфейсПоКоличествуЗагружаемых();
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОбновитьИнтерфейсПоКоличествуЗагружаемых()
+
+ // Страница выбора
+ ВыбраноРегионовДляЗагрузки = СубъектыРФ.НайтиСтроки( Новый Структура("Загружать", Истина) ).Количество();
+
+ // Страница загрузки
+ ТекстОписанияЗагрузки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Загружаются данные по выбранным регионам (%1)'"), ВыбраноРегионовДляЗагрузки
+ );
+
+ УстановитьРазрешениеЗагрузки(ВыбраноРегионовДляЗагрузки);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗагрузитьКлассификаторИзКаталога(Знач КаталогДанных)
+
+ КодыРегионов = КодыРегионовДляЗагрузки();
+
+ // Проверка доступности и наличия файлов
+ ПараметрыЗагрузки = Новый Структура("КодИсточникаЗагрузки, ПолеОшибки", КодИсточникаЗагрузки, "АдресЗагрузки");
+ РезультатАнализа = АдресныйКлассификаторКлиентСервер.АнализДоступностиФайловКлассификатораВКаталоге(КодыРегионов, КаталогДанных, ПараметрыЗагрузки);
+ Если РезультатАнализа.Ошибки <> Неопределено Тогда
+ // Не хватает файлов для загрузки по указанным режимам
+ ОчиститьСообщения();
+ ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(РезультатАнализа.Ошибки);
+ Возврат;
+ КонецЕсли;
+
+ // Загружаем в фоне
+ УдалитьПослеПередачиНаСервер = Новый Массив;
+ РезультатАнализа.Вставить("УдалитьПослеПередачиНаСервер", УдалитьПослеПередачиНаСервер);
+
+ ЗапуститьФоновуюЗагрузкуИзКаталогаКлиента(РезультатАнализа);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗагрузитьКлассификаторИзКаталогаИТС(Знач КорневойКаталог)
+ КодыРегионов = КодыРегионовДляЗагрузки();
+
+ // Пробуем найти в указанном каталоге
+ КаталогДанных = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КорневойКаталог);
+ РазделительПути = Прав(КаталогДанных, 1);
+
+ ВариантыКаталогов = Новый Массив;
+ ВариантыКаталогов.Добавить(КаталогДанных);
+ ВариантыКаталогов.Добавить(КаталогДанных + "EXE\KLADR\");
+ ВариантыКаталогов.Добавить(КаталогДанных + "1CIts\EXE\KLADR\");
+ ВариантыКаталогов.Добавить(КаталогДанных + "1CitsFr\EXE\KLADR\");
+ ВариантыКаталогов.Добавить(КаталогДанных + "1CItsB\EXE\KLADR\");
+
+ ПараметрыЗагрузки = Новый Структура("КодИсточникаЗагрузки, ПолеОшибки", "ИТС", "АдресЗагрузки");
+ ЕстьОшибки = Истина;
+
+ Для Каждого Вариант Из ВариантыКаталогов Цикл
+ РезультатАнализа = АдресныйКлассификаторКлиентСервер.АнализДоступностиФайловКлассификатораВКаталоге(КодыРегионов, Вариант, ПараметрыЗагрузки);
+ Если РезультатАнализа.ЕстьВсеФайлы Тогда
+ ЕстьОшибки = Ложь;
+ Прервать;
+ КонецЕсли;
+ КонецЦикла;
+
+ Если ЕстьОшибки Тогда
+ Ошибки = Неопределено;
+ ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, "АдресЗагрузки", НСтр("ru = 'В указанном каталоге 1С:ИТС не найдены файлы для загрузки'") );
ОчиститьСообщения();
+ ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки);
+ Возврат;
КонецЕсли;
+ // Загружаем в фоне, там же будет удаление лишнего
+ ЗапуститьФоновуюЗагрузкуИзКаталогаИТСКлиента(РезультатАнализа);
КонецПроцедуры
-// Заполняет переданную таблицу значений по значениям таблицы адресных объектов.
-// Выбирается код, наименование и сокращение типа объекта.
+&НаКлиенте
+Процедура ЗагрузитьКлассификаторССайта(Знач Аутентификация = Неопределено)
+
+ КодыРегионов = КодыРегионовДляЗагрузки();
+
+ Если Аутентификация = Неопределено Тогда
+ Аутентификация = СохраненныеДанныеАутентификацииСайта();
+ КонецЕсли;
+
+ Если ПустаяСтрока(Аутентификация.Логин) Тогда
+ // Нет сохраненных данных, проходим через форму авторизации
+ Оповещение = Новый ОписаниеОповещения("ЗагрузитьКлассификаторССайтаЗапросАутентификации", ЭтотОбъект, Новый Структура);
+ Оповещение.ДополнительныеПараметры.Вставить("КодыРегионов", КодыРегионов);
+
+ ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.АвторизацияНаПользовательскомСайте", , ЭтотОбъект, , , ,Оповещение);
+ Возврат;
+ КонецЕсли;
+
+ ЗагрузитьКлассификаторССайтаАутентификация(Аутентификация, КодыРегионов);
+КонецПроцедуры
+
+// Завершение диалога авторизации
//
+&НаКлиенте
+Процедура ЗагрузитьКлассификаторССайтаЗапросАутентификации(Знач Аутентификация, Знач ДополнительныеПараметры) Экспорт
+
+ Если ТипЗнч(Аутентификация) <> Тип("Структура") Тогда
+ // Возвращаемся на страницу выбора
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ Возврат;
+
+ ИначеЕсли ПустаяСтрока(Аутентификация.Логин) Тогда
+ // На повторный ввод пароля
+ ЗагрузитьКлассификаторССайта(Аутентификация);
+ Возврат;
+
+ КонецЕсли;
+
+ ЗагрузитьКлассификаторССайтаАутентификация(Аутентификация, ДополнительныеПараметры.КодыРегионов);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗагрузитьКлассификаторССайтаАутентификация(Знач Аутентификация, Знач КодыРегионов)
+
+ ОчиститьСообщения();
+
+ // Переключаем режим - страницу
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ОжиданиеЗагрузки;
+ ТекстСостоянияЗагрузки = НСтр("ru = 'Загрузка файлов с сайта поддержки пользователей ...'");
+
+ Элементы.ПрерватьЗагрузку.Доступность = Ложь;
+
+ ПараметрыФоновойЗагрузкиКлассификатора = Новый Структура;
+ ПараметрыФоновойЗагрузкиКлассификатора.Вставить("Аутентификация", Аутентификация);
+ ПараметрыФоновойЗагрузкиКлассификатора.Вставить("КодыРегионов", КодыРегионов);
+
+ ИспользуемыйКлассификатор = АдресныйКлассификаторКлиентСервер.ИспользуемыйАдресныйКлассификатор();
+ Если ИспользуемыйКлассификатор <> "КЛАДР" Тогда
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Не обрабатываемый тип адресного классификатора ""%1""'"), ИспользуемыйКлассификатор);
+ КонецЕсли;
+
+ ПодключитьОбработчикОжидания("ЗагрузитьКлассификаторССайтаКЛАДР", 0.1, Истина);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗагрузитьКлассификаторССайтаКЛАДР()
+
+ КодыРегионов = ПараметрыФоновойЗагрузкиКлассификатора.КодыРегионов;
+
+ Аутентификация = Новый Структура;
+ Аутентификация.Вставить("КодПользователя", ПараметрыФоновойЗагрузкиКлассификатора.Аутентификация.Логин);
+ Аутентификация.Вставить("Пароль", ПараметрыФоновойЗагрузкиКлассификатора.Аутентификация.Пароль);
+
+ // Сбрасываем
+ ПараметрыФоновойЗагрузкиКлассификатора = Неопределено;
+
+ // Первый файл - сокращения, заодно проверяется корректность авторизации
+ КаталогЗагрузки = АдресныйКлассификаторКлиент.ВременныйКаталогКлиента();
+ УдалитьПослеПередачиНаСервер = Новый Массив;
+ УдалитьПослеПередачиНаСервер.Добавить(КаталогЗагрузки);
+
+ Результат = АдресныйКлассификаторКлиент.ЗагрузитьКЛАДРСВебСервера("SO", Аутентификация, КаталогЗагрузки);
+ Если Не Результат.Статус Тогда
+ // Ошибка загрузки, выводим на повторный запрос авторизации
+ Если Найти(Результат.СообщениеОбОшибке, "401 Unauthorized") > 0 Тогда
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
+ НСтр("ru='Не удалось получить доступ к сайту 1C для загрузки файлов КЛАДР, возможно неверное имя пользователя или пароль.'"));
+ Иначе
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru='Ошибка загрузки файлов КЛАДР с сайта 1С.
+ |%1'"),
+ Результат.СообщениеОбОшибке));
+ КонецЕсли;
+
+ АдресныйКлассификаторКлиентСервер.УдалитьВременныйФайл(КаталогЗагрузки);
+
+ Оповещение = Новый ОписаниеОповещения("ЗагрузитьКлассификаторССайтаЗапросАутентификации", ЭтотОбъект, Новый Структура);
+ Оповещение.ДополнительныеПараметры.Вставить("КодыРегионов", КодыРегионов);
+
+ ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.АвторизацияНаПользовательскомСайте", , ЭтотОбъект, , , ,Оповещение);
+ Возврат;
+ КонецЕсли;
+
+ ФайлыПоРегионам = Новый Соответствие;
+
+ ПараметрыЗагрузки = Новый Структура;
+ ПараметрыЗагрузки.Вставить("ФайлыПоРегионам", ФайлыПоРегионам);
+ ПараметрыЗагрузки.Вставить("КодыРегионов", КодыРегионов);
+
+ ФайлыПоРегионам.Вставить("*", Результат.Путь);
+
+ Для Каждого КодРегиона Из КодыРегионов Цикл
+ ОбъектЗагрузки = Формат(КодРегиона, "ЧЦ=2; ЧН=; ЧВН=");;
+ Результат = АдресныйКлассификаторКлиент.ЗагрузитьКЛАДРСВебСервера(ОбъектЗагрузки, Аутентификация, КаталогЗагрузки);
+ Если Результат.Статус Тогда
+ ФайлыПоРегионам.Вставить(КодРегиона, Результат.Путь);
+
+ Иначе
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru='Ошибка загрузки файлов КЛАДР с сайта 1С.
+ |%1'"),
+ Результат.СообщениеОбОшибке));
+
+ АдресныйКлассификаторКлиентСервер.УдалитьВременныйФайл(КаталогЗагрузки);
+ Возврат;
+ КонецЕсли;
+ КонецЦикла;
+
+ ПараметрыЗагрузки.Вставить("Режим", "КЛАДРВебСайт");
+ ПараметрыЗагрузки.Вставить("УдалитьПослеПередачиНаСервер", УдалитьПослеПередачиНаСервер);
+
+ ЗапуститьФоновуюЗагрузкуИзКаталогаКлиента(ПараметрыЗагрузки)
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗапуститьФоновуюЗагрузкуИзКаталогаИТСКлиента(Знач ПараметрыЗагрузки)
+ // Переключаем режим - страницу
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ОжиданиеЗагрузки;
+ ТекстСостоянияЗагрузки = НСтр("ru = 'Распаковка файлов 1С:ИТС ...'");
+
+ Элементы.ПрерватьЗагрузку.Доступность = Ложь;
+ ПараметрыФоновойЗагрузкиКлассификатора = ПараметрыЗагрузки;
+ ПодключитьОбработчикОжидания("ЗапуститьФоновуюЗагрузкуИзКаталогаИТСКлиентаПродолжение", 0.1, Истина);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗапуститьФоновуюЗагрузкуИзКаталогаИТСКлиентаПродолжение()
+ ПараметрыЗагрузки = ПараметрыФоновойЗагрузкиКлассификатора;
+ ПараметрыФоновойЗагрузкиКлассификатора = Неопределено;
+
+ // РезультатАнализа - корректный источник
+ ИспользуемыйКлассификатор = АдресныйКлассификаторКлиентСервер.ИспользуемыйАдресныйКлассификатор();
+ Если ИспользуемыйКлассификатор = "КЛАДР" Тогда
+ МаскаОжидаемогоПриРаспаковке = "*.DBF";
+ Иначе
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Не обрабатываемый тип адресного классификатора ""%1""'"), ИспользуемыйКлассификатор);
+ КонецЕсли;
+
+ // Распаковываем файлы на клиенте (там исполняемый файл, на сервере нет разрешения на запуск)
+ УдалитьПослеПередачиНаСервер = Новый Массив;
+ ПараметрыЗагрузки.Вставить("УдалитьПослеПередачиНаСервер", УдалитьПослеПередачиНаСервер);
+
+ Для Каждого КлючЗначение Из ПараметрыЗагрузки.ФайлыПоРегионам Цикл
+ ИсточникФайлов = КлючЗначение.Значение;
+
+ Если ТипЗнч(ИсточникФайлов) = Тип("Массив") Тогда
+ Позиция = ИсточникФайлов.ВГраница();
+ Пока Позиция >= 0 Цикл
+ ИмяФайла = ИсточникФайлов[Позиция];
+ Если ВРег(Прав(ИмяФайла, 4)) = ".EXE" Тогда
+ ДанныеИТС = РаспаковатьАрхивИТС(ИмяФайла, МаскаОжидаемогоПриРаспаковке);
+ ИсточникФайлов[Позиция] = ДанныеИТС.ИмяФайла;
+ УдалитьПослеПередачиНаСервер.Добавить(ДанныеИТС.ИмяУдаляемогоФайла);
+ КонецЕсли;
+ Позиция = Позиция - 1;
+ КонецЦикла;
+ Иначе
+ Если ВРег(Прав(ИсточникФайлов, 4)) = ".EXE" Тогда
+ ДанныеИТС = РаспаковатьАрхивИТС(ИсточникФайлов, МаскаОжидаемогоПриРаспаковке);
+ ПараметрыЗагрузки.ФайлыПоРегионам[КлючЗначение.Ключ] = ДанныеИТС.ИмяФайла;
+ УдалитьПослеПередачиНаСервер.Добавить(ДанныеИТС.ИмяУдаляемогоФайла);
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ // И запускаем передачу на сервер
+ ЗапуститьФоновуюЗагрузкуИзКаталогаКлиента(ПараметрыЗагрузки);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗапуститьФоновуюЗагрузкуИзКаталогаКлиента(Знач ПараметрыЗагрузки)
+ // Переключаем режим - страницу
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ОжиданиеЗагрузки;
+ ТекстСостоянияЗагрузки = НСтр("ru = 'Передача файлов на сервер приложения...'");
+
+ Элементы.ПрерватьЗагрузку.Доступность = Ложь;
+ ПараметрыФоновойЗагрузкиКлассификатора = ПараметрыЗагрузки;
+ ПодключитьОбработчикОжидания("ЗапуститьФоновуюЗагрузкуИзКаталогаКлиентаПродолжение", 0.1, Истина);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗапуститьФоновуюЗагрузкуИзКаталогаКлиентаПродолжение()
+ ПараметрыЗагрузки = ПараметрыФоновойЗагрузкиКлассификатора;
+ ПараметрыФоновойЗагрузкиКлассификатора = Неопределено;
+
+ Если ПараметрыЗагрузки = Неопределено Тогда
+ // Возвращаемся на страницу выбора
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ Возврат;
+ КонецЕсли;
+
+ // Очищаем возможно ранее помещенные файлы
+ Если ТипЗнч(ПомещенныеФайлы) = Тип("Массив") Тогда
+ Для Каждого Описание Из ПомещенныеФайлы Цикл
+ Если Не ПустаяСтрока(Описание.Хранение) Тогда
+ УдалитьИзВременногоХранилища(Описание.Хранение);
+ КонецЕсли;
+ КонецЦикла;
+ ПомещенныеФайлы.Очистить();
+ КонецЕсли;
+
+ // Список передаваемых на сервер файлов
+ ПомещаемыеФайлы = Новый Массив;
+ Для Каждого КлючЗначение Из ПараметрыЗагрузки.ФайлыПоРегионам Цикл
+ Если ТипЗнч(КлючЗначение.Значение) = Тип("Массив") Тогда
+ Для Каждого ИмяФайла Из КлючЗначение.Значение Цикл
+ ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяФайла) );
+ КонецЦикла;
+ Иначе
+ ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(КлючЗначение.Значение) );
+ КонецЕсли;
+ КонецЦикла;
+
+ ПомещенныеФайлы = Новый Массив;
+ ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор);
+
+ // Сохраняем время изменения - версию
+ Для Позиция = 0 По ПомещенныеФайлы.ВГраница() Цикл
+ Описание = ПомещенныеФайлы[Позиция];
+
+ ДанныеФайла = Новый Структура("Имя, Хранение");
+ ЗаполнитьЗначенияСвойств(ДанныеФайла, Описание);
+
+ Файл = Новый Файл(Описание.Имя);
+ ДанныеФайла.Вставить("ВремяИзменения", Файл.ПолучитьУниверсальноеВремяИзменения());
+
+ ПомещенныеФайлы[Позиция] = ДанныеФайла;
+ КонецЦикла;
+
+ // Удаляем локальные временные клиентские файлы
+ Для Каждого ИмяФайла Из ПараметрыЗагрузки.УдалитьПослеПередачиНаСервер Цикл
+ АдресныйКлассификаторКлиентСервер.УдалитьВременныйФайл(ИмяФайла);
+ КонецЦикла;
+
+ // Запуск фонового по загрузке из переданных файлов
+ Если ЭтоАдресВременногоХранилища(ПараметрыДлительнойОперации.АдресРезультата) Тогда
+ УдалитьИзВременногоХранилища(ПараметрыДлительнойОперации.АдресРезультата);
+ КонецЕсли;
+ ПараметрыДлительнойОперации.АдресРезультата = Неопределено;
+
+ Режим = Неопределено;
+ ПараметрыЗагрузки.Свойство("Режим", Режим);
+
+ ЗапуститьФоновуюЗагрузкуНаСервере(ПараметрыЗагрузки.КодыРегионов, ПомещенныеФайлы, Режим);
+ ПодключитьОбработчикОжидания("Подключаемый_ОжиданиеДлительнойОперации", 0.1, Истина);
+КонецПроцедуры
+
&НаСервере
-Процедура ЗаполнитьТаблицуАдресныхОбъектов(ЗаданныеРегионыДляЗагрузки)
+Процедура ЗапуститьФоновуюЗагрузкуНаСервере(Знач КодыРегионов, Знач ОписаниеФайловЗагрузки, Знач Режим = Неопределено)
+ ПараметрыМетода = Новый Массив;
+ ПараметрыМетода.Добавить(КодыРегионов);
- МассивЗагружаемыхАО = ЗагрузитьНастройкуЗагрузкиКЛАДР("ЗагружаемыеРегионы");
-
- АдресныеОбъектыДляЗагрузки.Очистить();
-
- КлассификаторАдресныхОбъектовXML =
- РегистрыСведений.АдресныйКлассификатор.ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст();
-
- КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторАдресныхОбъектовXML).Данные;
-
- Для Каждого АдресныйОбъект Из КлассификаторТаблица Цикл
+ // Файлы преобразуем в двоичные данные - хранилище не может быть разделено с сеансом фонового задания
+ ОписаниеФайлов = Новый Массив;
+ Для Каждого Описание Из ОписаниеФайловЗагрузки Цикл
- Наименование = СокрЛП(Лев(АдресныйОбъект.Code, 2) + " - " + АдресныйОбъект.Name + " " + АдресныйОбъект.Socr);
-
- НоваяСтрока = АдресныеОбъектыДляЗагрузки.Добавить();
- НоваяСтрока.НаименованиеАдресногоОбъекта = Наименование;
-
- Если ЗаданныеРегионыДляЗагрузки <> Неопределено Тогда
- //
- Если ЗаданныеРегионыДляЗагрузки.Найти(Лев(АдресныйОбъект.Code, 2)) <> Неопределено Тогда
- НоваяСтрока.Пометка = Истина;
- Иначе
- НоваяСтрока.Пометка = Ложь;
- КонецЕсли;
- //
- ИначеЕсли МассивЗагружаемыхАО <> Неопределено Тогда
- //
- Если МассивЗагружаемыхАО.Найти(Лев(АдресныйОбъект.Code, 2)) <> Неопределено Тогда
- НоваяСтрока.Пометка = Истина;
- Иначе
- НоваяСтрока.Пометка = Ложь;
- КонецЕсли;
- Иначе
- НоваяСтрока.Пометка = Ложь;
- КонецЕсли;
+ ДанныеФайла = Новый Структура("Имя, ВремяИзменения");
+ ЗаполнитьЗначенияСвойств(ДанныеФайла, Описание);
+ ДанныеФайла.Вставить("Хранение", ПолучитьИзВременногоХранилища(Описание.Хранение));
+ ОписаниеФайлов.Добавить(ДанныеФайла);
КонецЦикла;
+ ПараметрыМетода.Добавить(ОписаниеФайлов);
- Если ЗаданныеРегионыДляЗагрузки <> Неопределено Тогда
- //
- Если ЗаданныеРегионыДляЗагрузки.Найти("AL") <> Неопределено Тогда
- АдресныйОбъект = АдресныйКлассификатор.ИнформацияПоАдресномуОбъекту("AL");
- НоваяСтрока = АдресныеОбъектыДляЗагрузки.Добавить();
- НоваяСтрока.НаименованиеАдресногоОбъекта = СокрЛП(Лев(АдресныйОбъект.КодАдресногоОбъекта, 2) + " - " + АдресныйОбъект.Наименование);
- НоваяСтрока.Пометка = Истина;
- ОбязательныеАдресныеОбъекты.Добавить(НоваяСтрока.ПолучитьИдентификатор());
- КонецЕсли;
- //
- Если ЗаданныеРегионыДляЗагрузки.Найти("SO") <> Неопределено Тогда
- АдресныйОбъект = АдресныйКлассификатор.ИнформацияПоАдресномуОбъекту("SO");
- НоваяСтрока = АдресныеОбъектыДляЗагрузки.Добавить();
- НоваяСтрока.НаименованиеАдресногоОбъекта = СокрЛП(Лев(АдресныйОбъект.КодАдресногоОбъекта, 2) + " - " + АдресныйОбъект.Наименование);
- НоваяСтрока.Пометка = Истина;
- ОбязательныеАдресныеОбъекты.Добавить(НоваяСтрока.ПолучитьИдентификатор());
- КонецЕсли;
- КонецЕсли;
+ ПараметрыМетода.Добавить(Режим);
+ ПараметрыДлительнойОперации.Идентификатор = Неопределено;
+ ПараметрыДлительнойОперации.Завершено = Истина;
+ ПараметрыДлительнойОперации.АдресРезультата = Неопределено;
+ ПараметрыДлительнойОперации.Ошибка = Неопределено;
+
+ Попытка
+ РезультатЗапуска = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
+ УникальныйИдентификатор,
+ "АдресныйКлассификатор.ФоновоеЗаданиеЗагрузкиКлассификатораАдресов",
+ ПараметрыМетода,
+ НСтр("ru = 'Загрузка адресного классификатора'")
+ );
+ Исключение
+ ПараметрыДлительнойОперации.Ошибка = ПодробноеПредставлениеОшибки( ИнформацияОбОшибке() );
+ Возврат;
+
+ КонецПопытки;
+
+ ПараметрыДлительнойОперации.Идентификатор = РезультатЗапуска.ИдентификаторЗадания;
+ ПараметрыДлительнойОперации.Завершено = РезультатЗапуска.ЗаданиеВыполнено;
+ ПараметрыДлительнойОперации.АдресРезультата = РезультатЗапуска.АдресХранилища;
+
+ // Запущенное
+ Элементы.ПрерватьЗагрузку.Доступность = Истина;
КонецПроцедуры
-// Возвращает количество помеченных адресных объектов
-//
-&НаКлиенте
-Функция КоличествоОтмеченныхАдресныхОбъектов()
+&НаСервере
+Функция СостояниеФоновогоЗадания()
+ Результат = Новый Структура("Прогресс, Завершено, Ошибка");
- КоличествоОтмеченныхАдресныхОбъектов = 0;
-
- Для Каждого ЭлементАдресныйОбъект Из АдресныеОбъектыДляЗагрузки Цикл
- Если ЭлементАдресныйОбъект.Пометка Тогда
- КоличествоОтмеченныхАдресныхОбъектов = КоличествоОтмеченныхАдресныхОбъектов + 1;
- КонецЕсли;
- КонецЦикла;
-
- Возврат КоличествоОтмеченныхАдресныхОбъектов;
-
- Возврат НСтр("ru = '<не выбрано>'");
+ Результат.Ошибка = "";
+ Если ПараметрыДлительнойОперации.Идентификатор = Неопределено Тогда
+ Результат.Завершено = Истина;
+ Результат.Прогресс = Неопределено;
+ Результат.Ошибка = ПараметрыДлительнойОперации.Ошибка;
+ Иначе
+ Попытка
+ Результат.Завершено = ДлительныеОперации.ЗаданиеВыполнено(ПараметрыДлительнойОперации.Идентификатор);
+ Результат.Прогресс = ДлительныеОперации.ПрочитатьПрогресс(ПараметрыДлительнойОперации.Идентификатор);
+ Исключение
+ Результат.Ошибка = ПодробноеПредставлениеОшибки( ИнформацияОбОшибке() );
+ КонецПопытки
+ КонецЕсли;
+ Возврат Результат;
КонецФункции
-// В зависимости от текущей страницы устанавливает доступность тех или иных полей для пользователя
-//
-&НаКлиенте
-Процедура УстановитьИзмененияВИнтерфейсе()
-
- ИсточникДанныхДляЗагрузкиВыбран = ИсточникДанныхДляЗагрузкиВыбран();
- ВыбраноРегионовДляЗагрузки = КоличествоОтмеченныхАдресныхОбъектов();
-
- ЗаголовокДалее = НСтр("ru = 'Далее >'");
-
- Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборАдресныхОбъектов Тогда
- Элементы.Назад.Видимость = Ложь;
- Элементы.Далее.Доступность = Истина;
-
- ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника Тогда
- Элементы.Назад.Видимость = Истина;
- Элементы.Назад.Доступность = Истина;
- Элементы.Далее.Доступность = Истина;
-
- Если ИсточникДанныхДляЗагрузки = 0 Тогда
- ИсточникДанныхДляЗагрузки = 1;
- КонецЕсли;
-
- Если ИсточникДанныхДляЗагрузки = 2 Тогда
- Элементы.СтраницыСпособаЗагрузки.ТекущаяСтраница = Элементы.СтраницаЗагрузкаСДискаИТС;
- ИначеЕсли ИсточникДанныхДляЗагрузки = 3 Тогда
- Элементы.СтраницыСпособаЗагрузки.ТекущаяСтраница = Элементы.СтраницаЗагрузкаФайлов;
- Иначе
- Элементы.СтраницыСпособаЗагрузки.ТекущаяСтраница = Элементы.ПустаяСтраница;
- КонецЕсли;
-
- ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаЗагрузка Тогда
- Элементы.Назад.Доступность = Истина;
- Элементы.Далее.Доступность = Истина;
-
- ЗаголовокДалее = НСтр("ru = 'Загрузить'");
- ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаУспех Тогда
- Элементы.Назад.Видимость = Ложь;
- Элементы.Далее.Видимость = Истина;
- Элементы.Далее.Доступность = Истина;
- Элементы.Отмена.Видимость = Ложь;
-
- ЗаголовокДалее = НСтр("ru = 'Закрыть'");
- КонецЕсли;
-
- Элементы.Далее.Заголовок = ЗаголовокДалее;
-КонецПроцедуры
-
-&НаКлиенте
-Функция ИсточникДанныхДляЗагрузкиВыбран()
-
- ИсточникВыбран = Ложь;
-
- Если ИсточникДанныхДляЗагрузки = 1 Тогда
- ИсточникВыбран = Истина;
- ИначеЕсли ИсточникДанныхДляЗагрузки = 2 Тогда
- Если АдресныйКлассификаторКлиент.ПроверитьНаличиеФайловНаДискеИТС(ДискИТС) Тогда
- ИсточникВыбран = Истина;
- КонецЕсли;
- ИначеЕсли ИсточникДанныхДляЗагрузки = 3 Тогда
- Если АдресныйКлассификаторКлиент.ПроверитьНаличиеФайловДанныхВКаталоге(ПутьКФайламДанныхНаДиске) Тогда
- ИсточникВыбран = Истина;
- КонецЕсли;
- КонецЕсли;
-
- Возврат ИсточникВыбран;
-
-КонецФункции
-
-&НаКлиентеНаСервереБезКонтекста
-Процедура ОтметитьОбязательные(Контекст)
-
- Для каждого Описание Из Контекст.ОбязательныеАдресныеОбъекты Цикл
- Контекст.АдресныеОбъектыДляЗагрузки.НайтиПоИдентификатору(Описание.Значение).Пометка = Истина;
- КонецЦикла
-
-КонецПроцедуры
-
&НаСервереБезКонтекста
-Процедура ОтменитьПроцессЗагрузки(ИдентификаторЗадания)
- ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
+Процедура ОтменитьФоновоеЗадание(Знач Идентификатор)
+
+ Если Идентификатор <> Неопределено Тогда
+ Попытка
+ ДлительныеОперации.ОтменитьВыполнениеЗадания(Идентификатор);
+ Исключение
+ // Действие не требуется, запись в журнал регистрации уже произведена
+ КонецПопытки
+ КонецЕсли;
+
КонецПроцедуры
&НаКлиенте
-Функция ВыбранныеОбъектыЗагрузки()
+Процедура Подключаемый_ОжиданиеДлительнойОперации()
+
+ // Обновим статус
+ Состояние = СостояниеФоновогоЗадания();
+ Если Не ПустаяСтрока(Состояние.Ошибка) Тогда
+ // Завершено с ошибкой, сообщим и вернемся на первую страницу
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Состояние.Ошибка);
+ Возврат;
+
+ ИначеЕсли Состояние.Завершено Тогда
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.УспешноеЗавершение;
+ ТекстОписанияЗагрузки = НСтр("ru = 'Адресный классификатор успешно загружен.'");
+
+ Оповестить("ЗагруженАдресныйКлассификатор", , ЭтотОбъект);
+
+ Элементы.Закрыть.КнопкаПоУмолчанию = Истина;
+ ТекущийЭлемент = Элементы.Закрыть;
+ ПодтверждениеЗакрытияФормы = Истина;
+ Возврат;
+
+ КонецЕсли;
+
+ // Процесс продолжается
+ Если ТипЗнч(Состояние.Прогресс) = Тип("Структура") Тогда
+ ТекстСостоянияЗагрузки = Состояние.Прогресс.Текст;
+ КонецЕсли;
+ ПодключитьОбработчикОжидания("Подключаемый_ОжиданиеДлительнойОперации", ПараметрыДлительнойОперации.ИнтервалОжидания, Истина);
+
+КонецПроцедуры
+
+&НаКлиенте
+Функция КодыРегионовДляЗагрузки()
Результат = Новый Массив;
- // Первыми всегда идут сокращения
- ИмяСокращений = "SO";
- Результат.Добавить(ИмяСокращений);
-
- Для Каждого ЭлементАдресныйОбъект Из АдресныеОбъектыДляЗагрузки Цикл
- Идентификатор = ВРег(Лев(ЭлементАдресныйОбъект.НаименованиеАдресногоОбъекта, 2));
- Если ЭлементАдресныйОбъект.Пометка И Идентификатор<>ИмяСокращений Тогда
- Результат.Добавить(Идентификатор);
- КонецЕсли;
+ Для Каждого Регион Из СубъектыРФ.НайтиСтроки( Новый Структура("Загружать", Истина) ) Цикл
+ Результат.Добавить(Регион.КодСубъектаРФ);
КонецЦикла;
Возврат Результат;
КонецФункции
-&НаСервере
-Функция СохраненныеДанныеАутентификацииСервер()
- Перем КодПользователя, Пароль;
+&НаКлиенте
+Функция РаспаковатьАрхивИТС(Знач ПолноеИмяФайла, Знач МаскаОжидаемого)
- АдресныйКлассификатор.ПолучитьПараметрыАутентификации(КодПользователя, Пароль);
+ КаталогКлиента = АдресныйКлассификаторКлиент.ВременныйКаталогКлиента();
+
+ Команда = """" + ПолноеИмяФайла + """ -s -d """ + КаталогКлиента + """";
+ ЗапуститьПриложение(Команда, КаталогКлиента, Истина);
- Возврат Новый Структура("КодПользователя, Пароль", КодПользователя, Пароль);
+ // Возвращаем первый файл по ожидаемой маске
+ Найденное = АдресныйКлассификаторКлиентСервер.НайтиФайл(КаталогКлиента, МаскаОжидаемого);
+ Если Не Найденное.Существует Тогда
+ Элементы.ШагиЗагрузки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Ошибка распаковки файла ""%1"", ожидаемое содержимое не получено'"), ПолноеИмяФайла);
+ КонецЕсли;
+
+ Результат = Новый Структура;
+ Результат.Вставить("ИмяФайла", Найденное.ПолноеИмя);
+ Результат.Вставить("ИмяУдаляемогоФайла", КаталогКлиента);
+
+ Возврат Результат;
КонецФункции
+&НаСервереБезКонтекста
+Функция СохраненныеДанныеАутентификацииСайта()
+
+ Возврат АдресныйКлассификатор.ПараметрыАутентификацииНаСайте();
+
+КонецФункции
+
+&НаКлиентеНаСервереБезКонтекста
+Функция КодИсточникаЗагрузкиПоУмолчанию()
+
+ Возврат "КАТАЛОГ";
+
+КонецФункции
#КонецОбласти
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Form.form b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Form.form
index 75e6bad92..21df9e496 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Form.form
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Form.form
@@ -1,49 +1,297 @@
-
- АдресныеОбъекты
- 1
- true
- true
-
- true
-
-
- АдресныеОбъекты
-
- false
- None
- Add
- Copy
- CopyToClipboard
- Delete
- EndEdit
- MoveDown
- MoveUp
- OutputList
- SortListAsc
- SortListDesc
+
+ ru
+ Очистка адресного классификатора
+
+
+ ШагиОчистки
+ 59
- ГруппаСтрока
- 10
-
- Пометка
- 4
+ ВыборРегионовОчистки
+ 61
+
+ СубъектыРФ
+ 1truetruetrue
- АдресныеОбъекты.Пометка
+ СубъектыРФ
+ None
+ Add
+ Change
+ Copy
+ Delete
+ EndEdit
+ MoveDown
+ MoveUp
+ SelectAll
+
+ СубъектыРФОчищать
+ 20
+ true
+ true
+
+ true
+
+
+ СубъектыРФ.Очищать
+
+
+ OnChange
+ СубъектыРФОчищатьПриИзменении
+
+
+ СубъектыРФОчищатьРасширеннаяПодсказка
+ 22
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СубъектыРФОчищатьКонтекстноеМеню
+ 21
+ true
+
+ CheckBoxField
+ Auto
+ true
+ Left
+ true
+
+
+
+ СубъектыРФПредставление
+ 17
+ true
+ true
+
+ true
+
+
+ СубъектыРФ.Представление
+
+
+ СубъектыРФПредставлениеРасширеннаяПодсказка
+ 19
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СубъектыРФПредставлениеКонтекстноеМеню
+ 18
+ true
+
+ LabelField
+ Left
+ Auto
+ true
+ Left
+ true
+ Left
+
+ true
+ true
+
+
+
+ СубъектыРФКоманднаяПанель
+ 3
+
+ СубъектыРФУстановитьФлажки
+ 47
+ true
+ true
+
+ true
+
+
+ СубъектыРФУстановитьФлажкиРасширеннаяПодсказка
+ 48
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.УстановитьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СубъектыРФСнятьФлажки
+ 49
+ true
+ true
+
+ true
+
+
+ СубъектыРФСнятьФлажкиРасширеннаяПодсказка
+ 50
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СнятьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СубъектыРФНайти
+ 43
+ true
+ true
+
+ true
+
+
+ СубъектыРФНайтиРасширеннаяПодсказка
+ 44
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СубъектыРФ.StandardCommand.Find
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СубъектыРФОтменитьПоиск
+ 45
+ true
+ true
+
+ true
+
+
+ СубъектыРФОтменитьПоискРасширеннаяПодсказка
+ 46
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СубъектыРФ.StandardCommand.CancelSearch
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ Left
+
- OnChange
- ПометкаПриИзменении
+ Selection
+ СубъектыРФВыбор
+
+ СубъектыРФСтрокаПоиска
+ 119
+
+ СубъектыРФСтрокаПоискаРасширеннаяПодсказка
+ 121
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СубъектыРФСтрокаПоискаКонтекстноеМеню
+ 120
+ true
+
+ СубъектыРФ
+
+ true
+
+
+
+ СубъектыРФСостояниеПросмотра
+ 122
+
+ СубъектыРФСостояниеПросмотраРасширеннаяПодсказка
+ 124
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СубъектыРФСостояниеПросмотраКонтекстноеМеню
+ 123
+ true
+
+ ViewStatusAddition
+ СубъектыРФ
+
+ true
+
+
+
+ СубъектыРФУправлениеПоиском
+ 125
+
+ СубъектыРФУправлениеПоискомРасширеннаяПодсказка
+ 127
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СубъектыРФУправлениеПоискомКонтекстноеМеню
+ 126
+ true
+
+ SearchControlAddition
+ СубъектыРФ
+
+ true
+
+
- ПометкаExtendedTooltip
- 25
+ СубъектыРФРасширеннаяПодсказка
+ 4Labeltruetrue
@@ -52,31 +300,161 @@
- ПометкаКонтекстноеМеню
- 5
+ СубъектыРФКонтекстноеМеню
+ 2true
- CheckBoxField
- Enter
- true
- Left
- true
-
+ Tree
+ true
+ true
+ true
+ MultiRow
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ false
+ false
+ true
+ Auto
+ Auto
+ true
+ true
+ true
+ true
+
+ СубъектыРФ.Загружено
+
+ None
+ None
+ None
+ true
+
-
- НаименованиеАдресногоОбъекта
- 6
+
+ ГруппаКомандЗагрузки
+ 8
+
+ ВыбраноРегионовДляОчистки
+ 51
+ true
+ true
+
+ true
+
+
+ ВыбраноРегионовДляОчистки
+
+
+ ВыбраноРегионовДляОчисткиРасширеннаяПодсказка
+ 53
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВыбраноРегионовДляОчисткиКонтекстноеМеню
+ 52
+ true
+
+ LabelField
+ Left
+ Enter
+ true
+ Left
+ true
+
+ 2
+ true
+ true
+ false
+
+ ru
+ ЧН=-
+
+
+
+
+ НадписьОтступ
+ 116
+ true
+ true
+
+ true
+
+
+ НадписьОтступРасширеннаяПодсказка
+ 118
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НадписьОтступКонтекстноеМеню
+ 117
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ Очистить
+ 10
+ true
+ true
+
+ true
+
+
+ ОчиститьРасширеннаяПодсказка
+ 11
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.Очистить
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+ truetruetrue
-
- АдресныеОбъекты.НаименованиеАдресногоОбъекта
-
+
+ ru
+ Группа команд загрузки
+
+
+ ru
+ Группа команд загрузки
+
+ true
- НаименованиеАдресногоОбъектаExtendedTooltip
- 26
+ ГруппаКомандЗагрузкиРасширеннаяПодсказка
+ 9Labeltruetrue
@@ -84,24 +462,14 @@
Left
-
- НаименованиеАдресногоОбъектаКонтекстноеМеню
- 7
- true
-
- InputField
- true
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- Normal
+ UsualGroup
+
+ Auto
+ NormalSeparation
+ true
+ true
+ Auto
+ Autotrue
@@ -111,15 +479,15 @@
ru
- Группа строка
+ Выбор регионов очисткиru
- Группа строка
+ Выбор регионов очистки
- ГруппаСтрокаExtendedTooltip
- 24
+ ВыборРегионовОчисткиРасширеннаяПодсказка
+ 62Labeltruetrue
@@ -127,28 +495,112 @@
Left
- ColumnGroup
-
+ Page
+
+ Verticalauto
- true
- Top
-
- АдресныеОбъектыКоманднаяПанель
- 3
-
- ВыделитьВсе
- 9
+
+ ОжиданиеОчистки
+ 63
+
+ ГруппаОписание
+ 65
+
+ КартинкаДлительнаяОперация
+ 67
+ true
+ true
+
+ true
+
+
+ КартинкаДлительнаяОперацияРасширеннаяПодсказка
+ 69
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаДлительнаяОперацияКонтекстноеМеню
+ 68
+ true
+
+ 10
+ true
+ 4
+ true
+ false
+ false
+
+
+ CommonPicture.ДлительнаяОперация48
+
+
+
+
+ ТекстОписанияОчистки
+ 73
+ true
+ true
+
+ true
+
+
+ ТекстОписанияОчистки
+
+ None
+ ShowBottom
+
+ ТекстОписанияОчисткиРасширеннаяПодсказка
+ 75
+
+ ru
+ Очистка адресного классификатора может занять длительное время,
+которое зависит от количества выбранных регионов РФ.
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТекстОписанияОчисткиКонтекстноеМеню
+ 74
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ truetruetrue
- false
+
+ ru
+ Группа описание
+
+
+ ru
+ Группа описание
+
- ВыделитьВсеExtendedTooltip
- 19
+ ГруппаОписаниеРасширеннаяПодсказка
+ 66Labeltruetrue
@@ -156,26 +608,189 @@
Left
- Form.Command.ВыделитьВсе
- Normal
- Auto
- true
- true
- UserCmds
- Auto
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
-
- ОтменитьВыделитьВсе
- 8
+
+ ГруппаКомандОтмены
+ 76
+
+ Декорация2
+ 80
+ true
+ true
+
+ true
+
+
+ Декорация2РасширеннаяПодсказка
+ 82
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация2КонтекстноеМеню
+ 81
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ ТекстСостоянияЗагрузки
+ 88
+ true
+ true
+
+ true
+
+
+ ТекстСостоянияОчистки
+
+ None
+
+ ТекстСостоянияЗагрузкиРасширеннаяПодсказка
+ 90
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТекстСостоянияЗагрузкиКонтекстноеМеню
+ 89
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ Группа1
+ 83
+
+ Декорация3
+ 85
+ true
+ true
+
+ true
+
+
+ Декорация3РасширеннаяПодсказка
+ 87
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация3КонтекстноеМеню
+ 86
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ ПрерватьОчистку
+ 78
+ true
+ true
+
+ true
+
+
+ ПрерватьОчисткуРасширеннаяПодсказка
+ 79
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.Command.ПрерватьОчистку
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ Группа1РасширеннаяПодсказка
+ 84
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ truetruetrue
- false
+
+ ru
+ Группа команд отмены
+
+
+ ru
+ Группа команд отмены
+
+ true
+ true
- ОтменитьВыделитьВсеExtendedTooltip
- 20
+ ГруппаКомандОтменыРасширеннаяПодсказка
+ 77Labeltruetrue
@@ -183,80 +798,33 @@
Left
- Form.Command.ОтменитьВыделитьВсе
- Normal
- Auto
- true
- true
- UserCmds
- Auto
+ UsualGroup
+
+ Vertical
+ Auto
+ NormalSeparation
+ true
+ true
+ Auto
+ Auto
+
-
- Найти
- 12
- true
- true
-
- true
-
- false
-
- НайтиExtendedTooltip
- 21
- Label
- true
- true
-
- Left
-
-
- Form.Item.АдресныеОбъекты.StandardCommand.Find
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- Кнопка
- 11
- true
- true
-
- true
-
- false
-
- КнопкаExtendedTooltip
- 22
- Label
- true
- true
-
- Left
-
-
- Form.Item.АдресныеОбъекты.StandardCommand.CancelSearch
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- Left
-
-
- Selection
- АдресныеОбъектыВыбор
-
-
- АдресныеОбъектыСтрокаПоиска
- 35
+ true
+ true
+
+ true
+
+
+ ru
+ Ожидание очистки
+
+
+ ru
+ Ожидание очистки
+
- АдресныеОбъектыСтрокаПоискаРасширеннаяПодсказка
- 37
+ ОжиданиеОчисткиРасширеннаяПодсказка
+ 64Labeltruetrue
@@ -264,22 +832,299 @@
Left
-
- АдресныеОбъектыСтрокаПоискаКонтекстноеМеню
- 36
- true
-
- АдресныеОбъекты
-
- true
+ Page
+
+ Vertical
+ auto
-
-
- АдресныеОбъектыСостояниеПросмотра
- 38
+
+
+ УспешноеЗавершение
+ 91
+
+ ГруппаОписаниеЗавершения
+ 93
+
+ КартинкаУспешноеЗавершение
+ 95
+
+ ru
+ Длительная операция
+
+ true
+ true
+
+ true
+
+
+ КартинкаУспешноеЗавершениеРасширеннаяПодсказка
+ 97
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаУспешноеЗавершениеКонтекстноеМеню
+ 96
+ true
+
+ 10
+ true
+ 2
+ true
+ false
+ false
+
+
+ CommonPicture.Успешно32
+
+
+
+
+ ТекстОписанияОчисткиЗавершения
+ 98
+ true
+ true
+
+ true
+
+
+ ТекстОписанияОчистки
+
+ None
+ ShowBottom
+
+ ТекстОписанияОчисткиЗавершенияРасширеннаяПодсказка
+ 100
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТекстОписанияОчисткиЗавершенияКонтекстноеМеню
+ 99
+ true
+
+ LabelField
+ true
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа описание
+
+
+ ru
+ Группа описание
+
+
+ ГруппаОписаниеЗавершенияРасширеннаяПодсказка
+ 94
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаКомандЗавершения
+ 101
+
+ Декорация4
+ 103
+ true
+ true
+
+ true
+
+
+ Декорация4РасширеннаяПодсказка
+ 105
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация4КонтекстноеМеню
+ 104
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ Группа2
+ 109
+
+ Декорация5
+ 111
+ true
+ true
+
+ true
+
+
+ Декорация5РасширеннаяПодсказка
+ 113
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация5КонтекстноеМеню
+ 112
+ true
+
+ Label
+ true
+ true
+ true
+
+ Left
+
+
+
+ Закрыть
+ 114
+ true
+ true
+
+ true
+
+
+ ЗакрытьРасширеннаяПодсказка
+ 115
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualButton
+ Form.StandardCommand.Close
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ Группа2РасширеннаяПодсказка
+ 110
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа команд завершения
+
+
+ ru
+ Группа команд отмены
+
+ true
+ true
+
+ ГруппаКомандЗавершенияРасширеннаяПодсказка
+ 102
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ NormalSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Успешное завершение
+
+
+ ru
+ Успешное завершение
+
- АдресныеОбъектыСостояниеПросмотраРасширеннаяПодсказка
- 40
+ УспешноеЗавершениеРасширеннаяПодсказка
+ 92Labeltruetrue
@@ -287,96 +1132,28 @@
Left
-
- АдресныеОбъектыСостояниеПросмотраКонтекстноеМеню
- 39
- true
-
- ViewStatusAddition
- АдресныеОбъекты
-
- true
+ Page
+
+ Vertical
+ auto
-
-
- АдресныеОбъектыУправлениеПоиском
- 41
-
- АдресныеОбъектыУправлениеПоискомРасширеннаяПодсказка
- 43
- Label
- true
- true
-
- Left
-
-
-
- АдресныеОбъектыУправлениеПоискомКонтекстноеМеню
- 42
- true
-
- SearchControlAddition
- АдресныеОбъекты
-
- true
-
-
-
- АдресныеОбъектыExtendedTooltip
- 23
- Label
- true
- true
-
- Left
-
-
-
- АдресныеОбъектыКонтекстноеМеню
- 2
- true
-
- true
- true
- true
- true
- true
- Row
- 1
- 1
- AutoUse
- AutoUse
- true
- true
- false
- false
- false
- true
- Auto
- Auto
- true
- true
- None
- None
- None
- true
-
-
-
- КоличествоВыбраных
- 32
+ truetruetrue
-
- КоличествоВыбранных
-
+
+ ru
+ Шаги очистки
+
+
+ ru
+ Шаги очистки
+
- КоличествоВыбраныхРасширеннаяПодсказка
- 34
+ ШагиОчисткиРасширеннаяПодсказка
+ 60Labeltruetrue
@@ -384,145 +1161,49 @@
Left
-
- КоличествоВыбраныхКонтекстноеМеню
- 33
- true
-
- LabelField
- Left
- Enter
- true
- Left
- true
-
- true
- true
-
- ru
- ЧН=-
-
-
- System.DefaultGUIFont
- true
- false
- false
- false
-
+ Pages
+
+ Auto
- Bottom
- trueФормаКоманднаяПанель-1
-
- Очистить
- 13
- true
- true
-
- true
-
- false
-
- ОчиститьExtendedTooltip
- 16
- Label
- true
- true
-
- Left
-
-
- Form.Command.Очистить
- Auto
- true
- true
- true
- UserCmds
- Auto
-
-
- Отмена
- 14
- true
- true
-
- true
-
- false
-
- ОтменаExtendedTooltip
- 17
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Cancel
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- Справка
- 15
- true
- true
-
- true
-
- false
-
- СправкаExtendedTooltip
- 18
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Help
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- Right
+ LeftOnOpenПриОткрытии
+
+ BeforeClose
+ ПередЗакрытием
+ OnCreateAtServerПриСозданииНаСервере
+
+ OnClose
+ ПриЗакрытии
+
+ 10LockOwner
+ Use
+ UseListtrue
- truetrueVerticaltruetruetrue
- UseIfNecessaryautotrue
- АдресныеОбъекты
+ СубъектыРФru
- Адресные объекты
+ Субъекты РФ1
@@ -535,14 +1216,17 @@
true
- Пометка
+ КодСубъектаРФru
- Пометка
+ Код субъекта РФ1
- Boolean
+ Number
+
+ 2
+ true
@@ -552,10 +1236,10 @@
- НаименованиеАдресногоОбъекта
+ Представлениеru
- Наименование адресного объекта
+ Субъект РФ2
@@ -569,18 +1253,52 @@
true
+
+ Загружено
+
+ ru
+ Загружено
+
+ 3
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Очищать
+
+ ru
+ Очищать
+
+ 4
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
- КоличествоВыбранных
+ ВыбраноРегионовДляОчисткиru
- Выбрано регионов для очистки
+ Регионов
- 2
+ 6Number
- 3
+ 2
@@ -590,16 +1308,85 @@
true
-
- ВыделитьВсе
+
+ ТекстОписанияОчисткиru
- Выбрать все
+ Текст описания очистки
- 1
+ 7
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ТекстСостоянияОчистки
+
+ ru
+ Текст состояния очистки
+
+ 8
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ПараметрыДлительнойОперации
+ 10
+
+
+ true
+
+
+ true
+
+
+
+ Очистить
+
+ ru
+ Очистить
+
+ 2ru
- Выбрать все регионы для очистки загруженного по ним адресного классификатора.
+ Очистить
+
+
+ true
+
+
+
+ Очистить
+
+
+ Auto
+ Auto
+
+
+ УстановитьФлажки
+
+ ru
+ Установить флажки
+
+ 3
+
+ ru
+ Выбрать все регионы для загрузкиtrue
@@ -609,22 +1396,22 @@
- ВыделитьВсеВыполнить
+ УстановитьФлажкиAutoAuto
- ОтменитьВыделитьВсе
+ СнятьФлажкиru
- Снять отметку со всех
+ Снять флажки
- 2
+ 4ru
- Отменить выбор всех регионов для очистки загруженного по ним адресного классификатора.
+ Очистить пометку для загрузки у всех регионовtrue
@@ -634,29 +1421,29 @@
- ОтменитьВыделитьВсеВыполнить
+ СнятьФлажкиAutoAuto
- Очистить
+ ПрерватьОчисткуru
- Очистить
+ Прервать
- 3
+ 5ru
- Очистить
+ Прервать очисткуtrue
- ОчиститьВыполнить
+ ПрерватьОчисткуAuto
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Help/ru.html
deleted file mode 100644
index 3c4c87697..000000000
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Help/ru.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
Для удаления всех адресных сведений по выбранным регионам из адресного классификатора, нажмитекнопку Очистить.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl
index 897739386..f4e546b63 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl
@@ -1,46 +1,93 @@
+// Флаг подтверждения, используется при закрытии
+&НаКлиенте
+Перем ПодтверждениеЗакрытияФормы;
+
+// Хранилище передаваемых файлов
+&НаКлиенте
+Перем ПомещенныеФайлы;
+
+// Параметры загрузки для передачи между клиентскими вызовами
+&НаКлиенте
+Перем ПараметрыФоновойОчисткиКлассификатора;
#Область ОбработчикиСобытийФормы
-// Обработчик события "при создании на сервере" формы
-// Заполняет таблицу по макету
-//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
- Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ УстановитьУсловноеОформление();
+ Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
- ЗаполнитьТаблицуПоМакетуАдресныхОбъектов();
+ ПараметрыДлительнойОперации = Новый Структура("ИнтервалОжидания, Завершено, АдресРезультата, Идентификатор, Ошибка", 5);
+ // Получаем уже загруженные регионы
+ ТаблицаРегионов = РегистрыСведений.АдресныйКлассификатор.СведенияОЗагрузкеСубъектовРФ();
+ ТаблицаРегионов.Колонки.Добавить("Очищать", Новый ОписаниеТипов("Булево"));
+
+ Для Каждого Регион Из ТаблицаРегионов Цикл
+ Регион.Представление = Формат(Регион.КодСубъектаРФ, "ЧЦ=2; ЧН=; ЧВН=; ЧГ=") + ", " + Регион.Представление;
+ КонецЦикла;
+
+ ЗначениеВРеквизитФормы(ТаблицаРегионов, "СубъектыРФ");
+
+ // Автосохранение настроек
+ СохраняемыеВНастройкахДанныеМодифицированы = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
- КоличествоВыбранных = КоличествоВыбранныхРегионов();
+ ОбновитьИнтерфейсПоКоличествуОчищаемых();
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
+
+ // Проверяем клиентскую переменную
+ Если ПодтверждениеЗакрытияФормы<>Истина Тогда
+ Оповещение = Новый ОписаниеОповещения("ЗакрытиеФормыЗавершение", ЭтотОбъект);
+ Отказ = Истина;
+
+ Текст = НСтр("ru = 'Прервать очистку адресного классификатора?'");
+ ПоказатьВопрос(Оповещение, Текст, РежимДиалогаВопрос.ДаНет);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриЗакрытии()
+
+ Если ПараметрыДлительнойОперации.Идентификатор <> Неопределено Тогда
+ ОтменитьФоновоеЗадание(ПараметрыДлительнойОперации.Идентификатор);
+ КонецЕсли;
КонецПроцедуры
#КонецОбласти
-#Область ОбработчикиСобытийЭлементовШапкиФормы
+#Область ОбработчикиСобытийЭлементовФормы
-// Обработчик события "выбор" элемента формы АдресныеОбъекты
-// Инвертирует флаг выбора адресного объекта
-//
&НаКлиенте
-Процедура АдресныеОбъектыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+Процедура СубъектыРФВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
- Элемент.ТекущиеДанные.Пометка = Не Элемент.ТекущиеДанные.Пометка;
- КоличествоВыбранных = КоличествоВыбранныхРегионов();
+ Если Поле = Элементы.СубъектыРФПредставление Тогда
+ ТекущиеДанные = СубъектыРФ.НайтиПоИдентификатору(ВыбраннаяСтрока);
+ Если ТекущиеДанные <> Неопределено Тогда
+ ТекущиеДанные.Очищать = Не ТекущиеДанные.Очищать;
+ ОбновитьИнтерфейсПоКоличествуОчищаемых();
+ КонецЕсли
+ КонецЕсли;
КонецПроцедуры
&НаКлиенте
-Процедура ПометкаПриИзменении(Элемент)
+Процедура СубъектыРФОчищатьПриИзменении(Элемент)
- КоличествоВыбранных = КоличествоВыбранныхРегионов();
+ ОбновитьИнтерфейсПоКоличествуОчищаемых();
КонецПроцедуры
@@ -48,159 +95,248 @@
#Область ОбработчикиКомандФормы
-// Обработчик события нажатия на кнопку командной панели
-// элемента управления АдресныеОбъекты.
-// Устанавливает флаг выбора всем адресным объектам в списке
-//
&НаКлиенте
-Процедура ВыделитьВсеВыполнить(Команда)
+Процедура УстановитьФлажки(Команда)
УстановитьПометкиСпискаРегионов(Истина);
КонецПроцедуры
-// Обработчик события нажатия на кнопку командной панели
-// элемента управления АдресныеОбъекты.
-// Снимает флаг выбора у всех адресных объектов в списке
-//
&НаКлиенте
-Процедура ОтменитьВыделитьВсеВыполнить(Команда)
+Процедура СнятьФлажки(Команда)
УстановитьПометкиСпискаРегионов(Ложь);
КонецПроцедуры
-// Обработчик события нажатия на кнопку "Очистить"
-// Проверяет корректность данных и вызывает диалог подтверждения
-// очистки адресных сведений.
-//
&НаКлиенте
-Процедура ОчиститьВыполнить(Команда)
+Процедура Очистить(Команда)
- ОчиститьСообщения();
+ ОчиститьКлассификатор();
- Если КоличествоВыделенныхАдресныхОбъектов() = 0 Тогда
- ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
- НСтр("ru = 'Необходимо выбрать как минимум один адресный объект.'"), ,
- "АдресныеОбъекты");
- Возврат;
- КонецЕсли;
-
- // Список адресных объектов для очистки
- ВыбранныеОбъекты = Новый Массив;
- Для Каждого ЭлементАдресныйОбъект Из АдресныеОбъекты Цикл
- Если ЭлементАдресныйОбъект.Пометка Тогда
- ВыбранныеОбъекты.Добавить(Лев(ЭлементАдресныйОбъект.НаименованиеАдресногоОбъекта, 2));
- КонецЕсли;
- КонецЦикла;
-
- ТекстВопроса = НСтр("ru = 'Адресные сведения по выбранным объектам будут удалены. Удалить адресные сведения?'");
-
- Оповещение = Новый ОписаниеОповещения("ОчиститьВыполнитьЗавершение", ЭтотОбъект, Новый Структура);
- Оповещение.ДополнительныеПараметры.Вставить("ВыбранныеОбъекты", ВыбранныеОбъекты);
- ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ОКОтмена);
КонецПроцедуры
&НаКлиенте
-Процедура ОчиститьВыполнитьЗавершение(Знач РезультатВопроса, Знач ДополнительныеПараметры) Экспорт
- Если РезультатВопроса<>КодВозвратаДиалога.ОК Тогда
- Возврат;
- КонецЕсли;
+Процедура ПрерватьОчистку(Команда)
- ОчиститьАдресныеСведения(ДополнительныеПараметры.ВыбранныеОбъекты);
+ ПодтверждениеЗакрытияФормы = Неопределено;
+ Закрыть();
- Оповещение = Новый ОписаниеОповещения("ОчиститьВыполнитьЗавершениеПредупреждение", ЭтотОбъект, );
- ПоказатьПредупреждение(Оповещение, НСтр("ru='Адресные сведения успешно удалены.'"),,НСтр("ru='Удаление адресных сведений.'"));
-КонецПроцедуры
-
-&НаКлиенте
-Процедура ОчиститьВыполнитьЗавершениеПредупреждение(Знач ДополнительныеПараметры) Экспорт
- Оповестить("Запись_АдресныйКлассификатор", Новый Структура("Событие", "Очистить"));
- Закрыть(Истина);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-// Устанавливаем пометку только видимым элементам
-//
+// Завершение диалога закрытия формы
+&НаКлиенте
+Процедура ЗакрытиеФормыЗавершение(Знач РезультатВопроса, Знач ДополнительныеПараметры) Экспорт
+
+ Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
+ ПодтверждениеЗакрытияФормы = Истина;
+ Закрыть();
+ Иначе
+ ПодтверждениеЗакрытияФормы = Неопределено;
+ КонецЕсли;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьРазрешениеОчистки(Знач КоличествоОчищаемых = Неопределено)
+
+ Если КоличествоОчищаемых = Неопределено Тогда
+ КоличествоОчищаемых = СубъектыРФ.НайтиСтроки( Новый Структура("Очищать", Истина) ).Количество();
+ КонецЕсли;
+
+ Элементы.Очистить.Доступность = КоличествоОчищаемых > 0
+КонецПроцедуры
+
+&НаСервере
+Процедура УстановитьУсловноеОформление()
+ УсловноеОформление.Элементы.Очистить();
+
+ Элемент = УсловноеОформление.Элементы.Добавить();
+
+ Поля = Элемент.Поля.Элементы;
+ Поля.Добавить().Поле = Новый ПолеКомпоновкиДанных("СубъектыРФКодСубъектаРФ");
+ Поля.Добавить().Поле = Новый ПолеКомпоновкиДанных("СубъектыРФПредставление");
+
+ ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
+ ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СубъектыРФ.Загружено");
+ ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
+ ОтборЭлемента.ПравоеЗначение = Ложь;
+
+ Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ТемноСерый);
+КонецПроцедуры
+
&НаКлиенте
Процедура УстановитьПометкиСпискаРегионов(Знач Пометка)
- Для Каждого ЭлементАдресныйОбъект Из АдресныеОбъекты Цикл
- ИдентификаторСтроки = ЭлементАдресныйОбъект.ПолучитьИдентификатор();
- Если Элементы.АдресныеОбъекты.ДанныеСтроки(ИдентификаторСтроки) <> Неопределено Тогда
- // Строка видимая
- ЭлементАдресныйОбъект.Пометка = Пометка;
+ // Устанавливаем пометки только для видимых строк
+ ЭлементТаблицы = Элементы.СубъектыРФ;
+ Для Каждого СтрокаРегиона Из СубъектыРФ Цикл
+ Если ЭлементТаблицы.ДанныеСтроки( СтрокаРегиона.ПолучитьИдентификатор() ) <> Неопределено Тогда
+ СтрокаРегиона.Очищать = Пометка;
КонецЕсли;
КонецЦикла;
- КоличествоВыбранных = КоличествоВыбранныхРегионов();
+ ОбновитьИнтерфейсПоКоличествуОчищаемых();
КонецПроцедуры
&НаКлиенте
-Функция КоличествоВыбранныхРегионов();
+Процедура ОбновитьИнтерфейсПоКоличествуОчищаемых()
- Возврат АдресныеОбъекты.НайтиСтроки( Новый Структура("Пометка", Истина) ).Количество();
+ // Страница выбора
+ ВыбраноРегионовДляОчистки = СубъектыРФ.НайтиСтроки( Новый Структура("Очищать", Истина) ).Количество();
-КонецФункции
+ // Страница загрузки
+ ТекстОписанияОчистки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Очищаются данные выбранных регионов (%1)'"), ВыбраноРегионовДляОчистки
+ );
+
+ УстановитьРазрешениеОчистки(ВыбраноРегионовДляОчистки);
+КонецПроцедуры
+&НаКлиенте
+Процедура ОчиститьКлассификатор()
+
+ ОчиститьСообщения();
+
+ // Переключаем режим - страницу
+ Элементы.ШагиОчистки.ТекущаяСтраница = Элементы.ОжиданиеОчистки;
+ ТекстСостоянияОчистки = НСтр("ru = 'Очистка адресного классификатора ...'");
+
+ Элементы.ПрерватьОчистку.Доступность = Ложь;
+
+ ПараметрыФоновойОчисткиКлассификатора = Новый Структура;
+ ПараметрыФоновойОчисткиКлассификатора.Вставить("КодыРегионов", КодыРегионовДляОчистки() );
+
+ ИспользуемыйКлассификатор = АдресныйКлассификаторКлиентСервер.ИспользуемыйАдресныйКлассификатор();
+ Если ИспользуемыйКлассификатор <> "КЛАДР" Тогда
+ Элементы.ШагиОчистки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
+ НСтр("ru = 'Не обрабатываемый тип адресного классификатора ""%1""'"), ИспользуемыйКлассификатор);
+ КонецЕсли;
+
+ ПодключитьОбработчикОжидания("ОчиститьКлассификаторКЛАДР", 0.1, Истина);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОчиститьКлассификаторКЛАДР()
+
+ КодыРегионов = ПараметрыФоновойОчисткиКлассификатора.КодыРегионов;
+ ПараметрыФоновойОчисткиКлассификатора= Неопределено;
+
+ ЗапуститьФоновуюОчисткуНаСервере(КодыРегионов);
+ ПодключитьОбработчикОжидания("Подключаемый_ОжиданиеДлительнойОперации", 0.1, Истина);
+
+КонецПроцедуры
-// Заполняет переданную таблицу значений по значениям таблицы адресных объектов.
-// Выбирается код, наименование и сокращение типа объекта.
-//
&НаСервере
-Процедура ЗаполнитьТаблицуПоМакетуАдресныхОбъектов()
+Процедура ЗапуститьФоновуюОчисткуНаСервере(Знач КодыРегионов)
+ ПараметрыМетода = Новый Массив;
+ ПараметрыМетода.Добавить(КодыРегионов);
- АдресныеОбъекты.Очистить();
+ ПараметрыДлительнойОперации.Идентификатор = Неопределено;
+ ПараметрыДлительнойОперации.Завершено = Истина;
+ ПараметрыДлительнойОперации.АдресРезультата = Неопределено;
+ ПараметрыДлительнойОперации.Ошибка = Неопределено;
- КлассификаторАдресныхОбъектовXML =
- РегистрыСведений.АдресныйКлассификатор.ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст();
-
- КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторАдресныхОбъектовXML).Данные;
-
- Для Каждого АдресныйОбъект Из КлассификаторТаблица Цикл
+ Попытка
+ РезультатЗапуска = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
+ УникальныйИдентификатор,
+ "АдресныйКлассификатор.ФоновоеЗаданиеОчисткиКлассификатораАдресов",
+ ПараметрыМетода,
+ НСтр("ru = 'Очистка адресного классификатора'")
+ );
+ Исключение
+ ПараметрыДлительнойОперации.Ошибка = ПодробноеПредставлениеОшибки( ИнформацияОбОшибке() );
+ Возврат;
- Наименование = Лев(АдресныйОбъект.Code, 2)
- + " - "
- + АдресныйОбъект.Name
- + " "
- + АдресныйОбъект.Socr;
-
- НоваяСтрока = АдресныеОбъекты.Добавить();
- НоваяСтрока.Пометка = Ложь;
- НоваяСтрока.НаименованиеАдресногоОбъекта = Наименование;
-
- КонецЦикла;
+ КонецПопытки;
+ ПараметрыДлительнойОперации.Идентификатор = РезультатЗапуска.ИдентификаторЗадания;
+ ПараметрыДлительнойОперации.Завершено = РезультатЗапуска.ЗаданиеВыполнено;
+ ПараметрыДлительнойОперации.АдресРезультата = РезультатЗапуска.АдресХранилища;
+
+ // Запущенное
+ Элементы.ПрерватьОчистку.Доступность = Истина;
КонецПроцедуры
-// Возвращает количество помеченных адресных объектов
-//
-&НаКлиенте
-Функция КоличествоВыделенныхАдресныхОбъектов()
+&НаСервере
+Функция СостояниеФоновогоЗадания()
+ Результат = Новый Структура("Прогресс, Завершено, Ошибка");
- КоличествоВыделенныхАдресныхОбъектов = 0;
-
- Для Каждого ЭлементАдресныйОбъект Из АдресныеОбъекты Цикл
- Если ЭлементАдресныйОбъект.Пометка Тогда
- КоличествоВыделенныхАдресныхОбъектов = КоличествоВыделенныхАдресныхОбъектов + 1;
- КонецЕсли;
- КонецЦикла;
-
- Возврат КоличествоВыделенныхАдресныхОбъектов;
+ Результат.Ошибка = "";
+ Если ПараметрыДлительнойОперации.Идентификатор = Неопределено Тогда
+ Результат.Завершено = Истина;
+ Результат.Прогресс = Неопределено;
+ Результат.Ошибка = ПараметрыДлительнойОперации.Ошибка;
+ Иначе
+ Попытка
+ Результат.Завершено = ДлительныеОперации.ЗаданиеВыполнено(ПараметрыДлительнойОперации.Идентификатор);
+ Результат.Прогресс = ДлительныеОперации.ПрочитатьПрогресс(ПараметрыДлительнойОперации.Идентификатор);
+ Исключение
+ Результат.Ошибка = ПодробноеПредставлениеОшибки( ИнформацияОбОшибке() );
+ КонецПопытки
+ КонецЕсли;
+ Возврат Результат;
КонецФункции
-// Удаляет адресные сведения по выбранным адресным объектам
-//
&НаСервереБезКонтекста
-Процедура ОчиститьАдресныеСведения(Знач ВыбранныеОбъекты)
+Процедура ОтменитьФоновоеЗадание(Знач Идентификатор)
- АдресныйКлассификатор.УдалитьАдресныеСведения(ВыбранныеОбъекты);
- АдресныйКлассификатор.ЗагрузитьАдресныеОбъектыПервогоУровня();
+ Если Идентификатор <> Неопределено Тогда
+ Попытка
+ ДлительныеОперации.ОтменитьВыполнениеЗадания(Идентификатор);
+ Исключение
+ // Действие не требуется, запись в журнал регистрации уже произведена
+ КонецПопытки
+ КонецЕсли;
КонецПроцедуры
+&НаКлиенте
+Процедура Подключаемый_ОжиданиеДлительнойОперации()
+
+ // Обновим статус
+ Состояние = СостояниеФоновогоЗадания();
+ Если Не ПустаяСтрока(Состояние.Ошибка) Тогда
+ // Завершено с ошибкой, сообщим и вернемся на первую страницу
+ Элементы.ШагиОчистки.ТекущаяСтраница = Элементы.ВыборРегионовЗагрузки;
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Состояние.Ошибка);
+ Возврат;
+
+ ИначеЕсли Состояние.Завершено Тогда
+ Элементы.ШагиОчистки.ТекущаяСтраница = Элементы.УспешноеЗавершение;
+ ТекстОписанияОчистки = НСтр("ru = 'Адресный классификатор успешно очищен.'");
+
+ Оповестить("ОчищенАдресныйКлассификатор", , ЭтотОбъект);
+
+ Элементы.Закрыть.КнопкаПоУмолчанию = Истина;
+ ТекущийЭлемент = Элементы.Закрыть;
+ ПодтверждениеЗакрытияФормы = Истина;
+ Возврат;
+
+ КонецЕсли;
+
+ // Процесс продолжается
+ Если ТипЗнч(Состояние.Прогресс) = Тип("Структура") Тогда
+ ТекстСостоянияОчистки = Состояние.Прогресс.Текст;
+ КонецЕсли;
+ ПодключитьОбработчикОжидания("Подключаемый_ОжиданиеДлительнойОперации", ПараметрыДлительнойОперации.ИнтервалОжидания, Истина);
+
+КонецПроцедуры
+
+&НаКлиенте
+Функция КодыРегионовДляОчистки()
+ Результат = Новый Массив;
+
+ Для Каждого Регион Из СубъектыРФ.НайтиСтроки( Новый Структура("Очищать", Истина) ) Цикл
+ Результат.Добавить(Регион.КодСубъектаРФ);
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form
index 5e9591d45..6cd8732af 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form
@@ -1,5 +1,41 @@
+
+ ГруппаПользовательскихНастроек
+ 73
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 74
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ Список14
@@ -534,10 +570,10 @@
СписокСтрокаПоиска
- 73
+ 75СписокСтрокаПоискаРасширеннаяПодсказка
- 75
+ 77Labeltruetrue
@@ -547,7 +583,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 74
+ 76trueСписок
@@ -557,10 +593,10 @@
СписокСостояниеПросмотра
- 76
+ 78СписокСостояниеПросмотраРасширеннаяПодсказка
- 78
+ 80Labeltruetrue
@@ -570,7 +606,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 77
+ 79trueViewStatusAddition
@@ -581,10 +617,10 @@
СписокУправлениеПоиском
- 79
+ 81СписокУправлениеПоискомРасширеннаяПодсказка
- 81
+ 83Labeltruetrue
@@ -594,7 +630,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 80
+ 82trueSearchControlAddition
@@ -781,6 +817,7 @@
true
+ ГруппаПользовательскихНастроек
@@ -806,6 +843,7 @@
RetrySaveValuesYes
+ 13LockOwnerUseUseList
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl
index 7c3704f62..4f99bdfea 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl
@@ -55,6 +55,12 @@
Поля.Регион, Поля.Район, Поля.Город, Поля.НаселенныйПункт, Поля.Улица
);
+ // Если адрес содержит дополнительную территорию которая была получена из ФИАС
+ Если Параметры.Свойство("ДополнительнаяТерритория") И ЗначениеЗаполнено(Параметры.ДополнительнаяТерритория) Тогда
+ Элементы.ДополнительнаяТерритория.Видимость = Истина;
+ ДополнительнаяТерритория = Параметры.ДополнительнаяТерритория;
+ КонецЕсли;
+
// Уточним по коду
КодТекущейСтроки = Неопределено;
Если Уровень = 1 И Параметры.Свойство("РегионКодКлассификатора") Тогда
@@ -401,7 +407,7 @@
СтруктураАдреса.Корпус = Корпус;
СтруктураАдреса.Квартира = Квартира;
- // Проверяем ещё раз и возвращаем структуру ошибок
+ // Проверяем еще раз и возвращаем структуру ошибок
СтруктураПроверки = АдресныйКлассификатор.ПроверитьСоответствиеАдресаКЛАДРу(
"", Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус);
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html
index e97ff8357..5bf55d833 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html
@@ -1,2 +1,28 @@
-
-
В адресном классификаторе хранятся адресные сведения, необходимые для работы в программе. Для всех регионов РФ имеется возможность загрузки адресных сведений с сайта поддержки пользователей системы "1С:Предприятие" фирмы "1С", с диска информационно-технологического сопровождения (1С:ИТС), а также из файлов, распространяемых ГНИВЦ ФНС РФ.
\ No newline at end of file
+
+
В адресном классификаторе хранятся адресные сведения, необходимые для работы в программе.
+
Для обеспечения единства структуры и состава адресной информации ГНИВЦ ФНС РФ выпускает классификатор адресных объектов (КЛАДР). В КЛАДР содержатся почтовые адреса РФ. Использование КЛАДР помогает заполнять адреса правильно и быстро. Без этого невозможна сдача отчетности. Например, при сдаче отчетности по работникам в налоговую инспекцию, в пенсионный фонд необходимо заполнить адреса по стандарту, иначе отчетность не будет принята. Кроме того, адреса могут меняться и не всегда можно уследить за этими изменениями самостоятельно. Программа позволяет управлять адресами и поддерживать их в актуальном состоянии с помощью КЛАДР.
+
Для всех регионов РФ имеется возможность загрузки адресных сведений с сайта поддержки пользователей программы 1С:Предприятие фирмы "1С", с диска информационно-технологического сопровождения (1С:ИТС), а также из файлов, распространяемых ГНИВЦ ФНС РФ.
+
Окно для работы с адресным классификатором открывается по команде Адресный классификатор раздела Администрирование -Поддержка и Обслуживание - Классификаторы или раздела Справочники.
+
Выводится сводная информация об имеющихся в программе адресных сведениях (информационное сообщение Загружено регионов о количестве регионов, по которым загружены адресные сведения), а также доступны основные операции по управлению ими: загрузка, очистка и проверка обновлений через Интернет.
+
Загрузка адресного классификатора
+
Нажмите Загрузить.
+
При загрузке классификатора можно выбрать один, несколько или все регионы России, по которым необходимо загрузить адресные сведения. Это удобно, т.к. можно не загружать адреса тех регионов, которые заведомо не будут использоваться в работе. Включите флажки рядом с наименованиями нужных регионов. Незагруженные регионы неактивны, выделены серым цветом. Для того чтобы выбрать все регионы для загрузки, нажмите , для того чтобы отменить выбор, нажмите кнопку . Для поиска регионов в списке используйте кнопку Найти. В нижней части списка идет подсчет количества выбранных регионов.
+
Гиперссылка в нижней части окна указывает, из какого источника будет происходить загрузка. По умолчанию гиперссылка принимает значение С сайта поддержки пользователей 1С:Предприятия.
+
Для загрузки необходимо заполнить данные для авторизации на сайте поддержки пользователей.
Для изменения источника загрузки классификатора перейдите по гиперссылке. Загрузка также возможна:
+
Из каталога на диске.
+
укажите путь к каталогу;
С диска 1С:ИТС.
+
укажите путь к диску.
После указания всех параметров нажмите Загрузить.
+
Во время загрузки программой выводится сообщение о состоянии загрузки:
+
количество загружаемых регионов;
+
источник загрузки;
+
загружаемый в текущий момент регион.
После успешной загрузки выводится сообщение. Нажмите Закрыть для возврата в программу.
+
При повторной загрузке адресных сведений, ранее загруженных в классификатор, они перезаписываются.
+
В веб-клиенте загрузка адресного классификатора не поддерживается.
Проверка обновления
+
Программа хранит версию последнего загруженного КЛАДР и с помощью команды Проверить обновление позволяет проверить наличие обновления КЛАДР на сайте фирмы "1С". Проверка производится независимо от источника, из которого классификатор был загружен ранее.
+
Если данные устарели, программа предлагает обновить версию адресного классификатора, а также программа указывает, по каким регионам доступно обновление.
+
Для перехода к загрузке классификатора нажмите Обновить. Рядом с регионами, которые нужно обновить, флажки проставляются автоматически.
Очистка адресного классификатора
+
Нажмите Очистить, для того чтобы удалить адресные сведения (например, ошибочно загруженные).
+
Включите флажки рядом с наименованиями нужных регионов. Незагруженные регионы неактивны, выделены серым цветом.
+
Для того чтобы выбрать для очистки все регионы, нажмите , для того чтобы отменить выбор, нажмите .
+
Для поиска регионов в списке используйте кнопку Найти. В нижней части списка идет подсчет количества выбранных регионов.
+
После установки необходимых параметров нажмите Очистить.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/ManagerModule.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/ManagerModule.bsl
new file mode 100644
index 000000000..daff5810f
--- /dev/null
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/ManagerModule.bsl
@@ -0,0 +1,311 @@
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Обновляет данные субъектов РФ в адресных объектах
+//
+// Записи сопоставляются по коду субъекта РФ - региону
+//
+Процедура ОбновитьСоставСубъектовРФПоКлассификатору() Экспорт
+
+ Классификатор = КлассификаторСубъектовРФ();
+
+ // Выбираем только отсутствующие в регистре
+ Запрос = Новый Запрос("
+ |ВЫБРАТЬ
+ | Параметр.КодСубъектаРФ КАК КодСубъектаРФ
+ |ПОМЕСТИТЬ
+ | Классификатор
+ |ИЗ
+ | &Классификатор КАК Параметр
+ |ИНДЕКСИРОВАТЬ ПО
+ | КодСубъектаРФ
+ |;
+ |
+ |ВЫБРАТЬ
+ | Классификатор.КодСубъектаРФ КАК КодСубъектаРФ
+ |ИЗ
+ | Классификатор КАК Классификатор
+ |ЛЕВОЕ СОЕДИНЕНИЕ
+ | РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
+ |ПО
+ | АдресныйКлассификатор.ТипАдресногоЭлемента = 1
+ | И АдресныйКлассификатор.КодАдресногоОбъектаВКоде = Классификатор.КодСубъектаРФ
+ | И АдресныйКлассификатор.КодРайонаВКоде = 0
+ | И АдресныйКлассификатор.КодГородаВКоде = 0
+ | И АдресныйКлассификатор.КодНаселенногоПунктаВКоде = 0
+ | И АдресныйКлассификатор.КодУлицыВКоде = 0
+ |ГДЕ
+ | АдресныйКлассификатор.Код ЕСТЬ NULL
+ |");
+ Запрос.УстановитьПараметр("Классификатор", Классификатор);
+ НовыеСубъектыРФ = Запрос.Выполнить().Выгрузить();
+
+ // Перезаписываем только отсутствующих
+ Набор = РегистрыСведений.АдресныйКлассификатор.СоздатьНаборЗаписей();
+ Отбор = Набор.Отбор;
+
+ Отбор.ТипАдресногоЭлемента.Установить(1);
+ Отбор.КодРайонаВКоде.Установить(0);
+ Отбор.КодГородаВКоде.Установить(0);
+ Отбор.КодНаселенногоПунктаВКоде.Установить(0);
+ Отбор.КодУлицыВКоде.Установить(0);
+
+ Для Каждого СубъектРФ Из НовыеСубъектыРФ Цикл
+
+ ИсходныеДанные = Классификатор.Найти(СубъектРФ.КодСубъектаРФ, "КодСубъектаРФ");
+
+ Отбор.КодАдресногоОбъектаВКоде.Установить(СубъектРФ.КодСубъектаРФ);
+ Набор.Очистить();
+
+ НовыйСубъектРФ = Набор.Добавить();
+ НовыйСубъектРФ.ТипАдресногоЭлемента = 1;
+ НовыйСубъектРФ.КодАдресногоОбъектаВКоде = СубъектРФ.КодСубъектаРФ;
+ НовыйСубъектРФ.Код = СубъектРФ.КодСубъектаРФ * 10000000000000000000;
+
+ НовыйСубъектРФ.Наименование = ИсходныеДанные.Наименование;
+ НовыйСубъектРФ.Сокращение = ИсходныеДанные.Сокращение;
+ НовыйСубъектРФ.Индекс = ИсходныеДанные.ПочтовыйИндекс;
+
+ Набор.Записать();
+ КонецЦикла;
+
+КонецПроцедуры
+
+// Возвращает информацию из классификатора субъектов РФ
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - поставляемые данные. Содержит колонки:
+// * КодСубъектаРФ - Число - код классифкатора субъекта, например 77 для Москвы
+// * Наименование - Строка - наименование субъекта по классификатору. Например "Московская"
+// * Сокращение - Строка - наименование субъекта по классификатору. Например "Обл"
+// * ПочтовыйИндекс - Число - индекс региона. Если 0 - то неопределено
+// * Идентификатор - УникальныйИдентификатор - идентификатор ФИАС
+//
+Функция КлассификаторСубъектовРФ() Экспорт
+ Макет = РегистрыСведений.АдресныйКлассификатор.ПолучитьМакет("СубъектыРФ");
+
+ Чтение = Новый ЧтениеXML;
+ Чтение.УстановитьСтроку(Макет.ПолучитьТекст());
+ Результат = СериализаторXDTO.ПрочитатьXML(Чтение);
+
+ Возврат Результат;
+КонецФункции
+
+// Возвращает информацию о состоянии загруженности регионов
+//
+// Возвращаемое значение:
+// ТаблицаЗначений - описание состояния. Содержит колонки
+// * КодСубъектаРФ - Число - Код региона
+// * Представление - Строка - Наименование и сокращение региона
+// * Загружено - Булево - Истина, если классификатор по данному региону сейчас загружен
+//
+Функция СведенияОЗагрузкеСубъектовРФ() Экспорт
+
+ Классификатор = РегистрыСведений.АдресныйКлассификатор.КлассификаторСубъектовРФ();
+
+ // Выбираем все возможные данные - и из регистра, и из классификатора
+ Запрос = Новый Запрос("
+ |ВЫБРАТЬ
+ | Параметр.Наименование КАК Наименование,
+ | Параметр.Сокращение КАК Сокращение,
+ | Параметр.КодСубъектаРФ КАК КодСубъектаРФ
+ |ПОМЕСТИТЬ
+ | Классификатор
+ |ИЗ
+ | &Классификатор КАК Параметр
+ |;
+ |
+ |ВЫБРАТЬ
+ | ВсеРегионы.Наименование + "" "" + ВсеРегионы.Сокращение КАК Представление,
+ | ВсеРегионы.КодСубъектаРФ КАК КодСубъектаРФ,
+ |
+ | ВЫБОР
+ | КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныйКлассификатор ГДЕ КодАдресногоОбъектаВКоде = ВсеРегионы.КодСубъектаРФ И ТипАдресногоЭлемента = 2) ТОГДА ИСТИНА
+ | КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныйКлассификатор ГДЕ КодАдресногоОбъектаВКоде = ВсеРегионы.КодСубъектаРФ И ТипАдресногоЭлемента = 3) ТОГДА ИСТИНА
+ | КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныйКлассификатор ГДЕ КодАдресногоОбъектаВКоде = ВсеРегионы.КодСубъектаРФ И ТипАдресногоЭлемента = 4) ТОГДА ИСТИНА
+ | КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныйКлассификатор ГДЕ КодАдресногоОбъектаВКоде = ВсеРегионы.КодСубъектаРФ И ТипАдресногоЭлемента = 5) ТОГДА ИСТИНА
+ | КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.АдресныйКлассификатор ГДЕ КодАдресногоОбъектаВКоде = ВсеРегионы.КодСубъектаРФ И ТипАдресногоЭлемента = 6) ТОГДА ИСТИНА
+ | ИНАЧЕ ЛОЖЬ
+ | КОНЕЦ КАК Загружено
+ |ИЗ (
+ |
+ | ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | АдресныйКлассификатор.Наименование КАК Наименование,
+ | АдресныйКлассификатор.Сокращение КАК Сокращение,
+ | АдресныйКлассификатор.КодАдресногоОбъектаВКоде КАК КодСубъектаРФ
+ | ИЗ
+ | РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
+ | ГДЕ
+ | АдресныйКлассификатор.ТипАдресногоЭлемента = 1
+ | И АдресныйКлассификатор.КодРайонаВКоде = 0
+ | И АдресныйКлассификатор.КодГородаВКоде = 0
+ | И АдресныйКлассификатор.КодНаселенногоПунктаВКоде = 0
+ | И АдресныйКлассификатор.КодУлицыВКоде = 0
+ |
+ | ОБЪЕДИНИТЬ ВЫБРАТЬ
+ | Классификатор.Наименование,
+ | Классификатор.Сокращение,
+ | Классификатор.КодСубъектаРФ
+ | ИЗ
+ | Классификатор КАК Классификатор
+ |
+ |) КАК ВсеРегионы
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | ВсеРегионы.КодСубъектаРФ,
+ | ВсеРегионы.Наименование + "" "" + ВсеРегионы.Сокращение
+ |");
+ Запрос.УстановитьПараметр("Классификатор", Классификатор);
+
+ ЗагруженныеСведения = Запрос.Выполнить().Выгрузить();
+ ЗагруженныеСведения.Индексы.Добавить("КодСубъектаРФ");
+ ЗагруженныеСведения.Индексы.Добавить("Загружено");
+
+ Возврат ЗагруженныеСведения;
+КонецФункции
+
+// Определяет наименование с сокращением региона по его коду.
+//
+// Параметры:
+// КодСубъектаРФ - Строка, Число - код региона.
+//
+// Возвращаемое значение:
+// Строка, Неопределено - наименование и сокращение региона. Если регион не найден, то возвращается Неопределено
+//
+Функция НаименованиеРегионаПоКоду(Знач КодСубъектаРФ) Экспорт
+
+ Запрос = Новый Запрос("
+ |ВЫБРАТЬ ПЕРВЫЕ 1
+ | Наименование + "" "" + Сокращение КАК Наименование
+ |ИЗ
+ | РегистрСведений.АдресныйКлассификатор
+ |ГДЕ
+ | ТипАдресногоЭлемента = 1
+ | И КодАдресногоОбъектаВКоде = &КодСубъектаРФ
+ |");
+
+ Если ТипЗнч(КодСубъектаРФ) = Тип("Строка") Тогда
+ ТипЧисло = Новый ОписаниеТипов("Число");
+ КодСубъектаРФ = ТипЧисло.ПривестиЗначение(КодСубъектаРФ);
+ КонецЕсли;
+
+ Запрос.УстановитьПараметр("КодСубъектаРФ", КодСубъектаРФ);
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ Возврат Выборка.Наименование;
+ КонецЕсли;
+
+ // Если не нашли, то подсмотрим еще и в классификаторе - макете
+ Классификатор = РегистрыСведений.АдресныйКлассификатор.КлассификаторСубъектовРФ();
+ Вариант = Классификатор.Найти(КодСубъектаРФ, "КодСубъектаРФ");
+ Если Вариант = Неопределено Тогда
+ // Не нашли
+ Возврат Неопределено;
+ КонецЕсли;
+
+ Возврат Вариант.Наименование + " " + Вариант.Сокращение;
+КонецФункции
+
+// Возвращает код региона по наименованию.
+//
+// Параметры:
+// Название - Строка - наименование или полное наименование (с сокращением) региона.
+//
+// Возвращаемое значение:
+// Число, Неопределено - код региона или Неопределено, если данные не найдены
+//
+Функция КодРегионаПоНаименованию(Знач Название) Экспорт
+
+ Запрос = Новый Запрос("
+ |ВЫБРАТЬ
+ | Варианты.КодСубъектаРФ
+ |ИЗ (
+ | ВЫБРАТЬ ПЕРВЫЕ 1
+ | 1 КАК Порядок,
+ | КодАдресногоОбъектаВКоде КАК КодСубъектаРФ
+ | ИЗ
+ | РегистрСведений.АдресныйКлассификатор
+ | ГДЕ
+ | ТипАдресногоЭлемента = 1
+ | И Наименование = &Название
+ |
+ | ОБЪЕДИНИТЬ ВСЕ
+ |
+ | ВЫБРАТЬ ПЕРВЫЕ 1
+ | 2 КАК Порядок,
+ | КодАдресногоОбъектаВКоде КАК КодСубъектаРФ
+ | ИЗ
+ | РегистрСведений.АдресныйКлассификатор
+ | ГДЕ
+ | ТипАдресногоЭлемента = 1
+ | И Наименование = &Наименование
+ | И Сокращение = &Сокращение
+ |) КАК Варианты
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | Варианты.Порядок
+ |");
+
+ ЧастиСлова = НаименованиеИСокращение(Название);
+ Запрос.УстановитьПараметр("Наименование", ЧастиСлова.Наименование);
+ Запрос.УстановитьПараметр("Сокращение", ЧастиСлова.Сокращение);
+ Запрос.УстановитьПараметр("Название", Название);
+
+ Выборка = Запрос.Выполнить().Выбрать();
+ Если Выборка.Следующий() Тогда
+ Возврат Выборка.КодСубъектаРФ;
+ КонецЕсли;
+
+ // Если не нашли, то подсмотрим еще и в классификаторе - макете
+ Классификатор = РегистрыСведений.АдресныйКлассификатор.КлассификаторСубъектовРФ();
+
+ Фильтр = Новый Структура("Наименование", Название);
+ Варианты = Классификатор.НайтиСтроки(Фильтр);
+ Если Варианты.Количество() = 0 Тогда
+ Фильтр.Вставить("Наименование", ЧастиСлова.Наименование);
+ Фильтр.Вставить("Сокращение", ЧастиСлова.Сокращение);
+ Варианты = Классификатор.НайтиСтроки(Фильтр);
+ КонецЕсли;
+
+ Если Варианты.Количество() > 0 Тогда
+ Возврат Варианты[0].КодСубъектаРФ;
+ КонецЕсли;
+
+ Возврат Неопределено;
+КонецФункции
+
+// Разделяет исходный текст на наименование и сокращение.
+// Сокращением считается последнее слово, отделенное пробельным символом
+//
+// Параметры:
+// Название - Строка - Полное название, например "Москва г"
+//
+// Возвращаемое значение:
+// Структура - содержит поля
+// * Наименование - Строка - Наименование, например "Москва". Если сокращение выделить не удалось, то исходное название
+// * Сокращение - Строка - Сокращение, например "г". Если сокращение выделить не удалось, то пустая строка
+//
+Функция НаименованиеИСокращение(Знач Название)
+ ТекстПоиска = СокрП(Название);
+
+ Позиция = СтрДлина(ТекстПоиска);
+ Пока Позиция > 0 Цикл
+ Если ПустаяСтрока(Сред(ТекстПоиска, Позиция, 1)) Тогда
+ Прервать;
+ КонецЕсли;
+ Позиция = Позиция - 1;
+ КонецЦикла;
+
+ Результат = Новый Структура("Наименование, Сокращение");
+ Если Позиция = 0 Тогда
+ Результат.Наименование = ТекстПоиска;
+ Результат.Сокращение = "";
+ Иначе
+ Результат.Наименование = СокрП(Лев(ТекстПоиска, Позиция));
+ Результат.Сокращение = Сред(ТекстПоиска, Позиция + 1);
+ КонецЕсли;
+
+ Возврат Результат;
+КонецФункции
+
+#КонецОбласти
+
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Templates/КлассификаторАдресныхОбъектовРоссии/Template.txt b/SSL/src/InformationRegisters/АдресныйКлассификатор/Templates/КлассификаторАдресныхОбъектовРоссии/Template.txt
deleted file mode 100644
index cdda26c5b..000000000
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Templates/КлассификаторАдресныхОбъектовРоссии/Template.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Templates/СубъектыРФ/Template.txt b/SSL/src/InformationRegisters/АдресныйКлассификатор/Templates/СубъектыРФ/Template.txt
new file mode 100644
index 000000000..68d100cbf
--- /dev/null
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Templates/СубъектыРФ/Template.txt
@@ -0,0 +1,144 @@
+
+
+
+ КодСубъектаРФ
+
+ xs:decimal
+
+
+
+
+ Наименование
+
+ xs:string
+
+ 120
+ Variable
+
+
+
+
+
+ Сокращение
+
+ xs:string
+
+ 10
+ Variable
+
+
+
+
+
+ ПочтовыйИндекс
+
+ xs:decimal
+
+
+
+
+ Идентификатор
+
+ UUID
+
+
+
+ КодСубъектаРФ
+ Наименование
+ НаименованиеСокращение
+ Идентификатор
+
+ 01АдыгеяРесп385000d8327a56-80de-4df2-815c-4f6ab1224c50
+ 02БашкортостанРесп4500006f2cbfd8-692a-4ee4-9b16-067210bde3fc
+ 03БурятияРесп670000a84ebed3-153d-4ba9-8532-8bdf879e1f5a
+ 04АлтайРесп6490005c48611f-5de6-4771-9695-7e36a4e7529d
+ 05ДагестанРесп3680000bb7fa19-736d-49cf-ad0e-9774c4dae09b
+ 06ИнгушетияРесп386000b2d8cd20-cabc-4deb-afad-f3c4b4d55821
+ 07Кабардино-БалкарскаяРесп0000001781f74e-be4a-4697-9c6b-493057c94818
+ 08КалмыкияРесп000000491cde9d-9d76-4591-ab46-ea93c079e686
+ 09Карачаево-ЧеркесскаяРесп00000061b95807-388a-4cb1-9bee-889f7cf811c8
+ 10КарелияРесп000000248d8071-06e1-425e-a1cf-d1ff4c4a14a8
+ 11КомиРесп000000c20180d9-ad9c-46d1-9eff-d60bc424592a
+ 12Марий ЭлРесп000000de2cbfdf-9662-44a4-a4a4-8ad237ae4a3e
+ 13МордовияРесп00000037a0c60a-9240-48b5-a87f-0d8c86cdb6e1
+ 14Саха /Якутия/Респ000000c225d3db-1db6-4063-ace0-b3fe9ea3805f
+ 15Северная Осетия - АланияРесп000000de459e9c-2933-4923-83d1-9c64cfd7a817
+ 16ТатарстанРесп4200000c089b04-099e-4e0e-955a-6bf1ce525f1a
+ 17ТываРесп660000026bc56f-3731-48e9-8245-655331f596c0
+ 18УдмуртскаяРесп00000052618b9c-bcbb-47e7-8957-95c63f0b17cc
+ 19ХакасияРесп6550008d3f1d35-f0f4-41b5-b5b7-e7cadf3e7bd7
+ 20ЧеченскаяРесп000000de67dc49-b9ba-48a3-a4cc-c2ebfeca6c5e
+ 21Чувашская Республика -Чувашия000000878fc621-3708-46c7-a97f-5a13a4176b3e
+ 22Алтайскийкрай0000008276c6a1-1a86-4f0d-8920-aba34d4cc34a
+ 23Краснодарскийкрай000000d00e1013-16bd-4c09-b3d5-3cb09fc54bd8
+ 24Красноярскийкрай000000db9c4f8b-b706-40e2-b2b4-d31b98dcd3d1
+ 25Приморскийкрай00000043909681-d6e1-432d-b61f-ddac393cb5da
+ 26Ставропольскийкрай000000327a060b-878c-4fb4-8dc4-d5595871a3d8
+ 27Хабаровскийкрай0000007d468b39-1afa-41ec-8c4f-97a8603cb3d4
+ 28Амурскаяобл675000844a80d6-5e31-4017-b422-4d9c01e9942c
+ 29Архангельскаяобл000000294277aa-e25d-428c-95ad-46719c4ddb44
+ 30Астраханскаяобл00000083009239-25cb-4561-af8e-7ee111b1cb73
+ 31Белгородскаяобл000000639efe9d-3fc8-4438-8e70-ec4f2321f2a7
+ 32Брянскаяобл000000f5807226-8be0-4ea8-91fc-39d053aec1e2
+ 33Владимирскаяобл000000b8837188-39ee-4ff9-bc91-fcc9ed451bb3
+ 34Волгоградскаяобл000000da051ec8-da2e-4a66-b542-473b8d221ab4
+ 35Вологодскаяобл000000ed36085a-b2f5-454f-b9a9-1c9a678ee618
+ 36Воронежскаяобл000000b756fe6b-bbd3-44d5-9302-5bfcc740f46e
+ 37Ивановскаяобл0000000824434f-4098-4467-af72-d4f702fed335
+ 38Иркутскаяобл0000006466c988-7ce3-45e5-8b97-90ae16cb1249
+ 39Калининградскаяобл00000090c7181e-724f-41b3-b6c6-bd3ec7ae3f30
+ 40Калужскаяобл00000018133adf-90c2-438e-88c4-62c41656de70
+ 41Камчатскийкрай000000d02f30fc-83bf-4c0f-ac2b-5729a866a207
+ 42Кемеровскаяобл000000393aeccb-89ef-4a7e-ae42-08d5cebc2e30
+ 43Кировскаяобл6100000b940b96-103f-4248-850c-26b6c7296728
+ 44Костромскаяобл00000015784a67-8cea-425b-834a-6afe0e3ed61c
+ 45Курганскаяобл6410004a3d970f-520e-46b9-b16c-50d4ca7535a8
+ 46Курскаяобл000000ee594d5e-30a9-40dc-b9f2-0add1be44ba1
+ 47Ленинградскаяобл0000006d1ebb35-70c6-4129-bd55-da3969658f5d
+ 48Липецкаяобл0000001490490e-49c5-421c-9572-5673ba5d80c8
+ 49Магаданскаяобл0000009c05e812-8679-4710-b8cb-5e8bd43cdf48
+ 50Московскаяобл00000029251dcf-00a1-4e34-98d4-5c47484a36d4
+ 51Мурманскаяобл0000001c727518-c96a-4f34-9ae6-fd510da3be03
+ 52Нижегородскаяобл00000088cd27e2-6a8a-4421-9718-719a28a0a088
+ 53Новгородскаяобл000000e5a84b81-8ea1-49e3-b3c4-0528651be129
+ 54Новосибирскаяобл0000001ac46b49-3209-4814-b7bf-a509ea1aecd9
+ 55Омскаяобл00000005426864-466d-41a3-82c4-11e61cdc98ce
+ 56Оренбургскаяобл4600008bcec9d6-05bc-4e53-b45c-ba0c6f3a5c44
+ 57Орловскаяобл0000005e465691-de23-4c4e-9f46-f35a125b5970
+ 58Пензенскаяобл000000c99e7924-0428-4107-a302-4fd7c0cca3ff
+ 59Пермскийкрай0000004f8b1a21-e4bb-422f-9087-d3cbf4bebc14
+ 60Псковскаяобл000000f6e148a1-c9d0-4141-a608-93e3bd95e6c4
+ 61Ростовскаяобл000000f10763dc-63e3-48db-83e1-9c566fe3092b
+ 62Рязанскаяобл390000963073ee-4dfc-48bd-9a70-d2dfc6bd1f31
+ 63Самарскаяобл000000df3d7359-afa9-4aaa-8ff9-197e73906b1c
+ 64Саратовскаяобл410000df594e0e-a935-4664-9d26-0bae13f904fe
+ 65Сахалинскаяобл693000aea6280f-4648-460f-b8be-c2bc18923191
+ 66Свердловскаяобл62000092b30014-4d52-4e2e-892d-928142b924bf
+ 67Смоленскаяобл000000e8502180-6d08-431b-83ea-c7038f0df905
+ 68Тамбовскаяобл392000a9a71961-9363-44ba-91b5-ddf0463aebc2
+ 69Тверскаяобл00000061723327-1c20-42fe-8dfa-402638d9b396
+ 70Томскаяобл000000889b1f3a-98aa-40fc-9d3d-0f41192758ab
+ 71Тульскаяобл000000d028ec4f-f6da-4843-ada6-b68b3e0efa3d
+ 72Тюменскаяобл00000054049357-326d-4b8f-b224-3c6dc25d6dd3
+ 73Ульяновскаяобл433000fee76045-fe22-43a4-ad58-ad99e903bd58
+ 74Челябинскаяобл45400027eb7c10-a234-44da-a59c-8b1f864966de
+ 75Забайкальскийкрай000000b6ba5716-eb48-401b-8443-b197c9578734
+ 76Ярославскаяобл000000a84b2ef4-db03-474b-b552-6229e801ae9b
+ 77Москваг0000000c5b2444-70a0-4932-980c-b4dc0d3f02b5
+ 78Санкт-Петербургг190000c2deb16a-0330-4f05-821f-1d09c93331e6
+ 79ЕврейскаяАобл0000001b507b09-48c9-434f-bf6f-65066211c73e
+ 80Забайкальский край Агинский Бурятскийокруг00000053ec9705-ec3e-4cbf-921f-229968e10aeb
+ 81Коми-ПермяцкийАО000000e3d95b95-cc2d-440d-95c6-65577fae076e
+ 82КорякскийАО0000001e97910c-34fb-428a-a113-13a0024684ae
+ 83НенецкийАО16600089db3198-6803-4106-9463-cbf781eff0b8
+ 84Таймырский (Долгано-Ненецкий)АО00000029a47e2d-7606-481d-98d5-444e755dec34
+ 85Иркутская обл Усть-Ордынский Бурятскийокруг669000c2f0810a-d71e-4af6-85f1-e0bbd81b3e4d
+ 86Ханты-Мансийский Автономный округ - ЮграАО000000d66e5325-3a25-4d29-ba86-4ca351d9704b
+ 87ЧукотскийАО000000f136159b-404a-4f1f-8d8d-d169e1374d5c
+ 88ЭвенкийскийАО0000002d7468f0-bec1-4571-85f3-bdefd62b3d50
+ 89Ямало-НенецкийАО629000826fa834-3ee8-404f-bdbc-13a5221cfb6e
+ 91КрымРесп000000bd8e6511-e4b9-4841-90de-6bbc231a789e
+ 92Севастопольг0000006fdecb78-893a-4e3f-a5ba-aa062459463b
+ 99Байконург46832063ed1a35-4be6-4564-a1ec-0c51f7383314
+
+
diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo b/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo
index 017aec797..0f0df50ac 100644
--- a/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo
+++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo
@@ -149,7 +149,6 @@
- IndexПризнакАктуальности
@@ -172,7 +171,6 @@
Use
- IndexТипАдресногоЭлемента
@@ -365,6 +363,33 @@
PersonalComputerMobileDevice
+
+ АдресныйКлассификатор
+
+ ru
+ Адресный классификатор
+
+ PersonalComputer
+ MobileDevice
+
+
+ ЗагрузкаАдресногоКлассификатора
+
+ ru
+ Загрузка адресного классификатора
+
+ PersonalComputer
+ MobileDevice
+
+
+ ОчисткаАдресногоКлассификатора
+
+ ru
+ Очистка адресного классификатора
+
+ PersonalComputer
+ MobileDevice
+ ФормаВыбора
@@ -374,53 +399,11 @@
PersonalComputerMobileDevice
-
- ЗагрузкаАдресногоКлассификатора
+
+ СубъектыРФru
- Загрузка адресного классификатора
-
-
-
- ru
-
-
- PersonalComputer
- MobileDevice
-
-
- ОчисткаАдресногоКлассификатора
-
- ru
- Очистка адресного классификатора
-
-
-
- ru
-
-
- PersonalComputer
- MobileDevice
-
-
- АдресныйКлассификатор
-
- ru
- Адресный классификатор
-
-
-
- ru
-
-
- PersonalComputer
- MobileDevice
-
-
- КлассификаторАдресныхОбъектовРоссии
-
- ru
- Классификатор адресных объектов россии
+ Субъекты РФTextDocument
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборРеквизитовОбъекта/Form.form b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборРеквизитовОбъекта/Form.form
new file mode 100644
index 000000000..91a3310ab
--- /dev/null
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборРеквизитовОбъекта/Form.form
@@ -0,0 +1,514 @@
+
+
+
+ РеквизитыОбъекта
+ 13
+ true
+ true
+
+ true
+
+
+ РеквизитыОбъекта
+
+ None
+ Add
+ Change
+ Copy
+ CopyToClipboard
+ Delete
+ EndEdit
+ HierarchicalList
+ List
+ MoveDown
+ MoveUp
+ OutputList
+ SortListAsc
+ SortListDesc
+ Tree
+
+ РеквизитыОбъектаГруппа1
+ 23
+
+ РеквизитыОбъектаПометка
+ 20
+ true
+ true
+
+ true
+
+
+ РеквизитыОбъекта.Пометка
+
+
+ OnChange
+ РеквизитыОбъектаПометкаПриИзменении
+
+
+ РеквизитыОбъектаПометкаРасширеннаяПодсказка
+ 22
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РеквизитыОбъектаПометкаКонтекстноеМеню
+ 21
+ true
+
+ CheckBoxField
+ Auto
+ true
+ Left
+ true
+
+
+
+ РеквизитыОбъектаСиноним
+ 25
+ true
+ true
+
+ true
+
+
+ РеквизитыОбъекта.Синоним
+
+
+ РеквизитыОбъектаСинонимРасширеннаяПодсказка
+ 27
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РеквизитыОбъектаСинонимКонтекстноеМеню
+ 26
+ true
+
+ InputField
+ true
+ Auto
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ РеквизитыОбъектаГруппа1РасширеннаяПодсказка
+ 24
+ Label
+ true
+ true
+
+ Left
+
+
+ ColumnGroup
+
+ InCell
+ true
+
+
+
+ РеквизитыОбъектаКоманднаяПанель
+ 15
+
+ РеквизитыОбъектаВыбрать
+ 32
+ true
+ true
+
+ true
+
+
+ РеквизитыОбъектаВыбратьРасширеннаяПодсказка
+ 33
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Выбрать
+ PictureAndText
+ true
+ true
+ true
+ UserCmds
+
+ StdPicture.ChooseValue
+
+ Auto
+
+
+ ФормаУстановитьФлажки
+ 28
+ true
+ true
+
+ true
+
+
+ ФормаУстановитьФлажкиРасширеннаяПодсказка
+ 29
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.УстановитьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаСнятьФлажки
+ 30
+ true
+ true
+
+ true
+
+
+ ФормаСнятьФлажкиРасширеннаяПодсказка
+ 31
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СнятьФлажки
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ Left
+
+
+ РеквизитыОбъектаСтрокаПоиска
+ 34
+
+ РеквизитыОбъектаСтрокаПоискаРасширеннаяПодсказка
+ 36
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РеквизитыОбъектаСтрокаПоискаКонтекстноеМеню
+ 35
+ true
+
+ РеквизитыОбъекта
+
+ true
+
+
+
+ РеквизитыОбъектаСостояниеПросмотра
+ 37
+
+ РеквизитыОбъектаСостояниеПросмотраРасширеннаяПодсказка
+ 39
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РеквизитыОбъектаСостояниеПросмотраКонтекстноеМеню
+ 38
+ true
+
+ ViewStatusAddition
+ РеквизитыОбъекта
+
+ true
+
+
+
+ РеквизитыОбъектаУправлениеПоиском
+ 40
+
+ РеквизитыОбъектаУправлениеПоискомРасширеннаяПодсказка
+ 42
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РеквизитыОбъектаУправлениеПоискомКонтекстноеМеню
+ 41
+ true
+
+ SearchControlAddition
+ РеквизитыОбъекта
+
+ true
+
+
+
+ РеквизитыОбъектаРасширеннаяПодсказка
+ 16
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РеквизитыОбъектаКонтекстноеМеню
+ 14
+ true
+
+ Tree
+ true
+ true
+ true
+ true
+ MultiRow
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ true
+ Auto
+ Auto
+ true
+ true
+ true
+ true
+ None
+ None
+ None
+ true
+
+
+ ФормаКоманднаяПанель
+ -1
+ Left
+ true
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ Abort
+ Cancel
+ Close
+ CustomizeForm
+ Help
+ Ignore
+ No
+ OK
+ RestoreValues
+ Retry
+ SaveValues
+ Yes
+ 15
+ LockOwner
+ true
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ auto
+ true
+
+ РеквизитыОбъекта
+
+ ru
+ Реквизиты объекта
+
+ 2
+
+ ValueTree
+
+
+ true
+
+
+ true
+
+
+ Имя
+
+ ru
+ Имя
+
+ 1
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Пометка
+
+ ru
+ Пометка
+
+ 2
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ Синоним
+
+ ru
+ Синоним
+
+ 3
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+
+ УстановитьФлажки
+
+ ru
+ Установить флажки
+
+ 2
+
+ ru
+ Установить флажки
+
+
+ true
+
+
+ StdPicture.CheckAll
+
+
+
+ УстановитьФлажки
+
+
+ Auto
+ Auto
+
+
+ СнятьФлажки
+
+ ru
+ Снять флажки
+
+ 3
+
+ ru
+ Снять флажки
+
+
+ true
+
+
+ StdPicture.UncheckAll
+
+
+
+ СнятьФлажки
+
+
+ Auto
+ Auto
+
+
+ Выбрать
+
+ ru
+ Выбрать
+
+ 4
+
+ ru
+ Выбрать
+
+
+ true
+
+
+
+ Выбрать
+
+
+ Auto
+ Auto
+
+
+ Ссылка
+
+ AnyRef
+
+
+
+
+
+
+
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборРеквизитовОбъекта/Module.bsl b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборРеквизитовОбъекта/Module.bsl
new file mode 100644
index 000000000..9eb2117e2
--- /dev/null
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборРеквизитовОбъекта/Module.bsl
@@ -0,0 +1,117 @@
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ Возврат;
+ КонецЕсли;
+
+ КоллекцияРеквизитовОбъекта = РеквизитыОбъекта.ПолучитьЭлементы();
+
+ ОбъектМетаданных = Параметры.Ссылка.Метаданные();
+ Для Каждого ОписаниеРеквизита Из ОбъектМетаданных.Реквизиты Цикл
+ Реквизит = КоллекцияРеквизитовОбъекта.Добавить();
+ ЗаполнитьЗначенияСвойств(Реквизит, ОписаниеРеквизита);
+ Реквизит.Пометка = Параметры.Отбор.Найти(ОписаниеРеквизита.Имя) <> Неопределено;
+ Если ПустаяСтрока(Реквизит.Синоним) Тогда
+ Реквизит.Синоним = Реквизит.Имя;
+ КонецЕсли;
+ КонецЦикла;
+
+ Для Каждого ОписаниеТабличнойЧасти Из ОбъектМетаданных.ТабличныеЧасти Цикл
+ ТабличнаяЧасть = КоллекцияРеквизитовОбъекта.Добавить();
+ ЗаполнитьЗначенияСвойств(ТабличнаяЧасть, ОписаниеТабличнойЧасти);
+ Для Каждого ОписаниеРеквизита Из ОписаниеТабличнойЧасти.Реквизиты Цикл
+ Реквизит = ТабличнаяЧасть.ПолучитьЭлементы().Добавить();
+ ЗаполнитьЗначенияСвойств(Реквизит, ОписаниеРеквизита);
+ КонецЦикла;
+ КонецЦикла;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьФлажки(Команда)
+ УстановитьСнятьФлажки(Истина);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СнятьФлажки(Команда)
+ УстановитьСнятьФлажки(Ложь);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура РеквизитыОбъектаПометкаПриИзменении(Элемент)
+ Пометка = Элементы.РеквизитыОбъекта.ТекущиеДанные.Пометка;
+ Для Каждого ВыделеннаяСтрока Из Элементы.РеквизитыОбъекта.ВыделенныеСтроки Цикл
+ Реквизит = Элементы.РеквизитыОбъекта.ДанныеСтроки(ВыделеннаяСтрока);
+ Реквизит.Пометка = Пометка;
+ Для Каждого ПодчиненныйРеквизит Из Реквизит.ПолучитьЭлементы() Цикл
+ ПодчиненныйРеквизит.Пометка = Пометка;
+ КонецЦикла;
+ КонецЦикла;
+КонецПроцедуры
+
+&НаКлиенте
+Процедура УстановитьСнятьФлажки(Пометка)
+ Для Каждого Реквизит Из РеквизитыОбъекта.ПолучитьЭлементы() Цикл
+ Реквизит.Пометка = Пометка;
+ Для Каждого ПодчиненныйРеквизит Из Реквизит.ПолучитьЭлементы() Цикл
+ ПодчиненныйРеквизит.Пометка = Пометка;
+ КонецЦикла;
+ КонецЦикла;
+КонецПроцедуры
+
+
+&НаКлиенте
+Процедура Выбрать(Команда)
+ Результат = Новый Структура;
+ Результат.Вставить("ВыбранныеРеквизиты", ВыбранныеРеквизиты(РеквизитыОбъекта.ПолучитьЭлементы()));
+ Результат.Вставить("ПредставлениеВыбранных", ПредставлениеВыбранныхРеквизитов());
+
+ Закрыть(Результат);
+КонецПроцедуры
+
+&НаКлиенте
+Функция ВыбранныеРеквизиты(КоллекцияРеквизитов)
+ Результат = Новый Массив;
+
+ Для Каждого Реквизит Из КоллекцияРеквизитов Цикл
+ ПодчиненныеРеквизиты = Реквизит.ПолучитьЭлементы();
+ Если ПодчиненныеРеквизиты.Количество() > 0 Тогда
+ СписокВыбранных = ВыбранныеРеквизиты(ПодчиненныеРеквизиты);
+ Для Каждого ПодчиненныйРеквизит Из СписокВыбранных Цикл
+ Результат.Добавить(Реквизит.Имя + "." + ПодчиненныйРеквизит);
+ КонецЦикла;
+ ИначеЕсли Реквизит.Пометка Тогда
+ Результат.Добавить(Реквизит.Имя);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+
+&НаКлиенте
+Функция ПредставлениеВыбранныхРеквизитов()
+ Возврат СтроковыеФункцииКлиентСервер.СтрокаИзМассиваПодстрок(СинонимыВыбранныхРеквизитов(РеквизитыОбъекта.ПолучитьЭлементы()), ", ");
+КонецФункции
+
+&НаКлиенте
+Функция СинонимыВыбранныхРеквизитов(КоллекцияРеквизитов)
+ Результат = Новый Массив;
+
+ Для Каждого Реквизит Из КоллекцияРеквизитов Цикл
+ ПодчиненныеРеквизиты = Реквизит.ПолучитьЭлементы();
+ Если ПодчиненныеРеквизиты.Количество() > 0 Тогда
+ СписокВыбранных = ВыбранныеРеквизиты(ПодчиненныеРеквизиты);
+ Для Каждого ПодчиненныйРеквизит Из СписокВыбранных Цикл
+ Результат.Добавить(Реквизит.Синоним + "." + ПодчиненныйРеквизит);
+ КонецЦикла;
+ ИначеЕсли Реквизит.Пометка Тогда
+ Результат.Добавить(Реквизит.Синоним);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+
+
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Form.form b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Form.form
index 7636605aa..609696284 100644
--- a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Form.form
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Form.form
@@ -4,6 +4,230 @@
ruИстория изменений
+
+ Реквизиты
+ 57
+
+ ru
+ Изменения в реквизитах
+
+ true
+ true
+
+ true
+
+
+ Реквизиты
+
+
+ ru
+ Показывать версии, в которых есть изменения выбранных реквизитов.
+
+
+ РеквизитыРасширеннаяПодсказка
+ 59
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РеквизитыКонтекстноеМеню
+ 58
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ РеквизитыНачалоВыбора
+
+
+ Clearing
+ РеквизитыОчистка
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ КоманднаяПанель
+ 63
+
+ ОткрытьВерсиюОбъекта
+ 19
+ true
+ true
+
+ true
+
+ false
+
+ ОткрытьВерсиюОбъектаExtendedTooltip
+ 39
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОткрытьВерсиюОбъекта
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ОтчетПоИзменениям
+ 9
+ true
+ true
+
+ true
+
+ false
+
+ ОтчетПоИзменениямExtendedTooltip
+ 40
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СформироватьОтчетПоИзменениям
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ПерейтиНаВерсию
+ 34
+ true
+ true
+
+ true
+
+
+ ПерейтиНаВерсиюExtendedTooltip
+ 41
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПерейтиНаВерсию
+ Normal
+ PictureAndText
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Найти
+ 29
+ true
+ true
+
+ true
+
+ false
+
+ НайтиExtendedTooltip
+ 42
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СписокВерсий.StandardCommand.Find
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ОтменитьПоиск
+ 30
+ true
+ true
+
+ true
+
+ false
+
+ ОтменитьПоискExtendedTooltip
+ 43
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Item.СписокВерсий.StandardCommand.CancelSearch
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 64
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ ОсновнаяСтраница21
@@ -171,6 +395,10 @@
СписокВерсий.Комментарий
+
+ OnChange
+ СписокВерсийКомментарийПриИзменении
+ СписокВерсийКомментарийExtendedTooltip53
@@ -187,7 +415,6 @@
trueInputField
- AutotrueLefttrue
@@ -215,12 +442,16 @@
OnActivateRowСписокВерсийПриАктивизацииСтроки
+
+ BeforeRowChange
+ СписокВерсийПередНачаломИзменения
+ СписокВерсийСтрокаПоиска
- 57
+ 66СписокВерсийСтрокаПоискаРасширеннаяПодсказка
- 59
+ 68Labeltruetrue
@@ -230,7 +461,7 @@
СписокВерсийСтрокаПоискаКонтекстноеМеню
- 58
+ 67trueСписокВерсий
@@ -240,10 +471,10 @@
СписокВерсийСостояниеПросмотра
- 60
+ 69СписокВерсийСостояниеПросмотраРасширеннаяПодсказка
- 62
+ 71Labeltruetrue
@@ -253,7 +484,7 @@
СписокВерсийСостояниеПросмотраКонтекстноеМеню
- 61
+ 70trueViewStatusAddition
@@ -264,10 +495,10 @@
СписокВерсийУправлениеПоиском
- 63
+ 72СписокВерсийУправлениеПоискомРасширеннаяПодсказка
- 65
+ 74Labeltruetrue
@@ -277,7 +508,7 @@
СписокВерсийУправлениеПоискомКонтекстноеМеню
- 64
+ 73trueSearchControlAddition
@@ -380,7 +611,6 @@
Auto
- true50truetrue
@@ -394,7 +624,7 @@
truetruefalse
- true
+ falseAutoAutotrue
@@ -542,145 +772,49 @@
Auto
+
+ ТехническиеСведенияОбИзмененииОбъекта
+ 60
+
+ ru
+ Технические сведения об изменении объекта
+
+ true
+ true
+
+ true
+
+
+ ТехническиеСведенияОбИзмененииОбъектаРасширеннаяПодсказка
+ 62
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТехническиеСведенияОбИзмененииОбъектаКонтекстноеМеню
+ 61
+ true
+
+ Label
+ true
+ true
+
+
+ Click
+ ЖурналРегистрацииНажатие
+
+ true
+ Left
+
+ ФормаКоманднаяПанель-1
-
- ОткрытьВерсиюОбъекта
- 19
- true
- true
-
- true
-
- false
-
- ОткрытьВерсиюОбъектаExtendedTooltip
- 39
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОткрытьВерсиюОбъекта
- Auto
- true
- true
- true
- UserCmds
- Auto
-
-
- ОтчетПоИзменениям
- 9
- true
- true
-
- true
-
- false
-
- ОтчетПоИзменениямExtendedTooltip
- 40
- Label
- true
- true
-
- Left
-
-
- Form.Command.СформироватьОтчетПоИзменениям
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ПерейтиНаВерсию
- 34
- true
- true
-
- true
-
-
- ПерейтиНаВерсиюExtendedTooltip
- 41
- Label
- true
- true
-
- Left
-
-
- Form.Command.ПерейтиНаВерсию
- Normal
- PictureAndText
- true
- true
- UserCmds
- Auto
-
-
- Найти
- 29
- true
- true
-
- true
-
- false
-
- НайтиExtendedTooltip
- 42
- Label
- true
- true
-
- Left
-
-
- Form.Item.СписокВерсий.StandardCommand.Find
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ОтменитьПоиск
- 30
- true
- true
-
- true
-
- false
-
- ОтменитьПоискExtendedTooltip
- 43
- Label
- true
- true
-
- Left
-
-
- Form.Item.СписокВерсий.StandardCommand.CancelSearch
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Left
- trueOnOpen
@@ -743,9 +877,7 @@
true
-
- true
-
+ АвторВерсии
@@ -755,15 +887,14 @@
1
- String
-
+ CatalogRef.ВнешниеПользователи
+ CatalogRef.Пользователи
+ ExchangePlanReftrue
-
- true
-
+ ДатаВерсии
@@ -773,15 +904,13 @@
3
- String
-
+ Date
+ true
-
- true
-
+ Комментарий
@@ -810,6 +939,7 @@
2
+ BusinessProcessRefDocumentRefCatalogRef
@@ -838,6 +968,44 @@
true
+
+ Реквизиты
+
+ ru
+ Реквизиты
+
+ 4
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ Отбор
+
+ ru
+ Отбор
+
+ 5
+
+ ValueList
+
+
+ true
+
+
+ true
+
+
+
+
+ СформироватьОтчетПоИзменениям
@@ -907,6 +1075,7 @@
Ссылка
+ BusinessProcessRefDocumentRefCatalogRef
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Help/ru.html b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Help/ru.html
new file mode 100644
index 000000000..7d7025a59
--- /dev/null
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Help/ru.html
@@ -0,0 +1,18 @@
+
+
Предназначен для просмотра истории изменений объекта и выбора хранимых версий. История версий позволяет быстро ответить на вопросы: "Кто изменил объект?", "Когда произошли изменения?" и "Что было изменено в объекте?".
+
С помощью списка можно вести историю изменений документов и списков, просматривать любую версию объекта или сравнивать любые версии объекта между собой.
+
Для работы с историей изменений объектов необходимо выполнить предварительную настройку их версионирования. Настройку и просмотр истории версий выполняет администратор программы.
+
Для того чтобы посмотреть историю версий того или иного списка или документа, можно воспользоваться командой История изменений в его панели навигации. Команда доступна только администратору программы и только для тех объектов, у которых настроено версионирование.
+
В списке выводится:
+
№ - порядковый номер версии, версии перечисляются по убыванию номеров, самая первая версия находится внизу списка;
+
Автор изменений - пользователь, который редактировал объект;
+
Дата - дата и время редактирования;
+
Комментарий - напишите подробную информацию по поводу этой версии. Программа автоматически заполняет это поле, например, при переходе на другую версию указывается, на какую версию и когда был выполнен переход.
Отбор версий
+
+
С помощью отбора Изменения в реквизитах можно отражать изменения определенных реквизитов. Для этого с помощью кнопки Выбрать откройте список реквизитов, выберите с помощью флажков реквизиты, изменения по которым необходимо отражать в списке версий.
Просмотр событий изменения объекта
+
+
По ссылке Технические сведения об изменении объекта сразу после внесения и записи изменений можно просмотреть журнал регистрации, отфильтрованный по событиям, связанным с этим объектом.
Просмотр версии
+
Нажав на кнопку Открыть версию, можно просмотреть отчет о состоянии объекта на интересующий момент времени.
Сравнение версий
+
Для того чтобы просмотреть отчет по изменению состояния объекта, выделите две или более версии в списке версий, нажмите Сравнить версии.
Возвращение к предыдущей версии
+
Для того чтобы вернуться к одной из предыдущих версий объекта, выделите нужную строку с версией объекта, нажмите Перейти на версию. Изменения, внесенные после сохранения этой версии, будут отменены.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Module.bsl b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Module.bsl
index f326611ad..baa9d11ac 100644
--- a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Module.bsl
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ВыборХранимыхВерсий/Module.bsl
@@ -1,4 +1,5 @@
+
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -17,12 +18,13 @@
Строка(Ссылка));
КонецЕсли;
- ЗначениеВРеквизитФормы(СформироватьТаблицуВерсий(Ссылка), "СписокВерсий");
+ ОбновитьСписокВерсий();
ПереходНаВерсиюРазрешен = Пользователи.ЭтоПолноправныйПользователь();
Элементы.ПерейтиНаВерсию.Видимость = ПереходНаВерсиюРазрешен;
Элементы.СписокВерсийПерейтиНаВерсию.Видимость = ПереходНаВерсиюРазрешен;
+ Реквизиты = НСтр("ru = 'Все'")
КонецПроцедуры
&НаКлиенте
@@ -37,16 +39,29 @@
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
-Процедура СписокВерсийПриАктивизацииСтроки(Элемент)
-
- УстановитьДоступность();
-
+Процедура РеквизитыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+ ОписаниеОповещения = Новый ОписаниеОповещения("ПриВыбореРеквизитов", ЭтотОбъект);
+ ОткрытьФорму("РегистрСведений.ВерсииОбъектов.Форма.ВыборРеквизитовОбъекта", Новый Структура(
+ "Ссылка,Отбор", Ссылка, Отбор.ВыгрузитьЗначения()), , , , , ОписаниеОповещения);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЖурналРегистрацииНажатие(Элемент)
+ ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокВерсий
+&НаКлиенте
+Процедура СписокВерсийПриАктивизацииСтроки(Элемент)
+
+ УстановитьДоступность();
+
+КонецПроцедуры
+
&НаКлиенте
Процедура СписокВерсийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
@@ -91,25 +106,39 @@
#Область СлужебныеПроцедурыИФункции
-&НаСервереБезКонтекста
-Функция СформироватьТаблицуВерсий(Ссылка)
-
- Запрос = Новый Запрос;
- Запрос.Текст = "ВЫБРАТЬ
- | НомерВерсии КАК НомерВерсии,
- | АвторВерсии КАК АвторВерсии,
- | ДатаВерсии КАК ДатаВерсии,
- | Комментарий КАК Комментарий
- | ИЗ
- | РегистрСведений.ВерсииОбъектов
- |ГДЕ
- | Объект=&Ссылка
- |УПОРЯДОЧИТЬ ПО НомерВерсии Убыв";
- Запрос.УстановитьПараметр("Ссылка", Ссылка);
+&НаСервере
+Функция СформироватьТаблицуВерсий()
Если ВерсионированиеОбъектов.ЕстьПравоНаЧтениеВерсийОбъектов() Тогда
УстановитьПривилегированныйРежим(Истина);
КонецЕсли;
+
+ НомераВерсий = Новый Массив;
+ Если Отбор.Количество() > 0 Тогда
+ НомераВерсий = НомераВерсийСИзменениямиВВыбранныхРеквизитах();
+ КонецЕсли;
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | ВерсииОбъектов.НомерВерсии КАК НомерВерсии,
+ | ВерсииОбъектов.АвторВерсии КАК АвторВерсии,
+ | ВерсииОбъектов.ДатаВерсии КАК ДатаВерсии,
+ | ВерсииОбъектов.Комментарий КАК Комментарий
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.Объект = &Ссылка
+ | И (&БезОтбора
+ | ИЛИ ВерсииОбъектов.НомерВерсии В (&НомераВерсий))
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | НомерВерсии УБЫВ";
+
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("БезОтбора", Отбор.Количество() = 0);
+ Запрос.УстановитьПараметр("НомераВерсий", НомераВерсий);
+ Запрос.УстановитьПараметр("Ссылка", Ссылка);
+
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
@@ -203,7 +232,7 @@
КонецЕсли;
- ЗначениеВРеквизитФормы(СформироватьТаблицуВерсий(Ссылка), "СписокВерсий");
+ ОбновитьСписокВерсий();
Возврат "ВосстановлениеВыполнено";
@@ -255,4 +284,170 @@
Элементы.СписокВерсийПерейтиНаВерсию.Доступность = Элементы.ПерейтиНаВерсию.Доступность;
КонецПроцедуры
+&НаКлиенте
+Процедура ПриВыбореРеквизитов(РезультатВыбора, ДополнительныеПараметры) Экспорт
+ Если РезультатВыбора = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Реквизиты = РезультатВыбора.ПредставлениеВыбранных;
+ Отбор.ЗагрузитьЗначения(РезультатВыбора.ВыбранныеРеквизиты);
+ ОбновитьСписокВерсий();
+КонецПроцедуры
+
+&НаСервере
+Процедура ОбновитьСписокВерсий()
+ ЗначениеВРеквизитФормы(СформироватьТаблицуВерсий(), "СписокВерсий");
+КонецПроцедуры
+
+&НаКлиенте
+Процедура РеквизитыОчистка(Элемент, СтандартнаяОбработка)
+ СтандартнаяОбработка = Ложь;
+ Реквизиты = НСтр("ru = 'Все'");
+ Отбор.Очистить();
+ ОбновитьСписокВерсий();
+КонецПроцедуры
+
+&НаСервере
+Функция НомераВерсийСИзменениямиВВыбранныхРеквизитах()
+
+ ТекстЗапроса =
+ "ВЫБРАТЬ
+ | ВерсииОбъектов.НомерВерсии КАК НомерВерсии,
+ | ВерсииОбъектов.ВерсияОбъекта КАК Данные
+ |ИЗ
+ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
+ |ГДЕ
+ | ВерсииОбъектов.ТипВерсииОбъекта = ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.ИзмененоПользователем)
+ | И ВерсииОбъектов.Объект = &Ссылка
+ | И ВерсииОбъектов.ЕстьДанныеВерсии
+ |
+ |УПОРЯДОЧИТЬ ПО
+ | НомерВерсии";
+
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("Ссылка", Ссылка);
+ ХранимыеВерсии = Запрос.Выполнить().Выгрузить();
+
+ ТекущаяВерсия = ХранимыеВерсии.Добавить();
+ ТекущаяВерсия.Данные = Новый ХранилищеЗначения(ВерсионированиеОбъектов.СериализоватьОбъект(Ссылка.ПолучитьОбъект()), Новый СжатиеДанных(9));
+ ТекущаяВерсия.НомерВерсии = ВерсионированиеОбъектов.НомерПоследнейВерсии(Ссылка);
+
+ ПредыдущаяВерсия = ВерсионированиеОбъектов.РазборПредставленияОбъектаXML(ХранимыеВерсии[0].Данные.Получить(), Ссылка);
+
+ Результат = Новый Массив;
+ Результат.Добавить(ХранимыеВерсии[0].НомерВерсии);
+
+ Для НомерВерсии = 1 По ХранимыеВерсии.Количество() - 1 Цикл
+ Версия = ХранимыеВерсии[НомерВерсии];
+ ТекущаяВерсия = ВерсионированиеОбъектов.РазборПредставленияОбъектаXML(Версия.Данные.Получить(), Ссылка);
+ Если ЕстьИзменениеРеквизитов(ТекущаяВерсия, ПредыдущаяВерсия, Отбор.ВыгрузитьЗначения()) Тогда
+ Результат.Добавить(Версия.НомерВерсии);
+ КонецЕсли;
+ ПредыдущаяВерсия = ТекущаяВерсия;
+ КонецЦикла;
+
+ Возврат Результат;
+КонецФункции
+
+&НаСервере
+Функция ЕстьИзменениеРеквизитов(ТекущаяВерсия, ПредыдущаяВерсия, СписокРеквизитов)
+ Для Каждого Реквизит Из СписокРеквизитов Цикл
+ ИмяТабличнойЧасти = Неопределено;
+ ИмяРеквизита = Реквизит;
+ Если Найти(ИмяРеквизита, ".") > 0 Тогда
+ ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяРеквизита, ".", Истина);
+ Если ЧастиИмени.Количество() > 1 Тогда
+ ИмяТабличнойЧасти = ЧастиИмени[0];
+ ИмяРеквизита = ЧастиИмени[1];
+ КонецЕсли;
+ КонецЕсли;
+
+ // проверка изменения реквизита табличной части
+ Если ИмяТабличнойЧасти <> Неопределено Тогда
+ ТекущаяТабличнаяЧасть = ТекущаяВерсия.ТабличныеЧасти[ИмяТабличнойЧасти];
+ ПредыдущаяТабличнаяЧасть = ПредыдущаяВерсия.ТабличныеЧасти[ИмяТабличнойЧасти];
+
+ // табличная часть отсутствует
+ Если ТекущаяТабличнаяЧасть = Неопределено Или ПредыдущаяТабличнаяЧасть = Неопределено Тогда
+ Возврат Не ТекущаяТабличнаяЧасть = Неопределено И ПредыдущаяТабличнаяЧасть = Неопределено;
+ КонецЕсли;
+
+ // если изменилось количество строк ТЧ
+ Если ТекущаяТабличнаяЧасть.Количество() <> ПредыдущаяТабличнаяЧасть.Количество() Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ // реквизит отсутствует
+ ТекущийРеквизитСуществует = ТекущаяТабличнаяЧасть.Колонки.Найти(ИмяРеквизита) <> Неопределено;
+ ПредыдущийРеквизитСуществует = ПредыдущаяТабличнаяЧасть.Колонки.Найти(ИмяРеквизита) <> Неопределено;
+ Если ТекущийРеквизитСуществует <> ПредыдущийРеквизитСуществует Тогда
+ Возврат Истина;
+ КонецЕсли;
+ Если Не ТекущийРеквизитСуществует Тогда
+ Возврат Ложь;
+ КонецЕсли;
+
+ // сравнение по строкам
+ Для НомерСтроки = 0 По ТекущаяТабличнаяЧасть.Количество() - 1 Цикл
+ Если ТекущаяТабличнаяЧасть[НомерСтроки][ИмяРеквизита] <> ПредыдущаяТабличнаяЧасть[НомерСтроки][ИмяРеквизита] Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Ложь;
+ КонецЕсли;
+
+ // проверка реквизита шапки
+
+ ТекущийРеквизит = ТекущаяВерсия.Реквизиты.Найти(ИмяРеквизита, "НаименованиеРеквизита");
+ ТекущийРеквизитСуществует = ТекущийРеквизит <> Неопределено;
+ ЗначениеТекущегоРеквизита = Неопределено;
+ Если ТекущийРеквизитСуществует Тогда
+ ЗначениеТекущегоРеквизита = ТекущийРеквизит.ЗначениеРеквизита;
+ КонецЕсли;
+
+ ПредыдущийРеквизит = ПредыдущаяВерсия.Реквизиты.Найти(ИмяРеквизита, "НаименованиеРеквизита");
+ ПредыдущийРеквизитСуществует = ПредыдущийРеквизит <> Неопределено;
+ ЗначениеПредыдущегоРеквизита = Неопределено;
+ Если ПредыдущийРеквизитСуществует Тогда
+ ЗначениеПредыдущегоРеквизита = ПредыдущийРеквизит.ЗначениеРеквизита;
+ КонецЕсли;
+
+ Если ТекущийРеквизитСуществует <> ПредыдущийРеквизитСуществует
+ Или ЗначениеТекущегоРеквизита <> ЗначениеПредыдущегоРеквизита Тогда
+ Возврат Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Ложь;
+КонецФункции
+
+&НаКлиенте
+Процедура СписокВерсийКомментарийПриИзменении(Элемент)
+ ТекущиеДанные = Элементы.СписокВерсий.ТекущиеДанные;
+ Если ТекущиеДанные <> Неопределено Тогда
+ ДобавитьКомментарийКВерсии(Ссылка, ТекущиеДанные.НомерВерсии, ТекущиеДанные.Комментарий);
+ КонецЕсли;
+КонецПроцедуры
+
+&НаСервереБезКонтекста
+Процедура ДобавитьКомментарийКВерсии(СсылкаНаОбъект, НомерВерсии, Комментарий);
+ ВерсионированиеОбъектов.ДобавитьКомментарийКВерсии(СсылкаНаОбъект, НомерВерсии, Комментарий);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура СписокВерсийПередНачаломИзменения(Элемент, Отказ)
+ Если Не РедактированиеКомментарияРазрешено(Элемент.ТекущиеДанные.АвторВерсии) Тогда
+ Отказ = Истина;
+ КонецЕсли;
+КонецПроцедуры
+////
+
+&НаСервере
+Функция РедактированиеКомментарияРазрешено(АвторВерсии)
+ Возврат Пользователи.ЭтоПолноправныйПользователь()
+ Или АвторВерсии = Пользователи.ТекущийПользователь();
+КонецФункции
+
#КонецОбласти
diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ДополнительноеОписание/Form.form b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/КомментарийКВерсии/Form.form
similarity index 58%
rename from SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ДополнительноеОписание/Form.form
rename to SSL/src/InformationRegisters/ВерсииОбъектов/Forms/КомментарийКВерсии/Form.form
index e9001d053..2b6403ba7 100644
--- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/Forms/ДополнительноеОписание/Form.form
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/КомментарийКВерсии/Form.form
@@ -1,20 +1,19 @@
- ПолеHTMLДокумента
- 1
+ Комментарий
+ 3truetruetrue
- ПолеHTMLДокумента
+ Комментарий
- trueNone
- ПолеHTMLДокументаExtendedTooltip
+ КомментарийРасширеннаяПодсказка5Labeltrue
@@ -24,22 +23,24 @@
- ПолеHTMLДокументаКонтекстноеМеню
- 2
+ КомментарийКонтекстноеМеню
+ 4true
- HTMLDocumentField
+ InputFieldEntertrueLefttrue
-
- 70
+ true
- 20true
- true
- true
+ true
+ true
+ true
+ true
+ true
+ NormalBottom
@@ -48,16 +49,16 @@
ФормаКоманднаяПанель-1
- ФормаЗакрыть
- 3
+ ФормаОК
+ 6truetruetrue
- ФормаЗакрытьExtendedTooltip
- 4
+ ФормаОКРасширеннаяПодсказка
+ 7Labeltruetrue
@@ -65,8 +66,8 @@
Left
- Form.StandardCommand.Close
- PictureAndText
+ Form.Command.ОК
+ Autotruetruetrue
@@ -74,6 +75,7 @@
AutoRight
+ trueOnCreateAtServer
@@ -81,6 +83,8 @@
AbortCancel
+ Close
+ CustomizeFormHelpIgnoreNo
@@ -89,21 +93,55 @@
RetrySaveValuesYes
+ 40
+ 6LockOwnertrue
+ truetrueVertical
+ true
+ truetrue
- UseIfNecessaryautotrue
- ПолеHTMLДокумента
+ СсылкаНаОбъектru
- Поле HTMLДокумента
+ Ссылка на объект
+
+ 1
+
+ AnyRef
+
+
+
+
+
+ НомерВерсии
+
+ ru
+ Номер версии2
+
+ Number
+
+ 10
+ true
+
+
+
+
+
+
+ Комментарий
+
+ ru
+ Комментарий
+
+ 3String
@@ -114,14 +152,30 @@
true
+ true
-
- ИмяМакета
-
- String
-
-
-
+
+ ОК
+
+ ru
+ ОК
+
+ 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..a9a59d4c5
--- /dev/null
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/КомментарийКВерсии/Module.bsl
@@ -0,0 +1,24 @@
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ Возврат;
+ КонецЕсли;
+
+ СсылкаНаОбъект = Параметры.СсылкаНаОбъект;
+ НомерВерсии = ВерсионированиеОбъектов.НомерПоследнейВерсии(СсылкаНаОбъект);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОК(Команда)
+ Если Модифицированность Тогда
+ ДобавитьКомментарийКВерсии();
+ КонецЕсли;
+ Закрыть();
+КонецПроцедуры
+
+&НаСервере
+Процедура ДобавитьКомментарийКВерсии()
+ ВерсионированиеОбъектов.ДобавитьКомментарийКВерсии(СсылкаНаОбъект, НомерВерсии, Комментарий);
+КонецПроцедуры
+
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl
index 38dd0f52d..bae7a4b3a 100644
--- a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl
@@ -87,7 +87,7 @@
Если Макет = Неопределено Тогда
- ВерсияОбъекта = РазборПредставленияОбъектаXML(СериализованныйXML, СсылкаНаОбъект);
+ ВерсияОбъекта = ВерсионированиеОбъектов.РазборПредставленияОбъектаXML(СериализованныйXML, СсылкаНаОбъект);
ВерсияОбъекта.Вставить("ИмяОбъекта", Строка(СсылкаНаОбъект));
ВерсияОбъекта.Вставить("АвторИзменения", "");
ВерсияОбъекта.Вставить("ДатаИзменения", ТекущаяДатаСеанса());
@@ -221,7 +221,7 @@
Для Каждого ЭлементРеквизит Из ВерсияОбъекта.Реквизиты Цикл
- НаименованиеРеквизита = ПолучитьПредставлениеРеквизитаНаЯзыке(ЭлементРеквизит.НаименованиеРеквизита);
+ НаименованиеРеквизита = ВерсионированиеОбъектов.ПолучитьПредставлениеРеквизитаНаЯзыке(ЭлементРеквизит.НаименованиеРеквизита);
ОписаниеРеквизита = СсылкаНаОбъект.Метаданные().Реквизиты.Найти(НаименованиеРеквизита);
@@ -237,7 +237,11 @@
ЗначениеРеквизита = ?(ЭлементРеквизит.ЗначениеРеквизита = Неопределено, "", ЭлементРеквизит.ЗначениеРеквизита);
ВыводимоеНаименование = НаименованиеРеквизита;
- ПредставлениеЗначения = Строка(ЗначениеРеквизита);
+ Если ОписаниеРеквизита <> Неопределено И Не ПустаяСтрока(ОписаниеРеквизита.Синоним) Тогда
+ ВыводимоеНаименование = ОписаниеРеквизита.Синоним;
+ КонецЕсли;
+
+ ПредставлениеЗначения = ПредставлениеЗначенияРеквизита(ЗначениеРеквизита, ОписаниеРеквизита);
УстановитьСвойстваТекста(Секция.Область("R1C2"), ВыводимоеНаименование, , , , Истина);
УстановитьСвойстваТекста(Секция.Область("R1C3"), ПредставлениеЗначения);
@@ -331,7 +335,7 @@
Для Каждого СтрокаТабличнойЧасти Из ТабличнаяЧасть Цикл
НомерСтроки = НомерСтроки + 1;
Значение = ?(СтрокаТабличнойЧасти[НаименованиеПоля] = Неопределено, "", СтрокаТабличнойЧасти[НаименованиеПоля]);
- ПредставлениеЗначения = Строка(Значение);
+ ПредставлениеЗначения = ПредставлениеЗначенияРеквизита(Значение, ОписаниеПоля);
УстановитьСвойстваТекста(Секция.Область("R" + НомерСтроки + "C1"), ПредставлениеЗначения, , , , , Истина);
Если СтрДлина(ПредставлениеЗначения) > (СоответствиеРазмерностиКолонок[НомерКолонки] - 4) Тогда
@@ -443,27 +447,26 @@
РезультатСравнения = РассчитатьИзменения(НомерВерсии, ВерсияОбъекта_Пред, ВерсияОбъекта);
- ИзмРек = РезультатСравнения["Реквизиты"]["и"];
- ДобРек = РезультатСравнения["Реквизиты"]["д"];
- УдлРек = РезультатСравнения["Реквизиты"]["у"];
-
// заполнение таблицы отчета по реквизитам
- ЗаполнитьХарактеристикуИзмененияРеквизита(ИзмРек, "И", ТаблицаИзмененийРеквизитов, ИмяКолонкиТекущейВерсии, ВерсияОбъекта);
- ЗаполнитьХарактеристикуИзмененияРеквизита(ДобРек, "Д", ТаблицаИзмененийРеквизитов, ИмяКолонкиТекущейВерсии, ВерсияОбъекта);
- ЗаполнитьХарактеристикуИзмененияРеквизита(УдлРек, "У", ТаблицаИзмененийРеквизитов, ИмяКолонкиТекущейВерсии, ВерсияОбъекта);
+ ЗаполнитьХарактеристикуИзмененияРеквизита(РезультатСравнения["Реквизиты"]["и"],
+ "И", ТаблицаИзмененийРеквизитов, ИмяКолонкиТекущейВерсии, ВерсияОбъекта);
+ ЗаполнитьХарактеристикуИзмененияРеквизита(РезультатСравнения["Реквизиты"]["д"],
+ "Д", ТаблицаИзмененийРеквизитов, ИмяКолонкиТекущейВерсии, ВерсияОбъекта);
+ ЗаполнитьХарактеристикуИзмененияРеквизита(РезультатСравнения["Реквизиты"]["у"],
+ "У", ТаблицаИзмененийРеквизитов, ИмяКолонкиТекущейВерсии, ВерсияОбъекта);
// Изменения в табличных частях
- ИзмТЧ = РезультатСравнения["ТабличныеЧасти"]["и"];
+ ИзмененияВТабличныхЧастях = РезультатСравнения["ТабличныеЧасти"]["и"];
// Данная функциональность пока не реализуется
- ДобТЧ = РезультатСравнения["ТабличныеЧасти"]["д"];
- УдлТЧ = РезультатСравнения["ТабличныеЧасти"]["у"];
+ ДобавленныеТабличныеЧасти = РезультатСравнения["ТабличныеЧасти"]["д"];
+ УдаленныеТабличныеЧасти = РезультатСравнения["ТабличныеЧасти"]["у"];
Для Каждого ЭлементСоответствия Из ВерсияОбъекта.ТабличныеЧасти Цикл
ИмяТаблицы = ЭлементСоответствия.Ключ;
- Если ЗначениеЗаполнено(ДобТЧ.Найти(ИмяТаблицы))
- Или ЗначениеЗаполнено(УдлТЧ.Найти(ИмяТаблицы)) Тогда
+ Если ЗначениеЗаполнено(ДобавленныеТабличныеЧасти.Найти(ИмяТаблицы))
+ Или ЗначениеЗаполнено(УдаленныеТабличныеЧасти.Найти(ИмяТаблицы)) Тогда
Продолжить;
КонецЕсли;
@@ -474,7 +477,7 @@
СсылкаНаВерсиюТаблицы.ЗаполнитьЗначения(Неопределено, "Версионирование_ИдСтроки");
СсылкаНаВерсиюТаблицы.Колонки.Добавить("Версионирование_Модификация");
СсылкаНаВерсиюТаблицы.ЗаполнитьЗначения(Неопределено, "Версионирование_Модификация");
- ТаблицаСИзменениями = ИзмТЧ.Получить(ИмяТаблицы);
+ ТаблицаСИзменениями = ИзмененияВТабличныхЧастях.Получить(ИмяТаблицы);
Если ТаблицаСИзменениями <> Неопределено Тогда
ИзмТЧ_СтрокиИ = ТаблицаСИзменениями["И"];
ИзмТЧ_СтрокиД = ТаблицаСИзменениями["Д"];
@@ -564,23 +567,23 @@
Для Каждого ЭлементМодРеквизит Из ТаблицаИзмененийРеквизитов Цикл
Если ЭлементМодРеквизит.Версионирование_Модификация = Истина Тогда
- // получаем имя реквизита
- НаименованиеРеквизита = ЭлементМодРеквизит.Наименование;
- // выводим наименование, предварительно заменяя его на другое, если
- // оно является предопределенным
- ВыводимоеНаименование = ПолучитьПредставлениеРеквизитаНаЯзыке(НаименованиеРеквизита);
-
- ОписаниеРеквизита = СсылкаНаОбъект.Метаданные().Реквизиты.Найти(ВыводимоеНаименование);
+ НаименованиеРеквизита = ВерсионированиеОбъектов.ПолучитьПредставлениеРеквизитаНаЯзыке(ЭлементМодРеквизит.Наименование);
+ ОписаниеРеквизита = СсылкаНаОбъект.Метаданные().Реквизиты.Найти(НаименованиеРеквизита);
Если ОписаниеРеквизита = Неопределено Тогда
Для Каждого ОписаниеСтандартногоРеквизита Из СсылкаНаОбъект.Метаданные().СтандартныеРеквизиты Цикл
- Если ОписаниеСтандартногоРеквизита.Имя = ПолучитьПредставлениеРеквизитаНаЯзыке(НаименованиеРеквизита) Тогда
+ Если ОписаниеСтандартногоРеквизита.Имя = НаименованиеРеквизита Тогда
ОписаниеРеквизита = ОписаниеСтандартногоРеквизита;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
+ ВыводимоеНаименование = НаименованиеРеквизита;
+ Если ОписаниеРеквизита <> Неопределено И Не ПустаяСтрока(ОписаниеРеквизита.Синоним) Тогда
+ ВыводимоеНаименование = ОписаниеРеквизита.Синоним;
+ КонецЕсли;
+
ПустаяЯчейка = ОбщийШаблон.ПолучитьОбласть("ПустаяЯчейка");
ТЧОтчета.Вывести(ПустаяЯчейка);;
@@ -1204,7 +1207,7 @@
СведенияОВерсии = ВерсионированиеОбъектов.СведенияОВерсииОбъекта(Ссылка, НомерВерсии);
- Результат = РазборПредставленияОбъектаXML(СведенияОВерсии.ВерсияОбъекта, Ссылка);
+ Результат = ВерсионированиеОбъектов.РазборПредставленияОбъектаXML(СведенияОВерсии.ВерсияОбъекта, Ссылка);
Результат.Вставить("ИмяОбъекта", Строка(Ссылка));
Результат.Вставить("АвторИзменения", СокрЛП(Строка(СведенияОВерсии.АвторВерсии)));
Результат.Вставить("ДатаИзменения", СведенияОВерсии.ДатаВерсии);
@@ -1300,220 +1303,6 @@
КонецФункции
-// Процедура считывает данные XML из файла и заполняет структуры данных
-//
-// Возвращаемое значение:
-// Структура, содержащая два соответствия: ТабличныеЧасти, Реквизиты
-// Структура хранения данных:
-// Соответствие ТабличныеЧасти, которое содержит в себе значения табличных частей
-// формат:
-// СоответствиеИмя1 -> ТаблицаЗначений1
-// | | ... |
-// Поле1 Поле2 ПолеM1
-//
-// СоответствиеИмя2 -> ТаблицаЗначений2
-// | | ... |
-// Поле1 Поле2 ПолеM2
-//
-//
-// СоответствиеИмяN -> ТаблицаЗначенийN
-// | | ... |
-// Поле1 Поле2 ПолеM3
-//
-// Соответствие ЗначенияРеквизитов
-// ИмяРеквизита1 -> Значение1
-// ИмяРеквизита2 -> Значение2
-// ...
-// ИмяРеквизитаN -> ЗначениеN
-//
-Функция РазборПредставленияОбъектаXML(ДвоичныеДанные, Ссылка)
-
- // содержит имя метаданного измененного объекта
- Перем ИмяОбъекта;
-
- // Содержит положение маркера в дереве XML.
- // Требуется для идентификации текущего элемента.
- Перем УровеньЧтения;
-
- // Содержат значения реквизитов справочников / документов
- ЗначенияРеквизитов = Новый ТаблицаЗначений;
-
- ЗначенияРеквизитов.Колонки.Добавить("НаименованиеРеквизита");
- ЗначенияРеквизитов.Колонки.Добавить("ЗначениеРеквизита");
- ЗначенияРеквизитов.Колонки.Добавить("ТипРеквизита");
- ЗначенияРеквизитов.Колонки.Добавить("Тип");
-
- ТабличныеЧасти = Новый Соответствие;
-
- ЧтениеXML = Новый ЧтениеFastInfoSet;
-
- ЧтениеXML.УстановитьДвоичныеДанные(ДвоичныеДанные);
-
- // уровень позиции маркера в иерархии XML:
- // 0 - уровень не задан
- // 1 - первый элемент (имя объекта)
- // 2 - описание реквизита или табличной части
- // 3 - описание строки табличной части
- // 4 - описание поля строки табличной части
- УровеньЧтения = 0;
-
- МетаданныеОбъекта = Ссылка.Метаданные();
- ТабличныеЧастиМТД = МетаданныеОбъекта.ТабличныеЧасти;
-
- ТипЗначения = "";
-
- ТипЗначенияПоляТЧ = "";
-
- // основной цикл разбора по XML
- Пока ЧтениеXML.Прочитать() Цикл
-
- Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
- УровеньЧтения = УровеньЧтения + 1;
- Если УровеньЧтения = 1 Тогда // указатель на первом элементе XML - корень XML
- ИмяОбъекта = ЧтениеXML.Имя;
- ИначеЕсли УровеньЧтения = 2 Тогда // указатель на втором уровне - это реквизит или имя табличной части
- ИмяРеквизита = ЧтениеXML.Имя;
-
- // любой реквизит "может оказаться" табличной частью, поэтому на всякий случай его запомним.
- ИмяТабличнойЧасти = ИмяРеквизита;
- Если МетаданныеОбъекта.ТабличныеЧасти.Найти(ИмяТабличнойЧасти) <> Неопределено И ТабличныеЧасти[ИмяТабличнойЧасти] = Неопределено Тогда
- ТабличныеЧасти.Вставить(ИмяТабличнойЧасти, Новый ТаблицаЗначений);
- КонецЕсли;
-
- НовоеЗР = ЗначенияРеквизитов.Добавить();
- НовоеЗР.НаименованиеРеквизита = ИмяРеквизита;
-
- Если ЧтениеXML.КоличествоАтрибутов() > 0 Тогда
- Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
- Если ЧтениеXML.ТипУзла = ТипУзлаXML.Атрибут
- И ЧтениеXML.Имя = "xsi:type" Тогда
- НовоеЗР.ТипРеквизита = ЧтениеXML.Значение;
-
- XMLТип = ЧтениеXML.Значение;
-
- Если Лев(XMLТип, 3) = "xs:" Тогда
- НовоеЗР.Тип = ИзXMLТипа(Новый ТипДанныхXML(Прав(XMLТип, СтрДлина(XMLТип)-3), "http://www.w3.org/2001/XMLSchema"));
- Иначе
- НовоеЗР.Тип = ИзXMLТипа(Новый ТипДанныхXML(XMLТип, ""));
- КонецЕсли;
-
- КонецЕсли;
- КонецЦикла;
- КонецЕсли;
-
- Если Не ЗначениеЗаполнено(НовоеЗР.Тип) Тогда
-
- ОписаниеРеквизита = МетаданныеОбъекта.Реквизиты.Найти(НовоеЗР.НаименованиеРеквизита);
-
- Если ОписаниеРеквизита = Неопределено Тогда
-
- НаименованиеРеквизита = ПолучитьПредставлениеРеквизитаНаЯзыке(НовоеЗР.НаименованиеРеквизита);
-
- Если ОбщегоНазначения.ЭтоСтандартныйРеквизит(МетаданныеОбъекта.СтандартныеРеквизиты, НаименованиеРеквизита) Тогда
-
- ОписаниеРеквизита = МетаданныеОбъекта.СтандартныеРеквизиты[НаименованиеРеквизита];
-
- КонецЕсли;
-
- КонецЕсли;
-
- Если ОписаниеРеквизита <> Неопределено
- И ОписаниеРеквизита.Тип.Типы().Количество() = 1 Тогда
- НовоеЗР.Тип = ОписаниеРеквизита.Тип.Типы()[0];
- КонецЕсли;
-
- КонецЕсли;
-
- ИначеЕсли (УровеньЧтения = 3) и (ЧтениеXML.Имя = "Row") Тогда // указатель на поле табличной части
- Если ТабличныеЧасти[ИмяТабличнойЧасти] = Неопределено Тогда
- ТабличныеЧасти.Вставить(ИмяТабличнойЧасти, Новый ТаблицаЗначений);
- КонецЕсли;
-
- ТабличныеЧасти[ИмяТабличнойЧасти].Добавить();
- ИначеЕсли УровеньЧтения = 4 Тогда // указатель на поле табличной части
-
- ТипЗначенияПоляТЧ = "";
-
- ИмяПоляТЧ = ЧтениеXML.Имя; //
- Таблица = ТабличныеЧасти[ИмяТабличнойЧасти];
- Если Таблица.Колонки.Найти(ИмяПоляТЧ)= Неопределено Тогда
- Таблица.Колонки.Добавить(ИмяПоляТЧ);
- КонецЕсли;
-
- Если ЧтениеXML.КоличествоАтрибутов() > 0 Тогда
- Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
- Если ЧтениеXML.ТипУзла = ТипУзлаXML.Атрибут
- И ЧтениеXML.Имя = "xsi:type" Тогда
- XMLТип = ЧтениеXML.Значение;
-
- Если Лев(XMLТип, 3) = "xs:" Тогда
- ТипЗначенияПоляТЧ = ИзXMLТипа(Новый ТипДанныхXML(Прав(XMLТип, СтрДлина(XMLТип)-3), "http://www.w3.org/2001/XMLSchema"));
- Иначе
- ТипЗначенияПоляТЧ = ИзXMLТипа(Новый ТипДанныхXML(XMLТип, ""));
- КонецЕсли;
-
- КонецЕсли;
- КонецЦикла;
- КонецЕсли;
-
- КонецЕсли;
- ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
- УровеньЧтения = УровеньЧтения - 1;
- ТипЗначения = "";
- ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
- Если (УровеньЧтения = 2) Тогда // значение реквизита
- Попытка
- НовоеЗР.ЗначениеРеквизита = ?(ЗначениеЗаполнено(НовоеЗР.Тип), XMLЗначение(НовоеЗР.Тип, ЧтениеXML.Значение), ЧтениеXML.Значение);
- Исключение
- НовоеЗР.ЗначениеРеквизита = ЧтениеXML.Значение;
- КонецПопытки;
- ИначеЕсли (УровеньЧтения = 4) Тогда // значение реквизита
- ПоследняяСтрока = ТабличныеЧасти[ИмяТабличнойЧасти].Получить(ТабличныеЧасти[ИмяТабличнойЧасти].Количество()-1);
-
- Если ТипЗначенияПоляТЧ = "" Тогда
- ОписаниеРТЧ = Неопределено;
- Если ТабличныеЧастиМТД.Найти(ИмяТабличнойЧасти) <> Неопределено Тогда
- ОписаниеРТЧ = ТабличныеЧастиМТД[ИмяТабличнойЧасти].Реквизиты.Найти(ИмяПоляТЧ);
-
- Если ОписаниеРТЧ <> Неопределено
- И ОписаниеРТЧ.Тип.Типы().Количество() = 1 Тогда
- ТипЗначенияПоляТЧ = ОписаниеРТЧ.Тип.Типы()[0];
- КонецЕсли;
- КонецЕсли;
- КонецЕсли;
-
- ПоследняяСтрока[ИмяПоляТЧ] = ?(ЗначениеЗаполнено(ТипЗначенияПоляТЧ), XMLЗначение(ТипЗначенияПоляТЧ, ЧтениеXML.Значение), ЧтениеXML.Значение);
- КонецЕсли;
- КонецЕсли;
- КонецЦикла;
-
- // 2-й этап: из списка реквизитов исключаем табличные части
- Для Каждого Элемент Из ТабличныеЧасти Цикл
- ЗначенияРеквизитов.Удалить(ЗначенияРеквизитов.Найти(Элемент.Ключ));
- КонецЦикла;
- //ТабличныеЧастиМТД
- Для Каждого ЭлементСоответствия Из ТабличныеЧасти Цикл
- Таблица = ЭлементСоответствия.Значение;
- Если Таблица.Колонки.Количество() = 0 Тогда
- ТаблицаМТД = ТабличныеЧастиМТД.Найти(ЭлементСоответствия.Ключ);
- Если ТаблицаМТД <> Неопределено Тогда
- Для Каждого ОписаниеКолонки Из ТаблицаМТД.Реквизиты Цикл
- Если Таблица.Колонки.Найти(ОписаниеКолонки.Имя)= Неопределено Тогда
- Таблица.Колонки.Добавить(ОписаниеКолонки.Имя);
- КонецЕсли;
- КонецЦикла;
- КонецЕсли;
- КонецЕсли;
- КонецЦикла;
-
- Результат = Новый Структура;
- Результат.Вставить("Реквизиты", ЗначенияРеквизитов);
- Результат.Вставить("ТабличныеЧасти", ТабличныеЧасти);
-
- Возврат Результат;
-
-КонецФункции
-
Процедура ПодготовитьКолонкиТаблицИзмененийДляСоответствия(Соответствие, МассивНомеровВерсий)
Количество = МассивНомеровВерсий.Количество();
@@ -1566,38 +1355,6 @@
КонецФункции
-// Получает представление наименования системного реквизита
-//
-Функция ПолучитьПредставлениеРеквизитаНаЯзыке(Знач ИмяРеквизита)
-
- Если ИмяРеквизита = "Number" Тогда
- Возврат НСтр("ru = 'Номер'; en='Number'");
- ИначеЕсли ИмяРеквизита = "Name" Тогда
- Возврат НСтр("ru = 'Наименование'; en='Name'");
- ИначеЕсли ИмяРеквизита = "Code" Тогда
- Возврат НСтр("ru = 'Код'; en='Code'");
- ИначеЕсли ИмяРеквизита = "IsFolder" Тогда
- Возврат НСтр("ru = 'ЭтоГруппа'; en='Is folder'");
- ИначеЕсли ИмяРеквизита = "Description" Тогда
- Возврат НСтр("ru = 'Наименование'; en='Description'");
- ИначеЕсли ИмяРеквизита = "Date" Тогда
- Возврат НСтр("ru = 'Дата'; en='Date'");
- ИначеЕсли ИмяРеквизита = "Posted" Тогда
- Возврат НСтр("ru = 'Проведен'; en='Posted'");
- ИначеЕсли ИмяРеквизита = "DeletionMark" Тогда
- Возврат НСтр("ru = 'ПометкаУдаления'; en='Deletion mark'");
- ИначеЕсли ИмяРеквизита = "Ref" Тогда
- Возврат НСтр("ru = 'Ссылка'; en='Ref'");
- ИначеЕсли ИмяРеквизита = "Parent" Тогда
- Возврат НСтр("ru = 'Родитель'; en='Parent'");
- ИначеЕсли ИмяРеквизита = "Owner" Тогда
- Возврат НСтр("ru = 'Владелец'; en='Owner'");
- Иначе
- Возврат ИмяРеквизита;
- КонецЕсли;
-
-КонецФункции
-
// Используется для вывода текста в область табличного документа
// с условным оформлением
//
@@ -2138,4 +1895,22 @@
Возврат Ложь;
КонецФункции
+&НаСервере
+Функция ПредставлениеЗначенияРеквизита(ЗначениеРеквизита, ОбъектМетаданныхРеквизит)
+
+ ФорматнаяСтрока = "";
+ Если ОбъектМетаданныхРеквизит <> Неопределено Тогда
+ Если ТипЗнч(ЗначениеРеквизита) = Тип("Дата") Тогда
+ ФорматнаяСтрока = "ДЛФ=DT";
+ Если ОбъектМетаданныхРеквизит.Тип.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда
+ ФорматнаяСтрока = "ДЛФ=D";
+ ИначеЕсли ОбъектМетаданныхРеквизит.Тип.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Время Тогда
+ ФорматнаяСтрока = "ДЛФ=T";
+ КонецЕсли;
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат Формат(ЗначениеРеквизита, ФорматнаяСтрока);
+
+КонецФункции
#КонецОбласти
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ФормаЗаписи/Help/ru.html b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ФормаЗаписи/Help/ru.html
new file mode 100644
index 000000000..d1844dbab
--- /dev/null
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ФормаЗаписи/Help/ru.html
@@ -0,0 +1 @@
+Форма записи
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ФормаСписка/Form.form
index 057f531ef..a5f5344e3 100644
--- a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ФормаСписка/Form.form
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ФормаСписка/Form.form
@@ -1,5 +1,100 @@
+
+ ГруппаПользовательскихНастроек
+ 28
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ru
+ Группа пользовательских настроек
+
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 29
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 30
+
+ УдалитьЗаписи
+ 14
+ true
+ true
+
+ true
+
+ false
+
+ УдалитьЗаписиExtendedTooltip
+ 15
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.УдалитьЗаписи
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 31
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -201,6 +296,74 @@
true
+
+ РазмерДанных
+ 22
+ true
+ true
+
+
+ Список.РазмерДанных
+
+
+ РазмерДанныхРасширеннаяПодсказка
+ 24
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РазмерДанныхКонтекстноеМеню
+ 23
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ КонтрольнаяСумма
+ 25
+ true
+ true
+
+
+ Список.КонтрольнаяСумма
+
+
+ КонтрольнаяСуммаРасширеннаяПодсказка
+ 27
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КонтрольнаяСуммаКонтекстноеМеню
+ 26
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ NoneСписокКоманднаяПанель
@@ -214,10 +377,10 @@
СписокСтрокаПоиска
- 22
+ 32СписокСтрокаПоискаРасширеннаяПодсказка
- 24
+ 34Labeltruetrue
@@ -227,7 +390,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 23
+ 33trueСписок
@@ -237,10 +400,10 @@
СписокСостояниеПросмотра
- 25
+ 35СписокСостояниеПросмотраРасширеннаяПодсказка
- 27
+ 37Labeltruetrue
@@ -250,7 +413,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 26
+ 36trueViewStatusAddition
@@ -261,10 +424,10 @@
СписокУправлениеПоиском
- 28
+ 38СписокУправлениеПоискомРасширеннаяПодсказка
- 30
+ 40Labeltruetrue
@@ -274,7 +437,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 29
+ 39trueSearchControlAddition
@@ -333,40 +496,13 @@
truetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1
-
- УдалитьЗаписи
- 14
- true
- true
-
- true
-
- false
-
- УдалитьЗаписиExtendedTooltip
- 15
- Label
- true
- true
-
- Left
-
-
- Form.Command.УдалитьЗаписи
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Left
- trueChangeCopy
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/RecordSetModule.bsl b/SSL/src/InformationRegisters/ВерсииОбъектов/RecordSetModule.bsl
new file mode 100644
index 000000000..82d0c2742
--- /dev/null
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/RecordSetModule.bsl
@@ -0,0 +1,30 @@
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+
+#Область ОбработчикиСобытий
+
+Процедура ПередЗаписью(Отказ, Замещение)
+ Если ОбменДанными.Загрузка Тогда
+ Возврат;
+ КонецЕсли;
+
+ Для Каждого Запись Из ЭтотОбъект Цикл
+ Запись.РазмерДанных = РазмерДанных(Запись.ВерсияОбъекта);
+ ВерсияОбъекта = Запись.ВерсияОбъекта.Получить();
+ Запись.ЕстьДанныеВерсии = ВерсияОбъекта <> Неопределено;
+ Если Запись.ЕстьДанныеВерсии Тогда
+ Запись.КонтрольнаяСумма = ВерсионированиеОбъектов.КонтрольнаяСумма(ВерсияОбъекта);
+ КонецЕсли;
+ КонецЦикла;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция РазмерДанных(Данные)
+ Возврат Base64Значение(СериализаторXDTO.XMLСтрока(Данные)).Размер();
+КонецФункции
+
+#КонецОбласти
+
+#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo b/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo
index 4628cfd00..8b2e706f6 100644
--- a/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo
+++ b/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo
@@ -14,8 +14,6 @@
ruВерсии объектов
- InformationRegister.ВерсииОбъектов.Form.ФормаЗаписи
- InformationRegister.ВерсииОбъектов.Form.ФормаСпискаUseActive
@@ -113,6 +111,7 @@
+ IndexUseUse
@@ -179,6 +178,73 @@
Use
+
+ РазмерДанных
+
+ ru
+ Размер данных
+
+
+ Number
+
+ 15
+ true
+
+
+
+ ru
+ Размер данных хранимой версии в байтах
+
+
+
+ Use
+ Use
+
+
+
+ КонтрольнаяСумма
+
+ ru
+ Контрольная сумма
+
+
+ String
+
+ 32
+
+
+
+ ru
+ Контрольная сумма данных версии по алгоритму MD5
+
+
+
+ Use
+ Use
+
+
+
+
+
+ ЕстьДанныеВерсии
+
+ ru
+ Есть данные версии
+
+
+ Boolean
+
+
+ ru
+ Признак наличия данных версии
+
+
+
+ Index
+ Use
+ Use
+
+ Объект
@@ -221,6 +287,7 @@
+ IndexUse0
@@ -251,6 +318,11 @@
ruФорма записи
+
+
+ ru
+
+ PersonalComputerMobileDevice
@@ -260,6 +332,29 @@
ruВыбор хранимых версий
+
+
+ ru
+
+
+ PersonalComputer
+ MobileDevice
+
+
+ ВыборРеквизитовОбъекта
+
+ ru
+ Выбор реквизитов объекта
+
+ PersonalComputer
+ MobileDevice
+
+
+ КомментарийКВерсии
+
+ ru
+ Комментарий к версии
+ PersonalComputerMobileDevice
diff --git a/SSL/src/InformationRegisters/ВерсииОбъектовАдресногоКлассификатора/ВерсииОбъектовАдресногоКлассификатора.mdo b/SSL/src/InformationRegisters/ВерсииОбъектовАдресногоКлассификатора/ВерсииОбъектовАдресногоКлассификатора.mdo
index 288c1d714..2884ec344 100644
--- a/SSL/src/InformationRegisters/ВерсииОбъектовАдресногоКлассификатора/ВерсииОбъектовАдресногоКлассификатора.mdo
+++ b/SSL/src/InformationRegisters/ВерсииОбъектовАдресногоКлассификатора/ВерсииОбъектовАдресногоКлассификатора.mdo
@@ -53,29 +53,18 @@
ДатаВыпускаВерсииru
- Дата выпуска версии
+ UTC дата версииDate
-
- Date
-
+
-
- ru
- ДФ=dd.MM.yyyy
-
-
- ru
- ДФ=dd.MM.yyyy
- ru
- Дата выпуска версии классификатора в формате дд.мм.гггг
+ UTC дата версии классификатора
- UseUse0001-01-01T00:00:00
@@ -99,7 +88,6 @@
- UseUseIndex
@@ -124,7 +112,6 @@
Index
- UseUse
diff --git a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Form.form
index 1ce58d88a..1eba91160 100644
--- a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Form.form
+++ b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Form.form
@@ -1,5 +1,121 @@
+
+ ГруппаПользовательскихНастроек
+ 43
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+ false
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 44
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ WeakSeparation
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 45
+
+ ФормаОбновитьДанныеРегистра
+ 25
+ true
+ true
+
+ true
+
+
+ ФормаОбновитьДанныеРегистраExtendedTooltip
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ОбновитьДанныеРегистра
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ФормаВключитьВозможностьРедактирования
+ 24
+ true
+ true
+
+ true
+
+
+ ФормаВключитьВозможностьРедактированияExtendedTooltip
+ 29
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ВключитьВозможностьРедактирования
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 46
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -15,7 +131,7 @@
NoneCopy
- ГруппаДанных
+ СписокГруппаДанных26truetrue
@@ -26,7 +142,7 @@
Список.ГруппаДанных
- ГруппаДанныхРасширеннаяПодсказка
+ СписокГруппаДанныхРасширеннаяПодсказка42Labeltrue
@@ -36,7 +152,7 @@
- ГруппаДанныхКонтекстноеМеню
+ СписокГруппаДанныхКонтекстноеМеню27true
@@ -53,10 +169,10 @@
- ЗначениеДоступаСКартинкой
+ СписокГруппаЗначениеДоступаСКартинкой22
- КартинкаЗначенияДоступа
+ СписокНомерКартинкиЗначенияДоступа18truetrue
@@ -68,7 +184,7 @@
None
- КартинкаЗначенияДоступаExtendedTooltip
+ СписокНомерКартинкиЗначенияДоступаРасширеннаяПодсказка33Labeltrue
@@ -78,7 +194,7 @@
- КартинкаЗначенияДоступаКонтекстноеМеню
+ СписокНомерКартинкиЗначенияДоступаКонтекстноеМеню19true
@@ -102,7 +218,7 @@
- ЗначениеДоступа
+ СписокЗначениеДоступа6truetrue
@@ -114,7 +230,7 @@
true
- ЗначениеДоступаExtendedTooltip
+ СписокЗначениеДоступаРасширеннаяПодсказка34Labeltrue
@@ -124,7 +240,7 @@
- ЗначениеДоступаКонтекстноеМеню
+ СписокЗначениеДоступаКонтекстноеМеню7true
@@ -145,10 +261,10 @@
ru
- Значение доступа с картинкой
+ Список группа значение доступа с картинкой
- ЗначениеДоступаСКартинкойExtendedTooltip
+ СписокГруппаЗначениеДоступаСКартинкойРасширеннаяПодсказка32Labeltrue
@@ -165,10 +281,10 @@
- ГруппаДоступаСКартинкой
+ СписокГруппаДоступаСКартинкой23
- НомерКартинкиГруппыЗначенийДоступа
+ СписокНомерКартинкиГруппыЗначенийДоступа20truetrue
@@ -180,7 +296,7 @@
None
- НомерКартинкиГруппыЗначенийДоступаExtendedTooltip
+ СписокНомерКартинкиГруппыЗначенийДоступаРасширеннаяПодсказка37Labeltrue
@@ -190,7 +306,7 @@
- НомерКартинкиГруппыЗначенийДоступаКонтекстноеМеню
+ СписокНомерКартинкиГруппыЗначенийДоступаКонтекстноеМеню21true
@@ -214,7 +330,7 @@
- ГруппаЗначенийДоступа
+ СписокГруппаЗначенийДоступа10truetrue
@@ -226,7 +342,7 @@
true
- ГруппаЗначенийДоступаExtendedTooltip
+ СписокГруппаЗначенийДоступаРасширеннаяПодсказка38Labeltrue
@@ -236,7 +352,7 @@
- ГруппаЗначенийДоступаКонтекстноеМеню
+ СписокГруппаЗначенийДоступаКонтекстноеМеню11true
@@ -257,10 +373,14 @@
ru
- Группа доступа с картинкой
+ Список группа доступа с картинкой
+
+ ru
+ Список группа доступа с картинкой
+
- ГруппаДоступаСКартинкойExtendedTooltip
+ СписокГруппаДоступаСКартинкойРасширеннаяПодсказка36Labeltrue
@@ -284,10 +404,10 @@
СписокСтрокаПоиска
- 43
+ 47СписокСтрокаПоискаРасширеннаяПодсказка
- 45
+ 49Labeltruetrue
@@ -297,7 +417,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 44
+ 48trueСписок
@@ -307,10 +427,10 @@
СписокСостояниеПросмотра
- 46
+ 50СписокСостояниеПросмотраРасширеннаяПодсказка
- 48
+ 52Labeltruetrue
@@ -320,7 +440,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 47
+ 51trueViewStatusAddition
@@ -331,10 +451,10 @@
СписокУправлениеПоиском
- 49
+ 53СписокУправлениеПоискомРасширеннаяПодсказка
- 51
+ 55Labeltruetrue
@@ -344,7 +464,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 50
+ 54trueSearchControlAddition
@@ -403,67 +523,13 @@
truetrue
+ ГруппаПользовательскихНастроекФормаКоманднаяПанель-1
-
- ФормаОбновитьДанныеРегистра
- 25
- true
- true
-
- true
-
-
- ФормаОбновитьДанныеРегистраExtendedTooltip
- 28
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОбновитьДанныеРегистра
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
-
-
- ФормаВключитьВозможностьРедактирования
- 24
- true
- true
-
- true
-
-
- ФормаВключитьВозможностьРедактированияExtendedTooltip
- 29
- Label
- true
- true
-
- Left
-
-
- Form.Command.ВключитьВозможностьРедактирования
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- InAdditionalSubmenu
- Left
- trueOnCreateAtServer
diff --git a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Module.bsl
index 5d70d539f..3816f848d 100644
--- a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Module.bsl
+++ b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/Forms/ФормаСписка/Module.bsl
@@ -48,27 +48,32 @@
&НаСервере
Процедура УстановитьУсловноеОформление()
-
+
УсловноеОформление.Элементы.Очистить();
+
+ ОформитьГруппуДанных(0, НСтр("ru = 'Стандартные значения доступа'"));
+ ОформитьГруппуДанных(1, НСтр("ru = 'Обычные/внешние пользователи'"));
+ ОформитьГруппуДанных(2, НСтр("ru = 'Обычные/внешние группы пользователей'"));
+ ОформитьГруппуДанных(3, НСтр("ru = 'Группы исполнителей'"));
+ ОформитьГруппуДанных(4, НСтр("ru = 'Объекты авторизации'"));
+
+КонецПроцедуры
- //
-
+&НаСервере
+Процедура ОформитьГруппуДанных(ГруппаДанных, Текст)
+
Элемент = УсловноеОформление.Элементы.Добавить();
-
+
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
- ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГруппаДанных.Имя);
-
+ ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокГруппаДанных.Имя);
+
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.ГруппаДанных");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
- ОтборЭлемента.ПравоеЗначение = 0;
-
- Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Стандартные значения доступа'"));
- Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Обычные/внешние пользователи'"));
- Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Обычные/внешние группы пользователей'"));
- Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Группы исполнителей'"));
- Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Объекты авторизации'"));
-
+ ОтборЭлемента.ПравоеЗначение = ГруппаДанных;
+
+ Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Текст);
+
КонецПроцедуры
&НаСервере
diff --git a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl
index a39f7aa88..72c4d585f 100644
--- a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl
@@ -542,7 +542,7 @@
// <Состав поля ГруппаДанных>
// а) для вида доступа
// Пользователи
-// {cравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
+// {сравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
// {Сравнение с &ТекущийПользователь}
//
// Пользователь 1 - Тот же Пользователь.
@@ -552,7 +552,7 @@
//
// б) для вида доступа
// Внешние пользователи
-// {cравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
+// {сравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
// {Сравнение с &ТекущийВнешнийПользователь}
//
// Внешний пользователь 1 - Тот же Внешний пользователь.
@@ -624,7 +624,7 @@
// <Состав поля ГруппаДанных>
// а) для вида доступа
// Пользователи
-// {cравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
+// {сравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
// {Сравнение с &ТекущийПользователь}
//
// Группа пользователей 2 - Та же Группа пользователей.
@@ -634,7 +634,7 @@
//
// б) для вида доступа
// Внешние пользователи
-// {cравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
+// {сравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
// {Сравнение с &ТекущийВнешнийПользователь}
//
// Группа внешних пользователей 2 - Та же Группа внешних пользователей.
@@ -732,10 +732,10 @@
// по видам доступа Пользователи и ВнешниеПользователи.
//
// <Состав поля ЗначениеДоступа> <Состав поля ГруппаЗначенийДоступа>
-// <Состав поля ГруппаДанных>
+// <Состав поля ГруппаДанных>
// а) для вида доступа
// Пользователи
-// {cравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
+// {сравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
// {Сравнение с &ТекущийПользователь}
//
// Группа исполнителей 3 - Пользователь
@@ -746,7 +746,7 @@
//
// б) для вида доступа
// Внешние пользователи
-// {cравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
+// {сравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
// {Сравнение с &ТекущийВнешнийПользователь}
//
// Группа исполнителей 3 - Внешний пользователь
@@ -969,7 +969,7 @@
// <Состав поля ГруппаДанных>
// б) для вида доступа
// Внешние пользователи
-// {cравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
+// {сравнение с Т.<поле>} {Сравнение с ЗначенияГруппДоступа.ЗначениеДоступа}
// {Сравнение с &ТекущийВнешнийПользователь}
//
// Объект авторизации 4 - Внешний пользователь
diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Form.form b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Form.form
index bfb8efd77..ac71ef8e3 100644
--- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Form.form
+++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Form.form
@@ -4,6 +4,227 @@
ruМои бизнес-процессы
+
+ ГруппаПользовательскихНастроек
+ 72
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+ false
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 73
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 74
+
+ ФормаИзменить
+ 67
+ true
+ true
+
+ true
+
+
+ ФормаИзменитьРасширеннаяПодсказка
+ 68
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Change
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ФормаПометкаУдаления
+ 31
+ true
+ true
+
+ true
+
+
+ ФормаПометкаУдаленияExtendedTooltip
+ 47
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПометкаУдаления
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ГруппаПоиск
+ 34
+
+ ФормаОтменитьПоиск
+ 33
+ true
+ true
+
+ true
+
+
+ ФормаОтменитьПоискExtendedTooltip
+ 49
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CancelSearch
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаНайти
+ 32
+ true
+ true
+
+ true
+
+
+ ФормаНайтиExtendedTooltip
+ 50
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Find
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Поиск
+
+
+ ГруппаПоискExtendedTooltip
+ 48
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаКартаМаршрута
+ 35
+ true
+ true
+
+ true
+
+
+ ФормаКартаМаршрутаExtendedTooltip
+ 51
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.КартаМаршрута
+ Normal
+ PictureAndText
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 75
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -25,10 +246,6 @@
Номер6
-
- ru
- Номер
- truetrue
@@ -110,10 +327,6 @@
Дата8
-
- ru
- Дата
- truetrue
@@ -146,6 +359,7 @@
truetrue
+ falsetruetruetrue
@@ -155,10 +369,6 @@
Стартован12
-
- ru
- Стартован
- truetrue
@@ -168,6 +378,11 @@
Список.Стартованtrue
+ None
+
+ ru
+ Стартован
+ СтартованExtendedTooltip63
@@ -186,6 +401,9 @@
CheckBoxFieldEntertrue
+
+ StdPicture.BusinessProcessStart
+ Lefttrue
@@ -193,10 +411,6 @@
Завершен10
-
- ru
- Завершен
- truetrue
@@ -206,6 +420,11 @@
Список.Завершенtrue
+ None
+
+ ru
+ Завершен
+ ЗавершенExtendedTooltip64
@@ -224,6 +443,9 @@
CheckBoxFieldEntertrue
+
+ CommonPicture.Успешно
+ Lefttrue
@@ -233,7 +455,7 @@
16ru
- Дата завершения
+ Завершенtruetrue
@@ -267,12 +489,47 @@
truetrue
+ falsetruetruetrueNormal
+
+ БизнесПроцесс
+ 69
+ true
+ true
+
+
+ Список.БизнесПроцесс
+
+
+ БизнесПроцессРасширеннаяПодсказка
+ 71
+ Label
+ true
+ true
+
+ Left
+
+
+
+ БизнесПроцессКонтекстноеМеню
+ 70
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ NoneСписокКоманднаяПанель
@@ -290,10 +547,10 @@
СписокСтрокаПоиска
- 67
+ 76СписокСтрокаПоискаРасширеннаяПодсказка
- 69
+ 78Labeltruetrue
@@ -303,7 +560,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 68
+ 77trueСписок
@@ -313,10 +570,10 @@
СписокСостояниеПросмотра
- 70
+ 79СписокСостояниеПросмотраРасширеннаяПодсказка
- 72
+ 81Labeltruetrue
@@ -326,7 +583,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 71
+ 80trueViewStatusAddition
@@ -337,10 +594,10 @@
СписокУправлениеПоиском
- 73
+ 82СписокУправлениеПоискомРасширеннаяПодсказка
- 75
+ 84Labeltruetrue
@@ -350,7 +607,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 74
+ 83trueSearchControlAddition
@@ -583,6 +840,7 @@
true
+ ГруппаПользовательскихНастроек
@@ -623,137 +881,11 @@
true
+ None
+ falseФормаКоманднаяПанель-1
-
- ФормаПометкаУдаления
- 31
- true
- true
-
- true
-
-
- ФормаПометкаУдаленияExtendedTooltip
- 47
- Label
- true
- true
-
- Left
-
-
- Form.Command.ПометкаУдаления
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ГруппаПоиск
- 34
-
- ФормаОтменитьПоиск
- 33
- true
- true
-
- true
-
-
- ФормаОтменитьПоискExtendedTooltip
- 49
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.CancelSearch
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаНайти
- 32
- true
- true
-
- true
-
-
- ФормаНайтиExtendedTooltip
- 50
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Find
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- true
- true
-
- true
-
-
- ru
- Поиск
-
-
- ГруппаПоискExtendedTooltip
- 48
- Label
- true
- true
-
- Left
-
-
-
-
-
- ФормаКартаМаршрута
- 35
- true
- true
-
- true
-
-
- ФормаКартаМаршрутаExtendedTooltip
- 51
- Label
- true
- true
-
- Left
-
-
- Form.Command.КартаМаршрута
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Lefttrue
@@ -815,8 +947,8 @@
РегистрСведенийДанныеБизнесПроцессов.ПометкаУдаления,
ВЫБОР
КОГДА РегистрСведенийДанныеБизнесПроцессов.ПометкаУдаления
- ТОГДА 4
- ИНАЧЕ 3
+ ТОГДА 20
+ ИНАЧЕ 19
КОНЕЦ КАК КартинкаСтроки
ИЗ
РегистрСведений.ДанныеБизнесПроцессов КАК РегистрСведенийДанныеБизнесПроцессов
diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl
index 924eb5550..68955ff52 100644
--- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl
+++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl
@@ -10,8 +10,8 @@
УстановитьОтбор(Новый Структура("ПоказыватьЗавершенные", ПоказыватьЗавершенные));
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- Список, "Автор", Пользователи.ТекущийПользователь());
-
+ Список, "Автор", Пользователи.ТекущийПользователь());
+ БизнесПроцессыИЗадачиСервер.УстановитьОформлениеБизнесПроцессов(Список.УсловноеОформление);
КонецПроцедуры
&НаКлиенте
@@ -89,13 +89,8 @@
&НаСервере
Процедура УстановитьОтбор(ПараметрыОтбора)
- ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Завершен");
-
- Если НЕ ПараметрыОтбора["ПоказыватьЗавершенные"] Тогда
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- Список, "Завершен", Ложь, ВидСравненияКомпоновкиДанных.Равно, , ,
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
- КонецЕсли;
+ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
+ Список, "Завершен", Ложь,,, Не ПараметрыОтбора["ПоказыватьЗавершенные"]);
КонецПроцедуры
diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Form.form b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Form.form
index d91dc4601..b5bf1b8a2 100644
--- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Form.form
+++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Form.form
@@ -1,5 +1,222 @@
+
+ ГруппаПользовательскихНастроек
+ 63
+ true
+ true
+
+ true
+
+
+ ru
+ Группа пользовательских настроек
+
+ false
+
+ ГруппаПользовательскихНастроекРасширеннаяПодсказка
+ 64
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ КоманднаяПанель
+ 65
+
+ ФормаИзменить
+ 58
+ true
+ true
+
+ true
+
+
+ ФормаИзменитьРасширеннаяПодсказка
+ 59
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Change
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+
+
+ ФормаПометкаУдаления
+ 24
+ true
+ true
+
+ true
+
+
+ ФормаПометкаУдаленияExtendedTooltip
+ 38
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.ПометкаУдаления
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InAdditionalSubmenu
+
+
+ ГруппаПоиск
+ 36
+
+ ФормаНайти
+ 35
+ true
+ true
+
+ true
+
+
+ ФормаНайтиExtendedTooltip
+ 40
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Find
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ ФормаОтменитьПоиск
+ 34
+ true
+ true
+
+ true
+
+
+ ФормаОтменитьПоискExtendedTooltip
+ 41
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.CancelSearch
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ГруппаПоискExtendedTooltip
+ 39
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+
+ ФормаКартаМаршрута
+ 33
+ true
+ true
+
+ true
+
+
+ ФормаКартаМаршрутаExtendedTooltip
+ 42
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.КартаМаршрута
+ Normal
+ PictureAndText
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 66
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+ Form
+
+ Список1
@@ -210,6 +427,11 @@
Список.Стартованtrue
+ None
+
+ ru
+ Стартован
+ СтартованExtendedTooltip55
@@ -228,6 +450,9 @@
CheckBoxFieldEntertrue
+
+ StdPicture.BusinessProcessStart
+ Lefttrue
@@ -248,6 +473,11 @@
Список.Завершенtrue
+ None
+
+ ru
+ Завершен
+ ЗавершенExtendedTooltip56
@@ -266,6 +496,9 @@
CheckBoxFieldEntertrue
+
+ CommonPicture.Успешно
+ Lefttrue
@@ -315,6 +548,40 @@
Normal
+
+ БизнесПроцесс
+ 60
+ true
+ true
+
+
+ Список.БизнесПроцесс
+
+
+ БизнесПроцессРасширеннаяПодсказка
+ 62
+ Label
+ true
+ true
+
+ Left
+
+
+
+ БизнесПроцессКонтекстноеМеню
+ 61
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ NoneСписокКоманднаяПанель
@@ -332,10 +599,10 @@
СписокСтрокаПоиска
- 58
+ 67СписокСтрокаПоискаРасширеннаяПодсказка
- 60
+ 69Labeltruetrue
@@ -345,7 +612,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 59
+ 68trueСписок
@@ -355,10 +622,10 @@
СписокСостояниеПросмотра
- 61
+ 70СписокСостояниеПросмотраРасширеннаяПодсказка
- 63
+ 72Labeltruetrue
@@ -368,7 +635,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 62
+ 71trueViewStatusAddition
@@ -379,10 +646,10 @@
СписокУправлениеПоиском
- 64
+ 73СписокУправлениеПоискомРасширеннаяПодсказка
- 66
+ 75Labeltruetrue
@@ -392,7 +659,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 65
+ 74trueSearchControlAddition
@@ -626,135 +893,14 @@
truetrue
+ ГруппаПользовательскихНастроек
+ None
+ falseФормаКоманднаяПанель-1
-
- ФормаПометкаУдаления
- 24
- true
- true
-
- true
-
-
- ФормаПометкаУдаленияExtendedTooltip
- 38
- Label
- true
- true
-
- Left
-
-
- Form.Command.ПометкаУдаления
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ГруппаПоиск
- 36
-
- ФормаНайти
- 35
- true
- true
-
- true
-
-
- ФормаНайтиExtendedTooltip
- 40
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Find
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ФормаОтменитьПоиск
- 34
- true
- true
-
- true
-
-
- ФормаОтменитьПоискExtendedTooltip
- 41
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.CancelSearch
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
- true
- true
-
- true
-
-
- ГруппаПоискExtendedTooltip
- 39
- Label
- true
- true
-
- Left
-
-
-
-
-
- ФормаКартаМаршрута
- 33
- true
- true
-
- true
-
-
- ФормаКартаМаршрутаExtendedTooltip
- 42
- Label
- true
- true
-
- Left
-
-
- Form.Command.КартаМаршрута
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Lefttrue
@@ -762,6 +908,10 @@
NotificationProcessingОбработкаОповещения
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+ DontBlocktruetrue
@@ -808,8 +958,8 @@
РегистрСведенийДанныеБизнесПроцессов.ПометкаУдаления,
ВЫБОР
КОГДА РегистрСведенийДанныеБизнесПроцессов.ПометкаУдаления
- ТОГДА 4
- ИНАЧЕ 3
+ ТОГДА 20
+ ИНАЧЕ 19
КОНЕЦ КАК КартинкаСтроки
ИЗ
РегистрСведений.ДанныеБизнесПроцессов КАК РегистрСведенийДанныеБизнесПроцессов
diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Module.bsl
index 9df477dfb..b5ccb320f 100644
--- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Module.bsl
+++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/ФормаСписка/Module.bsl
@@ -1,6 +1,13 @@
#Область ОбработчикиСобытийФормы
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ БизнесПроцессыИЗадачиСервер.УстановитьОформлениеБизнесПроцессов(Список.УсловноеОформление);
+
+КонецПроцедуры
+
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ЗадачаИсполнителя" Тогда
diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html
index 2736ce548..22b9f2826 100644
--- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html
+++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html
@@ -1,4 +1,17 @@
-
-
В этом списке выводятся бизнес-процессы, в которых автором является текущий пользователь. Установив соответствующий флаг, можно вывести в списке также завершенные бизнес-процессы.
Предназначена для установки даты запрета изменения (загрузки) данных.
+
Запреты загрузки данных могут не использоваться. В этом случае доступно только окно настройки дат запрета изменения данных.
+
Установка даты запрета изменения данных и различные настройки, связанные с ней, выполняются по соответствующей команде в разделе Администрирование - Поддержка и обслуживание.
+
Установка даты запрета загрузки данных выполняется по соответствующей команде в разделе Синхронизация данных.
О запрете изменения (загрузки) данных
-
Иногда при работе с информационной базой требуется установить запрет изменения каких-либо данных до определенной даты. Например, после сдачи квартальной бухгалтерской отчетности в налоговую инспекцию, обычно устанавливается запрет изменения тех данных, которые использовались для формирования этой отчетности, то есть данных по последний день отчетного периода. Запрет загрузки в отличие от запрета изменения может быть установлен для данных, которые должны редактироваться только в одном узле информационной базы, а также по правилам, которые следуют из требований обмена данными, а не из типовых бизнес-процессов организации. Запреты загрузки данных могут не использоваться. В этом случае доступна только форма настройки дат запрета изменения данных.
-
Проявление установленного запрета
-
Если дата запрета изменения данных установлена, то при попытке пользователя внести изменения в ИБ до даты запрета изменения пользователю выводится сообщение о невозможности изменения данных. Если дата запрета изменения не установлена, то ограничения не действуют. Если в закрытом периоде есть объекты помеченные на удаление, то их удаление будет невозможно. Если дата запрета загрузки данных установлена, то при попытке пользователя загрузить данные в ИБ до даты запрета загрузки все запрещенные для загрузки данные будут пропущены, сведения о них будут записаны в журнал регистрации, а разрешенные данные будут загружены.
-
Возможности установки дат запрета
-
При установке даты запрета можно задавать не только произвольную дату, но и относительную. Для относительных дат (кроме значения Предыдущий день) на форме можно задать количество дней «отсрочки» до установки даты запрета, в течение которых запрет все еще не будет действовать. Относительные даты запрета должны пересчитываться ежедневно. Для этого предусмотрено регламентное задание. Однако для файловой ИБ и в других случаях может потребоваться выполнить пересчет текущих значений относительных дат запрета вручную. Пересчет можно выполнить командой Пересчитать даты.
-
Если дату запрета необходимо установить для всех пользователей системы (для всех узлов планов обмена), то в поле Установка даты запрета необходимо выбрать значение Для всех пользователей (Для всех узлов планов обмена). При этом в форме станут доступны поля Способ указания даты запрета и поле Дата запрета.
-
Если разным пользователям (узлам планов обмена) необходимо устанавливать разные значения даты запрета, то в поле Установка даты запрета необходимо выбрать значение По пользователям (По узлам планов обмена). При этом в форме будет доступен список, в который можно добавлять пользователей/группы пользователей (узлы планов обмена) и настраивать для каждого из них свое значение даты запрета. В списке по умолчанию всегда присутствует элемент <Для всех пользователей> (<Для всех узлов планов обмена>). Элемент нельзя удалить или изменить. Настройки даты запрета выполненные для этого элемента будут использоваться для всех пользователей (узлов планов обмена) кроме тех, которые содержаться в списке. Для того что бы выполнить настройку даты запрета, необходимо выделить в списке нужного пользователя/группу пользователей (узел плана обмена) или элемент <Для всех пользователей> (<Для всех узлов планов обмена>), а сами настройки выполнить ниже в полях Способ указания датызапрета и Дата запрета.
-
Способ указания даты запрета может принимать следующие значения:
-
Общая дата – при этом способе одна дата запрета задается для всех элементов данных ИБ.
-
По разделам – для каждого раздела программы устанавливается своя дата запрета. Когда дата запрета задается по разделам, в форме доступен список, в который можно добавлять Разделы (соответствующей командой) и указывать для каждого раздела свое значение даты запрета. В списке по умолчанию присутствует элемент <Общая дата>. Значение даты запрета для этого элемента будет использоваться для всех разделов по умолчанию кроме тех, которые уже содержаться в списке. Если в поле Установка даты запрета указано Для всех пользователей (Для всех узлов планов обмена), то удалить элемент <Общая дата> и разделы нельзя. Если в поле Установка даты запрета указано По пользователям (По узлам планов обмена), то удалить элемент <Общая дата> и разделы можно.
-
По объектам – даты запрета задаются в разрезе объектов программы. Для каждого объекта устанавливается своя дата запрета. Если выбрано это значение, то в форме доступен список в который можно добавлять объекты (соответствующей командой) и указывать для каждого объекта свое значение даты запрета. Так же как и в предыдущем способе в списке для аналогичных целей содержится элемент <Общая дата>.
-
По разделам и объектам – при этом способе даты запрета задаются и в разрезе разделов и в разрезе объектов. Когда дата запрета задается по разделам и объектам, в форме доступен список в который можно добавлять разделы и объекты, указывая для каждого раздела и каждого объекта свое значение даты запрета. Так же как и в предыдущих способах в списке содержится элемент <Общая дата> для аналогичных целей.
В отчетах возможна группировка данных по разделам/объектам: Отчет по разделам и объектам для пользователей (Отчет по разделам и объектам для узлов планов обмена) или по пользователям (по узлам планов обмена): Отчет по пользователям (Отчет по узлам планов обмена). Отчет позволяет увидеть результирующие даты запрета, установленные для пользователей/групп пользователей (узлов планов обмена) с учетом приоритетов.
\ No newline at end of file
+
Иногда при работе с программой требуется установить запрет изменения каких-либо данных до определенной даты. Например, после сдачи квартальной бухгалтерской отчетности в налоговую инспекцию обычно устанавливается запрет изменения тех данных, которые использовались для формирования этой отчетности, то есть данных по последний день отчетного периода.
+
Запрет загрузки, в отличие от запрета изменения, может быть установлен для данных, которые должны редактироваться только в одном узле информационной базы, а также по правилам, которые следуют из требований синхронизации данных, а не из типовых бизнес-процессов организации. Например, решение редактировать данные по некоторым организациям только в центральном офисе (в центральном узле), для того чтобы технически обеспечить закрепление ответственности за эти данные за конкретным сотрудником центрального офиса, является основанием запрета загрузки данных из других узлов.
Проявление установленного запрета
+
Если дата запрета изменения данных установлена, то при попытке внести изменения в программу до даты запрета изменения выводится сообщение о невозможности изменения данных.
+
Если в закрытом периоде есть объекты, помеченные на удаление, то их удаление будет невозможно.
+
Если дата запрета изменения не установлена, то ограничения не действуют.
Если дата запрета загрузки данных установлена, то при попытке получить данные в программу до даты запрета загрузки все запрещенные для получения данные будут пропущены, сведения о них будут записаны в журнал регистрации, а разрешенные данные будут получены.
Установка даты запрета
+
+
В программе предусмотрена возможность установить или отключить дату запрета изменений (дату запрета загрузки данных). Для этого в поле Установка даты запрета выберите соответствующее значение:
+
Нет запрета изменения (загрузки) данных - в этом случае отключаются все установленные ранее даты запрета.
+
Для всех пользователей (Для всех информационных баз). При этом становятся доступными поля Способ указания даты запрета и Дата запрета.
+
По пользователям (По информационным базам).Эту возможность можно использовать, если дату запрета необходимо установить для конкретного пользователя или группы пользователей (для конкретной информационной базы), или разным пользователям (информационным базам) необходимо установить разные значения даты запрета.
+
При этом становится доступным список, в который можно добавлять пользователей/группы пользователей (информационные базы) и настраивать для каждого из них свое значение даты запрета.
+
Список состоит из колонок:
+
Пользователь, группа пользователей (Программа: информационная база - наименование программы и информационной базы для этой программы).
+
Комментарий - напишите дополнительную информацию о пользователе (об информационной базе).
В списке по умолчанию всегда присутствует элемент <Для всех пользователей> (<Для всех информационных баз>). Элемент нельзя удалить или изменить. Настройки даты запрета, выполненные для этого элемента, будут использоваться для всех пользователей (информационных баз), кроме тех, которые содержатся в списке.
+
При необходимости добавьте в список нужных пользователей /группу пользователей (информационные базы):
+
Нажмите Подобрать, для того чтобы выбрать из списка несколько пользователей (информационных баз).
+
Нажмите Все действия (в интерфейсе Такси Еще) - Добавить над списком, для того чтобы Выбрать пользователя/группу пользователей (программу и информационную базу для этой программы. Для каждой программы можно также выбрать элемент <Все информационные базы>).
Для того чтобы выполнить настройку даты запрета, необходимо выделить в списке нужного пользователя/группу пользователей (информационную базу) или элемент <Для всех пользователей> (<Для всех информационных баз>), а сами настройки выполнить ниже в полях Способ указания датызапрета и Дата запрета.
Способы указания даты запрета
+
Программа позволяет задавать различные Способы указания даты запрета изменений:
+
Общая дата – при этом способе одна дата запрета задается для всех элементов данных программы.
+
По разделам – для каждого раздела программы устанавливается своя дата запрета.
+
Когда дата запрета задается по разделам, становится доступным список, в который можно добавлять Разделы (соответствующей командой) и указывать для каждого раздела свое значение даты запрета. Список состоит из колонок:
+
Раздел, объект - в данном случае в колонке перечисляются разделы программы;
+
Дата запрета - выберите из списка тип значения даты запрета (можно выбрать произвольную дату или одну из относительных дат);
+
Запрет изменения по - для произвольной даты напишите или выберите значение, для относительной даты значение проставляется программой автоматически.
В списке по умолчанию присутствует элемент <Общая дата>. Значение даты запрета для этого элемента будет использоваться для всех разделов по умолчанию, кроме тех, которые уже содержатся в списке.
+
Если в поле Установка даты запрета указано Для всех пользователей (Для всех информационных баз), то удалить элемент <Общая дата> и разделы нельзя, при этом по умолчанию доступны все разделы, их можно только Изменить - указать Дату запрета.
+
Если в поле Установка даты запрета указано По пользователям (По информационным базам), то удалить элемент <Общая дата> и разделы можно. Если дата запрета изменений устанавливается для определенного пользователя/группы пользователей (информационной базы), то необходимо выбрать один или несколько разделов.
+
Для добавления раздела выполните команду Разделы, выберите нужные с помощью флажков, затем нажмите кнопку ОК.
По объектам – даты запрета задаются в разрезе объектов программы. Для каждого объекта устанавливается своя дата запрета. Если выбрано это значение, то становится доступным список, в который можно добавлять объекты (соответствующей командой) и указывать для каждого объекта свое значение даты запрета. Так же, как и в предыдущем способе, в списке для аналогичных целей содержится элемент <Общая дата>.
+
По разделам и объектам – даты запрета задаются и в разрезе разделов, и в разрезе объектов.
+
При этом становится доступным список, в который можно добавлять разделы и объекты, указывая для каждого раздела и каждого объекта свое значение даты запрета. Так же, как и в предыдущих способах, в списке содержится элемент <Общая дата> для аналогичных целей.
+
Для выбора разделов выполните команду Разделы.
+
Для выбора нескольких объектов в выделенном разделе выполните команду Подобрать.
+
Также в нужном разделе можно выполнить команду Добавить контекстного меню по правой кнопки мыши, затем указать объект с помощью кнопки Выбрать. Также можно воспользоваться аналогичной командой меню Все действия (в интерфейсе Такси Еще).
Для того чтобы установить дату запрета изменения нужного раздела (объекта) или изменить общую дату, в нужной строке в колонке Дата запрета выполните команду Изменить контекстного меню по правой кнопке мыши или дважды щелкните по ней мышью. Для задания даты запрета нажмите кнопку Выбрать. После выбора даты для возврата к дальнейшим настройкам нажмите кнопку ОК.
+
Дата запрета
+
При установке даты запрета можно задавать не только произвольную дату (в этом случае дату можно написать или выбрать из календаря, нажав ), но и относительную.
+
Значения относительных дат:
+
Конец прошлого года;
+
Конец прошлого квартала;
+
Конец прошлого месяца;
+
Конец прошлой недели;
+
Предыдущий день.
+
Для относительных дат (кроме значения Предыдущий день) можно задать количество дней «отсрочки» до установки даты запрета, в течение которых изменение данных все еще будет разрешено.
+
+
Для этого необходимо включить флажок Разрешить изменение данных до даты запрета. Затем задайте количество дней "отсрочки", например, в течение 10 дней после даты запрета.
+
Если установлена относительная дата, то для того, чтобы дата запрета изменения в будущем изменялась по заданным правилам автоматически, в программе используется регламентное задание "Пересчет текущих значений относительных дат запрета изменения".
+
+
Если по каким-либо причинам использование регламентных заданий невозможно (например, в файловом варианте работы программы и в других случаях может потребоваться выполнить пересчет текущих значений относительных дат запрета вручную), то перерасчет текущих значений относительных дат запрета можно выполнять с помощью команды Все действия (В интерфейсе Такси Еще) - Пересчитать даты. При этом команду необходимо выполнять периодически в соответствии с установленной относительной датой. Например, если установлено значение Предыдущий день, то команду необходимо выполнять ежедневно; если установлено значение Конец прошлого месяца, то команду необходимо выполнять ежемесячно.
Отчеты по датам запрета
+
Отчеты доступны по соответствующей команде. В отчетах возможна группировка данных:
+
по разделам/объектам: выберите отчет Даты запрета по разделам и объектам для пользователей (Даты запрета по разделам и объектам для информационных баз);
+
по пользователям (по информационным базам): выберите отчет Даты запрета по пользователям (Даты запрета по информационным базам).
Отчеты позволяют увидеть результирующие даты запрета, установленные для пользователей/групп пользователей (информационных баз) с учетом приоритетов.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html b/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html
index 323de0a34..eb66df87d 100644
--- a/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html
+++ b/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html
@@ -1,3 +1,3 @@
-
+
Для некоторых объектов конфигурации можно указать дополнительные сведения, состав и тип которых настраивается администратором.
Предназначен для просмотра замеров времени, которые производятся для оценки производительности работы программы.
Открыть список можно по команде Замеры времени на панели навигации ключевой операции.
В списке выводятся:
@@ -15,4 +15,4 @@
Минимально допустимый уровень - выводится из списка ключевых операций;
Целевое время - выводится из списка ключевых операций.
Данные о замерах программа заполняет автоматически при выполнении ключевых операций. Однако при необходимости можно ввести данные о замере времени вручную. Эту возможность можно использовать для отладки, например. Нажмите Создать, заполните необходимые поля.
В этом списке содержится актуальная (текущая) информация о соответствии пользователей ролям исполнителей.
-
Роли, на которые не назначено ни одного исполнителя, отмечены значком "внимание". Такая ситуация может приводить к возникновению зависших задач (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен Отчет по зависшим задачам, для получения уведомлений по зависшим задачам - предопределенная роль "Координатор выполнения задач".
Перед началом работы с бизнес-процессами и задачами рекомендуется заполнить список.
+
Для того чтобы назначить исполнителей ролей, которые участвуют в бизнес-процессах без объектов адресации, выполните команду Роли и исполнители задач в разделе Администрирование - Органайзер.
+
Для того чтобы назначить исполнителей на роли, которые участвуют в бизнес-процессах с объектами адресации, необходимо воспользоваться командой Роли и исполнители задач на панели навигации этих объектов, например, на панели навигации Организации.
+
В списке выводится:
+
Роль - наименование роли. Роли, на которые не назначено ни одного исполнителя, отмечены значком Внимание. Такая ситуация может приводить к возникновению зависших задач (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен Отчет по зависшим задачам, для получения уведомлений по зависшим задачам - предопределенная роль Координатор выполнения задач.
+
Исполнители - имя пользователя (если на роль назначен 1 исполнитель) или количество человек, назначенных на эту роль.
Назначение исполнителей на роль
+
Выделите роль, нажмите Назначить исполнителей на роль, подберите исполнителей из списка пользователей.
+
Предопределенная роль, используется для получения уведомлений о просроченных и зависших задачах. Сотрудники, назначенные на роль, получают уведомление по всем таким задачам, адресованным любым исполнителям.
Роли, на которые не назначено ни одного исполнителя, отмечены значком "внимание". Такая ситуация может приводить к возникновению зависших задач (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен Отчет по зависшим задачам, для получения уведомлений по зависшим задачам - предопределенная роль "Координатор выполнения задач".
Роли, на которые не назначено ни одного исполнителя, отмечены значком "внимание". Такая ситуация может приводить к возникновению зависших задач (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен Отчет по зависшим задачам, для получения уведомлений по зависшим задачам - предопределенная роль "Координатор выполнения задач".
В зависимости от специфики бизнес-процессов задачи могут быть адресованы исполнителю или группе исполнителей как персонально (персональная адресация), так и для некоторых бизнес процессов с использованием ролей бизнес-процесса (ролевая адресация). В случае ролевой адресации поручение выдается не персонально исполнителю, а некоторой роли бизнес-процесса (например, Старший по залу).
В этом списке содержится актуальная (текущая) информация о соответствии пользователей ролям и объектам адресации, которая используется механизмом бизнес-процессов для доставки задач конкретным пользователям.
В зависимости от специфики бизнес-процессов задачи могут быть адресованы исполнителю или группе исполнителей как персонально (персональная адресация), так и для некоторых бизнес процессов с использованием ролей бизнес-процесса (ролевая адресация). В случае ролевой адресации поручение выдается не персонально исполнителю, а некоторой роли бизнес-процесса (например, Старший по залу).
Примеры заполнения списка ролевой адресации:
Роль исполнителя
Пользователь
-
Пояснение
Старший по залу
+
Пояснение
Старший по залу
Иванов И.
-
Задачи, назначенные на роль "Старший по залу", попадут в список задач Иванова И.
Старший по залу
+
Задачи, назначенные на роль Старший по залу, попадут в список задач Иванова И.
Старший по залу
Федоров К.
-
Задачи, назначенные на роль "Старший по залу", попадут в список задач Федорова К.
Руководитель
+
Задачи, назначенные на роль Старший по залу, попадут в список задач Федорова К.
Руководитель
Петров А.
-
Поручения выданные руководителю попадут в список поручений Петрова А.
-
В определенных случаях, роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации. Например:
+
Поручения, выданные роли Руководителя, попадут в список поручений Петрова А.
В определенных случаях роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации. Например:
Роль исполнителя
Основной объект адресации (тип, значение)
Дополнительный объект адресации (тип, значение)
Пользователь
-
Пояснение
Руководитель подразделения
+
Пояснение
Руководитель подразделения
Структурное подразделение, Отдел бухгалтерии
-
Федоров К.
-
Задачи, выданные роли "Руководитель подразделения" подразделения "Отдел бухгалтерии", попадут в список задач Федорова К.
Руководитель проекта
+
Задачи, выданные роли Руководитель подразделения структурного подразделения Отдел бухгалтерии, попадут в список задач Федорова К.
Руководитель проекта
Проект, Проект по внедрению системы бухучета
Структурное подразделение, Отдел бухгалтерии
Иванов И.
-
Задачи, выданные роли "Руководитель проекта" по проекту "Проект по внедрению системы бухучета" подразделения "Отдел бухгалтерии", попадут в список задач Иванова И.
Руководитель компании
+
Задачи, выданные роли Руководитель проекта по проекту "Проект по внедрению системы бухучета" подразделения "Отдел бухгалтерии", попадут в список задач Иванова И.
Руководитель компании
-
-
Петров А.
-
Задачи, выданные руководителю компании, попадут в список задач Петрова А.
Задачи, выданные роли Руководитель компании, попадут в список задач Петрова А.
Таким образом, с помощью объектов адресации происходит уточнение, руководителям какого проекта и в каком подразделении адресуется задача. Соответствие исполнителей ролям и объектам адресации задается перед началом работы с бизнес-процессами и задачами, используется программой для доставки поручений конкретным исполнителям.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl b/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl
index 5c42469ae..5adc51da2 100644
--- a/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl
+++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl
@@ -107,7 +107,7 @@
| Итог.ГруппаИсполнителейЗадач <> ЗНАЧЕНИЕ(Справочник.ГруппыИсполнителейЗадач.ПустаяСсылка)";
УсловияОтбора = "Истина";
- Для каждого ЭлементОтбора ИЗ Отбор Цикл
+ Для каждого ЭлементОтбора Из Отбор Цикл
Если ЭлементОтбора.Использование Тогда
УсловияОтбора = УсловияОтбора + "
|И ИсполнителиЗадач." + ЭлементОтбора.Имя + " = &" + ЭлементОтбора.Имя;
diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/ИсполнителиЗадач.mdo b/SSL/src/InformationRegisters/ИсполнителиЗадач/ИсполнителиЗадач.mdo
index abd702f56..958f7f97b 100644
--- a/SSL/src/InformationRegisters/ИсполнителиЗадач/ИсполнителиЗадач.mdo
+++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/ИсполнителиЗадач.mdo
@@ -184,7 +184,7 @@
АдресацияПоОбъектуru
- Роли и исполнители бизнес-процессов
+ Роли и исполнители задач
@@ -228,6 +228,11 @@
ruФорма записи
+
+
+ ru
+
+ PersonalComputerMobileDevice
@@ -244,13 +249,13 @@
НастройкаРолевойАдресацииru
- Роли и исполнители бизнес-процессов
+ Роли и исполнители задачNavigationPanelOrdinaryAutoru
- Назначить исполнителей на роли бизнес-процессов
+ Назначить исполнителей на роли
diff --git a/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html b/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html
index 7cae9b628..caf7e8612 100644
--- a/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html
+++ b/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html
@@ -1,2 +1,2 @@
-
+
Система позволяет хранить графики работы, которые используются на предприятии.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/КонтактыВзаимодействий/ManagerModule.bsl b/SSL/src/InformationRegisters/КонтактыВзаимодействий/ManagerModule.bsl
index 821816712..cf3218451 100644
--- a/SSL/src/InformationRegisters/КонтактыВзаимодействий/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/КонтактыВзаимодействий/ManagerModule.bsl
@@ -9,7 +9,6 @@
// Папка - Ссылка на документ взаимодействия, Неопределено - взаимодействие, запись о котором удаляется.
// Если указано значение Неопределено, то регистр будет очищен полностью.
//
-
Процедура УдалитьНаборЗаписейПоВзаимодействию(Взаимодействие = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
diff --git a/SSL/src/InformationRegisters/КурсыВалют/Help/ru.html b/SSL/src/InformationRegisters/КурсыВалют/Help/ru.html
index 12c4b26ab..02005c45a 100644
--- a/SSL/src/InformationRegisters/КурсыВалют/Help/ru.html
+++ b/SSL/src/InformationRegisters/КурсыВалют/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для хранения и просмотра курсов валют.
Предназначен для работы со всеми напоминаниями, действующими в программе на текущий момент. При этом каждый пользователь видит только свои напоминания.
+
В списке выводится:
+
Срок напоминания - время срабатывания напоминания;
+
Описание - текст напоминания;
+
Время события - время, на которое было назначено напоминание в момент его создания, или время в предмете напоминания, если Срок напоминания относительный;
+
Источник - объект программы, с которым это напоминание связано.
Ввод напоминания
+
Можно ввести напоминание по поводу какого-либо персонального события или дела, не связанного ни с каким конкретным объектом программы.
+
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Form.form b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Form.form
index 477c908fb..f95e6d050 100644
--- a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Form.form
+++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Form.form
@@ -878,6 +878,33 @@
UserCmdsAuto
+
+ ФормаСправка
+ 128
+ true
+ true
+
+ true
+
+
+ ФормаСправкаРасширеннаяПодсказка
+ 129
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Help
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+ InCommandBarAndInAdditionalSubmenu
+ Lefttrue
diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Help/ru.html b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Help/ru.html
new file mode 100644
index 000000000..2812454ca
--- /dev/null
+++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Help/ru.html
@@ -0,0 +1,17 @@
+
+
В программе можно вводить напоминания, указав время и предмет, по поводу которого в программе в указанное время будет выведен список напоминаний.
+
Предметом напоминаний могут быть различные справочники, документы и другие объекты программы. Например, напоминание можно ввести по конкретному партнеру, документу товародвижения и т.д., для того чтобы не забыть уточнить или дозаполнить какие-либо данные.
+
Открывается по команде Органайзер - Напомнить из различных объектов программы. При этом можно ввести только одно напоминание для одного объекта.
+
Также можно ввести напоминание, связанное с каким-либо персональным событием или делом, в списке Мои напоминания по команде Создать. Такое напоминание может быть полезно, например, для того чтобы не забыть вовремя поздравить коллегу с днем рождения. Совместно с заметками напоминания хорошо подходят как электронная замена "стикеров на краях монитора".
+
Ввод напоминания
+
Откорректируйте или напишите текст напоминания. Если напоминание связано с документом, справочником или другим объектом программы, то в тексте напоминания по умолчанию будет подставлено его наименование.
+
В поле Напомнить выберите один из вариантов:
+
В указанное время - для указания точной даты и времени напоминания. Введите дату вручную или выберите из календаря с помощью кнопки .
+
Через определенный интервал. Для этого выберите значение из списка для задания интервала, через который напоминание сработает. Также можно с помощью клавиатуры указать произвольное количество часов, например, через 10 часов.
+
Относительно предмета - для указания времени напоминания относительно даты в предмете напоминания, например, относительно срока исполнения в задаче. Это значение поля Напомнить отображается и предлагается программой по умолчанию, когда у предмета существует по меньшей мере одно поле с датой в будущем времени. Выберите из списка, за сколько времени до Срока необходимо вывести напоминание. Если такая дата в предмете меняется, автоматически меняется и срок напоминания. Если дата в предмете по какой-то причине будет сброшена, то срок напоминания будет считаться подошедшим и напоминание будет выведено досрочно.
+
Периодически - для периодических напоминаний, например, можно выбрать из списка значение по понедельникам в 9-00, или ввести другое расписание. Для ввода своего расписания выберите из списка значение по заданному расписанию и произведите необходимые настройки.
Отмена напоминания
+
+
Для того чтобы отменить напоминание, нажмите Прекратить.
+
+
Программа выводит сообщение, в котором требует подтверждения. Для подтверждения нажмите Прекратить. Для отмены своего действия нажмите Не прекращать.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form
index 9f0f24a42..2562213ff 100644
--- a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form
+++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form
@@ -1017,7 +1017,7 @@
4ru
- Открыть
+ Открыть предмет напоминанияtrue
diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Help/ru.html b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Help/ru.html
new file mode 100644
index 000000000..c94c027bf
--- /dev/null
+++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Help/ru.html
@@ -0,0 +1,8 @@
+
+
Предназначен для вывода сработавших напоминаний.
+
В указанное в напоминании время в программе открывается список Напоминания. В списке содержатся все вновь созданные и отложенные напоминания, у которых подошло время срабатывания. По каждому напоминанию выводится его текст и время, насколько оно было просрочено. Если напоминание связано с датой какого-либо предмета, например, со сроком по задаче, то в напоминании указывается, сколько времени осталось до этого события.
+
Из списка можно сразу перейти к элементу справочника или другому объекту программы, с которым связано напоминанме (по команде Открыть или двойному щелчку мыши). Если напоминание не связано с объектом программы (то открывается само напоминание).
+
По команде Отложить все напоминания в списке можно отложить на время, указанное в поле Напомнить через. Для заполнения поля выберите значение из списка, или с помощью клавиатуры, указав произвольное значение времени.
+
Периодическое напоминание после нажатия на кнопку Прекратить продолжает действовать согласно настроенному расписанию. Полность прекратить такое напоминание можно в списке Мои напоминания.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Help/ru.html b/SSL/src/InformationRegisters/НапоминанияПользователя/Help/ru.html
new file mode 100644
index 000000000..809bc7f0e
--- /dev/null
+++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Help/ru.html
@@ -0,0 +1,12 @@
+
+
В программе можно вводить напоминания, указав время и предмет, по поводу которого в программе в указанное время будет выведен список напоминаний.
+
Предметом напоминаний могут быть различные справочники, документы и другие объекты программы. Например, напоминание можно ввести по конкретному партнеру, документу товародвижения и т.д., для того чтобы не забыть уточнить или дозаполнить какие-либо данные.
+
Открывается по команде Органайзер - Напомнить из различных объектов программы. При этом можно ввести только одно напоминание для одного объекта.
+
Также можно ввести напоминание, связанное с каким-либо персональным событием или делом, в списке Мои напоминания по команде Создать. Такое напоминание может быть полезно, например, для того чтобы не забыть вовремя поздравить коллегу с днем рождения. Совместно с заметками напоминания хорошо подходят как электронная замена "стикеров на краях монитора".
+
Список напоминаний
+
В указанное в напоминании время в программе открывается список Напоминания. В списке содержатся все вновь созданные и отложенные напоминания, у которых подошло время срабатывания. По каждому напоминанию выводится его текст и время, насколько оно было просрочено. Если напоминание связано с датой какого-либо предмета (например, со сроком по задаче), то в напоминании указывается, сколько времени осталось до этого события.
+
Из списка можно перейти к элементу справочника или документу, с которым связано напоминание (по команде Открыть или двойному щелчку мыши). Если напоминание не связано с объектом программы, то открывается само напоминание.
+
С помощью кнопки Прекратить можно отменить выделенные в списке напоминания, удалив их из списка. Периодическое напоминание после нажатия на кнопку Прекратить продолжает действовать согласно настроенному расписанию. Полностью прекратить такое напоминание можно в списке Мои напоминания.
+
По команде Отложить все напоминания в списке можно отложить на время, указанное в поле Напомнить через. Поле Напомнить через можно заполнить, выбрав значение из списка, или с помощью клавиатуры, указав произвольное значение времени.
С помощью настройки версионирования документов и справочников можно отслеживать историю изменений.
-
Не версионировать - история версий объекта не ведется;
-
Версионировать при записи - новая запись заносится в историю версий каждый раз при изменении (или создании нового) справочника или документа;
-
Версионировать при проведении - версии сохраняются только при проведении; применимо только для документов, для которых разрешено проведение.
Также возможна настройка версионирования сразу для группы выделенных объектов в списке.
\ No newline at end of file
+
+
Предназначен для настройки версионирования объектов.
+
С помощью версионирования документов и справочников можно отслеживать историю изменений.
+
Для ведения истории изменений объектов необходимо выбрать команду Поддержка и обслуживание раздела Администрирование, включить флажок Версионирование объектов (по умолчанию включен).
+
После этого в разделах Администрирование - Поддержка и обслуживание становится доступной команда Настройки хранения, по которой можно произвести необходимые настройки.
+
В списке выводится:
+
Объект - список объектов программы в виде дерева с группировкой по типам объектов.
+
Вариант версионирования - выбранный вариант версионирования.
+
Срок хранения версий - выбранный срок хранения версий.
Выбор варианта версионирования
+
+
Выберите один или несколько объектов, затем выполните команду Установить вариант версионирования, из выпадающего списка выберите нужный вариант версионирования для каждого типа документов и справочников (также можно найти команду в меню Еще (Все действия) или в контекстном меню по правой кнопке мыши):
+
Не версионировать - история версий объекта не ведется;
+
Версионировать при записи - новая запись заносится в историю версий каждый раз при изменении (или создании нового) справочника или документа;
+
Версионировать при проведении - версии сохраняются только при проведении; применимо только для документов, для которых разрешено проведение.
+
Версионировать при старте - версии сохраняются только после запуска бизнес-процесса; применимо только для бизнес-процессов;
+
По умолчанию - установить рекомендуемые настройки (для справочников - не версионировать, для документов - версионировать при проведении).
+
Также возможна настройка версионирования сразу для группы объектов программы, например, можно выбрать все документы или справочники.
Выбор срока хранения версий
+
+
Выполните команду Установить срок хранения версий, затем из выпадающего списка выберите нужный срок хранения версий для каждого типа документов и справочников: версии можно хранить За последнюю неделю, За последний месяц, За последние три месяца, За последние шесть месяцев, За последний год и Бессрочно.
Просмотр отчета "Количество и объем хранимых версий объектов"
+
+
По соответствующей ссылке можно перейти к просмотру отчетаКоличество и объем хранимых версий объектов.
Очистка устаревших версий
+
+
В поле Всего устаревших версий выдается информация о количестве и объеме устаревших версий в программе.
+
+
Нажмите Очистить, для того чтобы удалить устаревшие версии.
+
+
Для того чтобы Автоматически удалять устаревшие версии, включите соответствующий флажок.
+
+
Перейдите по соответствующей ссылке, для того чтобы Настроить расписание. Настроенное расписание выводится в нижней части окна.
Применение версионирования
+
В начале внедрения программы, когда объемы информации еще небольшие, когда исполнители делают много ошибок в работе (например, вводят лишнюю информацию или нечаянно удаляют нужную), версионирование может помочь привести списки и документы в порядок, избавиться от допущенных ошибок, помочь исполнителям понять свои ошибочные действия и не допускать их в дальнейшей работе.
+
Благодаря версионированию объектов можно вернуться к какой-либо предыдущей версии документа или элемента справочника, которая была наиболее полной или более правильной в отличие от последнего состояния.
+
В дальнейшем, когда объемы информации в программе возрастают, можно постепенно отказываться от версионирования некоторых объектов вообще или вести версионирование только в важные моменты, например, при проведении документов.
+
+
Версионирование большого количества объектов может привести к увеличению объема хранимой в программе информации из-за хранения их версий, что может существенно замедлить работу программы. Поэтому рекомендуется использовать эту возможность избирательно.
Особенности режима "Версионировать при проведении"
+
+
Если у документа установлен режим Версионировать при проведении, то первая версия документа будет записана в историю только после первого проведения документа. Впоследствии версии документа будут записываться при каждой записи проведенного документа. Режим позволяет не создавать версии новых и не заполненных окончательно документов, для того чтобы не увеличивать объем хранимой в программе информации. Рекомендуется применять эту настройку для всех документов.
Особенности режима "Версионировать при старте"
+
+
Если у бизнес-процесса установлен режим Версионировать при старте, то первая версия будет записана только после его старта. Режим позволяет не создавать лишние версии бизнес-процессов в то время, пока их подготавливают к запуску.
Позволяет указать параметры подключения к другой программе для синхронизации данных, а также проверить правильность задания этих параметров. На закладках задаются параметры различных видов подключения.
Параметры подключения также указываются во время настройки синхронизации данных в Помощнике создания синхронизации данных. Эти настройки выводятся по умолчанию. Их можно изменить.
Перейти к настройке Параметров подключения можно по соответствующей команде из настройки синхронизации данных.
diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo
index 945c137b9..0bbebdcb0 100644
--- a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo
+++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo
@@ -204,7 +204,6 @@
- UseUse
@@ -490,7 +489,6 @@
- UseUse
@@ -547,13 +545,13 @@
50
+ trueruПароль пользователя
- UseUse
@@ -634,6 +632,7 @@
50
+ trueruПоле для задания пароля для сжатия и распаковки архива данных. Подразумевается, что пароль сжатия в базе источнике и пароль распаковки в базе приемнике должны совпадать.
diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/ManagerModule.bsl
index b9280aeee..7cabdc9b8 100644
--- a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/ManagerModule.bsl
@@ -1,6 +1,5 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-
// Процедура обновляет запись в регистре по переданным значениям структуры
//
Процедура ОбновитьЗапись(СтруктураЗаписи) Экспорт
@@ -11,6 +10,11 @@
//
+// Определяет настройки транспорта для указанной конечной точки
+//
+// Параметры:
+// КонечнаяТочкаКорреспондента - ПланОбменаСсылка.ОбменСообщениями
+//
Функция НастройкиТранспорта(Знач КонечнаяТочкаКорреспондента) Экспорт
ТекстЗапроса =
diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/НастройкиТранспортаОбменаОбластейДанных.mdo b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/НастройкиТранспортаОбменаОбластейДанных.mdo
index e49768003..1d20dd752 100644
--- a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/НастройкиТранспортаОбменаОбластейДанных.mdo
+++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластейДанных/НастройкиТранспортаОбменаОбластейДанных.mdo
@@ -267,6 +267,7 @@
50
+ trueruПоле для задания пароля для сжатия и распаковки архива сообщения обмена. Подразумевается, что пароль сжатия в базе источнике и пароль распаковки в базе приемнике должны быть одинаковыми для пары обменивающихся конфигураций.
diff --git a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form
index 7a68460e4..c60c9cbd2 100644
--- a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form
+++ b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form
@@ -120,40 +120,6 @@
Ответственные75
-
- Отступ
- 76
-
- ru
-
-
- true
- true
-
- true
-
-
- ОтступExtendedTooltip
- 86
- Label
- true
- true
-
- Left
-
-
-
- ОтступКонтекстноеМеню
- 77
- true
-
- Label
- true
- true
-
- Left
-
- СтраницыОтветственный55
@@ -726,7 +692,7 @@
- СтраницаПодписи
+ СтраницаПодписьДляНового47ГруппаДляНовыхСообщений
@@ -1105,6 +1071,37 @@
Auto
+ true
+ true
+
+ true
+
+
+ ru
+ Подпись для нового
+
+
+ ru
+ Страница подпись для нового
+
+
+ СтраницаПодписьДляНовогоРасширеннаяПодсказка
+ 99
+ Label
+ true
+ true
+
+ Left
+
+
+ Page
+
+ auto
+
+
+
+ СтраницаПодписьПриОтвете
+ 120ГруппаПриОтветеПересылке18
@@ -1489,15 +1486,15 @@
ru
- Подписи
+ Подпись при ответеru
- Страница подписи
+ Страница подпись при ответе
- СтраницаПодписиExtendedTooltip
- 99
+ СтраницаПодписьПриОтветеРасширеннаяПодсказка
+ 121Labeltruetrue
@@ -1507,6 +1504,7 @@
Page
+ Verticalauto
@@ -1685,6 +1683,10 @@
+
+ AfterWriteAtServer
+ ПослеЗаписиНаСервере
+ OnReadAtServerПриЧтенииНаСервере
diff --git a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Help/ru.html b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Help/ru.html
index d7a9e6554..e393db756 100644
--- a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Help/ru.html
+++ b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Help/ru.html
@@ -1,25 +1,74 @@
-
-
Настройки учетных записей электронной почты
+
+
Предназначена для настройки параметров учетной записи электронной почты.
Если необходимо получать, сохранять и отправлять письма с этой учетной записи во встроенном почтовом клиенте, то выберите соответствующее значение.
-
Если использование во внутреннем почтовом клиенте не предполагается, например эта учетная запись используется для обменов с другими информационными базами, то выберите значение Не использовать.
Учетные записи во встроенном почтовом клиенте делятся на два типа: Персональные и Коллективные. Если запись Персональная, то для нее флаг должен быть установлен. Для персональной учетной записи ответственный за нее управляет составом папок и является ответственным за обработку писем. Для коллективной учетной записи ответственным за папки может быть один пользователь, а ответственным за обработку писем по умолчанию другой.
-
-
Пример. В компании есть единый почтовый адрес, на который клиенты шлют претензии. Состав и порядок папок для данной учетной записи определяет руководитель службы, которая отвечает за обработку претензий. Ответственный за первичный разбор писем - это другой сотрудник. Он обрабатывает входящую корреспонденцию, и назначает письмам ответственных, которые в дальнейшем будут отвечать за обработку претензии, изложенной в письме.
В случае если нет необходимости хранить исходящие письма, успешно отправленные с данной учетной записи, то этот флаг должен быть установлен. В этом случае, после отправки письма будут удалены.
Если данный флаг установлен, то для писем, которые являются ответом или пересылаемым письмом не будут применятся правила обработки электронных писем. Такие письма всегда будут помещаться в ту же папку, что и письмо основание.
Настройка подписей производится на закладке Подписи. Можно создать подпись двух видов: для новых сообщений и для сообщений при ответе или пересылке. Установите флаг Включить для нужного вида подписи. Укажите формат подписи. Создание подписи в формате HTML позволит форматировать текст и вставлять в него картинки.
-
-
Важно. Создание подписей в формате HTML доступно, если это предусмотрено настройками программы. Данную настройку можно изменить в разделе Администрирование/Органайзер отредактировав значение флага Исходящие письма в формате HTML.
\ No newline at end of file
+
Настройка использования учетной записи во встроенном почтовом клиенте
+
Настройки производятся на вкладке Основное с помощью переключателя Использование для встроенного почтового клиента:
+
Выберите значение Получать, сохранять и отправлять письма с этой учетной записи во встроенном почтовом клиенте, если с данной учетной записи электронной почты планируется переписка.
+
Если использование во внутреннем почтовом клиенте не предполагается (например, эта учетная запись используется для обменов с другими программами), то выберите значение Не использовать.
Если учетная запись Персональная, то для нее флажок должен быть включен.
+
+
Выберите Пользователя учетной записи (ответственного за учетную запись) из списка пользователей. Поле является обязательным для заполнения.
+
+
Для персональной учетной записи ответственный за нее управляет составом папок и является ответственным за обработку писем.
+
Для коллективной учетной записи ответственным за папки может быть один пользователь, а ответственным за обработку писем по умолчанию другой (например, администратор программы).
+
+
Выберите Ответственного за обработку писем из списка пользователей. Поле является обязательным для заполнения.
+
+
Выберите Ответственного за ведение папок из списка пользователей. Поле является обязательным для заполнения.
Крупная компания имеет большое количество клиентов по всей стране.
+
+
У компании есть единый почтовый адрес, на который клиенты шлют претензии.
+
+
Состав и порядок папок для данной учетной записи определяет руководитель службы, которая отвечает за обработку претензий.
+
+
Ответственный за первичный разбор писем - это другой сотрудник. Он обрабатывает входящую корреспонденцию и назначает письмам ответственных, которые в дальнейшем будут отвечать за обработку претензии, изложенной в письме.
для новых сообщений - на вкладке Подпись для нового.
+
+
для сообщений при ответе или пересылке - на вкладке Подпись при ответе.
+
Установите флажок Включить для нужного вида подписи.
+
+
Выберите из списка формат подписи:
+
+
Обычный текст;
+
+
HTML - создание подписи в формате HTML позволит форматировать текст и вставлять в него картинки.
+
Напишите подпись в соответствующем поле. При выборе формата HTML можно форматировать текст различными способами, вставлять картинки и гиперссылки. Текст можно форматировать с помощью соответствующих кнопок, а также команд меню Все действия (в интерфейсе Такси Еще).
+
+
Необходимо учитывать, что при переключении ранее введенной подписи из формата HTML в Обычный текст часть информации (например, картинки, гиперссылки и другие элементы, которые существуют только в формате HTML), удаляется безвозвратно. Программа выводит об этом предупреждение. Для подтверждения нажмите Да.
Важно. Создание подписей в формате HTML доступно, если это предусмотрено настройками программы. Данную настройку можно изменить в разделе Администрирование - Органайзер, включив флажок Исходящие письма в формате HTML.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Module.bsl b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Module.bsl
index 4041a98bc..7bcc094d7 100644
--- a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Module.bsl
+++ b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Module.bsl
@@ -77,6 +77,23 @@
КонецЕсли;
+ УстановитьКартинкиСтраниц();
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
+
+ УстановитьКартинкиСтраниц();
+
+КонецПроцедуры
+
+&НаСервере
+Процедура УстановитьКартинкиСтраниц()
+
+ Элементы.СтраницаПодписьПриОтвете.Картинка = ВзаимодействияКлиентСервер.ПолучитьКартинкуСтраницыПодписи(Запись.ВключатьПодписьПриОтветеПересылке);
+ Элементы.СтраницаПодписьДляНового.Картинка = ВзаимодействияКлиентСервер.ПолучитьКартинкуСтраницыПодписи(Запись.ВключатьПодписьДляНовыхСообщений);
+
КонецПроцедуры
&НаСервере
@@ -212,7 +229,8 @@
Процедура ОбновитьСостояниеЭлементовФормы(Форма)
ВзаимодействияКлиентСервер.УстановитьСвойствоЭлементовГруппы(Форма.Элементы.ГруппаОсновныеНастройки, "Доступность", НЕ Форма.Запись.НеИспользоватьВоВстроенномПочтовомКлиенте);
- Форма.Элементы.СтраницаПодписи.Доступность = НЕ Форма.Запись.НеИспользоватьВоВстроенномПочтовомКлиенте;
+ Форма.Элементы.СтраницаПодписьДляНового.Доступность = НЕ Форма.Запись.НеИспользоватьВоВстроенномПочтовомКлиенте;
+ Форма.Элементы.СтраницаПодписьПриОтвете.Доступность = НЕ Форма.Запись.НеИспользоватьВоВстроенномПочтовомКлиенте;
Если Форма.Запись.ФорматПодписиДляНовыхСообщений = ПредопределенноеЗначение(
"Перечисление.СпособыРедактированияЭлектронныхПисем.HTML") Тогда
@@ -284,4 +302,5 @@
КонецПроцедуры
+
#КонецОбласти
diff --git a/SSL/src/InformationRegisters/НомераОтсканированныхФайлов/Help/ru.html b/SSL/src/InformationRegisters/НомераОтсканированныхФайлов/Help/ru.html
index 01c538eaf..82829145b 100644
--- a/SSL/src/InformationRegisters/НомераОтсканированныхФайлов/Help/ru.html
+++ b/SSL/src/InformationRegisters/НомераОтсканированныхФайлов/Help/ru.html
@@ -1,6 +1,6 @@
-
+
Предназначен для просмотра нумерации отсканированных документов и их владельцев.
-
Список можно просмотреть по команде Настройка сканирования - Открыть номера отсканированных файлов на закладке Настройки работы с файлами в персональных настройках программы.
+
Список можно просмотреть по команде Настройка сканирования - Открыть номера отсканированных файлов на закладке Работа с файлами в персональных настройках программы.
Программа автоматически присваивает номер отсканированным файлам. В списке можно отследить движение файлов, увидеть, какие файлы были удалены.
Для открытия макета в списке Макеты печатных форм можно:
нажать клавишу Enter - необходимо выбрать режим открытия макета;
@@ -9,6 +9,6 @@
Только для просмотра - макет не будет помечен как занятый Вами для редактирования и откроется внешним приложением в режиме "только просмотр".
Для просмотра и редактирования - макет будет помечен как занятый Вами для редактирования и откроется внешним приложением с возможностью внесения и сохранения изменений.
Прекращение вывода сообщения
Для того чтобы больше не выводить это сообщение, включите флажок Больше не спрашивать.
-
Поменять эту настройку затем можно с помощью команды Все действия - Задать действие при выборе макета печатной формы в списке макетов печатных форм или из персональных настроек, вкладка Печать, кнопка Задать действие при выборе макета печатной формы.
См. также:
+
Поменять эту настройку затем можно с помощью команды Все действия - Задать действие при выборе макета печатной формы в списке макетов печатных форм или из персональных настроек, страница Печать, кнопка Задать действие при выборе макета печатной формы.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Help/ru.html b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Help/ru.html
index 524554ec2..274883930 100644
--- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Help/ru.html
+++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Произошла ошибка. Необходимо указать другую папку для получения файла.
Нажмите Изменить рабочий каталог печати, введите путь к папке на компьютере.
После этого нажмите Повторить печать.
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form
index 337716ea3..62296e24b 100644
--- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form
+++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form
@@ -784,6 +784,10 @@
NotificationProcessingОбработкаОповещения
+
+ OnOpen
+ ПриОткрытии
+ BeforeCloseПередЗакрытием
diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Help/ru.html b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Help/ru.html
index f38a4f7d4..615d8dc9a 100644
--- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Help/ru.html
+++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для управления макетами печати. В списке перечислены макеты (бланки) всех печатных форм, имеющихся в программе.
Открыть список можно с помощью команды Макеты печатных форм раздела Администрирование - Печатные формы, отчеты и обработки.
Макеты в виде табличного документа редактируются в самой программе, а для редактирования макетов в виде офисных документов в форматах Microsoft Word и OpenOffice.org Writer на компьютере должны быть установлены соответствующие офисные программы.
Как правило, никаких специальных действий для запуска нужной программы выполнять не требуется, достаточно кликнуть по файлу макета, и нужная программа запустится автоматически (при условии, что она установлена).
Многие документы, справочники и другие объекты программы имеют свои печатные формы. Печатные формы могут формироваться в виде табличных документов или офисных документов в форматах Microsoft Word, OpenOffice.org Writer, Adobe PDF, HTML, Microsoft Excel, а также в формате табличного документа 1С:Предприятие (.mxl). При этом не требуется, чтобы сами эти программы были установлены на компьютере.
В то же время, для формирования печатных форм, которые сразу выводятся в форматах Microsoft Word и OpenOffice.org Writer, необходимо, чтобы на компьютере были установлены соответствующие офисные программы.
Особенности формирования печатных форм в веб-клиенте
Правила конвертации объектов можно открыть из настройки синхронизации данных по команде Все действия - Загрузить правила конвертации объектов.
+
Источник правил
+
Для стандартной синхронизации данных между типовыми конфигурациями используются Типовые правила из конфигурации (имя макета правил конвертации, из которого были получены типовые правила, указывается). Однако в ряде случаев необходимо использовать Правила из файла (например, если синхронизация ведется между базами с нетиповыми конфигурациями) или Режим отладки (например, если во время синхронизации данных произошла ошибка).
+
С помощью переключателя Источник правил можно установить, откуда брать правила регистрации объектов:
+
+
Типовые правила из конфигурации (выбраны по умолчанию).
+
+
Правила из файла. Использование правил, загруженных из файла, может привести к ошибкам при переходе на новую версию программы.
+
+
Режим отладки. Если выбран Режим отладки, то становятся доступными следующие настройки:
+
+
Подключить внешнюю обработку для отладки выгрузки – указывается файл внешней обработки, содержащей отладочный модуль обработчиков выгрузки, сформированный в конфигурации "Конвертация данных". В клиент-серверном режиме работы указывается путь на сервере.
+
+
Подключить внешнюю обработку для отладки загрузки – указывается файл внешней обработки, содержащей отладочный модуль обработчиков загрузки, сформированный в конфигурации "Конвертация данных". В клиент-серверном режиме работы указывается путь на сервере.
+
+
Режим протоколирования синхронизации данных – если включено, то в процессе обмена данными возникающие события и ошибки будут записываться в указанный файл. Если файл не задан, то сообщения будут выводиться в Журнал регистрации.
+
+
Не останавливать выполнение обмена данными при возникновении ошибки – если установлено, то выполнение синхронизации данных не будет остановлено при возникновении какой-либо ошибки. Обмен данными завершится до конца с выводом отладочных сообщений в файл протокола обмена или журнал регистрации.
Ниже выводится наименование правил, которые в данный момент используются.
+
Информация о правилах
+
Для контроля выводится информация о правилах:
+
+
Предупреждение о возможности возникновения ошибок при использовании правил из внешнего файла;
+
+
Правила конвертации этой программы от - указывается дата и время создания правил;
+
+
Конфигурация источник - указывается версия правил конвертации объектов;
+
+
Конфигурация приемник - указывается версия правил конвертации объектов;
+
+
Правила конвертации корреспондента от - указывается дата и время создания правил;
+
Конфигурация источник - указывается версия правил конвертации объектов;
+
Конфигурация приемник - указывается версия правил конвертации объектов.
Дополнительно
+
Включите флажок Использовать фильтр выборочной регистрации объектов.
Загрузка правил
+
+
Установите переключатель Источник правил в нужное положение.
+
+
+
Нажмите Загрузить правила.
+
+
+
При необходимости укажите путь к файлу с правилами.
Выгрузка правил
+
При необходимости правила регистрации можно выгрузить в файл.
+
+
Для этого нажмите Выгрузить правила.
+
+
Выберите способ выгрузки:
+
+
Обычным файлом;
+
+
В архиве .zip.
+
Выберите путь к файлу на компьютере или на сетевом диске, наименование проставляется программой по умолчанию. Нажмите Сохранить.
Замена типовых правил конвертации объектов правилами из внешнего файла
+
Установить значение переключателя Источник правил в положение Правила из файла или Режим отладки и по кнопке Загрузить правила выбрать файл правил на компьютере или в сетевой папке.
+
Обратить внимание, что загружены корректные правила, подходящие для используемых версий программы-источника и программы-приемника. Для этого выводится Информация о правилах, где указано, от какой даты эти правила.
+
Нажать на кнопку Записать и закрыть. Загруженные правила будут применены немедленно.
Примечание: правила конвертации объектов и правила регистрации объектов используются для всех однотипных синхронизаций данных (которые основываются на одном плане обмена; например: на базе плана обмена Полный настроено две синхронизации данных "Синхронизация с филиалом в Краснодаре" и "Синхронизация с представительством в Киеве"). Поэтому если в программе настроено несколько однотипных синхронизаций, то замену правил достаточно выполнить однократно (выбрав любую из настроенных синхронизаций данных).
\ No newline at end of file
diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl
new file mode 100644
index 000000000..268c5c816
--- /dev/null
+++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl
@@ -0,0 +1,823 @@
+
+&НаКлиенте
+Перем ВнешниеРесурсыРазрешены;
+
+#Область ОбработчикиСобытийФормы
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
+ Возврат;
+ КонецЕсли;
+
+ ИмяПланаОбмена = Параметры.ИмяПланаОбмена;
+ РежимСовместимости = Ложь;
+
+ Если Не ЗначениеЗаполнено(ИмяПланаОбмена) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Заголовок = СтрЗаменить(Заголовок, "%1", Метаданные.ПланыОбмена[ИмяПланаОбмена].Синоним);
+
+ ОбновитьСписокВыбораМакетаПравил();
+
+ ОбновитьИнформациюОПравилах();
+
+ Элементы.ГруппаОтладки.Доступность = (ИсточникПравил = "ЗагруженныеИзФайла");
+ Элементы.ГруппаНастройкиОтладки.Доступность = РежимОтладки;
+ Элементы.ИсточникФайл.Доступность = (ИсточникПравил = "ЗагруженныеИзФайла");
+
+ СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными();
+
+ ИмяПрограммы = Метаданные.ПланыОбмена[ИмяПланаОбмена].Синоним;
+ РасположениеКомплектаПравил = ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена,
+ "ПутьКФайлуКомплектаПравилНаПользовательскомСайте, ПутьКФайлуКомплектаПравилВКаталогеШаблонов");
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПриОткрытии(Отказ)
+
+ ШаблонПодсказки = Нстр("ru = 'Комплект правил можно скачать с %1
+ |или найти в %2'");
+
+ ШаблонКаталогОбновлений = Нстр("ru = 'каталоге поставки программы ""%1""'");
+ ШаблонКаталогОбновлений = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКаталогОбновлений, ИмяПрограммы);
+ Если Не ПустаяСтрока(РасположениеКомплектаПравил.ПутьКФайлуКомплектаПравилВКаталогеШаблонов) Тогда
+
+ КаталогШаблонов = КаталогШаблонов();
+
+ РасположениеФайла = КаталогШаблонов() + РасположениеКомплектаПравил.ПутьКФайлуКомплектаПравилВКаталогеШаблонов;
+
+ Если ФайлСуществуетНаКлиенте(РасположениеФайла) Тогда
+ ШаблонКаталогОбновлений = Новый ФорматированнаяСтрока(ШаблонКаталогОбновлений,,,, РасположениеФайла);
+ КонецЕсли;
+
+ КонецЕсли;
+
+ ШаблонПользовательскийСайт = Нстр("ru = 'сайта поддержки пользователей системы ""1C:Предприятие 8""'");
+ Если Не ПустаяСтрока(РасположениеКомплектаПравил.ПутьКФайлуКомплектаПравилНаПользовательскомСайте) Тогда
+
+ ШаблонПользовательскийСайт = Новый ФорматированнаяСтрока(ШаблонПользовательскийСайт,,,, РасположениеКомплектаПравил.ПутьКФайлуКомплектаПравилНаПользовательскомСайте);
+
+ КонецЕсли;
+
+ ТекстПодсказки = ПодставитьПараметрыВФорматированнуюСтроку(ШаблонПодсказки, ШаблонПользовательскийСайт, ШаблонКаталогОбновлений);
+
+ Элементы.ДекорацияИнформацияОПолученииПравил.Заголовок = ТекстПодсказки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Функция ПроверитьЗаполнениеНаКлиенте()
+
+ ЕстьНезаполненныеПоля = Ложь;
+
+ Если РежимОтладки Тогда
+
+ Если РежимОтладкиВыгрузки Тогда
+
+ СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ИмяФайлаОбработкиДляОтладкиВыгрузки);
+ ИмяФайла = СтруктураИмениФайла.ИмяБезРасширения;
+
+ Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
+
+ СтрокаСообщения = НСтр("ru = 'Не задано имя файла внешней обработки.'");
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтрокаСообщения,, "ИмяФайлаОбработкиДляОтладкиВыгрузки",, ЕстьНезаполненныеПоля);
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Если РежимОтладкиЗагрузки Тогда
+
+ СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ИмяФайлаОбработкиДляОтладкиЗагрузки);
+ ИмяФайла = СтруктураИмениФайла.ИмяБезРасширения;
+
+ Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
+
+ СтрокаСообщения = НСтр("ru = 'Не задано имя файла внешней обработки.'");
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтрокаСообщения,, "ИмяФайлаОбработкиДляОтладкиЗагрузки",, ЕстьНезаполненныеПоля);
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Если РежимПротоколированияОбменаДанными Тогда
+
+ СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ИмяФайлаПротоколаОбмена);
+ ИмяФайла = СтруктураИмениФайла.ИмяБезРасширения;
+
+ Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
+
+ СтрокаСообщения = НСтр("ru = 'Не задано имя файла протокола обмена.'");
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СтрокаСообщения,, "ИмяФайлаПротоколаОбмена",, ЕстьНезаполненныеПоля);
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Возврат Не ЕстьНезаполненныеПоля;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовШапкиФормы
+
+&НаКлиенте
+Процедура ИсточникПравилПриИзменении(Элемент)
+
+ Элементы.ГруппаОтладки.Доступность = (ИсточникПравил = "ЗагруженныеИзФайла");
+ Элементы.ИсточникФайл.Доступность = (ИсточникПравил = "ЗагруженныеИзФайла");
+
+ Если ИсточникПравил = "ТиповыеИзКонфигурации" Тогда
+
+ РежимОтладки = Ложь;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВключитьОтладкуВыгрузкиПриИзменении(Элемент)
+
+ Элементы.ВнешняяОбработкаДляОтладкиВыгрузки.Доступность = РежимОтладкиВыгрузки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВнешняяОбработкаДляОтладкиВыгрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+
+ НастройкиДиалога = Новый Структура;
+ НастройкиДиалога.Вставить("Фильтр", НСтр("ru = 'Внешняя обработка(*.epf)'") + "|*.epf" );
+
+ ОбменДаннымиКлиент.ОбработчикВыбораФайла(ЭтотОбъект, "ИмяФайлаОбработкиДляОтладкиВыгрузки", СтандартнаяОбработка, НастройкиДиалога);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВнешняяОбработкаДляОтладкиЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+
+ НастройкиДиалога = Новый Структура;
+ НастройкиДиалога.Вставить("Фильтр", НСтр("ru = 'Внешняя обработка(*.epf)'") + "|*.epf" );
+
+ СтандартнаяОбработка = Ложь;
+ ОбменДаннымиКлиент.ОбработчикВыбораФайла(ЭтотОбъект, "ИмяФайлаОбработкиДляОтладкиЗагрузки", СтандартнаяОбработка, НастройкиДиалога);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВключитьОтладкуЗагрузкиПриИзменении(Элемент)
+
+ Элементы.ВнешняяОбработкаДляОтладкиЗагрузки.Доступность = РежимОтладкиЗагрузки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВключитьПротоколированиеОбменаДаннымиПриИзменении(Элемент)
+
+ Элементы.ФайлПротоколаОбмена.Доступность = РежимПротоколированияОбменаДанными;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ФайлПротоколаОбменаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
+
+ НастройкиДиалога = Новый Структура;
+ НастройкиДиалога.Вставить("Фильтр", НСтр("ru = 'Текстовый документ(*.txt)'")+ "|*.txt" );
+ НастройкиДиалога.Вставить("ПроверятьСуществованиеФайла", Ложь);
+
+ ОбменДаннымиКлиент.ОбработчикВыбораФайла(ЭтотОбъект, "ИмяФайлаПротоколаОбмена", СтандартнаяОбработка, НастройкиДиалога);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ФайлПротоколаОбменаОткрытие(Элемент, СтандартнаяОбработка)
+
+ ОбменДаннымиКлиент.ОбработчикОткрытияФайлаИлиКаталога(ЭтотОбъект, "ИмяФайлаПротоколаОбмена", СтандартнаяОбработка);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВключитьРежимОтладкиПриИзменении(Элемент)
+
+ Элементы.ГруппаНастройкиОтладки.Доступность = РежимОтладки;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ДекорацияИнформацияОПолученииПравилОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
+
+ Если Найти(НавигационнаяСсылка, "http") = 0 Тогда
+ СтандартнаяОбработка = Ложь;
+ ЗапуститьПриложение(НавигационнаяСсылка);
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+&НаКлиенте
+Процедура ЗагрузитьПравила(Команда)
+
+ // Из файла с клиента
+ ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ИмяФайлаПравил);
+
+ ПараметрыДиалога = Новый Структура;
+ ПараметрыДиалога.Вставить("Заголовок", НСтр("ru = 'Укажите архив с правилами обмена'"));
+ ПараметрыДиалога.Вставить("Фильтр", НСтр("ru = 'Архивы ZIP (*.zip)'") + "|*.zip");
+ ПараметрыДиалога.Вставить("ПолноеИмяФайла", ЧастиИмени.ПолноеИмя);
+
+ Оповещение = Новый ОписаниеОповещения("ЗагрузитьПравилаЗавершение", ЭтотОбъект);
+ ОбменДаннымиКлиент.ВыбратьИПередатьФайлНаСервер(Оповещение, ПараметрыДиалога, УникальныйИдентификатор);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВыгрузитьПравила(Команда)
+
+ ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ИмяФайлаПравил);
+
+ // Выгружаем как архив
+ АдресХранения = ПолучитьАдресВременногоХранилищаАрхиваПравилНаСервере();
+
+ Если ПустаяСтрока(АдресХранения) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если ПустаяСтрока(ЧастиИмени.ИмяБезРасширения) Тогда
+ ПолноеИмяФайла = НСтр("ru = 'Правила конвертации'");
+ Иначе
+ ПолноеИмяФайла = ЧастиИмени.ИмяБезРасширения;
+ КонецЕсли;
+
+ ПараметрыДиалога = Новый Структура;
+ ПараметрыДиалога.Вставить("Режим", РежимДиалогаВыбораФайла.Сохранение);
+ ПараметрыДиалога.Вставить("Заголовок", НСтр("ru = 'Укажите в какой файл выгрузить правила'") );
+ ПараметрыДиалога.Вставить("ПолноеИмяФайла", ПолноеИмяФайла);
+ ПараметрыДиалога.Вставить("Фильтр", НСтр("ru = 'Архивы ZIP (*.zip)'") + "|*.zip");
+
+ ПолучаемыйФайл = Новый Структура("Имя, Хранение", ПолноеИмяФайла, АдресХранения);
+
+ ОбменДаннымиКлиент.ВыбратьИСохранитьФайлНаКлиенте(ПолучаемыйФайл, ПараметрыДиалога);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗаписатьИЗакрыть(Команда)
+
+ Если ИсточникПравил = "ТиповыеИзКонфигурации" Тогда
+ ПередЗагрузкойПравил(Неопределено, "");
+ Иначе
+ Если ИсточникПравилКонвертации = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МакетКонфигурации") Тогда
+
+ ОписаниеОшибки = НСтр("ru = 'Правила из файла не загружены. Закрытие приведет к использованию типовых правил конвертации.
+ |Использовать типовые правила конвертации?'");
+
+ Оповещение = Новый ОписаниеОповещения("ЗакрытьФормуЗагрузкиПравил", ЭтотОбъект);
+
+ Кнопки = Новый СписокЗначений;
+ Кнопки.Добавить("Использовать", Нстр("ru = 'Использовать'"));
+ Кнопки.Добавить("Отмена", Нстр("ru = 'Отмена'"));
+
+ ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
+ ПараметрыФормы.КнопкаПоУмолчанию = "Использовать";
+ ПараметрыФормы.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
+
+ СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Оповещение, ОписаниеОшибки, Кнопки, ПараметрыФормы);
+ Иначе
+ Закрыть();
+ КонецЕсли;
+ КонецЕсли;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+&НаСервере
+Процедура ОбновитьСписокВыбораМакетаПравил()
+
+ Элементы.ИсточникМакетКонфигурации.ТекущаяСтраница = Элементы.СтраницаОдинМакет;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗагрузитьПравилаЗавершение(Знач РезультатПомещенияФайлов, Знач ДополнительныеПараметры) Экспорт
+
+ АдресПомещенногоФайла = РезультатПомещенияФайлов.Хранение;
+ ТекстОшибки = РезультатПомещенияФайлов.ОписаниеОшибки;
+
+ Если ПустаяСтрока(ТекстОшибки) И ПустаяСтрока(АдресПомещенногоФайла) Тогда
+ ТекстОшибки = НСтр("ru = 'Ошибка передачи файла настроек синхронизации данных на сервер'");
+ КонецЕсли;
+
+ Если Не ПустаяСтрока(ТекстОшибки) Тогда
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
+ Возврат;
+ КонецЕсли;
+
+ // Успешно передали файл, загружаем на сервере
+ ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(РезультатПомещенияФайлов.Имя);
+
+ Если НРег(ЧастиИмени.Расширение) <> ".zip" Тогда
+ ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Некорректный формат файла комплекта правил. Ожидается zip архив, содержащий три файла:
+ |ExchangeRules.xml - правила конвертации для текущей программы;
+ |CorrespondentExchangeRules.xml - правила конвертации для программы-корреспондента;
+ |RegistrationRules.xml - правила регистрации для текущей программы.'"));
+ КонецЕсли;
+
+ ПередЗагрузкойПравил(АдресПомещенногоФайла, ЧастиИмени.Имя);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВыполнитьЗагрузкуПравил(Знач АдресПомещенногоФайла, Знач ИмяФайла, ОписаниеОшибки = Неопределено)
+
+ Отказ = Ложь;
+
+ Состояние(НСтр("ru = 'Выполняется загрузка правил в информационную базу...'"));
+ ЗагрузитьПравилаНаСервере(Отказ, АдресПомещенногоФайла, ИмяФайла, ОписаниеОшибки);
+ Состояние();
+
+ Если ТипЗнч(ОписаниеОшибки) <> Тип("Булево") И ОписаниеОшибки <> Неопределено Тогда
+
+ Если ОписаниеОшибки.ВидОшибки = "ТребуетсяПовторЗапросаРазрешений" Тогда
+
+ ПередЗагрузкойПравил(АдресПомещенногоФайла, ИмяФайла);
+
+ Иначе
+
+ Кнопки = Новый СписокЗначений;
+
+ Если ОписаниеОшибки.ВидОшибки = "НекорректнаяКонфигурация" Тогда
+ Кнопки.Добавить("Отмена", Нстр("ru = 'Закрыть'"));
+ Иначе
+ Кнопки.Добавить("Продолжить", Нстр("ru = 'Продолжить'"));
+ Кнопки.Добавить("Отмена", Нстр("ru = 'Отмена'"));
+ КонецЕсли;
+
+ ДополнительныеПараметры = Новый Структура;
+ ДополнительныеПараметры.Вставить("АдресПомещенногоФайла", АдресПомещенногоФайла);
+ ДополнительныеПараметры.Вставить("ИмяФайла", ИмяФайла);
+ Оповещение = Новый ОписаниеОповещения("ПослеПроверкиПравилКонвертацииНаСовместимость", ЭтотОбъект, ДополнительныеПараметры);
+
+ ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
+ ПараметрыФормы.КнопкаПоУмолчанию = "Отмена";
+ ПараметрыФормы.Картинка = ОписаниеОшибки.Картинка;
+ ПараметрыФормы.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
+ Если ОписаниеОшибки.ВидОшибки = "НекорректнаяКонфигурация" Тогда
+ ПараметрыФормы.Заголовок = Нстр("ru = 'Правила не могут быть загружены'");
+ Иначе
+ ПараметрыФормы.Заголовок = Нстр("ru = 'Синхронизация данных может работать некорректно'");
+ КонецЕсли;
+
+ СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Оповещение, ОписаниеОшибки.ТекстОшибки, Кнопки, ПараметрыФормы);
+
+ КонецЕсли;
+
+ ИначеЕсли Отказ Тогда
+ ТекстОшибки = НСтр("ru = 'В процессе загрузки правил были обнаружены ошибки.
+ |Перейти в журнал регистрации?'");
+ Оповещение = Новый ОписаниеОповещения("ПоказатьЖурналРегистрацииПриОшибке", ЭтотОбъект);
+ ПоказатьВопрос(Оповещение, ТекстОшибки, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет);
+ Иначе
+ ПоказатьОповещениеПользователя(,, НСтр("ru = 'Правила успешно загружены в информационную базу.'"));
+ Закрыть();
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПоказатьЖурналРегистрацииПриОшибке(Ответ, ДополнительныеПараметры) Экспорт
+
+ Если Ответ = КодВозвратаДиалога.Да Тогда
+
+ Отбор = Новый Структура;
+ Отбор.Вставить("СобытиеЖурналаРегистрации", СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными);
+ ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтотОбъект, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ЗагрузитьПравилаНаСервере(Отказ, АдресВременногоХранилища, ИмяФайлаПравил, ОписаниеОшибки)
+
+ ИсточникПравилКомплекта = ?(ИсточникПравил = "ТиповыеИзКонфигурации",
+ Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации, Перечисления.ИсточникиПравилДляОбменаДанными.Файл);
+
+ ЗаписьПравилКонвертации = РегистрыСведений.ПравилаДляОбменаДанными.СоздатьМенеджерЗаписи();
+ ЗаписьПравилКонвертации.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов;
+ ЗаписьПравилКонвертации.ИмяМакетаПравил = ИмяМакетаПравилКонвертации;
+ ЗаписьПравилКонвертации.ИмяМакетаПравилКорреспондента = ИмяМакетаПравилКорреспондента;
+ ЗаписьПравилКонвертации.ИнформацияОПравилах = ИнформацияОПравилахКонвертации;
+
+ ЗаполнитьЗначенияСвойств(ЗаписьПравилКонвертации, ЭтотОбъект);
+ ЗаписьПравилКонвертации.ИсточникПравил = ИсточникПравилКомплекта;
+
+ ЗаписьПравилРегистрации = РегистрыСведений.ПравилаДляОбменаДанными.СоздатьМенеджерЗаписи();
+ ЗаписьПравилРегистрации.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов;
+ ЗаписьПравилРегистрации.ИмяМакетаПравил = ИмяМакетаПравилРегистрации;
+ ЗаписьПравилРегистрации.ИнформацияОПравилах = ИнформацияОПравилахРегистрации;
+ ЗаписьПравилРегистрации.ИмяФайлаПравил = ИмяФайлаПравил;
+ ЗаписьПравилРегистрации.ИмяПланаОбмена = ИмяПланаОбмена;
+ ЗаписьПравилРегистрации.ИсточникПравил = ИсточникПравилКомплекта;
+
+ СтруктураЗаписейРегистра = Новый Структура();
+ СтруктураЗаписейРегистра.Вставить("ЗаписьПравилКонвертации", ЗаписьПравилКонвертации);
+ СтруктураЗаписейРегистра.Вставить("ЗаписьПравилРегистрации", ЗаписьПравилРегистрации);
+
+ РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьКомплектПравил(Отказ, СтруктураЗаписейРегистра,
+ ОписаниеОшибки, АдресВременногоХранилища, ИмяФайлаПравил);
+
+ Если Не Отказ Тогда
+
+ Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() И РежимОтладки
+ И РежимСовместимости <> ЗаписьПравилКонвертации.РежимСовместимости Тогда
+
+ РежимСовместимости = ЗаписьПравилКонвертации.РежимСовместимости;
+ ОписаниеОшибки = Новый Структура("ВидОшибки", "ТребуетсяПовторЗапросаРазрешений");
+ Возврат;
+
+ КонецЕсли;
+
+ ЗаписьПравилКонвертации.Записать();
+ ЗаписьПравилРегистрации.Записать();
+
+ Модифицированность = Ложь;
+
+ // кеш открытых сеансов для механизма регистрации стал неактуальным
+ ОбменДаннымиВызовСервера.СброситьКэшМеханизмаРегистрацииОбъектов();
+ ОбновитьПовторноИспользуемыеЗначения();
+ ОбновитьИнформациюОПравилах();
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция ПолучитьАдресВременногоХранилищаАрхиваПравилНаСервере()
+
+ // Создаем временный каталог на сервере и формируем пути к файлам и папкам
+ ИмяВременнойПапки = ПолучитьИмяВременногоФайла("");
+ СоздатьКаталог(ИмяВременнойПапки);
+
+ ПутьКФайлу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "ExchangeRules";
+ ПутьКФайлуКорреспондента = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "CorrespondentExchangeRules";
+ ПутьКФайлуРегистрации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "RegistrationRules";
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ПравилаXML,
+ | ПравилаДляОбменаДанными.ПравилаXMLКорреспондента,
+ | ПравилаДляОбменаДанными.ВидПравил
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена";
+
+ Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена);
+
+ Результат = Запрос.Выполнить();
+
+ Если Результат.Пустой() Тогда
+
+ НСтрока = НСтр("ru = 'Не удалось получить правила обмена.'");
+ ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока);
+ Возврат "";
+
+ Иначе
+
+ Выборка = Результат.Выбрать();
+
+ Пока Выборка.Следующий() Цикл
+
+ Если Выборка.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов Тогда
+
+ // Получаем, сохраняем и архивируем файл правил конвертации во временном каталоге
+ ДвоичныеДанныеПравил = Выборка.ПравилаXML.Получить();
+ ДвоичныеДанныеПравил.Записать(ПутьКФайлу + ".xml");
+
+ // Получаем, сохраняем и архивируем файл правил конвертации корреспондента во временном каталоге
+ ДвоичныеДанныеПравилКорреспондента = Выборка.ПравилаXMLКорреспондента.Получить();
+ ДвоичныеДанныеПравилКорреспондента.Записать(ПутьКФайлуКорреспондента + ".xml");
+
+ Иначе
+ // Получаем, сохраняем и архивируем файл правил регистрации во временном каталоге
+ ДвоичныеДанныеПравилРегистрации = Выборка.ПравилаXML.Получить();
+ ДвоичныеДанныеПравилРегистрации.Записать(ПутьКФайлуРегистрации + ".xml");
+ КонецЕсли;
+
+ КонецЦикла;
+
+ МаскаУпаковкиФайлов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "*.xml";
+ ОбменДаннымиСервер.ЗапаковатьВZipФайл(ПутьКФайлу + ".zip", МаскаУпаковкиФайлов);
+
+ // Помещаем архив правил в хранилище
+ ДвоичныеДанныеАрхиваПравил = Новый ДвоичныеДанные(ПутьКФайлу + ".zip");
+ АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанныеАрхиваПравил);
+
+ Возврат АдресВременногоХранилища;
+
+ КонецЕсли;
+
+КонецФункции
+
+&НаСервере
+Процедура ОбновитьИнформациюОПравилах()
+
+ ИнформацияОПравилах();
+
+ ИсточникПравил = ?(ИсточникПравилРегистрации = Перечисления.ИсточникиПравилДляОбменаДанными.Файл
+ ИЛИ ИсточникПравилКонвертации = Перечисления.ИсточникиПравилДляОбменаДанными.Файл,
+ "ЗагруженныеИзФайла", "ТиповыеИзКонфигурации");
+
+ ИнформацияОПравилахОбщая = "[ИнформацияОбИспользовании]
+ |
+ |[ИнформацияОПравилахРегистрации]
+ |
+ |[ИнформацияОПравилахКонвертации]";
+
+ Если ИсточникПравил = "ЗагруженныеИзФайла" Тогда
+ ИнформацияОбИспользовании = НСтр("ru = 'Используются правила загруженные из файла.'");
+ Иначе
+ ИнформацияОбИспользовании = НСтр("ru = 'Используются типовые правила из состава конфигурации.'");
+ КонецЕсли;
+
+ ИнформацияОПравилахОбщая = СтрЗаменить(ИнформацияОПравилахОбщая, "[ИнформацияОбИспользовании]", ИнформацияОбИспользовании);
+ ИнформацияОПравилахОбщая = СтрЗаменить(ИнформацияОПравилахОбщая, "[ИнформацияОПравилахКонвертации]", ИнформацияОПравилахКонвертации);
+ ИнформацияОПравилахОбщая = СтрЗаменить(ИнформацияОПравилахОбщая, "[ИнформацияОПравилахРегистрации]", ИнформацияОПравилахРегистрации);
+
+КонецПроцедуры
+
+&НаСервере
+Процедура ИнформацияОПравилах()
+
+ Запрос = Новый Запрос;
+ Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена);
+
+ Запрос.Текст = "ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ИмяМакетаПравил КАК ИмяМакетаПравилКонвертации,
+ | ПравилаДляОбменаДанными.ИмяМакетаПравилКорреспондента КАК ИмяМакетаПравилКорреспондента,
+ | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиВыгрузки,
+ | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиЗагрузки,
+ | ПравилаДляОбменаДанными.ИмяФайлаПравил КАК ИмяФайлаПравилКонвертации,
+ | ПравилаДляОбменаДанными.ИмяФайлаПротоколаОбмена,
+ | ПравилаДляОбменаДанными.ИнформацияОПравилах КАК ИнформацияОПравилахКонвертации,
+ | ПравилаДляОбменаДанными.ИспользоватьФильтрВыборочнойРегистрацииОбъектов,
+ | ПравилаДляОбменаДанными.ИсточникПравил КАК ИсточникПравилКонвертации,
+ | ПравилаДляОбменаДанными.НеОстанавливатьПоОшибке,
+ | ПравилаДляОбменаДанными.РежимОтладки,
+ | ПравилаДляОбменаДанными.РежимОтладкиВыгрузки,
+ | ПравилаДляОбменаДанными.РежимОтладкиЗагрузки,
+ | ПравилаДляОбменаДанными.РежимПротоколированияОбменаДанными
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена
+ | И ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов)";
+
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ Если Выборка.Следующий() Тогда
+ ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
+ КонецЕсли;
+
+ Запрос.Текст = "ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ИмяМакетаПравил КАК ИмяМакетаПравилРегистрации,
+ | ПравилаДляОбменаДанными.ИмяФайлаПравил КАК ИмяФайлаПравилРегистрации,
+ | ПравилаДляОбменаДанными.ИнформацияОПравилах КАК ИнформацияОПравилахРегистрации,
+ | ПравилаДляОбменаДанными.ИсточникПравил КАК ИсточникПравилРегистрации
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена
+ | И ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов)";
+
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ Если Выборка.Следующий() Тогда
+ ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ПередЗагрузкойПравил(Знач АдресПомещенногоФайла, Знач ИмяФайла)
+
+ Если Не ПроверитьЗаполнениеНаКлиенте() Тогда
+ Возврат;
+ КонецЕсли;
+
+ Если ВнешниеРесурсыРазрешены <> Истина Тогда
+
+ ДополнительныеПараметры = Новый Структура;
+ ДополнительныеПараметры.Вставить("АдресПомещенногоФайла", АдресПомещенногоФайла);
+ ДополнительныеПараметры.Вставить("ИмяФайла", ИмяФайла);
+ ОповещениеОЗакрытии = Новый ОписаниеОповещения("РазрешитьВнешнийРесурсЗавершение", ЭтотОбъект, ДополнительныеПараметры);
+ Запросы = СоздатьЗапросНаИспользованиеВнешнихРесурсов();
+ РаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, ЭтотОбъект, ОповещениеОЗакрытии);
+ Возврат;
+
+ КонецЕсли;
+ ВнешниеРесурсыРазрешены = Ложь;
+
+ ВыполнитьЗагрузкуПравил(АдресПомещенногоФайла, ИмяФайла);
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура РазрешитьВнешнийРесурсЗавершение(Результат, ДополнительныеПараметры) Экспорт
+
+ Если Результат = КодВозвратаДиалога.ОК Тогда
+ ВнешниеРесурсыРазрешены = Истина;
+ ПередЗагрузкойПравил(ДополнительныеПараметры.АдресПомещенногоФайла, ДополнительныеПараметры.ИмяФайла);
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаСервере
+Функция СоздатьЗапросНаИспользованиеВнешнихРесурсов()
+
+ ЗапросыРазрешений = Новый Массив;
+ ПравилаРегистрацииИзФайла = (ИсточникПравил <> "ТиповыеИзКонфигурации");
+ СтруктураЗаписи = Новый Структура;
+ СтруктураЗаписи.Вставить("ИмяПланаОбмена", ИмяПланаОбмена);
+ СтруктураЗаписи.Вставить("РежимСовместимости", РежимСовместимости);
+ СтруктураЗаписи.Вставить("РежимОтладки", РежимОтладки);
+ СтруктураЗаписи.Вставить("РежимОтладкиВыгрузки", РежимОтладкиВыгрузки);
+ СтруктураЗаписи.Вставить("РежимОтладкиЗагрузки", РежимОтладкиЗагрузки);
+ СтруктураЗаписи.Вставить("РежимПротоколированияОбменаДанными", РежимПротоколированияОбменаДанными);
+ СтруктураЗаписи.Вставить("ИмяФайлаОбработкиДляОтладкиВыгрузки", ИмяФайлаОбработкиДляОтладкиВыгрузки);
+ СтруктураЗаписи.Вставить("ИмяФайлаОбработкиДляОтладкиЗагрузки", ИмяФайлаОбработкиДляОтладкиЗагрузки);
+ СтруктураЗаписи.Вставить("ИмяФайлаПротоколаОбмена", ИмяФайлаПротоколаОбмена);
+ РегистрыСведений.ПравилаДляОбменаДанными.ЗапросНаИспользованиеВнешнихРесурсов(ЗапросыРазрешений, СтруктураЗаписи, Истина, ПравилаРегистрацииИзФайла);
+ Возврат ЗапросыРазрешений;
+
+КонецФункции
+
+&НаКлиенте
+// Возвращает форматированную строку, построенную по шаблону, например "%1 пошел в %2"
+//
+// Параметры:
+// Шаблон - Строка - заготовка для формирования
+// Строка1 - Строка, ФорматированнаяСтрока, Картинка, Неопределено - подставляемое значение
+// Строка2 - Строка, ФорматированнаяСтрока, Картинка, Неопределено - подставляемое значение
+//
+// Возвращаемое значение:
+// ФорматированнаяСтрока - сформированная по входящим параметрам
+//
+Функция ПодставитьПараметрыВФорматированнуюСтроку(Знач Шаблон,
+ Знач Строка1 = Неопределено, Знач Строка2 = Неопределено)
+
+ ЧастиСтроки = Новый Массив;
+ ДопустимыеТипы = Новый ОписаниеТипов("Строка, ФорматированнаяСтрока, Картинка");
+ Начало = 1;
+
+ Пока Истина Цикл
+
+ Фрагмент = Сред(Шаблон, Начало);
+
+ Позиция = Найти(Фрагмент, "%");
+
+ Если Позиция = 0 Тогда
+
+ ЧастиСтроки.Добавить(Фрагмент);
+
+ Прервать;
+
+ КонецЕсли;
+
+ Следующий = Сред(Фрагмент, Позиция + 1, 1);
+
+ Если Следующий = "1" Тогда
+
+ Значение = Строка1;
+
+ ИначеЕсли Следующий = "2" Тогда
+
+ Значение = Строка2;
+
+ ИначеЕсли Следующий = "%" Тогда
+
+ Значение = "%";
+
+ Иначе
+
+ Значение = Неопределено;
+
+ Позиция = Позиция - 1;
+
+ КонецЕсли;
+
+ ЧастиСтроки.Добавить(Лев(Фрагмент, Позиция - 1));
+
+ Если Значение <> Неопределено Тогда
+
+ Значение = ДопустимыеТипы.ПривестиЗначение(Значение);
+
+ Если Значение <> Неопределено Тогда
+
+ ЧастиСтроки.Добавить( Значение );
+
+ КонецЕсли;
+
+ КонецЕсли;
+
+ Начало = Начало + Позиция + 1;
+
+ КонецЦикла;
+
+ Возврат Новый ФорматированнаяСтрока(ЧастиСтроки);
+
+КонецФункции
+
+// Определение каталога шаблонов конфигураций и обновлений на данном компьютере.
+//
+&НаКлиенте
+Функция КаталогШаблонов()
+
+ Постфикс = "1C\1Cv8\tmplts\";
+
+ КаталогПоУмолчанию = КаталогAppData() + Постфикс;
+ ИмяФайла = КаталогAppData() + "1C\1CEStart\1CEStart.cfg";
+ Если Не ФайлСуществуетНаКлиенте(ИмяФайла) Тогда
+ Возврат КаталогПоУмолчанию;
+ КонецЕсли;
+ Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF16);
+ Стр = "";
+ Пока Стр <> Неопределено Цикл
+ Стр = Текст.ПрочитатьСтроку();
+ Если Стр = Неопределено Тогда
+ Прервать;
+ КонецЕсли;
+ Если Найти(ВРег(Стр), ВРег("ConfigurationTemplatesLocation")) = 0 Тогда
+ Продолжить;
+ КонецЕсли;
+ ПозицияРазделителя = Найти(Стр, "=");
+ Если ПозицияРазделителя = 0 Тогда
+ Продолжить;
+ КонецЕсли;
+ НайденныйКаталог = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СокрЛП(Сред(Стр, ПозицияРазделителя + 1)));
+ Возврат ?(ФайлСуществуетНаКлиенте(НайденныйКаталог), НайденныйКаталог, КаталогПоУмолчанию);
+ КонецЦикла;
+
+ Возврат КаталогПоУмолчанию;
+
+КонецФункции
+
+// Определение каталога "Мои документы" текущего пользователя Windows
+//
+&НаКлиенте
+Функция КаталогAppData()
+
+ App = Новый COMОбъект("Shell.Application");
+ Folder = App.Namespace(26);
+ Результат = Folder.Self.Path;
+ Возврат ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Результат);
+
+КонецФункции
+
+// Проверка существования файла или каталога.
+//
+// Параметр:
+// ПутьКФайлу - Строка - путь к файлу или каталогу, существование которого
+// нужно проверить.
+//
+// Возвращаемое значение:
+// Булево - признак существования файла или каталога.
+&НаКлиенте
+Функция ФайлСуществуетНаКлиенте(Знач ПутьКФайлу)
+ Файл = Новый Файл(ПутьКФайлу);
+ Возврат Файл.Существует();
+КонецФункции
+
+&НаКлиенте
+Процедура ПослеПроверкиПравилКонвертацииНаСовместимость(Результат, ДополнительныеПараметры) Экспорт
+
+ Если Результат <> Неопределено И Результат.Значение = "Продолжить" Тогда
+
+ ОписаниеОшибки = Истина;
+ ВыполнитьЗагрузкуПравил(ДополнительныеПараметры.АдресПомещенногоФайла, ДополнительныеПараметры.ИмяФайла, ОписаниеОшибки);
+
+ КонецЕсли;
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ЗакрытьФормуЗагрузкиПравил(Результат, ДополнительныеПараметры) Экспорт
+ Если Результат <> Неопределено И Результат.Значение = "Использовать" Тогда
+ Закрыть();
+ КонецЕсли;
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form
index 6892d4ce4..193f4a508 100644
--- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form
+++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Form.form
@@ -10,6 +10,10 @@
ИмяПланаОбмена1
+
+ ru
+ Синхронизация с программой
+ truetrue
@@ -130,28 +134,19 @@
ru
- Типовые правила из конфигурации
+ Использовать типовые правила
-
- 0
+
+ ТиповыеИзКонфигурацииru
- Правила из файла
+ Загрузить из файла на компьютере:
-
- 1
-
-
-
-
- ru
- Режим отладки
-
-
- 2
+
+ ЗагруженныеИзФайлаVertical
@@ -163,25 +158,72 @@
ИсточникМакетКонфигурации16
-
- ИмяМакетаПравил
- 7
+
+ СтраницаНесколькоМакетов
+ 95
+
+ ИмяМакетаПравил
+ 7
+
+ ru
+ Типовые правила
+
+ true
+ true
+
+ true
+
+
+ Запись.ИмяМакетаПравил
+
+ None
+
+ OnChange
+ ИмяМакетаПравилПриИзменении
+
+
+ ИмяМакетаПравилExtendedTooltip
+ 59
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ИмяМакетаПравилКонтекстноеМеню
+ 8
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ false
+ true
+ true
+ true
+ Normal
+
+ truetruetrue
-
- Запись.ИмяМакетаПравил
-
- None
-
- OnChange
- ИмяМакетаПравилПриИзменении
-
+
+ ru
+ Страница несколько макетов
+
- ИмяМакетаПравилExtendedTooltip
- 59
+ СтраницаНесколькоМакетовРасширеннаяПодсказка
+ 96Labeltruetrue
@@ -189,42 +231,26 @@
Left
-
- ИмяМакетаПравилКонтекстноеМеню
- 8
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- false
- true
- true
- true
- Normal
+ Page
+
+ Vertical
+ auto
- ГруппаДействияСТиповымиПравилами
- 27
-
- ЗагрузитьТиповыеПравила
- 19
+ СтраницаОдинМакет
+ 97
+
+ ПустаяДекорация
+ 99truetruetrue
- true
- ЗагрузитьТиповыеПравилаExtendedTooltip
- 61
+ ПустаяДекорацияРасширеннаяПодсказка
+ 101Labeltruetrue
@@ -232,59 +258,30 @@
Left
- UsualButton
- Form.Command.ЗагрузитьПравила
- Normal
- Auto
+
+ ПустаяДекорацияКонтекстноеМеню
+ 100
+ true
+
+ Labeltruetrue
- UserCmds
- Auto
-
-
- ВыгрузитьТиповыеПравила
- 20
- true
- true
-
- true
-
- true
-
- ВыгрузитьТиповыеПравилаExtendedTooltip
- 62
- Label
- true
- true
-
- Left
-
-
- UsualButton
- Form.Command.ВыгрузитьПравила
- Normal
- Auto
- true
- true
- UserCmds
- Auto
+
+ Left
+ truetruetrue
-
- ru
- Группа действия с типовыми правилами
- ru
- Группа действия с типовыми правилами
+ Страница один макет
- ГруппаДействияСТиповымиПравиламиExtendedTooltip
- 60
+ СтраницаОдинМакетРасширеннаяПодсказка
+ 98Labeltruetrue
@@ -292,13 +289,10 @@
Left
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
+ Page
+
+ Vertical
+ autotrue
@@ -324,9 +318,9 @@
Left
- Page
-
- auto
+ Pages
+
+ Auto
@@ -367,6 +361,7 @@
truetrue
+ 1truetruetrue
@@ -375,81 +370,18 @@
Normal
-
- ГруппаДействияСПравиламиИзФайла
- 28
-
- ЗагрузитьПравилаИзФайла
- 21
- true
- true
-
- true
-
- true
-
- ЗагрузитьПравилаИзФайлаExtendedTooltip
- 66
- Label
- true
- true
-
- Left
-
-
- UsualButton
- Form.Command.ЗагрузитьПравила
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- ВыгрузитьПравилаВФайл
- 22
- true
- true
-
- true
-
- true
-
- ВыгрузитьПравилаВФайлExtendedTooltip
- 67
- Label
- true
- true
-
- Left
-
-
- UsualButton
- Form.Command.ВыгрузитьПравила
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
+
+ ЗагрузитьТиповыеПравила
+ 19truetruetrue
-
- ru
- Группа действия с правилами из файла
-
-
- ru
- Группа действия с правилами из файла
-
+ true
- ГруппаДействияСПравиламиИзФайлаExtendedTooltip
- 65
+ ЗагрузитьТиповыеПравилаExtendedTooltip
+ 61Labeltruetrue
@@ -457,14 +389,15 @@
Left
- UsualGroup
-
- Auto
- true
- true
- Auto
- Auto
-
+ UsualButton
+ Form.Command.ЗагрузитьПравила
+ Normal
+ Auto
+ true
+ 1
+ true
+ UserCmds
+ Autotruetrue
@@ -489,9 +422,13 @@
Left
- Page
-
- auto
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Autotrue
@@ -503,10 +440,6 @@
ruГруппа источники правил
-
- ru
- Группа источники правил
- ГруппаИсточникиПравилExtendedTooltip57
@@ -517,459 +450,12 @@
Left
- Pages
-
- Auto
-
-
-
- ГруппаОтладки
- 31
-
- ГруппаОтладкиВыгрузки
- 38
-
- ВключитьОтладкуВыгрузки
- 32
-
- ru
- Подключить внешнюю обработку для отладки выгрузки
-
- true
- true
-
- true
-
-
- Запись.РежимОтладкиВыгрузки
-
- Right
-
- OnChange
- ВключитьОтладкуВыгрузкиПриИзменении
-
-
- ВключитьОтладкуВыгрузкиExtendedTooltip
- 70
- Label
- true
- true
-
- Left
-
-
-
- ВключитьОтладкуВыгрузкиКонтекстноеМеню
- 33
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
-
-
- ВнешняяОбработкаДляОтладкиВыгрузки
- 40
- true
- false
-
- true
-
-
- Запись.ИмяФайлаОбработкиДляОтладкиВыгрузки
-
- None
-
- ВнешняяОбработкаДляОтладкиВыгрузкиExtendedTooltip
- 71
- Label
- true
- true
-
- Left
-
-
-
- ВнешняяОбработкаДляОтладкиВыгрузкиКонтекстноеМеню
- 41
- true
-
- InputField
- Enter
- true
- Left
- true
-
-
- StartChoice
- ВнешняяОбработкаДляОтладкиВыгрузкиНачалоВыбора
-
- true
- true
- true
- true
- true
- true
- true
- Normal
-
-
- true
- true
-
- true
-
-
- ru
- Группа отладки выгрузки
-
-
- ru
- Группа отладки выгрузки
-
-
- ГруппаОтладкиВыгрузкиExtendedTooltip
- 69
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
-
- ГруппаОтладкиЗагрузки
- 39
-
- ВключитьОтладкуЗагрузки
- 34
-
- ru
- Подключить внешнюю обработку для отладки загрузки
-
- true
- true
-
- true
-
-
- Запись.РежимОтладкиЗагрузки
-
- Right
-
- OnChange
- ВключитьОтладкуЗагрузкиПриИзменении
-
-
- ВключитьОтладкуЗагрузкиExtendedTooltip
- 73
- Label
- true
- true
-
- Left
-
-
-
- ВключитьОтладкуЗагрузкиКонтекстноеМеню
- 35
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
-
-
- ВнешняяОбработкаДляОтладкиЗагрузки
- 36
- true
- false
-
- true
-
-
- Запись.ИмяФайлаОбработкиДляОтладкиЗагрузки
-
- None
-
- ВнешняяОбработкаДляОтладкиЗагрузкиExtendedTooltip
- 74
- Label
- true
- true
-
- Left
-
-
-
- ВнешняяОбработкаДляОтладкиЗагрузкиКонтекстноеМеню
- 37
- true
-
- InputField
- Enter
- true
- Left
- true
-
-
- StartChoice
- ВнешняяОбработкаДляОтладкиЗагрузкиНачалоВыбора
-
- true
- true
- true
- true
- true
- true
- true
- Normal
-
-
- true
- true
-
- true
-
-
- ru
- Группа отладки загрузки
-
-
- ru
- Группа отладки загрузки
-
-
- ГруппаОтладкиЗагрузкиExtendedTooltip
- 72
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
-
- ГруппаПротокол
- 42
-
- ВключитьПротоколированиеОбменаДанными
- 43
- true
- true
-
- true
-
-
- Запись.РежимПротоколированияОбменаДанными
-
- Right
-
- OnChange
- ВключитьПротоколированиеОбменаДаннымиПриИзменении
-
-
- ВключитьПротоколированиеОбменаДаннымиExtendedTooltip
- 76
- Label
- true
- true
-
- Left
-
-
-
- ВключитьПротоколированиеОбменаДаннымиКонтекстноеМеню
- 44
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
-
-
- ФайлПротоколаОбмена
- 45
- true
- false
-
- true
-
-
- Запись.ИмяФайлаПротоколаОбмена
-
- None
-
- ФайлПротоколаОбменаExtendedTooltip
- 77
- Label
- true
- true
-
- Left
-
-
-
- ФайлПротоколаОбменаКонтекстноеМеню
- 46
- true
-
- InputField
- Enter
- true
- Left
- true
-
-
- StartChoice
- ФайлПротоколаОбменаНачалоВыбора
-
-
- Opening
- ФайлПротоколаОбменаОткрытие
-
- true
- true
- true
- true
- true
- true
- true
- true
- Normal
-
-
- true
- true
-
- true
-
-
- ru
- Группа протокол
-
-
- ru
- Группа протокол
-
-
- ГруппаПротоколExtendedTooltip
- 75
- Label
- true
- true
-
- Left
-
-
- UsualGroup
-
- Vertical
- Auto
- true
- true
- Auto
- Auto
-
-
-
- НеОстанавливатьПоОшибке
- 47
-
- ru
- Не останавливать выполнение обмена данными при возникновении ошибки
-
- true
- true
-
- true
-
-
- Запись.НеОстанавливатьПоОшибке
-
- Right
-
- НеОстанавливатьПоОшибкеExtendedTooltip
- 78
- Label
- true
- true
-
- Left
-
-
-
- НеОстанавливатьПоОшибкеКонтекстноеМеню
- 48
- true
-
- CheckBoxField
- Enter
- true
- Left
- true
-
-
- true
- true
-
- true
-
-
- ru
- Настройка режима отладки
-
-
- ru
- Группа отладки
-
-
- ГруппаОтладкиExtendedTooltip
- 68
- Label
- true
- true
-
- Left
-
- UsualGroupVerticalAuto
- StrongSeparationtruetrue
- autoAutoAuto
@@ -981,7 +467,7 @@
ru
- Источник правил
+ Правила конвертации для программы "%1":ru
@@ -999,9 +485,7 @@
UsualGroup
- VerticalAuto
- StrongSeparationtruetrueauto
@@ -1053,6 +537,586 @@
Normal
+
+ ГруппаОтладки
+ 31
+
+ ВключитьРежимОтладки
+ 88
+
+ ru
+ Включить режим отладки
+
+ true
+ true
+
+ true
+
+
+ Запись.РежимОтладки
+
+ Right
+
+ OnChange
+ ВключитьРежимОтладкиПриИзменении
+
+
+ ВключитьРежимОтладкиРасширеннаяПодсказка
+ 90
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВключитьРежимОтладкиКонтекстноеМеню
+ 89
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ Группа1
+ 104
+
+ Декорация1
+ 106
+ true
+ true
+
+ true
+
+
+ Декорация1РасширеннаяПодсказка
+ 108
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Декорация1КонтекстноеМеню
+ 107
+ true
+
+ Label
+ 1
+ true
+ true
+
+ Left
+
+
+
+ ГруппаНастройкиОтладки
+ 102
+
+ ГруппаОтладкиВыгрузки
+ 38
+
+ ВключитьОтладкуВыгрузки
+ 32
+
+ ru
+ Подключить внешнюю обработку для отладки выгрузки
+
+ true
+ true
+
+ true
+
+
+ Запись.РежимОтладкиВыгрузки
+
+ Right
+
+ OnChange
+ ВключитьОтладкуВыгрузкиПриИзменении
+
+
+ ВключитьОтладкуВыгрузкиExtendedTooltip
+ 70
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВключитьОтладкуВыгрузкиКонтекстноеМеню
+ 33
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ВнешняяОбработкаДляОтладкиВыгрузки
+ 40
+ true
+ false
+
+ true
+
+
+ Запись.ИмяФайлаОбработкиДляОтладкиВыгрузки
+
+ None
+
+ ВнешняяОбработкаДляОтладкиВыгрузкиExtendedTooltip
+ 71
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВнешняяОбработкаДляОтладкиВыгрузкиКонтекстноеМеню
+ 41
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ ВнешняяОбработкаДляОтладкиВыгрузкиНачалоВыбора
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа отладки выгрузки
+
+
+ ru
+ Группа отладки выгрузки
+
+
+ ГруппаОтладкиВыгрузкиExtendedTooltip
+ 69
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаОтладкиЗагрузки
+ 39
+
+ ВключитьОтладкуЗагрузки
+ 34
+
+ ru
+ Подключить внешнюю обработку для отладки загрузки
+
+ true
+ true
+
+ true
+
+
+ Запись.РежимОтладкиЗагрузки
+
+ Right
+
+ OnChange
+ ВключитьОтладкуЗагрузкиПриИзменении
+
+
+ ВключитьОтладкуЗагрузкиExtendedTooltip
+ 73
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВключитьОтладкуЗагрузкиКонтекстноеМеню
+ 35
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ВнешняяОбработкаДляОтладкиЗагрузки
+ 36
+ true
+ false
+
+ true
+
+
+ Запись.ИмяФайлаОбработкиДляОтладкиЗагрузки
+
+ None
+
+ ВнешняяОбработкаДляОтладкиЗагрузкиExtendedTooltip
+ 74
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВнешняяОбработкаДляОтладкиЗагрузкиКонтекстноеМеню
+ 37
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ ВнешняяОбработкаДляОтладкиЗагрузкиНачалоВыбора
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа отладки загрузки
+
+
+ ru
+ Группа отладки загрузки
+
+
+ ГруппаОтладкиЗагрузкиExtendedTooltip
+ 72
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ ГруппаПротокол
+ 42
+
+ ВключитьПротоколированиеОбменаДанными
+ 43
+ true
+ true
+
+ true
+
+
+ Запись.РежимПротоколированияОбменаДанными
+
+ Right
+
+ OnChange
+ ВключитьПротоколированиеОбменаДаннымиПриИзменении
+
+
+ ВключитьПротоколированиеОбменаДаннымиExtendedTooltip
+ 76
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВключитьПротоколированиеОбменаДаннымиКонтекстноеМеню
+ 44
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+
+ ФайлПротоколаОбмена
+ 45
+ true
+ false
+
+ true
+
+
+ Запись.ИмяФайлаПротоколаОбмена
+
+ None
+
+ ФайлПротоколаОбменаExtendedTooltip
+ 77
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ФайлПротоколаОбменаКонтекстноеМеню
+ 46
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ ФайлПротоколаОбменаНачалоВыбора
+
+
+ Opening
+ ФайлПротоколаОбменаОткрытие
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Группа протокол
+
+
+ ru
+ Группа протокол
+
+
+ ГруппаПротоколExtendedTooltip
+ 75
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ НеОстанавливатьПоОшибке
+ 47
+
+ ru
+ Не останавливать выполнение обмена данными при возникновении ошибки
+
+ true
+ true
+
+ true
+
+
+ Запись.НеОстанавливатьПоОшибке
+
+ Right
+
+ НеОстанавливатьПоОшибкеExtendedTooltip
+ 78
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НеОстанавливатьПоОшибкеКонтекстноеМеню
+ 48
+ true
+
+ CheckBoxField
+ Enter
+ true
+ Left
+ true
+
+
+ true
+ true
+
+ true
+
+
+ ГруппаНастройкиОтладкиРасширеннаяПодсказка
+ 103
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ Группа1РасширеннаяПодсказка
+ 105
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Настройка режима отладки
+
+
+ ru
+ Группа отладки
+
+
+ ГруппаОтладкиРасширеннаяПодсказка
+ 68
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Collapsible
+ true
+ true
+ true
+ auto
+ Auto
+ Auto
+
+ ГруппаДополнительно18
@@ -1092,17 +1156,11 @@
truetrue
-
- true
-
+ ruДополнительно
-
- ru
- Группа дополнительно
- trueГруппаДополнительноExtendedTooltip
@@ -1117,11 +1175,9 @@
UsualGroupAuto
- WeakSeparationtruetrueLeftWidest
- autoAutoAuto
@@ -1199,7 +1255,7 @@
Left
- Form.StandardCommand.Reread
+ 0NormalAutotrue
@@ -1226,7 +1282,34 @@
Left
- Form.StandardCommand.Delete
+ 0
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ СохранитьПравилаВФайл
+ 20
+ true
+ true
+
+ true
+
+ true
+
+ СохранитьПравилаВФайлРасширеннаяПодсказка
+ 62
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.СохранитьПравилаКонвертацииВФайлNormalAutotrue
@@ -1242,7 +1325,10 @@
ПриСозданииНаСервереCopy
+ Delete
+ RereadWriteAndClose
+ 77LockOwnertruetrue
@@ -1294,11 +1380,8 @@
3
- Number
-
- 1
- true
-
+ String
+ true
@@ -1330,7 +1413,7 @@
ЗагрузитьПравилаru
- Загрузить правила
+ Загрузить1
@@ -1354,29 +1437,25 @@
Auto
- ВыгрузитьПравила
+ СохранитьПравилаКонвертацииВФайлru
- Выгрузить правила
+ Сохранить правила конвертации в файл2ru
- Выгрузить правила в файл
+ Сохранить правила конвертации в файл на компьютереtrue
-
- StdPicture.SaveFile
- ВыгрузитьПравилаTextPicture
- trueAutoAuto
diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html
index ef4fc7402..1664fcb6c 100644
--- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html
+++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначена для контроля и замены правил конвертации данных. Правила конвертации данных используются при синхронизации данных двух программ.
Настройка синхронизации данных по умолчанию производится в соответствии с так называемыми Типовыми правилами обмена. Если эти правила устарели, то выполнение синхронизации данных приведет к очень серьезным ошибкам, порче информации. Поэтому при настройке новой синхронизации данных, а также при выходе очередного обновления любой из программ, участвующих в синхронизации данных, необходимо контролировать актуальность используемых типовых правил обмена.
Типовые правила обмена состоят из правил конвертации объектов и правил регистрации объектов. Правила конвертации данных используются при синхронизации данных двух программ. Правила регистрации предусмотрены для всех видов синхронизации данных. Комплект актуальных правил обмена публикуется на сайте технической поддержки http://users.v8.1c.ru. Исправительные версии правил обмена также публикуются на данном сайте.
Контроль актуальности правил синхронизации
diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl
index 2011ea38e..086e211f1 100644
--- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl
@@ -233,6 +233,208 @@
КонецПроцедуры
+Процедура ЗагрузитьКомплектПравил(Отказ, ДанныеДляЗаписи, ОписаниеОшибки, АдресВременногоХранилища = "", ИмяФайлаПравил = "") Экспорт
+
+ ЗаписьПравилКонвертации = ДанныеДляЗаписи.ЗаписьПравилКонвертации;
+ ЗаписьПравилРегистрации = ДанныеДляЗаписи.ЗаписьПравилРегистрации;
+
+ // Получаем двоичные данные правил из файла или макета конфигурации
+ Если ЗаписьПравилКонвертации.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации Тогда
+
+ ДвоичныеДанные = ПолучитьДвоичныеДанныеИзМакетаКонфигурации(Отказ, ЗаписьПравилКонвертации.ИмяПланаОбмена, ЗаписьПравилКонвертации.ИмяМакетаПравил);
+ ДвоичныеДанныеКорреспондента = ПолучитьДвоичныеДанныеИзМакетаКонфигурации(Отказ, ЗаписьПравилКонвертации.ИмяПланаОбмена, ЗаписьПравилКонвертации.ИмяМакетаПравилКорреспондента);
+ ДвоичныеДанныеРегистрации = ПолучитьДвоичныеДанныеИзМакетаКонфигурации(Отказ, ЗаписьПравилРегистрации.ИмяПланаОбмена, ЗаписьПравилРегистрации.ИмяМакетаПравил);
+
+ Иначе
+
+ ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
+
+ КонецЕсли;
+
+ Если ЗаписьПравилКонвертации.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда
+
+ // Получаем файл архива из двоичных данных
+ ИмяВременногоАрхива = ПолучитьИмяВременногоФайла("zip");
+ ДвоичныеДанные.Записать(ИмяВременногоАрхива);
+
+ // Распаковываем архив
+ ИмяВременнойПапки = ПолучитьИмяВременногоФайла("");
+ Если ОбменДаннымиСервер.РаспаковатьZipФайл(ИмяВременногоАрхива, ИмяВременнойПапки) Тогда
+
+ СписокРаспакованныхФайлов = НайтиФайлы(ИмяВременнойПапки, "*.*", Истина);
+
+ // В архиве не было ни одного файла - отказываемся от загрузки
+ Если СписокРаспакованныхФайлов.Количество() = 0 Тогда
+ НСтрока = НСтр("ru = 'При распаковке архива не найден файл с правилами.'");
+ ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
+ КонецЕсли;
+
+ // В архиве количество файлов не соответсвует ожидаемому - отказываемся от загрузки
+ Если СписокРаспакованныхФайлов.Количество() <> 3 Тогда
+ НСтрока = НСтр("ru = 'Не верный формат комплекта правил. Ожидаемое количество файлов в архиве - три. Ожидаются файлы:
+ |ExchangeRules.xml - правила конвертации для текущей программы;
+ |CorrespondentExchangeRules.xml - правила конвертации для программы-корреспондента;
+ |RegistrationRules.xml - правила регистрации для текущей программы.'");
+ ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
+ КонецЕсли;
+
+ // Закладываем полученный файл правил обратно в двоичные данные
+ Для Каждого ПолученныйФайл Из СписокРаспакованныхФайлов Цикл
+
+ Если ПолученныйФайл.Имя = "ExchangeRules.xml" Тогда
+ ДвоичныеДанные = Новый ДвоичныеДанные(ПолученныйФайл.ПолноеИмя);
+ ИначеЕсли ПолученныйФайл.Имя ="CorrespondentExchangeRules.xml" Тогда
+ ДвоичныеДанныеКорреспондента = Новый ДвоичныеДанные(ПолученныйФайл.ПолноеИмя);
+ ИначеЕсли ПолученныйФайл.Имя ="RegistrationRules.xml" Тогда
+ ДвоичныеДанныеРегистрации = Новый ДвоичныеДанные(ПолученныйФайл.ПолноеИмя);
+ Иначе
+ НСтрока = НСтр("ru = 'Имена файлов в архиве не соответствуют ожидаемым. Ожидаются файлы:
+ |ExchangeRules.xml - правила конвертации для текущей программы;
+ |CorrespondentExchangeRules.xml - правила конвертации для программы-корреспондента;
+ |RegistrationRules.xml - правила регистрации для текущей программы.'");
+ ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
+ Прервать;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Иначе
+ // Если не удалось распаковать файл - отказываемся от загрузки
+ НСтрока = НСтр("ru = 'Не удалось распаковать архив с правилами.'");
+ ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
+ КонецЕсли;
+
+ // Удаляем временный архив и временную папку, в которую был распакован архив
+ УдалитьВременныйФайл(ИмяВременнойПапки);
+ УдалитьВременныйФайл(ИмяВременногоАрхива);
+
+ КонецЕсли;
+
+ Если Отказ Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИнформацияОПравилахКонвертации = "[ИнформацияОПравилахИсточника]
+ |
+ |[ИнформацияОПравилахКорреспондента]";
+
+ // получаем имя временного файла конвертации в локальной ФС на сервере
+ ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
+
+ // получаем файл правил для зачитки
+ ДвоичныеДанные.Записать(ИмяВременногоФайла);
+
+ // зачитываем правила конвертации
+ КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать();
+
+ // свойства обработки
+ КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Выгрузка";
+ КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = ЗаписьПравилКонвертации.ИмяПланаОбмена;
+ КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными();
+
+ ОбменДаннымиСервер.УстановитьНастройкиОтладкиВыгрузкиДляПравилОбмена(КонвертацияОбъектовИнформационныхБаз, ЗаписьПравилКонвертации.ИмяПланаОбмена, ЗаписьПравилКонвертации.РежимОтладки);
+
+ // методы обработки
+ Если ЗаписьПравилКонвертации.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл И ОписаниеОшибки = Неопределено
+ И Не ПравилаКонвертацииСовместимыСТекущейВерсией(ЗаписьПравилКонвертации.ИмяПланаОбмена, ОписаниеОшибки, ИнформацияОПравилахИзФайла(ИмяВременногоФайла)) Тогда
+
+ Отказ = Истина;
+ Возврат;
+
+ КонецЕсли;
+
+ ПравилаЗачитанные = КонвертацияОбъектовИнформационныхБаз.ПолучитьСтруктуруПравилОбмена(ИмяВременногоФайла);
+
+ РежимСовместимости = Ложь;
+ ИнформацияОПравилахИсточника = КонвертацияОбъектовИнформационныхБаз.ПолучитьИнформациюОПравилах(Ложь, РежимСовместимости);
+
+ Если КонвертацияОбъектовИнформационныхБаз.ФлагОшибки() Тогда
+ Отказ = Истина;
+ КонецЕсли;
+
+ // получаем имя временного файла конвертации корреспондента в локальной ФС на сервере
+ ИмяВременногоФайлаКорреспондента = ПолучитьИмяВременногоФайла("xml");
+ // получаем файл правил для зачитки
+ ДвоичныеДанныеКорреспондента.Записать(ИмяВременногоФайлаКорреспондента);
+
+ // зачитываем правила конвертации
+ КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать();
+
+ // свойства обработки
+ КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Загрузка";
+ КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = ЗаписьПравилКонвертации.ИмяПланаОбмена;
+ КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными();
+
+ // методы обработки
+ ПравилаЗачитанныеКорреспондента = КонвертацияОбъектовИнформационныхБаз.ПолучитьСтруктуруПравилОбмена(ИмяВременногоФайлаКорреспондента);
+
+ РежимСовместимостиКорреспондента = Ложь;
+ ИнформацияОПравилахКорреспондента = КонвертацияОбъектовИнформационныхБаз.ПолучитьИнформациюОПравилах(
+ Истина, РежимСовместимостиКорреспондента);
+
+ Если КонвертацияОбъектовИнформационныхБаз.ФлагОшибки() Тогда
+ Отказ = Истина;
+ КонецЕсли;
+
+ ИнформацияОПравилахКонвертации = СтрЗаменить(ИнформацияОПравилахКонвертации, "[ИнформацияОПравилахИсточника]", ИнформацияОПравилахИсточника);
+ ИнформацияОПравилахКонвертации = СтрЗаменить(ИнформацияОПравилахКонвертации, "[ИнформацияОПравилахКорреспондента]", ИнформацияОПравилахКорреспондента);
+
+ // получаем имя временного файла регистрации в локальной ФС на сервере
+ ИмяВременногоФайлаРегистрации = ПолучитьИмяВременногоФайла("xml");
+ // получаем файл правил для зачитки
+ ДвоичныеДанныеРегистрации.Записать(ИмяВременногоФайлаРегистрации);
+
+
+ // зачитываем правила регистрации
+ ЗагрузкаПравилРегистрации = Обработки.ЗагрузкаПравилРегистрацииОбъектов.Создать();
+
+ // свойства обработки
+ ЗагрузкаПравилРегистрации.ИмяПланаОбменаДляЗагрузки = ЗаписьПравилРегистрации.ИмяПланаОбмена;
+
+ // методы обработки
+ ЗагрузкаПравилРегистрации.ЗагрузитьПравила(ИмяВременногоФайлаРегистрации);
+ ПравилаРегистрацииЗачитанные = ЗагрузкаПравилРегистрации.ПравилаРегистрацииОбъектов;
+ ИнформацияОПравилахРегистрации = ЗагрузкаПравилРегистрации.ПолучитьИнформациюОПравилах();
+
+ Если ЗагрузкаПравилРегистрации.ФлагОшибки Тогда
+ Отказ = Истина;
+ КонецЕсли;
+
+ // удаляем временные файлы правил
+ УдалитьВременныйФайл(ИмяВременногоФайла);
+ УдалитьВременныйФайл(ИмяВременногоФайлаКорреспондента);
+ УдалитьВременныйФайл(ИмяВременногоФайлаРегистрации);
+
+ Если Не Отказ Тогда
+
+ //Сделаем запись правил конвертации
+ ЗаписьПравилКонвертации.ПравилаXML = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
+ ЗаписьПравилКонвертации.ПравилаЗачитанные = Новый ХранилищеЗначения(ПравилаЗачитанные);
+ ЗаписьПравилКонвертации.ПравилаXMLКорреспондента = Новый ХранилищеЗначения(ДвоичныеДанныеКорреспондента, Новый СжатиеДанных());
+ ЗаписьПравилКонвертации.ПравилаЗачитанныеКорреспондента = Новый ХранилищеЗначения(ПравилаЗачитанныеКорреспондента);
+ ЗаписьПравилКонвертации.ИнформацияОПравилах = ИнформацияОПравилахКонвертации;
+ ЗаписьПравилКонвертации.ИмяФайлаПравил = ИмяФайлаПравил;
+ ЗаписьПравилКонвертации.ПравилаЗагружены = Истина;
+ ЗаписьПравилКонвертации.ИмяПланаОбменаИзПравил = ЗаписьПравилКонвертации.ИмяПланаОбмена;
+
+ Если РежимСовместимости <> РежимСовместимостиКорреспондента Тогда
+ ВызватьИсключение Нстр("ru = 'Резличаются режимы совместимости правил обмена текущей конфигурации и конфигурации-корреспондента.'");
+ Иначе
+ ЗаписьПравилКонвертации.РежимСовместимости = РежимСовместимости;
+ КонецЕсли;
+
+ //Сделаем запись правил регистрации
+ ЗаписьПравилРегистрации.ПравилаXML = Новый ХранилищеЗначения(ДвоичныеДанныеРегистрации, Новый СжатиеДанных());
+ ЗаписьПравилРегистрации.ПравилаЗачитанные = Новый ХранилищеЗначения(ПравилаРегистрацииЗачитанные);
+ ЗаписьПравилРегистрации.ИнформацияОПравилах = ИнформацияОПравилахРегистрации;
+ ЗаписьПравилРегистрации.ИмяФайлаПравил = ИмяФайлаПравил;
+ ЗаписьПравилРегистрации.ПравилаЗагружены = Истина;
+ ЗаписьПравилРегистрации.ИмяПланаОбменаИзПравил = ЗаписьПравилРегистрации.ИмяПланаОбмена;
+
+ КонецЕсли;
+
+КонецПроцедуры
+
// Получает зачитанные правила конвертации объектов из ИБ для плана обмена
//
// Параметры:
@@ -280,6 +482,43 @@
КонецФункции
+Функция ИспользуютсяПравилаИзФайла(ИмяПланаОбмена, ПодробныйРезультат = Ложь) Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена КАК ИмяПланаОбмена,
+ | ПравилаДляОбменаДанными.ВидПравил КАК ВидПравил
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ИсточникПравил = ЗНАЧЕНИЕ(Перечисление.ИсточникиПравилДляОбменаДанными.Файл)
+ | И ПравилаДляОбменаДанными.ПравилаЗагружены
+ | И ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена";
+
+ Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена);
+ Результат = Запрос.Выполнить();
+
+ Если ПодробныйРезультат Тогда
+
+ ПравилаИзФайла = Новый Структура("ПравилаРегистрации, ПравилаКонвертации", Ложь, Ложь);
+
+ Выборка = Результат.Выбрать();
+ Пока Выборка.Следующий() Цикл
+ Если Выборка.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов Тогда
+ ПравилаИзФайла.ПравилаКонвертации = Истина;
+ ИначеЕсли Выборка.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов Тогда
+ ПравилаИзФайла.ПравилаРегистрации = Истина;
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат ПравилаИзФайла;
+
+ Иначе
+ Возврат Не Результат.Пустой();
+ КонецЕсли;
+
+КонецФункции
+
Процедура ЗагрузитьИнформациюОПравилах(Отказ, АдресВременногоХранилища, СтрокаИнформацииОПравилах) Экспорт
Перем ВидПравил;
@@ -453,6 +692,95 @@
КонецПроцедуры
+Функция ИнформацияОПравилахИзФайла(ИмяФайлаПравил)
+
+ ПравилаОбмена = Новый ЧтениеXML();
+ ПравилаОбмена.ОткрытьФайл(ИмяФайлаПравил);
+ ПравилаОбмена.Прочитать();
+
+ Если Не ((ПравилаОбмена.ЛокальноеИмя = "ПравилаОбмена") И (ПравилаОбмена.ТипУзла = ТипУзлаXML.НачалоЭлемента)) Тогда
+ ВызватьИсключение НСтр("ru = 'Ошибка формата правил обмена'");
+ КонецЕсли;
+
+ Пока ПравилаОбмена.Прочитать() Цикл
+
+ ИмяУзла = ПравилаОбмена.ЛокальноеИмя;
+
+ Если ИмяУзла = "Источник" И ПравилаОбмена.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
+
+ ИнформацияОПравилах = Новый Структура;
+ ИнформацияОПравилах.Вставить("ВерсияКонфигурации", ПравилаОбмена.ПолучитьАтрибут("ВерсияКонфигурации"));
+ ИнформацияОПравилах.Вставить("СинонимКонфигурацииВПравилах", ПравилаОбмена.ПолучитьАтрибут("СинонимКонфигурации"));
+ ПравилаОбмена.Прочитать();
+ ИнформацияОПравилах.Вставить("ИмяКонфигурации", ПравилаОбмена.Значение);
+
+ ИначеЕсли (ИмяУзла = "Источник") И (ПравилаОбмена.ТипУзла = ТипУзлаXML.КонецЭлемента) Тогда
+
+ ПравилаОбмена.Закрыть();
+ Возврат ИнформацияОПравилах;
+
+ КонецЕсли;
+
+ КонецЦикла;
+
+ ВызватьИсключение НСтр("ru = 'Ошибка формата правил обмена'");
+
+КонецФункции
+
+Функция ПравилаКонвертацииСовместимыСТекущейВерсией(ИмяПланаОбмена, ОписаниеОшибки, ДанныеОПравилах)
+
+ Если Не ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена, "ПредупреждатьОНесоответствииВерсийПравилОбмена") Тогда
+ Возврат Истина;
+ КонецЕсли;
+
+ Если ДанныеОПравилах.ИмяКонфигурации <> Метаданные.Имя Тогда
+
+ ОписаниеОшибки = Новый Структура;
+ ОписаниеОшибки.Вставить("ТекстОшибки", Нстр("ru = 'Правила не могут быть загружены, т.к. они предназначены для программы ""%1"". Следует использовать правила из конфигурации или загрузить корректный комплект правил из файла.'"));
+ ОписаниеОшибки.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеОшибки.ТекстОшибки,
+ ДанныеОПравилах.СинонимКонфигурацииВПравилах);
+ ОписаниеОшибки.Вставить("ВидОшибки", "НекорректнаяКонфигурация");
+ ОписаниеОшибки.Вставить("Картинка", БиблиотекаКартинок.Ошибка32);
+ Возврат Ложь;
+
+ КонецЕсли;
+
+ ВерсияВПравилахБезСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ДанныеОПравилах.ВерсияКонфигурации);
+ ВерсияКонфигурацииБезСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(Метаданные.Версия);
+ РезультатСравнения = ОбменДаннымиСервер.СравнитьВерсииБезНомераСБорки(ВерсияВПравилахБезСборки, ВерсияКонфигурацииБезСборки);
+
+ Если РезультатСравнения <> 0 Тогда
+
+ Если РезультатСравнения < 0 Тогда
+
+ ТекстОшибки = Нстр("ru = 'Синхронизация данных может работать некорректно, так как загружаемые правила предназначены для предыдущей версии программы ""%1"" (%2). Рекомендуется использовать правила из конфигурации или загрузить комплект правил, предназначенный для текущей версии программы (%3).'");
+ ВидОшибки = "УстаревшаяВерсияКонфигурации";
+
+ Иначе
+
+ ТекстОшибки = Нстр("ru = 'Синхронизация данных может работать некорректно, так как загружаемые правила предназначены для более новой версии программы ""%1"" (%2). Рекомендуется обновить версию программы или использовать комплект правил, предназначенный для текущей версии программы (%3).'");
+ ВидОшибки = "УстаревшиеПравила";
+
+ КонецЕсли;
+
+ ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Метаданные.Синоним,
+ ВерсияВПравилахБезСборки, ВерсияКонфигурацииБезСборки);
+
+ ОписаниеОшибки = Новый Структура;
+ ОписаниеОшибки.Вставить("ТекстОшибки", ТекстОшибки);
+ ОписаниеОшибки.Вставить("ВидОшибки", ВидОшибки);
+ ОписаниеОшибки.Вставить("Картинка", БиблиотекаКартинок.Предупреждение32);
+ Возврат Ложь;
+
+ КонецЕсли;
+
+ Возврат Истина;
+
+КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////
+// Профили безопасности
+
Процедура ПриЗаполненииРазрешенийНаДоступКВнешнимРесурсам(ЗапросыРазрешений) Экспорт
ЗагруженныеПравила = ЗагруженныеПравила();
@@ -465,42 +793,149 @@
КонецПроцедуры
+Функция ПравилаРегистрацииИзФайла(ИмяПланаОбмена) Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 1
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ПравилаЗагружены = ИСТИНА
+ | И ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов)
+ | И ПравилаДляОбменаДанными.ИсточникПравил = ЗНАЧЕНИЕ(Перечисление.ИсточникиПравилДляОбменаДанными.Файл)
+ | И ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена";
+
+ Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена);
+
+ Возврат Не Запрос.Выполнить().Пустой();
+
+КонецФункции
+
+Функция ПравилаКонвертацииИзФайла(ИмяПланаОбмена) Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст = "ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена,
+ | ПравилаДляОбменаДанными.РежимСовместимости,
+ | ПравилаДляОбменаДанными.РежимОтладки,
+ | ПравилаДляОбменаДанными.РежимОтладкиВыгрузки,
+ | ПравилаДляОбменаДанными.РежимОтладкиЗагрузки,
+ | ПравилаДляОбменаДанными.РежимПротоколированияОбменаДанными,
+ | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиВыгрузки,
+ | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиЗагрузки,
+ | ПравилаДляОбменаДанными.ИмяФайлаПротоколаОбмена
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ПравилаЗагружены = ИСТИНА
+ | И ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов)
+ | И ПравилаДляОбменаДанными.ИмяПланаОбмена = &ИмяПланаОбмена";
+
+ Запрос.УстановитьПараметр("ИмяПланаОбмена", ИмяПланаОбмена);
+
+ Результат = Запрос.Выполнить();
+
+ Если Результат.Пустой() Тогда
+
+ Возврат Неопределено;
+
+ Иначе
+
+ Выборка = Результат.Выбрать();
+ Выборка.Следующий();
+ Возврат Выборка;
+
+ КонецЕсли;
+
+КонецФункции
+
Функция ЗагруженныеПравила()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПравилаДляОбменаДанными.ИмяПланаОбмена,
- | ПравилаДляОбменаДанными.ИсточникПравил,
- | ПравилаДляОбменаДанными.ВидПравил,
| ПравилаДляОбменаДанными.РежимСовместимости,
| ПравилаДляОбменаДанными.РежимОтладки,
| ПравилаДляОбменаДанными.РежимОтладкиВыгрузки,
- | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиВыгрузки,
| ПравилаДляОбменаДанными.РежимОтладкиЗагрузки,
- | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиЗагрузки,
| ПравилаДляОбменаДанными.РежимПротоколированияОбменаДанными,
- | ПравилаДляОбменаДанными.ИмяФайлаПротоколаОбмена
+ | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиВыгрузки,
+ | ПравилаДляОбменаДанными.ИмяФайлаОбработкиДляОтладкиЗагрузки,
+ | ПравилаДляОбменаДанными.ИмяФайлаПротоколаОбмена,
+ | ИСТИНА КАК ЕстьПравилаКонвертации
+ |ПОМЕСТИТЬ ПравилаКонвертации
|ИЗ
| РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
|ГДЕ
- | ПравилаДляОбменаДанными.ПравилаЗагружены = ИСТИНА";
+ | ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов)
+ | И ПравилаДляОбменаДанными.ПравилаЗагружены = ИСТИНА
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | ПравилаДляОбменаДанными.ИмяПланаОбмена,
+ | ИСТИНА КАК ПравилаРегистрацииИзФайла
+ |ПОМЕСТИТЬ ПравилаРегистрации
+ |ИЗ
+ | РегистрСведений.ПравилаДляОбменаДанными КАК ПравилаДляОбменаДанными
+ |ГДЕ
+ | ПравилаДляОбменаДанными.ПравилаЗагружены = ИСТИНА
+ | И ПравилаДляОбменаДанными.ВидПравил = ЗНАЧЕНИЕ(Перечисление.ВидыПравилДляОбменаДанными.ПравилаРегистрацииОбъектов)
+ | И ПравилаДляОбменаДанными.ИсточникПравил = ЗНАЧЕНИЕ(Перечисление.ИсточникиПравилДляОбменаДанными.Файл)
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | ВЫБОР
+ | КОГДА ПравилаРегистрации.ПравилаРегистрацииИзФайла
+ | ТОГДА ПравилаРегистрации.ИмяПланаОбмена
+ | ИНАЧЕ ПравилаКонвертации.ИмяПланаОбмена
+ | КОНЕЦ КАК ИмяПланаОбмена,
+ | ПравилаКонвертации.РежимСовместимости,
+ | ПравилаКонвертации.РежимОтладки,
+ | ПравилаКонвертации.РежимОтладкиВыгрузки,
+ | ПравилаКонвертации.РежимОтладкиЗагрузки,
+ | ПравилаКонвертации.РежимПротоколированияОбменаДанными,
+ | ПравилаКонвертации.ИмяФайлаОбработкиДляОтладкиВыгрузки,
+ | ПравилаКонвертации.ИмяФайлаОбработкиДляОтладкиЗагрузки,
+ | ПравилаКонвертации.ИмяФайлаПротоколаОбмена,
+ | ЕСТЬNULL(ПравилаРегистрации.ПравилаРегистрацииИзФайла, ЛОЖЬ) КАК ПравилаРегистрацииИзФайла,
+ | ЕСТЬNULL(ПравилаКонвертации.ЕстьПравилаКонвертации, ЛОЖЬ) КАК ЕстьПравилаКонвертации
+ |ИЗ
+ | ПравилаКонвертации КАК ПравилаКонвертации
+ | ПОЛНОЕ СОЕДИНЕНИЕ ПравилаРегистрации КАК ПравилаРегистрации
+ | ПО ПравилаКонвертации.ИмяПланаОбмена = ПравилаРегистрации.ИмяПланаОбмена";
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса.Выбрать();
КонецФункции
-Процедура ЗапросНаИспользованиеВнешнихРесурсов(ЗапросыРазрешений, Запись) Экспорт
+Процедура ЗапросНаИспользованиеВнешнихРесурсов(ЗапросыРазрешений, Запись, ЕстьПравилаКонвертации = Неопределено, ПравилаРегистрацииИзФайла = Неопределено) Экспорт
Разрешения = Новый Массив;
- Если Запись.ВидПравил = Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов Тогда
+ Если ПравилаРегистрацииИзФайла = Неопределено Тогда
+ ПравилаРегистрацииИзФайла = Запись.ПравилаРегистрацииИзФайла;
+ КонецЕсли;
+
+ Если ЕстьПравилаКонвертации = Неопределено Тогда
+ ЕстьПравилаКонвертации = Запись.ЕстьПравилаКонвертации;
+ КонецЕсли;
+
+ Если ПравилаРегистрацииИзФайла Тогда
+ Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима());
+ КонецЕсли;
+
+ Если ЕстьПравилаКонвертации Тогда
Если (Не Запись.РежимСовместимости Или ОбщегоНазначенияПовтИсп.РазделениеВключено()) И Не Запись.РежимОтладки Тогда
// Запрос на персональный профиль не требуется
Иначе
- Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима());
+ Если Не ПравилаРегистрацииИзФайла Тогда
+ Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима());
+ КонецЕсли;
Если Запись.РежимОтладки Тогда
@@ -508,7 +943,7 @@
СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Запись.ИмяФайлаОбработкиДляОтладкиВыгрузки);
Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы(
- СтруктураИмениФайла.Путь, Истина, Ложь));
+ СтруктураИмениФайла.Путь, Истина, Ложь));
КонецЕсли;
@@ -516,7 +951,7 @@
СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Запись.ИмяФайлаОбработкиДляОтладкиВыгрузки);
Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы(
- СтруктураИмениФайла.Путь, Истина, Ложь));
+ СтруктураИмениФайла.Путь, Истина, Ложь));
КонецЕсли;
@@ -524,7 +959,7 @@
СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Запись.ИмяФайлаОбработкиДляОтладкиВыгрузки);
Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы(
- СтруктураИмениФайла.Путь, Истина, Истина));
+ СтруктураИмениФайла.Путь, Истина, Истина));
КонецЕсли;
@@ -532,14 +967,6 @@
КонецЕсли;
- Иначе // Правила регистрации
-
- Если Запись.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда
- Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима());
- Иначе
- // Правила будут выполняться под профилем конфигурации
- КонецЕсли;
-
КонецЕсли;
ИдентификаторПланаОбмена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.ПланыОбмена[Запись.ИмяПланаОбмена]);
diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo
index 5e1a8e68f..a903f38e2 100644
--- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo
+++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ПравилаДляОбменаДанными.mdo
@@ -528,11 +528,11 @@
Enum.ВидыПравилДляОбменаДанными.EmptyRef
-
- ПравилаРегистрацииОбъектов
+
+ ЗагрузитьПравилаСинхронизацииДанныхru
- Правила регистрации объектов
+ Загрузить правила синхронизации данных
@@ -556,6 +556,38 @@
PersonalComputerMobileDevice
+
+ ПравилаРегистрацииОбъектов
+
+ ru
+ Правила регистрации объектов
+
+
+
+ ru
+
+
+ PersonalComputer
+ MobileDevice
+
+
+ ПроверкаПлановОбмена
+
+ ru
+ Проверка синхронизации данных
+
+ PersonalComputer
+ MobileDevice
+
+
+ СообщениеОНеудачномОбновлении
+
+ ru
+ Сообщение о неудачном обновлении
+
+ PersonalComputer
+ MobileDevice
+ ФормаСписка
diff --git a/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/ManagerModule.bsl
index 0e016efcc..b7ba6c8fd 100644
--- a/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/ManagerModule.bsl
@@ -24,8 +24,14 @@
Функция НаборЗаписейИзXDTOПредставления(Знач XDTOПредставления, Знач ВнешнийМодуль, Знач Владелец, Знач ДляУдаления) Экспорт
Набор = СоздатьНаборЗаписей();
- Набор.Отбор.ВнешнийМодуль.Установить(ВнешнийМодуль);
- Набор.Отбор.Владелец.Установить(Владелец);
+
+ СвойстваПрограммногоМодуля = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Тип);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Идентификатор);
+
+ СвойстваВладельца = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(Владелец);
+ Набор.Отбор.ТипВладельца.Установить(СвойстваВладельца.Тип);
+ Набор.Отбор.ИдентификаторВладельца.Установить(СвойстваВладельца.Идентификатор);
Если ДляУдаления Тогда
@@ -37,11 +43,17 @@
Для Каждого XDTOПредставление Из XDTOПредставления Цикл
- Ключ = Новый Структура("ВнешнийМодуль,Владелец", ВнешнийМодуль, Владелец);
+ Ключ = Новый Структура("ТипПрограммногоМодуля,ИдентификаторПрограммногоМодуля,ТипВладельца,ИдентификаторВладельца",
+ СвойстваПрограммногоМодуля.Тип,
+ СвойстваПрограммногоМодуля.Идентификатор,
+ СвойстваВладельца.Тип,
+ СвойстваВладельца.Идентификатор);
Если Таблица.НайтиСтроки(Ключ).Количество() = 0 Тогда
Строка = Таблица.Добавить();
- Строка.ВнешнийМодуль = ВнешнийМодуль;
- Строка.Владелец = Владелец;
+ Строка.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Строка.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Строка.ТипВладельца = СвойстваВладельца.Тип;
+ Строка.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
КонецЕсли;
КонецЦикла;
@@ -77,19 +89,27 @@
//
Функция ЗапросТекущегоСреза(Знач СвернутьВладельцев = Истина) Экспорт
- Результат = "ВЫБРАТЬ РАЗЛИЧНЫЕ
- | ИСТИНА КАК РазрешенПереходВПривилегированныйРежим,
- | РазрешенияПереходаВПривилегированныйРежим.Владелец КАК Владелец,
- | РазрешенияПереходаВПривилегированныйРежим.ВнешнийМодуль КАК ВнешнийМодуль
- |ИЗ
- | РегистрСведений.РазрешенияПереходаВПривилегированныйРежим КАК РазрешенияПереходаВПривилегированныйРежим";
-
Если СвернутьВладельцев Тогда
- Результат = СтрЗаменить(Результат, "РазрешенияПереходаВПривилегированныйРежим.Владелец КАК Владелец,", "");
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | ИСТИНА КАК РазрешенПереходВПривилегированныйРежим,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
+ |ИЗ
+ | РегистрСведений.РазрешенияПереходаВПривилегированныйРежим КАК Разрешения";
+ Иначе
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | ИСТИНА КАК РазрешенПереходВПривилегированныйРежим,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Разрешения.ТипВладельца КАК ТипВладельца,
+ | Разрешения.ИдентификаторВладельца КАК ИдентификаторВладельца
+ |ИЗ
+ | РегистрСведений.РазрешенияПереходаВПривилегированныйРежим КАК Разрешения";
+
КонецЕсли;
- Возврат Результат;
-
КонецФункции
// Возвращает текст запроса для получения дельты измения разрешений по данному
@@ -102,25 +122,29 @@
Возврат
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИСТИНА КАК РазрешенПереходВПривилегированныйРежим,
- | ВТ_До.ВнешнийМодуль
+ | ВТ_До.ТипПрограммногоМодуля,
+ | ВТ_До.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_До КАК ВТ_До
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_После КАК ВТ_После
- | ПО ВТ_До.ВнешнийМодуль = ВТ_После.ВнешнийМодуль
+ | ПО ВТ_До.ТипПрограммногоМодуля = ВТ_После.ТипПрограммногоМодуля
+ | И ВТ_До.ИдентификаторПрограммногоМодуля = ВТ_После.ИдентификаторПрограммногоМодуля
|ГДЕ
- | ВТ_После.ВнешнийМодуль ЕСТЬ NULL
+ | ВТ_После.ТипПрограммногоМодуля ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИСТИНА КАК РазрешенПереходВПривилегированныйРежим,
- | ВТ_После.ВнешнийМодуль
+ | ВТ_После.ТипПрограммногоМодуля,
+ | ВТ_После.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_После КАК ВТ_После
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_До КАК ВТ_До
- | ПО ВТ_После.ВнешнийМодуль = ВТ_До.ВнешнийМодуль
+ | ПО ВТ_После.ТипПрограммногоМодуля = ВТ_До.ТипПрограммногоМодуля
+ | И ВТ_После.ИдентификаторПрограммногоМодуля = ВТ_До.ИдентификаторПрограммногоМодуля
|ГДЕ
- | ВТ_До.ВнешнийМодуль ЕСТЬ NULL";
+ | ВТ_До.ТипПрограммногоМодуля ЕСТЬ NULL ";
КонецФункции
diff --git a/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/РазрешенияПереходаВПривилегированныйРежим.mdo b/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/РазрешенияПереходаВПривилегированныйРежим.mdo
index cb0383775..1286dd353 100644
--- a/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/РазрешенияПереходаВПривилегированныйРежим.mdo
+++ b/SSL/src/InformationRegisters/РазрешенияПереходаВПривилегированныйРежим/РазрешенияПереходаВПривилегированныйРежим.mdo
@@ -67,10 +67,10 @@
- ВнешнийМодуль
+ ТипПрограммногоМодуляru
- Внешний модуль
+ Тип программного модуляAnyRef
@@ -83,6 +83,24 @@
true
+
+ ИдентификаторПрограммногоМодуля
+
+ ru
+ Идентификатор программного модуля
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ БезопасныйРежим
@@ -100,10 +118,10 @@
true
- Владелец
+ ТипВладельцаru
- Владелец
+ Тип владельцаAnyRef
@@ -116,4 +134,22 @@
true
+
+ ИдентификаторВладельца
+
+ ru
+ Идентификатор владельца
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+
diff --git a/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/ManagerModule.bsl
index 991b49ac1..ccc9b822b 100644
--- a/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/ManagerModule.bsl
@@ -24,8 +24,14 @@
Функция НаборЗаписейИзXDTOПредставления(Знач XDTOПредставления, Знач ВнешнийМодуль, Знач Владелец, Знач ДляУдаления) Экспорт
Набор = СоздатьНаборЗаписей();
- Набор.Отбор.ВнешнийМодуль.Установить(ВнешнийМодуль);
- Набор.Отбор.Владелец.Установить(Владелец);
+
+ СвойстваПрограммногоМодуля = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Тип);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Идентификатор);
+
+ СвойстваВладельца = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(Владелец);
+ Набор.Отбор.ТипВладельца.Установить(СвойстваВладельца.Тип);
+ Набор.Отбор.ИдентификаторВладельца.Установить(СвойстваВладельца.Идентификатор);
Если ДляУдаления Тогда
@@ -37,11 +43,18 @@
Для Каждого XDTOПредставление Из XDTOПредставления Цикл
- Ключ = Новый Структура("ВнешнийМодуль,Владелец,ProgId", ВнешнийМодуль, Владелец, XDTOПредставление.ProgId);
+ Ключ = Новый Структура("ТипПрограммногоМодуля,ИдентификаторПрограммногоМодуля,ТипВладельца,ИдентификаторВладельца,ProgId",
+ СвойстваПрограммногоМодуля.Тип,
+ СвойстваПрограммногоМодуля.Идентификатор,
+ СвойстваВладельца.Тип,
+ СвойстваВладельца.Идентификатор,
+ XDTOПредставление.ProgId);
Если Таблица.НайтиСтроки(Ключ).Количество() = 0 Тогда
Строка = Таблица.Добавить();
- Строка.ВнешнийМодуль = ВнешнийМодуль;
- Строка.Владелец = Владелец;
+ Строка.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Строка.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Строка.ТипВладельца = СвойстваВладельца.Тип;
+ Строка.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
Строка.ProgId = XDTOПредставление.ProgId;
Строка.CLSID = XDTOПредставление.CLSID;
Строка.ИмяКомпьютера = XDTOПредставление.ComputerName;
@@ -84,21 +97,32 @@
//
Функция ЗапросТекущегоСреза(Знач СвернутьВладельцев = Истина) Экспорт
- Результат = "ВЫБРАТЬ РАЗЛИЧНЫЕ
- | РазрешенныеCOMКлассы.ProgId,
- | РазрешенныеCOMКлассы.CLSID,
- | РазрешенныеCOMКлассы.ИмяКомпьютера,
- | РазрешенныеCOMКлассы.Владелец КАК Владелец,
- | РазрешенныеCOMКлассы.ВнешнийМодуль
- |ИЗ
- | РегистрСведений.РазрешенныеCOMКлассы КАК РазрешенныеCOMКлассы";
-
Если СвернутьВладельцев Тогда
- Результат = СтрЗаменить(Результат, "РазрешенныеCOMКлассы.Владелец КАК Владелец,", "");
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.ProgId,
+ | Разрешения.CLSID,
+ | Разрешения.ИмяКомпьютера,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
+ |ИЗ
+ | РегистрСведений.РазрешенныеCOMКлассы КАК Разрешения";
+
+ Иначе
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.ProgId,
+ | Разрешения.CLSID,
+ | Разрешения.ИмяКомпьютера,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Разрешения.ТипВладельца КАК ТипВладельца,
+ | Разрешения.ИдентификаторВладельца КАК ИдентификаторВладельца
+ |ИЗ
+ | РегистрСведений.РазрешенныеCOMКлассы КАК Разрешения";
+
КонецЕсли;
- Возврат Результат;
-
КонецФункции
// Возвращает текст запроса для получения дельты измения разрешений по данному
@@ -113,11 +137,13 @@
| ВТ_До.ProgId,
| ВТ_До.CLSID,
| ВТ_До.ИмяКомпьютера,
- | ВТ_До.ВнешнийМодуль
+ | ВТ_До.ТипПрограммногоМодуля,
+ | ВТ_До.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_До КАК ВТ_До
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_После КАК ВТ_После
- | ПО ВТ_До.ВнешнийМодуль = ВТ_После.ВнешнийМодуль
+ | ПО ВТ_До.ТипПрограммногоМодуля = ВТ_После.ТипПрограммногоМодуля
+ | И ВТ_До.ИдентификаторПрограммногоМодуля = ВТ_После.ИдентификаторПрограммногоМодуля
| И ВТ_До.ProgId = ВТ_После.ProgId
|ГДЕ
| ВТ_После.ProgId ЕСТЬ NULL
@@ -128,11 +154,13 @@
| ВТ_После.ProgId,
| ВТ_После.CLSID,
| ВТ_После.ИмяКомпьютера,
- | ВТ_После.ВнешнийМодуль
+ | ВТ_После.ТипПрограммногоМодуля,
+ | ВТ_После.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_После КАК ВТ_После
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_До КАК ВТ_До
- | ПО ВТ_После.ВнешнийМодуль = ВТ_До.ВнешнийМодуль
+ | ПО ВТ_После.ТипПрограммногоМодуля = ВТ_До.ТипПрограммногоМодуля
+ | И ВТ_После.ИдентификаторПрограммногоМодуля = ВТ_До.ИдентификаторПрограммногоМодуля
| И ВТ_После.ProgId = ВТ_До.ProgId
|ГДЕ
| ВТ_До.ProgId ЕСТЬ NULL ";
diff --git a/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/РазрешенныеCOMКлассы.mdo b/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/РазрешенныеCOMКлассы.mdo
index 8d4bed7e0..adbf15209 100644
--- a/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/РазрешенныеCOMКлассы.mdo
+++ b/SSL/src/InformationRegisters/РазрешенныеCOMКлассы/РазрешенныеCOMКлассы.mdo
@@ -102,10 +102,10 @@
- ВнешнийМодуль
+ ТипПрограммногоМодуляru
- Внешний модуль
+ Тип программного модуляAnyRef
@@ -118,6 +118,24 @@
true
+
+ ИдентификаторПрограммногоМодуля
+
+ ru
+ Идентификатор программного модуля
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ БезопасныйРежим
@@ -135,10 +153,10 @@
true
- Владелец
+ ТипВладельцаru
- Владелец
+ Тип владельцаAnyRef
@@ -151,6 +169,24 @@
true
+
+ ИдентификаторВладельца
+
+ ru
+ Идентификатор владельца
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ ProgId
@@ -160,7 +196,7 @@
String
- 400
+ 350
diff --git a/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/ManagerModule.bsl
index 263d11db0..cd32f1e25 100644
--- a/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/ManagerModule.bsl
@@ -24,8 +24,14 @@
Функция НаборЗаписейИзXDTOПредставления(Знач XDTOПредставления, Знач ВнешнийМодуль, Знач Владелец, Знач ДляУдаления) Экспорт
Набор = СоздатьНаборЗаписей();
- Набор.Отбор.ВнешнийМодуль.Установить(ВнешнийМодуль);
- Набор.Отбор.Владелец.Установить(Владелец);
+
+ СвойстваПрограммногоМодуля = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Тип);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Идентификатор);
+
+ СвойстваВладельца = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(Владелец);
+ Набор.Отбор.ТипВладельца.Установить(СвойстваВладельца.Тип);
+ Набор.Отбор.ИдентификаторВладельца.Установить(СвойстваВладельца.Идентификатор);
Если ДляУдаления Тогда
@@ -37,7 +43,12 @@
Для Каждого XDTOПредставление Из XDTOПредставления Цикл
- Ключ = Новый Структура("ВнешнийМодуль,Владелец,ИмяМакета", ВнешнийМодуль, Владелец, XDTOПредставление.TemplateName);
+ Ключ = Новый Структура("ТипПрограммногоМодуля,ИдентификаторПрограммногоМодуля,ТипВладельца,ИдентификаторВладельца,ИмяМакета",
+ СвойстваПрограммногоМодуля.Тип,
+ СвойстваПрограммногоМодуля.Идентификатор,
+ СвойстваВладельца.Тип,
+ СвойстваВладельца.Идентификатор,
+ XDTOПредставление.TemplateName);
Если Таблица.НайтиСтроки(Ключ).Количество() = 0 Тогда
СтруктураИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(XDTOПредставление.TemplateName, ".");
@@ -110,8 +121,10 @@
ХэшСуммаПреобразованнаяКСтрокеBase64 = Base64Строка(ХэшСумма);
Строка = Таблица.Добавить();
- Строка.ВнешнийМодуль = ВнешнийМодуль;
- Строка.Владелец = Владелец;
+ Строка.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Строка.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Строка.ТипВладельца = СвойстваВладельца.Тип;
+ Строка.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
Строка.ИмяМакета = XDTOПредставление.TemplateName;
Строка.ИмяФайла = ОписаниеКомпоненты.path;
Строка.ХэшСумма = ХэшСуммаПреобразованнаяКСтрокеBase64;
@@ -173,21 +186,32 @@
//
Функция ЗапросТекущегоСреза(Знач СвернутьВладельцев = Истина) Экспорт
- Результат = "ВЫБРАТЬ РАЗЛИЧНЫЕ
- | РазрешенныеВнешниеКомпоненты.ИмяМакета,
- | РазрешенныеВнешниеКомпоненты.ИмяФайла,
- | РазрешенныеВнешниеКомпоненты.ХэшСумма,
- | РазрешенныеВнешниеКомпоненты.Владелец КАК Владелец,
- | РазрешенныеВнешниеКомпоненты.ВнешнийМодуль
- |ИЗ
- | РегистрСведений.РазрешенныеВнешниеКомпоненты КАК РазрешенныеВнешниеКомпоненты";
-
Если СвернутьВладельцев Тогда
- Результат = СтрЗаменить(Результат, "РазрешенныеВнешниеКомпоненты.Владелец КАК Владелец,", "");
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.ИмяМакета,
+ | Разрешения.ИмяФайла,
+ | Разрешения.ХэшСумма,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
+ |ИЗ
+ | РегистрСведений.РазрешенныеВнешниеКомпоненты КАК Разрешения";
+
+ Иначе
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.ИмяМакета,
+ | Разрешения.ИмяФайла,
+ | Разрешения.ХэшСумма,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Разрешения.ТипВладельца КАК ТипВладельца,
+ | Разрешения.ИдентификаторВладельца КАК ИдентификаторВладельца
+ |ИЗ
+ | РегистрСведений.РазрешенныеВнешниеКомпоненты КАК Разрешения";
+
КонецЕсли;
- Возврат Результат;
-
КонецФункции
// Возвращает текст запроса для получения дельты измения разрешений по данному
@@ -202,11 +226,13 @@
| ВТ_До.ИмяМакета,
| ВТ_До.ИмяФайла,
| ВТ_До.ХэшСумма,
- | ВТ_До.ВнешнийМодуль
+ | ВТ_До.ТипПрограммногоМодуля,
+ | ВТ_До.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_До КАК ВТ_До
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_После КАК ВТ_После
- | ПО ВТ_До.ВнешнийМодуль = ВТ_После.ВнешнийМодуль
+ | ПО ВТ_До.ТипПрограммногоМодуля = ВТ_После.ТипПрограммногоМодуля
+ | И ВТ_До.ИдентификаторПрограммногоМодуля = ВТ_После.ИдентификаторПрограммногоМодуля
| И ВТ_До.ИмяМакета = ВТ_После.ИмяМакета
|ГДЕ
| ВТ_После.ИмяМакета ЕСТЬ NULL
@@ -217,11 +243,13 @@
| ВТ_После.ИмяМакета,
| ВТ_После.ИмяФайла,
| ВТ_После.ХэшСумма,
- | ВТ_После.ВнешнийМодуль
+ | ВТ_После.ТипПрограммногоМодуля,
+ | ВТ_После.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_После КАК ВТ_После
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_До КАК ВТ_До
- | ПО ВТ_После.ВнешнийМодуль = ВТ_До.ВнешнийМодуль
+ | ПО ВТ_После.ТипПрограммногоМодуля = ВТ_До.ТипПрограммногоМодуля
+ | И ВТ_После.ИдентификаторПрограммногоМодуля = ВТ_До.ИдентификаторПрограммногоМодуля
| И ВТ_После.ИмяМакета = ВТ_До.ИмяМакета
|ГДЕ
| ВТ_До.ИмяМакета ЕСТЬ NULL ";
diff --git a/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/РазрешенныеВнешниеКомпоненты.mdo b/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/РазрешенныеВнешниеКомпоненты.mdo
index ea3ecb84e..4695cd9f0 100644
--- a/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/РазрешенныеВнешниеКомпоненты.mdo
+++ b/SSL/src/InformationRegisters/РазрешенныеВнешниеКомпоненты/РазрешенныеВнешниеКомпоненты.mdo
@@ -85,10 +85,10 @@
- ВнешнийМодуль
+ ТипПрограммногоМодуляru
- Внешний модуль
+ Тип программного модуляAnyRef
@@ -101,6 +101,24 @@
true
+
+ ИдентификаторПрограммногоМодуля
+
+ ru
+ Идентификатор программного модуля
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ БезопасныйРежим
@@ -118,10 +136,10 @@
true
- Владелец
+ ТипВладельцаru
- Владелец
+ Тип владельцаAnyRef
@@ -134,6 +152,24 @@
true
+
+ ИдентификаторВладельца
+
+ ru
+ Идентификатор владельца
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ ИмяМакета
@@ -143,7 +179,7 @@
String
- 200
+ 150
@@ -162,7 +198,7 @@
String
- 200
+ 100
diff --git a/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/ManagerModule.bsl
index 9a25f3349..96178760c 100644
--- a/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/ManagerModule.bsl
@@ -24,8 +24,14 @@
Функция НаборЗаписейИзXDTOПредставления(Знач XDTOПредставления, Знач ВнешнийМодуль, Знач Владелец, Знач ДляУдаления) Экспорт
Набор = СоздатьНаборЗаписей();
- Набор.Отбор.ВнешнийМодуль.Установить(ВнешнийМодуль);
- Набор.Отбор.Владелец.Установить(Владелец);
+
+ СвойстваПрограммногоМодуля = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Тип);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Идентификатор);
+
+ СвойстваВладельца = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(Владелец);
+ Набор.Отбор.ТипВладельца.Установить(СвойстваВладельца.Тип);
+ Набор.Отбор.ИдентификаторВладельца.Установить(СвойстваВладельца.Идентификатор);
Если ДляУдаления Тогда
@@ -39,12 +45,19 @@
Псевдоним = НРег(XDTOПредставление.Protocol) + ":\\" + НРег(XDTOПредставление.Host) + ":" + Формат(XDTOПредставление.Port, "ЧГ=0");
- Ключ = Новый Структура("ВнешнийМодуль,Владелец,Псевдоним", ВнешнийМодуль, Владелец, Псевдоним);
+ Ключ = Новый Структура("ТипПрограммногоМодуля,ИдентификаторПрограммногоМодуля,ТипВладельца,ИдентификаторВладельца,Псевдоним",
+ СвойстваПрограммногоМодуля.Тип,
+ СвойстваПрограммногоМодуля.Идентификатор,
+ СвойстваВладельца.Тип,
+ СвойстваПрограммногоМодуля.Идентификатор,
+ Псевдоним);
Если Таблица.НайтиСтроки(Ключ).Количество() = 0 Тогда
Строка = Таблица.Добавить();
- Строка.ВнешнийМодуль = ВнешнийМодуль;
- Строка.Владелец = Владелец;
+ Строка.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Строка.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Строка.ТипВладельца = СвойстваВладельца.Тип;
+ Строка.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
Строка.Псевдоним = Псевдоним;
Строка.Протокол = НРег(XDTOПредставление.Protocol);
Строка.Адрес = НРег(XDTOПредставление.Host);
@@ -90,22 +103,32 @@
//
Функция ЗапросТекущегоСреза(Знач СвернутьВладельцев = Истина) Экспорт
- Результат = "ВЫБРАТЬ РАЗЛИЧНЫЕ
- | РазрешенныеИнтернетРесурсы.Псевдоним,
- | РазрешенныеИнтернетРесурсы.Протокол,
- | РазрешенныеИнтернетРесурсы.Адрес,
- | РазрешенныеИнтернетРесурсы.Порт,
- | РазрешенныеИнтернетРесурсы.Владелец КАК Владелец,
- | РазрешенныеИнтернетРесурсы.ВнешнийМодуль
- |ИЗ
- | РегистрСведений.РазрешенныеИнтернетРесурсы КАК РазрешенныеИнтернетРесурсы";
-
Если СвернутьВладельцев Тогда
- Результат = СтрЗаменить(Результат, "РазрешенныеИнтернетРесурсы.Владелец КАК Владелец,", "");
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.Псевдоним,
+ | Разрешения.Протокол,
+ | Разрешения.Адрес,
+ | Разрешения.Порт
+ |ИЗ
+ | РегистрСведений.РазрешенныеИнтернетРесурсы КАК Разрешения";
+
+ Иначе
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.Псевдоним,
+ | Разрешения.Протокол,
+ | Разрешения.Адрес,
+ | Разрешения.Порт,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Разрешения.ТипВладельца КАК ТипВладельца,
+ | Разрешения.ИдентификаторВладельца КАК ИдентификаторВладельца
+ |ИЗ
+ | РегистрСведений.РазрешенныеИнтернетРесурсы КАК Разрешения";
+
КонецЕсли;
- Возврат Результат;
-
КонецФункции
// Возвращает текст запроса для получения дельты измения разрешений по данному
@@ -121,13 +144,16 @@
| ВТ_До.Протокол,
| ВТ_До.Адрес,
| ВТ_До.Порт,
- | ВТ_До.ВнешнийМодуль
+ | ВТ_До.ТипПрограммногоМодуля,
+ | ВТ_До.ИдентификаторПрограммногоМодуля
|ИЗ
- | ВТ_До КАК ВТ_До ЛЕВОЕ СОЕДИНЕНИЕ ВТ_После КАК ВТ_После
- | ПО ВТ_До.ВнешнийМодуль = ВТ_После.ВнешнийМодуль
+ | ВТ_До КАК ВТ_До
+ | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_После КАК ВТ_После
+ | ПО ВТ_До.ТипПрограммногоМодуля = ВТ_После.ТипПрограммногоМодуля
+ | И ВТ_До.ИдентификаторПрограммногоМодуля = ВТ_После.ИдентификаторПрограммногоМодуля
| И ВТ_До.Псевдоним = ВТ_После.Псевдоним
|ГДЕ
- | ВТ_После.Псевдоним ЕСТЬ NULL
+ | ВТ_После.Псевдоним ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
@@ -136,13 +162,16 @@
| ВТ_После.Протокол,
| ВТ_После.Адрес,
| ВТ_После.Порт,
- | ВТ_После.ВнешнийМодуль
+ | ВТ_После.ТипПрограммногоМодуля,
+ | ВТ_После.ИдентификаторПрограммногоМодуля
|ИЗ
- | ВТ_После КАК ВТ_После ЛЕВОЕ СОЕДИНЕНИЕ ВТ_До КАК ВТ_До
- | ПО ВТ_После.ВнешнийМодуль = ВТ_До.ВнешнийМодуль
+ | ВТ_После КАК ВТ_После
+ | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_До КАК ВТ_До
+ | ПО ВТ_После.ТипПрограммногоМодуля = ВТ_До.ТипПрограммногоМодуля
+ | И ВТ_После.ИдентификаторПрограммногоМодуля = ВТ_До.ИдентификаторПрограммногоМодуля
| И ВТ_После.Псевдоним = ВТ_До.Псевдоним
|ГДЕ
- | ВТ_До.Псевдоним ЕСТЬ NULL";
+ | ВТ_До.Псевдоним ЕСТЬ NULL ";
КонецФункции
diff --git a/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/РазрешенныеИнтернетРесурсы.mdo b/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/РазрешенныеИнтернетРесурсы.mdo
index 3bbd1b21b..109070409 100644
--- a/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/РазрешенныеИнтернетРесурсы.mdo
+++ b/SSL/src/InformationRegisters/РазрешенныеИнтернетРесурсы/РазрешенныеИнтернетРесурсы.mdo
@@ -121,10 +121,10 @@
- ВнешнийМодуль
+ ТипПрограммногоМодуляru
- Внешний модуль
+ Тип программного модуляAnyRef
@@ -137,6 +137,24 @@
true
+
+ ИдентификаторПрограммногоМодуля
+
+ ru
+ Идентификатор программного модуля
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ БезопасныйРежим
@@ -154,10 +172,10 @@
true
- Владелец
+ ТипВладельцаru
- Владелец
+ Тип владельцаAnyRef
@@ -170,6 +188,24 @@
true
+
+ ИдентификаторВладельца
+
+ ru
+ Идентификатор владельца
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ Псевдоним
@@ -179,7 +215,7 @@
String
- 400
+ 255
diff --git a/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/ManagerModule.bsl
index 49f9547e2..f8a39d4f5 100644
--- a/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/ManagerModule.bsl
@@ -24,8 +24,14 @@
Функция НаборЗаписейИзXDTOПредставления(Знач XDTOПредставления, Знач ВнешнийМодуль, Знач Владелец, Знач ДляУдаления) Экспорт
Набор = СоздатьНаборЗаписей();
- Набор.Отбор.ВнешнийМодуль.Установить(ВнешнийМодуль);
- Набор.Отбор.Владелец.Установить(Владелец);
+
+ СвойстваПрограммногоМодуля = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Тип);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Идентификатор);
+
+ СвойстваВладельца = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(Владелец);
+ Набор.Отбор.ТипВладельца.Установить(СвойстваВладельца.Тип);
+ Набор.Отбор.ИдентификаторВладельца.Установить(СвойстваВладельца.Идентификатор);
Если ДляУдаления Тогда
@@ -37,13 +43,20 @@
Для Каждого XDTOПредставление Из XDTOПредставления Цикл
- Ключ = Новый Структура("ВнешнийМодуль,Владелец,Адрес", ВнешнийМодуль, Владелец, XDTOПредставление.Path);
+ Ключ = Новый Структура("ТипПрограммногоМодуля,ИдентификаторПрограммногоМодуля,ТипВладельца,ИдентификаторВладельца,Адрес",
+ СвойстваПрограммногоМодуля.Тип,
+ СвойстваПрограммногоМодуля.Идентификатор,
+ СвойстваВладельца.Тип,
+ СвойстваВладельца.Идентификатор,
+ XDTOПредставление.Path);
СтрокиПоКлючу = Таблица.НайтиСтроки(Ключ);
Если СтрокиПоКлючу.Количество() = 0 Тогда
Строка = Таблица.Добавить();
- Строка.ВнешнийМодуль = ВнешнийМодуль;
- Строка.Владелец = Владелец;
+ Строка.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Строка.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Строка.ТипВладельца = СвойстваВладельца.Тип;
+ Строка.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
Строка.Адрес = XDTOПредставление.Path;
Строка.РазрешеноЧтениеДанных = XDTOПредставление.AllowedRead;
Строка.РазрешенаЗаписьДанных = XDTOПредставление.AllowedWrite;
@@ -109,21 +122,30 @@
//
Функция ЗапросТекущегоСреза(Знач СвернутьВладельцев = Истина) Экспорт
- Результат = "ВЫБРАТЬ РАЗЛИЧНЫЕ
- | РазрешенныеКаталогиФайловойСистемы.Адрес,
- | РазрешенныеКаталогиФайловойСистемы.РазрешеноЧтениеДанных,
- | РазрешенныеКаталогиФайловойСистемы.РазрешенаЗаписьДанных,
- | РазрешенныеКаталогиФайловойСистемы.Владелец КАК Владелец,
- | РазрешенныеКаталогиФайловойСистемы.ВнешнийМодуль
- |ИЗ
- | РегистрСведений.РазрешенныеКаталогиФайловойСистемы КАК РазрешенныеКаталогиФайловойСистемы";
-
Если СвернутьВладельцев Тогда
- Результат = СтрЗаменить(Результат, "РазрешенныеКаталогиФайловойСистемы.Владелец КАК Владелец,", "");
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.Адрес,
+ | Разрешения.РазрешеноЧтениеДанных,
+ | Разрешения.РазрешенаЗаписьДанных
+ |ИЗ
+ | РегистрСведений.РазрешенныеКаталогиФайловойСистемы КАК Разрешения";
+
+ Иначе
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.Адрес,
+ | Разрешения.РазрешеноЧтениеДанных,
+ | Разрешения.РазрешенаЗаписьДанных,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Разрешения.ТипВладельца КАК ТипВладельца,
+ | Разрешения.ИдентификаторВладельца КАК ИдентификаторВладельца
+ |ИЗ
+ | РегистрСведений.РазрешенныеКаталогиФайловойСистемы КАК Разрешения";
+
КонецЕсли;
- Возврат Результат;
-
КонецФункции
// Возвращает текст запроса для получения дельты измения разрешений по данному
@@ -138,11 +160,13 @@
| ВТ_До.Адрес,
| ВТ_До.РазрешеноЧтениеДанных,
| ВТ_До.РазрешенаЗаписьДанных,
- | ВТ_До.ВнешнийМодуль
+ | ВТ_До.ТипПрограммногоМодуля,
+ | ВТ_До.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_До КАК ВТ_До
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_После КАК ВТ_После
- | ПО ВТ_До.ВнешнийМодуль = ВТ_После.ВнешнийМодуль
+ | ПО ВТ_До.ТипПрограммногоМодуля = ВТ_После.ТипПрограммногоМодуля
+ | И ВТ_До.ИдентификаторПрограммногоМодуля = ВТ_После.ИдентификаторПрограммногоМодуля
| И ВТ_До.Адрес = ВТ_После.Адрес
|ГДЕ
| ВТ_После.Адрес ЕСТЬ NULL
@@ -153,11 +177,13 @@
| ВТ_После.Адрес,
| ВТ_После.РазрешеноЧтениеДанных,
| ВТ_После.РазрешенаЗаписьДанных,
- | ВТ_После.ВнешнийМодуль
+ | ВТ_После.ТипПрограммногоМодуля,
+ | ВТ_После.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_После КАК ВТ_После
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_До КАК ВТ_До
- | ПО ВТ_После.ВнешнийМодуль = ВТ_До.ВнешнийМодуль
+ | ПО ВТ_После.ТипПрограммногоМодуля = ВТ_До.ТипПрограммногоМодуля
+ | И ВТ_После.ИдентификаторПрограммногоМодуля = ВТ_До.ИдентификаторПрограммногоМодуля
| И ВТ_После.Адрес = ВТ_До.Адрес
|ГДЕ
| ВТ_До.Адрес ЕСТЬ NULL ";
diff --git a/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/РазрешенныеКаталогиФайловойСистемы.mdo b/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/РазрешенныеКаталогиФайловойСистемы.mdo
index 4e0de3ddc..17ab6f96c 100644
--- a/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/РазрешенныеКаталогиФайловойСистемы.mdo
+++ b/SSL/src/InformationRegisters/РазрешенныеКаталогиФайловойСистемы/РазрешенныеКаталогиФайловойСистемы.mdo
@@ -97,10 +97,10 @@
- ВнешнийМодуль
+ ТипПрограммногоМодуляru
- Внешний модуль
+ Тип программного модуляAnyRef
@@ -113,6 +113,24 @@
true
+
+ ИдентификаторПрограммногоМодуля
+
+ ru
+ Идентификатор программного модуля
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ БезопасныйРежим
@@ -130,10 +148,10 @@
true
- Владелец
+ ТипВладельцаru
- Владелец
+ Тип владельцаAnyRef
@@ -146,6 +164,24 @@
true
+
+ ИдентификаторВладельца
+
+ ru
+ Идентификатор владельца
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ Адрес
@@ -155,7 +191,7 @@
String
- 400
+ 255
diff --git a/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/ManagerModule.bsl
index e491036b0..648f7344b 100644
--- a/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/ManagerModule.bsl
+++ b/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/ManagerModule.bsl
@@ -24,8 +24,14 @@
Функция НаборЗаписейИзXDTOПредставления(Знач XDTOПредставления, Знач ВнешнийМодуль, Знач Владелец, Знач ДляУдаления) Экспорт
Набор = СоздатьНаборЗаписей();
- Набор.Отбор.ВнешнийМодуль.Установить(ВнешнийМодуль);
- Набор.Отбор.Владелец.Установить(Владелец);
+
+ СвойстваПрограммногоМодуля = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(ВнешнийМодуль);
+ Набор.Отбор.ТипПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Тип);
+ Набор.Отбор.ИдентификаторПрограммногоМодуля.Установить(СвойстваПрограммногоМодуля.Идентификатор);
+
+ СвойстваВладельца = Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.СвойстваДляРегистраРазрешений(Владелец);
+ Набор.Отбор.ТипВладельца.Установить(СвойстваВладельца.Тип);
+ Набор.Отбор.ИдентификаторВладельца.Установить(СвойстваВладельца.Идентификатор);
Если ДляУдаления Тогда
@@ -37,12 +43,19 @@
Для Каждого XDTOПредставление Из XDTOПредставления Цикл
- Ключ = Новый Структура("ВнешнийМодуль,Владелец,ШаблонСтрокиЗапуска", ВнешнийМодуль, Владелец, XDTOПредставление.CommandMask);
+ Ключ = Новый Структура("ТипПрограммногоМодуля,ИдентификаторПрограммногоМодуля,ТипВладельца,ИдентификаторВладельца,ШаблонСтрокиЗапуска",
+ СвойстваПрограммногоМодуля.Тип,
+ СвойстваПрограммногоМодуля.Идентификатор,
+ СвойстваВладельца.Тип,
+ СвойстваВладельца.Идентификатор,
+ XDTOПредставление.CommandMask);
Если Таблица.НайтиСтроки(Ключ).Количество() = 0 Тогда
Строка = Таблица.Добавить();
- Строка.ВнешнийМодуль = ВнешнийМодуль;
- Строка.Владелец = Владелец;
+ Строка.ТипПрограммногоМодуля = СвойстваПрограммногоМодуля.Тип;
+ Строка.ИдентификаторПрограммногоМодуля = СвойстваПрограммногоМодуля.Идентификатор;
+ Строка.ТипВладельца = СвойстваВладельца.Тип;
+ Строка.ИдентификаторВладельца = СвойстваВладельца.Идентификатор;
Строка.ШаблонСтрокиЗапуска = XDTOПредставление.CommandMask;
КонецЕсли;
@@ -83,19 +96,28 @@
//
Функция ЗапросТекущегоСреза(Знач СвернутьВладельцев = Истина) Экспорт
- Результат = "ВЫБРАТЬ РАЗЛИЧНЫЕ
- | РазрешенныеПриложенияОперационнойСистемы.ШаблонСтрокиЗапуска,
- | РазрешенныеПриложенияОперационнойСистемы.Владелец КАК Владелец,
- | РазрешенныеПриложенияОперационнойСистемы.ВнешнийМодуль
- |ИЗ
- | РегистрСведений.РазрешенныеПриложенияОперационнойСистемы КАК РазрешенныеПриложенияОперационнойСистемы";
-
Если СвернутьВладельцев Тогда
- Результат = СтрЗаменить(Результат, "РазрешенныеПриложенияОперационнойСистемы.Владелец КАК Владелец,", "");
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.ШаблонСтрокиЗапуска,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля
+ |ИЗ
+ | РегистрСведений.РазрешенныеПриложенияОперационнойСистемы КАК Разрешения";
+
+ Иначе
+
+ Возврат "ВЫБРАТЬ РАЗЛИЧНЫЕ
+ | Разрешения.ШаблонСтрокиЗапуска,
+ | Разрешения.ТипПрограммногоМодуля КАК ТипПрограммногоМодуля,
+ | Разрешения.ИдентификаторПрограммногоМодуля КАК ИдентификаторПрограммногоМодуля,
+ | Разрешения.ТипВладельца КАК ТипВладельца,
+ | Разрешения.ИдентификаторВладельца КАК ИдентификаторВладельца
+ |ИЗ
+ | РегистрСведений.РазрешенныеПриложенияОперационнойСистемы КАК Разрешения";
+
КонецЕсли;
- Возврат Результат;
-
КонецФункции
// Возвращает текст запроса для получения дельты измения разрешений по данному
@@ -108,27 +130,31 @@
Возврат
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВТ_До.ШаблонСтрокиЗапуска,
- | ВТ_До.ВнешнийМодуль
+ | ВТ_До.ТипПрограммногоМодуля,
+ | ВТ_До.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_До КАК ВТ_До
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_После КАК ВТ_После
- | ПО ВТ_До.ВнешнийМодуль = ВТ_После.ВнешнийМодуль
+ | ПО ВТ_До.ТипПрограммногоМодуля = ВТ_После.ТипПрограммногоМодуля
+ | И ВТ_До.ИдентификаторПрограммногоМодуля = ВТ_После.ИдентификаторПрограммногоМодуля
| И ВТ_До.ШаблонСтрокиЗапуска = ВТ_После.ШаблонСтрокиЗапуска
|ГДЕ
- | ВТ_После.ШаблонСтрокиЗапуска ЕСТЬ NULL
+ | ВТ_После.ШаблонСтрокиЗапуска ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВТ_После.ШаблонСтрокиЗапуска,
- | ВТ_После.ВнешнийМодуль
+ | ВТ_После.ТипПрограммногоМодуля,
+ | ВТ_После.ИдентификаторПрограммногоМодуля
|ИЗ
| ВТ_После КАК ВТ_После
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_До КАК ВТ_До
- | ПО ВТ_После.ВнешнийМодуль = ВТ_До.ВнешнийМодуль
+ | ПО ВТ_После.ТипПрограммногоМодуля = ВТ_До.ТипПрограммногоМодуля
+ | И ВТ_После.ИдентификаторПрограммногоМодуля = ВТ_До.ИдентификаторПрограммногоМодуля
| И ВТ_После.ШаблонСтрокиЗапуска = ВТ_До.ШаблонСтрокиЗапуска
|ГДЕ
- | ВТ_До.ШаблонСтрокиЗапуска ЕСТЬ NULL";
+ | ВТ_До.ШаблонСтрокиЗапуска ЕСТЬ NULL ";
КонецФункции
diff --git a/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/РазрешенныеПриложенияОперационнойСистемы.mdo b/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/РазрешенныеПриложенияОперационнойСистемы.mdo
index 743129add..0de532b4b 100644
--- a/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/РазрешенныеПриложенияОперационнойСистемы.mdo
+++ b/SSL/src/InformationRegisters/РазрешенныеПриложенияОперационнойСистемы/РазрешенныеПриложенияОперационнойСистемы.mdo
@@ -67,10 +67,10 @@
- ВнешнийМодуль
+ ТипПрограммногоМодуляru
- Внешний модуль
+ Тип программного модуляAnyRef
@@ -83,6 +83,24 @@
true
+
+ ИдентификаторПрограммногоМодуля
+
+ ru
+ Идентификатор программного модуля
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ БезопасныйРежим
@@ -100,10 +118,10 @@
true
- Владелец
+ ТипВладельцаru
- Владелец
+ Тип владельцаAnyRef
@@ -116,6 +134,24 @@
true
+
+ ИдентификаторВладельца
+
+ ru
+ Идентификатор владельца
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+ ШаблонСтрокиЗапуска
@@ -125,7 +161,7 @@
String
- 400
+ 255
diff --git a/SSL/src/InformationRegisters/РежимыПодключенияВнешнихМодулей/РежимыПодключенияВнешнихМодулей.mdo b/SSL/src/InformationRegisters/РежимыПодключенияВнешнихМодулей/РежимыПодключенияВнешнихМодулей.mdo
index 0a0b87026..f99000716 100644
--- a/SSL/src/InformationRegisters/РежимыПодключенияВнешнихМодулей/РежимыПодключенияВнешнихМодулей.mdo
+++ b/SSL/src/InformationRegisters/РежимыПодключенияВнешнихМодулей/РежимыПодключенияВнешнихМодулей.mdo
@@ -66,10 +66,10 @@
- ВнешнийМодуль
+ ТипПрограммногоМодуляru
- Внешний модуль
+ Тип программного модуляAnyRef
@@ -82,4 +82,22 @@
true
+
+ ИдентификаторПрограммногоМодуля
+
+ ru
+ Идентификатор программного модуля
+
+
+ String
+
+ 36
+
+
+
+
+ Use
+
+ true
+
diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form
index 8ead8b2d2..641a5cd34 100644
--- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form
+++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form
@@ -256,6 +256,44 @@
НепроведенныеДокументыNone
+
+ НепроведенныеДокументыСсылка
+ 255
+ true
+ true
+
+
+ НепроведенныеДокументы.Ссылка
+
+
+ ru
+ Ссылка на документ
+
+
+ НепроведенныеДокументыСсылкаExtendedTooltip
+ 396
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НепроведенныеДокументыСсылкаКонтекстноеМеню
+ 256
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+ НепроведенныеДокументыГруппаКартинки258
@@ -292,6 +330,7 @@
Lefttrue
+ 9truetruetrue
@@ -379,44 +418,6 @@
true
-
- НепроведенныеДокументыСсылка
- 255
- true
- true
-
-
- НепроведенныеДокументы.Ссылка
-
-
- ru
- Ссылка на документ
-
-
- НепроведенныеДокументыСсылкаExtendedTooltip
- 396
- Label
- true
- true
-
- Left
-
-
-
- НепроведенныеДокументыСсылкаКонтекстноеМеню
- 256
- true
-
- LabelField
- Enter
- true
- Left
- true
-
- true
- true
-
- НепроведенныеДокументыНомерДокумента251
@@ -457,6 +458,7 @@
Lefttrue
+ 14truetrue
@@ -497,6 +499,7 @@
Lefttrue
+ 15truetrue
@@ -537,6 +540,7 @@
Lefttrue
+ 10truetrue
@@ -581,6 +585,7 @@
Lefttrue
+ 15truetrue
@@ -625,6 +630,7 @@
Lefttrue
+ 15truetrue
@@ -5222,9 +5228,6 @@
true
-
- ПоказыватьПроигнорированныеКонфликты
- ПоказыватьПроигнорированныеНезаполненные
@@ -5242,9 +5245,6 @@
true
-
- ПоказыватьПроигнорированныеНезаполненные
- ПоказыватьПроигнорированныеНепринятые
@@ -5262,9 +5262,6 @@
true
-
- ПоказыватьПроигнорированныеНепринятые
- ПоказыватьПроигнорированныеНепроведенные
@@ -5282,9 +5279,6 @@
true
-
- ПоказыватьПроигнорированныеНепроведенные
- ПричинаКонфликта
diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl
index e7f517a59..84bb16cd3 100644
--- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl
+++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl
@@ -205,14 +205,14 @@
Если Элемент.ТекущиеДанные.ДругаяВерсияПринята Тогда
- ПричинаКонфликта = НСтр("ru = 'Конфликт был разрешен автоматически в пользу программы ""%1"".
- |Версия в этой программе была замененена на версию из другой программы.'");
+ ПричинаКонфликта = Нстр("ru = 'Конфликт был разрешен автоматически в пользу программы ""%1"".
+ |Версия в этой программе была замененена на версию из другой программы.'");
ПричинаКонфликта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПричинаКонфликта, Элемент.ТекущиеДанные.АвторДругойВерсии);
Иначе
- ПричинаКонфликта =НСтр("ru = 'Конфликт был разрешен автоматически в пользу этой программы.
- |Версия в этой программе была сохранена, версия из другой программы была отклонена.'");
+ ПричинаКонфликта =Нстр("ru = 'Конфликт был разрешен автоматически в пользу этой программы.
+ |Версия в этой программе была сохранена, версия из другой программы была отклонена.'");
КонецЕсли;
@@ -421,7 +421,7 @@
Процедура ПоказыватьПроигнорированныеКонфликты(Команда)
ПоказыватьПроигнорированныеКонфликты = Не ПоказыватьПроигнорированныеКонфликты;
- ПоказыватьПроигнорированныеКонфликтыНаСервере();
+ ПоказыватьПроигнорированныеКонфликтыНаСервере(ПоказыватьПроигнорированныеКонфликты);
КонецПроцедуры
@@ -429,7 +429,7 @@
Процедура ПоказыватьПроигнорированныеНезаполненные(Команда)
ПоказыватьПроигнорированныеНезаполненные = Не ПоказыватьПроигнорированныеНезаполненные;
- ПоказыватьПроигнорированныеНезаполненныеНаСервере();
+ ПоказыватьПроигнорированныеНезаполненныеНаСервере(Истина);
КонецПроцедуры
@@ -437,7 +437,7 @@
Процедура ПоказыватьПроигнорированныеНепринятые(Команда)
ПоказыватьПроигнорированныеНепринятые = Не ПоказыватьПроигнорированныеНепринятые;
- ПоказыватьПроигнорированныеНепринятыеНаСервере();
+ ПоказыватьПроигнорированныеНепринятыеНаСервере(Истина);
КонецПроцедуры
@@ -445,7 +445,7 @@
Процедура ПоказыватьПроигнорированныеНепроведенные(Команда)
ПоказыватьПроигнорированныеНепроведенные = Не ПоказыватьПроигнорированныеНепроведенные;
- ПоказыватьПроигнорированныеНепроведенныеНаСервере();
+ ПоказыватьПроигнорированныеНепроведенныеНаСервере(Истина);
КонецПроцедуры
@@ -503,86 +503,72 @@
КонецПроцедуры
+
&НаСервере
-Процедура ПоказыватьПроигнорированныеКонфликтыНаСервере(Обновлять= Истина)
+Процедура ПоказыватьПроигнорированныеКонфликтыНаСервере(Обновлять = Истина)
Элементы.КоллизииПоказыватьПроигнорированныеКонфликты.Пометка = ПоказыватьПроигнорированныеКонфликты;
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- Коллизии,
- "ВерсияПроигнорирована",
- ,
- ,
- ,
- Не ПоказыватьПроигнорированныеКонфликты);
+
+ Отбор = Коллизии.КомпоновщикНастроек.Настройки.Отбор;
+ ЭлементОтбора = Отбор.ПолучитьОбъектПоИдентификатору( НастройкиОтборовДинамическихСписков.Коллизии.ВерсияПроигнорирована );
+ ЭлементОтбора.ПравоеЗначение = ПоказыватьПроигнорированныеКонфликты;
+ ЭлементОтбора.Использование = Не ПоказыватьПроигнорированныеКонфликты;
Если Обновлять Тогда
-
ОбновитьНаСервере("Коллизии");
-
КонецЕсли;
КонецПроцедуры
&НаСервере
-Процедура ПоказыватьПроигнорированныеНезаполненныеНаСервере(Обновлять= Истина)
+Процедура ПоказыватьПроигнорированныеНезаполненныеНаСервере(Обновлять = Истина)
Элементы.НезаполненныеРеквизитыПоказыватьПроигнорированныеНезаполненные.Пометка = ПоказыватьПроигнорированныеНезаполненные;
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- НезаполненныеРеквизиты,
- "Пропущена",
- ,
- ,
- ,
- Не ПоказыватьПроигнорированныеНезаполненные);
+
+ Отбор = НезаполненныеРеквизиты.КомпоновщикНастроек.Настройки.Отбор;
+ ЭлементОтбора = Отбор.ПолучитьОбъектПоИдентификатору( НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты.Пропущена );
+ ЭлементОтбора.ПравоеЗначение = ПоказыватьПроигнорированныеНезаполненные;
+ ЭлементОтбора.Использование = Не ПоказыватьПроигнорированныеНезаполненные;
Если Обновлять Тогда
-
ОбновитьНаСервере("НезаполненныеРеквизиты");
-
КонецЕсли;
КонецПроцедуры
&НаСервере
-Процедура ПоказыватьПроигнорированныеНепринятыеНаСервере(Обновлять= Истина)
+Процедура ПоказыватьПроигнорированныеНепринятыеНаСервере(Обновлять = Истина)
Элементы.НепринятыеПоДатеПоказыватьПроигнорированныеНепринятые.Пометка = ПоказыватьПроигнорированныеНепринятые;
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- НепринятыеПоДате,
- "ВерсияПроигнорирована",
- ,
- ,
- ,
- Не ПоказыватьПроигнорированныеНепринятые);
+
+ Отбор = НепринятыеПоДате.КомпоновщикНастроек.Настройки.Отбор;
+ ЭлементОтбора = Отбор.ПолучитьОбъектПоИдентификатору( НастройкиОтборовДинамическихСписков.НепринятыеПоДате.ВерсияПроигнорирована );
+ ЭлементОтбора.ПравоеЗначение = ПоказыватьПроигнорированныеНепринятые;
+ ЭлементОтбора.Использование = Не ПоказыватьПроигнорированныеНепринятые;
Если Обновлять Тогда
-
ОбновитьНаСервере("НепринятыеПоДате");
-
КонецЕсли;
КонецПроцедуры
&НаСервере
-Процедура ПоказыватьПроигнорированныеНепроведенныеНаСервере(Обновлять= Истина)
+Процедура ПоказыватьПроигнорированныеНепроведенныеНаСервере(Обновлять = Истина)
Элементы.НепроведенныеДокументыПоказыватьПроигнорированныеНепроведенные.Пометка = ПоказыватьПроигнорированныеНепроведенные;
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- НепроведенныеДокументы,
- "Пропущена",
- ,
- ,
- ,
- Не ПоказыватьПроигнорированныеНепроведенные);
+
+ Отбор = НепроведенныеДокументы.КомпоновщикНастроек.Настройки.Отбор;
+ ЭлементОтбора = Отбор.ПолучитьОбъектПоИдентификатору( НастройкиОтборовДинамическихСписков.НепроведенныеДокументы.Пропущена );
+ ЭлементОтбора.ПравоеЗначение = ПоказыватьПроигнорированныеНепроведенные;
+ ЭлементОтбора.Использование = Не ПоказыватьПроигнорированныеНепроведенные;
Если Обновлять Тогда
-
ОбновитьНаСервере("НепроведенныеДокументы");
-
КонецЕсли;
КонецПроцедуры
+
&НаСервере
Процедура ПровестиДокументы(Знач ВыделенныеСтроки)
@@ -777,8 +763,9 @@
УзлыОбмена = ?(ЗначениеЗаполнено(УзелИнформационнойБазы), УзелИнформационнойБазы, СписокУзлов);
- Возврат ОбменДаннымиСервер.КоличествоПроблемВерсионирования(УзлыОбмена, Истина,
- ПоказыватьПроигнорированныеКонфликты, Период, СтрокаПоиска);
+ Возврат ОбменДаннымиСервер.КоличествоПроблемВерсионирования(
+ УзлыОбмена, Истина, ПоказыватьПроигнорированныеКонфликты, Период, СтрокаПоиска
+ );
КонецФункции
@@ -1056,7 +1043,7 @@
Результат = Новый Структура;
// Непроведенные документы
- Отбор = НепроведенныеДокументы.Отбор;
+ Отбор = НепроведенныеДокументы.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("НепроведенныеДокументы", Новый Структура);
Настройка = Результат.НепроведенныеДокументы;
@@ -1074,7 +1061,7 @@
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, , Ложь)));
// Незаполненные реквизиты
- Отбор = НезаполненныеРеквизиты.Отбор;
+ Отбор = НезаполненныеРеквизиты.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("НезаполненныеРеквизиты", Новый Структура);
Настройка = Результат.НезаполненныеРеквизиты;
@@ -1094,7 +1081,7 @@
Если ИспользуетсяВерсионирование Тогда
// Конфликты
- Отбор = Коллизии.Отбор;
+ Отбор = Коллизии.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("Коллизии", Новый Структура);
Настройка = Результат.Коллизии;
@@ -1110,7 +1097,7 @@
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, ,Ложь)));
// Непринятые по дате запрета
- Отбор = НепринятыеПоДате.Отбор;
+ Отбор = НепринятыеПоДате.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("НепринятыеПоДате", Новый Структура);
Настройка = Результат.НепринятыеПоДате;
@@ -1133,7 +1120,7 @@
&НаСервереБезКонтекста
Функция ЭлементОтбораДинамическогоСписка(Знач ДинамическийСписок, Знач Идентификатор)
- Возврат ДинамическийСписок.Отбор.ПолучитьОбъектПоИдентификатору(Идентификатор);
+ Возврат ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор.ПолучитьОбъектПоИдентификатору(Идентификатор);
КонецФункции
&НаСервере
diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Help/ru.html b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Help/ru.html
index 88eb9e34a..3897ae392 100644
--- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Help/ru.html
+++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Предназначен для просмотра статистики по результатам синхронизации данных.
Результаты синхронизации данных в виде гиперссылки можно увидеть в списке Синхронизации данных, например, на рабочем столе программы. В зависимости от результатов гиперссылка принимает значения Предупреждений нет (в случае успешной синхронизации данных) или Предупреждения (при этом в скобках указывается количество предупреждений). Для открытия списка предупреждений пройдите по гиперссылке.
При выполнении синхронизации данных возможно возникновение проблемных ситуаций, требующих вмешательства пользователя. В колонках списка выводится необходимая информация о данных, по которым возникли проблемы и причина, по которой они не были приняты. Причина кратко указывается в специальной колонке, при этом по выделенной строке в нижней части списка выводится подробная формулировка, с указанием проблемных полей списков или документов.
Если дисковое пространство, предназначенное для хранения данных программы, ограничено, с помощью отчета можно контролировать объем хранимых версий объектов в сравнении и принять решение о сокращении числа хранимых версий.
+
В отчете выводится:
+
Диаграмма Объем хранимых версий по типам объектов;
+
Диаграмма Количество хранимых версий по типам объектов;
+
Числовые данные по количеству и объему хранимых версий объектов.
Открывается из варианта отчета Продолжительность регламентных заданий (отчет Анализ журнала регистрации) по двойному щелчку мыши на наименовании регламентного задания.
+
Выводится за день.
+
В отчете выводятся сведения:
+
Регламентное задание - наименование регламентного задания;
+
Общая продолжительность - общее время выполнения регламентного задания в секундах;
+
Количество Запусков;
+
Отменено заданий - количество отмененных заданий;
+
Количество Ошибок выполнения;
Приводятся сведения о Сеансах регламентного задания:
+
Начало - дата и время начала сеанса;
+
Завершение - дата и время завершения сеанса;
+
Длительность - время выполнения задания в секундах;
+
Сеанс - сведения о сеансе.
Редактирование расписания регламентного задания
+
Нажмите кнопку Изменить расписание, для того чтобы настроить новое расписание регламентного задания.
Просмотр журнала регистрации по сеансу задания
+
Выделив нужный сеанс, с помощью соответствующей кнопки можно Перейти к журналу регистрации и просмотреть подробные сведения о событиях, которые произошли в этом сеансе.
\ No newline at end of file
diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html b/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html
index a77b0432c..40fa0c9b7 100644
--- a/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html
+++ b/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Отчет предназначен для диагностики работы программы на основе данных журнала регистрации. Выводит различную статистическую информацию о работе программы, об ошибках и предупреждениях во время ее работы, о количестве активных пользователей в различные периоды времени и времени выполнения регламентных заданий.
Отчет открывается из раздела Администрирование - Поддержка и обслуживание - Отчеты и обработки - Отчеты администратора.
Необходимо помнить, что эта статистическая информация предназначена только для диагностики работы программы и загруженности сервера и не является средством для оценки эффективности работы сотрудников, расчета оплаты труда и т.д.
diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl b/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl
index e88ee9474..9f33d10a0 100644
--- a/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl
+++ b/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl
@@ -1,5 +1,47 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Настройки размещения в панели отчетов.
+//
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
+//
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+// Вспомогательные методы:
+// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
+//
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Ложь);
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "АнализАктивностиПользователей");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Позволяет выполнять мониторинг активности пользователей
+ |в программе (насколько интенсивно и с какими объектами работают пользователи).'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "АктивностьПользователя");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Подробная информация о том,
+ |с какими объектами работал пользователь в программе.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "КонтрольЖурналаРегистрации");
+ НастройкиВарианта.Описание = НСтр("ru = 'Список критичных записей журнала регистрации.'");
+ НастройкиВарианта.НастройкиДляПоиска.ИменаМакетов = "МакетОтчетаПоОшибкамВЖурналеРегистрации";
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПродолжительностьРаботыРегламентныхЗаданий");
+ НастройкиВарианта.Описание = НСтр("ru = 'Выводит график выполнения регламентных заданий в программе.'");
+ НастройкиВарианта.НастройкиДляПоиска.ИменаМакетов = "ПродолжительностьРаботыРегламентныхЗаданий, РасшифровкаРегламентныхЗаданий";
+КонецПроцедуры
+
+#КонецОбласти
+
#Область ПрограммныйИнтерфейс
// Функция получает информацию по активности пользователей из журнала регистрации
@@ -204,7 +246,7 @@
КонецЕсли;
- // Расчёт количества созданных документов и справочников
+ // Расчет количества созданных документов и справочников
Если СтрокаДанныхЖурналаРегистрации.Событие = "_$Data$_.New" Тогда
Если Найти(СтрокаДанныхЖурналаРегистрации.Метаданные, "Документ.") > 0
@@ -237,7 +279,7 @@
КонецЕсли;
- // Расчёт количества изменённых документов и справочников
+ // Расчет количества измененных документов и справочников
Если СтрокаДанныхЖурналаРегистрации.Событие = "_$Data$_.Update" Тогда
Если Найти(СтрокаДанныхЖурналаРегистрации.Метаданные, "Документ.") > 0
@@ -270,7 +312,7 @@
КонецЕсли;
- // Расчёт количества созданных БизнесПроцессов и Задач
+ // Расчет количества созданных БизнесПроцессов и Задач
Если СтрокаДанныхЖурналаРегистрации.Событие = "_$Data$_.New" Тогда
Если Найти(СтрокаДанныхЖурналаРегистрации.Метаданные, "БизнесПроцесс.") > 0
@@ -303,7 +345,7 @@
КонецЕсли;
- // Расчёт количества измененных БизнесПроцессов и задач
+ // Расчет количества измененных БизнесПроцессов и задач
Если СтрокаДанныхЖурналаРегистрации.Событие = "_$Data$_.Update" Тогда
Если Найти(СтрокаДанныхЖурналаРегистрации.Метаданные, "БизнесПроцесс.") > 0
diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
index 68c0e1308..7a0d04025 100644
--- a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
+++ b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
@@ -2191,6 +2191,7 @@
КонецВыборки
+ Normal5b96c047-cb1c-40e6-9166-28ae35f8f401
@@ -2214,6 +2215,7 @@
СкрытьРегламентныеЗадания
+ Normal90775166-bde1-4f36-9ab7-3e8e34927d56
diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx
index 8812fae81..eda15fa5b 100644
--- a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx
+++ b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx
@@ -2986,9 +2986,9 @@
Day1true
- 2014-06-10T10:00:00
- 2014-06-19T10:59:59
- 2014-06-10T10:00:00
+ 2014-11-28T10:00:00
+ 2014-12-07T10:59:59
+ 2014-11-28T10:00:00Gradient3Day
diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/АнализЖурналаРегистрации.mdo b/SSL/src/Reports/АнализЖурналаРегистрации/АнализЖурналаРегистрации.mdo
index 1f0310032..b63109ce8 100644
--- a/SSL/src/Reports/АнализЖурналаРегистрации/АнализЖурналаРегистрации.mdo
+++ b/SSL/src/Reports/АнализЖурналаРегистрации/АнализЖурналаРегистрации.mdo
@@ -15,6 +15,7 @@
Report.АнализЖурналаРегистрации.Form.ФормаНастроекReport.АнализЖурналаРегистрации.Form.ФормаВариантаSettingsStorage.ХранилищеВариантовОтчетов
+ trueru
@@ -35,6 +36,11 @@
ruСведения о регламентном задании
+
+
+ ru
+
+ PersonalComputerMobileDevice
diff --git a/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Form.form b/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Form.form
index 600e2e444..88639d938 100644
--- a/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Form.form
+++ b/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Form.form
@@ -36,8 +36,10 @@
Lefttrue
+ 25truetrue
+ falsetruetruetrue
diff --git a/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Module.bsl b/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Module.bsl
index 96001a41c..b300145e2 100644
--- a/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Module.bsl
+++ b/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаПростыхОтветов/Module.bsl
@@ -12,17 +12,17 @@
Отказ = Истина;
КонецЕсли;
- ТекстЗаголовка = НСтр("ru = 'Ответы на вопрос № %1 опроса %2 от %3'");
- Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстЗаголовка, ПолныйКод, НаименованиеОпроса, Формат(ДатаОпроса,"ДФ=dd.MM.yyyy"));
+ ШаблонЗаголовка = НСтр("ru = 'Ответы на вопрос № %1 опроса %2 + от %3.'");
+ Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ПолныйКод, НаименованиеОпроса , Формат(ДатаОпроса,"ДФ=dd.MM.yyyy"));
- СформироватьОтчёт();
+ СформироватьОтчет();
КонецПроцедуры
&НаКлиенте
Процедура ВариантОтчетаПриИзменении(Элемент)
- СформироватьОтчёт();
+ СформироватьОтчет();
КонецПроцедуры
@@ -31,7 +31,7 @@
#Область СлужебныеПроцедурыИФункции
&НаСервере
-Процедура СформироватьОтчёт()
+Процедура СформироватьОтчет()
ТаблицаОтчета.Очистить();
СКД = Отчеты.АнализОпроса.ПолучитьМакет("ПростыеВопросы");
diff --git a/SSL/src/Reports/АнализОпроса/Forms/ФормаОтчета/Form.form b/SSL/src/Reports/АнализОпроса/Forms/ФормаОтчета/Form.form
index afb3d7dbf..91a4092e4 100644
--- a/SSL/src/Reports/АнализОпроса/Forms/ФормаОтчета/Form.form
+++ b/SSL/src/Reports/АнализОпроса/Forms/ФормаОтчета/Form.form
@@ -35,7 +35,7 @@
Lefttrue
- 45
+ 40truetruefalse
@@ -44,6 +44,7 @@
truetrueNormal
+ 40
@@ -78,6 +79,7 @@
Lefttrue
+ 15truetruefalse
diff --git a/SSL/src/Reports/АнализОпроса/Help/ru.html b/SSL/src/Reports/АнализОпроса/Help/ru.html
new file mode 100644
index 000000000..83efc08f2
--- /dev/null
+++ b/SSL/src/Reports/АнализОпроса/Help/ru.html
@@ -0,0 +1,28 @@
+
+
Предназначен для выдачи статистических данных по результатам анкетирования.
+
Открывается по команде Анализ опроса в разделе Анкетирование.
+
При помощи этого отчета по интересующему опросу (необходимо выбрать его из списка в поле Опрос) можно получить итоговую информацию по количеству ответов в различных разрезах.
+
+
Для этого в поле Вид отчета выберите нужный отчет:
Если ответы числовые, то по таким ответам может быть дополнительно выведена различная статистическая информация: минимальное, максимальное, среднее значение, а также сумма (выделяется значком ). Сумма выводится для вопросов с включенным флажком Агрегировать сумму в отчетах.
+
+
Первое число - это количество респондентов, ответивших на вопрос.
+
+
Статистическая информация выводится через дробь после первого числа в таком порядке: /Минимум/Максимум/Среднее.
+
+
У отчета существует расшифровка, которая дает информацию о том, кто и как отвечал на тот или иной вопрос.
+
+
Для того чтобы получить расшифровку по вопросу, дважды щелкните мышью по соответствующей строке отчета.
При помощи отчета Анализ опроса можно получить информацию о ходе анкетирования в разрезе участвующих в нем респондентов. Информация в отчете сгруппирована по респондентам, которые еще не заполнили или уже заполнили свои анкеты.
\ No newline at end of file
diff --git a/SSL/src/Reports/АнализОпроса/ManagerModule.bsl b/SSL/src/Reports/АнализОпроса/ManagerModule.bsl
new file mode 100644
index 000000000..173a4baf4
--- /dev/null
+++ b/SSL/src/Reports/АнализОпроса/ManagerModule.bsl
@@ -0,0 +1,40 @@
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Настройки размещения в панели отчетов.
+//
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
+//
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+// Вспомогательные методы:
+// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
+//
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина);
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Информация о респондентах заполнивших анкеты по опросу,
+ |количестве ответов на вопросы, количестве данных вариантов ответов.'");
+ НастройкиВарианта.НастройкиДляПоиска.НаименованияПолей =
+ НСтр("ru = 'Респондент
+ |Опрос
+ |Вопрос
+ |Ответ'");
+ НастройкиВарианта.НастройкиДляПоиска.НаименованияПараметровИОтборов =
+ НСтр("ru = 'Опрос
+ |Вид отчета'");
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo b/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo
index 03b16a161..a8a054758 100644
--- a/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo
+++ b/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo
@@ -12,6 +12,11 @@
trueReport.АнализОпроса.Form.ФормаОтчетаSettingsStorage.ХранилищеВариантовОтчетов
+
+
+ ru
+
+ ФормаОтчета
diff --git a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/Help/ru.html b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/Help/ru.html
new file mode 100644
index 000000000..a9befe0b0
--- /dev/null
+++ b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/Help/ru.html
@@ -0,0 +1,16 @@
+
+
Предназначен для анализа ответов респондентов на анкеты.
+
Открывается по команде Аналитический отчет по анкетированию в разделе Анкетирование.
+
Отчет позволяет просматривать результаты анкетирования в различных представлениях: ответы на простые вопросы и вопросы с агрегируемыми показателями, ответы на табличные вопросы; а также сравнивать ответы на одни и те же вопросы, заданные в разных опросах.
+
Для простого анализа результатов анкетирования в отчете предусмотрен набор предопределенных вариантов отчета. В случае если существующие варианты не устраивают, то можно создать и сохранить свои.
+
Воспользуйтесь командой Еще (Все действия) - Выбрать вариант отчета, для того чтобы вывести список доступных для выбора вариантов:
+
Просмотр ответов на простые вопросы - в отчете выводятся ответы респондентов на простые вопросы (все, кроме табличных). Данные могут быть сгруппированы по опросу, респондентам и вопросам. Можно также установить отбор по опросам, респондентам и вопросам.
+
Просмотр ответов на табличные вопросы (плоский вид) - в отчете выводятся табличные вопросы. Данные группируются по респондентам и вопросам, также можно установить отбор по опросу, респонденту и вопросам. С помощью двойного щелчка мышью по респонденту можно перейти в соответствующий список программы и посмотреть данные по этому респонденту, с помощью двойного щелчка мышью по соответствующей строке можно посмотреть более подробно вопрос, на который был получен данный ответ.
+
Просмотр ответов на табличные вопросы (табличный вид) отличается от предыдущего варианта внешним видом: данные выводятся не в одной таблице с группировкой, а в отдельных таблицах по каждому респонденту.
+
Простые вопросы с агрегируемыми показателями - в отчет выводятся простые вопросы с числовым ответом. По каждому вопросу рассчитывается количество ответивших респондентов, среднее, минимальное и максимальное значение ответа, а также рассчитывается сумма всех ответов. Можно установить отбор по опросу и вопросам.
+
Количество ответов на простые вопросы - отчет показывает количество ответов на все простые вопросы. Можно установить отбор по опросу и вопросу.
+
Сравнение по опросам количества ответов на простые вопросы - отчет показывает количество ответов на все простые вопросы в разрезе опросов (опросы выводятся в колонках). Можно установить отбор по вопросам и опросу.
+
Если в табличных вопросах используются числовые агрегируемые ответы, то с помощью варианта Табличные вопросы с агрегируемыми показателями по каждому вопросу можно получить количество ответивших, среднее, минимальное, максимальное значение или сумму ответа. Можно установить отбор по опросу и вопросу.
+
Если табличные вопросы с агрегируемыми ответами используются в разных опросах, то с помощью варианта Сравнение по опросам табличных вопросов с агрегируемыми показателями можно сравнить табличные вопросы.
+
Количество ответов на табличные вопросы - отчет показывает количество ответов на все табличные вопросы. Можно отобрать ответы по различным признакам, например, по вопросу.
\ No newline at end of file
diff --git a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/ManagerModule.bsl b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/ManagerModule.bsl
new file mode 100644
index 000000000..95528157f
--- /dev/null
+++ b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/ManagerModule.bsl
@@ -0,0 +1,68 @@
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Настройки размещения в панели отчетов.
+//
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
+//
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+// Вспомогательные методы:
+// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
+//
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Ложь);
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПросмотрОтветовПростыеВопросы");
+ НастройкиВарианта.Описание = НСтр("ru = 'Информация о том, как отвечали респонденты на простые вопросы.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПросмотрТабличныхВопросовПлоскийВид");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Информация о том, как отвечали респонденты на табличные вопросы.
+ |Выводится в виде списка с группировками.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПросмотрТабличныхВопросовТабличныйВид");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Информация о том, как отвечали респонденты на табличные вопросы.
+ |Каждый ответ респондента представлен в виде таблицы.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПростыеВопросыКоличествоОтветов");
+ НастройкиВарианта.Описание = НСтр("ru = 'Информация о том, сколько раз был дан вариант ответа на простой вопрос.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПростыеВопросыАгрегируемыеПоказатели");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Информация о среднем, минимальном, максимальном ответе на простой вопрос,
+ |который требует числового ответа.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ТабличныеВопросыКоличествоОтветов");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Информация о том, сколько раз был дан варианта ответа для табличных вопросов,
+ |который требует указания числового значения.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ТабличныеВопросыАгрегируемыеПоказатели");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Информация о среднем, минимальном, максимальном ответе в ячейке табличного вопроса,
+ |который требует указания числового значения.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПростыеВопросыКоличествоОтветовСравнениеПоОпросам");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Сравнительный анализ количества данных вариантов ответов
+ |на простые вопросы в разных опросах.'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ТабличныеВопросыАгрегируемыеПоказателиСравнениеПоОпросам");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Сравнительный анализ агрегируемых показателей ответов в ячейках
+ |табличных вопросов разных опросов.'");
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
index ba6fa3b9d..8471c4c2b 100644
--- a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
+++ b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
@@ -533,6 +533,7 @@
ВопросEqualСправочник.ВопросыШаблонаАнкеты.ПустаяСсылка
+ Normaldcc264b8-2942-4c9b-9ce6-0c88eb10b562
@@ -721,23 +722,27 @@
falseАналитика1Equal
+ NormalfalseАналитика2Equal
+ NormalfalseАнкетаEqualДокумент.Анкета.ПустаяСсылка
+ NormalfalseВопросEqualСправочник.ВопросыШаблонаАнкеты.ПустаяСсылка
+ Normal2e00559b-826d-4378-bfe2-5b45dbde0ec7
@@ -745,12 +750,14 @@
ОпросEqualДокумент.НазначениеОпросов.ПустаяСсылка
+ Normal69da8568-f153-42e8-b285-3340e1f7948bfalseОтветEqual
+ Normalfalse
@@ -914,12 +921,14 @@
Вопрос.ТипВопросаEqualПеречисление.ТипыВопросовШаблонаАнкеты.Табличный
+ NormalfalseАнкетаEqualДокумент.Анкета.ПустаяСсылка
+ Normalfalse
@@ -939,11 +948,13 @@
falseОтветРесурсEqual
+ NormalfalseРеспондентEqual
+ Normalec8c942e-54d8-4e8c-b148-92f04183db30
@@ -951,16 +962,19 @@
ШаблонАнкетыEqualСправочник.ШаблоныАнкет.ПустаяСсылка
+ NormalfalseАналитика1Equal
+ NormalfalseАналитика2Equal
+ NormalNormal9f06ab2f-b51a-40c4-ae3a-b9330d025663
@@ -1107,6 +1121,7 @@
АнкетаEqualДокумент.Анкета.ПустаяСсылка
+ Normalfalse
@@ -1119,6 +1134,7 @@
falseКоличествоОтветовEqual
+ Normalfalse
@@ -1131,11 +1147,13 @@
falseОтветEqual
+ NormalfalseРеспондентEqual
+ NormalВопрос.ТипВопроса
@@ -1147,6 +1165,7 @@
falseЭлементарныйВопросEqual
+ NormalNormal90fb2a81-084b-4b26-899c-624f3cd5656c
@@ -1276,6 +1295,7 @@
АнкетаEqualДокумент.Анкета.ПустаяСсылка
+ Normalfalse
@@ -1288,16 +1308,19 @@
falseКоличествоОтветовEqual
+ NormalfalseМаксимальныйОтветEqual
+ NormalfalseМинимальныйОтветEqual
+ Normalfalse
@@ -1310,26 +1333,31 @@
falseОтветEqual
+ NormalfalseОткрытыйОтветEqual
+ NormalfalseРеспондентEqual
+ NormalfalseСреднийОтветEqual
+ NormalfalseСуммаОтветEqual
+ NormalВопрос.ТипВопроса
@@ -1348,11 +1376,13 @@
ШаблонАнкетыEqualСправочник.ШаблоныАнкет.ПустаяСсылка
+ NormalfalseЭлементарныйВопросEqual
+ NormalNormal3a64d9b5-24f2-4ab8-82bd-e295137906f3
@@ -1455,17 +1485,20 @@
falseАналитика1Equal
+ NormalfalseАналитика2Equal
+ NormalfalseАнкетаEqualДокумент.Анкета.ПустаяСсылка
+ Normalfalse
@@ -1485,16 +1518,19 @@
falseОтветEqual
+ NormalfalseРеспондентEqual
+ NormalfalseКоличествоОтветовEqual
+ NormalВопрос.ТипВопроса
@@ -1507,12 +1543,14 @@
ШаблонАнкетыEqualСправочник.ШаблоныАнкет.ПустаяСсылка
+ NormalfalseЭлементарныйВопросEqualПланВидовХарактеристик.ВопросыДляАнкетирования.ПустаяСсылка
+ NormalNormalfff43570-4afb-47be-a9ab-7c0b9a9da692
@@ -1665,17 +1703,20 @@
falseАналитика1Equal
+ NormalfalseАналитика2Equal
+ NormalfalseАнкетаEqualДокумент.Анкета.ПустаяСсылка
+ Normalfalse
@@ -1688,16 +1729,19 @@
falseКоличествоОтветовEqual
+ NormalfalseМинимальныйОтветEqual
+ NormalfalseМаксимальныйОтветEqual
+ Normalfalse
@@ -1710,21 +1754,25 @@
falseОтветEqual
+ NormalfalseРеспондентEqual
+ NormalfalseСреднийОтветEqual
+ NormalfalseСуммаОтветEqual
+ NormalВопрос.ТипВопроса
@@ -1743,12 +1791,14 @@
ШаблонАнкетыEqualСправочник.ШаблоныАнкет.ПустаяСсылка
+ NormalfalseЭлементарныйВопросEqualПланВидовХарактеристик.ВопросыДляАнкетирования.ПустаяСсылка
+ NormalNormal8bdce37a-09a3-4b8f-a482-ec72ffd6e94e
@@ -1860,6 +1910,7 @@
АнкетаEqualДокумент.Анкета.ПустаяСсылка
+ Normalfalse
@@ -1871,6 +1922,7 @@
falseКоличествоОтветовEqual
+ Normalfalse
@@ -1883,11 +1935,13 @@
falseОтветEqual
+ NormalfalseРеспондентEqual
+ NormalВопрос.ТипВопроса
@@ -1899,6 +1953,7 @@
falseЭлементарныйВопросEqual
+ Normala53bcbc0-1350-44dd-9a86-4f3d62e20c0dNormal
@@ -2047,17 +2102,20 @@
falseАналитика1Equal
+ NormalfalseАналитика2Equal
+ NormalfalseАнкетаEqualДокумент.Анкета.ПустаяСсылка
+ Normalfalse
@@ -2069,16 +2127,19 @@
falseКоличествоОтветовEqual
+ NormalfalseМинимальныйОтветEqual
+ NormalfalseМаксимальныйОтветEqual
+ Normalfalse
@@ -2091,22 +2152,26 @@
falseОтветEqual
+ NormalfalseРеспондентEqual
+ Normal652da0d5-9a13-43ab-bd22-29ecaf309c3cfalseСреднийОтветEqual
+ NormalfalseСуммаОтветEqual
+ NormalВопрос.ТипВопроса
@@ -2125,12 +2190,14 @@
ШаблонАнкетыEqualСправочник.ШаблоныАнкет.ПустаяСсылка
+ NormalfalseЭлементарныйВопросEqualПланВидовХарактеристик.ВопросыДляАнкетирования.ПустаяСсылка
+ Normalfce963d4-971e-45d8-b669-2a483f95d074Normal
diff --git a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo
index e641fab0e..47a9c91e8 100644
--- a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo
+++ b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo
@@ -12,6 +12,11 @@
trueReport.АналитическийОтчетПоАнкетированию.Template.ОсновнаяСхемаКомпоновкиДанныхSettingsStorage.ХранилищеВариантовОтчетов
+
+
+ ru
+
+ ОсновнаяСхемаКомпоновкиДанных
diff --git a/SSL/src/Reports/БизнесПроцессы/Help/ru.html b/SSL/src/Reports/БизнесПроцессы/Help/ru.html
new file mode 100644
index 000000000..99c8718ee
--- /dev/null
+++ b/SSL/src/Reports/БизнесПроцессы/Help/ru.html
@@ -0,0 +1,11 @@
+
+
Предназначен для мониторинга бизнес-процессов.
+
Выдается только по завершенным бизнес-процессам.
+
Открывается по команде Список бизнес-процессов в списке Отчеты по задачам раздела Бизнес-процессы и задачи.
+
Варианты отчета
+
+
Список бизнес-процессов - позволяет провести сравнительный анализ частоты возникновения различных видов бизнес-процессов в программе. Бизнес-процессы сгруппированы по видам, при этом в строках отчета выводятся наименование, автор, признак начала и завершения, дата начала и завершения бизнес-процесса. Отчет формируется за Период.
+
+
Можно установить фильтр по Виду бизнес-процесса.
Статистика по видам бизнес-процессов - позволяет посмотреть отчет в виде графика. Отчет формируется за Период.
+
Можно отобрать статистику по одному из Видов бизнес-процессов.
\ No newline at end of file
diff --git a/SSL/src/Reports/БизнесПроцессы/ManagerModule.bsl b/SSL/src/Reports/БизнесПроцессы/ManagerModule.bsl
index bea698eae..2a6cf4be6 100644
--- a/SSL/src/Reports/БизнесПроцессы/ManagerModule.bsl
+++ b/SSL/src/Reports/БизнесПроцессы/ManagerModule.bsl
@@ -1,25 +1,33 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-
-#Область СлужебныеПроцедурыИФункции
-
-// Заполняет настройки вариантов отчета.
-// Подробнее - см. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Настройки размещения в панели отчетов.
//
-Процедура НастроитьВариантыОтчета(Настройки) Экспорт
-
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
+//
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+// Вспомогательные методы:
+// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
+//
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ НастройкиОтчета.Описание = НСтр("ru = 'Список и сводная статистика по всем бизнес-процессам.'");
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.БизнесПроцессы);
- Отчет.Описание = НСтр("ru = 'Список и сводная статистика по всем бизнес-процессам.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "СписокБизнесПроцессов");
- Вариант.Описание = НСтр("ru = 'Список бизнес-процессов определенных видов за указанный интервал.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "СтатистикаПоВидам");
- Вариант.Описание = НСтр("ru = 'Сводная диаграмма по количеству активных и завершенных бизнес-процессов.'");
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "СписокБизнесПроцессов");
+ НастройкиВарианта.Описание = НСтр("ru = 'Список бизнес-процессов определенных видов за указанный интервал.'");
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "СтатистикаПоВидам");
+ НастройкиВарианта.Описание = НСтр("ru = 'Сводная диаграмма по количеству активных и завершенных бизнес-процессов.'");
КонецПроцедуры
-
+
#КонецОбласти
#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Reports/БизнесПроцессы/Templates/Макет/Template.dcs b/SSL/src/Reports/БизнесПроцессы/Templates/Макет/Template.dcs
index 9fbc28f33..8701e2468 100644
--- a/SSL/src/Reports/БизнесПроцессы/Templates/Макет/Template.dcs
+++ b/SSL/src/Reports/БизнесПроцессы/Templates/Макет/Template.dcs
@@ -214,8 +214,40 @@
falseВидБизнесПроцессаInList
+ Normal68c21fb2-0c55-4303-92c4-ecfcdf71607a
+
+ false
+ Автор
+ InList
+
+
+ -1
+
+ Normal
+
+
+ false
+ Стартован
+ Equal
+ true
+ Normal
+
+
+ false
+ Завершен
+ Equal
+ false
+ Normal
+
+
+ false
+ СостояниеБизнесПроцессов
+ Equal
+ false
+ Normal
+
@@ -301,6 +333,16 @@
+
+
+ ВыводитьПараметрыДанных
+ DontOutput
+
+
+ ВыводитьОтбор
+ DontOutput
+
+
@@ -347,8 +389,40 @@
falseВидБизнесПроцессаInList
+ Normalf555e331-a53e-4ed4-a1b3-2e39c6264cd6
+
+ false
+ Автор
+ InList
+
+
+ -1
+
+ Normal
+
+
+ false
+ Стартован
+ Equal
+ true
+ Normal
+
+
+ false
+ Завершен
+ Equal
+ false
+ Normal
+
+
+ false
+ СостояниеБизнесПроцессов
+ Equal
+ false
+ Normal
+
@@ -456,7 +530,12 @@
516adb45-eacf-4811-813b-a0adc3aea0b1
- Показать завершенные бизнес-процессы отдельно
+
+
+ ru
+ Вывести завершенные бизнес-процессы отдельно
+
+
diff --git a/SSL/src/Reports/БизнесПроцессы/БизнесПроцессы.mdo b/SSL/src/Reports/БизнесПроцессы/БизнесПроцессы.mdo
index 47e6c3457..08b97a8e8 100644
--- a/SSL/src/Reports/БизнесПроцессы/БизнесПроцессы.mdo
+++ b/SSL/src/Reports/БизнесПроцессы/БизнесПроцессы.mdo
@@ -12,6 +12,12 @@
trueReport.БизнесПроцессы.Template.МакетSettingsStorage.ХранилищеВариантовОтчетов
+ true
+
+
+ ru
+
+ ruОтчет по бизнес-процессам
diff --git a/SSL/src/Reports/ДатыЗапретаЗагрузки/Forms/ФормаОтчета/Module.bsl b/SSL/src/Reports/ДатыЗапретаЗагрузки/Forms/ФормаОтчета/Module.bsl
index 38d81444a..9dff73299 100644
--- a/SSL/src/Reports/ДатыЗапретаЗагрузки/Forms/ФормаОтчета/Module.bsl
+++ b/SSL/src/Reports/ДатыЗапретаЗагрузки/Forms/ФормаОтчета/Module.bsl
@@ -8,7 +8,7 @@
Возврат;
КонецЕсли;
- Свойства = ДатыЗапретаИзмененияПовтИсп.СвойстваРазделов();
+ Свойства = ДатыЗапретаИзмененияСлужебныйПовтИсп.СвойстваРазделов();
// Установка варианта отчета.
Если Параметры.ПоРазделамОбъектам = Истина Тогда
diff --git a/SSL/src/Reports/ДатыЗапретаЗагрузки/ManagerModule.bsl b/SSL/src/Reports/ДатыЗапретаЗагрузки/ManagerModule.bsl
index 41e01b189..2a2ed10d9 100644
--- a/SSL/src/Reports/ДатыЗапретаЗагрузки/ManagerModule.bsl
+++ b/SSL/src/Reports/ДатыЗапретаЗагрузки/ManagerModule.bsl
@@ -1,148 +1,68 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-#Область СлужебныеПроцедурыИФункции
+#Область СлужебныйПрограммныйИнтерфейс
-// Обработчики событий подсистемы ВариантыОтчетов.
-
-// Содержит настройки размещения вариантов отчетов в панели отчетов.
+// Настройки размещения в панели отчетов.
//
// Параметры:
// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
//
// Описание:
-// В данной процедуре необходимо указать каким именно образом предопределенные варианты отчетов
-// будут регистрироваться в программе и показываться в панели отчетов.
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
//
// Вспомогательные методы:
-// НастройкиОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.<ИмяОтчета>);
// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
//
-// Данные функции получают соответственно настройки отчета и настройки варианта отчета следующей структуры:
-// * Включен - Булево -
-// Если Ложь, то вариант отчета не регистрируется в подсистеме.
-// Используется для удаления технических и контекстных вариантов отчетов из всех интерфейсов.
-// Эти варианты отчета по прежнему можно открывать в форме отчета программно при помощи
-// параметров открытия (см. справку по "Расширение управляемой формы для отчета.КлючВарианта").
-// * ВидимостьПоУмолчанию - Булево -
-// Если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов.
-// Пользователь может "включить" его в режиме настройки панели отчетов
-// или открыть через форму "Все отчеты".
-// * Описание - Строка - Дополнительная информация по варианту отчета.
-// В панели отчетов выводится в качестве подсказки.
-// Должно расшифровывать для пользователя содержимое варианта отчета
-// и не должно дублировать наименование варианта отчета.
-// * Размещение - Соответствие - Настройки размещения варианта отчета в разделах.
-// ** Ключ - ОбъектМетаданных: Подсистема - Подсистема, в которой размещается отчет или вариант отчета
-// ** Значение - Строка - Необязательный. Настройки размещения в подсистеме.
-// "" - Выводить отчет в своей группе обычным шрифтом.
-// "Важный" - Выводить отчет в своей группе жирным шрифтом.
-// "СмТакже" - Выводить отчет в группе "См. также".
-// * ФункциональныеОпции - Массив из Строка -
-// Имена функциональных опций варианта отчета.
-//
-// Например:
-//
-// (1) Добавить в подсистему вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (2) Отключить вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Включен = Ложь;
-//
-// (3) Отключить все варианты отчета, кроме требуемого.
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Включен = Ложь;
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта");
-// Вариант.Включен = Истина;
-//
-// (4) Результат исполнения 4.1 и 4.2 будет одинаковым:
-// (4.1)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (4.2)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Отчет.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// Важно:
-// Отчет выступает в качестве контейнера вариантов.
-// Изменяя настройки отчета можно сразу изменять настройки всех его вариантов.
-// Однако, если явно получить настройки варианта отчета, то они станут самостоятельными,
-// т.е. более не будут наследовать изменения настроек от отчета. См. примеры 3 и 4.
-//
-// Начальная настройка размещения отчетов по подсистемам зачитывается из метаданных,
-// ее дублирование в коде не требуется.
-//
-// Функциональные опции вариантов объединяются с функциональными опциями отчетов по следующим правилам:
-// (ФункциональнаяОпция1Отчета ИЛИ ФункциональнаяОпция2Отчета) И (ФункциональнаяОпция3Варианта ИЛИ ФункциональнаяОпция4Варианта).
-// Функциональные опции отчетов не зачитываются из метаданных,
-// они применяются на этапе использования подсистемы пользователем.
-// Через ОписаниеОтчета можно добавлять функциональные опции, которые будут соединяться по указанным выше правилам,
-// но надо помнить, что эти функциональные опции будут действовать только для предопределенных вариантов этого отчета.
-// Для пользовательских вариантов отчета действуют только функциональные опции отчета
-// - они отключаются только с отключением всего отчета.
-//
-Процедура НастроитьВариантыОтчета(Настройки) Экспорт
-
- Свойства = ДатыЗапретаИзмененияПовтИсп.СвойстваРазделов();
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ НастройкиОтчета.Включен = Ложь;
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ДатыЗапретаЗагрузки);
- Отчет.Включен = Ложь;
-
+ Свойства = ДатыЗапретаИзмененияСлужебныйПовтИсп.СвойстваРазделов();
Если Свойства.ПоказыватьРазделы И НЕ Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаЗагрузкиПоРазделамОбъектамДляПользователей";
- Описание =
+ ИмяВарианта = "ДатыЗапретаЗагрузкиПоРазделамОбъектамДляПользователей";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета загрузки для пользователей,
|сгруппированные по разделам с объектами.'");
ИначеЕсли Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаЗагрузкиПоРазделамДляПользователей";
- Описание =
+ ИмяВарианта = "ДатыЗапретаЗагрузкиПоРазделамДляПользователей";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета загрузки для пользователей,
|сгруппированные по разделам.'");
Иначе
- УстановитьВариант = "ДатыЗапретаЗагрузкиПоОбъектамДляПользователей";
- Описание =
+ ИмяВарианта = "ДатыЗапретаЗагрузкиПоОбъектамДляПользователей";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета загрузки для пользователей,
|сгруппированные по объектам.'");
КонецЕсли;
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, УстановитьВариант);
- Вариант.Включен = Истина;
- Вариант.Описание = Описание;
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, ИмяВарианта);
+ НастройкиВарианта.Включен = Истина;
+ НастройкиВарианта.Описание = ОписаниеВарианта;
Если Свойства.ПоказыватьРазделы И НЕ Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаЗагрузкиПоПользователям";
- Описание =
+ ИмяВарианта = "ДатыЗапретаЗагрузкиПоПользователям";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета загрузки для разделов с объектами,
|сгруппированные по пользователям.'");
ИначеЕсли Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаЗагрузкиПоПользователямБезОбъектов";
- Описание =
+ ИмяВарианта = "ДатыЗапретаЗагрузкиПоПользователямБезОбъектов";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета загрузки для разделов,
|сгруппированные по пользователям.'");
Иначе
- УстановитьВариант = "ДатыЗапретаЗагрузкиПоПользователямБезРазделов";
- Описание =
+ ИмяВарианта = "ДатыЗапретаЗагрузкиПоПользователямБезРазделов";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета загрузки для объектов,
|сгруппированные по пользователям.'");
КонецЕсли;
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, УстановитьВариант);
- Вариант.Включен = Истина;
- Вариант.Описание = Описание;
-
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, ИмяВарианта);
+ НастройкиВарианта.Включен = Истина;
+ НастройкиВарианта.Описание = ОписаниеВарианта;
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Reports/ДатыЗапретаИзменения/Forms/ФормаОтчета/Module.bsl b/SSL/src/Reports/ДатыЗапретаИзменения/Forms/ФормаОтчета/Module.bsl
index 7b0d2868c..0ad62b395 100644
--- a/SSL/src/Reports/ДатыЗапретаИзменения/Forms/ФормаОтчета/Module.bsl
+++ b/SSL/src/Reports/ДатыЗапретаИзменения/Forms/ФормаОтчета/Module.bsl
@@ -8,7 +8,7 @@
Возврат;
КонецЕсли;
- Свойства = ДатыЗапретаИзмененияПовтИсп.СвойстваРазделов();
+ Свойства = ДатыЗапретаИзмененияСлужебныйПовтИсп.СвойстваРазделов();
// Установка варианта отчета.
Если Параметры.ПоРазделамОбъектам = Истина Тогда
diff --git a/SSL/src/Reports/ДатыЗапретаИзменения/ManagerModule.bsl b/SSL/src/Reports/ДатыЗапретаИзменения/ManagerModule.bsl
index 140440bc0..ce3bedbf0 100644
--- a/SSL/src/Reports/ДатыЗапретаИзменения/ManagerModule.bsl
+++ b/SSL/src/Reports/ДатыЗапретаИзменения/ManagerModule.bsl
@@ -1,148 +1,68 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-#Область СлужебныеПроцедурыИФункции
+#Область СлужебныйПрограммныйИнтерфейс
-// Обработчики событий подсистемы ВариантыОтчетов.
-
-// Содержит настройки размещения вариантов отчетов в панели отчетов.
+// Настройки размещения в панели отчетов.
//
// Параметры:
// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
//
// Описание:
-// В данной процедуре необходимо указать каким именно образом предопределенные варианты отчетов
-// будут регистрироваться в программе и показываться в панели отчетов.
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
//
// Вспомогательные методы:
-// НастройкиОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.<ИмяОтчета>);
// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
//
-// Данные функции получают соответственно настройки отчета и настройки варианта отчета следующей структуры:
-// * Включен - Булево -
-// Если Ложь, то вариант отчета не регистрируется в подсистеме.
-// Используется для удаления технических и контекстных вариантов отчетов из всех интерфейсов.
-// Эти варианты отчета по прежнему можно открывать в форме отчета программно при помощи
-// параметров открытия (см. справку по "Расширение управляемой формы для отчета.КлючВарианта").
-// * ВидимостьПоУмолчанию - Булево -
-// Если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов.
-// Пользователь может "включить" его в режиме настройки панели отчетов
-// или открыть через форму "Все отчеты".
-// * Описание - Строка - Дополнительная информация по варианту отчета.
-// В панели отчетов выводится в качестве подсказки.
-// Должно расшифровывать для пользователя содержимое варианта отчета
-// и не должно дублировать наименование варианта отчета.
-// * Размещение - Соответствие - Настройки размещения варианта отчета в разделах.
-// ** Ключ - ОбъектМетаданных: Подсистема - Подсистема, в которой размещается отчет или вариант отчета
-// ** Значение - Строка - Необязательный. Настройки размещения в подсистеме.
-// "" - Выводить отчет в своей группе обычным шрифтом.
-// "Важный" - Выводить отчет в своей группе жирным шрифтом.
-// "СмТакже" - Выводить отчет в группе "См. также".
-// * ФункциональныеОпции - Массив из Строка -
-// Имена функциональных опций варианта отчета.
-//
-// Например:
-//
-// (1) Добавить в подсистему вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (2) Отключить вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Включен = Ложь;
-//
-// (3) Отключить все варианты отчета, кроме требуемого.
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Включен = Ложь;
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта");
-// Вариант.Включен = Истина;
-//
-// (4) Результат исполнения 4.1 и 4.2 будет одинаковым:
-// (4.1)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (4.2)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Отчет.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// Важно:
-// Отчет выступает в качестве контейнера вариантов.
-// Изменяя настройки отчета можно сразу изменять настройки всех его вариантов.
-// Однако, если явно получить настройки варианта отчета, то они станут самостоятельными,
-// т.е. более не будут наследовать изменения настроек от отчета. См. примеры 3 и 4.
-//
-// Начальная настройка размещения отчетов по подсистемам зачитывается из метаданных,
-// ее дублирование в коде не требуется.
-//
-// Функциональные опции вариантов объединяются с функциональными опциями отчетов по следующим правилам:
-// (ФункциональнаяОпция1Отчета ИЛИ ФункциональнаяОпция2Отчета) И (ФункциональнаяОпция3Варианта ИЛИ ФункциональнаяОпция4Варианта).
-// Функциональные опции отчетов не зачитываются из метаданных,
-// они применяются на этапе использования подсистемы пользователем.
-// Через ОписаниеОтчета можно добавлять функциональные опции, которые будут соединяться по указанным выше правилам,
-// но надо помнить, что эти функциональные опции будут действовать только для предопределенных вариантов этого отчета.
-// Для пользовательских вариантов отчета действуют только функциональные опции отчета
-// - они отключаются только с отключением всего отчета.
-//
-Процедура НастроитьВариантыОтчета(Настройки) Экспорт
-
- Свойства = ДатыЗапретаИзмененияПовтИсп.СвойстваРазделов();
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ НастройкиОтчета.Включен = Ложь;
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ДатыЗапретаИзменения);
- Отчет.Включен = Ложь;
-
+ Свойства = ДатыЗапретаИзмененияСлужебныйПовтИсп.СвойстваРазделов();
Если Свойства.ПоказыватьРазделы И НЕ Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаИзмененияПоРазделамОбъектамДляПользователей";
- Описание =
+ ИмяВарианта = "ДатыЗапретаИзмененияПоРазделамОбъектамДляПользователей";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета изменения для пользователей,
|сгруппированные по разделам с объектами.'");
ИначеЕсли Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаИзмененияПоРазделамДляПользователей";
- Описание =
+ ИмяВарианта = "ДатыЗапретаИзмененияПоРазделамДляПользователей";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета изменения для пользователей,
|сгруппированные по разделам.'");
Иначе
- УстановитьВариант = "ДатыЗапретаИзмененияПоОбъектамДляПользователей";
- Описание =
+ ИмяВарианта = "ДатыЗапретаИзмененияПоОбъектамДляПользователей";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета изменения для пользователей,
|сгруппированные по объектам.'");
КонецЕсли;
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, УстановитьВариант);
- Вариант.Включен = Истина;
- Вариант.Описание = Описание;
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, ИмяВарианта);
+ НастройкиВарианта.Включен = Истина;
+ НастройкиВарианта.Описание = ОписаниеВарианта;
Если Свойства.ПоказыватьРазделы И НЕ Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаИзмененияПоПользователям";
- Описание =
+ ИмяВарианта = "ДатыЗапретаИзмененияПоПользователям";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета изменения для разделов с объектами,
|сгруппированные по пользователям.'");
ИначеЕсли Свойства.ВсеРазделыБезОбъектов Тогда
- УстановитьВариант = "ДатыЗапретаИзмененияПоПользователямБезОбъектов";
- Описание =
+ ИмяВарианта = "ДатыЗапретаИзмененияПоПользователямБезОбъектов";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета изменения для разделов,
|сгруппированные по пользователям.'");
Иначе
- УстановитьВариант = "ДатыЗапретаИзмененияПоПользователямБезРазделов";
- Описание =
+ ИмяВарианта = "ДатыЗапретаИзмененияПоПользователямБезРазделов";
+ ОписаниеВарианта =
НСтр("ru = 'Выводит даты запрета изменения для объектов,
|сгруппированные по пользователям.'");
КонецЕсли;
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, УстановитьВариант);
- Вариант.Включен = Истина;
- Вариант.Описание = Описание;
-
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, ИмяВарианта);
+ НастройкиВарианта.Включен = Истина;
+ НастройкиВарианта.Описание = ОписаниеВарианта;
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html b/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html
index 4d9fa03fb..5f573b000 100644
--- a/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html
+++ b/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html
@@ -1,8 +1,11 @@
-
-
Открывается по команде Текущие задачи в списке Отчеты по задачам раздела Бизнес-процессы и задачи.
+
Варианты отчета
+
Текущие задачи - в отчете задачи сгруппированы по исполнителям, в строках отчета выводится номер и наименование задачи, указывается крайний плановый срок исполнения. Отчет позволяет установить фильтр по выполненным задачам, автору, дате фактического и планового исполнения. Просроченные и выполненные задачи могут быть выделены в списке отчета. Отчет формируется за Период.
+
При необходимости установите нужные параметры:
+
Состояние бизнес-процесса - отбор активных или остановленных бизнес-процессов;
+
Автор - отбор задач указанного куратора;
+
Выводить выполненные задачи - отбор выполненных или не выполненных задач;
+
Крайний срок - отбор задач, срок которых меньше или равен указанной дате;
+
Дата исполнения - отбор задач, дата исполнения которых соответствует указанной;
+
Включите флажок, для того чтобы Выделять просроченные задачи;
+
Включите флажок, для того чтобы Выделять выполненные задачи.
Справка по исполнительской дисциплине - в строки отчета выводится исполнитель и количество его задач за указанный период. По задачам в строке дается уточнение, сколько задач выполнено и не выполнено. По выполненным задачам указывается количество выполненных в срок и не в срок задач. По невыполненным задачам указывается количество просроченных. По умолчанию в отчет попадут все задачи за текущий месяц.
+
Отчет формируется за Период. Можно установить фильтр по Автору и плановому сроку завершения (Крайний срок).
Открывается по команде Задачи, истекающие на дату в списке Отчеты по задачам раздела Бизнес-процессы.
+
Для контроля своих задач исполнитель может воспользоваться этим отчетом. По каждому исполнителю выводится сводка по количеству задач со сроками исполнения, истекающими на указанную в поле Крайний срок дату. Отчет позволяет выполнить расшифровку по Автору, Важности, Задаче и Сроку.
+
Можно установить отбор по Важности и Авторузадачи.
+
По умолчанию в отчет попадут задачи, крайний срок исполнения которых истекает завтра утром.
\ No newline at end of file
diff --git a/SSL/src/Reports/ЗадачиИстекающиеНаДату/ManagerModule.bsl b/SSL/src/Reports/ЗадачиИстекающиеНаДату/ManagerModule.bsl
index 63a2e56ce..2cbac1934 100644
--- a/SSL/src/Reports/ЗадачиИстекающиеНаДату/ManagerModule.bsl
+++ b/SSL/src/Reports/ЗадачиИстекающиеНаДату/ManagerModule.bsl
@@ -1,22 +1,30 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-
-#Область СлужебныеПроцедурыИФункции
-
-// Заполняет настройки вариантов отчета.
-// Подробнее - см. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Настройки размещения в панели отчетов.
//
-Процедура НастроитьВариантыОтчета(Настройки) Экспорт
-
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
+//
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+// Вспомогательные методы:
+// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
+//
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ НастройкиОтчета.Описание = НСтр("ru = 'Список задач, которые должны быть выполнены к указанной дате.'");
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ЗадачиИстекающиеНаДату);
- Отчет.Описание = НСтр("ru = 'Список задач, которые должны быть выполнены к указанной дате.'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ЗадачиИстекающиеНаДату");
- Вариант.Описание = НСтр("ru = 'Список задач, которые должны быть выполнены к указанной дате.'");
-
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ЗадачиИстекающиеНаДату");
+ НастройкиВарианта.Описание = НСтр("ru = 'Список задач, которые должны быть выполнены к указанной дате.'");
КонецПроцедуры
-
+
#КонецОбласти
#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Reports/ЗадачиИстекающиеНаДату/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/ЗадачиИстекающиеНаДату/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
index cf34cff67..c725aed33 100644
--- a/SSL/src/Reports/ЗадачиИстекающиеНаДату/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
+++ b/SSL/src/Reports/ЗадачиИстекающиеНаДату/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
@@ -114,6 +114,7 @@
АвторEqualСправочник.Пользователи.ПустаяСсылка
+ Normal74ca9c09-914b-455b-a776-17f859429be1
@@ -121,8 +122,19 @@
ВажностьEqualПеречисление.ВариантыВажностиЗадачи.ПустаяСсылка
+ Normal0d7d0056-d056-4ac9-b236-7c9f90d1fbc0
+
+ false
+ Исполнитель
+ InList
+
+
+ -1
+
+ Normal
+
diff --git a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl
index 10d88a082..509db8ce2 100644
--- a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl
+++ b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl
@@ -2,6 +2,44 @@
#Область СлужебныйПрограммныйИнтерфейс
+// Настройки размещения в панели отчетов.
+//
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
+//
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+// Вспомогательные методы:
+// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
+//
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
+
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+
+ НастройкиОтчета = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Создать().Метаданные());
+ НастройкиОтчета.Описание = НСтр("ru = 'Внешние ресурсы, используемые программой и дополнительными модулями'");
+ НастройкиОтчета.ОпределитьНастройкиФормы = Истина;
+ НастройкиОтчета.НастройкиДляПоиска.НаименованияПолей =
+ НСтр("ru = 'Адрес
+ |Чтение данных
+ |Запись данных
+ |Имя и идентификатор COM-класса
+ |Имя компьютера
+ |Имя макета и файла компоненты
+ |Контрольная сумма
+ |Шаблон командной строки
+ |Протокол
+ |Адрес Интернет-ресурса
+ |Порт
+ |Разрешения на расширенную работу с данными'");
+
+КонецПроцедуры
+
// Формирует представление разрешений на использование внешних ресурсов по таблицам разрешений.
//
// Параметры:
@@ -64,7 +102,7 @@
Модуль = ФрагментИзменений.ВнешнийМодуль;
- Если Модуль = РаботаВБезопасномРежимеСлужебныйПовтИсп.СлужебныйИОМ() Тогда
+ Если Модуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
Словарь = СловарьМодуляКонфигурации();
НаименованиеМодуля = Метаданные.Синоним;
@@ -92,7 +130,7 @@
КонецЕсли;
ОбластьШапки.Параметры.ВидВнешнегоМодуляВРодительномПадеже = НРег(Словарь.Родительный);
ОбластьШапки.Параметры.Наименование = НаименованиеМодуля;
- Если Модуль <> РаботаВБезопасномРежимеСлужебныйПовтИсп.СлужебныйИОМ() Тогда
+ Если Модуль <> Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка() Тогда
ОбластьШапки.Параметры.Модуль = Модуль;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьШапки);
@@ -147,7 +185,7 @@
Если Описание.Операция = Перечисления.ОперацииСНаборамиРазрешений.Удаление Тогда
- ЭтоПрофильКонфигурации = (Описание.ВнешнийМодуль = РаботаВБезопасномРежимеСлужебныйПовтИсп.СлужебныйИОМ());
+ ЭтоПрофильКонфигурации = (Описание.ВнешнийМодуль = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка());
Если ЭтоПрофильКонфигурации Тогда
diff --git a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl
index 884c6f61a..156bcb3c3 100644
--- a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl
+++ b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl
@@ -1,24 +1,21 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-#Область СлужебныйПрограммныйИнтерфейс
-
-// Для общей формы "Форма отчета" подсистемы "Варианты отчетов".
-Функция ВерсияСтандартныхФункцийОтчетов() Экспорт
- Возврат "1";
-КонецФункции
-
-// Для общей формы "Форма отчета" подсистемы "Варианты отчетов".
-Функция ПолучитьНастройкиОтчета() Экспорт
- МодульФункцииОтчетовКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ФункцииОтчетовКлиентСервер");
- НастройкиОтчета = МодульФункцииОтчетовКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию();
- НастройкиОтчета.ВыводитьСуммуВыделенныхЯчеек = Ложь;
- Возврат НастройкиОтчета;
-КонецФункции
-
-#КонецОбласти
-
#Область ОбработчикиСобытийОбъекта
+// Настройки общей формы отчета подсистемы "Варианты отчетов".
+//
+// Параметры:
+// Форма - УправляемаяФорма - Форма отчета.
+// КлючВарианта - Строка - Имя предопределенного варианта отчета или уникальный идентификатор пользовательского.
+// Настройки - Структура - см. возвращаемое значение ФункцииОтчетовКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию().
+//
+Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
+
+ Настройки.ФормироватьСразу = Истина;
+ Настройки.ВыводитьСуммуВыделенныхЯчеек = Ложь;
+
+КонецПроцедуры
+
// Вызывается при выполнении отчета с помощью метода СкомпоноватьРезультат().
//
// Параметры:
diff --git a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
deleted file mode 100644
index e019f9ad8..000000000
--- a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- ИспользуемыеВнешниеРесурсы
-
-
- ru
- Внешние ресурсы, используемые программой и дополнительными модулями
-
-
-
-
-
\ No newline at end of file
diff --git a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ИспользуемыеВнешниеРесурсы.mdo b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ИспользуемыеВнешниеРесурсы.mdo
index e3ebf334c..19ed92e9d 100644
--- a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ИспользуемыеВнешниеРесурсы.mdo
+++ b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ИспользуемыеВнешниеРесурсы.mdo
@@ -1,25 +1,16 @@
-
+
-
-
+
+ ИспользуемыеВнешниеРесурсыru
- Используемые внешние ресурсы
+ Внешние ресурсы, используемые программой и дополнительными модулями
- true
- Report.ИспользуемыеВнешниеРесурсы.Template.ОсновнаяСхемаКомпоновкиДанных
-
- ОсновнаяСхемаКомпоновкиДанных
-
- ru
- Основная схема компоновки данных
-
- DataCompositionSchema
-
-
+ SettingsStorage.ХранилищеВариантовОтчетов
+ ПредставленияРазрешенийru
diff --git a/SSL/src/Reports/МестаИспользованияСсылок/Forms/МестаИспользования/Module.bsl b/SSL/src/Reports/МестаИспользованияСсылок/Forms/МестаИспользования/Module.bsl
index ba033d842..152f2e8d3 100644
--- a/SSL/src/Reports/МестаИспользованияСсылок/Forms/МестаИспользования/Module.bsl
+++ b/SSL/src/Reports/МестаИспользованияСсылок/Forms/МестаИспользования/Module.bsl
@@ -1,7 +1,8 @@
// Форма принимает параметры:
//
-// НаборСсылок - Массив, СписокЗначений, Коллекция элементов, обладающих полем "Ссылка" - необязательный набор
-// ссылок для начального анализа. Если не пуст, то отчет формируется автоматически при открытии.
+// НаборСсылок - Массив, СписокЗначений - набор элементов для анализа при открытии. Может быть коллекцией
+// элементов с полем "Ссылка". Если есть элементы, то отчет формируется
+// автоматически при открытии.
//
#Область ОбработчикиСобытийФормы
diff --git a/SSL/src/Reports/МестаИспользованияСсылок/Help/ru.html b/SSL/src/Reports/МестаИспользованияСсылок/Help/ru.html
index f67dcc220..150d98d1e 100644
--- a/SSL/src/Reports/МестаИспользованияСсылок/Help/ru.html
+++ b/SSL/src/Reports/МестаИспользованияСсылок/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Отчет предназначен для просмотра сведений об использовании элементов списков в документах программы.
При работе в программе пользователи могут по ошибке допускать дублирование элементов, от которого необходимо избавляться, т.к. это мешает правильному учету в программе. При использовании этих дублирующихся элементов могут быть ссылки то на один, то на другой, в результате происходят ошибки, например, в бухгалтерском учете списание денежных средств проходит некорректно и т.п.
Для того чтобы была возможность удалить дубли из программы, сначала необходимо удалить ссылки на них в документах. Отчет показывает, в каких документах программы используются данные объекты.
diff --git a/SSL/src/Reports/МестаИспользованияСсылок/ManagerModule.bsl b/SSL/src/Reports/МестаИспользованияСсылок/ManagerModule.bsl
index e69de29bb..0720b40ad 100644
--- a/SSL/src/Reports/МестаИспользованияСсылок/ManagerModule.bsl
+++ b/SSL/src/Reports/МестаИспользованияСсылок/ManagerModule.bsl
@@ -0,0 +1,31 @@
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Настройки размещения в панели отчетов.
+//
+// Параметры:
+// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
+// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
+//
+// Описание:
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
+//
+// Вспомогательные методы:
+// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
+//
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
+ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
+ МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Ложь);
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "Основной");
+ НастройкиВарианта.Включен = Ложь;
+ НастройкиВарианта.Описание = НСтр("ru = 'Поиск мест использования объектов приложения.'");
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецЕсли
\ No newline at end of file
diff --git a/SSL/src/Reports/МестаИспользованияСсылок/МестаИспользованияСсылок.mdo b/SSL/src/Reports/МестаИспользованияСсылок/МестаИспользованияСсылок.mdo
index c9a1b6952..de901f16f 100644
--- a/SSL/src/Reports/МестаИспользованияСсылок/МестаИспользованияСсылок.mdo
+++ b/SSL/src/Reports/МестаИспользованияСсылок/МестаИспользованияСсылок.mdo
@@ -13,6 +13,7 @@
Report.МестаИспользованияСсылок.Form.МестаИспользованияReport.МестаИспользованияСсылок.Template.ОсновнаяСхемаКомпоновкиДанныхSettingsStorage.ХранилищеВариантовОтчетов
+ trueru
diff --git a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl
index 6b3307d96..47c435577 100644
--- a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl
+++ b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl
@@ -11,12 +11,12 @@
Если НЕ ЗначениеЗаполнено(Параметры.Пользователь) Тогда
Если УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа() Тогда
ВызватьИсключение
- НСтр("ru = 'Отчет открывается только для конкретного пользователя.
- |Команда открытия есть в форме настройки прав доступа.'");
+ НСтр("ru = 'Чтобы открыть отчет откройте карточку пользователя,
+ |перейдите по ссылке ""Права доступа"", нажмите на кнопку ""Отчет по правам доступа"".'");
Иначе
ВызватьИсключение
- НСтр("ru = 'Отчет открывается только для конкретного пользователя или группы пользователей.
- |Команда открытия есть в форме настройки прав доступа.'");
+ НСтр("ru = 'Чтобы открыть отчет откройте карточку пользователя или группы пользователей,
+ |перейдите по ссылке ""Права доступа"", нажмите на кнопку ""Отчет по правам доступа"".'");
КонецЕсли;
КонецЕсли;
diff --git a/SSL/src/Reports/ПраваДоступа/Help/ru.html b/SSL/src/Reports/ПраваДоступа/Help/ru.html
index a0c2b95d5..988657911 100644
--- a/SSL/src/Reports/ПраваДоступа/Help/ru.html
+++ b/SSL/src/Reports/ПраваДоступа/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Отчет с помощью стандартных команд можно распечатать или сохранить на компьютере в нужном формате.
diff --git a/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl b/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl
index a7f1e95ca..bb612c027 100644
--- a/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl
+++ b/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl
@@ -1,105 +1,24 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-#Область СлужебныеПроцедурыИФункции
+#Область СлужебныйПрограммныйИнтерфейс
-// Обработчики событий подсистемы ВариантыОтчетов.
-
-// Содержит настройки размещения вариантов отчетов в панели отчетов.
+// Настройки размещения в панели отчетов.
//
// Параметры:
// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
//
// Описание:
-// В данной процедуре необходимо указать каким именно образом предопределенные варианты отчетов
-// будут регистрироваться в программе и показываться в панели отчетов.
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
//
// Вспомогательные методы:
-// НастройкиОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.<ИмяОтчета>);
// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
//
-// Данные функции получают соответственно настройки отчета и настройки варианта отчета следующей структуры:
-// * Включен - Булево -
-// Если Ложь, то вариант отчета не регистрируется в подсистеме.
-// Используется для удаления технических и контекстных вариантов отчетов из всех интерфейсов.
-// Эти варианты отчета по прежнему можно открывать в форме отчета программно при помощи
-// параметров открытия (см. справку по "Расширение управляемой формы для отчета.КлючВарианта").
-// * ВидимостьПоУмолчанию - Булево -
-// Если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов.
-// Пользователь может "включить" его в режиме настройки панели отчетов
-// или открыть через форму "Все отчеты".
-// * Описание - Строка - Дополнительная информация по варианту отчета.
-// В панели отчетов выводится в качестве подсказки.
-// Должно расшифровывать для пользователя содержимое варианта отчета
-// и не должно дублировать наименование варианта отчета.
-// * Размещение - Соответствие - Настройки размещения варианта отчета в разделах.
-// ** Ключ - ОбъектМетаданных: Подсистема - Подсистема, в которой размещается отчет или вариант отчета
-// ** Значение - Строка - Необязательный. Настройки размещения в подсистеме.
-// "" - Выводить отчет в своей группе обычным шрифтом.
-// "Важный" - Выводить отчет в своей группе жирным шрифтом.
-// "СмТакже" - Выводить отчет в группе "См. также".
-// * ФункциональныеОпции - Массив из Строка -
-// Имена функциональных опций варианта отчета.
-//
-// Например:
-//
-// (1) Добавить в подсистему вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (2) Отключить вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Включен = Ложь;
-//
-// (3) Отключить все варианты отчета, кроме требуемого.
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Включен = Ложь;
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта");
-// Вариант.Включен = Истина;
-//
-// (4) Результат исполнения 4.1 и 4.2 будет одинаковым:
-// (4.1)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (4.2)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Отчет.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// Важно:
-// Отчет выступает в качестве контейнера вариантов.
-// Изменяя настройки отчета можно сразу изменять настройки всех его вариантов.
-// Однако, если явно получить настройки варианта отчета, то они станут самостоятельными,
-// т.е. более не будут наследовать изменения настроек от отчета. См. примеры 3 и 4.
-//
-// Начальная настройка размещения отчетов по подсистемам зачитывается из метаданных,
-// ее дублирование в коде не требуется.
-//
-// Функциональные опции вариантов объединяются с функциональными опциями отчетов по следующим правилам:
-// (ФункциональнаяОпция1Отчета ИЛИ ФункциональнаяОпция2Отчета) И (ФункциональнаяОпция3Варианта ИЛИ ФункциональнаяОпция4Варианта).
-// Функциональные опции отчетов не зачитываются из метаданных,
-// они применяются на этапе использования подсистемы пользователем.
-// Через ОписаниеОтчета можно добавлять функциональные опции, которые будут соединяться по указанным выше правилам,
-// но надо помнить, что эти функциональные опции будут действовать только для предопределенных вариантов этого отчета.
-// Для пользовательских вариантов отчета действуют только функциональные опции отчета
-// - они отключаются только с отключением всего отчета.
-//
-Процедура НастроитьВариантыОтчета(Настройки) Экспорт
-
- МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
-
- Отчет = МодульВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ПраваДоступа);
- Отчет.Включен = Ложь;
-
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
+ НастройкиОтчета.Включен = Ложь;
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo b/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo
index ab01d58e8..2e3d43389 100644
--- a/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo
+++ b/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo
@@ -12,6 +12,7 @@
trueReport.ПраваДоступа.Form.ФормаОтчетаSettingsStorage.ХранилищеВариантовОтчетов
+ trueru
diff --git a/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html b/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html
index ccc294b81..ca58b35c6 100644
--- a/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html
+++ b/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html
@@ -1,3 +1,6 @@
-
-
Для формирования отчета нажмите кнопку "Сформировать". По умолчанию в отчет попадут все задачи за текущий месяц с истекшим сроком исполнения.
-
Для детальной настройки отчета используйте команду "Все действия - Изменить вариант".
\ No newline at end of file
+
+
Предназначен для мониторинга задач. По умолчанию в отчет попадут все задачи за текущий месяц с истекшим сроком исполнения.
+
Открывается по команде Задачи, выполненные с нарушением сроков в списке Отчеты по задачам раздела Бизнес-процессы и задачи.
+
В отчете задачи сгруппированы по исполнителям. В строки отчета выводится задача, важность, плановая и фактическая дата завершения задачи, указывается количество просроченных дней. Отчет формируется за период. Возможны отборы по Периоду и по Автору.
Необходимость в отчете возникает, если требуется выполнить групповой анализ настроек для входа (имени для входа, видов аутентификации и других).
Отчет открывается из списка Пользователи (Внешние пользователи) по команде Все действия - Сведения о пользователях (о внешних пользователях).
diff --git a/SSL/src/Reports/СведенияОПользователях/ManagerModule.bsl b/SSL/src/Reports/СведенияОПользователях/ManagerModule.bsl
index cde28bcc4..331c4c21c 100644
--- a/SSL/src/Reports/СведенияОПользователях/ManagerModule.bsl
+++ b/SSL/src/Reports/СведенияОПользователях/ManagerModule.bsl
@@ -1,126 +1,41 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
-#Область СлужебныеПроцедурыИФункции
+#Область СлужебныйПрограммныйИнтерфейс
-// Обработчики событий подсистемы ВариантыОтчетов.
-
-// Содержит настройки размещения вариантов отчетов в панели отчетов.
+// Настройки размещения в панели отчетов.
//
// Параметры:
// Настройки - Коллекция - Используется для описания настроек отчетов и вариантов
// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации()
+// НастройкиОтчета - СтрокаДереваЗначений - Настройки размещения всех вариантов отчета.
+// см. "Реквизиты для изменения" функции ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации().
//
// Описание:
-// В данной процедуре необходимо указать каким именно образом предопределенные варианты отчетов
-// будут регистрироваться в программе и показываться в панели отчетов.
+// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов().
//
// Вспомогательные методы:
-// НастройкиОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.<ИмяОтчета>);
// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>");
+// ВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Истина/Ложь); // Отчет поддерживает только этот режим.
//
-// Данные функции получают соответственно настройки отчета и настройки варианта отчета следующей структуры:
-// * Включен - Булево -
-// Если Ложь, то вариант отчета не регистрируется в подсистеме.
-// Используется для удаления технических и контекстных вариантов отчетов из всех интерфейсов.
-// Эти варианты отчета по прежнему можно открывать в форме отчета программно при помощи
-// параметров открытия (см. справку по "Расширение управляемой формы для отчета.КлючВарианта").
-// * ВидимостьПоУмолчанию - Булево -
-// Если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов.
-// Пользователь может "включить" его в режиме настройки панели отчетов
-// или открыть через форму "Все отчеты".
-// * Описание - Строка - Дополнительная информация по варианту отчета.
-// В панели отчетов выводится в качестве подсказки.
-// Должно расшифровывать для пользователя содержимое варианта отчета
-// и не должно дублировать наименование варианта отчета.
-// * Размещение - Соответствие - Настройки размещения варианта отчета в разделах.
-// ** Ключ - ОбъектМетаданных: Подсистема - Подсистема, в которой размещается отчет или вариант отчета
-// ** Значение - Строка - Необязательный. Настройки размещения в подсистеме.
-// "" - Выводить отчет в своей группе обычным шрифтом.
-// "Важный" - Выводить отчет в своей группе жирным шрифтом.
-// "СмТакже" - Выводить отчет в группе "См. также".
-// * ФункциональныеОпции - Массив из Строка -
-// Имена функциональных опций варианта отчета.
-//
-// Например:
-//
-// (1) Добавить в подсистему вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (2) Отключить вариант отчета.
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1");
-// Вариант.Включен = Ложь;
-//
-// (3) Отключить все варианты отчета, кроме требуемого.
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Включен = Ложь;
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта");
-// Вариант.Включен = Истина;
-//
-// (4) Результат исполнения 4.1 и 4.2 будет одинаковым:
-// (4.1)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// (4.2)
-// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета);
-// Отчет.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2");
-// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3");
-// Отчет.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы);
-//
-// Важно:
-// Отчет выступает в качестве контейнера вариантов.
-// Изменяя настройки отчета можно сразу изменять настройки всех его вариантов.
-// Однако, если явно получить настройки варианта отчета, то они станут самостоятельными,
-// т.е. более не будут наследовать изменения настроек от отчета. См. примеры 3 и 4.
-//
-// Начальная настройка размещения отчетов по подсистемам зачитывается из метаданных,
-// ее дублирование в коде не требуется.
-//
-// Функциональные опции вариантов объединяются с функциональными опциями отчетов по следующим правилам:
-// (ФункциональнаяОпция1Отчета ИЛИ ФункциональнаяОпция2Отчета) И (ФункциональнаяОпция3Варианта ИЛИ ФункциональнаяОпция4Варианта).
-// Функциональные опции отчетов не зачитываются из метаданных,
-// они применяются на этапе использования подсистемы пользователем.
-// Через ОписаниеОтчета можно добавлять функциональные опции, которые будут соединяться по указанным выше правилам,
-// но надо помнить, что эти функциональные опции будут действовать только для предопределенных вариантов этого отчета.
-// Для пользовательских вариантов отчета действуют только функциональные опции отчета
-// - они отключаются только с отключением всего отчета.
-//
-Процедура НастроитьВариантыОтчета(Настройки) Экспорт
-
+Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(
- Настройки, Метаданные.Отчеты.СведенияОПользователях, "СведенияОПользователях");
-
- Вариант.Описание =
- НСтр("ru = 'Выводит подробные сведения о пользователях,
- |включая настройки для входа (если указаны).'");
-
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(
- Настройки, Метаданные.Отчеты.СведенияОПользователях, "СведенияОВнешнихПользователях");
-
- Вариант.ФункциональныеОпции.Добавить("ИспользоватьВнешнихПользователей");
- Вариант.Описание =
- НСтр("ru = 'Выводит подробные сведения о внешних пользователях,
- |включая настройки для входа (если указаны).'");
-
- Вариант = МодульВариантыОтчетов.ОписаниеВарианта(
- Настройки, Метаданные.Отчеты.СведенияОПользователях, "СведенияОПользователяхИВнешнихПользователях");
-
- Вариант.ФункциональныеОпции.Добавить("ИспользоватьВнешнихПользователей");
- Вариант.Описание =
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "СведенияОПользователяхИВнешнихПользователях");
+ НастройкиВарианта.Описание =
НСтр("ru = 'Выводит подробные сведения о всех пользователях,
- |включая настройки для входа (если указаны).'");
+ |включая настройки для входа (если указаны).'");
+ НастройкиВарианта.ФункциональныеОпции.Добавить("ИспользоватьВнешнихПользователей");
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "СведенияОПользователях");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Выводит подробные сведения о пользователях,
+ |включая настройки для входа (если указаны).'");
+
+ НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "СведенияОВнешнихПользователях");
+ НастройкиВарианта.Описание =
+ НСтр("ru = 'Выводит подробные сведения о внешних пользователях,
+ |включая настройки для входа (если указаны).'");
+ НастройкиВарианта.ФункциональныеОпции.Добавить("ИспользоватьВнешнихПользователей");
КонецПроцедуры
#КонецОбласти
diff --git a/SSL/src/Reports/СведенияОПользователях/ObjectModule.bsl b/SSL/src/Reports/СведенияОПользователях/ObjectModule.bsl
index 60ac8f8ac..8aa9ff304 100644
--- a/SSL/src/Reports/СведенияОПользователях/ObjectModule.bsl
+++ b/SSL/src/Reports/СведенияОПользователях/ObjectModule.bsl
@@ -127,7 +127,7 @@
Контакты.Колонки.Добавить("Телефон", Новый ОписаниеТипов("Строка"));
Контакты.Колонки.Добавить("ЭлектронныйАдрес", Новый ОписаниеТипов("Строка"));
- Если Не ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
+ Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
Возврат Контакты;
КонецЕсли;
diff --git a/SSL/src/Reports/СведенияОПользователях/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/СведенияОПользователях/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
index d9045d41b..5d8da4533 100644
--- a/SSL/src/Reports/СведенияОПользователях/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
+++ b/SSL/src/Reports/СведенияОПользователях/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs
@@ -600,6 +600,7 @@
Недействительные
+ Normal2fc6f1d8-ce85-45c1-8fc8-29b3e299b5f7
@@ -613,6 +614,7 @@
Помеченые на удаление
+ Normal9800e27b-27de-4259-86c0-8d4595eb319a
@@ -626,6 +628,7 @@
Без пользователя информационной базы
+ Normalcb47e2ce-6928-43e4-b904-cbe4b2952e49
@@ -639,6 +642,7 @@
Вход в программу разрешен
+ Normal8809ba69-2ea3-40bf-8e8b-82ab129baec6
@@ -652,6 +656,7 @@
Аутентификация стандартная
+ Normal6590234e-cc10-4899-9e2d-f86867903a54
@@ -665,6 +670,7 @@
Аутентификация ОС
+ Normal19e3a1bb-4c84-420b-8a05-d3f78014fc1c
@@ -678,6 +684,7 @@
Аутентификация OpenID
+ Normal2b314b78-4b9a-41e9-bba0-bafdc8042eba
@@ -884,6 +891,7 @@
Недействительные
+ Normal2fc6f1d8-ce85-45c1-8fc8-29b3e299b5f7
@@ -897,6 +905,7 @@
Помеченые на удаление
+ Normal9800e27b-27de-4259-86c0-8d4595eb319a
@@ -910,6 +919,7 @@
Без пользователя информационной базы
+ Normalcb47e2ce-6928-43e4-b904-cbe4b2952e49
@@ -923,6 +933,7 @@
Вход в программу разрешен
+ Normal8809ba69-2ea3-40bf-8e8b-82ab129baec6
@@ -936,6 +947,7 @@
Аутентификация стандартная
+ Normal6590234e-cc10-4899-9e2d-f86867903a54
@@ -949,6 +961,7 @@
Аутентификация ОС
+ Normal19e3a1bb-4c84-420b-8a05-d3f78014fc1c
@@ -962,6 +975,7 @@
Аутентификация OpenID
+ Normal2b314b78-4b9a-41e9-bba0-bafdc8042eba
@@ -1147,6 +1161,7 @@
Недействительные
+ Normal2fc6f1d8-ce85-45c1-8fc8-29b3e299b5f7
@@ -1160,6 +1175,7 @@
Помеченые на удаление
+ Normal9800e27b-27de-4259-86c0-8d4595eb319a
@@ -1173,6 +1189,7 @@
Без пользователя информационной базы
+ Normalcb47e2ce-6928-43e4-b904-cbe4b2952e49
@@ -1186,6 +1203,7 @@
Вход в программу разрешен
+ Normal8809ba69-2ea3-40bf-8e8b-82ab129baec6
@@ -1199,6 +1217,7 @@
Аутентификация стандартная
+ Normal6590234e-cc10-4899-9e2d-f86867903a54
@@ -1212,6 +1231,7 @@
Аутентификация OpenID
+ Normal2b314b78-4b9a-41e9-bba0-bafdc8042eba
diff --git a/SSL/src/Reports/СведенияОПользователях/СведенияОПользователях.mdo b/SSL/src/Reports/СведенияОПользователях/СведенияОПользователях.mdo
index 8105feac7..e74f48397 100644
--- a/SSL/src/Reports/СведенияОПользователях/СведенияОПользователях.mdo
+++ b/SSL/src/Reports/СведенияОПользователях/СведенияОПользователях.mdo
@@ -12,6 +12,7 @@
trueReport.СведенияОПользователях.Template.ОсновнаяСхемаКомпоновкиДанныхSettingsStorage.ХранилищеВариантовОтчетов
+ trueru
diff --git a/SSL/src/Roles/АдминистраторСистемы/Rights.rights b/SSL/src/Roles/АдминистраторСистемы/Rights.rights
index 724308fc1..0c93b31fb 100644
--- a/SSL/src/Roles/АдминистраторСистемы/Rights.rights
+++ b/SSL/src/Roles/АдминистраторСистемы/Rights.rights
@@ -10,6 +10,17 @@
true
+
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
-
-
+
-
+
+
+
-
-
-
- Для адмнистратора сервиса
+ Для администратора сервиса
diff --git a/SSL/src/Roles/ДобавлениеИзменениеОпросов/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеОпросов/Rights.rights
index bf0ec8d58..4d0a19745 100644
--- a/SSL/src/Roles/ДобавлениеИзменениеОпросов/Rights.rights
+++ b/SSL/src/Roles/ДобавлениеИзменениеОпросов/Rights.rights
@@ -7935,17 +7935,6 @@
false
-
-
-
-
+
-
-
+
-
-
+
-
-
+
-
-
-
-
-
+
-
+
-
- InformationRegister.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Dimension.Владелец
+ InformationRegister.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Dimension.ТипПрограммногоМодуляEditfalse
@@ -1287,7 +1287,7 @@
- InformationRegister.РазрешенныеКаталогиФайловойСистемы.Dimension.Владелец
+ InformationRegister.РазрешенныеКаталогиФайловойСистемы.Dimension.ТипВладельцаEditfalse
@@ -1387,7 +1387,7 @@
- InformationRegister.РазрешенныеИнтернетРесурсы.Dimension.Владелец
+ InformationRegister.РазрешенныеИнтернетРесурсы.Dimension.ТипВладельцаEditfalse
@@ -2044,49 +2044,6 @@
false
-
- Constant.КлючОбластиДанных
-
- Read
- false
-
-
- Update
- false
-
-
- View
- false
-
-
- Edit
- false
-
-
- ReadDataHistory
- false
-
-
- UpdateDataHistory
- false
-
-
- UpdateDataHistoryVersionComment
- false
-
-
- ViewDataHistory
- false
-
-
- EditDataHistoryVersionComment
- false
-
-
- SwitchToDataHistoryVersion
- false
-
- InformationRegister.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Attribute.МоментВремени
@@ -2342,7 +2299,7 @@
- InformationRegister.РазрешенныеCOMКлассы.Dimension.Владелец
+ InformationRegister.РазрешенныеCOMКлассы.Dimension.ТипВладельцаEditfalse
@@ -2441,7 +2398,7 @@
- InformationRegister.РазрешенныеВнешниеКомпоненты.Dimension.Владелец
+ InformationRegister.РазрешенныеВнешниеКомпоненты.Dimension.ТипВладельцаEditfalse
@@ -2728,7 +2685,7 @@
- InformationRegister.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Dimension.Идентификатор
+ InformationRegister.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Dimension.ИдентификаторЗапросаEditfalse
@@ -3282,6 +3239,18 @@
InteractiveDeletePredefinedDatafalse
+
+ InteractiveSetDeletionMarkPredefinedData
+ false
+
+
+ InteractiveClearDeletionMarkPredefinedData
+ false
+
+
+ InteractiveDeleteMarkedPredefinedData
+ false
+ InformationRegister.СостоянияОбменовДанными
@@ -3468,41 +3437,6 @@
false
-
- Configuration.БиблиотекаСтандартныхПодсистем
-
- Administration
- false
-
-
- UpdateDataBaseConfiguration
- false
-
-
- ThickClient
- false
-
-
- ExternalConnection
- false
-
-
- Automation
- false
-
-
- TechnicalSpecialistMode
- false
-
-
- InteractiveOpenExtDataProcessors
- false
-
-
- InteractiveOpenExtReports
- false
-
- InformationRegister.АдресныеСокращения.Resource.Наименование
@@ -3713,6 +3647,41 @@
false
+
+ Configuration.БиблиотекаСтандартныхПодсистем
+
+ Administration
+ false
+
+
+ UpdateDataBaseConfiguration
+ false
+
+
+ ThickClient
+ false
+
+
+ ExternalConnection
+ false
+
+
+ Automation
+ false
+
+
+ TechnicalSpecialistMode
+ false
+
+
+ InteractiveOpenExtDataProcessors
+ false
+
+
+ InteractiveOpenExtReports
+ false
+
+ Catalog.УчетныеЗаписиЭлектроннойПочты
@@ -4201,6 +4170,18 @@
InteractiveDeletePredefinedDatafalse
+
+ InteractiveSetDeletionMarkPredefinedData
+ false
+
+
+ InteractiveClearDeletionMarkPredefinedData
+ false
+
+
+ InteractiveDeleteMarkedPredefinedData
+ false
+ Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы
@@ -4293,7 +4274,7 @@
- InformationRegister.РазрешенныеПриложенияОперационнойСистемы.Dimension.Владелец
+ InformationRegister.РазрешенныеПриложенияОперационнойСистемы.Dimension.ТипВладельцаEditfalse
@@ -4311,7 +4292,7 @@
- InformationRegister.РежимыПодключенияВнешнихМодулей.Dimension.ВнешнийМодуль
+ InformationRegister.РежимыПодключенияВнешнихМодулей.Dimension.ТипПрограммногоМодуляEditfalse
@@ -4358,7 +4339,7 @@
- InformationRegister.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Dimension.Владелец
+ InformationRegister.ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов.Dimension.ТипВладельцаEditfalse
@@ -5047,7 +5028,7 @@
- InformationRegister.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Dimension.Идентификатор
+ InformationRegister.ЗапросыАдминистрированияРазрешенийИспользованияВнешнихРесурсов.Dimension.ИдентификаторЗапросаEditfalse
@@ -5349,13 +5330,6 @@
false
-
- InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз
-
- TotalsControl
- false
-
- Catalog.ЗначенияСвойствОбъектовИерархия
@@ -6540,33 +6514,6 @@
false
-
- Constant.ПараметрыБазовойФункциональности
-
- Update
- false
-
-
- View
- false
-
-
- Edit
- false
-
-
- ViewDataHistory
- false
-
-
- EditDataHistoryVersionComment
- false
-
-
- SwitchToDataHistoryVersion
- false
-
- InformationRegister.СостоянияУспешныхОбменовДанными.Dimension.УзелИнформационнойБазы
@@ -7766,7 +7713,7 @@
- InformationRegister.РазрешенияПереходаВПривилегированныйРежим.Dimension.Владелец
+ InformationRegister.РазрешенияПереходаВПривилегированныйРежим.Dimension.ТипВладельцаEditfalse
diff --git a/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights b/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights
index 183fb21e9..b82f336f4 100644
--- a/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights
+++ b/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights
@@ -7689,17 +7689,6 @@
false
-
- Catalog.ВопросыШаблонаАнкеты.Attribute.ВысотаЭлементаФормулировкиВопроса
-
- View
- false
-
-
- Edit
- false
-
- DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриВыгрузкеДанных
diff --git a/SSL/src/Roles/РедактированиеРеквизитовОбъектов/Rights.rights b/SSL/src/Roles/РедактированиеРеквизитовОбъектов/Rights.rights
index 0ba927c21..35c5cc592 100644
--- a/SSL/src/Roles/РедактированиеРеквизитовОбъектов/Rights.rights
+++ b/SSL/src/Roles/РедактированиеРеквизитовОбъектов/Rights.rights
@@ -8011,17 +8011,6 @@
false
-
- Catalog.ВопросыШаблонаАнкеты.Attribute.ВысотаЭлементаФормулировкиВопроса
-
- View
- false
-
-
- Edit
- false
-
- DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриВыгрузкеДанных
diff --git a/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights b/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights
index 76a9f5b1a..7ed34b7e0 100644
--- a/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights
+++ b/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights
@@ -10575,17 +10575,6 @@
false
-
- Catalog.ВопросыШаблонаАнкеты.Attribute.ВысотаЭлементаФормулировкиВопроса
-
- View
- false
-
-
- Edit
- false
-
- DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриВыгрузкеДанных
diff --git a/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights b/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights
index f8a8353a4..fa3d11350 100644
--- a/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights
+++ b/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights
@@ -10395,17 +10395,6 @@
false
-
- Catalog.ВопросыШаблонаАнкеты.Attribute.ВысотаЭлементаФормулировкиВопроса
-
- View
- false
-
-
- Edit
- false
-
- DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриВыгрузкеДанных
diff --git a/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights b/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights
index 1e8343407..45d3a0337 100644
--- a/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights
+++ b/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights
@@ -8007,17 +8007,6 @@
false
-
- Catalog.ВопросыШаблонаАнкеты.Attribute.ВысотаЭлементаФормулировкиВопроса
-
- View
- false
-
-
- Edit
- false
-
- DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриВыгрузкеДанных
diff --git a/SSL/src/Roles/ЧтениеЗаданий/Rights.rights b/SSL/src/Roles/ЧтениеЗаданий/Rights.rights
index 59415a4fc..4059112d8 100644
--- a/SSL/src/Roles/ЧтениеЗаданий/Rights.rights
+++ b/SSL/src/Roles/ЧтениеЗаданий/Rights.rights
@@ -32,13 +32,6 @@
true
-
- SessionParameter.ТекущийПользователь
-
- Get
- true
-
- Report.ЗадачиИстекающиеНаДату
diff --git a/SSL/src/Roles/ЧтениеЗадач/Rights.rights b/SSL/src/Roles/ЧтениеЗадач/Rights.rights
index 68a291954..b3ed964fc 100644
--- a/SSL/src/Roles/ЧтениеЗадач/Rights.rights
+++ b/SSL/src/Roles/ЧтениеЗадач/Rights.rights
@@ -10,13 +10,6 @@
true
-
- SessionParameter.ТекущийПользователь
-
- Get
- true
-
- Report.ЗадачиИстекающиеНаДату
diff --git a/SSL/src/Roles/ЧтениеОбщейБазовойНСИ/Rights.rights b/SSL/src/Roles/ЧтениеОбщейБазовойНСИ/Rights.rights
new file mode 100644
index 000000000..312ecb163
--- /dev/null
+++ b/SSL/src/Roles/ЧтениеОбщейБазовойНСИ/Rights.rights
@@ -0,0 +1,98 @@
+
+
+ false
+ true
+ false
+
+ InformationRegister.АдресныйКлассификатор.Command.АдресныйКлассификатор
+
+ View
+ true
+
+
+
+ InformationRegister.АдресныеСокращения
+
+ Read
+ true
+
+
+ View
+ true
+
+
+
+ InformationRegister.АдресныйКлассификатор
+
+ Read
+ true
+
+
+ View
+ true
+
+
+
+ InformationRegister.ДанныеПроизводственногоКалендаря
+
+ Read
+ true
+
+
+ View
+ true
+
+
+
+ Catalog.ПроизводственныеКалендари
+
+ Read
+ true
+
+
+ View
+ true
+
+
+ InputByString
+ true
+
+
+
+ InformationRegister.ВерсииОбъектовАдресногоКлассификатора
+
+ Read
+ true
+
+
+ View
+ true
+
+
+
+ Constant.ИспользоватьНесколькоПроизводственныхКалендарей
+
+ Read
+ true
+
+
+ View
+ true
+
+
+
+ Catalog.КлассификаторБанковРФ
+
+ Read
+ true
+
+
+ View
+ true
+
+
+ InputByString
+ true
+
+
+
diff --git a/SSL/src/Roles/ЧтениеОбщейБазовойНСИ/ЧтениеОбщейБазовойНСИ.mdo b/SSL/src/Roles/ЧтениеОбщейБазовойНСИ/ЧтениеОбщейБазовойНСИ.mdo
new file mode 100644
index 000000000..8e09f7543
--- /dev/null
+++ b/SSL/src/Roles/ЧтениеОбщейБазовойНСИ/ЧтениеОбщейБазовойНСИ.mdo
@@ -0,0 +1,8 @@
+
+
+ ЧтениеОбщейБазовойНСИ
+
+ ru
+ Чтение общей базовой нормативно-справочной информации
+
+
diff --git a/SSL/src/Roles/ЧтениеОтветовНаВопросыАнкет/Rights.rights b/SSL/src/Roles/ЧтениеОтветовНаВопросыАнкет/Rights.rights
index e9c301de7..a7cabd7ec 100644
--- a/SSL/src/Roles/ЧтениеОтветовНаВопросыАнкет/Rights.rights
+++ b/SSL/src/Roles/ЧтениеОтветовНаВопросыАнкет/Rights.rights
@@ -7841,13 +7841,6 @@
false
-
- Catalog.ВопросыШаблонаАнкеты.Attribute.ВысотаЭлементаФормулировкиВопроса
-
- Edit
- false
-
- DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриВыгрузкеДанных
diff --git a/SSL/src/ScheduledJobs/ОтправкаИПолучениеСообщенийСистемы/ОтправкаИПолучениеСообщенийСистемы.mdo b/SSL/src/ScheduledJobs/ОтправкаИПолучениеСообщенийСистемы/ОтправкаИПолучениеСообщенийСистемы.mdo
index bd02f0847..0f8e19227 100644
--- a/SSL/src/ScheduledJobs/ОтправкаИПолучениеСообщенийСистемы/ОтправкаИПолучениеСообщенийСистемы.mdo
+++ b/SSL/src/ScheduledJobs/ОтправкаИПолучениеСообщенийСистемы/ОтправкаИПолучениеСообщенийСистемы.mdo
@@ -6,6 +6,7 @@
Отправка и получение сообщений системыCommonModule.ОбменСообщениямиВнутренний.ОтправитьИПолучитьСообщенияПоРегламентномуЗаданию
+ Отправка и получение сообщений системы1true3
diff --git a/SSL/src/ScheduledJobs/ОчисткаУстаревшихВерсийОбъектов/Schedule.schedule b/SSL/src/ScheduledJobs/ОчисткаУстаревшихВерсийОбъектов/Schedule.schedule
new file mode 100644
index 000000000..6b3fb3520
--- /dev/null
+++ b/SSL/src/ScheduledJobs/ОчисткаУстаревшихВерсийОбъектов/Schedule.schedule
@@ -0,0 +1,22 @@
+
+
+ Mon
+ Tue
+ Wed
+ Thu
+ Fri
+ Sat
+ Sun
+ Jan
+ Feb
+ Mar
+ Apr
+ May
+ Jun
+ Jul
+ Aug
+ Sep
+ Oct
+ Nov
+ Dec
+
diff --git a/SSL/src/ScheduledJobs/ОчисткаУстаревшихВерсийОбъектов/ОчисткаУстаревшихВерсийОбъектов.mdo b/SSL/src/ScheduledJobs/ОчисткаУстаревшихВерсийОбъектов/ОчисткаУстаревшихВерсийОбъектов.mdo
new file mode 100644
index 000000000..864d56bec
--- /dev/null
+++ b/SSL/src/ScheduledJobs/ОчисткаУстаревшихВерсийОбъектов/ОчисткаУстаревшихВерсийОбъектов.mdo
@@ -0,0 +1,13 @@
+
+
+ ОчисткаУстаревшихВерсийОбъектов
+
+ ru
+ Очистка устаревших версий объектов
+
+ CommonModule.ВерсионированиеОбъектов.ОчиститьУстаревшиеВерсииОбъектов
+ Очистка устаревших версий объектов
+ true
+ 3
+ 10
+
diff --git a/SSL/src/ScheduledJobs/ЭкспортОценкиПроизводительности/ЭкспортОценкиПроизводительности.mdo b/SSL/src/ScheduledJobs/ЭкспортОценкиПроизводительности/ЭкспортОценкиПроизводительности.mdo
index cbda5e16c..556e1f380 100644
--- a/SSL/src/ScheduledJobs/ЭкспортОценкиПроизводительности/ЭкспортОценкиПроизводительности.mdo
+++ b/SSL/src/ScheduledJobs/ЭкспортОценкиПроизводительности/ЭкспортОценкиПроизводительности.mdo
@@ -6,5 +6,6 @@
Экспорт оценки производительностиCommonModule.ОценкаПроизводительностиВызовСервераПолныеПрава.ЭкспортОценкиПроизводительности
+ Экспорт оценки производительности27a985e0-e657-4eb3-b18f-6b75f72324ed
diff --git a/SSL/src/SessionParameters/ИспользуемыеПланыОбмена/ИспользуемыеПланыОбмена.mdo b/SSL/src/SessionParameters/ИспользуемыеПланыОбмена/ИспользуемыеПланыОбмена.mdo
deleted file mode 100644
index 082912cf9..000000000
--- a/SSL/src/SessionParameters/ИспользуемыеПланыОбмена/ИспользуемыеПланыОбмена.mdo
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
- ИспользуемыеПланыОбмена
-
- ru
- Используемые планы обмена
-
- Массив имен планов обмена, которые используются для регистрации изменений
-
- FixedArray
-
-
diff --git a/SSL/src/SessionParameters/ОшибкаРасхожденияВерсийПриПолученииДанных/ОшибкаРасхожденияВерсийПриПолученииДанных.mdo b/SSL/src/SessionParameters/ОшибкаРасхожденияВерсийПриПолученииДанных/ОшибкаРасхожденияВерсийПриПолученииДанных.mdo
new file mode 100644
index 000000000..18afa195a
--- /dev/null
+++ b/SSL/src/SessionParameters/ОшибкаРасхожденияВерсийПриПолученииДанных/ОшибкаРасхожденияВерсийПриПолученииДанных.mdo
@@ -0,0 +1,11 @@
+
+
+ ОшибкаРасхожденияВерсийПриПолученииДанных
+
+ ru
+ Ошибка расхождения версий при получении данных
+
+
+ FixedStructure
+
+
diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Form.form b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Form.form
index ef499e244..192c363fa 100644
--- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Form.form
+++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Form.form
@@ -40,7 +40,7 @@
Lefttrue
- 35
+ 30truetruefalse
@@ -346,7 +346,6 @@
Lefttrue
- 55truetruetrue
@@ -439,7 +438,6 @@
Lefttrue
- 34truetruetrue
@@ -630,7 +628,7 @@
truetruetrue
- 14
+ 9truetruetrue
@@ -735,7 +733,7 @@
RetrySaveValuesYes
- 80
+ 60LockOwnerUsetrue
diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html
index 58d96632b..aa6589909 100644
--- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html
+++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html
@@ -1,4 +1,35 @@
-
-
Что бы выбрать вариант отчета необходимо установить курсор на нужный вариант отчета и нажать на кнопку "Выбрать".
-
Что бы изменить наименование, описание или настройки размещения варианта отчета необходимо установить курсор на нужный вариант отчета и нажать на кнопку "Изменить".
При работе с отчетом можно быстро загрузить ранее сохраненный вариант отчета. Для этого нажмите Выбрать вариант или Все действия - Выбрать вариант.
+
Для выбора доступны:
+
стандартные, предусмотренные в программе предопределенные варианты отчетов. По умолчанию являются общими и в списке отображаются со значком ;
+
общие варианты отчетов, предоставленные другими пользователями в общий доступ. В списке они отображаются со значком . Для выбора доступны варианты всех авторов;
+
личные варианты отчетов, сохраненные ранее.
Список выбора может содержать три группы вариантов отчетов:
+
используемые варианты отчетов (не выделяются в отдельную группу, расположены в начале списка);
+
Скрытые в панелях отчетов - в эту группу входят предопределенные общие отчеты, у которых выключен флажок По умолчанию виден в панели отчетов;
+
Помеченные на удаление. Группа всегда размещена внизу списка выбора. При выборе помеченного на удаление варианта программа выводит предупреждение.
В списке выводится:
+
+
Наименование - полное наименование варианта отчета, которое выводится в списках.
+
+
+
Картинка Доступен всем пользователям:
+
+
видна - вариант отчета доступен всем пользователям,
+
+
не видна - вариант отчета доступен только автору.
+
Автор - полное имя пользователя, который является автором варианта отчета.
+
В нижней части списка выводится Описание - подробная информация о выбранном варианте отчета.
Выбор варианта отчета
+
+
Для того чтобы открыть вариант отчета, выделите его в списке, нажмите Выбрать.
+
+
Также можно воспользоваться двойным щелчком мыши.
Отбор
+
Если список вариантов отчетов большой, то с помощью отбора по автору можно быстро найти нужный вариант отчета.
+
В поле Автор выберите автора варианта отчета из списка пользователей.
Настройка варианта отчета
+
+
Выберите вариант отчета, нажмите Изменить, отредактируйте необходимые поля.
Удаление варианта отчета
+
Пользовательский вариант отчета с помощью команды меню Все действия можно Пометить на удаление. Также можно воспользоваться клавишей Del.
+
Повторно выполните эту команду, для того чтобы Снять пометку удаления.
+
Эта возможность недоступна для предопределенных вариантов отчетов.
Администратору/Ответственному за отчеты:
+
Обычно личные варианты отчетов других авторов скрыты. Но в редких случаях может потребоваться прямо из этого списка выбора сделать один из личных вариантов отчетов общедоступным или назначить его другому пользователю. Для того чтобы увидеть все варианты отчетов без исключения, нажмите Все действия - Показать личные варианты отчетов других авторов.
\ No newline at end of file
diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl
index 5f6d61acb..c754b0619 100644
--- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl
+++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl
@@ -1,4 +1,3 @@
-
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -249,19 +248,13 @@
| ВариантыОтчетов.Наименование,
| ВариантыОтчетов.КлючВарианта,
| ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(200)) КАК Описание,
- | ВЫБОР
- | КОГДА ВариантыОтчетов.ТипОтчета = &ТипОтчетаВнутренний
- | И ВариантыОтчетов.Пользовательский = ЛОЖЬ
- | И ВариантыОтчетов.ВидимостьПоУмолчаниюПереопределена = ЛОЖЬ
- | ТОГДА ВариантыОтчетов.ПредопределенныйВариант.ВидимостьПоУмолчанию
- | ИНАЧЕ ВариантыОтчетов.ВидимостьПоУмолчанию
- | КОНЕЦ КАК ВидимостьПоУмолчанию,
+ | ЕСТЬNULL(ВариантыОтчетов.ПредопределенныйВариант.ВидимостьПоУмолчанию, ЛОЖЬ) КАК ВидимостьПоУмолчанию,
| ВариантыОтчетов.Автор,
| ВариантыОтчетов.ТолькоДляАвтора,
| ВариантыОтчетов.Пользовательский,
| ВариантыОтчетов.ПометкаУдаления,
| ВариантыОтчетов.ПредопределенныйВариант
- |ПОМЕСТИТЬ втВсеВарианты
+ |ПОМЕСТИТЬ втВарианты
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
@@ -275,102 +268,105 @@
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
- | ВсеВарианты.Ссылка КАК Ссылка,
- | РазмещениеРазделенного.РазделИлиГруппа КАК Подсистема,
- | РазмещениеРазделенного.Использование КАК Использование
- |ПОМЕСТИТЬ втРазделенные
+ | ВариантыОтчетов.Ссылка КАК Ссылка,
+ | ВариантыРазмещение.Использование КАК Использование,
+ | ВариантыРазмещение.Подсистема КАК Подсистема
+ |ПОМЕСТИТЬ втРазмещениеАдминистратора
|ИЗ
- | втВсеВарианты КАК ВсеВарианты
- | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Размещение КАК РазмещениеРазделенного
- | ПО ВсеВарианты.Ссылка = РазмещениеРазделенного.Ссылка
+ | втВарианты КАК ВариантыОтчетов
+ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Размещение КАК ВариантыРазмещение
+ | ПО ВариантыОтчетов.Ссылка = ВариантыРазмещение.Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
- | ВсеВарианты.Ссылка КАК Ссылка,
- | РазмещениеОбщего.Подсистема КАК Подсистема
- |ПОМЕСТИТЬ втОбщие
+ | ВариантыОтчетов.Ссылка КАК Ссылка,
+ | ПредопределенныеРазмещение.Подсистема КАК Подсистема
+ |ПОМЕСТИТЬ втРазмещениеРазработчика
|ИЗ
- | втВсеВарианты КАК ВсеВарианты
- | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК РазмещениеОбщего
- | ПО ВсеВарианты.ПредопределенныйВариант = РазмещениеОбщего.Ссылка
+ | втВарианты КАК ВариантыОтчетов
+ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК ПредопределенныеРазмещение
+ | ПО (ВариантыОтчетов.Пользовательский = ЛОЖЬ)
+ | И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
- |ВЫБРАТЬ
- | ЕСТЬNULL(табРазделенные.Ссылка, табОбщие.Ссылка) КАК Ссылка,
- | ЕСТЬNULL(табРазделенные.Подсистема, табОбщие.Подсистема) КАК Подсистема
- |ПОМЕСТИТЬ втПодсистемы
- |ИЗ
- | втРазделенные КАК табРазделенные
- | ПОЛНОЕ СОЕДИНЕНИЕ втОбщие КАК табОбщие
- | ПО табРазделенные.Ссылка = табОбщие.Ссылка
- | И табРазделенные.Подсистема = табОбщие.Подсистема
- |ГДЕ
- | (табРазделенные.Использование = ИСТИНА
- | ИЛИ табРазделенные.Использование ЕСТЬ NULL )
- |;
- |
- |////////////////////////////////////////////////////////////////////////////////
- |ВЫБРАТЬ РАЗРЕШЕННЫЕ
- | втВсеВарианты.Ссылка,
- | втВсеВарианты.Наименование,
- | втВсеВарианты.КлючВарианта,
- | втВсеВарианты.ВидимостьПоУмолчанию,
- | втВсеВарианты.Автор,
- | втВсеВарианты.ТолькоДляАвтора,
- | втВсеВарианты.Пользовательский,
- | втВсеВарианты.ПометкаУдаления,
- | МИНИМУМ(ВЫБОР
- | КОГДА втВсеВарианты.ПометкаУдаления = ИСТИНА
- | ТОГДА 3
- | КОГДА НастройкиПанели.Видимость = ИСТИНА
- | ТОГДА 1
- | КОГДА НастройкиПанели.Видимость = ЛОЖЬ
- | ТОГДА 2
- | КОГДА втВсеВарианты.ВидимостьПоУмолчанию = ИСТИНА
- | ТОГДА 1
- | КОГДА втВсеВарианты.Автор = &ТекущийПользователь
- | ТОГДА 1
- | ИНАЧЕ 2
- | КОНЕЦ) КАК НомерГруппы,
- | втВсеВарианты.Описание,
+ |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
+ | ЕСТЬNULL(РазмещениеАдминистратора.Ссылка, РазмещениеРазработчика.Ссылка) КАК Ссылка,
+ | ЕСТЬNULL(РазмещениеАдминистратора.Подсистема, РазмещениеРазработчика.Подсистема) КАК Подсистема,
+ | ЕСТЬNULL(РазмещениеАдминистратора.Использование, ИСТИНА) КАК Использование,
| ВЫБОР
- | КОГДА втВсеВарианты.ПометкаУдаления
+ | КОГДА РазмещениеАдминистратора.Ссылка ЕСТЬ NULL
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЛОЖЬ
+ | КОНЕЦ КАК ЭтоНастройкаРазработчика
+ |ПОМЕСТИТЬ втРазмещениеВариантов
+ |ИЗ
+ | втРазмещениеАдминистратора КАК РазмещениеАдминистратора
+ | ПОЛНОЕ СОЕДИНЕНИЕ втРазмещениеРазработчика КАК РазмещениеРазработчика
+ | ПО РазмещениеАдминистратора.Ссылка = РазмещениеРазработчика.Ссылка
+ | И РазмещениеАдминистратора.Подсистема = РазмещениеРазработчика.Подсистема
+ |ГДЕ
+ | ЕСТЬNULL(РазмещениеАдминистратора.Использование, ИСТИНА)
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
+ | Размещение.Ссылка КАК Ссылка,
+ | МАКСИМУМ(ЕСТЬNULL(ЛичныеНастройки.Видимость, Варианты.ВидимостьПоУмолчанию)) КАК ВидимостьВПанелиОтчетов
+ |ПОМЕСТИТЬ втВидимость
+ |ИЗ
+ | втРазмещениеВариантов КАК Размещение
+ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ЛичныеНастройки
+ | ПО Размещение.Подсистема = ЛичныеНастройки.Подсистема
+ | И Размещение.Ссылка = ЛичныеНастройки.Вариант
+ | И (ЛичныеНастройки.Пользователь = &ТекущийПользователь)
+ | ЛЕВОЕ СОЕДИНЕНИЕ втВарианты КАК Варианты
+ | ПО Размещение.Ссылка = Варианты.Ссылка
+ |
+ |СГРУППИРОВАТЬ ПО
+ | Размещение.Ссылка
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | Варианты.Ссылка,
+ | Варианты.Наименование,
+ | Варианты.КлючВарианта,
+ | Варианты.ВидимостьПоУмолчанию,
+ | Варианты.Автор,
+ | Варианты.ТолькоДляАвтора,
+ | Варианты.Пользовательский,
+ | Варианты.ПометкаУдаления,
+ | ВЫБОР
+ | КОГДА Варианты.ПометкаУдаления = ИСТИНА
+ | ТОГДА 3
+ | КОГДА Видимость.ВидимостьВПанелиОтчетов = ИСТИНА
+ | ТОГДА 1
+ | ИНАЧЕ 2
+ | КОНЕЦ КАК НомерГруппы,
+ | Варианты.Описание,
+ | ВЫБОР
+ | КОГДА Варианты.ПометкаУдаления
| ТОГДА 4
- | КОГДА втВсеВарианты.Пользовательский
+ | КОГДА Варианты.Пользовательский
| ТОГДА 3
| ИНАЧЕ 5
| КОНЕЦ КАК ИндексКартинки,
| ВЫБОР
- | КОГДА втВсеВарианты.Автор = &ТекущийПользователь
+ | КОГДА Варианты.Автор = &ТекущийПользователь
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК АвторТекущийПользователь
|ИЗ
- | втПодсистемы КАК втПодсистемы
- | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК НастройкиПанели
- | ПО втПодсистемы.Ссылка = НастройкиПанели.Вариант
- | И втПодсистемы.Подсистема = НастройкиПанели.РазделИлиГруппа
- | И (НастройкиПанели.Пользователь = &ТекущийПользователь)
- | ПОЛНОЕ СОЕДИНЕНИЕ втВсеВарианты КАК втВсеВарианты
- | ПО втПодсистемы.Ссылка = втВсеВарианты.Ссылка
- |
- |СГРУППИРОВАТЬ ПО
- | втВсеВарианты.ТолькоДляАвтора,
- | втВсеВарианты.ПометкаУдаления,
- | втВсеВарианты.Пользовательский,
- | втВсеВарианты.Автор,
- | втВсеВарианты.КлючВарианта,
- | втВсеВарианты.ВидимостьПоУмолчанию,
- | втВсеВарианты.Наименование,
- | втВсеВарианты.Ссылка,
- | втВсеВарианты.Описание";
+ | втВарианты КАК Варианты
+ | ЛЕВОЕ СОЕДИНЕНИЕ втВидимость КАК Видимость
+ | ПО Варианты.Ссылка = Видимость.Ссылка";
+
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Отчет", ОтчетИнформация.Отчет);
Запрос.УстановитьПараметр("ТекущийПользователь", ТекущийПользователь);
- Запрос.УстановитьПараметр("ТипОтчетаВнутренний", Перечисления.ТипыОтчетов.Внутренний);
Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
Если ПоказыватьЛичныеВариантыОтчетовДругихАвторов Тогда
diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form
index d68c7c6e4..21b24f45e 100644
--- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form
+++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form
@@ -98,10 +98,10 @@
ВариантыОтчетаСтрокаПоиска
- 137
+ 163ВариантыОтчетаСтрокаПоискаРасширеннаяПодсказка
- 139
+ 165Labeltruetrue
@@ -111,7 +111,7 @@
ВариантыОтчетаСтрокаПоискаКонтекстноеМеню
- 138
+ 164trueВариантыОтчета
@@ -121,10 +121,10 @@
ВариантыОтчетаСостояниеПросмотра
- 140
+ 166ВариантыОтчетаСостояниеПросмотраРасширеннаяПодсказка
- 142
+ 168Labeltruetrue
@@ -134,7 +134,7 @@
ВариантыОтчетаСостояниеПросмотраКонтекстноеМеню
- 141
+ 167trueViewStatusAddition
@@ -145,10 +145,10 @@
ВариантыОтчетаУправлениеПоиском
- 143
+ 169ВариантыОтчетаУправлениеПоискомРасширеннаяПодсказка
- 145
+ 171Labeltruetrue
@@ -158,7 +158,7 @@
ВариантыОтчетаУправлениеПоискомКонтекстноеМеню
- 144
+ 170trueSearchControlAddition
@@ -326,65 +326,9 @@
Normal
-
- ОписаниеВнешнегоОтчета
- 95
- true
-
- true
-
-
- ВариантОписание
-
- false
- Left
-
- ОписаниеВнешнегоОтчетаExtendedTooltip
- 118
- Label
- true
- true
-
- Left
-
-
-
- ОписаниеВнешнегоОтчетаКонтекстноеМеню
- 96
- true
-
- InputField
- Enter
- true
- Left
- true
-
-
- StartChoice
- ОписаниеНачалоВыбора
-
- true
- 2
- true
- true
- false
- true
- false
- true
- false
- true
- false
- false
- false
- true
- true
- true
- Normal
-
- ГруппаДоступен
- 97
+ 153Доступен98
@@ -445,19 +389,19 @@
- ГруппаВидимостьПоУмолчанию
- 100
+ Группа7
+ 155
- ПустаяДекорация1
- 101
+ Декорация1
+ 157truetruetrue
- ПустаяДекорация1ExtendedTooltip
- 122
+ Декорация1РасширеннаяПодсказка
+ 159Labeltruetrue
@@ -466,8 +410,8 @@
- ПустаяДекорация1КонтекстноеМеню
- 102
+ Декорация1КонтекстноеМеню
+ 158trueLabel
@@ -478,8 +422,8 @@
- ВидимостьПоУмолчанию
- 105
+ ВариантВидимостьПоУмолчанию
+ 160truetrue
@@ -490,8 +434,8 @@
Right
- ВидимостьПоУмолчаниюExtendedTooltip
- 123
+ ВариантВидимостьПоУмолчаниюРасширеннаяПодсказка
+ 162Labeltruetrue
@@ -500,8 +444,8 @@
- ВидимостьПоУмолчаниюКонтекстноеМеню
- 106
+ ВариантВидимостьПоУмолчаниюКонтекстноеМеню
+ 161trueCheckBoxField
@@ -516,17 +460,9 @@
true
-
- ru
- Группа видимость по умолчанию
-
-
- ru
- Группа видимость по умолчанию
-
- ГруппаВидимостьПоУмолчаниюExtendedTooltip
- 121
+ Группа7РасширеннаяПодсказка
+ 156Labeltruetrue
@@ -551,15 +487,15 @@
ru
- Группа доступен
+ ru
- Группа доступен
+
- ГруппаДоступенExtendedTooltip
- 119
+ ГруппаДоступенРасширеннаяПодсказка
+ 154Labeltruetrue
@@ -576,6 +512,62 @@
Auto
+
+ ОписаниеВнешнегоОтчета
+ 95
+ true
+
+ true
+
+
+ ВариантОписание
+
+ false
+ Left
+
+ ОписаниеВнешнегоОтчетаExtendedTooltip
+ 118
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОписаниеВнешнегоОтчетаКонтекстноеМеню
+ 96
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ ОписаниеНачалоВыбора
+
+ true
+ 2
+ true
+ true
+ false
+ true
+ false
+ true
+ false
+ true
+ false
+ false
+ false
+ true
+ true
+ true
+ Normal
+
+ ПерезаписьИлиНовый86
@@ -1005,6 +997,49 @@
Normal
+
+ ДеревоПодсистемПользователиПредставление
+ 137
+ true
+
+ true
+
+
+ ДеревоПодсистем.ПользователиПредставление
+
+
+ ДеревоПодсистемПользователиПредставлениеРасширеннаяПодсказка
+ 139
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ДеревоПодсистемПользователиПредставлениеКонтекстноеМеню
+ 138
+ true
+
+ LabelField
+ true
+ true
+ true
+ Left
+ true
+ Show
+ Always
+
+ true
+ true
+ true
+ false
+
+ Style.ВидимыйВариантОтчетаЦвет
+
+
+ ДеревоПодсистемКоманднаяПанель76
@@ -1012,10 +1047,10 @@
ДеревоПодсистемСтрокаПоиска
- 159
+ 185ДеревоПодсистемСтрокаПоискаРасширеннаяПодсказка
- 161
+ 187Labeltruetrue
@@ -1025,7 +1060,7 @@
ДеревоПодсистемСтрокаПоискаКонтекстноеМеню
- 160
+ 186trueДеревоПодсистем
@@ -1035,10 +1070,10 @@
ДеревоПодсистемСостояниеПросмотра
- 162
+ 188ДеревоПодсистемСостояниеПросмотраРасширеннаяПодсказка
- 164
+ 190Labeltruetrue
@@ -1048,7 +1083,7 @@
ДеревоПодсистемСостояниеПросмотраКонтекстноеМеню
- 163
+ 189trueViewStatusAddition
@@ -1059,10 +1094,10 @@
ДеревоПодсистемУправлениеПоиском
- 165
+ 191ДеревоПодсистемУправлениеПоискомРасширеннаяПодсказка
- 167
+ 193Labeltruetrue
@@ -1072,7 +1107,7 @@
ДеревоПодсистемУправлениеПоискомКонтекстноеМеню
- 166
+ 192trueSearchControlAddition
@@ -1099,7 +1134,6 @@
Treetruetrue
- 15truetruetrue
@@ -1116,31 +1150,85 @@
ExpandAllLevelstruetrue
+ true
+ trueNoneNoneNonetrue
-
- Описание
- 8
+
+ Группа1
+ 143
+
+ Описание
+ 8
+ true
+ true
+
+ true
+
+
+ ВариантОписание
+
+ false
+ Left
+
+ ru
+ Подробное описание отчета
+
+
+ ОписаниеExtendedTooltip
+ 136
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОписаниеКонтекстноеМеню
+ 9
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+
+ StartChoice
+ ОписаниеНачалоВыбора
+
+ true
+ 2
+ true
+ true
+ false
+ true
+ false
+ true
+ false
+ true
+ false
+ false
+ false
+ true
+ true
+ true
+ Normal
+
+ truetruetrue
-
- ВариантОписание
-
- false
- Left
-
- ru
- Подробное описание отчета
-
- ОписаниеExtendedTooltip
- 136
+ Группа1РасширеннаяПодсказка
+ 144Labeltruetrue
@@ -1148,38 +1236,15 @@
Left
-
- ОписаниеКонтекстноеМеню
- 9
- true
-
- InputField
- Enter
- true
- Left
- true
-
-
- StartChoice
- ОписаниеНачалоВыбора
-
- true
- 2
- true
- true
- false
- true
- false
- true
- false
- true
- false
- false
- false
- true
- true
- true
- Normal
+ UsualGroup
+
+ Vertical
+ Auto
+ WeakSeparation
+ true
+ true
+ Auto
+ Autotrue
@@ -1239,117 +1304,211 @@
Auto
+
+ Группа2
+ 145
+
+ Группа3
+ 147
+
+ Назад
+ 23
+ true
+ false
+
+ true
+
+
+ НазадExtendedTooltip
+ 107
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Назад
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+ true
+ true
+
+ true
+
+
+ Группа3РасширеннаяПодсказка
+ 148
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+
+
+
+ Группа4
+ 149
+
+ Далее
+ 15
+ true
+ true
+
+ true
+
+
+ ДалееExtendedTooltip
+ 108
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Далее
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Сохранить
+ 55
+ true
+ true
+
+ true
+
+
+ СохранитьExtendedTooltip
+ 109
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.Command.Сохранить
+ Auto
+ true
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Отмена
+ 16
+ true
+ true
+
+ true
+
+
+ ОтменаExtendedTooltip
+ 110
+ Label
+ true
+ true
+
+ Left
+
+
+ Form.StandardCommand.Cancel
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+ Auto
+
+
+ Группа5
+ 151
+ true
+ true
+
+ true
+
+
+ Группа5РасширеннаяПодсказка
+ 152
+ Label
+ true
+ true
+
+ Left
+
+
+
+ Form
+
+
+ true
+ true
+
+ true
+
+
+ Группа4РасширеннаяПодсказка
+ 150
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Right
+
+
+ true
+ true
+
+ true
+
+
+ Группа2РасширеннаяПодсказка
+ 146
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+ BottomtrueФормаКоманднаяПанель-1
-
- Назад
- 23
- true
- false
-
- true
-
-
- НазадExtendedTooltip
- 107
- Label
- true
- true
-
- Left
-
-
- Form.Command.Назад
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- Далее
- 15
- true
- true
-
- true
-
-
- ДалееExtendedTooltip
- 108
- Label
- true
- true
-
- Left
-
-
- Form.Command.Далее
- Normal
- Auto
- true
- true
- UserCmds
- Auto
-
-
- Сохранить
- 55
- true
- true
-
- true
-
-
- СохранитьExtendedTooltip
- 109
- Label
- true
- true
-
- Left
-
-
- Form.Command.Сохранить
- Auto
- true
- true
- true
- UserCmds
- Auto
-
-
- Отмена
- 16
- true
- true
-
- true
-
-
- ОтменаExtendedTooltip
- 110
- Label
- true
- true
-
- Left
-
-
- Form.StandardCommand.Cancel
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Right
- trueNotificationProcessing
@@ -1407,21 +1566,6 @@
true
-
- ОтчетИнформация
-
- ru
- Отчет информация
-
- 2
-
-
- true
-
-
- true
-
- ВариантыОтчета
@@ -1649,23 +1793,6 @@
-
- ПолныеПраваНаВарианты
-
- ru
- Полные права на варианты
-
- 4
-
- Boolean
-
-
- true
-
-
- true
-
- ВариантНаименование
@@ -1771,57 +1898,6 @@
true
-
- НастроитьРазмещениеПослеСохранения
-
- ru
- Настроить размещение после сохранения
-
- 12
-
- Boolean
-
-
- true
-
-
- true
-
-
-
- ВариантАвтор
-
- ru
- Автор
-
- 14
-
- CatalogRef.Пользователи
-
-
- true
-
-
- true
-
-
-
- ТекущийПользователь
-
- ru
- Текущий пользователь
-
- 10
-
- CatalogRef.Пользователи
-
-
- true
-
-
- true
-
- ИдентификаторТекущейСтроки
@@ -1843,14 +1919,15 @@
- ВариантВидимостьПоУмолчанию
+ Доступенru
- По умолчанию виден в панели отчетов
+ Доступен
- 17
+ 15
- Boolean
+ String
+ true
@@ -1863,7 +1940,7 @@
ДеревоПодсистемru
- Размещение в панелях отчетов:
+ Размещение в панелях отчетов13
@@ -2009,46 +2086,10 @@
- ИспользованиеПоУмолчанию
- 8
-
- Number
-
- 1
-
-
-
- true
-
-
- true
-
-
-
- ВажностьПоУмолчанию
+ Модифицированностьru
- Важность по умолчанию
-
- 7
-
- String
-
- 15
-
-
-
- true
-
-
- true
-
-
-
- ИзмененПользователем
-
- ru
- Изменен пользователем
+ Модифицированность10
@@ -2061,17 +2102,83 @@
true
+
+ Пользователи
+
+ ru
+ Пользователи
+
+ 11
+
+ ValueList
+
+
+ true
+
+
+ true
+
+
+
+ ПользователиПредставление
+
+ ru
+ Видимость по умолчанию
+
+ 12
+
+ String
+
+
+
+ true
+
+
+ true
+
+
- Доступен
+ ВариантАвторru
- Доступен
+ Вариант автор
- 15
+ 14
- String
-
+ CatalogRef.Пользователи
+
+
+ true
+
+
+ true
+
+
+
+ Контекст
+
+ ru
+ Контекст
+
+ 19
+
+
+ true
+
+
+ true
+
+
+
+ ВариантВидимостьПоУмолчанию
+
+ ru
+ По умолчанию виден в панелях отчетов
+
+ 2
+
+ Booleantrue
@@ -2084,7 +2191,7 @@
Далееru
- Далее >>
+ Далее >1
@@ -2106,7 +2213,7 @@
Назадru
- << Назад
+ < Назад2
diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html
index 755982cdf..a3b481ce5 100644
--- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html
+++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html
@@ -1,7 +1,27 @@
-
-
Для сохранения нового варианта отчета необходимо ввести наименование, которое не занято другим вариантом этого отчета.
-
Для сохранения варианта отчета поверх существующего необходимо выбрать существующий вариант отчета в списке и быть автором этого варианта или иметь права на изменение чужих вариантов отчетов.
-
Что бы изменить наименование существующего варианта отчета необходимо установить курсор на нужный вариант отчета и нажать на кнопку "F2" или вызвать команду "Изменить" из контекстного меню.
-
Что бы удалить существующий вариант отчета необходимо установить курсор на нужный вариант отчета и нажать на кнопку "Del" или вызвать команду "удалить" из контекстного меню.
-
Что бы изменить настройки размещения сохраняемого варианта отчета в разделах программы необходимо нажать на кнопку "Далее".
После того как настроен и сформирован отчет, его можно сохранить в новом варианте отчета. Для этого необходимо воспользоваться командой Все действия - Сохранить вариант.
+
Список существующих вариантов
+
При сохранении варианта отчета выводится список всех существующих вариантов этого отчета - предопределенных и пользовательских.
+
Список включает:
+
стандартные, предусмотренные в программе предопределенные варианты отчетов. По умолчанию являются общими;
+
общие варианты отчетов, предоставленные другими пользователями в общий доступ;
+
личные варианты отчетов, сохраненные ранее.
В списке также выводятся помеченные на удаление варианты отчетов.
В списке можно Изменить существующие варианты отчетов с помощью соответствующей команды контекстного меню по правой кнопке мыши. У предопределенного варианта отчета можно изменить описание или настройки размещения, у пользовательского варианта можно изменить и наименование (при наличии соответствующих прав).
+
Для того чтобы удалить существующий пользовательский вариант отчета, выделите его, нажмите на клавишу Del или выполните команду контекстного меню по правой кнопке мыши Пометить на удаление. Предопределенные варианты отчетов удалить невозможно.
Наименование варианта отчета
+
Для сохранения нового варианта отчета необходимо ввести Наименование, которое не занято другим вариантом этого отчета. При сохранении контролируется уникальность наименований вариантов отчетов.
+
При перезаписи варианта можно сохранить настройки в существующем варианте - по умолчанию выбран вариант отчета, в котором была выполнена команда Сохранить вариант. Для перезаписи можно выбрать любой личный вариант отчета из списка. Для вариантов отчетов, которые нельзя перезаписать, в том числе и предопределенных, программа в наименовании по умолчанию добавляет слово "-копия". В случае если заменяемый вариант отчета был помечен на удаление, программой выводится предупреждение. Нажмите кнопку Да, для того чтобы подтвердить свой выбор.
+
Для администраторов программы или ответственных за отчеты предусмотрена возможность перезаписи общих вариантов отчетов других авторов.
Доступность
+
С помощью переключателя Доступен администратор варианта отчета может ограничить доступность варианта отчета - выбрать доступность Только для автора.
+
Если выбрать доступность Всем пользователям, то можно указать видимость для других исполнителей. Для того чтобы вариант отчета был сразу виден в панелях отчетов всех пользователей, включите флажок По умолчанию виден в панели отчетов.
Сохранение варианта отчета
+
Сохранить вариант отчета можно двумя способами:
+
После определения основных параметров нажмите Сохранить, при этом будут использованы настройки по умолчанию и новый вариант отчета будет помещен в тот же раздел списка отчетов, что и исходный вариант.
+
Нажмите Далее, для того чтобы изменить настройки размещения варианта отчета.
Размещение в панелях отчетов
+
Включите один или несколько флажков в колонке Раздел, группа для размещения варианта отчетов в соответствующих разделах или группах программы. При размещении в разделе вариант отчета будет выводиться в верхней части панели отчетов раздела, без размещения в группах.
+
+
В колонке Важность выберите способ выделения варианта отчета в группе:
+
+
Важный – вариант отчета будет выделен жирным шрифтом.
+
+
См. также – вариант отчета будет выведен в отдельной группе внизу панели отчетов.
Введите Описание, которое выводится под наименованием отчета в панели отчетов и в списках отчетов.
+
Нажмите кнопку Сохранить для сохранения варианта отчета с выбранными настройками.
Бизнес-процессы в конфигурации позволяют объединять отдельные операции в цепочки взаимосвязанных действий, приводящих к достижению определенных целей.
Ход выполнения бизнес-процесса может быть наглядно представлен в виде карты маршрута. Карта маршрута описывает логику бизнес-процесса и весь его жизненный цикл в виде схематического изображения последовательности прохождения точек маршрута. Точка маршрута отражает этап бизнес-процесса, связанный с выполнением, как правило, одной операции. При переходе бизнес-процесса в какую либо точку маршрута, предусматривающую действия конкретного исполнителя, формируется задача. После того как исполнитель отметит задачу как выполненную, бизнес-процес автоматически перейдет к следующей точке маршрута. Таким образом, с помощью задач бизнес-процес продвигается к точке своего завершения. При работе пользователя с системой предусмотрена возможность отображения актуальной карты маршрута для конкретного бизнес-процесса, с учетом пройденных и активных точек маршрута.
Задачи могут быть адресованы исполнителю или группе исполнителей как персонально — персональная адресация, так и для некоторых бизнес-процессов, с использованием ролей бизнес-процесса — ролевая адресация (необходимо различать роли бизнес-процесса и роли для организации прав доступа). В случае ролевой адресации задача выдается не персонально исполнителю, а некоторой роли бизнес-процесса (например, "Старший по залу"), а соответствие пользователей ролям задается в регистре сведений "Роли и исполнители" и используется системой для доставки поручений конкретным пользователям. Роли бизнес-процесса поставляются в составе конфигурации.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/БизнесПроцессыИЗадачи.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/БизнесПроцессыИЗадачи.mdo
index bab1aba4b..95c8e460f 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/БизнесПроцессыИЗадачи.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/БизнесПроцессыИЗадачи.mdo
@@ -5,7 +5,6 @@
ruБизнес-процессы и задачи
- trueru
@@ -69,5 +68,8 @@
FunctionalOption.ИспользоватьДатуИВремяВСрокахЗадачFunctionalOption.ИспользоватьДатуНачалаЗадачFunctionalOption.ИспользоватьПодчиненныеБизнесПроцессы
+ CommonModule.БизнесПроцессыИЗадачиКлиентСервер
+ EventSubscription.ПолучитьПоляПредставленияБизнесПроцесса
+ EventSubscription.ПолучитьПредставлениеБизнесПроцессаSubsystem.СтандартныеПодсистемы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html
index 74ab9c811..e9b356a77 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html
@@ -1,2 +1,2 @@
-
+
Программа поддерживает многовалютный учет, и позволяет вводить операции и просматривать отчеты в любой валюте, представленной в справочнике Валюты. Конфигурация поставляется с «Общероссийским классификатором валют» (ОКВ). Существует возможность загрузки курсов валют с сайта «РосБизнесКонсалтинг».
Конфигурация позволяет вести историю изменений объектов информационной базы. Эта функция позволяет ответить на вопросы: "Кто изменил объект?", "Когда произошли изменения?" и "Что изменено в объекте?". Версионируемыми объектами могут быть справочники и документы. Конфигурация позволяет просматривать любую версию объекта или сравнивать любые версии объекта между собой.
Перед использованием возможности версионирования, необходимо установить флаг Использовать версионирование объектов, в форме настройки параметров системы (раздел Настройка и администрирование). После сохранения настроек на панели навигации появится команда Версионируемые объекты, которая открывает форму настройки версионирования.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo
index 95174bd36..50f87f8ca 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo
@@ -5,7 +5,6 @@
ruВерсионирование объектов
- trueru
@@ -34,5 +33,8 @@
Role.ЧтениеИнформацииОВерсияхОбъектовEventSubscription.УдалитьИнформациюОбАвтореВерсииEventSubscription.ЗаписатьВерсиюПриОбменеДанными
+ Report.АнализВерсийОбъектов
+ Enum.СрокиХраненияВерсий
+ ScheduledJob.ОчисткаУстаревшихВерсийОбъектовSubsystem.СтандартныеПодсистемы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo
index 06264700d..5108253a9 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo
@@ -98,5 +98,7 @@
InformationRegister.СостоянияПапокПисемInformationRegister.СостоянияПредметовВзаимодействийInformationRegister.КонтактыВзаимодействий
+ EventSubscription.ПолучениеПредставленияВзаимодействия
+ EventSubscription.ПолучениеПолейПредставленияВзамоимодействияSubsystem.СтандартныеПодсистемы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрафикиРаботы/ГрафикиРаботы.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрафикиРаботы/ГрафикиРаботы.mdo
index e69fb830a..2dae4d5e6 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрафикиРаботы/ГрафикиРаботы.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрафикиРаботы/ГрафикиРаботы.mdo
@@ -5,7 +5,6 @@
ruГрафики работы
- trueCommonModule.ГрафикиРаботыStyleItem.ДатаГрафикаИзмененнаяФонEnum.СпособыЗаполненияГрафикаРаботы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html
index 512912d2e..a8b6dbe1e 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html
@@ -1 +1 @@
-С помощью группового изменения объектов пользователь может за одно действие изменить значения реквизитов, дополнительных реквизитов или дополнительных сведений (далее по тексту: реквизитов) у выбранных объектов определенного типа. Для работы с групповым изменением объектов пользователю не требуются дополнительные роли. Если пользователю доступно редактирование самого объекта, то ему доступно и групповое изменение объекта. Для перехода к помощнику группового изменения можно воспользоваться командой Изменить выделенные командной панели или контекстного меню списка, предварительно выбрав в списке набор объектов с помощью множественного выделения.
\ No newline at end of file
+С помощью группового изменения объектов пользователь может за одно действие изменить значения реквизитов, дополнительных реквизитов или дополнительных сведений (далее по тексту: реквизитов) у выбранных объектов определенного типа. Для работы с групповым изменением объектов пользователю не требуются дополнительные роли. Если пользователю доступно редактирование самого объекта, то ему доступно и групповое изменение объекта. Для перехода к помощнику группового изменения можно воспользоваться командой Изменить выделенные командной панели или контекстного меню списка, предварительно выбрав в списке набор объектов с помощью множественного выделения.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo
index e86979067..31fa2f7f3 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo
@@ -5,7 +5,6 @@
ruГрупповое изменение объектов
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДатыЗапретаИзменения/ДатыЗапретаИзменения.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДатыЗапретаИзменения/ДатыЗапретаИзменения.mdo
index 3e8d7c47f..45a69e2fb 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДатыЗапретаИзменения/ДатыЗапретаИзменения.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДатыЗапретаИзменения/ДатыЗапретаИзменения.mdo
@@ -5,10 +5,9 @@
ruДаты запрета изменения
- trueCommonModule.ДатыЗапретаИзмененияInformationRegister.ДатыЗапретаИзменения
- CommonModule.ДатыЗапретаИзмененияПовтИсп
+ CommonModule.ДатыЗапретаИзмененияСлужебныйПовтИспChartOfCharacteristicTypes.РазделыДатЗапретаИзмененияCommonModule.ДатыЗапретаИзмененияСлужебныйCommonModule.ДатыЗапретаИзмененияПереопределяемый
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html
index 1e41b341c..e22e1dfa7 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Конфигурация позволяет подключать и использовать дополнительные (внешние) отчеты и обработки к ИБ в режиме «1С:Предприятия». Они позволяют расширять функциональность конфигурации, не внося в неё изменений.
С помощью дополнительных отчетов и обработок можно:
Конфигурация позволяет завершать существующие соединения с информационной базой и устанавливать блокировку новых соединений с информационной базой на определенный период времени. Подробнее см. раздел Блокировка соединений с информационной базой.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/ЗавершениеРаботыПользователей.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/ЗавершениеРаботыПользователей.mdo
index fad34672e..b1b80cfb7 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/ЗавершениеРаботыПользователей.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/ЗавершениеРаботыПользователей.mdo
@@ -5,7 +5,6 @@
ruЗавершение работы пользователей
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗагрузкаДанныхИзФайла/ЗагрузкаДанныхИзФайла.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗагрузкаДанныхИзФайла/ЗагрузкаДанныхИзФайла.mdo
new file mode 100644
index 000000000..84794baf6
--- /dev/null
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗагрузкаДанныхИзФайла/ЗагрузкаДанныхИзФайла.mdo
@@ -0,0 +1,11 @@
+
+
+ ЗагрузкаДанныхИзФайла
+
+ ru
+ Загрузка данных из файла
+
+ DataProcessor.ЗагрузкаДанныхИзФайла
+ CommonModule.ЗагрузкаДанныхИзФайлаКлиент
+ Subsystem.СтандартныеПодсистемы
+
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html
index 4184b7533..25b9540cd 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html
@@ -1,3 +1,3 @@
-
+
Конфигурация запрещает редактировать (после первоначального заполнения) некоторые реквизиты объектов, которые определяют характер данного объекта и которые условно можно назвать «ключевыми» реквизитами данного объекта. Как правило, ключевыми реквизитами являются реквизиты объекта, влияющие на поведение других объектов, например, на проведение документов. Необдуманное изменение таких реквизитов может привести к рассогласованию данных учета.
Примером может служить реквизит Валюта справочника Кассы, который определяет валюту остатков по данной кассе, или признак Является услугой справочника Номенклатура, который влияет на проведение документов с такой номенклатурой. Такие реквизиты нельзя изменять после появления остатков по данной кассе или после появления документов с данной номенклатурой соответственно.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/ЗапретРедактированияРеквизитовОбъектов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/ЗапретРедактированияРеквизитовОбъектов.mdo
index a6592945e..a2dd89f35 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/ЗапретРедактированияРеквизитовОбъектов.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/ЗапретРедактированияРеквизитовОбъектов.mdo
@@ -5,7 +5,6 @@
ruЗапрет редактирования реквизитов объектов
- trueru
@@ -16,5 +15,6 @@
Subsystem.СтандартныеПодсистемы.Subsystem.ЗапретРедактированияРеквизитовОбъектовCommonPicture.РазрешитьРедактированиеРеквизитовОбъектаCommonModule.ЗапретРедактированияРеквизитовОбъектов
+ CommonModule.ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиентSubsystem.СтандартныеПодсистемы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗащитаПерсональныхДанных/ЗащитаПерсональныхДанных.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗащитаПерсональныхДанных/ЗащитаПерсональныхДанных.mdo
index dc7045e58..6fe437458 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗащитаПерсональныхДанных/ЗащитаПерсональныхДанных.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗащитаПерсональныхДанных/ЗащитаПерсональныхДанных.mdo
@@ -6,7 +6,6 @@
Защита персональных данныхЗащита персональных данных (в соответствии с требованиями 152-ФЗ)
- trueDataProcessor.ЗащитаПерсональныхДанныхCommonPicture.КоллекцияКонтролируемыеСобытия152ФЗCommonModule.ЗащитаПерсональныхДанныхПовтИсп
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформацияПриЗапуске/ИнформацияПриЗапуске.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформацияПриЗапуске/ИнформацияПриЗапуске.mdo
index 70a53f8c2..ca479855d 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформацияПриЗапуске/ИнформацияПриЗапуске.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформацияПриЗапуске/ИнформацияПриЗапуске.mdo
@@ -5,9 +5,9 @@
ruИнформация при запуске
- trueDataProcessor.ИнформацияПриЗапускеCommonModule.ИнформацияПриЗапускеCommonModule.ИнформацияПриЗапускеКлиент
+ CommonModule.ИнформацияПриЗапускеПереопределяемыйSubsystem.СтандартныеПодсистемы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html
index f31deafec..e40d9d690 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Система позволяет хранить графики работы, которые используются на предприятии. В графиках работы содержится информация о рабочем времени.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo
index 334e73d23..fd4787cec 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo
@@ -5,7 +5,6 @@
ruКалендарные графики
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html
index 262bc442c..2f58e66e1 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html
@@ -1,3 +1,3 @@
-
+
Конфигурация позволяет единообразно хранить и обрабатывать контактную информацию для различных объектов. Например, справочники Физические лица, Организации и Пользователи предоставляют одинаковую возможность по работе с адресами или телефонами.
Ведение контактной информации предполагает предварительную настройка видов контактной информации, которую рекомендуется выполнить на этапе начального заполнения информационной базы. Настройка выполняется в разделе Администрирование, по команде Виды контактной информации на панели навигации.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo
index 69c688834..817bb9043 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo
@@ -5,7 +5,6 @@
ruКонтактная информация
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html
index bbd84b2e4..c5220e59d 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Платформа 1С:Предприятие 8 позволяет вносить изменения в конфигурацию ИБ без завершения работы пользователей. Такое обновление конфигурации называется динамическим. Конфигурация позволяет оповещать работающих в системе пользователей о динамическом изменении конфигурации. Проверка факта изменения конфигурации осуществляется каждые 20 минут. В случае изменения конфигурации система сообщает об этом пользователю и предлагает ему перезапустить программу.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/КонтрольДинамическогоОбновленияКонфигурации.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/КонтрольДинамическогоОбновленияКонфигурации.mdo
index f583d6625..cb51cad71 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/КонтрольДинамическогоОбновленияКонфигурации.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/КонтрольДинамическогоОбновленияКонфигурации.mdo
@@ -5,7 +5,6 @@
ruКонтроль динамического обновления конфигурации
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html
index 262c2ead9..5b19718a7 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Для ряда объектов конфигурация позволяет настраивать порядок элементов в списках. Для расстановки элементов используются кнопкиВверх и Вниз форм списка, которые размещены в командной панели формы. Для иерархических и подчиненных списков элементы перемещаются в пределах своей группы.
В ряде случаев кнопкиВверх и Вниз не работают. Расстановка элементов невозможна:
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/НастройкаПорядкаЭлементов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/НастройкаПорядкаЭлементов.mdo
index 20f49cbdc..69f4923ac 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/НастройкаПорядкаЭлементов.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/НастройкаПорядкаЭлементов.mdo
@@ -5,7 +5,6 @@
ruНастройка порядка элементов
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкиПрограммы/НастройкиПрограммы.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкиПрограммы/НастройкиПрограммы.mdo
index e61985d55..24d61380c 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкиПрограммы/НастройкиПрограммы.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкиПрограммы/НастройкиПрограммы.mdo
@@ -5,9 +5,8 @@
ruНастройки программы
- true
- trueDataProcessor.ПанельАдминистрированияБСПDataProcessor.ПанельАдминистрированияБСПВМоделиСервиса
+ CommonPicture.РазделАдминистрированиеSubsystem.СтандартныеПодсистемы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html
index d28384915..d9471e5e3 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html
@@ -1,5 +1,5 @@
-
-
Конфигурация позволяет выполнять обмен данными между различными информационными базами по правилам обмена.
+
+
Программа позволяет выполнять синхронизацию данных между различными информационными базами по правилам обмена.
Правила обмена создаются при помощи конфигурации «Конвертация данных, редакция 2.1».
-
Обмен данными может быть односторонним или двухсторонним и выполняться автоматически (по заданному расписанию) или вручную по требованию пользователя. Для обмена данными могут быть использованы различные каналы связи: сетевой каталог, электронная почта или FTP.
-
Настройка обмена производится в разделе Настройка и администрирование по команде Обмены данными на панели навигации.
\ No newline at end of file
+
Синхронизация данных может быть односторонней или двухсторонней и выполняться автоматически (по заданному расписанию) или вручную по требованию пользователя. Для синхронизации данных могут быть использованы различные каналы связи: сетевой каталог, электронная почта или FTP.
+
Настройка синхронизации производится в разделе Администрирование по команде Синхронизация данных на панели навигации.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo
index 4b182f927..1e2e3e312 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo
@@ -5,7 +5,6 @@
ruОбмен данными
- trueru
@@ -29,7 +28,6 @@
SessionParameter.ПравилаРегистрацииОбъектовInformationRegister.СостоянияОбменовДаннымиCommonCommand.ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных
- SessionParameter.ИспользуемыеПланыОбменаSessionParameter.ДатаОбновленияПовторноИспользуемыхЗначенийМРОConstant.ДатаОбновленияПовторноИспользуемыхЗначенийМРОEventSubscription.ЗарегистрироватьИзмененияФильтровОграниченияМиграцииДанных
@@ -129,5 +127,7 @@
Constant.КаталогСообщенийОбменаДаннымиДляLinuxConstant.КаталогСообщенийОбменаДаннымиДляWindowsConstant.КоличествоЭлементовВТранзакцииЗагрузкиДанных
+ CommonCommand.ОткрытьПравилаСинхронизацииДанных
+ SessionParameter.ОшибкаРасхожденияВерсийПриПолученииДанныхSubsystem.СтандартныеПодсистемы
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo
index aa9f2ca7f..a7c07ed3d 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo
@@ -5,7 +5,6 @@
ruОбновление версии ИБ
- trueCommonModule.ОбновлениеИнформационнойБазыCommonModule.ОбновлениеИнформационнойБазыКлиентCommonModule.ОбновлениеИнформационнойБазыПереопределяемый
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html
index 6e4214ace..0722be477 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html
@@ -1,2 +1,2 @@
-
+
Конфигурация позволяет проводить обновление конфигурации инфорационной базы в режиме 1С:Предприятия «по требованию» или в указанное время (только для клиент-серверного режима). Имеется возможность получения обновлений через Интернет, с диска 1С:ИТС или явный выбор файла обновления из локального или сетевого каталога. Для перехода к обновлению конфигурации можно воспользоваться командой Обновление конфигурации раздела Настройка и администрирование.
Многие документы конфигурации имеют печатные формы. Все печатные формы используют единый механизм, позволяющий редактировать макеты печатных форм, не изменяя саму конфигурацию. Печатные формы объектов могут формироваться на основе табличных макетов (MXL) или макетов офисных документов в форматах Microsoft Word и OpenOffice.org Writer.
В формах документов с возможностью вывода печатных форм в командной панели имеется команда Печать, в которой располагаются команды печати конкретных печатных форм. Аналогичные команды есть в форме списка документа. В списке можно выделить сразу несколько документов и выполнить команду печати для выбранных документов.
Конфигурация позволяет производить полнотекстовый поиск в любых объектах конфигурации, отыскивая заданную строку во всех реквизитах объектов. При наличии присоединенных файлов, содержащих текстовую информацию, поиск осуществляется также и по ним.
Полнотекстовый поиск предоставляет такие возможности как: поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ); поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами); нечеткий поиск (буквы в найденных словах могут отличаться).
Для включения и настройки полнотекстового поиска необходимо воспользоваться формой настройки параметров системы в разделе Настройка и администрирование.
В отдельных случаях, конфигурации требуется доступ к сети Интернет, например, для загрузки адресного классификатора с сайта поддержки пользователей 1С:Предприятия фирмы «1С». При использования прокси‑сервера для доступа в сеть Интернет, необходимо указать его настройки.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/ПолучениеФайловИзИнтернета.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/ПолучениеФайловИзИнтернета.mdo
index 3b5eef1ad..06da1688a 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/ПолучениеФайловИзИнтернета.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/ПолучениеФайловИзИнтернета.mdo
@@ -5,7 +5,6 @@
ruПолучение файлов из Интернета
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html
index 1ee5b1b90..4bdc83803 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Система позволяет администрировать пользователей и внешних пользователей, синхронизируя их со списком пользователей информационной базы (который можно увидеть в Конфигураторе). Тем самым достигается возможность работы с расширенной информацией о пользователях, а также возможонсть сослаться на пользователей из других объектов ИБ.
Важно: рекомендуется вести список пользователей ИБ, а также настраивать им права доступа только в режиме «1С:Предприятие». В режиме «Конфигуратор» допускается создавать только пользователей с полными правами – администраторов системы. При входе таких пользователей в ИБ в режиме «1С:Предприятие», в справочнике «Пользователи» будут созданы соответствующие элементы автоматически.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo
index f2ba19e17..1e8e285a9 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo
@@ -5,7 +5,6 @@
ruПользователи
- trueru
@@ -55,7 +54,6 @@
CommonModule.ПользователиСлужебныйВызовСервераCommonPicture.ПрочиеПользовательскиеНастройкиDataProcessor.НастройкиПользователей
- CommonModule.НастройкиПользователейКлиентConstant.ПараметрыРаботыПользователейCommonForm.ГруппыПользователейSessionParameter.АвторизованныйПользователь
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html
index 07db60138..23f24947a 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Система позволяет автоматически назначать префиксы объектам информационной базы. Префиксы назначаются всем справочникам и документам, которые имеют автоматически назначаемый код и номер. Префиксация объектов ведется как в разрезе организаций, так и в разрезе информационных баз. Префикс ИБ назначается всем объектам, а префикс организации — только объектам ИБ, связанным с конкретной организацией.
В общем виде, номер или код объекта складывается по следующей схеме: "ОР" + "ИБ" + "-" + номер/код, где:
"ОР" — 2 символа префикса организации; если префикс организации не задан, то "00".
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/ПрефиксацияОбъектов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/ПрефиксацияОбъектов.mdo
index bdfa35b9f..8c9803584 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/ПрефиксацияОбъектов.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/ПрефиксацияОбъектов.mdo
@@ -5,7 +5,6 @@
ruПрефиксация объектов
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo
index 98ba446e5..cb7f3c20b 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo
@@ -12,9 +12,6 @@
CommonForm.ПрисоединенныеФайлыCommonForm.ПрисоединенныйФайлCommonCommand.ПрисоединенныеФайлыКОбъекту
- CommonForm.ВыборПрисоединенныхФайлов
- CommonForm.ФайлыВТоме
- CommonCommand.ФайлыВТомеCommonModule.ПрисоединенныеФайлыFunctionalOption.ИспользоватьЭПВПрисоединенныхФайлахCommonModule.ПрисоединенныеФайлыСлужебныйКлиент
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/АдресныйКлассификаторВМоделиСервиса/АдресныйКлассификаторВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/АдресныйКлассификаторВМоделиСервиса/АдресныйКлассификаторВМоделиСервиса.mdo
index 48e753904..e66eb4d91 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/АдресныйКлассификаторВМоделиСервиса/АдресныйКлассификаторВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/АдресныйКлассификаторВМоделиСервиса/АдресныйКлассификаторВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruАдресный классификатор в модели сервиса
- trueCommonModule.АдресныйКлассификаторСлужебныйВМоделиСервисаSubsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo
index ab789512b..eb20c3548 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruБазовая функциональность в модели сервиса
- trueCommonModule.РаботаВМоделиСервисаCommonModule.РаботаВМоделиСервисаПереопределяемыйConstant.КопироватьОбластиДанныхИзЭталонной
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БанкиВМоделиСервиса/БанкиВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БанкиВМоделиСервиса/БанкиВМоделиСервиса.mdo
index a8f664eab..89b125a47 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БанкиВМоделиСервиса/БанкиВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БанкиВМоделиСервиса/БанкиВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruБанки в модели сервиса
- trueCommonModule.БанкиСлужебныйВМоделиСервисаSubsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo
index 8e2be4368..80c2b7c4e 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruВалюты в модели сервиса
- trueCommonModule.КурсыВалютСлужебныйВМоделиСервисаCommonCommand.ЗагрузитьКурсыВалютXDTOPackage.CurrencyRates
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/КалендарныеГрафикиВМоделиСервиса/КалендарныеГрафикиВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/КалендарныеГрафикиВМоделиСервиса/КалендарныеГрафикиВМоделиСервиса.mdo
index a7dcf7221..c4ea6a0cd 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/КалендарныеГрафикиВМоделиСервиса/КалендарныеГрафикиВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/КалендарныеГрафикиВМоделиСервиса/КалендарныеГрафикиВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruКалендарные графики в модели сервиса
- trueCommonModule.КалендарныеГрафикиСлужебныйВМоделиСервисаSubsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo
index e8dc03b35..bd00586eb 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo
@@ -69,5 +69,6 @@
Constant.АдресДляВосстановленияПароляУчетнойЗаписиXDTOPackage.АдминистрированиеОбменаДаннымиWebService.RemoteAdministrationOfExchange_2_1_6_1
+ CommonModule.АвтономнаяРаботаСлужебныйКлиентSubsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменСообщениями/ОбменСообщениями.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменСообщениями/ОбменСообщениями.mdo
index 34733b128..3685a2185 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменСообщениями/ОбменСообщениями.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменСообщениями/ОбменСообщениями.mdo
@@ -5,7 +5,6 @@
ruОбмен сообщениями
- trueCatalog.СообщенияСистемыScheduledJob.ОтправкаИПолучениеСообщенийСистемыCommonModule.ОбменСообщениями
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo
index 6e36e8482..78359a14e 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruОбновление версии ИБ в модели сервиса
- trueCommonModule.ОбновлениеИнформационнойБазыСлужебныйВМоделиСервисаInformationRegister.ВерсииПодсистемОбластейДанныхSubsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОчередьЗаданий/ОчередьЗаданий.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОчередьЗаданий/ОчередьЗаданий.mdo
index b12567df7..c58bb6b50 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОчередьЗаданий/ОчередьЗаданий.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОчередьЗаданий/ОчередьЗаданий.mdo
@@ -5,7 +5,6 @@
ruОчередь заданий
- trueCommonModule.ОчередьЗаданийCommonModule.ОчередьЗаданийПереопределяемыйConstant.МаксимальнаяДлительностьВыполненияИсполняющегоФоновогоЗадания
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПользователиВМоделиСервиса/ПользователиВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПользователиВМоделиСервиса/ПользователиВМоделиСервиса.mdo
index 8e32748df..12887b48e 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПользователиВМоделиСервиса/ПользователиВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПользователиВМоделиСервиса/ПользователиВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruПользователи в модели сервиса
- trueCommonModule.ПользователиСлужебныйВМоделиСервисаCommonForm.ПользователиСервисаCommonCommand.ДобавитьПользователейСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo
index ce2028ab2..a7e3e0578 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo
@@ -5,7 +5,6 @@
ruПоставляемые данные
- trueCommonModule.ПоставляемыеДанныеCommonModule.ПоставляемыеДанныеПереопределяемыйXDTOPackage.SuppliedData
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo
index 455920117..e2e7ba21d 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo
@@ -5,7 +5,6 @@
ruРезервное копирование областей данных
- trueCommonModule.РезервноеКопированиеОбластейДанныхПовтИспCommonCommand.СоздатьРезервнуюКопиюCommonForm.СозданиеРезервнойКопии
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo
index 807af5d40..0b3fe7a9a 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo
@@ -5,7 +5,6 @@
ruУдаленное администрирование
- trueConstant.КонечнаяТочкаМенеджераСервисаConstant.ВнутреннийАдресМенеджераСервисаConstant.ИмяСлужебногоПользователяМенеджераСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УправлениеДоступомВМоделиСервиса/УправлениеДоступомВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УправлениеДоступомВМоделиСервиса/УправлениеДоступомВМоделиСервиса.mdo
index 2a569ebd3..eb3753173 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УправлениеДоступомВМоделиСервиса/УправлениеДоступомВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УправлениеДоступомВМоделиСервиса/УправлениеДоступомВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruУправление доступом в модели сервиса
- trueCommonModule.УправлениеДоступомСлужебныйВМоделиСервисаSubsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ФайловыеФункцииВМоделиСервиса/ФайловыеФункцииВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ФайловыеФункцииВМоделиСервиса/ФайловыеФункцииВМоделиСервиса.mdo
index cb9177093..c3bacbc98 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ФайловыеФункцииВМоделиСервиса/ФайловыеФункцииВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ФайловыеФункцииВМоделиСервиса/ФайловыеФункцииВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruФайловые функции в модели сервиса
- trueDataProcessor.АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанныхScheduledJob.ПланированиеИзвлеченияТекстаВМоделиСервисаCommonModule.ФайловыеФункцииСлужебныйВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/РаботаВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/РаботаВМоделиСервиса.mdo
index 375ffc3f2..3752ba20f 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/РаботаВМоделиСервиса.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/РаботаВМоделиСервиса.mdo
@@ -5,7 +5,6 @@
ruРабота в модели сервиса
- trueАдресныйКлассификаторВМоделиСервисаБазоваяФункциональностьВМоделиСервисаБанкиВМоделиСервиса
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html
index 2d6fb3abb..8eff3d2d1 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html
@@ -1,2 +1,2 @@
-
+
Конфигурация позволяет отправлять и получать сообщения электронной почты. Для настройки параметров учетных записей электронной почты можно воспользоваться командой Учетные записи электронной почты в панели навигации раздела Настройка и администрирование.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo
index b34e5cb9c..ddce2cdea 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo
@@ -5,7 +5,6 @@
ruРабота с почтовыми сообщениями
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html
index 82bbe4958..bbd3e6621 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html
@@ -1,4 +1,4 @@
-
+
Система предоставляет возможность хранения файлов произвольного формата. В отличие от хранения файлов на дисках, файлы хранящиеся непосредственно в системе могут быть связаны с данными информационной базы. Например, в файле прикрепленном к справочнику "Номенклатура" можно хранить подробное описание товара.
Администрирование файлов осуществляется в форме настроек параметров системы раздела Настройка и администрирование. Персональные настройки пользователя для работы с файлами находятся в форме Мои настройки этого же раздела.
Ряд действий в конфигурации выполняется по заданному расписанию с помощью регламентных заданий. Для редактирования состава и расписания регламентных заданий, запуска фоновых заданий по их выполнению, просматра истории выполнения фоновых заданий и анализа ошибок, возникающих в процессе выполнения заданий, можно воспользоваться командой Регламентные и фоновые заданияраздела Настройка и администрирование.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/РегламентныеЗадания.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/РегламентныеЗадания.mdo
index 3d25b94d6..5c57ec61b 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/РегламентныеЗадания.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/РегламентныеЗадания.mdo
@@ -5,7 +5,6 @@
ruРегламентные задания
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html
index 47bbdb68c..2fda8f23e 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html
@@ -1,3 +1,3 @@
-
+
Конфигурация позволяет создавать и редактировать в режиме «1С:Предприятие» дополнительные свойства произвольных документов и справочников. Имеется возможность назначать наборы дополнительных свойств как в целом для всех элементов справочника, так и для части его элементов по определенным критериям.
Администрирование наборов дополнительных свойств осуществляется по команде Наборы дополнительных реквизитов и сведений на панели навигации в разделе Настройка и администрирование.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Свойства.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Свойства.mdo
index f60061613..ea630b6d3 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Свойства.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Свойства.mdo
@@ -5,7 +5,6 @@
ruСвойства
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ТекущиеДела/ТекущиеДела.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ТекущиеДела/ТекущиеДела.mdo
new file mode 100644
index 000000000..077cb965c
--- /dev/null
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ТекущиеДела/ТекущиеДела.mdo
@@ -0,0 +1,15 @@
+
+
+ ТекущиеДела
+
+ ru
+ Текущие дела
+
+ CommonModule.ТекущиеДелаСлужебный
+ DataProcessor.ТекущиеДела
+ StyleItem.ЗаголовокДелаЦвет
+ CommonModule.ТекущиеДелаПереопределяемый
+ CommonModule.ТекущиеДелаСлужебныйПовтИсп
+ Role.ИспользованиеТекущихДел
+ Subsystem.СтандартныеПодсистемы
+
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html
index a3d725f54..18fdda89c 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html
@@ -1,2 +1,2 @@
-
+
Конфигурация позволяет настраивать права доступа к отдельным объектам информационной базы для пользователей и групп пользователей. Для этих целей предназначена команда Группы доступа в панели навигации раздела Настройка и администрирование.
\ No newline at end of file
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo
index e58743437..2cc932743 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo
@@ -5,7 +5,6 @@
ruУправление доступом
- trueru
diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html
index 49f6d5e58..0948cb2c5 100644
--- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html
+++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html
@@ -1,2 +1,2 @@
-
+
Конфигурация предоставляет средства для администрирования итогов и агрегатов регистров информационной базы. Для этих целей следует воспользоваться командой Управление итогами и агрегатамираздела Настройка и администрирование.
Форма предназначена для просмотра основных реквизитов задачи (редактирование реквизитов в форме недоступно). В форме можно посмотреть реквизиты, общие для всех типов задач, такие как, название задачи, номер и дата создания задачи. В группе реквизитов Адресация можно увидеть исполнителя задачи и его роль, также здесь можно увидеть основной и дополнительный объект адресации. В группе реквизитов Бизнес-процесс можно увидеть номер и дату бизнес-процеса, к которому принадлежит задача, а также текущую точку маршрута бизнес-процесса. В группе реквизитов Результат выполнения задачи можно увидеть отметку (флажок) о выполнении, а также дату выполнения задачи (реквизиты этой группы заполнены, если задача выполнена).
Открывается из бизнес-процесса (например, Задания) по команде Задачи панели навигации.
+
Красным цветом обозначаются просроченные задачи. Выполненные задачи становятся неактивными, выделяются серым цветом. Список задач нестартовавшего бизнес-процесса пустой.
+
В списке выводится:
+
- важность, принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выбираются соответствующие значения этого поля.
+
- остановленные бизнес-процессы в этой колонке обозначаются значком . Для того чтобы Остановить или Продолжить бизнес-процесс, воспользуйтесь соответствующими кнопками.
+
Наименование - полное наименование задачи. Рядом проставляется значок Задача.
+
Исполнитель задачи;
+
Срок исполнения - дата и время, к которому Задание должно быть выполнено.
Изменение режима просмотра
+
Включите флажок Показывать выполненные внизу списка, для того чтобы просмотреть все задачи.
+
Просмотр задачи
+
+
Нажмите Изменить, для того чтобы открыть задачу для просмотра или редактирования.
+
+
Также можно использовать двойной щелчок левой кнопкой мыши.
Предназначен для просмотра задач, созданных по объекту программы.
+
Открывается из объекта программы по команде Задачи панели навигации.
+
Красным цветом обозначаются просроченные задачи. Выполненные задачи становятся неактивными, выделяются серым цветом.
+
В списке выводится:
+
- важность, принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выбираются соответствующие значения этого поля.
+
- остановленные бизнес-процессы в этой колонке обозначаются значком . Для того чтобы Остановить или Продолжить бизнес-процесс, воспользуйтесь соответствующими кнопками.
+
Задача - полное наименование задачи. Рядом проставляется значок Задача.
+
Исполнитель задачи;
+
Срок - дата и время, к которому Задание должно быть выполнено.
Просмотр задачи
+
+
Нажмите Изменить, для того чтобы открыть задачу для просмотра или редактирования.
+
+
Также можно использовать двойной щелчок левой кнопкой мыши.
Список Мои задачи является рабочим местом исполнителя задач. В списке находятся задачи адресованные текущему пользователю системы. Командой Сгруппировать по список задач группируется по важности, точке маршрута, автору, предмету задачи. По пришедшей задаче пользователь может открыть форму выполнения задачи, ознакомиться с постановкой задачи, принять ее к исполнению, выполнить ее и отметить как выполненную или перенаправить другому исполнителю. Непринятые к исполнению задачи выделяются в списке жирным шрифтом. Для того чтобы отказаться от исполнения ранее принятой задачи, необходимо воспользоваться командой Отменить принятие к исполнению (в контекстном меню списка задач или в группе команд Все действия).
Предназначен для работы с задачами. В списке находятся задачи, адресованные текущему пользователю программы.
+
Открывается по команде Мои задачи в разделе Бизнес-процессы и задачи.
+
Непринятые к исполнению задачи выделяются жирным шрифтом. Красным цветом выделяются просроченные задачи.
+
В списке выводится:
+
- важность, принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выбираются соответствующие значения этого поля.
+
Номер - присваивается программой автоматически. Выполненные задачи помечаются значком .
+
Задача - полное наименование задачи.
+
Дата начала выполнения задачи, проставляется исполнителем. Если не заполнена, автоматически проставляется текущая дата. Заполнить поле можно, если в разделе Администрирование - Органайзер установлен флажок Дата начала задач.
+
Срок - дата и время, к которому Задание должно быть выполнено. Время в сроках исполнения и других датах появляется, если в разделе Администрирование - Органайзер установлен флажок Дата и время в сроках задач.
+
Записана - дата и время ввода задачи.
Группировка
+
Если задач много, то для удобства работы с ними список можно с помощью соответствующей кнопки Сгруппировать по:
+
сроку;
+
важности,
+
точке маршрута,
+
автору,
+
предмету задачи.
Для отмены группировки нажмите Сгруппировать по - Без группировки.
Отбор по периоду
+
Выполните команду контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Установить интервал дат.
Просмотр задачи
+
Для просмотра задачи дважды щелкните по нужной строке левой кнопкой мыши. Также можно воспользоваться командой Открыть задачу контекстного меню по правой кнопке мыши или меню Еще (Все действия).
Просмотр предмета
+
Задачи могут быть созданы на основании объектов программы. Для того чтобы просмотреть предмет задачи, выполните команду Открыть предмет задачи контекстного меню по правой кнопки мыши или меню Еще (Все действия).
Просмотр бизнес-процесса
+
Каждая задача является этапом какого-либо бизнес-процесса. Для того чтобы просмотреть информацию о бизнес-процессе в целом, выполните команду контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Открыть бизнес-процесс.
Принятие к исполнению
+
Непринятые к исполнению задачи выделяются в списке жирным шрифтом.
+
Воспользуйтесь соответствующей кнопкой, для того чтобы принять задачу К исполнению. В случае ролевой адресации принятая к исполнению задача исчезает из списков задач других исполнителей, которые назначены на ту же роль.
+
Для того чтобы отказаться от исполнения ранее принятой задачи, необходимо воспользоваться командой контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Отменить принятие к исполнению.
Выполнение
+
+
Воспользуйтесь командой контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Выполнено, для того чтобы отметить задачу как выполненную.
Список Мои задачи является рабочим местом исполнителя задач. В списке находятся задачи адресованные текущему пользователю системы. Командой Сгруппировать по список задач группируется по важности, точке маршрута, автору, предмету задачи. По пришедшей задаче пользователь может открыть форму выполнения задачи, ознакомиться с постановкой задачи, принять ее к исполнению, выполнить ее и отметить как выполненную или перенаправить другому исполнителю. Непринятые к исполнению задачи выделяются в списке жирным шрифтом. Для того чтобы отказаться от исполнения ранее принятой задачи, необходимо воспользоваться командой Отменить принятие к исполнению (в контекстном меню списка задач или в группе команд Все действия).
Список Мои задачи является рабочим местом исполнителя задач. Находится на рабочем столе программы. В списке находятся задачи к выполнению, адресованные текущему пользователю программы.
+
Непринятые к исполнению задачи выделяются в списке жирным шрифтом. Просроченные задачи выделяются красным цветом.
Записана/Срок - дата и время ввода задачи/дата и время, к которому Задание должно быть выполнено. Время в сроках исполнения и других датах появляется, если в разделе Администрирование - Органайзер установлен флажок Дата и время в сроках задач.
+
Дата начала выполнения задачи, проставляется исполнителем. Если не заполнена, автоматически проставляется текущая дата. Заполнить поле можно, если в разделе Администрирование - Органайзер установлен флажок Дата начала задач.
Просмотр задачи
+
Для просмотра задачи дважды щелкните по нужной строке левой кнопкой мыши.
+
Также можно выделить задачу, нажать кнопку Открыть.
+
Также можно воспользоваться командой Открыть задачу контекстного меню по правой кнопке мыши.
Просмотр предмета
+
Задачу можно создать на основании объектов программы. Для того чтобы просмотреть предмет задачи, на основании которого она создана, выполните команду Открыть предмет задачи контекстного меню по правой кнопки мыши.
Просмотр бизнес-процесса
+
Каждая задача является этапом какого-либо бизнес-процесса, например, Задания. Для того чтобы просмотреть информацию о бизнес-процессе в целом, выполните команду контекстного меню по правой кнопке мыши Открыть бизнес-процесс.
Группировка
+
Если задач много, для удобства работы с ними список можно с помощью соответствующей кнопки Сгруппировать по:
+
Сроку;
+
Важности;
+
Точке маршрута;
+
Автору;
+
Предмету задачи.
Для отмены группировки нажмите Сгруппировать по - Без группировки.
Принятие к исполнению
+
Непринятые к исполнению задачи выделяются в списке жирным шрифтом.
+
Воспользуйтесь соответствующей кнопкой, для того чтобы принять задачу К исполнению. В случае ролевой адресации принятая к исполнению задача исчезает из списков задач других исполнителей, которые назначены на ту же роль.
+
Для того чтобы отказаться от исполнения ранее принятой задачи, необходимо воспользоваться командой контекстного меню по правой кнопке мыши Отменить принятие к исполнению.
Выполнение
+
+
Нажмите кнопку , для того чтобы отметить задачу как выполненную.
+
+
Также можно воспользоваться командой контекстного меню по правой кнопке мыши Отметить задачу как выполненную.
+
+
Выполненные задачи исчезают из списка.
Отправка другому исполнителю
+
Нажмите Перенаправить, заполните данные о другом исполнителе.
Задача или группа задач могут быть перенаправлены другому исполнителю с использованием персональной или ролевой адресации. При персональной адресации исполнитель указывается явно из списка пользователей системы. А при ролевой адресации - необходимо указать роль и при необходимости, основной и дополнительный объекты адресации.
Предназначен для работы с задачами. В списке находятся все задачи.
+
Открывается по команде Все задачи в разделе Бизнес-процессы и задачи.
+
Непринятые к исполнению задачи выделяются жирным шрифтом. Красным цветом выделяются просроченные задачи.
+
В списке выводится:
+
- важность, принимает значения Обычная (по умолчанию), Низкая, Высокая. Для того чтобы выделить бизнес-процесс из списка, или наоборот, указать, что выполнение этого бизнес-процесса может быть отложено, выбираются соответствующие значения этого поля.
+
Задача - полное наименование задачи. Выполненные задачи помечаются значком .
+
Номер - присваивается программой автоматически.
+
Исполнитель задачи;
+
- остановленные бизнес-процессы в этой колонке обозначаются значком .
+
Автор задачи;
+
Записана - дата и время ввода задачи. Время в сроках исполнения и других датах появляется, если в разделе Администрирование - Органайзер установлен флажок Дата и время в сроках задач.
+
Срок - дата и время, к которому задача должна быть выполнена.
+
Выполнена - дата и время фактического выполнения задачи.
Показывать
+
Для удобства работы с задачами с помощью поля Показывать в список можно выводить:
+
Все задачи;
+
Выполненные;
+
Не выполненные.
Отборы
+
Задачи можно отобрать:
+
по Автору - выберите автора из списка Пользователи;
+
по Исполнителю - выберите в качестве исполнителя пользователя из списка;
+
+
по периоду - для этого выполните команду контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Установить интервал дат.
Просмотр задачи
+
Для просмотра задачи дважды щелкните по нужной строке левой кнопкой мыши.
+
Также можно воспользоваться командой Изменить контекстного меню по правой кнопке мыши или меню Еще (Все действия).
Просмотр предмета
+
Задачи могут быть созданы на основании объектов программы. Для того чтобы просмотреть предмет задачи, выполните команду Открыть предмет задачи контекстного меню по правой кнопки мыши или меню Еще (Все действия).
Просмотр бизнес-процесса
+
Каждая задача является этапом какого-либо бизнес-процесса. Для того чтобы просмотреть информацию о бизнес-процессе в целом, выполните команду контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Открыть бизнес-процесс.
Принятие к исполнению
+
Непринятые к исполнению задачи выделяются в списке жирным шрифтом.
+
Воспользуйтесь соответствующей кнопкой, для того чтобы принять задачу К исполнению. В случае ролевой адресации принятая к исполнению задача исчезает из списков задач других исполнителей, которые назначены на ту же роль.
+
Для того чтобы отказаться от исполнения ранее принятой задачи, необходимо воспользоваться командой контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Отменить принятие к исполнению.
Выполнение
+
+
Воспользуйтесь командой контекстного меню по правой кнопке мыши или меню Еще (Все действия) - Выполнено, для того чтобы отметить задачу как выполненную.
Также можно Создать на основании этой задачи новый бизнес-процесс, например, Задание (при наличии соответствующих прав). Для того чтобы можно было создавать Подчиненные бизнес-процессы и задачи, должен быть установлен соответствующий флажок в разделе Администрирование - Органайзер.
Напоминание
+
Для того чтобы не забыть выполнить задачу, можно ввести Напоминание, текст которого будет выведен в указанное время.
+
Нажмите , выберите действие, например, Напомнить, заполните необходимые поля.
\ No newline at end of file
diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl
index 85f9ab2c2..38cf41e68 100644
--- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl
+++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl
@@ -49,8 +49,7 @@
// Установка отбора динамического списка.
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно, , Ложь,
- РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
-
+ РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецПроцедуры
&НаКлиенте
@@ -129,6 +128,32 @@
КонецПроцедуры
+&НаКлиенте
+Процедура ОткрытьБизнесПроцесс(Команда)
+ Если ТипЗнч(Элементы.Список.ТекущаяСтрока) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"));
+ Возврат;
+ КонецЕсли;
+ Если Элементы.Список.ТекущиеДанные.БизнесПроцесс = Неопределено Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'У выбранной задачи не указан бизнес-процесс.'"));
+ Возврат;
+ КонецЕсли;
+ ПоказатьЗначение(, Элементы.Список.ТекущиеДанные.БизнесПроцесс);
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ОткрытьПредметЗадачи(Команда)
+ Если ТипЗнч(Элементы.Список.ТекущаяСтрока) <> Тип("ЗадачаСсылка.ЗадачаИсполнителя") Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"));
+ Возврат;
+ КонецЕсли;
+ Если Элементы.Список.ТекущиеДанные.Предмет = Неопределено Тогда
+ ПоказатьПредупреждение(,НСтр("ru = 'У выбранной задачи не указан предмет.'"));
+ Возврат;
+ КонецЕсли;
+ ПоказатьЗначение(, Элементы.Список.ТекущиеДанные.Предмет);
+КонецПроцедуры
+
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
@@ -159,33 +184,25 @@
&НаСервереБезКонтекста
Процедура УстановитьОтборСписка(Список, ПараметрыОтбора)
- Если ПараметрыОтбора["ПоАвтору"].Пустая() Тогда
- ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Автор");
- Иначе
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- Список, "Автор", ПараметрыОтбора["ПоАвтору"]);
- КонецЕсли;
+ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
+ Список, "Автор", ПараметрыОтбора["ПоАвтору"],,, ПараметрыОтбора["ПоАвтору"] <> Неопределено И Не ПараметрыОтбора["ПоАвтору"].Пустая());
- Если ПараметрыОтбора["ПоИсполнителю"].Пустая() Тогда
+ Если ПараметрыОтбора["ПоИсполнителю"] = Неопределено Или ПараметрыОтбора["ПоИсполнителю"].Пустая() Тогда
Список.Параметры.УстановитьЗначениеПараметра("Исполнитель", NULL);
Иначе
Список.Параметры.УстановитьЗначениеПараметра("Исполнитель", ПараметрыОтбора["ПоИсполнителю"]);
КонецЕсли;
- ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Выполнена");
- Если ПараметрыОтбора["ПоказыватьЗадачи"] <> 0 Тогда
-
- Если ПараметрыОтбора["ПоказыватьЗадачи"] = 1 Тогда
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- Список, "Выполнена", Истина);
- КонецЕсли;
-
- Если ПараметрыОтбора["ПоказыватьЗадачи"] = 2 Тогда
- ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
- Список, "Выполнена", Ложь);
- КонецЕсли;
-
- КонецЕсли;
+ Если ПараметрыОтбора["ПоказыватьЗадачи"] = 0 Тогда
+ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
+ Список, "Выполнена", Истина,,,Ложь);
+ ИначеЕсли ПараметрыОтбора["ПоказыватьЗадачи"] = 1 Тогда
+ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
+ Список, "Выполнена", Истина,,,Истина);
+ ИначеЕсли ПараметрыОтбора["ПоказыватьЗадачи"] = 2 Тогда
+ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
+ Список, "Выполнена", Ложь,,,Истина);
+ КонецЕсли;
КонецПроцедуры
diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html b/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html
index c890464af..e36c4ac85 100644
--- a/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html
+++ b/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html
@@ -1,7 +1,17 @@
-
-
Задачи являются средством коммуникации между пользователями, а также используются для автоматизации бизнес-процессов.
-
Для создания новой задачи можно воспользоваться одним из бизнес-процессов (например, Задание). Для создания задач на основании других объектов системы используйте подменю Создать на основании. При этом объект-основание станет предметом задачи.
-
Настройка уведомлений о задачах
-
Для напоминания исполнителям о новых задачах необходимо разрешить использование регламентного задания Уведомление исполнителей о новых задачах, которое с заданной периодичностью рассылает письма с уведомлениями о новых задачах по электронной почте. Письма отправляются по адресу, указанному в контактной информации элемента справочника Пользователи. Настройка регламентных заданий выполняется в окне Регламентные и фоновые задания.
Для создания новой задачи можно воспользоваться одним из бизнес-процессов (например, Задание).
+
Работа с задачами
+
Для работы с задачами предусмотрены различные списки:
+
Мои задачи - рабочее место исполнителя задач, располагается на рабочем столе;
+
Также можно открыть список Мои задачи по соответствующей команде в разделе Бизнес-процессы и задачи;
+
По команде Задачи на панели навигации бизнес-процесса можно открыть список задач, которые являются частью этого бизнес-процесса.
+
По команде Задачи на панели навигации документов программы можно просмотреть задачи бизнес-процессов, которые созданы на основании этих документов.
+
Все задачи - список для работы с задачами всех исполнителей, открывается по соответствующей команде в разделе Бизнес-процессы и задачи.
Настройка уведомлений о задачах
+
Для напоминания исполнителям о новых задачах необходимо разрешить использование регламентного задания Уведомление исполнителей о новых задачах, которое с заданной периодичностью рассылает письма с уведомлениями о новых задачах по электронной почте. Письма отправляются по адресу, указанному в контактной информации пользователя программы. Настройка регламентных заданий выполняется в окне Регламентные и фоновые задания.
Мониторинг задач
+
Программа предоставляет набор отчетов, с помощью которых можно осуществлять мониторинг задач: