|
Как вывести сообщение пользователю при выполнении регламентного задания в 8.3 | ☑ | ||
---|---|---|---|---|
0
Алексей2014
17.10.14
✎
21:55
|
Не выводится сообщение при выполнении регламентного задания в 8.3. В 8.2 такой проблемы нет. Т.е. Сообщить() не выполняется.
|
|||
1
PR
17.10.14
✎
22:00
|
Куда?
|
|||
2
Рэйв
17.10.14
✎
22:02
|
главный вопрос не КУДА.
Главный вопрос -НАХРЕНА? |
|||
3
Мимохожий Однако
17.10.14
✎
22:09
|
У сервера нет глазок и ушек. Достаточно записать в журнал регистрации
|
|||
4
Алексей2014
18.10.14
✎
07:25
|
куда - на экран.
в журнал регистрации понятно, но в 8.2 выводилось на экран. Зачем - чтобы было наглядно видно его ход выполнения. |
|||
5
IamAlexy
18.10.14
✎
07:41
|
(4) дурень, нафиг его на экран выводить, одно же РЕГЛАМЕНТНОЕ....
|
|||
6
Алексей2014
18.10.14
✎
07:45
|
я же сказал, чтобы видеть его ход выполнения. если нечего сказать, так мне такие советы не нужны.
|
|||
7
wanderer_ица
18.10.14
✎
07:48
|
как я понимаю, регламентное задание выполняется в фоне на сервере.
Поэтому куда выводить сообщение и кому - не совсем понятно. Может (в порядке бреда) у Вас раньше работало в файловой версии, а теперь в клиент-серверной? Я угадала? |
|||
8
Алексей2014
18.10.14
✎
07:50
|
вообще-то Сообщить() может выполняться и на сервере. но я сейчас рассматриваю файловый вариант.
|
|||
9
Gepard
18.10.14
✎
08:21
|
регистр сведения и форма его отображения
|
|||
10
Gepard
18.10.14
✎
08:22
|
Регистр сведений, форма его для показа пользователю (с автообновлением) + естественно в рз запись в этот регистр)
|
|||
11
viraboy
18.10.14
✎
08:49
|
Такая задача была на спеца по платформе, сдавал уже на УФ. Сделал регистр сведений, куда писало сообщения регламентное задание. Фоновым заданием проверял регистр и выводил пользователю сообщение.
|
|||
12
Фокусник
18.10.14
✎
08:50
|
(8) Вопрос не в том, МОЖЕТ или НЕТ выводиться Сообщить() на сервере/в файловой версии, а в том, что ты хочешь делать это для "регламентного задания": которое по своей СУТИ, выполняется БЕЗ участия пользователя, а значит и читать эти сообщения будет НЕ КОМУ... ;)
|
|||
13
romix
18.10.14
✎
09:19
|
В текстовый лог ИМХО надо писать через FileSystemObject.
Смотреть FAR-ом. :-) |
|||
14
PLUT
18.10.14
✎
09:28
|
у фоновых(регламентных) заданий есть ПолучитьСообщениеПользователю(), вот а в обработчике регл.задания нужно сообщитьпользователю()
я делал вывод сообщений пользователю не "клеенте" о завершении фонового (регламентного) задания. ничего сложного |
|||
15
PLUT
18.10.14
✎
09:42
|
в процедуре после выполнения регл.задания добавил
Сообщение=Новый СообщениеПользователю(); Сообщение.Текст="Выполнение обмена данными"; Сообщение.Сообщить(); а в обработчике ожидания (который подключается приначалесистемы()) добавил МассивЗаданий=ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("ИмяМетода","МодульРегламентныхЗаданий.ВыполнитьОбменДаннымиДляНастройкиАвтоматическогоОбменаДанными")); Если МассивЗаданий.Количество()=0 Тогда Возврат; КонецЕсли; Если МассивЗаданий[0].Состояние<>СостояниеФоновогоЗадания.Завершено Тогда Возврат; КонецЕсли; Если ЗначениеВСтрокуВнутр(ПоследнееФоновоеЗадание)=ЗначениеВСтрокуВнутр(МассивЗаданий[0]) Тогда Возврат; КонецЕсли; Сообщения=МассивЗаданий[0].ПолучитьСообщенияПользователю(); Если ТипЗнч(Сообщения)=Тип("ФиксированныйМассив") Тогда Текст=""; Если Сообщения.Количество()>0 Тогда Для каждого ТекСообщение Из Сообщения Цикл Текст=""+МассивЗаданий[0].Конец+" "+МассивЗаданий[0].Состояние+" "+Символы.ПС+ТекСообщение.Текст+Символы.ПС; КонецЦикла; Заголовок="Сообщение"; бла-бла-бла. потом можно сообщить(Текст), можно какую-то форму показать... |
|||
16
PLUT
18.10.14
✎
09:52
|
(12) есть кому читать канешна, было бы что читать)
ФоновоеЗадание.ПолучитьСообщенияПользователю (BackgroundJob.GetUserMessages) ФоновоеЗадание (BackgroundJob) ПолучитьСообщенияПользователю (GetUserMessages) Синтаксис: ПолучитьСообщенияПользователю(<УдалятьПолученные>) Параметры: <УдалятьПолученные> (необязательный) Тип: Булево. Признак необходимости удаления полученных сообщений. Истина - удалять. Значение по умолчанию: Ложь Возвращаемое значение: Тип: ФиксированныйМассив. Описание: Получает массив объектов СообщениеПользователю, которые были выведены в процессе работы фонового задания. Получение сообщений может выполняться как в процессе работы задания, так и по его завершении. Доступность: Сервер, толстый клиент, внешнее соединение. фича или баг? у фоновых заданий почему-то не очищаются полученные сообщения пришлось костыль вставлять, чтобы не выводить одни и те же сообщения последнего выполненного фонового(регл)задания Если ЗначениеВСтрокуВнутр(ПоследнееФоновоеЗадание)=ЗначениеВСтрокуВнутр(МассивЗаданий[0]) Тогда Возврат; КонецЕсли; |
|||
17
romix
18.10.14
✎
09:55
|
"Hello, world" непростое. :-)
|
|||
18
PLUT
18.10.14
✎
09:55
|
+(16) (0) то, что дохтур прописал)))
Получение сообщений может выполняться как в процессе работы задания, так и по его завершении на здоровье)) |
|||
19
Алексей2014
18.10.14
✎
10:22
|
Спасибо. Вечером попробую.
|
|||
20
Алексей2014
19.10.14
✎
21:11
|
Короче говоря, создал в Общем модуле простую процедурку по добавлению в регистр сведений:
Процедура МоеРегЗадание() Экспорт Данные=РегистрыСведений.РеглЗадание.СоздатьНаборЗаписей(); Набор=Данные.Добавить(); Набор.Период = ТекущаяДата(); Набор.ТекстРеглЗадания="Задание работает, сейчас "+ТекущаяДата(); Данные.Записать(Ложь); КонецПроцедуры Указал в Регламентном задании в "Имя метода" эту процедурку Расписание Каждый день каждые 60 сек Галки Использование и Предопределенное. Однако не работает. 1с аварийно завершается. Заходим с другой стороны: Щелкаем Конфигурация-Режим совместимости - (меняем с "Не использовать" на "8.2.16"), затем идём в регистр сведений куда будем писать регламентным заданием , открываем модуль формы списка добавляем код: &НаКлиенте Процедура ПриОткрытии(Отказ) ПодключитьОбработчикОжидания("ПриОтрытииНаКлиенте",5); КонецПроцедуры &НаКлиенте Процедура ПриОтрытииНаКлиенте() ВыполнитьОбработкуЗаданий(); КонецПроцедуры Запускаю, работает (пишет в регистр)! Но почему не работает в 8.3? У меня 8.3.5.1119. |
|||
21
Алексей2014
21.10.14
✎
20:39
|
Дамы и господа, комрады, мучачес...товарищи! Если у вас появилось что-то вроде того:
"Имя сбойного приложения: 1CV8C.exe, версия: 8.3.5.1231, метка времени: 0x543ec775 Имя сбойного модуля: backend.dll, версия: 8.3.5.1231, метка времени: 0x543ecab7 Код исключения: 0xc0000005 Смещение ошибки: 0x0033a463 Идентификатор сбойного процесса: 0x73f4 Время запуска сбойного приложения: 0x01cfed4a749cd862 Путь сбойного приложения: C:\Program Files (x86)\1cv8\8.3.5.1231\bin\1CV8C.exe Путь сбойного модуля: C:\Program Files (x86)\1cv8\8.3.5.1231\bin\backend.dll Идентификатор отчета: e37ddfd3-593d-11e4-bed1-60a44c373b84" и 1С аварийно завершает свою работу, и вы начинаете думать что всё пропало, не надо отчаиваться. Спокойно идёте в директорию конфигурации и удаляете всё из подкаталога 1Cv8JobScheduler. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |