Работа с расширениями в среде 1С:Предприятие 8.3 предоставляет огромные возможности для кастомизации интерфейса без изменения основной конфигурации. Однако разработчики часто сталкиваются с ситуацией, когда добавление новой обработки или отчета на начальную страницу (рабочий стол) приводит к немедленному закрытию приложения («вылету») без объяснения причин. Особенно остро эта проблема проявляется на релизах платформы ветки 8.3.16 и выше.
В этой статье мы подробно разберем, почему возникает конфликт интерфейсных механизмов, проанализируем взаимосвязь между объектами расширения и системными компонентами, а также изучим пошаговые методы решения данной проблемы.
Рассмотрим типичный сценарий: программист создает новую обработку в расширении и хочет вывести ее форму на начальную страницу для удобства пользователя. В конфигураторе (в настройках рабочей области) форма размещается, например, в правой колонке. При запуске клиентского приложения 1С:Предприятие происходит аварийное завершение работы (Access Violation). Выясним интересную закономерность: если форму переместить в левую колонку, запуск проходит успешно, но при попытке пользователя интерактивно перетащить ее обратно в правую часть — система снова «вылетает».
Проанализируем ситуацию глубже. В большинстве типовых конфигураций (БП 3.0, УТ 11, ЗУП 3.1) в правой колонке по умолчанию расположена системная обработка ИнформационныйЦентр. Это та самая панель, где отображаются новости, строка поиска и ссылки на портал 1С:ИТС. Проблема заключается не в самой вашей форме, а в её «несовместимости» с этим системным блоком при определенных условиях.
Одной из наиболее вероятных причин сбоя является конфликт ключей в системных таблицах базы данных, где 1С хранит пользовательские настройки интерфейса (положение колонок, видимость кнопок, размеры окон). Если вы создали свою обработку путем копирования системной обработки (например, того же Информационного центра), то в свойства формы мог перекочевать параметр ИмяСохраняемыхДанных.
Разберем, как это проверить и исправить:
Важный момент: Платформа пытается восстановить состояние рабочего стола при запуске. Если два объекта имеют одинаковый ключ сохранения, механизм десериализации настроек может вызвать критическую ошибку в памяти процесса.
Системная обработка ИнформационныйЦентр активно использует встроенный браузер для отрисовки контента. Если ваша форма в расширении также содержит ПолеHTMLДокумента, на старых или нестабильных релизах платформы (таких как 8.3.16.1148) возникает конфликт потоков отрисовки.
Рассмотрим рекомендации по устранению этого конфликта:
Зачастую проблема решается простым обновлением платформы до актуальных релизов (8.3.17.х, 8.3.21.х и выше), где работа с несколькими экземплярами WebBrowser на одной странице была значительно стабилизирована.
Даже после исправления свойств формы в конфигураторе, 1С может продолжать вылетать у пользователя. Это происходит из-за того, что в базе данных уже сохранен «битый» кэш настроек рабочего стола. Нам необходимо принудительно его очистить.
Посмотрим на пример кода, который можно выполнить в обработке под полными правами для конкретного пользователя:
// Очистка настроек начальной страницы для конкретного пользователя
КлючОбъекта = "Общее/НастройкиНачальнойСтраницы";
ХранилищеОбщихНастроек.Удалить(КлючОбъекта, , ИмяПользователя);
// Можно также очистить настройки всех форм пользователя, если проблема сохраняется
ХранилищеНастроекДанныхФорм.Удалить("Обработка.МояОбработкаИзРасширения.Форма.ФормаРабочегоСтола", "", ИмяПользователя);
После удаления этих записей при следующем входе система создаст настройки рабочего стола «с нуля», что должно устранить ошибку инициализации интерфейса.
Проанализируем технические параметры самого расширения. Существует несколько критических настроек, влияющих на отрисовку начальной страницы:
8.3.14, а в расширении 8.3.16, механизмы управления формами могут работать некорректно.Адаптация или Дополнение. Использование типа Исправление (Patch) для таких целей может приводить к непредсказуемым результатам.Информационным центром.Подводя итог, можно сказать, что «вылет» 1С при настройке начальной страницы — это чаще всего комплексная проблема взаимодействия кэша настроек и программных ошибок платформы при работе с расширениями. Для исправления ситуации выполним следующие действия:
ИмяСохраняемыхДанных.Полей HTML-документа.ХранилищеОбщихНастроек по ключу Общее/НастройкиНачальнойСтраницы.Если ни один из методов не помогает, стоит рассмотреть временное отключение стандартной обработки ИнформационныйЦентр из состава начальной страницы, так как именно она чаще всего выступает «катализатором» критических ошибок в интерфейсе «Такси» при использовании расширений.