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 @@
+
+ ОбработкаОповещения
+
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 @@
+
+ ОбработкаОповещения
+
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 @@
+
+ ОбработкаОповещения
+
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 @@
+ ОбработкаОповещения
ПриСозданииНаСервере
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 @@
+
+
+
+
+ пбп_ФормаРазрешенияКонфликтовПредопределенныхЭлементов
+
+
+ ru
+ Разрешение конфликтов предопределенных элементов
+
+
+
+ Managed
+ true
+
+ PlatformApplication
+ MobilePlatformApplication
+
+ false
+
+
+
+
+
\ 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 @@
+
+
\ 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
+
+
\ 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
+
+
\ 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.пбп_СостоянияПредопределенныхЭлементов