Запрос, Общие Итоги, Не Понимаю Как Считаются

Тема в разделе "1C и всё что с ней связано", создана пользователем Истребитель, 3 окт 2011.

  1. Истребитель

    Истребитель Well-Known Member

    Регистрация:
    9 июн 2010
    Сообщения:
    110
    Симпатии:
    0
    Добрый день!

    Раньше я думал что знаю, что такое итоги. Думал, что Итоги это то же самое, что группировка, только с сохранением группируемых строк.

    Т.е. если скажем есть таблица:
    А Х 100
    А У 200
    Б Z 300

    То группировка с суммой по последнему столбцу выдаст одну строку с цифрой - 600
    А общие итоги добавят строку <пусто><пусто>600. И можно будет обходом по группировкам получить одну эту строку, либо все остальнчые

    Как например здесь http://www.1c-h.ru/?p=1553#spr1-2

    Однако, сейчас у меня есть запрос, в котором это НЕ работает. Вообще. То есть в запросе есть общие итоги. Однако, цифра в строке с общими итогами никак не равняется сумме остальных цифр в этом столбце. Ни для какого из столбцов. Например, итог выдается 175 000 а сумма по столбцу - 100 000. Если кто интересуется - это запрос из отчета "ведомость взаиморассчетов с контрагентами" из конфигурации Управление Торговлей 10.3. Текст запроса в аттаче (очень большой чтобы в пост вставлять).

    Подскажите, как так может быть? Везде, где ни читал, пишут что общие итоги выдают цифры, идентичные группировке. Однако замена итоги по ... общие на сгруппировать по выдает ту же цифру, что при ручном суммировании столбцов, т.е. отличную от итогов. (напр. 100 000 против 170 000)

    Посмотреть вложение tmp.txt
     
  2. Истребитель

    Истребитель Well-Known Member

    Регистрация:
    9 июн 2010
    Сообщения:
    110
    Симпатии:
    0
    Ап. Ни у кого нет идей?
     
  3. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Да, нет мозгов разобраться с запросом.
     
  4. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Что он не сходится, смотрите в консоли запросов?
     
  5. Истребитель

    Истребитель Well-Known Member

    Регистрация:
    9 июн 2010
    Сообщения:
    110
    Симпатии:
    0
    И в консоли запросов, и сделал свой внешний запрос по этому тексту. Итоги не сходятся совершенно с суммой по столбцам.
    И логика запроса на этом и основана - например там есть такая ситуация (упрощенный пример):

    Запрос сделан с целью узнать, сколько за период было движений (денег) по взаиморассчетом с таким то контрагентом по такомуто договору. Т.е. есть остаток на начало периода, документы, делавшие движение за период, и остаток на конец периода. Каждый документ делает либо приход либо расход (плюс или минус к остатку). И может быть такая ситуация:

    Столбцы: Договор, Документ, ОстатокНаНачалоПериода, Приход, Расход, ОстатокНаКонецПериода

    Строчки:

    [Договор такойто] . [Док N1 от 01.01.2012 09:00] . [10 000] . [1 000] . [0] . [11 000]
    [Договор такойто] . [Док N2 от 01.01.2012 12:00] . [11 000] . [4 000] . [0] . [15 000]
    [Договор такойто] . [Док N3 от 01.01.2012 12:00] . [11 000] . [1 000] . [0] . [12 000]

    А в итоговой строчке, очевидно, будет следующая запись:

    [Договор такойто] . [10 000] . [6 000] . [0] . [16 000]

    Так вот, итоги сворачиваются по полю "договор", и это логично, что они сворачиваются именно так, а не вот так:

    [Договор такойто] . [32 000] . [6 000] . [0] . [38 000]

    Но вопрос - откуда механизм запросов знает, что нужно найти значение из столбца "ОстатокНаНачалоПериода", соответствующее строке с наименьшей датой, к нему прибавить все значения столбцов "Приход", и отнять все значения столбцов "Расход", и результирующее значение записать в столбец "ОстатокНаКонецПериода"? А значение в "ОстатокНаНачалоПериода" поместить то самое, с меньшей датой, вообще не суммируя, а значение в "Приход" поместить как раз суммируя...

    Где эта логика прописана, откуда она программе известна?
     
  6. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    В СКД есть такая штука, как Роль поля. В построителе наверное тоже. Это позволяет отчету догадаться.
     
  7. Истребитель

    Истребитель Well-Known Member

    Регистрация:
    9 июн 2010
    Сообщения:
    110
    Симпатии:
    0
    Но это запрос через универсальный отчет. Там поидее, как я понял, "скармливается" текст запроса, псевдонимы полей и определяется, какое поле итоговое а какое группировочное... Хотя, посмотрю, может где-то это и указано через построитель...
     
Загрузка...

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