|
Возврат данных из формы | ☑ | ||
---|---|---|---|---|
0
Metalik
26.05.13
✎
18:37
|
Всем добрый воскресный день!
Помогите пожалуйста решить одну задачку: Заказчик попросил разместить кнопку добавления клиентов (Справочник.Клиенты) на форме, ну да ладно разместил, по клику открывается модально форма элемента справочника, клиент успешно добавляется. Но тут же возникает проблема, как получить ссылку на только что созданный объект справочника? Работая со своими формами выход был прост: создавалась кнопка "ОК" с текстом: Значение = Новый Структура("Данные", Данные); Закрыть(Значение); Проблема заключается в том что в форме элемента справочника уже предусмотрена кнопка "сохранить и закрыть". Как в данном случае, используя стандартные методы получить значение (в данном случае интересует ссылку на созданный объект) в главную форму? На всякий случай текст функции в которой я открываю форму: ФормаКлиента = ПолучитьФорму("Справочник.Клиенты.Форма.ФормаЭлемента"); Значение = ФормаКлиента.ОткрытьМодально(); |
|||
1
Ненавижу 1С
гуру
26.05.13
✎
18:40
|
Модальная форма может возвращать значение
|
|||
2
viktor_vv
26.05.13
✎
19:13
|
Есть еще событие у формы ОбработкаЗаписиНовогоОбъекта.
|
|||
3
Metalik
26.05.13
✎
19:14
|
Да, может. Как вот только передать его из формы объекта конфигурации, в данном случае ФормаЭлемента Справочника?
|
|||
4
viktor_vv
26.05.13
✎
19:16
|
(2)+ Примерно так
НовыйЗаказ = СоздатьНовыйЗаказ(); ФормаЗаказа = НовыйЗаказ.ПолучитьФорму(, ЭтаФорма); ФормаЗаказа.мОповещатьВладельцаОЗакрытии = Истина; ФормаЗаказа.Открыть(); ну и Процедура ОбработкаЗаписиНовогоОбъекта(Объект, Источник) // Вставить содержимое обработчика. Если ТипЗнч(Объект) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда |
|||
5
viktor_vv
26.05.13
✎
19:19
|
Ни в подчиннеой форме
Процедура ПриЗакрытии() Если мОповещатьВладельцаОЗакрытии Тогда Оповестить("ЗакрытаПодчиненнаяФормаДляРабочегоМестаМенеджераПоПродажам", ЭтотОбъект); КонецЕсли; |
|||
6
viktor_vv
26.05.13
✎
19:20
|
(5)* Ну и в подсчиненной
|
|||
7
Metalik
26.05.13
✎
19:23
|
Что за функция СоздатьНовыйЗаказ()?
Она создает элемент справочника? |
|||
8
viktor_vv
26.05.13
✎
19:30
|
(7) Ну в моем случае да, в твоем создавай новый элемент справочника.
Можешь так. НовыйЭл = Справочники.Контагенты.СоздатьЭлемент(); ФормаНового = НовыйЭл.ПолучитьФорму(, ЭтаФорма); ФормаНового.мОповещатьВладельцаОЗакрытии = Истина; ФормаНового.Открыть(); |
|||
9
viktor_vv
26.05.13
✎
19:30
|
мОповещатьВладельцаОЗакрытии - экспортная переменная модуля формы.
|
|||
10
viktor_vv
26.05.13
✎
19:31
|
Хотя с модальной формой там вроде попроще все можно сделать.
|
|||
11
Metalik
26.05.13
✎
19:39
|
да, с модальной проще, но проблема в том что пользователь может просто закрыть окно "передумать" и в результате в базе будут копиться "пустые" клиентские записи. За пример спасибо, надо будет поюзать с немодальной формой.
|
|||
12
viktor_vv
26.05.13
✎
20:06
|
(11) Так тут как раз ты открываешь форму нового, но не записанного элемента еще элемента, и если откажется от записи, то тебе и вернется сюда в Объект
Процедура ОбработкаЗаписиНовогоОбъекта(Объект, Источник) // Вставить содержимое обработчика. Если ТипЗнч(Объект) = Тип("ДокументОбъект.ЗаказПокупателя") Тогда или неопределено (не уверен), или объект, у которого можно проверить существование Ссылки. |
|||
13
viktor_vv
26.05.13
✎
20:09
|
(12)+ Кстати, проверил, это событие в родительской форме вообще возникнет только если дочернюю (новый элемент справочника) запишут.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |