#0
by olbir
Добрый день! Подскажите, пожалуйста, как в запросе выбрать первые записи по каждой номенклатуре ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Счет, ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура, ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт, Реализация.Сумма Реализация.Ссылка.Дата >= &НачалоПериода и Реализация.Ссылка.Дата <= &КонецПериода УПОРЯДОЧИТЬ ПО Реализация.Номенклатура, Реализация.Ссылка.Дата
#6
by olbir
Я вас поняла, но не получается то что нужно ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Счет, ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура, ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт, Реализация.Сумма Реализация.Ссылка.Дата >= &НачалоПериода и Реализация.Ссылка.Дата <= &КонецПериода УПОРЯДОЧИТЬ ПО Реализация.Номенклатура, Реализация.Ссылка.Дата ИТОГИ ПО Реализация.Номенклатура
#8
by salvator
Выбрать первые 1 номенклатура, ссылка из документ реализация упорядочить по дата реализации убыв. Затем соединить с регистром бухгалтерии
#9
by salvator
тьфу, не первые 1, а сгруппировать по номенклатуре с функцией минимум по дате документа
#12
by RomanYS
смущает, что ТС выбирает количество и сумму, а говорит про первые записи Вопрос: нужно вывести количество и сумму из наиболее ранней накладной? Если там несколько строчек с одной номенклатурой?
#14
by Крошка Ру
Рукалицо в ответочку. Как ИТОГИ помогут получить первые записи по каждой номенклатуре из регистра, начиная с НачалаПериода? В вполне работающий вариант.
#17
by RomanYS
варианта 2: 1)"Коррелированные запросы" - поиск в помощ 2) из , только там придется учесть, что у накладных может быть одинаовое время
#19
by Леха Дум
смотри - там получится таблица, ее по дате и нужно будет и остальным значимым полям соединять с исходной таблицей
#20
by Крошка Ру
Соединяем ТЧ документа и обороты регистра по номенклатуре, группируем по номенклатуре, по периоду - минимум; выгружаем в ВТ. Соединяем ВТ и регистр по номенклатуре и периоду - и вуаля, первые записи из регистра по каждой номенклатуре.
#22
by RomanYS
ГДЕ ТЧ.Ссылка.Проведен И ТЧ.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода ; (ВЫБРАТЬ ПЕРВЫЕ 1
#24
by Крошка Ру
Если у двух документов время одинаковое, то и первых записей - две. А по номеру строки - да, группировать нужно. Вложенные запросы... Фи, какая гадость...
#25
by PR
Охренеть новинка отечественного программирования. Ну пусть так. Можно было просто выбрать первый проход по группировке, да. Меньше данных в запросе да, хорошо наверное.
#27
by Крошка Ру
Да вариантов-то много существует, выбирай любой. Никто и не говорил, что здесь предложены оптимальные решения
#28
by RomanYS
в поспешил, должно быть так ВЫБРАТЬ ТЧ.Ссылка, ТЧ.НомерСтроки, ГДЕ ТЧ.Ссылка.Проведен И ТЧ.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода ; Реал.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 1 Реализации.Ссылка КАК Ссылка ИЗ насчет вложенных запросов - в целом согласен, но в данном случае (коррелированный запрос) это исключение. По другому нельзя выбрать, например, первые 10 записей по номенклатуре
#29
by RomanYS
так нельзя: минимум по регистратору может не совпасть с минимумом по дате, в итоге при последующем соединении ничего не получишь
#33
by RomanYS
да, вариант Но при наличии 3 полей упорядочивания(дата, ссылка, номер строки) условие соединения будет довольно громозким
#34
by Крошка Ру
Да это вообще пипец, какой неоптимальный вариант, выполняться будет кучу времени. Он интересен только с чисто теоретической точки зрения. На практике - лично я такой бы не использовал.
#35
by RomanYS
кстати первый пример из ссылки неправильно отработает ситуацию с одинаковым временем документов Данный способ удобно применять, когда есть одно поле упорядочивания с уникальными значениями
#36
by Крошка Ру
И возвращаясь к твоему запросу из ... Мне кажется или он выдаст записи только по одному регистратору? В частности - смущает строка "ВЫБРАТЬ ПЕРВЫЕ 1". Первые записи по каждой номенклатуре могут ведь и разными регистраторами делаться.
#37
by RomanYS
корень сути (коррелированного запроса) в "ГДЕ Сам был удивлен, что подобное работает в 1С
#38
by Крошка Ру
Смотри: ВЫБРАТЬ ПЕРВЫЕ 1 Реализации.Ссылка КАК Ссылка ИЗ Реализации КАК Реализации выдаст только 1 ссылку. Соответственно, условие ГДЕ Реал.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 1... выполнится только для одного документа. И итоговый результат будет тоже только по одному документу.
#40
by RomanYS
"= Реал.Номенклатура" - это поле из внешнего запроса, т.е. для каждой номенклатуры будет свой документ
#41
by Крошка Ру
Да, понял. Но ведь это не оптимально. Вложенный запрос делается для каждой записи отдельно.
#43
by Крошка Ру
Ну хорошо, получили таблицу с номенклатурой и реализацией, где она первый раз за период упоминается. А в регистре первая запись по номенклатуре может появиться-то с другим регистратором. Или другими.
#44
by RomanYS
смотри на мой взгляд постановка задачи несколько странная, зачем такое может быть нужно?
#45
by Крошка Ру
Так, а если несколько первых записей с разными документами(не реализациями) и одинаковыми датами? А мне такие задачи попадалась: найти первые приходы за период по номенклатуре из списка, последние расходы и т.д.
#46
by RomanYS
"Так, а если несколько первых записей с разными документами(не реализациями) и одинаковыми датами?" вроде нужно найти именно из первых накладных (РТиУ) "А мне такие задачи попадалась: найти первые приходы за период по номенклатуре из списка, последние расходы и т.д." странно что из (первой) накладной берутся количественные показатели, а не , например, дата или контрагент
#47
by Крошка Ру
Не, найти именно первое движение в регистре по номенклатуре, а из реализаций - берется только список номенклатур(почему именно оттуда - вопрос к ТСу). А у меня была задача: по списку номенклатур, и списку складов найти первые поступления(не только покупка) и последние движения за период. Списки формировались отдельно и в процедуру формирования отчета попадали в готовом виде, в качестве входящих данных. Правда, не было задачи найти только одну первую запись. Если несколько одновременных движений - значит несколько.
#48
by RomanYS
"Не, найти именно первое движение в регистре по номенклатуре, а из реализаций - берется только список номенклатур(почему именно оттуда - вопрос к ТСу)." посмотри запрос , ТС явно не это имела в виду Для твоего случая делать тоже самое, но с таблицей регистра
#49
by olbir
Спасибо! То что нужно - добавила только в выборке документов условие по датам и МАКСИМУМ на МИНИМУМ заменила
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- как в запросе выбрать номенклатуру, по определенной группе?
- 1С v 8.0 Как в запросе по регистру сведений выбрать последн. знач. записи оного
- Выбрать поле комментарий в запросе
- Как в запросе выбрать проведенные и непроведенные документы?
- Условие в запросе, аналогичное условию в запросе 77
- Интересная фишка в запросе в 7-ке. Сумма из шапки и из ТЧ в запросе
- Как выбрать записи из регистра сведений записи
- Как в запросе в качестве поля выбрать срез последних по дате из другого поля?
- Как в Запросе выбрать?
- v7: Есть ли аналог функционала "ВЫБРАТЬ ПЕРВЫЕ" в запросе на 7.7?
- "Несовместимые типы выразить в запросе 1с" ошибка в динамическом запросе списка документов
В этой группе 1С
- Перенос базы из БП 2 в БП 3
- 1с ут 11.1.6.17 КонтрольНеСогласованныхИзменений
- 1С 8.3 Не совпадает версия временного файла
- Платформа 1С 8.3 и персональные данные
- БП 3.0 - "Переход на раздельный учет НДС"
- mxl в ТЗ через ПостроительЗапроса - как указать формат колонок ?
- Трактиръ 2.0 Back Office не раскладывать полуфабрикат до ингредиентов
- Менеджер контактов на андроид
- v7: Раскраска кнопок
- КД: Выгрузить с произвольным UID
- OFF: Сегодня началась война 08.08.08
- Аналог оператора EXISTS в 1с запросах
- Установка СОМ-соединения 1С8.2 -- ЭТРАН
- Оповестить в команде формы после Закрытия УФ методология
- Восстановление 1SJOURNAL.DBF
- УПП переуступка прав требования долга, как отразить по НУ?
- УТ 10.3 и нумерация реализация в разрезе подразделений
- Множественные свойства в 1С
- ЗуП реорганизация и отражение сего факта базе.
- Как удалить запись из DT (1CD)?