Разработчики 1С часто сталкиваются с ситуацией, когда стороннее расширение конфигурации (файл с расширением .cfe) необходимо доработать или адаптировать под нужды текущей базы. Однако при попытке стандартного импорта через меню «Загрузить конфигурацию из файла» Конфигуратор внезапно аварийно завершает работу, выдает критическую ошибку или сообщает о несовместимости структуры данных. Выясним причину этой проблемы и разберем по шагам несколько надежных способов ее решения.
Когда мы пытаемся загрузить чужое расширение напрямую, платформа 1С пытается полностью перезаписать структуру метаданных расширения, включая его корневые свойства. Это приводит к падению Конфигуратора по нескольким причинам:
Для обхода этих ограничений рассмотрим подробнее проверенные практические методы работы с «проблемными» файлами расширений.
Этот метод помог участникам обсуждения обойти жесткую блокировку загрузки. Вместо полной перезаписи метаданных мы создаем чистое «приемное» расширение и переносим в него только нужные нам объекты через процедуру сопоставления. Разберем этот процесс по шагам.
Шаг 1. Создание нового пустого расширения в нашей базе
Откроем Конфигуратор нашей информационной базы. Перейдем в меню «Конфигурация» -> «Расширения конфигурации». В открывшемся списке нажмем кнопку «Добавить» (зеленый плюс). В появившемся окне укажем произвольное имя (например, АдаптацияЧужогоКода), синоним и префикс. Назначение расширения выберем в соответствии с задачами (например, «Адаптация» или «Дополнение»). Нажмем «ОК».
Шаг 2. Запуск процесса сравнения и объединения
В списке расширений выделим только что созданную пустую строчку и дважды кликнем по ней, чтобы открыть дерево объектов нового расширения. Окно конфигурации нового расширения должно стать активным. Теперь в главном меню Конфигуратора перейдем по пути «Конфигурация» -> «Сравнить, объединить с конфигурацией из файла...». В открывшемся диалоговом окне выберем наш проблемный чужой файл .cfe.
Шаг 3. Исключение конфликтующих свойств (Критически важно!)
После анализа файла платформа откроет стандартное окно сравнения и объединения конфигураций. Проанализируем представленное дерево объектов. Самый важный шаг: снимем галочку с самого верхнего корневого элемента дерева (свойства самой конфигурации расширения). Если этого не сделать, свойства совместимости нашего нового расширения перетрутся свойствами из поврежденного файла, и мы снова получим критическую ошибку.
Шаг 4. Выборочный перенос метаданных
Установим флажки только напротив тех объектов, которые нам действительно нужны: модулей, форм, макетов, новых справочников или документов. Полностью откажемся от переноса тех заимствованных объектов, которые вызывают сомнения или отсутствуют в нашей конфигурации. После выбора нажмем кнопку «Выполнить». Платформа безопасно перенесет работоспособный код в наше чистое расширение.
Если даже при сравнении и объединении Конфигуратор продолжает закрываться с ошибкой, нам потребуется промежуточная чистая база данных для дебага и очистки чужого расширения.
Рассмотрим этот алгоритм:
.cfe..cfe через пункт меню «Конфигурация» -> «Сохранить конфигурацию в файл...». Теперь этот файл без проблем загрузится в рабочую базу любым стандартным способом.Для опытных разработчиков подойдет низкоуровневый метод обхода ошибок импорта путем декомпиляции расширения в XML-файлы и ручного редактирования его свойств.
Посмотрим на пример реализации этого подхода:
Configuration.xml. Откроем его с помощью любого текстового редактора (например, Notepad++).
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.15">
<Properties>
<Name>ИмяЧужогоРасширения</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Чужое расширение</v8:content>
</v8:item>
</Synonym>
<ConfigurationExtensionPurpose>Customization</ConfigurationExtensionPurpose>
<CompatibilityMode>Version8_3_14</CompatibilityMode>
</Properties>
</Configuration>
<CompatibilityMode>, понизив его до версии нашей рабочей платформы (например, установим Version8_3_12), либо полностью удалим теги, вызывающие ошибки парсинга структуры.Configuration.xml.Современная среда разработки 1С:EDT (Enterprise Development Tools), построенная на базе Eclipse, гораздо более устойчива к ошибкам целостности структуры метаданных, чем классический Конфигуратор. Если Конфигуратор аварийно завершает работу без объяснения причин, EDT позволит локализовать и устранить несовместимость.
Рассмотрим этот метод:
.cfe..cfe и успешно подключим его к рабочей базе.После того как нам удалось обойти критическую ошибку и успешно загрузить объекты чужого расширения в базу, необходимо выполнить его первичную настройку перед запуском в режиме Предприятия.
По умолчанию для всех импортированных расширений платформа 1С включает защитные механизмы, которые могут нарушить логику работы чужого кода. Обратим внимание на следующие флаги в свойствах расширения:
Используя предложенные методы, мы можем легко обойти ограничения платформы, детально изучить структуру чужих разработок, исправить накопившиеся ошибки совместимости и успешно внедрить необходимый функционал в нашу рабочую информационную систему.