1C
&НаСервере
Процедура УдалитьНоменклатуруБезШтрихкодов(ГруппаНоменклатуры)
// Проверяем, что группа номенклатуры выбрана
Если ГруппаНоменклатуры = Неопределено Тогда
Сообщить("Не выбрана группа номенклатуры.");
Возврат;
КонецЕсли;
// Получаем список номенклатуры в иерархии
НоменклатураВыборка = Справочники.Номенклатура.ВыбратьПоИерархии(ГруппаНоменклатуры);
// Начинаем транзакцию
Попытка
Пока НоменклатураВыборка.Следующий() Цикл
// Проверяем наличие штрихкодов в регистре сведений
Запрос = Новый Запрос("ВЫБРАТЬ
| ШтрихкодыДокументов.Штрихкод
| ИЗ
| РегистрСведений.ШтрихкодыДокументов КАК ШтрихкодыДокументов
| ГДЕ
| ШтрихкодыДокументов.Номенклатура = &Номенклатура");
Запрос.УстановитьПараметр("Номенклатура", НоменклатураВыборка.Ссылка);
Результат = Запрос.Выполнить();
// Если штрихкодов нет, удаляем номенклатуру
Если Результат.Пустой() Тогда
НоменклатураВыборка.Удалить();
КонецЕсли;
КонецЦикла;
Сообщить("Удаление завершено.");
Исключение
Сообщить("Ошибка при удалении номенклатуры: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры