Имя: Пароль:
1C
1С v8
Как выполнить процедуру на сервере перед завершением сеанса 1С
0 PolinaPykh
 
09.01.23
10:03
Итак, праздники закончились и прилетел запрос от пользователей (с которым я естессно не могу справиться):
1С УНФ на 8.3.20.218 (1.6.27.295).
Мне необходимо решить две задачки:
1. Выполнить серверную процедуру для все документов, отобранных запросом. Я хотела сделать это через ПередЗавершениемРаботыСистемы, но фигвам а не серверные вызовы

Ошибка при вызове метода контекста (ПередЗавершениемРаботыСистемы)
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(1964)}:    ижтисиБухгалтерия.ПередЗавершениемРаботыСистемы(Отказ, Предупреждения);
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(409)}:    Предупреждения = ПредупрежденияПередЗавершениемРаботыСистемы(Отказ);
{МодульУправляемогоПриложения(100)}:    СтандартныеПодсистемыКлиент.ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения);
по причине:
Серверные вызовы при завершении работы запрещены

Собственно вопрос в том - куда и как бы корректно запихнуть Вот такую процедуру, чтобы она страбатывала перед выходом из системы, даже аварийным? и вообще возможно ли это?

Процедура ЗавершениеВсехЗаданий() Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаданиеНаРаботу.Ссылка КАК Ссылка
        |ИЗ
        |    Документ.ЗаданиеНаРаботу КАК ЗаданиеНаРаботу
        |ГДЕ
        |    ЗаданиеНаРаботу.Состояние В(&Состояние)
        |    И ЗаданиеНаРаботу.Проведен";
    
    МассивСостояний = Новый Массив;
    МассивСостояний.Добавить(Справочники.СостоянияСобытий.ижтисиВыполняется);
    МассивСостояний.Добавить(Справочники.СостоянияСобытий.ppПродолжено);
    МассивСостояний.Добавить(Справочники.СостоянияСобытий.ижтисиОстановлено);
    Запрос.УстановитьПараметр("Состояние", МассивСостояний);
    
    Результат = Запрос.Выполнить.Выгрузить();
        Если Результат.Количество() >= 1 Тогда
        
            Для Каждого Ссылка Из Результат.Ссылка Цикл
                
                ижтисиБухгалтерия.ЗакончитьРаботу(Ссылка);
                
            КонецЦикла;    
    
        КонецЕсли;
                 
КонецПроцедуры

2. А еще мне нужно сделать максимально назойливую напоминалку для пользователей, чтобы они закрывали 1С.
типа, начиная с 17.00 каждые полчаса выводить сообщение поверх всех окон - "закрой 1с до семи вечера иначе мы к тебе придем". Мне очень нравится как это устроено в "Блокировке пользователей", но надо чтобы это работало по расписанию каждый день. Если кто-то с этим сталкивался или хотя бы находил похожие решения - хэлп (поиск пока совсем не помог, а с какой стороны подступиться к задачке - я теряюсь).
1 vicof
 
09.01.23
10:08
1. Регламентные задания спасут мать русской демократии
2. Зачем?
2 DJ Anthon
 
09.01.23
10:08
не возможно. пиши инфу в файлы куда-нибудь на общий диск, а сторонним фоновым заданием обрабатывай файло
3 Ryzeman
 
09.01.23
10:09
>>чтобы она страбатывала перед выходом из системы, даже аварийным
В рамках предполагаемой реализации простым серверным вызовом - точно нет.
4 timurhv
 
09.01.23
10:15
(0) п2:
ОбщегоНазначенияПереопределяемый.ПриДобавленииСерверныхОповещений
5 PolinaPykh
 
09.01.23
10:16
(1) 2. Они хотят) Я всегда оставляю за собой вариант - "не уверена, что это возможно".
1. Регламентные задания - это еще то, что я не осваивала от слова совсем) *учусь плавать по принципу: либо утоп, либо жабры отрастил
6 PolinaPykh
 
09.01.23
10:16
(4) спасибо - попробую
7 lodger
 
09.01.23
10:34
(0) >> чтобы она страбатывала перед выходом из системы, даже аварийным? и вообще возможно ли это?
в лоб - нет. никак.
только искать другие пути. например, (1) регламент на сервере сам проверяет висячие задачи, сверяет с живыми пользователями, что-то делает.
8 PolinaPykh
 
09.01.23
10:36
(7) эх)) а как было бы просто))
9 Kassern
 
09.01.23
10:47
(0) "А еще мне нужно сделать максимально назойливую напоминалку для пользователей" - используйте "Задачи" для этого.
10 Kassern
 
09.01.23
10:48
(9) Либо сделайте свой аналог.
11 magicSan
 
09.01.23
10:52
(9) там нет модальности.
Пишешь свою обработку и в неё отрабатываешь, обработку на рабочий стол.

А вообще просто гаси сеансы на кластере.
12 timurhv
 
09.01.23
10:55
(10) в БСП 3.1.7 добавили возможность через рег.задание "Отправка серверных оповещений клиентам" передавать с сервера на клиент данные.
У меня так окно с просьбой обновить токен честного знака выскакивает и открытый пользователем на редактирование документ закрывается, по которым новые данные от SAP приходят.
13 PolinaPykh
 
09.01.23
10:58
(9) вариант, спасибо
14 PolinaPykh
 
09.01.23
10:59
(11) о, да. эту возможность я оставляю на вкусненькое)) муахаха)
15 Kassern
 
09.01.23
10:59
(12) Удобно. Надо потестить у себя, пока через корпоративную почту и чат все оповещения идут.