Изменение процедуры проведения документа

advertisement
Изменение процедуры проведения документа «Оказание Услуги».
На этот раз мы не будем использовать конструктор движений документа, а внесем необходимые
дополнения прямо в обработчик события «ОбработкаПроведения» документа «Оказание Услуги».
Откроем в конфигураторе модуль объекта конфигурации документ «Оказание Услуги» и найдем в нем
процедуру обработчика события «ОбработкаПроведения».
Создадим еще один цикл обхода табличной части и команду записи движений регистра (добавления
выделены жирным шрифтом):
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр ОстаткиМатериалов Приход
Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры <>
Перечисления.ВидыНоменклатуры.Материал Тогда
Продолжить;
КонецЕсли;
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
//КонецЦикла;
//Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Стоимость =
ТекСтрокаПереченьНоменклатуры.Стоимость*ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр Продажи
КонецЦикла;
// записываем движения регистров
Движения.ОстаткиМатериалов.Записать();
Движения.СтоимостьМатериалов.Записать();
Движения.Продажи.Записать();
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Теперь в тело созданного нами цикла вставим команды создания движений регистра «Продажи»:
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр ОстаткиМатериалов Приход
Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры <>
Перечисления.ВидыНоменклатуры.Материал Тогда
Продолжить;
КонецЕсли;
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
//КонецЦикла;
//Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Стоимость =
ТекСтрокаПереченьНоменклатуры.Стоимость*ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Сумма;
Движение.Стоимость =
ТекСтрокаПереченьНоменклатуры.Стоимость*ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
// записываем движения регистров
Движения.ОстаткиМатериалов.Записать();
Движения.СтоимостьМатериалов.Записать();
Движения.Продажи.Записать();
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Все добавленные конструкции вам уже хорошо известны, обратите внимание лишь на то, что у оборотного
регистра отсутствует свойство «ВидДвижения», поскольку отражение вида движения (приход или расход)
имеет смысл лишь при учете остатков. В случае регистра оборотов нас интересует только значение, которое
должно быть записано в ресурс регистра.
Запустим «1С: Предприятие» в режиме отладки и пере проведем все документы «Оказание услуги».
Движения этих документов по регистру «Продажи» должны иметь следующий вид:
Теперь у нас есть практически вся необходимая информация для анализа деятельности ООО «Алга» и
дальше в этом уроке мы займемся с вами тем, что создадим несколько отчетов, которые будут
представлять нам итоговую информацию о работе предприятия.
Download