8.х Как перебрать результат запроса по группам упорядочивания?

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем programm90, 5 июн 2013.

  1. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Результаты моего запроса упорядочены по нескольким полям. Их довольно много около четырех.
    Если я их буду перебирать в цикле, то мне постоянно придется проверять - открытие новое группы строк.
    Это очень сложно.
    Нельзя ли сделать это без циклов или как-то по-другому с циклами.
    Сгруппировать данные в запросе, через СГРУППИРОВАТЬ ПО, не получается потому что у меня нет суммируемого поля.
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    покажите запрос, можно просто сгруппировать без ссумирования полей

    а обойти запрос по группировкам
  3. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Смотри выгрузку результата в дерево значений и в запросе "ИТОГИ ПО"
  4. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Код:
    ВЫБРАТЬ
    РеализацияТоваровУслуг.Дата КАК ДатаРасходногоДокумента,
    РеализацияТоваровУслуг.Ответственный,
    Контрагенты.Регион,
    ТабличнаяЧастьТовары.ПроцентАвтоматическихСкидок КАК ПроцентСкидки,
    РеализацияТоваровУслуг.Контрагент.Наименование,
    ТабличнаяЧастьТовары.Номенклатура,
    ТабличнаяЧастьТовары.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
    ПартииТоваровНаСкладах.Стоимость КАК УчетнаяЦена,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК ФактическаяЦена,
    ТабличнаяЧастьТовары.Сумма КАК СуммаОплаты,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом КАК РасходныйДокумент,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Номер КАК РасходныйДокументНомер,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(, , Регистратор, , ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    ПО РеализацияТоваровУслуг.Контрагент = Контрагенты.Ссылка
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ТаблЧастьТовары.Ссылка КАК Ссылка,
    ТаблЧастьТовары.Номенклатура КАК Номенклатура,
    ТаблЧастьТовары.Сумма КАК Сумма,
    ТаблЧастьТовары.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК ТаблЧастьТовары) КАК ТабличнаяЧастьТовары
    ПО ПартииТоваровНаСкладах.Регистратор = ТабличнаяЧастьТовары.Ссылка
    И ПартииТоваровНаСкладах.Номенклатура.Ссылка = ТабличнаяЧастьТовары.Номенклатура.Ссылка
    ПО РеализацияТоваровУслуг.Ссылка = ПартииТоваровНаСкладах.Регистратор
    ПО ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом = РеализацияТоваровУслуг.Ссылка
    
    УПОРЯДОЧИТЬ ПО
    РеализацияТоваровУслуг.Ссылка,
    ТабличнаяЧастьТовары.Номенклатура.Ссылка
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    не совсем поняла зачем вам связь со справочником контрагентов?
  6. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Там в ТЗ такая таблица должная быть: Дата расходного документа Ценовая группа Торговый агент (ответственный менеджер) Регион контрагента % скидки Наименование контрагента Учетная цена Фактическая цена Сумма оплаты Расходный документ Платежный документ Дата платежного документа 02/04/12 1 Лось Ирина Приозерск 1 ИП Ермаков А.К. 5 690,03 6 600,64 6 600,64 реализация товаров платежное поручение 28/04/12 02/04/12 2 Лось Ирина Приозерск 3 ИП Ермаков А.К. 34 363,41 39 716,42 39 716,42 реализация товаров ЕСЛИ НЕСКОЛЬКО ПЛАТЕЖЕК - ТО ВЫВОДИТЬ ИХ В ОДНО ПОЛЕ!!!! ЕСЛИ НЕСКОЛЬКО ПЛАТЕЖЕК - ТО ВЫВОДИТЬ ИХ В ОДНО ПОЛЕ!!!! 02/04/12 1 Лось Ирина Всеволожск 0 ИП Анисимова Ю.М. 5 770,56 6 978,24 6 978,24 реализация товаров приходный кассовый ордер 20/04/12 02/04/12 3 Лось Ирина Всеволожск 5 ИП Анисимова Ю.М. 137,32 166,22 0,00 реализация товаров 02/04/12 1 ОФИС СПб 1 Сатурн ООО 9 478,56 10 583,92 10 583,92 реализация товаров платежное поручение 18/04/12 02/04/12 2 ОФИС СПб 4 Имидж Парфюм ООО 36 207,52 40 395,16 15 000,00 реализация товаров платежное поручение 11/04/12 02/04/12 2 ОФИС СПб 0 ИП Пугачева А.Б. 690,00 830,00 830,00 расходный ордер на товары отметка об оплате 02/04/12 Итого 92 337,40 105 270,60 79 709,22
  7. Неназываемый
    Offline

    Неназываемый Опытный в 1С Команда форума

    Регистрация:
    2 фев 2007
    Сообщения:
    507
    Симпатии:
    7
    Баллы:
    29
    Если честно, в этом запросе чуть ли не все связи избыточны.
    По каким полям собираетесь группироваться?
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    дак у вас контрагент есть в РеализацииТоваровИУслуг - там ссылка на него в справочник, зачем утежелять запрос соединениями, когда вы его и так можете спокойно получить??

    +1
  9. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1

    Да друзья давайте по существу, это все не по теме. Вы как женщины сбиваетесь на ерунду сразу. и частности.
    Смысл как обойти / сгруппировать, чтобы легче было обойти
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Давайте без дискриминации. Сначала надо написать нормально без избытка запрос, тогда и обойти его лечге будет

    Избыточность связей в запросе - это не ерунда. Если вы действительно считаете это ерундой, то тогда вы не лопатили таблицы по 100+ тысяч записей. Я больше чем уверена, что в том виде как есть сейчас ваш запрос на больших обЪемах данных всех входящих таблиц здорово просядет и вы создадите новую тему здесь на форуме с просьбой помочь вам оптимизировать запрос
  11. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Избыток здесь не причем. Я на выходе получаю набор строчек и каким образом я их получил никак не влияет на то, как я их буду обходить в циклах в коде....
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    в связи с вышеизложенным, советую все таки пересмотреть запрос и ответить на вопрос:
    на то как обойти я вам ответила - надо сгруппировать и тогда можно будет использовать обход результата запроса по группировкам.


    З.Ы. про связи - спасение утопающих, дело рук самих утопающих - решение за вами
  13. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    В том-то и проблема, что если я буду группироваться, то мне надо суммировать оставшиеся поля. А мне это не нужно.
    А поля, которые мне нужны сейчас находятся в списке полей после ключевого слово УПОРЯДОЧИТЬ ПО.
    Но мне придется добавить еще три поля. Или как минимум одно.
    Поэтому существующий код у меня, заметно усложнится.
  14. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    какое-то на мой взгляд у вас странное представленние о группировке записей. Почему надо именно суммировать что-то при этом?
  15. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    "ИТОГИ ПО"
    РеализацияТоваровУслуг.Ссылка,
    ТабличнаяЧастьТовары.Номенклатура.Ссылка

    выгрузка в дерево значений, цикл по корневым строкам (ДеревоЗначенийРезультат.Строки) будут Ссылки по РТУ, внутри цикл по подчиненным строкам - будут Номенклатуры.
    Пример
    Соответственно, если мы меняем объект, в внешнем цикле получаем его, в внутреннем цикле перезаполняем строки тч

Поделиться этой страницей