Инструкция по переносу объектов из расширения Cfe в основную конфигурацию Cf.
Аннотация:
Широко разрекламированная кампания 1с по развитию расширений привела к тому, что разработчики погнались за мнимым удобством обновлений и вместо гармоничного развития продукта рождается калека.
Пришлось столкнуться с разработкой, когда к конфигурации постепенно прикручивали несколько расширений, в моем случае было 7 расширений. В результате, конфигурация, стала неуправляемой. Объекты основной конфигурации были добавлены в несколько расширений:
- Справочник «Сделки» в основной конфигурации, часть реквизитов в «расширение1»
- Документ «Счет» в основной конфигурации, в «расширение1» добавлен реквизит паспорт, в «расширение2» добавлен реквизит номенклатура.
- Регистры накопления могли быть в основной конфигурации, а регистраторы в нескольких расширениях.
В чем подвох:
- Отладка и так достаточно сложна, а при такой разработке становится практически невозможной.
- Для построения отчетов приходится в пользовательском режиме создавать запрос, затем сохранять схему и затем добавлять в конфигурацию/расширение. Проверить и отладить такой отчет из конфигуратора нереально, т.к. часть объектов находится по разным расширениям.
- Готовим файл CFE
Выгружаем расширение в Файлы.
Удаляем из файла Configuration.xml строки:
<ConfigurationExtensionPurpose>AddOn</ConfigurationExtensionPurpose>
<ObjectBelonging>Adopted</ObjectBelonging>
<KeepMappingToExtendedConfigurationObjectsByIDs>true</KeepMappingToExtendedConfigurationObjectsByIDs>
<NamePrefix>ПР_</NamePrefix>
Остальные объекты обрабатываем через Total Commander
Выделяем группы/папки которые будем обрабатывать. Тут, как говорится, на ваше усмотрение.
Регистры удобнее обработать отдельно. Забегая вперед: если в регистрах сведений/накопления в расширении не будет измерений, то при применении изменений в пустой конфигурации выдаст ошибку и придется делать все по новой.
Примерная таблица папок:
//AccumulationRegisters Catalogs ChartsOfCharacteristicTypes CommandGroups CommonCommands CommonPictures Constants DataProcessors Documents Enums //InformationRegisters Languages Reports Roles StyleItems |
|
Выводим на панель
В результатах поиска выделяем все и перетаскиваем в Нотепад ++
Делаем замену во всех открытых файлах строки:
<ObjectBelonging>Adopted</ObjectBelonging> на пустую строку.
Выдаст вопрос: сохранить? - отвечаем да для всех.
- Делаем загрузку из файлов в пустую конфигурацию и сохраняем cf-ник.
Внимание! Если при загрузке перенос не прошел, то устраняем в расширении причину ошибки и проводим шаги 1- 4 повторно.
Пример ошибки:
- Объединение с рабочей конфигурацией.
1 Разворачиваем копию с рабочей базы.
2 УДАЛЯЕМ РАСШИРЕНИЕ. Если этого сразу не сделать, будут проблемы с применением объединения. И придется по новой восстанавливать базу и делать сравнение/объединение.
3 Объединяем рабочую конфигурацию с конфигурацией, полученной из расширения
При объединении: обязательно проверяем, что справочники, документы, перечисления, реквизиты соответствуют своим исходникам в рабочей конфигурации.
Внимание! Если в результате у вас не получились УСТАНОВИТЬ СООТВЕТСТВИЕ по всем объектам, заимствованным в расширение, то после объединения вы можете получить в реквизите тип «строка». См пример ниже. Найти ошибку получится только когда пользователи начнут работать и у них вдруг полезут ошибки.
Пример ошибки:
4 Проверяем, что у документов присутствуют все регистры в движениях, добавляем.
- Исправление текстов модулей
Внимание! Обязательно пройдитесь по переносимым документам и проверьте, что в процедуре «ПередЗаписью» в модулях объектов есть строка:
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли;
Если при переносе вы переносите частично заимствованные объекты и у вас в расширении были директивы «#Вместо», «#Перед», «#После», то проверьте и удалите директиву: «ПродолжитьВызов».
После сравнения и объединения еще раз открываем расширение и проходим по модулям объектов, присутствующих в расширении, и переносим коды процедур модуля «перед записью, «обработка проведения», «заполнение объекта», которые были добавлены в расширение.
- Проверка Команд
Внимание! Был случай, когда пропали параметры команды. Требуется пройтись по расширению и проверить, что параметры команды после переноса заполнены.
- Перенос данных Справочников, документов, независимых регистров сведений
Для переноса используем обработку: Выгрузка и загрузка данных XML. (Я использую одну из обработок с Инфостарта с добавленным отбором).
Из копии, в которой присутствует переносимое расширение, начинаем выгрузку/загрузку.
Идем по порядку, сначала выгружаем справочники, документы, регистры.
Если при загрузке увидели ошибку, то заходим в конфигуратор и выстраиваем порядок реквизитов так же, как в выгружаемом xml файле. Это касается реквизитов и табличных частей.
Настройки при выгрузке через обработку:
Важно! Отключить отметки выгружать при необходимости.
Получили ошибку, добавляем регистраторы, которые потеряли при сравнении объединении:
- Выгрузка регистров накопления
Вообще это исключительная ситуация, т.к. после переноса всех документов регистры должны совпадать. Поэтому если вы видите несовпадения регистров – ищите, что вы не перенесли.
- Сверка данных
Для сверки делаем запросы по всем справочникам, документам, регистрам, которые участвуют в расширении. Обращаем внимание на регистры, которые были изменены в процессе удаления расширения.