Skip to content

Commit

Permalink
Feature/predefined id unique check 92 (#118)
Browse files Browse the repository at this point in the history
* Рефакторинг и доработка подсистемы предопределенных значений
  • Loading branch information
denisushakov authored Oct 18, 2024
1 parent 28793f1 commit a3223f6
Show file tree
Hide file tree
Showing 40 changed files with 2,298 additions and 309 deletions.
24 changes: 19 additions & 5 deletions docs/ПредопределенныеЗначения.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,21 @@
## Описание подсистемы

По стандартам разработки поиск ссылочных объектов в программном коде по наименованию, коду, гуиду и т.д. не рекомендуется. Для возможности получения ссылок из программного кода предлагается использовать элементы плана видов характеристик. Чтобы избежать необходимости реструктуризации при добавлении новых элементов в ПВХ, формирование иерархии и элементов делается программно и обновляется в пользовательском режиме. Получение элементов стандартизируется через общий модуль с возможностью кэширования.
При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы.
При коментировании или удалении из кода предопределенных элементов и последующем перезаполнении, элемент будет помечен на удаление, включая все его подчиненные элементы.

## Первоначальное заполнение

Для того чтобы автоматизировать процесс первоначального заполнения предопределенных элементов, необходимо модифицировать/добавить в расширение общий модуль **ПодсистемыКонфигурацииПереопределяемый**.
В процедуре ``ПриДобавленииПодсистем`` прописать вызов процедуры библиотеки ``пбп_ОбновлениеИнформационнойБазыПБП.ПриДобавленииПодсистем``. Затем выполнить первый запуск - будет выполнен обработчик первоначального заполнения предопределенных элементов.

```BSL
&После("ПриДобавленииПодсистем")
Процедура пбп_ПриДобавленииПодсистем(МодулиПодсистем)
пбп_ОбновлениеИнформационнойБазыПБП.ПриДобавленииПодсистем(МодулиПодсистем);
КонецПроцедуры
```

## Добавление новых элементов

Expand All @@ -14,7 +28,7 @@

Пример добавления нового элемента в модуле пбп_ПредопределенныеЗначенияПереопределяемый:

```1C (BSL)
```BSL
Функция ПредопределенныеЗначения() Экспорт
Результат = ТаблицаПредопределенных();
Expand All @@ -36,7 +50,7 @@

Пример добавления новой группы в модуле пбп_ПредопределенныеЗначенияПереопределяемый:

```1C (BSL)
```BSL
Функция ПредопределенныеЗначения() Экспорт
Результат = ТаблицаПредопределенных();
Expand Down Expand Up @@ -84,7 +98,7 @@

Пример получения множественного результата:

```1C (BSL)
```BSL
Функция ПолучитьДанныеАвторизации()
ДанныеАвторизации = Новый Структура("Логин, Пароль");
Expand All @@ -103,7 +117,7 @@

Пример получения единичного результата:

```1C (BSL)
```BSL
Функция ЗаписыватьДанныеСтандартнымСпособом(ПроверяемаяДата)
Результат = пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение("ДатаНачалаЗаписиВРегистры", Истина);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,20 @@
КонецЕсли;
КонецЕсли;

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

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

Процедура ПриЗаписи(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект);
КонецЕсли;

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

#КонецОбласти // ОбработчикиСобытий
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
<Title>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,23 @@

#Область ОбработчикиСобытийФормы

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;

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

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

#Область ОбработчикиКомандФормы

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ИнтеграционныеПотоки);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)

ЗаполнитьПредопределенныеНаСервере();
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);

Элементы.Список.Обновить();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПередЗаписью(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

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

Процедура ПриЗаписи(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект);
КонецЕсли;

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

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

#КонецЕсли
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
<Title>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,23 @@

#Область ОбработчикиСобытийФормы

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;

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

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

#Область ОбработчикиКомандФормы

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ИнтегрируемыеСистемы);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)

ЗаполнитьПредопределенныеНаСервере();
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);

Элементы.Список.Обновить();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,20 @@
ИмяОбъекта = Неопределено;
КонецЕсли;

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

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

Процедура ПриЗаписи(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект);
КонецЕсли;

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

#КонецОбласти // ОбработчикиСобытий
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
<Title>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,23 @@

#Область ОбработчикиСобытийФормы

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;

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

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

#Область ОбработчикиКомандФормы

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_НастройкиИнтеграции);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)

ЗаполнитьПредопределенныеНаСервере();
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);

Элементы.Список.Обновить();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПередЗаписью(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

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

Процедура ПриЗаписи(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект);
КонецЕсли;

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

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

#КонецЕсли
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
<Title>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,23 @@

#Область ОбработчикиСобытийФормы

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;

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

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

#Область ОбработчикиКомандФормы

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Справочники.пбп_ТипСоответствияОбъектовИБ);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)

ЗаполнитьПредопределенныеНаСервере();
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);

Элементы.Список.Обновить();

Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,30 @@


#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПередЗаписью(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

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

Процедура ПриЗаписи(Отказ)

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда
пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект);
КонецЕсли;

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

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

#КонецЕсли
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
Expand Down
Loading

0 comments on commit a3223f6

Please sign in to comment.