Имя: Пароль:
1C
 
Задать тип колонке в таблице значений
0 Viktosha
 
18.12.09
10:58
На форме есть таблица значений. При изменении одной из колонок непосредственно из формы происходит назначение типа остальным:
ТекущаяСтрока = ЭлементыФормы.Испытания.ТекущаяСтрока;
   Если ЗначениеЗаполнено(ТекущаяСтрока.ПоказательИспытания)ТОгда
       Если ТекущаяСтрока.ПоказательИспытания.видРезультатаАнализа = ПланыВидовХарактеристик.ВидыРезультатовАнализаНоменклатуры.ЗначениеИзСписка Тогда
           ТипКолонки = Новый ОписаниеТипов("СправочникСсылка.ЗначенияПоказателейАнализовНоменклатуры");
       Иначе
           ТипКолонки = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,4));
       КонецЕсли;
       Для Каждого КолонкаИспы Из ЭлементыФормы.Испытания.Колонки Цикл
           ПризнакКолонки = Лев(КолонкаИспы.Имя, 10);
           Если ПризнакКолонки = "Показатель"  Тогда
                КолонкаИспы.ЭлементУправления.ОграничениеТипа = ТипКолонки;
                 КолонкаИспы.ЭлементУправления.Значение = ТипКолонки.ПривестиЗначение(КолонкаИспы.ЭлементУправления.Значение);
           КонецЕсли;
       КонецЦикла;
          ЭлементыФормы.Испытания.Колонки.Значение.ЭлементУправления.ОграничениеТипа = ТипКолонки;
          ЭлементыФормы.Испытания.Колонки.Значение.ЭлементУправления.Значение = ТипКолонки.ПривестиЗначение(ЭлементыФормы.Испытания.Колонки.Значение.ЭлементУправления.Значение);
           
   КонецЕсли;


Это все работает. Затем я программно хочу добавить строки, где сразу заполнить значение этой колонки и соответственно сразу назначить тип остальным колонкам. Вызываю эту же процедуру, но ругается. Как правильно надо ее написать и где вызывать?
1 Aprobator
 
18.12.09
11:00
(0) в каждой строке типы колонок разные что ли?
2 Viktosha
 
18.12.09
11:05
(1) ну вообще чисто теоретически может быть, там 2 типа и из них выбирается, либо число, либо справочник. Но в целом в таблице будет один тип, но вот какой - задается именно Показателем испытания, т.е. зависит от значения в  изменяемой колонке
3 Aprobator
 
18.12.09
11:15
(2) что значит изменение одной из колонок? Список колонок что ли динамически формируется?
4 Viktosha
 
18.12.09
11:16
Когда на форме изменяешь все хорошо, но когда программно, то не получается, попробовала написать в процедуре при выводе строки:
ТекущаяСтрока = Элемент.ТекущаяСтрока;
   Если ЗначениеЗаполнено(ТекущаяСтрока.ПоказательИспытания)ТОгда
       Если ТекущаяСтрока.ПоказательИспытания.видРезультатаАнализа = ПланыВидовХарактеристик.ВидыРезультатовАнализаНоменклатуры.ЗначениеИзСписка Тогда
           ТипКолонки = Новый ОписаниеТипов("СправочникСсылка.ЗначенияПоказателейАнализовНоменклатуры");
       Иначе
           ТипКолонки = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,4));
       КонецЕсли;
       Для Каждого КолонкаИспы Из ЭлементыФормы.Испытания.Колонки Цикл
           ПризнакКолонки = Лев(КолонкаИспы.Имя, 10);
           Если ПризнакКолонки = "Показатель" и КолонкаИспы.Имя <> "ПоказательИспытания" Тогда
                КолонкаИспы.ЭлементУправления.ОграничениеТипа = ТипКолонки;
                 КолонкаИспы.ЭлементУправления.Значение = ТипКолонки.ПривестиЗначение(КолонкаИспы.ЭлементУправления.Значение);
           КонецЕсли;
       КонецЦикла;
          ЭлементыФормы.Испытания.Колонки.Значение.ЭлементУправления.ОграничениеТипа = ТипКолонки;
          ЭлементыФормы.Испытания.Колонки.Значение.ЭлементУправления.Значение = ТипКолонки.ПривестиЗначение(ЭлементыФормы.Испытания.Колонки.Значение.ЭлементУправления.Значение);
           
   КонецЕсли;

Но получается, что все равно приходится выбирать тип, хотя он и ограничен. Т.е. если это число, то будет в выборе типа стоять только число. А мне надо чтобы сразу на форме было задано ограничение.
Помогите пож-та, уже второй день воюю((((((((
5 Viktosha
 
18.12.09
11:18
(3) Да, динамически
6 Aprobator
 
18.12.09
11:19
(5) Тип то ограничен, а вот Свойство Элемента управления ВыбиратьТип - где в ложь выставлено?
7 mooo
 
18.12.09
11:20
Может приводить тип к нужному стоит при начале редактирования.
8 Viktosha
 
18.12.09
11:24
Написала:  КолонкаИспы.ЭлементУправления.выбиратьТип = Ложь;
И теперь вообще никакого типа нет, пока на крестик не нажмешь в колонке
9 Viktosha
 
18.12.09
11:27
(7) Тоже не получается((
10 SoftIce
 
18.12.09
11:31
а к какому событию привязана приведенная процедура?
11 SoftIce
 
18.12.09
11:37
и потом если в разных строках у вас ПоказательИспытания будет приводить к разным значениям ТипКолонки, то фигня получится!
Тип значения у колонки один на всю колонку, а не на каждую строку отдельно.
12 mooo
 
18.12.09
11:41
Попробуй замени это

КолонкаИспы.ЭлементУправления.Значение = ТипКолонки.ПривестиЗначение(КолонкаИспы.ЭлементУправления.Значение);

на это

ТекущаяСтрока[КолонкаИспы.Имя] = ТипКолонки.ПривестиЗначение(ТекущаяСтрока[КолонкаИспы.Имя]);
13 mooo
 
18.12.09
11:43
(11) не правда, колонка составного типа
14 Viktosha
 
18.12.09
12:20
(13) Спасибо большое, все получилось. Я что-то подобное пробовала, но видимо не так написала)))) Еще раз спасибо)))))
15 SoftIce
 
18.12.09
12:27
В цикле задаешь значение

ТекСтрока = Испытания.Добавить();
ТекСтрока.ПоказательИспытания = НужноеЗначение;
-- определить нужный ТипКолонки
ТекСтрока.Показатель = ТипКолонки.ПривестиЗначение(НужноеЗначение);

так?
16 SoftIce
 
18.12.09
12:28
уже сделали?

Сорри, видимо страничка не обновлялась.