Почему при закрытии программы 1С:Управление торговлей 10.3 появляется ошибка после обновления платформы?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При обновлении технологической платформы 1С:Предприятие 8 до версий 8.3.18 и выше пользователи конфигурации Управление торговлей 10.3 могут столкнуться с неожиданным окном ошибки при попытке закрыть программу. Рассмотрим, почему это происходит и как устранить данную проблему, не дожидаясь патчей от разработчика.

Выясняем причину возникновения ошибки

Чаще всего подобные ошибки связаны с изменением логики обработки событий жизненного цикла сеанса в новых версиях платформы. В современных релизах 1С предъявляет более жесткие требования к тому, какие действия допустимы при завершении работы системы. В частности, процедура ПриЗавершенииРаботыСистемы предназначена для выполнения логики очистки или закрытия транзакций, а не для взаимодействия с интерфейсом пользователя.

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

Разбираем шаги по поиску источника проблемы

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

  1. Запустите конфигуратор в режиме отладки.
  2. В меню Отладка выберите пункт Остановка по ошибке.
  3. Установите флажок напротив пункта Останавливаться по ошибке.
  4. После этого попытайтесь закрыть программу. Если ошибка вызвана программным кодом, система принудительно остановит выполнение в той строке, которая вызывает конфликт.

После активации отладки мы, скорее всего, обнаружим строку, похожую на пример ниже:


Процедура ПриЗавершенииРаботыСистемы()
    // Какой-то код
    Сообщить("Работа программы завершена"); // Именно эта строка вызывает ошибку
КонецПроцедуры

Как устранить проблему

После обнаружения проблемного вызова у нас есть два пути решения:

Рекомендации по управлению версиями платформы

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

Использование режима совместимости — это мощный инструмент, позволяющий запускать старые конфигурации на новых платформах. Тем не менее, он не отменяет фундаментальных изменений в ядре платформы. Если вы планируете использовать одну платформу для нескольких баз (например, УТ 10.3 и ЗУП 3.0), используйте механизм назначения версии платформы в свойствах конкретной информационной базы в Стартере 1С (исполняемый файл 1cestart.exe).

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

  1. Откройте список баз 1С.
  2. Нажмите Изменить для нужной базы.
  3. На второй странице мастера в поле Дополнительные параметры запуска или через свойства конфигуратора укажите путь к необходимому файлу 1cv8.exe нужной версии.

Заключение

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

← На главную