Имя: Пароль:
1C
1С v8
(УТ 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)>КонтрагентОбработкаВыбора
это когда получил форму выбора контрагента, выбрал его, и вот она - "обработка выбора".
А когда открываешь карточку контрагента - это событие "Открытие" элемента.