- •Лекция №8. Константы и переменные. Справочники. Свойства справочников.
- •Объекты и типы данных
- •Буквальные константы
- •Системные константы
- •Переменные числовые, символьные и даты
- •Переменные диалога (реквизиты формы)
- •Работа со справочниками
- •Контекст работы со справочниками
- •Контрольные вопросы
- •Литература
Системные константы
В языке есть 3 системные именованные константы, имеющие символьный тип и следующие имена:
РазделительСтраниц;
РазделительСтрок;
Символ Табуляции.
Они, как правило, употребляются при работе с текстом. Например:
// Константа РазделительСтрок вставит пустую строку вслед за текстом "Список констант"
текст.ДобавитьСтроку("Список констант" + разделительСтрок);
Переменные числовые, символьные и даты
Переменные разделяются на скалярные и массивы. В текущей реализации 1С можно использовать только одномерные массивы, называемые также векторами.
Переменные объявляются в программе:
• после их объявления, например
перем а, стр; // Объявляем скалярные переменные а и стр
перем мас[20]; // Объявляем вектор из 20 элементов
• после первого размещения имени переменной (числовой, строковой и даты) в правой части оператора присваивания, например
у = Лог(a); // Вводим переменную у, определяем ее тип и значение
при определении имен идентификаторов редактируемых элементов диалога (см. разд. 2.5 «Переменные диалога»);
при задании формальных параметров процедур, например в пользовательской функции
функция ВычислитьУ(х) // х - формальный параметр функции ВычислитьУ
х = 2.0 * х; // употребляется в функции как переменная
у = 2 * Лог(х); // Лог - встроенная функция
возврат у;
конецФункции // ВычислитьУ
Формальный параметр x используется как скалярная переменная. При объявлении переменной ее тип и значение не определяются. Такая переменная имеет пустое значение. Однако ее можно употреблять в выражениях.
Например:
Тип и значение переменной а не определены. Встроенная функция ПустоеЗначение(а) вернет 1, а результатом последующего выражения будет 0.
перем а; // Объявляем скалярную переменную а
Сообщить(ПустоеЗначение(а)); // Напечатает 1
Сообщить(а); // Напечатает пустую строку
б = 2 * а;
Сообщить(ПустоеЗначение(б)); // Напечатает 1. То есть б имеет пустое значение
Сообщить(б); // Напечатает 0, а не пустую строку,
// несмотря на то что б имеет пустое значение Сообщить(б + 3); // Напечатает 3
Сообщить(а + 3); // Напечатает пустую строку
Манипулирование переменными:
Переменная получает тип при ее определении, то есть когда она получает значение в результате выполнения оператора присваивания или если переменная является формальным параметром процедуры, при вызове этой процедуры, в котором определены соответствующие фактические параметры.
Например:
Переменные а и стр после выполнения присваивания будут иметь соответственно числовой и символьный тип.
перем а, стр; // Объявляем скалярные переменные а и стр
а = 1.22; // Теперь переменная а имеет числовой тип
стр = "Это строка"; // Теперь переменная стр имеет символьный тип
Например:
При вызове функции ВычислитьУ ее формальный параметр х будет определен как числовая переменная.
функция ВычислитьУ(х) // х - формальный параметр функции ВычислитьУ
х = 2.0 * х; // употребляется в функции как переменная
у = 2 * Лог(х); // Лог - встроенная функция
возврат у;
конецФункции // ВычислитьУ
процедура Выполнить()
б = ВычислитьУ(3.0); // При вызове функции ВычислитьУ определяется
Сообщить("б = " + б); // тип и значение ее формального параметра х
конецПроцедуры // Выполнить
Переменные, имена которых неизвестны в программном компоненте, нельзя использовать в качестве фактических параметров других программных компонентов.
Например:
процедура ОпределитьХ(х)
х = 2.0;
конецПроцедуры // ОпределитьХ
процедура Выполнить()
ОпределитьХ(х); // Ошибка! Этот вызов недопустим
Сообщить(х);
конецПроцедуры // Выполнить
Второй вариант процедуры Выполнить:
процедура Выполнить()
перем х; // Объявляем переменную х
ОпределитьХ(х); // Теперь этот вызов возможен
Сообщить(х); // Напечатает 2
конецПроцедуры // Выполнить
По ходу выполнения программы одна и та же переменная может менять свой тип.
Например:
перем а; // Объявляем скалярные переменные а
а = 1 . 2 2 ; // Теперь переменная а имеет числовой тип
Сообщить(а); // Напечатает 1.22
а = "Это строка"; // Теперь переменная а имеет символьный тип
Сообщить(а); // Напечатает «Это строка»
а = '24.12.01' // Теперь переменная а имеет тип Дата
Сообщить(а); // Напечатает 24.12.01
