Как скачать и установить учебную версию платформы 1С:Предприятие 8.3?

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

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

Про ошибку

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

Рассмотрим такой пример:

Для Шаг = 1 По 3 Цикл
   Сообщить(Шаг + "абв");
КонецЦикла;

Программист, который пишет этот код ожидает, что 1С выведет пользователю следующие значения:

1абв
2абв
3абв

Вместо этого возникает ошибка преобразования значения в число.

Всё дело в том, что платформа 1С определяет тип выражения по первому слагаемому. В нашем случае первым слагаемым идёт переменная Шаг, в которой хранится числовое значение. А значит и второе слагаемое будет преобразовано в число. А так как строка "абв" в число никак не преобразуется - мы и получаем ошибку времени выполнения.

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

Для Шаг = 1 По 3 Цикл
   Сообщить(Строка(Шаг) + "абв");
КонецЦикла;

Другой вариант - поставить первым слагаемым любое строковое значение, например, пустое:

Для Шаг = 1 По 3 Цикл
   Сообщить("" + Шаг + "абв");
КонецЦикла;

На заметку

Раз мы заговорили про неявные преобразования значений, рассмотрим сразу ещё и такой пример:

Сообщить("Результат:  " + 1 + 2 + 3);

Программист ожидает, что 1С выведет пользователю:

Результат: 6

Вместо этого он видит:

Результат: 123

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

В данном случае необходимо расставить скобки, чтобы 1С сначала посчитала результат в скобках (как сумму чисел), а уже затем преобразовала результат в строку, вот так:

Сообщить("Результат:  " + (1 + 2 + 3));
Как скачать и установить учебную версию платформы 1С:Предприятие 8.3?

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