Часто сталкиваюсь с задачей переноса доработок, выполненных в расширениях, в основную конфигурацию. Удобным способом является использование типового инструмента "сравнение и объединение конфигурации с файлом". Для внесения доработок в основную конфигурацию из расширения требуется представить конфигурацию расширения в формате "CF". Тема уже обсуждалась, например, в этой статье. Однако описанные методы хорошо работают для объектов, созданных в расширении, а для заимствованных и доработанных в расширении методика описана недостаточно подробно. Цель этой публикации - показать решение задачи с использованием минимума вспомогательных инструментов.
Для преобразования конфигурации из формата "CFE" в "CF" требуется только два инструмента: конфигуратор и редактор текста Visual Studio Code.
Постановка задачи: имеется справочник "Номенклатура", доработанный в расширении "Расширение1". Необходимо перенести в основную конфигурацию очень сложную форму элемента.
- Выгружаем конфигурацию расширения в файлы.
- Открываем полученную структуру файлов с помощью vscode.

- Преобразуем тип конфигурации, удаляя четыре строки в файле Configuration.xml

- Для справочника "Номенклатура" разрываем механизм заимствования из основной конфигурации, удаляя строки со словом "Adopted"

- "Вырываем" форму из расширения, для этого:
1. Удаляем строки со словом "Adopted" у тех объектов конфигурации, которые мы хотим в дальнейшем импортировать в основную конфигурацию.

2. Для удобства сохраним эту форму в расширении, а переносить будем как новую - это позволит в случаях ошибок переноса найти причину в исходной форме. Для этого изменим во всей конфигурации идентификатор формы

Удобство vscode заключается в том, что операции поиска/замены можно проводить сразу со всеми файлами в конфигурации, для замены идентификатора формы в файлах нужно использовать комбинацию <CTRL>+<SHIFT>+"H".
Получаем новый идентификатор примерно такой (конкретные цифры не имеют значения, главное, чтобы идентификатор был уникален для всей конфигурации)

3. "Отрываем" форму от дорабатываемой, удаляя весь блок <BaseForm> в самом конце файла, перед закрывающим тегом

4. Для обработчиков событий формы нужно изменить тип вызова обработчика - убрать конструкции вида "callType", в простейшем случае удалить эти слова из тега обработчика


Изменить имена процедур удобнее будет потом в конфигураторе
5. И последнее по списку, но не по значению: нужно установить номер "1" основного "объекта" формы - в расширении номера начинаются от миллиона, а в основной конфигурации начинаются с единицы

На этом все изменения в файлах закончены. - Создаём пустую базу и загружаем конфигурацию из модифицированных файлов.

Для удобства даём форме другое имя

- Выгружаем конфигурацию в файл типа "CF".
- Типовым способом переносим форму в основную конфигурацию:

- Изменяем свойства справочника так, чтобы для элемента открывалась импортированная форма

- Запускаем приложение и убеждаемся, что импорт завершён успешно

Таким образом задача решена: в основной конфигурации появилась форма, которая полностью функционально аналогична доработанной в расширении форме.
Вступайте в нашу телеграмм-группу Инфостарт