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