Консультация № 161888
03.03.2009, 09:30
0.00 руб.
08.09.2009, 16:27
0 2 1
Ошибка в выводе итогов.

Помогите пожалуйста найти ошибку. На рис макет1 , отчет который должен быть получен.Проблема с выводом итогов.Надо, чтобы выводились итоги по группировке сотрудников, т.е например ИТОГ по топливу для Васина по всему приходящему через него топливу, а у меня выводит отдельно для каждой строчки итог. В чем ошибка? Может быть в макете, который на рис макет или в запросе?





Приложение:
Запрос = Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.СчетДт КАК СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК Номенклатура,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК ФизическоеЛицо,
| СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Сумма,
| ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
| СУММА(ХозрасчетныйДвиженияССубконто.КоличествоДт) КАК Количество,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код КАК ТабельныйНомер,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ХозрасчетныйДвиженияССубконто.СчетДт.Код КАК Код,
| ХозрасчетныйДвиженияССубконто.СчетДт.Наименование КАК ИмяСчета
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
| &НачПериода,
| &КонПериода,
| СчетДт В ИЕРАРХИИ (&Счет10_3)
| И СчетКт В ИЕРАРХИИ (&Счет71_1)) КАК ХозрасчетныйДвиженияССубконто
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйДвиженияССубконто.СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1,
| ХозрасчетныйДвиженияССубконто.Регистратор,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1.БазоваяЕдиницаИзмерения
|ИТОГИ
| СУММА(Сумма),
| СУММА(Количество)
|ПО
| ОБЩИЕ,
| СчетДт,
| Номенклатура");

Запрос.Параметры.Вставить("НачПериода", НачПериода);
Запрос.Параметры.Вставить("КонПериода", КонПериода);
Запрос.Параметры.Вставить("Счет10_3", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.03"));
Запрос.Параметры.Вставить("Счет71_1", ПланыСчетов.Хозрасчетный.НайтиПоКоду("71.01"));

Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;

ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
Макет = ПолучитьМакет("МакетТопливо");
ОбластьШапкаТаблицы= Макет.ПолучитьОбласть("Шапка");
ОбластьСчетДт=Макет.ПолучитьОбласть("СчетДт");
ОбластьДетали= Макет.ПолучитьОбласть("Детали");
ОбластьИтоги= Макет.ПолучитьОбласть("ОбщиеИтоги");
ОбластьИтогиПоГруппировке= Макет.ПолучитьОбласть("ИтогПоГруппировке");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаОбщие = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаОбщие.Следующий() Цикл
ВыборкаСчет = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСчет.Следующий() Цикл
ВыборкаНоменклатура = ВыборкаСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
Выборка = ВыборкаНоменклатура.Выбрать();
ОбластьСчетДт.Параметры.Заполнить(ВыборкаНоменклатура);
ТабДок.Вывести(ОбластьСчетДт);
Пока Выборка.Следующий() Цикл
ОбластьДетали.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьДетали);
ОбластьИтогиПоГруппировке.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьИтогиПоГруппировке);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();

Обсуждение

Неизвестный
03.03.2009, 09:39
общий


давно
Студент
218854
56
03.03.2009, 10:26
общий
это ответ
Здравствуйте, Екатерина Петрова!
Для вывода итогов по физ лицу надо добавить еще один уровень группировки в запросе(как в приложении). Также в вашем коде не заполняются параметры для области макета "Шапка". Заполнение области итогов по топливу вы проводите в цикле выбора детальных записей, что и приводит к выводу строки после каждой детальной записи. Я вынесла эту строку за цикл по физическим лицам. Это позволит получить необходимые данные в отчете.

Приложение:
Запрос = Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйДвиженияССубконто.СчетДт КАК СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК Номенклатура,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК ФизическоеЛицо,
| СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Сумма,
| ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
| СУММА(ХозрасчетныйДвиженияССубконто.КоличествоДт) КАК Количество,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код КАК ТабельныйНомер,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ХозрасчетныйДвиженияССубконто.СчетДт.Код КАК Код,
| ХозрасчетныйДвиженияССубконто.СчетДт.Наименование КАК ИмяСчета
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
| &НачПериода,
| &КонПериода,
| СчетДт В ИЕРАРХИИ (&Счет10_3)
| И СчетКт В ИЕРАРХИИ (&Счет71_1)) КАК ХозрасчетныйДвиженияССубконто
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйДвиженияССубконто.СчетДт,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1,
| ХозрасчетныйДвиженияССубконто.Регистратор,
| ХозрасчетныйДвиженияССубконто.СубконтоКт1.Код,
| ХозрасчетныйДвиженияССубконто.СубконтоДт1.БазоваяЕдиницаИзмерения,
| ХозрасчетныйДвиженияССубконто.СчетДт.Код,
| ХозрасчетныйДвиженияССубконто.СчетДт.Наименование
|ИТОГИ
| СУММА(Сумма),
| СУММА(Количество)
|ПО
| ОБЩИЕ,
| СчетДт,
| Номенклатура,
| ФизическоеЛицо");


Запрос.Параметры.Вставить("НачПериода", НачПериода);
Запрос.Параметры.Вставить("КонПериода", КонПериода);
Запрос.Параметры.Вставить("Счет10_3", ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.03"));
Запрос.Параметры.Вставить("Счет71_1", ПланыСчетов.Хозрасчетный.НайтиПоКоду("71.01"));

Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;

ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
Макет = ПолучитьМакет("МакетТопливо");

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("Шапка");
ОбластьСчетДт = Макет.ПолучитьОбласть("СчетДт");
ОбластьДетали = Макет.ПолучитьОбласть("Детали");
ОбластьИтоги = Макет.ПолучитьОбласть("ОбщиеИтоги");
ОбластьИтогиПоГруппировке= Макет.ПолучитьОбласть("ИтогПоГруппировке");

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

//заполнение параметров шапки !!!
ОбластьШапкаТаблицы.Параметры.НачПериода = Формат(НачПериода, "ДФ=dd.MM.yyyy");
ОбластьШапкаТаблицы.Параметры.КонПериода = Формат(КонПериода, "ДФ=dd.MM.yyyy");
ТабДок.Вывести(ОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаОбщие = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаОбщие.Следующий() Цикл

ВыборкаСчет = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСчет.Следующий() Цикл

ВыборкаНоменклатура = ВыборкаСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
ОбластьСчетДт.Параметры.Заполнить(ВыборкаНоменклатура);
ТабДок.Вывести(ОбластьСчетДт, 1);

ВыборкаФизЛицо = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаФизЛицо.Следующий() Цикл

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

ОбластьИтогиПоГруппировке.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьИтогиПоГруппировке);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
Форма ответа