From a3223f600f63f0299877779c824fa4b33a6e5211 Mon Sep 17 00:00:00 2001 From: Denis Ushakov <59319861+denisushakov@users.noreply.github.com> Date: Fri, 18 Oct 2024 14:58:24 +0300 Subject: [PATCH] Feature/predefined id unique check 92 (#118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Рефакторинг и доработка подсистемы предопределенных значений --- ...21\207\320\265\320\275\320\270\321\217.md" | 24 +- .../Ext/ObjectModule.bsl" | 14 + .../Ext/Form.xml" | 3 + .../Ext/Form/Module.bsl" | 16 +- .../Ext/ObjectModule.bsl" | 29 + .../Ext/Form.xml" | 3 + .../Ext/Form/Module.bsl" | 16 +- .../Ext/ObjectModule.bsl" | 14 + .../Ext/Form.xml" | 3 + .../Ext/Form/Module.bsl" | 16 +- .../Ext/ObjectModule.bsl" | 30 + .../Ext/Form.xml" | 3 + .../Ext/Form/Module.bsl" | 16 +- .../Ext/ObjectModule.bsl" | 31 +- .../Ext/Form.xml" | 1 + .../Ext/Form/Module.bsl" | 23 +- ...0\265\320\275\321\202\320\276\320\262.xml" | 24 + .../Ext/Form.xml" | 302 ++++++++++ .../Ext/Form/Module.bsl" | 202 +++++++ .../Ext/Module.bsl" | 26 +- .../Ext/Module.bsl" | 143 +++++ .../Ext/Module.bsl" | 30 + .../Ext/Module.bsl" | 517 +++++++++++++----- ...1\200\320\262\320\265\321\200\320\260.xml" | 23 + .../Ext/Module.bsl" | 43 ++ ...0\273\320\270\320\265\320\275\321\202.xml" | 27 + .../Ext/Module.bsl" | 49 ++ .../Ext/Module.bsl" | 366 +++++++++---- ...0\262\321\202\320\230\321\201\320\277.xml" | 23 + .../Ext/Module.bsl" | 93 ++++ .../Ext/Module.bsl" | 54 +- src/cf/Configuration.xml | 12 +- ...1\217\320\265\320\274\321\213\320\271.xml" | 28 + ...0\265\320\275\321\202\320\276\320\262.xml" | 198 +++++++ .../Ext/ManagerModule.bsl" | 131 +++++ ...0\265\320\275\321\202\320\276\320\262.xml" | 15 + .../Ext/Rights.xml" | 25 + ...0\265\320\275\321\202\320\276\320\262.xml" | 15 + .../Ext/Rights.xml" | 17 + ...1\207\320\265\320\275\320\270\321\217.xml" | 2 + 40 files changed, 2298 insertions(+), 309 deletions(-) create mode 100644 "src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" create mode 100644 "src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" create mode 100644 "src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" create mode 100644 "src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form.xml" create mode 100644 "src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" create mode 100644 "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.xml" create mode 100644 "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" create mode 100644 "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" create mode 100644 "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" create mode 100644 "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" create mode 100644 "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" create mode 100644 "src/cf/DefinedTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\321\201\320\265\320\241\321\201\321\213\320\273\320\272\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271.xml" create mode 100644 "src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" create mode 100644 "src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" create mode 100644 "src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" create mode 100644 "src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" create mode 100644 "src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" create mode 100644 "src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" diff --git "a/docs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.md" "b/docs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.md" index c775e5d6..06d33871 100644 --- "a/docs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.md" +++ "b/docs/\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.md" @@ -3,7 +3,21 @@ ## Описание подсистемы По стандартам разработки поиск ссылочных объектов в программном коде по наименованию, коду, гуиду и т.д. не рекомендуется. Для возможности получения ссылок из программного кода предлагается использовать элементы плана видов характеристик. Чтобы избежать необходимости реструктуризации при добавлении новых элементов в ПВХ, формирование иерархии и элементов делается программно и обновляется в пользовательском режиме. Получение элементов стандартизируется через общий модуль с возможностью кэширования. -При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы. +При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы. + +## Первоначальное заполнение + +Для того чтобы автоматизировать процесс первоначального заполнения предопределенных элементов, необходимо модифицировать/добавить в расширение общий модуль **ПодсистемыКонфигурацииПереопределяемый**. +В процедуре ``ПриДобавленииПодсистем`` прописать вызов процедуры библиотеки ``пбп_ОбновлениеИнформационнойБазыПБП.ПриДобавленииПодсистем``. Затем выполнить первый запуск - будет выполнен обработчик первоначального заполнения предопределенных элементов. + +```BSL +&После("ПриДобавленииПодсистем") +Процедура пбп_ПриДобавленииПодсистем(МодулиПодсистем) + + пбп_ОбновлениеИнформационнойБазыПБП.ПриДобавленииПодсистем(МодулиПодсистем); + +КонецПроцедуры +``` ## Добавление новых элементов @@ -14,7 +28,7 @@ Пример добавления нового элемента в модуле пбп_ПредопределенныеЗначенияПереопределяемый: -```1C (BSL) +```BSL Функция ПредопределенныеЗначения() Экспорт Результат = ТаблицаПредопределенных(); @@ -36,7 +50,7 @@ Пример добавления новой группы в модуле пбп_ПредопределенныеЗначенияПереопределяемый: -```1C (BSL) +```BSL Функция ПредопределенныеЗначения() Экспорт Результат = ТаблицаПредопределенных(); @@ -84,7 +98,7 @@ Пример получения множественного результата: -```1C (BSL) +```BSL Функция ПолучитьДанныеАвторизации() ДанныеАвторизации = Новый Структура("Логин, Пароль"); @@ -103,7 +117,7 @@ Пример получения единичного результата: -```1C (BSL) +```BSL Функция ЗаписыватьДанныеСтандартнымСпособом(ПроверяемаяДата) Результат = пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение("ДатаНачалаЗаписиВРегистры", Истина); diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" index ab1160a7..1a5b8984 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" @@ -62,6 +62,20 @@ КонецЕсли; КонецЕсли; + ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); + КонецЕсли; + КонецПроцедуры #КонецОбласти // ОбработчикиСобытий diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" index abfd09cc..7685265b 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" @@ -12,6 +12,9 @@ + + ОбработкаОповещения + diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" index 635a0021..0eb003ab 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" @@ -20,19 +20,23 @@ #Область ОбработчикиСобытийФормы +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы -&НаСервереБезКонтекста -Процедура ЗаполнитьПредопределенныеНаСервере() - пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ИнтеграционныеПотоки); -КонецПроцедуры - &НаКлиенте Процедура ЗаполнитьПредопределенные(Команда) - ЗаполнитьПредопределенныеНаСервере(); + пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект); Элементы.Список.Обновить(); diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" new file mode 100644 index 00000000..2b0ce9f0 --- /dev/null +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" @@ -0,0 +1,29 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" index d5922042..8f3004a9 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" @@ -12,6 +12,9 @@ </Button> </ChildItems> </AutoCommandBar> + <Events> + <Event name="NotificationProcessing">ОбработкаОповещения</Event> + </Events> <ChildItems> <UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1"> <Title> diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" index d6b22674..0eb003ab 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" @@ -20,19 +20,23 @@ #Область ОбработчикиСобытийФормы +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы -&НаСервереБезКонтекста -Процедура ЗаполнитьПредопределенныеНаСервере() - пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ИнтегрируемыеСистемы); -КонецПроцедуры - &НаКлиенте Процедура ЗаполнитьПредопределенные(Команда) - ЗаполнитьПредопределенныеНаСервере(); + пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект); Элементы.Список.Обновить(); diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" index 552e4645..3fc960d5 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" @@ -114,6 +114,20 @@ ИмяОбъекта = Неопределено; КонецЕсли; + ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); + КонецЕсли; + КонецПроцедуры #КонецОбласти // ОбработчикиСобытий diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" index 286a0c75..b7cc2642 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" @@ -12,6 +12,9 @@ </Button> </ChildItems> </AutoCommandBar> + <Events> + <Event name="NotificationProcessing">ОбработкаОповещения</Event> + </Events> <ChildItems> <UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1"> <Title> diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" index 5564a78f..0eb003ab 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" @@ -20,19 +20,23 @@ #Область ОбработчикиСобытийФормы +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы -&НаСервереБезКонтекста -Процедура ЗаполнитьПредопределенныеНаСервере() - пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_НастройкиИнтеграции); -КонецПроцедуры - &НаКлиенте Процедура ЗаполнитьПредопределенные(Команда) - ЗаполнитьПредопределенныеНаСервере(); + пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект); Элементы.Список.Обновить(); diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" new file mode 100644 index 00000000..009558eb --- /dev/null +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" @@ -0,0 +1,30 @@ + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" index b9b6efd1..16f5bfc7 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" @@ -9,6 +9,9 @@ </Button> </ChildItems> </AutoCommandBar> + <Events> + <Event name="NotificationProcessing">ОбработкаОповещения</Event> + </Events> <ChildItems> <UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1"> <Title> diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" index 6fbacddd..0eb003ab 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" @@ -20,19 +20,23 @@ #Область ОбработчикиСобытийФормы +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы -&НаСервереБезКонтекста -Процедура ЗаполнитьПредопределенныеНаСервере() - пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ТипСоответствияОбъектовИБ); -КонецПроцедуры - &НаКлиенте Процедура ЗаполнитьПредопределенные(Команда) - ЗаполнитьПредопределенныеНаСервере(); + пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект); Элементы.Список.Обновить(); diff --git "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" index 5f282702..009558eb 100644 --- "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" +++ "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" @@ -1 +1,30 @@ - \ No newline at end of file + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); + +КонецПроцедуры + +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" index cd189ca9..51d4e0e7 100644 --- "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" +++ "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form.xml" @@ -18,6 +18,7 @@ </ChildItems> </AutoCommandBar> <Events> + <Event name="NotificationProcessing">ОбработкаОповещения</Event> <Event name="OnCreateAtServer">ПриСозданииНаСервере</Event> </Events> <ChildItems> diff --git "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" index 85125840..32beb2da 100644 --- "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" @@ -8,27 +8,26 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда + Элементы.Список.Обновить(); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы -&НаСервереБезКонтекста -Процедура ЗаполнитьПредопределенныеНаСервере() - пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения( - ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения); -КонецПроцедуры - &НаКлиенте Процедура ЗаполнитьПредопределенные(Команда) - ЗаполнитьПредопределенныеНаСервере(); + пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект); Элементы.Список.Обновить(); -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции +КонецПроцедуры #КонецОбласти diff --git "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" new file mode 100644 index 00000000..ab9a7287 --- /dev/null +++ "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16"> + <CommonForm uuid="166e97da-eea9-43e5-a47a-ee07fab3fd9c"> + <Properties> + <Name>пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов</Name> + <Synonym> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Разрешение конфликтов предопределенных элементов</v8:content> + </v8:item> + </Synonym> + <Comment/> + <FormType>Managed</FormType> + <IncludeHelpInContents>true</IncludeHelpInContents> + <UsePurposes> + <v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value> + <v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value> + </UsePurposes> + <UseStandardCommands>false</UseStandardCommands> + <ExtendedPresentation/> + <Explanation/> + </Properties> + </CommonForm> +</MetaDataObject> \ No newline at end of file diff --git "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form.xml" "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form.xml" new file mode 100644 index 00000000..f968c6cc --- /dev/null +++ "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form.xml" @@ -0,0 +1,302 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16"> + <WindowOpeningMode>LockOwnerWindow</WindowOpeningMode> + <VerticalScroll>useIfNecessary</VerticalScroll> + <AutoCommandBar name="ФормаКоманднаяПанель" id="-1"> + <ChildItems> + <Button name="ФормаОбработатьЭлементы" id="24"> + <Type>CommandBarButton</Type> + <DefaultButton>true</DefaultButton> + <CommandName>Form.Command.ОбработатьЭлементы</CommandName> + <ToolTipRepresentation>Button</ToolTipRepresentation> + <ExtendedTooltip name="ФормаОбработатьЭлементыРасширеннаяПодсказка" id="25"/> + </Button> + </ChildItems> + </AutoCommandBar> + <Events> + <Event name="OnCreateAtServer">ПриСозданииНаСервере</Event> + <Event name="OnClose">ПриЗакрытии</Event> + </Events> + <ChildItems> + <LabelDecoration name="Информация" id="33"> + <TextColor>style:TableFooterTextColor</TextColor> + <Title formatted="false"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Справочная информация</v8:content> + </v8:item> + + + + ru + Для элемента установлен флаг обновления: Элемент будет обновлен данными из программного кода, а также обновится хеш элемента в регистре. + +Для элемента не установлен флаг обновления: Элемент не будет обновлен. В записи регистра будет установлен флаг "Ручное изменение", указывающий на то, что элемент был изменен вручную и не подлежит автоматическому обновлению. + + + + Button + + + + + List + false + false + true + true + true + ТаблицаКонфликтов + + + + false + + + + + + + + + ТаблицаКонфликтов + SearchStringRepresentation + + + + + + + ТаблицаКонфликтов + ViewStatusRepresentation + + + + + + + ТаблицаКонфликтов + SearchControl + + + + + + + ТаблицаКонфликтов.ЗаменитьЭлементомИзКода + None + + + ru + Обновить элемент данными из кода + + + EnterOnInput + + StdPicture.Change + true + + Auto + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Элемент в базе</v8:content> + </v8:item> + + + + ru + Группа элемент в базе + + + Horizontal + true + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Элемент в коде</v8:content> + </v8:item> + + + + ru + Группа элемент в коде + + + Horizontal + true + + + +
+
+ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Таблица конфликтов</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Заменить элементом из кода</v8:content> + </v8:item> + + + xs:boolean + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Обработать элементы</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Адрес таблицы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя формы владельца</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Префикс база</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Префикс код</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Обработать элементы</v8:content> + </v8:item> + + + + ru + Обработать элементы + + + ОбработатьЭлементы + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отметить все</v8:content> + </v8:item> + + + + ru + Отметить все + + + ОтметитьВсе + DontUse + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Снять отметку</v8:content> + </v8:item> + + + + ru + Снять отметку + + + СнятьОтметку + DontUse + + + \ No newline at end of file diff --git "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" new file mode 100644 index 00000000..8742f88b --- /dev/null +++ "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" @@ -0,0 +1,202 @@ + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ПрефиксБаза = "база_"; + ПрефиксКод = "код_"; + + Параметры.Свойство("ИмяФормыВладельца", ИмяФормыВладельца); + + Если Параметры.Свойство("АдресТаблицы", АдресТаблицы) + И ЗначениеЗаполнено(АдресТаблицы) Тогда + ОбработатьКонфликтныеЭлементы(АдресТаблицы); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + Если ОбработатьЭлементы Тогда + ОбработатьПредопределенныеЭлементы(); + Оповестить("ОбновитьСписокПредопределенных"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОбработатьЭлементы(Команда) + + ОбработатьЭлементы = Истина; + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтметитьВсе(Команда) + ЗаполнитьОтметки(Истина); +КонецПроцедуры + +&НаКлиенте +Процедура СнятьОтметку(Команда) + ЗаполнитьОтметки(Ложь); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбработатьКонфликтныеЭлементы(АдресТаблицы) + + ИсходнаяТаблица = ПолучитьИзВременногоХранилища(АдресТаблицы); + + Поля = СоздатьПоляТаблицыКонфликтов(ИсходнаяТаблица); + ЗаполнитьТаблицуКонфликтов(ИсходнаяТаблица, Поля); + +КонецПроцедуры + +&НаСервере +Функция СоздатьПоляТаблицыКонфликтов(Таблица) + + Поля = Новый СписокЗначений; + + ИсключаемыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.ИсключаемыеПоляДляРасчетаХешаЭлемент(); + + ДобавляемыеРеквизиты = Новый Структура; + Для Каждого Колонка Из Таблица.Колонки Цикл + Если ИсключаемыеПоля.Свойство(Колонка.Имя) + Или СтрНачинаетсяС(Колонка.Имя, "Служеб_") Тогда + Продолжить; + КонецЕсли; + ДобавляемыеРеквизиты.Вставить(ПрефиксКод + Колонка.Имя, Колонка.ТипЗначения); + ДобавляемыеРеквизиты.Вставить(ПрефиксБаза + Колонка.Имя, Колонка.ТипЗначения); + Поля.Добавить(Колонка.Имя, Колонка.Имя); + КонецЦикла; + пбп_РаботаСФормами.СоздатьРеквизитыТаблицы(ЭтотОбъект, "ТаблицаКонфликтов", ДобавляемыеРеквизиты); + + ШиринаКолонки = 5; + Синонимы = Новый Структура; + Для Каждого Реквизит Из ДобавляемыеРеквизиты Цикл + Родитель = Элементы.ГруппаЭлементВКоде; + Имя = СтрЗаменить(Реквизит.Ключ, ПрефиксКод, ""); + Если СтрНачинаетсяС(Реквизит.Ключ, ПрефиксБаза) Тогда + Родитель = Элементы.ГруппаЭлементВБазе; + Имя = СтрЗаменить(Имя, ПрефиксБаза, ""); + КонецЕсли; + + Синоним = ""; + Если Не Синонимы.Свойство(Имя, Синоним) Тогда + Синоним = пбп_СтроковыеФункцииКлиентСервер.СинонимСтроки(Имя); + Синонимы.Вставить(Имя, Синоним); + КонецЕсли; + + Свойства = Новый Структура; + Свойства.Вставить("Ширина", ШиринаКолонки); + Свойства.Вставить("ТолькоПросмотр", Истина); + пбп_РаботаСФормами.СоздатьПоле(ЭтотОбъект, Реквизит.Ключ, Родитель, Синоним, 1, + "ТаблицаКонфликтов." + Реквизит.Ключ, Свойства); + КонецЦикла; + + Возврат Поля; + +КонецФункции + +&НаСервере +Процедура ЗаполнитьТаблицуКонфликтов(Таблица, Поля) + + Если ПустаяСтрока(ИмяФормыВладельца) Тогда + Возврат; + КонецЕсли; + + МенеджерОбъекта = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца); + + СписокПредопределенных = Таблица.ВыгрузитьКолонку("Служеб_ПредопределенныйЭлемент"); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка + |ИЗ + | %1 КАК пбп_ПредопределенныеЗначения + |ГДЕ + | пбп_ПредопределенныеЗначения.Ссылка В(&СписокПредопределенных)"; + + ПолноеИмя = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)).ПолноеИмя(); + Запрос.Текст = СтрШаблон(Запрос.Текст, ПолноеИмя); + Запрос.УстановитьПараметр("СписокПредопределенных", СписокПредопределенных); + + Запрос = пбп_СхемыЗапросов.ДобавитьПоляВыборкиВЗапрос(Запрос, Поля); + + Выборка = Запрос.Выполнить().Выбрать(); + + ОбщиеПоля = СтрСоединить(Поля.ВыгрузитьЗначения(), ","); + БазоваяСтруктура = Новый Структура(ОбщиеПоля); + Для Каждого Строка Из Таблица Цикл + нСтрока = ТаблицаКонфликтов.Добавить(); + + ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Строка); + Для Каждого КлючЗначение Из БазоваяСтруктура Цикл + нСтрока[ПрефиксКод + КлючЗначение.Ключ] = КлючЗначение.Значение; + КонецЦикла; + + Выборка.НайтиСледующий(Строка.Служеб_ПредопределенныйЭлемент, "Ссылка"); + ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Выборка); + Для Каждого КлючЗначение Из БазоваяСтруктура Цикл + нСтрока[ПрефиксБаза + КлючЗначение.Ключ] = КлючЗначение.Значение; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ОбработатьПредопределенныеЭлементы() + + Если ПустаяСтрока(ИмяФормыВладельца) Тогда + Возврат; + КонецЕсли; + + ИдентификаторНастройки = "ИдентификаторНастройки"; + Таблица = ПолучитьИзВременногоХранилища(АдресТаблицы); + + Если Не ЗначениеЗаполнено(Таблица) Тогда + Возврат; + КонецЕсли; + + УдалитьИзВременногоХранилища(АдресТаблицы); + Таблица.Индексы.Добавить(ИдентификаторНастройки); + Для Каждого Строка Из ТаблицаКонфликтов Цикл + Стр = Таблица.Найти(Строка[ПрефиксКод + ИдентификаторНастройки], ИдентификаторНастройки); + Если Строка.ЗаменитьЭлементомИзКода Тогда + Стр.Служеб_ОбновитьЭлемент = Истина; + Иначе + Стр.Служеб_УстановитьФлагРучноеИзменение = Истина; + КонецЕсли; + КонецЦикла; + + Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца); + ДопПараметры = пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов( + Таблица, Менеджер); + пбп_ПредопределенныеЗначения.СоздатьОбновитьПредопределенныеЗначения(Таблица, ДопПараметры); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаполнитьОтметки(ЗначениеОтметки) + Модифицированность = Истина; + Для Каждого Строка Из ТаблицаКонфликтов Цикл + Строка.ЗаменитьЭлементомИзКода = ЗначениеОтметки; + КонецЦикла; +КонецПроцедуры + +#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" index 5359b57d..e0e26664 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" @@ -74,7 +74,7 @@ Процедура ПриДобавленииПодсистемы(Описание) Экспорт Описание.Имя = "ПроектнаяБиблиотекаПодсистем"; - Описание.Версия = "1.0.2.7"; + Описание.Версия = "1.0.3.8"; // Требуется библиотека стандартных подсистем. Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы"); @@ -85,7 +85,12 @@ // Обработчики обновления информационной базы. Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт - + + Обработчик = Обработчики.Добавить(); + Обработчик.Процедура = "пбп_ОбновлениеИнформационнойБазыПБП.НачальноеЗаполнениеПредопределенныхЭлементов"; + Обработчик.НачальноеЗаполнение = Истина; + Обработчик.РежимВыполнения = "Монопольно"; + КонецПроцедуры Процедура ПередОбновлениемИнформационнойБазы() Экспорт @@ -116,3 +121,20 @@ #КонецОбласти #КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура НачальноеЗаполнениеПредопределенныхЭлементов() Экспорт + + Типы = Метаданные.ОпределяемыеТипы.пбп_ПредопределенныеВсеСсылкиПереопределяемый.Тип.Типы(); + + Для Каждого Тип Из Типы Цикл + ПолноеИмя = Метаданные.НайтиПоТипу(Тип).ПолноеИмя(); + Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); + + пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Менеджер); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index 1b0b65c4..eceabda2 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -932,6 +932,51 @@ КонецПроцедуры +// Аналог метода БСП. Вычисляет переданное выражение, предварительно устанавливая безопасный режим выполнения кода +// и безопасный режим разделения данных для всех разделителей, присутствующих в составе конфигурации. +// +// Параметры: +// Выражение - Строка - выражение на встроенном языке 1С:Предприятия. +// Параметры - Произвольный - контекст, который требуется для вычисления выражения. +// В тексте выражения обращение к контексту должно происходить по имени "Параметры". +// Например, выражение "Параметры.Значение1 = Параметры.Значение2" обращается к значениям +// "Значение1" и "Значение2" переданные в Параметры, как свойства. +// +// Возвращаемое значение: +// Произвольный - результат вычисления выражения. +// +// Пример: +// +// // Пример 1 +// Параметры = Новый Структура; +// Параметры.Вставить("Значение1", 1); +// Параметры.Вставить("Значение2", 10); +// Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("Параметры.Значение1 = Параметры.Значение2", Параметры); +// +// // Пример 2 +// Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("СтандартныеПодсистемыСервер.ВерсияБиблиотеки()"); +// +Функция ВычислитьВБезопасномРежиме(Знач Выражение, Знач Параметры = Неопределено) Экспорт + + УстановитьБезопасныйРежим(Истина); + + Если ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + МодульРаботаВМоделиСервиса = ОбщийМодуль("РаботаВМоделиСервиса"); + МассивРазделителей = МодульРаботаВМоделиСервиса.РазделителиКонфигурации(); + Иначе + МассивРазделителей = Новый Массив; + КонецЕсли; + + Для Каждого ИмяРазделителя Из МассивРазделителей Цикл + + УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина); + + КонецЦикла; + + Возврат Вычислить(Выражение); + +КонецФункции + // Аналог метода БСП. Записывает конфиденциальные данные в безопасное хранилище. // Вызывающий код должен самостоятельно устанавливать привилегированный режим. // @@ -2008,6 +2053,92 @@ КонецФункции +// Аналог метода БСП. Возвращает менеджер объекта по ссылке на объект. +// Ограничение: не обрабатываются точки маршрутов бизнес-процессов. +// См. также ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени. +// +// Параметры: +// Ссылка - ЛюбаяСсылка - объект, менеджер которого требуется получить. +// +// Возвращаемое значение: +// СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта. +// +// Пример: +// МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоСсылке(СсылкаНаОрганизацию); +// ПустаяСсылка = МенеджерСправочника.ПустаяСсылка(); +// +Функция МенеджерОбъектаПоСсылке(Ссылка) Экспорт + + ИмяОбъекта = Ссылка.Метаданные().Имя; + ТипСсылки = ТипЗнч(Ссылка); + + Если Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Справочники[ИмяОбъекта]; + + ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Документы[ИмяОбъекта]; + + ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат БизнесПроцессы[ИмяОбъекта]; + + ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыВидовХарактеристик[ИмяОбъекта]; + + ИначеЕсли ПланыСчетов.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыСчетов[ИмяОбъекта]; + + ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыВидовРасчета[ИмяОбъекта]; + + ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Задачи[ИмяОбъекта]; + + ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыОбмена[ИмяОбъекта]; + + ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Перечисления[ИмяОбъекта]; + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + +#Область Данные + +// Аналог метода БСП. Вычисляет контрольную сумму для произвольных данных по указанному алгоритму. +// +// Параметры: +// Данные - Произвольный - любое сериализуемое значение. +// Алгоритм - ХешФункция - алгоритм расчета контрольной суммы. По умолчанию, MD5. +// +// Возвращаемое значение: +// Строка - контрольная сумма строкой без пробелов (например 32 символа). +// +Функция КонтрольнаяСуммаСтрокой(Знач Данные, Знач Алгоритм = Неопределено) Экспорт + + Если Алгоритм = Неопределено Тогда + Алгоритм = ХешФункция.MD5; + КонецЕсли; + + ХешированиеДанных = Новый ХешированиеДанных(Алгоритм); + Если ТипЗнч(Данные) <> Тип("Строка") И ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда + Данные = ЗначениеВСтрокуXML(Данные); + КонецЕсли; + ХешированиеДанных.Добавить(Данные); + + Если ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("ДвоичныеДанные") Тогда + Результат = СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); + ИначеЕсли ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("Число") Тогда + Результат = Формат(ХешированиеДанных.ХешСумма, "ЧГ="); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + #Область ТекущееОкружение // Аналог метода БСП. Возвращает Истина, если текущий сеанс выполняется на сервере, работающем под управлением ОС Windows. @@ -2135,6 +2266,18 @@ #КонецОбласти +// Выполняет действия при записи предопределенного элемента. +// +// Параметры: +// Объект - СправочникОбъект, ПланВидовХарактеристикОбъект - предопределенный элемент +// из подсистемы предопределенных элементов +// +Процедура ОбработатьСуществующийПредопределенныйЭлемент(Объект) Экспорт + + пбп_ПредопределенныеЗначения.ОбновитьХешЭлемента(Объект); + +КонецПроцедуры + #КонецОбласти // ПрограммныйИнтерфейс #Область СлужебныеПроцедурыИФункции diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" index b8e1bad9..757e1e4b 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" @@ -33,6 +33,15 @@ КонецПроцедуры +// См. пбп_ОбщегоНазначенияСервер.ВычислитьВБезопасномРежиме. +// +Функция ВычислитьВБезопасномРежиме(Знач Выражение, Знач Параметры = Неопределено) Экспорт + + Модуль = ПолучитьМодуль(); + Возврат Модуль.ВычислитьВБезопасномРежиме(Выражение, Параметры); + +КонецФункции + // См. пбп_ОбщегоНазначенияСервер.ЗаписатьДанныеВБезопасноеХранилище. Процедура ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ = "Пароль") Экспорт @@ -184,6 +193,27 @@ КонецФункции +// См. пбп_ОбщегоНазначенияСервер.МенеджерОбъектаПоСсылке. +// +Функция МенеджерОбъектаПоСсылке(Ссылка) Экспорт + + Модуль = ПолучитьМодуль(); + Возврат Модуль.МенеджерОбъектаПоСсылке(Ссылка); + +КонецФункции + +#Область Данные + +// См. пбп_ОбщегоНазначенияСервер.КонтрольнаяСуммаСтрокой. +Функция КонтрольнаяСуммаСтрокой(Знач Данные, Знач Алгоритм = Неопределено) Экспорт + + Модуль = ПолучитьМодуль(); + Возврат Модуль.КонтрольнаяСуммаСтрокой(Данные, Алгоритм); + +КонецФункции + +#КонецОбласти + #КонецОбласти #КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" index 5bbeec84..7928b42e 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" @@ -23,105 +23,62 @@ // Инициализирует предопределенные значения из таблицы. // // Параметры: -// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// +// Возвращаемое значение: +// ТаблицаЗначений - Таблица с конфликтными элементами // -Процедура ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт - - ТипЗначения = ТипЗнч(МенеджерОбъекта); - Если ТипЗначения = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") Тогда - ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначения(); - ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_ИнтегрируемыеСистемы") Тогда - ТЗПредопределенныхЗначений = - пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияИнтегрируемыеСистемы(); - ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_ИнтеграционныеПотоки") Тогда - ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый - .ПредопределенныеЗначенияИнтеграционныеПотоки(); - ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_НастройкиИнтеграции") Тогда - ТЗПредопределенныхЗначений = - пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияНастройкиИнтеграции(); - ИначеЕсли ТипЗначения = Тип("СправочникМенеджер.пбп_ТипСоответствияОбъектовИБ") Тогда - ТЗПредопределенныхЗначений = - пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияТипСоответствияОбъектовИБ(); - Иначе - Возврат; +Функция ИнициализироватьПредопределенныеЗначения(МенеджерОбъекта) Экспорт + + ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый + .ТаблицаПредопределенныхЭлементов(МенеджерОбъекта); + + Если ТЗПредопределенныхЗначений = Неопределено Тогда + Возврат Неопределено; КонецЕсли; - ОбработатьПредопределенныеЗначения(ТЗПредопределенныхЗначений, МенеджерОбъекта); + ТаблицаКонфликтныхЭлементов = ОбработатьПредопределенныеЗначения(ТЗПредопределенныхЗначений, МенеджерОбъекта); -КонецПроцедуры + Возврат ТаблицаКонфликтныхЭлементов; + +КонецФункции -// Создание предопределенных значений на основании заполненной таблицы +// Обрабатывает таблицу предопределенных элементов. Операции включают в себя: установка пометок удаления +// на неиспользуемые элементы, отбор предопределенных значений, создание предопределенных элементов. // // Параметры: -// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных, -// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных -// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. -// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных. +// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных +// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// +// Возвращаемое значение: +// ТаблицаЗначений - Таблица с конфликтными элементами // -Процедура СоздатьОбновитьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта, ПолноеИмяОбъекта = "") Экспорт +Функция ОбработатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта) Экспорт - Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда - Возврат; - КонецЕсли; + Параметры = ДопПараметрыОбработкиПредопределенныхЭлементов(ТаблицаПредопределенных, МенеджерОбъекта); - Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда - ПолноеИмяОбъекта = ПолноеИмяОбъектаПоУмолчанию(); - КонецЕсли; + ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя); - Группы = Новый Соответствие; - КолонкаСуществует = ТаблицаПредопределенных.Колонки.Найти("ЭтоГруппа") <> Неопределено; + ЗаполнитьРодителейЭлементов(ТаблицаПредопределенных, Параметры); + ЗаполнитьКонтрольныеСуммыТаблицы(ТаблицаПредопределенных, Параметры); - Если КолонкаСуществует Тогда - - // Сначала создаются группы, затем элементы - ТаблицаПредопределенных.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии"); - - ТекстЗапроса = - "ВЫБРАТЬ - | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка, - | пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки - |ИЗ - | %1 КАК пбп_ПредопределенныеЗначения - |ГДЕ - | пбп_ПредопределенныеЗначения.ЭтоГруппа"; - - Запрос = Новый Запрос; - Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОбъекта); - - ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать(); - - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - Группы.Вставить(ВыборкаДетальныеЗаписи.ИдентификаторНастройки, ВыборкаДетальныеЗаписи.Ссылка); - КонецЦикла; - КонецЕсли; + ТаблицаКонфликтныхЭлементов = УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя); + СоздатьОбновитьПредопределенныеЗначения(ТаблицаПредопределенных, Параметры); - Для Каждого СтрокаТаблицы Из ТаблицаПредопределенных Цикл - Если СтрокаТаблицы.Служеб_ОбновитьРасположениеЭлемента Тогда - ОбновитьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, Группы); - Иначе - Если КолонкаСуществует И СтрокаТаблицы.ЭтоГруппа Тогда - СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, Группы); - Иначе - СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, Группы, КолонкаСуществует); - КонецЕсли; - КонецЕсли; - КонецЦикла; + Возврат ТаблицаКонфликтныхЭлементов; -КонецПроцедуры +КонецФункции // Получает все предопределенные элементы объекта, помечает на удаление те, которые удалены из кода. // При установке пометки удаления для групп, также устанавливается для всех подчиенных элементов. // // Параметры: -// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных, -// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных. +// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных // ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных. // Процедура ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт - Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда - ПолноеИмяОбъекта = ПолноеИмяОбъектаПоУмолчанию(); - КонецЕсли; + ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ПолноеИмяОбъекта); ТаблицаПредопределенных.Индексы.Добавить("ИдентификаторНастройки"); @@ -156,57 +113,25 @@ КонецПроцедуры -// Подготавливает параметры необходимые для обработки предопределенных элементов +// После удаления уже существующих элементов, остаются только актуальные значения +// для создания предопределенных элементов. // // Параметры: -// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных +// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных. // // Возвращаемое значение: -// Структура - Данные Менеджера объекта -// * Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. -// * ПолноеИмя - Строка - Полное имя объекта метаданных. -// -Функция ПараметрыМенеджераОбъекта(МенеджерОбъекта) Экспорт - - Параметры = Новый Структура; - Параметры.Вставить("Менеджер", МенеджерОбъекта); - Параметры.Вставить("ПолноеИмя", Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)).ПолноеИмя()); - - Возврат Параметры; - -КонецФункции - -// Обрабатывает таблицу предопределенных элементов. Операции включают в себя: установка пометок удаления -// на неиспользуемые элементы, отбор предопределенных значений, создание предопределенных элементов. +// ТаблицаЗначений - Таблица с конфликтными элементами // -// Параметры: -// ТаблицаПредопределенных - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных, -// пбп_ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных. -// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. -// -Процедура ОбработатьПредопределенныеЗначения(ТаблицаПредопределенных, МенеджерОбъекта) Экспорт - - Параметры = ПараметрыМенеджераОбъекта(МенеджерОбъекта); - - ОбработатьНеиспользуемыеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя); - УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя); - СоздатьОбновитьПредопределенныеЗначения(ТаблицаПредопределенных, Параметры.Менеджер, Параметры.ПолноеИмя); +Функция УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Процедура УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт + ТаблицаКонфликтныхЭлементов = ТаблицаПредопределенных.СкопироватьКолонки(); Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда - Возврат; + Возврат ТаблицаКонфликтныхЭлементов; КонецЕсли; - Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда - ПолноеИмяОбъекта = ПолноеИмяОбъектаПоУмолчанию(); - КонецЕсли; + ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ПолноеИмяОбъекта); ИдентификаторыНастроек = ТаблицаПредопределенных.ВыгрузитьКолонку("ИдентификаторНастройки"); @@ -215,11 +140,14 @@ "ВЫБРАТЬ | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка, | пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки, - | ЕСТЬNULL(Родители.ИдентификаторНастройки, """") КАК ИдентификаторНастройкиРодитель + | пбп_СостоянияПредопределенныхЭлементов.ХешСумма КАК ХешСумма, + | ЕСТЬNULL(пбп_СостоянияПредопределенныхЭлементов.РучноеИзменение, ЛОЖЬ) КАК РучноеИзменение, + | пбп_ПредопределенныеЗначения.ПометкаУдаления КАК ПометкаУдаления, + | пбп_СостоянияПредопределенныхЭлементов.ХешСумма ЕСТЬ NULL КАК ХешОтсутствует |ИЗ | %1 КАК пбп_ПредопределенныеЗначения - | ЛЕВОЕ СОЕДИНЕНИЕ %1 КАК Родители - | ПО пбп_ПредопределенныеЗначения.Родитель = Родители.Ссылка + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.пбп_СостоянияПредопределенныхЭлементов КАК пбп_СостоянияПредопределенныхЭлементов + | ПО пбп_ПредопределенныеЗначения.Ссылка = пбп_СостоянияПредопределенныхЭлементов.Объект |ГДЕ | пбп_ПредопределенныеЗначения.ИдентификаторНастройки В(&СписокИдентификаторов)"; @@ -233,11 +161,10 @@ Для Каждого Строка Из ТаблицаПредопределенных Цикл ВыборкаДетальныеЗаписи.Сбросить(); Если ВыборкаДетальныеЗаписи.НайтиСледующий(Строка.ИдентификаторНастройки, "ИдентификаторНастройки") Тогда - Если ВыборкаДетальныеЗаписи.ИдентификаторНастройкиРодитель = Строка.Родитель Тогда + Если ВыборкаДетальныеЗаписи.РучноеИзменение Или ВыборкаДетальныеЗаписи.ХешСумма = Строка.ХешСумма Тогда СтрокиДляУдаления.Добавить(Строка); Иначе - Строка.Служеб_СсылкаНаПредопределенныйЭлемент = ВыборкаДетальныеЗаписи.Ссылка; - Строка.Служеб_ОбновитьРасположениеЭлемента = Истина; + ОбработатьСтроку(Строка, ВыборкаДетальныеЗаписи, ТаблицаКонфликтныхЭлементов, СтрокиДляУдаления); КонецЕсли; КонецЕсли; КонецЦикла; @@ -246,19 +173,204 @@ ТаблицаПредопределенных.Удалить(Строка); КонецЦикла; + Возврат ТаблицаКонфликтныхЭлементов; + +КонецФункции + +// Создание предопределенных значений на основании заполненной таблицы +// +// Параметры: +// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных +// ДополнительныеПараметры - Структура - см.пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов +// +Процедура СоздатьОбновитьПредопределенныеЗначения(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт + + Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда + Возврат; + КонецЕсли; + + ПолноеИмяОбъекта = ДополнительныеПараметры.ПолноеИмя; + МенеджерОбъекта = ДополнительныеПараметры.Менеджер; + + ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ПолноеИмяОбъекта); + + Группы = Новый Соответствие; + КолонкаСуществует = ТаблицаПредопределенных.Колонки.Найти("ЭтоГруппа") <> Неопределено; + + Если КолонкаСуществует Тогда + + // Сначала создаются группы, затем элементы + ТаблицаПредопределенных.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии"); + + ТекстЗапроса = + "ВЫБРАТЬ + | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка, + | пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки + |ИЗ + | %1 КАК пбп_ПредопределенныеЗначения + |ГДЕ + | пбп_ПредопределенныеЗначения.ЭтоГруппа"; + + Запрос = Новый Запрос; + Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОбъекта); + + ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Группы.Вставить(ВыборкаДетальныеЗаписи.ИдентификаторНастройки, ВыборкаДетальныеЗаписи.Ссылка); + КонецЦикла; + КонецЕсли; + + Для Каждого СтрокаТаблицы Из ТаблицаПредопределенных Цикл + ЭтоГруппа = КолонкаСуществует И СтрокаТаблицы.ЭтоГруппа; + КлючиХеша = ?(ЭтоГруппа, ДополнительныеПараметры.КлючиХешаГруппа, ДополнительныеПараметры.КлючиХешаЭлемент); + + Если СтрокаТаблицы.Служеб_ОбновитьЭлемент Тогда + ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Группы, КолонкаСуществует); + ИначеЕсли СтрокаТаблицы.Служеб_УстановитьФлагРучноеИзменение Тогда + УстановитьФлагРучноеИзменение(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент); + ИначеЕсли СтрокаТаблицы.Служеб_СоздатьЗаписьРегистра Тогда + СоздатьЗаписьСостоянияПредопределенногоЭлемента(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент, ЭтоГруппа, КлючиХеша); + Иначе + СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Группы, КолонкаСуществует); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Подготавливает параметры необходимые для обработки предопределенных элементов +// +// Параметры: +// Таблица - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных. +// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// +// Возвращаемое значение: +// Структура - Данные Менеджера объекта +// * Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// * ПолноеИмя - Строка - Полное имя объекта метаданных. +// +Функция ДопПараметрыОбработкиПредопределенныхЭлементов(Таблица, МенеджерОбъекта) Экспорт + + Параметры = Новый Структура; + Параметры.Вставить("Менеджер", МенеджерОбъекта); + Параметры.Вставить("ПолноеИмя", Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)).ПолноеИмя()); + + мКолонки = Новый Массив; + Для Каждого Колонка Из Таблица.Колонки Цикл + мКолонки.Добавить(Колонка.Имя); + КонецЦикла; + + Параметры.Вставить("КлючиХешаЭлемент", КлючиХешаПредопределенногоЭлемента(мКолонки, Ложь)); + Параметры.Вставить("КлючиХешаГруппа", КлючиХешаПредопределенногоЭлемента(мКолонки, Истина)); + + Возврат Параметры; + +КонецФункции + +// Заполняет хеш предопределенных элементов +// +// Параметры: +// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных +// ДополнительныеПараметры - Структура - см.пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов +// +Процедура ЗаполнитьКонтрольныеСуммыТаблицы(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт + + Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда + Возврат; + КонецЕсли; + + Для Каждого Строка Из ТаблицаПредопределенных Цикл + КлючиХеша = ?(Строка.ЭтоГруппа, ДополнительныеПараметры.КлючиХешаГруппа, ДополнительныеПараметры.КлючиХешаЭлемент); + ЗаполнитьЗначенияСвойств(КлючиХеша, Строка); + Строка.ХешСумма = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); + КонецЦикла; + КонецПроцедуры -Процедура СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, Группы) +// Возвращает ключи хеша на основании массива полей элемента +// +// Параметры: +// Поля - Массив - Поля для формирования ключей хеша +// ЭтоГруппа - Булево - От этого признака зависят исключаемые поля +// +// Возвращаемое значение: +// Структура - Ключи хеша +// +Функция КлючиХешаПредопределенногоЭлемента(Поля, ЭтоГруппа = Ложь) Экспорт + + мКлючи = Новый Массив; + + Если ЭтоГруппа Тогда + ИсключаемыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.ИсключаемыеПоляДляРасчетаХешаГруппа(); + Иначе + ИсключаемыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.ИсключаемыеПоляДляРасчетаХешаЭлемент(); + КонецЕсли; + + Для Каждого Поле Из Поля Цикл + Если ИсключаемыеПоля.Свойство(Поле) + Или СтрНачинаетсяС(Поле, "Служеб_") Тогда + Продолжить; + КонецЕсли; + мКлючи.Добавить(Поле); + КонецЦикла; + + Возврат Новый Структура(СтрСоединить(мКлючи, ",")); + +КонецФункции + +// Обновляет хеш элемента в регистре, устанавливая при этом ручное изменение. +// +// Параметры: +// Объект - СправочникОбъект, ПланВидовХарактеристикОбъект - предопределенный элемент. +// +Процедура ОбновитьХешЭлемента(Объект) Экспорт + + Флаг = пбп_ОбщегоНазначенияСлужебныйКлиентСервер + .СвойствоСтруктуры(Объект.ДополнительныеСвойства, "РучноеИзменение", Истина); + + РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьХешЭлемента(Объект.Ссылка, Объект.ЭтоГруппа, Флаг); + +КонецПроцедуры + +// Создает запись регистра с заданными параметрами. +// +// Параметры: +// Объект - СправочникСсылка, ПланВидовХарактеристикСсылка - Ссылка на предопределенный элемент. +// ЭтоГруппа - Булево - - Признак того что элемент является группой. +// КлючиХеша - Структура, Неопределено - Если ключи хеша не переданы, то они будут сформированы заново. +// +Процедура СоздатьЗаписьСостоянияПредопределенногоЭлемента(Объект, ЭтоГруппа, КлючиХеша = Неопределено) Экспорт + РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.СоздатьЗаписьРегистра(Объект, ЭтоГруппа, КлючиХеша); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя = Ложь) + + Если СтрокаТаблицы.ЭтоГруппа Тогда + СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители); + Иначе + СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя); + КонецЕсли; + +КонецПроцедуры + +Процедура СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Группы) НоваяГруппа = МенеджерОбъекта.СоздатьГруппу(); + ЗаполнитьЗначенияСвойств(НоваяГруппа, СтрокаТаблицы, "Наименование,ИдентификаторНастройки"); - Если ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда - Родитель = Группы.Получить(СтрокаТаблицы.Родитель); + ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НоваяГруппа); + + Если ЗначениеЗаполнено(СтрокаТаблицы.ИдентификаторРодитель) Тогда + Родитель = Группы.Получить(СтрокаТаблицы.ИдентификаторРодитель); НоваяГруппа.Родитель = Родитель; КонецЕсли; Попытка - НоваяГруппа.Записать(); + ЗаписатьЭлементИСвязанныеДанные(НоваяГруппа, КлючиХеша); Исключение пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки()); КонецПопытки; @@ -267,47 +379,85 @@ КонецПроцедуры -Процедура СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, Родители, ЗаполнитьРодителя = Ложь) +Процедура СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя = Ложь) НовыйЭлемент = МенеджерОбъекта.СоздатьЭлемент(); + ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы); - Если ЗаполнитьРодителя И ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда - Родитель = Родители.Получить(СтрокаТаблицы.Родитель); - НовыйЭлемент.Родитель = Родитель; - КонецЕсли; + ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НовыйЭлемент); - // инициализация значения по умолчанию - ПроверяемыйТип = ТипЗнч(МенеджерОбъекта); - Если ПроверяемыйТип = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") Тогда - НовыйЭлемент.Значение = СтрокаТаблицы.ТипЗначения.ПривестиЗначение(); + Если ЗаполнитьРодителя И ЗначениеЗаполнено(СтрокаТаблицы.ИдентификаторРодитель) Тогда + Родитель = Родители.Получить(СтрокаТаблицы.ИдентификаторРодитель); + НовыйЭлемент.Родитель = Родитель; КонецЕсли; Попытка - НовыйЭлемент.Записать(); + ЗаписатьЭлементИСвязанныеДанные(НовыйЭлемент, КлючиХеша); Исключение пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры -Процедура ОбновитьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, Родители) +Процедура ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя = Ложь) - Если Не ЗначениеЗаполнено(СтрокаТаблицы.Служеб_СсылкаНаПредопределенныйЭлемент) Тогда + Если Не ЗначениеЗаполнено(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент) Тогда Возврат; КонецЕсли; - Элемент = СтрокаТаблицы.Служеб_СсылкаНаПредопределенныйЭлемент.ПолучитьОбъект(); - Элемент.Родитель = Родители[СтрокаТаблицы.Родитель]; + Элемент = СтрокаТаблицы.Служеб_ПредопределенныйЭлемент.ПолучитьОбъект(); + Если Элемент.ПометкаУдаления Тогда + Элемент.УстановитьПометкуУдаления(Ложь, Ложь); + КонецЕсли; + + РодительОтличается = Ложь; + Если ЗаполнитьРодителя Тогда + Если Не ПустаяСтрока(СтрокаТаблицы.ИдентификаторРодитель) Или ЗначениеЗаполнено(Элемент.Родитель) Тогда + НовыйРодитель = Родители[СтрокаТаблицы.ИдентификаторРодитель]; + РодительОтличается = Элемент.Родитель <> НовыйРодитель; + Если РодительОтличается Тогда + Элемент.Родитель = НовыйРодитель; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + СписокСвойств = ""; + ИсключаяСвойства = ""; + Если Элемент.ЭтоГруппа Тогда + СписокСвойств = "Наименование,ИдентификаторНастройки"; + Иначе + ИсключаяСвойства = "Родитель"; + КонецЕсли; + ЗаполнитьЗначенияСвойств(Элемент, СтрокаТаблицы, СписокСвойств, ИсключаяСвойства); + + ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент); Попытка - Элемент.Записать(); - СообщитьОбИзмененииРасположенияЭлемента(Элемент); + ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Истина); + СообщитьОбИзмененииЭлемента(Элемент); + Если РодительОтличается Тогда + СообщитьОбИзмененииРасположенияЭлемента(Элемент); + КонецЕсли; Исключение пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры +Процедура ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент) + + ПроверяемыйТип = ТипЗнч(МенеджерОбъекта); + Если ПроверяемыйТип = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") + И Не Элемент.ЭтоГруппа Тогда + Элемент.Значение = Элемент.ТипЗначения.ПривестиЗначение(); + КонецЕсли; + +КонецПроцедуры + +Процедура УстановитьФлагРучноеИзменение(Элемент) + РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьФлагРучногоИзменения(Элемент, Истина); +КонецПроцедуры + Процедура ПометитьНаУдалениеВсеВложения(ИерархическаяВыборка, ТаблицаАктуальныхЭлементов) Пока ИерархическаяВыборка.Следующий() Цикл @@ -338,6 +488,8 @@ Возврат "ПланВидовХарактеристик.пбп_ПредопределенныеЗначения"; КонецФункции +#Область СообщенияОСобытии + Процедура СообщитьОПомеченномНаУдалениеЭлементе(Элемент) ТекстСообщения = НСтр("ru = 'Элемент ''%1'' помечен на удаление'; @@ -366,4 +518,83 @@ КонецПроцедуры +Процедура СообщитьОбИзмененииЭлемента(Элемент) + + ТекстСообщения = НСтр("ru = 'Элемент ''%1'' успешно обновлен!'; + |en = 'Item ''%1'' was successfully updated!'"); + ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения, + Элемент.Ссылка); + пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, Элемент); + +КонецПроцедуры + +#КонецОбласти + +Процедура ЗаполнитьРодителейЭлементов(Таблица, Параметры) + + Идентификаторы = Таблица.ВыгрузитьКолонку("ИдентификаторРодитель"); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка, + | пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки + |ИЗ + | %1 КАК пбп_ПредопределенныеЗначения + |ГДЕ + | пбп_ПредопределенныеЗначения.ИдентификаторНастройки В(&ИдентификаторыРодитель)"; + + Запрос.Текст = СтрШаблон(Запрос.Текст, Параметры.ПолноеИмя); + + Запрос.УстановитьПараметр("ИдентификаторыРодитель", Идентификаторы); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Для Каждого Строка Из Таблица Цикл + ВыборкаДетальныеЗаписи.Сбросить(); + Если ВыборкаДетальныеЗаписи.НайтиСледующий(Строка.ИдентификаторРодитель, "ИдентификаторНастройки") Тогда + Строка.Родитель = ВыборкаДетальныеЗаписи.Ссылка; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Обновление = Ложь) + + Элемент.ДополнительныеСвойства.Вставить("РучноеИзменение", Ложь); + Элемент.Записать(); + + Если Обновление Тогда + Возврат; + КонецЕсли; + + СоздатьЗаписьСостоянияПредопределенногоЭлемента(Элемент.Ссылка, Элемент.ЭтоГруппа, КлючиХеша); + +КонецПроцедуры + +Функция ИмяОбъектаМетаданных(ПолноеИмяОбъекта) + Если ПустаяСтрока(ПолноеИмяОбъекта) Тогда + Возврат ПолноеИмяОбъектаПоУмолчанию(); + КонецЕсли; + + Возврат ПолноеИмяОбъекта; +КонецФункции + +Процедура ОбработатьСтроку(Строка, Выборка, ТаблицаКонфликтныхЭлементов, СтрокиДляУдаления) + Строка.Служеб_ПредопределенныйЭлемент = Выборка.Ссылка; + + Если Выборка.ХешОтсутствует Тогда + Строка.Служеб_СоздатьЗаписьРегистра = Истина; + ИначеЕсли Выборка.ПометкаУдаления Тогда + Строка.Служеб_ОбновитьЭлемент = Истина; + Иначе + СтрокиДляУдаления.Добавить(Строка); + СтрокаКонфликт = ТаблицаКонфликтныхЭлементов.Добавить(); + ЗаполнитьЗначенияСвойств(СтрокаКонфликт, Строка); + КонецЕсли; +КонецПроцедуры + #КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.xml" new file mode 100644 index 00000000..65cc3746 --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.xml" @@ -0,0 +1,23 @@ + + + + + пбп_ПредопределенныеЗначенияВызовСервера + + + ru + Предопределенные значения вызов сервера + + + + false + false + true + false + false + true + false + DontUse + + + \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" new file mode 100644 index 00000000..b2b9cf27 --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" @@ -0,0 +1,43 @@ +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +// + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ИнициализироватьПредопределенныеЗначения(ИмяФормы) Экспорт + + Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормы); + ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Менеджер); + + АдресТаблицы = ""; + ЕстьСтроки = Ложь; + Если ЗначениеЗаполнено(ТаблицаКонфликтныхЭлементов) Тогда + АдресТаблицы = ПоместитьВоВременноеХранилище(ТаблицаКонфликтныхЭлементов, Новый УникальныйИдентификатор); + ЕстьСтроки = Истина; + КонецЕсли; + + РезультатОбработки = Новый Структура; + РезультатОбработки.Вставить("АдресТаблицы", АдресТаблицы); + РезультатОбработки.Вставить("ЕстьСтроки", ЕстьСтроки); + + Возврат Новый ФиксированнаяСтруктура(РезультатОбработки); + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" new file mode 100644 index 00000000..37efbbbe --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" @@ -0,0 +1,27 @@ + + + + + пбп_ПредопределенныеЗначенияКлиент + + + ru + Предопределенные значения клиент + + + en + Working with dialogues server + + + + false + true + false + false + false + false + false + DontUse + + + \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" new file mode 100644 index 00000000..a5f65c14 --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" @@ -0,0 +1,49 @@ +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +// + +//////////////////////////////////////////////////////////////////////////////// +// Работа с диалогами (сервер): для серверных методов работы с диалогами. + +#Область ПрограммныйИнтерфейс + +// Создание предопределенных значений на основании заполненной таблицы +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения - Форма из которой запущена обработка обновление предопределенных элементов +// +Процедура СоздатьОбновитьПредопределенныеЗначения(Форма) Экспорт + + // Возвращаем адрес временного хранилища на таблицу и есть ли конфликты + РезультатОбработки = + пбп_ПредопределенныеЗначенияВызовСервера.ИнициализироватьПредопределенныеЗначения(Форма.ИмяФормы); + + Если РезультатОбработки.ЕстьСтроки = Ложь Тогда + Возврат; + КонецЕсли; + + Параметры = Новый Структура; + Параметры.Вставить("АдресТаблицы", РезультатОбработки.АдресТаблицы); + Параметры.Вставить("ИмяФормыВладельца", Форма.ИмяФормы); + + ОткрытьФорму("ОбщаяФорма.пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов", Параметры, Форма); + +КонецПроцедуры + +#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" index 7f7f1850..a1a48005 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" @@ -1,152 +1,169 @@  #Область ПрограммныйИнтерфейс -// Возвращает таблицу предопределенных элементов справочника -// ПланыВидовХарактеристикСсылка.пбп_ПредопределенныеЗначения. +// Инициализирует предопределенные значения из таблицы. +// +// Параметры: +// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. // // Возвращаемое значение: -// ТаблицаЗначений - Таблица заполненная предопределенными элементами. +// ТаблицаЗначений - Таблица предопределенных элементов. // -Функция ПредопределенныеЗначения() Экспорт +Функция ТаблицаПредопределенныхЭлементов(Менеджер) Экспорт + + Колонки = КолонкиПредопределенныхЭлементов(Менеджер); + + Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов() + .Получить(ТипЗнч(Менеджер)); + + Если Не ЗначениеЗаполнено(Выражение) Тогда + Возврат Неопределено; + КонецЕсли; + + Таблица = Новый ТаблицаЗначений; + СоздатьКолонкиТаблицыПредопределенныхЭлементов(Колонки, Таблица); + + Параметры = Новый Массив; + Параметры.Добавить(Таблица); + + пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(Выражение, Параметры); - Результат = ТаблицаПредопределенных(); + Возврат Параметры[0]; + +КонецФункции +// Заполняет таблицу предопределенных элементов справочника +// ПланыВидовХарактеристикСсылка.пбп_ПредопределенныеЗначения. +// +// Параметры: +// Таблица - ТаблицаЗначений - Таблица предопределенных элементов. +// +Процедура ПредопределенныеЗначения(Таблица) Экспорт + ОписаниеЧисло = Новый ОписаниеТипов("Число",,, Новый КвалификаторыЧисла(10,0)); // Добавление - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Интеграции"; НоваяНастройка.ИдентификаторНастройки = "Интеграции"; НоваяНастройка.ЭтоГруппа = Истина; НоваяНастройка.УровеньИерархии = 0; - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Интеграции локал"; НоваяНастройка.ИдентификаторНастройки = "Интеграции_локал"; НоваяНастройка.ЭтоГруппа = Истина; - НоваяНастройка.Родитель = "Интеграции"; + НоваяНастройка.ИдентификаторРодитель = "Интеграции"; НоваяНастройка.УровеньИерархии = 1; - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Тестовая"; НоваяНастройка.ИдентификаторНастройки = "Тестовая"; НоваяНастройка.ЭтоГруппа = Истина; - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Количество дней хранения истории интеграции"; НоваяНастройка.ИдентификаторНастройки = "КолДнейХраненияИсторииИнтеграции"; НоваяНастройка.Пароль = Ложь; НоваяНастройка.СписокЗначений = Ложь; НоваяНастройка.ТипЗначения = ОписаниеЧисло; - НоваяНастройка.Родитель = "Интеграции"; + НоваяНастройка.ИдентификаторРодитель = "Интеграции"; - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Количество дней хранения ошибок истории интеграции"; НоваяНастройка.ИдентификаторНастройки = "КолДнейХраненияОшибокИсторииИнтеграции"; НоваяНастройка.Пароль = Ложь; НоваяНастройка.СписокЗначений = Ложь; НоваяНастройка.ТипЗначения = ОписаниеЧисло; - НоваяНастройка.Родитель = "Интеграции"; + НоваяНастройка.ИдентификаторРодитель = "Интеграции"; - НоваяНастройка = Результат.Добавить(); - НоваяНастройка.Наименование = "Тест_бул"; - НоваяНастройка.ИдентификаторНастройки = "Тест_бул"; + НоваяНастройка = Таблица.Добавить(); + НоваяНастройка.Наименование = "Тест булево"; + НоваяНастройка.ИдентификаторНастройки = "Тест_булево"; НоваяНастройка.Пароль = Ложь; НоваяНастройка.СписокЗначений = Ложь; НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Булево"); - НоваяНастройка.Родитель = "Тестовая"; + НоваяНастройка.ИдентификаторРодитель = "Тестовая"; - НоваяНастройка = Результат.Добавить(); - НоваяНастройка.Наименование = "Тест_список"; + НоваяНастройка = Таблица.Добавить(); + НоваяНастройка.Наименование = "Тест список"; НоваяНастройка.ИдентификаторНастройки = "Тест_список"; НоваяНастройка.Пароль = Ложь; НоваяНастройка.СписокЗначений = Истина; НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Строка"); // КонецДобавления - Возврат Результат; - -КонецФункции +КонецПроцедуры -// Возвращает таблицу предопределенных элементов справочника СправочникСсылка.пбп_ИнтегрируемыеСистемы. -// -// Возвращаемое значение: -// ТаблицаЗначений - Таблица заполненная предопределенными элементами. +// Заполняет таблицу предопределенных элементов справочника СправочникСсылка.пбп_ИнтегрируемыеСистемы. // -Функция ПредопределенныеЗначенияИнтегрируемыеСистемы() Экспорт - - Результат = ТаблицаПредопределенныхИнтегрируемыеСистемы(); +// Параметры: +// Таблица - ТаблицаЗначений - Таблица предопределенных элементов. +// +Процедура ПредопределенныеЗначенияИнтегрируемыеСистемы(Таблица) Экспорт // Добавление - НоваяСистема = Результат.Добавить(); + НоваяСистема = Таблица.Добавить(); НоваяСистема.Наименование = "Система N"; НоваяСистема.ИдентификаторНастройки = "СистемаN"; - НоваяСистема = Результат.Добавить(); + НоваяСистема = Таблица.Добавить(); НоваяСистема.Наименование = "Rabbit Mq"; НоваяСистема.ИдентификаторНастройки = "RabbitMq"; - НоваяСистема = Результат.Добавить(); + НоваяСистема = Таблица.Добавить(); НоваяСистема.Наименование = "Kafka"; НоваяСистема.ИдентификаторНастройки = "Kafka"; - НоваяСистема = Результат.Добавить(); + НоваяСистема = Таблица.Добавить(); НоваяСистема.Наименование = "Active directory"; НоваяСистема.ИдентификаторНастройки = "ActiveDirectory"; // КонецДобавления - Возврат Результат; - -КонецФункции +КонецПроцедуры -// Возвращает таблицу предопределенных элементов справочника СправочникСсылка.пбп_МетодыИнтеграции. -// -// Возвращаемое значение: -// ТаблицаЗначений - Таблица заполненная предопределенными элементами. +// Заполняет таблицу предопределенных элементов справочника СправочникСсылка.пбп_МетодыИнтеграции. // -Функция ПредопределенныеЗначенияИнтеграционныеПотоки() Экспорт - - Результат = ТаблицаПредопределенныхИнтеграционныеПотоки(); +// Параметры: +// Таблица - ТаблицаЗначений - Таблица предопределенных элементов. +// +Процедура ПредопределенныеЗначенияИнтеграционныеПотоки(Таблица) Экспорт // Добавление - НовыйМетод = Результат.Добавить(); + НовыйМетод = Таблица.Добавить(); НовыйМетод.Наименование = "Интеграционный поток системы N"; НовыйМетод.ИдентификаторНастройки = "ИнтеграционныйПотокСистемыN"; // КонецДобавления - Возврат Результат; - -КонецФункции +КонецПроцедуры -// Возвращает таблицу предопределенных элементов справочника СправочникСсылка.пбп_НастройкиИнтеграции. -// -// Возвращаемое значение: -// ТаблицаЗначений - Таблица заполненная предопределенными элементами. +// Заполняет таблицу предопределенных элементов справочника СправочникСсылка.пбп_НастройкиИнтеграции. // -Функция ПредопределенныеЗначенияНастройкиИнтеграции() Экспорт - - Результат = ТаблицаПредопределенныхНастройкиИнтеграции(); +// Параметры: +// Таблица - ТаблицаЗначений - Таблица предопределенных элементов. +// +Процедура ПредопределенныеЗначенияНастройкиИнтеграции(Таблица) Экспорт // Добавление - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Интеграция с системой N"; НоваяНастройка.ИдентификаторНастройки = "ИнтеграцияССистемойN"; - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Rabbit Mq"; НоваяНастройка.ИдентификаторНастройки = "RabbitMq"; НоваяНастройка.ИнтегрируемаяСистема = пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("RabbitMq"); НоваяНастройка.ТипИнтеграции = Справочники.пбп_ТипыИнтеграций.RabbitMq; НоваяНастройка.ТипАвторизации = Перечисления.пбп_ТипыАвторизации.Базовая; - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Simple Kafka"; НоваяНастройка.ИдентификаторНастройки = "SimpleKafka"; НоваяНастройка.ИнтегрируемаяСистема = пбп_ИнтеграцииСлужебный.ИнтегрируемаяСистема("Kafka"); НоваяНастройка.ТипИнтеграции = Справочники.пбп_ТипыИнтеграций.Kafka; НоваяНастройка.ТипАвторизации = Перечисления.пбп_ТипыАвторизации.Базовая; - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Active directory"; НоваяНастройка.ИдентификаторНастройки = "ActiveDirectory"; НоваяНастройка.СтрокаПодключения = "Provider=""ADsDSOObject"""; @@ -156,114 +173,227 @@ НоваяНастройка.ИмяОбъекта = "ADODB.Connection"; // КонецДобавления - Возврат Результат; - -КонецФункции +КонецПроцедуры -// Возвращает таблицу предопределенных элементов справочника СправочникСсылка.пбп_ТипСоответствияОбъектовИБ. -// -// Возвращаемое значение: -// ТаблицаЗначений - Таблица заполненная предопределенными элементами. +// Заполняет таблицу предопределенных элементов справочника СправочникСсылка.пбп_ТипСоответствияОбъектовИБ. // -Функция ПредопределенныеЗначенияТипСоответствияОбъектовИБ() Экспорт - - Результат = ТаблицаПредопределенныхТипСоответствияОбъектовИБ(); +// Параметры: +// Таблица - ТаблицаЗначений - Таблица предопределенных элементов. +// +Процедура ПредопределенныеЗначенияТипСоответствияОбъектовИБ(Таблица) Экспорт // Добавление - НоваяНастройка = Результат.Добавить(); + НоваяНастройка = Таблица.Добавить(); НоваяНастройка.Наименование = "Тест"; НоваяНастройка.ИдентификаторНастройки = "Тест"; // КонецДобавления - Возврат Результат; - -КонецФункции +КонецПроцедуры -// Добавляет общие колонки таблицы предопределенных значений. +// Возвращает колонки таблицы предопределенных элементов. // // Параметры: -// Таблица - ТаблицаЗначений - Таблица для заполнения предопределенными. +// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// +// Возвращаемое значение: +// Структура - Где ключ имя колонки, значение описание типов колонки // -Процедура ОбщиеКолонкиТаблицыПредопределенныхЗначений(Таблица) Экспорт +Функция КолонкиПредопределенныхЭлементов(Менеджер) Экспорт - ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150)); - ОписаниеБулево = Новый ОписаниеТипов("Булево"); + Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов() + .Получить(ТипЗнч(Менеджер)); - Таблица.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока); - Таблица.Колонки.Добавить("Наименование", ОписаниеСтрока); - Таблица.Колонки.Добавить("ЭтоГруппа", ОписаниеБулево); - Таблица.Колонки.Добавить("Родитель", ОписаниеСтрока); - Таблица.Колонки.Добавить("УровеньИерархии", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(2,0))); - // Служебные колонки - Таблица.Колонки.Добавить("Служеб_ОбновитьРасположениеЭлемента", ОписаниеБулево); - Таблица.Колонки.Добавить("Служеб_СсылкаНаПредопределенныйЭлемент", Неопределено); + Если Не ЗначениеЗаполнено(Выражение) Тогда + Возврат Неопределено; + КонецЕсли; -КонецПроцедуры - -#КонецОбласти + Колонки = ОбщиеКолонки(Менеджер); + + Параметры = Новый Массив; + Параметры.Добавить(Менеджер); + + ДопКолонки = пбп_ОбщегоНазначенияСлужебный.ВычислитьВБезопасномРежиме(Выражение); + + пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки); + + Возврат Колонки; + +КонецФункции -#Область СлужебныеПроцедурыИФункции +#Область СтруктурыКолонокТаблиц -Функция ТаблицаПредопределенных() +// Возвращает колонки предопределенные значения +// +// Возвращаемое значение: +// Структура - Где ключ имя колонки, значение описание типов колонки +// +Функция КолонкиПредопределенныеЗначения() Экспорт + + Колонки = Новый Структура; ОписаниеБулево = Новый ОписаниеТипов("Булево"); - Результат = Новый ТаблицаЗначений; + // Добавление + Колонки.Вставить("Пароль", ОписаниеБулево); + Колонки.Вставить("СписокЗначений", ОписаниеБулево); + Колонки.Вставить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов")); + // КонецДобавления + + Возврат Колонки; + +КонецФункции + +// Возвращает колонки интегрируемые системы +// +// Возвращаемое значение: +// Структура - Где ключ имя колонки, значение описание типов колонки +// +Функция КолонкиИнтегрируемыеСистемы() Экспорт + + Колонки = Новый Структура; - ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат); + // Добавление - Результат.Колонки.Добавить("Пароль", ОписаниеБулево); - Результат.Колонки.Добавить("СписокЗначений", ОписаниеБулево); - Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов")); + // КонецДобавления - Возврат Результат; + Возврат Колонки; КонецФункции -Функция ТаблицаПредопределенныхИнтегрируемыеСистемы() +// Возвращает колонки интеграционные потоки +// +// Возвращаемое значение: +// Структура - Где ключ имя колонки, значение описание типов колонки +// +Функция КолонкиИнтеграционныеПотоки() Экспорт - Результат = Новый ТаблицаЗначений; + Колонки = Новый Структура; + + // Добавление - ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат); + // КонецДобавления - Возврат Результат; + Возврат Колонки; КонецФункции -Функция ТаблицаПредопределенныхИнтеграционныеПотоки() +// Возвращает колонки настройки интеграции +// +// Возвращаемое значение: +// Структура - Где ключ имя колонки, значение описание типов колонки +// +Функция КолонкиНастройкиИнтеграции() Экспорт - Результат = Новый ТаблицаЗначений; + Колонки = Новый Структура; - ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат); + // Добавление + Колонки.Вставить("ИнтегрируемаяСистема" , Новый ОписаниеТипов("СправочникСсылка.пбп_ИнтегрируемыеСистемы")); + Колонки.Вставить("ТипИнтеграции" , Новый ОписаниеТипов("СправочникСсылка.пбп_ТипыИнтеграций")); + Колонки.Вставить("СтрокаПодключения" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(200)); + Колонки.Вставить("ТипАвторизации" , Новый ОписаниеТипов("ПеречислениеСсылка.пбп_ТипыАвторизации")); + Колонки.Вставить("ИмяОбъекта" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(100)); + // КонецДобавления - Возврат Результат; + Возврат Колонки; КонецФункции -Функция ТаблицаПредопределенныхНастройкиИнтеграции() +// Возвращает колонки тип соответствия объектов ИБ +// +// Возвращаемое значение: +// Структура - Где ключ имя колонки, значение описание типов колонки +// +Функция КолонкиТипСоответствияОбъектовИБ() Экспорт - Результат = Новый ТаблицаЗначений; + Колонки = Новый Структура; - ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат); + // Добавление - Результат.Колонки.Добавить("ИнтегрируемаяСистема" , Новый ОписаниеТипов("СправочникСсылка.пбп_ИнтегрируемыеСистемы")); - Результат.Колонки.Добавить("ТипИнтеграции" , Новый ОписаниеТипов("СправочникСсылка.пбп_ТипыИнтеграций")); - Результат.Колонки.Добавить("СтрокаПодключения" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(200)); - Результат.Колонки.Добавить("ТипАвторизации" , Новый ОписаниеТипов("ПеречислениеСсылка.пбп_ТипыАвторизации")); - Результат.Колонки.Добавить("ИмяОбъекта" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(100)); + // КонецДобавления - Возврат Результат; + Возврат Колонки; КонецФункции -Функция ТаблицаПредопределенныхТипСоответствияОбъектовИБ() +#КонецОбласти + +// Возвращает исключаемые поля для расчета хеша элемент +// +// Возвращаемое значение: +// Массив - Исключаемые поля +// +Функция ИсключаемыеПоляДляРасчетаХешаЭлемент() Экспорт - Результат = Новый ТаблицаЗначений; + Поля = Новый Структура; + Поля.Вставить("ХешСумма"); + Поля.Вставить("УровеньИерархии"); + Поля.Вставить("ИдентификаторРодитель"); + + Возврат Поля; + +КонецФункции + +// Возвращает исключаемые поля для расчета хеша группа +// +// Возвращаемое значение: +// Массив - Исключаемые поля +// +Функция ИсключаемыеПоляДляРасчетаХешаГруппа() Экспорт - ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат); + Поля = Новый Структура; + Поля.Вставить("ХешСумма"); + Поля.Вставить("УровеньИерархии"); + Поля.Вставить("ИдентификаторРодитель"); + Поля.Вставить("Пароль"); + Поля.Вставить("СписокЗначений"); - Возврат Результат; + Возврат Поля; КонецФункции -#КонецОбласти \ No newline at end of file +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ОбщиеКолонки(Менеджер) + + массив = Новый Массив; + массив.Добавить(ТипЗнч(Менеджер.ПустаяСсылка())); + ОписаниеТиповЭлемента = Новый ОписаниеТипов(массив); + + Колонки = Новый Структура; + + ОписаниеСтрока = Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(150)); + ОписаниеБулево = Новый ОписаниеТипов("Булево"); + + Колонки.Вставить("ИдентификаторНастройки", ОписаниеСтрока); + Колонки.Вставить("Наименование", ОписаниеСтрока); + Колонки.Вставить("ЭтоГруппа", ОписаниеБулево); + Колонки.Вставить("Родитель", ОписаниеТиповЭлемента); + + Колонки.Вставить("УровеньИерархии", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(2,0))); + Колонки.Вставить("ИдентификаторРодитель", ОписаниеСтрока); + Колонки.Вставить("ХешСумма", Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(32))); + + Колонки.Вставить("Служеб_ОбновитьЭлемент", ОписаниеБулево); + Колонки.Вставить("Служеб_УстановитьФлагРучноеИзменение", ОписаниеБулево); + Колонки.Вставить("Служеб_ПредопределенныйЭлемент", ОписаниеТиповЭлемента); + Колонки.Вставить("Служеб_СоздатьЗаписьРегистра", ОписаниеБулево); + + Возврат Колонки; + +КонецФункции + +Процедура СоздатьКолонкиТаблицыПредопределенныхЭлементов(СтруктураСКолонками, Таблица) + + Для Каждого КлючЗначение Из СтруктураСКолонками Цикл + Если Таблица.Колонки.Найти(КлючЗначение.Ключ) <> Неопределено Тогда + Продолжить; + КонецЕсли; + + Таблица.Колонки.Добавить(КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" new file mode 100644 index 00000000..c670e862 --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" @@ -0,0 +1,23 @@ + + + + + пбп_ПредопределенныеЗначенияПовтИсп + + + ru + Предопределенные значения повт исп + + + + false + false + true + true + true + false + false + DuringSession + + + \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" new file mode 100644 index 00000000..e0e3a130 --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" @@ -0,0 +1,93 @@ +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +// + +#Область СлужебныйПрограммныйИнтерфейс + +// Возвращает соответствие типа с функцией для получения таблицы предопределенных элементов. +// +// Возвращаемое значение: +// Соответствие из КлючИЗначение: +// * Ключ - ПланВидовХарактеристикМенеджер, СправочникМенеджер +// * Значение - Строка +// +Функция ФункцииСозданияТаблицПредопределенныхЭлементов() Экспорт + + Соответствие = Новый Соответствие; + + // Добавление + Соответствие.Вставить(Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения"), + "пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначения"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_ИнтегрируемыеСистемы"), + "пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияИнтегрируемыеСистемы"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_ИнтеграционныеПотоки"), + "пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияИнтеграционныеПотоки"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_НастройкиИнтеграции"), + "пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияНастройкиИнтеграции"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_ТипСоответствияОбъектовИБ"), + "пбп_ПредопределенныеЗначенияПереопределяемый.ПредопределенныеЗначенияТипСоответствияОбъектовИБ"); + // КонецДобавления + + Возврат Соответствие; + +КонецФункции + +// Возвращает соответствие типа с функцией для получения колонок таблицы предопределенных элементов. +// +// Возвращаемое значение: +// Соответствие из КлючИЗначение: +// * Ключ - ПланВидовХарактеристикМенеджер, СправочникМенеджер +// * Значение - Строка +// +Функция ФункцииПолученияКолонокПредопределенныхЭлементов() Экспорт + + Соответствие = Новый Соответствие; + + // Добавление + Соответствие.Вставить(Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения"), + "пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиПредопределенныеЗначения"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_ИнтегрируемыеСистемы"), + "пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиИнтегрируемыеСистемы"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_ИнтеграционныеПотоки"), + "пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиИнтеграционныеПотоки"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_НастройкиИнтеграции"), + "пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиНастройкиИнтеграции"); + Соответствие.Вставить(Тип("СправочникМенеджер.пбп_ТипСоответствияОбъектовИБ"), + "пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиТипСоответствияОбъектовИБ"); + // КонецДобавления + + ОбработатьСоответствиеФункцийКолонок(Соответствие); + + Возврат Соответствие; + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ОбработатьСоответствиеФункцийКолонок(Соответствие) + + Для Каждого КлючЗначение Из Соответствие Цикл + Соответствие[КлючЗначение.Ключ] = КлючЗначение.Значение + "()"; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index 7e307a58..4d01aca0 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -263,8 +263,58 @@ #КонецОбласти -#КонецОбласти // ПрограммныйИнтерфейс +// Превращает строку camelCase в синоним +// +// Параметры: +// ИсходнаяСтрока - Строка - Строка типа ИдентификаторНастройки +// +// Возвращаемое значение: +// Строка - Синоним +// +Функция СинонимСтроки(ИсходнаяСтрока) Экспорт + + Результат = пбп_СтроковыеФункцииСлужебныйКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока); + Если Результат.Количество() > 1 Тогда + Возврат ""; + КонецЕсли; + + ДлинаСтроки = СтрДлина(ИсходнаяСтрока) + 1; + Старт = 1; + Конец = 0; + Части = Новый Массив; + Для Конец = 2 По ДлинаСтроки Цикл + КодСимвола = КодСимвола(Сред(ИсходнаяСтрока, Конец, 1)); + Если СимволВерхнегоРегистра(КодСимвола) Или Конец = ДлинаСтроки Тогда + КолСимволов = Конец - Старт; + Части.Добавить(Сред(ИсходнаяСтрока, Старт, ?(КолСимволов = 0, ДлинаСтроки - Старт, КолСимволов))); + Старт = Конец; + КонецЕсли; + КонецЦикла; + Синоним = НРег(СтрСоединить(Части, " ")); + Синоним = ВРег(Лев(Синоним, 1)) + Сред(Синоним,2); + + Возврат Синоним; + +КонецФункции + +#КонецОбласти #Область СлужебныеПроцедурыИФункции -#КонецОбласти // СлужебныеПроцедурыИФункции +Функция СимволВерхнегоРегистра(КодСимвола) + + минКирилица = 1040; + максКирилица = 1070; + минЛатиница = 65; + максЛатиница = 90; + + Если (КодСимвола >= минКирилица И КодСимвола <= максКирилица) + Или (КодСимвола >= минЛатиница И КодСимвола <= максЛатиница) Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml index 88705457..c96487b6 100644 --- a/src/cf/Configuration.xml +++ b/src/cf/Configuration.xml @@ -57,7 +57,7 @@ Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок Первый БИТ - 1.0.2.7 + 1.0.3.8 false false @@ -260,11 +260,13 @@ пбп_РедактированиеПланаВидовХарактеристикПредопределенныеЗначения пбп_РедактированиеПользовательскихФункций пбп_РедактированиеРегистраСведенийСоответствияОбъектовИБ + пбп_РедактированиеСостоянийПредопределенныхЭлементов пбп_РедактированиеТиповСоответствияОбъектовИБ пбп_ЧтениеКонстантыИспользоватьПользовательскиеФункции пбп_ЧтениеНастроекОтборовОбъектов пбп_ЧтениеПланаВидовХарактеристикПредопределенныеЗначения пбп_ЧтениеРегистраСведенийСоответствияОбъектовИБ + пбп_ЧтениеСостоянийПредопределенныхЭлементов пбп_ЧтениеТиповСоответствияОбъектовИБ пбп_ПросмотрИсторииИнтеграции ПолныеПрава @@ -306,7 +308,10 @@ пбп_ПользователиКлиентСервер пбп_ПользователиСлужебный пбп_ПредопределенныеЗначения + пбп_ПредопределенныеЗначенияВызовСервера + пбп_ПредопределенныеЗначенияКлиент пбп_ПредопределенныеЗначенияПереопределяемый + пбп_ПредопределенныеЗначенияПовтИсп пбп_РаботаСДиалогамиКлиент пбп_РаботаСДиалогамиСервер пбп_РаботаСКоллекциямиКлиентСервер @@ -343,8 +348,10 @@ пбп_Пользователи пбп_ТипыОбъектовСоответствийИБ пбп_УчетныеЗаписиЭлектроннойПочты + пбп_ПредопределенныеВсеСсылкиПереопределяемый пбп_ИспользоватьПользовательскиеФункции пбп_ФормаВыбораПоля + пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов пбп_ИнтеграционныеПотоки пбп_ИнтегрируемыеСистемы пбп_ИсторияИнтеграции @@ -362,7 +369,8 @@ пбп_ТипыАвторизации пбп_ФорматыИнтеграций пбп_СоответствияОбъектовИБ + пбп_СостоянияПредопределенныхЭлементов пбп_ПредопределенныеЗначения - \ No newline at end of file + diff --git "a/src/cf/DefinedTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\321\201\320\265\320\241\321\201\321\213\320\273\320\272\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271.xml" "b/src/cf/DefinedTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\321\201\320\265\320\241\321\201\321\213\320\273\320\272\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271.xml" new file mode 100644 index 00000000..fdeb5d55 --- /dev/null +++ "b/src/cf/DefinedTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\222\321\201\320\265\320\241\321\201\321\213\320\273\320\272\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271.xml" @@ -0,0 +1,28 @@ + + + + + + d2f123f9-0596-4050-bfda-f4a2168d11cb + 6c3a68be-33c5-43c4-b2d7-af577a6cc81d + + + + пбп_ПредопределенныеВсеСсылкиПереопределяемый + + + ru + Ссылки на все объекты с предопределенными элементами + + + + + cfg:CatalogRef.пбп_НастройкиИнтеграции + cfg:CatalogRef.пбп_ТипСоответствияОбъектовИБ + cfg:CatalogRef.пбп_ИнтегрируемыеСистемы + cfg:ChartOfCharacteristicTypesRef.пбп_ПредопределенныеЗначения + cfg:CatalogRef.пбп_ИнтеграционныеПотоки + + + + \ No newline at end of file diff --git "a/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" new file mode 100644 index 00000000..1e435b81 --- /dev/null +++ "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" @@ -0,0 +1,198 @@ + + + + + + 87e4b2aa-c7c3-423d-8526-7a930c8e6236 + 2b2ddb36-6d49-4502-8462-d4df0bf54617 + + + 9976aae0-db4e-4d30-ac29-ee3442971415 + 49fcecb9-b3b5-4825-b372-9ed7d303ad34 + + + b5e0545f-6bbf-4c4d-8950-84cad50f3a94 + a90d8d30-a853-4000-b3c1-26a79fd2cf03 + + + 2b66ac27-c6b3-40fa-bb05-86b0ee788e33 + fd092390-5e4e-4a32-87a6-519d261a7f9b + + + 198d833e-02cc-41c9-93f1-99ad4627c9cf + 44a41502-ba04-4276-826e-5d2759d88c62 + + + 8e26a08c-2f5b-4eb1-ac9e-324cdae4d186 + ca4050ea-1fe5-48e8-9356-6180e6033dc8 + + + 83b857ea-c5f2-4d10-893c-5b7b6631c9cd + c025c68e-c8da-4803-8f8a-86ad8e18030c + + + + пбп_СостоянияПредопределенныхЭлементов + + + ru + Состояния предопределенных элементов + + + + true + InDialog + + + + + Nonperiodical + Independent + false + false + Managed + DontUse + false + false + + + ru + Состояние преопределенного элемента + + + + + + + DontUse + false + false + + + + + ХешСумма + + + ru + Хеш сумма + + + + + xs:string + + 32 + Variable + + + false + + + + false + + false + false + + + false + + ShowError + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + РучноеИзменение + + + ru + Ручное изменение + + + + + xs:boolean + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + Объект + + + ru + Объект + + + + + cfg:DefinedType.пбп_ПредопределенныеВсеСсылкиПереопределяемый + + false + + + + false + + false + false + + + true + + DontCheck + FoldersAndItems + + + Auto + Auto + + + Auto + true + true + true + DontIndex + Use + Use + + + + + \ No newline at end of file diff --git "a/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" new file mode 100644 index 00000000..22f37473 --- /dev/null +++ "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" @@ -0,0 +1,131 @@ + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +// Создает запись регистра с заданными параметрами. +// +// Параметры: +// Объект - СправочникСсылка, ПланВидовХарактеристикСсылка - Ссылка на предопределенный элемент. +// ЭтоГруппа - Булево - Признак того что элемент является группой. +// КлючиХеша - Структура, Неопределено - Если ключи хеша не переданы, то они будут сформированы заново. +// +Процедура СоздатьЗаписьРегистра(Объект, ЭтоГруппа = Ложь, КлючиХеша = Неопределено) Экспорт + + Если КлючиХеша = Неопределено Тогда + КлючиХеша = КлючиХешаОбъект(Объект, ЭтоГруппа); + КонецЕсли; + + Если Не ЗначениеЗаполнено(КлючиХеша) Тогда + Возврат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(КлючиХеша, Объект); + + Набор = РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.СоздатьНаборЗаписей(); + Набор.Отбор.Объект.Установить(Объект); + + Запись = Набор.Добавить(); + Запись.Объект = Объект; + Запись.ХешСумма = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); + + Набор.Записать(); + +КонецПроцедуры + +// Обновляет хеш элемента в регистре, устанавливая при этом ручное изменение. +// Если хеш не был изменен по ключевым реквизитам, обновления не произойдет. +// +// Параметры: +// Объект - СправочникСсылка, ПланВидовХарактеристикСсылка - Ссылка на предопределенный элемент +// ЭтоГруппа - Булево - Признак того что элемент является группой +// Флаг - Булево - Признак ручного изменения элемента. +// +Процедура ОбновитьХешЭлемента(Объект, ЭтоГруппа = Ложь, Флаг = Ложь) Экспорт + + КлючиХеша = КлючиХешаОбъект(Объект, ЭтоГруппа); + + Если Не ЗначениеЗаполнено(КлючиХеша) Тогда + Возврат; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(КлючиХеша, Объект); + НовыйХешЭлемента = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); + + Набор = СоздатьНаборЗаписей(); + Набор.Отбор.Объект.Установить(Объект); + Набор.Прочитать(); + + Если Не ЗначениеЗаполнено(Набор) Тогда + СообщитьОбОтсутствииЗаписи(Объект); + Возврат; + КонецЕсли; + + Запись = Набор[0]; + Если НовыйХешЭлемента = Запись.ХешСумма Тогда + Возврат; + КонецЕсли; + + Запись.ХешСумма = НовыйХешЭлемента; + Запись.РучноеИзменение = Флаг; + Набор.Записать(); + +КонецПроцедуры + +// Обновляет флаг ручного изменения элемента +// +// Параметры: +// Объект - СправочникСсылка, ПланВидовХарактеристикСсылка - Ссылка на предопределенный элемент +// Флаг - Булево - Устанавливается если были изменены ключевые поля пользователем. +// +Процедура ОбновитьФлагРучногоИзменения(Объект, Флаг) Экспорт + + Набор = СоздатьНаборЗаписей(); + Набор.Отбор.Объект.Установить(Объект); + Набор.Прочитать(); + + Если Не ЗначениеЗаполнено(Набор) Тогда + СообщитьОбОтсутствииЗаписи(Объект); + Возврат; + КонецЕсли; + + Набор[0].РучноеИзменение = Флаг; + Набор.Записать(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура СообщитьОбОтсутствииЗаписи(Элемент) + + ТекстСообщения = НСтр("ru = 'При обновлении не найдена запись состояния по объекту ''%1'' не найдена!'; + |en = 'No status record found during update for object ''%1'' not found!'"); + ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения, + Элемент.Ссылка); + пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, Элемент); + +КонецПроцедуры + +Функция КлючиХешаОбъект(Объект, ЭтоГруппа) + + МенеджерОбъекта = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоСсылке(Объект); + КлючевыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиПредопределенныхЭлементов(МенеджерОбъекта); + Если Не ЗначениеЗаполнено(КлючевыеПоля) Тогда + Возврат Новый Структура; + КонецЕсли; + + мПоля = Новый Массив; + Для Каждого КлючЗначение Из КлючевыеПоля Цикл + мПоля.Добавить(КлючЗначение.Ключ); + КонецЦикла; + + Возврат пбп_ПредопределенныеЗначения.КлючиХешаПредопределенногоЭлемента(мПоля, ЭтоГруппа); + +КонецФункции + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git "a/src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" new file mode 100644 index 00000000..cdc9d120 --- /dev/null +++ "b/src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" @@ -0,0 +1,15 @@ + + + + + пбп_РедактированиеСостоянийПредопределенныхЭлементов + + + ru + Редактирование состояний предопределенных элементов + + + + + + \ No newline at end of file diff --git "a/src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" "b/src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" new file mode 100644 index 00000000..8d71a7d3 --- /dev/null +++ "b/src/cf/Roles/\320\277\320\261\320\277_\320\240\320\265\320\264\320\260\320\272\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" @@ -0,0 +1,25 @@ + + + false + true + false + + InformationRegister.пбп_СостоянияПредопределенныхЭлементов + + Read + true + + + Update + true + + + View + true + + + Edit + true + + + \ No newline at end of file diff --git "a/src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" "b/src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" new file mode 100644 index 00000000..34ea4859 --- /dev/null +++ "b/src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262.xml" @@ -0,0 +1,15 @@ + + + + + пбп_ЧтениеСостоянийПредопределенныхЭлементов + + + ru + Чтение состояний предопределенных элементов + + + + + + \ No newline at end of file diff --git "a/src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" "b/src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" new file mode 100644 index 00000000..3df908b9 --- /dev/null +++ "b/src/cf/Roles/\320\277\320\261\320\277_\320\247\321\202\320\265\320\275\320\270\320\265\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\320\271\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Rights.xml" @@ -0,0 +1,17 @@ + + + false + true + false + + InformationRegister.пбп_СостоянияПредопределенныхЭлементов + + Read + true + + + View + true + + + \ No newline at end of file diff --git "a/src/cf/Subsystems/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" "b/src/cf/Subsystems/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" index feaaa3df..f5dcfd10 100644 --- "a/src/cf/Subsystems/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" +++ "b/src/cf/Subsystems/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" @@ -27,6 +27,8 @@ CommonModule.пбп_ПредопределенныеЗначенияПереопределяемый CommonModule.пбп_ОбщегоНазначенияПовтИсп CommonModule.пбп_ОбщегоНазначенияСервер + CommonForm.пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов + InformationRegister.пбп_СостоянияПредопределенныхЭлементов