Не могу вывести сообщение пользователю #776530


#0 by Opossum
Добрый день. Пытаюсь разобраться с 1с, решил написать простенькую конфигурацию. Сразу возникла такая проблема: есть документ "ОплатаШтрафа", в модуле идет обработкапроведения документа. Мне нужно в двух местах вывести информационное сообщение. Либо штраф начилнен и все хорошо, либо не за что начислять штраф и тоже все хорошо. Функция Сообщить работает только при отказах, Предупреждить не работает. Пишет какую-то ерунду. Если перед Предупредить пишу &НаКлиенте, выдается ошибка: неопознанный оператор. Как вывести тонкому клиенту информационное сообщение перед тем, как документ проведется? Код прилагаю:
#1 by Горогуля
>Функция Сообщить работает только при отказах это как?
#2 by Горогуля
за первые две строчик вообще надо руки отрубить
#3 by Opossum
Если Штраф>0 Тогда         Сообщить("У Вас есть несданная книга: " + НаименованиеНесданнойКниги + " . Вы не можете получить новую книгу. Сдайте книги и оплатите штраф: " + Штраф + " рублей.");         Отказ = Истина; Тогда сообщение выводится. Если режим проведения, сообщение не выходит
#4 by Горогуля
и это... никогда не меняй данные объекта при записи
#5 by Гипервизор
"Сообщить работает только при отказах" - да что вы говорите.. "Предупредить" - что-то новенькое.. "Если перед Предупредить пишу &НаКлиенте" - директивы компиляции не указывается внутри процедуры.
#6 by PiterPrg
Давно-давно, когда дискеты были большими, а программы маленькими (где-то в 2000) я осваивал 77 и написал конфу, в которой создавал/писал справочники в модуле проведения. :-) С тех пор никогда так больше не делал. :-) Убери табличную часть справочника. Создай регистр (можно регистр сведений периодический)
#7 by DrZombi
На сервере нет пользователей. Некому читать твои сообщения :)
#8 by Opossum
"и это... никогда не меняй данные объекта при записи" а как их менять? ""Предупредить" - что-то новенькое.." Предупреждение А внутри функции можно указать директиву выполнения?
#9 by Opossum
А если создать общий модуль, который будет выполняться на клиенте, написать процедуру вызова сообщений. То как к ней обратиться при проведении документа?
#10 by DrZombi
В модуле проведения вообще нечего никогда не используй в плане вывода модальных окон. Так же Сообщить на УФ из модуля не увидят, т.к. код выполняется на сервере 1С
#11 by PiterPrg
Ни как не меняй. Подумай, что произойдет, если перепроведут документ задним числом. Регистр остатков Книга/Читатель/КОличество
#12 by Горогуля
никак не менять. что юзер навводил - то пусть и будет
#13 by DrZombi
Дарю СообщениеПользователю (UserMessage) Свойства: ИдентификаторНазначения (TargetID) Методы: Конструкторы: По умолчанию Описание: Предназначен для хранения параметров сообщения, которые необходимо вывести пользователю. Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), можно получить накопленные сообщения методом ПолучитьСообщенияПользователю. В управляемых формах, в случае выполнения просмотра сообщения, выполняется следующий механизм обработки: Если у сообщения свойство КлючДанных заполнено и не совпадает с ключевым значением основного реквизита текущей формы (ссылкой объекта или ключом записи регистра сведений), то: открывается новая форма объекта, соответствующая значению свойства КлючДанных; если у сообщения свойство ПутьКДанным не заполнено, то в него проставляется имя основного реквизита открытой формы объекта; вызывается показ сообщения в только что открытой форме; выполняется перенос всех соответствующих сообщений из окна первой формы в новую форму (с таким же значением свойств КлючДанных, как у выбранного сообщения). При этом перенесенным сообщениям аналогичным образом проставляется свойство ПутьКДанным, если оно не установлено. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Пример: Процедура ДействиеСОбъектом(ОбъектДанных)     Текст = "ru = ""В строке 11 табличной части ""Номенклатура"" не хватает ";"      + " en = ""In line 11 of tabular section ""Nomenclature"" is missing "; См. также: Глобальный контекст, метод УстановитьСоответствиеОбъектаИРеквизитаФормы Глобальный контекст, метод ПолучитьСоответствиеОбъектаИРеквизитаФормы Глобальный контекст, метод ПолучитьСообщенияПользователю
#14 by Beretta
> Пишет какую-то ерунду О!
#15 by Nuobu
Так и пишет "Ошибка в модуле обработки в функции "ОрботкаПроведения". Вы там пытаетесь сделать какую-то ерунду - показать диалог на сервере, в то время, как в 1С запрещен вызов окон в серверных методах.".
#16 by Opossum
прочитал, что сообщениеПользователю выдается, когда управление переходит на клиента. Вот код: КонецПроцедуры Вроде все по мануалам, но сообщение не выводится. Как мне ередать управление клиенту?
#17 by Горогуля
ничего, что проведению совсем поровну на клиента?
#18 by lera01
Делай в обработчике ПриЗаписи или еще каком обработчике формы, а все нужные проверки делай перед проведением.
#19 by PiterPrg
У тебя случаем не закрывается документ после проведения? :-) Если да - то с ним просто закрывается окно с сообщением. А от этой дряни все-же откажись >>ЧитательВСправочникеОбъект.Записать; Создай 2 документа на одного читателя и проведи их несколько раз в разной последовательности. Поле каждого раза смотри Книги на руках.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С