К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как сохранить файл на диск в 1С

Как сохранить файл на диск из 1С: выгрузка прикреплённых файлов, сохранение через диалог, методы ПолучитьФайл и НачатьПолучениеФайлов, типичные ошибки.

Сохранение файла на диск из 1С — одна из самых частых задач: нужно выгрузить скан договора из карточки контрагента, забрать вложение из письма, сохранить табличный документ в Excel или выгрузить данные в XML. В зависимости от ситуации используются разные инструменты: стандартные команды интерфейса, диалог выбора файла или программные методы встроенного языка.

Важно понимать ключевое различие: файл может храниться внутри информационной базы (в справочнике присоединённых файлов или в хранилище значения) либо формироваться «на лету» — например, при сохранении отчёта или табличного документа. В первом случае файл извлекается из базы, во втором — записывается на диск в момент сохранения.

Ниже разобраны оба пользовательских сценария и программные методы для разработчиков, а также ограничения веб-клиента и типичные ошибки прав доступа.

Как сохранить присоединённый файл из базы на диск

В типовых конфигурациях на Библиотеке стандартных подсистем (БСП) — «Управление торговлей», «Бухгалтерия предприятия», «Зарплата и управление персоналом» — файлы прикрепляются к объектам через механизм присоединённых файлов. Чтобы сохранить такой файл на диск, откройте объект (документ, контрагента, договор) и перейдите по ссылке «Присоединённые файлы» или кликните по скрепке в командной панели формы.

В списке файлов выделите нужный и нажмите кнопку «Сохранить на диск» (значок дискеты или стрелки вниз). Откроется стандартный диалог операционной системы, где выберите папку и подтвердите имя файла. Если файл открыт на просмотр в карточке, та же команда доступна в меню «Ещё» формы файла.

Для массового сохранения выделите несколько файлов в списке с зажатой клавишей Ctrl или Shift и выполните ту же команду — система предложит выбрать каталог, и все файлы будут сохранены с исходными именами. Если имена совпадают, 1С запросит подтверждение перезаписи для каждого конфликта.

Порядок действий
  1. 1
    Откройте объект, к которому прикреплён файл (документ, контрагент)
  2. 2
    Перейдите в список присоединённых файлов через скрепку или ссылку
  3. 3
    Выделите файл и нажмите «Сохранить на диск»
  4. 4
    Выберите папку в диалоге и подтвердите сохранение
  5. 5
    Откройте сохранённый файл и убедитесь, что он читается

Как сохранить табличный документ и печатную форму

Печатные формы, отчёты и любые табличные документы сохраняются через меню «Файл → Сохранить» или «Сохранить как» в окне табличного документа. В диалоге сохранения выберите формат: собственный MXL, лист Excel (XLSX), PDF, HTML, текстовый файл или ODS. Выбор формата определяет, как программа преобразует содержимое.

При сохранении в PDF учитывайте, что табличный документ разбивается на страницы по настройкам области печати. Если печатная форма не настроена, в PDF могут попасть разрывы страниц в неудобных местах — проверьте результат в режиме предварительного просмотра перед сохранением.

Альтернатива — кнопка «Сохранить» непосредственно в форме предпросмотра печати документа: многие типовые конфигурации предлагают сразу сохранить печатную форму в PDF или отправить по почте, минуя промежуточное открытие табличного документа.

Как сохранить файл программно: основные методы

Для разработчиков и при доработке конфигураций используются несколько подходов в зависимости от того, работает код на клиенте или на сервере, и от режима — тонкий клиент, толстый клиент или веб-клиент.

Сохранение табличного документа методом Записать

Метод Записать объекта «ТабличныйДокумент» принимает имя файла и тип файла. На сервере файл записывается в файловую систему сервера, поэтому путь должен быть доступен серверному процессу. Для передачи пользователю файл сначала помещается во временное хранилище, затем на клиенте вызывается ПолучитьФайл или асинхронный НачатьПолучениеФайлов.

ТабДок = Новый ТабличныйДокумент;

// ... формирование документа ...

ИмяФайла = ПолучитьИмяВременногоФайла("pdf");

ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);

Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла));

Диалог выбора файла на клиенте

Объект ДиалогВыбораФайла в режиме РежимДиалогаВыбораФайла.Сохранение позволяет пользователю самому указать путь и имя. Пример на клиенте:

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);

Диалог.Фильтр = "Документ PDF (.pdf)|.pdf";

Диалог.ИмяФайла = "Отчет.pdf";

Если Диалог.Выбрать() Тогда

ПолучитьФайл(Адрес, Диалог.ПолноеИмяФайла);

КонецЕсли;

bsl
НачатьПолучениеФайлов(ОписаниеОповещения, ПолучаемыеФайлы, , Истина);

В современных версиях платформы рекомендуется асинхронная модель: НачатьПолучениеФайлов с описанием оповещения. Синхронные вызовы блокируются в веб-клиенте и помечаются как устаревшие, поэтому для новых доработок используйте именно асинхронные методы.

Особенности веб-клиента и браузера

В веб-клиенте прямой доступ к файловой системе пользователя ограничен браузером. Платформа не может записать файл в произвольную папку — сохранение происходит через стандартный механизм скачивания браузера в каталог «Загрузки» или в папку, выбранную в настройках браузера.

Для полноценной работы с файлами в веб-клиенте требуется расширение работы с файлами. При первом обращении платформа предложит его установить. Без расширения часть операций (например, сохранение нескольких файлов в указанный каталог без диалогов) будет недоступна.

Если пользователь работает через браузер и файл «не сохраняется», чаще всего он уже скачан — проверьте папку загрузок браузера и журнал скачиваний. Блокировка всплывающих окон в браузере также может препятствовать началу скачивания.

Права доступа и типичные ошибки

Если команда «Сохранить на диск» недоступна или файл не записывается, причина обычно в одном из трёх: нет права на чтение присоединённых файлов в роли пользователя, целевая папка защищена от записи, либо файл занят другим процессом (открыт в редакторе с блокировкой).

При серверном сохранении ошибка «Ошибка доступа к файлу» означает, что у учётной записи, под которой работает сервер 1С (обычно USR1CV8), нет прав на целевой каталог. Выдайте этой учётной записи права на запись либо используйте сетевой ресурс с корректными разрешениями.

Ещё одна частая ситуация — файл сохраняется «пустым» или нулевого размера. Это признак того, что двоичные данные не были получены из хранилища до записи: проверьте, что вызов ПоместитьВоВременноеХранилище выполнен на сервере и адрес корректно передан на клиент.

Типичные ошибки
01
Запись файла на сервере по локальному пути клиента — файл оказывается на сервере, а пользователь его не видит
02
Использование синхронного ПолучитьФайл в веб-клиенте — вызов блокируется или выдаёт ошибку
03
Сохранение в формат MXL для внешнего получателя — файл невозможно открыть без платформы
04
Игнорирование расширения работы с файлами — часть операций в веб-клиенте молча не выполняется

Как проверить, что файл сохранён корректно

После сохранения откройте файл из целевой папки штатным приложением: PDF — в просмотрщике, XLSX — в Excel или аналоге. Убедитесь, что документ открывается без ошибок, содержит ожидаемое число страниц и корректные данные, а размер файла не равен нулю.

Если файл сохранялся программно, полезно сравнить размер полученного файла с размером данных во временном хранилище — расхождение указывает на обрыв передачи. Для присоединённых файлов проверка проще: откройте файл повторно из базы и из папки — содержимое должно совпадать.

Контрольные точки

Как проверить результат

Размер файла на диске
Норма

Больше нуля, соответствует ожидаемому объёму

Тревожный признак

0 байт или явно заниженный размер

Открытие файла
Норма

Открывается штатным приложением без ошибок

Тревожный признак

Ошибка формата или повреждения

Содержимое
Норма

Данные совпадают с тем, что в базе или на печатной форме

Тревожный признак

Пустые страницы, обрезанные данные

Маршрут решения

Как выбрать действие

Файл прикреплён к объекту в базеИспользуйте команду «Сохранить на диск» в списке присоединённых файлов
Нужно сохранить отчёт или печатную формуОткройте табличный документ и используйте «Файл → Сохранить как» с выбором формата
Сохранение должно происходить автоматически по регламентуРеализуйте серверную запись через Записать с путём, доступным серверу
Пользователь работает в веб-клиентеИспользуйте асинхронные методы и расширение работы с файлами

Итоговая логика проста: пользовательские задачи решаются штатными командами интерфейса, программные — связкой временного хранилища и асинхронных методов получения файла. Главное — не смешивать серверные и клиентские пути и учитывать ограничения веб-клиента.

Итог

Что важно запомнить

Присоединённые файлы сохраняются командой «Сохранить на диск», табличные документы — через «Сохранить как» с выбором формата. Программно используются Записать, временное хранилище и НачатьПолучениеФайлов. Проверяйте права доступа и размер сохранённого файла.

Частые вопросы

Куда сохраняется файл, если я не выбирал папку?

В веб-клиенте файл попадает в папку загрузок браузера. В тонком и толстом клиенте при отсутствии явного выбора используется рабочий каталог пользователя, который можно посмотреть в настройках. Всегда проверяйте папку загрузок, если файл «пропал».

Почему кнопка «Сохранить на диск» неактивна?

Чаще всего не хватает прав: у роли пользователя нет права чтения присоединённых файлов. Обратитесь к администратору для проверки ролей. Реже причина в том, что файл не выделен в списке или объект открыт в режиме, не поддерживающем команду.

Можно ли сохранить сразу все присоединённые файлы документа?

Да. Выделите все файлы в списке присоединённых файлов (Ctrl+A) и выполните «Сохранить на диск» — система предложит выбрать каталог и сохранит все файлы с исходными именами. В типовых конфигурациях также есть обработки массовой выгрузки файлов.

В каком формате лучше сохранять печатную форму для отправки контрагенту?

Оптимален PDF: он сохраняет внешний вид документа, не редактируется случайно и открывается на любых устройствах. XLSX подходит, если получатель должен работать с данными. Формат MXL для внешней передачи не используйте — он открывается только в 1С.

Почему программно сохранённый файл имеет нулевой размер?

Признак того, что двоичные данные не попали в файл: либо не выполнено помещение во временное хранилище на сервере, либо адрес хранилища потерян при передаче на клиент. Проверьте последовательность вызовов и время жизни хранилища (используйте уникальный идентификатор формы).

Работает ли сохранение файлов в мобильном клиенте?

Мобильная платформа имеет собственную файловую модель: файлы сохраняются в доступное приложению хранилище устройства, откуда их можно передать через стандартные средства ОС. Прямой записи в произвольный каталог, как на десктопе, нет.