Теряется привязка сообщения к полю таблицы при повторном выводе

1. gamletspb 110 25.11.24 16:55 Сейчас в теме
Всем привет, столкнулся с неожиданной проблемой.
У внешней обработки есть табличная часть. При загрузке данных в ТЧ вывожу сообщения пользователю с привязкой к полям таблицы. Все работает, но при повторном заполнении таблицы привязка почему-то слетает.
привязка осуществляется следующим образом:
Индекс = Объект[ИмяТаблицы].Индекс(Стр);//Стр.НомерСтроки - 1;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,,"Объект."+ИмяТаблицы+"["+Индекс+"]."+ИмяПоля+"")

по отладчику смотрю, индекс строки вроде правильный формируется, строка для поля привязки вроде тоже нормальная, типа такой:
Объект.ТаблицаДанных[1].СтатьяРасходов

не могу понять, что не так?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
10. gamletspb 110 27.11.24 14:23 Сейчас в теме +0.5 $m
если кому интересно, то проблема решилась с помощью такой конструкции:
    Обработка = РеквизитФормыВЗначение("Объект");
	ТабДанных = Обработка.ТаблицаДанных; // вместо ТабДанных = Объект.ТаблицаДанных;
	ТабДанных.Очистить(); 
//...
// совершаем действия с ТабДанных
//...
	ЗначениеВРеквизитФормы(Обработка,"Объект");
	
	// Выводим сообщения с привязкой к полям табличной части обработки    
	Для каждого Стр Из Объект.ТаблицаДанных Цикл
		
	...		
	
	КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user-z99999 72 25.11.24 17:29 Сейчас в теме
(1) Нужно через точки остановки искать проблему.

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ТЧ = Объект.ТабличнаяЧасть1;
    Для каждого СтрокаТЧ ИЗ ТЧ Цикл
        Если СтрокаТЧ.Реквизит2 = 55 Тогда
            Индекс = ТЧ.Индекс(СтрокаТЧ);
            Сообщить = Новый СообщениеПользователю;
            Сообщить.Текст = "Ошибка в этом поле строки";
            Сообщить.Поле = "Объект.ТабличнаяЧасть1["+Индекс+"].Реквизит2";
            Сообщить.Сообщить();
        КонецЕсли;
    КонецЦикла;
Показать
3. user2107191 25.11.24 17:42 Сейчас в теме
(2) АААА! Семен Семеныч!!! А он-то, видимо, отладчиком значения без точек останова смотрел!!! Вот лошара-то, да?
user1863362; gamletspb; +2 Ответить
7. Vlan 36 26.11.24 09:12 Сейчас в теме
(1) Я бы для наглядности добавил в табличную часть колонку Индекс. И посмотрел бы, что меняется при повторном заполнении.
4. gamletspb 110 25.11.24 22:31 Сейчас в теме
неужели никто не сталкивался?
6. user1863362 26.11.24 08:30 Сейчас в теме
(4)
никто
Выводи сообщения с клиента или из неконтекстного вызова.
5. SirAlex 26.11.24 03:26 Сейчас в теме
(4) Картина в описании не полная.
Откуда и как вы загружаете данные в ТЧ?
Привели бы более подробный листинг кода.
8. user2107191 26.11.24 09:33 Сейчас в теме
Чую, что переменная Стр берется вовсе не из текущего итератора, а из некого раннего массива внутренних ссылок на строки ТЧ, которые при последующем перезаполнении самой ТЧ ессно становятся невалидными.
9. user1863362 26.11.24 10:00 Сейчас в теме
(8) Не, там чисто платформенный косяк с потерей части контекста. Если очистка, добавление строки и сообщение происходят в одном серверном вызове, то все портится. Если эти три операции начать делить на разные серверные вызовы или что-то делать на сервере, а что-то на клиенте (например сообщать), то все работает.
10. gamletspb 110 27.11.24 14:23 Сейчас в теме +0.5 $m
если кому интересно, то проблема решилась с помощью такой конструкции:
    Обработка = РеквизитФормыВЗначение("Объект");
	ТабДанных = Обработка.ТаблицаДанных; // вместо ТабДанных = Объект.ТаблицаДанных;
	ТабДанных.Очистить(); 
//...
// совершаем действия с ТабДанных
//...
	ЗначениеВРеквизитФормы(Обработка,"Объект");
	
	// Выводим сообщения с привязкой к полям табличной части обработки    
	Для каждого Стр Из Объект.ТаблицаДанных Цикл
		
	...		
	
	КонецЦикла;
Показать
Оставьте свое сообщение

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