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