Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

В режиме «Конфигуратор»




Откроем модуль документа ОказаниеУслуги.

Напомним, как выглядит сейчас процедура проведения этого документа (листинг 14. 3).

листинг 14. 3. Процедура «ОбработкаПроведения»

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

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

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

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

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

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

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

// Регистр СтоимостьМатериалов Расход

Движение = Движения. СтоимостьМатериалов. Добавить(); Движение. ВидДвижения = ВидДвиженияНакопления. Расход; Движение. Период = Дата;

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

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

КонецЕсли;

// Регистр Продажи

Движение = Движения. Продажи. Добавить(); Движение. Период = Дата;

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

Движение. Мастер = Мастер;

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

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

КонецЦикла;


Другими словами, все данные, необходимые для проведения документа, мы получаем из самого документа, и только для опреде- ления того, чем является номенклатура (товаром или услугой), мы обращаемся к базе данных, читая данные всего объекта Номенклатура (листинг 14. 4).

листинг 14. 4. Обращение к объекту «Номенклатура»

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

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

Поэтому поступим следующим образом: все данные, связанные с номенклатурой, которая содержится в табличной части документа, мы будем получать с помощью запроса к базе данных. А данные, связанные с самим документом (например, дата документа, склад), мы по-прежнему будем получать из документа. Такой подход позволит нам читать только нужные данные и за счет этого макси- мально ускорить проведение документа.

Итак, запросом мы будем получать:

„ номенклатуру,

„ количество,

„ сумму,

„ стоимость.

Из документа мы возьмем следующие данные:

„ дата,

„ клиент,

„ мастер,

„ склад.

Приступим к созданию запроса. Установим курсор перед циклом обхода табличной части документа и из контекстного меню выберем пункт Конструктор запроса с обработкой результата (рис. 14. 4).

Подтвердим, что мы хотим создать новый запрос.

В окне конструктора запросов перейдем на закладку Таблицы и поля и выберем таблицу ОказаниеУслугиПереченьНоменклатуры – это табличная часть документа ОказаниеУслуги.


 

Из этой таблицы нам нужны поля – Номенклатура, Номенклату- раВидНоменклатуры, Количество, Сумма и Стоимость (рис. 14. 5).

 

 

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


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

Для этого перетащим поле Ссылка в список условий запроса (листинг 14. 5).

листинг 14. 5. Условие отбора из таблицы документа

ОказаниеУслугиПереченьНоменклатуры. Ссылка = & Ссылка                                                     

Ссылка на этот документ будет передана в параметр запроса Ссылка

(рис. 14. 6).

 

 

Также следует учесть, что в табличной части документа одна и та же номенклатура может встречаться несколько раз.

Поэтому на закладке Группировка сгруппируем наши записи по полям Номенклатура и НоменклатураВидНоменклатуры, а рассчитывать будем сумму значений для полей Количество и Сумма.

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

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

Мы подразумеваем, что для разных строк одной и той же номенклатуры стоимость будет одинаковой, поэтому функция Максимум нужна нам лишь для того, чтобы получить одно из имеющихся значений стоимости (рис. 14. 7).


 

На закладке Объединения/Псевдонимы зададим псевдонимы для полей Количество и Сумма – КоличествоВДокументе и СуммаВДокументе, а для поля НоменклатураВидНоменклатуры зададим псевдоним ВидНомен- клатуры просто для облегчения чтения запроса (рис. 14. 8).

 

 

Нажмем ОК и посмотрим, какой текст запроса сформировал конструктор (листинг 14. 6).

листинг 14. 6. Текст запроса

 


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...