При разработке собственных печатных форм в конфигурациях на базе БСП (Библиотеки стандартных подсистем), таких как КА 2, ERP или УТ 11, часто возникает необходимость вывода графических образов печатей, логотипов или факсимиле подписей. Разберемся, как устроена эта система и как правильно извлекать данные файлы программным путем.
В типовых решениях 1С для работы с файлами используется механизм Присоединенные файлы. Важно понимать, что «картинка» не хранится непосредственно как реквизит в справочнике Организации. Вместо этого используется связующее звено:
Файлы (или ПрисоединенныеФайлы) — содержит метаданные о файле (имя, расширение, ссылку на владельца).ФайлыОрганизаций — определяет роль файла (например, печать или факсимиле) и привязывает его к конкретной организации.ДвоичныеДанныеФайлов — хранит бинарное содержимое картинки, если выбран способ хранения В информационной базе.Для разработчика лучшим и наиболее надежным способом взаимодействия с подсистемой печати является использование методов общего модуля УправлениеПечатью. Прямое обращение к регистрам сведений считается плохой практикой, так как оно может нарушить логику работы при смене настроек хранения (например, если файлы перенесут в Тома на диске).
Для работы с подписями и печатями объектов рекомендуется использовать функционал, предоставляемый УправлениеПечатью.ПодписиИПечатиОбъектов. Это позволяет избежать ошибок при обновлении конфигурации.
Рассмотрим процесс работы с файлом по шагам:
Файлы через регистр ФайлыОрганизаций. Мы фильтруем записи по владельцу (Организация) и типу файла.Файл, мы должны считать его содержимое. Если файл хранится в базе, данные извлекаются из регистра ДвоичныеДанныеФайлов.Картинка. Для его инициализации используются полученные двоичные данные.Пример программного подхода к получению данных:
// Пример получения ссылки на файл печати через БСП
ПараметрыФайла = УправлениеПечатью.СведенияОПечатиОрганизации(СсылкаНаОрганизацию);
// Далее из полученной структуры извлекаем ссылку на файл
// и используем метод для получения двоичных данных:
ДвоичныеДанные = РаботаСФайлами.ПолучитьДвоичныеДанныеФайла(СсылкаНаФайл);
КартинкаДляМакета = Новый Картинка(ДвоичныеДанные);
Часто разработчики заходят в справочник ПрисоединенныеФайлы и видят пустые поля, что вызывает недоумение. Это происходит по двум причинам:
БСП выбрано В томах на диске, то данные хранятся на сервере в виде файлов ОС, а не в таблицах SQL. Соответственно, в ДвоичныеДанныеФайлов ничего не будет.Чтобы ваша печатная форма была устойчивой к обновлениям и изменениям настроек системы:
УправлениеПечатью.Организация и связанных с ними файлов.Картинка в области вывода макета ТабличногоДокумента.Соблюдая эти правила, вы обеспечите корректную работу печатных форм, которые будут автоматически подхватывать актуальные печати и подписи, даже если администраторы системы изменят политику хранения файлов в базе.