[РЕШЕНО] Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем IceBeerG, 31 июл 2015.

  1. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Добрый день.
    Отчет при формировании выдает ошибку:
    Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256.

    Итоговый текст запроса вот:
    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
        БухОбороты.Счет КАК Счет,
        БухОбороты.Счет.Количественный КАК СчетКоличественный,
        БухОбороты.Счет.Вид КАК ВидСчета,
        БухОбороты.Счет.Валютный КАК СчетВалютный,
        БухОбороты.Счет.Порядок КАК СчетПорядок,
        БухОбороты.Счет.Представление КАК СчетПредставление,
        Субконто1 КАК Субконто1,
        ПРЕДСТАВЛЕНИЕ(Субконто1) КАК Субконто1Представление,
        Субконто2 КАК Субконто2,
        ПРЕДСТАВЛЕНИЕ(Субконто2) КАК Субконто2Представление,
        ВЫБОР КОГДА БухОбороты.Счет.Количественный ТОГДА Истина ИНАЧЕ Ложь КОНЕЦ КАК ЕстьКоличественныеСчета ,
        БухОбороты.Валюта КАК Валюта, БухОбороты.Валюта.Представление КАК ВалютаПредставление  ,
        СуммаРеглОборотДт КАК СуммаРеглОборотДт,
        СуммаРеглОборотКт КАК СуммаРеглОборотКт,
        СуммаРеглНачальныйОстатокДт КАК СуммаРеглНачДт,
        СуммаРеглНачальныйОстатокКт КАК СуммаРеглНачКт,
        СуммаРеглКонечныйОстатокДт КАК СуммаРеглКонДт,
        СуммаРеглКонечныйОстатокКт КАК СуммаРеглКонКт,
        СуммаУпрОборотДт КАК СуммаУпрОборотДт,
        СуммаУпрОборотКт КАК СуммаУпрОборотКт,
        СуммаУпрНачальныйОстатокДт КАК СуммаУпрНачДт,
        СуммаУпрНачальныйОстатокКт КАК СуммаУпрНачКт,
        СуммаУпрКонечныйОстатокДт КАК СуммаУпрКонДт,
        СуммаУпрКонечныйОстатокКт КАК СуммаУпрКонКт,
        ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт,
        ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт,
        ВалютнаяСуммаНачальныйОстатокДт КАК ВалютнаяСуммаНачДт,
        ВалютнаяСуммаНачальныйОстатокКт КАК ВалютнаяСуммаНачКт,
        ВалютнаяСуммаКонечныйОстатокДт КАК ВалютнаяСуммаКонДт,
        ВалютнаяСуммаКонечныйОстатокКт КАК ВалютнаяСуммаКонКт,
        КоличествоОборотДт КАК КоличествоОборотДт,
        КоличествоОборотКт КАК КоличествоОборотКт,
        КоличествоНачальныйОстатокДт КАК КоличествоНачДт,
        КоличествоНачальныйОстатокКт КАК КоличествоНачКт,
        КоличествоКонечныйОстатокДт КАК КоличествоКонДт,
        КоличествоКонечныйОстатокКт КАК КоличествоКонКт
    ИЗ
        РегистрБухгалтерии.бит_Бюджетирование.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , , &ВидыСубконто,  Субконто2.Организация = &Значение0 И Субконто1 = &Значение1) КАК БухОбороты
    АВТОУПОРЯДОЧИВАНИЕ
    ИТОГИ
        СУММА(СуммаРеглОборотДт),
        СУММА(СуммаРеглОборотКт),
        СУММА(СуммаРеглНачДт),
        СУММА(СуммаРеглНачКт),
        СУММА(СуммаУпрОборотДт),
        СУММА(СуммаУпрОборотКт),
        СУММА(СуммаУпрНачДт),
        СУММА(СуммаУпрНачКт),
        СУММА(ВалютнаяСуммаОборотДт),
        СУММА(ВалютнаяСуммаОборотКт),
        СУММА(ВалютнаяСуммаНачДт),
        СУММА(ВалютнаяСуммаНачКт),
        СУММА(КоличествоОборотДт),
        СУММА(КоличествоОборотКт),
        СУММА(КоличествоНачДт),
        СУММА(КоличествоНачКт), МАКСИМУМ(ЕстьКоличественныеСчета)
        ПО ОБЩИЕ,
        Счет ИЕРАРХИЯ КАК Счет,
        Субконто1 КАК Субконто1,
        Субконто2 КАК Субконто2, Валюта КАК Валюта
    Консолью запросов не получается его отладить, так как ругается на: "поле не найдено субконто2" в праметрах виртуальной таблицы, скорее всего из-за того, что &ВидыСубконто имеет тип массив.

    Есои в параметрах виртуальной таблицы отставить только &ДатаНач, &ДатаКон, запрос отрабатывает и не ругается.

    Посоветуйте пожалуйста в какую сторону копать?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    1. В консоли, в параметрах запроса создайте список значений и в нем укажите нужные виды субконто.
    2. Субконто2.Организация = &Значение0 И Субконто1 = &Значение1 необходимо точно указать какие типы значений должно принимать Cубконто.
    3. Согласно 1 и 2, количество субконто в п1 ОБЯЗАТЕЛЬНО должно быть 2 и идти они должны именно в том порядке, чтобы у значения второго субкнто был реквизит Организация.
  3. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    1. Сделал;
    2. Добавил в условие виртуальной таблицы написал:
    Код:
    РегистрБухгалтерии.бит_Бюджетирование.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , , &ВидыСубконто,  (Субконто2.Организация ССЫЛКА Справочник.Организации) = &Значение0 И (Субконто1 ССЫЛКА Справочник.Контрагенты) = &Значение1) КАК БухОбороты
    3. Все так и есть

    в консоли запросов появилась ошибка: Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.549
    Симпатии:
    716
    Баллы:
    204
    2. Не верно.
    Нужно делать:

    Код:
    Выразить(Субконто2 КАК Справочник.<ИмяСправочника>).Организация =
    &Значение0 И Выразить(Субконто1 КАК Справочник.Контрагенты) =
    &Значение1
    А так же:
    Код:
    Субконто1 КАК Субконто1
    ПРЕДСТАВЛЕНИЕ(Субконто1) КАК Субконто1Представление,
    Субконто2 КАК Субконто2,
    ПРЕДСТАВЛЕНИЕ(Субконто2) КАК Субконто2Представление,
    Переделать на:
    Код:
    Выразить (Субконто1 КАК Справочник.Контрагенты) КАК Субконто1,
    Представление(Выразить(Субконто1 КАК Справочник.Контрагенты)) КАК Субконто1Представление,
    Выразить (Субконто2 КАК Справочник.<ИмяСправочника>) КАК Субконто2,
    Представление(Выразить(Субконто2 КАК Справочник.<ИмяСправочника>)) КАК Субконто2Представление,
    IceBeerG нравится это.
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вы вот это
    Субконто1 КАК Субконто1,
    ПРЕДСТАВЛЕНИЕ(Субконто1) КАК Субконто1Представление,
    Субконто2 КАК Субконто2,
    ПРЕДСТАВЛЕНИЕ(Субконто2) КАК Субконто2Представление,


    Либо оставьте просто представление
    либо сдлайте через Выразить приведя к нужному типу
  6. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Спасибо огромное, все получилось!

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