Версия для печати темы (https://pro1c.org.ua/index.php?s=e7cbcdf6eaaf80712eee6ed1c9d5cf31&showtopic=67746)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Действия на сервере при выходе из программы! Как?

Автор: AnryMc 28.01.25, 10:01

События "модуля приложения": "ПриЗавершенииРаботыСистемы" и "ПередЗавершениемРаботыСистемы" не разрешают серверные вызовы...

ВОПРОС: можно ли отследить "гарантированный выход" пользователя из программы и в этом случае сделать некоторые действия на сервере.

Под "гарантированным выходом" понимается что пользователь не отменил выход в процедуре "ПередЗавершениемРаботыСистемы"

З.Ы. Понимаю что нужно пользоваться асинхронным вызовом в "ПередЗавершениемРаботыСистемы" но пока не вижу "полной картинки" как это сделать...

Может кто поможет (подскажет) алгоритм или выложит пример...

Автор: sava1 28.01.25, 10:19

из заметок

У модуле управляемого приложения создается переменная, скажем МожноЗавершить.

В обработчике ПередЗавершениемРаботыСистемы проверяем переменную, если Истина, тогда возврат
Далее код, когда переменная не установлена:
Устанавливаем переменной = Истина, подключаем обработчик ожидания, и выставляем Отказ = Истина.
Уже в обработчике ожидания можно делать вызов сервера. Главное не забыть в нем снова вызвать завершение работы системы.

Автор: AnryMc 28.01.25, 12:45

sava1 @ Сегодня, 10:19 * ,

Удается запустить обработчик ожидания если только пользователь отказался от выхода......

Автор: sava1 28.01.25, 13:19

AnryMc @ Сегодня, 12:45 * ,

сам не пробовал. когда-то копирнул.


вот так пишут отрабатывает

Процедура ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения)    
    Отказ = Истина;
    ТекстПредупреждения = "Нажмите Продолжить работу, что бы выполнить АвтоОбменРИБ";
    
    ПодключитьОбработчикОжидания("ВыполнитьОбмен",1,Истина);    
КонецПроцедуры

Процедура ВыполнитьОбмен()Экспорт    
    Обмен.ВыполнитьОбменСоВсемаРИБ();
    ОтключитьОбработчикОжидания("ВыполнитьОбмен");    
КонецПроцедуры


ну и отключить вывод вопроса о завершении для пользователя

Автор: AnryMc 28.01.25, 14:01


Цитата(sava1 @ 28.01.25, 13:19) *
ну и отключить вывод вопроса о завершении для пользователя


Преобразую синтаксис помощник в таблицу:
Отказ Текст Сообщения Действие
Истина Есть текст Предложение выхода с предложенным текстом
Истина Нет текста Стандартное предложение выхода
Ложь Игнорируется Закрытие программы

КАК ОТКЛЮЧИТЬ? При любом Отказ = ИСТИНА - предложение о закрытии
При Отказ = Ложь - безусловное закрытие

Оператор "Возврат" в данной процедуре (у меня) не отрабатывает.....

Доступные варианты:
1) Вопрос - Если Отказ = Истина - выход
2) Вопрос - Если Отказ = Ложь - запускается ожидание
3) Без вопроса - выход

Автор: sava1 28.01.25, 14:55

AnryMc @ Сегодня, 14:01 * ,

тут по большому счету ПРиЗавершении надо формировать файл со своими данными
А обработку проводить регламентным

Автор: AnryMc 28.01.25, 15:12

sava1 @ Сегодня, 14:55 * ,

Ну так я "специалист по удалению гланд через ЖЖЖЖ" - сколько уже таких решений делал - но всё ещё "верю в хорошее" и пытаюсь сделать штатными средствами...

Автор: Vofka 28.01.25, 18:36

Цитата(sava1 @ 28.01.25, 14:55) *
тут по большому счету ПРиЗавершении надо формировать файл со своими данными
А обработку проводить регламентным

А как положить файл на сервер при условии неразрешения серверных вызовов?

Автор: sava1 28.01.25, 18:47

Vofka @ Сегодня, 18:36 * ,

а на клиенте файл доступен

Автор: Vofka 28.01.25, 19:10

sava1 @ Сегодня, 18:47 * ,
А как регламентное задание (которое выполняется не на клиенте) этот файл на клиенте найдет?

Автор: AnryMc 29.01.25, 8:28

Vofka @ Вчера, 19:10 * ,

Я вижу такое решение - "шара" на сервере и класть с Клиента туда...
Ну и на сервере - искать в "шаре"

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua