|
Ошибка СУБД: Внутренняя ошибка, был достигнут предел служб выражений | ☑ | ||
---|---|---|---|---|
0
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 такой проблемы нет. Пожалуйста, подскажите, как можно ее устранить или хотя бы обойти? Более подробно причины доработок указаны в предыдущей теме: ОСВ по счету ошибка детализации по субконто |
|||
1
Benevalete
19.10.17
✎
08:10
|
Совсем никаких идей?(
|
|||
2
PCcomCat
19.10.17
✎
08:16
|
Уже забыли, как она выглядет эта Бухгалтерия 1.6.
|
|||
3
PCcomCat
19.10.17
✎
08:26
|
А если кинуть во временную таблицу результат без итогов и группировки, а уж потом группировать и собирать итоги?
|
|||
4
Benevalete
19.10.17
✎
08:37
|
(3) Да, была такая идея, но не совсем понимаю как получить тот же результат по итогам, если указан итог по "Счет ИЕРАРХИЯ", то есть оператором "выбор когда" я получаю субконто уже по тому, что получилось в результате иерархических итогов (счет = 91, у него субконто1 всегда одинаковое, а у его субсчетов может быть разное)
|
|||
5
Benevalete
19.10.17
✎
08:45
|
(2) Конкретно для осв по счету: берется выбранный счет, к примеру 10, анализируются его субконто(субконто1 - номенклатура, субконто2 - склады), на основании этого заполняется настройка детализации: "По номенклатуре, по складам", если убираем детализацию по складам, в запрос выше попадает только субконто1 - номенклатура, по умолчанию там оба субконто(поля запроса формируются циклом).
|
|||
6
rphosts
19.10.17
✎
09:08
|
Тии? Разумеется после бэкапа
|
|||
7
Benevalete
19.10.17
✎
10:10
|
(6) попробуем, но это надолго, база очень большая
|
|||
8
assasu
19.10.17
✎
10:23
|
(0) отчеты надо делать такими что бы их можно было поддерживать.
|
|||
9
Benevalete
19.10.17
✎
10:54
|
(8) Это вы обращаете к разработчику бухгалтерии 1.6?
У меня нет возможности перейти на новую редакцию, где детализация по субконто реализована должным образом, поэтому приходится изощряться и править стандартный отчет. Если видите в методе доработки ошибку, то укажите на нее, к чему эта обобщенная фраза о том, что все надо делать правильно? |
|||
10
Benevalete
19.10.17
✎
11:24
|
Люди, знающие толк в SQL, пожалуйста скажите: почему данный запрос безо всяких сложностей и не за столь большое время выполняемый в файловой базе, не может быть обработан в SQL?
|
|||
11
bodri
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 назад было что-то подобное, после этого такие конструкции избегаю |
|||
12
Benevalete
20.10.17
✎
11:20
|
(3) (11) ура ура! Я разобралась как перенести проблемные поля во временную таблицу и ошибка больше не проявляется, даже на внушительном объеме данных. Всем спасибо за помощь! чуть позже скину пример запроса, вдруг кому пригодится
|
|||
13
Benevalete
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 |АВТОУПОРЯДОЧИВАНИЕ"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |