Skip to content

Commit

Permalink
fixed bugs (#136)
Browse files Browse the repository at this point in the history
Исправлены ошибки при обновлении предопределенных элементов
  • Loading branch information
denisushakov authored Nov 1, 2024
1 parent b2da9de commit 3ae4103
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -150,11 +150,15 @@
нСтрока[ПрефиксКод + КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЦикла;

Выборка.НайтиСледующий(Строка.Служеб_ПредопределенныйЭлемент, "Ссылка");
ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Выборка);
Для Каждого КлючЗначение Из БазоваяСтруктура Цикл
нСтрока[ПрефиксБаза + КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЦикла;
Выборка.Сбросить();
Если Выборка.НайтиСледующий(Строка.Служеб_ПредопределенныйЭлемент, "Ссылка") Тогда
ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Выборка);
Для Каждого КлючЗначение Из БазоваяСтруктура Цикл
нСтрока[ПрефиксБаза + КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЦикла;
Иначе
СообщитьОбОтсутствииЭлемента(Строка.ИдентификаторНастройки);
КонецЕсли;
КонецЦикла;

КонецПроцедуры
Expand Down Expand Up @@ -199,4 +203,20 @@
КонецЦикла;
КонецПроцедуры

#Область СообщенияОСобытии

&НаСервере
Процедура СообщитьОбОтсутствииЭлемента(Идентификатор)

ТекстСообщения = НСтр("ru = 'Элемент '%1' отсутствуют в базе!';
|en = 'The element '%1' is missing from the database!'");
ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстСообщения,
Идентификатор);
пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения);

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

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

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,10 @@

ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ПолноеИмяОбъекта);

ТаблицаПредопределенных.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии");

ОбработатьДублиИдентификаторов(ТаблицаПредопределенных);

ИдентификаторыНастроек = ТаблицаПредопределенных.ВыгрузитьКолонку("ИдентификаторНастройки");

Запрос = Новый Запрос;
Expand Down Expand Up @@ -447,9 +451,9 @@
СтрокаТаблицы.Родитель,
Родители[СтрокаТаблицы.ИдентификаторРодитель]);

Элемент.Родитель = НовыйРодитель;

РодительОтличается = Элемент.Родитель <> НовыйРодитель;

Элемент.Родитель = НовыйРодитель;
КонецЕсли;

Свойства = ЗаполняемыеИсключаемыеСвойства(СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов, Элемент.ЭтоГруппа);
Expand Down Expand Up @@ -554,6 +558,28 @@

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

Процедура СообщитьОДублированииИдентификаторов(Идентификатор)

ТекстСообщения = НСтр("ru = 'Идентификатор ''%1'' не уникален!';
|en = 'Identifier ''%1'' is not unique!'");
ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстСообщения,
Идентификатор);
пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения);

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

Процедура СообщитьОНезаполненностиИдентификатора(Наименование)

ТекстСообщения = НСтр("ru = 'Идентификатор ''%1'' не заполнен!';
|en = 'Identifier ''%1'' is not filled!'");
ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстСообщения,
Наименование);
пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения);

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

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

Процедура ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Обновление = Ложь)
Expand Down Expand Up @@ -605,4 +631,42 @@

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

Процедура ОбработатьДублиИдентификаторов(Таблица)

Просмотренные = Новый Соответствие;

СтрокиДляУдаления = Новый Массив;
Для Каждого Строка Из Таблица Цикл
Если ПустаяСтрока(Строка.ИдентификаторНастройки) Тогда
СообщитьОНезаполненностиИдентификатора(Строка.Наименование);
Продолжить;
КонецЕсли;

ИндексСтроки = Таблица.Индекс(Строка);

Стр = Просмотренные[Строка.ИдентификаторНастройки];
Если Стр <> Неопределено Тогда
Если Стр.Первый Тогда
СтрокиДляУдаления.Добавить(Таблица[Стр.Индекс]);
КонецЕсли;

СтрокиДляУдаления.Добавить(Строка);
Стр.Индекс = ИндексСтроки;
Стр.Первый = Ложь;

СообщитьОДублированииИдентификаторов(Строка.ИдентификаторНастройки);
Иначе
Стр = Новый Структура;
Стр.Вставить("Индекс", ИндексСтроки);
Стр.Вставить("Первый", Истина);
Просмотренные.Вставить(Строка.ИдентификаторНастройки, Стр);
КонецЕсли;
КонецЦикла;

Для Каждого Строка Из СтрокиДляУдаления Цикл
Таблица.Удалить(Строка);
КонецЦикла;

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

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

0 comments on commit 3ae4103

Please sign in to comment.