Как получить последнюю партию в запросе #596738


#0 by UncleVader
Помогите пож. с запросом - надо получить список товаров с данными о последнем поступлении. Т.е. выборку делаем по регистру партий, обращаемся к виртуальной таблице остатков и левым соединением надо каким-то образом прицепить по одному крайнему документу-партии.
#1 by zak555
конфа ?
#2 by n koretsky
сортировка по убыванию и получение первого значения выборки, имеешь в виду?
#3 by UncleVader
да, сорь. Конфа самописная, структура регистра партий: Измерения: Фирма(Справочник.Фирмы) Склад(Справочник.МесиаХранения) Товар(Справочник.Номенклатура) Партия(Документ) Ресурсы: Количество Сумма
#4 by UncleVader
ага
#5 by mikecool
если есть партия в измерениях - то что сложного? срез последних взять?
#6 by n koretsky
вопрос исчерпан, получается?
#7 by UncleVader
да, спасибо попробую, про него как-то и не подумал совсем...
#8 by UncleVader
не канает - разве бывает срез последних для регистра накопления? тут как-то по-другому надо
#9 by pumbaEO
Поступлении откуда? От поставщика или же в результате инвентаризации?
#10 by UncleVader
не важно, по дате документа
#11 by Ненавижу 1С
ну взять остатки в разрезе партий, взять последнюю
#12 by mikecool
будь мужиком, возьми остатки, ....
#13 by UncleVader
как это одним запросом выкрутить? щаз вот пробую так, но не уверен что это правильно    ПартииТоваровОстаткиИОбороты.Товар КАК Товар,
#14 by mikecool
МАКСИМУМ(ПартииТоваровПоследнийПриход.ПрихДокумент) КАК ПрихДокумент не проканает или по дате или моменту времени
#15 by UncleVader
ошибку не выдает и по единичым проверочным точкам выдал те документы что надо... а что ты имеешь в виду "не проканает"? на уровне выборки данных будут сравниваться текстовые представления идентификаторов документов?
#16 by AnnaASP
Соедени с подобной таблицей: ВЫБРАТЬ ПЕРВЫЕ 1    Номенклатура,    Документ
#17 by UncleVader
пробовал - при выборке из этой таблицы выбирается ровно одна строка, которая, если повезет, соединится с одной строкой верхней выборки
#18 by Ненавижу 1С
кстати попутный вопрос - а зачем тебе последняя партия?
#19 by UncleVader
отчет называется "Анализ неликвидных товаров", который должен показать список товаров, которые не продаются в течении заданного периода. И одно из полей это когда он был последний раз куплен
#20 by mikecool
выбрать ..., Приходы.ДокПоступления выбрать Номенклатура, ДокПоступления из партии.Остатки) По Номенклатура не оно?
#21 by Ненавижу 1С
когда, для этого достаточно даты ВЫБРАТЬ    ПартииТоваровОстатки.Товар КАК Товар, сгруппировать по ПартииТоваровОстатки.Товар
#22 by UncleVader
не совсем, мне же нужна запись с одним товаром, его остатках на начало и конец какого-то периода и ссылкой на последний документ прихода, при этом! не факт что этот документ лежит в рамках заданного периода. Например мы анализируем 2001 год, получаем в результате что гайка лежала на начало 2011 года на складе, за весь год ни разу не продалась, а нерадивый менеджер умудрился в январе 2012 ее еще раз купить. и в этом случае надо знать не просто дату, но и сам документ - вдруг он еще чего ненужного купил...
#23 by DexterMorgan
как определяешь, что товар не продавался?
#24 by Ненавижу 1С
тогда взять максимум по дате, потом из этого по ссылке, вот и документ
#25 by UncleVader
проверяю по условию НачОст<>0 И ОстатокТовараРасход=0 да, я так и думал, да вот с синтаксической конструкцией запутался - никак ниасилю :)
#26 by UncleVader
но это грубо, в идеале надо сравнивать не абсолютный ноль, а относительный. Другими словами, если на складе лежит 1500 шайбочек и одна из них продалась все-равно это труп
#27 by DexterMorgan
Перемещение не может быть расходом? Или при перемещении он считается ликвидным?
#28 by UncleVader
нет, перемещение не расход - расходы я отбираю по коду операции расхода
#29 by Ненавижу 1С
(ВЫБРАТЬ сгруппировать по Т.Товар, Т.СтоимостьНачальныйОстаток, Т.СтоимостьКонечныйОстаток
#30 by DexterMorgan
не понял..=) я имею ввиду что ты по регистру ПартииТоваров определяешь был ли факт продажи, я пока не могу понять как это можно сделать не спускаясь до регистратора, потому что движение расход могут делать другие документы помимо реализации - перемещение, списание и т.д.
#31 by DexterMorgan
Я пока вижу два варианта: 1. Отслеживать факт продажи по РН "Продажи" (ну или как у тебя называется) получать там список номенклатуры и ставить условие Номенклатура НЕ В.. 2. Отслеживать по таблице ОСтаткиИОбороты ПартийТоваров с детализацией до регистратора...
#32 by mikecool
это один вариант партии - продажи = висяки
#33 by DexterMorgan
2 вариант явно накладывать условие на регистратор. в 1 варианте детализация до регистратора не нужна
#34 by UncleVader
я это делаю вот так СУММА(ВЫБОР
#35 by UncleVader
а чем по сути это отличается от моего варианта ?
#36 by DexterMorgan
Ну я не знал что у тебя там измерение код операции =))
#37 by UncleVader
это не измерение, а реквизит ;)
#38 by DexterMorgan
В типовых такого нету..
#39 by UncleVader
точно
#40 by DexterMorgan
Ты из реальной таблицы что ле выбираешь тада?
#41 by Ненавижу 1С
там другие таблицы
#42 by UncleVader
да, делаю левое соединение с сырой таблицей спасибо, наверное так действительно будет оптимальнее, сомнения были только в этом МАКСИМУМ(Т2.ПрихДокумент) КАК ПрихДокумент
#43 by Киборг
Если нужен запрос, который должен сразу выдать нужные данные, то одним регистром накопления не обойтись, так как вроде бы (не знаю способа как можно) нельзя вытащить последний документ, если два последних лежат в одной секунде. Возможные выходы - или вести регистр сведений типа "партии прихода" (и получать последний из него срезом последних, вариант вполне нормальный, регистры в частности нужны и для получения нужных данных для отчетов), - или получать все последние документы и отсекать лишние (программно), если их несколько в одной секунде, - или выдавать в отчете все последние документы в одной секунде (случай редкий, если показать как он будет выглядеть, то могут и согласится принять такой вариант)
#44 by Киборг
есть еще вариант динамического соединения со строкой вложенного запроса, типа ВЫБРАТЬ ОстаткиОсн.Ном, ОстаткиОсн.Партия ИЗ Остатки КАК ОстаткиОсн ОстаткиОсн.Партия В (    ВЫБРАТЬ ПЕРВЫЕ 1      ОстаткиДоп.Партия    Упорядочить ПО ОстаткиДоп.Партия.Дата УБЫВ) этот вариант может долго работать на больших выборках, если на твоих объемах будет приемлемое время, то можно и так
#45 by Киборг
Кстати, если долго работает, то можно усложнить, посчитав для каких товаров существует несколько последних документов в одной секунде и выполнить динамическое связывание только для тех, у которых их больше одного. Хотя, для такой задачи наверно достаточно и МАКСИМУМ(Т2.ПрихДокумент) :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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