Skip to content

Commit

Permalink
Refactored predefined values
Browse files Browse the repository at this point in the history
  • Loading branch information
denisushakov committed Aug 29, 2024
1 parent 61ab305 commit 2bb5c52
Show file tree
Hide file tree
Showing 13 changed files with 292 additions and 154 deletions.
51 changes: 28 additions & 23 deletions docs/ПредопределенныеЗначения.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,16 @@
# Подсистема "предопределенные значения"

#### Для обращения к ссылкам из кода используем предопределенные значения, добавляем их в план видов характеристик (ПВХ) "пбп_ПредопределенныеЗначения"
## Описание подсистемы

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

Для удобной работы с ПВХ у нас есть следующие функции:
- **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение(Имя, ИспользоватьКэш)** - если это единичное значение, возвращается сразу оно, если установлен флаг "Список значений" то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имя - Строка
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- ПроизвольныйТип - Значение переменной ПВХ.
- Массив - Массив значений переменной ПВХ.
- **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения(Имена, ВРазрезеКлючей, ИспользоватьКэш)** - если "ВРазрезеКлючей" то возвращает соответствие нескольких элементов ПВХ, если ВРазрезеКлючей = ложь, то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имена - Строка - Имена переменных ПВХ, перечисленные через запятую.
- ВРазрезеКлючей - Булево
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- Соответствие - Соответствие имен и значений переменных ПВХ.
- Ключ - Строка - имя значения
- Значение - ПроизвольныйТип
- Массив - ПроизвольныйТип
## Добавление новых элементов

В модуле **пбп_ПредопределенныеЗначенияПереопределяемый** значения добавляются через метод **Добавить()** коллекции **Результат**, которая представляет собой таблицу предопределённых значений. Каждая новая запись в этой таблице может быть настроена как группа путём установки свойства ЭтоГруппа в значение Истина.
**ИдентификаторНастройки**: Уникальный идентификатор группы, который используется для внутренних ссылок и связей между группами.
**Родитель**: Идентификатор настройки родительской группы, указывается для элементов и групп являющихся подгруппами.
**УровеньИерархии**: Целочисленное значение, определяющее уровень группы в иерархической структуре. Этот параметр используется для обеспечения правильного порядка создания групп, где сначала должны быть созданы группы верхнего уровня, а затем вложенные.
- **ИдентификаторНастройки**: Уникальный идентификатор группы, который используется для внутренних ссылок и связей между группами.
- **Родитель**: Идентификатор настройки родительской группы, указывается для элементов и групп являющихся подгруппами.
- **УровеньИерархии**: Целочисленное значение, определяющее уровень группы в иерархической структуре. Этот параметр используется для обеспечения правильного порядка создания групп, где сначала должны быть созданы группы верхнего уровня, а затем вложенные.

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

Expand Down Expand Up @@ -77,6 +61,27 @@
КонецФункции
```

## Получение значения элементов

Для удобной работы с ПВХ у нас есть следующие функции:
- **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенноеЗначение(Имя, ИспользоватьКэш)** - если это единичное значение, возвращается сразу оно, если установлен флаг "Список значений" то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имя - Строка
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- ПроизвольныйТип - Значение переменной ПВХ.
- Массив - Массив значений переменной ПВХ.
- **пбп_ОбщегоНазначенияСервер.ПолучитьПредопределенныеЗначения(Имена, ВРазрезеКлючей, ИспользоватьКэш)** - если "ВРазрезеКлючей" то возвращает соответствие нескольких элементов ПВХ, если ВРазрезеКлючей = ложь, то возвращает массив значений. Для получения часто используемых предопределенных значений, установите ИспользоватьКэш = Истина.
- Параметры:
- Имена - Строка - Имена переменных ПВХ, перечисленные через запятую.
- ВРазрезеКлючей - Булево
- ИспользоватьКэш - Булево
- Возвращаемое значение:
- Соответствие - Соответствие имен и значений переменных ПВХ.
- Ключ - Строка - имя значения
- Значение - ПроизвольныйТип
- Массив - ПроизвольныйТип

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

```1C (BSL)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT company
//
// 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/
//

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

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

Процедура ЗаполнитьПредопределенныеСоответствия() Экспорт

ТЗПредопределенныхЗначений = пбп_ИнтеграцииПереопределяемый.ПредопределенныеЗначенияИнтегрируемыеСистемы();

пбп_ПредопределенныеЗначения.ОбработатьПредопределенныеЗначения(
ТЗПредопределенныхЗначений,
Справочники.пбп_ИнтегрируемыеСистемы);

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

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

#КонецЕсли

Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()

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

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

&НаКлиенте
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,6 @@

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

Процедура ЗаполнитьПредопределенныеСоответствия() Экспорт

ТЗПредопределенныхЗначений = пбп_ИнтеграцииПереопределяемый.ПредопределенныеЗначенияМетодыИнтеграции();

пбп_ПредопределенныеЗначения.ОбработатьПредопределенныеЗначения(
ТЗПредопределенныхЗначений,
Справочники.пбп_МетодыИнтеграции);

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

// Получает структуру параметров метода интеграции со значениями по умолчанию
//
// Параметры:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()

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

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

&НаКлиенте
Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT company
//
// 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/
//

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

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

Процедура ЗаполнитьПредопределенныеСоответствия() Экспорт

ТЗПредопределенныхЗначений = пбп_ИнтеграцииПереопределяемый.ПредопределенныеЗначенияНастройкиИнтеграции();

пбп_ПредопределенныеЗначения.ОбработатьПредопределенныеЗначения(
ТЗПредопределенныхЗначений,
Справочники.пбп_НастройкиИнтеграции);

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

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

#КонецЕсли

Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@

&НаСервереБезКонтекста
Процедура ЗаполнитьПредопределенныеНаСервере()

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

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

&НаКлиенте
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

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

Check warning on line 17 in src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/ChartsOfCharacteristicTypes/пбп_ПредопределенныеЗначения/Forms/ФормаСписка/Ext/Form/Module.bsl#L17

Длина строки 125 превышает максимально допустимую 120
КонецПроцедуры

&НаКлиенте
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,31 +27,31 @@
// Возвращает значение предопределенного элемента ПВХ по имени.
//
// Параметры:
// Имя - Строка - Имя переменной ПВХ.
// Идентификатор - Строка - Идентификатор переменной ПВХ.
//
// Возвращаемое значение:
// - ПроизвольныйТип - Значение переменной ПВХ.
// - Массив - Массив значений переменной ПВХ.
//
Функция ПолучитьПредопределенноеЗначение(Имя) Экспорт
Функция ПолучитьПредопределенноеЗначение(Идентификатор) Экспорт

Возврат ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения.ПолучитьЗначение(Имя);
Возврат ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения.ПолучитьЗначение(Идентификатор);

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

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

Возврат ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения.ПолучитьЗначения(Имена, ВРазрезеКлючей);
Возврат ПланыВидовХарактеристик.пбп_ПредопределенныеЗначения.ПолучитьЗначения(Идентификаторы, ВРазрезеКлючей);

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

Expand Down
Loading

0 comments on commit 2bb5c52

Please sign in to comment.