В процессе коллективной разработки возникают ситуации, когда в хранилище конфигурации попадают некорректные или нежелательные изменения — для управления этими процессами есть автоматизация управления версиями и процессами сборки 1С. Особенно критично это становится, когда затронуты базовые объекты метаданных, такие как ПланСчетов, ПланВидовХарактеристик или сложные регистры, и эти изменения еще не успели попасть в рабочую (продуктивную) базу. Если просто "проигнорировать" проблему, рано или поздно при обновлении рабочей конфигурации из хранилища данные будут испорчены. Рассмотрим подробно, как можно «вычистить» хранилище от ненужных версий и вернуть объекты в эталонное состояние.
Этот способ является самым быстрым, если нужно «стереть» всю историю изменений, начиная с определенного момента. Команда «Откатить до версии» фактически удаляет из базы данных хранилища все записи, сделанные после выбранного номера версии. Проанализируем, как правильно выполнить эту операцию.
Конфигурация — Хранилище конфигурации — История хранилища.Действия и выберем пункт Откатить до версии.Важно понимать: При выполнении отката информация об откатываемых версиях будет удалена без возможности восстановления. Если после ошибочного изменения другие разработчики успели поместить полезный код по другим задачам, их работа также будет безвозвратно удалена. В этом случае лучше воспользоваться вторым методом.
Рассмотрим ситуацию, когда нам нужно исправить только один конкретный объект (например, ПланСчетов.Хозрасчетный), не затрагивая изменения других программистов в других частях системы — для этого пригодится архитектурный анализ метаданных и зависимостей 1С. Это наиболее безопасный и «хирургический» метод.
Разберем алгоритм действий по шагам:
История хранилища. Найдем версию, где объект был в правильном состоянии.Сравнить с конфигурацией. Откроется стандартное окно сравнения и объединения 1С — пригодится инструментарий разработчика для анализа метаданных и отладки.ОК, проверим объект в конфигураторе и выполним команду Поместить в хранилище.В результате в истории появится новая версия, которая возвращает объект к исходному виду, при этом вся промежуточная история правок останется доступной для анализа.
Если в хранилище возникла массовая путаница (например, задвоились предопределенные элементы или нарушилась структура многих справочников), проще всего использовать рабочую базу как источник истины. Выясним, как правильно «заместить» данные хранилища данными из .cf файла.
Проанализируем последовательность действий:
Конфигурация — Выгрузить конфигурацию в файл... (получаем чистый config.cf).Конфигурация — Загрузить конфигурацию из файла.... Система предложит заменить текущую конфигурацию конфигурацией из файла. Соглашаемся. Внимание: используем именно «Загрузить», а не «Сравнить и объединить», чтобы полностью исключить дублирование объектов.Иногда простого удаления версий недостаточно. Если в хранилище по ошибке поместили тяжелые файлы, макеты или картинки, размер файла базы данных хранилища (1cv8ddb.1cd) может сильно вырасти, что замедлит работу всех разработчиков. Даже после отката версии физический размер файла может не уменьшиться.
Для оптимизации воспользуемся функцией сокращения истории (поможет инструмент управления сеансами и блокировками баз 1С):
Администрирование — Хранилище конфигурации — Администрирование.История воспользуемся кнопкой Сократить.Это позволит физически очистить базу данных хранилища от старых ненужных данных.
В сложных случаях, когда визуальный интерфейс конфигуратора не справляется с объемом данных, можно использовать параметры запуска. Рассмотрим пример команды для создания резервной копии и административных действий:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /ConfigurationRepositoryF "C:\Repo1C" /ConfigurationRepositoryN "Admin" /ConfigurationRepositoryP "Password" /ConfigurationRepositoryDump "C:\Backup\repo_backup.cf"
Здесь параметр /ConfigurationRepositoryF указывает путь к папке хранилища, а /ConfigurationRepositoryDump позволяет выгрузить состояние хранилища в файл, не запуская интерактивную сессию.
Подводя итог, выберем оптимальную стратегию:
И самое главное правило: перед любыми манипуляциями с хранилищем (особенно перед откатом) всегда делайте копию папки, в которой лежит файл 1cv8ddb.1cd. Это ваш единственный надежный способ восстановить всё назад, если административные действия пойдут не по плану.