Подскажите как можно без временных таблиц выбрать только значения с минимальным количеством, если их 2 то то которое раньше по дате, возможно ли это?
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент КАК РегистраторКонтрагент
ПОМЕСТИТЬ qwe
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&д1, &д2, Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.Счет = &Счет
И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
И ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент <> &Контрагент
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент
;
ПоказатьПо теме из базы знаний
- Консоль запросов 1с 8.2 для отладки больших запросов с множеством временных таблиц (толстый клиент)
- Сведения об ОС - отчет тормозит. Неоптимальный запрос или странное поведение платформы?
- Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом
- Оптимизация запросов 1С:Предприятие – от теории к практике
- Отладчик запроса 1С 8.3 (управляемые формы)
Найденные решения
(10) Первая таблица
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток)
Вторая таблица
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток),
Регистратор,
Регистратор.Дата
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток)
Вторая таблица
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток),
Регистратор,
Регистратор.Дата
ВЫБРАТЬ т1.Субконто1, т1.КоличествоКонечныйОстаток, т2.Регистратор,
МИНИМУМ(т2.Регистратор.Дата)
ЛЕВОЕ СОЕДИНЕНИЕ т2 ПО т1.Субконто1 = т2.Субконто1
И т1.КоличествоКонечныйОстаток = т2.КоличествоКонечныйОстаток
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Этим запросом получаю только 1 запись, не подскажите как правильно тут использовать ВЫБРАТЬ ПЕРВЫЕ 1?
ВЫБРАТЬ ПЕРВЫЕ 1
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент КАК РегистраторКонтрагент,
ХозрасчетныйОстаткиИОбороты.Регистратор.Дата КАК РегистраторДата
ПОМЕСТИТЬ qwe
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&д1, &д2, Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.Счет = &Счет
И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
И ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент <> &Контрагент
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент,
ХозрасчетныйОстаткиИОбороты.Регистратор.Дата
УПОРЯДОЧИТЬ ПО
МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток),
РегистраторДата
;
Показать
(6) так получаете то верную запись или нет?
выбрать первый 1 и возвращаем вам одну запись
если надо больше, указывайте сколько нужно
ВЫБРАТЬ ПЕРВЫЕ 2... 3 и т.д.
но тогда уже и результат надо будет обрабатывать отдельно, например так
или так
выбрать первый 1 и возвращаем вам одну запись
если надо больше, указывайте сколько нужно
ВЫБРАТЬ ПЕРВЫЕ 2... 3 и т.д.
но тогда уже и результат надо будет обрабатывать отдельно, например так
лРеультат = Запрос.Выполнить.Выгрузить();
Если лРезультат.Количество()<>0 Тогда
Возврат лРезультат[0];
КонецЕсли;
или так
лРезультат = Запрос.Выполнить.Выбрать();
Если лРезультат.Следующий() Тогда
Возврат лРезультат... что-то там из группировок;
КонецЕсли;
(7)Хочу получить массив из записей,
вход
дата1, товар1, колич=10, регистратор1
Дата2, товар1, колич=20, регистратор2
дата3,товар1, колич=9, регистратор3
дата3+1сек,товар1, колич=9, регистратор4
Дата4,товар2,колчи=100, регистратор5
На выходе хочу
дата3,товар1, колич=9, регистратор3
Дата4,товар2,колчи=100, регистратор5
вход
дата1, товар1, колич=10, регистратор1
Дата2, товар1, колич=20, регистратор2
дата3,товар1, колич=9, регистратор3
дата3+1сек,товар1, колич=9, регистратор4
Дата4,товар2,колчи=100, регистратор5
На выходе хочу
дата3,товар1, колич=9, регистратор3
Дата4,товар2,колчи=100, регистратор5
(8) Мы запутались окончательно !
Правильно ли я понимаю что нужно получить "не одну запись", а записи с Минимум(колво) по товару с СамымРаннимРегистратором ???
Но тогда должно быть из твоего примера:
На выходе хочу
дата3,товар1, колич=9,регистратор1 регистратор3 <<---------------------------
Дата4,товар2,колчи=100,регистратор4 регистратор5 <<---------------------------
Правильно ли я понимаю что нужно получить "не одну запись", а записи с Минимум(колво) по товару с СамымРаннимРегистратором ???
Но тогда должно быть из твоего примера:
На выходе хочу
дата3,товар1, колич=9,
Дата4,товар2,колчи=100,
(9)Поправил сообщение с примером, похоже я не самый лучший рассказчик.
Вот этот запрос выдает все что я хочу, но я хочу чтобы в нем было еще видно самый ранний документ после которого был достигнут минимум
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&д1, &д2, Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.Счет = &Счет
И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
И ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент <> &Контрагент
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1
;
ПоказатьВот этот запрос выдает все что я хочу, но я хочу чтобы в нем было еще видно самый ранний документ после которого был достигнут минимум
(10) Первая таблица
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток)
Вторая таблица
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток),
Регистратор,
Регистратор.Дата
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток)
Вторая таблица
Субконто1, МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток),
Регистратор,
Регистратор.Дата
ВЫБРАТЬ т1.Субконто1, т1.КоличествоКонечныйОстаток, т2.Регистратор,
МИНИМУМ(т2.Регистратор.Дата)
ЛЕВОЕ СОЕДИНЕНИЕ т2 ПО т1.Субконто1 = т2.Субконто1
И т1.КоличествоКонечныйОстаток = т2.КоличествоКонечныйОстаток
(10) как-то так, наверное, нет под рукой ни БУ, ни конфигуратора, чтобы проверить... по идее на выходе будет первой строкой самый ранний документ с самым меньшим количество
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент КАК РегистраторКонтрагент,
ХозрасчетныйОстаткиИОбороты.Регистратор.Дата КАК РегистраторДата
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&д1, &д2, Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.Счет = &Счет
И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
И ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент <> &Контрагент
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент,
ХозрасчетныйОстаткиИОбороты.Регистратор.Дата
УПОРЯДОЧИТЬ ПО
МИНИМУМ(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) УБЫВ,
ХозрасчетныйОстаткиИОбороты.Субконто1
РегистраторДата ВОЗР
Показать
попробуйте так
ВЫБРАТЬ первые 1
(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
ХозрасчетныйОстаткиИОбороты.Регистратор.Дата КАК Дата //если доступен используйте Период
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент КАК РегистраторКонтрагент
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&д1, &д2, Регистратор, , , , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
ХозрасчетныйОстаткиИОбороты.Счет = &Счет
И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
И ХозрасчетныйОстаткиИОбороты.Регистратор.Контрагент <> &Контрагент
//просто используем упорядочивание
Упорядочить по
1,2
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот