Skip to content

Commit

Permalink
refact predefined subsystem
Browse files Browse the repository at this point in the history
  • Loading branch information
denisushakov committed Dec 18, 2024
1 parent c0ca03d commit 2c1f3a1
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
Возврат Новый ТаблицаЗначений;
КонецЕсли;

ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияСлужебный
.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта);

ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначенияСлужебный
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
// URL: https://github.com/firstBitSportivnaya/PSSL/
//

////////////////////////////////////////////////////////////////////////////////
// Работа с диалогами (сервер): для серверных методов работы с диалогами.

#Область ПрограммныйИнтерфейс

// Создание предопределенных значений на основании заполненной таблицы
Expand Down
Original file line number Diff line number Diff line change
@@ -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/
//

#Область ПрограммныйИнтерфейс

#Область ЗаполнениеДанных

Expand Down Expand Up @@ -218,34 +183,6 @@

#КонецОбласти

// Возвращает колонки таблицы предопределенных элементов.
//
// Параметры:
// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
//
// Возвращаемое значение:
// Структура - Где ключ имя колонки, значение описание типов колонки
// Неопределено - если обработчика заполнения колонок не существует.
//
Функция КолонкиПредопределенныхЭлементов(Менеджер) Экспорт

Колонки = ОбщиеКолонки(Менеджер);

Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов()
.Получить(ТипЗнч(Менеджер));

Если Не ЗначениеЗаполнено(Выражение) Тогда
Возврат Колонки;
КонецЕсли;

ДопКолонки = пбп_Переадресация.ВычислитьВБезопасномРежиме(Выражение);

пбп_ПереадресацияКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки);

Возврат Колонки;

КонецФункции

#Область СтруктурыКолонокТаблиц

// Возвращает колонки предопределенные значения
Expand Down Expand Up @@ -389,7 +326,7 @@

#Область СлужебныеПроцедурыИФункции

Функция ОбщиеКолонки(Менеджер)
Функция ОбщиеКолонки(Менеджер) Экспорт

массив = Новый Массив;
массив.Добавить(ТипЗнч(Менеджер.ПустаяСсылка()));
Expand Down Expand Up @@ -420,16 +357,4 @@

КонецФункции

Процедура СоздатьКолонкиТаблицыПредопределенныхЭлементов(СтруктураСКолонками, Таблица)

Для Каждого КлючЗначение Из СтруктураСКолонками Цикл
Если Таблица.Колонки.Найти(КлючЗначение.Ключ) <> Неопределено Тогда
Продолжить;
КонецЕсли;

Таблица.Колонки.Добавить(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;

КонецПроцедуры

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,8 @@
//
Функция УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт

ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначенияПереопределяемый
.ТаблицаКонфликтныхЭлементов(ДополнительныеПараметры.Менеджер, ТаблицаПредопределенных.СкопироватьКолонки());
ТаблицаКонфликтныхЭлементов = ТаблицаКонфликтныхЭлементов(
ДополнительныеПараметры.Менеджер, ТаблицаПредопределенных.СкопироватьКолонки());

Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда
Возврат ТаблицаКонфликтныхЭлементов;
Expand Down Expand Up @@ -329,6 +329,92 @@

КонецФункции

#Область РаботаСТаблицейПредопределенных

// Инициализирует предопределенные значения из таблицы.
//
// Параметры:
// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
//
// Возвращаемое значение:
// ТаблицаЗначений - Таблица предопределенных элементов.
//
Функция ТаблицаПредопределенныхЭлементов(Менеджер) Экспорт

Колонки = КолонкиПредопределенныхЭлементов(Менеджер);

Таблица = Новый ТаблицаЗначений;

СоздатьКолонкиТаблицыПредопределенныхЭлементов(Колонки, Таблица);

Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов()
.Получить(ТипЗнч(Менеджер));

Если Не ЗначениеЗаполнено(Выражение) Тогда
Возврат Таблица;
КонецЕсли;

Параметры = Новый Массив;
Параметры.Добавить(Таблица);

пбп_Переадресация.ВыполнитьМетодКонфигурации(Выражение, Параметры);

Возврат Параметры[0];

КонецФункции

// Инициализирует таблицу значений для конфликтных элементов.
//
// Параметры:
// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
// ИсходнаяТаблица - ТаблицаЗначений - Пустая таблица каркас,
// см. пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенныхЭлементов
//
// Возвращаемое значение:
// ТаблицаЗначений - Таблица конфликтных элементов.
//
Функция ТаблицаКонфликтныхЭлементов(Менеджер, ИсходнаяТаблица = Неопределено) Экспорт

Если ИсходнаяТаблица = Неопределено Тогда
ИсходнаяТаблица = ТаблицаПредопределенныхЭлементов(Менеджер);
КонецЕсли;

ИсходнаяТаблица.Колонки.Добавить("Служебный_ДублированиеИдентификаторов", Новый ОписаниеТипов("Булево"));

Возврат ИсходнаяТаблица;

КонецФункции

// Возвращает колонки таблицы предопределенных элементов.
//
// Параметры:
// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
//
// Возвращаемое значение:
// Структура - Где ключ имя колонки, значение описание типов колонки
// Неопределено - если обработчика заполнения колонок не существует.
//
Функция КолонкиПредопределенныхЭлементов(Менеджер) Экспорт

Колонки = пбп_ПредопределенныеЗначенияПереопределяемый.ОбщиеКолонки(Менеджер);

Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов()
.Получить(ТипЗнч(Менеджер));

Если Не ЗначениеЗаполнено(Выражение) Тогда
Возврат Колонки;
КонецЕсли;

ДопКолонки = пбп_Переадресация.ВычислитьВБезопасномРежиме(Выражение);

пбп_ПереадресацияКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки);

Возврат Колонки;

КонецФункции

#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
Expand Down Expand Up @@ -563,6 +649,22 @@

КонецФункции

#Область РаботаСТаблицейПредопределенных

Процедура СоздатьКолонкиТаблицыПредопределенныхЭлементов(СтруктураСКолонками, Таблица)

Для Каждого КлючЗначение Из СтруктураСКолонками Цикл
Если Таблица.Колонки.Найти(КлючЗначение.Ключ) <> Неопределено Тогда
Продолжить;
КонецЕсли;

Таблица.Колонки.Добавить(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;

КонецПроцедуры

#КонецОбласти

#Область СообщенияОСобытии

Процедура СообщитьОПомеченномНаУдалениеЭлементе(Элемент)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
Функция КлючиХешаОбъект(Объект, ЭтоГруппа)

МенеджерОбъекта = пбп_Переадресация.МенеджерОбъектаПоСсылке(Объект);
КлючевыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиПредопределенныхЭлементов(МенеджерОбъекта);
КлючевыеПоля = пбп_ПредопределенныеЗначенияСлужебный.КолонкиПредопределенныхЭлементов(МенеджерОбъекта);
Если Не ЗначениеЗаполнено(КлючевыеПоля) Тогда
Возврат Новый Структура;
КонецЕсли;
Expand Down

0 comments on commit 2c1f3a1

Please sign in to comment.