Имя: Пароль:
1C
1С v8
УФ ПередЗавершениемРаботыСистемы. Как проверить параметр перед тес как завершать?
0 realevgenius
 
26.02.20
17:29
Приветствую, уважаемые!

Например, надо проверить: Закрыл ли менеджер смену и перед выходом из программы его предупредить.
Раньше было просто: Вызов сервера, проверка там, возврат результата, ну и отказ или нет, соответственно

Теперь вызов серверного метода невозможен.

Вопрос: Какая-то есть глобальная переменная или набор параметров или что-то, куда можно будет при работе пользователя записать значение, чтобы в процедуре ПередЗавершениемРаботыСистемы ее прочитать?

Спасибо!
1 vicof
 
26.02.20
17:32
ПараметрыСеанса не?
2 realevgenius
 
26.02.20
17:36
(1) ПараметрыСеанса - думал об этом...
ПередЗавершениемРаботыСистемы - здесь не доступны они
3 fisher
 
26.02.20
17:39
Так параметры сеанса - тоже только на сервере.
Только экспортная переменная модуля приложения может подойти.
4 realevgenius
 
26.02.20
17:41
(3) Извиняюсь за неграмотность
"экспортная переменная модуля" - вот об этом поподробнее?
Где ее объявить, чтобы, например, в модуле документа Эквайринг в нее что-то записать и затем прочитать в ПередЗавершениемРаботыСистемы?
5 fisher
 
26.02.20
17:42
(4) Ну вот где у тебя находится ПередЗавершениемРаботыСистемы - листай в самый верх, там они :)
6 vicof
 
26.02.20
17:43
А если несколько пользователей работают? Всем будет выдаваться окно с предупреждением?
7 vicof
 
26.02.20
17:44
Как по мне, это все должно решаться административными методами.
8 fisher
 
26.02.20
17:44
(4) Но с сервера туда никак не запишешь. Только с клиента. В рамках текущей сессии.
9 fisher
 
26.02.20
17:46
Приходит в голову только держать в параметре сеанса признак закрытия смены, и либо по подходящим клиентским событиям обновлять его в глобальной переменной из параметра сеанса либо в крайнем случае по обработке ожидания.
10 unenu
 
26.02.20
17:48
(0) тут https://forum.infostart.ru/forum9/topic219608/
прожевали сабж с разных сторон с рецептами
11 fisher
 
26.02.20
17:52
(10) Не. У ТС ситуация попроще.
12 fisher
 
26.02.20
17:53
Ему просто в диалог завершения работы системы нужно подставить правильный текст, в случае если смена не закрыта.
13 D_E_S_131
 
26.02.20
18:45
У какой-то открытой главной формы (например, отвечающей за рабочий стол) в событии ПередЗакрытием все это "обыгрываешь":

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
    
    Если Не Модифицированность Тогда
        Возврат;
    КонецЕсли;
    
    Отказ = Истина;
    
    Если ЗавершениеРаботы Тогда
    
        ТекстПредупреждения = НСтр("ru = 'Не сохранены измененные запросы!'");
    
    Иначе
    
        Режим = РежимДиалогаВопрос.ДаНетОтмена;
        
        Текст = НСтр("ru = 'Данные изменены. Сохранить изменения?'");
        
        ОП = Новый ОписаниеОповещения("ПослеВопросаПроИзменения", ЭтотОбъект);
        
        ПоказатьВопрос(ОП, Текст, Режим, 0);
        
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеВопросаПроИзменения(Ответ, ДП) Экспорт

    Если Ответ = КодВозвратаДиалога.Да Тогда    
        
        ИмяФайла = Объект.ИмяФайла;
        
        Если ДиалогСохраненияФайла(ИмяФайла) тогда
            Модифицированность = Ложь;
            Закрыть();
        Иначе
            Отказ = Истина;
        КонецЕсли;
        
    ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда        
        Модифицированность = Ложь;
        Закрыть();
    ИначеЕсли Ответ = КодВозвратаДиалога.Отмена Тогда
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры
14 realevgenius
 
26.02.20
18:51
(13) Спасибо! Попробую...
15 realevgenius
 
26.02.20
20:23
(13) Нету открытой главной формы...
Это, наверное, было давно, когда была обработка с признаком "рабочий стол"... Это все, похоже из прежних времен
Я тоже устарел, ищу как теперь это работает
16 realevgenius
 
26.02.20
23:42
Пытался прицепиться к форме обработки ТекущиеДела...
Также - Серверные вызовы при завершении работы запрещены

Каким методом кроме серверного получить - можно ли текущему пользователю завершать работу или нет - не могу догадаться