Имя: Пароль:
1C
 
8.2 Как вернуть выбранное значение
0 Aswed
 
02.06.10
11:38
Из одного справочника открываю форму выбора другого. Открываю программно, т.к. надо устанавливать в открываемой форме отбор.
Всё нормально открывается и я могу в открытой форме выбрать нужное мне значение справочника.
Но как вернуть в форму из которой я открывал выбранное значение?
1 H A D G E H O G s
 
02.06.10
11:39
Владельцем формы поставь Элемент родительской формы, куда значение вернуть хочешь.
2 Aswed
 
02.06.10
11:43
(1) Так и пытался сделать, ругается на не соответствие типов.

   СтандартнаяОбработка = Ложь;
   ФормаВыбора = ПолучитьФорму("Справочник.ОпцииАвтомобилей.Форма.ФормаВыбора");
   ФормаВыбора.ВладелецФормы = Объект.Ссылка;
3 H A D G E H O G s
 
02.06.10
11:43
(2) Плохо
4 H A D G E H O G s
 
02.06.10
11:43
ВНИМАТЕЛЬНО прочитай, что я написал в (1)
5 Aswed
 
02.06.10
11:47
(4) Понял, спасибо, заработало.
6 Defender aka LINN
 
02.06.10
11:47
(0) "Открываю программно, т.к. надо устанавливать в открываемой форме отбор" - а параметры выбора - не айс?
7 Aswed
 
02.06.10
11:49
(6) По подробнее. Как реализовывается в 8.2?
Можешь дать примерчик?
8 Defender aka LINN
 
02.06.10
11:53
Aswed - не надо то, что во всех мануалах есть, в БЗ пихать :)
Что за отбор-то у тебя?
9 Aswed
 
02.06.10
11:54
(8) Ну я на тот случай что кому нить как и мне будет лень искать в мануалах и он полезет сразу в БЗ:)

А отбор вот:

   СтандартнаяОбработка = Ложь;
   ФормаВыбора = ПолучитьФорму("Справочник.ОпцииАвтомобилей.Форма.ФормаВыбора");
   ФормаВыбора.ВладелецФормы = Элементы.Стандартные;
   //устанавливаем отбор по текущей моделе, т.е. показываем только те опции что добавлены в модель
   ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
   ЭлементОтбора.ПравоеЗначение = СписокОпций;
   ЭлементОтбора.Использование = Истина;
   
   ФормаВыбора.Открыть();
10 Aswed
 
02.06.10
12:06
+ (9) в 8.1 это дело понятное дело решается просто установкой отбора в открываемой ФормеВыбора, но вот как это в 8.2 реализовать ума не приложу кроме как вариант в (9)
11 Defender aka LINN
 
02.06.10
12:08
(9) СписокОпций - это догадаться теперь надо, что это? А правильный код такой:

СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", СписокОпций));
ОткрытьФорму("Справочник.ОпцииАвтомобилей.ФормаВыбора", ПараметрыФормы, Элементы.Стандартные);
12 Aswed
 
02.06.10
12:09
(11) Ну СписокОпций понятное же дело, это тот список по которому устанавливается отбор.

Спасиб, ща попробую.
13 Aswed
 
02.06.10
12:11
(11) Ну в принципе теже грабли только в профиль, но за способ спасибо:)
14 Defender aka LINN
 
02.06.10
12:11
(12) Угу. Материлизуется из воздуха, я так и понял.
15 Defender aka LINN
 
02.06.10
12:12
(13) Хренасе "те же грабли".
16 Aswed
 
02.06.10
12:14
(14) ну откуда он берётся уже детали, не касающиеся текущего вопроса:)
(15) Те же грабли это в отношении того что мне так же надо возвращать выбранное значение как и раньше:)))
17 Aswed
 
02.06.10
12:14
+ 16 только в новом способе не вижу как мне в открываемую форму передать значение владельца формы.
18 Defender aka LINN
 
02.06.10
12:15
(16) Ничего там больше не надо.
"откуда он берётся уже детали, не касающиеся текущего вопроса" - конечно. Я ж потому и спрашивал, что вопроса это не касается...
19 Aswed
 
02.06.10
12:16
(18) Ух ты! Точно! Спасибо большое, буду теперь твоим способом пользоваться.
:)
20 Aswed
 
02.06.10
12:30
так вернёмся к САБЖУ
Я выбрал элемент, знаю в какого именно владельца мне передать выбранное значение.
Как теперь мне его передать обратно, в форму из которой открывал форму выбора?
21 Defender aka LINN
 
02.06.10
12:31
Пеляйт...
Может таки запустишь код?
22 Aswed
 
02.06.10
12:33
(21) Запустил. Обратно ничего не возвращается.
23 Defender aka LINN
 
02.06.10
12:35
(22) У меня возвращается. ЧЯДНТ?
24 Aswed
 
02.06.10
12:37
Вот вся процедура
&НаКлиенте
Процедура ПоУмолчаниюОпцияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   //устанавливаем отбор по текущей моделе, т.е. показываем только те опции что добавлены в модель
   СтандартнаяОбработка = Ложь;
   ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", СписокОпций));
   ОткрытьФорму("Справочник.ОпцииАвтомобилей.ФормаВыбора", ПараметрыФормы, Элементы.Стандартные);
КонецПроцедуры
25 Aswed
 
02.06.10
12:38
Возвращает только в том случае если не прерывать выполнение СтандартнойОбработки, что вполне логично.
26 Defender aka LINN
 
02.06.10
12:40
Элементы.Стандартные и Элемент - одно и то же?
27 Aswed
 
02.06.10
12:40
(23) Ты процедуру вешаешь на саму таблицу или на поле таблицы?
Может тут что не так делаю.
28 Defender aka LINN
 
02.06.10
12:41
(27) Вооооот.
ОткрытьФорму("Справочник.ОпцииАвтомобилей.ФормаВыбора", ПараметрыФормы, Элемент);
29 Aswed
 
02.06.10
12:42
(26) Не понял.
Попробовал так
&НаКлиенте
Процедура ПоУмолчаниюОпцияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   //устанавливаем отбор по текущей моделе, т.е. показываем только те опции что добавлены в модель
   СтандартнаяОбработка = Ложь;
   ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", СписокОпций));
   ОткрытьФорму("Справочник.ОпцииАвтомобилей.ФормаВыбора", ПараметрыФормы, Стандартные);
КонецПроцедуры

всё равно по не возвращает.
30 Aswed
 
02.06.10
12:42
(28) Иииииееееееессссссс!!!!
Точно!!!
31 Aswed
 
02.06.10
12:44
+30 Красавчик просто!!!
Помог решить проблему таким простым способом, без тебя бы я писал бы и писал, программно обрабатывая всё это!!!
32 Aswed
 
02.06.10
12:44
+ 31 жаль тут нет репутации, я бы тебе +100 добавил))))
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн