Расширение конфигурации загружено, но не действует: где искать сбой

· 10 мин

Содержание

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

Дальше выбор простой. Если расширение перестало работать сразу после обновления типовой — смотрите раздел про контроль заимствованных объектов. Если оно работает у администратора, но не у бухгалтера — дело в правах. Если не работает ни у кого и ошибок нет — проверьте режим совместимости и перезапуск сеансов.

Как понять, что именно сломалось: три быстрые проверки

Слово «не работает» скрывает разные ситуации. От того, какая из них у вас, зависит весь дальнейший поиск.

  • 🔴 Расширение не применилось вовсе. Новых кнопок, реквизитов, печатных форм нет ни у кого. Платформа при старте сеанса отказалась его подключать.
  • 🟠 Расширение применилось, но не у всех. Администратор видит доработку, рядовые пользователи — нет. Почти всегда это права.
  • 🟡 Расширение применилось, но падает при действии. Кнопка есть, а при нажатии выходит ошибка. Это код, безопасный режим или сломанная ссылка на объект основной конфигурации.

Проверить первый вариант проще всего через встроенный язык. Откройте Все функции → Стандартные → Управление расширениями конфигурации (если пункта «Все функции» нет в главном меню, включите его в Сервис и настройки → Параметры). В списке видно, какие расширения загружены и активны.

Второй способ — Конфигуратор. Меню Конфигурация → Расширения конфигурации показывает все расширения базы, их назначение, флаг «Активно» и безопасный режим. Здесь же доступна проверка возможности применения: она сразу пишет, какой объект или метод мешает.

Расширения подключаются в момент начала сеанса. Если вы загрузили или включили расширение, а пользователи не перезашли в программу, у них по-прежнему работает старая версия. Перезапуск — первое лечение, а не последнее.

Расширение не совпадает с платформой или конфигурацией

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

Что проверить:

  1. Режим совместимости. В Конфигураторе откройте свойства расширения и свойства основной конфигурации, сравните поле «Режим совместимости». Если у расширения он выше, чем у конфигурации, расширение не применится. Нужно понизить режим совместимости в расширении или обновить платформу и конфигурацию.
  2. Номер платформы. Посмотрите в окне «О программе». Номер платформы должен быть не ниже того, на котором собирали расширение. Если разработчик использовал механизмы новых версий, а у вас платформа старее, расширение не загрузится или выдаст ошибку синтаксиса.
  3. Целевая конфигурация. Расширение для «Бухгалтерии предприятия 3.0» нельзя подключить к ЗУП 3.1 или УТ 11. Расширение ищет заимствованные объекты по именам, и если их нет — применять нечего.
  4. Назначение. У расширения есть свойство «Назначение»: исправление, адаптация или дополнение. От него зависит порядок применения, если в базе несколько расширений. Конфликт двух расширений, изменяющих один и тот же метод, тоже даёт неожиданный результат.

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

Права пользователя и роли расширения

Типичная картина: администратор с полными правами видит новую печатную форму, а бухгалтер — нет. Платформа не выдаёт права на новые объекты расширения автоматически.

Как устроено:

  • 🔑 Новые объекты расширения (справочники, отчёты, обработки, реквизиты) требуют прав. Их дают через роли, созданные в самом расширении, или через заимствованные роли, в которые добавлены права на новые объекты.
  • 👥 В типовых конфигурациях на базе БСП роли расширения нужно включить в профиль группы доступа: Администрирование → Настройки пользователей и прав → Профили групп доступа. После этого пользователь должен перезайти.
  • 🛡️ Управлять расширениями (загружать, включать, отключать) могут только пользователи с административными правами. Рядовой пользователь с полными правами на учёт этого не сможет.

Порядок действий при «у меня есть, у коллеги нет»:

  1. Откройте расширение в Конфигураторе и посмотрите, есть ли в нём роли.
  2. Если роли есть — добавьте их в профиль группы доступа, в которую входит пользователь.
  3. Если ролей нет, а расширение добавляет новые объекты — попросите разработчика добавить роль. Без неё рядовой пользователь объект не увидит.
  4. Попросите пользователя закрыть программу полностью и открыть заново.

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

Сбои при загрузке, обновлении и выгрузке

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

Контролируемые свойства заимствованных объектов

Когда разработчик заимствует объект, расширение запоминает его ключевые свойства. Если после обновления типовой у объекта изменился тип реквизита, удалён реквизит или переименована форма, расширение не применится. Конфигуратор при проверке покажет, какой объект «разошёлся».

Лечение одно: открыть расширение в Конфигураторе на обновлённой базе, обновить заимствованные объекты и исправить код под новую структуру. Это работа разработчика, пользовательскими средствами это не решить.

Загрузка файла .cfe

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

  • 📁 файл .cfe собран для другой конфигурации или другой её редакции;
  • 🔁 в базе уже есть расширение с тем же именем, и вы загрузили новое рядом, а не поверх;
  • 🧱 расширение добавляет реквизиты или новые объекты, но структура базы данных не обновлена.

Загрузка .cfe и обновление конфигурации базы данных — два разных шага. Если в Конфигураторе загрузили расширение и не выполнили для него «Обновить конфигурацию базы данных», расширение в базе не появится. Расширения, которые меняют структуру данных, при обновлении потребуют реструктуризации.

Выгрузка и перенос

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

Перед загрузкой нового расширения в рабочую базу сделайте резервную копию и попробуйте его на копии. Расширение, которое меняет структуру данных, при удалении унесёт с собой и данные своих реквизитов.

Ошибки в коде и безопасный режим

Когда расширение применилось, но падает, виноват код. Здесь три основных сценария.

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

Безопасный режим. У расширения есть свойство «Безопасный режим». Если он включён, код расширения не может обращаться к файлам, внешним компонентам, COM-объектам и выполнять другие потенциально опасные действия. Отсюда ошибки при выгрузке в файл, обмене или печати через внешнюю компоненту.

СитуацияЧто делатьРиск
Расширение от проверенного разработчика, работает с файламиОтключить безопасный режим в свойствах расширенияКод получает доступ к файловой системе сервера
Расширение скачано из неизвестного источникаОставить безопасный режим, попросить исходникиОшибки сохранятся, но база защищена
Нужна только печатная форма или отчётБезопасный режим не мешает, ищите причину в коде—

Защита от опасных действий. Отдельная настройка у пользователя: при подключении расширения без безопасного режима платформа предупреждает о риске. Если её отключить вслепую, вы снимаете последний барьер перед вредоносным кодом. Делайте это только для расширений, которым доверяете.

Для отладки откройте базу в Конфигураторе, запустите отладку и поставьте точку останова в модуле расширения. Ошибка покажет строку, где код ссылается на несуществующий реквизит или вызывает запрещённый метод.

Диагностика: выберите симптом

Файловая и клиент-серверная база: в чём разница

Логика расширений одинакова в обоих вариантах, но поведение при сбоях отличается.

Файловая база. Расширение хранится в самой базе. Пока хоть один пользователь работает в старом сеансе, он видит старую версию. Если загрузка расширения прошла, а изменений нет, проверьте, все ли вышли из программы, включая «зависшие» сеансы на соседних компьютерах.

Клиент-серверная база. Здесь сеансы живут на сервере 1С, и пользователь может думать, что вышел, а его сеанс остался в кластере. Список сеансов видно в консоли администрирования серверов. Там же можно завершить сеанс конкретного пользователя.

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

Ещё две особенности серверного варианта:

  • 🌐 Расширение, которое работает с файлами, выполняет серверный код на машине сервера 1С. Пути вида C:\Обмен\ должны существовать именно там, а у пользователя службы сервера должны быть права на папку.
  • 🗂️ В базах с разделением данных (облачные и многоарендные) у расширения есть область действия: вся база или отдельная область данных. Расширение, подключённое в одной области, в другой не работает.

Для РИБ отдельный флаг: расширение передаётся в подчинённые узлы, только если в его свойствах включено использование в распределённой информационной базе.

Диагностика по журналу регистрации

Когда очевидные причины проверены, переходите к журналу. Он показывает, что произошло в момент старта сеанса и при ошибке.

  1. Откройте журнал: Администрирование → Обслуживание → Журнал регистрации в типовых конфигурациях или Администрирование → Журнал регистрации в Конфигураторе.
  2. Установите отбор по уровню «Ошибка» и по нужному пользователю.
  3. Сузьте период до времени, когда пользователь входил в программу или нажимал кнопку.
  4. Отдельно поставьте отбор по событиям, в названии которых есть слово «Расширение»: так видно, кто и когда загружал, изменял или отключал расширения.
  5. Откройте запись об ошибке: в комментарии будет текст исключения с именем модуля и номером строки.

Что ищем в записях:

  • 📌 имя расширения или модуля расширения в тексте ошибки — значит, падает код доработки;
  • 📌 сообщение о невозможности применить расширение при начале сеанса — значит, проблема в совместимости или заимствованных объектах;
  • 📌 недостаточно прав на объект — значит, роли.

Если журнал пуст или ошибка воспроизводится не у всех, включите технологический журнал. Его настраивают файлом logcfg.xml в каталоге conf платформы. Для поиска ошибок достаточно собирать события исключений (EXCP). Технологический журнал быстро растёт, поэтому включайте его на время диагностики и задавайте срок хранения.

Если ничего не помогло

Остались варианты, которые проверяют реже, хотя они встречаются.

  • 🧹 Кэш клиента. Запустите 1С с параметром /ClearCache или удалите базу из списка и добавьте снова. Это помогает, когда сеанс «помнит» старые метаданные.
  • 🔄 Переподключение расширения. Отключите его флагом активности, перезайдите, включите снова, снова перезайдите. Так платформа заново применит расширение при старте.
  • 🧪 Проверка на копии. Выгрузите базу в .dt, загрузите в пустую базу и подключите расширение там. Если на копии работает — ищите причину в правах, сеансах или окружении сервера.
  • 🧩 Конфликт расширений. Отключите все остальные расширения и проверьте нужное в одиночку. Два расширения, перехватывающие одну процедуру, мешают друг другу.

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

Частые вопросы

Слетят ли данные, если удалить расширение?
Данные основной конфигурации не пострадают. Но если расширение добавляло собственные реквизиты или справочники, их данные удалятся вместе с ним.
Нужно ли обновлять расширение после каждого обновления типовой?
Не всегда. Если обновление не затронуло заимствованные объекты и перехваченные методы, расширение продолжит работать. Проверку возможности применения запускайте после каждого обновления.
Можно ли отключить расширение, не удаляя его?
Да. Снимите флаг активности в списке расширений. Расширение останется в базе и не будет подключаться при старте сеанса.
Почему расширение работает в тонком клиенте, но не в веб-клиенте?
Код расширения может использовать методы, недоступные в веб-клиенте, например работу с локальными файлами без расширения браузера. Это ошибка разработки, её исправляют в коде.
Влияет ли расширение на обновление конфигурации?
Само обновление проходит как обычно: основная конфигурация остаётся на поддержке. Расширение может перестать применяться после обновления, и его придётся адаптировать.