Как передать переменную из одной функции в другую
Добрый день,уважаемые форумчане!
Столкнулся с проблемой,нужно переменную из одной функции передать в другую)Например есть кнопка создать пользователя и кнопка подключение,куда должны передаваться параметры пользователя. Пробовал делать через возврат,но это я так понял так не работает:)
КОгда нажимаю кнопку подключить,у меня переменная,которую хочу передать уже неопределена(
Знающие люди прошу совета.Заранее спасибо!
Столкнулся с проблемой,нужно переменную из одной функции передать в другую)Например есть кнопка создать пользователя и кнопка подключение,куда должны передаваться параметры пользователя. Пробовал делать через возврат,но это я так понял так не работает:)
КОгда нажимаю кнопку подключить,у меня переменная,которую хочу передать уже неопределена(
Знающие люди прошу совета.Заранее спасибо!
По теме из базы знаний
- Новичок новичку: как выгрузить/загрузить XML данные
- Если хочется функционального программирования с функциями высшего порядка и map, filter, reduce
- Каждому проекту – сценарные тесты! Быстрый старт в тестирование с помощью СППР
- Что такое ОСень? Или как лучшие практики из мира Java прижились в экосистеме OneScript
- Проблемы на ровном месте, или рассказ о том, как у нас каждое утро стабильно подвисал dev-сервер 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)Извините только освободился) Да я учусь программированию,написал простую обработку.Скриншот прилагаю. Есть кнопка создать пользователя. Есть кнопка подключение,но туда нужно в функцию как раз передать данные пользователя)Но они теряются,когда функция заканчивает свое выполнение,как то так.
Прикрепленные файлы:
(8) Понимания не добавилось :) Что делает кнопка "Подключение"? Ну да фиг с ним.
В общем случае, как уже советовали, можно передать пользователя через реквизит формы (он будет доступен и в серверных вызовах). Если достаточно доступа на клиенте - можно создать клиентскую переменную модуля формы. Но хорошем стилем будет явное использование их через параметры целевых процедур. Вроде такого:
В этом случае целевые функции остаются "чистыми" (получающими данные только из параметров) а в обработчиках команд сразу очевидно, что данные берутся из контекста формы.
В общем случае, как уже советовали, можно передать пользователя через реквизит формы (он будет доступен и в серверных вызовах). Если достаточно доступа на клиенте - можно создать клиентскую переменную модуля формы. Но хорошем стилем будет явное использование их через параметры целевых процедур. Вроде такого:
&НаКлиенте
Процедура СоздатьПользователя(Команда)
Пользователь = ПолучитьНовогоПользователя();
КонецПроцедуры
&НаКлиенте
Процедура Подключить(Команда)
ВыполнитьПодключение(Пользователь);
КонецПроцедуры
ПоказатьВ этом случае целевые функции остаются "чистыми" (получающими данные только из параметров) а в обработчиках команд сразу очевидно, что данные берутся из контекста формы.
&НаСервере
Процедура ПодключениеНаСервере()
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(ЭтотОбъект.ПрофильЭП);
Сообщить("Подключено");
Исключение
Сообщить("Не удалось подключиться к серверу");
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьПользователя(Команда)
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПользовательSMTP = "***";
Профиль.ПарольSMTP = "***";
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПортSMTP = 465;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Элементы.Пользователь.Заголовок = "Создан";
ЭтотОбъект.ПрофильЭП = Профиль;
КонецПроцедуры
ПоказатьМне нужно "Профиль" передать в другую функцию
(13) Ну так насколько я вижу, у вас уже есть реквизит формы "ПрофильЭП".
Вот во второй функции вы и обращайтесь к нему по этому имени. Он будет доступен уже в самой функции (если она расположена в этой же форме)
UPD. Упс, не посмотрел на значение "переменной"... И на разные контексты.
Вот во второй функции вы и обращайтесь к нему по этому имени. Он будет доступен уже в самой функции (если она расположена в этой же форме)
UPD. Упс, не посмотрел на значение "переменной"... И на разные контексты.
(13) Код в &НаСервере и &НаКлиенте - в общем случае может выполняться на физически разных компьютерах.
Логично было бы создавать профиль и подключаться к почте с одного компьютера :)
А тип у реквизита формы можно не указывать. В этом случае туда можно "положить" значение любого сериализуемого немутабельного типа. Даже коллекцию. Прокатит ли положить туда ИнтернетПочтовыйПрофиль - навскидку не соображу. По идее, должно прокатить. Если нет - тогда может очиститься после серверного вызова или исключение выдаст.
ЗЫ. Точно, тип "Произвольный" как выше написали.
Логично было бы создавать профиль и подключаться к почте с одного компьютера :)
А тип у реквизита формы можно не указывать. В этом случае туда можно "положить" значение любого сериализуемого немутабельного типа. Даже коллекцию. Прокатит ли положить туда ИнтернетПочтовыйПрофиль - навскидку не соображу. По идее, должно прокатить. Если нет - тогда может очиститься после серверного вызова или исключение выдаст.
ЗЫ. Точно, тип "Произвольный" как выше написали.
(23) На практике создание профиля и его использование обычно происходит в одном куске кода. Если делать это на клиенте, тогда профиль между разными клиентскими событиями можно сохранить на клиенте в клиентской переменной модуля формы
Но это абсолютно искусственная задача.
&НаКлиенте
Перем Профиль;
Но это абсолютно искусственная задача.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот