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

Ошибка «Invalid floating point operation» при подключении к 1С 8.3

При подключении к «1C: Предприятие 8.3» в узле импорта и/или в мастере подключений возникает ошибка «Invalid floating point operation». Что делать?
Рисунок 1 – Ошибка «Invalid floating point operation»

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

В случае если сценарий импорта из 1С выполняется интерактивно в интерфейсе DStudio, решение для данной ошибки следующее:

  1. Открыть в текстовом редакторе файл сценария (расширение "ded");
  2. Найти раздел "EnvironmentVariables" и в описании переменной "DisableFloatExceptions" добавить строку <Value>1</Value>:
    
    ...    
        <EnvironmentVariables>
           <Version>1</Version>
            <Vars>
                <Count>2</Count>
                <I_0>
                    <Name>LocaleID</Name>
                    <DataType>dtInteger</DataType>
                    <Value>1049</Value>
                </I_0>
               <I_1>
                   <Name>DisableFloatExceptions</Name>
                    <DataType>dtBoolean</DataType>
                    <Value>1</Value>              \\Эта строка добавляется!
                </I_1>
            </Vars>
        </EnvironmentVariables>
    ...
    
    
  3. Сохранить файл сценария.

Значение переменной "DisableFloatExceptions" при правильной правке сценария отразится в настройках Deductor (Рис. 2)

Рисунок 2 – Отображение изменений в настройках

Важно: При изменении и последующем сохранении сценария в DStudio данные изменения могут быть утеряны.

В случае если сценарий используется в пакетном режиме, решение следующее:

Необходимо использовать управляющий сценарий, в котором при помощи узла "Команда ОС" запускать на выполнение DStudio.exe с параметрами запуска сценария импорта из 1С. При этом сам сценарий импорта из 1С править вышеописанным способом не надо, значение переменной DisableFloatExceptions можно передавать в параметрах запуска сценария. В узле "Команда ОС" строка запуска будет примерно такой:


chcp 1251
"C:\Program Files (x86)\BaseGroup\Deductor\Bin\DStudio.exe" "C:\ПутьКФайлу\1c.ded" /DisableFloatExceptions=True /RUN /LOG /LOGFILE="C:\ПутьКФайлу\log.log" /LOGMODE

Важно: Необходимо обратить внимание, что при изменении значения переменной DisableFloatExceptions результат работы узла Калькулятор может поменяться, а именно меняется результат обработки значения NULL. Пример: при DisableFloatExceptions = True значение выражения Round(Null()) > 1 возвращает False. При DisableFloatExceptions = False это выражение возвращает Null. В связи с этим, при применении данного решения необходимо проверить работу сценария.