Часто сталкиваюсь с задачей переноса доработок, выполненных в расширениях, в основную конфигурацию. Удобным способом является использование типового инструмента "сравнение и объединение конфигурации с файлом". Для внесения доработок в основную конфигурацию из расширения требуется представить конфигурацию расширения в формате "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".
- Типовым способом переносим форму в основную конфигурацию:
- Изменяем свойства справочника так, чтобы для элемента открывалась импортированная форма
- Запускаем приложение и убеждаемся, что импорт завершён успешно
Таким образом задача решена: в основной конфигурации появилась форма, которая полностью функционально аналогична доработанной в расширении форме.