|
СКД Можно ли ВычислитьВыражение() применять в отборе | ☑ | ||
---|---|---|---|---|
0
ildary
09.03.17
✎
15:17
|
Уважаемые специалисты, подскажите пожалуйста, можно ли результат вычисления в ВычислитьВыражение() применять в отборе?
Вывожу документы изменения цены товара, и хочется сделать галку "выводить только с разной ценой", потому что часто бывают документы установки цен, в которых цена не меняется. Разницу цены с предыдущей я получаю как isNULL((ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Цена", , , "Предыдущая", "Предыдущая") - Цена), 1 ). Если я просто вывожу это поле (Дельта) - то все работает. Но стоит мне сделать по этому полю отбор "Дельта <> 0" - появляется ошибка Выражение не может быть вычислено "НаборДанных1.Цена". |
|||
1
dezss
09.03.17
✎
15:43
|
Обычно для таких целей используют все же группировки и агрегатные функции.
Да и весь запрос было бы интересно глянуть. |
|||
2
ildary
09.03.17
✎
16:11
|
(1) спасибо за подсказку, но я еще не научился подобному - в запросе получать предыдущее значение через группировку или агрегатную функцию. Текущий запрос - очень простой:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ УстановкаЦенНоменклатурыТовары.Номенклатура, УстановкаЦенНоменклатурыТовары.ВидЦены КАК ВидЦены, УстановкаЦенНоменклатурыТовары.Ссылка КАК Документ, УстановкаЦенНоменклатурыТовары.Цена КАК Цена, УстановкаЦенНоменклатуры.Ответственный КАК Ответственный, УстановкаЦенНоменклатурыТовары.Ссылка.Дата, ВЫРАЗИТЬ(УстановкаЦенНоменклатуры.Комментарий КАК СТРОКА(300)) КАК Комментарий, УстановкаЦенНоменклатуры.ДокументОснование, УстановкаЦенНоменклатуры.ДокументОснование.Партнер ИЗ Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры ПО УстановкаЦенНоменклатурыТовары.Ссылка = УстановкаЦенНоменклатуры.Ссылка ГДЕ УстановкаЦенНоменклатурыТовары.Номенклатура В(&Номенклатура) И УстановкаЦенНоменклатуры.Проведен = ИСТИНА И УстановкаЦенНоменклатурыТовары.ВидЦены.ПометкаУдаления = ЛОЖЬ И УстановкаЦенНоменклатуры.Дата МЕЖДУ &ДатаНач И &ДатаКон УПОРЯДОЧИТЬ ПО УстановкаЦенНоменклатурыТовары.Ссылка.Дата |
|||
3
ildary
09.03.17
✎
16:14
|
Само вычисление разницы с предыдущей записью брал вот отсюда:
http://catalog.mista.ru/public/267055 Просто вывод работает без проблем, затруднение только с отбором. |
|||
4
dezss
09.03.17
✎
16:27
|
(2) Зачем тебе все усложнять и брать предыдущее и следующее значение?
Почему не сделать, например, так? ... Максимум(УстановкаЦенНоменклатурыТовары.Ссылка) КАК Документ, Максимум(УстановкаЦенНоменклатурыТовары.Ссылка.Дата) КАК Дата, ... А внизу группировка по всем остальным полям. Ты же и так не получишь в запросе всех документов, так как будет отбор только по тем, у которых цена разная. Так сгруппируй эту цену, а документы выводи по какой-нить агрегатной функции, например Максимум. Или вообще выбирай из РС.МоиЦены.СрезПоследних() с ценами и оттуда выводи регистратор, если так уж нужна эта ссылка. |
|||
5
ildary
09.03.17
✎
16:37
|
Спасибо за советы, я обязательно попробую. А это точно даст все различающиеся цены (а не максимальные или последние)?
|
|||
6
dezss
09.03.17
✎
16:38
|
УстановкаЦенНоменклатурыТовары.Ссылка.Дата,
ничего не смущает? У тебя же есть УстановкаЦенНоменклатуры, а дату берешь из товаров) |
|||
7
dezss
09.03.17
✎
16:39
|
Тьфу...не дочитал, что нужны именно все разные, а не последние...ну мало ли)
|
|||
8
ildary
09.03.17
✎
16:42
|
Да, интересуют именно разные. Последние проще было брать из СрезПоследних().
|
|||
9
dezss
09.03.17
✎
16:43
|
Кстати, ты так не получишь все разные цены.
Ведь может быть ситуация, когда была цена 100, потом 101, потом опять 100...и с этой дельтой ты получишь 2 раза цену по 100. |
|||
10
dezss
09.03.17
✎
16:46
|
(5) При использовании максимума по документу и дате и группировке по цене не мы получим именно разные цены, а не максимальные и/или последние
(8) Ну ладно. Еще один варант. Не используем СрезПоследних, просто обращение к РС.МоиЦены с группировкой по цене. |
|||
11
dezss
09.03.17
✎
16:48
|
(10) ...по цене не мы получим ...
Заменить на ...по цене мы получим... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |