From c0ca03dbd1df7b219c31d35afbd078a4107ac3e3 Mon Sep 17 00:00:00 2001 From: Denis Ushakov Date: Tue, 17 Dec 2024 18:30:58 +0300 Subject: [PATCH 1/3] improved funcs and refacted --- .../Ext/Module.bsl" | 2 +- .../Ext/Module.bsl" | 21 +++++++++++++++---- .../Ext/Module.bsl" | 10 +++++++++ .../Ext/Module.bsl" | 6 +----- src/cf/Configuration.xml | 2 +- 5 files changed, 30 insertions(+), 11 deletions(-) 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 dcce0f3c..ec3b5874 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.4.15"; + Описание.Версия = "1.0.4.16"; // Требуется библиотека стандартных подсистем. Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы"); 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 c5e46310..703a3282 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" @@ -55,6 +55,10 @@ // Функция КлючиХешаПредопределенногоЭлемента(Поля, ЭтоГруппа = Ложь) Экспорт + Если ТипЗнч(Поля) <> Тип("Массив") Или Не ЗначениеЗаполнено(Поля) Тогда + Возврат Новый Структура; + КонецЕсли; + мКлючи = Новый Массив; Если ЭтоГруппа Тогда @@ -64,8 +68,7 @@ КонецЕсли; Для Каждого Поле Из Поля Цикл - Если ИсключаемыеПоля.Свойство(Поле) - Или СтрНачинаетсяС(Поле, "Служебный_") Тогда + Если ИсключаемыеПоля.Свойство(Поле) Или СтрНачинаетсяС(Поле, "Служебный_") Тогда Продолжить; КонецЕсли; мКлючи.Добавить(Поле); @@ -75,12 +78,12 @@ КонецФункции -// Обновляет хеш элемента в регистре, устанавливая при этом ручное изменение. +// Обновляет хеш предопределенного элемента в регистре, устанавливая при этом ручное изменение. // // Параметры: // Объект - СправочникОбъект, ПланВидовХарактеристикОбъект - предопределенный элемент. // -Процедура ОбновитьХешЭлемента(Объект) Экспорт +Процедура ОбновитьХешПредопределенногоЭлемента(Объект) Экспорт Флаг = пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(Объект.ДополнительныеСвойства, "РучноеИзменение", Истина); @@ -99,6 +102,16 @@ РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.СоздатьЗаписьРегистра(Объект, ЭтоГруппа, КлючиХеша); КонецПроцедуры +// Обновляет флаг ручного изменения элемента +// +// Параметры: +// Элемент - СправочникСсылка, ПланВидовХарактеристикСсылка - Ссылка на предопределенный элемент +// Флаг - Булево - Устанавливается если были изменены ключевые поля пользователем. +// +Процедура УстановитьФлагРучноеИзменение(Элемент, Флаг = Ложь) Экспорт + РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьФлагРучногоИзменения(Элемент, Флаг); +КонецПроцедуры + // Заполнение предопределенных элементов, с возможностью серверного оповещения // о существующих конфликтах при создании элементов. // 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" index 607f4e6a..1db463d0 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\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" @@ -20,6 +20,16 @@ #Область СлужебныйПрограммныйИнтерфейс +// Инициализирует предопределенные значения из таблицы. +// +// Параметры: +// ИмяФормы - Строка - Имя формы из которой выполняется инициализация. +// +// Возвращаемое значение: +// ФиксированнаяСтруктура - Таблица с конфликтными элементами +// * АдресТаблицы - Строка - Адрес временного хранилища. +// * ЕстьСтроки - Булево - Истина если есть строки в таблице конфликтов. +// Функция ИнициализироватьПредопределенныеЗначения(ИмяФормы) Экспорт Менеджер = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ИмяФормы); 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\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\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" index 9aa4898b..26969b9c 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\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\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" @@ -301,7 +301,7 @@ Если СтрокаТаблицы.Служебный_ОбновитьЭлемент Тогда ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители); ИначеЕсли СтрокаТаблицы.Служебный_УстановитьФлагРучноеИзменение Тогда - УстановитьФлагРучноеИзменение(СтрокаТаблицы.Служебный_ПредопределенныйЭлемент); + пбп_ПредопределенныеЗначения.УстановитьФлагРучноеИзменение(СтрокаТаблицы.Служебный_ПредопределенныйЭлемент, Истина); ИначеЕсли СтрокаТаблицы.Служебный_СоздатьЗаписьРегистра Тогда пбп_ПредопределенныеЗначения.СоздатьЗаписьСостоянияПредопределенногоЭлемента( СтрокаТаблицы.Служебный_ПредопределенныйЭлемент, ЭтоГруппа, КлючиХеша); @@ -533,10 +533,6 @@ КонецПроцедуры -Процедура УстановитьФлагРучноеИзменение(Элемент) - РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьФлагРучногоИзменения(Элемент, Истина); -КонецПроцедуры - Процедура ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Обновление = Ложь) Элемент.ДополнительныеСвойства.Вставить("РучноеИзменение", Ложь); diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml index 5423bdfd..c5cc1ce8 100644 --- a/src/cf/Configuration.xml +++ b/src/cf/Configuration.xml @@ -57,7 +57,7 @@ Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок Первый БИТ - 1.0.4.15 + 1.0.4.16 false false From 2c1f3a1909deee10a0e46fbcec3d36a8c5f7c105 Mon Sep 17 00:00:00 2001 From: Denis Ushakov Date: Wed, 18 Dec 2024 13:29:32 +0300 Subject: [PATCH 2/3] refact predefined subsystem --- .../Ext/Module.bsl" | 2 +- .../Ext/Module.bsl" | 3 - .../Ext/Module.bsl" | 111 +++--------------- .../Ext/Module.bsl" | 106 ++++++++++++++++- .../Ext/ManagerModule.bsl" | 2 +- 5 files changed, 124 insertions(+), 100 deletions(-) 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 703a3282..e5f1684c 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" @@ -34,7 +34,7 @@ Возврат Новый ТаблицаЗначений; КонецЕсли; - ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый + ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияСлужебный .ТаблицаПредопределенныхЭлементов(МенеджерОбъекта); ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначенияСлужебный 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" index a5f65c14..4d6c9524 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\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" @@ -18,9 +18,6 @@ // 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 e3d93c9e..9bdb1948 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,59 +1,24 @@ - -#Область ПрограммныйИнтерфейс - -// Инициализирует предопределенные значения из таблицы. +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. // -// Параметры: -// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. -// -// Возвращаемое значение: -// ТаблицаЗначений - Таблица предопределенных элементов. +// Copyright First BIT company // -Функция ТаблицаПредопределенныхЭлементов(Менеджер) Экспорт - - Колонки = КолонкиПредопределенныхЭлементов(Менеджер); - - Таблица = Новый ТаблицаЗначений; - - СоздатьКолонкиТаблицыПредопределенныхЭлементов(Колонки, Таблица); - - Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов() - .Получить(ТипЗнч(Менеджер)); - - Если Не ЗначениеЗаполнено(Выражение) Тогда - Возврат Таблица; - КонецЕсли; - - Параметры = Новый Массив; - Параметры.Добавить(Таблица); - - пбп_Переадресация.ВыполнитьМетодКонфигурации(Выражение, Параметры); - - Возврат Параметры[0]; - -КонецФункции - -// Инициализирует таблицу значений для конфликтных элементов. +// 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/ +// + +#Область ПрограммныйИнтерфейс #Область ЗаполнениеДанных @@ -218,34 +183,6 @@ #КонецОбласти -// Возвращает колонки таблицы предопределенных элементов. -// -// Параметры: -// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. -// -// Возвращаемое значение: -// Структура - Где ключ имя колонки, значение описание типов колонки -// Неопределено - если обработчика заполнения колонок не существует. -// -Функция КолонкиПредопределенныхЭлементов(Менеджер) Экспорт - - Колонки = ОбщиеКолонки(Менеджер); - - Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов() - .Получить(ТипЗнч(Менеджер)); - - Если Не ЗначениеЗаполнено(Выражение) Тогда - Возврат Колонки; - КонецЕсли; - - ДопКолонки = пбп_Переадресация.ВычислитьВБезопасномРежиме(Выражение); - - пбп_ПереадресацияКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки); - - Возврат Колонки; - -КонецФункции - #Область СтруктурыКолонокТаблиц // Возвращает колонки предопределенные значения @@ -389,7 +326,7 @@ #Область СлужебныеПроцедурыИФункции -Функция ОбщиеКолонки(Менеджер) +Функция ОбщиеКолонки(Менеджер) Экспорт массив = Новый Массив; массив.Добавить(ТипЗнч(Менеджер.ПустаяСсылка())); @@ -420,16 +357,4 @@ КонецФункции -Процедура СоздатьКолонкиТаблицыПредопределенныхЭлементов(СтруктураСКолонками, Таблица) - - Для Каждого КлючЗначение Из СтруктураСКолонками Цикл - Если Таблица.Колонки.Найти(КлючЗначение.Ключ) <> Неопределено Тогда - Продолжить; - КонецЕсли; - - Таблица.Колонки.Добавить(КлючЗначение.Ключ, КлючЗначение.Значение); - КонецЦикла; - -КонецПроцедуры - #КонецОбласти 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\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\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" index 26969b9c..fc8eb767 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\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\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" @@ -216,8 +216,8 @@ // Функция УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт - ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначенияПереопределяемый - .ТаблицаКонфликтныхЭлементов(ДополнительныеПараметры.Менеджер, ТаблицаПредопределенных.СкопироватьКолонки()); + ТаблицаКонфликтныхЭлементов = ТаблицаКонфликтныхЭлементов( + ДополнительныеПараметры.Менеджер, ТаблицаПредопределенных.СкопироватьКолонки()); Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда Возврат ТаблицаКонфликтныхЭлементов; @@ -329,6 +329,92 @@ КонецФункции +#Область РаботаСТаблицейПредопределенных + +// Инициализирует предопределенные значения из таблицы. +// +// Параметры: +// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// +// Возвращаемое значение: +// ТаблицаЗначений - Таблица предопределенных элементов. +// +Функция ТаблицаПредопределенныхЭлементов(Менеджер) Экспорт + + Колонки = КолонкиПредопределенныхЭлементов(Менеджер); + + Таблица = Новый ТаблицаЗначений; + + СоздатьКолонкиТаблицыПредопределенныхЭлементов(Колонки, Таблица); + + Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов() + .Получить(ТипЗнч(Менеджер)); + + Если Не ЗначениеЗаполнено(Выражение) Тогда + Возврат Таблица; + КонецЕсли; + + Параметры = Новый Массив; + Параметры.Добавить(Таблица); + + пбп_Переадресация.ВыполнитьМетодКонфигурации(Выражение, Параметры); + + Возврат Параметры[0]; + +КонецФункции + +// Инициализирует таблицу значений для конфликтных элементов. +// +// Параметры: +// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// ИсходнаяТаблица - ТаблицаЗначений - Пустая таблица каркас, +// см. пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенныхЭлементов +// +// Возвращаемое значение: +// ТаблицаЗначений - Таблица конфликтных элементов. +// +Функция ТаблицаКонфликтныхЭлементов(Менеджер, ИсходнаяТаблица = Неопределено) Экспорт + + Если ИсходнаяТаблица = Неопределено Тогда + ИсходнаяТаблица = ТаблицаПредопределенныхЭлементов(Менеджер); + КонецЕсли; + + ИсходнаяТаблица.Колонки.Добавить("Служебный_ДублированиеИдентификаторов", Новый ОписаниеТипов("Булево")); + + Возврат ИсходнаяТаблица; + +КонецФункции + +// Возвращает колонки таблицы предопределенных элементов. +// +// Параметры: +// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// +// Возвращаемое значение: +// Структура - Где ключ имя колонки, значение описание типов колонки +// Неопределено - если обработчика заполнения колонок не существует. +// +Функция КолонкиПредопределенныхЭлементов(Менеджер) Экспорт + + Колонки = пбп_ПредопределенныеЗначенияПереопределяемый.ОбщиеКолонки(Менеджер); + + Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов() + .Получить(ТипЗнч(Менеджер)); + + Если Не ЗначениеЗаполнено(Выражение) Тогда + Возврат Колонки; + КонецЕсли; + + ДопКолонки = пбп_Переадресация.ВычислитьВБезопасномРежиме(Выражение); + + пбп_ПереадресацияКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки); + + Возврат Колонки; + +КонецФункции + +#КонецОбласти + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -563,6 +649,22 @@ КонецФункции +#Область РаботаСТаблицейПредопределенных + +Процедура СоздатьКолонкиТаблицыПредопределенныхЭлементов(СтруктураСКолонками, Таблица) + + Для Каждого КлючЗначение Из СтруктураСКолонками Цикл + Если Таблица.Колонки.Найти(КлючЗначение.Ключ) <> Неопределено Тогда + Продолжить; + КонецЕсли; + + Таблица.Колонки.Добавить(КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + #Область СообщенияОСобытии Процедура СообщитьОПомеченномНаУдалениеЭлементе(Элемент) 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" index ac3c80ac..84092c59 100644 --- "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" @@ -112,7 +112,7 @@ Функция КлючиХешаОбъект(Объект, ЭтоГруппа) МенеджерОбъекта = пбп_Переадресация.МенеджерОбъектаПоСсылке(Объект); - КлючевыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиПредопределенныхЭлементов(МенеджерОбъекта); + КлючевыеПоля = пбп_ПредопределенныеЗначенияСлужебный.КолонкиПредопределенныхЭлементов(МенеджерОбъекта); Если Не ЗначениеЗаполнено(КлючевыеПоля) Тогда Возврат Новый Структура; КонецЕсли; From dc4e7fa09c9c67747db821d75dbdeb8a7b8f47e2 Mon Sep 17 00:00:00 2001 From: Denis Ushakov Date: Wed, 18 Dec 2024 16:02:25 +0300 Subject: [PATCH 3/3] fixed bugs --- .../Ext/Module.bsl" | 2 +- .../Ext/Module.bsl" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 7645ea1b..700a6154 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" @@ -882,7 +882,7 @@ // Процедура ОбработатьСуществующийПредопределенныйЭлемент(Объект) Экспорт - пбп_ПредопределенныеЗначения.ОбновитьХешЭлемента(Объект); + пбп_ПредопределенныеЗначения.ОбновитьХешПредопределенногоЭлемента(Объект); КонецПроцедуры diff --git "a/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" index 76bffc2c..f6941388 100644 --- "a/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\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\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" @@ -25,7 +25,7 @@ МенеджерОбъекта = пбп_Переадресация .МенеджерОбъектаПоПолномуИмени("ПланВидовХарактеристик.пбп_ПредопределенныеЗначения"); - Таблица = пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта); + Таблица = пбп_ПредопределенныеЗначенияСлужебный.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта); ПроверкаРезультатовОбработкиПредопределенных(МенеджерОбъекта, Таблица);