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

Администрирование · 10 мин

Как переместить файл в 1С: инструкция для пользователя и разработчика

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

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

Важно сразу разделить два понятия: файл на диске и файл, присоединённый к объекту 1С. В типовых конфигурациях (Бухгалтерия, Управление торговлей, Зарплата и управление персоналом) вложения чаще всего хранятся внутри информационной базы, а на диске лежит только их копия при открытии. Поэтому перемещение файла проводником Windows не изменит его привязку к документу — и наоборот, удаление объекта в 1С не тронет файл на диске.

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

Определите, какой именно файл нужно переместить

Прежде чем действовать, ответьте на один вопрос: где сейчас лежит файл — на диске как обычный документ или внутри базы 1С как присоединённый к объекту? От этого зависит весь дальнейший порядок работы. Файл, прикреплённый к счёту или номенклатуре, в проводнике Windows вы не найдёте, если база хранит вложения внутри себя.

Проверить тип хранения можно так: откройте файл из карточки объекта, затем посмотрите настройки программы. В типовых конфигурациях путь обычно такой: «Администрирование» → «Настройки работы с файлами». Там указано, хранятся ли файлы в информационной базе или в томах на диске. Эта настройка определяет, какие инструменты доступны для перемещения.

Файл виден в проводнике WindowsОбычный файл на диске

Перемещайте проводником или методом ПереместитьФайл в коде

Файл открывается только из карточки объекта 1СПрисоединённый файл в базе

Работайте через справочник присоединённых файлов

В настройках включены тома храненияФайлы лежат в каталоге на диске, но управляются 1С

Переносите через настройку томов, не вручную

Способ 1. Переместить файл на диске средствами встроенного языка

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

Источник = "C:\Обмен\выгрузка.xml";

Приёмник = "D:\Архив\выгрузка.xml";

Файл = Новый Файл(Источник);

Если Файл.Существует() Тогда

ПереместитьФайл(Источник, Приёмник);

Иначе

Сообщить("Исходный файл не найден: " + Источник);

КонецЕсли;

Учтите особенность клиент-серверной архитектуры: код, выполняющийся на сервере, работает с файловой системой сервера, а не компьютера пользователя. Если обработка запускается в клиент-серверной базе и путь указывает на диск «C:», это будет диск сервера. Для работы с файлами на компьютере пользователя используйте методы НачатьПеремещениеФайла (в тонком клиенте с расширением работы с файлами) или предварительную передачу файла через временное хранилище.

Для массового перемещения удобно сочетать НайтиФайлы с циклом. Пример: перенести все XML-файлы из папки обмена в архив с сохранением имён. Обязательно создавайте целевой каталог заранее — метод не создаёт недостающие папки автоматически и выдаст ошибку.

bsl
МассивФайлов = НайтиФайлы("C:\Обмен\", "*.xml");
Для Каждого Файл Из МассивФайлов Цикл
    ПереместитьФайл(Файл.ПолноеИмя, "D:\Архив\" + Файл.Имя);
КонецЦикла;

Типичные ошибки при программном перемещении

Чаще всего встречаются три проблемы. Первая — отсутствие прав: у пользователя, под которым работает сервер 1С, нет доступа к сетевой папке. Вторая — файл занят другим процессом, например открыт в Excel или ещё записывается обменом. Третья — неправильные слэши или относительные пути вместо абсолютных.

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

Способ 2. Переместить присоединённый файл между объектами 1С

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

Ручной способ без программирования: откройте объект-источник, перейдите в список присоединённых файлов, сохраните нужный файл на диск командой «Сохранить как», затем откройте объект-приёмник и добавьте файл через «Добавить из файла на диске». После проверки удалите файл у исходного объекта. Это безопасный путь для разовых операций.

Программный способ для массового переноса: найдите элементы справочника присоединённых файлов по старому владельцу и замените реквизит «ВладелецФайла» на новый объект. Перед записью убедитесь, что тип нового владельца допустим для данного справочника — иначе получите ошибку при записи.

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

Способ 3. Перенести каталог хранения файлов (тома)

Если база настроена на хранение файлов в томах на диске, перенос папки вручную через проводник нарушит работу: 1С хранит пути к томам в настройках и не найдёт файлы по старым адресам. Правильный порядок — сначала создать новый том в настройках, затем перенести данные.

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

Как проверить результат перемещения

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

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

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

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

Исходное расположение
Норма

Файла в старой папке нет

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

Файл остался — перемещение не выполнилось, сработало копирование или ошибка

Новое расположение
Норма

Файл открывается, размер совпадает с исходным

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

Файл не открывается или имеет нулевой размер

Присоединённые файлы в 1С
Норма

Вложение открывается из карточки нового объекта

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

Ошибка «файл не найден» при открытии

Добавление нового файла
Норма

Новый файл сохраняется в новый том

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

Файл по-прежнему пишется в старый каталог

Как выбрать подходящий способ

Выбор зависит от масштаба и расположения файлов. Разовое перемещение одного вложения проще сделать вручную через «Сохранить как» и повторное добавление. Регулярные операции в обменах данными — автоматизировать кодом с ПереместитьФайл. Смена диска или сервера для хранения вложений — только через настройку томов.

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

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

Нужно перенести один-два файла между документамиСохраните файл на диск и добавьте его к новому объекту вручную
Перенос выполняется регулярно в обмене даннымиИспользуйте ПереместитьФайл в коде с проверкой существования файла
Файлы хранятся в томах и меняется диск или серверСоздайте новый том в настройках и переносите каталог при остановленной работе пользователей
Нужно переместить файл с компьютера пользователя в клиент-серверной базеИспользуйте клиентские методы работы с файлами, а не серверный ПереместитьФайл

Часто задаваемые вопросы

Чем ПереместитьФайл отличается от КопироватьФайл в 1С?

КопироватьФайл создаёт дубликат в новом месте, оставляя оригинал на старом. ПереместитьФайл переносит файл: после успешной операции в исходном расположении его нет. Если нужна страховка, сначала скопируйте, проверьте копию и только потом удаляйте оригинал.

Почему ПереместитьФайл выдаёт ошибку «файл не найден», хотя файл есть?

Чаще всего код выполняется на сервере, а файл лежит на компьютере пользователя — сервер не видит локальные диски клиента. Проверьте, где выполняется код, и используйте абсолютные пути. Также проверьте права учётной записи службы сервера 1С на каталог.

Можно ли переместить присоединённый файл между разными базами 1С?

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

Что будет, если удалить папку тома хранения файлов вручную?

Все вложения, хранившиеся в этом томе, станут недоступны: при открытии файла из карточки объекта появится ошибка. Сами объекты (документы, справочники) не пострадают, но восстановить вложения получится только из резервной копии.

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

Используйте НайтиФайлы с маской (например, «*.pdf»), затем в цикле вызовите ПереместитьФайл для каждого найденного файла, формируя путь приёмника из целевой папки и имени файла. Предварительно создайте целевую папку методом СоздатьКаталог.

Перезапишет ли ПереместитьФайл существующий файл в папке назначения?

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

Итог

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

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