|
Не выводится сообщение в управляемом приложении | ☑ | ||
---|---|---|---|---|
0
mashunka
25.12.13
✎
13:56
|
Управляемое приложение.
Имеется код, если упрощенно, то такой: В модуле формы &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) Если БроньПеренесена(Параметр1....ПараметрN) Тогда ОбщиеДействия.СообщениеПользователю("Бронь перенесена"); // Вызов 1 КонецЕсли; КонецПроцедуры ОбщиеДействия.СообщениеПользователю - там создается объект "СообщениеПользователю" и, собственно, сообщается. Процедура скопирована из типовых конфигураций, т.е. интереса не представляет. БроньПеренесена - функция в серверном общем модуле, там что-то вроде: &НаСервере Функция БроньПеренесена(Параметр1....ПараметрN) // Сначала запрос, который получает документ Бронь и данные для нег (интереса не представляет) // Если запрос не нашел то, что мне нужно, возвращается ЛОЖЬ и следует выход из функции. ... Пока ВыборкаИзЗапроса.Следующий() Цикл ДокументОбъект = Выборка.Документ.ПолучитьОбъект(); // Документ ТОГО же вида, что и тот, из формы которого вызвана функция, но не тот же самый. // Действия по изменению документа ДокументОбъект.Записать(); ОбщиеДействия.СообщениеПользователю("Бронь перенесена"); // Вызов 2 КонецЦикла; Возврат Истина; КонецФункции Ситуация такая: если Функция БроньПеренесена возвращает истину, то ни одно сообщение из двух не выводится (я специально их в двух местах воткнула для проверки, хотя раньше был только Вызов 2)! Если же Функция БроньПеренесена прерывается до того, как обходит выборку из запроса, и возвращает ЛОЖЬ, то сообщение из модуля формы (вызов 1) выводится! То есть получается, когда выполняются действия по получению и записи какого-то другого документа данного вида, то программ теряет связь с открытой формой... Или что-то в этом роде. Если сообщение заменить на предупреждение, то Предупреждение появляется. Но ситуация требует, чтобы было именно фоновое не напрягающее сообщение. Кто-нибудь сталкивался с тем, что сообщения выводятся в никуда? И как этого избежать? |
|||
1
Wobland
25.12.13
✎
14:04
|
показать оповещение? всё не читал
|
|||
2
lavryshev
25.12.13
✎
14:11
|
Сообщение выводится на активную форму. Если после вывода сообщения форма закрывается, то пользователь его и не увидит.
|
|||
3
mashunka
25.12.13
✎
14:15
|
(2) в том-то и дело, что форма остается открытой, но сообщение не появляется. А если не делать действий, которые делает вызываемая функция, то появляется нормально. Вот я не могу понять, что такого она там делает, что программа перестает видеть открытую форму?
|
|||
4
mashunka
25.12.13
✎
14:15
|
(1) В принципе, очень прилично выглядит. Спасибо, это выход!
|
|||
5
Sabbath
25.12.13
✎
14:18
|
(0)
БроньПеренесена - функция в серверном общем модуле, там что-то вроде: &НаСервере Функция БроньПеренесена(Параметр1....ПараметрN) что-то тут не то) &НаСервере в общем модуле? |
|||
6
lavryshev
25.12.13
✎
14:18
|
(4) Показать оповещение на сервере не работает
|
|||
7
mashunka
25.12.13
✎
14:19
|
(5) нет, конечно, я сейчас написала, чтоб в глаза бросалось, что это серверная процедура
|
|||
8
Sabbath
25.12.13
✎
14:19
|
> если Функция БроньПеренесена возвращает истину
судя по коду там всегда истина возвращается |
|||
9
lavryshev
25.12.13
✎
14:19
|
(5) если модуль и клиентский и серверный, то вполне
|
|||
10
mashunka
25.12.13
✎
14:20
|
(6) я вижу. Я его в форме вызову, ничего страшного!
|
|||
11
Sabbath
25.12.13
✎
14:21
|
(9) клиентский и серверный модуль отрабатывает там, откуда вызвано
|
|||
12
Sabbath
25.12.13
✎
14:22
|
+(11) а, я не про то)
|
|||
13
Sabbath
25.12.13
✎
14:22
|
+(12) хотя нет, все по теме
|
|||
14
mashunka
25.12.13
✎
14:24
|
(8) смотрите комментарий в начале функции - там сказано, когда возвращается ЛОЖЬ. Да это неважно сейчас, там на самом деле вообще по-другому, только писать было долго. Смысл в том, что если из функции выйти, не сделав куска про ПолучитьОбъект() и Записать(), то сообщения выводятся нормально! Если объект получался и записывался - то перестают.
|
|||
15
Sabbath
25.12.13
✎
14:26
|
(14) а модуль точно не клиет и сервер?
|
|||
16
mashunka
25.12.13
✎
14:27
|
(9), (15), модуль серверный, в оригинале нету текста &НаСервере. Простите, что ввела вас в заблуждение, хотела наоборот для наглядности показать, что это - на сервере! :)
|
|||
17
Sabbath
25.12.13
✎
14:34
|
(16) перечитал текст, тогда не понял, как предупреждение отрабатывает, если оно не доступно на сервере
|
|||
18
Sabbath
25.12.13
✎
14:34
|
Вообще этот модуль в типовых КлиентСервер обычно
|
|||
19
Sabbath
25.12.13
✎
14:39
|
СообщениеПользователю
Описание: Предназначен для хранения параметров сообщения, которые необходимо вывести пользователю. Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), Короче ставь галку клиент и сервер, а записывай доумент отдельно на сервере) |
|||
20
mashunka
25.12.13
✎
14:39
|
(17) ОбщиеДействия и модуль, в котором расположена функция БроньПересена - это вообще-то два разных модуля... Вы вчитываетесь в ненужные детали.
Хотелось подробнее изложить, в результате одни вопросы, а не ответы. Если нет ничего по существу "пропадающих сообщений", то давайте считать тему закрытой - мне первым же ответом уже подсказали удовлетворительный выход из ситуации. |
|||
21
mashunka
25.12.13
✎
14:40
|
(19) - см (20)
|
|||
22
Sabbath
25.12.13
✎
14:42
|
(20) по существу пропадающих сообщений же есть:
"Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера" |
|||
23
Kvestin
25.12.13
✎
17:22
|
(22) Сегодня уже два вопроса про сообщения на стороне сервера. ;)
(0) Как 1С-ка связывает сообщения с формой при выводе их на сервере только ей и известно. Я вызывал сообщения на стороне сервера только в фоновом задании для передачи текущего состояния через ПолучитьСообщенияПользователю(). Что мешает в вашем случае обработать все что нужно на сервере и вернуть структуру с результатом. На клиенте обработать эту структуру и сообщить результат обработки? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |