Конвертация расширения cfe в конфигурацию сf руками

Публикация № 1211271

Разработка - Конфигурирование 1С - Расширения

cfe cf преобразование конвертация

Как быстро преобразовать расширение в конфигурацию (для дальнейшего переноса в основную конфигурацию, например).

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

  • формы конфигурации разработаны в обычном режиме
  • режим совместимости конфигурации не поддерживает расширения в нужной мере или вовсе
  • есть ограничения по используемой версии платформы

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

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

 
 1. Выгружаем расширение в файлы:

Аналогично выгрузил пустую конфигурацию для дальнейшего анализа.

Старый добрый total commander быстро показал различия между пустой конфигурацией и расширением. При наличии жесткой 1С-зависимости можно эту операцию выполнить прямо в конфигураторе через Сравнить файлы...

 
 2. Отличия в Configuration.xml
 
 3. Удаляем в файле Configuration.xml строки любым текстовым редактором:
 
 4. Загружаем в пустую конфигурацию файлы из папки, где отредактировали Configuration.xml

 

После (или такими) нехитрыми действиями получаем объекты расширения в основной конфигурации.

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. -vito- 434 18.03.20 10:21 Сейчас в теме
Отличный лайфхак! Нравятся мне такие подходы.
echo77; NoRazum; gubanoff; pavelpribytkin96; pm74; +5 Ответить
2. Torin 230 18.03.20 10:51 Сейчас в теме
Зачетно! Однозначно + ...А из cf в cfe изыскания не проводили?
JohnyDeath; pavelpribytkin96; CyberCerber; +3 Ответить
3. wtlz 138 18.03.20 10:54 Сейчас в теме
(2) ещё нет, но скорее всего добавление того, что нужно вырезать поможет и в обратную сторону
4. Torin 230 18.03.20 10:55 Сейчас в теме
(3) Буду ждать ваших изысканий в этом направлении
5. for_sale 850 18.03.20 15:08 Сейчас в теме
6. Vladimir Litvinenko 2227 18.03.20 15:24 Сейчас в теме
Интересное решение, спасибо! Хотелось бы конечно более подробного примера с тем, что делать дальше и какие подводные камни могут возникнуть, если вдруг Вы встречались с ними.

Если расширение полностью независимо от основной конфигурации, то судя по всему проблем не будет. Но вот сейчас попробовал объединить с cf-файлом, полученным описанным способом, в котором были заимствованные из основной конфигурации формы. Добавлены элементы не программно - через дизайнер форм. При сравнении система предложила загрузить такое свойство как "Сохраняемая форма" )) Объединение форм с приоритетом основной конфигурации всё равно приводит к замещению формы и все элементы из неё пропадают. Видимо какие-то внутренние свойства этому способствуют - пока подробнее не разбирал.

Для объединения модулей и реквизитов решение очевидно подходит.
Ещё один аргумент в пользу программного изменения форм даже в расширениях конфигурации ))
Darklight; байт; awk; +3 Ответить
7. CyberCerber 352 18.03.20 16:02 Сейчас в теме
Я, может, пропустил в тексте, но этот подход работает только для новых объектов в расширении?
Как написал Владимир выше, проблемы с расширенными формами. А что будет, если в расширении добавили реквизит к объекту основной конфы? Или изменили существующий реквизит? Ну и много подобных примеров.
12. wtlz 138 18.03.20 22:41 Сейчас в теме
(7) для новых объектов работает точно.
Постараюсь описать добавление, изменение реквизитов в следующей редакции статьи)
21. CyberCerber 352 19.03.20 17:25 Сейчас в теме
(12) Спасибо
И еще про превращение cf -> cfe. Мне это даже интересней.
8. pm74 165 18.03.20 16:10 Сейчас в теме
(0) присоединяюсь к вопросу в [7] ,
а в целом статья зачетная плюс вам в карму
9. cprit 225 18.03.20 19:01 Сейчас в теме
предлагаю рассмотреть реализацию подобного функционала на oscript
https://github.com/best-tech/cfe2cf
Vladimir Litvinenko; -vito-; wtlz; +3 Ответить
10. Vladimir Litvinenko 2227 18.03.20 20:30 Сейчас в теме
(9) Спасибо! Там кстати не производится замена на пустые строки следующего текста

<KeepMappingToExtendedConfigurationObjectsByIDs>true</KeepMappingToExtendedConfigurationObjectsByIDs>
<NamePrefix>ПР_</NamePrefix>

Интересно, на OneSript написали потому что действительно в каком-то случае часто эту операцию приходится выполнять?
15. cprit 225 19.03.20 09:35 Сейчас в теме
(10)
Спасибо! Там кстати не производится замена на пустые строки следующего текста


Надо будет поправить и им пул реквест скинуть




(10)
Интересно, на OneSript написали потому что действительно в каком-то случае часто эту операцию приходится выполнять?

удобно если делаешь автоматическую сборку. Я использую с нескольких проектах в Jenkins-е
11. wtlz 138 18.03.20 22:12 Сейчас в теме
(9) спасибо, обязательно дополню статью примером!
13. tormozit 5755 19.03.20 07:05 Сейчас в теме
Отчего же не сделал внешнюю обработку для автоматизации процесса?
ИР например умеет делать обратную операцию автоматически - преобразует свою конфигурацию в расширение.
mvxyz; acanta; +2 Ответить
16. wtlz 138 19.03.20 09:40 Сейчас в теме
(13) спасибо за коммент насчёт ИР - не знал, добавлю позже в содержание.
Обработку не писал, ибо не настолько часто делаю эту операцию. А как выяснилось из (9), инструмент уже написан :)
18. байт 28 19.03.20 13:49 Сейчас в теме
(13) А где там, в какой версии? Не могу найти.
19. tormozit 5755 19.03.20 14:23 Сейчас в теме
(18) На странице описания расширения указано
Выпуск из чистой подсистемы
Откройте на платформе 8.3.10.2375+ в любой другой базе с подсистемой через интерфейсную панель общую форму "Выпуск варианта Расширение"
Укажите в "Каталоге выпуска", куда помещать выпускаемый файл
Закройте конфигуратор этой базы
Нажмите Выполнить
20. байт 28 19.03.20 14:40 Сейчас в теме
14. байт 28 19.03.20 08:43 Сейчас в теме
Молодец, взял на заметку спасибо.
17. Darklight 22 19.03.20 09:49 Сейчас в теме
Идея хорошая. Статья не очень (хотелось бы подробнее). Сделайте лучше обработку по автоматизации данного процесса конвертации (коли компания 1С сама не в силах предложить такой сервис в платформе, ну или внешней типовой обработкой хотя бы).
Я, вот , всегда для расширений делаю и cf файлы для поставки с вместе с ними. Но приходится делать это вручную - перенося метаданные. Была бы автоматизация - было бы куда проще
22. wtlz 138 20.03.20 19:12 Сейчас в теме
(17) спасибо за отзыв. Расскажите, что именно хотелось бы рассмотреть подробнее?
И, в свете существования инструмента на 1script, действительно ли нужна обработка?
23. Darklight 22 20.03.20 20:00 Сейчас в теме
(22)Подробнее - про процесс сравнения - для чего это вообще надо. Что надо искать и что менять. В идеале - тут не должно быть сравнения - тут должны быть инструкции - вот открываем xml файл конфигурации от cfe - правим там такие-то строчки (конкретные) - сохраняем - получаем конфигурацию для сf.
А вот отдельно написать - что делать - если прямая инструкция по модификации не помогла (хотя насколько я знаю, загрузка конфигураций из xml достаточно терпима - если загружать xml немного не в том формате, что ожидается - особенно если он просто более младшей версии). Вот тогда, уже и сравнение нужно - но нужно написать на что обращать внимание и что переносить.
И как я написал, лучше через обработкой автоматизировать (включая выгрузку загрузку xml и даже формирование cf/cfe). Как автоматический вариант - просто вносящий известные (для версии обработки) правки. Так и аналитический вариант - когда обработка сама выгрузит в xml и cfe и пустую конфигурацию cf текущей версии платформы - сама сравнит и сама внесёт изменения и обратно загрузит.
Так и ручной вариант - когда обработка покажет те изменения что ей известны (или проанализированы в сравнении) - а пользователем уже сам окончательно примет решения что править по правилам обработки а что вручную
24. user1382578 23.03.20 12:02 Сейчас в теме
Попробуйте через конвертор поработать
25. wtlz 138 23.03.20 12:04 Сейчас в теме
(24) уточните, пожалуйста, какой конвертор? и ссылку на него, если есть, пожалуйста
27. wtlz 138 25.03.20 08:49 Сейчас в теме
(26) спасибо, и уже подсказали в (9)
28. check2 109 25.03.20 22:26 Сейчас в теме
А ещё правильнее и проще для этого использовать EDT, в особенности если есть импортированные и перепаянные УФ. Просто берёте и сравниваете / объединяете проект конфигурации и расширения... Правда, если в расширении есть обычные формы ( не знаю возможно ли это? Я сам не пробовал) EDT будет бессилен.
Оставьте свое сообщение

См. также

Эволюция расширения конфигурации

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Расширения

С каждым днем всё больше возможностей появляется в расширении конфигурации, но не все до сих пор работают даже на платформе 8.3.6! Давайте окунемся в историю появления и эволюции расширения конфигурации, чтобы знать и понимать, когда можно применить тот или иной функционал!

06.02.2020    4733    Xershi    26       

Онлайн-курс «Практические аспекты внедрения регламентированного учета и расчета себестоимости в 1С:ERP на крупных промышленных предприятиях» с 20 апреля по 15 мая 2020 года. Промо

Курс рассчитан для подготовки экспертов по регламентированному учету и учету затрат для внедрения на крупных промышленных предприятиях с «исторически сложившимся» учетом

9000 рублей

Обработка расширением на клиенте

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Расширения Универсальные функции

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

31.10.2019    4966    EvgenURNN    9