|   |   | 
| 
 | Неверный результат умножения. Внешние источники данных (8.2.16.368 + Oracle11g) | ☑ | ||
|---|---|---|---|---|
| 0
    
        e-temka 30.10.12✎ 23:42 | 
        При использовании внешних источников данных (обращение в запросе) неверно выполняются арифметические операции. 
  Пример (упрощен): Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | 12661954 * 48 КАК Поле1 |ИЗ | ВнешнийИсточникДанных.<ИмяВнешнегоИсточникаДанных>.Таблица.<ИмяТаблицы> КАК <ИмяТаблицы>"; В результате запроса Поле1 = 607773824. Это не верно. Правильно: 607773792. Другие подобные операции с этим (12661954) и соседними числами также выполняются с ошибкой. Платформа 8.2.16.368. Внешний источник данных: Oracle 11g База клиент-серверная на MS SQL 2005 ОС клиента 1С: Windows 7 SP1 *На внешних источниках данных MSSQL и MqSQL такой ошибки не возникает. Там другие :) Прошу, по-возможности, дать хотя бы совет, как это обойти. П.С.: В саппорт 1С запостил. Жду. | |||
| 1
    
        Живой Ископаемый 30.10.12✎ 23:44 | 
        саппорт ответит что все результаты зависят от используемого одбс драйвера. так оно и есть. точка. 
  выкиньте текущий, используйте другой. | |||
| 2
    
        zmaximka 30.10.12✎ 23:48 | 
        Беда.     | |||
| 3
    
        orefkov 31.10.12✎ 00:29 | 
        Не знаю за оракл, есть там какойнить профайлер, чтоб можно было посмотреть, какой запрос в него  приходит?
  Можно еще какой-нить ODBC трейсер найти, посмотреть, что 1С в ODBC передает. По крайней мере, будет понятно, чей косяк. Так то 607773824 / 48 = 12661954.(6) где-то происходит ошибка с конвертацией числа. Можно еще попробовать проверить так 12 * 1000 * 1000 * 48 + 661 * 1000 * 48 + 954 * 48 что выдаст. В общем, направлений для исследований полно. | |||
| 4
    
        IamAlexy 31.10.12✎ 00:32 | 
        бгыыы
  2х2 равно чего то там типа 3.9? :) :) :) где то я это уже видел | |||
| 5
    
        pumbaEO 31.10.12✎ 00:39 | 
        (4) веб клиент, расчет табличных частей на клиенте, там жаваскрипт.     | |||
| 6
    
        orefkov 31.10.12✎ 01:41 | 
        Вроде с 15. X или 16.X в веб клиенте не транслируют в  JavaScript, а исполняют напрямую 1Сный код.     | |||
| 7
    
        shuhard 31.10.12✎ 07:51 | 
        (0)[дать хотя бы совет, как это обойти. ]
  использовать ADODB использовать вьюшки переписать запрос к виду 12661954.00 * 48.00 КАК Поле1 | |||
| 8
    
        e-temka 31.10.12✎ 09:49 | 
        Ночь прошла:) Выяснил:
  1. (1)Косячит драйвер ODBC, установленный с инстант клиентом Oracle 2. (3)MS ODBC for Oracle не косячит и при его использовании в трейсере можно отловить вот такой запрос (с косячным ODBC тоже самое, только число другое): --Timestamp: 31.10.2012 01:40:13 SELECT SDBL_TOP_1 FROM (SELECT 607773792 AS SDBL_TOP_1 FROM "<Table>"."<Field>" T1) WHERE ROWNUM <= 1 --Elapsed time: 0.005 3. (7) "12661954.00 * 48.00" а также "ВЫРАЗИТЬ КАК ЧИСЛО" не дало результатов. 4. (3) "12*1000*1000*48+661*1000*48+954*48" попробовал, ради интереса.. итог - расчет неверный! и от этого совсем грустно((( ВЫБРАТЬ 12661954 * 48 КАК Поле0, 12*1000*1000*48+661*1000*48+954*48 КАК Поле1, 12*1000*100*48 КАК Поле3, 661*1000 *48 КАК Поле4, 954 * 48 КАК Поле5 ИЗ ВнешнийИсточникДанных.<ИмяВнешнегоИсточникаДанных>.Таблица.<ИмяТаблицы> КАК <ИмяТаблицы> При этом "12*1000*1000*48" = 576000000, (верно) "661*1000*48"=31728000, (верно) "954*48"=45792, (верно) а их сумма не верна((( | |||
| 9
    
        Живой Ископаемый 31.10.12✎ 10:01 | 
        2(8) зато у МС драйвера другие косяки есть.. Например если ты добавляешь таблицу в ВИД,  с полями типа нумерик, то такие поля добавятся с размерностью 15 и дробной частью 15.
  в результате все значения больше единыцы будут представлены как 0.999999999999999999 короче глаз да глаз за ними нужен | |||
| 10
    
        e-temka 31.10.12✎ 11:04 | 
        Вот что еще вижу: 1 + 0.1 = 1,100000023841858
  Банальная и замусоленная тема... видимо с этим мне никто не поможет... Всем спасибо! | |||
| 11
    
        e-temka 31.10.12✎ 11:06 | 
        (9)А какой посоветуете драйвер ODBC использовать? :)))
  Желательно на Win Serv 2008 x64 | |||
| 12
    
        e-temka 01.11.12✎ 11:22 | 
        (7) Вьюшки - была супер идея! Да косяк и тут! И теперь я вообще не верю в 1С, ну как так можно?((
  Смотрю через тоад во вьюху: ZAKAZ_ID CONTROL_SUM 32450960 1249839267 Смотрю запись во внешнем источнике данных через 1С: ZAKAZ_ID CONTROL_SUM 32450960 1249839232 Может есть какой-то кэш? Или еще что либо? и отображение значения просто не обновилось? Хелп плиз! | |||
| 13
    
        e-temka 02.11.12✎ 10:45 | 
        Позволю себе UP!
  Интересен комментарий к посту (12)... | |||
| 14
    
        Живой Ископаемый 02.11.12✎ 11:11 | 
        2(13) ты драйвер заменил?     | |||
| 15
    
        e-temka 02.11.12✎ 11:41 | 
        (13) в (9) писал "А какой посоветуете драйвер ODBC использовать?"
  "Microsoft ODBC for Oracle" не удалось задействовать на Win Serv 2008 (возможно админы просто не хотят стучать в бубен), но на локальной машине он работает и выдает верные результаты. На сервере использую ODBC, поставляемый с клиентом Oracle. С поддержкой 1С переписываюсь, выслал им DT, скрины, описалово.. жду... На данный момент поставил "костыли" в виде ADODB запроса, т.к. БД рабочая и данные нужны уже сейчас... Итог: Какой драйвер взять для Win Serv 2008? | |||
| 16
    
        Живой Ископаемый 02.11.12✎ 11:50 | 
        "Microsoft ODBC for Oracle"     | |||
| 17
    
        e-temka 02.11.12✎ 12:14 | 
        Ясно. Спс. По результатам от 1С отпишусь :)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |