Метод «Сообщить()» на сервере

23. nanoBOT 11.06.10 09:41 Сейчас в теме
Fuego, Душелов, спасибо - оч интересное решение.
я понимаю - тема давно не постилась - но всё же спрошу:
подскажите , как определить - из какой процедуры была вызвана СообщитьПользователю - мне нужно в неё добавить условие - если прользователь=глбух и если групповая обработка тогда вызывать и метод сообщить и запись в логрегистр??
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
24. Душелов 4018 12.06.10 12:45 Сейчас в теме
(23) Добавить еще один параметр в эту процедуру - как раз для подобных фильтров.
25. nanoBOT 19.06.10 00:27 Сейчас в теме
(24) ну определить пользователя = нет проблем , а вот как определить - групповая обработка или просто главбух документ перепровел?
26. redgad 80 19.06.10 10:56 Сейчас в теме
1. Создаем новый параметр сеанса типа булево, называем его к примеру "Запущена групповая обработка".
2. При запуске этой обработки устанавливаем параметр сеанса "Истина"
3. В процедуре "Сообщить пользователю" проверяем этот параметр сеанса
27. Fuego 462 15.01.09 10:48 Сейчас в теме
Кто-нибудь знает, куда выводится информация, переданная в метод «Сообщить()», когда этот метод выполняется без клиенского приложения? Т.е. в регламентном задании на сервере ночью у меня проходит перепроведение документов, а «ругательства» документов хотелось бы видеть утром.
28. Душелов 4018 15.01.09 10:50 Сейчас в теме
Никуда не выводится. Для подобного я логирование добавлял.
29. Fuego 462 15.01.09 10:52 Сейчас в теме
Хотя... Похоже нет в 8.1 такой возможности. В 8.2 есть такая функция:
Для объекта ФоновоеЗадание реализован метод ПолучитьСообщенияПользователю() , позволяющий получать вне фонового задания сообщения, выведенные методом Сообщить() в процессе работы фонового задания.
30. Fuego 462 15.01.09 10:53 Сейчас в теме
(2) а как? Все доки перепахать?
31. Душелов 4018 15.01.09 10:53 Сейчас в теме
(3) Именно... Ожидаем 8.2... Чувствую, будет где развернуться :)
32. Душелов 4018 15.01.09 10:59 Сейчас в теме
(4) Глобально заменяешь "Сообщить" на "СообщитьПользователю" (в типовых кто-то аналогичное используется), и там уже если клиент - используешь Сообщить, иначе пишешь в файл.
33. Fuego 462 15.01.09 11:02 Сейчас в теме
(6) слушай-ка. А это идея! :)
34. Душелов 4018 15.01.09 11:03 Сейчас в теме
(7) Я писал в xml, а потом по нему отчетик делал, с отборами и прочим.
35. Fuego 462 15.01.09 11:09 Сейчас в теме
Я ща нашёл у себя 1110 вхождений. Но потом подумал, и вспомнил. Если я ща создам модуль с флагом глобальный, и там определю процедуру, то вроде бы всё будет работать. Но если такой метод вызывать из модуля типа партионного учёта, который выполняется на сервере, то эти сообщения будут записаны в лог, а не выведены в окно сообщений?
36. Душелов 4018 15.01.09 11:11 Сейчас в теме
(9) Ну да, при условии
#Если Сервер Тогда
37. coder1cv8 3470 15.01.09 11:12 Сейчас в теме
А вот кто знает куда фоновые задания свой журнал пишут? Ну там запуск, завершение, статус... А то при перезагрузке сервера 1С этот журнал затирается, а хотелось бы его сохранить...
38. Душелов 4018 15.01.09 11:13 Сейчас в теме
(11) В журнал регистрации вроде как.
39. Fuego 462 15.01.09 11:24 Сейчас в теме
(11) в журнале регистрации всё пишется. Отбор по метаданным сделай по этому заданию, и увидишь и "запуск" и "успешное/аварийное" завершение. И после перезагрузки сервера журнал не удалется.
40. coder1cv8 3470 15.01.09 11:26 Сейчас в теме
(12) Да ладно! а куда ж эти записи после перезагрузки деваются?...
И вообще у меня в ЖР только ошибки фиксируются. Я имею ввиду список который получается методом ФоновыеЗадания.ПолучитьФоновыеЗадания(), до перезагрузки он есть, а после нет.
41. Fuego 462 15.01.09 11:26 Сейчас в теме
(10) а как проверить клиент это запустил на сервере, или фоновое задание? Если партионный учёт не будет ругаться сразу клиенту, то это мне боком вылезет потом.
42. coder1cv8 3470 15.01.09 11:29 Сейчас в теме
(13) А если в ЖР "регистрировать ошибки" установлено? "Журнал" последних запущенных фоновых заданий всё-равно ведь где-то хранится, даже если вообще отключить ЖР.
43. Fuego 462 15.01.09 11:32 Сейчас в теме
Это временные файлы агента на сервере. Если хочешь сохранять, поключайся через COM к агенту и сохраняй сколько влезет (на диск :)) )
44. Душелов 4018 15.01.09 11:34 Сейчас в теме
(15) Я думаю, по активному пользователю можно.
45. Fuego 462 15.01.09 11:38 Сейчас в теме
(18) Точно!
Ежели ПустаяСтрока(ТекущийПользователь().Имя) Тогда
   ПишиВЛог();
Иначе
   Сообщить();
КонецЕжели;
46. Fuego 462 16.01.09 09:59 Сейчас в теме
Так и сделал. Отлично работает! )

Процедура СообщитьПользователю(СтрокаСообщения, СтатусСообщенияПользователю = Неопределено) Экспорт
	
	Если СтатусСообщенияПользователю = Неопределено Тогда
		СтатусСообщенияПользователю = СтатусСообщения.Обычное;
	КонецЕсли;
	
	Попытка
		Если ПустаяСтрока(ПользователиИнформационнойБазы.ТекущийПользователь().Имя) Тогда
			ЗаписатьЛогСообщенийФоновыхЗаданий(СтрокаСообщения, СтатусСообщенияПользователю);
		Иначе
			Сообщить(СтрокаСообщения, СтатусСообщенияПользователю);
		КонецЕсли;
	Исключение
		ЗаписьЖурналаРегистрации(ОписаниеОшибки(), УровеньЖурналаРегистрации.Ошибка);
	КонецПопытки;
	
КонецПроцедуры

Процедура ЗаписатьЛогСообщенийФоновыхЗаданий(СтрокаСообщения, СтатусСообщенияПользователю) Экспорт
	МЗ = РегистрыСведений.ЛогСообщенийФоновыхЗаданий.СоздатьМенеджерЗаписи();
	МЗ.Период = ТекущаяДата();
	Если СтатусСообщенияПользователю = СтатусСообщения.Важное Тогда
		МЗ.Статус = "!!";
	ИначеЕсли СтатусСообщенияПользователю = СтатусСообщения.Внимание Тогда
		МЗ.Статус = "!";
	ИначеЕсли СтатусСообщенияПользователю = СтатусСообщения.Информация Тогда
		МЗ.Статус = "i";
	ИначеЕсли СтатусСообщенияПользователю = СтатусСообщения.Обычное Тогда
		МЗ.Статус = ">";
	ИначеЕсли СтатусСообщенияПользователю = СтатусСообщения.ОченьВажное Тогда
		МЗ.Статус = "!!!";
	КонецЕсли;
	МЗ.Сообщение = СтрокаСообщения;
	МЗ.Записать();
КонецПроцедуры
Показать
47. Душелов 4018 16.01.09 10:01 Сейчас в теме
Попытку Исключение я бы убрал.
48. Fuego 462 16.01.09 10:25 Сейчас в теме
Я это поставил на всякий случай ) уже убрал.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот