Имя: Пароль:
1C
 
Сообщить в ПриСозданииНаСервере()
0 SeiOkami
 
15.12.20
11:25
Такой вопрос. У меня документ вводится на основании другого. При создании на сервере происходит доп. проверка и вывод сообщения. Но это сообщение в результате выводится не на новой форме, а в той, из которой её вызвали.
Привязка ни к объекту ни к форме ничего не даёт. Даже использовал ИдентификаторНазначения в объекте СообщениеПользователю. Всё равно текст выводится в том окне, из которой начали ввод на основании.
1 ДенисЧ
 
15.12.20
11:27
Это нормально
2 Cyberhawk
 
15.12.20
11:27
3 SeiOkami
 
15.12.20
11:40
(2), пункт 2 касается блокирующих проверок. У меня просто сообщение.
4 SeiOkami
 
15.12.20
11:40
(1), да, с этой фигнёй постоянно сталкиваюсь, но всё руки не доходят разобраться. Может где есть какое-то адекватное описание сего феномена
5 ДНН
 
15.12.20
11:46
(0) А если сообщать в ПриОткрытии?
6 SeiOkami
 
15.12.20
11:51
(5), при открытии норм, но стрёмно передавать сообщение между ПриСозданииНаСервере и ПриОткрытии
7 craxx
 
15.12.20
12:00
(6) а чего такого? создаешь реквизит на форме, туда пишешь в ПриСозданииНаСервере сообщение, оттуда при открытии его выводишь
8 craxx
 
15.12.20
12:00
(7) Реквизит на форме =  реквизит формы
9 SeiOkami
 
15.12.20
12:03
(7), это всё равно не объяснит происходящее. А костылей можно гору придумать)
10 ДенисЧ
 
15.12.20
12:14
(4) Адекватное - есть. В ПриСоздании формы ещё нет. Куда сообщения выводить?
11 fisher
 
15.12.20
12:16
Странно. Была аналогичная фигня, когда пытался из модуля объекта пробросить сообщение в нужную форму. Тут видать схожий генезис - сервер и связи с формой на клиенте нет (в первом случае - вообще, во втором - еще, т.к. на клиенте форма еще не создана).
Фича такая, в общем. Обидная. Могли бы и поднапрячься.
12 fisher
 
15.12.20
12:18
(10) Сообщения на сервере попадают в буфер сообщений. А на клиенте, когда буфер будет обрабатываться, форма уже будет. И ИдентификаторНазначения на нее будет указывать. Так что реальных препятствий нет. Явно фича отработки.
13 ДенисЧ
 
15.12.20
12:25
(12) Буфер к чему привязываться будет? Нет ещё формы. От слова совсем.
14 fisher
 
15.12.20
12:36
(13) УникальныйИдентификатор формы в этот момент уже сформирован. А именно он и используется в качестве ИдентификатораНазначения.
15 acht
 
15.12.20
12:49
(14) Ты еще предложи к закрытой форме собощения цеплять
16 fisher
 
15.12.20
13:25
(15) К закрытой форме цеплять сообщения смысла нет. А к открываемой - есть.
17 acht
 
15.12.20
13:49
(16) Ты подменяешь понятия. "Открываемая" форма - это совсем не то же самое, что "создаваемая". Ни создаваемая, ни закрытая форма не отображаются на экране и не привязаны к окну.
18 fisher
 
15.12.20
18:24
(17) Ты прав. Но технически я не вижу особой проблемы при открытии формы на клиенте и проверке буфера сообщений сопоставить идентификаторы форм и направить сообщения в нужную форму, несмотря на то что в момент посылки сообщения окна для этой формы еще не было создано. Было бы удобно. Почему нет? Ты думаешь, что вот прямо в момент отправки сообщения НА СЕРВЕРЕ выполняется его диспетчеризация прямо в конкретное окно клиентского приложения НА КЛИЕНТЕ?
19 Fragster
 
гуру
15.12.20
18:27
Лично я считаю отказ от глобального окна сообщений из ОФ - ошибкой, приводящей вот к таким вот артефактам.
20 Classic
 
15.12.20
19:44
(16)
Как это нет. А если сообщение описывает. почему форма не открылась?

Все правильно. ПриСозданииНаСервере - до создания формы, ПриОткрытии - после создания.

Строго говоря форму вообще можно не открывать. ПолучитьФорму(), повызывать процедуры, гудбай. Куда сообщения писать?
21 SeiOkami
 
16.12.20
08:47
Лол, а почему обычно сообщения ПриСозданииНаСервере() нормально выводятся?
Нет, ПриСозданииНаСервере форма уже есть, она просто ещё не передана на клиент. Это не "ПередСозданиемФормы". И не событие "ОбработкаПолученияФормы".
Иначе бы мы не могли с ней работать. И она не имела бы идентификатор.

Если вызывать сообщение в ПриСозданииНаСервере(), то оно нормально выводится. Но именно в случае при вводе на основании происходит такой баг. Скорее всего есть ещё ситуации, мне кажется, что сталкивался.

Ну если же это не баг, а фича, то хотелось бы понять в чём её смысл.

И странно, что ИдентификатораНазначения в объекте СообщениеПользователю не помогает...
22 nikneim
 
16.12.20
08:54
Комплексная автоматизация  2 (2.4.12.102)
Добрый день! Задача в следующем, в Расширении конфигурации
в документе «Заказ Клиента» в Форме добавил ТЧ СПРОС(Дефицит), а в Обработчике Подбор товаров в документ продажи в форме Запроса Количества и Серий добавил Поле ввода "Количество Всего"как связать их без Корзины чтоб при вводе "Количество всего" сразу перекидывалось в ТЧ Спроса , какие процедуры и функции нужно дописать или подменить.
То есть при подборе и  вводе количества он закидывает в корзину а затем через "Перенести в документ" переносится в ТЧ Товары. Надо чтобы также при вводе КОЛИЧЕСТВО ВСЕГО перекидывалось в ТЧ СПРОС(Дефицит).
23 fisher
 
16.12.20
10:05
(20) > Куда сообщения писать?
Этот вопрос не стоит. При любых непонятках сообщения и так выводятся просто в активную форму.
24 acht
 
16.12.20
10:31
(23) Вот весь вопрос в определении этой формы - слишком много противоречивых сценариев.
Например, ты вывел сообщение из ПриСозданииНаСервере а потом в ПриОткрытии выдал Отказ = Истина. Что делать с сообщениями?

Напоминаю, что перед этим ты топил за привязку сообщений, выводимых из ПриСозданииНаСервере  к идентификатору созданной, но еще не открытой формы =)
25 fisher
 
16.12.20
12:50
(24) > Что делать с сообщениями?
Выводить, конечно. Если есть конкретная форма-адресат - выводим в нее. Если нет или не удалось его найти - в активную форму. И это не моя идея или предложение. Это то, как по моему мнению сейчас и происходит. Вопрос только в существующих противоречивых сценариях, когда платформа почему-то не может определить адресата и выводит вместо него в активную. В частности - в сабжевом случае. Причем прочитай (21) - ТС пишет, что сообщения в ПриСозданииНаСервере() выводятся нормально. Проблема только при вводе на основании. Так что если тебя интересует, что на самом деле произойдет с сообщением из ПриСозданииНаСервере при отказе открытия - ты легко можешь это проверить на практике, а не в теории.
26 acht
 
16.12.20
13:46
(25) > Проблема только при вводе на основании
Которая происходит в ОбработкаЗаполнения, и в общем случае выпоняется вообще без клиента. Ну, например, при МойОбъект.Заполнить(Данные) на сервере. Кому там что информационно сообщать?

А вот про сообщения об ошибках и существует стандарт https://its.1c.ru/db/v8std#content:396:hdoc, пункт второй. Который обеспечивает нормальную логику пр иработе как на клиенте из формы, так и на сервере без клиента.
27 fisher
 
16.12.20
14:24
(26) ТС говорит не про обработку заполнения. А про ПриСозданииНаСервере при вводе на основании. И если ты даже в обработке проведения отправишь сообщение - оно будет выведено.
Я отметил нелогичность и запутанность в работе лопаты. А ты мне про то, что если я буду махать ей по уставу - то проблем не будет. Ну, ок.
Уставы мне обсуждать неинтересно. Мне интересна логика работы внутренних механизмов платформы.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан