Разработка и Конфигурация · 10 мин
Как восстановить код 1С: практические способы восстановления
Как восстановить код 1С из хранилища, резервной копии, поставки и файлов базы. Пошаговые инструкции, ограничения, типичные ошибки и ответы на вопросы.
Потерять код конфигурации 1С можно по разным причинам: случайно удалили модуль, повредилась база, уволился разработчик и не передал исходники, либо обновление «перезаписало» доработки. Хорошая новость в том, что в большинстве случаев код можно восстановить — из хранилища конфигурации, резервной копии, файлов поставки или самой информационной базы.
Ключевой момент: в 1С код живёт не в отдельных текстовых файлах, а внутри конфигурации. Поэтому восстановление почти всегда сводится к поиску версии конфигурации, где нужный код ещё существовал, и аккуратному переносу его в рабочую базу. Способ выбирают в зависимости от того, что именно у вас есть: хранилище, бэкап, файл .cf или только рабочая база.
Перед любыми действиями сделайте резервную копию текущей базы — даже если она «сломанная». Текущее состояние может быть единственным источником данных, и ошибочное восстановление способно уничтожить и его.
Определите, что именно потеряно и что есть в наличии
Термин «восстановить код» на практике означает разные задачи, и от этого зависит инструмент. Возможны четыре типичные ситуации: удалён или испорчен отдельный модуль (общий модуль, модуль объекта, обработки); откатилась вся конфигурация после неудачного обновления; потерян весь исходный код доработок, осталась только рабочая база; повреждена сама информационная база и конфигуратор не открывается.
Составьте список того, что у вас есть: доступ к хранилищу конфигурации, свежая или старая резервная копия (.dt или SQL-бэкап), файл поставки конфигурации (.cf) от вендора или от своей доработанной версии, выгрузка в файлы конфигуратора (XML-выгрузка). Каждый из этих источников — отдельный путь восстановления, описанный ниже.
Версию кода можно откатить до любой сохранённой
Поднимите копию в отдельной базе и выгрузите конфигурацию
Доработки, не входившие в поставку, так не вернуть
Выгрузите конфигурацию в файлы через конфигуратор
Восстановление кода из хранилища конфигурации
Хранилище конфигурации — это встроенная система версионирования 1С. Если разработка велась с его использованием, восстановление занимает минуты: вся история изменений модулей сохранена по версиям.
Откройте конфигуратор, подключитесь к хранилищу (Конфигурация → Хранилище конфигурации → Подключиться). Затем откройте пункт «Хранилище» и просмотрите историю версий. Найдите версию, в которой нужный код ещё существовал — по дате, комментарию или автору изменения.
Для восстановления конфигурации целиком выберите версию и выполните «Загрузить конфигурацию из хранилища» с указанием номера версии. Если нужен только один модуль, удобнее сравнить текущую конфигурацию с версией хранилища через «Сравнить/объединить с конфигурацией из хранилища» и перенести выборочно нужные изменения.
- 1Сделайте резервную копию текущей базы
- 2Подключитесь к хранилищу в конфигураторе
- 3Откройте историю версий и найдите нужную по дате или комментарию
- 4Загрузите версию целиком или сравните и перенесите отдельные модули
- 5Обновите конфигурацию базы данных и проверьте работу кода
Восстановление из резервной копии
Если хранилища нет, но есть резервная копия базы, сделанная до потери кода, код достают из копии. Важно: не восстанавливайте бэкап поверх рабочей базы, если вам нужен только код, — вы потеряете актуальные данные. Поднимите копию в отдельной пустой базе.
Для файловой базы создайте новую пустую базу в списке информационных баз, откройте её конфигуратор и загрузите .dt через «Загрузить информационную базу». Для клиент-серверной базы восстановите SQL-бэкап в отдельную базу на сервере СУБД и пропишите её как новую информационную базу в консоли кластера.
После загрузки откройте конфигуратор восстановленной копии и выгрузите конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл. Полученный .cf дальше сравнивают с рабочей базой через «Сравнить/объединить с конфигурацией из файла» и переносят нужные модули. Либо, если код нужен как текст, используйте «Выгрузить конфигурацию в файлы» — модули будут сохранены в виде читаемых файлов с кодом.
Восстановление из файла поставки и типовой конфигурации
Если потерянный код относится к типовой конфигурации (Бухгалтерия, Управление торговлей, ЗУП и т.п.), его можно восстановить из файла поставки вендора. Файлы поставки обычно находятся в каталоге шаблонов (tmplts) на компьютере, где устанавливалась конфигурация, либо их можно получить, скачав дистрибутив соответствующего релиза.
Создайте из шаблона чистую базу нужного релиза или откройте .cf напрямую через сравнение. В конфигураторе рабочей базы выберите «Сравнить/объединить с конфигурацией из файла», укажите .cf поставки и в дереве различий отметьте только те модули, которые хотите вернуть к типовому состоянию.
Учтите ограничение: из поставки восстанавливается только типовой код. Ваши доработки в этих модулях при полной замене будут затёрты. Поэтому для доработанных модулей используйте режим объединения с ручным разбором отличий, а не полную замену.
Извлечение кода из рабочей базы, когда исходников нет
Частый случай: доработки делал фрилансер, хранилища нет, бэкапов конфигурации нет — но рабочая база функционирует, значит, код внутри неё есть. Конфигурация базы данных хранит весь исполняемый код, и его можно выгрузить.
Откройте конфигуратор этой базы и выполните «Сохранить конфигурацию в файл» — получите .cf, который станет вашим «исходником». Для удобства чтения и переноса в систему контроля версий используйте «Выгрузить конфигурацию в файлы»: модули будут сохранены как текстовые файлы с кодом в иерархии каталогов.
Если конфигурация закрыта (поставляется без исходного кода модуля — «модуль не содержит исходного текста»), восстановить текст штатными средствами нельзя. Такие модули поставщик защищает намеренно, и вариант один — запросить исходники у поставщика или переписать функциональность самостоятельно.
Восстановление при повреждённой базе
Если база не открывается в конфигураторе или выдаёт ошибки чтения, код сначала нужно «добыть», восстановив доступ к базе. Для файловых баз используйте утилиту chdbfl.exe из каталога установки платформы: она проверяет и исправляет физическую целостность файла 1Cv8.1CD. Работайте утилитой только с копией файла, не с оригиналом.
Дополнительно выполните «Тестирование и исправление» информационной базы из конфигуратора (если он открывается). Для клиент-серверных баз восстановление выполняется средствами СУБД из последней консистентной копии.
После восстановления доступа немедленно выгрузите конфигурацию в файл и сделайте выгрузку .dt — это зафиксирует результат. Затем проверьте ключевые модули: откройте их и убедитесь, что текст читается, без обрывов и символов повреждения.
Как проверить результат
Текст кода читается полностью, синтаксический контроль проходит
Обрывы текста, нечитаемые символы, ошибки компиляции
Предприятие открывается, доработки выполняются
Ошибки при запуске или вызове восстановленных процедур
Восстановленные модули совпадают с эталонной версией
Остались неперенесённые изменения или лишние отличия
Как предотвратить потерю кода в будущем
После восстановления наладьте процесс, чтобы ситуация не повторилась. Минимальный набор: используйте хранилище конфигурации даже при работе одного разработчика — это бесплатная история версий встроенными средствами платформы.
Для серьёзной разработки применяйте выгрузку конфигурации в файлы (или EDT) и Git: история изменений, ветки и удалённые копии репозитория защищают код независимо от судьбы конкретной базы. Дополнительно включите в регламент резервного копирования не только данные, но и периодическое сохранение .cf.
Что важно запомнить
Код 1С восстанавливается из хранилища, резервной копии, файла поставки или самой рабочей базы. Перед любыми действиями делайте копию, старые бэкапы поднимайте в отдельной базе, а в рабочую переносите модули выборочно через сравнение/объединение.
Частые вопросы
Можно ли восстановить один удалённый общий модуль, не откатывая всю конфигурацию?
Да. Сравните текущую конфигурацию с версией хранилища или файлом .cf через «Сравнить/объединить», в дереве различий найдите нужный модуль и перенесите только его. Но учтите зависимости: если на модуль ссылаются другие объекты, после восстановления проверьте синтаксический контроль всей конфигурации.
Что делать, если модуль «не содержит исходного текста»?
Это защищённый модуль, поставленный без исходника. Штатными средствами текст не восстановить. Варианты: запросить исходники у поставщика конфигурации, получить версию поставки с открытым кодом (если лицензия это позволяет) или переписать функциональность в собственном модуле.
Хранилища не было, бэкапов нет, а база живая — код спасаем?
Да. Откройте конфигуратор рабочей базы и сохраните конфигурацию в файл .cf или выгрузите в файлы. Весь исполняемый код хранится внутри базы, поэтому пока база работает, исходники модулей (кроме закрытых) извлекаются полностью.
После восстановления из поставки пропали наши доработки. Что делать?
Это следствие полной замены модулей типовыми. Вернитесь к копии, снятой перед восстановлением (именно поэтому её делают всегда), и повторите перенос в режиме объединения с построчным разбором отличий, отмечая только типовые фрагменты.
Поможет ли выгрузка .dt для восстановления только кода?
Файл .dt содержит и данные, и конфигурацию. Загрузите его в отдельную пустую базу, затем из неё сохраните конфигурацию в .cf — так вы получите код без риска затронуть данные рабочей базы.
Чем отличается «Сохранить конфигурацию в файл» от «Выгрузить в файлы»?
Первый вариант создаёт единый двоичный .cf — удобен для сравнения и переноса между базами. Второй сохраняет конфигурацию как набор текстовых файлов (модули в читаемом виде) — подходит для просмотра кода, поиска по тексту и работы с Git.