Наверное, многие, кто занимался разработкой прикладных решений на платформе 1С:Предприятие 7.7, сталкивались со следующей задачей: в процессе выполнения кода нужно открыть обработку, передать в неё параметр и получить результат её работы, в виде возвращаемого параметра. С передачей параметра в обработку никаких проблем не возникает, как следует из документации:
ОткрытьФормуМодально("Обработка.МояОбработка",Параметр);
А вот с возвратом параметра у многих бывают затруднения. Одним из способов является возврат параметра через глобальную переменную, но в данной статье я опишу более изящный и неочевидный способ. В документации сказано что переданный в форму параметр будет доступен в открытой форме(обработки, отчета) через форма.параметр, но нигде не описан такой немаловажный факт, что через эту же самую конструкцию, т.е форма.параметр обработка может вернуть любой параметр в тот же модуль из которого она была вызвана! Для этого достаточно в модуле формы обработки перед ее закрытием выполнить
форма.параметр="ВозвращаемыйПараметр";
В качестве примера приведу простую обработку проверки пароля:
Вызов из программного модуля:
........
ПравильныйПароль = "12345";
ОткрытьФормуМодально("Обработка.Авторизация",ПравильныйПароль);
Если (ПравильныйПароль=0) Тогда
Сообщить("Не угадали");
Возврат;
КонецЕсли;
........
Обработка Авторизация:
// Пароль - поле ввода на форме
// На форме имеются две кнопки, их обработчики - процедуры Ок() и Отмена()
// Модуль формы обработки
Перем ПравильныйПароль;
Процедура ПриОткрытии()
ПравильныйПароль=Форма.Параметр;
Форма.Параметр=0;
КонецПроцедуры
Процедура Ок()
Если (СокрЛП(Пароль)=ПравильныйПароль) Тогда
Форма.Параметр=1;
Форма.Закрыть(0);
Иначе
Пароль="";
Предупреждение("Неверный пароль !");
Активизировать("Пароль",1);
КонецЕсли;
КонецПроцедуры
Процедура Отмена()
Форма.Закрыть(0);
КонецПроцедуры