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