Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объекты конфигурации-18.11.2012.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

Конструктор (листинг 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

Оборотный регистр накопления

Назначение регистра накопления

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

Услуги, содержащиеся в документе, не учитывались.

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

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

Кроме этого интересны следующие моменты:

  • какие именно услуги были оказаны (чтобы составить рей­тинг услуг);

  • какому именно клиенту оказывались услуги (чтобы предо­ставить ему скидку от объема оплаченных ранее услуг, на­пример);

  • какой мастер предоставлял услуги (чтобы начислить ему за­ работную плату).

Созданные регистры накопления не подходят для решения таких задач.

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