- •Объект конфигурации Регистр сведений
- •Автоматическое заполнение цены в документе Оказание услуги
- •Р ис. 1.6. Заполнение документа Оказание услуги
- •Реорганизация справочника Номенклатура
- •Конструктор (листинг 3.1).
- •Изменение процедуры проведения документа Оказание услуги
- •Создание оборотного регистра накопления Продажи
- •Изменение процедуры проведения документа Оказание услуги
Конструктор (листинг 3.1).
Листинг 3.1. Процедура ОбработкаПроведения()
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад = Склад;
Движение.НаборСвойств = ТекСтрокаМатериалы.НаборСвойств;
Движение.Количество = ТекСтрокаМатериалы.Количество;
КонецЦикла;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// регистр СтоимостьМатериалов Приход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Стоимость = ТекСтрокаМатериалы.Сумма;
КонецЦикла;
//}}_КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Конструктор
создал два
цикла обхода табличной части
документа — отдельно
для каждого регистра.
В общем случае документ может иметь несколько табличных частей, и информация, содержащаяся в каждой из них, может предназначаться для своего отдельного регистра.
В нашем случае табличная часть всего одна, поэтому можно объединить эти два цикла в один, закомментировав следующие строки (листинг 3.2).
Листинг 3.2. Объединение двух циклов в один
Запустим 1С:Предприятие в режиме отладки и перепроведем документ Приходная накладная № 1 и № 2.
Рис.3.3. Приходная накладная №1
Затем откроем первый документ и убедимся, что документ создает желаемые записи в регистрах накопления (рис. 3.3, 3.4, 3.5). Рис.3.3. Приходная накладная №1
Рис.3.4. Записи регистра Остатки материалов
Рис.3.5. Записи регистра Стоимость материалов
Изменение процедуры проведения документа Оказание услуги
Вводим изменения в процедуру обработки проведения документа ОказаниеУслуги.
Изменения в процедуру вносятся исходя из пожеланий, руководством о необходимости указывать различную стоимость для одного и того же материала, которая рассчитана руководством исходя из текущих конъюнктурных соображений.
В документе ОказаниеУслуги отражена только цена номенклатуры, поэтому понадобится добавить в табличную часть документа еще одно поле, в котором будет указываться стоимость номенклатуры.
Откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги, перейдем на закладку Данные и создадим новый реквизит табличной части документа с именем Стоимость, типом Число, длиной 15 и точностью 2 (рис. 3.6).
После этого откроем форму ФормаДокумента документа ОказаниеУслуги и добавим в табличное поле колонку, отображающую новый реквизит Стоимость, расположив ее после колонки Номенклатура (рис. 3.7).
Для этого выделим табличное поле и выполним команду контекстного меню Размещение данных. В окне Размещение данных отметим реквизит Стоимость и нажмем ОК.
После этого с помощью мыши перетащим колонку Стоимость после колонки Номенклатура.
Рис.3.6. Изменение документа ОказаниеУслуги
Рис.3.6. Изменение формы документа ОказаниеУслуги..
Создадим движения документа ОказаниеУслуги,
Откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги и укажем, что он будет создавать движения по регистру накопления Стоимость Материалов (рис.3.6.а).
Рис.3.6а. Определяем движение документа по регистру накопления СтоимостьМатериалов
Запустим конструктор движений документа и добавим в список регистров регистр СтоимостьМатериалов.
Описываем движения документа следующим образом (стоимость вычисляется как произведение стоимости и количества, указанных в табличной части), рис. 3.8.
Рис. 3.8. Конструктор движений документа
Нажмем ОК и в тексте, сформированном конструктором (листинг 3.3), восстановим изменения, внесенные ранее (не записывать движения, если номенклатура - не материал).
Объединим два цикла обхода табличной части документа в один (листинг 3.3).
Листинг 3.3. Процедура ОбработкаПроведения()
//Для варианта (б)
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
// регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура;
Движение.Стоимость = ТекСтрокаПереченьНоменклатуры.Цена*ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Проверяем работоспособность проведения документа ОказаниеУслуги.
Запустим 1С:Предприятие в режиме отладки и укажем стоимость выбранных материалов в документе Оказание услуги № 1
Проведем документ Оказание услуги № 1 и посмотрим на движения этого документа по регистру Стоимость материалов (рис. 3.9).
Рис. 3.9. Записи регистра Стоимость материалов
Создадим и проведем еще два документа Оказание услуги.
Э
ти
документы понадобятся нам в дальнейшем,
эти
документы созданы
другими датами.
Результат проведения документа №1 представлен на рис. 3.10.
Рис. 3.10. Документ Оказание услуги № 1
1
Движения документов Оказание услуги должно выглядеть следующим образом (рис. 3.11).
Р
ис.
3.11. Движения документа Оказание услуги
№ 1
Оборотный регистр накопления
Назначение регистра накопления
До сих пор создавались в регистрах накопления движения только для строк документа, которые содержат материалы.
Услуги, содержащиеся в документе, не учитывались.
При учете услуг важны совершенно другие критерии, нежели при учете материалов.
При учете слуг важна только сумма и количество услуг, которые были оказаны за определенный промежуток времени.
Кроме этого интересны следующие моменты:
какие именно услуги были оказаны (чтобы составить рейтинг услуг);
какому именно клиенту оказывались услуги (чтобы предоставить ему скидку от объема оплаченных ранее услуг, например);
какой мастер предоставлял услуги (чтобы начислить ему за работную плату).
Созданные регистры накопления не подходят для решения таких задач.
Поэтому создадим «хранилище» данных, которое будет использоваться для регистрации перечисленных выше задач, - оборотный регистр накопления Продажи.
