Как правильно печатать этикетки в «1С:Рознице», если у товара несколько штрихкодов?

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

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

Почему система выбирает «неправильный» штрихкод?

Проанализируем работу штатного механизма. Обработка Печать ценников и этикеток построена на базе Системы компоновки данных (СКД). В типовых запросах, которые формируют данные для печатной формы, часто используются агрегатные функции, такие как Максимум() или Первый() по табличной части штрихкодов. Из-за этого система «видит» весь список кодов, но извлекает для печати только один, жестко заданный алгоритмом.

Решение 1: Настройка вывода через редактор макета

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

  1. Откройте обработку Печать ценников и этикеток.
  2. Перейдите в режим редактирования макета этикетки.
  3. Выберите элемент, отвечающий за вывод штрихкода (обычно поле с типом Штрихкод).
  4. Перейдите на вкладку Текст (или свойства данных).
  5. В поле данных поиска укажите порядковый номер нужного штрихкода, который должен выводиться на печать.

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

Решение 2: Использование расширения для управления выбором штрихкода

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

  1. Создайте новое Расширение конфигурации для обработки Печать ценников и этикеток.
  2. Добавьте на форму обработки новый реквизит, например, ВыводитьВсеШК (булево).
  3. В коде расширения перехватите формирование запроса СКД.
  4. Допишите логику, которая будет проверять состояние вашего реквизита. Если он установлен, меняйте текст запроса так, чтобы вместо агрегатной функции Максимум запрос возвращал таблицу всех штрихкодов или тот, который соответствует выбранной единице измерения.

Примерная логика изменения запроса в расширении выглядит следующим образом:


// Пример фрагмента запроса в СКД при использовании расширения
ВЫБРАТЬ
    Номенклатура.Ссылка,
    ЕСТЬNULL(Штрихкоды.Штрихкод, "") КАК Штрихкод
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ 
    РегистрСведений.Штрихкоды КАК Штрихкоды
ПО 
    Номенклатура.Ссылка = Штрихкоды.Владелец

Благодаря такому подходу, вы сможете при печати этикеток в 1С сами выбирать, какой именно код нужен для текущего поступления товара, просто поставив галочку на форме.

Практические советы и рекомендации

Чтобы избежать путаницы в будущем, придерживайтесь следующих правил работы:

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

← На главную