Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 05:04

Коэфы групп в запросе/скд

Автор Vasylii, 25 окт 2023, 11:57

0 Пользователей и 1 гость просматривают эту тему.

Vasylii

Есть запрос который тянет данные из заказ клиента, нужно рассчитать либо в запросе либо в скд коэф за группы на менджера, т.е. если кол-во нмк групп < 3 тогда сумма * 0.1 , вся сложность что есть дубли по группам из документа, как правильно это реализовать?
ВЫБРАТЬ
Бит_БонусыСрезПоследних.Сотрудникс КАК Сотрудникс,
Бит_БонусыСрезПоследних.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
Бит_БонусыСрезПоследних.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
РегистрСведений.Бит_Бонусы.СрезПоследних КАК Бит_БонусыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Родитель) КАК ГруппаНмк
ПОМЕСТИТЬ НмкГрупп
ИЗ
Справочник.Номенклатура КАК Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер КАК Менджер,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура КАК Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель КАК ГруппаНоменклатуры,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход КАК Отгружено,
ЕСТЬNULL(РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход, 0) КАК Оплачено,
ВременнаяТаблица.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс,
ВременнаяТаблица.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход КАК КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ КАК СтатусОплаты,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ НмкГрупп.ГруппаНмк) КАК ГруппаНмк
ПОМЕСТИТЬ втПредварительно
ИЗ
РегистрНакопления.ЗаказыКлиентов.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ЗаказыКлиентовОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ОбъектРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента) КАК РасчетыСКлиентамиОстаткиИОбороты
ПО ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента = РасчетыСКлиентамиОстаткиИОбороты.ОбъектРасчетов.Объект
ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
ПО ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер = ВременнаяТаблица.Сотрудникс
ЛЕВОЕ СОЕДИНЕНИЕ НмкГрупп КАК НмкГрупп
ПО ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель = НмкГрупп.ГруппаНмк

СГРУППИРОВАТЬ ПО
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер,
ЕСТЬNULL(РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход, 0),
ВременнаяТаблица.Бит_КоэфБонусЕдТехники,
ВременнаяТаблица.Бит_КоэфБонусЕдТехникиФикс,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втПредварительно.ЗаказКлиента КАК ЗаказКлиента,
втПредварительно.Номенклатура КАК Номенклатура,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ втПредварительно.ГруппаНмк) КАК ГруппаНмк,
втПредварительно.Отгружено КАК Отгружено,
втПредварительно.Оплачено КАК Оплачено,
втПредварительно.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс,
втПредварительно.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
ВЫБОР
КОГДА втПредварительно.КОплатеРасход >= втПредварительно.СуммаДокумента
ТОГДА втПредварительно.Бит_КоэфБонусЕдТехникиФикс * втПредварительно.Оплачено
ИНАЧЕ 0
КОНЕЦ КАК Бонус,
ВЫБОР
КОГДА втПредварительно.КОплатеРасход >= втПредварительно.СуммаДокумента
ТОГДА втПредварительно.Бит_КоэфБонусЕдТехники / 100 * втПредварительно.Оплачено
ИНАЧЕ 0
КОНЕЦ КАК Бонус2,
ВЫБОР
КОГДА КОЛИЧЕСТВО(втПредварительно.ГруппаНмк) < 7
ТОГДА втПредварительно.Оплачено * 0.3
ИНАЧЕ 0
КОНЕЦ КАК Меньше7,
ВЫБОР
КОГДА КОЛИЧЕСТВО(втПредварительно.ГруппаНмк) < 5
ТОГДА втПредварительно.Оплачено * 0.1
ИНАЧЕ 0
КОНЕЦ КАК Меньше5,
ВЫБОР
КОГДА КОЛИЧЕСТВО(втПредварительно.ГруппаНмк) >= 7
ТОГДА втПредварительно.Оплачено * 0.5
ИНАЧЕ 0
КОНЕЦ КАК больше7,
ВЫБОР
КОГДА КОЛИЧЕСТВО(втПредварительно.ГруппаНмк) < 4
ТОГДА 0
ИНАЧЕ 0
КОНЕЦ КАК Меньше3,
втПредварительно.СтатусОплаты КАК статусОплаты,
втПредварительно.Менджер КАК Менджер,
МАКСИМУМ(втПредварительно.Номенклатура.Родитель) КАК НоменклатураРодитель
ИЗ
втПредварительно КАК втПредварительно
ГДЕ
втПредварительно.СтатусОплаты = "Оплачено полностью"
И втПредварительно.Менджер = &Менджер

СГРУППИРОВАТЬ ПО
втПредварительно.ЗаказКлиента,
втПредварительно.Номенклатура,
втПредварительно.Отгружено,
втПредварительно.Оплачено,
втПредварительно.Бит_КоэфБонусЕдТехникиФикс,
втПредварительно.Бит_КоэфБонусЕдТехники,
ВЫБОР
КОГДА втПредварительно.КОплатеРасход >= втПредварительно.СуммаДокумента
ТОГДА втПредварительно.Бит_КоэфБонусЕдТехникиФикс * втПредварительно.Оплачено
ИНАЧЕ 0
КОНЕЦ,
ВЫБОР
КОГДА втПредварительно.КОплатеРасход >= втПредварительно.СуммаДокумента
ТОГДА втПредварительно.Бит_КоэфБонусЕдТехники / 100 * втПредварительно.Оплачено
ИНАЧЕ 0
КОНЕЦ,
втПредварительно.СтатусОплаты,
втПредварительно.Менджер

Максим75

Vasylii, смотрите, у Вас вот здесь

ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Родитель) КАК ГруппаНмк
ПОМЕСТИТЬ НмкГрупп
ИЗ
    Справочник.Номенклатура КАК Номенклатура
;
получается кол-во, т.е. какое-то число групп в справочнике Номенклатура.

потом Вы пытаетесь Родителя номенклатуры, т.е. объект справочника, связать с количеством. вряд ли что-то в этой связи получится. если Вам надо количество групп из документа (как Вы пишете), так и возьмите с документа на каждый товар группу, а потом примените количество различных к группе, и Вы получите количество групп товаров из документа.

Vasylii

Максим75,  не много не понимаю как это реализовать подскажите,
вот запрос почистил
ВЫБРАТЬ
Бит_Бонусы.Сотрудникс КАК Сотрудникс,
Бит_Бонусы.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
Бит_Бонусы.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс
ПОМЕСТИТЬ Временная
ИЗ
РегистрСведений.Бит_Бонусы КАК Бит_Бонусы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер КАК Менджер,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура КАК Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель КАК ГруппаНоменклатуры,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход КАК Отгружено,
ЕСТЬNULL(РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход, 0) КАК Оплачено,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход КАК КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ КАК СтатусОплаты
ПОМЕСТИТЬ втПредварительно
ИЗ
РегистрНакопления.ЗаказыКлиентов.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ЗаказыКлиентовОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ОбъектРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента) КАК РасчетыСКлиентамиОстаткиИОбороты
ПО ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента = РасчетыСКлиентамиОстаткиИОбороты.ОбъектРасчетов.Объект

СГРУППИРОВАТЬ ПО
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Родитель) КАК Родитель,
Номенклатура.Родитель КАК ИмяГруппы
ПОМЕСТИТЬ Нмк
ИЗ
Справочник.Номенклатура КАК Номенклатура

СГРУППИРОВАТЬ ПО
Номенклатура.Родитель
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
втПредварительно.Менджер КАК Менджер,
втПредварительно.ЗаказКлиента КАК ЗаказКлиента,
втПредварительно.Номенклатура КАК Номенклатура,
втПредварительно.ГруппаНоменклатуры КАК ГруппаНоменклатуры,
втПредварительно.Отгружено КАК Отгружено,
втПредварительно.Оплачено КАК Оплачено,
втПредварительно.СуммаДокумента КАК СуммаДокумента,
втПредварительно.КОплатеРасход КАК КОплатеРасход,
втПредварительно.СтатусОплаты КАК СтатусОплаты,
Временная.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
Временная.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс
ИЗ
втПредварительно КАК втПредварительно
ЛЕВОЕ СОЕДИНЕНИЕ Нмк КАК Нмк
ПО втПредварительно.ГруппаНоменклатуры = Нмк.Родитель
ЛЕВОЕ СОЕДИНЕНИЕ Временная КАК Временная
ПО втПредварительно.Менджер = Временная.Сотрудникс
ГДЕ
втПредварительно.СтатусОплаты = "Оплачено полностью"
И втПредварительно.Менджер = &Менджер

СГРУППИРОВАТЬ ПО
втПредварительно.Номенклатура,
втПредварительно.Менджер,
втПредварительно.ЗаказКлиента,
втПредварительно.ГруппаНоменклатуры,
втПредварительно.Отгружено,
втПредварительно.Оплачено,
втПредварительно.СуммаДокумента,
втПредварительно.КОплатеРасход,
втПредварительно.СтатусОплаты,
Временная.Бит_КоэфБонусЕдТехники,
Временная.Бит_КоэфБонусЕдТехникиФикс

Vasylii

Максим75, самое адекватное пока что в голову пришло сгруппировать номенклатуру и ее данные и все

Максим75

Vasylii, смотрите, что Вы хотите получить в последнем запросе?
какие необходимы поля? я вижу, что надо выбрать заказы, которые полностью оплачены и по нужному менеджеру.
в каждом заказе надо кол-во групп посчитать и к каждому заказу применить коэффициент? или как?
вот сами себе ответьте, что Вы хотите получить, чтобы потом посчитать коэффициенты.

Vasylii

Максим75, нужно получить какое кол-во групп продал данный менджер на срез дат

Максим75

Vasylii, ну если такая задача, то делаете следующее:
выбираете на нужную дату (хотя странно, обычно продажи за период берутся) товар, из товара получаете группу (т.е. родителя), менеджера, отбираете по нужному менеджеру, все это или во вложенном запросе делаете или выгружаете во временный запрос.
потом из полученного выбираете только менеджера, группу товара, группируете по менеджеру, к группе применяете агрегатную функцию количество различных. и все это кино во временную таблицу.
потом уже с этой временной таблицы вытягиваете кол-во групп, менеджера, делаете поле, где считаете сколько чего менеджеру надо выплатить (через конструкцию Выбор), а уже потом связываете с регистром сведений Бит_бонусы.
это вкратце.

Vasylii

Максим75, либо я не так понял замысел либо страдает реализация
ВЫБРАТЬ
Бит_Бонусы.Сотрудникс КАК Сотрудникс,
Бит_Бонусы.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
Бит_Бонусы.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс
ПОМЕСТИТЬ Временная
ИЗ
РегистрСведений.Бит_Бонусы КАК Бит_Бонусы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер КАК Менджер,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура КАК Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель КАК ГруппаНоменклатуры,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход КАК Отгружено,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход КАК КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ КАК СтатусОплаты
ПОМЕСТИТЬ втПредварительно
ИЗ
РегистрНакопления.ЗаказыКлиентов.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ЗаказыКлиентовОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ОбъектРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента) КАК РасчетыСКлиентамиОстаткиИОбороты
ПО ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента = РасчетыСКлиентамиОстаткиИОбороты.ОбъектРасчетов.Объект

СГРУППИРОВАТЬ ПО
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ
;

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

СГРУППИРОВАТЬ ПО
втПредварительно.ГруппаНоменклатуры,
втПредварительно.Менджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СУММА(Нмк.Колво) КАК Колво
ПОМЕСТИТЬ СчетГрупп
ИЗ
Нмк КАК Нмк
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втПредварительно.Менджер КАК Менджер,
втПредварительно.ЗаказКлиента КАК ЗаказКлиента,
втПредварительно.Номенклатура КАК Номенклатура,
втПредварительно.ГруппаНоменклатуры КАК ГруппаНоменклатуры,
втПредварительно.Отгружено КАК Отгружено,
втПредварительно.СуммаДокумента КАК СуммаДокумента,
ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) КАК Оплачено,
Временная.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
Временная.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс,
втПредварительно.СтатусОплаты КАК СтатусОплаты,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) < 7
ТОГДА ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) * 0.3
ИНАЧЕ 0
КОНЕЦ КАК Поле1,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) < 3
ТОГДА 0
ИНАЧЕ 0
КОНЕЦ КАК Поле2,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) >= 7
ТОГДА ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) * 0.5
ИНАЧЕ 0
КОНЕЦ КАК Поле4,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) < 4
ТОГДА ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) * 0.1
ИНАЧЕ 0
КОНЕЦ КАК Поле3
ИЗ
втПредварительно КАК втПредварительно
ЛЕВОЕ СОЕДИНЕНИЕ Временная КАК Временная
ПО втПредварительно.Менджер = Временная.Сотрудникс
ЛЕВОЕ СОЕДИНЕНИЕ Нмк КАК Нмк
ПО втПредварительно.ГруппаНоменклатуры = Нмк.ГруппаНоменклатуры,
СчетГрупп КАК СчетГрупп
ГДЕ
втПредварительно.Менджер = &Менджер
И втПредварительно.СтатусОплаты = "Оплачено полностью"

СГРУППИРОВАТЬ ПО
втПредварительно.Номенклатура,
втПредварительно.Менджер,
втПредварительно.ЗаказКлиента,
втПредварительно.ГруппаНоменклатуры,
втПредварительно.Отгружено,
втПредварительно.СуммаДокумента,
Временная.Бит_КоэфБонусЕдТехники,
Временная.Бит_КоэфБонусЕдТехникиФикс,
ЕСТЬNULL(втПредварительно.КОплатеРасход, 0),
втПредварительно.СтатусОплаты,
втПредварительно.КОплатеРасход

Vasylii

Максим75,  вроде так
ВЫБРАТЬ
Бит_Бонусы.Сотрудникс КАК Сотрудникс,
Бит_Бонусы.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
Бит_Бонусы.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс
ПОМЕСТИТЬ Временная
ИЗ
РегистрСведений.Бит_Бонусы КАК Бит_Бонусы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер КАК Менджер,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура КАК Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель КАК ГруппаНоменклатуры,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход КАК Отгружено,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход КАК КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ КАК СтатусОплаты
ПОМЕСТИТЬ втПредварительно
ИЗ
РегистрНакопления.ЗаказыКлиентов.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ЗаказыКлиентовОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ОбъектРасчетов.Объект ССЫЛКА Документ.ЗаказКлиента) КАК РасчетыСКлиентамиОстаткиИОбороты
ПО ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента = РасчетыСКлиентамиОстаткиИОбороты.ОбъектРасчетов.Объект

СГРУППИРОВАТЬ ПО
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Менеджер,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Родитель,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента,
РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход,
ВЫБОР
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход = 0
ИЛИ РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход ЕСТЬ NULL
ТОГДА "Не оплачено"
КОГДА РасчетыСКлиентамиОстаткиИОбороты.КОплатеРасход >= ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.СуммаДокумента
ТОГДА "Оплачено полностью"
ИНАЧЕ "Оплачено частично"
КОНЕЦ
;

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

СГРУППИРОВАТЬ ПО
втПредварительно.ГруппаНоменклатуры,
втПредварительно.Менджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СУММА(Нмк.Колво) КАК Колво,
Нмк.ГруппаНоменклатуры КАК ГруппаНоменклатуры
ПОМЕСТИТЬ СчетГрупп
ИЗ
Нмк КАК Нмк

СГРУППИРОВАТЬ ПО
Нмк.ГруппаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
втПредварительно.Менджер КАК Менджер,
втПредварительно.ЗаказКлиента КАК ЗаказКлиента,
втПредварительно.Номенклатура КАК Номенклатура,
втПредварительно.ГруппаНоменклатуры КАК ГруппаНоменклатуры,
втПредварительно.Отгружено КАК Отгружено,
втПредварительно.СуммаДокумента КАК СуммаДокумента,
ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) КАК Оплачено,
Временная.Бит_КоэфБонусЕдТехники КАК Бит_КоэфБонусЕдТехники,
Временная.Бит_КоэфБонусЕдТехникиФикс КАК Бит_КоэфБонусЕдТехникиФикс,
втПредварительно.СтатусОплаты КАК СтатусОплаты,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) < 7
ТОГДА ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) * 0.3
ИНАЧЕ 0
КОНЕЦ КАК Меньше7,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) < 3
ТОГДА 0
ИНАЧЕ 0
КОНЕЦ КАК меньше3,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) > 8
ТОГДА ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) * 0.5
ИНАЧЕ 0
КОНЕЦ КАК больше7,
ВЫБОР
КОГДА КОЛИЧЕСТВО(СчетГрупп.Колво) < 4
ТОГДА ЕСТЬNULL(втПредварительно.КОплатеРасход, 0) * 0.1
ИНАЧЕ 0
КОНЕЦ КАК меньше4
ИЗ
втПредварительно КАК втПредварительно
ЛЕВОЕ СОЕДИНЕНИЕ Временная КАК Временная
ПО втПредварительно.Менджер = Временная.Сотрудникс
ЛЕВОЕ СОЕДИНЕНИЕ Нмк КАК Нмк
ПО втПредварительно.ГруппаНоменклатуры = Нмк.ГруппаНоменклатуры,
СчетГрупп КАК СчетГрупп
ГДЕ
втПредварительно.Менджер = &Менджер
И втПредварительно.СтатусОплаты = "Оплачено полностью"

СГРУППИРОВАТЬ ПО
втПредварительно.Номенклатура,
втПредварительно.Менджер,
втПредварительно.ЗаказКлиента,
втПредварительно.ГруппаНоменклатуры,
втПредварительно.Отгружено,
втПредварительно.СуммаДокумента,
Временная.Бит_КоэфБонусЕдТехники,
Временная.Бит_КоэфБонусЕдТехникиФикс,
ЕСТЬNULL(втПредварительно.КОплатеРасход, 0),
втПредварительно.СтатусОплаты,
втПредварительно.КОплатеРасход

Максим75

Vasylii, смешались в кучу, кони, люди...
что Вы хотите получить в СчетГрупп и в НМК?
в НМК вообще что-то странное...

Похожие темы (5)

Рейтинг@Mail.ru

Поиск