Разработка и Конфигурация · 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С у файловых операций тоже есть интерфейс: если файл прикреплён к справочнику (например, в механизме присоединённых файлов БСП), имя и расширение обычно можно изменить через карточку файла, редактируя поле имени. Однако помните: система хранит расширение отдельным реквизитом, и его правка не меняет двоичное содержимое.
- 1Откройте проводник и включите отображение расширений: вкладка «Вид» → «Расширения имён файлов»
- 2Выделите файл и нажмите F2 или выберите «Переименовать» в контекстном меню
- 3Измените часть имени после точки на нужное расширение
- 4Подтвердите предупреждение системы о смене расширения
- 5Проверьте, что файл открывается в целевой программе
Как сохранить табличный документ 1С с другим расширением
Самая частая практическая задача — сохранить печатную форму или отчёт не в MXL, а в XLSX, PDF, HTML или ODS. Делать это нужно не переименованием, а штатным сохранением. Откройте табличный документ, выберите «Файл → Сохранить копию» (или «Сохранить как»), в диалоге укажите тип файла — 1С сама подставит соответствующее расширение и корректно преобразует содержимое.
Программно то же самое выполняется методом Записать() объекта «ТабличныйДокумент» с указанием типа файла через перечисление ТипФайлаТабличногоДокумента. Тогда расширение и формат будут согласованы, и файл без ошибок откроется в сторонней программе.
ТабДок = Новый ТабличныйДокумент;
// ... заполнение табличного документа ...
ТабДок.Записать("C:\Отчеты\Отчет.xlsx", ТипФайлаТабличногоДокумента.XLSX);
ТабДок.Записать("C:\Отчеты\Отчет.pdf", ТипФайлаТабличногоДокумента.PDF);Аналогично работают текстовые документы: объект «ТекстовыйДокумент» имеет метод Записать() с указанием имени файла и кодировки. Если нужен файл с конкретным расширением — просто задайте его в имени, содержимое будет текстовым в любом случае.
Программная смена расширения: объект «Файл» и переименование
Когда требуется именно переименовать файл на диске из кода 1С, используются глобальные методы ПереместитьФайл или КопироватьФайл, а также объект «Файл» для разбора имени. Типовой приём: получить объект Файл, прочитать свойства Путь, ИмяБезРасширения и Расширение, сформировать новое полное имя и переместить файл.
Файл = Новый Файл("C:\Данные\Выгрузка.tmp");
НовоеИмя = Файл.Путь + Файл.ИмяБезРасширения + ".xml";
ПереместитьФайл(Файл.ПолноеИмя, НовоеИмя);Обратите внимание на свойства объекта: Расширение возвращает строку с точкой (например, «.tmp»), ИмяБезРасширения — только базовое имя, Путь — каталог с завершающим разделителем. Это удобно для сборки нового имени без ручного разбора строки.
В тонком и веб-клиенте прямые файловые операции на клиенте ограничены: для работы с файлами используется асинхронная модель (НачатьПеремещениеФайла и аналоги) либо операции выполняются на сервере. Учитывайте это при переносе кода из толстого клиента.
Получение файла с нужным расширением: временные файлы
Если задача — создать новый файл определённого типа (например, передать внешней компоненте файл .xml или .zip), используйте функцию ПолучитьИмяВременногоФайла с параметром-расширением. Она возвращает уникальное имя во временном каталоге с указанным расширением, после чего вы записываете туда данные любым подходящим способом.
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ИмяФайла);
// ... запись данных ...
Запись.Закрыть();Такой подход гарантирует, что имя уникально и не конфликтует с существующими файлами. После использования временные файлы рекомендуется удалять (УдалитьФайлы), чтобы не накапливать мусор в каталоге временных файлов сервера или клиента.
Типичные ошибки и ограничения
Отдельно предупредим о безопасности: переименование системных файлов 1С (файлов базы данных, служебных файлов кластера, файлов конфигурации) с целью «поменять тип» недопустимо — это может привести к невозможности запуска базы. Смена расширения применима только к пользовательским файлам данных: выгрузкам, отчётам, обработкам.
Как проверить результат
Как проверить результат
Файл открывается без ошибок, данные читаемы
Программа сообщает о повреждении или неверном формате — значит, файл переименован, а не сохранён в нужном типе
Расширение соответствует заданному, точка одна, имя не содержит лишних символов
Двойная точка, отсутствие расширения или старое расширение в середине имени
После завершения операции временный каталог не накапливает файлы
Файлы с расширением tmp множатся — удаление не выполняется
Простой способ убедиться, что формат преобразован корректно: откройте сохранённый файл в целевом приложении (Excel, Acrobat Reader, браузер). Если приложение открывает файл без предупреждений о несоответствии формата — всё сделано правильно. Если появляется сообщение вида «формат файла не соответствует расширению», файл был переименован, а не сохранён в нужном типе, и операцию нужно повторить через метод Записать().
Что важно запомнить
Переименование меняет только имя файла, но не его формат. Для смены формата сохраняйте данные штатными методами 1С: Записать() с нужным типом файла. Для программного переименования используйте ПереместитьФайл и объект «Файл», для новых файлов — ПолучитьИмяВременногоФайла с указанием расширения. Системные файлы базы не трогайте.
Частые вопросы
Можно ли открыть MXL-файл в Excel, просто сменив расширение?
Нет, MXL — это внутренний формат табличного документа 1С. Чтобы получить файл для Excel, откройте табличный документ в 1С и сохраните его через «Сохранить копию» с типом XLSX, либо программно вызовите Записать() с ТипФайлаТабличногоДокумента.XLSX.
Как узнать расширение файла программно в 1С?
Создайте объект Файл с полным именем и прочитайте свойство Расширение — оно вернёт строку с точкой, например «.pdf». Базовое имя без расширения доступно в свойстве ИмяБезРасширения.
Почему код с ПереместитьФайл не работает в тонком клиенте?
В тонком и веб-клиенте синхронные файловые операции на клиенте недоступны. Используйте асинхронные методы (НачатьПеремещениеФайла) или выполняйте файловые операции в серверной процедуре, где ограничений нет.
Чем отличается ПолучитьИмяВременногоФайла от обычного задания имени?
Функция генерирует гарантированно уникальное имя во временном каталоге и сразу подставляет указанное расширение. Это исключает конфликты имён при параллельной работе пользователей и избавляет от ручной сборки пути.
Опасно ли менять расширение у файла выгрузки DT?
Сам файл не пострадает, но загрузить его в 1С под другим расширением не получится — загрузчик ожидает .dt. Храните выгрузки с исходным расширением и не переименовывайте служебные файлы базы.
Как массово изменить расширение группы файлов из 1С?
Получите список файлов функцией НайтиФайлы с маской каталога, пройдите по массиву циклом и для каждого файла сформируйте новое имя через свойства объекта Файл, затем выполните ПереместитьФайл. Перед массовой операцией сделайте резервную копию каталога.