Feb 28, 2013 12:15
Если Распределение.Выбран() = 1 Тогда
Распр=СоздатьОбъект("Документ.РаспределениеПоДоговорам");
Распр.НайтиДокумент(Распределение.ТекущийДокумент());
Распр.ВыбратьСтроки();
Пока Распр.ПолучитьСтроку()=1 Цикл
ТабДогСумов.НоваяСтрока();
ТабДогСумов.Договор = Распр.Договор;
ТабДогСумов.Сумма = Распр.Распределено;
КонецЦикла;
КонецЕсли;
Распределение - это реквизит документа Выписка, в цикле по строкам которого делается это непотребство.
Для тех, кто не особо разбирается в потрохах 1С:
методы Выбран(), ТекущийДокумент() и НайтиДокумент() вызывают ГАРАНТИРОВАННОЕ чтение из базы (с обновление данных в кэше).
ЗЫ на самом деле, одно гарантированное чтение из базы там необходимо - документ Распределение меняется через открытие модальной формочки, из-за чего Выписка считает, что у нее все хорошо и данные Распределения можно брать из кэша.
Незамутненный разум прошлых погромистов,
1С