Преобразование значения к типу число

Очень часто начинающие программисты 1С 8.3 встречаются с этой проблемой. Рассмотрим причины возникновения ошибки Преобразование значения к типу Число не может быть выполнено и методы её решения.

Причина ошибки Преобразование значения к типу Число не может быть выполнено

Причина достаточно банальна. Обычно при каком-либо арифметическом действии над переменными числового типа система ожидает увидеть в этом действии два значения числового типа, например:

Система, естественно, верно отработает это выражение и вернет 4.

Существуют ситуации, в которых в таких простых случаях в переменных оказывается не число, а, например, строка, NULL неопределено, дата и др.

Вот такой пример обязательно выдаст ошибку Преобразование значения к типу Число не может быть выполнено:

Потому как платформа не может сложить значения типа число и значения типа дата.

Единственное исключение — сложения со строкой, в которой содержатся только цифры:

Получите 267 видеоуроков по 1С бесплатно:

Система выдаст результат 4, однако, если поменять слагаемые местами, система выдаст строковые «22», т.к 1С 8 выбирает тип по первому в выражению значению.

Решение Преобразование значения к типу Число не может быть выполнено

Для решения необходимо найти место в коде, в котором вызывается исключение, и исправить его.

В качестве решения рекомендую использовать дополнительные проверки. Например, на тип переменных:

Очень распространенная ошибка — это получение NULL в запросе и использование его в арифметических выражениях:

Здесь в строке Сч = Сч + Выборка.КоличествоОборот вполне вероятно появление данной ошибки в случае получения в качестве значения NULL.

Читайте также  Прошивка для dvd привода

Чтобы избежать данной ошибки, достаточно использовать проверку на NULL ресурсов в запросе:

Если в значении будет значение NULL, то система заменит его на ноль, тем самым ошибка будет исправлена.

Другие статьи по 1С:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Программирование системы 15.08.2016 10:22 8130

В 1С:Предприятии при создании перемененных не нужно определять тип её значения. В других языках программирования типа C# или C++ при создании переменных необходимо сразу определять тип значения. Так как в 1С нет строгой типизации переменных, то в одну и туже переменную можно записывать значения разного типа.

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

Неявное преобразование типов

Неявное преобразование типов переменных возникает когда над переменными выполняется какие либо действия: сложение, вычитание, соединение строк, и т.д.

Явное преобразование типов

Для преобразования типов значений в 1С предназначены специальные функции: Число(), Строка(), Дата().

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Довольно часто возникающая ошибка «преобразование значения к типу булевочисло не может быть выполнено» на самом деле практически всегда легко поддается устранению.

Читайте также  Регистр сведений присоединенные файлы

Первое, что нужно сделать, если вы работаете с типовой конфигурацией системы 1С — это обновить конфигурацию до последнего релиза. Возможно, это решит проблему.

Но в большинстве случаев появление такой ошибки говорит попытке присвоить числовой переменной не численное значение, в результате внутренний конвертер типов не может преобразовать переменную в число и возникает ошибка.

Если присваивание переменной происходит из тела выборки результата запроса, следует проверить наличие в выборке значений типа NULL. Это значение недопустимо использовать в операциях с числами.

Значение NULL появляется в запросе при использовании соединений.

К примеру:
Сумма=КолВо*Выборка.Цена;

В этом случае ошибка возможна, если в регистре сведений цены номенклатуры нет записи по этой номенклатуре.

Решить проблему можно таким способом: во время обращения к полю выборки необходимо добавить проверку на равенство значению типа NULL. Либо использовать функцию ЕСТЬNULL(x1,x2). Она проверяет на NULL x1, и если Значение NULL обнаружено функция возвращает x2, в обратно случае возвращает x1.

В первом случае равенства Выражения1 NULL, Выражение1 будет заменено в результате запроса на заданное Выражение2.

Появление ошибки возможно в случае работы с Excel через COM соединение. Тогда необходимо проанализировать структуру книги Excel, на наличие значений NULL, и проверить, задан ли для искомых ячеек нужный тип данных. Либо значение ячейки присваивать числовой переменной через функцию преобразования типов "Число()" и после обращаться к ячейке внутри контейнера Попытка Исключение КонецПопытки.

В остальных случаях требуется работа с отладчиком для поиска ошибок, либо принудительное или непринудительное преобразование типов.

Ссылка на основную публикацию
Adblock
detector