1. Общие механизмы, понятия и термины
#67

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

Как в 1С:Предприятии организовано хранение бинарных данных именно **в составе конфигурации** (то есть в метаданных, чтобы файл поставлялся вместе с решением и редактировался в Конфигураторе)?

Никак: хранить бинарные данные в конфигурации нельзя
Неправильно: В конфигурации можно хранить бинарные файлы (например, шаблоны, изображения, файлы печатных форм) в виде макетов. Такие данные становятся частью поставки конфигурации и доступны из встроенного языка.
Через макеты (например, общий макет/макет объекта) с типом «Двоичные данные»
Правильно: Макеты предназначены для хранения данных внутри конфигурации, включая двоичные данные, и заполняются на этапе разработки в Конфигураторе. В прикладном решении такие макеты можно получать программно и использовать как источник файлов/шаблонов.
Через константы или реквизиты объектов с типом «ХранилищеЗначения»
Неправильно: «ХранилищеЗначения» - это механизм хранения сериализуемых значений в **информационной базе** (данных пользователя), а не в метаданных конфигурации. Такие значения обычно появляются/изменяются при работе пользователей и не являются «встроенными» файлами, поставляемыми вместе с конфигурацией.
Верно и про макеты, и про «ХранилищеЗначения»
Неправильно: Для хранения бинарных данных именно в конфигурации используется макет, а «ХранилищеЗначения» относится к хранению данных в базе во время эксплуатации. Поэтому объединять эти способы как равнозначные для хранения «в конфигурации» нельзя.

Пояснение

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