Сохраняем доработки 1С без потерь: Конфигуратор, хранилище, файлы и Git

· 10 мин

Содержание

Чтобы сохранить проект в 1С 8.3 в Конфигураторе, нажмите Ctrl+S (Файл → Сохранить): изменения запишутся в основную конфигурацию. Пользователи увидят их только после F7 — команды Конфигурация → Обновить конфигурацию базы данных. Копию проекта вне базы делают через Конфигурация → Сохранить конфигурацию в файл (файл .cf) или Конфигурация → Выгрузить конфигурацию в файлы (набор XML для Git).

Способ сохранения зависит от того, как вы работаете. Один разработчик в своей базе обходится Ctrl+S, F7 и регулярной выгрузкой .cf. Команда из двух-трёх человек подключается к хранилищу конфигурации. Если проект ведут в 1C:Enterprise Development Tools (EDT), он уже лежит файлами на диске, и его сохраняют коммитами в Git. Внешние обработки и отчёты живут отдельно от базы — это обычные файлы .epf и .erf.

Что значит «сохранить» в Конфигураторе: три состояния конфигурации

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

  • 🛠 Основная конфигурация — та, которую вы правите в дереве метаданных. Ctrl+S пишет изменения именно сюда.
  • 🗄 Конфигурация базы данных — та, по которой реально работают пользователи. Её меняет только обновление (F7).
  • 💾 Несохранённые правки — висят в памяти Конфигуратора. В заголовке дерева конфигурации появляется звёздочка. Закрыли программу аварийно — правки пропали.

Порядок сохранения доработки

  1. Закончите правку модуля или формы. Проверьте синтаксис: Ctrl+F7 в модуле или Конфигурация → Проверка конфигурации.
  2. Нажмите Ctrl+S. Звёздочка в заголовке исчезнет.
  3. Нажмите F7. Конфигуратор покажет список изменений структуры, если они есть, и попросит подтвердить реорганизацию.
  4. Нажмите Принять. После обновления пользователи увидят изменения при следующем запуске или по предложению перезапуститься.

F7 без предварительного Ctrl+S тоже работает: Конфигуратор сам предложит сохранить основную конфигурацию. Но привычка жать Ctrl+S каждые несколько минут страхует от вылета программы.

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

Как откатить несохранённое

Если доработка ушла не туда и вы ещё не обновили базу, выполните Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Основная конфигурация станет такой же, как рабочая. Все правки после последнего обновления (F7) будут потеряны — перед откатом выгрузите .cf, если в правках есть что-то ценное.

Как сохранить конфигурацию 1С в файл CF и выгрузить в XML

Для копии проекта вне базы есть два формата. Они решают разные задачи.

ФорматКоманда менюЧто внутриКогда выбирать
.cfКонфигурация → Сохранить конфигурацию в файлВся конфигурация одним файлом, без данныхРезервная копия перед доработкой, перенос в другую базу, передача подрядчику
XML-файлыКонфигурация → Выгрузить конфигурацию в файлыКаталог: каждый объект метаданных, модуль и форма — отдельный файлХранение в Git, сравнение версий построчно, поиск по коду внешним редактором
.cfeКонфигурация → Расширения конфигурации, в окне расширения — Конфигурация → Сохранить в файлОдно расширениеДоработки сделаны расширением, а не правкой типовой
.dtАдминистрирование → Выгрузить информационную базуКонфигурация и все данныеПолная копия базы, не путать с сохранением проекта

Команда Сохранить конфигурацию в файл берёт основную конфигурацию, то есть с вашими сохранёнными, но ещё не применёнными правками. Если нужна именно рабочая версия, выгружайте её через Конфигурация → Конфигурация базы данных → Сохранить конфигурацию БД в файл.

Выгрузка в XML: на что смотреть

При выгрузке в файлы Конфигуратор спрашивает каталог и формат. Иерархический формат раскладывает объекты по папкам (Catalogs, Documents, CommonModules), с ним удобнее работать в Git. Каталог для выгрузки берите пустой: при выгрузке поверх старой копии удалённые из конфигурации объекты останутся лежать на диске, и это потом путает.

Обратная операция — Конфигурация → Загрузить конфигурацию из файлов. Она заменяет основную конфигурацию содержимым каталога. В пакетном режиме можно загрузить не весь каталог, а только список изменённых файлов — на больших конфигурациях это заметно быстрее.

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

Хранилище конфигурации: сохраняем проект для команды

Хранилище — встроенная в платформу система версий. Каждый разработчик работает в своей копии базы, а общий проект живёт в хранилище. Сохранение здесь называется «поместить».

Цикл работы с объектом

  1. Подключитесь: Конфигурация → Хранилище конфигурации → Подключиться к хранилищу, укажите путь к каталогу хранилища или адрес сервера хранилища (tcp://server/repo), имя и пароль.
  2. Захватите объект: правой кнопкой по объекту в дереве → Захватить в хранилище. Захваченный объект помечается замком, остальные разработчики его не изменят.
  3. Внесите правки и сохраните Ctrl+S.
  4. Поместите изменения: Конфигурация → Хранилище конфигурации → Поместить изменения в хранилище. Напишите комментарий — номер задачи и суть правки. Флажок «Оставить объекты захваченными» нужен, если работа не закончена.
  5. Обновите рабочую базу F7.

Чужие изменения забирают командой Конфигурация → Хранилище конфигурации → Обновить конфигурацию из хранилища.

💡 Помещайте изменения маленькими порциями, хотя бы раз в день. Захват объекта на неделю блокирует коллег, а одно большое помещение невозможно разобрать при ошибке.

Версии хранилища как резервная копия

Конфигурация → Хранилище конфигурации → История хранилища показывает все версии с автором, датой и комментарием. Любую версию можно сохранить в .cf или сравнить с текущей. Так восстанавливают объект, который сломали две недели назад: открыли историю, нашли версию до правки, сохранили её в файл и через Сравнить, объединить вернули нужный модуль.

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

Сохранение проекта из командной строки

Ручные выгрузки забываются. Пакетный режим Конфигуратора позволяет сохранять проект по расписанию из планировщика Windows.

Сохранить конфигурацию файловой базы в .cf:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Dev" /N"Admin" /P"пароль" /DumpCfg "D:\Backup\dev_%date:~6,4%%date:~3,2%%date:~0,2%.cf" /Out "D:\Backup\dump.log"

Выгрузить конфигурацию в XML для коммита в Git:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Dev" /N"Admin" /P"пароль" /DumpConfigToFiles "D:\Repo\src" -Format Hierarchical /Out "D:\Backup\xml.log"

Для клиент-серверной базы вместо /F"путь" укажите /S"сервер\имя_базы". Номер версии платформы в пути подставьте свой.

Ещё три полезные команды:

  • /LoadConfigFromFiles "каталог" — загрузить конфигурацию из XML;
  • /UpdateDBCfg — обновить конфигурацию базы данных после загрузки;
  • /ConfigurationRepositoryUpdateCfg вместе с параметрами /ConfigurationRepositoryF, /ConfigurationRepositoryN, /ConfigurationRepositoryP — получить актуальную версию из хранилища.

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

Пароль в bat-файле лежит открытым текстом. Создайте для выгрузок отдельного пользователя с правами только на Конфигуратор и ограничьте доступ к папке со скриптом.

Перед выгрузкой проверьте, что в базе никто не держит Конфигуратор с несохранёнными правками: пакетная выгрузка возьмёт только то, что уже записано через Ctrl+S.

Проект в EDT и Git

В 1C:Enterprise Development Tools проект — это каталог с исходниками в формате EDT внутри рабочей области (workspace). Здесь «сохранить» означает две разные вещи.

Сохранение файла и синхронизация с базой

  • Ctrl+S в редакторе записывает модуль на диск, в каталог проекта. Никакая база при этом не меняется.
  • Чтобы изменения попали в информационную базу, EDT обновляет её конфигурацию: при запуске отладки или командой обновления конфигурации в контекстном меню информационной базы на панели «Информационные базы».
  • В EDT работает локальная история файлов Eclipse: правой кнопкой по модулю → Compare With → Local History (в русской локализации — «Сравнить с локальной историей»). Она выручает, если вы затёрли код и ещё не закоммитили.

Коммит и отправка на сервер

  1. Откройте представление Git Staging.
  2. Перенесите изменённые файлы в «Индексированные изменения» (Staged Changes).
  3. Напишите сообщение коммита и нажмите Commit — изменения сохранены в локальный репозиторий.
  4. Нажмите Push — коммит ушёл на сервер (GitLab, Gitea, Bitbucket и другие).

Тем, кто остаётся в Конфигураторе, тоже доступен Git: выгрузка в XML из командной строки по расписанию плюс git add и git commit в том же bat-файле. Есть и готовые инструменты сообщества, например gitsync на OneScript: он переносит историю хранилища конфигурации в Git, по коммиту на каждую версию хранилища с автором и комментарием.

Формат XML Конфигуратора и формат EDT разные. Импортировать выгрузку Конфигуратора в EDT можно, но держите в одном Git-репозитории один формат, иначе история изменений превратится в шум.

Как сохранить внешнюю обработку или отчёт

Внешняя обработка не хранится в конфигурации, это отдельный файл.

  1. В Конфигураторе откройте обработку: Файл → Открыть, выберите .epf или .erf.
  2. После правок нажмите Ctrl+S. Если обработка новая (Файл → Новый → Внешняя обработка), Конфигуратор спросит имя и папку.
  3. Чтобы сохранить копию под другим именем, выберите Файл → Сохранить как.

Расширения файлов:

  • 📄 .epf — внешняя обработка;
  • 📊 .erf — внешний отчёт.

Если обработка подключена в базе через Дополнительные отчеты и обработки (в БП 3.0 это раздел Администрирование → Печатные формы, отчеты и обработки), то после правки файла её нужно заново загрузить в карточку. В карточке есть команда загрузки из файла; файл из базы можно и выгрузить обратно на диск — так забирают обработку, у которой потерялся исходник.

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

Внешние обработки тоже стоит хранить в Git. Бинарный .epf построчно не сравнить, поэтому его раскладывают в XML пакетным режимом с параметром /DumpExternalDataProcessorOrReportToFiles и коммитят уже каталог с файлами.

Аварийное сохранение и восстановление проекта

Конфигуратор не делает автосохранения. Всё, что не записано через Ctrl+S, при зависании или сбое теряется. Ниже — что делать в типичных ситуациях.

Что случилось с вашим проектом?

Как не попадать в такие ситуации

  • ⏱ Ctrl+S каждые 10–15 минут и перед любой долгой операцией: проверкой конфигурации, сравнением, обновлением.
  • 💾 .cf перед каждой серьёзной доработкой и перед обновлением типовой. Это одна команда и пара минут.
  • 🗓 Ночная выгрузка .cf или XML пакетным режимом с датой в имени файла. Храните хотя бы 14 последних копий.
  • 🧩 Доработки типовых — в расширениях. Расширение сохраняется отдельным .cfe, а типовая обновляется без объединения.
  • 🔐 Хранилище или Git даже для одного разработчика: история версий заменяет десяток файлов «обработка_final_2.epf».

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

Можно ли сохранить конфигурацию, если база открыта пользователями?
Да. Ctrl+S и выгрузка в .cf или XML работают при работающих пользователях. Монопольный доступ может понадобиться только при обновлении базы с изменением структуры данных.
Чем файл .cf отличается от .dt?
.cf содержит только конфигурацию: метаданные, модули, формы, макеты. .dt — это выгрузка всей информационной базы вместе с данными. Для сохранения проекта разработчика нужен .cf, для полной копии базы — .dt.
Почему после Ctrl+S пользователи не видят изменений?
Ctrl+S записывает основную конфигурацию, а пользователи работают по конфигурации базы данных. Нужно выполнить F7 — обновить конфигурацию базы данных.
Сохранит ли выгрузка в .cf пароли пользователей и настройки?
Нет. Список пользователей, их пароли, пользовательские настройки и данные лежат в базе, а не в конфигурации. Для их переноса нужна выгрузка .dt.
Как перенести один объект в другую базу, а не всю конфигурацию?
Выгрузите конфигурацию-источник в .cf, в базе-приёмнике выполните Конфигурация → Сравнить, объединить с конфигурацией из файла и отметьте флажками только нужный объект. Остальное останется без изменений.