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

Примеры решения задач

Первое задание.

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

Поставщик

Товар

Документ

Количество

Сумма

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

Отчет должен иметь промежуточные подсуммировки по поставщикам

Второе задание.

Сформировать Отчет: «Ведомость поступления товаров от поставщиков за ___ месяц ___ года»

Поставщик

Товар

Количество

Сумма

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

Третье задание.

Сформировать Отчет: «Ведомость безвозмездного поступления ТМЦ от организаций за период с по »

Организация

Поступило материалов на сумму

Поступило ОС на сумму

Поступило денег на сумму

Всего поступило от организации

Итого: _________ _________ ____________ ______________

Решение первого задания.

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

Поставщик

Товар

Документ

Количество

Сумма

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

Отчет должен иметь промежуточные подсуммировки по поставщикам

Отчет основывается на проводках

Дебет

Кредит

Сумма

Счет

Субконто

(Материал)

Количество

Счет

Субконто

(Поставщик)

41

41

и т.д.

Вилка

ложка

10

15

60

60

Искра

Комета

1000

2000

Каждая проводка по поступлению ТМЦ за период войдет в отчет отдельной строкой. Кроме того, в отчете участвуют субконто проводок (Товар, поставщик). Следовательно, для формирования запроса обращаемся к таблице регистра бухгалтерии, ведущей детальные записи по проводкам с учетом субконто. Это таблица:

Движения с субконто. Доступ к записям регистра бухгалтерии с учетом субконто

Поля таблицы:

    • <Измерения>

    • <Измерения>Дт

    • <Измерения>Кт

    • <Реквизиты>

    • <Ресурсы>

    • <Ресурсы>Дт

    • <Ресурсы>Кт

    • Активность

    • ВидСубконтоДт<Номер субконто>

    • ВидСубконтоКт<Номер субконто>

    • МоментВремени

    • НомерСтроки

    • Период

    • Регистратор

    • СубконтоДт<Номер субконто>

    • СубконтоДт<Номер субконто>

    • СчетДт

    • СчетКт

Кроме того, таблица содержит параметры:

Начало периода

Тип параметра: Дата, МоментВремени, Граница. Начало периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено

Конец периода

Тип параметра: Дата, МоментВремени, Граница. Конец периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено

Условие

Конструкция языка запросов. Условие выбора проводок. В условии могут использоваться все поля таблицы

А) Сначала формируем новый отчет с формой диалога

ПолеТабличногоДокумента для вывода отчета

Т абличноеПоле для вывода результатов запроса (временное)

Б) Затем для него формируем макет

в) Формируем запрос:

// данный счет введен в план счетов как предопределенный

Счет41=Планысчетов.Хозрасчетный.Товары;

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

Запрос.Текст =

"ВЫБРАТЬ

| ЖурналОперацийДвиженияССубконто.Регистратор как документ,

| ЖурналОперацийДвиженияССубконто.СубконтоДт1 как ТОвар,

| ЖурналОперацийДвиженияССубконто.СубконтоКт1 как Поставщик,

| ЖурналОперацийДвиженияССубконто.КоличествоДт как количество,

| ЖурналОперацийДвиженияССубконто.Сумма как сумма

|ИЗ

| РегистрБухгалтерии.ЖурналОпераций.ДвиженияССубконто(&Нач,&Кон) КАК ЖурналОперацийДвиженияССубконто

| Где ЖурналОперацийДвиженияССубконто.СчетДТ=&Счет41

| Итоги Сумма(КоличествоДт), Сумма(Сумма) по Поставщик, ОБЩИЕ";

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

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

Запрос.УстановитьПараметр("Счет41", Счет41);

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

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

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

Возврат;

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

После того, как убеждаемся, что в таблице результатов запроса есть и группировочные, и детализированные строчки, продолжаем текст модуля формирования отчета:

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

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

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

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

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

ффф=0;

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

ВсегоСумма=0;

ВсегоКоличество=0;

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

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

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

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

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

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

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

Продолжить;

Иначе

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

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

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

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

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

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

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

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

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

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

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

ффф=ффф+1;

ВсегоСумма=ВсегоСумма+ВыбРег.Сумма;

ВсегоКоличество=ВсегоКоличество+ВыбРег.Количество;

КонецЕсли;

КонецЦикла;

Тз=Новый ТаблицаЗначений;

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

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

Область.Параметры.ВсегоСумма =Тз.Итог("Сумма");

Область.Параметры.ВсегоКоличество = Тз.Итог("Количество");

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

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

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

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

Получим результат:

В отчете работают расшифровки:

  • по поставщику:

  • по товару:

  • по документу:

Второе задание.

Сформировать Отчет: «Ведомость поступления товаров от поставщиков за ___ месяц ___ года»

Поставщик

Товар

Количество

Сумма

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

Решение второго задания

Отчет требует вывода сводных итогов по товарам и поставщикам: в отчете должно быть столько строк, сколько различных поставщиков за период поставляли различные товары.

Источником для отчета может служить виртуальная таблица «Обороты»

  • Обороты. Получение оборотов по счетам и между счетами, а также по измерениям и субконто.

Поля таблицы:

    • <Имя измерения>

    • <ИмяРесурса>Оборот

    • <ИмяРесурса>ОборотДт

    • <ИмяРесурса>ОборотКт

    • КорСубконто<Номер субконто>

    • КорСчет

    • НомерСтроки

    • Период

    • Регистратор

    • Субконто<НомерСубконто>

    • Счет

Параметры:

Начало периода

Тип параметра: Дата, МоментВремени, Граница. Начало периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено

Конец периода

Тип параметра: Дата, МоментВремени, Граница. Конец периода, за который будут выбираться проводки. Значение по умолчанию: Неопределено

Периодичность

Конструкция языка запросов. Задает периодичность, с которой надо сгруппировать данные. Допустимые значения: Период, Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Регистратор, Запись. Значение по умолчанию: Период

Условие по счету

Конструкция языка запросов. Условие, по каким счетам получать данные. В условие можно использовать только поле <Счет>. Значение по умолчанию: Неопределено

Субконто

Тип параметра: ПланВидовХарактеристикСсылка, массив значений ПланВидовХарактеристикСсылка. Задает набор и порядок субконто, которыми можно оперировать в запросе. Накладывает фильтр на записи по видам субконто (если массив, то по И). Если параметр <Субконто> не задан, то субконто определяются позиционно. То есть берется вид субконто соответствующего счета из соответствующей позиции. Так, если <Субконто> не определен, и делается запрос по счету, у которого определены виды субконто первое "Материалы", второе "Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады. Если делается запрос по двум счетам, при этом у первого настройка субконто "Материалы, Склад", а у второго "Склад, Материал" и не задан параметр <Субконто>, то поле "Субконто1" будет содержать и материалы для первого счета и склады для второго счета. Поле "Субконто2" будет содержать склады для первого счета и материалы для второго. Если параметр <Субконто> задан, то выбираются данные только по тем счетам, у которых определены все указанные виды субконто. При этом поля "Субконто<N>", будут содержать значения, соответствующие переданным видам субконто. Например, если один счет имеет настройку субконто "Материалы, Склад", а второй "Склад, Материалы", и параметр виды субконто задан как массив "Материалы, Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады, не зависимо от счета. Значение по умолчанию: Неопределено

Условие

Конструкция языка запросов. Условие, по которому отбираются данные. Можно использовать поля <Субконто<Номер субконто>>, <Имя измерения>. Значение по умолчанию: Неопределено

Условие по кор. счету

Конструкция языка запросов. Условие, по каким счетам получать данные. В условие можно использовать только поле <Счет>. Значение по умолчанию: Неопределено

КорСубконто

Тип параметра: ПланВидовХарактеристикСсылка, массив значений ПланВидовХарактеристикСсылка. Задает набор и порядок кор. субконто, которыми можно оперировать в запросе. Накладывает фильтр на записи по видам кор. субконто (если массив то по И). Значение по умолчанию: Неопределено

Формируем новый отчет, его форму диалога, макет.

Запрос в модуле расчета будет иметь вид:

Счет41=Планысчетов.Хозрасчетный.Товары;

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

Запрос.Текст =

"ВЫБРАТЬ

| ЖурналОперацийОбороты.Субконто1 как ТОвар,

| ЖурналОперацийОбороты.КорСубконто1 как Поставщик,

| ЖурналОперацийОбороты.КоличествоОборотДт как количество,

| ЖурналОперацийОбороты.СуммаОборот как сумма

|ИЗ

| РегистрБухгалтерии.ЖурналОпераций.Обороты(&Нач,&Кон) КАК

| ЖурналОперацийОбороты

| Где ЖурналОперацийОбороты.Счет=&Счет41

| Итоги Сумма(КоличествоОборотДт), Сумма(СуммаОборот) по Поставщик";

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

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

Запрос.УстановитьПараметр("Счет41", Счет41);

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

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

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

Возврат;

Результат формирования запроса:

После того, как убеждаемся, что в таблице результатов запроса есть и группировочные, и детализированные строчки, продолжаем текст модуля формирования отчета:

Результат:

Третье задание.

Сформировать Отчет: «Ведомость безвозмездного поступления ТМЦ от организаций за период с___ по ___ »

Организация

Поступило материалов на сумму

Поступило ОС на сумму

Поступило денег на сумму

Всего поступило от организации

Итого: _________ _________ ____________ ______________

Решение третьего задания

Формируем новый отчет с макетом:

И сточником данных для запроса возьмем виртуальную таблицу «ДвиженияССубконто», но в запросе свернем таблицу по поставщику.

Для свертки данных исходной таблицы используем при расчете числовых полей функцию «СУММА» и команду «Сгруппировать», которые обеспечат получение свернутых по группировкам числовых значений.

роме того, в запросе обеспечим хранение в одной строке (по поставщику) суммового оборота по счетам 10, 01,51.

Получим запрос:

счет10=ПланыСчетов.Хозрасчетный.Материалы;

счет01=ПланыСчетов.Хозрасчетный.ОсновныеСредства;

счет51=ПланыСчетов.Хозрасчетный.РасчетныйСчет;

Макет = ОтчетОбъект.ПолучитьМакет("ЗапросКРегиструБухгалтерии");

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

Запрос.Текст =

"ВЫБРАТЬ

|ЖурналОперацийДвиженияССубконто.СубконтоКт1 КАК Контрагент,

|Сумма(выбор Когда ЖурналОперацийДвиженияССубконто.СчетДт=&Счет10 |Тогда ЖурналОперацийДвиженияССубконто.Сумма Иначе 0 Конец) КАК |Сумма10,

| Сумма(выбор Когда ЖурналОперацийДвиженияССубконто.СчетДт=&Счет01 Тогда ЖурналОперацийДвиженияССубконто.Сумма Иначе 0 Конец) КАК Сумма01,

| Сумма(выбор Когда ЖурналОперацийДвиженияССубконто.СчетДт=&Счет51 Тогда ЖурналОперацийДвиженияССубконто.Сумма Иначе 0 Конец) КАК Сумма51

|ИЗ

| РегистрБухгалтерии.ЖурналОпераций.ДвиженияССубконто(&Нач,&Кон) КАК ЖурналОперацийДвиженияССубконто

| Сгруппировать по ЖурналОперацийДвиженияССубконто.СубконтоКт1

|ИТОГИ ПО ОБЩИЕ";

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

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

Запрос.УстановитьПараметр("счет10", счет10);

Запрос.УстановитьПараметр("счет01", счет01);

Запрос.УстановитьПараметр("счет51", счет51);

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

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

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

//Возврат;

Результат запроса в ТабличномПоле:

В запросе есть обороты по поставщикам, а также Общий итог

Продолжаем модуль расчета:

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

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

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

ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

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

ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы);

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

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

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

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

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

Продолжить;

КонецЕсли;

ОбластьДетальныхЗаписей.Параметры.Заполнить(Выборка);

ОбластьДетальныхЗаписей.Параметры.Итого=ОбластьДетальныхЗаписей.Параметры.Сумма01+ОбластьДетальныхЗаписей.Параметры.Сумма10+ОбластьДетальныхЗаписей.Параметры.Сумма51;

ТабДок.Вывести(ОбластьДетальныхЗаписей);

КонецЦикла;

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

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

ОбластьПодвал.Параметры.Заполнить(Выборка);

ОбластьПодвал.Параметры.Итого=ОбластьПодвал.Параметры.Сумма01+ОбластьПодвал.Параметры.Сумма10+ОбластьПодвал.Параметры.Сумма51;

ТабДок.Вывести(ОбластьПодвал);

КонецЕСли;

Окончательный отчет:

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