Тема: Особенности работы с таблицей (ТДМС 3)

Заметил такую особенность: при изменении содержимого ячеек в таблице, не удается изменить содержимое элемента управления label (в моём случае   "LBL_ITOGO") на форме. Положительный результат даёт только принудительный Form.Refresh...

Sub Form_TableAttributeChange(Form, Object, TableAttribute, TableRow, ColumnAttributeDefName, OldTableRow, Cancel)
              ' подсчитываем итоги в таблице "Сверка расчетов":
                    Dim Row, rows, i, itogo
                    Set rows = ThisObject.Attributes("ATTR_OBJ_TABLE_SVERKA").Rows
                    i = 1
                    itogo = 0
                    For Each Row in rows ' перебираем ряды
                         i = i + 1 
                         itogo = itogo + Row.Attributes("ATTR_OBJ_POLUCHENO").Value
                   Next</p><p>' подсчитаем процент по итогам сверки:
    ThisForm.Controls("LBL_ITOGO").Value = Round((itogo / ThisObject.Attributes("ATTR_OBJ_PRICE").Value)*100) & "%"
    ThisObject.Attributes("ATTR_OBJ_ITOGO_SVERKA").Value = itogo
              
Form.Refresh
              
End Sub

     

Это баг, фича или недостаток знаний (у меня)?  :rolleyes:

Re: Особенности работы с таблицей (ТДМС 3)

Вообще, то должно быть наоборот, label должен меняться сразу, после того как его изменили ThisForm.Controls("LBL_ITOGO").Value = ..,
а изменение атрибута ThisObject.Attributes("ATTR_OBJ_ITOGO_SVERKA").Value = .. не должно приводить к обновлению edit контрола. Это такая особенность(фича) события обновления табличного атрибута.
После события на изменение обычного атрибута, все контролы переинициализируются новыми
значениями атрибутов. Исключение для табличного атрибута переинициализации не происходит.
Код который у Вас написан с Form.Refresh правильный. Ещё один вариант, обновлять сразу
не через атрибут, а через контрол, тогда значение и в атрибуте и в контроле обновится.
ThisForm.Controls("ATTR_OBJ_ITOGO_SVERKA").Value  =…

(А вот если не обновляется .Control, то это ошибка и нужно разбираться, но у меня не повторяется)