|
Использование таблицы значений в СКД, связь наборов данных | ☑ | ||
---|---|---|---|---|
0
Deryni
11.03.15
✎
18:49
|
Есть такая задача. Нужно в отчёте вывести ценовой сегмент для номенклатуры. Ценовой сегмент задаётся градацией от цены. Например цена до 100 долларов - Сегмент 1, от 100 до 300 - Сегмент 2 и так далее. Задаваться это будет в виде таблицы значений в форме с порогами, например так:
100 - Сегмент 1 300 - Сегмент 2 1000 - Сегмент 3 99999999999999.99 - Сегмент 4 Теперь хочу в запросе СКД получить сегмент В обычно запросе я бы передал таблицу параметров, а потом написал так: ВЫБРАТЬ Т.Порог, Т.Сегмент ПОМЕСТИТЬ ВТСегменты ИЗ &ТСегментов КАК Т ; ВЫБРАТЬ Рег.Номенклатура Товар, Рег.Цена ПОМЕСТИТЬ ВТТовары ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПослдених(&Дата, ТипЦен = &ТипЦен) Рег ВЫБРАТЬ ТоварыСПорогом.Товар, ВТСегменты.Сегмент ИЗ (ВЫБРАТЬ ВТТовары.Товар, МАКСИМУМ(ВТСегменты.Порог) Порог ИЗ ВТТовары ЛЕВОЕ СОЕДИНЕНИЕ ВТСегменты ПО ВТСегменты.Порог <= ВТТовары.Цена СГРУППИРОВАТЬ ПО ВТТовары.Товар ) ТоварыСПорогом ЛЕВОЕ СОЕДИНЕНИЕ ВТСегменты ПО ВТСегменты.Порог = ТоварыСПорогом.Порог Но в СКД нельзя вставить таблицу значений параметром, а если я делаю набор данных Таблицу значений, то я не могу с ней соединиться по вот такому хитрому условию. Можно, конечно сделать набор данных ТЗ, по нему рассчитать сегменты для товаров и потом присоединить по соединению наборов данных. Но это ж лишний запрос, а его делать не хочется. |
|||
1
Bober
11.03.15
✎
21:40
|
сделать вычисляемое поле, в котором программно генерировать выражение по данным в тз перед компоновкой.
|
|||
2
Necessitudo
11.03.15
✎
21:54
|
В СКД ж есть условия связей. Могу предложить альтернативу - ты в зависимости от числа записей в своей ТЗ с порогами правишь текст запроса компоновки, добавляя туда параметры и соответственно заполняя их значения в компоновщике настроек.
|
|||
3
eklmn
гуру
11.03.15
✎
22:13
|
а сегменты в ТЗ откуда получаешь? правильней будет в запросе сразу дернуть
|
|||
4
eklmn
гуру
11.03.15
✎
22:14
|
первым пакетом считай, зачем это тз?
|
|||
5
Deryni
12.03.15
✎
14:09
|
(1) Ну в принципе такая мысль была. Вначале посчитать сегментацию, потом загнать в ТЗ и уже тогда присоединять. Наверное это единственный вариант.
(2) Есть, но я нигде не нашёл вменяемого описания и примеров использования этих условий. Рыл форумы, смотрел Хрусталёву и ещё другие примеры, но не нашёл нигде. Если подскажите, буду благодарен. Кроме того, я так подозреваю, что через условия это не получится сделать. (3) Пользователь задаёт таблицу сегментации руками. Каждый раз перед формированием отчёта. Ну или сохраняет в сохранённой настройке. (4) Что первым пакетом считать? У меня пользователь сам определяет какой сегмент соответствует какому порогу. В отчёте я должен взять цену на товар и по таблице порогов определить к какому сегменту она относится. В итоге я реализовал через ТЧ, привязанную к справочнику типов цен. Пользователя такой вариант устроил. |
|||
6
fisher
12.03.15
✎
14:13
|
Вообще, ценовые сегменты напрашивается в базе хранить. Тогда и сабжевой проблемы нет и вообще решение с человеческим лицом.
|
|||
7
fisher
12.03.15
✎
14:14
|
А, ты в итоге так и сделал. Ну и молодец.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |