1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2024-11-21 17:56:47 +02:00

Added func to add folders (#70)

Добавлена возможность создания иерархии предопределенных элементов
This commit is contained in:
DenisUshakov 2024-05-14 14:16:57 +03:00 committed by GitHub
parent 2f3422b05d
commit 37fbb59d1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 179 additions and 59 deletions

View File

@ -21,6 +21,11 @@
- Значение - ПроизвольныйТип
- Массив - ПроизвольныйТип
В модуле **__ПредопределенныеЗначенияПереопределяемый** значения добавляются через метод **Добавить()** коллекции **Результат**, которая представляет собой таблицу предопределённых значений. Каждая новая запись в этой таблице может быть настроена как группа путём установки свойства ЭтоГруппа в значение Истина.
**ИдентификаторНастройки**: Уникальный идентификатор группы, который используется для внутренних ссылок и связей между группами.
**Родитель**: Идентификатор настройки родительской группы, указывается для элементов и групп являющихся подгруппами.
**УровеньИерархии**: Целочисленное значение, определяющее уровень группы в иерархической структуре. Этот параметр используется для обеспечения правильного порядка создания групп, где сначала должны быть созданы группы верхнего уровня, а затем вложенные.
Пример добавления нового элемента в модуле __ПредопределенныеЗначенияПереопределяемый:
```1C (BSL)
@ -35,6 +40,34 @@
НоваяНастройка.Пароль = Истина;
НоваяНастройка.СписокЗначений = Ложь;
НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
НоваяНастройка.Родитель = "Доступ_ИТС"; // Указывается идентификатор настройки группы
// КонецДобавления
Возврат Результат;
КонецФункции
```
Пример добавления новой группы в модуле __ПредопределенныеЗначенияПереопределяемый:
```1C (BSL)
Функция ПредопределенныеЗначения() Экспорт
Результат = ТаблицаПредопределенных();
// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграции";
НоваяНастройка.ИдентификаторНастройки = "Интеграции";
НоваяНастройка.ЭтоГруппа = Истина;
НоваяНастройка.УровеньИерархии = 0;
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграции локал";
НоваяНастройка.ИдентификаторНастройки = "Интеграции_локал";
НоваяНастройка.ЭтоГруппа = Истина;
НоваяНастройка.Родитель = "Интеграции";
НоваяНастройка.УровеньИерархии = 1;
// КонецДобавления
Возврат Результат;

View File

@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
@ -143,7 +143,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>

View File

@ -29,12 +29,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__ИнтегрируемыеСистемы");
Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл
__ПредопределенныеЗначения.СоздатьПредопределенноеЗначение(СтрокаТаблицы, Справочники.__ИнтегрируемыеСистемы);
КонецЦикла;
__ПредопределенныеЗначения.СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
Справочники.__ИнтегрируемыеСистемы);
КонецПроцедуры

View File

@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
@ -235,7 +235,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>

View File

@ -29,12 +29,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__МетодыИнтеграции");
Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл
__ПредопределенныеЗначения.СоздатьПредопределенноеЗначение(СтрокаТаблицы, Справочники.__МетодыИнтеграции);
КонецЦикла;
__ПредопределенныеЗначения.СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
Справочники.__МетодыИнтеграции);
КонецПроцедуры

View File

@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
@ -519,7 +519,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>

View File

@ -29,12 +29,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__НастройкиИнтеграции");
Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл
__ПредопределенныеЗначения.СоздатьПредопределенноеЗначение(СтрокаТаблицы, Справочники.__НастройкиИнтеграции);
КонецЦикла;
__ПредопределенныеЗначения.СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
Справочники.__НастройкиИнтеграции);
КонецПроцедуры

View File

@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
@ -369,7 +369,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>

View File

@ -56,12 +56,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__ТипСоответствияОбъектовИБ");
Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл
__ПредопределенныеЗначения.СоздатьПредопределенноеЗначение(СтрокаТаблицы, Справочники.__ТипСоответствияОбъектовИБ);
КонецЦикла;
__ПредопределенныеЗначения.СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
Справочники.__ТипСоответствияОбъектовИБ);
КонецПроцедуры

View File

@ -576,7 +576,7 @@
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>

View File

@ -72,10 +72,7 @@
Результат = Новый ТаблицаЗначений;
ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
Результат.Колонки.Добавить("Наименование", ОписаниеСтрока);
Результат.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока);
__ПредопределенныеЗначенияПереопределяемый.ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат);
Возврат Результат;
@ -85,10 +82,7 @@
Результат = Новый ТаблицаЗначений;
ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
Результат.Колонки.Добавить("Наименование", ОписаниеСтрока);
Результат.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока);
__ПредопределенныеЗначенияПереопределяемый.ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат);
Возврат Результат;
@ -98,10 +92,7 @@
Результат = Новый ТаблицаЗначений;
ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
Результат.Колонки.Добавить("Наименование", ОписаниеСтрока);
Результат.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока);
__ПредопределенныеЗначенияПереопределяемый.ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат);
Возврат Результат;

View File

@ -26,10 +26,60 @@
ТЗПредопределенныхЗначенийКСозданию = ПредопределенныеЗначенияКСозданию(ТЗПредопределенныхЗначений);
Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл
СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
ПланыВидовХарактеристик.__ПредопределенныеЗначения);
СоздатьПредопределенноеЗначение(СтрокаТаблицы, ПланыВидовХарактеристик.__ПредопределенныеЗначения);
КонецПроцедуры
// Создание предопределенных значений на основании заполненной таблицы
//
// Параметры:
// Таблица - ТаблицаЗначений - см. __ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
// __ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных
// МенеджерОбъекта - СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.
//
Процедура СоздатьПредопределенныеЗначения(Таблица, МенеджерОбъекта) Экспорт
Если Не ЗначениеЗаполнено(Таблица) Тогда
Возврат;
КонецЕсли;
Группы = Новый Соответствие;
КолонкаСуществует = Таблица.Колонки.Найти("ЭтоГруппа") <> Неопределено;
Если КолонкаСуществует Тогда
// Сначала создаются группы, затем элементы
Таблица.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии");
ТекстЗапроса =
"ВЫБРАТЬ
| __ПредопределенныеЗначения.Ссылка КАК Ссылка,
| __ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки
|ИЗ
| %1 КАК __ПредопределенныеЗначения
|ГДЕ
| __ПредопределенныеЗначения.ЭтоГруппа";
ПолноеИмяОМ = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)).ПолноеИмя();
Запрос = Новый Запрос;
Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОМ);
ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Группы.Вставить(ВыборкаДетальныеЗаписи.ИдентификаторНастройки, ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
КонецЕсли;
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если КолонкаСуществует И СтрокаТаблицы.ЭтоГруппа Тогда
СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, Группы);
Иначе
СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, Группы, КолонкаСуществует);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@ -75,18 +125,43 @@
КонецФункции
Процедура СоздатьПредопределенноеЗначение(СтрокаТаблицы, МенеджерОбъекта) Экспорт
Процедура СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, Группы)
ПроверяемыйТип = ТипЗнч(МенеджерОбъекта);
НовыйПредопределенныйЭлемент = МенеджерОбъекта.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(НовыйПредопределенныйЭлемент, СтрокаТаблицы);
// инициализация значения по умолчанию
Если ПроверяемыйТип = Тип("ПланВидовХарактеристикМенеджер.__ПредопределенныеЗначения") Тогда
НовыйПредопределенныйЭлемент.Значение = СтрокаТаблицы.ТипЗначения.ПривестиЗначение();
НоваяГруппа = МенеджерОбъекта.СоздатьГруппу();
ЗаполнитьЗначенияСвойств(НоваяГруппа, СтрокаТаблицы, "Наименование,ИдентификаторНастройки");
Если ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда
Родитель = Группы.Получить(СтрокаТаблицы.Родитель);
НоваяГруппа.Родитель = Родитель;
КонецЕсли;
Попытка
НовыйПредопределенныйЭлемент.Записать();
НоваяГруппа.Записать();
Исключение
__ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;
Группы.Вставить(СтрокаТаблицы.ИдентификаторНастройки, НоваяГруппа.Ссылка);
КонецПроцедуры
Процедура СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, Родители, ЗаполнитьРодителя = Ложь)
ПроверяемыйТип = ТипЗнч(МенеджерОбъекта);
НовыйЭлемент = МенеджерОбъекта.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы);
Если ЗаполнитьРодителя И ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда
Родитель = Родители.Получить(СтрокаТаблицы.Родитель);
НовыйЭлемент.Родитель = Родитель;
КонецЕсли;
// инициализация значения по умолчанию
Если ПроверяемыйТип = Тип("ПланВидовХарактеристикМенеджер.__ПредопределенныеЗначения") Тогда
НовыйЭлемент.Значение = СтрокаТаблицы.ТипЗначения.ПривестиЗначение();
КонецЕсли;
Попытка
НовыйЭлемент.Записать();
Исключение
__ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;

View File

@ -1,19 +1,38 @@

#Область ПрограммныйИнтерфейс
Функция ПредопределенныеЗначения() Экспорт
Функция ПредопределенныеЗначения() Экспорт
Результат = ТаблицаПредопределенных();
ОписаниеЧисло = Новый ОписаниеТипов("Число",,, Новый КвалификаторыЧисла(10,0));
// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграции";
НоваяНастройка.ИдентификаторНастройки = "Интеграции";
НоваяНастройка.ЭтоГруппа = Истина;
НоваяНастройка.УровеньИерархии = 0;
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграции локал";
НоваяНастройка.ИдентификаторНастройки = "Интеграции_локал";
НоваяНастройка.ЭтоГруппа = Истина;
НоваяНастройка.Родитель = "Интеграции";
НоваяНастройка.УровеньИерархии = 1;
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Тестовая";
НоваяНастройка.ИдентификаторНастройки = "Тестовая";
НоваяНастройка.ЭтоГруппа = Истина;
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Количество дней хранения истории интеграции";
НоваяНастройка.ИдентификаторНастройки = "КолДнейХраненияИсторииИнтеграции";
НоваяНастройка.Пароль = Ложь;
НоваяНастройка.СписокЗначений = Ложь;
НоваяНастройка.ТипЗначения = ОписаниеЧисло;
НоваяНастройка.Родитель = "Интеграции";
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Количество дней хранения ошибок истории интеграции";
@ -21,6 +40,7 @@
НоваяНастройка.Пароль = Ложь;
НоваяНастройка.СписокЗначений = Ложь;
НоваяНастройка.ТипЗначения = ОписаниеЧисло;
НоваяНастройка.Родитель = "Интеграции";
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Тест_бул";
@ -28,6 +48,7 @@
НоваяНастройка.Пароль = Ложь;
НоваяНастройка.СписокЗначений = Ложь;
НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Булево");
НоваяНастройка.Родитель = "Тестовая";
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Тест_список";
@ -41,6 +62,18 @@
КонецФункции
Процедура ОбщиеКолонкиТаблицыПредопределенныхЗначений(Таблица) Экспорт
ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
Таблица.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока);
Таблица.Колонки.Добавить("Наименование", ОписаниеСтрока);
Таблица.Колонки.Добавить("ЭтоГруппа", Новый ОписаниеТипов("Булево"));
Таблица.Колонки.Добавить("Родитель", ОписаниеСтрока);
Таблица.Колонки.Добавить("УровеньИерархии", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(2,0)));
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -49,11 +82,10 @@
Результат = Новый ТаблицаЗначений;
ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
ОписаниеБулево = Новый ОписаниеТипов("Булево");
Результат.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока);
Результат.Колонки.Добавить("Наименование", ОписаниеСтрока);
ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат);
Результат.Колонки.Добавить("Пароль", ОписаниеБулево);
Результат.Колонки.Добавить("СписокЗначений", ОписаниеБулево);
Результат.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ОписаниеТипов"));

View File

@ -44,10 +44,7 @@
Результат = Новый ТаблицаЗначений;
ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
Результат.Колонки.Добавить("ИдентификаторНастройки", ОписаниеСтрока);
Результат.Колонки.Добавить("Наименование", ОписаниеСтрока);
__ПредопределенныеЗначенияПереопределяемый.ОбщиеКолонкиТаблицыПредопределенныхЗначений(Результат);
Возврат Результат;