Имя: Пароль:
1C
1С v8
Перебор справочника в тексте запроса....хз
0 1C_Enigma
 
25.04.12
01:12
Есть справочник ШкалаЗРП, в нем указаны диапазоны(средней наценки)и ставки...Типа если наценка в диапазоне от 1% до 2%, то ставка 0,5. На 0,5 будем умножать твой оборот, что и будет являться зарплатой. К примеру.
Нужно в запросе выбрать обороты и наценки менеджеров по производителям, найти соответствие в справочнике, полученную ставку умножить на оборот.
Запрос

"ВЫБРАТЬ
       |    Продажи.Регистратор.Менеджер КАК Менеджер,
       |    Продажи.Номенклатура.Производитель КАК Производитель,
       |    ШкалаСтавокЗРП.НГраница КАК НижняяГраница,
       |    ШкалаСтавокЗРП.ВГраница КАК ВерхняяГраница,
       |    ШкалаСтавокЗРП.Ставка КАК СтавкаЗРП,
       |    Продажи.Стоимость КАК Стоимость,
       |    ПродажиСебестоимость.Стоимость КАК СтоимостьСеб,
       |    СУММА(Продажи.Стоимость) - СУММА(ПродажиСебестоимость.Стоимость) КАК Доход,
       |    100 * ((СУММА(Продажи.Стоимость) - СУММА(ПродажиСебестоимость.Стоимость)) / СУММА(ПродажиСебестоимость.Стоимость)) КАК Наценка,
       |    ВЫБОР
       |        КОГДА СУММА(Продажи.Стоимость) - СУММА(ПродажиСебестоимость.Стоимость) <> 0
       |                И (100 * ((СУММА(Продажи.Стоимость) - СУММА(ПродажиСебестоимость.Стоимость)) / СУММА(ПродажиСебестоимость.Стоимость)) МЕЖДУ ШкалаСтавокЗРП.НГраница И ШкалаСтавокЗРП.ВГраница)
       |            ТОГДА ШкалаСтавокЗРП.Ставка
       |        ИНАЧЕ 0
       |    КОНЕЦ КАК Ставка,
       |    ПродажиСебестоимость.Регистратор.Менеджер
       |ИЗ
       |    Справочник.ШкалаСтавокЗРП КАК ШкалаСтавокЗРП,
       |    РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК Продажи
       |        ПО ПродажиСебестоимость.Номенклатура = Продажи.Номенклатура
       |ГДЕ
       |    Продажи.Регистратор.Менеджер <> &ПустойМенеджер
       |    И ПродажиСебестоимость.Регистратор.Менеджер <> &ПустойМенеджер
       |
       |СГРУППИРОВАТЬ ПО
       |    Продажи.Регистратор.Менеджер,
       |    Продажи.Номенклатура.Производитель,
       |    ШкалаСтавокЗРП.НГраница,
       |    ШкалаСтавокЗРП.ВГраница,
       |    ШкалаСтавокЗРП.Ставка,
       |    Продажи.Стоимость,
       |    ПродажиСебестоимость.Стоимость,
       |    ПродажиСебестоимость.Регистратор.Менеджер
       |ИТОГИ
       |    СУММА(Стоимость),
       |    СУММА(СтоимостьСеб),
       |    СУММА(Доход)
       |ПО
       |    Менеджер,
       |    Производитель";

Вопрос № 1 - как в этом случае лучше делать поиск....
Вопрос № 2 - не хочу, группировать по этой куче полей, не правильно итоги рассчитываются, а удаляешь эти поля - ругается....
1 zak555
 
25.04.12
08:13
странная реализация

откуда программа будет знать : какая наценка была применена к тому или иному товару ?
2 Азат
 
25.04.12
08:23
а что мешает сначала ставки зафигачить во врем таблицу, а потом получить данные по продажам и приджойнить туда как раз ставки?

что-то вроде

выбрать
из регистр.продажисебестоимость
левое соединение
ВТ_Ставки ПО ВТ_Ставки.НижняяГраница < ПродажиОборот И ВТ_Ставки.ВерхняяГраница > ПродажиОборот...
3 1C_Enigma
 
25.04.12
14:33
(2) это проверочный вариант, а так обороты и наценка и так во временной таблице...загвоздка КАК сделать поиск наценки из врем таблицы в справочнике.....в справочнике не лежат конкретные значения, а диапазоны.....разве получится левым соединением???
4 1C_Enigma
 
25.04.12
14:34
(1) что значит - откуда программа будет знать : какая наценка была применена к тому или иному товару ?
что прога не знает оборот и себестоимость? вычислим доход, вычислим наценку....вот и знает
5 1C_Enigma
 
25.04.12
14:41
надо так
ВТНаценки(расчитанные уже)             СпрШкалаСтавок
шоколад А - 5%                 диапазон 1: нижняя ставка 3% верхняя 6% ставка 0,3  
шоколад Б - 7%             диапазон 2: нижняя ставка 6,5% верхняя 8% ставка 0,5

Берем шоколад А, видим что наценка у него 5%, берем теперь справочник и смотрим, в какой диапазон входит эти 5%, находим, что это диапазон 1 со ставкой 0,3.
6 1C_Enigma
 
25.04.12
15:35
Вопрос снят. Спасибо.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.