Преобразования значений примитивных типов данных в системе 1С Предприятие 8

Приветствую вас, уважаемые читатели блога SoftMaker.kz! В прошлый раз мы рассматривали вопрос о примитивных типах данных Булево и Дата во встроенном языке 1С:Предприятие 8. Сегодня мы поговорим о преобразовании значений примитивных типов данных, а также рассмотрим некоторые функции преобразования. Итак, поехали!


Встроенный язык 1С:Предприятие для начинающих: два метода преобразования значений примитивных типов данных

Сейчас мы рассмотрим два возможных метода преобразования значений примитивных типов данных. Первый метод это преобразование в операторах. Например:

D = А+B+С;

На этом примере видно, что у нас есть операторы присваивания и сложения. Переменные значения сначала складываются, а затем присваиваются. При сложении переменных преобразования типов данных выведется по значению первого типа данных. Если первый тип данных Строка, то система будет пытаться преобразовать все это выражение в строку. А если первый тип данных Число, то соответственно система попытается получить числовой тип данных. Но это не всегда удаётся. Давайте рассмотрим, какие преобразования являются корректными, а какие некорректными. Например, нам нужно к строке прибавить число, в результате по типу первого аргумента получится строка.

ПримерСтроки = "пример" + 999; // пример999

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

ПримерСтроки = 999 + "пример" + ; // ошибка преобразования

Что в этом случае мы получим? Компилятор встроенного языка попытается преобразовать все выражение к типу Число. Но ничего не получиться будет выведено сообщение об ошибке. Тем не менее иногда число можно сложить со строкой:

ПримерСтроки = 999 + "333"; // 1332

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

Истина И 1; // Истина
Истина И 0; // Ложь

В этом случае числа единица и больше, то есть всё что больше нуля преобразуются в значение Истина. Ноль преобразуется в значение Ложь. Что касается даты, то мы уже говорили, что дату можно складывать с числом. Дату можно складывать даже с булевскими типами данных, например:

ТекущаяДата = Дата(2014, 10, 02, 15, 05, 50); // 02.10.2014 15:05:50

ТекущаяДата = ТекущаяДата + Ложь; // 02.10.2014 15:05:50

ТекущаяДата = ТекущаяДата + Истина; // 02.10.2014 15:05:51

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

Теперь рассмотрим второй метод преобразования значений примитивных типов данных. Это явное преобразование типов с использованием функций встроенного языка системы 1С:Предприятие 8. Это четыре функции Строка, Число, Булево и Дата. Рассмотрим данные функции во встроенной справке системы 1С:Предприятие 8, Синтакс-помощник -> Общее описание встроенного языка-> Функции преобразования значений. Смотрите изображение вначале статьи.

Например, для функции Число мы видим, что число может быть получено из строки или из булево. На вход соответственно можно передавать два этих значения. При этом булево конвертируется:

  • Значение Истина преобразуется в единицу, а значение Ложь преобразуется в ноль.
  • Для функции Строка, то к строке преобразуется любой тип данных. Здесь всё достаточно просто и прозрачно.
  • Для функции Дата можно привести строку к дате, если там будет содержатся значение в правильном формате, как описано здесь. Например, используем функцию Дата:
ТекущаяДата = Дата("2014-10-02"); // ошибка преобразования

К сожалению, компилятор встроенного языка выдаст ошибку, так как мы задали дату в неправильном формате. Давайте берем разделители «-» и напишем по-другому:

ТекущаяДата = Дата("20141002"); // 02.10.2014 00:00:00

Теперь мы получим дату 2 октября 2014 года. Итак, мы видим, что такое преобразование возможно из строки. Кроме того, чтобы получить дату существует функция глобального контекста Дата(), которая получает дату через установленные параметры:

год/месяц/день/час/минута/секунда.

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

ПОДПИСКА