В практике логистики и складского учета часто возникает задача, когда на руках уже есть распечатанный бланк (например, международная транспортная накладная CMR) с «живыми» подписями и синими печатями, но в него необходимо внести дополнительные данные. Основная сложность заключается в том, что разные принтеры и драйверы могут давать небольшие смещения, а сами бланки могут быть напечатаны с разным масштабом. Рассмотрим подробно, как решить задачу точного попадания «текст в поле» при помощи инструментов 1С и вспомогательных технологий.
Прежде всего, проанализируем, почему нельзя просто создать печатную форму с пустыми местами и надеяться на удачу. Из-за разной подачи бумаги в принтер или особенностей механики захвата листа текст может «уплывать» на несколько миллиметров, что в случае с плотными сетками CMR недопустимо. Для решения этой проблемы разберем метод «якорных точек».
Суть метода заключается в том, что мы не печатаем текст по абсолютным координатам страницы. Вместо этого мы ищем на сканированном документе конкретные графические элементы — углы рамок, типографские метки или заголовки колонок. Выясним алгоритм реализации:
Чтобы не размечать каждый новый скан вручную, логично воспользоваться системами оптического распознавания текста (OCR). Проанализируем наиболее подходящие библиотеки, которые можно интегрировать с 1С:
Посмотрим на пример логики вызова внешней компоненты для получения координат (псевдокод):
// Пример логики взаимодействия с OCR-системой
ПутьКФайлуСкана = "C:\Scans\CMR_001.jpg";
РезультатРаспознавания = БиблиотекаOCR.РаспознатьДокумент(ПутьКФайлуСкана);
Для Каждого Поле Из СписокНужныхПолей Цикл
Координаты = РезультатРаспознавания.НайтиТекст(Поле.Имя);
Если Координаты <> Неопределено Тогда
ДопечататьТекстВТочку(Поле.Значение, Координаты.X, Координаты.Y);
КонецЕсли;
КонецЦикла;
Теперь разберем, как реализовать саму печать внутри 1С. Одним из наиболее эффективных способов является использование прозрачных подложек в табличном документе.
Создадим макет, в который вставим скан бланка как объект типа Рисунок. Установим его свойство ВыводитьНаПечать в значение Ложь. Таким образом, в режиме конфигуратора или в специальной форме обработки пользователь будет видеть, куда именно встает текст относительно полей бланка, но на принтер уйдет только сам текст.
Важно помнить о единицах измерения. В 1С высота строк и ширина колонок измеряются во внутренних единицах. Для точного позиционирования в миллиметрах воспользуемся следующим соотношением: 1 единица высоты строки примерно равна 0,375 мм. Однако для критически важных задач рекомендуется использовать внешние компоненты, работающие напрямую с графическим контекстом (GDI+), чтобы позиционировать текст с точностью до десятых долей миллиметра.
Если речь идет о бланках CMR, стоит учитывать, что они часто бывают самокопирующимися. В этом случае обычный лазерный или струйный принтер не подойдет, так как он не обеспечивает физического давления на бумагу. Рассмотрим использование матричных принтеров.
Современные матричные принтеры (например, серий OKI или Epson) обладают важным преимуществом — датчиками края листа и функциями автоматического выравнивания (Auto-alignment). Это позволяет вставить бланк в лоток даже немного криво, а принтер сам скорректирует позицию печатающей головки, ориентируясь на физические границы листа.
Если процесс печати оригиналов находится под вашим контролем, мы рекомендуем внедрить систему QR-кодов. При первичной печати бланка в углу размещается небольшой QR-код, содержащий уникальный идентификатор документа (GUID) в базе 1С.
При необходимости допечатки:
Этот метод полностью исключает ошибки распознавания (OCR) и значительно ускоряет работу.
Выясним важный момент: допечатка в документы, на которых уже стоит «синяя печать» сторонней организации, может иметь юридические последствия. Согласно законодательству, внесение сведений, которые существенно меняют условия перевозки (вес, стоимость, номенклатура), без ведома подписанта может быть расценено как подделка документов.
Важные рекомендации:
Таким образом, задача допечатки в готовые формы в 1С решается сочетанием визуального контроля (подложки в макетах), программного поиска меток (OCR) и правильного выбора печатного оборудования.