Разработка и Конфигурация · 10 мин
Как сохранить файл на диск в 1С
Как сохранить файл на диск из 1С: выгрузка прикреплённых файлов, сохранение через диалог, методы ПолучитьФайл и НачатьПолучениеФайлов, типичные ошибки.
Сохранение файла на диск из 1С — одна из самых частых задач: нужно выгрузить скан договора из карточки контрагента, забрать вложение из письма, сохранить табличный документ в Excel или выгрузить данные в XML. В зависимости от ситуации используются разные инструменты: стандартные команды интерфейса, диалог выбора файла или программные методы встроенного языка.
Важно понимать ключевое различие: файл может храниться внутри информационной базы (в справочнике присоединённых файлов или в хранилище значения) либо формироваться «на лету» — например, при сохранении отчёта или табличного документа. В первом случае файл извлекается из базы, во втором — записывается на диск в момент сохранения.
Ниже разобраны оба пользовательских сценария и программные методы для разработчиков, а также ограничения веб-клиента и типичные ошибки прав доступа.
Как сохранить присоединённый файл из базы на диск
В типовых конфигурациях на Библиотеке стандартных подсистем (БСП) — «Управление торговлей», «Бухгалтерия предприятия», «Зарплата и управление персоналом» — файлы прикрепляются к объектам через механизм присоединённых файлов. Чтобы сохранить такой файл на диск, откройте объект (документ, контрагента, договор) и перейдите по ссылке «Присоединённые файлы» или кликните по скрепке в командной панели формы.
В списке файлов выделите нужный и нажмите кнопку «Сохранить на диск» (значок дискеты или стрелки вниз). Откроется стандартный диалог операционной системы, где выберите папку и подтвердите имя файла. Если файл открыт на просмотр в карточке, та же команда доступна в меню «Ещё» формы файла.
Для массового сохранения выделите несколько файлов в списке с зажатой клавишей Ctrl или Shift и выполните ту же команду — система предложит выбрать каталог, и все файлы будут сохранены с исходными именами. Если имена совпадают, 1С запросит подтверждение перезаписи для каждого конфликта.
- 1Откройте объект, к которому прикреплён файл (документ, контрагент)
- 2Перейдите в список присоединённых файлов через скрепку или ссылку
- 3Выделите файл и нажмите «Сохранить на диск»
- 4Выберите папку в диалоге и подтвердите сохранение
- 5Откройте сохранённый файл и убедитесь, что он читается
Как сохранить табличный документ и печатную форму
Печатные формы, отчёты и любые табличные документы сохраняются через меню «Файл → Сохранить» или «Сохранить как» в окне табличного документа. В диалоге сохранения выберите формат: собственный MXL, лист Excel (XLSX), PDF, HTML, текстовый файл или ODS. Выбор формата определяет, как программа преобразует содержимое.
При сохранении в PDF учитывайте, что табличный документ разбивается на страницы по настройкам области печати. Если печатная форма не настроена, в PDF могут попасть разрывы страниц в неудобных местах — проверьте результат в режиме предварительного просмотра перед сохранением.
Альтернатива — кнопка «Сохранить» непосредственно в форме предпросмотра печати документа: многие типовые конфигурации предлагают сразу сохранить печатную форму в PDF или отправить по почте, минуя промежуточное открытие табличного документа.
Как сохранить файл программно: основные методы
Для разработчиков и при доработке конфигураций используются несколько подходов в зависимости от того, работает код на клиенте или на сервере, и от режима — тонкий клиент, толстый клиент или веб-клиент.
Сохранение табличного документа методом Записать
Метод Записать объекта «ТабличныйДокумент» принимает имя файла и тип файла. На сервере файл записывается в файловую систему сервера, поэтому путь должен быть доступен серверному процессу. Для передачи пользователю файл сначала помещается во временное хранилище, затем на клиенте вызывается ПолучитьФайл или асинхронный НачатьПолучениеФайлов.
ТабДок = Новый ТабличныйДокумент;
// ... формирование документа ...
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла));
Диалог выбора файла на клиенте
Объект ДиалогВыбораФайла в режиме РежимДиалогаВыбораФайла.Сохранение позволяет пользователю самому указать путь и имя. Пример на клиенте:
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = "Документ PDF (.pdf)|.pdf";
Диалог.ИмяФайла = "Отчет.pdf";
Если Диалог.Выбрать() Тогда
ПолучитьФайл(Адрес, Диалог.ПолноеИмяФайла);
КонецЕсли;
НачатьПолучениеФайлов(ОписаниеОповещения, ПолучаемыеФайлы, , Истина);В современных версиях платформы рекомендуется асинхронная модель: НачатьПолучениеФайлов с описанием оповещения. Синхронные вызовы блокируются в веб-клиенте и помечаются как устаревшие, поэтому для новых доработок используйте именно асинхронные методы.
Особенности веб-клиента и браузера
В веб-клиенте прямой доступ к файловой системе пользователя ограничен браузером. Платформа не может записать файл в произвольную папку — сохранение происходит через стандартный механизм скачивания браузера в каталог «Загрузки» или в папку, выбранную в настройках браузера.
Для полноценной работы с файлами в веб-клиенте требуется расширение работы с файлами. При первом обращении платформа предложит его установить. Без расширения часть операций (например, сохранение нескольких файлов в указанный каталог без диалогов) будет недоступна.
Если пользователь работает через браузер и файл «не сохраняется», чаще всего он уже скачан — проверьте папку загрузок браузера и журнал скачиваний. Блокировка всплывающих окон в браузере также может препятствовать началу скачивания.
Права доступа и типичные ошибки
Если команда «Сохранить на диск» недоступна или файл не записывается, причина обычно в одном из трёх: нет права на чтение присоединённых файлов в роли пользователя, целевая папка защищена от записи, либо файл занят другим процессом (открыт в редакторе с блокировкой).
При серверном сохранении ошибка «Ошибка доступа к файлу» означает, что у учётной записи, под которой работает сервер 1С (обычно USR1CV8), нет прав на целевой каталог. Выдайте этой учётной записи права на запись либо используйте сетевой ресурс с корректными разрешениями.
Ещё одна частая ситуация — файл сохраняется «пустым» или нулевого размера. Это признак того, что двоичные данные не были получены из хранилища до записи: проверьте, что вызов ПоместитьВоВременноеХранилище выполнен на сервере и адрес корректно передан на клиент.
Как проверить, что файл сохранён корректно
После сохранения откройте файл из целевой папки штатным приложением: PDF — в просмотрщике, XLSX — в Excel или аналоге. Убедитесь, что документ открывается без ошибок, содержит ожидаемое число страниц и корректные данные, а размер файла не равен нулю.
Если файл сохранялся программно, полезно сравнить размер полученного файла с размером данных во временном хранилище — расхождение указывает на обрыв передачи. Для присоединённых файлов проверка проще: откройте файл повторно из базы и из папки — содержимое должно совпадать.
Как проверить результат
Больше нуля, соответствует ожидаемому объёму
0 байт или явно заниженный размер
Открывается штатным приложением без ошибок
Ошибка формата или повреждения
Данные совпадают с тем, что в базе или на печатной форме
Пустые страницы, обрезанные данные
Как выбрать действие
Итоговая логика проста: пользовательские задачи решаются штатными командами интерфейса, программные — связкой временного хранилища и асинхронных методов получения файла. Главное — не смешивать серверные и клиентские пути и учитывать ограничения веб-клиента.
Что важно запомнить
Присоединённые файлы сохраняются командой «Сохранить на диск», табличные документы — через «Сохранить как» с выбором формата. Программно используются Записать, временное хранилище и НачатьПолучениеФайлов. Проверяйте права доступа и размер сохранённого файла.
Частые вопросы
Куда сохраняется файл, если я не выбирал папку?
В веб-клиенте файл попадает в папку загрузок браузера. В тонком и толстом клиенте при отсутствии явного выбора используется рабочий каталог пользователя, который можно посмотреть в настройках. Всегда проверяйте папку загрузок, если файл «пропал».
Почему кнопка «Сохранить на диск» неактивна?
Чаще всего не хватает прав: у роли пользователя нет права чтения присоединённых файлов. Обратитесь к администратору для проверки ролей. Реже причина в том, что файл не выделен в списке или объект открыт в режиме, не поддерживающем команду.
Можно ли сохранить сразу все присоединённые файлы документа?
Да. Выделите все файлы в списке присоединённых файлов (Ctrl+A) и выполните «Сохранить на диск» — система предложит выбрать каталог и сохранит все файлы с исходными именами. В типовых конфигурациях также есть обработки массовой выгрузки файлов.
В каком формате лучше сохранять печатную форму для отправки контрагенту?
Оптимален PDF: он сохраняет внешний вид документа, не редактируется случайно и открывается на любых устройствах. XLSX подходит, если получатель должен работать с данными. Формат MXL для внешней передачи не используйте — он открывается только в 1С.
Почему программно сохранённый файл имеет нулевой размер?
Признак того, что двоичные данные не попали в файл: либо не выполнено помещение во временное хранилище на сервере, либо адрес хранилища потерян при передаче на клиент. Проверьте последовательность вызовов и время жизни хранилища (используйте уникальный идентификатор формы).
Работает ли сохранение файлов в мобильном клиенте?
Мобильная платформа имеет собственную файловую модель: файлы сохраняются в доступное приложению хранилище устройства, откуда их можно передать через стандартные средства ОС. Прямой записи в произвольный каталог, как на десктопе, нет.