Имя: Пароль:
1C
1С v8
УФ: окно сообщения
0 DCKiller
 
10.06.14
10:09
Здравствуйте еще раз. Есть такая проблема. Нужно выводить окно сообщений (объект "СообщениеПользователю") не в отдельном окне, а в маленьком диалоге с привязкой к определенному элементу формы (конкретно - к реквизиту ТЧ на форме документа в определенной строке). Сейчас при установке необходимых параметров указываю Поле, ПутьКДанным и КлючФормы.

Сообщение.Поле = "СписокТоваров["+(ВыборкаТабличнаяЧасть.НомерСтроки-1)+"].Количество";
Сообщение.ПутьКДанным = "Объект";
Сообщение.КлючДанных = Ссылка;

При такой настройке сообщение выводится в маленьком диалоге, но - при этом также вываливается в виде дополнительного окна справа от формы объекта, и при этом не привязывается к нужному элементу формы. Где что я упустил или неправильно настроил?
1 Drac0
 
10.06.14
10:24
СообщениеПользователю.Текст = ТвойТекст;
            СообщениеПользователю.Поле     = "ТвойРеквизитФормы.";

Так все ОК должно быть.
2 DCKiller
 
10.06.14
10:28
(1) А в (0) не то же самое?
3 mikecool
 
10.06.14
10:28
(2) "Объект.Поле" - так пиши
4 Drac0
 
10.06.14
10:32
(2) ПутьКДанным в топку. Если СписокТоваров - ТЧ объекта, то пиши "Объект.СписокТоваров["+(ВыборкаТабличнаяЧасть.НомерСтроки-1)+"].Количество".
Кстати, если Номер строки будет больше 1000, то Форматируй в строку вручную с удалением биения по триадам.
5 DCKiller
 
10.06.14
10:37
(4) Куда писать? В "Поле"?
(3) нифига
6 Fedor-1971
 
10.06.14
11:39
(0) Попробуй убрать Ключ и ПутьКДанным, а поле заполнить так:
поле="Объект.СписокТоваров["+Строка(Индекс)+"].Количество" - явно преобразуй число в строку.
7 DCKiller
 
10.06.14
11:42
(6) К сожалению, нет :( 1С и в этом случае сует окно сообщения туда, куда ей заблагорассудится. Да, и второе окно с сообщением, по-прежнему вылазит.
8 Fedor-1971
 
10.06.14
12:03
(7) попробуй получить индекс строки так:
Индекс=Объект.СписокТоваров.Индекс(Элемент.ТекущиеДанные)
Окно сообщения выводится где попало, если индекс не корректный.
9 Timon1405
 
10.06.14
12:07
(7) У вас точно ТЧ "список товаров" называется? Проверьте внимательно имя ТЧ и ее колонок, чтобы было поле = "Объект.ИмяТч["+Индекс+"].ИмяРеквизита"
10 DCKiller
 
10.06.14
12:11
(9) Да, точно
11 Drac0
 
10.06.14
12:12
(7) Так. По порядку. Создаются сообщения пользователю?
12 Drac0
 
10.06.14
12:12
+(11) *Где
13 Drac0
 
10.06.14
12:13
Кстати, учтите, что если они создаются на сервере, то выведутся при возвращении на клиент в текущей активной форме.
14 DCKiller
 
10.06.14
12:13
(11) Создаются.
Выводятся.
Но - не у реквизита "Количество" ТЧ "СписокТоваров", а в произвольном месте на форме.
Помимо этого - сообщение одновременно выводится в отдельном окне справа от формы дока. Так понятнее?
15 DCKiller
 
10.06.14
12:14
(13) Ага... а есть способ это избежать? Или только на клиенте выводить сообщение?
16 Drac0
 
10.06.14
12:15
(15) Сначала генери ,а потом выводи, когда нужную форму откроешь.
17 DCKiller
 
10.06.14
12:19
(16) А если это все в обработке проведения происходит? Как это сообщение на клиент передать?
18 Drac0
 
10.06.14
12:22
Как вариант,через ДополнительныеСвойства объекта. Помещаешь туда массив сообщений через ПолучитьСообщенияПользователю(Истина), потом открываешь форму и там уже их показываешь.
19 mikecool
 
10.06.14
12:26
СообщениеПользователю (UserMessage)
Поле (Field)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
Содержит путь к реквизиту формы, для которого было выведено сообщение, или к данным объекта.
Например, путь к реквизиту Номенклатура в строке с индексом 10 табличной части документа, в которой произошла ошибка: ТабличнаяЧастьСоставДокумента[10].Номенклатура.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
20 Drac0
 
10.06.14
12:30
(17) Так еще можно:
    пОбъект = ТекСсылка.ПолучитьОбъект();
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "Тест!!!";
    Сообщение.Поле = "Реквизит"; //Тут без "Объект."
    Сообщение.УстановитьДанные(пОбъект);
    Сообщение.Сообщить();

Тогда по клику на сообщение он откроет форму объекта с этим сообщением.