Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Срочно. Ошибка СУБД!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
vbi
Помогите! Очень срочно нужно! База крутится на DB2. На платформе 8.2.12 веб интерфейс работал нормально, за исключением некоторых проблем с выпадающими списками. Мы обнаружили что это из-за платформы. Перешли на платформу 8.2.13.219 - В тонком клиенте и в режиме веб-клиента 1С перестала вообще запускатся. Выдает ошибку и вылетает:
Цитата
Невідновна помилка
Помилка при виконанні запиту POST до ресурсу /e1cib/logForm:
через:
Помилка СУБД:
htype=SQL_HANDLE_STMT hndl=0x20001, line=2622, file=Src\DB2Connection.cpp
SQLSTATE=42972, native=-338, '[IBM][CLI Driver][DB2/NT] SQL0338N Неверное условие ON, связанное с операцией JOIN или оператором MERGE. SQLSTATE=42972
'
Batchir
Это ошибка платформы, зарегистрирована ещё в январе 2010 года, но похоже не решаемая (из-за каких-то особенностей), поэтому:
Из документации. Приложение 8. Особенности работы с различными СУБД. 8.3. Сервер IBM DB2:
Цитата
не допускается соединение в запросе, если выполняется соединение двух таблиц, с условием, включающим сравнение полей табличной части.


Попробуйте обновить конфигурацию до последнего релиза (они часто сами переписывают запросы под ДБ2), а если это невозможно, то необходимо пересмотреть запросы самостоятельно.
хакерок
Цитата(vbi @ 04.10.11, 10:03) необходимо зарегистрироваться для просмотра ссылки
Помогите! Очень срочно нужно! База крутится на DB2. На платформе 8.2.12 веб интерфейс работал нормально, за исключением некоторых проблем с выпадающими списками. Мы обнаружили что это из-за платформы. Перешли на платформу 8.2.13.219 - В тонком клиенте и в режиме веб-клиента 1С перестала вообще запускатся. Выдает ошибку и вылетает:

возможно платформа не воспринимает синтаксис запроса ... наверное нужно найти запрос и попробовать его переделать в новой платформе
Vofka
Цитата
возможно платформа не воспринимает синтаксис запроса ...

Ну и причём тут синтаксис запроса? Абы шо.
Batchir
Ну хакерок в общем-то прав (если не придираться к словам, а следовать логике), только считаю что пост не имеет смысла, т.к. тоже самое я написал за 20 минут до этого и указал причину из документации почему так и как это обойти.

Именно то как написан запрос платформа не может выполнить в СУБД ДБ2. Типовые конфы обновляются и запросы переписываются под ДБ2.
Для решения проблемы необходимо обновиться до последнего релиза (хотя 100% дать не могу) или найти проблемный запрос и самому переписать его.
vbi
Действительно все из за запроса. Вот он:

ВЫБРАТЬ
    ДокументРеализацияТоваровУслуг.Ссылка КАК Ссылка,
    ДокументРеализацияТоваровУслуг.ПометкаУдаления КАК ПометкаУдаления,
    ДокументРеализацияТоваровУслуг.Номер КАК Номер,
    ДокументРеализацияТоваровУслуг.Дата КАК Дата,
    ДокументРеализацияТоваровУслуг.Проведен КАК Проведен,
    ДокументРеализацияТоваровУслуг.ВидОперации КАК ВидОперации,
    ДокументРеализацияТоваровУслуг.Организация КАК Организация,
    ДокументРеализацияТоваровУслуг.ОтражатьВУправленческомУчете КАК ОтражатьВУправленческомУчете,
    ДокументРеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете КАК ОтражатьВБухгалтерскомУчете,
    ДокументРеализацияТоваровУслуг.Подразделение КАК Подразделение,
    ДокументРеализацияТоваровУслуг.Сделка КАК Сделка,
    ДокументРеализацияТоваровУслуг.Склад КАК Склад,
    ДокументРеализацияТоваровУслуг.Контрагент КАК Контрагент,
    ДокументРеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
    ДокументРеализацияТоваровУслуг.Ответственный КАК Ответственный,
    ДокументРеализацияТоваровУслуг.МоментВремени КАК МоментВремени,
    ЧекККМ_Опт.Ссылка КАК Чек,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПриходныйКассовыйОрдер.Ссылка) КАК ПКО,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СчетНаОплатуПокупателю.Ссылка) КАК Счет
ИЗ
    Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ_Опт КАК ЧекККМ_Опт
        ПО (ЧекККМ_Опт.ДокументОснование = ДокументРеализацияТоваровУслуг.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
        ПО ДокументРеализацияТоваровУслуг.Сделка = СчетНаОплатуПокупателю.ЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
        ПО ДокументРеализацияТоваровУслуг.Сделка = ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка
ГДЕ
    ДокументРеализацияТоваровУслуг.ОплатаЧерезКассу = ИСТИНА
    И (ЕСТЬNULL(ПриходныйКассовыйОрдер.Проведен, ЛОЖЬ) = ЛОЖЬ
            ИЛИ ЕСТЬNULL(ЧекККМ_Опт.Проведен, ЛОЖЬ) = ЛОЖЬ
            ИЛИ ЕСТЬNULL(СчетНаОплатуПокупателю.Проведен, ЛОЖЬ) = ЛОЖЬ)

СГРУППИРОВАТЬ ПО
    ДокументРеализацияТоваровУслуг.Ссылка,
    ЧекККМ_Опт.Ссылка,
    ДокументРеализацияТоваровУслуг.ПометкаУдаления,
    ДокументРеализацияТоваровУслуг.Номер,
    ДокументРеализацияТоваровУслуг.Дата,
    ДокументРеализацияТоваровУслуг.Проведен,
    ДокументРеализацияТоваровУслуг.ВидОперации,
    ДокументРеализацияТоваровУслуг.Организация,
    ДокументРеализацияТоваровУслуг.ОтражатьВУправленческомУчете,
    ДокументРеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете,
    ДокументРеализацияТоваровУслуг.Подразделение,
    ДокументРеализацияТоваровУслуг.Сделка,
    ДокументРеализацияТоваровУслуг.Склад,
    ДокументРеализацияТоваровУслуг.Контрагент,
    ДокументРеализацияТоваровУслуг.СуммаДокумента,
    ДокументРеализацияТоваровУслуг.Ответственный,
    ДокументРеализацияТоваровУслуг.МоментВремени


Это запрос динамического списка формы списка документа реализации. Использовал ее на рабочем столе.
Пока заменил на стандартный
Vofka
Цитата
Ну хакерок в общем-то прав

Это не платформа не воспринимает синтаксис, а именно СУБД DB2
vbi
Цитата
...с условием, включающим сравнение полей табличной части.
Немного не понял этой части предложения. сравнение полей табличной части между собой, или проверка равно ли таб. поле какому-то значению, в моем случае
Цитата
ДокументРеализацияТоваровУслуг.ОплатаЧерезКассу = ИСТИНА


?
Vofka
Я так понял вот она, проблемная строка:
ПО ДокументРеализацияТоваровУслуг.Сделка = ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка
Batchir
Ругается скорее всего на
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ_Опт КАК ЧекККМ_Опт
ПО (ЧекККМ_Опт.ДокументОснование = ДокументРеализацияТоваровУслуг.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
ПО ДокументРеализацияТоваровУслуг.Сделка = СчетНаОплатуПокупателю.ЗаказПокупателя
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
ПО ДокументРеализацияТоваровУслуг.Сделка = ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка

т.е. именно в этой части проблема.
vbi
Понятно, то есть соединять нельзя в 8.2.13.219. Надо ставть DB2 и тестировать 8.2.14
Batchir
Попробуйте, но обязательно отпишитесь по результатам.
Просто мне кажется что в 8.2.14 таже история, хотя может и пофиксили.
Документацию и исправленные ошибки по 8.2.14 не читал.
vbi
Цитата(Batchir @ 04.10.11, 13:06) необходимо зарегистрироваться для просмотра ссылки
Попробуйте, но обязательно отпишитесь по результатам.
Просто мне кажется что в 8.2.14 таже история, хотя может и пофиксили.
Документацию и исправленные ошибки по 8.2.14 не читал.


Там есть фиксы какието по DB2 но судя по описанию это не то. Конечно отпишусь. Его еще поставить, настроить. Скорее всего через дня 2 отпишусь
vbi
Платформа 8.2.14.533 - проблема не решена! Вот так вот...
mister-x
а якщо так необходимо зарегистрироваться для просмотра ссылки, але потрібно знати добре структури таблиць
Batchir
Цитата(vbi @ 05.10.11, 18:11) необходимо зарегистрироваться для просмотра ссылки
Платформа 8.2.14.533 - проблема не решена! Вот так вот...

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

и это нужно учитывать при написании запросов.
vbi
А вот такой запрос проходит на ура!
ВЫБРАТЬ
    ДокументРеализацияТоваровУслуг.Ссылка КАК Ссылка,
    ДокументРеализацияТоваровУслуг.ПометкаУдаления КАК ПометкаУдаления,
    ДокументРеализацияТоваровУслуг.Номер КАК Номер,
    ДокументРеализацияТоваровУслуг.Дата КАК Дата,
    ДокументРеализацияТоваровУслуг.Проведен КАК Проведен,
    ДокументРеализацияТоваровУслуг.ВидОперации КАК ВидОперации,
    ДокументРеализацияТоваровУслуг.Организация КАК Организация,
    ДокументРеализацияТоваровУслуг.ОтражатьВУправленческомУчете КАК ОтражатьВУправленческомУчете,
    ДокументРеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете КАК ОтражатьВБухгалтерскомУчете,
    ДокументРеализацияТоваровУслуг.Подразделение КАК Подразделение,
    ДокументРеализацияТоваровУслуг.Сделка КАК Сделка,
    ДокументРеализацияТоваровУслуг.Склад КАК Склад,
    ДокументРеализацияТоваровУслуг.Контрагент КАК Контрагент,
    ДокументРеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
    ДокументРеализацияТоваровУслуг.Ответственный КАК Ответственный,
    ДокументРеализацияТоваровУслуг.МоментВремени КАК МоментВремени,
    ЧекККМ_Опт.Ссылка КАК Чек,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПриходныйКассовыйОрдер.Ссылка) КАК ПКО,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СчетНаОплатуПокупателю.Ссылка) КАК Счет
ИЗ
    Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ_Опт КАК ЧекККМ_Опт
        ПО (ЧекККМ_Опт.ДокументОснование = ДокументРеализацияТоваровУслуг.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
        ПО ДокументРеализацияТоваровУслуг.Сделка = СчетНаОплатуПокупателю.ЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
        ПО Истина
//        ПО ДокументРеализацияТоваровУслуг.Сделка = ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка
ГДЕ
    ДокументРеализацияТоваровУслуг.ОплатаЧерезКассу = ИСТИНА
    И (ЕСТЬNULL(ПриходныйКассовыйОрдер.Проведен, ЛОЖЬ) = ЛОЖЬ
            ИЛИ ЕСТЬNULL(ЧекККМ_Опт.Проведен, ЛОЖЬ) = ЛОЖЬ
            ИЛИ ЕСТЬNULL(СчетНаОплатуПокупателю.Проведен, ЛОЖЬ) = ЛОЖЬ)
СГРУППИРОВАТЬ ПО
    ДокументРеализацияТоваровУслуг.Ссылка,
    ЧекККМ_Опт.Ссылка,
    ДокументРеализацияТоваровУслуг.ПометкаУдаления,
    ДокументРеализацияТоваровУслуг.Номер,
    ДокументРеализацияТоваровУслуг.Дата,
    ДокументРеализацияТоваровУслуг.Проведен,
    ДокументРеализацияТоваровУслуг.ВидОперации,
    ДокументРеализацияТоваровУслуг.Организация,
    ДокументРеализацияТоваровУслуг.ОтражатьВУправленческомУчете,
    ДокументРеализацияТоваровУслуг.ОтражатьВБухгалтерскомУчете,
    ДокументРеализацияТоваровУслуг.Подразделение,
    ДокументРеализацияТоваровУслуг.Сделка,
    ДокументРеализацияТоваровУслуг.Склад,
    ДокументРеализацияТоваровУслуг.Контрагент,
    ДокументРеализацияТоваровУслуг.СуммаДокумента,
    ДокументРеализацияТоваровУслуг.Ответственный,
    ДокументРеализацияТоваровУслуг.МоментВремени


Оказывается все из-за этого соединения:
ПО ДокументРеализацияТоваровУслуг.Сделка = ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка

Что в нем не так?
Vofka
Цитата
Оказывается все из-за этого соединения:
ПО ДокументРеализацияТоваровУслуг.Сделка = ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка

А я про это выше не говорил?
Batchir
ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка - "Сделка" это реквизит табличной части "РасшифровкаПлатежа"
vbi
Цитата(Vofka @ 06.10.11, 9:39) необходимо зарегистрироваться для просмотра ссылки
А я про это выше не говорил?


Говорил и оказался прав. Но почему сдесь слетает а на остальных соединениях нет? Только потому что соединяю с реквизитом табличной части?

Ну не понял я доконца этой фразы:
Цитата
не допускается соединение в запросе, если выполняется соединение двух таблиц, с условием, включающим сравнение полей табличной части.

Истолкуйте баранам пожалуйста 433.gif
Batchir
Цитата
не допускается соединение в запросе, если выполняется соединение двух таблиц

Вы соединяете таблицу ДокументРеализацияТоваровУслуг с Документ.ПриходныйКассовыйОрдер
Цитата
с условием, включающим сравнение полей табличной части.

В условии соединения присутствует поле табличной части ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Сделка
vbi
Блин.. чето меня колбасит. Фраза дошла только на 20 раз прочтения smile.gif Все. понял))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.