Имя: Пароль:
1C
 
Сообщить при провести и закрыть
0 pumba055
 
15.06.21
15:59
Коллеги, задача такая.
Есть два реквизита документа, при проведении документа проверять что один больше другого, если больше, то выводить сообщение пользователю.
Соответственно в самой обработке проведения я не делаю сообщить, а то вдруг групповое проведение документов как говориться)
Мне надо при нажатии кнопки записать и закрыть - только при проведении когда запускаю его с формы проверить два числа и вывести сообщение пользователю.
1 Irbis
 
15.06.21
16:06
ПередЗаписью РежимЗаписи.Проведение
2 ГдеСобака Зарыта
 
15.06.21
16:07
Зачем при проведении то? Сделай декорацию надпись, при изменении реквизитов обновляй. Пользователь в любой момент времени видит больше у него там или меньше
3 pumba055
 
15.06.21
16:08
соответственно при записи я выведу это сообщение, а потом в форме в которой вывелось сообщение оно закроется) и пользователь ничего не увидит
4 RomanYS
 
15.06.21
16:08
(1) ОбработкаПроверкиЗаполнения
5 pumba055
 
15.06.21
16:09
Одно сравниваемое значение в регистре храниться, другое в документе
6 RomanYS
 
15.06.21
16:10
(5) без разницы
(3) оно не закроется, если будет ошибка проверки (Отказ)
7 Irbis
 
15.06.21
16:10
(4) А не факт, что при любой записи нужно проверять. Но можно и так
8 pumba055
 
15.06.21
16:14
Не, не, никаких отказов не нужно! Нужно просто сообщение
9 pumba055
 
15.06.21
16:17
ОбработкаПроверкиЗаполнения еще раньше чем Проведение вызывается - т.е. еще хуже((, я при записи или проведении вывела сообщение на форму, а потом при закрытии этой формы он закрывает окно с моим сообщением
10 Filin
 
15.06.21
16:19
Ну выводи сообщение в другую форму.  Обычно в форму - владельца.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.ИдентификаторНазначения = Форма.УникальныйИдентификатор;
11 pumba055
 
15.06.21
16:22
как в обработке проведения узнать форму владельца или просто у формы узнать ее форму владельца
12 arsik
 
гуру
15.06.21
16:23
НУ в привяжись к событию в форме документа "ПослеЗаписиНаСервере".
13 pumba055
 
15.06.21
16:26
а в форме ПослеЗаписиНаСервере как мне понять что это проведение - что мне нужно или запись - что мне не нужно
14 arsik
 
гуру
15.06.21
16:27
Там же параметры есть
15 arsik
 
гуру
15.06.21
16:28
+(14) Да и просто проверь. Если документ проведен, то тогда это проведение (бывают конечно исключения, но ими можно пренебречь).
16 _Дайвер_
 
15.06.21
16:32
Я бы пересмотрел вообще решение, после проведения сообщения выводить что одно больше другого, ИМХО
17 pumba055
 
15.06.21
16:34
ну так хотят для информации)
18 _Дайвер_
 
15.06.21
16:34
А вообще в модуле формы есть ПередЗакрытием и ПриЗакрытии , туда копай
19 _Дайвер_
 
15.06.21
16:35
Тогда сообщение будет выводиться уже после проведения, в момент закрытия
20 _Дайвер_
 
15.06.21
16:39
Или как в (12) , там есть параметры ПараметрыЗаписи в них можешь понять что это проведение
21 pumba055
 
15.06.21
16:39
т.е получается ПослеЗаписиНаСервере мне надо сравнить два значения, если есть разница то свои сообщения запихнуть в какую-то промежуточную константу и потом ПриЗакрытии формы выводить эти сообщения
22 Filin
 
15.06.21
16:40
(11) Это зависит от конкретного случая. В общем случае это примерно так:
ЭтаФорма.ВладелецФормы.Родитель
23 pumba055
 
15.06.21
16:43
а еще вопрос - есть ПолучитьСообщенияПользователю() а каким способом они набираются? т.е. как их насоздавать чтобы потом получить
24 _Дайвер_
 
15.06.21
16:45
(21) Нет, запись в регистре у тебя у же есть, ссылка на проведенный документ тоже со значением, тебе остается только получить их и сравнить. Никакие константы тебе не нужны. Можно это сделать в одном месте, ничего передавать не надо.
25 _Дайвер_
 
15.06.21
16:46
(23)
Глобальный контекст (Global context)
ПолучитьСообщенияПользователю (GetUserMessages)
Синтаксис:
ПолучитьСообщенияПользователю(<УдалятьПолученные>)
Параметры:
<УдалятьПолученные> (необязательный)
Тип: Булево.
Признак необходимости удаления полученных сообщений из списка.
Истина - удалять.
Значение по умолчанию: Ложь.
Возвращаемое значение:
Тип: ФиксированныйМассив.
Описание:
Получает массив объектов СообщениеПользователю, которые еще не были выведены пользователю.
Такое может происходить при работе в регламентных заданиях, на стороне сервера или в Web-сервисах.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
При удалении сообщений с помощью данного метода не удаляются сообщения, полученные с помощью метода ПолучитьСообщенияПользователю фонового задания.
См. также:
СообщениеПользователю
Глобальный контекст, метод Сообщить
Использование в версии:
Доступен, начиная с версии 8.2.
26 pumba055
 
15.06.21
16:58
чтобы ПолучитьСообщенияПользователю их надо насоздавать и где тут об этом написано не вижу
27 pumba055
 
15.06.21
16:59
есть пример насоздвать сообщений, а потом их сразу все получить ПолучитьСообщенияПользователю()
28 _Дайвер_
 
15.06.21
17:05
(27) Описание:
Получает массив объектов СообщениеПользователю, которые еще не были выведены пользователю.
Такое может происходить при работе в регламентных заданиях, на стороне сервера или в Web-сервисах.
29 _Дайвер_
 
15.06.21
17:11
(27) Тебе это не нужно, используй вообще ПоказатьОповещениеПользователя()
30 pumba055
 
15.06.21
17:12
а можно примерчик
31 pumba055
 
15.06.21
17:14
в студию)
32 _Дайвер_
 
15.06.21
17:14
(30) Сколько тебе платят?)
33 pumba055
 
15.06.21
17:23
За поцелуй!
34 pumba055
 
15.06.21
17:26
Чмоки чмоки)
35 pumba055
 
15.06.21
17:44
Процедура ПослеЗаписи(ПараметрыЗаписи) получается что рановато выводить сообщение в ФормуРодитель, на этом этапе я еще не знаю о том, закрывается после проведения форма или нет, без промежуточной переменной получается никак?
36 pumba055
 
15.06.21
19:11
Не получается получить все сообщения, подскажите что не правильно    

&НаСервере
Процедура Команда1НаСервере()

    МассивСообщений = Новый Массив;
    
    Сообщение1 = Новый СообщениеПользователю();
        Сообщение1.Текст = "111";     
    МассивСообщений.Добавить(Сообщение1);
        
    Сообщение2 = Новый СообщениеПользователю();
        Сообщение2.Текст = "222";      
    МассивСообщений.Добавить(Сообщение2);
    
    ВсегоСообщений = ПолучитьСообщенияПользователю();

КонецПроцедуры
37 Mort
 
15.06.21
21:47
(0) Пользователи не читают сообщения. Программируйте с этой точки зрения.
38 Mort
 
15.06.21
21:49
Если документ нельзя провести - сообщите техподу ясное послание как отморозить пользователя. Если можно - ничего не говорите пользователю. Всё равно эта обезьяна ничего не запомнит и вам не скажет.
39 Mort
 
15.06.21
21:51
Если кого-то возмутило моё предыдущее сообщение:
Если писать программу для идиотов, только идиоты будут её пользоваться. Если пользователь понимает что нужно для проведения документа - он это сделает. А с идиотом Вы не договоритесь. Любыми сообщениями.
40 ДедМорроз
 
15.06.21
22:00
Есть такое понятие как Уведомление.
Оно всплывает и какое-то время висит,еще можно сделать,чтобы висел колокольчик,чтобы пользователь гарантированно отреагировал.
Здесь оно в самый раз.