Имя: Пароль:
1C
1С v8
Вывести сумму ИтогоПоДокументу в Заголовок печатной формы
, ,
0 TrAN
 
06.10.21
12:04
Коллеги, доброго времени суток!

В первый раз столкнулась с такой задачей.
Есть печатная форма - 2 области: Шапка и СтрокаТЧ.
В СтрокеТЧ параметры: Номенклатура (из ТЧ документа), Количество (из ТЧ документа), СуммаПоСтроке (кол-во * на цену из РегистраСведений на дату документа).
В Шапке различные надписи и параметр ИтогоПоДокументу.
Проблемма в том что сначало выводится Шапка, потом построчно СтрокаТЧ и сумма итого считается во время вывода, так как заранее запросы к РС не делаются.

Как вариант написать функцию, которая считает СуммуПоДокументу и выводит её вместе с шапкой, но не хочется два раза запросы в цикле делать (один для Итого, второй для СуммыСтроки)

Может что подскажите, буду благодарна!

Спасибо!
1 polosov
 
06.10.21
12:15
(0) Не выводить сразу области, а сначала их сохранять в массив (Вместо ТабДок.Вывести(ОбластьШапка) сделать МойМассив.Добавить(ОбластьШапка))
После получения итоговой суммы сделать МойМассив[0].Параметры.СуммаИтого = СуммаИтого;
Потом вывести последовательно все области.
2 Ёпрст
 
06.10.21
12:23
(0) запоминай выведенную область шапка в результирующем табличном документе в переменную, потом установи текст в нужную ячейку этой области.
3 Ёпрст
 
06.10.21
12:27
Если что, вывести/присоеденить возвращает эту областт...
4 TrAN
 
06.10.21
12:32
(1) А как быть со Строкой?
Я пыталась её в массив писать, но записывавется одна и таже строка 10 раз
5 polosov
 
06.10.21
13:05
(4) Да, область одна и та же. Тогда (2) попробуй. Ячейку можно перебором поискать по имени параметра или просто хардкодом прописать координаты, но это не совсем тру.
6 Kassern
 
06.10.21
13:09
(0) А нельзя использовать для шапки реквизит СуммаДокумента?
7 TrAN
 
06.10.21
13:11
(5) Если често, я не очень поняла способ из 3-го комментария
8 polosov
 
06.10.21
13:17
(7) Тогда в цикле перед добавлением строки каждый раз заново получай область строки. Это про метод (1)
9 polosov
 
06.10.21
13:19
+(8)
    
    ТабДок = Новый ТабличныйДокумент;
    Масс = Новый Массив;
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    Масс.Добавить(Макет.ПолучитьОбласть("Шапка"));
    
    Для Инд = 1 По 10 Цикл
        Обл = Макет.ПолучитьОбласть("Строка");
        Обл.Параметры.СтрокаПарам = Инд;
        Масс.Добавить(Обл);
    КонецЦикла;
    
    Для Инд = 0 По 10 Цикл
        ТабДок.Вывести(Масс[Инд]);
    КонецЦикла;
10 TrAN
 
06.10.21
13:23
(8) По этому методу получилось! Спасибо!
Сейчас для практики буду пробывать метот из 9-го вашего комментатрия
11 Ёпрст
 
06.10.21
14:03
(7)


Вася = ТабДок.Вывести(ОбластьШапка);
Цикл
.................
   ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Вася.Область(1,1,1,1).Текст = ИтогиПоЦиклу;
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс