Администрирование · 10 мин
Как переместить файл в 1С: инструкция для пользователя и разработчика
Как переместить файл в 1С: команда ПереместитьФайл, работа с присоединёнными файлами, перенос между папками и базами. Примеры кода, ошибки, проверка результата.
Задача «переместить файл» в 1С возникает в трёх разных ситуациях, и способ решения зависит от того, что именно требуется. Первый случай — разработчику нужно переместить файл на диске средствами встроенного языка, например переложить выгрузку из временной папки в архив. Второй — пользователю нужно перенести присоединённый файл из одного документа или элемента справочника в другой внутри базы. Третий — администратору нужно физически перенести каталог с файлами, когда база хранит вложения на диске, а не внутри себя.
Важно сразу разделить два понятия: файл на диске и файл, присоединённый к объекту 1С. В типовых конфигурациях (Бухгалтерия, Управление торговлей, Зарплата и управление персоналом) вложения чаще всего хранятся внутри информационной базы, а на диске лежит только их копия при открытии. Поэтому перемещение файла проводником Windows не изменит его привязку к документу — и наоборот, удаление объекта в 1С не тронет файл на диске.
Ниже разобраны все три сценария: программное перемещение через встроенный язык, перенос присоединённых файлов между объектами и перенос каталога хранения файлов. Для каждого даны условия применения, типовые ошибки и способ проверить результат.
Определите, какой именно файл нужно переместить
Прежде чем действовать, ответьте на один вопрос: где сейчас лежит файл — на диске как обычный документ или внутри базы 1С как присоединённый к объекту? От этого зависит весь дальнейший порядок работы. Файл, прикреплённый к счёту или номенклатуре, в проводнике Windows вы не найдёте, если база хранит вложения внутри себя.
Проверить тип хранения можно так: откройте файл из карточки объекта, затем посмотрите настройки программы. В типовых конфигурациях путь обычно такой: «Администрирование» → «Настройки работы с файлами». Там указано, хранятся ли файлы в информационной базе или в томах на диске. Эта настройка определяет, какие инструменты доступны для перемещения.
Перемещайте проводником или методом ПереместитьФайл в коде
Работайте через справочник присоединённых файлов
Переносите через настройку томов, не вручную
Способ 1. Переместить файл на диске средствами встроенного языка
Для разработчиков и при настройке обменов основной инструмент — метод ПереместитьФайл. Он принимает два параметра: полный путь к исходному файлу и полный путь к месту назначения. Если файл-приёмник уже существует, он будет перезаписан, поэтому перед перемещением стоит проверять наличие файла в целевой папке.
Источник = "C:\Обмен\выгрузка.xml";
Приёмник = "D:\Архив\выгрузка.xml";
Файл = Новый Файл(Источник);
Если Файл.Существует() Тогда
ПереместитьФайл(Источник, Приёмник);
Иначе
Сообщить("Исходный файл не найден: " + Источник);
КонецЕсли;
Учтите особенность клиент-серверной архитектуры: код, выполняющийся на сервере, работает с файловой системой сервера, а не компьютера пользователя. Если обработка запускается в клиент-серверной базе и путь указывает на диск «C:», это будет диск сервера. Для работы с файлами на компьютере пользователя используйте методы НачатьПеремещениеФайла (в тонком клиенте с расширением работы с файлами) или предварительную передачу файла через временное хранилище.
Для массового перемещения удобно сочетать НайтиФайлы с циклом. Пример: перенести все XML-файлы из папки обмена в архив с сохранением имён. Обязательно создавайте целевой каталог заранее — метод не создаёт недостающие папки автоматически и выдаст ошибку.
МассивФайлов = НайтиФайлы("C:\Обмен\", "*.xml");
Для Каждого Файл Из МассивФайлов Цикл
ПереместитьФайл(Файл.ПолноеИмя, "D:\Архив\" + Файл.Имя);
КонецЦикла;Типичные ошибки при программном перемещении
Чаще всего встречаются три проблемы. Первая — отсутствие прав: у пользователя, под которым работает сервер 1С, нет доступа к сетевой папке. Вторая — файл занят другим процессом, например открыт в Excel или ещё записывается обменом. Третья — неправильные слэши или относительные пути вместо абсолютных.
Способ 2. Переместить присоединённый файл между объектами 1С
В типовых конфигурациях вложения хранятся в справочниках присоединённых файлов (например, «СчётПрисоединенныеФайлы» или общий «Файлы» в БСП). Каждый такой элемент ссылается на владельца — документ, элемент справочника номенклатуры, контрагента. «Переместить» файл означает изменить владельца или скопировать файл к другому объекту.
Ручной способ без программирования: откройте объект-источник, перейдите в список присоединённых файлов, сохраните нужный файл на диск командой «Сохранить как», затем откройте объект-приёмник и добавьте файл через «Добавить из файла на диске». После проверки удалите файл у исходного объекта. Это безопасный путь для разовых операций.
Программный способ для массового переноса: найдите элементы справочника присоединённых файлов по старому владельцу и замените реквизит «ВладелецФайла» на новый объект. Перед записью убедитесь, что тип нового владельца допустим для данного справочника — иначе получите ошибку при записи.
- 1Откройте объект-источник и список его присоединённых файлов
- 2Сохраните файл на диск командой «Сохранить как»
- 3Откройте объект-приёмник и добавьте файл с диска
- 4Проверьте, что файл открывается из нового объекта
- 5Удалите файл у исходного объекта
Способ 3. Перенести каталог хранения файлов (тома)
Если база настроена на хранение файлов в томах на диске, перенос папки вручную через проводник нарушит работу: 1С хранит пути к томам в настройках и не найдёт файлы по старым адресам. Правильный порядок — сначала создать новый том в настройках, затем перенести данные.
Общая последовательность: создайте новый каталог, в настройках томов хранения добавьте новый том с актуальным путём, скопируйте содержимое старого каталога в новый с сохранением структуры подпапок, затем отключите или удалите старый том. После этого проверьте открытие нескольких файлов из разных документов. Операцию лучше выполнять при отсутствии активных пользователей, чтобы никто не записал файл в старый том в момент переноса.
Как проверить результат перемещения
После программного перемещения проверьте три вещи: исходный файл отсутствует в старом месте, файл присутствует в новом месте, его размер совпадает с исходным. Если размер отличается или файл не открывается — копия повреждена, и операцию нужно повторить, пока источник не удалён окончательно.
После переноса присоединённых файлов откройте несколько объектов-приёмников и убедитесь, что вложения открываются без ошибок «файл не найден». Для томов хранения дополнительно проверьте добавление нового файла: он должен появиться в новом каталоге, а не в старом.
Как проверить результат
Файла в старой папке нет
Файл остался — перемещение не выполнилось, сработало копирование или ошибка
Файл открывается, размер совпадает с исходным
Файл не открывается или имеет нулевой размер
Вложение открывается из карточки нового объекта
Ошибка «файл не найден» при открытии
Новый файл сохраняется в новый том
Файл по-прежнему пишется в старый каталог
Как выбрать подходящий способ
Выбор зависит от масштаба и расположения файлов. Разовое перемещение одного вложения проще сделать вручную через «Сохранить как» и повторное добавление. Регулярные операции в обменах данными — автоматизировать кодом с ПереместитьФайл. Смена диска или сервера для хранения вложений — только через настройку томов.
Как выбрать действие
Часто задаваемые вопросы
Чем ПереместитьФайл отличается от КопироватьФайл в 1С?
КопироватьФайл создаёт дубликат в новом месте, оставляя оригинал на старом. ПереместитьФайл переносит файл: после успешной операции в исходном расположении его нет. Если нужна страховка, сначала скопируйте, проверьте копию и только потом удаляйте оригинал.
Почему ПереместитьФайл выдаёт ошибку «файл не найден», хотя файл есть?
Чаще всего код выполняется на сервере, а файл лежит на компьютере пользователя — сервер не видит локальные диски клиента. Проверьте, где выполняется код, и используйте абсолютные пути. Также проверьте права учётной записи службы сервера 1С на каталог.
Можно ли переместить присоединённый файл между разными базами 1С?
Напрямую — нет, присоединённые файлы привязаны к объектам конкретной базы. Путь такой: сохранить файл на диск из базы-источника и добавить его к объекту в базе-приёмнике. Для регулярных переносов используют обмены через универсальный формат или план обмена, если конфигурации совместимы.
Что будет, если удалить папку тома хранения файлов вручную?
Все вложения, хранившиеся в этом томе, станут недоступны: при открытии файла из карточки объекта появится ошибка. Сами объекты (документы, справочники) не пострадают, но восстановить вложения получится только из резервной копии.
Как переместить все файлы одного типа из папки в архив?
Используйте НайтиФайлы с маской (например, «*.pdf»), затем в цикле вызовите ПереместитьФайл для каждого найденного файла, формируя путь приёмника из целевой папки и имени файла. Предварительно создайте целевую папку методом СоздатьКаталог.
Перезапишет ли ПереместитьФайл существующий файл в папке назначения?
Да, если файл с таким именем уже существует в целевом каталоге, он будет заменён без предупреждения. Чтобы не потерять данные, перед перемещением проверяйте наличие файла-приёмника через объект Файл и при необходимости формируйте уникальное имя, например с датой и временем.
Что важно запомнить
Способ перемещения зависит от того, где лежит файл: на диске — ПереместитьФайл или проводник, в базе как вложение — работа через присоединённые файлы, в томе хранения — перенос через настройки томов. Перед массовыми операциями делайте резервную копию и проверяйте результат открытием файлов из нового расположения.