Регистры накопления. Учет остатков
Прежде всего нас интересует информация о том, сколько и какой товар есть у нас на складах. Для накопления такой информации мы создадим регистр ОстаткиТоваров.
- Описание
- Подробнее
Описание
Объект конфигурации «Регистр накопления» предназначен для описания структуры накопления данных. На основе объекта конфигурации «Регистр накопления» платформа создает в базе данных таблицы, в которых будут накапливаться данные, поставляемые различными объектами базы данных.
На основании таблицы движений регистра накопления система рассчитывает таблицу итогов регистра, которая хранит в базе данных итоги на момент времени последнего движения (актуальные итоги).
Отличительной особенностью регистра накопления является то, что он не предназначен для интерактивного редактирования пользователем. Разработчик может при необходимости предоставить пользователю возможность редактировать регистр накопления. Но предназначение регистра накопления заключается в том, чтобы его модификация производилась на основе алгоритмов работы других объектов базы данных, а не в результате непосредственных действий пользователя.
Основным назначением регистра накопления является накопление числовой информации в разрезе нескольких «измерений», которые описываются разработчиком в соответствующем объекте конфигурации «Регистр накопления» и являются подчиненными объектами конфигурации.
Виды числовой информации, накапливаемой регистром накопления, называются «ресурсами», они также являются подчиненными объектами и описываются в конфигураторе.
Предлагаю создать регистр накопления и произвести учет остатков.
Создайте регистр накопления «Остатки товаров».


В измерениях необходимо установить ссылки на соответствующие справочники.
Список регистраторов.

Откройте документ «Расходная накладная» и на вкладке «прочее» откройте модуль объекта.

Далее в открывшимся модуле нажмите правую кнопку мыши и выберите «Конструктор запроса с обработкой результата».

В конструкторе выберите следующие поля из регистра накопления.

Далее на вкладке «Условия» необходимо задать условие того что количество должно быть меньше нуля:

Далее вернёмся на вкладку «Таблицы и поля» для создания ещё одного запроса.



Допишите сформировавшийся код:
Процедура ОбработкаПроведения (Отказ, Режим)
// регистр ОстаткиТоваров Расход
Движения.ОстаткиТоваров. Записывать = Истина:
Для Каждого ТекСтрокаРасходныеДанные Из РасходныеДанные Цикл
Движение = Движения. Остаткитоваров. Добавить (); Движение. ВидДвижения = ВидДвиженияНакопления. Расход; Движение.Период = Дата;
Движение.Товар = ТехстрокаРасходныеданные. Товар; Движение.Склад = Склад:
Движение. Количество= ТекСтрокаРасходныеДанные. Количество;
КонецЦикла:
Запрос = Новый Запрос:
Запрос. Текст
"ВЫБРАТЬ
ОстаткиТоваровОстатки. Товар КАК Товар,
ОстаткиТоваровОстатки. Склад КАК Склад,
ОстаткиТоваровОстатки КоличествоОстаток КАК КоличествоОстаток
РегистрНакопления. ОстаткиТоваров. Остатки (
Товар в
(ВЫБРАТЬ
РасходнаяНакладнаяРасходныеДанные.Товар КАК Товар
из
Документ. РасходнаяНакладная. РасходныеДанные КАК РасходнаяНакладнаяРасходныеДанные)) КАК ОстаткиТоваровостатки
где
ОстаткиТоваровОстатки. КоличествоОстаток < 0"; Запрос. УстановитьПараметр(Расходныеданные, "РасходныеДанные")
РезультатЗапроса = Запрос. Выполнить ();
Если РезультатЗапроса. Пустой ()
тогда Возврат;
КонецЕсли:
Отказ=Истина:
ВыборкаДетальныеЗаписи = РезультатЗапроса. Выбрать ();
Пока ВыборкадетальныеЗаписи.Следующий () Цикл
Сообщить ("На складе " " + ВыборкадетальныеЗаписи.Склад + " не хватает товара " + ВыборкадетальныеЗаписи.Товар + " в размере " + ВыборкадетальныеЗаписи. Количествоостаток) ;
Конеццикла:
КонецПроцедуры

