Имя: Пароль:
1C
 
Сообщения пользователю из процедур НаСервере
0 Kongo2019
 
06.07.21
08:12
Доброго
Читаю умный ИТС что совсем меня они запутали.
Вариантов больно много. Что сейчас скажем так есть бест-практик?
Сообщения пользователю из процедур НаСервере.
Пусть будет классический пример.
УФ конечно же. Общий модуль. Некоторая процедура с директивой НаСервере.
Процедура проверяет отаток.
То бишь она вызывается в документе ПриПроведении, ей выгружается табличная часть дока, и она в ответ либо все ок, либо вываливает на пользователя, где чего не хватает.
Вот и вопрос, а где и когда сообщать об об этом пользователю?
1 Вафель
 
06.07.21
08:13
Сообщить прекрасно работает на сервере
2 Вафель
 
06.07.21
08:13
Когда управление вернется на клиент, то выведутся все накопленные сообщения
3 Kongo2019
 
06.07.21
08:14
(1) Работает, но сообщить типа теперь некошерно использовать.
4 Franchiser
 
гуру
06.07.21
08:14
Фз
5 Cyberhawk
 
06.07.21
08:15
(3) Если не хочешь Сообщить(), то использую СообщениеПользователю
6 Kongo2019
 
06.07.21
08:17
(5) СообщениеПользователю - это уже из БСП же?
7 Guk
 
06.07.21
08:18
(6) нет...
8 Вафель
 
06.07.21
08:19
(3) кто сказал? Не верь ему
9 Почему 1С
 
06.07.21
08:22
(6) Нет, но в БСП тоже есть тюненый вариант ОбщегоНазначенияКлиентСервер.СообщитьПользователю
10 Kongo2019
 
06.07.21
08:23
(8) Для вывода сообщений пользователю во всех случаях следует использовать объект СообщениеПользователю, даже когда сообщение не «привязывается» к некоторому элементу управления формы. Метод Сообщить применять не следует.
В ИТС написано вот.
11 acht
 
06.07.21
08:23
(8) Не выпендривайся.
https://its.1c.ru/db/v8std/content/418/hdoc
12 Вафель
 
06.07.21
08:23
(9) это для любителей писать код в 1 строку
13 Kongo2019
 
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
А что, обе ездят, обе ломаются... Обе даже бензин жрут...
19 acht
 
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) скорее нужно идти на семинар и разработчиков пытать
22 acht
 
06.07.21
08:34
(21) Это в очередь записываться надо
23 acht
 
06.07.21
08:35
(16) > Хорошо бы конечно на внутреннем уровне
А потом внутренняя реализация поменяется и какой-нибудь Вафель2 начнет задавать дурацкие вопросы заново.
24 Вафель
 
06.07.21
08:38
Ну раз они пишут вместо этот нужно вот это, то хотелось бы знать причину
25 ДенисЧ
 
06.07.21
09:17
(24) Может, ты ещё хочешь знать, почему конфигуратор в .19 вылетает с ошибками? ИЛи почему ,1208 может сломать базу?
А может ты хочешь знать, кто убил Кеннеди??
26 fisher
 
06.07.21
09:17
В описании Сообщить() уже давно убрали пометку о том, что его использовать не рекомендуется. ИМХО, его просто допилили до урезанной версии сообщения пользователя, использующей те же механизмы.
То есть с точки зрения платформы его можно смело использовать, КМК. Но так как в типовых везде вывод делается через БСП, то мне ближе точка зрения что Сообщить() удобно использовать для временных отладочных сообщений. Чтобы потом легко их находить и выкашивать.
27 Вафель
 
06.07.21
09:21
но Сообщить то куда проще написать чем ОбщегоНазначенияКлиентСервер.СообщитьПользователю
28 fisher
 
06.07.21
09:22
(27) Да. Поэтому для отладочных и удобно. А для продакшна нужно держаться в общей канве страданий.
29 fisher
 
06.07.21
09:26
Когда все единообразно - это дает свои плюшки. А то понадобится тебе привязаться к элементу - и вот у тебя уже зоопарк.
30 Вафель
 
06.07.21
09:36
(29) в этом и есть смысл написания программ. когда нужно разный результат набираешь разные буковки
31 fisher
 
06.07.21
09:39
(30) А путь дзен-программиста - не плодить сущности без необходимости.
32 ДенисЧ
 
06.07.21
09:41
(31) Давно католический монах Оккам перешёл в буддизм? ))
33 ildary
 
06.07.21
09:45
(32) а как ему показали конфигуратор 1С, так он сразу и перешёл.
34 ДенисЧ
 
06.07.21
09:46
(33) Если бы ему показали _это_ - он давно уже был бы почётным пациентом кащенки...
35 kubik_live
 
06.07.21
10:06
(27)
Из УТ11

// Устарела. Следует использовать ОбщегоНазначенияКлиент.СообщитьПользователю или ОбщегоНазначения.СообщитьПользователю
36 oslokot
 
06.07.21
10:25
Лучше расскажите, как Сообщить() выполненная на сервере, волшебным образом показывает результат на клиенте
37 Новиков
 
06.07.21
10:28
(35) хорошая ремарка. На практике я в эту субботу столкнулся не совсем с очевидным поведением механизма сообщений. В модуле обработки в ут, он почему-то отказывался работать.
38 Вафель
 
06.07.21
10:31
(36) как я понимаю есть стек сообщений. и сообщить на сервере просто кладет это в стек.
как процедура закончится все это выведется на экран.
так же можно отдельно читать этот стек: ПрочитатьСообщенияПользователю
39 acht
 
06.07.21
10:50
(38) > стек
Очередь.
Это очень хорошо объясняет, почему 1Сники не программисты, а конфигурасты.
40 Fragster
 
гуру
06.07.21
10:52
больше всего бесит, что в УФ не скопировать часть сообщения, а еще все сообщения при закрытии формы теряются
41 DrZombi
 
гуру
06.07.21
10:57
(1) Не всегда и не везде.
42 DrZombi
 
гуру
06.07.21
11:00
(24) Сообщить не во всех случаях выводит сообщения :)
Вы не забывайте, что ваш Рабочий сервер работает без отладки...
43 DrZombi
 
гуру
06.07.21
11:01
(25) ДА, пожалуй про сломать базу, а потом, что надо, что бы ее починить :)
44 Вафель
 
06.07.21
11:01
(42) примеры в студию
45 DrZombi
 
гуру
06.07.21
11:02
(27) Сообщить пользователю позволяет еще:
1. иметь ссылку на элемент формы.
2. Выводить сообщение в том окне УФ, которое вы укажите ;)
46 acht
 
06.07.21
11:02
(44) Сообщить(Неопределено)
47 DrZombi
 
гуру
06.07.21
11:03
(44) Вам можно, хоть трусы на голову одевать :)
48 Вафель
 
06.07.21
11:03
(45) а как окно задать?
49 DrZombi
 
гуру
06.07.21
11:04
(48) приехали :)))

вот так

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