Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вывод итогов выборки в конец табличного документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
mabuta009
Доброго время суток.

У меня возникла такая небольшая проблемка, есть выборка, в конце после сортировки и всего остального я пытаюсь вывести ИТОГИ по колонкам.

Сами итоги выводяться но только сверху (вначале самой таблицы), и без каких либо подписей, что это итоги. А мне надо выводить эти итоги в конце табличного документа ну и подписать что это ИТОГИ.

Вот "кусок" запроса и сам внешний вид его:

|ВЫБРАТЬ
|    ОсновнаяВыборка.Сотрудник КАК Сотрудник,
|    (ОсновнаяВыборка.РезервОтпуска - ОсновнаяВыборка.Резерв2010) + РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА( &ДатаКон, ДЕНЬ), МЕСЯЦ)*2 КАК Резерв,
  |    ЕСТЬNULL(НачисленияРезультат.РезультатСреднего, 0) КАК РезультатСреднего,
|    (ЕСТЬNULL(НачисленияРезультат.РезультатСреднего, 0))/355 КАК СредняяЗП,
|    ((ОсновнаяВыборка.РезервОтпуска - ОсновнаяВыборка.Резерв2010) + РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА( &ДатаКон, ДЕНЬ), МЕСЯЦ)*2)*((ЕСТЬNULL(НачисленияРезультат.РезультатСреднего, 0))/355) КАК СумОбесп,
|    (((ОсновнаяВыборка.РезервОтпуска - ОсновнаяВыборка.Резерв2010) + РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА( &ДатаКон, ДЕНЬ), МЕСЯЦ)*2)*((ЕСТЬNULL(НачисленияРезультат.РезультатСреднего, 0))/355))*0.3726 КАК СумОбеспФОТ,
|    ((((ОсновнаяВыборка.РезервОтпуска - ОсновнаяВыборка.Резерв2010) + РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА( &ДатаКон, ДЕНЬ), МЕСЯЦ)*2)*((ЕСТЬNULL(НачисленияРезультат.РезультатСреднего, 0))/355))) + ((((ОсновнаяВыборка.РезервОтпуска - ОсновнаяВыборка.Резерв2010) + РАЗНОСТЬДАТ(&ДатаНач, КОНЕЦПЕРИОДА( &ДатаКон, ДЕНЬ), МЕСЯЦ)*2)*((ЕСТЬNULL(НачисленияРезультат.РезультатСреднего, 0))/355))*0.3726) КАК СумОбеспОбщ
|ИЗ
|    ОсновнаяВыборка КАК ОсновнаяВыборка
|        ЛЕВОЕ СОЕДИНЕНИЕ НачисленияРезультат КАК НачисленияРезультат
|        ПО ОсновнаяВыборка.Сотрудник = НачисленияРезультат.СотрудникиНач
|
|УПОРЯДОЧИТЬ ПО
|    Сотрудник
|АВТОУПОРЯДОЧИВАНИЕ
|ИТОГИ
|    СУММА (Резерв),
|    СУММА (РезультатСреднего),
|    СУММА (СредняяЗП),
|    СУММА (СумОбесп),
|    СУММА (СумОбеспФОТ),
|    СУММА (СумОбеспОбщ)
|    ПО
|    ОБЩИЕ
|";


Помогите пожалуйста, если что вывожу результаты просто:

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


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

Потом после цикла уже выводите куда Вам надо.
awp
тзРезультат = Результат.Выгрузить();
Для каждого Результат из тзРезультат Цикл
ОбработкаПрерыванияПользователя();
СтрОснова = Макет.ПолучитьОбласть("Основа");
СтрОснова.Параметры.Сотрудник = Результат.Сотрудник;
СтрОснова.Параметры.РезервОтпуска = Результат.Резерв;
СтрОснова.Параметры.РезультатСред = Результат.РезультатСреднего;
СтрОснова.Параметры.СредняяЗП = Результат.СредняяЗП;
СтрОснова.Параметры.СумОбесп = Результат.СумОбесп;
СтрОснова.Параметры.СумОбеспФОТ = Результат.СумОбеспФОТ;
СтрОснова.Параметры.СумОбеспОбщ = Результат.СумОбеспОбщ;
ТабДокумент.Вывести(СтрОснова);
  КонецЦикла;

СтрОснова = Макет.ПолучитьОбласть("Итоги");
СтрОснова.Параметры.СредняяЗП = тзРезультат.Итог("СредняяЗП");
СтрОснова.Параметры.СумОбесп = тзРезультат.Итог("СумОбесп");
СтрОснова.Параметры.СумОбеспФОТ = тзРезультат.Итог("СумОбеспФОТ");
СтрОснова.Параметры.СумОбеспОбщ = тзРезультат.Итог("СумОбеспОбщ");
ТабДокумент.Вывести(СтрОснова);
mabuta009
Цитата(Flamepayne @ 08.11.11, 5:56) необходимо зарегистрироваться для просмотра ссылки
Не совсем понял, что Вы хотите, но можно в цикле считать итоги, потом выводить
Пока Результат.Следующий() Цикл
ОбработкаПрерыванияПользователя();
СтрОснова = Макет.ПолучитьОбласть("Основа");
СтрОснова.Параметры.Сотрудник = Результат.Сотрудник;
СтрОснова.Параметры.РезервОтпуска = Результат.Резерв;
СтрОснова.Параметры.РезультатСред = Результат.РезультатСреднего;
СтрОснова.Параметры.СредняяЗП = Результат.СредняяЗП;
СтрОснова.Параметры.СумОбесп = Результат.СумОбесп;
СтрОснова.Параметры.СумОбеспФОТ = Результат.СумОбеспФОТ;
СтрОснова.Параметры.СумОбеспОбщ = Результат.СумОбеспОбщ;
ТабДокумент.Вывести(СтрОснова);
ИтогРезерв = ИтогРезерв+Результат.Резерв; // и так делать для всех, где хотите получить итог
КонецЦикла;

Потом после цикла уже выводите куда Вам надо.



Спасибо, ВАШ способ подошел, я так и хотел с делать, только вот с циклами перемужрил, и еще там надо еще присвоить переменной 0, чтоб суммиа считалась
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.