Имя: Пароль:
1C
1С v8
Переопределение обработчика открытия реквизита табличной части документа
,
0 happysan
 
29.05.15
18:11
Всем привет!
Есть документ, в нем табличная часть, в табличной части реквизит1 ссылка на Спр1, у этого реквизита1 есть реквизит2 ссылка на Спр2.
Задача: Нужно, чтобы открывалась форма элемента Спр2 при попытке открыть реквизит1. БП 3.0.
На обычных формах было так:
Процедура Реквизит1Открытие(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    //текущие данные    
    ДанныеСтроки = ЭлементыФормы.ТабЧасть.ТекущиеДанные;
    Если ДанныеСтроки = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Если ЗначениеЗаполнено(ДанныеСтроки.Реквизит1) Тогда
        Если ЗначениеЗаполнено(ДанныеСтроки.Реквизит1.Реквизит2) Тогда
            ФормаЭлемента = ДанныеСтроки.Реквизит1.Реквизит2.ПолучитьФорму(,Элемент,);
            ФормаЭлемента.Открыть();
        КонецЕсли;
    КонецЕсли;
Ну, соответственно, этот код на управляемых формах не работает, так как нельзя получить на клиенте ссылку на объект через вторую точку, то есть реквизит2.
Какие будут идеи?
1 happysan
 
29.05.15
18:13
Поле объекта не обнаружено (Реквизит2)
2 Остап Сулейманович
 
29.05.15
18:28
(0) "нельзя получить на клиенте ссылку на объект через вторую точку".
Йес. Получай на сервере. Или есть предубеждения против такого подхода?
3 Casey1984
 
29.05.15
18:31
"через вторую точку", ахах, шито это. А через какую можно?
4 SUA
 
29.05.15
18:34
Стаж: 4 года 3 месяца
круто, чо...
ни знания УФ, ни знания хотя бы типовых модулей с их функциями получения реквизитов
5 happysan
 
29.05.15
19:24
(2)Приведиди пример
(3)Через первую отладчик выдаёт данные.
(4)Не лей с пустой порожни, по делу говори, иначе грошь цена таким репликам.
6 Остап Сулейманович
 
29.05.15
19:32
(5) Пример? На :

&НаСервере
Функция АЗаполненЛиРеквизит2(УКогоПроверить)
    Возврат НЕ УКогоПроверить.Реквизит2.Пустая();
КонецФункции

&НаКлиенте
...
Если АЗаполненЛиРеквизит2(ДанныеСтроки.Реквизит1) Тогда
   Форма = ...
   прочие понты
   ...
КонецЕсли;
...
7 happysan
 
29.05.15
19:35
(6)А вот тебе на:
слышал про невозможность передачи на сервер мутабельных значений? Этот код нерабочий! Проверял ещё до тебя))
8 Рэйв
 
29.05.15
19:36
(0)СтандартнаяОбработка= ложь:-)
Это тебя спасет.
На время:-)
9 happysan
 
29.05.15
19:38
(6)ДанныеФормыЭлементКоллекции это ДанныеСтроки в нашем случае - не передается на сервер.
10 happysan
 
29.05.15
19:39
(8)тебя спасает?)))
11 happysan
 
29.05.15
19:40
Просьба не "флудить"!
12 Остап Сулейманович
 
29.05.15
19:42
(9) Может ты плохо код смотрел? Вызов там такой :
АЗаполненЛиРеквизит2(ДанныеСтроки.Реквизит1);

А ДанныеСтроки.Реквизит1 это (я так понял) ссылка. Которой на мутабельность пофик.
13 Остап Сулейманович
 
29.05.15
19:43
+ (12) И никто не заставляет тебя передавать коллекцию данных строки.
14 happysan
 
29.05.15
19:52
(12)Красавчик! Спасибо! Я недосмотрел твой код, сорри.