|
v7: ТиС 7.7. Последнее поступление номенклатуры (прямой запрос) | ☑ | ||
---|---|---|---|---|
0
es3000
10.10.19
✎
13:25
|
Здравствуйте!
Конфигурация "Торговля и склад 7.7". Нужно найти последнее поступление номенклатуры. Делаю с помощью 1С++ прямыми запросами. Одним запросом я не смог придумать. Сделал несколькими запросами. Так как в одном документе в табличной части одна и та же номенклатура может быть в нескольких строках, пришлось еще искать максимальный номер строки. Вот что получилось: ТекстЗапроса = " |SELECT | $РегПартии1.Номенклатура AS Tovar, | MAX(ЖурналДок1.Date_Time_IDDoc) as MaxDateTimeIDDoc |INTO #RegPastPrihodDoc | FROM | $Регистр.ПартииНаличие as РегПартии1 | INNER JOIN | _1Sjourn as ЖурналДок1 ON ЖурналДок1.IDDoc = РегПартии1.IDDoc | WHERE | $РегПартии1.КодОперации = :КодОперации | GROUP BY $РегПартии1.Номенклатура; |"; лКоманда.УстановитьТекстовыйПараметр("КодОперации", Перечисление.КодыОпераций.Закупка); лКоманда.ВыполнитьИнструкцию(ТекстЗапроса, лИТ); ТекстЗапроса = " |SELECT | ЖурналДок.IDDoc as [Док $Документ], | ЖурналДок.IDDocDef as Док_вид, | ЖурналДок.IDDoc as IDDoc, | ЖурналДок.Date_Time_IDDoc |INTO #DocPrihod |FROM | _1Sjourn as ЖурналДок |WHERE ЖурналДок.Date_Time_IDDoc IN | (SELECT DISTINCT MaxDateTimeIDDoc FROM #RegPastPrihodDoc) |"; лКоманда.ВыполнитьИнструкцию(ТекстЗапроса, лИТ); ТекстЗапроса = " |SELECT | $РегПартии.Номенклатура as Tovar, | РегПартии.IDDoc, | MAX(РегПартии.LineNo_) as StrNo |INTO #RegPastPrihodStr | FROM | #RegPastPrihodDoc AS РегПриходНоменклатурыДок | INNER JOIN | #DocPrihod AS ДокПриход ON РегПриходНоменклатурыДок.MaxDateTimeIDDoc = ДокПриход.Date_Time_IDDoc | INNER JOIN | $Регистр.ПартииНаличие as РегПартии ON РегПриходНоменклатурыДок.Tovar = $РегПартии.Номенклатура AND ДокПриход.IDDoc = РегПартии.IDDoc | GROUP BY $РегПартии.Номенклатура, РегПартии.IDDoc |"; лКоманда.ВыполнитьИнструкцию(ТекстЗапроса, лИТ); Вроде бы работает. Посмотрите, пожалуйста. Нет ли косяков? Что можно улучшить? |
|||
1
es3000
10.10.19
✎
14:20
|
Ребята, есть идеи?
|
|||
2
ivsher
11.10.19
✎
13:49
|
Как совет, поставьте в конфигураторе для регистра ПартииНаличие признак "быстрая обработка движений"... при этом отпадает надобность в первом запросе... У вас в таблице движений регистра появится поле Date_Time_IDDoc.
|
|||
3
Ёпрст
11.10.19
✎
14:18
|
(0) все делается в одном запросе и без временных таблиц
|
|||
4
Ёпрст
11.10.19
✎
14:19
|
ну и для "последнего прихода", партииНаличие не нужен, достаточно - остаткиТМЦ, он в разы меньше
|
|||
5
Ёпрст
11.10.19
✎
14:20
|
тем более, в запросе нет получения себестоимости
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |