Как удалить штрихкод номенклатуры в 1С:Розница 8.3: программные и ручные способы

Программист 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

В процессе работы с конфигурацией «1С:Розница» или другими решениями на базе «1С:Предприятие 8.3» часто возникает необходимость очистки базы от неактуальных или ошибочных штрихкодов. Эта задача может решаться как точечно (через пользовательский интерфейс), так и массово (с помощью программного кода или стандартных обработок). В данной статье мы подробно разберем, как правильно реализовать удаление записей из регистра сведений Штрихкоды, проанализируем нюансы работы с измерениями регистра и рассмотрим наиболее эффективные методы программирования.

Способ 1. Удаление штрихкодов через пользовательский интерфейс

Прежде чем переходить к написанию кода, рассмотрим, как можно выполнить задачу стандартными средствами программы. Это полезно для понимания структуры данных, с которыми нам предстоит работать программно.

Вариант А: Из карточки номенклатуры

Самый простой путь для рядового пользователя — зайти непосредственно в карточку товара. Разберем этот процесс по шагам:

  1. Переходим в раздел «НСИ» (Нормативно-справочная информация) и открываем справочник «Номенклатура».
  2. Находим нужную позицию товара и открываем её.
  3. В верхней панели навигации карточки товара переходим по гиперссылке «Штрихкоды».
  4. В открывшемся списке выбираем ненужный штрихкод, нажимаем правую кнопку мыши и выбираем команду «Удалить» (или используем клавишу Del).

Вариант Б: Через Регистр сведений

Если нужно найти штрихкод, не зная, к какому товару он привязан, лучше воспользоваться общим списком регистра:

  1. Открываем «Функции для технического специалиста» (или через «Все функции», если версия платформы старше).
  2. Находим раздел «Регистры сведений» и выбираем Штрихкоды.
  3. В открывшемся списке используем поиск по колонке «Штрихкод».
  4. Находим запись и удаляем её.

Способ 2. Программное удаление с помощью Менеджера записи

Рассмотрим ситуацию, когда нам необходимо программно удалить один конкретный штрихкод. Для этих целей в платформе 1С предусмотрен объект МенеджерЗаписи. Этот объект удобен тем, что он работает с одной конкретной строкой регистра.

Проанализируем пример кода, который позволяет удалить штрихкод, зная его параметры. Важно помнить, что для успешного удаления менеджеру записи нужно «объяснить», какую именно строку мы ищем. Для этого необходимо заполнить все измерения регистра.


// Создаем объект Менеджер записи для работы с конкретной строкой регистра
пШК = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();

// Заполняем ключевые поля (измерения), чтобы система нашла нужную запись
пШК.Владелец = пТекТовар.Номенклатура; // Ссылка на товар
пШК.Штрихкод = "2000000012345";       // Текстовое значение штрихкода
пШК.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; // Ссылка на тип

// Попытаемся удалить запись
Попытка
    пШК.Удалить();
    Сообщить("Штрихкод успешно удален");
Исключение
    Сообщить("Ошибка при удалении: " + ОписаниеОшибки());
КонецПопытки;

Важный нюанс: В современных версиях «1С:Розница» у регистра Штрихкоды могут быть дополнительные измерения, такие как Характеристика или Упаковка. Если ваш товар ведется в разрезе характеристик, и вы не укажете её в менеджере записи, метод Удалить() может не сработать или сработать некорректно, так как ключ записи будет неполным.

Способ 3. Программное удаление с помощью Набора записей (рекомендуемый)

Если задача стоит шире — например, удалить сразу все штрихкоды конкретного товара или очистить штрихкоды по определенному условию — лучше использовать объект НаборЗаписей. Этот метод считается более профессиональным и производительным.

Разберем логику работы набора записей. Когда мы записываем пустой набор с установленным фильтром (отбором), 1С удаляет из базы все данные, которые подпадают под этот фильтр. Рассмотрим пример:


// Создаем набор записей
НаборШК = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();

// Устанавливаем отбор по владельцу (номенклатуре)
// Это позволит нам «захватить» все штрихкоды данного товара
НаборШК.Отбор.Владелец.Установить(пТекТовар.Номенклатура);

// Вызываем метод Записать с параметром Истина (замещение)
// Так как мы не добавляли строк в набор, старые данные будут заменены пустотой (удалены)
НаборШК.Записать(Истина);

Этот способ гораздо эффективнее, если у одного товара может быть 5-10 штрихкодов (на разные упаковки или характеристики). Вам не нужно перебирать их в цикле, система выполнит удаление одной транзакцией.

Разбор типичных ошибок при программировании

Выясним причину, по которой код может не работать, на основе примеров с форума. Рассмотрим ситуацию, когда программист пытается найти тип штрихкода через наименование:

пШК.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.НайтиПоНаименованию("EAN13");

Почему это плохо: Наименование в справочнике может содержать лишний пробел, дефис («EAN-13») или быть написано кириллицей. Если НайтиПоНаименованию вернет пустую ссылку, менеджер записи не сможет составить правильный ключ для удаления. Рекомендуется использовать предопределенные значения или получать ссылку напрямую из существующих записей регистра сведений перед их удалением.

Также проанализируем ситуацию с методом Прочитать(). Перед выполнением пШК.Удалить() полезно вызвать пШК.Прочитать(). Это позволит вам убедиться, что запись существует в базе, и при необходимости проверить её дополнительные реквизиты перед окончательным стиранием.

Использование стандартной обработки «Групповое изменение реквизитов»

Для системных администраторов и опытных пользователей существует способ удаления штрихкодов без написания кода. Рассмотрим алгоритм использования встроенной обработки:

  1. Переходим в раздел «Администрирование» — «Обслуживание» — «Корректировка данных» — «Групповое изменение реквизитов».
  2. В поле «Изменять» выбираем объект Штрихкоды (это регистр сведений).
  3. Нажимаем «Добавить условие отбора» и выбираем, например, «Владелец равно [Ваш товар]».
  4. Нажимаем кнопку «Дополнительные параметры» и устанавливаем галочку «Показывать служебные реквизиты».
  5. После этого в списке действий появится возможность выбрать команду «Удалить записи».

Внимание: Будьте крайне осторожны с этим инструментом, так как ошибка в фильтре может привести к удалению всех штрихкодов в базе данных. Всегда делайте резервную копию перед массовыми операциями.

Взаимодействие с торговым оборудованием

Проанализируем ситуацию с точки зрения интеграции. Удаление штрихкода в программе 1С — это только половина дела. Если ваше предприятие использует офлайн-оборудование, необходимо учитывать следующие моменты:

Таким образом, мы рассмотрели все основные аспекты удаления штрихкодов. Для разовых операций используйте Менеджер записи, для массовой очистки — Набор записей, а для пользовательских задач — стандартный интерфейс или обработку группового изменения. Помните о полноте указания измерений (Владелец, Штрихкод, Тип, Характеристика), чтобы ваши программные команды всегда достигали цели.

← На главную