Имя: Пароль:
1C
1С v8
СвязиПараметровВыбора
0 noffkj
 
14.01.19
15:12
Добрый день.

Есть 2 документа.
1. Документ1
Реквизит ДатаДок
И табличная часть с одним реквизитом Номер.

2. Документ2
Табличная часть
Ревизиты: Номер,СсылкаДок1,ДатаДок1

В форме 2ого документа есть процедура

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Элементы.ТабличнаяЧасть1Ссылка.СвязиПараметровВыбора  = Новый ФиксированныйМассив(Новый массив);
    НовыйМассив = Новый Массив();
    
    НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.ДатаДок", "Элементы.ТабличнаяЧасть1.ТекущиеДанные.ДатаДок1");
    НовыйМассив.Добавить(НоваяСвязь);
    
    НовыеСвязи = Новый ФиксированныйМассив(НовыйМассив);
    Элементы.ТабличнаяЧасть1Ссылка.СвязиПараметровВыбора = НовыеСвязи;
КонецПроцедуры

Все прекрасно работает.

Собственно вопрос. Как сделать программно связьПараметравыбора к строке табличной части Документа1?
В пользовательском режиме это можно сделать и выглядит это следующим образом.
http://prntscr.com/m6yyck
1 Buster007
 
14.01.19
15:31
какой-то бредовый отбор ты пытаешься сделать
2 noffkj
 
14.01.19
15:33
ок. ошибся.
вот так.
http://prntscr.com/m6za92
3 Numerus Mikhail
 
14.01.19
15:35
Попробуй через параметры выбора, а не через связи параметров.
4 noffkj
 
14.01.19
15:44
(3) Неа. не работает. даже в самом конструкторе нет отбора к табличной части.
http://prntscr.com/m6zewz
Что в связи параметров выбора, так и в параметрах выбора
5 noffkj
 
14.01.19
15:48
Такая конструкция выдает ошибку
НоваяСвязь = Новый ПараметрВыбора("Отбор.ТабличнаяЧасть1.Номер", "Элементы.ТабличнаяЧасть1.ТекущиеДанные.Номер");

Если руками прописать в конструкторе то тоже ошибка.

http://prntscr.com/m6zhyq
6 noffkj
 
15.01.19
12:51
Для тех кто нарвется на эту тему.
такое можно реализовать только обходным путем.

Передаем параметры в форму.

Если Параметры.Свойство("Товар") Тогда
        ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        
        ПолеТовар = Новый ПолеКомпоновкиДанных("Товар");
        ПолеТовар = Список.Отбор.ДоступныеПоляОтбора.НайтиПоле(ПолеТовар);
        
        ЭлементОтбора.ЛевоеЗначение = ПолеТовар.Поле;
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = Параметры.Товар;
    КонецЕсли;