В процессе разработки и доработки типовых конфигураций (например, 1С:Бухгалтерия 3.0) часто возникает необходимость выделить собственную функциональность в отдельную конфигурацию. Это позволяет формировать независимые комплекты поставки или развивать решение как самостоятельный программный продукт. Разберем по шагам, как правильно перенести подсистему и входящие в нее объекты в новую пустую конфигурацию, а также проанализируем возможные подводные камни, связанные с зависимостями и типами данных.
Основной штатный инструмент для решения этой задачи — механизм сравнения и объединения конфигураций в Конфигураторе. Разберем стандартную последовательность действий:
Конфигурация → Сохранить конфигурацию в файл... (получаем файл 1Cv8.cf).Конфигурация → Открыть конфигурацию.Конфигурация → Сравнить, объединить с конфигурацией из файла... и указываем сохраненный ранее файл .cf.Действия на панели инструментов окна объединения и выбираем пункт Установить флажки по подсистемам. В появившемся диалоге выбираем подсистемы файла конфигурации и отмечаем только нашу целевую подсистему. Платформа автоматически расставит отметки на всех объектах метаданных, входящих в состав этой подсистемы.Действия → Установить фильтр и включить отображение только тех объектов, которые отмечены для объединения.Выполнить, соглашаемся с созданием объектов и сохраняем конфигурацию базы данных по клавише F7.Выделение подсистемы из комплексного типового решения редко проходит абсолютно бесшовно. Объекты доработанной подсистемы почти всегда используют общие элементы исходной конфигурации. Проанализируем типичные проблемы и способы их устранения:
Пользователи, Организации или перечисления), при переносе без этих объектов типы реквизитов станут составными или потеряют ссылку на тип. Выясним причину ошибки: платформе не хватает описания типа в целевой конфигурации. Потребуется либо перенести эти метаданные, либо заменить их базовыми типами (строка, число).ОбщегоНазначенияКлиентСервер или функции подсистемы длительных операций). В новой чистой базе этих модулей нет, что приведет к ошибкам компиляции. Такие вызовы потребуется либо адаптировать на чистый встроенный язык 1С, либо перенести зависимые общие модули вместе с подсистемой.Конфигурация → Проверка конфигурации. Включаем флаги поиска некорректных ссылок, синтаксической проверки модулей для всех режимов (клиент, сервер, внешнее соединение) и проверки логической целостности.В зависимости от конечной цели выделения подсистемы, рассмотрим альтернативные архитектурные решения:
.cfe): Если основная цель — изолировать доработки от типовой конфигурации для упрощения регулярных обновлений или для тиражирования доработки на другие базы клиентов, гораздо практичнее использовать механизм расширений. Это позволяет избежать ведения отдельной конфигурации и ручного слияния изменений.1C:Enterprise Development Tools (EDT) удобно использовать штатную команду Конфигурация → Выгрузить конфигурацию в файлы.... Это позволяет отделить файлы нужной подсистемы на уровне файловой структуры.Обратите внимание: механизм сравнения и объединения переносит исключительно метаданные (структуру таблиц, экранные формы и программный код), но не переносит записи из базы данных. Если вместе со структурой необходимо перенести накопленные данные из таблиц подсистемы, применяются универсальная обработка Выгрузка и загрузка данных XML с выбором конкретных объектов метаданных либо правила конвертации данных.