Одной из частых задач при разработке в 1С является необходимость предоставления пользователям возможности скачать пустой шаблон файла Excel для последующего заполнения и загрузки в систему. Давайте разберем наиболее эффективные подходы к решению этой задачи, от простых к более профессиональным.
Если в вашей конфигурации не подключена БСП (Библиотека стандартных подсистем), самым надежным и простым способом будет создание отдельного справочника, например, с названием ШаблоныФайлов. Это позволит не «засорять» структуру самого документа лишними данными.
ШаблоныФайлов.ФайлШаблона с типом ХранилищеЗначения.ХранилищаЗначения и сохранение их на компьютер пользователя через ПолучитьИмяВременногоФайла и КопироватьФайл.Важно помнить, что хранение файлов непосредственно в базе данных может увеличить размер информационной базы. Поэтому, если шаблонов много, рассмотрите вариант хранения их в файловой системе или внешних томах.
Для статических файлов, которые редко меняются, идеальным решением является использование Макет типа ДвоичныеДанные. Этот подход позволяет вшить файл прямо в конфигурацию, что исключает риск потери файла и обеспечивает быстрый доступ к нему.
Рассмотрим пример того, как программно выгрузить такой макет на диск:
// Получаем макет из конфигурации
Макет = ПолучитьОбщийМакет("НазваниеВашегоМакета");
// Получаем двоичные данные
ДвоичныеДанные = Макет.Получить();
// Сохраняем во временный файл
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ДвоичныеДанные.Записать(ИмяФайла);
// Предлагаем пользователю сохранить файл
ЗапуститьПриложение(ИмяФайла);
При работе с файлами Excel из 1С, учитывайте следующие важные моменты:
COMОбъект ("Excel.Application") на сервере 1С — это плохая практика. На сервере может не быть установленного офисного пакета, а сам процесс будет потреблять много ресурсов и требовать сложной настройки прав доступа.ТабличныйДокумент. Он позволяет выводить данные в ячейки, задавать стили и сохранять результат в формат xlsx штатными методами платформы: ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX).Хотя идея прикрепить файл прямо к реквизитам документа кажется логичной, специалисты не рекомендуют этот подход. При каждой записи или чтении документа 1С будет подгружать в память содержимое файла. Если файл «тяжелый», это неизбежно приведет к замедлению работы интерфейса и всей базы данных в целом. Используйте для этих целей либо Справочники, либо Регистры сведений, либо механизмы БСП, если она доступна в вашей конфигурации.
Подводя итог, если вам нужно простое решение, используйте Макет двоичных данных — это позволит избежать лишних записей в базе данных и обеспечит высокую скорость работы. Если же шаблоны должны меняться пользователями или администратором без изменения конфигурации, создайте служебный справочник для их хранения.