Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка СУБД: Внутренняя ошибка, был достигнут предел служб выражений

Ошибка СУБД: Внутренняя ошибка, был достигнут предел служб выражений
Я
   Benevalete
 
19.10.17 - 06:46
Бухгалтерия 1.6.8.3 сконвертированная под платформой 8.3.5.1231, SQL 

После доработки ОСВ по счету при формировании по счетам 62(9 субсчетов), 76(более 15 субсчетов) и еще некоторым счетам возникает следующая ошибка: "Ошибка СУБД: Внутренняя ошибка, был достигнут предел служб выражений". Полный текст ошибки - http://prntscr.com/gz7ft4 В файловой копии базы такой ошибки нет, запрос на ней выполняется около 4х секунд

Доработка следующая: в тексте основного запроса поля субконто1, субконто2 и т.д. сделаны опциональными, то есть для каждого субсчета выбирается свое субконто, подходящее по типу значения.

Тест запроса стандартный, до изменения:

"ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ОстаткиИОбороты.Счет КАК Счет,
    СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    СуммаОборотДт КАК СуммаОборотДт,
    СуммаОборотКт КАК СуммаОборотКт,
    СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт, 
              ОстаткиИОбороты.Субконто1 КАК Субконто1, 
              ОстаткиИОбороты.Субконто2 КАК Субконто2 

ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), 
, Организация = &Организация ) КАК ОстаткиИОбороты

ИТОГИ

    СУММА(СуммаНачальныйОстатокДт),
    СУММА(СуммаНачальныйОстатокКт),
    СУММА(СуммаОборотДт),
    СУММА(СуммаОборотКт),
    СУММА(СуммаКонечныйОстатокДт),
    СУММА(СуммаКонечныйОстатокКт)
    ПО ОБЩИЕ,
    Счет ИЕРАРХИЯ КАК Счет , 
Субконто1, 
Субконто2
АВТОУПОРЯДОЧИВАНИЕ
"
-------------------------------------------------------
Текст запроса после доработки:

"ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ОстаткиИОбороты.Счет КАК Счет,
    СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    СуммаОборотДт КАК СуммаОборотДт,
    СуммаОборотКт КАК СуммаОборотКт,
    СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт, 

 ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто1) = &ТипИзмерения1 ТОГДА ОстаткиИОбороты.Субконто1 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто2) = &ТипИзмерения1 ТОГДА ОстаткиИОбороты.Субконто2 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто3) = &ТипИзмерения1 ТОГДА ОстаткиИОбороты.Субконто3 
 КОНЕЦ КАК Субконто1, 

 ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто1) = &ТипИзмерения2 ТОГДА ОстаткиИОбороты.Субконто1 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто2) = &ТипИзмерения2 ТОГДА ОстаткиИОбороты.Субконто2 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто3) = &ТипИзмерения2 ТОГДА ОстаткиИОбороты.Субконто3 
 КОНЕЦ КАК Субконто2 

ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), 
, Организация = &Организация ) КАК ОстаткиИОбороты

ИТОГИ

    СУММА(СуммаНачальныйОстатокДт),
    СУММА(СуммаНачальныйОстатокКт),
    СУММА(СуммаОборотДт),
    СУММА(СуммаОборотКт),
    СУММА(СуммаКонечныйОстатокДт),
    СУММА(СуммаКонечныйОстатокКт)
    ПО ОБЩИЕ,
    Счет ИЕРАРХИЯ КАК Счет , 
Субконто1, 
Субконто2
АВТОУПОРЯДОЧИВАНИЕ
"
ТипИзмерения - тип детализации в настройке отчета

Без этой доработки осв по счету формируется с некорректной детализацией, к примеру у всех субсчетов субконто1 имеет вид "Подразделения",  а у одного субсчета "подразделения" это субконто2, то при задании в настройках детализации по "подразделениям", последний субсчет детализируется в пустом поле. Исправлена эта ошибка только в бухгалтерии редакции 3.0, мне нужно доработать бухгалтерию 1.6 своими силами.

По остальным счетам ОСВ формируется корректно(счет 91.08 - 11 субсчетов). Гугл выдает информацию о том, что данная ошибка проявляется на SQL, для файловой версии и Postgre такой проблемы нет. Пожалуйста, подскажите, как можно ее устранить или хотя бы обойти?

Более подробно причины доработок указаны в предыдущей теме: ОСВ по счету ошибка детализации по субконто
 
 
   Benevalete
 
1 - 19.10.17 - 08:10
Совсем никаких идей?(
   PCcomCat
 
2 - 19.10.17 - 08:16
Уже забыли, как она выглядет эта Бухгалтерия 1.6.
   PCcomCat
 
3 - 19.10.17 - 08:26
А если кинуть во временную таблицу результат без итогов и группировки, а уж потом группировать и собирать итоги?
   Benevalete
 
4 - 19.10.17 - 08:37
(3) Да, была такая идея, но не совсем понимаю как получить тот же результат по итогам, если указан итог по "Счет ИЕРАРХИЯ", то есть оператором "выбор когда" я получаю субконто уже по тому, что получилось в результате иерархических итогов (счет = 91, у него субконто1 всегда одинаковое, а у его субсчетов может быть разное)
   Benevalete
 
5 - 19.10.17 - 08:45
(2) Конкретно для осв по счету: берется выбранный счет, к примеру 10, анализируются его субконто(субконто1 - номенклатура, субконто2 - склады), на основании этого заполняется настройка детализации: "По номенклатуре, по складам", если убираем детализацию по складам, в запрос выше попадает только субконто1 - номенклатура, по умолчанию там оба субконто(поля запроса формируются циклом).
   rphosts
 
6 - 19.10.17 - 09:08
Тии? Разумеется после бэкапа
   Benevalete
 
7 - 19.10.17 - 10:10
(6) попробуем, но это надолго, база очень большая
   assasu
 
8 - 19.10.17 - 10:23
(0) отчеты надо делать такими что бы их можно было поддерживать.
   Benevalete
 
9 - 19.10.17 - 10:54
(8) Это вы обращаете к разработчику бухгалтерии 1.6?
У меня нет возможности перейти на новую редакцию, где детализация по субконто реализована должным образом, поэтому приходится изощряться и править стандартный отчет. Если видите в методе доработки ошибку, то укажите на нее, к чему эта обобщенная фраза о том, что все надо делать правильно?
   Benevalete
 
10 - 19.10.17 - 11:24
Люди, знающие толк в SQL, пожалуйста скажите: почему данный запрос безо всяких сложностей и не за столь большое время выполняемый в файловой базе, не может быть обработан в SQL?
 
 Рекламное место пустует
   bodri
 
11 - 19.10.17 - 17:04
попробуй переделать вот это:
ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто1) = &ТипИзмерения1 ТОГДА ОстаткиИОбороты.Субконто1 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто2) = &ТипИзмерения1 ТОГДА ОстаткиИОбороты.Субконто2 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто3) = &ТипИзмерения1 ТОГДА ОстаткиИОбороты.Субконто3 
КОНЕЦ КАК Субконто1, 

ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто1) = &ТипИзмерения2 ТОГДА ОстаткиИОбороты.Субконто1 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто2) = &ТипИзмерения2 ТОГДА ОстаткиИОбороты.Субконто2 
       КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто3) = &ТипИзмерения2 ТОГДА ОстаткиИОбороты.Субконто3 
КОНЕЦ КАК Субконто2

у MS SQL какой-то трабл с такими условиями, лет 8 назад было что-то подобное, после этого такие конструкции избегаю
   Benevalete
 
12 - 20.10.17 - 11:20
(3) (11) ура ура! Я разобралась как перенести проблемные поля во временную таблицу и ошибка больше не проявляется, даже на внушительном объеме данных. Всем спасибо за помощь! чуть позже скину пример запроса, вдруг кому пригодится
   Benevalete
 
13 - 23.10.17 - 03:05
Примерный текст запроса:

        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ОстаткиИОбороты.Счет КАК Счет,
        |    ОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
        |    ОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
        |    ОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
        |    ОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
        |    ОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
        |    ОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
        |    ВЫБОР
        |        КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто1) = &ТипИзмерения1
        |            ТОГДА ОстаткиИОбороты.Субконто1
        |        КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто2) = &ТипИзмерения1
        |            ТОГДА ОстаткиИОбороты.Субконто2
        |        КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто3) = &ТипИзмерения1
        |            ТОГДА ОстаткиИОбороты.Субконто3
        |    КОНЕЦ КАК Субконто1,
        |    ВЫБОР
        |        КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто1) = &ТипИзмерения2
        |            ТОГДА ОстаткиИОбороты.Субконто1
        |        КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто2) = &ТипИзмерения2
        |            ТОГДА ОстаткиИОбороты.Субконто2
        |        КОГДА ТИПЗНАЧЕНИЯ(ОстаткиИОбороты.Субконто3) = &ТипИзмерения2
        |            ТОГДА ОстаткиИОбороты.Субконто3
        |    КОНЕЦ КАК Субконто2
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ОстаткиИОбороты
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ВТ.Счет КАК Счет,
        |    ВТ.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
        |    ВТ.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
        |    ВТ.СуммаОборотДт КАК СуммаОборотДт,
        |    ВТ.СуммаОборотКт КАК СуммаОборотКт,
        |    ВТ.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
        |    ВТ.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
        |    ЕСТЬNULL(ВТ.Субконто1, НЕОПРЕДЕЛЕНО) КАК Субконто1,
        |    ЕСТЬNULL(ВТ.Субконто2, НЕОПРЕДЕЛЕНО) КАК Субконто2,
        |    ПРЕДСТАВЛЕНИЕ(ЕСТЬNULL(ВТ.Субконто1, НЕОПРЕДЕЛЕНО)) КАК Субконто1Представление,
        |    ПРЕДСТАВЛЕНИЕ(ЕСТЬNULL(ВТ.Субконто2, НЕОПРЕДЕЛЕНО)) КАК Субконто2Представление,
        |    ПРЕДСТАВЛЕНИЕ(ВТ.Счет)
        |ИЗ
        |    ВТ КАК ВТ
        |ИТОГИ
        |    СУММА(СуммаНачальныйОстатокДт),
        |    СУММА(СуммаНачальныйОстатокКт),
        |    СУММА(СуммаОборотДт),
        |    СУММА(СуммаОборотКт),
        |    СУММА(СуммаКонечныйОстатокДт),
        |    СУММА(СуммаКонечныйОстатокКт)
        |ПО
        |    ОБЩИЕ,
        |    Счет ИЕРАРХИЯ,
        |    Субконто1,
        |    Субконто2
        |АВТОУПОРЯДОЧИВАНИЕ";

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует