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