oknosoft / checkdata

Проверка данных
MIT License
2 stars 0 forks source link

Универсальная проверка родителей #115

Closed nmivan closed 5 years ago

nmivan commented 5 years ago

Иногда после косячных переносов получаются такие элементы справочников (и ПВХ) в которых в родителях выбраны не группы, а элементы. Заметил такое буквально сегодня когда переносил типовым переносом данные из УПП 1.3 в ERP. Поэтому накидал для себя такую проверку. Думаю вы включите ее в консилиум. Код вот такой:

ТекстЗапроса = "";

Для каждого ОбъектМетаданных Из Метаданные.Справочники Цикл Если ОбъектМетаданных.Иерархический И ОбъектМетаданных.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияГруппИЭлементов Тогда ТекстЗапроса = ТекстЗапроса + ?(ЗначениеЗаполнено(ТекстЗапроса), " | |ОБЪЕДИНИТЬ ВСЕ |", "") + " |ВЫБРАТЬ | Справочник.Ссылка |ИЗ | Справочник." + ОбъектМетаданных.Имя + " КАК Справочник |ГДЕ | НЕ Справочник.Родитель.ЭтоГруппа";

КонецЕсли; КонецЦикла;

Для каждого ОбъектМетаданных Из Метаданные.ПланыВидовХарактеристик Цикл Если ОбъектМетаданных.Иерархический Тогда ТекстЗапроса = ТекстЗапроса + ?(ЗначениеЗаполнено(ТекстЗапроса), " | |ОБЪЕДИНИТЬ ВСЕ |", "") + " |ВЫБРАТЬ | ПВХ.Ссылка |ИЗ | ПланВидовХарактеристик." + ОбъектМетаданных.Имя + " КАК ПВХ |ГДЕ | НЕ ПВХ.Родитель.ЭтоГруппа";

КонецЕсли; КонецЦикла;

Если ЗначениеЗаполнено(ТекстЗапроса) Тогда Запрос = Новый Запрос(ТекстЗапроса); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); КонецЦикла;

КонецЕсли;