
Практическое задание к занятию 3(исбу) Запросы к регистрам накопления
Задание 1: Расчет остатков в форме документа. Документ «Поступление товаров» : добавить в табличную часть реквизит «Остаток». Рассчитать остаток по выбранному товару для выбранного в шапке документа склада. Расчет вести при изменении значения реквизита «Товар»
Задание 2. Сформировать два отчета:
1. Разработать отчет ( форма отчета – см. лабораторную работу 2 - ИСБУ) с помощью запроса к регистру накопления.
Ведомость поступления товаров от поставщиков за
период с ______ по_______
товар |
Поступило |
|
|
||
Кол |
Сумма |
|
|
|
Итого <> <>
1а. Дополнительный отчет:
Ведомость поступления товаров от поставщика ____________ за ___ период
С _____- по ______
Дата |
Товар |
Склад |
Единицы |
Колич. |
цена |
стоимость |
Сумма ндс |
Всего с ндс |
Итого: < > < > < >
Замечание 1. Строки отчета группируются по складам. В конце группы следует включать строку «Итого по складу».
Сформировать сводную таблицу на основании запроса к регистру накопления. Состав полей сводной таблицы :
товар |
поступило |
|
|
||
Кол |
Сумма |
|
|
|
Из прошлых практических занятий:
В конфигурации есть документ «ПоступлениеТоваров»
2. Разработаны регистры накопления «Закупки» и «ОстаткиТМЦ»
Движения в регистры выполняет модуль объекта документа поступления товаров:
Процедура ОбработкаПроведения(Отказ, Режим)
Для Каждого ТекСтрокаТовары Из Товары Цикл
// регистр Закупки
Движение = Движения.Закупки.Добавить();
Движение.Период = Дата;
Движение.Поставщик = Поставщик;
Движение.Товар = ТекСтрокаТовары.Товар;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.СуммаБезНДС = ТекСтрокаТовары.Сумма;
Движение.СуммаНДС = ТекСтрокаТовары.СуммаНДС;
Движение.ВидОперации = Перечисления.ВидыОпераций.Закупка;
КонецЦикла;
Для Каждого ТекСтрокаТовары Из Товары Цикл
// регистр ОстаткиТоваров Приход
Движение = Движения.ОстаткиТМЦ.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.приход;
Движение.Период = Дата;
Движение.Товар = ТекСтрокаТовары.Товар;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количество;
Движение.Сумма = ТекСтрокаТовары.Сумма;
КонецЦикла;
// записываем движения регистров
Движения.Закупки.Записать();
Движения.ОстаткиТМЦ.Записать();
КонецПроцедуры
Решение
1.Расчет остатков в форме документа. Документ «Поступление товаров» : добавить в табличную часть реквищит «Остаток». Рассчитать остаток по выбранному товару для выбранного в шапке докум ента склада. Расчет вести при изменении значения реквизита «Товар».
а) Добавляем реквизит в табличную часть документа «Поступление товаров»
б) в форму документа включаем данный реквизит
В
свойствах поля «товар» пишем название
обработчика события «ПриИзменении»
Содержание обработчика данного события, расположенного в модуле формы документа :
ПриИзмененииТовара(Элемент);
Запрос_=Новый Запрос("
| ВЫБРАТЬ
| ОстаткиТМЦОстатки.КоличествоОстаток как количество
|ИЗ
| РегистрНакопления.ОстаткиТМЦ.Остатки(
| &ВыбДата,
| Склад = &ВыбСклад
| И Товар = &ВыбТовар) КАК ОстаткиТМЦОстатки");
Запрос_.УстановитьПараметр("ВыбДата",КонецДня(Дата));
Запрос_.УстановитьПараметр("ВыбСклад",Склад);
Запрос_.УстановитьПараметр("ВыбТовар",ЭлементыФормы.Товары.ТекущаяСтрока.Товар);
рез=Запрос_.Выполнить();
Выборка=рез.Выбрать();
Если Выборка.Следующий() Тогда
ЭлементыФормы.Товары.ТекущаяСтрока.Остаток=Выборка.количество;
КонецЕсли;
КонецПроцедуры
Замечание. Запрос можно формировать с использованием «Конструктора запроса»
г) Результат: