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