Как реализовать штрихкодирование документов в 1С:Бухгалтерия 3.0?

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

В типовой конфигурации «1С:Бухгалтерия 3.0» (БП 3.0), в отличие от «Управления торговлей», механизм штрихкодирования печатных форм документов (таких как Счет-фактура, ТОРГ-12 или ТТН) не выведен в пользовательский интерфейс в явном виде. Однако, поскольку база построена на Библиотеке стандартных подсистем (БСП), все необходимые программные инструменты для этого уже присутствуют в системе. Рассмотрим подробно, как самостоятельно внедрить этот функционал с помощью расширений, для чего это нужно и какие технические нюансы следует учесть.

Зачем нужно штрихкодирование документов

Основная цель внедрения штрихкодов на первичных документах — это ускорение поиска объекта в информационной базе. Представим ситуацию: бухгалтер получает подписанный оригинал ТОРГ-12 и ему нужно быстро найти этот документ в системе, чтобы отметить факт получения оригинала или прикрепить скан. Вместо ручного ввода номера и даты достаточно просто считать код сканером.

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

Шаг 1: Использование механизмов БСП и заимствование кода

Проанализируем программную часть реализации. Для вывода штрихкода в табличный документ в 1С сейчас чаще всего используется встроенная компонента печати, которая не требует установки внешних библиотек. Выясним, какие модули нам понадобятся. В конфигурациях на базе БСП (включая БП 3.0) за это отвечает общий модуль ШтрихкодированиеПечатныхФорм или методы модуля УправлениеПечатью.

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


// Пример вызова формирования штрихкода в обработчике печати
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);

Если в вашей версии БП 3.0 данный модуль отсутствует или ограничен, можно воспользоваться более универсальным методом добавления QR-кода, который в последнее время становится стандартом для 1С:


УправлениеПечатью.ДобавитьQRКодВТабличныйДокумент(ТабличныйДокумент, ОбластьМакета, "Данные_для_кодирования");

Шаг 2: Подготовка макета печатной формы

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

  1. Откроем макет нужной печатной формы (например, ТОРГ-12) в расширении.
  2. В нужную область (обычно это правый верхний угол или подвал документа) необходимо вставить объект типа «Рисунок».
  3. Критически важный момент: рисунку нужно присвоить конкретное имя, которое ожидает программный модуль. Чаще всего это КартинкаШтрихкода или просто Картинка.
  4. Этот рисунок выступает в роли "эталона" или контейнера. При формировании печатной формы программный код найдет этот объект по имени и заменит его содержимое на сгенерированный штрихкод.

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

Шаг 3: Что именно кодировать в штрихкоде

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

Уникальный идентификатор (GUID). Это самый надежный способ. Ссылка на объект в 1С всегда уникальна. Получить её можно так: Строка(ДокументСсылка.УникальныйИдентификатор()).

Тип объекта. Чтобы система понимала, является ли считанный код счетом-фактурой или реализацией, полезно добавлять префикс типа документа.

Пример формирования строки для кодирования:


ДанныеДляКода = "РеализацияТоваровУслуг|" + Строка(СсылкаНаОбъект.УникальныйИдентификатор());

Шаг 4: Алгоритм реализации через расширение

Разберем по шагам, как выстроить архитектуру решения в расширении:

  1. Создание справочника или настройки: создадим в расширении механизм (например, регистр сведений или простое перечисление), где укажем типы документов, для которых требуется печать штрихкода.
  2. Перехват процедуры печати: используем аннотацию &После или &Вместо для процедуры Печать в менеджере соответствующего документа.
  3. Модификация табличного документа: после того как типовой код сформировал ТабличныйДокумент, вызываем свою процедуру, которая ищет в макете область для штрихкода и заполняет её.

Шаг 5: Организация поиска в базе

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

Проанализируем пример логики поиска:


Процедура ВнешнееСобытие(Источник, Событие, Данные)
    // Данные — это считанная сканером строка
    Если Событие = "Barcode" Тогда
        // Разбираем строку, получаем GUID
        СсылкаНаДокумент = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор(Данные));
        Если Не СсылкаНаДокумент.Пустая() Тогда
            ПоказатьЗначение(, СсылкаНаДокумент);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Поскольку типового регистра «Штрихкоды документов» в 1С:Бухгалтерии нет, такой поиск по прямому преобразованию строки в GUID является самым быстрым и эффективным. Если же вы планируете использовать стандартные штрихкоды типа EAN13, вам придется создать собственный регистр сведений для хранения соответствий между кодом и документом.

Рекомендации по расположению кода

При выборе места для штрихкода на листе учитывайте следующие моменты:

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

← На главную