При обновлении технологической платформы 1С:Предприятие 8 до версий 8.3.18 и выше пользователи конфигурации Управление торговлей 10.3 могут столкнуться с неожиданным окном ошибки при попытке закрыть программу. Рассмотрим, почему это происходит и как устранить данную проблему, не дожидаясь патчей от разработчика.
Чаще всего подобные ошибки связаны с изменением логики обработки событий жизненного цикла сеанса в новых версиях платформы. В современных релизах 1С предъявляет более жесткие требования к тому, какие действия допустимы при завершении работы системы. В частности, процедура ПриЗавершенииРаботыСистемы предназначена для выполнения логики очистки или закрытия транзакций, а не для взаимодействия с интерфейсом пользователя.
В ходе анализа мы выяснили, что основной причиной появления окна с сообщением является вызов метода Сообщить() внутри модуля, который срабатывает непосредственно перед выходом из программы. Старые версии платформы игнорировали подобные вызовы, однако новые версии платформы расценивают попытку обращения к интерфейсу (вывод сообщения или открытие формы) в момент завершения сеанса как некорректное действие, что и провоцирует ошибку.
Если вы столкнулись с подобным поведением, нам необходимо локализовать конкретный участок кода. Для этого выполним следующие действия:
После активации отладки мы, скорее всего, обнаружим строку, похожую на пример ниже:
Процедура ПриЗавершенииРаботыСистемы()
// Какой-то код
Сообщить("Работа программы завершена"); // Именно эта строка вызывает ошибку
КонецПроцедуры
После обнаружения проблемного вызова у нас есть два пути решения:
Сообщить() или вызов формы не несет критической бизнес-логики, просто удалите эту строку или закомментируйте её.В ходе работы мы проанализировали важность выбора версии платформы для конфигураций на обычных формах. Рассмотрим важные моменты:
Использование режима совместимости — это мощный инструмент, позволяющий запускать старые конфигурации на новых платформах. Тем не менее, он не отменяет фундаментальных изменений в ядре платформы. Если вы планируете использовать одну платформу для нескольких баз (например, УТ 10.3 и ЗУП 3.0), используйте механизм назначения версии платформы в свойствах конкретной информационной базы в Стартере 1С (исполняемый файл 1cestart.exe).
Вы можете указать конкретный релиз платформы для каждой базы, чтобы избежать конфликтов:
1cv8.exe нужной версии.Проанализировав ситуацию, мы пришли к выводу, что данная ошибка — это не баг как таковой, а следствие изменения политики безопасности и архитектуры работы интерфейса в платформе 8.3.18+. Всегда помните, что при переходе на новые версии платформы необходимо проводить тестирование критических узлов, особенно тех, что связаны с взаимодействием пользователя и интерфейса. Соблюдая описанный порядок действий, вы быстро найдете источник ошибки и восстановите стабильную работу своей системы.