Skip to content

Commit

Permalink
improved funcs and refacted (#167)
Browse files Browse the repository at this point in the history
* Рефакторинг модулей подсистемы предопределенных значений
  • Loading branch information
denisushakov authored Dec 20, 2024
1 parent b264504 commit 581e23a
Show file tree
Hide file tree
Showing 10 changed files with 156 additions and 113 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт

Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
Описание.Версия = "1.0.4.15";
Описание.Версия = "1.0.4.16";

// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -882,7 +882,7 @@
//
Процедура ОбработатьСуществующийПредопределенныйЭлемент(Объект) Экспорт

пбп_ПредопределенныеЗначения.ОбновитьХешЭлемента(Объект);
пбп_ПредопределенныеЗначения.ОбновитьХешПредопределенногоЭлемента(Объект);

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
Возврат Новый ТаблицаЗначений;
КонецЕсли;

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

ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначенияСлужебный
Expand All @@ -55,6 +55,10 @@
//
Функция КлючиХешаПредопределенногоЭлемента(Поля, ЭтоГруппа = Ложь) Экспорт

Если ТипЗнч(Поля) <> Тип("Массив") Или Не ЗначениеЗаполнено(Поля) Тогда
Возврат Новый Структура;
КонецЕсли;

мКлючи = Новый Массив;

Если ЭтоГруппа Тогда
Expand All @@ -64,8 +68,7 @@
КонецЕсли;

Для Каждого Поле Из Поля Цикл
Если ИсключаемыеПоля.Свойство(Поле)
Или СтрНачинаетсяС(Поле, "Служебный_") Тогда
Если ИсключаемыеПоля.Свойство(Поле) Или СтрНачинаетсяС(Поле, "Служебный_") Тогда
Продолжить;
КонецЕсли;
мКлючи.Добавить(Поле);
Expand All @@ -75,12 +78,12 @@

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

// Обновляет хеш элемента в регистре, устанавливая при этом ручное изменение.
// Обновляет хеш предопределенного элемента в регистре, устанавливая при этом ручное изменение.
//
// Параметры:
// Объект - СправочникОбъект, ПланВидовХарактеристикОбъект - предопределенный элемент.
//
Процедура ОбновитьХешЭлемента(Объект) Экспорт
Процедура ОбновитьХешПредопределенногоЭлемента(Объект) Экспорт

Флаг = пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(Объект.ДополнительныеСвойства, "РучноеИзменение", Истина);

Expand All @@ -99,6 +102,16 @@
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.СоздатьЗаписьРегистра(Объект, ЭтоГруппа, КлючиХеша);
КонецПроцедуры

// Обновляет флаг ручного изменения элемента
//
// Параметры:
// Элемент - СправочникСсылка, ПланВидовХарактеристикСсылка - Ссылка на предопределенный элемент
// Флаг - Булево - Устанавливается если были изменены ключевые поля пользователем.
//
Процедура УстановитьФлагРучноеИзменение(Элемент, Флаг = Ложь) Экспорт
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьФлагРучногоИзменения(Элемент, Флаг);
КонецПроцедуры

// Заполнение предопределенных элементов, с возможностью серверного оповещения
// о существующих конфликтах при создании элементов.
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@

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

// Инициализирует предопределенные значения из таблицы.
//
// Параметры:
// ИмяФормы - Строка - Имя формы из которой выполняется инициализация.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура - Таблица с конфликтными элементами
// * АдресТаблицы - Строка - Адрес временного хранилища.
// * ЕстьСтроки - Булево - Истина если есть строки в таблице конфликтов.
//
Функция ИнициализироватьПредопределенныеЗначения(ИмяФормы) Экспорт

Менеджер = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ИмяФормы);
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 @@

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

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

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

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

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

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

0 comments on commit 581e23a

Please sign in to comment.