prosdo.ru 1
Регистр накопления




  1. ОК Регистр накопления

  2. Структура регистра накопления

  3. Отличительные особенности

  4. Создание регистра накопления


Сегодня познакомимся с ОК Регистр накопления. Узнаете, для чего используется этот объект, какой структурой он обладает и каковы его отличительные особенности.
Зачем нужен регистр накопления?
Один из главных моментов разработки любой конфигурации - создание механизма учета накопления данных.

Казалось бы, у нас есть что расходовать и приходовать (справочники), есть чем расходовать и приходовать (документы). Осталось построить отчеты, и автоматизация нашего предприятия закончена. Это не так!

1.
Путем анализа документов можно получить требуемые выходные данные. Но, если завтра ОАО «Респект Продакшн» решит изменить свои бизнес-процессы, и нам потребуется ввести в конфигурацию еще один документ (или несколько документов!!!).

Например, сейчас товары поступают в ОАО «Респект Продакшн» и затем расходуются. Руководство захотело усилить материальный контроль и решило приходовать товары на основной склад организации и затем выдавать их материально ответственным лицам. В этом случае нам придется добавить в конфигурацию еще один документ, который будет фиксировать перемещение материалов между основным складом и материально ответственными лицами. Нам придется переработать все отчеты, которые были нами созданы к этому моменту с тем, чтобы они учитывали изменения, вносимые новым документом. А если в нашей конфигурации 20 документов?!?!?!?!?!!!!!

2. Отчеты, анализирующие документы, будут работать медленно, что вызывает раздражение пользователя и недовольство руководителей.

Поэтому, в системе 1С:Предприятие есть несколько объектов конфигурации, которые позволяют создавать в БД структуры, для накопления информации в удобном анализа виде.


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



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

Отличительная особенность регистра накопления – он не предназначен для интерактивного редактирования пользователем.

Основное назначение регистра накопления – накопление числовой информации в разрезе нескольких измерений, которые описываются разработчиком в ОК Регистр накопления и являются подчиненными объектами конфигурации.

Виды числовой информации, накапливаемой регистром накопления, называются ресурсами.

Например, регистр накопления может накапливать информацию о количестве и сумме товаров на складах. В этом случае он будет иметь измерения Товар и Склад и ресурсы Количество и Сумма.

Изменение состояния регистра накопления происходит при проведении документа, и заключается в том, что в регистр добавляются записи. Каждая запись содержит значения измерений, значения приращение ресурсов, ссылку на документ, который вызвал эти изменения (регистратор) и «направление» приращения (приход или расход). Такой набор называется движениями регистра накопления. Каждому движению регистра накопления всегда должен соответствовать регистратор.

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



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

Создадим новый ОК Регистр накопления.

Имя – ОстаткиМатериалов.

Далее.

Создадим измерения регистра:


  • Материал, тип СправочникСсылка.Номенклатура;

  • Склад, тип СправочникСсылка.Склады.


Создадим ресурс Количество, длина 15, тонность 3.


Если попробовать запустить 1С в режиме отладки, то система выдаст сообщение об ошибке:

Это сообщение подтверждает тот факт, что назначение регистра накопления в том, чтобы аккумулировать данные, поставляемые различными документами!!!

Создание движений документа Приходная накладная
Движения документа – это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом.
Открываем окно редактирования ОК Документ ПриходнаяНакладная.

На закладке Движения в списке регистров конфигурации отметьте регистр накопления ОстаткиМатериалов.


Сразу после отметки выбранного регистра становится доступной кнопка Конструктора движений.

Нажимаем кнопку «Конструктор движений»

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


В нашем случае там один регистр ОстаткиМатериалов.

В списке Реквизиты документа должны находиться исходные данные для создания движений.

В таблице Поле – Выражение должны быть заданы формулы, по которым будут вычисляться значения измерений и ресурсов регистра при записи движений.


Обратите внимание, что по умолчанию конструктор предлагает нам создавать движения прихода (Тип движения регистра – Приход, символ рядом с названием регистра) по регистру ОстаткиМатериалов. Это нас вполне устраивает, т.к. документ ПриходнаяНакладная и должен приходовать материалы.

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


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

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

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


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

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

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

Посмотрим, как это работает. Запустим 1С:Предприятие в режиме отладки и откроем одновременно два окна: список документов ПриходнаяНакладная и список регистра накопления ОстаткиМатериалов (Операции → Регистр накопления).

Откроем Приходную накладную № 1 и нажмем ОК. Обратите внимание, что при проведении приходной накладной появляются соответствующие записи в регистрах накопления (рис.).



Аналогичные действия проделаем и с документом Приходная накладная №2.

Создание движений документа Оказание услуги
Аналогичным образом создадим движение документа ОказаниеУслуги.

Нажимаем кнопку «Конструктор движений»
Документ ОказаниеУслуги должен расходовать материалы. Необходимо выбрать правильный тип движения регистров ( Расход).

В Табличной части выбираем ПреченьНоменклатуры.

Нажмите кнопку Заполнить выражения.

При автоматическом заполнении поле Материал не заполнится. Если так и оставить, то в регистре накопления в строках с типом Движение регистра – расход имя номенклатуры фиксироваться не будет. Чтобы этого избежать, надо выбрать поле Материал и в поле Реквизиты документа дважды щелкнуть по строке ТекСтрокаПереченьНоменклатуры.Номенклатура. Таким образом, имя номенклатуры для строк регистра накопления будет выбираться из табличной части документа.
То же самое проделайте, если в Полях не установлено выражение.
Запустим отладку и создадим документ оказания услуги, кото­рый будет расходовать один транзистор Philips за 3 рубля.

Проведем документ оказания услуги и убедимся, что в регист­ре накопления он создал верные движения.


Сформированные таким образом движения этого документа будут не совсем правильны. Дело в том, что в документе Оказание услуги, в отличие от документа Приходная накладная могут со­держаться не только расходуемые материалы, но и услуги. Поэтому в регистр Остатки материалов будут попадать записи и о расходу­емых услугах, что неправильно.

Пока мы ничего не будем делать с движениями, которые сфор­мировал конструктор, но как только познакомимся с перечисления­ми, мы внесем в обработчик проведения необходимые изменения.