From 3ae4103271625e8c1934ffd8717dc542f4ac9751 Mon Sep 17 00:00:00 2001 From: Denis Ushakov <59319861+denisushakov@users.noreply.github.com> Date: Fri, 1 Nov 2024 19:01:16 +0300 Subject: [PATCH] fixed bugs (#136) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправлены ошибки при обновлении предопределенных элементов --- .../Ext/Form/Module.bsl" | 30 ++++++-- .../Ext/Module.bsl" | 68 ++++++++++++++++++- 2 files changed, 91 insertions(+), 7 deletions(-) diff --git "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\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\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\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\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" index 8742f88b..553131be 100644 --- "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\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\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" +++ "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\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\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" @@ -150,11 +150,15 @@ нСтрока[ПрефиксКод + КлючЗначение.Ключ] = КлючЗначение.Значение; КонецЦикла; - Выборка.НайтиСледующий(Строка.Служеб_ПредопределенныйЭлемент, "Ссылка"); - ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Выборка); - Для Каждого КлючЗначение Из БазоваяСтруктура Цикл - нСтрока[ПрефиксБаза + КлючЗначение.Ключ] = КлючЗначение.Значение; - КонецЦикла; + Выборка.Сбросить(); + Если Выборка.НайтиСледующий(Строка.Служеб_ПредопределенныйЭлемент, "Ссылка") Тогда + ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Выборка); + Для Каждого КлючЗначение Из БазоваяСтруктура Цикл + нСтрока[ПрефиксБаза + КлючЗначение.Ключ] = КлючЗначение.Значение; + КонецЦикла; + Иначе + СообщитьОбОтсутствииЭлемента(Строка.ИдентификаторНастройки); + КонецЕсли; КонецЦикла; КонецПроцедуры @@ -199,4 +203,20 @@ КонецЦикла; КонецПроцедуры +#Область СообщенияОСобытии + +&НаСервере +Процедура СообщитьОбОтсутствииЭлемента(Идентификатор) + + ТекстСообщения = НСтр("ru = 'Элемент '%1' отсутствуют в базе!'; + |en = 'The element '%1' is missing from the database!'"); + ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения, + Идентификатор); + пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения); + +КонецПроцедуры + +#КонецОбласти + #КонецОбласти 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 2f98e5a1..c3b0d306 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" @@ -260,6 +260,10 @@ ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ПолноеИмяОбъекта); + ТаблицаПредопределенных.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии"); + + ОбработатьДублиИдентификаторов(ТаблицаПредопределенных); + ИдентификаторыНастроек = ТаблицаПредопределенных.ВыгрузитьКолонку("ИдентификаторНастройки"); Запрос = Новый Запрос; @@ -447,9 +451,9 @@ СтрокаТаблицы.Родитель, Родители[СтрокаТаблицы.ИдентификаторРодитель]); - Элемент.Родитель = НовыйРодитель; - РодительОтличается = Элемент.Родитель <> НовыйРодитель; + + Элемент.Родитель = НовыйРодитель; КонецЕсли; Свойства = ЗаполняемыеИсключаемыеСвойства(СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов, Элемент.ЭтоГруппа); @@ -554,6 +558,28 @@ КонецПроцедуры +Процедура СообщитьОДублированииИдентификаторов(Идентификатор) + + ТекстСообщения = НСтр("ru = 'Идентификатор ''%1'' не уникален!'; + |en = 'Identifier ''%1'' is not unique!'"); + ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения, + Идентификатор); + пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения); + +КонецПроцедуры + +Процедура СообщитьОНезаполненностиИдентификатора(Наименование) + + ТекстСообщения = НСтр("ru = 'Идентификатор ''%1'' не заполнен!'; + |en = 'Identifier ''%1'' is not filled!'"); + ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения, + Наименование); + пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения); + +КонецПроцедуры + #КонецОбласти Процедура ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Обновление = Ложь) @@ -605,4 +631,42 @@ КонецФункции +Процедура ОбработатьДублиИдентификаторов(Таблица) + + Просмотренные = Новый Соответствие; + + СтрокиДляУдаления = Новый Массив; + Для Каждого Строка Из Таблица Цикл + Если ПустаяСтрока(Строка.ИдентификаторНастройки) Тогда + СообщитьОНезаполненностиИдентификатора(Строка.Наименование); + Продолжить; + КонецЕсли; + + ИндексСтроки = Таблица.Индекс(Строка); + + Стр = Просмотренные[Строка.ИдентификаторНастройки]; + Если Стр <> Неопределено Тогда + Если Стр.Первый Тогда + СтрокиДляУдаления.Добавить(Таблица[Стр.Индекс]); + КонецЕсли; + + СтрокиДляУдаления.Добавить(Строка); + Стр.Индекс = ИндексСтроки; + Стр.Первый = Ложь; + + СообщитьОДублированииИдентификаторов(Строка.ИдентификаторНастройки); + Иначе + Стр = Новый Структура; + Стр.Вставить("Индекс", ИндексСтроки); + Стр.Вставить("Первый", Истина); + Просмотренные.Вставить(Строка.ИдентификаторНастройки, Стр); + КонецЕсли; + КонецЦикла; + + Для Каждого Строка Из СтрокиДляУдаления Цикл + Таблица.Удалить(Строка); + КонецЦикла; + +КонецПроцедуры + #КонецОбласти \ No newline at end of file