Изменение файлов 1С: конфигурация и данные

· 9 мин

Содержание

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

Самая частая ошибка — попытка открыть .1cd или .dt в блокноте или hex-редакторе. На экране будет мусор, а если такой «отредактированный» файл сохранить — база превратится в набор битых байтов. Эти форматы меняются только штатными средствами платформы 1С:Предприятие 8.3.

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

Какие бывают файлы 1С и чем их открывать

Расширение файла сразу говорит, что внутри и каким инструментом это менять.

ФайлЧто внутриЧем менять
.dtполная выгрузка базы: данные + конфигурацияКонфигуратор, загрузка в пустую базу
.cfтолько конфигурация (метаданные, код), без данныхКонфигуратор, «Загрузить конфигурацию из файла»
.cfeрасширение конфигурацииКонфигуратор, список расширений
.cfuфайл поставки обновленияКонфигуратор, «Обновить конфигурацию»
.epfвнешняя обработкаКонфигуратор или «Файл → Открыть»
.erfвнешний отчётто же, что обработка
.xmlвыгрузка данных, сериализация объектовтекстовый редактор, обработка, XDTO
.mxlтабличный документ (печатная форма)открывается внутри 1С
.1cdфайл файловой информационной базынапрямую не редактируется

Все эти форматы делятся на три группы. Конфигурация и её части (.cf, .cfe, .cfu) задают структуру и код — их правят в Конфигураторе. Данные (.dt, .xml) содержат значения справочников и документов — их меняют загрузкой-выгрузкой или скриптом. Обработки и отчёты (.epf, .erf) — это отдельные программы, которые открываются как исходник.

Какой файл вам нужно изменить?

Правка конфигурации через Конфигуратор

Структуру и код меняют в режиме Конфигуратор. Порядок такой:

  1. Запустите базу в режиме Конфигуратор (выбор режима — в окне запуска 1С).
  2. Если конфигурация на полной поддержке поставщика, снимите замок: Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения.
  3. Внесите правки в дереве объектов конфигурации — реквизиты, формы, модули.
  4. Примените изменения к базе: Конфигурация → Обновить конфигурацию базы данных (горячая клавиша F7).

Если нужно заменить конфигурацию готовым файлом .cf, используйте Конфигурация → Загрузить конфигурацию из файла. После загрузки платформа предложит обновить конфигурацию базы данных — соглашайтесь, иначе изменения останутся только в «основной» конфигурации и не дойдут до данных.

Загрузка .cf заменяет конфигурацию целиком, а не добавляет отдельные объекты. Все ваши доработки, которых нет в загружаемом файле, пропадут. Для частичного переноса объектов используйте сравнение-объединение (Конфигурация → Сравнить, объединить с конфигурацией из файла).

Обновление конфигурации базы данных меняет структуру таблиц, поэтому требует монопольного доступа — в базе не должно быть других активных сеансов. Платформа сама предупредит, если кто-то работает.

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

Выгрузка конфигурации в XML и правка текстом

Иногда удобнее работать не с бинарным .cf, а с конфигурацией в виде дерева текстовых файлов. Такой формат читается глазами, кладётся в Git и ищется обычным grep.

  • Выгрузка: Конфигурация → Выгрузить конфигурацию в файлы. Платформа создаст каталог с XML-файлами по одному на объект.
  • Правьте эти файлы в любом текстовом редакторе или через систему контроля версий.
  • Обратная загрузка: Конфигурация → Загрузить конфигурацию из файлов.

Текстовое представление незаменимо, когда нужно сравнить две версии конфигурации построчно, найти по всему коду обращение к удалённому реквизиту или массово переименовать переменную.

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

При ручной правке XML не трогайте служебные идентификаторы объектов (внутренние GUID) и строку кодировки в начале файла. Сломаете их — загрузка завершится ошибкой разбора.

Правка данных через XML и сериализацию XDTO

Данные — это не конфигурация. Значения справочников, документов и регистров меняют отдельно. Самый переносимый формат для этого — XML.

Между базами данные гоняют через планы обмена или штатную обработку выгрузки-загрузки данных в XML. Для точечной работы из кода есть сериализация объектов на механизме XDTO. Записать объект в файл:

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\data\element.xml");
СериализаторXDTO.ЗаписатьXML(Запись, ЭлементСправочника);
Запись.Закрыть();

Прочитать из файла обратно:

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\data\element.xml");
Значение = СериализаторXDTO.ПрочитатьXML(Чтение);
Чтение.Закрыть();

Между выгрузкой и загрузкой XML можно открыть в текстовом редакторе и поправить значение реквизита вручную. Это рабочий способ для разовой корректировки, когда штатного интерфейса не хватает.

XML легко испортить руками. Следите за кодировкой UTF-8 и не меняйте ссылки — внутри они хранятся как GUID. Исправленный «на глаз» GUID превратит ссылку в битую, и в базе появятся «висячие» значения вроде <Объект не найден>.

Отдельный случай — печатные формы и макеты в формате .mxl. Это не данные и не конфигурация, а табличные документы. Открываются они прямо внутри 1С: сохраните макет через Файл → Сохранить как в .mxl, откройте в другой базе через Файл → Открыть и вставьте в нужный макет. Текстовым редактором .mxl не правят — формат двоичный.

Если данных много и правка повторяется для каждого объекта, XML обходят в цикле: читают узлы по одному через ЧтениеXML, меняют нужное значение и пишут обратно. Так переносят, например, остатки из старой учётной системы, когда прямого обмена нет.

Массовая правка данных без программирования

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

Открывается она через Главное меню → Все функции → Обработки → Групповое изменение реквизитов. Пункт «Все функции» включается в Сервис → Параметры → Отображать команду "Все функции".

Обработка умеет:

  • 🔧 задать одно значение реквизита сразу для группы объектов по отбору;
  • 🔎 отфильтровать объекты по любому условию перед изменением;
  • ↩️ работать с предпросмотром — видно, что именно поменяется, до записи.

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

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

Перед групповым изменением выгрузите базу в .dt. Если правило отбора окажется шире, чем задумано, вы вернёте данные за минуту, а не будете искать, что именно переписалось.

Автоматизация: пакетный запуск 1cv8 из командной строки

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

Выгрузить информационную базу в .dt:

1cv8 DESIGNER /F "C:\base" /DumpIB "D:\backup\base.dt"

Загрузить .dt обратно:

1cv8 DESIGNER /F "C:\base" /RestoreIB "D:\backup\base.dt"

Выгрузить и загрузить конфигурацию из файла :

1cv8 DESIGNER /F "C:\base" /DumpCfg "D:\cf\base.cf"
1cv8 DESIGNER /F "C:\base" /LoadCfg "D:\cf\base.cf" /UpdateDBCfg

Выгрузить конфигурацию в каталог XML-файлов:

1cv8 DESIGNER /F "C:\base" /DumpConfigToFiles "D:\xml"

Запустить внешнюю обработку в режиме предприятия:

1cv8 ENTERPRISE /F "C:\base" /Execute "D:\proc\update.epf"

Ключ /F указывает путь к файловой базе. Для серверной базы вместо него ставят /S "сервер\имя_базы", а имя и пароль пользователя передают через /N и /P. Остальные параметры смотрите в справке — запуск 1cv8 с ключом /? выводит полный список.

Для запуска без участия человека к команде добавляют /DisableStartupDialogs и /DisableStartupMessages — платформа не покажет диалогов и не остановится в ожидании нажатия. Результат и ошибки удобно писать в лог ключом /Out "D:\log\dump.txt": если ночная выгрузка упадёт, причина останется в файле.

Собранные команды складывают в .bat-файл и ставят в планировщик заданий Windows на ночь. Получается регулярная резервная копия .dt без ручного открытия Конфигуратора. Для серверных баз ту же логику закрывает утилита ibcmd, но её синтаксис отличается — сверяйтесь со справкой утилиты перед первым запуском.

Загрузка .dt (/RestoreIB) и обновление конфигурации БД (/UpdateDBCfg) требуют монопольного доступа: активные сеансы будут принудительно завершены, а незаписанные данные пользователей потеряются. Запускайте такие команды ночью или после предупреждения. На серверной базе список активных сеансов можно заранее посмотреть утилитой администрирования (rac session list).

Частые ошибки при изменении файлов 1С

Эти промахи встречаются чаще всего и каждый из них стоит восстановления из копии.

ОшибкаПоследствиеКак избежать
Загрузили .cf от другой редакции конфигурацииконфигурация не соответствует данным, доработки стёртысверяйте имя и версию конфигурации в .cf перед загрузкой
Не сняли замок поддержкиобъекты не редактируются, кнопки неактивныПоддержка → Настройка поддержки → Включить возможность изменения
Загрузили .dt в рабочую базувсе текущие данные затёрты выгрузкойгрузите .dt только в пустую или тестовую базу
Поправили XML и сбили кодировку или GUIDошибка разбора или «висячие» ссылкине трогайте идентификаторы, сохраняйте в UTF-8
Обновили конфигурацию БД при активных пользователяхплатформа не даёт монопольный доступзавершите сеансы, затем Обновить конфигурацию базы данных

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

Можно ли открыть файл .dt без установленной 1С?
Нет. .dt — это внутренний формат выгрузки платформы, его читает только 1С:Предприятие через Конфигуратор. Сторонние программы, архиваторы и редакторы покажут нечитаемые данные.
Чем .cf отличается от .dt?
В .cf лежит только конфигурация — структура метаданных и код, без единой записи данных. В .dt — полная выгрузка: и конфигурация, и все данные базы. Для переноса доработок берут .cf, для копии всей базы — .dt.
Как изменить внешнюю обработку .epf, если она не открывается в Конфигураторе?
Если автор установил защиту (пароль или закрыл модули от редактирования), штатно открыть исходный код нельзя — это осознанная защита разработки. Без исходного .epf без защиты правки не внести.
Нужна ли лицензия, чтобы менять конфигурацию?
Да. Конфигуратор — такой же режим платформы, как и 1С:Предприятие, и требует лицензии. Без лицензии база не запускается вовсе (исключение — учебная версия платформы с ограничениями).
Можно ли редактировать файл базы .1cd напрямую?
Нет, это не поддерживается и грозит повреждением базы. Чтобы изменить данные, выгрузите базу в .dt или отдельные объекты в XML и работайте уже с ними, а затем загрузите обратно.