|
как получить первые записи по каждой номенклатуре в запросе | ☑ | ||
---|---|---|---|---|
0
Alive
15.04.20
✎
08:14
|
Всем доброго времени суток! Есть такая задача, получить начальную цену закупа и конечную по каждой номенклатуре. Запросом выбрала из Регистра накопления минимальную дату и максимальную и по ним смотрю движения, но оказалось, что по некоторым позициям номенклатуры на одну и ту же дату есть движения по двум документам. Как в запросе выбрать только первый документ?
ВЫБРАТЬ ЗакупкиОбороты.Номенклатура, МИНИМУМ(ЗакупкиОбороты.Период) КАК Период ПОМЕСТИТЬ МинимальныйПериод ИЗ РегистрНакопления.Закупки.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ЗакупкиОбороты СГРУППИРОВАТЬ ПО ЗакупкиОбороты.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗакупкиОбороты.Номенклатура, ЗакупкиОбороты.КоличествоОборот, ЗакупкиОбороты.СтоимостьОборот, ЗакупкиОбороты.Период ИЗ РегистрНакопления.Закупки.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ЗакупкиОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ МинимальныйПериод КАК МинимальныйПериод ПО ЗакупкиОбороты.Номенклатура = МинимальныйПериод.Номенклатура И ЗакупкиОбороты.Период = МинимальныйПериод.Период |
|||
1
mzelensky
15.04.20
✎
08:46
|
(0) Выбрать "минимальный" по дате документ и потом внутренним соединением соединить с таблицей.
|
|||
2
Alive
15.04.20
✎
08:50
|
дело в том, что у нескольких документов одинаковая дата, если я буду брать минимальные, он выбирает несколько , у кого одинаковая дата
|
|||
3
mzelensky
15.04.20
✎
08:59
|
(2) По твоей задаче - " получить начальную цену закупа". Если В один момент есть 2 документа с разной ценой, то какой из них ты выберешь? Не запросом я имею ввиду, а в принципе, какой из них нужно взятЬ? Если ответить на этот вопрос не сможешь, то нет смысла дальше ковыряться с задачей, суть которой не ясна.
Варианты: 1) Взять любую. Т.к. они в один "момент" 2) Взять из них "минимальную\максимальную" |
|||
4
rsv
15.04.20
✎
09:09
|
(0) эти доки попытаться пронумеровать в запросе по дате и выбирать где номер равно 1
|
|||
5
mzelensky
15.04.20
✎
09:11
|
(4) в (2) написано - "у нескольких документов одинаковая дата"
|
|||
6
Alive
15.04.20
✎
09:22
|
(3) нужно смотреть документ с меньшим номером
|
|||
7
mzelensky
15.04.20
✎
09:32
|
(6) НУ вот и ответ на твой вопрос - получаешь минимальный номер, потом по нему делаешь внутреннее соединение.
Но запрос будет ОЧЕНЬ тяжкий, т.к. еще придется получать реквизит "номер" Т.е. будет так Номенклатура1 Док1.номер_01 Цена1 Номенклатура1 Док2.номер_02 Цена2 Получаешь минимальный номер и тогда будет с группировкой по номенклатуре Номенклатура1 Док1.номер_01 Далее делаешь внутреннее соединение по Номенклатуре и номеры удет в итоге Номенклатура1 Док1.номер_01 Цена1 |
|||
8
Alive
15.04.20
✎
10:32
|
(7) Спасибо, попробую!!!
|
|||
9
Lama12
15.04.20
✎
10:46
|
(8) А может сразу по номеру брать минимум и не заморачиваться по дате?
|
|||
10
Simod
15.04.20
✎
11:49
|
Как то так:
ВЫБРАТЬ РН_Закупки.Регистратор, РН_Закупки.Номенклатура, РН_Закупки.МоментВремени ПОМЕСТИТЬ ВТ_Закупки ИЗ РегистрНакопления.Закупки КАК РН_Закупки ГДЕ РН_Закупки.Активность И РН_Закупки.Период МЕЖДУ &НачалоПериода И &КонецПериода И РН_Закупки.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ВТ_Закупки.Номенклатура, ВТ_Закупки.Регистратор ИЗ ВТ_Закупки КАК ВТ_Закупки ГДЕ ВТ_Закупки.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 1 Отбор.Регистратор ИЗ ВТ_Закупки КАК Отбор ГДЕ Отбор.Номенклатура = ВТ_Закупки.Номенклатура УПОРЯДОЧИТЬ ПО Отбор.МоментВремени) |
|||
11
Alive
15.04.20
✎
14:09
|
(10) все получилось, спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |