From 2c1f3a1909deee10a0e46fbcec3d36a8c5f7c105 Mon Sep 17 00:00:00 2001 From: Denis Ushakov Date: Wed, 18 Dec 2024 13:29:32 +0300 Subject: [PATCH] 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 @@ Функция КлючиХешаОбъект(Объект, ЭтоГруппа) МенеджерОбъекта = пбп_Переадресация.МенеджерОбъектаПоСсылке(Объект); - КлючевыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиПредопределенныхЭлементов(МенеджерОбъекта); + КлючевыеПоля = пбп_ПредопределенныеЗначенияСлужебный.КолонкиПредопределенныхЭлементов(МенеджерОбъекта); Если Не ЗначениеЗаполнено(КлючевыеПоля) Тогда Возврат Новый Структура; КонецЕсли;