Как вывести перечень штрих-кодов номенклатуры в 1С:Торговля и Склад 9.2

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

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

Структура хранения данных: почему нельзя просто открыть список

Прежде всего, проанализируем ситуацию с точки зрения метаданных. В ТиС 9.2 штрихкод привязан к конкретной единице измерения. Это логично, так как у одного и того же товара (например, минеральной воды) может быть штрихкод на бутылку (штуку) и отдельный штрихкод на упаковку (коробку). Таким образом, справочник ЕдиницыИзмерения является подчиненным по отношению к справочнику Номенклатура.

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

Способ 1: Написание простой обработки (для программистов)

Если у вас есть доступ к конфигуратору, самым быстрым способом будет создание небольшой внешней обработки. Посмотрим на пример кода, который перебирает справочник ЕдиницыИзмерения и выводит данные в таблицу. Основная идея здесь — перебор подчиненного справочника напрямую, без привязки к конкретному владельцу в цикле.

Разберем алгоритм по шагам:

  1. Создадим объект типа Таблица для формирования печатной формы.
  2. Инициализируем объект справочника ЕдиницыИзмерения.
  3. Запустим цикл выборки элементов.
  4. Внутри цикла обратимся к реквизиту Владелец, чтобы получить наименование товара.

Т = СоздатьОбъект("Таблица");
Спр = СоздатьОбъект("Справочник.ЕдиницыИзмерения");
Спр.ВыбратьЭлементы();

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

Т.ТолькоПросмотр(1);
Т.Показать("Список штрихкодов");

Важный нюанс: при таком подходе одна и та же номенклатура может встретиться в списке несколько раз, если у нее задано несколько единиц измерения (например, "шт" и "пог. м") и для каждой прописан свой код. Если вам нужен только один (основной) код, в цикл необходимо добавить условие проверки: Спр.Ссылка = Спр.Владелец.ОсновнаяЕдиница.

Способ 2: Использование универсальной печати справочников

Если вы не хотите писать код, рассмотрим использование штатных средств платформы 1С 7.7. В комплекте поставки конфигураций часто идет внешняя обработка Univers.ert (Универсальная печать справочников). Она позволяет выводить данные практически любого справочника в удобном виде.

Проанализируем порядок действий:

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

Этот метод хорош тем, что полученную таблицу можно легко сохранить в формат Excel через стандартную функцию 1С Файл — Сохранить как....

Способ 3: Модификация типового отчета «Печать прайса»

Рассмотрим ситуацию, когда список штрихкодов нужен не как техническая выгрузка, а как дополнение к прайс-листу. В ТиС 9.2 есть встроенный отчет «Печать прайса». Чтобы добавить туда штрихкод, выполним следующие действия:

  1. Откроем отчет в конфигураторе.
  2. Найдем процедуру формирования таблицы.
  3. В месте, где происходит обход номенклатуры, добавим обращение к базовой или основной единице измерения: ТекстШК = Запрос.Номенклатура.БазоваяЕдиница.ШтрихКод;.
  4. Добавим соответствующую колонку в макет таблицы.

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

Способ 4: Использование обработки «UChoice» (Универсальный подбор)

Для продвинутых пользователей существует инструмент UChoice. Это мощная обработка для произвольного поиска и выбора объектов. С её помощью можно выставить фильтр по справочнику ЕдиницыИзмерения с условием Штрихкод <> "" (не пустой). В результате вы получите таблицу значений (ТЗ), содержащую колонки «Владелец» и «Штрихкод», которую можно вывести на печать или скопировать в буфер обмена.

Дополнительные рекомендации и технические тонкости

При работе со штрихкодами в 1С 7.7 стоит учитывать несколько критически важных моментов, которые могут повлиять на корректность данных:

1. Контрольное число: В версии 7.7 штрихкоды часто вводились вручную. При выгрузке списка полезно добавить проверку на соответствие стандарту EAN-13. Если длина кода меньше или больше 13 символов (за исключением весовых кодов), такой штрихкод может не считаться сканером в другой системе.

2. Визуализация (печать «зебры»): Если ваша задача — не просто получить цифры, а распечатать список для сканирования, простого вывода текста будет недостаточно. Для отображения графических полос в системе должна быть установлена внешняя компонента 1CBarCod.dll или специализированный шрифт типа EanBwrP36TT. В коде это реализуется через вставку объекта «Рисунок» в секцию таблицы и установку его типа как «Штрих-код».

3. Работа с SQL-версией: Если ваша база работает на MS SQL Server и объем номенклатуры превышает 50-100 тысяч позиций, стандартный перебор справочника в цикле 1С может занять значительное время. В этом случае эффективнее использовать прямой SQL-запрос к таблицам sc... (справочник номенклатуры) и sc... (справочник единиц), соединив их по полю PARENTEXT. Это позволит получить результат мгновенно.

4. Лайфхак без программирования: В некоторых случаях (если программный код формы списка это позволяет) можно зайти в справочник единиц измерения, нажать кнопку «Действия» и попробовать снять флаг «Иерархический список» или «Отбор по владельцу». Если разработчики конфигурации не заблокировали эту возможность программно, вы увидите общий список всех единиц всех товаров. После этого достаточно настроить видимость колонок и нажать Ctrl+C / Ctrl+V для переноса данных в таблицу.

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

← На главную