Имя: Пароль:
1C
1С v8
УФ. Программное обновление вычисляемого поля табличной части документа
0 Humandra
 
15.03.12
13:43
Добрый день!
Подскажите плиз решение проблемы.

Надо было добавить вычисляемое поле в документ, в табличную часть.
Например, есть документ изменения ставки тарифа, и в колонке табличной части надо видеть старый тариф на дату, на день меньшую чем дата документа.

Добавила реквизит табличной части и поле формы, написала серверную процедуру, в которой исходя из параметров заголовка документа и значения строки табличной части, на ПриЧтенииНаСервере получались данные и присваивались новому реквизиту.

Работает.

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

На событии ПриИзменении реквизита вызываю ту же процедуру, что и на ПриЧтенииНаСервере: не обновляет.
Пробую после этого вызывать Элементы.МояТабличнаяЧасть.Обновить();
Не работает.

Если вызывать ЭтаФорма.Прочитать(), то перечитается весь объект, и сбросится и измененный реквизит шапки документа.

Может кто подскажет, что с этим делать?
1 Humandra
 
15.03.12
13:52
(0) Или на динамический список переделать? Еще не пробовала, но оно как - динамический список позволяет редактирование в самом списке?
2 Humandra
 
15.03.12
13:56
Код процедур такой:

&НаСервере
Процедура ПолучитьСтарыеСтавки()
   ДатаСтарыхСтавок = МойОбщийМодуль.ДобавитьДень(Объект.Дата, -1);
   ТаблицаСтарыеСтавки = РегистрыСведений.СтавкиТарифа.ПолучитьТаблицуЗначенийСтавокТарифов(ДатаСтарыхСтавок, Объект.ТипЦены, Объект.РасчетныйПериод);
   
   Для Каждого СтавкаТарифа Из Объект.СтавкиТарифа Цикл
       СтрокаСтарыеСтавки = ТаблицаСтарыеСтавки.Найти(СтавкаТарифа.Тариф, "Тариф");
       Если СтрокаСтарыеСтавки <> Неопределено Тогда
           СтавкаТарифа.СтараяСтавка = СтрокаСтарыеСтавки.Ставка;
       КонецЕсли;
   КонецЦикла;    
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
   ПолучитьСтарыеСтавки();
КонецПроцедуры

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
   ПолучитьСтарыеСтавки();
   Элементы.СтавкаТарифа.Обновить();
КонецПроцедуры

Не работает обновление.
3 Humandra
 
15.03.12
14:06
Up?
4 Mort
 
15.03.12
14:17
Вроде должно без обновления работать. Смотри отладчиком процедуру внимательнее.
5 Humandra
 
15.03.12
14:28
(4) А! Точно, спасибо. Косяк в процедуре, обновлять не надо :)
6 Humandra
 
15.03.12
14:28
Ветку Иначе забыла :)