Имя: Пароль:
1C
1С v8
Вычисляемая колонка в УФ.
0 kumena
 
05.04.17
15:00
1С:Предприятие 8.3 (8.3.8.2088)

Есть документ с табличной частью. В реквизитах формы (не объекта, а формы) добавлен реквизит табличной части, числовой. В модуле формы есть такая процедура пересчета -

&НаСервере
Процедура ПерерасчетИтогов(ТекущийОбъект)
    
    КонецЦикла;
            
    Для Каждого тСтрока Из Объект.МояТЧ Цикл
        тСтрока.Реквизит1 =
                тСтрока.Реквизит2+ тСтрока.Реквизит3;
    КонецЦикла;    
            
    
КонецПроцедуры    

она все чудесно пересчитывает, к ней вопросов нет.
Не понятно, почему после записи документа эта вычисляемая колонка обнуляется. Проблема решается если вставить пересчет в процедуру после записи, но интересует, почему сносит цифры из этой колонки и можно ли этого избежать?
1 1Снеговик
 
гуру
05.04.17
15:02
Форма перечитывается
2 kumena
 
05.04.17
15:11
а можно как-то заставить не читать эту колонку?
3 kumena
 
05.04.17
15:13
лишний пересчет не интересен, но можно и с ним жить конечно.
4 toypaul
 
гуру
05.04.17
15:14
(2) нельзя. в причтении добавь расчет
5 kumena
 
05.04.17
15:20
(4)
он и так есть у меня, и с формой связан.

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

спасибо что напомнил забыл спросить, когда же она должен срабатывать?
у меня только когда форма нового или при открытии. при записи не срабатывает!
6 lodger
 
05.04.17
15:22
ПриПовторномЧеТоТам не поможет?
7 kumena
 
05.04.17
15:24
"ПриПовторномОткрытии"? вряд ли, я же не открываю второй раз, я просто нажимаю стандартную кнопку "Записать".
8 toypaul
 
гуру
05.04.17
15:25
(5) может и так. 2 недели назад с этим же мучался.
9 kumena
 
05.04.17
15:28
проблемы с пересчетом как таковой нет, пока все работает корректно если вставить пересчет после записи.

1. вроде с тем, почему колонка очищается прояснили.
2. не понятно только когда должна срабатывать процедура "ПриЧтенииНаСервере", и в чем её отличие от "ПриСозданииНаСервере". у меня сейчас они в один момент срабатывают.
10 Kondarat
 
05.04.17
15:28
(7)(8) Объект записывается на Сервере и возвращается на Клиента, форма пересчитывается. На сервере Объект ничего не знает о реквизитах формы. Так что перезаполнять реквизиты надо еще и после записи. Так? Не?
11 kumena
 
05.04.17
15:29
(10) вроде все так.
12 kumena
 
05.04.17
15:29
хотя, если объект про них не знает, то почему бы эти реквизиты не трогать?
13 lodger
 
05.04.17
15:32
(9) отцепитесь от этих обработчиков, в УФ их еще много.
ПослеЗаписиНаСервере например. повторите рассчет там.
14 RomaH
 
naïve
05.04.17
15:32
после записи
15 lodger
 
05.04.17
15:34
(14) ПослеЗаписи это уже &НаКлиенте. а на клиенте плохо бегать по строкам ТЧ и ТЗ. а вдруг тысячи их, клиент забодает сервер поточным запросом к порциям строк из той таблицы.
16 kumena
 
05.04.17
15:35
(15) где делать пересчет я знаю, вопрос в том, можно ли его избежать.
17 RomaH
 
naïve
05.04.17
15:35
(6) сохрани к коллекцию
18 RomaH
 
naïve
05.04.17
15:36
+(17) - это к (16)
типа соответствие
идентификатор строки - результат - ну или как получится
19 lodger
 
05.04.17
15:36
(16) реквизит формы? зачем его сохранять? если хотите хранить - делайте его реквизитом ТЧ.
20 lodger
 
05.04.17
15:37
(18) накладные расходы на сохранить, прочитать, восстановить построчно получаются выше чем один раз повторить математику.
21 RomaH
 
naïve
05.04.17
15:38
(19) та не - расчет может занимать много времени - те же остатки какие-нибудь
22 RomaH
 
naïve
05.04.17
15:38
(20) это смотря какая математика
23 kumena
 
05.04.17
15:41
(19) хранить именно в документе ничего не надо, это данные предыдущих документов. пример в нулевом посте приведен просто как пример того, что колонка работает.

(20) пока еще не ясно, запрос скорее всего будет больше грузить
24 lodger
 
05.04.17
15:49
(23) а запросы и расчеты у вас в цикле "Для Каждой СтрокаТЧ"?
25 kumena
 
05.04.17
15:50
(24) не волнуйся, запросы я грамотные пишу.