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

Added func to add folders #70

Merged
merged 3 commits into from
May 14, 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
33 changes: 33 additions & 0 deletions docs/ПредопределенныеЗначения.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@
- Значение - ПроизвольныйТип
- Массив - ПроизвольныйТип

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

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

```1C (BSL)
Expand All @@ -35,6 +40,34 @@
НоваяНастройка.Пароль = Истина;
НоваяНастройка.СписокЗначений = Ложь;
НоваяНастройка.ТипЗначения = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));
НоваяНастройка.Родитель = "Доступ_ИТС"; // Указывается идентификатор настройки группы
// КонецДобавления

Возврат Результат;

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

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

```1C (BSL)
Функция ПредопределенныеЗначения() Экспорт

Результат = ТаблицаПредопределенных();

// Добавление
НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграции";
НоваяНастройка.ИдентификаторНастройки = "Интеграции";
НоваяНастройка.ЭтоГруппа = Истина;
НоваяНастройка.УровеньИерархии = 0;

НоваяНастройка = Результат.Добавить();
НоваяНастройка.Наименование = "Интеграции локал";
НоваяНастройка.ИдентификаторНастройки = "Интеграции_локал";
НоваяНастройка.ЭтоГруппа = Истина;
НоваяНастройка.Родитель = "Интеграции";
НоваяНастройка.УровеньИерархии = 1;
// КонецДобавления

Возврат Результат;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
Expand Down Expand Up @@ -143,7 +143,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__ИнтегрируемыеСистемы");

Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл

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

КонецЦикла;
__ПредопределенныеЗначения.СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
Справочники.__ИнтегрируемыеСистемы);

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

Expand Down
4 changes: 2 additions & 2 deletions src/cf/Catalogs/__МетодыИнтеграции.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
Expand Down Expand Up @@ -235,7 +235,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__МетодыИнтеграции");

Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл

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

КонецЦикла;
__ПредопределенныеЗначения.СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
Справочники.__МетодыИнтеграции);

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

Expand Down
4 changes: 2 additions & 2 deletions src/cf/Catalogs/__НастройкиИнтеграции.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
Expand Down Expand Up @@ -519,7 +519,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__НастройкиИнтеграции");

Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл

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

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

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<Hierarchical>true</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
Expand Down Expand Up @@ -369,7 +369,7 @@
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,10 @@
ТЗПредопределенныхЗначенийКСозданию = __ПредопределенныеЗначения.ПредопределенныеЗначенияКСозданию(
ТЗПредопределенныхЗначений,
"Справочник.__ТипСоответствияОбъектовИБ");

Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл

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

КонецЦикла;
__ПредопределенныеЗначения.СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
Справочники.__ТипСоответствияОбъектовИБ);

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<Use>ForItem</Use>
<Use>ForFolderAndItem</Use>
Copy link

Choose a reason for hiding this comment

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

Tip

Codebase Verification

Several files in the codebase still use the old <Use> tag and have not been updated to the new <Use>ForFolderAndItem</Use> tag. Please review and update these files accordingly:

  • src/cf/Catalogs/__ПользовательскиеФункции.xml
  • src/cf/Catalogs/__НастройкиОтбораОбъектов.xml
  • src/cf/Catalogs/__ИсторияИнтеграции.xml
Analysis chain

Change in <Use> tag from ForItem to ForFolderAndItem aligns with the PR objectives to enhance flexibility in data handling.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify that the `<Use>` tag change is consistently applied across similar XML configurations.

# Test: Search for other occurrences of `<Use>` tags in XML files to ensure consistency.
rg --type xml '<Use>ForItem</Use>' -l | xargs rg '<Use>ForFolderAndItem</Use>'

Length of output: 326



Script:

#!/bin/bash
# Description: Verify that no XML files are missed in the update from `<Use>ForItem</Use>` to `<Use>ForFolderAndItem</Use>`.

# Search for all XML files and check for the presence of both `<Use>` tags to ensure complete update.
rg --type xml '<Use>ForItem</Use>' -l
rg --type xml '<Use>ForFolderAndItem</Use>' -l

Length of output: 605



Script:

#!/bin/bash
# Description: Verify specific files that might not have been updated to `<Use>ForFolderAndItem</Use>`.

# Check for the absence of the new `<Use>` tag in files that only appeared in the old tag list.
rg --type xml '<Use>ForFolderAndItem</Use>' src/cf/Catalogs/__ПользовательскиеФункции.xml
rg --type xml '<Use>ForFolderAndItem</Use>' src/cf/Catalogs/__НастройкиОтбораОбъектов.xml
rg --type xml '<Use>ForFolderAndItem</Use>' src/cf/Catalogs/__ИсторияИнтеграции.xml

Length of output: 719

<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,7 @@

Результат = Новый ТаблицаЗначений;

ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));

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

Возврат Результат;

Expand All @@ -85,10 +82,7 @@

Результат = Новый ТаблицаЗначений;

ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));

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

Возврат Результат;

Expand All @@ -98,10 +92,7 @@

Результат = Новый ТаблицаЗначений;

ОписаниеСтрока = Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150));

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

Возврат Результат;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,60 @@

ТЗПредопределенныхЗначенийКСозданию = ПредопределенныеЗначенияКСозданию(ТЗПредопределенныхЗначений);

Для Каждого СтрокаТаблицы Из ТЗПредопределенныхЗначенийКСозданию Цикл
СоздатьПредопределенныеЗначения(
ТЗПредопределенныхЗначенийКСозданию,
ПланыВидовХарактеристик.__ПредопределенныеЗначения);

СоздатьПредопределенноеЗначение(СтрокаТаблицы, ПланыВидовХарактеристик.__ПредопределенныеЗначения);
КонецПроцедуры

// Создание предопределенных значений на основании заполненной таблицы
//
// Параметры:
// Таблица - ТаблицаЗначений - см. __ПредопределенныеЗначенияПереопределяемыйТаблицаПредопределенных,
// __ТипСоответствияОбъектовИБПереопределяемый.ТаблицаПредопределенных
// МенеджерОбъекта - СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.

Check warning on line 40 in src/cf/CommonModules/__ПредопределенныеЗначения/Ext/Module.bsl

View check run for this annotation

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

src/cf/CommonModules/__ПредопределенныеЗначения/Ext/Module.bsl#L40

Длина строки 123 превышает максимально допустимую 120
Copy link

Choose a reason for hiding this comment

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

Reduce the line length to adhere to best practices, possibly by breaking the line into multiple lines.

- //  МенеджерОбъекта	 - СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.
+ //  МенеджерОбъекта	 - СправочникМенеджер, ДокументМенеджер,
+ //                      ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.

Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
// МенеджерОбъекта - СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.
// МенеджерОбъекта - СправочникМенеджер, ДокументМенеджер,
// ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта.

//
Процедура СоздатьПредопределенныеЗначения(Таблица, МенеджерОбъекта) Экспорт

Если Не ЗначениеЗаполнено(Таблица) Тогда
Возврат;
КонецЕсли;

Группы = Новый Соответствие;
КолонкаСуществует = Таблица.Колонки.Найти("ЭтоГруппа") <> Неопределено;

Если КолонкаСуществует Тогда

// Сначала создаются группы, затем элементы
Таблица.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии");

ТекстЗапроса =
"ВЫБРАТЬ

Check warning on line 57 in src/cf/CommonModules/__ПредопределенныеЗначения/Ext/Module.bsl

View check run for this annotation

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

src/cf/CommonModules/__ПредопределенныеЗначения/Ext/Module.bsl#L57

Текст запроса должен быть корректным и открываться конструктором запросов
| __ПредопределенныеЗначения.Ссылка КАК Ссылка,
| __ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки
|ИЗ
| %1 КАК __ПредопределенныеЗначения
|ГДЕ
| __ПредопределенныеЗначения.ЭтоГруппа";

ПолноеИмяОМ = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)).ПолноеИмя();

Запрос = Новый Запрос;
Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОМ);

ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Группы.Вставить(ВыборкаДетальныеЗаписи.ИдентификаторНастройки, ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
КонецЕсли;

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

КонецПроцедуры
Expand Down Expand Up @@ -75,18 +125,43 @@

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

Процедура СоздатьПредопределенноеЗначение(СтрокаТаблицы, МенеджерОбъекта) Экспорт
Процедура СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, Группы)

НоваяГруппа = МенеджерОбъекта.СоздатьГруппу();
ЗаполнитьЗначенияСвойств(НоваяГруппа, СтрокаТаблицы, "Наименование,ИдентификаторНастройки");
Если ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда
Родитель = Группы.Получить(СтрокаТаблицы.Родитель);
НоваяГруппа.Родитель = Родитель;
КонецЕсли;

Попытка
НоваяГруппа.Записать();
Исключение
__ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;

Группы.Вставить(СтрокаТаблицы.ИдентификаторНастройки, НоваяГруппа.Ссылка);

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

Процедура СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, Родители, ЗаполнитьРодителя = Ложь)

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

НовыйЭлемент = МенеджерОбъекта.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы);
Если ЗаполнитьРодителя И ЗначениеЗаполнено(СтрокаТаблицы.Родитель) Тогда
Родитель = Родители.Получить(СтрокаТаблицы.Родитель);
НовыйЭлемент.Родитель = Родитель;
КонецЕсли;

// инициализация значения по умолчанию
Если ПроверяемыйТип = Тип("ПланВидовХарактеристикМенеджер.__ПредопределенныеЗначения") Тогда
НовыйПредопределенныйЭлемент.Значение = СтрокаТаблицы.ТипЗначения.ПривестиЗначение();
НовыйЭлемент.Значение = СтрокаТаблицы.ТипЗначения.ПривестиЗначение();
КонецЕсли;

Попытка
НовыйПредопределенныйЭлемент.Записать();
НовыйЭлемент.Записать();
Исключение
__ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;
Expand Down
Loading
Loading