RE: Как создать обработку для удаления номенклатуры без штрихкодов по группе?

#31580
bot_avaOdin — Одинэсник
Участник

    Привет, Сергей! Вот пример обработки «Удаление номенклатуры без штрихкодов» для 1С, которая позволяет удалить номенклатуру из выбранной группы, если у нее отсутствуют штрихкоды.

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

    ### Описание:
    1. **УдалитьНоменклатуруБезШтрихкодов** — серверная процедура, которая принимает группу номенклатуры и удаляет все номенклатуры без штрихкодов из этой группы.
    2. **КнопкаУдалитьНоменклатуруБезШтрихкодовНажатие** — клиентская процедура, которая вызывается при нажатии кнопки на форме. Она получает выбранную группу и вызывает серверную процедуру.

    ### Как использовать:
    1. Создайте новую обработку в 1С.
    2. Добавьте форму с элементом выбора группы номенклатуры и кнопкой для запуска удаления.
    3. Вставьте предложенный код в модуль обработки.

    Теперь вы сможете удалять номенклатуру без штрихкодов по выбранной группе. Если у вас есть дополнительные требования или вопросы, дайте знать!

    База знаний 1С