В процессе внедрения системы 1С:Документооборот (будь то редакция 2.1 или 3.0) одной из наиболее востребованных задач является автоматизация маркировки документов. Штрихкодирование позволяет существенно ускорить поиск бумажных оригиналов, автоматизировать потоковое сканирование и исключить ошибки ручного ввода. Рассмотрим подробно, как реализовать автоматическую вставку штрихкода в шаблоны файлов, разберем технические нюансы работы с различными форматами и выясним, как обойти типичные ограничения системы.
Основной способ автоматизации процесса — использование специального текстового маркера (тега) непосредственно в теле шаблона документа. Проанализируем, как система распознает необходимость вставки графического объекта. Для того чтобы 1С поняла, куда именно нужно поместить штрихкод, в шаблоне файла (обычно это формат .docx) необходимо прописать строку ВставитьИзображениеШтрихкода. При необходимости можно воспользоваться расширением для автоматической вставки QR-кода в файлы doc и docx внутренних документов Документооборота.
Важно соблюдать следующие условия для корректной работы механизма:
1С:Печать штрихкодов. Без нее генерация самого изображения будет невозможна.Разберем по шагам процесс подготовки бланка. Предположим, у нас есть шаблон служебной записки. Нам нужно, чтобы в правом верхнем углу при создании документа появлялся уникальный штрихкод.
Рассмотрим алгоритм действий:
ВставитьИзображениеШтрихкода.ДатаРегистрации.Проанализируем ситуацию, с которой часто сталкиваются пользователи программ с открытым исходным кодом (LibreOffice, OpenOffice). Как показывает практика и обсуждения специалистов, стандартный механизм замены текста ВставитьИзображениеШтрихкода эффективно работает преимущественно в файлах формата MS Word (.docx).
Выясним причину: в старых версиях 1С:ДО (до 2.1.11) взаимодействие с документами .odt осуществлялось по иным алгоритмам, которые не всегда поддерживали поиск текстовых вхождений для замены на графические объекты через механизмы COM-соединения. Если ваша организация использует формат .odt, рекомендуется либо использовать актуальные версии 1С:ДО (где поддержка расширена), либо настроить на сервере LibreOffice в качестве обработчика, что позволяет системе более гибко манипулировать содержимым файлов. Тем не менее, для стабильного результата штрихкодирования "из коробки" лучшим выбором остается .docx.
Часто возникает вопрос: как сделать так, чтобы штрихкод отображался на каждой странице документа, а не только на первой? Стандартное поведение 1С при вставке в тело документа — это разовое размещение. Чтобы добиться дублирования на всех страницах, рассмотрим использование колонтитулов.
Разберем технические сложности этого подхода:
В MS Word колонтитулы являются отдельными объектами (StoryRanges). Иногда стандартный программный код 1С просматривает только основной текст документа и "не видит" тег внутри колонтитула. Если при вставке в колонтитул замена не происходит, программисту может потребоваться внести изменения в общий модуль, отвечающий за автозаполнение (например, РаботаСФайламиВызовСервера), чтобы поиск строки шел по всем разделам документа.
Важный момент: если в вашем документе настроен "Особый колонтитул для первой страницы", вам необходимо вставить тег ВставитьИзображениеШтрихкода как в колонтитул первой страницы, так и в колонтитул последующих страниц.
Если вам недостаточно одного штрихкода и требуется вывести номер документа и дату, проанализируем использование тега ВставитьРегистрационныйШтамп.
Этот механизм работает аналогично штрихкоду, но вставляет более сложный объект, который включает в себя:
Этот штамп выглядит более официально и часто используется для входящей и исходящей корреспонденции. Настраивается он точно так же — добавлением ключевого слова в шаблон Word.
Что делать, если документ не имеет шаблона (например, пришел через ЭДО или загружен извне), но его нужно отмаркировать? Выясним, какие инструменты предоставляет 1С:ДО для таких случаев.
Существует функционал "Визуализация электронных подписей и штампов". В настройках программы можно задать параметры наложения штрихкода при печати или при преобразовании документа в PDF. В этом случае не нужно редактировать сам файл — система "наложит" изображение поверх содержимого по заданным координатам (отступам в миллиметрах от краев листа). Это идеальное решение для штрихкодирования каждой страницы в автоматическом режиме без использования шаблонов автозаполнения. Для этой задачи можно использовать обработку для установки штампов и изображений в PDF средствами платформы.
Если типового функционала недостаточно, посмотрим, как программно инициировать вставку штрихкода. В конфигурации 1С:Документооборот за формирование штрихкода отвечает функционал формирования изображений на основе идентификатора (ссылки) объекта.
Пример логики, которую использует система для получения картинки (упрощенно):
// Получаем данные для формирования штрихкода
ДанныеШтрихкода = СформироватьДанныеШтрихкода(СсылкаНаОбъект);
// Параметры компоненты
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 40);
ПараметрыШтрихкода.Вставить("Высота", 15);
ПараметрыШтрихкода.Вставить("ТипШтрихкода", 16); // Code128
// Генерация картинки
КартинкаШтрихкода = МенеджерОборудованияВызовСервера.ПолучитьИзображениеШтрихкода(ДанныеШтрихкода, ПараметрыШтрихкода);
Этот код позволяет получить объект Картинка, который затем программно через COM-объект Word.Application можно вставить в любое место документа, используя методы Bookmarks или Find.Execute.
В новой версии 3.0 подход к автозаполнению изменился. Теперь настройки стали более гибкими. Рассмотрим основные отличия:
Подводя итог, можно сказать, что для большинства задач автоматической вставки штрихкода достаточно правильно оформить шаблон Word с использованием фразы ВставитьИзображениеШтрихкода и убедиться, что для документа настроены правила заполнения. Для более сложных сценариев (штрихкодирование каждой страницы или работа с PDF) следует использовать механизмы визуализации штампов в настройках программы.