Основные объекты: Регистры накопления. Часть 3. Создание регистра оборотов
-- Вот что, дорогой патрон. Мне сдается,
что вы меня понимаете. Вам придется
побыть часок гигантом мысли и
особой, приближенной к императору.
-- Зачем?
-- Затем, что нам нужен оборотный
капитал. Завтра моя свадьба. Я не нищий.
Я хочу пировать в этот знаменательный день.
(И. Ильф, Е. Петров. Двенадцать стульев)
В предыдущем разделе мы рассмотрели регистр остатков на примере регистра “Реализация”.
Теперь перейдем к созданию второго вида регистров накопления – регистру оборотов.
Создадим регистр оборотов “Реализация” (в поле “Вид регистра” указываем, xmk это будет регистр оборотов):
На закладке “Данные” определим два измерения “Наименование товара” (тип “СправочникСсылка.Номенклатура”), “Покупатель” (тип “СправочникСсылка.ПоставщикиИПотребители”) и два ресурса: “Количество” (тип “Число”, 10, 0) и “Сумма” (тип “Число”, 10, 2):
Настроим форму списка регистра накопления на закладке “Формы”:
Настроим также форму набора записей путем добавления к форме списка (аналогично тому, как это делалось в предыдущем разделе):
Изменим документ “Расходная” для того, чтобы разрешить ему выполнять движение регистра оборотов “Реализация”.
Откроем свойства документа “Расходная” на закладке “Движения”. В верхней части данного окна пометим флажок “Регистры накопления – Реализация”. В нижней части окна появится наименование регистра оборотов “Реализация”:
Далее нажмем на кнопку “Конструктор движений” и добавим регистр оборотов “Реализация” в перечень регистров:
Добавляем для регистра оборотов “Реализация” табличную часть “Товары”:
Заполняем соответствия параметров с помощью кнопки “Заполнить выражения”:
В нашем случае, из-за того, что заданное нами название измерения “НаименованиеТовара” отличается от названия соответствующего реквизита документа, поле “НаименованиеТовара” в столбце “Выражение” осталось незаполненным. Заполняем его вручную двойным щелчком на соответствующей строках в разделе “Реквизиты документа”:
Обратим внимание, что при формировании движений регистра оборотов отсутствует выбор типа движения регистра (Приход или Расход). Потому, по умолчанию, наименование регистра в Конструкторе движений указывается со значком “плюс” ():
Таким образом, данные документов “Расходная” будут прибавляться к текущему значению оборотов.
Все исходные данные Конструктора движения регистров настроены. Нажимаем кнопку OK.
В созданную ранее процедуру ОбработкаПроведения в модуле объекта документа “Расходная” конструктор добавил следующие строки кода:
Для Каждого ТекСтрокаТовары Из Товары Цикл
Проверим действие созданного механизма в пользовательском режиме 1С.
Откроем форму списка документов “Расходная” и перепроведем несколько документов (например, накладные 2 и 3).
Затем откроем регистр оборотов “Реализация. Мы получим примерно следующее:
Упражнения: 1. Проанализируйте код, добавленный Конструктором движений документа “Расходная” в процедуру ОбработкаПроведения.
2. Измените код процедуры ОбработкаПроведения документа “Расходная” так, чтобы он содержал один общий цикл (а не два различных цикла, как было сформировано Конструктором движений).
Впоследствии данные этой таблицы могут быть просуммированы, и по каждому измерению могут быть получены итоги оборотов ресурсов.
В пользовательском режиме можно также установить необходимый интервал дат (Действия – Установить интервал дат... или путем нажатия на кнопку ) и/или сделать необходимый отбор товаров с помощью кнопки настройки фильтра
.
Попробуем далее с помощью регистра оборотов рассчитать итог оборотов по конкретным товарам. Для этого используем метод Обороты объекта “РегистрНакопленияМенеджер” (об использовании этого метода можно более подробно узнать в Синтакс-Помощнике).
Поместим на форму списка регистра оборотов “Реализация” кнопку “Обороты”, которая при нажатии выполняет процедуру “ОборотыНажатие”:
Текст кода самой процедуры “ОборотыНажатие” может быть следующим:
Процедура ОборотыНажатие(Элемент)
Приведенная выше процедура “ОборотыНажатие” является упрощенной и выполняет печать данных об оборотах реализации по проведенным расходным накладным за весь период работы компании.
Проверяем работу процедуры в пользовательском режиме 1С:
Упражнение. Проанализируйте код процедуры “ОборотыНажатие”.