Вход | Регистрация
 

Сообщения пользователю из процедур НаСервере

Сообщения пользователю из процедур НаСервере
Я
   Kongo2019
 
06.07.21 - 08:12
Доброго
Читаю умный ИТС что совсем меня они запутали.
Вариантов больно много. Что сейчас скажем так есть бест-практик?
Сообщения пользователю из процедур НаСервере.
Пусть будет классический пример.
УФ конечно же. Общий модуль. Некоторая процедура с директивой НаСервере.
Процедура проверяет отаток.
То бишь она вызывается в документе ПриПроведении, ей выгружается табличная часть дока, и она в ответ либо все ок, либо вываливает на пользователя, где чего не хватает.
Вот и вопрос, а где и когда сообщать об об этом пользователю?
   Вафель
 
1 - 06.07.21 - 08:13
Сообщить прекрасно работает на сервере
   Вафель
 
2 - 06.07.21 - 08:13
Когда управление вернется на клиент, то выведутся все накопленные сообщения
   Kongo2019
 
3 - 06.07.21 - 08:14
(1) Работает, но сообщить типа теперь некошерно использовать.
   Franchiser
 
4 - 06.07.21 - 08:14
Фз
   Cyberhawk
 
5 - 06.07.21 - 08:15
(3) Если не хочешь Сообщить(), то использую СообщениеПользователю
   Kongo2019
 
6 - 06.07.21 - 08:17
(5) СообщениеПользователю - это уже из БСП же?
   Guk
 
7 - 06.07.21 - 08:18
(6) нет...
   Вафель
 
8 - 06.07.21 - 08:19
(3) кто сказал? Не верь ему
   Почему 1С
 
9 - 06.07.21 - 08:22
(6) Нет, но в БСП тоже есть тюненый вариант ОбщегоНазначенияКлиентСервер.СообщитьПользователю
   Kongo2019
 
10 - 06.07.21 - 08:23
(8) Для вывода сообщений пользователю во всех случаях следует использовать объект СообщениеПользователю, даже когда сообщение не «привязывается» к некоторому элементу управления формы. Метод Сообщить применять не следует.
В ИТС написано вот.
   acht
 
11 - 06.07.21 - 08:23
(8) Не выпендривайся.
https://its.1c.ru/db/v8std/content/418/hdoc
   Вафель
 
12 - 06.07.21 - 08:23
(9) это для любителей писать код в 1 строку
   Kongo2019
 
13 - 06.07.21 - 08:23
(9) А точно.
При использовании в конфигурации Библиотеки стандартных подсистем рекомендуется использовать процедуру СообщитьПользователю общего модуля ОбщегоНазначения или ОбщегоНазначенияКлиент, которая работает с объектом СообщениеПользователю.
   Вафель
 
14 - 06.07.21 - 08:24
Ух ты, не знал.
А кто-нибудь может рассказать в чем разница методов?
   ДенисЧ
 
15 - 06.07.21 - 08:25
(14) Каких?
   Вафель
 
16 - 06.07.21 - 08:26
Сообщить и сообщение пользователю без привязки данных.
Хорошо бы конечно на внутреннем уровне, чтобы понимать почему нельзя
   ДенисЧ
 
17 - 06.07.21 - 08:26
(16) А разницу между жигулём-копейкой и бэхой 1993года тебе не рассказать?
   ДенисЧ
 
18 - 06.07.21 - 08:27
А что, обе ездят, обе ломаются... Обе даже бензин жрут...
   acht
 
19 - 06.07.21 - 08:31
(16) Сходи на базар... запишись вот сюда https://uc1.1c.ru/course/razrabotka-interfejsa-prikladnogo-resheniya-v-1s-predpriyatii-8-3/#trainer и насилуй ему мозг
   Вафель
 
20 - 06.07.21 - 08:32
Странно что внутри один метод не ссылается на другой
   Вафель
 
21 - 06.07.21 - 08:33
(19) скорее нужно идти на семинар и разработчиков пытать
   acht
 
22 - 06.07.21 - 08:34
(21) Это в очередь записываться надо
   acht
 
23 - 06.07.21 - 08:35
(16) > Хорошо бы конечно на внутреннем уровне
А потом внутренняя реализация поменяется и какой-нибудь Вафель2 начнет задавать дурацкие вопросы заново.
   Вафель
 
24 - 06.07.21 - 08:38
Ну раз они пишут вместо этот нужно вот это, то хотелось бы знать причину
   ДенисЧ
 
25 - 06.07.21 - 09:17
(24) Может, ты ещё хочешь знать, почему конфигуратор в .19 вылетает с ошибками? ИЛи почему ,1208 может сломать базу?
А может ты хочешь знать, кто убил Кеннеди??
   fisher
 
26 - 06.07.21 - 09:17
В описании Сообщить() уже давно убрали пометку о том, что его использовать не рекомендуется. ИМХО, его просто допилили до урезанной версии сообщения пользователя, использующей те же механизмы.
То есть с точки зрения платформы его можно смело использовать, КМК. Но так как в типовых везде вывод делается через БСП, то мне ближе точка зрения что Сообщить() удобно использовать для временных отладочных сообщений. Чтобы потом легко их находить и выкашивать.
   Вафель
 
27 - 06.07.21 - 09:21
но Сообщить то куда проще написать чем ОбщегоНазначенияКлиентСервер.СообщитьПользователю
   fisher
 
28 - 06.07.21 - 09:22
(27) Да. Поэтому для отладочных и удобно. А для продакшна нужно держаться в общей канве страданий.
   fisher
 
29 - 06.07.21 - 09:26
Когда все единообразно - это дает свои плюшки. А то понадобится тебе привязаться к элементу - и вот у тебя уже зоопарк.
   Вафель
 
30 - 06.07.21 - 09:36
(29) в этом и есть смысл написания программ. когда нужно разный результат набираешь разные буковки
 
 
   fisher
 
31 - 06.07.21 - 09:39
(30) А путь дзен-программиста - не плодить сущности без необходимости.
   ДенисЧ
 
32 - 06.07.21 - 09:41
(31) Давно католический монах Оккам перешёл в буддизм? ))
   ildary
 
33 - 06.07.21 - 09:45
(32) а как ему показали конфигуратор 1С, так он сразу и перешёл.
   ДенисЧ
 
34 - 06.07.21 - 09:46
(33) Если бы ему показали _это_ - он давно уже был бы почётным пациентом кащенки...
   kubik_live
 
35 - 06.07.21 - 10:06
(27)
Из УТ11
// Устарела. Следует использовать ОбщегоНазначенияКлиент.СообщитьПользователю или ОбщегоНазначения.СообщитьПользователю
   oslokot
 
36 - 06.07.21 - 10:25
Лучше расскажите, как Сообщить() выполненная на сервере, волшебным образом показывает результат на клиенте
   Новиков
 
37 - 06.07.21 - 10:28
(35) хорошая ремарка. На практике я в эту субботу столкнулся не совсем с очевидным поведением механизма сообщений. В модуле обработки в ут, он почему-то отказывался работать.
   Вафель
 
38 - 06.07.21 - 10:31
(36) как я понимаю есть стек сообщений. и сообщить на сервере просто кладет это в стек.
как процедура закончится все это выведется на экран.
так же можно отдельно читать этот стек: ПрочитатьСообщенияПользователю
   acht
 
39 - 06.07.21 - 10:50
(38) > стек
Очередь.
Это очень хорошо объясняет, почему 1Сники не программисты, а конфигурасты.
   Fragster
 
40 - 06.07.21 - 10:52
больше всего бесит, что в УФ не скопировать часть сообщения, а еще все сообщения при закрытии формы теряются
   DrZombi
 
41 - 06.07.21 - 10:57
(1) Не всегда и не везде.
   DrZombi
 
42 - 06.07.21 - 11:00
(24) Сообщить не во всех случаях выводит сообщения :)
Вы не забывайте, что ваш Рабочий сервер работает без отладки...
   DrZombi
 
43 - 06.07.21 - 11:01
(25) ДА, пожалуй про сломать базу, а потом, что надо, что бы ее починить :)
   Вафель
 
44 - 06.07.21 - 11:01
(42) примеры в студию
   DrZombi
 
45 - 06.07.21 - 11:02
(27) Сообщить пользователю позволяет еще:
1. иметь ссылку на элемент формы.
2. Выводить сообщение в том окне УФ, которое вы укажите ;)
   acht
 
46 - 06.07.21 - 11:02
(44) Сообщить(Неопределено)
   DrZombi
 
47 - 06.07.21 - 11:03
(44) Вам можно, хоть трусы на голову одевать :)
   Вафель
 
48 - 06.07.21 - 11:03
(45) а как окно задать?
   DrZombi
 
49 - 06.07.21 - 11:04
(48) приехали :)))
вот так

СообщениеПользователю (UserMessage)
ИдентификаторНазначения (TargetID)
Использование:
Чтение и запись.
Описание:
Тип: УникальныйИдентификатор.
Позволяет точно указать, к какой форме должно быть "привязано" сообщение. Если сообщение не имеет идентификатора назначения, тогда оно выводится и привязывается к активному окну.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
   DrZombi
 
50 - 06.07.21 - 11:05
+ БСП так же не позволяет вам указать, форму... почему-то они это не включили в свои поделки :)
   fisher
 
51 - 06.07.21 - 11:06
(49) Одна фигня - из модуля объекта это не работает.
   DrZombi
 
52 - 06.07.21 - 11:07
(51) Почему и счего бы то было?
Вы в свойствах ГУИД формы передайте, и выводите....
   DrZombi
 
53 - 06.07.21 - 11:08
А так, это все пишет в активное окно, и порой которого нет еще на форме и которое и не откроется :)
   fisher
 
54 - 06.07.21 - 11:09
(52) > Почему и счего бы то было?
А это не ко мне вопрос, а к разрабам платформы.
В серверном контексте формы работает, а из модуля проведения (например) - игнорируется.
   DrZombi
 
55 - 06.07.21 - 11:09
(54) Надо будет проверить :)
   fisher
 
56 - 06.07.21 - 11:11
Другими словами, если захочется выводить сообщения из проведения таким образом, чтобы они выводились пользователю при проведении по ПКМ из формы списка - на тобі дулю, купи собі трактора.
   fisher
 
57 - 06.07.21 - 11:13
Не, вру. В этом случае вроде как раз выведет в активное окно. Не получится при интерактивном проведении из формы, потому что активная форма схлопнется вместе с сообщениями, а переадресовать их не получится.
   Cyberhawk
 
58 - 06.07.21 - 11:13
(56) Если в форме списка, то они и так всегда выводятся, ничего для этого дополнительно делать не нужно
   Cyberhawk
 
59 - 06.07.21 - 11:14
(57) Переадресовать почему не получится? Получаешь в ПослеЗаписиНаСервере или в ПослеЗаписи все накопленное и выводишь с запомненным ранее указателем на нужную форму
   fisher
 
60 - 06.07.21 - 11:17
(59) Хм... Звучит логично.
 
 
   fisher
 
61 - 06.07.21 - 11:18
Так даже более расово верно.
   fisher
 
62 - 06.07.21 - 11:23
(59) Если этот вариант рабочий (а звучит как потенциально рабочий) то его можно вообще хоть в БСП засовывать для всех доков. Чтобы если док открыт из формы списка и форма закрывается в результате успешного проведения, то все невыведенные еще сообщения переадресовывать в форму списка.
   Cyberhawk
 
63 - 06.07.21 - 11:24
(62) А где-то в типовых используются сообщения, которые выводятся и вместе с тем не влекут отказ проведения? Зачем они тогда?
   fisher
 
64 - 06.07.21 - 11:26
(63) Информационные. Почему нет? Если не используются, значит и выводить нечего будет. А иначе глупость какая-то получается - "у нас есть сообщение для вашего мальчика, только вот прочитать он его не успеет, потому что у него реакция не та".
   Cyberhawk
 
65 - 06.07.21 - 13:33
(64) Если пользователь нажимает провести и закрыть, то после успешного закрытия формы ему уже пофиг на какие-то там сообщения обычно
   Новиков
 
66 - 06.07.21 - 14:04
(65) нет не пофик, просто бескостыльно после закрытия формы сообщения не вывести.
   Вафель
 
67 - 06.07.21 - 14:06
(65) если это мартышка, которая жмет ок на кассе, то да там ничего не надо.
но бывает разный уровень пользователей
   ДенисЧ
 
68 - 06.07.21 - 14:38
(67) Если уровень программиста позволяет ему выводить важные сообщения в окно сообщений - значит так таким пользователям и надо.
   Cyberhawk
 
69 - 06.07.21 - 16:45
(66) Так вроде и не нужно
   fisher
 
70 - 06.07.21 - 16:49
(69) Скажи наркотикам "иногда".


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.