Для тех, кто работал с версией 7.7

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


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

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

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

Изменение состояния регистра накопления происходит, как правило, при проведении документа, и заключается в том, что в


84



Быстрая разработка прикладных решений


Регистр накопления


 


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

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

<*" Узнай больше!

О структуре объектов встроенного языка, предназначенных для работы с регистрами накопления можно прочитать в главе «Регистры накопления» на странице 599.


Создание регистра накопления ОстаткиМатериалов

Т

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

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

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

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


 


«Материал», с

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

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


типом


Затем создадим ресурс «Количество» с длиной 15 и точностью 3.

В результате этих действий регистр «ОстаткиМатериалов» должен иметь следующий вид:



 


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


86



Быстрая разработка прикладных решений


Регистр накопления


 


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


Создание движений документа ПриходнаяНакладная


 


Д

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

Перейдем на закладку «Движения» и в списке регистров конфигурации отметим регистр накопления «ОстаткиМатериалов»:

Отметим регистр накопления и воспользуемся конструктором движений...

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

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

В списке «Реквизиты документа» должны находиться исходные данные для создания движений. А в таблице «Поле - Выражение»



Быстрая разработка прикладных решений


Регистр накопления


 


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


В нижнем окне сформируется соответствие полей и выражений.


 


           
 
   
     
 
 


Выберем табличную часть и нажмем «Заполнить выражения»...

Регистр, для которого конструируем движения (приход или расход)

Откуда берем данные

Что записываем в измерения и ресурсы регистра

 

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

 

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


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

Нажмем «ОК» и посмотрим, какой текст сформировал конструктор в модуле объекта:

ПроцедураОбработкаПроведения(Отказ, Режим) //{{_КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменениябудут утеряны!!! Для Каждого ТекСтрокаМатериалы Из Материалы Цикл // регистр ОстаткиМатериалов ПриходДвижение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакоплеиия.Приход;


 


90



Быстрая разработка прикладных решений


Регистр накопления


 


Движение.Период = Дата;

Движение.Материал = ТекСтрокаМатериалы.Материал;

Движение.Склад = Склад;

Движение.Количество = ТекСтрокаМатериалы.Количество; КонецЦикла;

// записываем движения регистровДвижения.ОстаткиМатериалов.Записать(); //}_КОНСТРУКТОР ДВИЖЕНИЙ_РЕГИСТРОВКонецПроцедуры

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

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

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

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

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

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


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

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


 


92



Быстрая разработка прикладных решений


Регистр накопления


 


Создание движений документа ОказаниеУслуги

Т

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

Запустим отладку и создадим документ оказания услуги, который будет расходовать один транзистор Philips за 3 рубля.

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

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

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


Что нового мы узнали

- для чего предназначен объект конфигурации Регистр накопления

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

- как создать движения документа с помощью конструктора движений

- как средствами встроенного языка обойти табличную часть документа и обратиться к ее данным - как средствами встроенного языка сформировать и записать движения документа в регистр накопления


 


94



Отчет


Глава 5. Отчет

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


Объект конфигурации Отчет

О

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