# Встроенный язык # Типы данных и операторы **Переменные** Динамическая типизация. ``` а = -1; а = "Один"; Сообщить(а); //"Один" ``` ТипЗнч(элмас) - вывести тип переменной. Можно явно определить имя переменной, ключевое слово Экспорт позволяет обращаться к переменной через контекст модуля. Без экспорта только для эстетики кода. ``` Перем <Имя переменной 1> [Экспорт] ``` **Типы данных и преобразования типов** Примитивные типы данных
Тип | Описание |
Null | Исключительно для определения отсутствующего значения при работе с базой данных. |
Неопределено (Undefined) | Пустое значение, не принадлежащее ни к одному другому типу. ``` а = Неопределено; б = ?(а = Неопределено, 0, 1);//б = 0 ``` Прямое преобразование в булево: нельзя При сравнении любой тип не равен Неопределено ``` а = 0; б = ?(а = Неопределено, 0, 1);//б = 1 ``` |
Число | Определены основные арифметические операции. Максимальная разрядность 38 знаков. Разделитель точка. 32 знака. Прямое преобразование в булево: любое ненулевое Истина, 0 Ложь Преобразование в строку: Строка() |
Строка | Формат Unicode произвольной длины. В двойных кавычках. Многостроковый режим через | Прямое преобразование в булево: нельзя ``` а = ""; б = ?(а, 0, 1); //вызовет ошибку ``` Преобразование в число: ``` Ч1 = Число(СтрокаЧ1);//вызовет исключение при невозможности ``` Преобразование в дату: ``` Дата("20211231123456"); //YYYYMMDDHHMMSS Дата("2021", "12", "24", "12", "34", "56"); ``` |
Дата | Строка цифр, заключенная в одинарные кавычки вида: 'ГГГГММДДччммсс' Прямое преобразование в булево: нельзя Контроль заполненности: Перем.ЗначениеЗаполнено() Пустая дата - Дата(1,1,1) |
Булево | Значения данного типа имеют два значения Истина и Ложь |
Тип | Используются для идентификации типов значений. Это необходимо для определения и сравнения типов. |
Тип | Описание |
Массив | Аналог списка. Конструктор:
```
м1 = Новый Массив; //массив нулевой длины
м2 = Новый Массив(<ФиксированныйМассив>); //создание массива из фиксированного массива
м3 = Новый Массив(10, 3); //мас. из 10 эл-тов, каждый из которых - мас. из 3 эл-тов
```
Методы:
ВГраница - индекс верхней границы
Вставить(Индекс, Значение) - Добавляет Значение в указанный индекс со смещением. Если указать больше границы, то будут созданы несуществующие значения с типом Неопределено и последним - Значение.
Добавить - Добавляет элемент в конец массива.
Количество
Найти - Если найден - индекс, иначе неопределено.
Очистить - Удаляет все значения из массива.
Удалить - удаляет указанный индекс |
Структура | Аналог словаря. Ключи только строковые. Конструктор: ``` ст1 = Новый Структура; //пустая ст1 = Новый Структура("к1, к2", 1, 2) //структура с ключами к1, к2 и знач. 1 и 2 ``` Доступ к элементу: ``` а["к1"]; а.к1; ``` Перебор значений: ``` а = Новый Структура("к1, к2", 1, 2); Для каждого элмас из а Цикл Сообщить(элмас.Ключ + " " + элмас.Значение); КонецЦикла; ``` Вставить(ключ, значение) Количество() Очистить() - удаляет все элементы Свойство(Ключ, \[НайденноеЗначение\]) - безопасный поиск по ключу Удалить(Ключ) |
Соответствие | Как структура, только ключ может быть любого типа. |
Список значений | Как массив + строковое описание (Представление), Пометка и Картинка |
Таблица значений | Двумерная таблица. ``` тз = Новый ТаблицаЗначений;//Создание таблицы тз.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); //Имя — идентификатор колонки //Заголовок — представление колонки в диалогах //ТипЗначения — тип, может быть произвольного типа; //Ширина — ширина колонки в диалогах; найдКолонка = тз.Колонки.Найти("Наименование");//поиск колонки Если найдКолонка = Неопределено Тогда Сообщить("Колонка не найдена!"); КонецЕсли; //перебор колонок Для каждого Колонка Из тз.Колонки Цикл Сообщить(Колонка.Имя); КонецЦикла; Вставить() Вставляет новую колонку в указанную позицию коллекции Добавить() Добавляет новую колонку в конец коллекции Количество() Возвращает количество колонок в коллекции Найти() Ищет колонку в коллекции по имени Очистить() Удаляет все колонки из коллекции Сдвинуть() Сдвигает колонку влево или вправо Удалить() Удаляет колонку из коллекции ``` ``` СтрокаТЧ = тз.Добавить(); СтрокаТЧ.Наименование = "Стул деревянный"; тз = СтрокаТЧ.Владелец(); тз.Удалить(тз.Индекс(СтрокаТЧ)); Для Каждого СтрокаТЧ Из тз Цикл ИндСтроки = тз.Индекс(СтрокаТЧ); КонецЦикла; //поиск первой строки НайдСтрока = тз.Найти(Номенклатура, "Номенклатура"); //поиск набора строк ПараметрыПоиска = Новый Структура("Номенклатура", Номенклатура); мНайдСтроки = тз.НайтиСтроки(ПараметрыПоиска); ``` ``` Вставить() Вставляет строку на указанное место ВыбратьСтроку() Позволяет интерактивно выбрать строку в диалоговом окне ВыгрузитьКолонку() Выгружает значения ячеек указанной колонки в массив значений Добавить() Добавлет новую строку в таблицу значений ЗагрузитьКолонку() Загружает значения в ячейки указанной колонки из массива ЗаполнитьЗначения() Заполняет ячейки указанных колонок определенным значением Индекс() Возвращает индекс строки таблицы значений Итог() Возвращает просуммированный итог по колонке таблицы значений Количество() Возвращает количество строк в таблице значений Найти() Выполняет поиск строки по значению НайтиСтроки() Выполняет поиск строк по указанным параметрам Очистить() Очищает строки таблицы значений Получить() Возвращает строку по ее индексу Свернуть() Выполняет сжатие строк и колонок таблицы значений Сдвинуть() Сдвигает строку вверх или вниз по таблице Скопировать() Создает новую таблицу значений копированием текущей СкопироватьКолонки() Создает новую пустую таблицу значений путем копирования колонок текущей таблицы Сортировать() Выполняет сортировку строк таблицы значений по указанным колонкам Удалить() Удаляет строку таблицы значений ``` |
Фиксированный (массив, соответствие, структура) | Аналогичный объект только для чтения. |
Хранилище значений | Недоступен напрямую в управляемой форме. Нужно городить временное хранилище. |
Группа | Размещение модулей | Базовое назначение | Подробное описание |
Общие | Конфигурация - Общие - Общие модули | Хранение общего кода, доступного из остальных модулей. Настроить обработку событий нельзя. | В этой статье. |
Модули конфигурации | Конфигурация - Свойства. Модуль приложения Модуль внешнего соединения Модуль сеанса | Обработка общих событий платформы. Размещение подпрограмм обработки событий платформы. Например запуска приложения или внешнего вызова. | [Управление отображением и событиями платформы](http://bobrobotirk.ru/books/1s/page/upravlenie-otobrazeniem-i-sobytiiami-platformy "Управление отображением и событиями платформы") |
Модули классов | Конкретный класс. Модуль формы Модуль объекта Модуль менеджера | События, связанные с конкретным классом. Например нажатие кнопки "Показать группы" в окне списка справочника Номенклатура. | [Объекты конфигурации](http://bobrobotirk.ru/books/1s/chapter/obieekty-konfiguracii "Объекты конфигурации") |