Сохраняем доработки 1С без потерь: Конфигуратор, хранилище, файлы и Git
Содержание
Чтобы сохранить проект в 1С 8.3 в Конфигураторе, нажмите Ctrl+S (Файл → Сохранить): изменения запишутся в основную конфигурацию. Пользователи увидят их только после F7 — команды Конфигурация → Обновить конфигурацию базы данных. Копию проекта вне базы делают через Конфигурация → Сохранить конфигурацию в файл (файл .cf) или Конфигурация → Выгрузить конфигурацию в файлы (набор XML для Git).
Способ сохранения зависит от того, как вы работаете. Один разработчик в своей базе обходится Ctrl+S, F7 и регулярной выгрузкой .cf. Команда из двух-трёх человек подключается к хранилищу конфигурации. Если проект ведут в 1C:Enterprise Development Tools (EDT), он уже лежит файлами на диске, и его сохраняют коммитами в Git. Внешние обработки и отчёты живут отдельно от базы — это обычные файлы .epf и .erf.
Что значит «сохранить» в Конфигураторе: три состояния конфигурации
В информационной базе одновременно существуют две конфигурации, и путаница между ними — главная причина «потерянных» доработок.
- 🛠 Основная конфигурация — та, которую вы правите в дереве метаданных.
Ctrl+Sпишет изменения именно сюда. - 🗄 Конфигурация базы данных — та, по которой реально работают пользователи. Её меняет только обновление (
F7). - 💾 Несохранённые правки — висят в памяти Конфигуратора. В заголовке дерева конфигурации появляется звёздочка. Закрыли программу аварийно — правки пропали.
Порядок сохранения доработки
- Закончите правку модуля или формы. Проверьте синтаксис:
Ctrl+F7в модуле илиКонфигурация → Проверка конфигурации. - Нажмите
Ctrl+S. Звёздочка в заголовке исчезнет. - Нажмите
F7. Конфигуратор покажет список изменений структуры, если они есть, и попросит подтвердить реорганизацию. - Нажмите
Принять. После обновления пользователи увидят изменения при следующем запуске или по предложению перезапуститься.
F7 без предварительного Ctrl+S тоже работает: Конфигуратор сам предложит сохранить основную конфигурацию. Но привычка жать Ctrl+S каждые несколько минут страхует от вылета программы.
Если изменилась структура хранения данных (новый реквизит, новый регистр, изменённый тип), для обновления нужен монопольный доступ к базе. При работающих пользователях Конфигуратор предложит динамическое обновление или откажет. Обновление со структурными изменениями планируйте на время, когда в базе никого нет.
Как откатить несохранённое
Если доработка ушла не туда и вы ещё не обновили базу, выполните Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Основная конфигурация станет такой же, как рабочая. Все правки после последнего обновления (F7) будут потеряны — перед откатом выгрузите .cf, если в правках есть что-то ценное.
Как сохранить конфигурацию 1С в файл CF и выгрузить в XML
Для копии проекта вне базы есть два формата. Они решают разные задачи.
| Формат | Команда меню | Что внутри | Когда выбирать |
|---|---|---|---|
.cf | Конфигурация → Сохранить конфигурацию в файл | Вся конфигурация одним файлом, без данных | Резервная копия перед доработкой, перенос в другую базу, передача подрядчику |
| XML-файлы | Конфигурация → Выгрузить конфигурацию в файлы | Каталог: каждый объект метаданных, модуль и форма — отдельный файл | Хранение в Git, сравнение версий построчно, поиск по коду внешним редактором |
.cfe | Конфигурация → Расширения конфигурации, в окне расширения — Конфигурация → Сохранить в файл | Одно расширение | Доработки сделаны расширением, а не правкой типовой |
.dt | Администрирование → Выгрузить информационную базу | Конфигурация и все данные | Полная копия базы, не путать с сохранением проекта |
Команда Сохранить конфигурацию в файл берёт основную конфигурацию, то есть с вашими сохранёнными, но ещё не применёнными правками. Если нужна именно рабочая версия, выгружайте её через Конфигурация → Конфигурация базы данных → Сохранить конфигурацию БД в файл.
Выгрузка в XML: на что смотреть
При выгрузке в файлы Конфигуратор спрашивает каталог и формат. Иерархический формат раскладывает объекты по папкам (Catalogs, Documents, CommonModules), с ним удобнее работать в Git. Каталог для выгрузки берите пустой: при выгрузке поверх старой копии удалённые из конфигурации объекты останутся лежать на диске, и это потом путает.
Обратная операция — Конфигурация → Загрузить конфигурацию из файлов. Она заменяет основную конфигурацию содержимым каталога. В пакетном режиме можно загрузить не весь каталог, а только список изменённых файлов — на больших конфигурациях это заметно быстрее.
Загрузка .cf или XML полностью заменяет основную конфигурацию. Если база на поддержке поставщика, вместо загрузки обычно используют Конфигурация → Сравнить, объединить с конфигурацией из файла: так сохраняются и ваши доработки, и настройки поддержки. В любом случае сначала сохраните текущую конфигурацию в файл.
Хранилище конфигурации: сохраняем проект для команды
Хранилище — встроенная в платформу система версий. Каждый разработчик работает в своей копии базы, а общий проект живёт в хранилище. Сохранение здесь называется «поместить».
Цикл работы с объектом
- Подключитесь:
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу, укажите путь к каталогу хранилища или адрес сервера хранилища (tcp://server/repo), имя и пароль. - Захватите объект: правой кнопкой по объекту в дереве →
Захватить в хранилище. Захваченный объект помечается замком, остальные разработчики его не изменят. - Внесите правки и сохраните
Ctrl+S. - Поместите изменения:
Конфигурация → Хранилище конфигурации → Поместить изменения в хранилище. Напишите комментарий — номер задачи и суть правки. Флажок «Оставить объекты захваченными» нужен, если работа не закончена. - Обновите рабочую базу
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(в русской локализации — «Сравнить с локальной историей»). Она выручает, если вы затёрли код и ещё не закоммитили.
Коммит и отправка на сервер
- Откройте представление Git Staging.
- Перенесите изменённые файлы в «Индексированные изменения» (Staged Changes).
- Напишите сообщение коммита и нажмите
Commit— изменения сохранены в локальный репозиторий. - Нажмите
Push— коммит ушёл на сервер (GitLab, Gitea, Bitbucket и другие).
Тем, кто остаётся в Конфигураторе, тоже доступен Git: выгрузка в XML из командной строки по расписанию плюс git add и git commit в том же bat-файле. Есть и готовые инструменты сообщества, например gitsync на OneScript: он переносит историю хранилища конфигурации в Git, по коммиту на каждую версию хранилища с автором и комментарием.
Формат XML Конфигуратора и формат EDT разные. Импортировать выгрузку Конфигуратора в EDT можно, но держите в одном Git-репозитории один формат, иначе история изменений превратится в шум.
Как сохранить внешнюю обработку или отчёт
Внешняя обработка не хранится в конфигурации, это отдельный файл.
- В Конфигураторе откройте обработку:
Файл → Открыть, выберите.epfили.erf. - После правок нажмите
Ctrl+S. Если обработка новая (Файл → Новый → Внешняя обработка), Конфигуратор спросит имя и папку. - Чтобы сохранить копию под другим именем, выберите
Файл → Сохранить как.
Расширения файлов:
- 📄
.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, в базе-приёмнике выполните Конфигурация → Сравнить, объединить с конфигурацией из файла и отметьте флажками только нужный объект. Остальное останется без изменений.