Расследование причины аварийного завершения клиентского приложения при работе с управляемой формой

30/09/2016

Расследование причины аварийного завершения клиентского приложения при работе с управляемой формой

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

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

Сценарий воспроизведения ошибки.png

Рисунок 1. Сценарий воспроизведения ошибки

На форму добавлено несколько вертикально расположенных реквизитов для того, чтобы обеспечить появление вертикальной «полосы прокрутки». Расположена группа страниц, состоящая из трех страниц (Группа7, Группа2, Группа5). В Группа5 расположены несколько реквизитов и динамический список, работающий с данными регистра сведений. В Группа2 расположены еще несколько реквизитов и еще одна группа страниц, на одной из которых расположена табличная часть документа. В Команда1 в коде изменяется видимость Группа5 и Группа6. При прокрутке вниз и выполнении команды Команда1 происходит аварийное завершение клиентского приложения. Данный пример – это результат расследования и воспроизведения проблемы на пустой базе.

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

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

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

Надеемся, вы сможете с легкостью выполнить нужную вам задачу и продолжите с удовольствием пользоваться продуктами 1С. Ну а если у вас что-то не получится, или вы столкнетесь с какими-то трудностями, обращайтесь к нам, мы обязательно поможем!