Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improved funcs and refacted #167

Merged
merged 3 commits into from
Dec 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@

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

// Инициализирует предопределенные значения из таблицы.
//
// Параметры:
// ИмяФормы - Строка - Имя формы из которой выполняется инициализация.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура - Таблица с конфликтными элементами
// * АдресТаблицы - Строка - Адрес временного хранилища.
// * ЕстьСтроки - Булево - Истина если есть строки в таблице конфликтов.
//
Comment on lines +23 to +32
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Добавьте дополнительную обработку ошибок

Рекомендуется добавить проверку входного параметра ИмяФормы на пустое значение и корректный тип данных.

Предлагаемые изменения:

Функция ИнициализироватьПредопределенныеЗначения(ИмяФормы) Экспорт
+    Если Не ЗначениеЗаполнено(ИмяФормы) Тогда
+        ВызватьИсключение НСтр("ru='Не указано имя формы'");
+    КонецЕсли;
+    
+    Если ТипЗнч(ИмяФормы) <> Тип("Строка") Тогда
+        ВызватьИсключение НСтр("ru='Некорректный тип параметра ИмяФормы'");
+    КонецЕсли;

Committable suggestion skipped: line range outside the PR's diff.

Функция ИнициализироватьПредопределенныеЗначения(ИмяФормы) Экспорт

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