From b3be3067f3eb7c14b9313cb9d9f0b3ffdbaf1005 Mon Sep 17 00:00:00 2001 From: Denis Ushakov Date: Mon, 21 Oct 2024 18:16:31 +0300 Subject: [PATCH 1/3] refactoring the creation of hierarchical elements --- .../Ext/Module.bsl" | 348 +++++++++--------- .../Ext/Module.bsl" | 2 + 2 files changed, 180 insertions(+), 170 deletions(-) diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" index 7928b42e..ca75dddd 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" @@ -69,6 +69,76 @@ КонецФункции +// Подготавливает параметры необходимые для обработки предопределенных элементов +// +// Параметры: +// Таблица - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных. +// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// +// Возвращаемое значение: +// Структура - Данные Менеджера объекта +// * Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. +// * ПолноеИмя - Строка - Полное имя объекта метаданных. +// +Функция ДопПараметрыОбработкиПредопределенныхЭлементов(Таблица, МенеджерОбъекта) Экспорт + + ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)); + + Параметры = Новый Структура; + Параметры.Вставить("Менеджер", МенеджерОбъекта); + Параметры.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + Параметры.Вставить("Иерархический", ОбъектМетаданных.Иерархический); + + ИерархияГруппИЭлементов = ОбъектМетаданных.Иерархический; + Если Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда + ИерархияГруппИЭлементов = + ОбъектМетаданных.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов; + КонецЕсли; + Параметры.Вставить("ИерархияГруппИЭлементов", ИерархияГруппИЭлементов); + + мКолонки = Новый Массив; + Для Каждого Колонка Из Таблица.Колонки Цикл + мКолонки.Добавить(Колонка.Имя); + КонецЦикла; + + Параметры.Вставить("КлючиХешаЭлемент", КлючиХешаПредопределенногоЭлемента(мКолонки, Ложь)); + Параметры.Вставить("КлючиХешаГруппа", КлючиХешаПредопределенногоЭлемента(мКолонки, Истина)); + + Возврат Параметры; + +КонецФункции + +// Возвращает ключи хеша на основании массива полей элемента +// +// Параметры: +// Поля - Массив - Поля для формирования ключей хеша +// ЭтоГруппа - Булево - От этого признака зависят исключаемые поля +// +// Возвращаемое значение: +// Структура - Ключи хеша +// +Функция КлючиХешаПредопределенногоЭлемента(Поля, ЭтоГруппа = Ложь) Экспорт + + мКлючи = Новый Массив; + + Если ЭтоГруппа Тогда + ИсключаемыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.ИсключаемыеПоляДляРасчетаХешаГруппа(); + Иначе + ИсключаемыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.ИсключаемыеПоляДляРасчетаХешаЭлемент(); + КонецЕсли; + + Для Каждого Поле Из Поля Цикл + Если ИсключаемыеПоля.Свойство(Поле) + Или СтрНачинаетсяС(Поле, "Служеб_") Тогда + Продолжить; + КонецЕсли; + мКлючи.Добавить(Поле); + КонецЦикла; + + Возврат Новый Структура(СтрСоединить(мКлючи, ",")); + +КонецФункции + // Получает все предопределенные элементы объекта, помечает на удаление те, которые удалены из кода. // При установке пометки удаления для групп, также устанавливается для всех подчиенных элементов. // @@ -113,6 +183,63 @@ КонецПроцедуры +// Заполняет существующих родителей предопределенных элементов +// +// Параметры: +// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных +// ДополнительныеПараметры - Структура - см.пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов +// +Процедура ЗаполнитьРодителейЭлементов(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт + + Идентификаторы = ТаблицаПредопределенных.ВыгрузитьКолонку("ИдентификаторРодитель"); + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка, + | пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки + |ИЗ + | %1 КАК пбп_ПредопределенныеЗначения + |ГДЕ + | пбп_ПредопределенныеЗначения.ИдентификаторНастройки В(&ИдентификаторыРодитель)"; + + Запрос.Текст = СтрШаблон(Запрос.Текст, ДополнительныеПараметры.ПолноеИмя); + + Запрос.УстановитьПараметр("ИдентификаторыРодитель", Идентификаторы); + + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Для Каждого Строка Из ТаблицаПредопределенных Цикл + ВыборкаДетальныеЗаписи.Сбросить(); + Если ВыборкаДетальныеЗаписи.НайтиСледующий(Строка.ИдентификаторРодитель, "ИдентификаторНастройки") Тогда + Строка.Родитель = ВыборкаДетальныеЗаписи.Ссылка; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Заполняет хеш предопределенных элементов +// +// Параметры: +// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных +// ДополнительныеПараметры - Структура - см.пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов +// +Процедура ЗаполнитьКонтрольныеСуммыТаблицы(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт + + Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда + Возврат; + КонецЕсли; + + Для Каждого Строка Из ТаблицаПредопределенных Цикл + КлючиХеша = ?(Строка.ЭтоГруппа, ДополнительныеПараметры.КлючиХешаГруппа, ДополнительныеПараметры.КлючиХешаЭлемент); + ЗаполнитьЗначенияСвойств(КлючиХеша, Строка); + Строка.ХешСумма = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); + КонецЦикла; + +КонецПроцедуры + // После удаления уже существующих элементов, остаются только актуальные значения // для создания предопределенных элементов. // @@ -194,130 +321,27 @@ ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ПолноеИмяОбъекта); - Группы = Новый Соответствие; - КолонкаСуществует = ТаблицаПредопределенных.Колонки.Найти("ЭтоГруппа") <> Неопределено; - - Если КолонкаСуществует Тогда - - // Сначала создаются группы, затем элементы - ТаблицаПредопределенных.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии"); - - ТекстЗапроса = - "ВЫБРАТЬ - | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка, - | пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки - |ИЗ - | %1 КАК пбп_ПредопределенныеЗначения - |ГДЕ - | пбп_ПредопределенныеЗначения.ЭтоГруппа"; - - Запрос = Новый Запрос; - Запрос.Текст = СтрШаблон(ТекстЗапроса, ПолноеИмяОбъекта); - - ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать(); - - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - Группы.Вставить(ВыборкаДетальныеЗаписи.ИдентификаторНастройки, ВыборкаДетальныеЗаписи.Ссылка); - КонецЦикла; - КонецЕсли; - + Родители = Новый Соответствие; Для Каждого СтрокаТаблицы Из ТаблицаПредопределенных Цикл - ЭтоГруппа = КолонкаСуществует И СтрокаТаблицы.ЭтоГруппа; + СтрокаТаблицы.Служеб_Иерархический = ДополнительныеПараметры.Иерархический; + СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов; + + ЭтоГруппа = СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов И СтрокаТаблицы.ЭтоГруппа; КлючиХеша = ?(ЭтоГруппа, ДополнительныеПараметры.КлючиХешаГруппа, ДополнительныеПараметры.КлючиХешаЭлемент); Если СтрокаТаблицы.Служеб_ОбновитьЭлемент Тогда - ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Группы, КолонкаСуществует); + ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители); ИначеЕсли СтрокаТаблицы.Служеб_УстановитьФлагРучноеИзменение Тогда УстановитьФлагРучноеИзменение(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент); ИначеЕсли СтрокаТаблицы.Служеб_СоздатьЗаписьРегистра Тогда СоздатьЗаписьСостоянияПредопределенногоЭлемента(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент, ЭтоГруппа, КлючиХеша); Иначе - СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Группы, КолонкаСуществует); + СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители); КонецЕсли; КонецЦикла; КонецПроцедуры -// Подготавливает параметры необходимые для обработки предопределенных элементов -// -// Параметры: -// Таблица - ТаблицаЗначений - см. пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных. -// МенеджерОбъекта - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. -// -// Возвращаемое значение: -// Структура - Данные Менеджера объекта -// * Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта. -// * ПолноеИмя - Строка - Полное имя объекта метаданных. -// -Функция ДопПараметрыОбработкиПредопределенныхЭлементов(Таблица, МенеджерОбъекта) Экспорт - - Параметры = Новый Структура; - Параметры.Вставить("Менеджер", МенеджерОбъекта); - Параметры.Вставить("ПолноеИмя", Метаданные.НайтиПоТипу(ТипЗнч(МенеджерОбъекта)).ПолноеИмя()); - - мКолонки = Новый Массив; - Для Каждого Колонка Из Таблица.Колонки Цикл - мКолонки.Добавить(Колонка.Имя); - КонецЦикла; - - Параметры.Вставить("КлючиХешаЭлемент", КлючиХешаПредопределенногоЭлемента(мКолонки, Ложь)); - Параметры.Вставить("КлючиХешаГруппа", КлючиХешаПредопределенногоЭлемента(мКолонки, Истина)); - - Возврат Параметры; - -КонецФункции - -// Заполняет хеш предопределенных элементов -// -// Параметры: -// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных -// ДополнительныеПараметры - Структура - см.пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов -// -Процедура ЗаполнитьКонтрольныеСуммыТаблицы(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт - - Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда - Возврат; - КонецЕсли; - - Для Каждого Строка Из ТаблицаПредопределенных Цикл - КлючиХеша = ?(Строка.ЭтоГруппа, ДополнительныеПараметры.КлючиХешаГруппа, ДополнительныеПараметры.КлючиХешаЭлемент); - ЗаполнитьЗначенияСвойств(КлючиХеша, Строка); - Строка.ХешСумма = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); - КонецЦикла; - -КонецПроцедуры - -// Возвращает ключи хеша на основании массива полей элемента -// -// Параметры: -// Поля - Массив - Поля для формирования ключей хеша -// ЭтоГруппа - Булево - От этого признака зависят исключаемые поля -// -// Возвращаемое значение: -// Структура - Ключи хеша -// -Функция КлючиХешаПредопределенногоЭлемента(Поля, ЭтоГруппа = Ложь) Экспорт - - мКлючи = Новый Массив; - - Если ЭтоГруппа Тогда - ИсключаемыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.ИсключаемыеПоляДляРасчетаХешаГруппа(); - Иначе - ИсключаемыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.ИсключаемыеПоляДляРасчетаХешаЭлемент(); - КонецЕсли; - - Для Каждого Поле Из Поля Цикл - Если ИсключаемыеПоля.Свойство(Поле) - Или СтрНачинаетсяС(Поле, "Служеб_") Тогда - Продолжить; - КонецЕсли; - мКлючи.Добавить(Поле); - КонецЦикла; - - Возврат Новый Структура(СтрСоединить(мКлючи, ",")); - -КонецФункции - // Обновляет хеш элемента в регистре, устанавливая при этом ручное изменение. // // Параметры: @@ -347,12 +371,12 @@ #Область СлужебныеПроцедурыИФункции -Процедура СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя = Ложь) +Процедура СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители) - Если СтрокаТаблицы.ЭтоГруппа Тогда + Если СтрокаТаблицы.Служеб_Иерархический И СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов И СтрокаТаблицы.ЭтоГруппа Тогда СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители); Иначе - СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя); + СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители); КонецЕсли; КонецПроцедуры @@ -362,7 +386,7 @@ НоваяГруппа = МенеджерОбъекта.СоздатьГруппу(); ЗаполнитьЗначенияСвойств(НоваяГруппа, СтрокаТаблицы, "Наименование,ИдентификаторНастройки"); - ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НоваяГруппа); + ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НоваяГруппа, Истина); Если ЗначениеЗаполнено(СтрокаТаблицы.ИдентификаторРодитель) Тогда Родитель = Группы.Получить(СтрокаТаблицы.ИдентификаторРодитель); @@ -379,15 +403,17 @@ КонецПроцедуры -Процедура СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя = Ложь) +Процедура СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители) НовыйЭлемент = МенеджерОбъекта.СоздатьЭлемент(); - ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы); - ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НовыйЭлемент); + ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы, , "Родитель"); + ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НовыйЭлемент, СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов); - Если ЗаполнитьРодителя И ЗначениеЗаполнено(СтрокаТаблицы.ИдентификаторРодитель) Тогда - Родитель = Родители.Получить(СтрокаТаблицы.ИдентификаторРодитель); + Если СтрокаТаблицы.Служеб_Иерархический И ЗначениеЗаполнено(СтрокаТаблицы.ИдентификаторРодитель) Тогда + Родитель = ?(ЗначениеЗаполнено(СтрокаТаблицы.Родитель), + СтрокаТаблицы.Родитель, + Родители[СтрокаТаблицы.ИдентификаторРодитель]); НовыйЭлемент.Родитель = Родитель; КонецЕсли; @@ -397,9 +423,13 @@ пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки()); КонецПопытки; + Если СтрокаТаблицы.Служеб_Иерархический И Не СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов Тогда + Родители.Вставить(СтрокаТаблицы.ИдентификаторНастройки, НовыйЭлемент.Ссылка); + КонецЕсли; + КонецПроцедуры -Процедура ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители, ЗаполнитьРодителя = Ложь) +Процедура ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители) Если Не ЗначениеЗаполнено(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент) Тогда Возврат; @@ -411,26 +441,21 @@ КонецЕсли; РодительОтличается = Ложь; - Если ЗаполнитьРодителя Тогда - Если Не ПустаяСтрока(СтрокаТаблицы.ИдентификаторРодитель) Или ЗначениеЗаполнено(Элемент.Родитель) Тогда - НовыйРодитель = Родители[СтрокаТаблицы.ИдентификаторРодитель]; - РодительОтличается = Элемент.Родитель <> НовыйРодитель; - Если РодительОтличается Тогда - Элемент.Родитель = НовыйРодитель; - КонецЕсли; - КонецЕсли; + Если СтрокаТаблицы.Служеб_Иерархический + И (Не ПустаяСтрока(СтрокаТаблицы.ИдентификаторРодитель) Или ЗначениеЗаполнено(Элемент.Родитель)) Тогда + НовыйРодитель = ?(ЗначениеЗаполнено(СтрокаТаблицы.Родитель), + СтрокаТаблицы.Родитель, + Родители[СтрокаТаблицы.ИдентификаторРодитель]); + + Элемент.Родитель = НовыйРодитель; + + РодительОтличается = Элемент.Родитель <> НовыйРодитель; КонецЕсли; - СписокСвойств = ""; - ИсключаяСвойства = ""; - Если Элемент.ЭтоГруппа Тогда - СписокСвойств = "Наименование,ИдентификаторНастройки"; - Иначе - ИсключаяСвойства = "Родитель"; - КонецЕсли; - ЗаполнитьЗначенияСвойств(Элемент, СтрокаТаблицы, СписокСвойств, ИсключаяСвойства); + Свойства = ЗаполняемыеИсключаемыеСвойства(СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов, Элемент.ЭтоГруппа); + ЗаполнитьЗначенияСвойств(Элемент, СтрокаТаблицы, Свойства.СписокСвойств, Свойства.ИсключаяСвойства); - ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент); + ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент, СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов); Попытка ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Истина); @@ -444,11 +469,11 @@ КонецПроцедуры -Процедура ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент) +Процедура ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент, ИерархияГруппИЭлементов = Ложь) ПроверяемыйТип = ТипЗнч(МенеджерОбъекта); Если ПроверяемыйТип = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") - И Не Элемент.ЭтоГруппа Тогда + И ИерархияГруппИЭлементов И Не Элемент.ЭтоГруппа Тогда Элемент.Значение = Элемент.ТипЗначения.ПривестиЗначение(); КонецЕсли; @@ -531,37 +556,6 @@ #КонецОбласти -Процедура ЗаполнитьРодителейЭлементов(Таблица, Параметры) - - Идентификаторы = Таблица.ВыгрузитьКолонку("ИдентификаторРодитель"); - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | пбп_ПредопределенныеЗначения.Ссылка КАК Ссылка, - | пбп_ПредопределенныеЗначения.ИдентификаторНастройки КАК ИдентификаторНастройки - |ИЗ - | %1 КАК пбп_ПредопределенныеЗначения - |ГДЕ - | пбп_ПредопределенныеЗначения.ИдентификаторНастройки В(&ИдентификаторыРодитель)"; - - Запрос.Текст = СтрШаблон(Запрос.Текст, Параметры.ПолноеИмя); - - Запрос.УстановитьПараметр("ИдентификаторыРодитель", Идентификаторы); - - РезультатЗапроса = Запрос.Выполнить(); - - ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); - - Для Каждого Строка Из Таблица Цикл - ВыборкаДетальныеЗаписи.Сбросить(); - Если ВыборкаДетальныеЗаписи.НайтиСледующий(Строка.ИдентификаторРодитель, "ИдентификаторНастройки") Тогда - Строка.Родитель = ВыборкаДетальныеЗаписи.Ссылка; - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - Процедура ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Обновление = Ложь) Элемент.ДополнительныеСвойства.Вставить("РучноеИзменение", Ложь); @@ -597,4 +591,18 @@ КонецЕсли; КонецПроцедуры +Функция ЗаполняемыеИсключаемыеСвойства(ИерархияГруппИЭлементов, ЭтоГруппа = Ложь) + + Свойства = Новый Структура("СписокСвойств,ИсключаяСвойства"); + + Если ИерархияГруппИЭлементов И ЭтоГруппа Тогда + Свойства.СписокСвойств = "Наименование,ИдентификаторНастройки"; + Иначе + Свойства.ИсключаяСвойства = "Родитель"; + КонецЕсли; + + Возврат Свойства; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" index a1a48005..d812f852 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" @@ -379,6 +379,8 @@ Колонки.Вставить("Служеб_УстановитьФлагРучноеИзменение", ОписаниеБулево); Колонки.Вставить("Служеб_ПредопределенныйЭлемент", ОписаниеТиповЭлемента); Колонки.Вставить("Служеб_СоздатьЗаписьРегистра", ОписаниеБулево); + Колонки.Вставить("Служеб_Иерархический", ОписаниеБулево); + Колонки.Вставить("Служеб_ИерархияГруппИЭлементов", ОписаниеБулево); Возврат Колонки; From 8c3d18c42cd9422122ec3118306d8b6df1bcde2b Mon Sep 17 00:00:00 2001 From: Denis Ushakov Date: Mon, 21 Oct 2024 18:51:50 +0300 Subject: [PATCH 2/3] grew version --- .../Ext/Module.bsl" | 2 +- src/cf/Configuration.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" index 1793aafd..fb73b276 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" @@ -74,7 +74,7 @@ Процедура ПриДобавленииПодсистемы(Описание) Экспорт Описание.Имя = "ПроектнаяБиблиотекаПодсистем"; - Описание.Версия = "1.0.3.9"; + Описание.Версия = "1.0.3.10"; // Требуется библиотека стандартных подсистем. Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы"); diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml index a2787696..c2d306ac 100644 --- a/src/cf/Configuration.xml +++ b/src/cf/Configuration.xml @@ -57,7 +57,7 @@ Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок Первый БИТ - 1.0.3.9 + 1.0.3.10 false false From 541136319cf8ea28b040773aaff84659213272b0 Mon Sep 17 00:00:00 2001 From: Denis Ushakov Date: Tue, 22 Oct 2024 12:41:28 +0300 Subject: [PATCH 3/3] change condition --- .../Ext/Module.bsl" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" index ca75dddd..2f98e5a1 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" @@ -473,7 +473,7 @@ ПроверяемыйТип = ТипЗнч(МенеджерОбъекта); Если ПроверяемыйТип = Тип("ПланВидовХарактеристикМенеджер.пбп_ПредопределенныеЗначения") - И ИерархияГруппИЭлементов И Не Элемент.ЭтоГруппа Тогда + И Не (ИерархияГруппИЭлементов И Элемент.ЭтоГруппа) Тогда Элемент.Значение = Элемент.ТипЗначения.ПривестиЗначение(); КонецЕсли;