Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab5.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
822.27 Кб
Скачать

Обеспечение промежуточной подсуммировки итогов в отчете с использованием запросов

Рассмотрим задачу:

Ведомость поступления товаров от поставщика ____________ за ___ период

С _____- по ______

Дата

Товар

Склад

Единицы

Колич.

цена

стоимость

Сумма ндс

Всего с ндс

Итого: < > < > < >

Замечание 1. Строки отчета группируются по складам. В конце группы следует включать строку «Итого по складу».

2. Формируем новый отчет. Форма диалога:

3. Макет:

Поле «Единица» (тип: Справочик.ЕдиницыИзмерения) является реквизитом элемента справочника товаров

  1. В форме отчета в свойствах элемента управления «ПолеТабличногоДокумент1» убрать вызов процедуры нестандартной расшифровки (см. событие «Обработка расшифровки») - здесь имеет смысл только стандартная расшифровка, но на каждую ячейку таблицы – отдельная:

    • На ячейку «Склад» - обеспечиваем открытие формы элемента справочника складов

( Обратите внимание: использование расшифровки – только ячейка!)

  • На ячейку «товар» - обеспечиваем открытие формы элемента справочника товаров

  • На суммовые ячейки - обеспечиваем открытие формы документа «Поступление товаров», формирующего данное движение в регистре накопления «Закупки»

  1. Текст программы (выполняем запрос к основной таблице регистров накопления):

Запрос = Новый Запрос;

Запрос.Текст = " Выбрать

|Закупки.товар как товар,

|Закупки.Поставщик как Поставщик,

|Закупки.ВидОперации как ВидОперации,

|Закупки.Регистратор как Документ,

|Закупки.Количество как Количество,

|Закупки.СуммаБезНДС как Сумма,

|Закупки.СуммаНДС как НДС,

|Закупки.Регистратор.Склад как склад,

|Закупки.товар.ЕдиницаИзмерения как Единица,

|Закупки.Период Как период

| Из РегистрНакопления.Закупки как Закупки

| Где Период<=&Кон и Период>=&Нач и Поставщик=&ВыбПоставщик и ВидОперации=&выбОперация

|итоги Сумма(СуммаБезНДС),Сумма(Количество),Сумма(СуммаНДС)

|ПО ОБЩИЕ, Закупки.Регистратор.Склад

| Автоупорядочивание" ;

Запрос.УстановитьПараметр("Нач", НачалоДня(НачПериода));

Запрос.УстановитьПараметр("Кон", КонецДня( КонПериода));

Запрос.УстановитьПараметр("ВыбПоставщик", ВыбПоставщик);

Запрос.УстановитьПараметр("ВыбОперация",

Перечисления.ВидыОпераций.Закупка);

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

ВыбРег = Результат.Выбрать();

ТабличноеПоле1=Результат.Выгрузить();

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

Возврат;

Сначала записываем результат запроса в табличное поле для просмотра:

В табличном поле сначала находится строка, формирующая общие итоги, затем строка, формирующая итоги по первому складу, и, наконец, строки – закупки по этому складу и т.д.

После того, как убедимся, что данная результирующая таблица сформирована верно, продолжаем текст программы (предварительно удалим команду ВОЗВРАТ, а также изменим размеры элементов управления в форме отчета)

Таб=ЭлементыФормы.ПолеТабличногоДокумента1;

Макет=Отчеты.ВедомостьПоступленияТоваровОтПоставщиков.ПолучитьМакет("МакетВедомости");

Область=Макет.ПолучитьОбласть("Шапка");

Область.Параметры.ОписаниеПериода=представлениепериода( НачалоДня(НачПериода),КонецДня( КонПериода),"ФП = Истина");

Таб.Вывести(Область);

ффф=0;

ВыбРег = Результат.Выбрать();

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

Если ВыбРег.ТипЗаписи()=ТипЗаписиЗапроса.ИтогПоГруппировке Тогда

Область=Макет.ПолучитьОбласть("ПоСкладу");

Область.Параметры.ИтогСумма =ВыбРег.Сумма;

Область.Параметры.ИтогКоличество =ВыбРег.Количество;

Область.Параметры.ИтогСуммаНДС =ВыбРег.НДС;

Область.Параметры.ИтогВсегоСНДС =ВыбРег.Сумма+ВыбРег.НДС;

Таб.Вывести(Область);

ИначеЕсли ВыбРег.ТипЗаписи()=ТипЗаписиЗапроса.ОбщийИтог Тогда

Продолжить;

Иначе

Область=Макет.ПолучитьОбласть("Строка");

Область.Параметры.Ном =ффф+1;

Область.Параметры.Товар =ВыбРег.товар;

Область.Параметры.ТоварРасшифровка=ВыбРег.товар;

Область.Параметры.Количество =ВыбРег.Количество;

Область.Параметры.Сумма =ВыбРег.Сумма;

Область.Параметры.Единица =ВыбРег.Единица;

Область.Параметры.Склад =ВыбРег.Склад;

Область.Параметры.СкладРасшифровка=ВыбРег.Склад;

Область.Параметры.СуммаНДС =ВыбРег.НДС;

Область.Параметры.ВсегоСНДС =ВыбРег.НДС+ВыбРег.Сумма;

Область.Параметры.ДокументРасшифровка=ВыбРег.Документ;

Таб.Вывести(Область);

ффф=ффф+1;

КонецЕсли;

КонецЦикла;

ВыбРег = Результат.Выбрать();

Если ВыбРег.Следующий() Тогда

Если ВыбРег.ТипЗаписи()=ТипЗаписиЗапроса.ОбщийИтог Тогда

Область=Макет.ПолучитьОбласть("Подвал");

Область.Параметры.ВсегоСумма =ВыбРег.Сумма;

Область.Параметры.ВсегоКоличество = ВыбРег.Количество;

Область.Параметры.ВсегоСуммаНДС =ВыбРег.НДС;

Область.Параметры.ВсегоВсегоСНДС =

ВыбРег.Сумма+ВыбРег.НДС;

Таб.Вывести(Область);

КонецЕсли;

КонецЕсли;

Таб.ТолькоПросмотр = Истина;

Таб.Показать("ВедомостьПоступленияСНДС");

КонецПроцедуры

Результат:

Стандартная расшифровка: а) на поле «Склад»

б) на поле «товар»

в) на числовые поля:

  1. Разработка сводной таблицы

товар

поступило

возвращено

Кол

Сумма

Кол

Сумма

Для разработки сводной таблицы формируем новый объект конфигурации типа «Отчет». Назовем его «СводнаяТаблица».

В форме диалога данного отчета вставим элементы управления «Выбор периода » , «ПолеТабличногоДокумента», а также «ТабличноеПоле»

В ыбор периода ПолеТабличногоДокумента1 ТабличноеПоле1

Основу разработки сводной таблицы составляет запрос. Для сводной таблицы с заданными полями необходимо выполнить запрос к основной таблице регистра накопления «Закупки». Получим фрагмент программы расчета:

Запрос = Новый Запрос;

Запрос.Текст = " Выбрать

|Остатки.товар как товар,

|Остатки.ВидОперации как ВидОперации,

|Остатки.СуммаБезНДС как СуммаБезНДС,

|выбор Когда Остатки.ВидОперации=&Приход Тогда СуммаБезНДС Иначе 0 Конец как СуммаПоступило,

|выбор Когда Остатки.ВидОперации=&Приход Тогда Количество Иначе 0 Конец как КолПоступило,

|выбор Когда Остатки.ВидОперации=&Расход Тогда СуммаБезНДС Иначе 0 Конец как СуммаВозвращено,

|выбор Когда Остатки.ВидОперации=&Расход Тогда Количество Иначе 0 Конец как КолВозвращено

| Из РегистрНакопления.Закупки как Остатки

| Где Период<=&Кон и Период>=&Нач

| Итоги Сумма(СуммаПоступило),Сумма(КолПоступило),Сумма(СуммаВозвращено),Сумма(КолВозвращено) ПО товар

|";

Запрос.УстановитьПараметр("Нач", НачалоДня(НачПериода));

Запрос.УстановитьПараметр("Кон", КонецДня( КонПериода));

Запрос.УстановитьПараметр("Приход",Перечисления.ВидыОпераций.Закупка);

Запрос.УстановитьПараметр("Расход",Перечисления.ВидыОпераций.Возврат);

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

ТабличноеПоле1.Очистить();

ТабличноеПоле1=Результат.Выгрузить();

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

Возврат;

После запуска отчета получим результаты выгрузки в табличное поле результата запроса

Затем возвращаемся в конфигуратор и продолжаем программу, удалив команду «Возврат»

//Возврат;

ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;

НашаСводТаб=ТабДок.ВстроенныеТаблицы.Добавить(Тип("СводнаяТаблица"));

НашаСводТаб.ИсточникДанных =Результат;

НашаСводТаб.ОтображатьПодписиИтогов=Истина;

НашаСводТаб.Строки.Добавить(НашаСводТаб.Поля.Товар);

НашаСводТаб.Данные.Добавить(НашаСводТаб.Поля.КолПоступило);

НашаСводТаб.Данные.Добавить(НашаСводТаб.Поля.СуммаПоступило);

НашаСводТаб.Данные.Добавить(НашаСводТаб.Поля.КолВозвращено);

НашаСводТаб.Данные.Добавить(НашаСводТаб.Поля.СуммаВозвращено);

НашаСводТаб.ПоложениеИтоговСтрок=ПоложениеИтоговСтрокСводнойТаблицы.Низ;

После запуска отчета получим:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]