Имя: Пароль:
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) ТС говорит не про обработку заполнения. А про ПриСозданииНаСервере при вводе на основании. И если ты даже в обработке проведения отправишь сообщение - оно будет выведено.
Я отметил нелогичность и запутанность в работе лопаты. А ты мне про то, что если я буду махать ей по уставу - то проблем не будет. Ну, ок.
Уставы мне обсуждать неинтересно. Мне интересна логика работы внутренних механизмов платформы.