СКД Можно ли ВычислитьВыражение() применять в отборе #792691


#0 by ildary
Уважаемые специалисты, подскажите пожалуйста, можно ли результат вычисления в ВычислитьВыражение применять в отборе? Вывожу документы изменения цены товара, и хочется сделать галку "выводить только с разной ценой", потому что часто бывают документы установки цен, в которых цена не меняется. Разницу цены с предыдущей я получаю как isNULL((ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Цена", , , "Предыдущая", "Предыдущая") - Цена), 1 ). Если я просто вывожу это поле (Дельта) - то все работает. Но стоит мне сделать по этому полю отбор "Дельта <> 0" - появляется ошибка Выражение не может быть вычислено "НаборДанных1.Цена".
#1 by dezss
Обычно для таких целей используют все же группировки и агрегатные функции. Да и весь запрос было бы интересно глянуть.
#2 by ildary
спасибо за подсказку, но я еще не научился подобному - в запросе получать предыдущее значение через группировку или агрегатную функцию. Текущий запрос - очень простой: ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ     УстановкаЦенНоменклатурыТовары.Номенклатура,     УстановкаЦенНоменклатурыТовары.ВидЦены КАК ВидЦены,     УстановкаЦенНоменклатуры.ДокументОснование.Партнер ИЗ     И УстановкаЦенНоменклатуры.Дата МЕЖДУ &ДатаНач И &ДатаКон УПОРЯДОЧИТЬ ПО     УстановкаЦенНоменклатурыТовары.Ссылка.Дата
#3 by ildary
Само вычисление разницы с предыдущей записью брал вот отсюда: Просто вывод работает без проблем, затруднение только с отбором.
#4 by dezss
Зачем тебе все усложнять и брать предыдущее и следующее значение? Почему не сделать, например, так? ... ... А внизу группировка по всем остальным полям. Ты же и так не получишь в запросе всех документов, так как будет отбор только по тем, у которых цена разная. Так сгруппируй эту цену, а документы выводи по какой-нить агрегатной функции, например Максимум. Или вообще выбирай из РС.МоиЦены.СрезПоследних с ценами и оттуда выводи регистратор, если так уж нужна эта ссылка.
#5 by ildary
Спасибо за советы, я обязательно попробую. А это точно даст все различающиеся цены (а не максимальные или последние)?
#6 by dezss
УстановкаЦенНоменклатурыТовары.Ссылка.Дата, ничего не смущает? У тебя же есть УстановкаЦенНоменклатуры, а дату берешь из товаров)
#7 by dezss
Тьфу...не дочитал, что нужны именно все разные, а не последние...ну мало ли)
#8 by ildary
Да, интересуют именно разные. Последние проще было брать из СрезПоследних.
#9 by dezss
Кстати, ты так не получишь все разные цены. Ведь может быть ситуация, когда была цена 100, потом 101, потом опять 100...и с этой дельтой ты получишь 2 раза цену по 100.
#10 by dezss
При использовании максимума по документу и дате и группировке по цене не мы получим именно разные цены, а не максимальные и/или последние Ну ладно. Еще один варант. Не используем СрезПоследних, просто обращение к РС.МоиЦены с группировкой по цене.
#11 by dezss
...по цене не мы получим ... Заменить на ...по цене мы получим...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С