Имя: Пароль:
1C
1С v8
ОткрытьФормуМодально не возвращает значения
0 lanc2233
 
09.03.13
18:28
СтЮрЛицо = Новый Структура;
СтЮрЛицо.Вставить("Контрагент",Объект.Ссылка);
Ф = ОткрытьФормуМодально("Справочник.ЮрлицаКонтрагентов.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",СтЮрЛицо));
Объект.Юрлицо = Ф.Объект.Ссылка;

В таком случае переменная Ф = Неопределено. Почему?

Если открывать немодально то переменная заполнена, но код идет дальше не дожидаясь пока пользователь что-то сделает с формой.

Суть задачи : по кнопке открывать форму нового элемента справочника, с заполненным значением реквизита. Пользователь может отказаться записывать элемент. (тоесть вариант сначала записать а потом открыть форму не подходит).  Как можно реализовать?
1 kiruha
 
09.03.13
18:44
П = Новый Структура("Ключ", Поставщик);
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П);
Форма.Открыть();
2 kiruha
 
09.03.13
18:45
Форма.ОткрытьМодально()
3 lanc2233
 
09.03.13
18:50
(1) Ключа еще нет. Создается новый элемент.
4 Пеппи
 
09.03.13
18:55
(3) А причем здесь открыть модально то. обычная форма создается с заполненными реквизитами. Пользователь может записать или не записывать и закрыть форму.
5 lanc2233
 
09.03.13
18:59
(4) Объект.Юрлицо = Ф.Объект.Ссылка;

мне нужно получить ссылку на созданный элемент. Если немодально то код идет дальше не дожидаясь пока пользователь что-то сделает с формой. В итоге получаю пустую ссылку.
6 Пеппи
 
09.03.13
19:05
(5) зачем тебе ссылка на элемент который даже еще не записан в базу?
7 lanc2233
 
09.03.13
19:09
(6) в том-то и дело, что он мне нужен после того как записан в базу.

Тоесть для пользователя открывается форма создания нового элемента. Он заполняет реквизиты и записывает, мне нужна ссылка на то что он создал. Но он может отказаться его создавать, тогда мне пустую ссылку.
8 t731
 
09.03.13
23:37
Может в последней строчке вместо Ф.Объект.Ссылка написать просто Ф

СтЮрЛицо = Новый Структура;
СтЮрЛицо.Вставить("Контрагент",Объект.Ссылка);
Ф = ОткрытьФормуМодально("Справочник.ЮрлицаКонтрагентов.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",СтЮрЛицо));
Объект.Юрлицо = Ф;

Ведь "Объект" - это реквизит формы, а тебе вернется уже результат выбора.

Только сначала нужно проверить на ЗначениеЗаполнено(Ф)
9 Конфигуратор1с
 
09.03.13
23:48
А почему бы не сделать так
Форма = ПолучитьФорму("Справочник.ЮрлицаКонтрагентов.ФормаОбъекта");
Ф= Форма.ОткрытьМодально();
Если Форма.Объект.ССылка.пустая() тогда
Сообщить("Юзверятко, ну ты че?");
КонецЕсли;
10 sanja26
 
10.03.13
00:12
Ф = ОткрытьФормуМодально("Справочник.ЮрлицаКонтрагентов.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",СтЮрЛицо), ЭтаФорма);
11 sanja26
 
10.03.13
00:14
(10) Ф это и будет ФизЛицо.ссылка