1С++ Как получить последний документ, которым были движения по регистру #527491


#0 by Admin_Net_1C
Есть регистр остатков "_ЗапчастиУстановленные", измерения: Машина, Запчать, ресурс: Количество. Необходимо получить на заданную дату установленные на машину запчасти и документ установки. Выполняю запрос: но если одна и та же запчасть устанавливалась на данную машину несколько раз, то возвращается несколько строк с документами установки, а мне нужен только последний документ установки. Каким образом можно добиться данного результата?
#1 by dimm7310
Попробуй через виртуальную таблицу Обороты (или ОстаткиОбороты) - периодичность документ.
#2 by Rie
Если SQL, то ORDER BY DATE_TIME_IDDOC и ограничься только первым Если DBF - аналогично, только по DATE и TIME
#3 by Rie
+ DESC, естественно
#4 by МихаилМ
для начала определиться, что такое последний документ. если учет оперативный тогда за последний можно считать док с макс iddoc -> сгруппировать по Машина, Запчать сумму / колво дублей  (если цена детали одинаковая, что логично) ИЛИ обединить с такимже по условиям отбора запросом но выбрать в нем только MAX(ДокУст.ДатаДок)
#5 by OnCheck
о, а что это значит? $РегистрОстатки._ЗапчастиУстановленные(:КонДата~, , "+СтрУсловия+", , ) as РегОст неужели какая то новая фича? а по поводу твоего вопроса, через INNER точно не получится, может сначала обращаться в таблице движений и делать через sort by обратным порядком а в начале Distinct?
#6 by OnCheck
+ как в
#7 by smaharbA
а зачем 1с++ и запрос ? (в постановке вопроса по сабжу)
#8 by МихаилМ
вид операции логично хранить в движениях регистра.
#9 by Mikeware
Ну, ВыбратьДвижения потянет все движения на клиента. Прямой запрос вернет только одно нужное. быстее...
#10 by Admin_Net_1C
мимо пробовал: |SELECT выдает только ОДНУ строку с последним документом последний документ - это последний документ, которым устанавливалась данная запчасть на данную машину. В том числе установка/снятие может происходить и в течении одного дня. Таким образом, нужен последний документ и в течении дня, если были такие операции.
#11 by Admin_Net_1C
не понял по поводу фичи, что не так? см.
#12 by Ёпрст
не одну, а только ту, где машина и запчасть есть такие же, как и  в последнем доке..
#13 by OnCheck
все так просто сижу на ДБФ, а это то же самое что я делаю кодом на несколько 10 строк, только на СКЛ.
#14 by DrZombi
Остаток не бери, Сформируй по простому, чисто оборот возьми. При этом без всяких виртуальных функций. Так надежней и понятней будет :)
#15 by Rie
В подзапросе выбрать MAX(DATE_TIME_IDDOC) при GROUP BY Машина, Запчасть. А из него (или по нему) получить IDDOC.
#16 by OnCheck
а разве в ты не получил требуемый результат?
#17 by Admin_Net_1C
на следующем наборе: Установка (снятие) запчастей №1 от 17.01.20011 (ВидОперации - установка, Машина1, Запчасть1) Установка (снятие) запчастей №2 от 17.01.20011 (ВидОперации - снятие, Машина1, Запчасть1) Установка (снятие) запчастей №3 от 17.01.20011 (ВидОперации - установка, Машина1, Запчасть1) Установка (снятие) запчастей №4 от 17.01.20011 (ВидОперации - установка, Машина2, Запчасть2) результат: Установка №4, а должен быть: Установка №3 Установка №4 как добиться?
#18 by Admin_Net_1C
вроде попробовал, не пошло, счас еще разок попробую
#19 by Rie
И условие соответствующее в JOIN (в его не видать что-то).
#20 by smaharbA
дубовый метод
#21 by Ёпрст
Завязывай пить, достаточно просто обратный порядок и выбрать движения регистра :)) Без привязки к документам..
#22 by smaharbA
а сказали, что это долго, потому и
#23 by Ёпрст
Это из каких соображений, ты по-русски скажи, что хочешь видеть.. А то зачем-то остаток смотришь, потом каким-то нелепым образом скрещиваешь по совпадающему набору измерений с последним документом, толкнувшего этот регистр, в результате - каша мала.
#24 by Admin_Net_1C
, не получается: |SELECT выдает вообще все документы движения (
#25 by Admin_Net_1C
по русски хочу видеть на определененную дату, какой набор запчастей установлен на каждую машину, а также документ, с помощью которого была установлена данная запчасть на данный автомобиль )
#26 by Rie
А зачем в подзапросе IDDOC и IDDOCDEF? Убери их.
#27 by DrZombi
""Должен же быть какой-то выход",- думала муха, постоянно ударяясь об оконное стекло. " - :)
#28 by Rie
+ IDDOC потом можешь спокойно получить из ДатаДокУст.
#29 by Admin_Net_1C
а как я потом в основном запросе получу ссылку на документ движения?
#30 by Rie
Из ДатаДокУст при помощи RIGHT, например.
#31 by Ёпрст
а зачем тебе тогда сдался остаток ?
#32 by Admin_Net_1C
огромное спасибо за помошь, все получилось!
#33 by Admin_Net_1C
масло в литрах наример заливается и при том не по одному...
#34 by DrZombi
+Строка "(Жур.IDDocDef = $ВидДокумента._УстановкаСнятиеЗапчастей)" лишняя... Реквизит "IDDoc" в пределе БД уникален :) Я к тому что условие "WHERE  РегДвижУст.IDDocDef = $ВидДокумента._УстановкаСнятиеЗапчастей" будет лишним. ...т.е. какое либо из этих двух лишнее :)
#35 by Ёпрст
Это условие является обязательным для попадания в индекс.
#36 by DrZombi
Серьезно? О_о Вот у меня как правило запрос медленней выполнялся, когда я ставил строку ""(Жур.IDDocDef = $ВидДокумента._УстановкаСнятиеЗапчастей)"". При этом оченно ощутимо на больших объемах данных.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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