Пример 1 СоздатьНаборЗаписей ( CreateRecordSet )

advertisement
Работа с регистрами накопления
Регистры накопления позволяют хранить и быстро получать числовую
информацию в разрезе некоторых измерений, например, остаток на дату
конкретного вида товара на складе или суммарную стоимость покупок, который
делал за период конкретный клиент.
Регистры накопления бывают двух видов – регистры остатков (получают
остаток на дату, т.е. работают по принципу «приход-расход») и регистры
оборотов (получают суммарный оборот средств за период, т.е. работают только
по принципу «прихода»).
При создании регистра накопления нужно спроектировать его структуру, т.е.
измерения (в разрезе чего производится учет) и ресурсы (что конкретно
учитывается). Например, при анализе наличия материалов на складе нам нужно
учитывать количество, что является ресурсом. Учет количества производится в
разрезе двух измерений – материала, остаток которого считается, и склада, где
этот материал хранится.
Запись
в
регистры осуществляют
документы,
которых
называют
регистраторами. Запись в регистр какого-либо вида называется движением.
В документе связь с регистрами прописывается на вкладке «Движения»:
Для генерации движений можно использовать конструктор движений, который
генерирует код процедуры ОбработкаПроведения модуля объекта документа.
В результате будет сгенерирована следующая процедура, которая для каждой
строки табличной части Материалы генерирует собственное движение по
принципу «Создание пустой строки – заполнение ее атрибутов».
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора,
// внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// Регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаМатериалы.Количество;
КонецЦикла;
// }}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Посмотреть на движения документа можно будут с помощью кнопки «Перейти»
на панели инструментов в журнале документов.
Обращение с запросом к регистру накопления делается следующим образом.
Пусть нам требуется узнать, сколько осталось материала вида, хранящегося с
переменной ВыбранныйМатериал, на складе, ссылка на которого хранится в
переменное ВыбранныйСклад, на текущую дату. Тогда в нужную процедуруобработчик (например, на нажатие командной кнопки «Показать остатки»)
требуется вставить следующий программный код:
// требуется определить отбор по материалу и складу. Для этого часто используют объект
// типа Структура, в который заносятся пары «Поле-Значение».
Отбор = Новый Структура;
Отбор.Вставить(«Материал», ВыбранныйМатериал);
Отбор.Вставить(«Склад», ВыбранныйСклад);
// получение остатков будет производиться специальной функцией Остатки для регистра
// накопления – возвращается таблица значений, Отбор передается вторым параметром
Таб = РегистрыНакопления.ОстаткиМатериалов.Остатки(ТекущаяДата(), Отбор);
// В таблице будут строки, которые соответствуют отбору.
// Столбцы таблицы – измерения и ресурсы регистра накопления.
// Поскольку отбор учитывал только один материал и склад, можно получить количество
// этого материала как итог по столбцу «Коилчество»
Сообщить(«Количество - »+Таб.Итог(«Количество»)+ « штук»);
Для получения данных из регистра оборотов используется функция Обороты,
причем первые два параметра задают даты начала и конца периода, за который
требуется получить оборот.
Download