Работа с расширениями в 1С:Предприятие 8.3 — это мощный инструмент, который, к сожалению, иногда преподносит неприятные сюрпризы в виде внезапного закрытия Конфигуратора или «ухода в дамп». Особенно часто это происходит при попытке открыть заимствованную форму, изменить реквизиты или воспользоваться конструктором запросов. Рассмотрим подробно причины такого поведения системы и разберем по шагам проверенные способы восстановления стабильной работы.
Ситуация, когда Конфигуратор «валится» при работе с конкретным расширением, чаще всего связана с внутренними ошибками кэширования метаданных или несоответствием свойств расширения основной конфигурации. Проанализируем типичные сценарии: вылет происходит при открытии формы списка, при вызове конструктора запроса или даже при простом пролистывании модуля. Ниже приведен список решений, которые помогли реальным разработчикам справиться с этой проблемой.
Как показывает практика, одной из самых частых причин падения является свойство ОсновнойСтиль в расширении. По неизвестным причинам платформа может конфликтовать с назначенным стилем при отрисовке заимствованных форм.
Выполним следующие действия:
Shift+F4).Во многих случаях именно это простое действие позволяет мгновенно прекратить вылеты при открытии форм.
Иногда платформа теряет связь с метаданными объекта в момент его заимствования. Проанализируем интересную находку: если перед открытием формы в расширении открыть эту же форму в основной конфигурации, падения удается избежать.
Рассмотрим алгоритм:
Этот метод помогает «прогреть» кэш метаданных и заставить платформу правильно прочитать структуру объекта.
Несоответствие версии режима совместимости основной конфигурации и расширения — классическая причина нестабильной работы. Посмотрим на свойства расширения еще раз.
Проверим значение параметра Режим совместимости. Он должен в точности совпадать с аналогичным параметром основной конфигурации. Если в основной конфигурации стоит Версия 8.3.14, а в расширении Использовать установку основной конфигурации или другая версия, это может приводить к ошибкам при работе конструктора запросов. Установим версию вручную так, чтобы они были идентичны.
Конфигурации уровня КОРП (ЗУП КОРП, ERP) обладают огромным объемом метаданных. 32-битный процесс Конфигуратора имеет ограничение на использование оперативной памяти (обычно до 2-4 ГБ). При отрисовке сложных форм с большим количеством заимствованных элементов память может закончиться мгновенно, что приводит к дампу.
Попробуем установить и использовать 64-битный тонкий/толстый клиент (дистрибутив Windows x86-64). Это снимет адресные ограничения и позволит платформе стабильнее работать с тяжелыми расширениями.
Если проблема сохраняется, проанализируем состояние кэша. Обычной очистки папок в %AppData% может быть недостаточно, так как поврежденные данные могут находиться в таблицах базы данных.
Выполним комплексную «продувку»:
.dt и загрузку в новую чистую базу. Это полностью пересоберет внутреннюю структуру Config и ConfigCashe.Выясним, не связано ли падение с зарегистрированной ошибкой платформы (например, ошибка №30177073). Платформа может падать, если в расширении используется обработчик команды с аннотацией &После.
Рассмотрим пример кода, который может вызывать подозрение:
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Код, который может приводить к дампу при определенных условиях платформы
КонецПроцедуры
Если вы столкнулись с такой ситуацией, попробуйте временно закомментировать код в процедурах с аннотацией &После или &Вместо и проверить, открывается ли форма. Если форма открылась — значит, проблема в парсере модуля. Помогает обновление платформы на более свежий релиз (например, переход с 8.3.18 на 8.3.22 и выше).
Проанализируем еще несколько моментов, которые часто упускаются:
Подводя итог, можно сказать, что расширения — механизм чувствительный. Большинство падений лечится либо очисткой свойств оформления (Стили), либо синхронизацией версий совместимости. Всегда держите под рукой свежую выгрузку расширения в файл .cfe, чтобы иметь возможность быстро пересоздать его в случае критического повреждения структуры.