В моей практике был один случай, когда необходимо было получать статус предыдущего завершения сенаса 1С, т.е. завершен ли сеанс корректно или 1С "вылетела" по какой-либо причине, не зависящей от пользователя.
Предпосылкой был приказ руководителя снимать проведение определенных документов пользователя, под которым запускался сеанс 1С. Делать это нужно непосредственно при запуске.
Поскольку под снятием проведения подразумевалась отмена резервирования товаров, а продавцы очень этого не любят, то сценарий "вылет 1С - запуск 1С - автоматическая отмена резервов - вновь постановка в резерв продавцом" был отвергнут, так как частенько в течение дня 1С любит сама по себе вылетать или перегружатся. А это значило, что продавцам придется вновь и вновь собирать свои резервы. Мне представилась толпа разъяренных торгашей, пинающая программиста, внедрившего "нужную" фичу. И попробуй докажи потом, что ты не верблюд. Значит, надо было как-то определять "правильность" завершения предыдущего сеанса, чтобы обработка отмены резервов работала только после санкционированного завершения.
Долго думал как бы отловить вылет 1С, на какое событие завязаться...
В итоге, нашлось довольно-таки простое решение. Вместо того, чтобы осуществлять "отлов" состояния при "вылете", делал это при старте 1С.
В обработчике события ПриНачалеРаботыСистемы статус предыдущего завершения получался из восстановленного значения
ВосстановитьЗначение("СтатусПредыдущегоЗавершенияРаботыСистемы", Статус);
Если он был равен Истина, значит предыдущий сеанс был завершен корректно, если Неопределено (для первого использования) или Ложь - некорректно. Сразу после восстановления сохранялось новое значение
СохранитьЗначение("СтатусПредыдущегоЗавершенияРаботыСистемы", Ложь); //заранее думаем, что сеанс будет завершен некорректно
А в обработчике ПриЗавершенииРаботыСистемы сохранялось значение Истина
СохранитьЗначение("СтатусПредыдущегоЗавершенияРаботыСистемы", Истина); //если добрались сюда, значит сеанс завершен правильно
Таким образом, если пользователь завершал работу 1С корректно, срабатывал обработчик ПриЗавершенииРаботыСистемы и при следующем входе восстанавливалось значение Истина. Если работа 1С прерывалась по причинам, не зависящим от пользователя, при следующем входе восстанавливалось значение Ложь.
Впоследствии, алгоритм немного расширился, т.к. было решено использовать процедуру снятия с резерва один раз за день. При этом особо ушлые пользователи просекли фишку с "вылетом" 1С и просто не выключали на ночь 1С. Ночью сервер 1С рестартовал, сеансы вылетали, а при следующем старте алгоритм не срабатывал, т.к. возвращалось значение Ложь. Пришлось задействовать Регистр сведений, в котором в разрезе пользователя хранились данные о дате последней проверки значения и само значение статуса.