Skip to main content

Типы данных и операторы

Переменные

Динамическая типизация.

а = -1;
а = "Один";
Сообщить(а);
//"Один"

ТипЗнч(элмас) - вывести тип переменной.

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

Перем <Имя переменной 1> [Экспорт]

Типы данных и преобразования типов

Примитивные типы данных

Тип Описание
Null

Исключительно для определения отсутствующего значения при работе с базой данных.

Неопределено (Undefined)

Пустое значение, не принадлежащее ни к одному другому типу.

а = Неопределено;
б = ?(а = Неопределено, 0, 1);//б = 0

Прямое преобразование в булево: нельзя

При сравнении любой тип не равен Неопределено

а = 0;
б = ?(а = Неопределено, 0, 1);//б = 1
Число

Определены основные арифметические операции. Максимальная разрядность 38 знаков. Разделитель точка. 

Прямое преобразование в булево: любое ненулевое Истина, 0 Ложь

Преобразование в строку: Строка()

Строка

Формат Unicode произвольной длины.

Прямое преобразование в булево: нельзя

а = "";
б = ?(а, 0, 1); //вызовет ошибку

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

Ч1 = Число(СтрокаЧ1);//вызовет исключение при невозможности

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

Дата("20211231123456"); //YYYYMMDDHHMMSS
Дата("2021", "12", "24", "12", "34", "56");
Дата

Строка цифр, заключенная в одинарные кавычки вида: 'ГГГГММДДччммсс'

Прямое преобразование в булево: нельзя

Булево

Значения данного типа имеют два значения Истина и Ложь

Тип

Используются для идентификации типов значений. Это необходимо для определения и сравнения типов.

Универсальные коллекции значений

ТипОписание
Массив

Аналог списка. Конструктор: 

м1 = Новый Массив; //массив нулевой длины
м2 = Новый Массив(<ФиксированныйМассив>); //создание массива из фиксированного массива
м3 = Новый Массив(10, 3); //мас. из 10 эл-тов, каждый из которых - мас. из 3 эл-тов

Методы:
ВГраница  - индекс верхней границы
Вставить(Индекс, Значение) - Добавляет Значение в указанный индекс со смещением. Если указать больше границы, то будут созданы несуществующие значения с типом Неопределено и последним - Значение.
Добавить - Добавляет элемент в конец массива. 

Количество
Найти - Если найден - индекс, иначе неопределено.
Очистить - Удаляет все значения из массива.
Удалить - удаляет указанный индекс
Структура

Аналог словаря. Ключи только строковые. Конструктор: 

ст1 = Новый Структура; //пустая
ст1 = Новый Структура("к1, к2", 1, 2) //структура с ключами к1, к2 и знач. 1 и 2

Доступ к элементу: 

а["к1"];
а.к1;

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

а = Новый Структура("к1, к2", 1, 2);
Для каждого элмас из а Цикл
    Сообщить(элмас.Ключ + " " + элмас.Значение);
КонецЦикла;

Вставить(ключ, значение)
Количество()
Очистить() - удаляет все элементы
Свойство(Ключ, [НайденноеЗначение]) - безопасный поиск по ключу
Удалить(Ключ)

 

 

СоответствиеКак структура, только ключ может быть любого типа.
Список значенийКак массив + строковое описание (Представление), Пометка и Картинка








Фиксированный (массив, соответствие, структура)Аналогичный объект только для чтения.

Объекты

Есть встроенные объекты конфигурации, работа с ними - обычный ООП. Создание своего объекта - болт. Возможно извращение через структуры для хранения данных, и соглашения об именовании функций. На форумах на тему ООП в 1С сразу срач "Теоретики идут на х*й, а мы бля ах*евшие проктозники (от слова проктика), нах*я ваши говнообъекты".

Никаких uses / внешних модулей. Использование процедур в разных проектах (или даже в разных модулях одной конфигурации) только копирование/вставка. Придется смириться.

Обращение к свойствам объекта через точку или <Объект>["имя свойства"]

Менеджер = Справочники["Менеджеры"];
Менеджер = Справочники.Менеджеры;

Обращение к методам - через точку.

Условные операторы

?(<Логическое выражение>, <Выражение 1>, <Выражение 2>)   

а = Истина;
б = ?(а = Ложь, 0, 1);//б = 1

Если <Логическое выражение> Тогда
// Операторы
[ИначеЕсли <Логическое выражение> Тогда]
// Операторы
[Иначе]
// Операторы
КонецЕсли;

Разное

Выполнить(<Строка>);
Выполнить("Сообщить(а)");

Исполняет строковое представление команды.