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




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

Перейдем на закладку Движения и в списке регистров конфигурации отметим регистр накопления ОстаткиМатериалов (рис. 4.3)

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

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

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

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

Рис. 4.4. Конструктор движений

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

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

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

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

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

Нажмем кнопку OK и посмотрим, какой текст сформировал конструктор в модуле объекта (листинг 4.1)

Листинг 4.1. Процедура ОбработкаПроведения()

Процедура ОбработкаПроведения(Отказ, Режим)

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора,

// внесенные вручную изменения будут утеряны!!!

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

// Регистр ОстаткиМатериалов Приход

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

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

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

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

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

КонецЦикла;

// }}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры

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

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

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

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

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

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

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

Рис. 4.6. Взаимодействие документа и регистра

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

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

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

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

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

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

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: