Как вывести штрихкод или проверить его заполненность в списке номенклатуры в 1С:УТ 11?

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

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

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

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

Прежде чем переходить к решениям, проанализируем архитектуру базы данных 1С. В конфигурации УТ 11 штрихкод не является реквизитом справочника Справочники.Номенклатура. Данные хранятся в отдельном независимом регистре сведений РегистрСведений.ШтрихкодыНоменклатуры.

Связь между справочником и регистром относится к типу «один-ко-многим». Это означает, что для одной позиции номенклатуры в базе данных может быть создано несколько различных штрихкодов. Например:

  1. Отдельный штрихкод для штучного товара и отдельный для коробки (упаковки).
  2. Различные штрихкоды для разных характеристик одного и того же товара (например, для разных цветов одежды).
  3. Уникальные штрихкоды для различных серий продукции.

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

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

Способ 1. Стандартный метод для пользователей: Обработка печати этикеток

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

Разберем этот процесс по шагам:

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

Этот метод хорош тем, что он абсолютно безопасен, не требует доработки конфигурации и доступен любому пользователю с правами на печать ценников. При необходимости загрузить список позиций в эту обработку из файла пригодится расширение для заполнения списка товаров из Excel.

Способ 2. Профессиональное решение: Использование расширения конфигурации

Если перед нами стоит задача сделать так, чтобы признак наличия штрихкода или сам основной штрихкод отображался непосредственно в форме списка справочника Номенклатура на постоянной основе, лучшим решением будет использование расширения конфигурации (файл формата .cfe). Это современный подход, который позволяет изменять интерфейс и логику программы без снятия конфигурации с поддержки.

Чтобы штрихкод выводился корректно и строки номенклатуры не дублировались, в запросе динамического списка необходимо использовать виртуальную таблицу с группировкой по номенклатуре. Нам нужно получить только один (например, минимальный или максимальный) штрихкод для базовой единицы измерения.

Рассмотрим пример запроса, который должен быть интегрирован в динамический список формы списка номенклатуры через расширение:


ВЫБРАТЬ
    ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
    МИНИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод
ПОМЕСТИТЬ ВТ_ШтрихкодыМинимум
ИЗ
    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
ГДЕ
    ШтрихкодыНоменклатуры.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
    И ШтрихкодыНоменклатуры.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
    ШтрихкодыНоменклатуры.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Код КАК Код,
    СправочникНоменклатура.Наименование КАК Наименование,
    ЕСТЬNULL(ВТ_ШтрихкодыМинимум.Штрихкод, "") КАК Штрихкод,
    ВЫБОР
        КОГДА ВТ_ШтрихкодыМинимум.Штрихкод ЕСТЬ NULL ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЕстьШтрихкод
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ШтрихкодыМинимум КАК ВТ_ШтрихкодыМинимум
    ПО СправочникНоменклатура.Ссылка = ВТ_ШтрихкодыМинимум.Номенклатура

Проанализируем этот запрос по шагам:

  1. Во временной таблице ВТ_ШтрихкодыМинимум мы выбираем штрихкоды из регистра. Чтобы избежать дублирования из-за характеристик и упаковок, мы накладываем условия на пустые ссылки по этим разрезам.
  2. Мы используем функцию группировки МИНИМУМ(Штрихкод). Даже если у товара осталось несколько штрихкодов без упаковок, функция свернет их в одну строку, выбрав минимальный по алфавитно-цифровому порядку.
  3. Основную таблицу справочника Номенклатура мы связываем через ЛЕВОЕ СОЕДИНЕНИЕ с нашей временной таблицей.
  4. С помощью конструкции ЕСТЬNULL мы заменяем пустые значения на пустую строку. Поле ЕстьШтрихкод вернет нам булево значение (Истина/Ложь), которое очень удобно использовать для условного оформления.

После добавления этого запроса в динамический список формы номенклатуры в расширении, мы можем вынести новые поля на форму. Например, поле ЕстьШтрихкод можно не выводить текстом, а настроить условное оформление списка: если ЕстьШтрихкод равно Ложь, окрашивать строку товара или его наименование в светло-красный или серый цвет. Это позволит менеджеру визуально за долю секунды определять проблемные позиции при прокрутке списка.

Способ 3. Создание внешнего отчета на СКД

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

Разберем алгоритм настройки схемы компоновки данных:

  1. В конфигураторе создадим новый внешний отчет. Откроем основную схему компоновки данных.
  2. Добавим набор данных - запрос. Текст запроса будет выглядеть следующим образом:

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Товар,
    Номенклатура.Артикул КАК Артикул,
    Номенклатура.Родитель КАК ПапкаНоменклатуры,
    Штрихкоды.Штрихкод КАК Штрихкод
ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
    ПО Номенклатура.Ссылка = Штрихкоды.Номенклатура
ГДЕ
    Номенклатура.ЭтоГруппа = ЛОЖЬ
  1. Перейдем на вкладку «Настройки». Добавим группировку по полю Товар. В выбранные поля добавим Товар, Артикул и Штрихкод.
  2. Добавим новый элемент отбора на вкладке настройки отчетов. Выберем поле Штрихкод, вид сравнения укажем как «Не заполнено» (или ЕСТЬ NULL в параметрах запроса).
  3. Сохраним отчет. Теперь при запуске в режиме «1С:Предприятие» данный отчет за секунду выведет иерархическую таблицу со всеми позициями товаров, у которых нет ни одного зарегистрированного штрихкода. Отчет можно сохранить в Excel и передать сотрудникам склада на заполнение.

Способ 4. Быстрый аудит через регистр штрихкодов напрямую

Существует еще один простой административный способ быстро навести порядок в базе данных, зайдя «с обратной стороны» — напрямую через записи регистра.

Рассмотрим этот метод:

  1. В правом верхнем углу окна программы нажмите кнопку системного меню и перейдите в раздел «Функции для технического специалиста» (в старых версиях платформы этот пункт назывался «Все функции»). Если этот пункт у вас не отображается, необходимо включить его в параметрах пользователя под учетной записью администратора.
  2. В открывшемся дереве объектов найдите раздел «Регистры сведений» и откройте регистр «Штрихкоды номенклатуры».
  3. Перед вами откроется плоский список всех штрихкодов, существующих в вашей системе.
  4. Нажмите кнопку «Еще» в правом верхнем углу списка и выберите пункт «Настроить список...».
  5. Перейдите на вкладку «Группировка» и добавьте туда поле Номенклатура.

В результате система перестроит список, сгруппировав штрихкоды по конкретным товарам. Такой вид очень удобен для быстрого анализа дублей. Вы сразу увидите, у каких позиций привязано необоснованно много кодов или где допущены ошибки ручного ввода.

Резюме

Мы подробно проанализировали проблему отсутствия поля штрихкода в списке номенклатуры УТ 11 и разобрали четыре практических метода ее решения:

Выбирайте наиболее подходящий для вашей компании способ работы и наводите порядок в товарном каталоге быстро и профессионально!

← На главную