Возврат параметра из обработки (платформа 1С:Предприятие 7.7)

Возврат параметра из обработки (платформа 1С:Предприятие 7.7)

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

Открытие обработки из программного модуля:

ПравильныйПароль = "12345";
ОткрытьФормуМодально("Обработка.Авторизация",ПравильныйПароль);
Если (ПравильныйПароль=0) Тогда
     Сообщить("Не угадали");
     Возврат;
КонецЕсли;

Модуль вызываемой обработки:

// Обработка Авторизация
// Пароль - поле ввода на форме
// На форме имеются две кнопки, их обработчики - процедуры Ок() и Отмена()

Перем ПравильныйПароль;

Процедура ПриОткрытии()
    ПравильныйПароль=Форма.Параметр;
    Форма.Параметр=0;
КонецПроцедуры

Процедура Ок()
    Если (СокрЛП(Пароль)=ПравильныйПароль) Тогда
        Форма.Параметр=1;
        Форма.Закрыть(0);
    Иначе
        Пароль="";
        Предупреждение("Неверный пароль !");
        Активизировать("Пароль",1);
    КонецЕсли;
КонецПроцедуры

Процедура Отмена()
    Форма.Закрыть(0);
КонецПроцедуры

Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания - поддержите автора.

Комментарии:

  1. Георгий:

    Огромное спасибо! Использовал в таких случаях глобальные переменные и надеялся что два пользователя не будут одновременно открывать одну и туже обработку! Был ече вариант сохранять значения для пользователя, но как же это громоздко и долго. Зря они не написали об этом в документации!

  2. Алексей:

    Спасибо очень помогло. Не знаю как в восьмерке, а для семерки описание по языку программирования писала секретарша.

Оставить комментарий на Алексей