|
(УТ 10.3) как обратиться к реквизиту родителской формы | ☑ | ||
---|---|---|---|---|
0
MrZLO
27.06.14
✎
09:59
|
Здрасте!
В заказе покупателя открываю форму контрагента, как из этой формы (контрагент) при изменении реквизита обратиться к реквизиту родительской формы (заказ покупателя) |
|||
1
MrZLO
27.06.14
✎
10:01
|
мне надо в родительской форме реквизит сделать видимым
|
|||
2
MrZLO
27.06.14
✎
10:02
|
можно ли так в 1С реально ли такое?
|
|||
3
braynt
27.06.14
✎
10:03
|
у подчиненной формы есть свойство "владелец формы".
|
|||
4
MrZLO
27.06.14
✎
11:17
|
ФормаВладелец = ЭтаФорма.ВладелецФормы;
... и ФормаВладелец у меня неопределено |
|||
5
MrZLO
27.06.14
✎
11:21
|
Процедура ИспользоватьАдрес123ЗаказаПокупателяПриИзменении(Элемент)
ФормаВладелец = ЭтаФорма.ВладелецФормы; ФормаВладелец.ЭлементыФормы.Адрес123.Видимость = Истина; КонецПроцедуры чета не работает |
|||
6
Segate
27.06.14
✎
11:31
|
Эрм... а где ты в (5) с реквизитами работаешь?
И зачем тебе менять видимость элементов у неактивной формы? |
|||
7
Segate
27.06.14
✎
11:35
|
+(6)если у тебя форма модально открыта, пользуйся обработкай выбора
|
|||
8
braynt
27.06.14
✎
12:13
|
когда ты открываешь форму контрагента - ты можешь заполнить владельца формы
|
|||
9
MrZLO
27.06.14
✎
12:16
|
ок... решил вставить действие в послезаписи...
Т.е. в событии после записи нужно получить родительскую форму, и если она - основная форма заказа покупателя, то элемент родительской формы Адрес123 должен стать видимым |
|||
10
Segate
27.06.14
✎
12:20
|
Объясни что ты делаешь? и зачем? Почему нельзя использовать обработку выбора в этом случае? когда ты открываешь форму, ты владельца передаешь? модально открываешь?
|
|||
11
MrZLO
27.06.14
✎
12:22
|
У меня в заказе покупателя есть реквизит адрес для уведомлений. Если у контрагента есть галка "использовать адрес из заказа", то это поле в заказе покупателя видно иначе оно невидимое.
Я хочу так, при выборе контрагента в документе заказ покупателя открывается общая форма контрагента (модально скорее всего), надо чтобы в ней когда ставим чекбокс "использовать адрес из заказа", нажимаем ОК (данные записываются), на родительской форме заказа покупателя поле ввода адреса стало видимым |
|||
12
Segate
27.06.14
✎
12:35
|
При записи
Если ЭтаФорма.МодальныйРежим тогда ОповеститьОВыборе(ИспользоватьАдресИзЗаказа); Конецесли; В заказе. ОбработкаВыбора(Источник, Значение) Если Источник = контрагент тогда ЭлементыФормы.АдресБлаБла.видимость=Значение; КонецеСли Конецпроцедуры не благодари |
|||
13
Михаил Козлов
27.06.14
✎
12:36
|
(5) Владельцем формы является не форма, а поле ввода.
|
|||
14
MrZLO
27.06.14
✎
12:36
|
спс, буду разбирацца
|
|||
15
Segate
27.06.14
✎
12:37
|
Даже наверное лучше не при записи, а после записи делать. Тогда у нас точно записан элемент, и откатить уже толком нельзя
|
|||
16
MrZLO
30.06.14
✎
13:03
|
в основную форму контрагента ПослеЗаписи(), ПриЗакрытии() добавляю строку
ОповеститьОВыборе(ИспользоватьАдресУведомленияЗаказаПокупателя); в отладчике с контрагентом форма закрывается и все! код в модуле, в основной форме заказа покупателя нигде не выполняется... |
|||
17
ам794123
30.06.14
✎
13:11
|
(16) Обработка оповещения в основной форме заказа есть?
|
|||
18
Segate
30.06.14
✎
13:17
|
(16) обработку выбора добавил, не?
|
|||
19
MrZLO
30.06.14
✎
13:17
|
(17) да,
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Сообщить("123"); КонецПроцедуры открываю заказ покупателя, выбираю контрагента, делаю ему изменения, нажимаю OK. точка останова срабатывает (которая на контрагенте) и все... 123 не выводится, точку останова в заказе покупателя не видит отладчик, как будто до неё уже не доходит... Процедура ПриЗакрытии() // Контактная информация СохранитьЗначение("РедактироватьКИВДиалоге", мКнопкаРедактироватьКИВДиалоге.Пометка); ОповеститьОВыборе(ИспользоватьАдресУведомленияЗаказаПокупателя); КонецПроцедуры |
|||
20
MrZLO
30.06.14
✎
13:19
|
(18) в обработке выбора у заказа покупателя тоже есть точка останова и до неё не доходит...
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) Экспорт Перем Команда; Если ТипЗнч(ЗначениеВыбора) = Тип("Структура") Тогда Если ЗначениеВыбора.Свойство("Команда", Команда) Тогда Если Команда = "ПодборВТабличнуюЧастьТовары" Тогда ОбработкаПодбора(Товары, ЗначениеВыбора); ИначеЕсли Команда = "ПодборВТабличнуюЧастьУслуги" Тогда ОбработкаПодбора(Услуги, ЗначениеВыбора); ИначеЕсли Команда = "ПодборВТабличнуюЧастьВозвратнаяТара" Тогда ОбработкаПодбора(ВозвратнаяТара, ЗначениеВыбора); ИначеЕсли Команда = "ИзменениеТабличнойЧастиТовары" Тогда // Рассчитывает плановую себестоимость во всех строке табличной части документа ОбработкаТабличныхЧастей.РассчитатьПлановуюСебестоимостьВСтрокахТабЧасти(ЭтотОбъект, мВалютаРегламентированногоУчета); ИначеЕсли Команда = "ЗаполнениеТабличнойЧастиИзТабличногоДокумента" Тогда ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента(ЗначениеВыбора); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // ОбработкаВыбора() |
|||
21
Рэйв
30.06.14
✎
13:20
|
(0)ЗначениеВыбора анализируй.
|
|||
22
Segate
30.06.14
✎
13:28
|
(20) он вообще в обработку выбора у тебя попадает?
|
|||
23
MrZLO
30.06.14
✎
13:38
|
(22) да в том то и дело, что не попадает...
сами можете добавить у себя 1) в основную форму контрагента ПриЗакрытии() ОповеститьОВыборе(ИспользоватьАдресУведомленияЗаказаПокупателя ); 2) в заказ покупателя в основную форму Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Сообщить("123"); КонецПроцедуры 3) в заказ покупателя основную форму ОбработкаВыбора(ЗначениеВыбора, Источник) Сообщить("123"); Ставлю 3 точки останова соотв в 1), 2) и 3) запускаю отладчик, открываю заказ покупателя, у поля контрагента кликаю лупу, меняю что-нить, нажимаю OK срабатывает точка останова 1) из ПриЗакрытии(). Все, выполнено, точки останова 2) и 3) проигнорированы... |
|||
24
Segate
30.06.14
✎
13:39
|
а открываешь форму как?
|
|||
25
Segate
30.06.14
✎
13:39
|
покажи код открытия контрагента из заказа
|
|||
26
Segate
30.06.14
✎
13:40
|
ясно, напиши в процедуре открытия: СтандартнаяОбработка = ложь;
и присвой открываемой форме владельца |
|||
27
MrZLO
30.06.14
✎
13:43
|
(24) да там штатно все...
http://disk.tom.ru/download/cxmf72l/0/c644b/123.JPG |
|||
28
Segate
30.06.14
✎
13:45
|
(27) не смотрел картинку, если нет кода, то форма элемента открывается без привязки к родительской форме.
|
|||
29
MrZLO
30.06.14
✎
14:03
|
или я туплю... или что-то не догоняю... не работает еще
Процедура КонтрагентОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Форма = Справочники.Контрагенты.ПолучитьФорму("ФормаЭлемента"); Форма.ВладелецФормы = ЭтотОбъект; Форма.ОткрытьМодально(); КонецПроцедуры |
|||
30
MrZLO
30.06.14
✎
14:05
|
кстати КонтрагентОбработкаВыбора вызывается если я другого контрагента выбираю, а если я открываю выбранного и правлю в нем что-то, то эта обработка игнорируется
|
|||
31
Segate
30.06.14
✎
14:18
|
(29) тупишь и не догоняешь ))) ты обрабатываешь выбор. а пытаешься тыкать кнопку открытия. это разные процедуры.
|
|||
32
РенеДекарт
01.07.14
✎
15:45
|
(29)>КонтрагентОбработкаВыбора
это когда получил форму выбора контрагента, выбрал его, и вот она - "обработка выбора". А когда открываешь карточку контрагента - это событие "Открытие" элемента. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |