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

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

Как изменить расширение файла в 1С

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

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

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

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

Что такое расширение файла и почему его недостаточно просто поменять

Расширение — это суффикс имени файла: .mxl, .xls, .pdf, .txt, .epf, .erf и так далее. Операционная система по расширению решает, какой программой открывать файл. В контексте 1С типичные расширения: MXL — табличный документ, EPF — внешняя обработка, ERF — внешний отчёт, CFE — расширение конфигурации, DT — выгрузка информационной базы.

Ключевой момент: расширение описывает формат, но не создаёт его. Если вы переименуете табличный документ из «Отчет.mxl» в «Отчет.xls», содержимое останется внутренним форматом 1С, и Excel такой файл, скорее всего, не откроет или покажет ошибку. Корректный путь — не переименование, а сохранение данных в целевом формате штатными средствами.

Как изменить расширение готового файла без программирования

Если файл уже сохранён на диске и требуется просто переименовать его (например, убрать лишнее расширение .xml или заменить .tmp на .txt), проще всего сделать это в проводнике Windows. По умолчанию Windows скрывает расширения зарегистрированных типов, поэтому сначала включите их отображение: в проводнике откройте вкладку «Вид» и установите флажок «Расширения имён файлов». После этого нажмите F2 на файле и отредактируйте часть имени после точки.

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

Переименование файла в Windows
  1. 1
    Откройте проводник и включите отображение расширений: вкладка «Вид» → «Расширения имён файлов»
  2. 2
    Выделите файл и нажмите F2 или выберите «Переименовать» в контекстном меню
  3. 3
    Измените часть имени после точки на нужное расширение
  4. 4
    Подтвердите предупреждение системы о смене расширения
  5. 5
    Проверьте, что файл открывается в целевой программе

Как сохранить табличный документ 1С с другим расширением

Самая частая практическая задача — сохранить печатную форму или отчёт не в MXL, а в XLSX, PDF, HTML или ODS. Делать это нужно не переименованием, а штатным сохранением. Откройте табличный документ, выберите «Файл → Сохранить копию» (или «Сохранить как»), в диалоге укажите тип файла — 1С сама подставит соответствующее расширение и корректно преобразует содержимое.

Программно то же самое выполняется методом Записать() объекта «ТабличныйДокумент» с указанием типа файла через перечисление ТипФайлаТабличногоДокумента. Тогда расширение и формат будут согласованы, и файл без ошибок откроется в сторонней программе.

bsl
ТабДок = Новый ТабличныйДокумент;
// ... заполнение табличного документа ...
ТабДок.Записать("C:\Отчеты\Отчет.xlsx", ТипФайлаТабличногоДокумента.XLSX);
ТабДок.Записать("C:\Отчеты\Отчет.pdf", ТипФайлаТабличногоДокумента.PDF);

Аналогично работают текстовые документы: объект «ТекстовыйДокумент» имеет метод Записать() с указанием имени файла и кодировки. Если нужен файл с конкретным расширением — просто задайте его в имени, содержимое будет текстовым в любом случае.

Программная смена расширения: объект «Файл» и переименование

Когда требуется именно переименовать файл на диске из кода 1С, используются глобальные методы ПереместитьФайл или КопироватьФайл, а также объект «Файл» для разбора имени. Типовой приём: получить объект Файл, прочитать свойства Путь, ИмяБезРасширения и Расширение, сформировать новое полное имя и переместить файл.

bsl
Файл = Новый Файл("C:\Данные\Выгрузка.tmp");
НовоеИмя = Файл.Путь + Файл.ИмяБезРасширения + ".xml";
ПереместитьФайл(Файл.ПолноеИмя, НовоеИмя);

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

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

Получение файла с нужным расширением: временные файлы

Если задача — создать новый файл определённого типа (например, передать внешней компоненте файл .xml или .zip), используйте функцию ПолучитьИмяВременногоФайла с параметром-расширением. Она возвращает уникальное имя во временном каталоге с указанным расширением, после чего вы записываете туда данные любым подходящим способом.

bsl
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ИмяФайла);
// ... запись данных ...
Запись.Закрыть();

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

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

Типичные ошибки
01
Переименование MXL в XLS и ожидание, что Excel откроет файл — формат содержимого не меняется, нужно сохранение через Записать() с типом XLSX
02
Потеря точки при сборке нового имени: свойство Расширение уже содержит точку, а при ручной подстановке её часто забывают или дублируют
03
Использование синхронных файловых методов в тонком или веб-клиенте — код не выполнится, нужны асинхронные аналоги или серверный вызов
04
Смена расширения у присоединённого файла в базе без учёта того, что расширение хранится отдельным реквизитом — имя и реквизит расходятся
05
Забытое удаление временных файлов после обработки — переполнение временного каталога

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

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

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

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

Открытие файла в целевой программе
Норма

Файл открывается без ошибок, данные читаемы

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

Программа сообщает о повреждении или неверном формате — значит, файл переименован, а не сохранён в нужном типе

Имя файла после программной обработки
Норма

Расширение соответствует заданному, точка одна, имя не содержит лишних символов

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

Двойная точка, отсутствие расширения или старое расширение в середине имени

Временные файлы
Норма

После завершения операции временный каталог не накапливает файлы

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

Файлы с расширением tmp множатся — удаление не выполняется

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

Итог

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

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

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

Можно ли открыть MXL-файл в Excel, просто сменив расширение?

Нет, MXL — это внутренний формат табличного документа 1С. Чтобы получить файл для Excel, откройте табличный документ в 1С и сохраните его через «Сохранить копию» с типом XLSX, либо программно вызовите Записать() с ТипФайлаТабличногоДокумента.XLSX.

Как узнать расширение файла программно в 1С?

Создайте объект Файл с полным именем и прочитайте свойство Расширение — оно вернёт строку с точкой, например «.pdf». Базовое имя без расширения доступно в свойстве ИмяБезРасширения.

Почему код с ПереместитьФайл не работает в тонком клиенте?

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

Чем отличается ПолучитьИмяВременногоФайла от обычного задания имени?

Функция генерирует гарантированно уникальное имя во временном каталоге и сразу подставляет указанное расширение. Это исключает конфликты имён при параллельной работе пользователей и избавляет от ручной сборки пути.

Опасно ли менять расширение у файла выгрузки DT?

Сам файл не пострадает, но загрузить его в 1С под другим расширением не получится — загрузчик ожидает .dt. Храните выгрузки с исходным расширением и не переименовывайте служебные файлы базы.

Как массово изменить расширение группы файлов из 1С?

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