Почему 1С не видит изменения в расширении и как исправить ошибки совместимости?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой IT и автоматизация бизнеса
← На главную

Разработка и внедрение расширений в экосистеме «1С:Предприятие 8» — это удобный способ доработки типовых конфигураций без снятия их с поддержки. Однако программисты часто сталкиваются с ситуацией, когда расширение успешно загружено в базу, галочка активности стоит, но внесенные изменения упорно не применяются при запуске сеанса. Другая популярная проблема — невозможность опубликовать расширение в облачном сервисе «1С:Фреш» из-за ошибок контроля совместимости.

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

Причина 1. Блокировка работы расширения безопасным режимом

Самая распространенная причина, по которой конфигурация игнорирует добавленный в расширение код, заключается в установленном свойстве «Использовать безопасный режим». Разберем по шагам, как этот механизм влияет на логику выполнения программы.

Когда для расширения включен безопасный режим (в Конфигураторе или в режиме «1С:Предприятие» в справочнике расширений), платформа накладывает жесткие ограничения на исполняемый код:

Рассмотрим пример перехвата процедуры, который гарантированно не сработает в безопасном режиме, если код выполняется на сервере:


&Вместо("ЗаписатьДокумент")
Процедура Расш1_ЗаписатьДокумент(ДокументСсылка)
    // Данный код в общем модуле будет проигнорирован платформой,
    // если для расширения включен безопасный режим!
    ЗаписьЖурналаРегистрации("МоеРасширение", УровеньЖурналаРегистрации.Информация,,, "Запись выполнена.");
    ПродолжитьВызов(ДокументСсылка);
КонецПроцедуры

Решение проблемы:

  1. Откроем базу в режиме Конфигуратора.
  2. Перейдем в меню Конфигурация — Расширения конфигурации.
  3. Найдем наше расширение в списке, откроем его свойства и снимем флажок «Безопасный режим» (также убедимся, что снят флаг «Защита от опасных действий»).
  4. Если расширение уже подключено в режиме «1С:Предприятие» (меню Администрирование — Печатные формы, отчеты и обработки — Расширения), снимем флаг «Безопасный режим» непосредственно в пользовательском интерфейсе и перезапустим сеанс работы.

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

Причина 2. Ошибки режима совместимости при публикации в «1С:Фреш»

Вторая по частоте проблема возникает при попытке загрузить расширение в облачный сервис «1С:Фреш». Пользователи часто видят критическую ошибку следующего вида:

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

Выясним причину этого поведения. Сервис «1С:Фреш» устроен так, что одно и то же расширение может проверяться на совместимость сразу с несколькими релизами конфигурации (например, при постепенном обновлении инфраструктуры или когда разные абоненты работают на разных версиях приложения).

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

Проанализируем варианты решения этой проблемы:

Вариант А. Автоматическое исправление в Конфигураторе

Платформа предоставляет штатный инструмент для выравнивания свойств совместимости. Выполним следующие действия по шагам:

  1. В Конфигураторе откроем список расширений.
  2. Нажмем правой кнопкой мыши по целевому расширению и выберем пункт «Проверить возможность применения...».
  3. Если система обнаружит конфликт контролируемого свойства РежимСовместимости, нажмем кнопку «Исправить» и выберем вариант «Установить значение из объекта конфигурации».
  4. Платформа автоматически скопирует нужное значение из основной конфигурации в свойства расширения.

Вариант Б. Ручная настройка для нескольких версий

Если нам требуется поддерживать работоспособность расширения на разных релизах конфигурации (как в случае с версиями УНФ 1.6.15 и 1.6.18), необходимо вручную установить режим совместимости в расширении по наименьшему значению среди целевых конфигураций.

Например, если старая конфигурация работает в режиме совместимости Версия 8.3.12, а новая — в режиме Версия 8.3.15, мы обязаны указать в свойствах расширения значение Версия 8.3.12.

Обратите внимание! Понижение режима совместимости накладывает ограничения на использование новых объектов метаданных внутри расширения. Собственные регистры сведений, накопления или документы требуют определенных минимальных версий платформы. Если расширение использует новые типы данных, понизить режим совместимости без удаления этих объектов не удастся. В таком случае в Менеджере сервиса «1С:Фреш» необходимо опубликовать две разные версии расширения, привязав каждую к соответствующему релизу конфигурации.

Причина 3. Использование значения «Не использовать»

Если в основной конфигурации (особенно в актуальных версиях ERP, КА, БП) режим совместимости установлен в значение «Не использовать», то и в расширении обязательно должно стоять значение «Не использовать». Установка любой конкретной версии платформы (например, 8.3.16) в свойствах расширения приведет к ошибке проверки применимости.

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

Причина 4. Локальный кэш платформы и устаревание кода контроля

Если режим совместимости настроен верно, безопасный режим отключен, но изменения все равно не отображаются в режиме предприятия, рассмотрим еще две скрытые проблемы:

  1. Кэширование метаданных локальным компьютером. Платформа 1С кэширует структуру конфигурации на локальном диске пользователя. При обновлении расширения кэш может не обновиться автоматически. Для исправления ситуации очистим кэш: удалим информационную базу из списка запуска 1С и добавим ее заново либо вручную удалим папки временных файлов из каталога %userprofile%\AppData\Local\1C\1Cv8.
  2. Неактуальный код при использовании директивы &ИзменениеИКонтроль. Если вы заимствовали процедуру из основной конфигурации с помощью метода &ИзменениеИКонтроль, а после этого обновили основную конфигурацию, исходный текст метода мог измениться. Платформа обнаружит расхождение структуры кода и полностью отключит выполнение данного метода расширения. Для восстановления работоспособности необходимо зайти в Конфигуратор, открыть модуль расширения и вызвать контекстную проверку применимости метода, обновив контролируемые участки кода.

Мы подробно разобрали ключевые аспекты работы с расширениями 1С. Соблюдение правил настройки безопасного режима, контроль версий совместимости и своевременная проверка применимости кода гарантируют стабильную работу ваших доработок как на локальных серверах, так и в облачной инфраструктуре.

← На главную