В процессе работы с печатными формами в конфигурациях 1С (например, 1С:Управление торговлей) можно столкнуться с ситуацией, когда штрихкод корректно формируется и виден на экране при отображении табличного документа, однако при отправке формы на принтер или при сохранении в файл (например, в формате PDF) штрихкод бесследно исчезает. Рассмотрим причины возникновения этой проблемы и разберем по шагам варианты ее решения.
Проанализируем технические нюансы работы платформы 1С с рисунками и графическими объектами в табличном документе:
MXL отличается от финальной растеризации. Когда документ передается драйверу печати или конвертируется в файл, размеры ячеек и объектов могут незначительно изменяться из-за разрешающей способности устройства (DPI). Если объект штрихкода был размещен вплотную к границам выделенной области или выходил за пределы ячеек, платформенный движок печати отсекает его как не поместившийся.ВыводитьНаПечать: Графический объект типа РисунокТабличногоДокумента, в котором расположен штрихкод, имеет отдельное свойство ВыводитьНаПечать. Если для этого свойства задано значение Ложь, объект отображается при экранном редактировании, но полностью исключается при формировании печатной формы для вывода на устройство или экспорта.1CBarCode.dll или BARCODE.OCX) в 64-разрядных клиентах или при работе на сервере может вызывать сбои формирования изображения при экспорте в векторные и растровые форматы.ИмяПараметровПечати, платформа применяет ранее сохраненные пользователем параметры страницы (поля, масштабирование). Из-за некорректного масштаба объект штрихкода может выпадать за пределы видимой страницы.Рассмотрим порядок действий для восстановления корректной печати штрихкода.
Наиболее частой причиной является превышение габаритов объекта штрихкода относительно выделенной под него области макета. Чтобы устранить данную проблему, выполним следующие операции:
РисунокТабличногоДокумента).РасположитьВЯчейках или настроек привязки к границам ячеек.Выясним, включен ли вывод объекта на печать. В окне свойств рисунка штрихкода проверим параметр:
ВыводитьНаПечать установлено в значение Истина.ТипСмещения — для предотвращения сдвигов при изменении размеров ячеек рекомендуется устанавливать значение, гарантирующее сохранение пропорций и привязку к строкам.В программном коде формирования печатной формы заполнение свойств рисунка выглядит следующим образом:
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
РисунокШтрихкода = ОбластьМакета.Рисунки.Штрихкод;
РисунокШтрихкода.ВыводитьНаПечать = Истина;
Если проблема наблюдается только в конкретной печатной форме (например, в расходном ордере на товары), следует проверить, не используется ли измененный макет:
Для предотвращения проблем с внешними компонентами ActiveX и COM в современных конфигурациях рекомендуется формировать штрихкод средствами Библиотеки Стандартных Подсистем (БСП) в виде картинки непосредственно на сервере:
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 200);
ПараметрыШтрихкода.Вставить("Высота", 50);
ПараметрыШтрихкода.Вставить("Штрихкод", ЗначениеШтрихкода);
ПараметрыШтрихкода.Вставить("ТипШтрихкода", 1); // Например, Code128 или EAN13
КартинкаШтрихкода = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
Если КартинкаШтрихкода <> Неопределено Тогда
ОбластьМакета.Рисунки.Штрихкод.Картинка = КартинкаШтрихкода;
КонецЕсли;
При таком подходе штрихкод передается в макет как обычное растровое изображение, что полностью исключает сбои при конвертации печатной формы в PDF или отправке на физический принтер.