В типовой конфигурации «1С:Бухгалтерия 3.0» (БП 3.0), в отличие от «Управления торговлей», механизм штрихкодирования печатных форм документов (таких как Счет-фактура, ТОРГ-12 или ТТН) не выведен в пользовательский интерфейс в явном виде. Однако, поскольку база построена на Библиотеке стандартных подсистем (БСП), все необходимые программные инструменты для этого уже присутствуют в системе. Рассмотрим подробно, как самостоятельно внедрить этот функционал с помощью расширений, для чего это нужно и какие технические нюансы следует учесть.
Основная цель внедрения штрихкодов на первичных документах — это ускорение поиска объекта в информационной базе. Представим ситуацию: бухгалтер получает подписанный оригинал ТОРГ-12 и ему нужно быстро найти этот документ в системе, чтобы отметить факт получения оригинала или прикрепить скан. Вместо ручного ввода номера и даты достаточно просто считать код сканером.
Разберем более продвинутый сценарий автоматизации. Проанализируем практику использования штрихкодов для потокового сканирования: пачки документов после простановки всех печатей сканируются автоматическим сканером. Специальная обработка распознает штрихкод на листе, содержащий уникальный идентификатор (GUID) документа, и автоматически привязывает PDF-файл к соответствующей карточке в 1С через механизм «Присоединенные файлы». Это неоценимая помощь при отработке массовых запросов налоговой службы во время встречных проверок.
Проанализируем программную часть реализации. Для вывода штрихкода в табличный документ в 1С сейчас чаще всего используется встроенная компонента печати, которая не требует установки внешних библиотек. Выясним, какие модули нам понадобятся. В конфигурациях на базе БСП (включая БП 3.0) за это отвечает общий модуль ШтрихкодированиеПечатныхФорм или методы модуля УправлениеПечатью.
Посмотрим на пример кода, который можно использовать в расширении для вывода кода в печатную форму:
// Пример вызова формирования штрихкода в обработчике печати
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
Если в вашей версии БП 3.0 данный модуль отсутствует или ограничен, можно воспользоваться более универсальным методом добавления QR-кода, который в последнее время становится стандартом для 1С:
УправлениеПечатью.ДобавитьQRКодВТабличныйДокумент(ТабличныйДокумент, ОбластьМакета, "Данные_для_кодирования");
Важно понимать, что простого вызова программного метода недостаточно. Программа должна знать, куда именно на листе вставить изображение кода. Разберем, как подготовить макет:
КартинкаШтрихкода или просто Картинка.Если вы не хотите менять типовой макет, правильнее будет создать в расширении копию макета и перехватить процедуру печати, чтобы программа использовала ваш модифицированный вариант.
Для надежного поиска документа недостаточно закодировать просто его номер, так как номера могут дублироваться в разных годах или разных организациях. Рассмотрим оптимальный состав данных для кодирования:
Уникальный идентификатор (GUID). Это самый надежный способ. Ссылка на объект в 1С всегда уникальна. Получить её можно так: Строка(ДокументСсылка.УникальныйИдентификатор()).
Тип объекта. Чтобы система понимала, является ли считанный код счетом-фактурой или реализацией, полезно добавлять префикс типа документа.
Пример формирования строки для кодирования:
ДанныеДляКода = "РеализацияТоваровУслуг|" + Строка(СсылкаНаОбъект.УникальныйИдентификатор());
Разберем по шагам, как выстроить архитектуру решения в расширении:
&После или &Вместо для процедуры Печать в менеджере соответствующего документа.ТабличныйДокумент, вызываем свою процедуру, которая ищет в макете область для штрихкода и заполняет её.Чтобы система реагировала на сканер, необходимо реализовать обработку внешнего события. В форме списка документов или в основной форме приложения нужно прописать процедуру ВнешнееСобытие.
Проанализируем пример логики поиска:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Данные — это считанная сканером строка
Если Событие = "Barcode" Тогда
// Разбираем строку, получаем GUID
СсылкаНаДокумент = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор(Данные));
Если Не СсылкаНаДокумент.Пустая() Тогда
ПоказатьЗначение(, СсылкаНаДокумент);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Поскольку типового регистра «Штрихкоды документов» в 1С:Бухгалтерии нет, такой поиск по прямому преобразованию строки в GUID является самым быстрым и эффективным. Если же вы планируете использовать стандартные штрихкоды типа EAN13, вам придется создать собственный регистр сведений для хранения соответствий между кодом и документом.
При выборе места для штрихкода на листе учитывайте следующие моменты:
Таким образом, внедрение штрихкодирования в 1С:Бухгалтерия 3.0 — это решаемая задача, требующая минимальных правок в коде через расширения и правильной подготовки макетов печатных форм.