Тип данных в 1С (9 из 100 дней)

Тип данных в 1С (9 из 100 дней)

Типы и значения

Начнем из далека - когда вы пишите на бумаге "31.12", вы не уточняете, что это, ведь человек всегда поймет смысл из контекста.

Тип - это характер данных, их смысл.

Зачем компьютеру знать тип?

Тип данных в 1С (9 из 100 дней)

1. Распределить память под хранение

2. Определить допустимые операции и их смысл

Например, во встроенном языке 1С операция "+" имеет разный смысл для строк и чисел.

Операция сложение "чисел" называется - Сложение.

Операция сложение "строк" называется - Конкатенация.

Тип данных в 1С (9 из 100 дней)

ВАЖНО:

Все переменные в программе имеют тип

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

Примитивные (базовые) типы - это типы данных, которые можно задать в коде с помощью литерала. Пример базовых типов: число, дата, булево.

Значения примитивных типов хранят в себе всю информацию об этом значении.

Тип данных в 1С (9 из 100 дней)

Давайте подробнее пройдемся по примитивным типам данных.

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

Тип "Число"

Разрабатывая для 1С, мы освобождены от необходимости думать о деталях хранения чисел

Говоря про тип "Число" при определении нужно указать:

Тип данных в 1С (9 из 100 дней)

- Длина (Общее кол-во разрядов)

- Точность (Сколько разрядов должно идти после запятой)

- Неотрицательное (Запрет ввода ввода значение меньше 0)

ВАЖНО

Учитывайте, что точность входит в состав длины и это стоит учитывать.

В программном коде числа описываются последовательностью цифр. Допускается разделитель дробной части - точка.

Наиболее часто используется четыре основных арифметических операции и остаток от деления - "%".

Тип данных в 1С (9 из 100 дней)

И помимо этого есть ряд функций работы с числами:

Тип данных в 1С (9 из 100 дней)

Подробное описание функций можно изучить в синтакс-помощнике.

Давайте посмотрим на практике, как работать с типом "Число":

1. Создадим новую форму в обработке и создадим команду "РаботаСЧислом"

Тип данных в 1С (9 из 100 дней)

2. Создадим две переменные (Важно, числа с дробной частью разделяется ".", а не "," - не забывайте про это)

3. Откроем синтаксис-помощник и подробнее посмотрим информацию про "Число" и возможности присущих ему функций

Тип данных в 1С (9 из 100 дней)

4. Подробнее остановимся на функциях "Окр" и "Цел"

- Функция "Окр" - округляет число в большую или меньшую сторону (Например, число "10.5" преобразуется в "11" или в "10", зависит от условия) + важно указывать разрядность и округление при использовании функции.

Тип данных в 1С (9 из 100 дней)

- Функция "Цел" - оставляет целую часть числа (Например, число "10.5" преобразуется в "10").

Тип данных в 1С (9 из 100 дней)

Тип "Строка"

Строка - это произвольная последовательность символов для вывода на экран или печать.

Тип данных в 1С (9 из 100 дней)

- В коде на встроенном языке строки ограничиваются двойными кавычками:

Тип данных в 1С (9 из 100 дней)

- Чтобы вывести в строку сами кавычки, нужно их удвоить:

Тип данных в 1С (9 из 100 дней)

- Чтобы написать многострочный текст, нужно использовать символ "|":

Тип данных в 1С (9 из 100 дней)

- Чтобы вывести пустую строку, нужно указать двойные кавычки подряд:

Тип данных в 1С (9 из 100 дней)

- Общая функция ЗначениеЗаполнено() считает заполненной строку со значащими символами:

Тип данных в 1С (9 из 100 дней)

Для строк определена единственная операция - конкатенация:

Тип данных в 1С (9 из 100 дней)

Для строковых значений, хранящихся в информационной базе, требуется определить максимальную длину

- Допустимая длина "Переменная" - кладет в память лишь прописанные значений (Например, напишем "123", в памяти будет хранится только "123")

- Допустимая длина "Фиксированная" - кладет в память всю указанную длину (Например, напишем "123", в памяти будет хранится "123 + 7 "пробелов"", то есть все десять значений)

Тип данных в 1С (9 из 100 дней)

- Пункт "Неограниченная" - позволяет писать неограниченное количество символ, однако пользоваться им стоит лишь тогда, когда мы, например, создаем комментарии, ведь бездумное использование может привести к нагрузке системы.

Как складывать строки правильно (Конкатенация) - разберем в будущем.

Тип "Дата"

- Дата представляет собой точку на оси времени

Переменные с типом "дата" хранят информацию о времени какого-либо события:

- Дата документа

- Дата выплаты зарплаты

- Срок окончания действия банковской карты

1С предоставляет хранение "Даты" в ИБ в трех вариантах:

Тип данных в 1С (9 из 100 дней)

- Дата

- Время

- Дата и время

Разделение номинальное, ведь в системе всегда хранится "Дата и время", отличие лишь в том, в каком виде это будет выводиться пользователю.

Во встроенном языке предусмотрены литералы типа "Дата": " '_' "

Строки в одинарных кавычках формата "ггггММддччммсс"

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

Тип данных в 1С (9 из 100 дней)

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

Тип данных в 1С (9 из 100 дней)

Тип "Булево"

- Логическое значение "Да" или "Нет" представляются типом "булево" и могут принимать всего два различных значение: "Истина" или "Ложь"

Тип данных в 1С (9 из 100 дней)

Булево широко распространены в программировании для хранения флажков, признаков, выключателей, а также применяются в условиях.

Тип данных в 1С (9 из 100 дней)

Для типа "булево" определены 3 логических операции: "И"; "ИЛИ"; "НЕ";

Тип данных в 1С (9 из 100 дней)

Результаты операций с булево

Тип данных в 1С (9 из 100 дней)

Пример операций с булево

Тип данных в 1С (9 из 100 дней)

Приведение типов

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

Например, строку "23" надо преобразовать в число - 23.

Для такого действия используется операция преобразования типа

Простейший вариант приведения типа выглядит так:

Тип данных в 1С (9 из 100 дней)

Такой подход может приводить к ошибкам, так как в преобразуемой переменной может быть нечто, что нельзя преобразовать.

Например:

Тип данных в 1С (9 из 100 дней)

Более корректный способ преобразования записывается несколько сложнее, но не приводит к ошибке:

Тип данных в 1С (9 из 100 дней)

Число прописью

Отдельная довольно частая задача - перевод числа в его текстовое представление. Например: "23" = "Двадцать три".

Тип данных в 1С (9 из 100 дней)

Функция Формат ()

Для вывода сообщений часто необходимо специфичное представление значения переменной.

Простой вариант программного кода:

Тип данных в 1С (9 из 100 дней)

Иногда надо выводить числа или тип булево в определенном виде. Для таких преобразований используется функция "Формат()".

Пример:

Тип данных в 1С (9 из 100 дней)

И на выходе получим:

Тип данных в 1С (9 из 100 дней)

В функцию "Формат ()" первым значением всегда передается преобразуемое значение: число, дата или булево.

Вторым значением передается форматная строка.

Не нужно бояться, что эти строки надо запоминать наизусть. В 1С есть специальный конструктор, который помогает сформировать необходимую строку.

Для вызова конструктора щелкните правой кнопкой мышки код и выберите соответствующий пункт:

Тип данных в 1С (9 из 100 дней)

В открывшемся редакторе можно настроить отображение типа. При этом можно ориентироваться на примеры представления:

Тип данных в 1С (9 из 100 дней)

ВАЖНО

Результатом функции "Формат()" всегда является строка.

- Использовать её результат следует для вывода сообщений, но не для хранения данных в базе или дальнейших вычислений

Проверка типа во время выполнения программного кода

Иногда требуется во время выполнения программы узнать, какого типа значение несет та или иная переменная

Для этого используются 2 специальные функции:

Тип данных в 1С (9 из 100 дней)

Они позволяют проверить тип того или иного значения и принять решение о способе обработки значения

Тип ()

Во встроенном языке есть специальный тип "тип()", описывающий, собственно тип

Тип данных в 1С (9 из 100 дней)

Функции "Тип()" можно передать строку, а она вернет соответствующий тип

ТипЗнч()

Функции "ТипЗнч()" можно передать значение, а она вернет его тип

Тип данных в 1С (9 из 100 дней)

Таким образом, комбинируя эти 2 функции, можно проверить, чему равен тип переменной:

Тип данных в 1С (9 из 100 дней)

Специальные и ссылочные типы значений

Уникальные идентификаторы

Особняком от примитивных типом стоят уникальные идентификаторы

Это длинные числа, традиционно представляемые в шестнадцатеричном виде:

Тип данных в 1С (9 из 100 дней)

Случайный и гарантированно уникальный идентификатор можно сгенерировать так:

Тип данных в 1С (9 из 100 дней)

Или создать из строки:

Тип данных в 1С (9 из 100 дней)

Главное их назначение - быть идентификатором ссылок

Хранилище значения

Тип данных в 1С (9 из 100 дней)

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

Посмотрим на практике:

1. Создадим новую обработку, а также создадим новый реквизит "Сотрудник" с типом "СправочникСсылка.Сотрудники", а также новую команду "ПолучитьТабельныйНомер".

2. В обработчике пропишем следующий код, который позволит нам вытащить из всего значения сотрудника только его табельный номер

Тип данных в 1С (9 из 100 дней)

3. Теперь создадим новый реквизит "НовыйТабельныйНомер" и команду "УстановитьНовыйТабельныйНомер"

Тип данных в 1С (9 из 100 дней)

4. В обработчике пропишем следующий код (Важно учитывать, что мы не можем на прямую менять ссылку, поэтому используем функции "ПолучитьОбъект" и "ЗаписатьОбъект")

5. Запустим конфигурацию и изменим табельный номер (Изменения мы не увидим в обработке), зайдем в справочник "Сотрудники" и увидим, что у нас все поменялось

Тип данных в 1С (9 из 100 дней)

Ссылка - это указание на объект, данные которого лежат где-то ещё

Пример: в документе ЗаказПокупателя может быть реквизит Контрагент типа СправочникСсылка.Контрагенты, указывающий на объект - элемент справочник Контрагенты

В самом заказе данных контрагента нет, есть только ссылка на него.

При изменении наименования или адреса контрагента, вы меняете их только в справочнике Контрагенты, но не трогаете сами заказы.

Чтобы обратиться в коде к данным контрагента, можно написать:

Тип данных в 1С (9 из 100 дней)

По ссылке можно только читать данные.

И даже чтения это не лучший способ - запросы эффективнее.

Чтобы изменить данные по ссылке, нужно получить сам объект:

Тип данных в 1С (9 из 100 дней)

Значение ссылочного реквизита по молчанию - "пустая ссылка"

Обращение к ней на сервере:

Тип данных в 1С (9 из 100 дней)

На клиенте:

Тип данных в 1С (9 из 100 дней)

Внутри каждой ссылки спрятан уникальный идентификатор, получить который можно так:

Тип данных в 1С (9 из 100 дней)

Идентификатор назначается платформой автоматически, но может быть измене до создания.

После создания изменить его нельзя

Составные типы

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

Например, деньги из кассы можно выплатить и сотрудники, и контрагенту

Тип данных в 1С (9 из 100 дней)

В таких случаях не делают два отдельных реквизита Сотрудник и Контрагенты.

А создают один реквизит составного типа, например Получатель, включающий типы:

Тип данных в 1С (9 из 100 дней)

Для установки такого типа данных при выборе типа надо установить специальный флажок "Составной тип данных".

Рад был поделиться с вами материалом, встретимся с вами уже завтра!

22