Отчет основывается на проводках
Дебет | Кредит | Сумма | |||
Счет | Субконто (Материал) | Количество | Счет | Субконто (Поставщик) | |
и т.д. | Вилка ложка | Искра Комета |
Каждая проводка по поступлению ТМЦ за период войдет в отчет отдельной строкой. Кроме того, в отчете участвуют субконто проводок (Товар, поставщик). Следовательно, для формирования запроса обращаемся к таблице регистра бухгалтерии, ведущей детальные записи по проводкам с учетом субконто. Это таблица:
Движения с субконто. Доступ к записям регистра бухгалтерии с учетом субконто
Поля таблицы:
- <Измерения>
- <Измерения>Дт
- <Измерения>Кт
- <Реквизиты>
- <Ресурсы>
- <Ресурсы>Дт
- <Ресурсы>Кт
- Активность
- ВидСубконтоДт<Номер субконто>
- ВидСубконтоКт<Номер субконто>
- МоментВремени
- НомерСтроки
- Период
- Регистратор
- СубконтоДт<Номер субконто>
- СубконтоДт<Номер субконто>
- СчетДт
- СчетКт
Кроме того, таблица содержит параметры:
Начало периода | Тип параметра: Дата, МоментВремени, Граница. Начало периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено |
Конец периода | Тип параметра: Дата, МоментВремени, Граница. Конец периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено |
Условие | Конструкция языка запросов. Условие выбора проводок. В условии могут использоваться все поля таблицы |
А) Сначала формируем новый отчет с формой диалога
ПолеТабличногоДокумента для вывода отчета | ТабличноеПоле для вывода результатов запроса (временное) |
Б) Затем для него формируем макет
в) Формируем запрос:
// данный счет введен в план счетов как предопределенный
Счет41=Планысчетов.Хозрасчетный.Товары;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЖурналОперацийДвиженияССубконто.Регистратор как документ,
| ЖурналОперацийДвиженияССубконто.СубконтоДт1 как ТОвар,
| ЖурналОперацийДвиженияССубконто.СубконтоКт1 как Поставщик,
| ЖурналОперацийДвиженияССубконто.Количество Дт как количество,
| ЖурналОперацийДвиженияССубконто.Сумма как сумма
|ИЗ
| РегистрБухгалтерии.ЖурналОпераций.ДвиженияССубконто(&Нач,&Кон) КАК ЖурналОперацийДвиженияССубконто
| Где ЖурналОперацийДвиженияССубконто.СчетДТ=&Счет41
| Итоги Сумма(КоличествоДт), Сумма(Сумма) по Поставщик, ОБЩИЕ";
Запрос.УстановитьПараметр("Нач", НачалоДня(НачПериода));
Запрос.УстановитьПараметр("Кон", КонецДня(КонПериода));
Запрос.УстановитьПараметр("Счет41", Счет41);
Результат = Запрос.Выполнить();
ТабличноеПоле1 = Результат.Выгрузить();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
Возврат;
После вывода результата запроса в ТабличноеПоле получим
После того, как убеждаемся, что в таблице результатов запроса есть и группировочные, и детализированные строчки, продолжаем текст модуля формирования отчета:
Таб=ЭлементыФормы.ПолеТабличногоДокумента1;
Макет=Отчеты.ВедомостьПоступленияТоваровОтПоставщиковБухучет.ПолучитьМакет("МакетВедомости");
Область=Макет.ПолучитьОбласть("Шапка");
Область.Параметры.ОписаниеПериода=представлениепериода(НачалоДня(НачПериода),КонецДня(КонПериода),"ФП = Истина");
Таб.Вывести(Область);
ффф=0;
ВыбРег = Результат.Выбрать();
ВсегоСумма=0;
ВсегоКоличество=0;
Пока ВыбРег.Следующий() Цикл
Если ВыбРег.ТипЗаписи()=ТипЗаписиЗапроса.ИтогПоГруппировке Тогда
Область=Макет.ПолучитьОбласть("ПоПоставщику");
Область.Параметры.ИтогСумма =ВыбРег.Сумма;
Область.Параметры.ИтогКоличество =ВыбРег.Количество;
Таб.Вывести(Область);
ИначеЕсли ВыбРег.ТипЗаписи()=ТипЗаписиЗапроса.ОбщийИтог Тогда
Продолжить;
Иначе
Область=Макет.ПолучитьОбласть("Строка");
Область.Параметры.Ном =ффф+1;
Область.Параметры.Товар =ВыбРег.товар;
Область.Параметры.ТоварРасшифровка=ВыбРег.товар;
Область.Параметры.Количество =ВыбРег.Количество;
Область.Параметры.Сумма =ВыбРег.Сумма;
Область.Параметры.Поставщик =ВыбРег.Поставщик;
Область.Параметры.ПоставщикРасшифровка=ВыбРег.Поставщик;
Область.Параметры.Документ=ВыбРег.Документ;
Область.Параметры.ДокументРасшифровка=ВыбРег.Документ;
Таб.Вывести(Область);
ффф=ффф+1;
ВсегоСумма=ВсегоСумма+ВыбРег.Сумма;
ВсегоКоличество=ВсегоКоличество+ВыбРег.Количество;
КонецЕсли;
КонецЦикла;
Тз=Новый ТаблицаЗначений;
Тз=Результат.Выгрузить();
Область=Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ВсегоСумма =Тз.Итог("Сумма");
Область.Параметры.ВсегоКоличество = Тз.Итог("Количество");
Таб.Вывести(Область);
Таб.ТолькоПросмотр = Истина;
Таб.Показать("ВедомостьПоступленияБухучет");
КонецПроцедуры
Получим результат:
В отчете работают расшифровки:
· по поставщику:
· по товару:
· по документу:
Второе задание.
Сформировать Отчет: « Ведомость поступления товаров от поставщиков за ___ месяц ___ года»
Поставщик | Товар | Количество | Сумма |
Итого: < > < > < >
Решение второго задания
Отчет требует вывода сводных итогов по товарам и поставщикам: в отчете должно быть столько строк, сколько различных поставщиков за период поставляли различные товары.
Источником для отчета может служить виртуальная таблица «Обороты»
· Обороты. Получение оборотов по счетам и между счетами, а также по измерениям и субконто.
Поля таблицы:
o <Имя измерения>
o <ИмяРесурса>Оборот
o <ИмяРесурса>ОборотДт
o <ИмяРесурса>ОборотКт
o КорСубконто<Номер субконто>
o КорСчет
o НомерСтроки
o Период
o Регистратор
o Субконто<НомерСубконто>
o Счет
Параметры:
Начало периода | Тип параметра: Дата, МоментВремени, Граница. Начало периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено |
Конец периода | Тип параметра: Дата, МоментВремени, Граница. Конец периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено |
Периодичность | Конструкция языка запросов. Задает периодичность, с которой надо сгруппировать данные. Допустимые значения: Период, Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Регистратор, Запись. Значение по умолчанию: Период |
Условие по счету | Конструкция языка запросов. Условие, по каким счетам получать данные. В условие можно использовать только поле <Счет>. Значение по умолчанию: Неопределено |
Субконто | Тип параметра: ПланВидовХарактеристикСсылка, массив значений ПланВидовХарактеристикСсылка. Задает набор и порядок субконто, которыми можно оперировать в запросе. Накладывает фильтр на записи по видам субконто (если массив, то по И). Если параметр <Субконто> не задан, то субконто определяются позиционно. То есть берется вид субконто соответствующего счета из соответствующей позиции. Так, если <Субконто> не определен, и делается запрос по счету, у которого определены виды субконто первое "Материалы", второе "Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады. Если делается запрос по двум счетам, при этом у первого настройка субконто "Материалы, Склад", а у второго "Склад, Материал" и не задан параметр <Субконто>, то поле "Субконто1" будет содержать и материалы для первого счета и склады для второго счета. Поле "Субконто2" будет содержать склады для первого счета и материалы для второго. Если параметр <Субконто> задан, то выбираются данные только по тем счетам, у которых определены все указанные виды субконто. При этом поля "Субконто<N>", будут содержать значения, соответствующие переданным видам субконто. Например, если один счет имеет настройку субконто "Материалы, Склад", а второй "Склад, Материалы", и параметр виды субконто задан как массив "Материалы, Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады, не зависимо от счета. Значение по умолчанию: Неопределено |
Условие | Конструкция языка запросов. Условие, по которому отбираются данные. Можно использовать поля <Субконто<Номер субконто>>, <Имя измерения>. Значение по умолчанию: Неопределено |
Условие по кор. счету | Конструкция языка запросов. Условие, по каким счетам получать данные. В условие можно использовать только поле <Счет>. Значение по умолчанию: Неопределено |
КорСубконто | Тип параметра: ПланВидовХарактеристикСсылка, массив значений ПланВидовХарактеристикСсылка. Задает набор и порядок кор. субконто, которыми можно оперировать в запросе. Накладывает фильтр на записи по видам кор. субконто (если массив то по И). Значение по умолчанию: Неопределено |
Формируем новый отчет, его форму диалога, макет.
Запрос в модуле расчета будет иметь вид:
Счет41=Планысчетов.Хозрасчетный.Товары;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЖурналОперацийОбороты.Субконто1 как ТОвар,
| ЖурналОперацийОбороты.КорСубконто1 как Поставщик,
| ЖурналОперацийОбороты.КоличествоОборотДт как количество,
| ЖурналОперацийОбороты.СуммаОборот как сумма
|ИЗ
| РегистрБухгалтерии.ЖурналОпераций.Обороты(&Нач,&Кон) КАК
| ЖурналОперацийОбороты
| Где ЖурналОперацийОбороты.Счет=&Счет41
| Итоги Сумма(КоличествоОборотДт), Сумма(СуммаОборот) по Поставщик";
Запрос.УстановитьПараметр("Нач", НачалоДня(НачПериода));
Запрос.УстановитьПараметр("Кон", КонецДня(КонПериода));
Запрос.УстановитьПараметр("Счет41", Счет41);
Результат = Запрос.Выполнить();
ТабличноеПоле1 = Результат.Выгрузить();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
Возврат;
Результат формирования запроса:
После того, как убеждаемся, что в таблице результатов запроса есть и группировочные, и детализированные строчки, продолжаем текст модуля формирования отчета:
Результат:
Третье задание.
Сформировать Отчет: «Ведомость безвозмездного поступления ТМЦ от организаций за период с___ по ___ »
Организация | Поступило материалов на сумму | Поступило ОС на сумму | Поступило денег на сумму | Всего поступило от организации |
Итого: _________ _________ ____________ ______________