Преобразование значений
3 мин
Доступные преобразования
Арифметические операции можно выполнять не только над значениями одних примитивных типов, но и между разными: число, строка, булево, дата. К дате прибавить число, к числу - булево и т. п. В этих операциях обычно тип результата определяется по первому операнду.
Рассмотрим на примерах различные операции между типами и опишем доступные преобразования:
Тип первого операнда |
|
Доступные преобразования |
---|---|---|
Строка |
"абв" + 2 = "абв2" |
Строка + Любой примитивный тип = Строка |
Число |
2 + Истина = 3 |
Число +-*/ Булево = Число (где Истина - 1, Ложь - 0) Число + Строка (содержащая число) = Число |
Дата | '30300101' + 2 =
'30300101000002' |
Дата +- Число = Дата, Дата - Дата = Число |
Булево |
Истина + 2 = 3 |
Булево +-*/ Число = Число |
Преобразовать тип можно с помощью специальных функций.
Функции преобразования
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 + "абв"); // 1абв
Сообщить(Строка('30300101')); // 01.01.3030 0:00:00
4. Число(<Значение>)
- <Значение> - Строка, Булево - исходное значение
Преобразует значение в число
Сообщить(Число(Истина)); // 1
Сообщить(Число(Ложь)); // 0
Сообщить(Число("23123456")); // 23123456
Сообщить(Число("23.123")); // 23.123
Сообщить(Число("23,123")); // 23.123
Сообщить(Число("0000002")); // 2