Имя: Пароль:
1C
1С v8
Не работает СообщениеПользователю в расширении
0 СделатьВсе Хорошо
 
29.07.20
19:11
Комрады, всех приветствую, а кто-нибудь делал так?:
1. расширение
2. новый объект документ
3. в модуле объекта некая проверка.
4. хочу обматерить пользователя со ссылкой на определенную строку таб. части


Итог: сообщение выводится только внизу к строке и ячейке не крепится, хотя в разных ресурсах интернета пишут что я все сделал правильно.

Может дело в том что в расширении эта фича сообщений не работает?

код таков:

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В строка " + Выборка.НомерСтроки + " бла бла бла ";
Сообщение.Поле = "Документы[" + Строка(Выборка.НомерСтроки - 1) + "].Заказ";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
1 AlvlSpb
 
29.07.20
21:50
(0) Документы - это имя ТЧ? И почему тип значения индекс у тебя строка?
2 lodger
 
29.07.20
22:17
думаю, что косяк в
\\ Сообщение.УстановитьДанные(ЭтотОбъект);

в примере описано следующее
Сообщение.Поле = "Номенклатура[10].Количество";

    // Привязка объекта к реквизиту формы произойдет за счет
    // установленного выше по стеку соответствия методом
    // УстановитьСоответствиеОбъектаИРеквизитаФормы
    Сообщение.УстановитьДанные(ОбъектДанных);
    // Теперь у сообщения заполнено поле ПутьКДанным (установлено имя реквизита формы, до этого была пустая строка),
    // и свойство КлючДанных (установлена ссылка на документ, до этого было Неопределено)

либо

    // Привязка объекта к реквизиту формы "вручную"
    Сообщение.КлючДанных = ОбъектДанных.Ссылка;
    Сообщение.ПутьКДанным = "Объект";
3 СделатьВсе Хорошо
 
29.07.20
22:23
(1) ТЧ кончено.
А какого ему быть типа, если я в строковый реквизит "поле" присваиваю значение?
4 AlvlSpb
 
29.07.20
23:16
(3) А если так? Для УФ
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В строка " + Выборка.НомерСтроки + " бла бла бла ";
Сообщение.Поле = "Объект.Документы[" + Выборка.НомерСтроки - 1 + "].Заказ";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
5 СделатьВсе Хорошо
 
30.07.20
14:43
(4) Пробовал, тоже не взлетело
6 СделатьВсе Хорошо
 
30.07.20
14:59
(2) И так не работает

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

мне кажется все дело или в расширениях или в совместимости базы...

я уже помоему все варианты перепробовал
7 lodger
 
30.07.20
15:24
(6) вернись на шаг назад и перечитай с моего примера.
8 AlvlSpb
 
30.07.20
16:49
(6) Вставил код
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В строка " + " " + " бла бла бла ";
Сообщение.Поле = "Объект.Запасы[" + (1 - 1) + "].Номенклатура";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
в расширении в ПриОткрытии ЗаказаПокупателя в демо УНФ, отлично сработало
Уверен, что есть данные номера строки в выборке? Проверяй на орфографию имя ТЧ (букву пропустил или поменял местами). Где-то дурацкая мелкая ошибочка.
9 СделатьВсе Хорошо
 
30.07.20
18:24
(8) при открытии формы, то хорошо, там вопросов нет.

У меня вопрос именно из модуля объекта.

Орфография не может быть все реквизиты скопированы.
10 AlvlSpb
 
30.07.20
18:57
(9) Проверил из модуля объекта - все работает. Единственное НЕ Объект.Документы, а просто Документы. Переименнуй ТЧ, Документы - это все же обращение к метаданным, назови по другому
11 СделатьВсе Хорошо
 
30.07.20
18:59
(10) ять, вот это правда 100% решение. он точно к метаданным лезет вместо ТЧ.

спс. сейчас попробую.
12 Timon1405
 
30.07.20
19:02
(4) такой код сломается на 1001 строке
13 СделатьВсе Хорошо
 
30.07.20
20:13
(12) почему?
14 СделатьВсе Хорошо
 
30.07.20
20:26
В общем итог: грабли те же, уже ходили, но жизнь не учит, оставлю тут напоминание...

(10) это конечно ценное замечание, но дело было не в этом.

Косяк был в том, что процедура проверки вызывалась в ОбработкаПроведения, а там это не работает.
Перенес как положено в ОбработкаПроверкиЗаполнения и все взлетело.
15 lodger
 
31.07.20
00:30
(13) потому, что 1001 будет неявно сконвертировано в 1 001. пробел в индексе строки поломает адресацию пузырька сообщения.
16 СделатьВсе Хорошо
 
31.07.20
09:42
(15) и это орден шелкового умника!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.