Имя: Пароль:
1C
1С v8
Проблема с ВнешнимИсточникомДанных (СУБД Firebird)
0 Alex_MA
 
04.10.11
10:00
Всем доброго дня уважаемые коллеги!

Формирую запрос:

ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
   
   ПараметрыСоединения.СтрокаСоединения = "DRIVER={Firebird/InterBase(r) driver};UID=User;PWD=Password;DBNAME=15.189.145.177:/var/Firebird/db/MyDB.fdb";
   ВнешниеИсточникиДанных.ВнешнийИсточникДанных1.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
   ВнешниеИсточникиДанных.ВнешнийИсточникДанных1.УстановитьСоединение();
   
   fYear   = Год(ДатаНачала);
   fMonth1 = Месяц(ДатаНачала);
   fMonth2 = Месяц(ДатаОкончания);
   
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    СУММА(n.KOLR) КАК k,
                         |    СУММА(n.SMB) КАК s,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (1)
                         |                ТОГДА n.KOLR
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК k_vn,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (1)
                         |                ТОГДА ВЫРАЗИТЬ(n.SMB КАК ЧИСЛО(15, 2))
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК s_vn,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (2)
                         |                ТОГДА n.KOLR
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК k_sn1,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (2)
                         |                ТОГДА ВЫРАЗИТЬ(n.SMB КАК ЧИСЛО(15, 2))
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК s_sn1,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (3)
                         |                ТОГДА n.KOLR
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК k_sn2,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (3)
                         |                ТОГДА ВЫРАЗИТЬ(n.SMB КАК ЧИСЛО(15, 2))
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК s_sn2,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (4)
                         |                ТОГДА n.KOLR
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК k_nn,
                         |    СУММА(ВЫБОР
                         |            КОГДА n.KUN В (4)
                         |                ТОГДА ВЫРАЗИТЬ(n.SMB КАК ЧИСЛО(15, 2))
                         |            ИНАЧЕ 0
                         |        КОНЕЦ) КАК s_nn
                         |ИЗ
                         |    ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица.ELNACHN КАК n
                         |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица.ELTARIF КАК t
                         |        ПО n.KT = t.UID");
                         
   ТаблицаДанных = Запрос.Выполнить().Выгрузить();

При выполнении запроса вылетает ошибка:

по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: HY000
Номер ошибки: -842
Описание: [ODBC Firebird Driver][Firebird]Dynamic SQL Error
SQL error code = -842
Precision must be from 1 to 18

Выяснилось то, что не отрабатывает агрегатная ф-я СУММА.
Ждать нового релиза или есть какой нибудь вариант ?

Спасибо за внимание.
1 Kerk
 
04.10.11
10:36
А если на английское словозаменить?
2 Alex_MA
 
04.10.11
10:37
(1)без разницы
3 Kerk
 
04.10.11
10:40
А зачем тебе внутренне соединение к "ELTARIF КАК t", если ты t не выводишь в резльтате, замени условием
4 Alex_MA
 
04.10.11
10:58
(3)это можно и нужно, однако, проблему не меняет
5 Alex_MA
 
04.10.11
10:59
если запрос будет даже таким:

Запрос = Новый Запрос("ВЫБРАТЬ
                         |    СУММА(n.KOLR) КАК k
                         |ИЗ
                         |    ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица.ELNACHN КАК n");

то проблема все равно не решается
6 Alex_MA
 
04.10.11
11:06
Вообщем ждем релиза 1С, где может быть когда-нибудь они исправят этот "косяк".
7 Fragster
 
гуру
04.10.11
11:07
СУММА(Выразить(n.KOLR как Число (15,2)))
8 Alex_MA
 
04.10.11
11:09
(7)уже пробовал
9 Fragster
 
гуру
04.10.11
11:19
мне кажется, дело не в 1с, а в драйвере. попробуй из экселя какого-нибудь это выполнить... поищи свежий драйвер
10 Kerk
 
04.10.11
11:33
Выполняй без суммы, выгружай в ТЗ и суммируй, коли ODBC Firebird Driver глючит.