Имя: Пароль:
1C
1С v8
Возврат реквизита управляемой формы(ТЗ)
0 lisrws
 
08.10.13
11:27
Добрый день. Есть управляемая форма. На ней 4 реквизита типа "Таблица значений": ТЗ1, ТЗ2, ТЗ3 и ТЗ4. в каждой из них по 3 строки с Колонкой "Габарит"(число). Имеется такой код:
&НаКлиенте
Процедура ШиринаПриИзменении()
    Габариты = ПолучитьГабарит(ЗонаХранения);
    Габариты[1].Габарит = ШиринаММ;
конецпроцедуры

&НаСервере
Функция ПолучитьГабарит(ЗонаХранения)
    Если ЗонаХранения = Перечисления.ЗоныХранения.Зона1 тогда
        Возврат ТЗ4;
    ИначеЕсли ЗонаХранения = Перечисления.ЗоныХранения.Зона2 тогда
        Возврат ТЗ4;
    ИначеЕсли ЗонаХранения = Перечисления.ЗоныХранения.Зона3 тогда
        Возврат ТЗ4;
    ИначеЕсли ЗонаХранения = Перечисления.ЗоныХранения.Зона4 тогда    
        Возврат ТЗ4;
    КонецЕсли
конецфункции

То есть, в зависимости от зоны хранения, из функции должна вернуться конкретная ТЗ для редактирования. ТЗ вроде возвращается, переменная Габариты имеет тип "ДанныеФормыКоллекция", но при выполнении Габариты[1].Габарит = ШиринаММ заполняется строка только в ТЗ Габариты, при этом значение в соответствующей ей строке в ТЗ из реквизитов формы не изменяется. В чем может быть дело?
1 banco
 
08.10.13
11:31
(0) в твоем случае вообще не надо обращаться на сервер, можно использовать на клиенте
Если ЗонаХранения = ПредопределенноеЗначение("Перечисление.ЗоныХранения.Зона1")
2 Maxus43
 
08.10.13
11:32
чтоб на сервере работать с данными форм кури РеквизитФормыВЗначение и обратно
3 lisrws
 
08.10.13
11:36
(1) я привел лишь фрагмент. есть вызов ПолучитьГабарит из под сервера. поэтому на клиент бросать нельзя.
(2) по-моему немножко не то. Если я напишу:
&НаКлиенте
Процедура ШиринаПриИзменении()
    ТЗ1[1].Габарит = ШиринаММ;
конецпроцедуры

работать будет
4 lisrws
 
08.10.13
11:37
немножко ошибся в (0) . Вот так надо:
&НаСервере
Функция ПолучитьГабарит(ЗонаХранения)
    Если ЗонаХранения = Перечисления.ЗоныХранения.Зона1 тогда
        Возврат ТЗ1;
    ИначеЕсли ЗонаХранения = Перечисления.ЗоныХранения.Зона2 тогда
        Возврат ТЗ2;
    ИначеЕсли ЗонаХранения = Перечисления.ЗоныХранения.Зона3 тогда
        Возврат ТЗ3;
    ИначеЕсли ЗонаХранения = Перечисления.ЗоныХранения.Зона4 тогда    
        Возврат ТЗ4;
    КонецЕсли
конецфункции
5 lisrws
 
08.10.13
11:41
вызов сервера мне нужен только для определения с какой именно ТЗ мне нужно сейчас работать. Но при возврате с сервера, кажется что он дает не ТЗ формы, а ее копию.
6 Infsams654
 
08.10.13
11:50
(5) выбирай, из (1) и (2)
7 lisrws
 
08.10.13
14:59
(6) ясно. спасибо. буду пробовать