Готовишься к экзамену?
Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.
Как в 1С:Предприятии организовано хранение бинарных данных именно **в составе конфигурации** (то есть в метаданных, чтобы файл поставлялся вместе с решением и редактировался в Конфигураторе)?
Никак: хранить бинарные данные в конфигурации нельзя
Неправильно: В конфигурации можно хранить бинарные файлы (например, шаблоны, изображения, файлы печатных форм) в виде макетов. Такие данные становятся частью поставки конфигурации и доступны из встроенного языка.
Через макеты (например, общий макет/макет объекта) с типом «Двоичные данные»
Правильно: Макеты предназначены для хранения данных внутри конфигурации, включая двоичные данные, и заполняются на этапе разработки в Конфигураторе. В прикладном решении такие макеты можно получать программно и использовать как источник файлов/шаблонов.
Через константы или реквизиты объектов с типом «ХранилищеЗначения»
Неправильно: «ХранилищеЗначения» - это механизм хранения сериализуемых значений в **информационной базе** (данных пользователя), а не в метаданных конфигурации. Такие значения обычно появляются/изменяются при работе пользователей и не являются «встроенными» файлами, поставляемыми вместе с конфигурацией.
Верно и про макеты, и про «ХранилищеЗначения»
Неправильно: Для хранения бинарных данных именно в конфигурации используется макет, а «ХранилищеЗначения» относится к хранению данных в базе во время эксплуатации. Поэтому объединять эти способы как равнозначные для хранения «в конфигурации» нельзя.
Пояснение
Важно различать два понятия: **данные конфигурации (метаданные)** и **данные информационной базы**.
1) **Хранение бинарных данных в конфигурации (правильный путь для “встроенных” файлов)**
- Используйте объект **«Макет»** (общий макет или макет конкретного объекта) и выбирайте тип макета **«Двоичные данные»**.
- Такой макет заполняется в **Конфигураторе** (файл «вшивается» в конфигурацию) и затем доступен в режиме предприятия для чтения и использования.
- Типичные примеры: шаблон печатной формы Word/Excel, бланк в PDF, файл XML с настройками, логотип/изображение, внешний шаблон отчета, заготовка письма.
Практический пример сценария:
- Разработчик добавил общий макет «ШаблонДоговора» (тип «Двоичные данные») и загрузил в него файл .docx.
- В коде прикладного решения макет получают по имени, извлекают двоичные данные и сохраняют во временный файл/передают в обработчик печати.
- Пользователю не нужно хранить этот файл отдельно на диске - он поставляется вместе с конфигурацией.
2) **Хранение бинарных данных в базе (не для “встроенных” файлов, а для пользовательских данных)**
- Если нужно хранить **прикрепленные файлы**, сканы, фотографии, документы по объектам учета (например, файл договора у контрагента), тогда используют реквизиты/константы/регистры с типом **«ХранилищеЗначения»**.
- Это уже данные эксплуатации: они зависят от действий пользователей и могут быть большими по объему. В некоторых случаях для крупных файлов включают специализированное «хранилище двоичных данных» (опционально), чтобы оптимизировать хранение.
Как быстро запомнить:
- **Макет (Двоичные данные)** - “файл внутри конфигурации”, задается разработчиком, удобно для шаблонов и ресурсов.
- **ХранилищеЗначения** - “файл внутри базы”, заполняется при работе, удобно для вложений и пользовательских документов.
Проверочный мини-кейс:
- Нужно, чтобы у всех пользователей всегда был одинаковый «эталонный» шаблон договора → выбирайте **макет «Двоичные данные»**.
- Нужно хранить подписанные сканы договоров по каждому контрагенту → выбирайте реквизит **«ХранилищеЗначения»** в данных информационной базы.