Как скопировать подсистему из конфигурации в новую конфигурацию 1С

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

В процессе разработки и доработки типовых конфигураций (например, 1С:Бухгалтерия 3.0) часто возникает необходимость выделить собственную функциональность в отдельную конфигурацию. Это позволяет формировать независимые комплекты поставки или развивать решение как самостоятельный программный продукт. Разберем по шагам, как правильно перенести подсистему и входящие в нее объекты в новую пустую конфигурацию, а также проанализируем возможные подводные камни, связанные с зависимостями и типами данных.

Пошаговый перенос подсистемы через сравнение и объединение

Основной штатный инструмент для решения этой задачи — механизм сравнения и объединения конфигураций в Конфигураторе. Разберем стандартную последовательность действий:

  1. Подготовка файла конфигурации-источника: В исходной информационной базе (доноре) открываем Конфигуратор и выгружаем конфигурацию в файл через меню Конфигурация → Сохранить конфигурацию в файл... (получаем файл 1Cv8.cf).
  2. Создание новой чистой конфигурации: Создаем новую информационную базу без конфигурации, открываем ее в Конфигураторе и выполняем команду Конфигурация → Открыть конфигурацию.
  3. Запуск процедуры сравнения и объединения: В меню выбираем пункт Конфигурация → Сравнить, объединить с конфигурацией из файла... и указываем сохраненный ранее файл .cf.
  4. Снятие общих отметок: В открывшемся окне сравнения и объединения первым делом снимаем корневой флажок с названия конфигурации. Это необходимо, чтобы исключить автоматический перенос всех стандартных свойств, ролей и типовых объектов.
  5. Установка флажков по подсистеме: Нажимаем кнопку Действия на панели инструментов окна объединения и выбираем пункт Установить флажки по подсистемам. В появившемся диалоге выбираем подсистемы файла конфигурации и отмечаем только нашу целевую подсистему. Платформа автоматически расставит отметки на всех объектах метаданных, входящих в состав этой подсистемы.
  6. Фильтрация отображения дерева (опционально): Для удобства контроля можно воспользоваться пунктом Действия → Установить фильтр и включить отображение только тех объектов, которые отмечены для объединения.
  7. Выполнение объединения: Нажимаем кнопку Выполнить, соглашаемся с созданием объектов и сохраняем конфигурацию базы данных по клавише F7.

Контроль зависимостей и целостности метаданных

Выделение подсистемы из комплексного типового решения редко проходит абсолютно бесшовно. Объекты доработанной подсистемы почти всегда используют общие элементы исходной конфигурации. Проанализируем типичные проблемы и способы их устранения:

  1. Неразрешенные типы данных: Если реквизиты ваших документов или справочников ссылаются на типовые объекты (например, справочники Пользователи, Организации или перечисления), при переносе без этих объектов типы реквизитов станут составными или потеряют ссылку на тип. Выясним причину ошибки: платформе не хватает описания типа в целевой конфигурации. Потребуется либо перенести эти метаданные, либо заменить их базовыми типами (строка, число).
  2. Зависимости от Библиотеки стандартных подсистем (БСП): Программный код процедур и функций модулей подсистемы может напрямую вызывать методы общих модулей БСП (например, ОбщегоНазначенияКлиентСервер или функции подсистемы длительных операций). В новой чистой базе этих модулей нет, что приведет к ошибкам компиляции. Такие вызовы потребуется либо адаптировать на чистый встроенный язык 1С, либо перенести зависимые общие модули вместе с подсистемой.
  3. Обязательная синтаксическая проверка: После завершения объединения обязательно запускаем команду Конфигурация → Проверка конфигурации. Включаем флаги поиска некорректных ссылок, синтаксической проверки модулей для всех режимов (клиент, сервер, внешнее соединение) и проверки логической целостности.

Альтернативные способы изоляции функциональности

В зависимости от конечной цели выделения подсистемы, рассмотрим альтернативные архитектурные решения:

  1. Создание расширения конфигурации (.cfe): Если основная цель — изолировать доработки от типовой конфигурации для упрощения регулярных обновлений или для тиражирования доработки на другие базы клиентов, гораздо практичнее использовать механизм расширений. Это позволяет избежать ведения отдельной конфигурации и ручного слияния изменений.
  2. Выгрузка конфигурации в иерархию файлов XML: Для ведения разработки в системах контроля версий (Git) или среде 1C:Enterprise Development Tools (EDT) удобно использовать штатную команду Конфигурация → Выгрузить конфигурацию в файлы.... Это позволяет отделить файлы нужной подсистемы на уровне файловой структуры.

Перенос накопившихся данных

Обратите внимание: механизм сравнения и объединения переносит исключительно метаданные (структуру таблиц, экранные формы и программный код), но не переносит записи из базы данных. Если вместе со структурой необходимо перенести накопленные данные из таблиц подсистемы, применяются универсальная обработка Выгрузка и загрузка данных XML с выбором конкретных объектов метаданных либо правила конвертации данных.

← На главную