Имя: Пароль:
1C
1С v8
Перечитать данные в табличной части документа
0 digiti
 
14.01.16
09:17
Здравствуйте!

Имеется документ Ремонтная ведомость (РВ), у которой есть табличная часть, состоящая из документов Ордер. При изменении реквизита РВ (коэффициента к стоимости работ) происходит запись и проведение документа РВ и пересчет и запись с проведение всех документов табличной части (ордеров). Но после этого на форме РВ в табличной части не обновляется колонка суммы ордеров, хотя подвал сумм обновляется. Суммы ордеров имеет путь к данным - ДокументОбъект.СписокОрдеров.Ордер.СуммаДляСписка, т.е. это реквизит ордера, а подвал - ДокументОбъект.ВсегоСтоимость (это реквизит РВ). Если открыть ордер в ТЧ и потом его провести и закрыть, то после этого все обновляется. Хотя открывается он уже с новыми пересчитанными данными. Закомментировала то, что пробовала.

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

==============================

&НаСервере
Процедура ПересчитатьВсеСтрокиПослеИзменений(ОрдерСсылка)

..... расчеты....


   Ордер.СуммаДляСписка = ОбщаяСтоимость;
  
   Ордер.Записать(РежимЗаписиДокумента.Проведение);

КонецПроцедуры

==============================

&НаСервере
Функция ПолучитьОбщуюСтоимость(Ордер)
   ОС = 0;
   ОрдерОбъект = Ордер.ПолучитьОбъект();
  
   ОС = ОрдерОбъект.СуммаДляСписка;

   Возврат ОС;
КонецФункции
1 Никулин Леонид
 
14.01.16
09:20
Тебе обновить отображение данных что ли нужно?
2 digiti
 
14.01.16
09:29
Да. Обновить суммы в каждой строчке ТЧ - ДокументОбъект.СписокОрдеров.Ордер.СуммаДляСписка
3 Никулин Леонид
 
14.01.16
11:11
&НаКлиенте
ОбновитьОтображениеДанных();
4 rozer76
 
14.01.16
12:53
>> происходит запись и проведение

ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
Прочитать (Read)
Синтаксис:

Прочитать()
Описание:

Считывает данные документа из базы данных.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Позволяет прочесть данные заново. Недопустим для нового объекта.
Пример:

РасходнаяНакладная.Прочитать();
5 digiti
 
15.01.16
08:46
В примере кода закоменнтированные строчки - это то, что пробовала.
//ОбновитьОтображениеДанных();
//ЭтотОбъект.Прочитать();
//ЭтаФорма.Прочитать();
не помогают.
6 digiti
 
18.01.16
08:43
Разобралась. Не хватало в цикле пересчета строчки ОповеститьОбИзменении(СтрокаТЧ.Ордер).
Закон Брукера: Даже маленькая практика стоит большой теории.