-
значения системных атрибутов, системные процедуры и функции, например,
функция ТекущееВремя( ) возвращает текущее системное время, а функция
ТекущаяДата( ) – текущую дату на компьютере;
-
значения заданных в конфигураторе констант, перечислений;
-
переменные и процедуры глобального программного модуля с ключевым
словом «Экспорт».
Локальный
контекст образуется тем конкретным местом конфигурации задачи, для
которого использован этот конкретный модуль.
Основные
виды программных модулей:
-
глобальный модуль;
-
модуль формы списка справочника;
-
модуль формы группы;
-
модуль формы элемента справочника;
-
модуль формы документа;
-
модуль документа;
-
модуль формы журнала документов;
-
модуль формы списка счетов;
-
модуль формы счёта;
-
модуль формы журнала операций;
-
модуль формы операции;
-
модуль формы журнала проводок;
-
модуль формы отчёта;
-
модуль формы обработки.
Текст
программного модуля состоит из операторов и комментариев. Комментарии
начинаются с символов «//».
Формат операторов в 1С: [~метка:] Оператор [(Параметры)] [ДобавочноеКлючевоеСлово];
Именем
переменной, процедуры или функции может быть любая последовательность
букв, цифр и знаков подчёркивания, начинающаяся с буквы или с подчёркивания.
Регистр букв не учитывается. Вновь создаваемые имена не должны совпадать
с уже существующими именами, доступными на момент выполнения модуля.
Типизация
переменных в языке не жёсткая, т. е. тип переменной определяется её
значением [21].
Чтобы
определить, является ли слово зарезервированным, нужно воспользоваться
поиском в синтакс-помощнике: установить курсор на проверяемое слово
и одновременно нажать клавиши СTRL+F1. Таким же способом можно узнать
синтаксис системной процедуры или функции: количество и назначение
параметров, значения по умолчанию.
Структура
программного модуля:
-
раздел определения переменных;
-
раздел процедур и функций;
-
раздел основной программы.
Пример
программного модуля:
// Определение переменных
Перем ЭтоПеременная;
Перем ЭтоВтораяПеременная;
// Процедуры и функции
Процедура ЭтоПроцедура()
// текст процедуры
КонецПроцедуры
Функция ЭтоФункция()
// текст функции
КонецФункции
// Раздел основной программы
ЭтоПременная = "123";
Процедуры
и функции программного модуля:
Процедура <Имя_проц>([Знач] <Парам1> [=<ДефЗнач>]
, …) [Экспорт]
// Объявления локальных переменных;
// Операторы;
[Возврат;]
// Операторы;
КонецПроцедуры
После
ключевого слова «КонецПроцедуры» точка с запятой не ставится.
Ключевое
слово «Знач» означает, что переменные передаются по значению.
Ключевое
слово «Экспорт» имеет смысл только в глобальном модуле и означает,
что процедура будет доступна в любом программном модуле. Функция,
в отличие от процедуры, должна возвращать значение.
Для
передачи локального контекста используется ключевое слово «Контекст»
в качестве параметра.
Пример.
Существует несколько различных документов, причём у всех есть реквизит
«Склад». В каждом программном модуле формы редактирования документа
нужна процедура выбора склада. В глобальном программном модуле напишем
процедуру:
Процедура УстСклада(Конт) Экспорт
// создаём объект типа "справочник"
Скл = СоздатьОбъект("Справочник.Склады");
// вызываем диалог для выбора элемента Справочника
Скл.Выбрать("Выберите Склад", "");
Если Скл.Выбран() = 1 Тогда
// если в диалоге элемент Справочника был выбран,
// то присваиваем его значение реквизиту Документа,
// который доступен по локальному контексту
Конт.Склад = Скл.ТекущийЭлемент();
КонецЕсли;
КонецПроцедуры
Здесь
переменная Конт является формальным параметром, которому при вызове
процедуры будет присвоен локальный контекст. В данном примере обращение
к реквизитам и методам локального контекста происходит «через точку»
после идентификатора Конт, например:
Конт.Склад = Скл.ТекущийЭлемент();
Теперь
в любом программном модуле конфигурации (в данном примере – в любом
модуле формы документа) для выбора склада можно вызвать процедуру,
передав ей свой локальный контекст в качестве параметра:
УстСклад(Контекст);
С примерами
программных модулей можно ознакомиться в типовой конфигурации «Бухгалтерский
учёт» [23].