Срез последних в запросе к регистру сведений.... #135045


#0 by drox
Есть такая проблема. Пишу запрос на регистр сведений (переодический), запрос простейший, типа выбрать то то из того то, где .... Запрос выбирает последние записи Удовлетворяющие условиям. А мне надо выбрать из последних, те которые удовлетворяют условиям... как можно построить запрос???
#1 by колодина
а вот и выбрать из СрезПоследних...
#2 by drox
выбираю из СрезПоследних. но он выбирает записи последние удовлетворяющие условию. Получается что те записи которые он выбрал могут быть и не самыми последними (останутся те, которые не удовлетворяют условию).
#3 by колодина
не понимаю вашу логику...
#4 by drox
предположим есть две записи. Запис1 со Значением1, и Запись2 со Значением2. Если я выбираю СрезПоследних, и в условии пишу Значение = Значение1, то он выбирет первую запись. А мне надо чтобы он ничего не выбрал. т.к. последней записью является запись со значение2, а она не удовлетворяет условию.
#5 by колодина
тогда надо не из СрезПоследних, а просто из регистра, сортировать по убывающей (по дате) и выбирать по условию .
#6 by drox
и получится тоже самое что и в
#7 by drox
выберется все равно запись со значением1
#8 by колодина
нет, не получится... первую запись проверите на условие и либо выберете, либо - нет...
#9 by drox
т.е. запрос писать без условий, а потом при выборке проверять на условие?
#10 by колодина
ну вам вроде бы это надо, если я правильно поняла....
#11 by drox
это... но хотелось бы в запросе сразу отбирать нужные записи, а то может получится очень тормознуто
#12 by колодина
так вам надо только последнюю проверить на совпадение условию?
#13 by drox
да
#14 by колодина
наверное лучше так Синтаксис: ПолучитьПоследнее(<Конец периода>, <Отбор>) Параметры: <Конец периода> (необязательный) Тип: Дата, МоментВремени, Граница. Определяет момент времени, по который необходимо получить значения ресурсов. Может задаваться значениями типа Дата, МоментВремени или Граница. Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра. Значение по умолчанию: Неопределено <Отбор> (необязательный) Тип: Структура. Структура, содержащая отбор по измерениям регистра. В переданной структуре должны содержаться те измерения, по которым должны быть отфильтрованы записи. В элементе структуры задается имя и значение отбора. Значение по умолчанию: Неопределено Возвращаемое значение: Тип: Структура. Возвращает структуру, содержащую значения ресурсов. Описание: Получает значения ресурсов наиболее поздней записи регистра, соответствующей указанным периоду и значениям измерений регистра. Примечание: Применим только для периодических регистров сведений. Пример:
#15 by drox
хм... щас попробую, спасибо
#16 by drox
здесь дело в том что функция возвратит значения ресурсов, это конечно правильно, но мен надо еще и получить реквизиты. т.е. полностью запись
#17 by колодина
то есть вам надо получить как ресурсы, так и измерения? просто последнюю запись регистра?
#18 by drox
да, но удовлетворяющую условиям.
#19 by drox
вернее если она удовлетворяет условиям
#20 by колодина
тогда вот так и без отбора.  потом полученную проверьте на совпадение... Параметры: <Конец периода> (необязательный) Тип: Дата, МоментВремени, Граница. Определяет момент времени, заканчивая которым необходимо выбрать записи. Значение по умолчанию: Неопределено <Отбор> (необязательный) Тип: Структура. Структура, содержащая отбор по измерениям и реквизитам регистра. В переданной структуре должны содержаться те измерения, по которым должны быть отфильтрованы записи. В элементе структуры задается имя и значение отбора. Значение по умолчанию: Неопределено Возвращаемое значение: Тип: ТаблицаЗначений. Таблица значений, заполненная данными найденных записей регистра сведений.
#21 by drox
ладно.. получается что мы в момент выборки не сможем отобрать нужные записи. их можно проверить только после получения результата........ жаль...
#22 by колодина
так вы ведь хотите только последнюю запись проверить? можно в запрос выбрать из среза последних одну и вернуть либо запись, если она удовлетворяет условию, либо Null, если не удовлетворяет...
#23 by drox
нет, немного не так... щас приведу пример
#24 by drox
но запрос то нам вернет не одну запись, их будет много.... может даже ОЧЕНЬ много...
#25 by drox
например у меня есть измерение КодТовара, есть ресурс Склад, с течением времени товар может перемещатся по складам, я могу через Срез последних узнать на каком складе был товар... Но как узнать находится ли товар на таком то складе??? причем информацию надо получить по всем товарам
#26 by колодина
чтобы узнать на каком складе сейчас товар - срез последнич с отбором по товару... посмотрите через консоль отчетов, там все вам станет понятно...
#27 by drox
хорошо... спасибо еще раз :)
#28 by ZolotarevAA
Можно попробовать Ваш запрос сделать двухуровневым. Во вложенном запросе выбрать последнюю запись, а во внешнем проверить на условие. Вот и все. А делать выборку, а потом в выборке проверять условия - это не очень хороший вариант.
#29 by vgulaev
полностью согласен с господином  ZolotarevAA, это оптимальный вариант и по производительности и по простоте реализации
#30 by ZolotarevAA
Боюсь, что автор последней рекомендации не увидит.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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