Суммировать строки во внешней печатной форме
Добрый день. С помощью конструктора запросов сделал внешнюю печатную форму для документа РеализацияТоваровУслуг (конфигурация "Бухгалтерия для Беларуси, редакция 2.1"). Как сделать, чтобы в макете суммировались в итоговые значения сумма и сумма НДС для раздела услуг и раздела товаров. И еще - надо, чтобы было суммирование сумм и сумм НДС в графу Всего с НДС.
Процедура ПечатьОбъекта(ТабДок, Ссылка) Экспорт
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Макет = ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Номер КАК Номер,
| РеализацияТоваровУслуг.Дата КАК Дата,
| РеализацияТоваровУслуг.Организация.НаименованиеПолное КАК ОрганизацияНаименованиеПолное,
| РеализацияТоваровУслуг.Организация.ОсновнойБанковскийСчет.НомерСчета КАК ОрганизацияОсновнойБанковскийСчетНомерСчета,
| РеализацияТоваровУслуг.Организация.ОсновнойБанковскийСчет.Банк.Наименование КАК ОрганизацияОсновнойБанковскийСчетБанкНаименование,
| РеализацияТоваровУслуг.Организация.ОсновнойБанковскийСчет.Банк.Код КАК ОрганизацияОсновнойБанковскийСчетБанкКод,
| РеализацияТоваровУслуг.Организация.ИНН КАК ОрганизацияИНН,
| РеализацияТоваровУслуг.Контрагент.НаименованиеПолное КАК КонтрагентНаименованиеПолное,
| РеализацияТоваровУслуг.Контрагент.ИНН КАК КонтрагентИНН,
| РеализацияТоваровУслуг.ОснованиеОтпуска КАК ОснованиеОтпуска,
| РеализацияТоваровУслуг.ПунктПогрузки КАК ПунктПогрузки,
// | РеализацияТоваровУслуг.Организация.Адрес КАК ОрганизацияАдрес,
| РеализацияТоваровУслуг.ПунктРазгрузки КАК ПунктРазгрузки,
| РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
| РеализацияТоваровУслуг.АвтомобильДляСТО КАК АвтомобильДляСТО,
| РеализацияТоваровУслуг.Товары.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура.Наименование КАК НоменклатураНаименование,
| Номенклатура.ЕдиницаИзмерения.Наименование КАК НоменклатураЕдиницаИзмеренияНаименование,
| Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС
| ) КАК Товары,
| РеализацияТоваровУслуг.Услуги.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура.Наименование КАК НоменклатураНаименование,
| Номенклатура.ЕдиницаИзмерения.Наименование КАК НоменклатураЕдиницаИзмеренияНаименование,
| Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС
| ) КАК Услуги
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
УслугиОбластьШапкаТаблицы = Макет.ПолучитьОбласть("УслугиШапкаТаблицы");
УслугиОбластьПодвалТаблицы = Макет.ПолучитьОбласть("УслугиПодвалТаблицы");
УслугиОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("УслугиДетали");
ТоварыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ТоварыШапкаТаблицы");
ТоварыОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ТоварыПодвалТаблицы");
ТоварыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("ТоварыДетали");
// ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ОбластьДетальныхЗаписей.Параметры.Дата = Формат(ВыборкаДетальныеЗаписи.Дата, "ДФ=dd.MM.yyyy");
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
ТабДок.НачатьГруппуСтрок();
ТабДок.Вывести(УслугиОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
УслугиВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Услуги.Выбрать();
Пока УслугиВыборкаДетальныеЗаписи.Следующий() Цикл
УслугиОбластьДетальныхЗаписей.Параметры.Заполнить(УслугиВыборкаДетальныеЗаписи);
ТабДок.Вывести(УслугиОбластьДетальныхЗаписей, УслугиВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(УслугиОбластьПодвалТаблицы);
ТабДок.Вывести(ТоварыОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ТоварыВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Товары.Выбрать();
Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл
ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи);
ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ТоварыОбластьПодвалТаблицы);
ТабДок.ЗакончитьГруппуСтрок();
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры
ПоказатьПрикрепленные файлы:

По теме из базы знаний
- УПП: Переработка рулонных материалов, или сколько нужно программистов на крупный проект
- Загрузка всех онлайн-чеков с сервиса проверки чеков ФНС (налоговой) – обработка для получения данных о покупках по чекам онлайн-касс с загрузкой в Авансовый отчет
- Путевой лист грузового автомобиля в 1С:Бухгалтерия предприятия 3.0
- Комплект транспортных документов: Товарно-транспортная накладная, Транспортная накладная (включая новую форму от 01.03.2022), Реестр сертификатов - сформированных на основании нескольких разных документов
- Подстановка номенклатуры в печатную форму УПД для УНФ 1.6
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Так например, если особо не заморачиваться. Необходимо добавить в макет строки с итогами.
Запрос, конечно мог бы вернуть готовые итоги, но не думаю, что получится проще, но кто предложат вариант получше, и для себя возьму...
СуммаИтого = 0;
Пока ТоварыВыборкаДетальныеЗаписи.Следующий() Цикл
ТоварыОбластьДетальныхЗаписей.Параметры.Заполнить(ТоварыВыборкаДетальныеЗаписи);
ТабДок.Вывести(ТоварыОбластьДетальныхЗаписей, ТоварыВыборкаДетальныеЗаписи.Уровень());
СуммаИтого = СуммаИтого + ТоварыВыборкаДетальныеЗаписи.Сумма;
КонецЦикла;
п = ТоварыОбластьИтоги.Параметры;
п.СуммаИтого = СуммаИтого;
ТабДок.Вывести(ТоварыОбластьИтоги, ВыборкаДетальныеЗаписи.Уровень() + 1); // с уровнем проверить надо
ПоказатьЗапрос, конечно мог бы вернуть готовые итоги, но не думаю, что получится проще, но кто предложат вариант получше, и для себя возьму...
(4) Заменил, в конфигураторе ошибок нет, в режиме 1С Предприятие пишет "Поле объекта не обнаружено (СуммаИтого)"
Прикрепленные файлы:
Ошибка.txt

Никогда, (слышите?) никгда не давайте новичкам примеры кода. Они не понимают слова "пример". Они копипастят его в своё поделье, а потом делают круглые глаза - "ой, а чо ето?"... Никогда в голову им не приходит посмотреть на использование переменных, сравнить их имена и предназначения в своем коде и в приведенном примере.
Программа же сама разберется, фигли.
Программа же сама разберется, фигли.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот