Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Преобразование к типу дата

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

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

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

Последнее обновление: 18.07.2018

Что будет выведено на консоль в результате выполнения следующей программы и почему?:

При выполнении программа сгенерирует исключение System.NullReferenceException, потому что поскольку переменная tom НЕ представляет
объект Employee, то преобразование tom as Employee возвратит null.

На консоль будет выведена строка «Bob». Переменная tom хранит ссылку на объект Employee. Переменная bob после присвоения также
хранит эту же ссылку на объект Employee. Поэтому преобразование bob as Employee возвратит объект Employee, которая будет присвоена переменной
empl. Поскольку все три переменных tom, bob, empl хранят ссылку на один и тот же объект в памяти, то после изменения объекта через одну
из этих переменных приведет к тому, что другие переменные будут указывать на этот измененный объект.

Есть два класса:

Для преобразования объекта Person к типу Employee мы можем использовать следующие два способа:

Какой из способов является более предпочтительным и почему?

Использование оператора является более предпочтительным, поскольку в случае неудачного преобразования этот оператор
возвращает значение . При доступе к объекту через переменную мы можем проверить ее значение на null.

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

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

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

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

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

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

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

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

Get expert help now

Don’t have time to figure this out? Our expert partners at Excelchat can do it for you, 24/7.

Программирование в 1С для всех

Разберем основные вопросы преобразования типов в 1С 8.3: из строки в число, из числа в строку, из даты в число и прочие варианты. В этой статье мы рассмотрим функции преобразования значений, и я соберу в едино все варианты преобразования примитивных типов.

Строка в число в 1С

Узнаем, как в 1С 8.3 преобразовать строку в число.

Пусть, у нас есть числа в таком виде.

Для того, чтобы выполнить преобразование этих строк в число, необходимо воспользоваться методом Число. Этот метод преобразует параметр в число.

Обратите внимание, что разделять дробную часть можно в строке как при помощи символа точка «.», так и при помощи символа запятая «,». Если перед каким-то числом в строке стоят нули, то они отсекаются. У нас будет следующий результат.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Число в строку в 1С

Рассмотрим обратную задачу, когда в 1С 8.3 нужно преобразовать число в строку. Самый простой вариант использовать метод Строка, который преобразует собственный параметр в строку.

И какой результат возвращает этот код:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

У этого способа имеется недостаток: он ставит пробелы между разрядами у длинных чисел. Для того, чтобы в 1С преобразовать число в строку без пробелов нужно воспользоваться функцией Формат. Данная функция имеет два параметра: преобразуемое значение и форматную строку. Если нам нужно указать, что число преобразуется в строку без пробелов в разряде, то необходимо указать в форматной строке, что порядок разделения группировки разрядов числа или равен 0, или пустой.

Результат будет без разрядов:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Строка в дату 1С

Узнаем, как преобразовать в 1С 8.3 строку в дату. Для этого необходимо использовать метод Дата, который преобразует параметр (в том числе строку ) в дату . Причем, замечу, что строка должна быть задана в таком формате «ГГГГММДДЧЧММСС».

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Если мы зададим дату в не верном формате, то преобразование не произойдет и возникнет ошибка «Преобразование значения к типу Дата не может быть выполнено».

Например, этот код:

Приведет к ошибке:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Дата в строку в 1С

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

В этом случае у нас выйдет строка в обычном «полном» формате даты.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

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

Форматов дат может быть великое множество ,все я разбирать в этой статье не буду, покажу только как можно быстро воспользоваться этой функцией.

Мы изменим предыдущий код, написав вместо метода Строка метод Формат, а в качестве второго параметра у метода Формат напишем просто две кавычки.

После нужно между кавычками поставить курсор, вызвать контекстное меню, и применить в нем команду Конструктор форматной строки.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

В этом конструкторе на закладке Дата вы можете выбрать удобный вам формат даты.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

И после нажатия кнопки ОК этого конструктора, нужный формат появится в виде строки.

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

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Строка в булево в 1С

При помощи метода Булево мы можем некоторые строковые представления (Да, Нет, Истина, Ложь) преобразовывать в значения Истина или Ложь.

Например, следующие переменные:

Будут иметь такие значения:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Булево в строку в 1С

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

Например, как здесь:

У нас будет выходить следующий результат:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

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

Если мы, как-то по-другому хотим преобразовать булево в строку, то можно воспользоваться уже знакомым нам методом Формат.

Переделаем, предыдущий код:

Знакомым способом вызовем конструктор форматной строки, где на закладке Булево введем преставление значений Истина и Ложь.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

После нажатия кнопки ОК конструктора, второй параметр метода Формат заполнится:

И будет следующий результат:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Число в булево в 1С

В 1С 8.3. мы можем преобразовать любое число в булево по следующему правилу: 0 будет преобразован в Ложь, все остальные значения в Истина.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Булево в число в 1С

Можно сделать и обратное преобразование. Булево значение в число.

Для этого нужно воспользоваться методом Число, где в качестве параметра указать булево значение. Тогда Истина будет преобразована в 1С, а Ложь – в 0.

Например, как в этом коде:

С таким результатом:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Статьи о примитивных типах в 1С:

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить вКнига «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Книга написана понятным и простым языком — для новичка.

  • Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  • Научитесь понимать архитектуру 1С;
  • Станете писать код на языке 1С;
  • Освоите основные приемы программирования;
  • Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

  • Очень доступный и понятный язык изложения
  • Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  • Поймете идеологию управляемого приложения 1С
  • Узнаете, как разрабатывать управляемое приложение;
  • Научитесь разрабатывать управляемые формы 1С;
  • Сможете работать с основными и нужными элементами управляемых форм
  • Программирование под управляемым приложением станет понятным
Читать также:  Проблемы с доступом к сайту 1С и её сервисам. Решение с 1С-отчётностью в (87)

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.Только для читателей моего блога,промо-код на скидку в 300 рублей на весь комплект: blog

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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301Web Money — R955262494655

Ошибка «Преобразование значения к типу дата не может быть выполнено»

Добрый вечер. Сам не программист — больше бухгалтер. До сегодняшнего дня всё работало отлично. Но при загрузке выписки из Клиент-Банка невозможно провести один документ списания. Вылетает ошибка: «Преобразование значения к типу дата не может быть выполнено» и кнопка закрыть.

Из самых простых вариантов — обновить конфигурацию. Есть вероятность, что ошибка исчезнет. Либо может кто-то сталкивался с подобным? Можно ли победить без правки конфигурации?

Дополнительные сведения

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

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

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

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

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

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

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

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

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

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

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

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

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

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

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

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

Даты, отформатированные как текст, выравниваются по левому краю в ячейке (вместо выравнивания по правому краю). Если включена Проверка ошибок , Текстовая дата с двумя цифрами года также может помечаться индикатором ошибки:

Поскольку функция проверки ошибок в Excel распознает даты в текстовом формате с двузначным номером года, можно воспользоваться средством автозамены и преобразовать их в даты в формате даты. С помощью функции ДАТАЗНАЧ можно преобразовывать в даты большинство типов текстовых дат.

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

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Вы можете использовать индикатор ошибки для преобразования дат из текстового формата в формат даты.

Примечания: Сначала убедитесь в том, что в Excel включена проверка ошибок. Для этого:

В Excel 2007 нажмите кнопку Microsoft Office

и выберите Параметры ExcelExcel 2007 формулы.

При проверке ошибокустановите флажок Включить фоновую проверку ошибок. Все найденные ошибки помечаются треугольником в левом верхнем углу ячейки.

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

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

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

Совет: Чтобы отменить выделение ячеек, щелкните любую ячейку на листе.

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

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

В меню выберите команду Преобразовать XX в 20XX или Преобразовать XX в 19XX. Если вы хотите отключить индикатор ошибки, не преобразуя число, нажмите кнопку пропустить ошибку.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Текстовые даты с двумя цифрами года преобразуются в стандартные даты с четырьмя цифрами года.

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

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

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

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

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

Нажмите кнопку числовой формат и выберите нужный формат даты.

Краткий формат даты выглядит следующим образом:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

В длинный формат даты содержатся дополнительные сведения, как показано на рисунке:

Каков будет результат выполнения программы представленной на рисунке ошибка преобразования типов

Чтобы преобразовать текстовую дату в ячейку в серийный номер, используйте функцию ДАТАЗНАЧ. Затем скопируйте формулу, выделите ячейки, содержащие текстовые даты, и используйте команду Специальная Вставка , чтобы применить к ним формат даты.

Выполните указанные ниже действия:

Выберите пустую ячейку и убедитесь в том, что ее числовой формат является общим.

В пустой ячейке сделайте следующее.

Щелкните ячейку, содержащую дату в текстовом формате, которую следует преобразовать.

Нажмите клавишу ВВОД, и функция ДАТАЗНАЧ возвращает порядковый номер даты, представленной текстовым форматом даты.

Что такое серийный номер Excel?

В Excel даты хранятся в виде порядковых номеров, что позволяет использовать их в вычислениях. По умолчанию 1 января 1900 г. является порядковым числом 1, а 1 января 2008 — порядковый номер 39448, так как он составляет 39 448 дня после 1 января, 1900.To скопировать формулу преобразования в диапазон смежных ячеек, выделите ячейку, содержащую введенную формулу. , а затем перетащите маркер заполнения

по диапазону пустых ячеек, который соответствует размеру диапазона ячеек, содержащих текстовые даты.

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

Выделите ячейку или диапазон ячеек, которые содержат серийные номера, а затем на вкладке Главная в группе буфер обмена нажмите кнопку Копировать.

Сочетание клавиш: Кроме того, можно нажать клавиши CTRL + C.

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

В диалоговом окне Специальная вставка в разделе Вставить выберите параметр Значения и нажмите кнопку ОК.

На вкладке Главная нажмите кнопку вызова всплывающего окна рядом с полем число.

В поле Категория выберите пункт Дата, после чего укажите необходимый формат даты в списке Тип.

Чтобы удалить серийные номера после того, как все даты будут успешно преобразованы, выделите ячейки, содержащие их, а затем нажмите клавишу DELETE.

Добавить комментарий

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