При работе с расширениями в системе 1С:Предприятие 8.3 разработчики часто сталкиваются с ситуацией, когда готовое расширение (например, найденное на просторах интернета или полученное от коллег) отказывается подключаться к базе. Одной из самых распространенных критических ошибок является несоответствие свойства РежимСовместимости. Ситуация осложняется тем, что расширение может быть «заблокировано» для редактирования — на объектах отображаются иконки замков, и изменить свойства напрямую в конфигураторе невозможно.
В данной статье мы подробно разберем, почему возникают такие блокировки, как их снять и какими способами можно привести режим совместимости расширения в соответствие с вашей основной конфигурацией.
Прежде чем приступать к активным действиям, давайте проанализируем, почему расширение может быть закрыто для редактирования. В среде 1С существует три основные причины появления «замков» на объектах расширения:
.cfe без предварительного отключения или специфическим образом, при загрузке в другую базу оно может сохранить связь с хранилищем. Пока расширение «думает», что оно в хранилище, его объекты заблокированы для захвата и редактирования.Разберем по шагам, как устранить эти препятствия и решить проблему с режимом совместимости.
Рассмотрим самый надежный и универсальный метод, который рекомендуют опытные разработчики. Если расширение заблокировано «замками», мы можем использовать его как донор данных для нового, чистого расширения.
Алгоритм действий:
.cfe содержит всю логику, формы и модули.НовоеРасширение.РежимСовместимости. Проанализируем: он должен быть либо равен режиму совместимости вашей основной конфигурации, либо быть ниже (но не выше).Важный нюанс: При загрузке система может выдать предупреждение о том, что свойства загружаемого расширения отличаются от текущих. Нам необходимо отказаться от обновления свойств расширения из файла, чтобы сохранить тот режим совместимости, который мы установили вручную.
Если расширение заблокировано именно из-за связи с хранилищем, мы можем попробовать разорвать эту связь программно или через интерфейс, если он доступен. Проверим статус хранилища: перейдем в меню Конфигурация — Хранилище конфигурации. Если пункт «Администрирование» или «Отключиться от хранилища» активен при выбранном расширении, выполним отключение.
Если интерфейсные методы недоступны, проанализируем ситуацию программно. В редких случаях помогает использование внешней обработки, которая очищает признак связи с хранилищем через объектную модель РасширениеКонфигурации. Однако метод с пересозданием (Способ 1) обычно оказывается быстрее и эффективнее.
Если «замки» вызваны тем, что расширение стоит на поддержке, выполним следующие шаги:
После этих манипуляций «замки» сменятся на иконки «кубиков» с разрешением редактирования, и мы сможем беспрепятственно изменить свойство РежимСовместимости в окне свойств расширения.
Выясним причину, почему 1С так строго контролирует этот параметр. РежимСовместимости определяет, какие функции платформы будут доступны в коде и как будут вести себя механизмы запросов и интерфейса. Если у вашей конфигурации «Розница 2.2» стоит режим 8.3.8, а в расширении — 8.3.10, платформа блокирует его работу, так как в расширении могут использоваться методы, которых еще «не существует» в контексте вашей базы.
Если вы успешно сняли блокировку редактирования («замки»), установите в свойствах расширения значение Не использовать или выберите ту же версию, которая установлена в основной конфигурации. Посмотрим на пример того, как это выглядит в свойствах корня конфигурации:
Объект: Расширение1
Свойство: Режим совместимости
Значение: Версия 8.3.12 (изменить на Версия 8.3.8)
Важно: После понижения режима совместимости обязательно выполните команду Конфигурация — Проверить конфигурацию. Выберем проверку только расширения. Это позволит выявить участки кода, которые используют функции более новых версий платформы и которые перестанут работать после изменения режима.
Рассмотрим ситуацию, когда нам нужно программно проверить свойства подключенных расширений, чтобы избежать критических ошибок при запуске. Мы можем использовать коллекцию РасширенияКонфигурации. Проанализируем пример кода, который выводит информацию о текущих режимах совместимости всех установленных расширений:
Для Каждого ТекРасширение Из РасширенияКонфигурации.Получить() Цикл
Сообщить("Расширение: " + ТекРасширение.Имя);
Сообщить("Активно: " + ТекРасширение.Активно);
// Проверка режима совместимости возможна через метаданные расширения
Сообщить("Режим совместимости: " + ТекРасширение.Метаданные().РежимСовместимости);
КонецЦикла;
Этот код поможет системному администратору или программисту быстро провести аудит системы без захода в конфигуратор каждого расширения.
Мы разобрали основные способы снятия запрета на редактирование расширений. Подведем итог: наиболее частой причиной «замков» является связь с хранилищем или поддержка вендора. Самым простым способом обойти эти ограничения является экспорт расширения в файл .cfe и его последующий импорт в новый, вручную созданный контейнер с заранее настроенными свойствами.
Помните: бездумное понижение режима совместимости может привести к неработоспособности расширения. Всегда проверяйте программный код на наличие методов, не поддерживаемых старыми версиями платформы, и делайте резервную копию базы перед любыми манипуляциями с расширениями на замках. При администрировании нескольких систем этот процесс можно автоматизировать, настроив регулярное архивирование, проверку и обновление баз 1С по расписанию.