Имя: Пароль:
1C
1С v8
управляемый интерфейс получение данных с формы
,
0 prishliemail
 
15.05.13
14:35
Здравствуйте!

Подскажите пожалуйста как решить следующую проблему.
У меня есть форма со списком документов (называется Заявки). На этой форме есть кнопка печать. Сейчас при нажатии на нее у меня открывается макет, в который подставляются данные из того документа, на которым находился курсор.
Для печати в документе Заявки у меня создана команда ПечатьЗаявки

УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Документ.Заявки", "МакетЗаявки", ПараметрКоманды, ПараметрыВыполненияКоманды, Неопределено);


А теперь мне нужно, чтобы при нажатии на кнопку Печать у меня открывалась обработка, на которой человек выбирает Сотрудника из Справочника. Дальше он нажимает на кнопку Подтвердить. После этого уже  должен открываться макет, в который подставляются помимо прежних данных еще и выбранный сотрудник.
Для этого из команды ПечатьЗаявки я открываю форму обработки:

Форма = ПолучитьФорму("Обработка.ВыборДолжностногоЛица.Форма.Форма");
Форма.Открыть();

А в обработке я смотрю кого именно выбрал пользователь:

ВыбраннаяДолжность = Объект.ДолжностноеЛицо;

Но как мне теперь вернуть ВыбраннаяДолжность в команду ПечатьЗаявки?

Заранее спасибо!
1 samozvanec
 
15.05.13
14:39
ВыбраннаяДолжность = Форма.ОткрытьМодально();
Если ВыбраннаяДолжность = Неопределено Тогда
   Возврат;
КонецЕсли;
2 samozvanec
 
15.05.13
14:40
а еще СП рассказывал, что для выбора значения обработка не обязательна, как и ее форма.
3 wald
 
15.05.13
14:43
ВвестиЗначение() не предлагать?
4 prishliemail
 
15.05.13
15:08
(1) Я не уверена, что правильно поняла.
Вот это:

Форма = ПолучитьФорму("Обработка.ВыборДолжностногоЛица.Форма.Форма");
ВыбраннаяДолжность = Форма.ОткрытьМодально();

я пишу в команде ПечатьЗаявки

А вот это:
Если ВыбраннаяДолжность = Неопределено Тогда
   Возврат;
КонецЕсли;

я так понимаю Возврат нужен чтобы вернуть то, что выбрал пользователь? Или нет? Если так, то это нужно писать именно в модуле формы обработки? И тогда я не понимаю зачем мы возвращаем то, что непределенно...
5 kosts
 
15.05.13
15:13
Типовая? Часто достаточно:

ДокОпроса.Ответственный    = ПараметрыСеанса.ТекущийПользователь;
6 prishliemail
 
15.05.13
15:16
(5) я так понимаю это нужно, чтобы подставить пользователя, под которым запущен сеанс. А мне нужно, чтобы пользователь сам мог выбрать любого из справочника
7 kosts
 
15.05.13
15:16
8 kosts
 
15.05.13
15:19
(7) Хотя там не совсем то(
9 Fish
 
15.05.13
15:20
(4) Возврат используется в функциях для возврата значений. А в процедурах возврат завершает выполнение процедуры и осуществляет возврат в точку программы, из которой было обращение к процедуре.
10 kosts
 
15.05.13
15:23
Вот надыбал:


Результат = ОткрытьФормуМодально("ОбщаяФорма.Вопрос", Параметры);
   Если ТипЗнч(Результат) = Тип("Структура") Тогда
       БольшеНеЗадаватьЭтотВопрос = Результат.БольшеНеЗадаватьЭтотВопрос;
       Возврат Результат.Значение;
   Иначе
       Возврат КодВозвратаДиалога.Отмена;
   КонецЕсли;
11 prishliemail
 
15.05.13
15:23
(8) да, это мне не очень подходит
(9) спасибо! теперь с возвратом стало понятно

но все равно у меня не работает. ВыбраннаяДолжность считывает то, что ввел пользователь. Но  значение обратно в команду не возвращается
12 kosts
 
15.05.13
15:25
В форме выбора пользователя/должности

РезультатВыбора = Новый Структура;
   РезультатВыбора.Вставить("БольшеНеЗадаватьЭтотВопрос", БольшеНеЗадаватьЭтотВопрос);
   РезультатВыбора.Вставить("Значение", КодВозвратаДиалогаПоЗначению(ВыбранноеЗначение));
   
   Закрыть(РезультатВыбора);
13 kosts
 
15.05.13
15:26
(10) (12) Как пример методики
14 prishliemail
 
15.05.13
15:41
(13) спасибо! по Вашему примеру все получилось