К статьям

Преобразование значений

3 мин


Доступные преобразования

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

Рассмотрим на примерах различные операции между типами и опишем доступные преобразования:

Тип первого операнда


Примеры

Доступные преобразования
Строка

"абв" + 2 = "абв2"
"2" + 2 = "22"
"2" - 2 = 0
"2" / 2 = 1 
"абв" + '30300101' = "абв01.01.3030 0:00:00"
"абв" + Истина = "абвДа"
"абв" + Ложь = "абвНет"
"абв" + Null = "абв"
"абв" + Неопределено = "абв"
"абв" + Тип("Число") = "абвЧисло"

Строка + Любой примитивный тип = Строка
Строка (содержащая число) -/* Число = Число 

Число

2 + Истина = 3
2 * Ложь = 0
2 + "2"= 4

Число +-*/ Булево = Число
(где Истина - 1, Ложь - 0)
Число + Строка (содержащая число) = Число
Дата '30300101' + 2 = 

'30300101000002'
'30300101' - 2 = '30291231235958'
'30300101 0:00:02' - '30300101 0:00:00' = 2
'30300101' + Истина = 
'30300101000001'

Дата +- Число = Дата, 
(Число - количество секунд)

Дата - Дата = Число
(Число - количество секунд)

Дата +- Булево = Дата
(в секундах Истина - 1 , Ложь - 0)

Булево

Истина + 2 = 3
Истина / 2 = 0,5
Истина + Истина = 2

Булево +-*/ Число = Число
Булево +-*/ Булево = Число
(где Истина - 1 , Ложь - 0)

Преобразовать тип можно с помощью специальных функций.

Функции преобразования

1. Булево(<Значение>)

  • <Значение> (обязательное) - Число, Булево, Строка - исходное значение

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

Сообщить(Булево(Ложь)); // Ложь

Сообщить(Булево("Ложь")); // Ложь

Сообщить(Булево("Истина")); // Истина

Сообщить(Булево(1)); // Истина

Сообщить(Булево(-1)); // Истина

Сообщить(Булево("абв")); // Нельзя преобразовать 

2. Дата(<Значение>)

  • <Значение> (обязательное) - Строка - исходное значение

Преобразует значение в тип дата. Строка должна быть в формате  "ГГГГММДДччммсс", например: 

Сообщить(Дата("30300101000001")); // 01.01.3030 0:00:01

Сообщить(Дата("30300101")); // 01.01.3030 0:00:00

Другой вариант по составляющим:

Дата(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>)

  • <Год>, <Месяц>, <День>, <Час> (обязательное) - Числа
  • <Минута>, <Секунда> (необязательное) - Числа

Сообщить(Дата(3030, 01, 01, 00, 00, 01)); //  01.01.3030 0:00:01

Сообщить(Дата(3030, 01, 01)); // 01.01.3030 0:00:00

3. Строка(<Значение>)

Преобразует <Значение> к ее строковому представлению. Представления зависят от региональных настроек (в конфигураторе Сервис -> Региональные установки информационной базы).

Сообщить(Строка(23123456)); // 23 123 456  

Представление числел обычно содержит пробелы. Чтобы преобразовать без пробелов нужно использовать Формат(<Число>,"ЧГ=")

Сообщить(Формат(23123456,"ЧГ=")); // 23123456

Сообщить(Строка(Ложь)); // Нет

Сообщить(Строка(+ "абв")); // Нельзя преобразовать

Сначала значение 1 + "абв" пытается преобразоваться к типу число, что нельзя выполнить. В таком случае можно просто использовать "" + 1 + "абв"

Сообщить("" + 1 + "абв"); // 1абв
Сообщить(Строка('30300101')); // 01.01.3030 0:00:00

4. Число(<Значение>)

  • <Значение> - Строка, Булево - исходное значение

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

Сообщить(Число(Истина)); // 1

Сообщить(Число(Ложь)); // 0

Сообщить(Число("23123456")); // 23123456

Сообщить(Число("23.123")); // 23.123

Сообщить(Число("23,123")); // 23.123

Сообщить(Число("0000002")); // 2

Задачи на эту тему:

Рейтинг 0

Комментарии