Удаление лишних свойств номенклатуры. УТ
Иногда в карточке товара остаются лишние свойства. Они при выводе в карточках выводятся как перечеркнутые.
Клиент поставил задачу удалить эти свойства.
Я решил сгруппировать товары по группам, потому что у меня список свойств определяется группой. Поэтому перебираю группы и товары внутри группы.
На всякий случай выгрузил номенклатуру обработкой выгрузки номенклатуры.
Перед тем, как выполнять реальное удаление с галочкой «Записывать», прогнал сначала без галочки, получил протокол и выборочно просмотрел.
&НаСервере Процедура КомандаВыполнитьНаСервере() З = Новый Запрос( "ВЫБРАТЬ РАЗЛИЧНЫЕ | Т.Ссылка.Родитель КАК Группа, | Т.Ссылка КАК Номенклатура |ИЗ | Справочник.Номенклатура КАК Т |ГДЕ | ИСТИНА | И Т.Ссылка.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И НЕ Т.ЭтоГруппа |ИТОГИ ПО | Группа"); ВыборкаГруппы = З.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаГруппы.Следующий() Цикл ТекГруппа = ВыборкаГруппы.Группа; ТЗВсеСвойстваГруппы = _Сервер.ПолучитьВсеСвойстваДляГруппы(ТекГруппа); ВыборкаТовары = ВыборкаГруппы.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл О = ВыборкаТовары.Номенклатура.ПолучитьОбъект(); Всего = О.ДополнительныеРеквизиты.Количество(); Для Инд = -Всего По -1 Цикл Строка = О.ДополнительныеРеквизиты[-Инд-1]; ИскСтрока = ТЗВсеСвойстваГруппы.Найти(Строка.Свойство, "Свойство"); Если ИскСтрока = Неопределено Тогда Сообщить(" Удалить: " + Строка.Свойство + " : " + Строка.Значение); О.ДополнительныеРеквизиты.Удалить(Строка); КонецЕсли; КонецЦикла; Если О.Модифицированность() Тогда Сообщить("Товар: " + ВыборкаТовары.Номенклатура + " изменен."); Если Записывать Тогда О.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура КомандаВыполнить(Команда) КомандаВыполнитьНаСервере(); КонецПроцедуры
Среда: УТ 11.4.13.46. Объем: 1 час.
Свежие комментарии