Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 70064.doc
Скачиваний:
2
Добавлен:
01.05.2022
Размер:
384.51 Кб
Скачать
    1. Создание движений документа «ПриходнаямНакладная»

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

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

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

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

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

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

В нижнем окне сформируется соответствие полей (измерений ресурсов) регистра и выражений для их расчета.

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

Нажмем кнопку OK и посмотрим, какой текст сформировал конструктор в модуле документа ПриходнаяНакладная.

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

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

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

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

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

Движения.ОстаткиМатериалов.Записывать = Истина;

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

Затем через точку можно использовать различные методы набора записей регистра, например, Движения.ОстаткиМатериалов.Добавить(). Метод Добавить() добавляет новую запись в набор записей.

В первой строке процедуры устанавливаем свойство Записывать набора записей регистра в значение Истина. Т.е. указываем, что после завершения обработки проведения платформа должна записать этот набор записей в БД. Тем самым создаем объект РегистрНакопленияЗапись и сохраняем его в переменной Движение.

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

Движение.Материал, Движение.Склад – это измерения регистра, Движение.Количество – это ресурс регистра, а Движение.ВидДвижения, Движение.Период – стандартные реквизиты регистра, которые создаются автоматически.

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

Склад – это реквизит шапки документа, а Дата – стандартный реквизит документа, который создается автоматически. В цикле меняются только значения полей табличной части документа - ТекСтрокаМатериалы.Материал, ТекСтрокаМатериалы.Количество. Остальные поля не меняются, т.к. относятся к документу в целом и не зависят от текущей строки табличной части документа.

ВидДвиженияНакопления.Приход – это значение системного перечисления, которое определяет вид движения регистра накопления как Приход.

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

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

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

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

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

Справа в списке Командный интерфейс отразятся все команды выделенной подсистемы. В группе Панель навигации.Обычное включим видимость у команды Остатки материалов и мышью перетащим ее в группу См. также панели навигации разделов интерфейса.

Выделим подсистемы ОказаниеУслуг и Бухгалтерия, в панели навигации в группе Обычное включим видимость у команды Остатки материалов и перенесем ее в группу См. также.

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

Откроем документ Приходная накладная №1 и нажмем Провести и закрыть, т.е. перепроведем ее. Тоже самое сделаем для Приходная накладная №2.

Перепровести документы можно иначе. Для этого необходимо выделить нужный элемент в списке (или выделить группу документов, удерживая клавишу Ctrl), нажать клавишу Все действия в командной панели формы списка и выбрать пункт Провести.

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

Все поля регистра заполнились данными документов. Пиктограмма со знаком «+» слева от каждой записи указывает на тип движения – Приход.