Расширение конфигурации загружено, но не действует: где искать сбой
Содержание
Расширение 1С чаще всего не работает
по одной из четырёх причин: оно не применилось после обновления основной конфигурации, у пользователя нет ролей расширения, безопасный режим запрещает его коду нужные действия, или после загрузки никто не перезапустил сеансы. Первое, что стоит сделать, — открыть список расширений (Администрирование → Печатные формы, отчеты и обработки → Расширения в типовых конфигурациях) и посмотреть, включено ли оно и нет ли там сообщения об ошибке применения.
Дальше выбор простой. Если расширение перестало работать сразу после обновления типовой — смотрите раздел про контроль заимствованных объектов. Если оно работает у администратора, но не у бухгалтера — дело в правах. Если не работает ни у кого и ошибок нет — проверьте режим совместимости и перезапуск сеансов.
Как понять, что именно сломалось: три быстрые проверки
Слово «не работает» скрывает разные ситуации. От того, какая из них у вас, зависит весь дальнейший поиск.
- 🔴 Расширение не применилось вовсе. Новых кнопок, реквизитов, печатных форм нет ни у кого. Платформа при старте сеанса отказалась его подключать.
- 🟠 Расширение применилось, но не у всех. Администратор видит доработку, рядовые пользователи — нет. Почти всегда это права.
- 🟡 Расширение применилось, но падает при действии. Кнопка есть, а при нажатии выходит ошибка. Это код, безопасный режим или сломанная ссылка на объект основной конфигурации.
Проверить первый вариант проще всего через встроенный язык. Откройте Все функции → Стандартные → Управление расширениями конфигурации (если пункта «Все функции» нет в главном меню, включите его в Сервис и настройки → Параметры). В списке видно, какие расширения загружены и активны.
Второй способ — Конфигуратор. Меню Конфигурация → Расширения конфигурации показывает все расширения базы, их назначение, флаг «Активно» и безопасный режим. Здесь же доступна проверка возможности применения: она сразу пишет, какой объект или метод мешает.
Расширения подключаются в момент начала сеанса. Если вы загрузили или включили расширение, а пользователи не перезашли в программу, у них по-прежнему работает старая версия. Перезапуск — первое лечение, а не последнее.
Расширение не совпадает с платформой или конфигурацией
Расширение создают под конкретную конфигурацию и конкретный режим совместимости. Механизм появился в платформе 8.3.6, но возможности расширений с тех пор сильно выросли. Поэтому расширение, собранное разработчиком на свежей платформе, может не подойти к базе, которая работает на старой.
Что проверить:
- Режим совместимости. В Конфигураторе откройте свойства расширения и свойства основной конфигурации, сравните поле «Режим совместимости». Если у расширения он выше, чем у конфигурации, расширение не применится. Нужно понизить режим совместимости в расширении или обновить платформу и конфигурацию.
- Номер платформы. Посмотрите в окне «О программе». Номер платформы должен быть не ниже того, на котором собирали расширение. Если разработчик использовал механизмы новых версий, а у вас платформа старее, расширение не загрузится или выдаст ошибку синтаксиса.
- Целевая конфигурация. Расширение для «Бухгалтерии предприятия 3.0» нельзя подключить к ЗУП 3.1 или УТ 11. Расширение ищет заимствованные объекты по именам, и если их нет — применять нечего.
- Назначение. У расширения есть свойство «Назначение»: исправление, адаптация или дополнение. От него зависит порядок применения, если в базе несколько расширений. Конфликт двух расширений, изменяющих один и тот же метод, тоже даёт неожиданный результат.
Режим совместимости основной конфигурации не меняйте «чтобы заработало». Это поведение типовой, его меняют только вместе с обновлением релиза.
Права пользователя и роли расширения
Типичная картина: администратор с полными правами видит новую печатную форму, а бухгалтер — нет. Платформа не выдаёт права на новые объекты расширения автоматически.
Как устроено:
- 🔑 Новые объекты расширения (справочники, отчёты, обработки, реквизиты) требуют прав. Их дают через роли, созданные в самом расширении, или через заимствованные роли, в которые добавлены права на новые объекты.
- 👥 В типовых конфигурациях на базе БСП роли расширения нужно включить в профиль группы доступа:
Администрирование → Настройки пользователей и прав → Профили групп доступа. После этого пользователь должен перезайти. - 🛡️ Управлять расширениями (загружать, включать, отключать) могут только пользователи с административными правами. Рядовой пользователь с полными правами на учёт этого не сможет.
Порядок действий при «у меня есть, у коллеги нет»:
- Откройте расширение в Конфигураторе и посмотрите, есть ли в нём роли.
- Если роли есть — добавьте их в профиль группы доступа, в которую входит пользователь.
- Если ролей нет, а расширение добавляет новые объекты — попросите разработчика добавить роль. Без неё рядовой пользователь объект не увидит.
- Попросите пользователя закрыть программу полностью и открыть заново.
Если доработка расширения лишь меняет поведение типового объекта (например, перехватывает процедуру проведения), отдельные права обычно не нужны: код выполняется в контексте объекта основной конфигурации.
Сбои при загрузке, обновлении и выгрузке
Самая частая история: расширение год работало, потом обновили типовую — и оно отвалилось. Причина в том, что расширение держится за объекты основной конфигурации по именам и свойствам.
Контролируемые свойства заимствованных объектов
Когда разработчик заимствует объект, расширение запоминает его ключевые свойства. Если после обновления типовой у объекта изменился тип реквизита, удалён реквизит или переименована форма, расширение не применится. Конфигуратор при проверке покажет, какой объект «разошёлся».
Лечение одно: открыть расширение в Конфигураторе на обновлённой базе, обновить заимствованные объекты и исправить код под новую структуру. Это работа разработчика, пользовательскими средствами это не решить.
Загрузка файла .cfe
В пользовательском режиме расширение добавляют из списка расширений кнопкой добавления из файла. В Конфигураторе — через Конфигурация → Расширения конфигурации, затем загрузку из файла. Ошибки на этом шаге обычно такие:
- 📁 файл
.cfeсобран для другой конфигурации или другой её редакции; - 🔁 в базе уже есть расширение с тем же именем, и вы загрузили новое рядом, а не поверх;
- 🧱 расширение добавляет реквизиты или новые объекты, но структура базы данных не обновлена.
Загрузка .cfe и обновление конфигурации базы данных — два разных шага. Если в Конфигураторе загрузили расширение и не выполнили для него «Обновить конфигурацию базы данных», расширение в базе не появится. Расширения, которые меняют структуру данных, при обновлении потребуют реструктуризации.
Выгрузка и перенос
Если расширение выгрузили в .cfe с одной базы и перенесли на другую, проверьте релиз типовой на обеих. Совпадение названия конфигурации ничего не гарантирует: расширение под релиз годовой давности может не встать на текущий.
Перед загрузкой нового расширения в рабочую базу сделайте резервную копию и попробуйте его на копии. Расширение, которое меняет структуру данных, при удалении унесёт с собой и данные своих реквизитов.
Ошибки в коде и безопасный режим
Когда расширение применилось, но падает, виноват код. Здесь три основных сценария.
Перехват метода, которого больше нет. Расширение подменяет процедуры типовой через аннотации &Перед, &После, &Вместо и &ИзменениеИКонтроль. Если после обновления процедуру переименовали или удалили, расширение не применится. С &ИзменениеИКонтроль строже: платформа сверяет текст исходного метода, и любое его изменение в новом релизе ломает применение. Это нормальное поведение — механизм для того и создан, чтобы доработка не работала «вслепую» поверх изменившегося кода.
Безопасный режим. У расширения есть свойство «Безопасный режим». Если он включён, код расширения не может обращаться к файлам, внешним компонентам, COM-объектам и выполнять другие потенциально опасные действия. Отсюда ошибки при выгрузке в файл, обмене или печати через внешнюю компоненту.
| Ситуация | Что делать | Риск |
|---|---|---|
| Расширение от проверенного разработчика, работает с файлами | Отключить безопасный режим в свойствах расширения | Код получает доступ к файловой системе сервера |
| Расширение скачано из неизвестного источника | Оставить безопасный режим, попросить исходники | Ошибки сохранятся, но база защищена |
| Нужна только печатная форма или отчёт | Безопасный режим не мешает, ищите причину в коде | — |
Защита от опасных действий. Отдельная настройка у пользователя: при подключении расширения без безопасного режима платформа предупреждает о риске. Если её отключить вслепую, вы снимаете последний барьер перед вредоносным кодом. Делайте это только для расширений, которым доверяете.
Для отладки откройте базу в Конфигураторе, запустите отладку и поставьте точку останова в модуле расширения. Ошибка покажет строку, где код ссылается на несуществующий реквизит или вызывает запрещённый метод.
Файловая и клиент-серверная база: в чём разница
Логика расширений одинакова в обоих вариантах, но поведение при сбоях отличается.
Файловая база. Расширение хранится в самой базе. Пока хоть один пользователь работает в старом сеансе, он видит старую версию. Если загрузка расширения прошла, а изменений нет, проверьте, все ли вышли из программы, включая «зависшие» сеансы на соседних компьютерах.
Клиент-серверная база. Здесь сеансы живут на сервере 1С, и пользователь может думать, что вышел, а его сеанс остался в кластере. Список сеансов видно в консоли администрирования серверов. Там же можно завершить сеанс конкретного пользователя.
Завершение сеанса в консоли обрывает работу пользователя без сохранения. Делайте это после предупреждения, лучше вне рабочего времени или в перерыв.
Ещё две особенности серверного варианта:
- 🌐 Расширение, которое работает с файлами, выполняет серверный код на машине сервера 1С. Пути вида
C:\Обмен\должны существовать именно там, а у пользователя службы сервера должны быть права на папку. - 🗂️ В базах с разделением данных (облачные и многоарендные) у расширения есть область действия: вся база или отдельная область данных. Расширение, подключённое в одной области, в другой не работает.
Для РИБ отдельный флаг: расширение передаётся в подчинённые узлы, только если в его свойствах включено использование в распределённой информационной базе.
Диагностика по журналу регистрации
Когда очевидные причины проверены, переходите к журналу. Он показывает, что произошло в момент старта сеанса и при ошибке.
- Откройте журнал:
Администрирование → Обслуживание → Журнал регистрациив типовых конфигурациях илиАдминистрирование → Журнал регистрациив Конфигураторе. - Установите отбор по уровню «Ошибка» и по нужному пользователю.
- Сузьте период до времени, когда пользователь входил в программу или нажимал кнопку.
- Отдельно поставьте отбор по событиям, в названии которых есть слово «Расширение»: так видно, кто и когда загружал, изменял или отключал расширения.
- Откройте запись об ошибке: в комментарии будет текст исключения с именем модуля и номером строки.
Что ищем в записях:
- 📌 имя расширения или модуля расширения в тексте ошибки — значит, падает код доработки;
- 📌 сообщение о невозможности применить расширение при начале сеанса — значит, проблема в совместимости или заимствованных объектах;
- 📌 недостаточно прав на объект — значит, роли.
Если журнал пуст или ошибка воспроизводится не у всех, включите технологический журнал. Его настраивают файлом logcfg.xml в каталоге conf платформы. Для поиска ошибок достаточно собирать события исключений (EXCP). Технологический журнал быстро растёт, поэтому включайте его на время диагностики и задавайте срок хранения.
Если ничего не помогло
Остались варианты, которые проверяют реже, хотя они встречаются.
- 🧹 Кэш клиента. Запустите 1С с параметром
/ClearCacheили удалите базу из списка и добавьте снова. Это помогает, когда сеанс «помнит» старые метаданные. - 🔄 Переподключение расширения. Отключите его флагом активности, перезайдите, включите снова, снова перезайдите. Так платформа заново применит расширение при старте.
- 🧪 Проверка на копии. Выгрузите базу в
.dt, загрузите в пустую базу и подключите расширение там. Если на копии работает — ищите причину в правах, сеансах или окружении сервера. - 🧩 Конфликт расширений. Отключите все остальные расширения и проверьте нужное в одиночку. Два расширения, перехватывающие одну процедуру, мешают друг другу.
Если расширение покупное, отправьте разработчику номер релиза конфигурации, номер платформы и текст ошибки из журнала. Без этих трёх цифр поддержка ничего не скажет.