Один Ответ на “Базовый курс. Занятие №9”

  1. Aleksandr.nett 20.02.2016 в 21:38

    Домашнее задание № 9 Блок 2.

    Создадим Регистры накопления :
    Продажи – вид Остатки
    Измерения:
    Контрагент – СправочникСсылка.Контрагенты
    Номенклатура – СправочникСсылка.Номенклатура
    Менеджер – СправочникСсылка.Пользователи
    Ресурс – Количество
    Ресурс – Сумма

    Взаиморасчеты – вид Остатки
    Измерения:
    Контрагент – СправочникСсылка. Контрагент
    Ресурсы – Сумма
    ЗакупкиПоставщиков – вид Обороты
    Измерения:
    Номенклатура – СправочникСсылка.Номенклатура
    Контрагент – СправочникСсылка.Контрагенты
    Ресурс – Количество
    Ресурс – Стоимость

    Создадим документ Выписка
    Табличные части РасшифровкаПлатежа
    Реквизиты: Контрагент, СуммаПриход ,СуммаРасход
    В модуле объекта документа Выписка в процедуре ОбработкаПроведения опишем алгоритм проведения по регистрам:
    <

    Процедура ОбработкаПроведения(Отказ, Режим)
       
        // регистр Взаиморасчеты Приход
        Движения.Взаиморасчеты.Записывать = Истина;
       
        Для Каждого ТекСтрокаРасшифровкаПлатежа Из РасшифровкаПлатежа Цикл
           
            Движение = Движения.Взаиморасчеты.Добавить();
            Движение.Период = Дата;
            Движение.Контрагент = ТекСтрокаРасшифровкаПлатежа.Контрагент;
            Если ЗначениеЗаполнено(ТекСтрокаРасшифровкаПлатежа.СуммаПриход) Тогда  
                // Долг контрагента перед нашей компанией уменьшается.
                Движение.ВидДвижения = ВидДвиженияНакопления.Расход; 
                Движение.Сумма = ТекСтрокаРасшифровкаПлатежа.СуммаПриход;       
            ИначеЕсли  ЗначениеЗаполнено(ТекСтрокаРасшифровкаПлатежа.СуммаРасход) Тогда   
                // Долг контрагента перед нашей компанией увеличивается.
                Движение.ВидДвижения = ВидДвиженияНакопления.Приход; 
                Движение.Сумма = ТекСтрокаРасшифровкаПлатежа.СуммаПриход;   
            КонецЕсли;
        КонецЦикла;
    КонецПроцедуры
    <

    Для описания и хранения Наборов реализуем следующую схему:
    Создадим Справочник НаборНоменклатуры
    Реквизиты Номенклатура
    Табличная часть Комплектация ,
    реквизиты табличной части – Номенклатура ,Количество
    В качастве Владельца у справочника укажем справочник Номенклатура
    В справочник Номенклатура добавим реквизит – НаборНоменклатуры –тип СправочникСсылка.НаборНоменклатуры.

    В модуле объекта документа ПоступлениеТоваров в опишем алгоритм отвечающий за проведения по регистрам:
    <

    Перем РежимЗаписи;
    Процедура ОбработкаПроведения(Отказ, Режим)
        РежимЗаписи = РежимЗаписиДокумента.Проведение;
        Движения.ОстаткиТоваров.Записывать     = Истина; 
        Движения.Взаиморасчеты.Записывать      = Истина;
        Движения.ЗакупкиПоставщиков.Записывать = Истина;
       
        Для Каждого ТекСтрокаТовары Из Товары Цикл
                   
    // Движения делаются для всех видов номенклатуры, кроме услуг(услуги не хранятся на складе).
            Если НЕ ТекСтрокаТовары.Номенклатура.ВидНоменклатуры =  Перечисления.ВидНоменклатуры.Услуга Тогда
               
                // регистр ОстаткиТоваров Приход    
                // обрабатываем движения для набора   
                Если ТекСтрокаТовары.Номенклатура.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Набор
                    И ЗначениеЗаполнено(ТекСтрокаТовары.Номенклатура.НаборНоменклатуры) Тогда       
                    Набор        = ТекСтрокаТовары.Номенклатура.НаборНоменклатуры;
                    Комплектация = Набор.Комплектация;
                   
                    Для каждого СтрокаНабора Из Комплектация Цикл              
                        Движение = Движения.ОстаткиТоваров.Добавить();
                        Движение.ВидДвижения  = ВидДвиженияНакопления.Приход;
                        Движение.Период       = Дата;
                        Движение.Номенклатура = СтрокаНабора.Номенклатура; 
                        Движение.Качество     = Справочники.СтепениБракаТоваров.Новый;
                        Движение.Количество   = ТекСтрокаТовары.Количество;         
                    КонецЦикла;  
                   
                ИначеЕсли ТекСтрокаТовары.Номенклатура.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Набор
                    И НЕ ЗначениеЗаполнено(ТекСтрокаТовары.Номенклатура.НаборНоменклатуры)
                    И РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
                       
                        Отказ = Истина;
                        Сообщение = Новый СообщениеПользователю;
                        Сообщение.Текст = "В Для товара: "+ТекСтрокаТовары.Номенклатура+" строка №: "+
                        ТекСтрокаТовары.НомерСтроки+ " не заполнен набор!=";
                        Сообщение.Сообщить(); 
                       
                Иначе 
                       
            Движение = Движения.ОстаткиТоваров.Добавить();
            Движение.ВидДвижения  = ВидДвиженияНакопления.Приход;
            Движение.Период       = Дата;
            Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
            Движение.Качество     = ТекСтрокаТовары.Качество;
       
            Если ТипЗнч(ТекСтрокаТовары.ЕдиницаИзмерения) = Тип("СправочникСсылка.КлассификаторЕдиницИзмерения") Тогда        
                Движение.Количество = ТекСтрокаТовары.Количество;       
            ИначеЕсли ТипЗнч(ТекСтрокаТовары.ЕдиницаИзмерения) = Тип("СправочникСсылка.ЕдиницыИзмеренияНоменклатуры") Тогда                                                      
                Движение.Количество = ТекСтрокаТовары.Количество*ТекСтрокаТовары.ЕдиницаИзмерения.КоффициентПересчета;    
            КонецЕсли;
                КонецЕсли;            
            КонецЕсли;    
            // регистр Взаиморасчеты Расход
            Движение = Движения.Взаиморасчеты.Добавить(); 
            // Долг контрагента перед нашей компанией уменьшается.
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Период      = Дата;
            Движение.Контрагент  = Контрагент;     
            Движение.Сумма       = ТекСтрокаТовары.Сумма;     
                       
            // регистр ЗакупкиПоставщиков                             
                Движение = Движения.ЗакупкиПоставщиков.Добавить();
                Движение.Период       = Дата;
                Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
                Движение.Контрагент   = Контрагент;
                Движение.Количество   = ТекСтрокаТовары.Количество;
                Движение.Стоимость    = ТекСтрокаТовары.Сумма;            
        КонецЦикла;
    КонецПроцедуры
    <

    В модуле объекта документа Реализация в опишем алгоритм отвечающий за проведения по регистрам:
    <

        Перем Качество;
        Перем Номенклатура;
        Перем Количество;
        Перем КонтрольПроведения;
    Процедура ОбработкаПроведения(Отказ, Режим)
       
        РежимЗаписи = РежимЗаписиДокумента.Проведение;
        Движения.ОстаткиТоваров.Записывать = Истина;
        Движения.Взаиморасчеты.Записывать  = Истина;
        Движения.Продажи.Записывать        = Истина;    
        Для Каждого ТекСтрокаТовары Из Товары Цикл    
    // Движения делаются для всех видов номенклатуры, кроме услуг(услуги не хранятся на складе).
            Если НЕ ТекСтрокаТовары.Номенклатура.ВидНоменклатуры =  Перечисления.ВидНоменклатуры.Услуга  Тогда           
                // регистр ОстаткиТоваров Расход    
                // обрабатываем движения для набора   
                Если ТекСтрокаТовары.Номенклатура.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Набор
                    И ЗначениеЗаполнено(ТекСтрокаТовары.Номенклатура.НаборНоменклатуры) Тогда                                   
                    Набор        = ТекСтрокаТовары.Номенклатура.НаборНоменклатуры;
                    Комплектация = Набор.Комплектация;
                   
                    Для каждого СтрокаНабора Из Комплектация Цикл              
                        Движение = Движения.ОстаткиТоваров.Добавить();
                        Движение.ВидДвижения  = ВидДвиженияНакопления.Расход;
                        Движение.Период       = Дата;
                        Движение.Номенклатура = СтрокаНабора.Номенклатура; 
                        Движение.Качество     = Справочники.СтепениБракаТоваров.Новый;
                        Движение.Количество   = СтрокаНабора.Количество;           
                    КонецЦикла;
                   
                ИначеЕсли ТекСтрокаТовары.Номенклатура.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Набор
                    И НЕ ЗначениеЗаполнено(ТекСтрокаТовары.Номенклатура.НаборНоменклатуры)
                    И РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда           
                        Отказ = Истина;
                        Сообщение = Новый СообщениеПользователю;
                        Сообщение.Текст = "Для товара: "+ТекСтрокаТовары.Номенклатура+" строка №: "+
                        ТекСтрокаТовары.НомерСтроки+ " не заполнен набор!";
                        Сообщение.Сообщить();             
                Иначе                     
            Движение = Движения.ОстаткиТоваров.Добавить();
            Движение.ВидДвижения  = ВидДвиженияНакопления.Расход;
            Движение.Период       = Дата;
            Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;           
            Движение.Качество     = ТекСтрокаТовары.Качество;
           
            Если ТипЗнч(ТекСтрокаТовары.ЕдиницаИзмерения) = Тип("СправочникСсылка.КлассификаторЕдиницИзмерения") Тогда    
                Движение.Количество = ТекСтрокаТовары.Количество;       
            ИначеЕсли ТипЗнч(ТекСтрокаТовары.ЕдиницаИзмерения) = Тип("СправочникСсылка.ЕдиницыИзмеренияНоменклатуры") Тогда                                                  
                Движение.Количество = ТекСтрокаТовары.Количество*ТекСтрокаТовары.ЕдиницаИзмерения.КоффициентПересчета;
            КонецЕсли;    
                КонецЕсли;          
        КонецЕсли;

    Движение = Движения.Продажи.Добавить();
            Движение.ВидДвижения  = ВидДвиженияНакопления.Приход;
            Движение.Период       = Дата;
            Движение.Контрагент   = Контрагент;
            Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
            Движение.Менеджер     = Ответственный;
            Движение.Сумма        = ТекСтрокаТовары.Сумма;
           
            Если ТипЗнч(ТекСтрокаТовары.ЕдиницаИзмерения) = Тип("СправочникСсылка.КлассификаторЕдиницИзмерения") Тогда
                Движение.Количество = ТекСтрокаТовары.Количество;
            ИначеЕсли ТипЗнч(ТекСтрокаТовары.ЕдиницаИзмерения) = Тип("СправочникСсылка.ЕдиницыИзмеренияНоменклатуры") Тогда                                                  
                Движение.Количество = ТекСтрокаТовары.Количество*ТекСтрокаТовары.ЕдиницаИзмерения.КоффициентПересчета;
            КонецЕсли;
           
            // регистр Взаиморасчеты Приход
            Движение = Движения.Взаиморасчеты.Добавить();
           
            // Долг контрагента перед нашей компанией увеличивается.
            Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
            Движение.Период      = Дата;
            Движение.Контрагент  = Контрагент;     
            Движение.Сумма       = ТекСтрокаТовары.Сумма; 
            //}
            //КонецЕсли;  
        КонецЦикла;
           
        Движения.Записать();   
        СписаниеРазрешено = Справочники.Пользователи.НайтиПоРеквизиту("УникальныйИдентификатор",
        Строка(ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор)).НеКонтролироватьОстатки;
       
        Для Каждого ТекСтрока Из Товары Цикл                                                                                                                                                    
            Номенклатура = ТекСтрока.Номенклатура;
                                 Качество     = ТекСтрока.Качество;
           
            ОтрицательныйОстаток = КонтрольОстатковПоРегиструОстаткиТоваров(Номенклатура,Качество,Количество);   
            Если  ОтрицательныйОстаток И СписаниеРазрешено  И КонтрольПроведения Тогда
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Недостаточно для списания товара: "+ТекСтрока.Номенклатура+
                " строка №: "+ТекСтрока.НомерСтроки+ " в количестве "+-Количество+" шт.";
                Сообщение.Сообщить(); 
            ИначеЕсли  ОтрицательныйОстаток И КонтрольПроведения Тогда
                Отказ = Истина;
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Недостаточно для списания товара: "+ТекСтрока.Номенклатура+
                " строка №: "+ТекСтрока.НомерСтроки+ " в количестве "+-Количество+" шт.";
                Сообщение.Сообщить(); 
            КонецЕсли;
        КонецЦикла;
    КонецПроцедуры   //ОбработкаПроведения

    Функция КонтрольОстатковПоРегиструОстаткиТоваров(Номенклатура,Качество,Количество)
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |   ОстаткиТоваровОстатки.КоличествоОстаток КАК Количество
            |ИЗ
            |   РегистрНакопления.ОстаткиТоваров.Остатки(, ) КАК ОстаткиТоваровОстатки
            |ГДЕ
            |   ОстаткиТоваровОстатки.Номенклатура = &Номенклатура
            |   И ОстаткиТоваровОстатки.Качество = &Качество
            |   И ОстаткиТоваровОстатки.КоличествоОстаток < 0";

        Запрос.УстановитьПараметр("Номенклатура", Номенклатура);   
        Запрос.УстановитьПараметр("Качество", Качество);
        //Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
       
        РезультатЗапроса =   Запрос.Выполнить().Пустой();
        // нет отрицательных остатков.
        Если  РезультатЗапроса Тогда      
            Возврат Ложь;           
        //есть отрицательный остаток.
        Иначе
                Результат = Запрос.Выполнить();
                Выборка   = Результат.Выбрать();
                Выборка.Следующий();   
                Количество = Выборка.Количество;
        Возврат Истина;   
    КонецЕсли;  

     КонецФункции // КонтрольОстатковПоРегиструОстаткиТоваров()
    Процедура ПровестиБезКонтроляПроведения() Экспорт
        КонтрольПроведения = Ложь;       
        ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецПроцедуры

    <

    Создадим отчеты :
    ДолгиМенеджеров ,
    Схема отчета:
    <

    <dataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <dataSource>
            <name>ИсточникДанных1</name>
            <dataSourceType>Local</dataSourceType>
        </dataSource>
        <dataSet xsi:type="DataSetQuery">
            <name>НаборДанных1</name>
            <field xsi:type="DataSetFieldField">
                <dataPath>Менеджер</dataPath>
                <field>Менеджер</field>
                <title xsi:type="v8:LocalStringType">
                    <v8:item>
                        <v8:lang>ru</v8:lang>
                        <v8:content>Менеджер</v8:content>
                    </v8:item>
                </title>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>СуммаОстаток</dataPath>
                <field>СуммаОстаток</field>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>Контрагент</dataPath>
                <field>Контрагент</field>
                <role>
                    <dcscom:dimension>true</dcscom:dimension>
                </role>
            </field>
            <dataSource>ИсточникДанных1</dataSource>
            <query>ВЫБРАТЬ
        Пользователи.Ссылка КАК Менеджер,
        ВзаиморасчетыОстатки.Контрагент,
        ВзаиморасчетыОстатки.СуммаОстаток
    ИЗ
        РегистрНакопления.Взаиморасчеты.Остатки КАК ВзаиморасчетыОстатки
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
            ПО ВзаиморасчетыОстатки.Контрагент = Пользователи.Владелец</query>
        </dataSet>
        <totalField>
            <dataPath>СуммаОстаток</dataPath>
            <expression>Сумма(СуммаОстаток)</expression>
        </totalField>
        <parameter>
            <name>Период</name>
            <title xsi:type="v8:LocalStringType">
                <v8:item>
                    <v8:lang>ru</v8:lang>
                    <v8:content>Период</v8:content>
                </v8:item>
            </title>
            <valueType>
                <v8:Type>xs:dateTime</v8:Type>
                <v8:DateQualifiers>
                    <v8:DateFractions>DateTime</v8:DateFractions>
                </v8:DateQualifiers>
            </valueType>
            <value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
            <useRestriction>false</useRestriction>
        </parameter>
        <settingsVariant>
            <dcsset:name>Основной</dcsset:name>
            <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation>
            <dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
                <dcsset:selection>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>Менеджер</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>Контрагент</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>СуммаОстаток</dcsset:field>
                    </dcsset:item>
                </dcsset:selection>
                <dcsset:dataParameters>
                    <dcscor:item xsi:type="dcsset:SettingsParameterValue">
                        <dcscor:use>false</dcscor:use>
                        <dcscor:parameter>Период</dcscor:parameter>
                        <dcscor:value xsi:type="xs:dateTime">0001-01-01T00:00:00</dcscor:value>
                        <dcsset:userSettingID>3b4dc894-b569-4a18-85b6-8a2f8c2db147</dcsset:userSettingID>
                    </dcscor:item>
                </dcsset:dataParameters>
                <dcsset:order>
                    <dcsset:item xsi:type="dcsset:OrderItemField">
                        <dcsset:field>Менеджер.Наименование</dcsset:field>
                        <dcsset:orderType>Asc</dcsset:orderType>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:OrderItemField">
                        <dcsset:field>Контрагент.Наименование</dcsset:field>
                        <dcsset:orderType>Asc</dcsset:orderType>
                    </dcsset:item>
                </dcsset:order>
                <dcsset:item xsi:type="dcsset:StructureItemGroup">
                    <dcsset:groupItems>
                        <dcsset:item xsi:type="dcsset:GroupItemField">
                            <dcsset:field>Менеджер</dcsset:field>
                            <dcsset:groupType>Items</dcsset:groupType>
                            <dcsset:periodAdditionType>None</dcsset:periodAdditionType>
                            <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin>
                            <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd>
                        </dcsset:item>
                    </dcsset:groupItems>
                    <dcsset:order>
                        <dcsset:item xsi:type="dcsset:OrderItemAuto"/>
                    </dcsset:order>
                    <dcsset:selection>
                        <dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
                    </dcsset:selection>
                    <dcsset:item xsi:type="dcsset:StructureItemGroup">
                        <dcsset:groupItems>
                            <dcsset:item xsi:type="dcsset:GroupItemField">
                                <dcsset:field>Контрагент</dcsset:field>
                                <dcsset:groupType>Items</dcsset:groupType>
                                <dcsset:periodAdditionType>None</dcsset:periodAdditionType>
                                <dcsset:periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionBegin>
                                <dcsset:periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</dcsset:periodAdditionEnd>
                            </dcsset:item>
                        </dcsset:groupItems>
                        <dcsset:order>
                            <dcsset:item xsi:type="dcsset:OrderItemAuto"/>
                        </dcsset:order>
                        <dcsset:selection>
                            <dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
                        </dcsset:selection>
                        <dcsset:item xsi:type="dcsset:StructureItemGroup">
                            <dcsset:order>
                                <dcsset:item xsi:type="dcsset:OrderItemAuto"/>
                            </dcsset:order>
                            <dcsset:selection>
                                <dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
                            </dcsset:selection>
                        </dcsset:item>
                    </dcsset:item>
                </dcsset:item>
            </dcsset:settings>
        </settingsVariant>
    </dataCompositionSchema>

    <

    ФинансовыйРезультат ,
    Схема отчета:
    <

    <dataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <dataSource>
            <name>ИсточникДанных1</name>
            <dataSourceType>Local</dataSourceType>
        </dataSource>
        <dataSet xsi:type="DataSetQuery">
            <name>НаборДанных1</name>
            <field xsi:type="DataSetFieldField">
                <dataPath>Номенклатура</dataPath>
                <field>Номенклатура</field>
                <role>
                    <dcscom:dimension>true</dcscom:dimension>
                </role>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>КоличествоОстаток</dataPath>
                <field>КоличествоОстаток</field>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>Качество</dataPath>
                <field>Качество</field>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>ЦенаПродажи</dataPath>
                <field>ЦенаПродажи</field>
                <title xsi:type="v8:LocalStringType">
                    <v8:item>
                        <v8:lang>ru</v8:lang>
                        <v8:content>Цена продажи</v8:content>
                    </v8:item>
                </title>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>ЦенаЗакупки</dataPath>
                <field>ЦенаЗакупки</field>
                <title xsi:type="v8:LocalStringType">
                    <v8:item>
                        <v8:lang>ru</v8:lang>
                        <v8:content>Цена закупки</v8:content>
                    </v8:item>
                </title>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>ФинРезультат</dataPath>
                <field>ФинРезультат</field>
                <title xsi:type="v8:LocalStringType">
                    <v8:item>
                        <v8:lang>ru</v8:lang>
                        <v8:content>Фин результат</v8:content>
                    </v8:item>
                </title>
            </field>
            <dataSource>ИсточникДанных1</dataSource>
            <query>ВЫБРАТЬ
        ОстаткиТоваровОстатки.Номенклатура КАК Номенклатура,
        ОстаткиТоваровОстатки.КоличествоОстаток
    ПОМЕСТИТЬ Остатки
    ИЗ
        РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ПрайсЛистТовары.Номенклатура,
        СРЕДНЕЕ(ПрайсЛистТовары.Цена) КАК Цена,
        ПрайсЛистТовары.ВидЦены
    ПОМЕСТИТЬ Закупки
    ИЗ
        Документ.ПрайсЛист.Товары КАК ПрайсЛистТовары
    ГДЕ
        ПрайсЛистТовары.ВидЦены = &amp;ЦенаЗакупки

    СГРУППИРОВАТЬ ПО
        ПрайсЛистТовары.Номенклатура,
        ПрайсЛистТовары.ВидЦены
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ПрайсЛистТовары.Номенклатура,
        СРЕДНЕЕ(ПрайсЛистТовары.Цена) КАК Цена,
        ПрайсЛистТовары.ВидЦены
    ПОМЕСТИТЬ Продажи
    ИЗ
        Документ.ПрайсЛист.Товары КАК ПрайсЛистТовары
    ГДЕ
        ПрайсЛистТовары.ВидЦены = &amp;ЦенаПродажи

    СГРУППИРОВАТЬ ПО
        ПрайсЛистТовары.Номенклатура,
        ПрайсЛистТовары.ВидЦены
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Остатки.Номенклатура,
        (Продажи.Цена - Закупки.Цена) * Остатки.КоличествоОстаток КАК ФинансовыйРезультат,
        Остатки.КоличествоОстаток,
        Закупки.Цена КАК ЦенаЗакупки,
        Продажи.Цена КАК ЦенаПродажи
    ПОМЕСТИТЬ ФинРезультат
    ИЗ
        Остатки КАК Остатки
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Закупки КАК Закупки
            ПО Остатки.Номенклатура = Закупки.Номенклатура
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Продажи КАК Продажи
            ПО Остатки.Номенклатура = Продажи.Номенклатура
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ФинРезультат.Номенклатура,
        ФинРезультат.ФинансовыйРезультат КАК ФинРезультат,
        ФинРезультат.КоличествоОстаток,
        ФинРезультат.ЦенаЗакупки,
        ФинРезультат.ЦенаПродажи
    ИЗ
        ФинРезультат КАК ФинРезультат</query>
        </dataSet>
        <totalField>
            <dataPath>КоличествоОстаток</dataPath>
            <expression>Сумма(КоличествоОстаток)</expression>
        </totalField>
        <totalField>
            <dataPath>ЦенаЗакупки</dataPath>
            <expression>Сумма(ЦенаЗакупки)</expression>
        </totalField>
        <totalField>
            <dataPath>ЦенаПродажи</dataPath>
            <expression>Сумма(ЦенаПродажи)</expression>
        </totalField>
        <totalField>
            <dataPath>ФинРезультат</dataPath>
            <expression>Сумма(ФинРезультат)</expression>
        </totalField>
        <parameter>
            <name>Период</name>
            <title xsi:type="v8:LocalStringType">
                <v8:item>
                    <v8:lang>ru</v8:lang>
                    <v8:content>Период</v8:content>
                </v8:item>
            </title>
            <valueType>
                <v8:Type>xs:dateTime</v8:Type>
                <v8:DateQualifiers>
                    <v8:DateFractions>DateTime</v8:DateFractions>
                </v8:DateQualifiers>
            </valueType>
            <value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
            <useRestriction>false</useRestriction>
        </parameter>
        <parameter>
            <name>ЦенаЗакупки</name>
            <title xsi:type="v8:LocalStringType">
                <v8:item>
                    <v8:lang>ru</v8:lang>
                    <v8:content>Цена закупки</v8:content>
                </v8:item>
            </title>
            <valueType>
                <v8:Type xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d4p1:CatalogRef.ЦеныНоменклатуры</v8:Type>
            </valueType>
            <value xmlns:d3p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d3p1:CatalogRef.ЦеныНоменклатуры">7b8b06bd-cdd4-11e5-82ae-c0389641969e</value>
            <useRestriction>false</useRestriction>
        </parameter>
        <parameter>
            <name>ЦенаПродажи</name>
            <title xsi:type="v8:LocalStringType">
                <v8:item>
                    <v8:lang>ru</v8:lang>
                    <v8:content>Цена продажи</v8:content>
                </v8:item>
            </title>
            <valueType>
                <v8:Type xmlns:d4p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d4p1:CatalogRef.ЦеныНоменклатуры</v8:Type>
            </valueType>
            <value xmlns:d3p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d3p1:CatalogRef.ЦеныНоменклатуры">7b8b06bc-cdd4-11e5-82ae-c0389641969e</value>
            <useRestriction>false</useRestriction>
        </parameter>
        <settingsVariant>
            <dcsset:name>Основной</dcsset:name>
            <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation>
            <dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
                <dcsset:selection>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>Номенклатура</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>ФинРезультат</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>КоличествоОстаток</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>ЦенаЗакупки</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>ЦенаПродажи</dcsset:field>
                    </dcsset:item>
                </dcsset:selection>
                <dcsset:dataParameters>
                    <dcscor:item xsi:type="dcsset:SettingsParameterValue">
                        <dcscor:use>false</dcscor:use>
                        <dcscor:parameter>ЦенаЗакупки</dcscor:parameter>
                        <dcscor:value xmlns:d6p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d6p1:CatalogRef.ЦеныНоменклатуры">00000000-0000-0000-0000-000000000000</dcscor:value>
                        <dcsset:userSettingID>44d70911-fea6-4128-bedd-5689935b3389</dcsset:userSettingID>
                    </dcscor:item>
                    <dcscor:item xsi:type="dcsset:SettingsParameterValue">
                        <dcscor:use>false</dcscor:use>
                        <dcscor:parameter>ЦенаПродажи</dcscor:parameter>
                        <dcscor:value xsi:type="xs:decimal">0</dcscor:value>
                        <dcsset:userSettingID>52730f40-8992-485f-9273-5f6e247b700a</dcsset:userSettingID>
                    </dcscor:item>
                </dcsset:dataParameters>
                <dcsset:order>
                    <dcsset:item xsi:type="dcsset:OrderItemField">
                        <dcsset:field>Номенклатура.Наименование</dcsset:field>
                        <dcsset:orderType>Asc</dcsset:orderType>
                    </dcsset:item>
                </dcsset:order>
                <dcsset:item xsi:type="dcsset:StructureItemGroup">
                    <dcsset:order>
                        <dcsset:item xsi:type="dcsset:OrderItemAuto"/>
                    </dcsset:order>
                    <dcsset:selection>
                        <dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
                    </dcsset:selection>
                </dcsset:item>
            </dcsset:settings>
        </settingsVariant>
    </dataCompositionSchema>
    <

    РейтингМенеджеров
    Схема отчета:
    <

    <dataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <dataSource>
            <name>ИсточникДанных1</name>
            <dataSourceType>Local</dataSourceType>
        </dataSource>
        <dataSet xsi:type="DataSetQuery">
            <name>НаборДанных1</name>
            <field xsi:type="DataSetFieldField">
                <dataPath>Номенклатура</dataPath>
                <field>Номенклатура</field>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>Продажи</dataPath>
                <field>Продажи</field>
                <title xsi:type="v8:LocalStringType">
                    <v8:item>
                        <v8:lang>ru</v8:lang>
                        <v8:content>Продажи</v8:content>
                    </v8:item>
                </title>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>Менеджер</dataPath>
                <field>Менеджер</field>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>Контрагент</dataPath>
                <field>Контрагент</field>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>Дебиторка</dataPath>
                <field>Дебиторка</field>
                <title xsi:type="v8:LocalStringType">
                    <v8:item>
                        <v8:lang>ru</v8:lang>
                        <v8:content>Дебиторка</v8:content>
                    </v8:item>
                </title>
            </field>
            <field xsi:type="DataSetFieldField">
                <dataPath>КоэфЭффективности</dataPath>
                <field>КоэфЭффективности</field>
                <title xsi:type="v8:LocalStringType">
                    <v8:item>
                        <v8:lang>ru</v8:lang>
                        <v8:content>Коэф эффективности</v8:content>
                    </v8:item>
                </title>
            </field>
            <dataSource>ИсточникДанных1</dataSource>
            <query>ВЫБРАТЬ
        Пользователи.Ссылка КАК Менеджер,
        ВзаиморасчетыОбороты.СуммаОборот КАК Дебиторка,
        ПродажиОбороты.СуммаОборот КАК Продажи,
        ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) - ЕСТЬNULL(-ВзаиморасчетыОбороты.СуммаОборот, 0) КАК КоэфЭффективности
    ИЗ
        РегистрНакопления.Взаиморасчеты.Обороты КАК ВзаиморасчетыОбороты
            ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
                ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
                ПО (ПродажиОбороты.Менеджер = Пользователи.Ссылка)
            ПО ВзаиморасчетыОбороты.Контрагент = Пользователи.Владелец</query>
        </dataSet>
        <totalField>
            <dataPath>Дебиторка</dataPath>
            <expression>Сумма(Дебиторка)</expression>
        </totalField>
        <totalField>
            <dataPath>Продажи</dataPath>
            <expression>Сумма(Продажи)</expression>
        </totalField>
        <parameter>
            <name>НачалоПериода</name>
            <title xsi:type="v8:LocalStringType">
                <v8:item>
                    <v8:lang>ru</v8:lang>
                    <v8:content>Начало периода</v8:content>
                </v8:item>
            </title>
            <valueType>
                <v8:Type>xs:dateTime</v8:Type>
                <v8:DateQualifiers>
                    <v8:DateFractions>DateTime</v8:DateFractions>
                </v8:DateQualifiers>
            </valueType>
            <value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
            <useRestriction>false</useRestriction>
        </parameter>
        <parameter>
            <name>КонецПериода</name>
            <title xsi:type="v8:LocalStringType">
                <v8:item>
                    <v8:lang>ru</v8:lang>
                    <v8:content>Конец периода</v8:content>
                </v8:item>
            </title>
            <valueType>
                <v8:Type>xs:dateTime</v8:Type>
                <v8:DateQualifiers>
                    <v8:DateFractions>DateTime</v8:DateFractions>
                </v8:DateQualifiers>
            </valueType>
            <value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
            <useRestriction>false</useRestriction>
        </parameter>
        <settingsVariant>
            <dcsset:name>Основной</dcsset:name>
            <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation>
            <dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
                <dcsset:selection>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>Менеджер</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>Дебиторка</dcsset:field>
                    </dcsset:item>
                    <dcsset:item xsi:type="dcsset:SelectedItemField">
                        <dcsset:field>Продажи</dcsset:field>
                    </dcsset:item>
                </dcsset:selection>
                <dcsset:order>
                    <dcsset:item xsi:type="dcsset:OrderItemField">
                        <dcsset:field>КоэфЭффективности</dcsset:field>
                        <dcsset:orderType>Desc</dcsset:orderType>
                    </dcsset:item>
                </dcsset:order>
                <dcsset:item xsi:type="dcsset:StructureItemGroup">
                    <dcsset:order>
                        <dcsset:item xsi:type="dcsset:OrderItemAuto"/>
                    </dcsset:order>
                    <dcsset:selection>
                        <dcsset:item xsi:type="dcsset:SelectedItemAuto"/>
                    </dcsset:selection>
                </dcsset:item>
            </dcsset:settings>
        </settingsVariant>
    </dataCompositionSchema>
    <