как в запросе выбрать документ с самой ранней датой?
Есть огромный запрос.
Это одна из его частей. Требуется к Поступлению товаров и услуг присвоить самое первое требование-накладная. На картинке видно что присваивается Требование от 5 числа.. Хотя есть еще требование от 4 числа.. Весь смысл в том, что номер документа от 5 числа раньше, чем номер документа от 4 числа. Как перебороть данную ситуацию?
Это одна из его частей. Требуется к Поступлению товаров и услуг присвоить самое первое требование-накладная. На картинке видно что присваивается Требование от 5 числа.. Хотя есть еще требование от 4 числа.. Весь смысл в том, что номер документа от 5 числа раньше, чем номер документа от 4 числа. Как перебороть данную ситуацию?
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ХозрасчетныйОбороты.Регистратор.Дата КАК Дата,
ХозрасчетныйОбороты.Регистратор.Номер КАК Номер,
ПОДСТРОКА(ХозрасчетныйОбороты.Регистратор.Комментарий, 1, 23) КАК НомерВходящегоДокумента,
ХозрасчетныйОбороты.Регистратор.Контрагент КАК Контрагент,
ХозрасчетныйОбороты.Регистратор.Склад КАК Склад,
ХозрасчетныйОбороты.Субконто1.Артикул КАК Артикул,
ХозрасчетныйОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОбороты.Субконто1.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
ХозрасчетныйОбороты.КоличествоОборотДт КАК Количество,
ХозрасчетныйОбороты.Регистратор КАК Регистратор,
ХозрасчетныйОбороты.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ Т1
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата1, &Дата2, Авто, Счет В ИЕРАРХИИ (&Счет), , , , ) КАК ХозрасчетныйОбороты
ГДЕ
ХозрасчетныйОбороты.Регистратор.Контрагент В(&Контрагент)
И ХозрасчетныйОбороты.Регистратор.Склад В(&Склад)
И ХозрасчетныйОбороты.Регистратор.Проведен = ИСТИНА
И ХозрасчетныйОбороты.Регистратор.ПометкаУдаления = ЛОЖЬ
И ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ХозрасчетныйОстаткиИОбороты.Регистратор.Номер КАК Номер,
ХозрасчетныйОстаткиИОбороты.Регистратор.Склад КАК Склад,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОстаткиИОбороты.Регистратор КАК Регистратор,
МИНИМУМ(ХозрасчетныйОстаткиИОбороты.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ О1
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата1, &Дата3, Регистратор, , Счет В ИЕРАРХИИ (&Счет), , Субконто2 В (&Склад)) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ТИПЗНАЧЕНИЯ(ХозрасчетныйОстаткиИОбороты.Регистратор) = ТИП(Документ.ТребованиеНакладная)
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор,
ХозрасчетныйОстаткиИОбороты.Регистратор.Номер,
ХозрасчетныйОстаткиИОбороты.Регистратор.Склад
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Т1.Дата,
Т1.Номер,
Т1.НомерВходящегоДокумента,
Т1.Контрагент,
Т1.Склад,
Т1.Номенклатура,
Т1.Регистратор,
Т1.НомерСтроки,
МИНИМУМ(О1.Регистратор) КАК Перемещение,
МИНИМУМ(О1.РегистраторДата) КАК РегистраторДата
ИЗ
Т1 КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ О1 КАК О1
ПО Т1.Номенклатура = О1.Номенклатура
И Т1.Склад = О1.Склад
ГДЕ
Т1.НомерВходящегоДокумента = &НомерВходящегоДокумента
И Т1.Номенклатура = &Номенклатура
И Т1.Регистратор.Дата < О1.Регистратор.Дата
СГРУППИРОВАТЬ ПО
Т1.Дата,
Т1.Номер,
Т1.Номенклатура,
Т1.Контрагент,
Т1.ЕдиницаИзмерения,
Т1.Склад,
Т1.НомерВходящегоДокумента,
Т1.Артикул,
Т1.Регистратор,
Т1.Сумма,
Т1.Количество,
Т1.НомерСтроки
ПоказатьПрикрепленные файлы:
По теме из базы знаний
Найденные решения
(1) во временной таблице О1 убрать группировку, но сделать ещё одну временную таблицу:
Выбрать
О1.Номенклатура,
О1.Склад,
Минимум(О1.РегистраторДата) Как РегистраторДата
Поместить О1Сгрупп
Из
О1 Как О1
Сгруппировать По
О1.Номенклатура,
О1.Склад
И соединить эти 2 таблицы условием О1.РегистраторДата = О1Сгрупп.РегистраторДата в ещё одной, либо в итоговом запросе
Выбрать
О1.Номенклатура,
О1.Склад,
Минимум(О1.РегистраторДата) Как РегистраторДата
Поместить О1Сгрупп
Из
О1 Как О1
Сгруппировать По
О1.Номенклатура,
О1.Склад
И соединить эти 2 таблицы условием О1.РегистраторДата = О1Сгрупп.РегистраторДата в ещё одной, либо в итоговом запросе
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) во временной таблице О1 убрать группировку, но сделать ещё одну временную таблицу:
Выбрать
О1.Номенклатура,
О1.Склад,
Минимум(О1.РегистраторДата) Как РегистраторДата
Поместить О1Сгрупп
Из
О1 Как О1
Сгруппировать По
О1.Номенклатура,
О1.Склад
И соединить эти 2 таблицы условием О1.РегистраторДата = О1Сгрупп.РегистраторДата в ещё одной, либо в итоговом запросе
Выбрать
О1.Номенклатура,
О1.Склад,
Минимум(О1.РегистраторДата) Как РегистраторДата
Поместить О1Сгрупп
Из
О1 Как О1
Сгруппировать По
О1.Номенклатура,
О1.Склад
И соединить эти 2 таблицы условием О1.РегистраторДата = О1Сгрупп.РегистраторДата в ещё одной, либо в итоговом запросе
(1)
Фу так делать.
Если у вас известно из какого документа эти реквизиты надо брать - соединитесь с документом внутренним соединением и возьмите реквизиты из таблицы документа.
ХозрасчетныйОбороты.Регистратор.Дата КАК Дата,
ХозрасчетныйОбороты.Регистратор.Номер КАК Номер,
ПОДСТРОКА(ХозрасчетныйОбороты.Регистратор.Комментарий, 1, 23) КАК НомерВходящегоДокумента,
ХозрасчетныйОбороты.Регистратор.Контрагент КАК Контрагент,
ХозрасчетныйОбороты.Регистратор.Склад КАК Склад,
ХозрасчетныйОбороты.Регистратор.Номер КАК Номер,
ПОДСТРОКА(ХозрасчетныйОбороты.Регистратор.Комментарий, 1, 23) КАК НомерВходящегоДокумента,
ХозрасчетныйОбороты.Регистратор.Контрагент КАК Контрагент,
ХозрасчетныйОбороты.Регистратор.Склад КАК Склад,
Фу так делать.
Если у вас известно из какого документа эти реквизиты надо брать - соединитесь с документом внутренним соединением и возьмите реквизиты из таблицы документа.
ГДЕ
Т1.НомерВходящегоДокумента = &НомерВходящегоДокумента
Т1.НомерВходящегоДокумента = &НомерВходящегоДокумента
У тебя же в запросе чёткое условие на номер документа? С текстом мы тебе не можем помочь, т.к. вне запроса формируется требование к документу с конкретным номером.
Анализируй логику вне запроса.
(12) Тогда в (9) был дан правильный ответ. Сначала выбираешь минимум от даты документа из выборки нужных документов, затем соединением подцепляешь к найденной дате ссылку на конкретный документ. Может быть косяк, если на одну секунду окажется два документа. Тогда попробуй выбирай из полного списка документов с ВЫБРАТЬ ПЕРВЫЕ 1 и внутренним соединением подцеплять найденную минимальную дату.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот