Как привязать сообщение пользователю к элементу табличной части документа?

1. alw-1 15.09.14 14:58 Сейчас в теме
Управляемые формы. Документ проводится и в случае если проверка не проходит должно появиться сообщение с привязкой к строке к эл. Количество.Вот код:
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Товара "+  ВыборкаНоменклатура.Номенклатура.Наименование + " в количестве "+ВыборкаНоменклатура.Количество + " нет на складе ";
                                 
			
Сообщение.Поле ="Объект.СписокНоменклатуры["+ ВыборкаНоменклатура.НомерСтроки+"].Количество"; 
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Показать

Код выводит облачное сообщение но оно привязано только к строке, а не к полю Количество.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ojiojiowka 15.09.14 15:10 Сейчас в теме
Попробуйте без установить данные и без "Объект."

Т.е. примерно следующее:
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Товара "+  ВыборкаНоменклатура.Номенклатура.Наименование + " в количестве "+ВыборкаНоменклатура.Количество + " нет на складе ";           
Сообщение.Поле ="СписокНоменклатуры["+ ВыборкаНоменклатура.НомерСтроки+"].Количество"; 
Сообщение.Сообщить();


Где СписокНоменклатуры - элемент формы.
3. alw-1 15.09.14 15:15 Сейчас в теме
(2) ojiojiowka, В этом случае нет привязки даже к строке - сообщение в виде облака внизу формы.
4. alw-1 15.09.14 15:27 Сейчас в теме
Кстаи если при задании поля не указывать объект :
Сообщение.Поле ="СписокНоменклатуры["+ ВыборкаНоменклатура.НомерСтроки+"].Количество"; 

то облака вообще нет. только сообщение на форме.
Синицын; mrFduch; +2 Ответить
5. aleksandrjurevich 16.09.14 13:00 Сейчас в теме
Возможно дело в том, что нужно указывать индекс строки, а не номер.
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	ТЧ = Объект.ТабличнаяЧасть1;
	Для каждого СтрокаТЧ ИЗ ТЧ Цикл
		Если СтрокаТЧ.Реквизит2 = 55 Тогда
			Индекс = ТЧ.Индекс(СтрокаТЧ);
			Сообщить = Новый СообщениеПользователю;
			Сообщить.Текст = "Ошибка в этом поле строки";
			Сообщить.Поле = "Объект.ТабличнаяЧасть1["+Индекс+"].Реквизит2";
			Сообщить.Сообщить();
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
Показать
3gf; MrEvilSkotch; Professor338; sh_max; user830833; primat; mikl79; user602678_maxipunchik; Синицын; avaddon1988; Sagat777; Aleskey_K; spe1c; KAV2; roger83; sulfur17; user732208; TMV; rayastar; jaroslav.h; Восьмой; wtlz; +22 Ответить
11. user830833 02.11.23 13:16 Сейчас в теме
можно еще формат дописать)

Сообщ.Поле = "Объект.ТабличнаяЧасть1[" + Формат(Индекс, "ЧГ=") + "].Реквизит2";
13. nikolega 174 29.08.24 15:08 Сейчас в теме
(5)
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ТЧ = Объект.ТабличнаяЧасть1;
Для каждого СтрокаТЧ ИЗ ТЧ Цикл
Если СтрокаТЧ.Реквизит2 = 55 Тогда
Индекс = ТЧ.Индекс(СтрокаТЧ);
Сообщить = Новый СообщениеПользователю;
Сообщить.Текст = "Ошибка в этом поле строки";
Сообщить.Поле = "Объект.ТабличнаяЧасть1["+Индекс+"].Реквизит2";
Сообщить.Сообщить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать



Этот код некорректно будет выполнять привязку к строке (из-за неявного преобразования в число будут добавлены разделители тысяч), если в табличной части больше 1000 строк.

Вот так корректнее работать будет

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ТЧ = Объект.ТабличнаяЧасть1;
    Для каждого СтрокаТЧ ИЗ ТЧ Цикл
        Если СтрокаТЧ.Реквизит2 = 55 Тогда
            Индекс = Формат(ТЧ.Индекс(СтрокаТЧ), "ЧГ=");
            Сообщить = Новый СообщениеПользователю;
            Сообщить.Текст = "Ошибка в этом поле строки";
            Сообщить.Поле = "Объект.ТабличнаяЧасть1["+Индекс+"].Реквизит2";
            Сообщить.Сообщить();
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
Показать
14. user1880116 29.08.24 15:29 Сейчас в теме
(13)
Вот так корректнее

Индекс = Формат(ТЧ.Индекс(СтрокаТЧ), "ЧГ=");
И для первой же строки с индексом ноль ты получишь пустую строку.

Перекрестное опыление, инцухт, инцест, вырождение. Ничего нового.
А, ну и некротему еще обновить, потому что Очень Хочется Поделиться.
6. Омский Домовой 408 30.10.20 21:14 Сейчас в теме
Видимо поздновато, но думаю что нужно написать (ВыборкаНоменклатура.НомерСтроки-1)
Rudakov_D; +1 Ответить
7. Yury1001 1472 03.11.20 19:52 Сейчас в теме
(6) не работает никак, подозреваю что это очередной глюк платформы (8.3.17.1549), хотя пробовал несколько разных

			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "По номенклатурае " + ВыборкаНоменклатура.НоменклатураПредставление + " не хватает " + (ВыборкаНоменклатура.Количество - ВыборкаНоменклатура.КоличествоОстаток);
			Сообщение.Поле = "СписокНоменклатуры["+(ВыборкаНоменклатура.НомерСтроки-1)+"].Количество";
			Сообщение.УстановитьДанные(ЭтотОбъект);
			Сообщение.Сообщить(); 
9. maksa2005 544 12.11.20 08:53 Сейчас в теме
(7)Не соглашусь с Вами на счет "глюка" платформы.
стоит такая же, как и у Вас = 1С:Предприятие 8.3 (8.3.17.1549)


// Создание сообщения
		    Сообщение = Новый СообщениеПользователю();
		    Сообщение.Текст = "В строке №"+ст.НомерСтроки+"
			|по номенклатуре: "+ст.Номенклатура+"
			|не верно указана количество: "+ст.Количество+" "+ст.Номенклатура.ЕдиницаИзмерения+"
			|по спецификации: "+ст.Спецификация+" 
			|Остаток по спецификации: "+ст.КоличествоОстаток+" "+ст.Номенклатура.ЕдиницаИзмерения+"
			|Отклонение: "+(ст.Количество-ст.КоличествоОстаток)+"
			|Измените кол-во в указанной строке на "+ст.КоличествоОстаток+" "+ст.Номенклатура.ЕдиницаИзмерения;
			
			Сообщение.Поле = "Объект.Товары["+(ст.НомерСтроки-1)+"].Количество";
			Сообщение.Сообщить();

Показать

все работает исправно.
Прикрепленные файлы:
user1835472; anchovy; +2 Ответить
8. Yury1001 1472 03.11.20 19:57 Сейчас в теме
Ё-моё, на 8.3.14.1944 всё работает, а я чуть голову не сломал.
Это какой-то позор.
10. 5225688vd 07.10.21 08:03 Сейчас в теме
Здравствуйте, подскажите пожалуйста, я новичок в программировании, почему-то не получается вывести сообщение именно в строке, запрос проверил, код перепробовал разные варианты, все равно не выдает сообщение в строке, может настройка платформы какая-нибудь требуется?
12. starik-2005 3081 02.11.23 14:02 Сейчас в теме
(10)
код перепробова
Хорошее начало. Продолжай перепробовывать код.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот