Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 12:50

Отображение итогов по колонке табличной части в макете

Автор OleHoli, 31 окт 2019, 16:26

0 Пользователей и 1 гость просматривают эту тему.

OleHoli

Добрый день!
Подобных тем было предостаточно. Но все же создал отдельную тему, т.к. мне нужна консультация для дураков.
В общем я при изучении пошел по пути "решать проблемы по мере поступления", поэтому начал создавать свою конфигурацию.
и у меня затык на моменте отображения в макете печати итогов по столбцам.

Теперь подробно. Есть документ "Калькуляция" в нем два раздела табличной части: Работы, материалы.
Есть подвал в котором отображается итого в каждом разделе по колонке "Сумма".
Есть Сумма документа в котором отображается сумма двух "Итого" работ и материалов.

Проблема в том, что когда я создаю с помощью конструктора печати документов макет печать, я не могу вывести вот эти "итого" в конце каждого раздела. как их взять из подвала и вставить в макет? Почему в конструкторе нет этих пунктов при создании макета? Может можно как-то без кода это сделать?

Может создать реквизит, и туда как-то записывать итоги? чтобы они отображались в конструкторе

И вообще я не могу редактировать этот макет. Никак не хочет он показывать изменения. Я уж весь интернет перерыл.
Люди пишут код. Но моих знаний не хватает понять, в какое место модуля этот код вставить.

Поэтому прошу вашей помощи. Прилагаю код в модуле менеджера.

Процедура Печать(ТабДок, Ссылка) Экспорт
   //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
   Макет = Документы.Калькуляция.ПолучитьМакет("Печать");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   Калькуляция.Дата,
   |   Калькуляция.Контрагент,
   |   Калькуляция.Номер,
   |   Калькуляция.Скидка,
   |   Калькуляция.СуммаДокумента,
   |   Калькуляция.Работы.(
   |      НомерСтроки,
   |      НаименованиеРабот,
   |      Цена,
   |      Количество,
   |      Сумма
   |   ),
   |   Калькуляция.Материалы.(
   |      НомерСтроки,
   |      НаименованиеМатериалов,
   |      Цена,
   |      Количество,
   |      Сумма
   |   )
   |ИЗ
   |   Документ.Калькуляция КАК Калькуляция
   |ГДЕ
   |   Калькуляция.Ссылка В (&Ссылка)";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьРаботыШапка = Макет.ПолучитьОбласть("РаботыШапка");
   ОбластьРаботы = Макет.ПолучитьОбласть("Работы");
   ОбластьМатериалыШапка = Макет.ПолучитьОбласть("МатериалыШапка");
   ОбластьМатериалы = Макет.ПолучитьОбласть("Материалы");
   Подвал = Макет.ПолучитьОбласть("Подвал");

   ТабДок.Очистить();

   ВставлятьРазделительСтраниц = Ложь;
   Пока Выборка.Следующий() Цикл
      Если ВставлятьРазделительСтраниц Тогда
         ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;

      ТабДок.Вывести(ОбластьЗаголовок);

      Шапка.Параметры.Заполнить(Выборка);
      ТабДок.Вывести(Шапка, Выборка.Уровень());

      ТабДок.Вывести(ОбластьРаботыШапка);
      ВыборкаРаботы = Выборка.Работы.Выбрать();
      Пока ВыборкаРаботы.Следующий() Цикл
         ОбластьРаботы.Параметры.Заполнить(ВыборкаРаботы);
         ТабДок.Вывести(ОбластьРаботы, ВыборкаРаботы.Уровень());
      КонецЦикла;

      ТабДок.Вывести(ОбластьМатериалыШапка);
      ВыборкаМатериалы = Выборка.Материалы.Выбрать();
      Пока ВыборкаМатериалы.Следующий() Цикл
         ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы);
         ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень());
      КонецЦикла;

      Подвал.Параметры.Заполнить(Выборка);
      ТабДок.Вывести(Подвал);

      ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
   //}}
КонецПроцедуры



wise

(0) можно САМОМУ посчитать... перед Циклом ставьте счетчик, а в цикле суммируйте ИтогРаботы = ИтогРаботы+ВыборкаРаботы.Сумма, аналогично с Материалами

в Макете добавьте области "ПодвалРаботы" и ПодвалМатериалы"  и туда параметры ИтогРаботы и ИтогМатериалы
ну а далее ПодвалРаботы.Параметры.ИтогРаботы = ИтогРаботы;
  ТабДок.Вывести(ПодвалРаботы);
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Пересвет

И наверное, сначала будет полезным сделать:

ИтогРаботы = 0;

OleHoli

Спасибо, буду пробовать.
А я пока вышел из ситуации так:
Добавил реквизиты итогоРаботы и ИтогоМатериалы.
и туда вывожу итоги.

Но хочется конечно в конце каждой таблицы их выводить. У меня не получалось редактировать этот макет. он не отображал изменения. хотя в коде я их прописывал. Буду дальше воевать.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск