Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л3-4 - Язык программирования 1С.DOC
Скачиваний:
17
Добавлен:
14.08.2019
Размер:
231.94 Кб
Скачать

3.4 Типы данных системы

В любом языке программирования существует свой набор типов данных. Их обычно классифицируют по таким признакам, как набор допустимых операций, вид сохраняемой информации (числовые типы, строковые и т.д.), диапазон возможных значений.

Во встроенном языке программирования системы 1С: Предприятие типы данных принято подразделять на базовые и агрегатные.

Уже из самого названия становится ясно, что базовые величины носят универсальный характер, могут применяться как в составе объектов агрегатных типов, так и самостоятельно. Работа с ними проще, чем с агрегатными типами.

Программные объекты, имеющие один из агрегатных типов, имеют значительно более сложную структуру и в то же самое время они более узко специализированы, т.е. предназначены для хранения информации об объектах конфигурации определенного типа. Это становится совершенно очевидно, если сравнить, к примеру, текстовую строку и справочник товаров. В строке может содержаться самый разный набор символов, над ним могут выполниться всего несколько операций. А вот в элементе справочника товаров может храниться только информация о товарах, все его реквизиты, скорее всего, имеют свои ограничения по длине и смысловую направленность, над элементом справочника может выполняться множество действий.

Базовые типы данных

К базовым типам данных в 1С относятся:

  • числовой. В данных числового типа разрешается хранить любое десятичное число. Над ним определены арифметические и логические операции, операция присваивания. Явных ограничений на диапазон возможных значений переменных числового типа не накладывается;

  • строковый. В переменных строкового типа имеется возможность представления произвольной последовательности символов (возможна и пустая строка), применимы операции объединения, логического сравнения, присваивания;

  • дата. В переменных типа «дата» можно сохранять календарные даты в формате ДД.ММ.ГГ или ДД.ММ.ГГГГ (здесь ДД – это две цифры для представления дня месяца, ММ – номер месяца, ГГ (ГГГГ) – последние цифры (или полный номер) года).

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

  1. ЧислоСтрока. Строковым преобразованием числа является его полное представление с учетом десятичной точки. Например, если у нас было число -34.5, то в результате такого преобразования мы получим строку "-34.5".

  2. ДатаСтрока. При преобразовании даты в строку сохраняются разделители в виде точек. Если имелась дата '23.12.02', то она перейдет в строку "23.12.02".

  3. СтрокаЧисло. При попытке (это не всегда возможно) преобразовать строку в число анализируются ее первые символы. Если они являются десятичными цифрами, то они и используются в качестве результата преобразования, иначе результирующее число равно 0. Например, строка "5 рублей" перейдет в число 5, а строка "пять рублей" – в 0.

  4. ДатаЧисло. В результате мы получаем численное представление даты.

  5. СтрокаДата. Ситуация несколько напоминает преобразование строки в число. Если в начале строки есть нечто, что могло бы быть строковым представлением даты в формате ДД.ММ.ГГ, то преобразование будет осуществлено. В противном случае мы получим нулевую дату '00.00.00'.

  6. ЧислоДата. При этом вновь делается попытка проинтерпретировать целую часть числа как численное представление даты Оно и будет результатом; если же число отрицательно, то получится нулевая дата ('00.00.00').

Важно отметить, что, помимо рассмотренного неявного преобразования типов в языке, есть возможность преобразовывать типы явно. Для этого служат специальные системные функции Число(<выражение>), Строка(<выражение>) и Дата(<выражение>). В результате их применения значения выражений, переданных в качестве параметров функций, преобразуются в заданные типы (см. листинг 3.1).

Листинг 3.1. Пример программного модуля

//Объявляем явно переменные модуля, т.е. начинается раздел

//описания переменных

Перем a;

Перем б;

Перем стр;

Перем дат;

//Основная программа, (процедур и функций нет)

а=5; б=6; //Присваиваем значения двум переменным.

//Они, соответственно, приобретают числовой тип

стр = "Это строка"; //присваиваем значение переменной стр

дат = '01.01.03'; //то же соответственно

а = стр; //теперь а = "Это строка" и имеет строковый тип

б = 1*дат; //после выполнения этой строки б = 2452641

б = "" + б; //теперь б = "2452641", обратите

//внимание на способ приведения типа

стр = стр + " " + дат; //стр = "Это строка 01.01.03"

б = 1*стр; //б = 0

дат = Дата(2452640); //дат = '31.12.02'

//Применим специальные функции

а = Число(дат); //а = 2452641

стр = Строка((123+453)/5); //стр = "115.2"

дат = Дата("23.45.ыва"); //дат = ' . . ', т.е.

//преобразование не получилось

//конец программы (модуля)

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

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

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

Перем Элементы[5]; //объявлен массив из пяти элементов

Массивом называется такой объект данных, который содержит несколько значений, доступ к которым производится по их индексу. Размером массива является число его элементов. Приведенный выше пример массива (вектора). Элементы имеет размер пять элементов.

Обращение к элементам массива, осуществляется посредством указания имени массива и порядкового номера элемента (т.е. индекса). Первый элемент имеет индекс 1. Тип каждого элемента массива определяется исходя из типа присвоенного ему значения. В одном массиве могут содержаться элементы разных типов.

Элементы[1] = 234; //первый элемент - число

Элементы[2] = "второй элемент имеет строковой тип";

Определенным (инициализированным) считается такой массив, в котором для всех элементов заданы значения. Инициализацию элементов массива удобно производить при помощи цикла:

Перем М[10];

Для i = 1 По 10 Цикл

M[i] = 1; //все элементы массива будут равны 1

КонецЦикла;"