Как изменить добавленный руками реквизит таблицы значений в событии формы ПриИзменении?
Думаю вопрос старый и глупый, по форумах полазил - ничего не нашел. (видимо ищу не по тем ключевым словам)
В общем на форму документа выведена его табличная часть и затем в неё добавлена колонка, хотелось бы чтобы при событии <ИмяТабличнойЧасти><ИмяРеквизита>ПриИзменении(Элемент) происходило автозаполнение новой колонки(НЕ являющейся реквизитом табличной части). Не пойму как можно обратиться к этой колонке для Записи.
Пример. В основной форме документа РеализацияТоваровУслуг в табличной части Товары есть Код и Артикул (не входящие в раквизиты Табличной части), их заполнение происходит во время обработки события ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки). Хотелось бы пересчитывать значения только при изменении реквизита Номенклатура. Но не понятно как можно к ним обратиться. ЭлементыФормы.Товары.ТекущиеДанные, ЭлементыФормы.Товары.ТекущаяСтрока - имеют тип - ДокументТабличнаяЧастьСтрока.
В общем на форму документа выведена его табличная часть и затем в неё добавлена колонка, хотелось бы чтобы при событии <ИмяТабличнойЧасти><ИмяРеквизита>ПриИзменении(Элемент) происходило автозаполнение новой колонки(НЕ являющейся реквизитом табличной части). Не пойму как можно обратиться к этой колонке для Записи.
Пример. В основной форме документа РеализацияТоваровУслуг в табличной части Товары есть Код и Артикул (не входящие в раквизиты Табличной части), их заполнение происходит во время обработки события ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки). Хотелось бы пересчитывать значения только при изменении реквизита Номенклатура. Но не понятно как можно к ним обратиться. ЭлементыФормы.Товары.ТекущиеДанные, ЭлементыФормы.Товары.ТекущаяСтрока - имеют тип - ДокументТабличнаяЧастьСтрока.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Событие ПриПолученииДанных табличной части используй. В моей процедуре Артикул и Модель - добавленные колонки без связи с данными:
Отрабатывает это событие при любом изменении данных табличной части, которое требует перерисовки элемента управления. Но не при прокрутке )) И используй разыменование через точку "ДанныеСтроки.Номенклатура.Код" только в том случае, когда у тебя число строк не более 100, т.к. на каждое такое разыменование получается объект целиком (Номенклатура). Иначе будет тормозить и лучше одним запросом.
Процедура СоставКоробаПриПолученииДанных( Элемент, ОформленияСтрок )
Для Каждого ЭлементОформления Из ОформленияСтрок Цикл
ДанныеСтроки = ЭлементОформления.ДанныеСтроки;
ЭлементОформления.Ячейки.Артикул.Значение =
ДанныеСтроки.Номенклатура.Артикул;
ЭлементОформления.Ячейки.Модель.Значение =
ДанныеСтроки.Номенклатура.Код;
КонецЦикла;
КонецПроцедуры // СоставКоробаПриПолученииДанных()
ПоказатьОтрабатывает это событие при любом изменении данных табличной части, которое требует перерисовки элемента управления. Но не при прокрутке )) И используй разыменование через точку "ДанныеСтроки.Номенклатура.Код" только в том случае, когда у тебя число строк не более 100, т.к. на каждое такое разыменование получается объект целиком (Номенклатура). Иначе будет тормозить и лучше одним запросом.
Моха пишет: В ОформленииСтроки Ищи ОформлениеЯчейки.
В том то и дело, что в событии <ИмяТабличнойЧасти><ИмяРеквизита>ПриИзменении(Элемент) нет параметра ОформлениеСтроки
Сергей aka dotBY, Спасибо, вариант. НО Я использовал Событие ПриВыводеСтроки. Но это не хорошо - вызывается каждый раз для всех строк при изменении одной. Идеально конечно бы было ПриИзменении, но я не вижу способа залесть отсюда в реквизиты Элемента формы. СЛЕДОВАТЕЛЬНО:ПолученииДанных - Возникает при получении данных табличным полем, после обработки событий ПриВыводеСтроки. (количество вызовов ОЧЕНЬ не оптимально - нафига переполучать данные не изменённых объектов)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот