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

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

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

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

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

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

Ниже разобраны оба сценария: синтаксис методов, работа в тонком и веб-клиенте, обработка ошибок, переименование присоединённых файлов и проверка результата. Примеры приведены для актуальных версий платформы 1С:Предприятие 8.3.

Какой сценарий вам нужен: файл на диске или файл в базе

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

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

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

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

Файл лежит на диске или в сетевой папкеИспользуйте ПереместитьФайл с полным путём источника и новым именем
Файл присоединён к объекту базы (документу, справочнику)Измените реквизит Наименование элемента справочника присоединённых файлов
Файл в томе хранения файлов (БСП)Меняйте только реквизиты объекта через API БСП, файлы тома напрямую не трогайте

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

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

// Переименование файла в том же каталоге

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

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

ПереместитьФайл(СтароеИмя, НовоеИмя);

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

Файл = Новый Файл(СтароеИмя);

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

ВызватьИсключение "Файл не найден: " + СтароеИмя;

КонецЕсли;

Попытка

ПереместитьФайл(СтароеИмя, НовоеИмя);

Исключение

Сообщить("Не удалось переименовать файл: "

+ ОписаниеОшибки());

КонецПопытки;

bsl
ПереместитьФайл("C:\Обмен\старое.xml", "C:\Обмен\новое.xml");

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

Работа в клиент-серверном режиме: где выполняется код

Частая причина «неработающего» переименования — неправильное место исполнения кода. Если код выполняется на сервере 1С, пути интерпретируются относительно сервера, и каталог C:\Обмен — это диск сервера, а не компьютера пользователя. Файл, который пользователь видит у себя, серверу может быть недоступен.

Чтобы переименовать файл на компьютере пользователя, операцию выполняют в клиентском контексте (директивы &НаКлиенте). Для серверных операций используют пути, доступные серверу: сетевые ресурсы с правами учётной записи службы агента сервера 1С или локальные каталоги сервера.

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

Пакетное переименование и поиск файлов

Когда нужно переименовать группу файлов по маске (например, все отчёты за период), используют метод НайтиФайлы. Он возвращает массив объектов Файл, по которым удобно пройти циклом и сформировать новые имена.

Найденные = НайтиФайлы("C:\Обмен\", "*.xml");

Для Каждого Файл Из Найденные Цикл

Если Файл.ЭтоКаталог() Тогда

Продолжить;

КонецЕсли;

НовоеИмя = Файл.Путь + "архив_" + Файл.Имя;

ПереместитьФайл(Файл.ПолноеИмя, НовоеИмя);

КонецЦикла;

Объект Файл даёт готовые свойства для разбора имени: Путь (каталог с завершающим слэшем), Имя (имя с расширением), ИмяБезРасширения и Расширение. Это избавляет от ручного разбора строки и ошибок с разделителями.

Переименование присоединённого файла в базе

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

ФайлОбъект = СсылкаНаФайл.ПолучитьОбъект();

ФайлОбъект.Наименование = "Договор_подписанный";

ФайлОбъект.Записать();

В пользовательском режиме переименовать присоединённый файл можно без программирования: откройте карточку файла из списка присоединённых файлов объекта и измените наименование. В ряде конфигураций доступно редактирование имени прямо в списке по клавише F2 или через команду «Изменить».

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

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

Проверка результата и обработка ошибок

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

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

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

Существование файла с новым именем
Норма

Новый Файл(НовоеИмя).Существует() возвращает Истина

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

Файл не найден — операция не выполнена

Отсутствие старого файла
Норма

Старое имя не существует

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

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

Открытие присоединённого файла
Норма

Файл открывается из карточки объекта

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

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

Права доступа
Норма

Операция выполняется без исключений

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

Ошибка доступа — нет прав у учётной записи сервера или пользователя

Для журналирования ошибок в регламентных операциях используйте ЗаписьЖурналаРегистрации вместо Сообщить — тогда сведения о сбоях останутся в журнале регистрации и будут доступны администратору даже при фоновом выполнении.

Итог

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

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

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

Можно ли переименовать файл штатными средствами без программирования?

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

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

Чаще всего путь указан относительно не того компьютера: код выполняется на сервере, а файл лежит на машине пользователя. Проверьте контекст исполнения (&НаСервере или &НаКлиенте), полноту пути и наличие файла через объект Файл перед операцией.

Как переименовать файл, если он занят другим процессом?

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

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

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

Можно ли переименовать каталог тем же способом?

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

Как сформировать уникальное имя, если файл с новым именем уже существует?

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