• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Запрос 1С 7.7

  • Автор темы leory
  • Дата начала
L

leory

Здравствуйте. Подскажите пожалуйста. Каким образом можно подсчитать сумму реализаций в данном запросе, например с СТ00000008 по СТ00000013 (см скриншот). Вообще в идеале планируется сделать так. Справа добавляется еще одна колонка. И в ней напротив каждой реализации выводится сумма всех реализаций, которые были до нее раньше по времени, включительно. Вот текст запроса
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Покупатель = Регистр.ЗарплатаМенеджера.Покупатель;
|ДокументыУчета = Регистр.ЗарплатаМенеджера.ДокументРеализация, Регистр.ЗарплатаМенеджера.ДокументСтрВыпБанкаПриход;
|СуммаРеализация = Регистр.ЗарплатаМенеджера.СуммаРеализация;
|СуммаСтрВыпБанкаПриход = Регистр.ЗарплатаМенеджера.СуммаСтрВыпБанкаПриход;
|Функция РеализацияСумма = Сумма(СуммаРеализация);
|Функция СтрВыпБанкаПриходСумма = Сумма(СуммаСтрВыпБанкаПриход);
|Группировка Покупатель упорядочить по Покупатель.Наименование;
|Группировка Документ;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Покупатель
Таб.ВывестиСекцию("Покупатель");
Пока Запрос.Группировка(2) = 1 Цикл
// Заполнение полей Документ
Таб.ВывестиСекцию("Документ");
КонецЦикла;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры

Скриншот запроса и сам отчет прилагаю. Конфигурация типовая ТиС 7.7. ЗарплатаМенеджера-это регистр оборотов.
 

Вложения

  • Unbenannt.JPG
    Unbenannt.JPG
    59,6 КБ · Просмотры: 548
  • 00______.rar
    7 КБ · Просмотры: 135
H

has

объявить переменную какую нибудь и накапливать ее в цикле

Код:
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Покупатель
Таб.ВывестиСекцию("Покупатель");
СуммаРеализаций= 0;
Пока Запрос.Группировка(2) = 1 Цикл
СуммаРеализаций= СуммаРеализаций+ Запрос.СуммаРеализация;
// Заполнение полей Документ
Таб.ВывестиСекцию("Документ");
КонецЦикла;
КонецЦикла;

если я правильно понял...
 
L

leory

объявить переменную какую нибудь и накапливать ее в цикле

Код:
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Покупатель
Таб.ВывестиСекцию("Покупатель");
СуммаРеализаций= 0;
Пока Запрос.Группировка(2) = 1 Цикл
СуммаРеализаций= СуммаРеализаций+ Запрос.СуммаРеализация;
// Заполнение полей Документ
Таб.ВывестиСекцию("Документ");
КонецЦикла;
КонецЦикла;

если я правильно понял...


Has, спасибо за помощь. Я сделал так, как вы написали, тогда выдает ошибку "Поле агрегатного объекта не обнаружено (СуммаРеализаций)". Что это может значить?
 
L

leory

Все, все работает. Я сам затупил, вы все правильно поняли и написали. Еще раз спасибо!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!