Добрый день уважаемые знатоки 1С,
Прошу помочь разобраться в правильном построений циклов отчета.
Предоставляю часть цикла:
Отчет должен выводить секции "надЭтажПодразделения" , "надЭтажСтатья" и "надЭтаж" как группировки, то есть выводить каждый раз, когда меняется проект, элемент затрат или подразделение и должны выводятся итоговые данные для проекта, элемента затрат и подразделения. Это делается перед выводом секции "Этаж".
Проблема сейчас в том что по этому коду сначала выводеться пусатя строка секции этаж затем секции "надЭтажПодразделения" , "надЭтажСтатья" и "надЭтаж" , но итоги в этих секциях не считаються а берет толко сумму и количество первой строки.
Прошу помочь разобраться в правильном построений циклов отчета.
Предоставляю часть цикла:
Для Х = 1 По ТбЗнКС Цикл
ТбЗн.ПолучитьСтрокуПоНомеру(Х);
текПроект = ТбЗн.Проект;
текПС = ТбЗн.ЭлементыЗатрат;
текПодр = ТбЗн.Подразделения;
Объект = ТбЗн.Объект;
Количество = ТбЗн.Количество;
Себестоимость = ТбЗн.Себестоимость;
Сумма = ТбЗн.Сумма;
т_Тип = ?(Объект.Вид() = "ТМЦ", "²Ь²", ?(Объект.Вид() = "ОсновныеСредства", "РШ", ?(Объект.Вид() = "БИП", "²²","" )));
т_ТМЦ = СокрЛП(Объект);
Если (Объект.Выбран() = 1) Тогда
т_код = СокрЛП(Объект.Код);
т_ASкод = СокрЛП(Объект.ВнешКод);
т_ТМЦполн = СокрЛП(Объект.ПолноеНаименование);
КонецЕсли;
т_текПС = СокрЛП(текПС);
т_текПодр = СокрЛП(текПодр);
т_Количество = СокрЛП(Формат(Количество, стФорматК));
Если Количество = 0 Тогда
т_Себестоимость = СокрЛП(Формат(0, стФорматС));
Иначе
т_Себестоимость = СокрЛП(Формат(Сумма / Количество, стФорматС));
КонецЕсли;
т_Сумма = СокрЛП(Формат(Сумма, стФорматС));
прКоличество = прКоличество + Количество;
прСумма = прСумма + Сумма;
Если ПоПодр=1 Тогда
Если (текПодр <> прПодр) И (Х <> 1) Тогда
т_Количество = СокрЛП(Формат(прКоличество, стФорматК));
т_Сумма = СокрЛП(Формат(прСумма, стФорматС));
т_Подразделения = СокрЛП(текПодр) + " (кпбс³µ³Е³ЭбхЩ)";
Таб.ВывестиСекцию("надЭтажПодразделения");
прКоличество = 0;
прСумма = 0;
прНДС = 0;
прСуммаИтого = 0;
КонецЕсли;
КонецЕсли;
Если ПоСТ=1 Тогда
Если (текПС <> прПС) И (Х <> 1) Тогда
т_Количество = СокрЛП(Формат(прКоличество, стФорматК));
т_Сумма = СокрЛП(Формат(прСумма, стФорматС));
т_текПС = СокрЛП(текПС) + " (М³Лл³ЫЗЭ Сб¹н³Н)";
Таб.ВывестиСекцию("надЭтажСтатья");
прКоличество = 0;
прСумма = 0;
прНДС = 0;
прСуммаИтого = 0;
КонецЕсли;
КонецЕсли;
Если ПоСТ1=1 Тогда
Если (текПроект <> прПред) И (Х <> 1) Тогда
т_Количество = СокрЛП(Формат(прКоличество, стФорматК));
т_Сумма = СокрЛП(Формат(прСумма, стФорматС));
т_Проект = СокрЛП(текПроект) + " (дсбЫ»Пп)";
Таб.ВывестиСекцию("надЭтаж");
прКоличество = 0;
прСумма = 0;
прНДС = 0;
прСуммаИтого = 0;
КонецЕсли;
КонецЕсли;
Таб.ВывестиСекцию("Этаж");
прКоличество = прКоличество + Количество;
прСумма = прСумма + Сумма;
прПред = текПроект;
прПС = текПС;
прПодр = текПодр;
КонецЦикла;
ПоказатьОтчет должен выводить секции "надЭтажПодразделения" , "надЭтажСтатья" и "надЭтаж" как группировки, то есть выводить каждый раз, когда меняется проект, элемент затрат или подразделение и должны выводятся итоговые данные для проекта, элемента затрат и подразделения. Это делается перед выводом секции "Этаж".
Проблема сейчас в том что по этому коду сначала выводеться пусатя строка секции этаж затем секции "надЭтажПодразделения" , "надЭтажСтатья" и "надЭтаж" , но итоги в этих секциях не считаються а берет толко сумму и количество первой строки.
По теме из базы знаний
- Материальный отчет для Бухгалтерии 7.7
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
- Переход с 1С:УПП на 1C:ERP. Переезд пользователей с сохранением прежних прав
- Признаки и причины неуспешных внедрений 1С: ERP
- DDD, модульная архитектура и 1С – что общего?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Примерно так:
т = СоздатьОбъект("ТаблицаЗначений");
т.НоваяКолонка("подр");
т.НоваяКолонка("колво");
т.НоваяКолонка("сумма");
т.НоваяКолонка("тПС");
тПС = СоздатьОбъект("ТаблицаЗначений");
тПС.НоваяКолонка("ПС");
тПС.НоваяКолонка("колво");
тПС.НоваяКолонка("сумма");
тПС.НоваяКолонка("тХЗ");
заготовкаПС = ЗначениеВСтрокуВнутр(тПС);
тХЗ = СоздатьОбъект("ТаблицаЗначений");
тХЗ.НоваяКолонка("ХЗ");
тХЗ.НоваяКолонка("колво");
тХЗ.НоваяКолонка("сумма");
заготовкаХЗ = ЗначениеВСтрокуВнутр(тХЗ);
тбзн.ВыбратьСтроки();
Пока тбзн.ПолучитьСтроку() = 1 Цикл
подр = тбзн.Подразделения;
ПС = тбзн.ЭлементыЗатрат;
ХЗ = тбзн.ХЗ;
колво = тбзн.Количество;
сумма = тбзн.Сумма;
стрТ = 0;
Если т.НайтиЗначение(подр, стрТ, "подр") = 0 Тогда
т.НоваяСтрока();
т.подр = подр;
т.колво = 0;
т.сумма = 0;
т.тПС = ЗначениеИзСтрокиВнутр(заготовкаПС);
Иначе
т.ПолучитьСтрокуПоНомеру(стрТ);
КонецЕсли;
т.колво = т.колво + колво;
т.сумма = т.сумма + сумма;
тПС = т.тПС;
стрПС = 0;
Если тПС.НайтиЗначение(ПС, стрПС, "ПС") = 0 Тогда
тПС.НоваяСтрока();
тПС.ПС = ПС;
тПС.колво = 0;
тПС.сумма = 0;
тПС.тХЗ = ЗначениеИзСтрокиВнутр(заготовкаХЗ);
Иначе
тПС.ПолучитьСтрокуПоНомеру(стрПС);
КонецЕсли;
тПС.колво = тпс.колво + колво;
тПС.сумма = тПС.сумма + сумма;
тХЗ = тПС.тХЗ;
тХЗ.НоваяСтрока();
тХЗ.ХЗ = ХЗ;
тХЗ.колво = колво;
тХЗ.сумма = сумма;
КонецЦикла;
т.ВыбратьСтроки();
Пока т.ПолучитьСтроку() = 1 Цикл
таб.ВывестиСекцию("подр");
тПС = т.тПС;
тПС.ВыбратьСтроки();
Пока тПС.ПолучитьСтроку() = 1 Цикл
таб.ВывестиСекцию("ПС");
тХЗ = тПС.тХЗ;
тХЗ.ВыбратьСтроки();
Пока тХЗ.ПолучитьСтроку() = 1 Цикл
таб.ВывестиСекцию("ХЗ");
КонецЦикла;
КонецЦикла;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот