Имя: Пароль:
1C
1С v8
Программная установка связей параметров выбора для новых колонок в УФ
0 termos
 
29.08.14
22:17
Здравствуйте, Уважаемые!

Входные данные: Платформа 8.3, УТ 11, управляемые формы, своя внешняя обработка с табличной частью в которой меняется количество колонок в зависимости от выводимых данных.

Подскажите, пожалуйста, каким образом установить СвязиПараметровВыбора на некоторые вновь созданные колонки в Табличной Части моей внешней обработки.

В принципе, с непосредственной установкой я разобрался, но интересует параметр ПутьКДанным передаваемый в конструктор СвязьПараметраВыбора. Возможно ли в нем указать ссылку на переменную, а не на реквизит обработки или формы обработки? Или всегда это должен быть объект метаданных? Если так, то как установить для каждой колонки свои связи параметра выбора? Ато получается следующее - я в процедуре ПриОткрытииНаСервере пробегаюсь и каждой нужной мне колонке устанавливаю свою связь, а по факту при прорисовке и выводе формы на экран платформа ставит на все изменяемые колонки последнее значение связи. Ниже код, которым пробегаюсь и устанавливаю связи. "ПВХ" в коде - это реквизит формы обработки. Количество колонок постоянно меняется в ТЧ. Итак, каким образом мне сделать для разных колонок разные связи. Надеюсь, что понятно изложил вопрос. Заранее благодарю.

    Для каждого Колонка Из НовыеКолонки Цикл
        НовыйЭлемент = Элементы.Добавить("СписокНоменклатуры"+Колонка.Имя,Тип("ПолеФормы"),Элементы.СписокНоменклатуры);
        НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.ПутьКДанным = "Объект.СписокНоменклатуры."+Колонка.Имя;
        НовыйЭлемент.ТолькоПросмотр = Ложь;
        
        Отбор = Новый Структура;
        Отбор.Вставить("Колонка",Колонка.Имя);
        НайденнаяКолонка = СписокСвязей.НайтиСтроки(Отбор);
        Если НайденнаяКолонка.Количество()>0 Тогда
            ПВХ = НайденнаяКолонка[0].Связь;
            НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "ПВХ");
            НовыйМассив = Новый Массив();
            НовыйМассив.Добавить(НоваяСвязь);
            НовыеСвязи = Новый ФиксированныйМассив(НовыйМассив);
            Элементы["СписокНоменклатуры"+Колонка.Имя].СвязиПараметровВыбора = НовыеСвязи;
        КонецЕсли;
    КонецЦикла;
1 termos
 
31.08.14
18:52
up
2 termos
 
02.09.14
00:00
подниму
3 termos
 
02.09.14
09:16
Никто не знает ответ?
4 hhhh
 
02.09.14
09:28
(3) ну тупо ПВХ = ведь реквизит формы, вы присваиваете

НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "ПВХ");

значит, во всех колонках будет одинаковая ПВХ. Которую последнюю присвоили.
5 termos
 
02.09.14
09:32
Окей, а как правильно? Чтобы в каждой колонке своя стояла?
6 olegves
 
02.09.14
09:36
(0) а что за процедура ПриОткрытииНаСервере()?
среди предопределенных такой нет.
Чем не устраивает ПриСозданииНаСервере()?
Для каждого эл из НайденнаяКолонка Цикл - не пробовал?
7 termos
 
02.09.14
10:03
(6) А чем поможет Для каждого эл из НайденнаяКолонка Цикл?
Связи устанавливаются на данный момент и работают, но т.к. ПутьКДанным ведет на один и тот же реквизит - во всех колонках СвязьПараметровВыбора одинаковая стоит (в этом проблема) и соответственно в пользовательском режиме во всех колонках один и тот же отбор стоит при выборе значения колонки.