1С Программирование. Проведение документа по нескольким регистрам

Практическая работа

Проведение документа по нескольким регистрам



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

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

Для этих целей будем использовать регистр накопления

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

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

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

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

Стоимость с типом Число, длина 15, точность 2. Получится следующее:




















Теперь отредактируйте командный интерфейс, чтобы в подсистемах

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

























Проведение приходной накладной по двум регистрам

Откройте в конфигураторе окно редактирования объекта Документ

Приходная накладная и перейдите на вкладку Движения.

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

















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

ОбработкаПроведения документа ПриходнаяНакладная.

Дело в том, что с помощью конструктора можно создавать движения одновременно и в нескольких регистрах, но тогда процедура

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

Перейдите на вкладку Прочее и откройте модуль объекта. В самом конце цикла перед строкой КонецЦикла добавим строки кода, создающие движение в регистре СтоимостьМатериалов.

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

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

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

При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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

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

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл Движение = Движения.ОстаткиМатериалов.Добавить();

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

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

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

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

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

// регистр Стоимость Материалов Приход Движение = Движения.СтоимостьМатериалов.Добавить();

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

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

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

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

КонецЦикла;

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

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





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

Для этого откройте форму документа ПриходнаяНакладная и перейдите на вкладку Командный интерфейс. В разделе Панель навигации

раскройте группу Перейти и установите видимость для команды

Стоимость материалов
































Запустите 1С: Предприятие и перепроведите все документы Приходная накладная. Затем откройте первый документ и, выполнив из него переход к регистрам Остатки материалов и Стоимость материалов,

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






























Проведение документа ОказаниеУслуги по двум регистрам

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

Поскольку в документе отражена только цена номенклатуры, нам понадобится:

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

После этого изменить процедуру проведения документа

ОказаниеУслуги.

В режиме 1С: Предприятие перепровести все эти документы, чтобы отработал новый алгоритм.

Откройте окно редактирования объекта Документ ОказаниеУслуги и перейдите на вкладку Данные. Создайте новый реквизит табличной части документа с именем Стоимость, типом Число, длиной 15 и точностью 2, неотрицательное.




















После этого откройте форму ФормаДокумента документа ОказаниеУслуги и добавьте в табличную часть ПереченьНоменклатуры поле, отображающее новый реквизит Стоимость. Для этого в правом верхнем окне редактора форм на закладке Реквизиты раскройте реквизит формы Объект. Найдите в табличной части реквизит Стоимость и мышью перетащите его в окно элементов формы (левый верхний угол) после поля

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



































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

В окне редактирования Документа ОказаниеУслуги перейдите на вкладку Движения. В списке регистров отметьте СтоимостьМатериалов. Перейдите на закладку Прочее и откройте модуль объекта. Внесите изменения в процедуру обработки проведения, новые строчки выделены жирным:






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

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

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

Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл

Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда

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

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

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

Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;

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

Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;

// регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить();

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

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

Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;

Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Количество*ТекСтрокаПереченьНоменклатуры.Стоимость;

КонецЕсли;

КонецЦикла;

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

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

































Запустите 1С: Предприятие, откройте документ Оказание услуги № 1 и укажите в нем стоимость резинового шланга – 100. Нажмите Провести и перейдите в регистр Стоимость материалов через панель навигации.

































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


















































Движения созданных документов по регистру Стоимость материалов:





















Контрольные вопросы

Для чего может понадобиться проведение документа по нескольким регистрам

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

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

Как добавить в форму документа новый реквизит




Приложенные файлы

  • doc Docporegistr
    Размер файла: 903 kB Загрузок: 1