Регистр «Остатки номенклатуры»

Теперь, когда мы знаем, для чего предназначены регистры накопления, посмотрим, как можно их использовать в нашем примере. Начнем знакомство с регистрами накопления с регистров остатков.

Прежде всего, нас интересует информация о том, сколько и каких материалов есть у нас на складах. Для накопления такой информации мы создадим регистр «ОстаткиНоменклатуры».

Откроем в конфигураторе нашу учебную конфигурацию и создадим новый объект конфигурации Регистр накопления. Зададим имя регистра - «ОстаткиНоменклатуры», его вид – «остатки». Нажмем «Далее» и перейдем к созданию структуры регистра.

Рис. 133 Создание регистра «ОстаткиНоменклатуры»

Определите у него два измерения: «Номенклатура» типа «СправочникСсылка.Номенклатура» и «Склад» типа «СправочникСсылка.Склады», два ресурса «Количество» типа «Число(15,3)» - неотрицательное, и «Сумма» типа «Число(15,2)» - неотрицательное, настройте формы списка.

Рис. 134 Задание измерений и реквизитов регистра

Если вы сейчас попытаетесь запустить 1С:Предприятие в режиме отладки, то система выдаст сообщение об ошибке: «РегистрНакопления.ОстаткиНоменклатуры: Ни один из документов не является регистратором для регистра». Это сообщение еще раз подтверждает тот факт, что назначение регистра накопления в том, чтобы аккумулировать данные, поставляемые различными документами.

Движения документа - это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом. Перейдем на закладку «Регистраторы» и там отметим документы, которые могут выполнять движения данного регистра.

Рис. 135 Задание регистраторов регистра

Остается модифицировать документ «ПриходнаяНакладная». Необходимо разрешить ему «двигать» данный регистр и, используя конструктор движений, переопределить обработку проведения. Откроем окно редактирования объекта конфигурации Документ «ПриходнаяНакладная».

Перейдем на закладку «Движения» и в списке регистров конфигурации отметим регистр накопления «ОстаткиНоменклатуры». Обратите внимание, что сразу после отметки выбранного регистра становится доступной кнопка «Конструктор движений». Этим конструктором мы и воспользуемся.

Рис. 136 Задание движений регистра в документе

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

Рис. 137 Предупреждение о замещении процедуры

Рис. 138 Добавление регистра накопления

В списке «Реквизиты документа» должны находиться исходные данные для создания движений. А в таблице «Поле – Выражение» должны быть заданы формулы, по которым будут вычисляться значения измерений и реквизитов регистра при записи движений. Обратите внимание, что по умолчанию конструктор предлагает нам создавать движения прихода (символ «+» рядом с названием регистра) по регистру «ОстаткиНоменклатуры». Это нас вполне устраивает, ведь документ «ПриходнаяНакладная» и должен приходовать материалы.

В поле выбора «Табличная часть» выберем табличную часть нашего документа - «Материалы». Список реквизитов документа автоматически заполнится реквизитами нашей табличной части. Теперь нажмем «Заполнить выражения», и в ответ в нижнем окне сформируется соответствие полей и выражений.

Рис. 139 Результат работы конструктора движений

Как видите, конструктор движений установил соответствия подходящим образом: в качестве материала в регистр будет записан материал из табличной части документа, в качестве склада - склад, указанный в шапке документа, а в качестве количества и суммы – количество и сумма из табличной части документа. Нажмем «ОК» и посмотрим, какой текст сформировал конструктор в модуле объекта.

Рис. 140 Окончательный текст процедуры «ОбработкаПроведения()»

Конструктор создал обработчик события «ОбработкаПроведения» объекта конфигурации Документ и поместил его в модуль объекта.

Как вы видите, конструктор создал два цикла обхода табличной части документа - отдельно, для каждого регистра. Так происходит потому, что в общем случае документ может иметь несколько табличных частей, и информация, содержащаяся в каждой из них, может предназначаться для своего отдельного регистра.

Внутри обработчика расположен цикл, который предназначен для перебора строк табличной части нашего документа. В цикле обращение к табличной части документа происходит по имени («Материалы»), а строки табличной части документа представляют собой коллекцию значений, для перебора которой можно использовать конструкцию Для каждого... из... цикл.

Объект встроенного языка ДокументОбъект имеет свойство «Движения». Оно возвращает коллекцию наборов записей регистров, которые принадлежат этому документу. К набору записей документа, принадлежащему конкретному регистру, можно обратиться, указав через точку имя этого регистра.

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

Затем мы присваиваем нужные значения всем полям этой записи и после перебора всех строк документа (после завершения циклов) «одним махом» записываем в регистр «ОстаткиНоменклатуры» весь набор записей движений документа.

Посмотрим, как это работает. Запустим 1С:Предприятие в режиме отладки и откроем одновременно два окна: список документов «ПриходнаяНакладная» и список регистра накопления «ОстаткиНоменклатуры». Откроем Приходную накладную №1 и нажмем «ОК». Обратите внимание, что при проведении приходной накладной появляются соответствующие записи в регистрах накопления, которые можно посмотреть, щелкнув по кнопке «Перейти» формы списка или формы элемента, и выбрав там соответствующий регистр.

Рис. 141 Движения приходной накладной по регистру «Остатки номенклатуры»

Если вести речь о регистрах остатков, то нельзя закончить разговор о данном объекте, не ответив на вопрос: «На какую дату система хранит рассчитанные остатки». Ответ: «Соответствующая граница выставляется в пользовательском режиме».


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: