Динамический список. Колонка дополнительных сведений #697092


#0 by LordCMEPTb
Доброго дня! Есть типовая конфигурация БП 3.0, которая работает на управляемых формах. Нужно сделать обработку, которая бы выводила динамический список справочника со свойствами из РС.ЗначенияСвойствОбъектов. Задача простая до невозможности: 1. Создаем свойства в ПВХ: Функция СоздатьСвойствоВПланеВидовХарактеристик(Знач НаименованиеСвойства, Знач НазначениеСвойства = Неопределено, Знач ТипЗначения = Неопределено); </code> 2. Создаем на форме динамический список с произвольным запросом (допустим, будем мучать справочник договоров контрагентов): <code> ВЫБРАТЬ     Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов </code> 3. Подцепить свойства, созданные в пункте 1, к динамическому списку: </code> И здесь начинается самое смешное: в 8.2 колонки успешно добавляются, в 8.3 на строке с указанием пути к данным возникает ошибка "Недопустимое значение". Возможно, у кого-то возникнет вопрос: "Почему же смешное?". А ответ прост: код отбора по тому же полю работает. То есть, если мы создадим свойство "Булевое значение" (в действительности создастся свойство с наименованием "Булевое значение (Договор контрагента)") с типом значения Булево и добавим отбор: <code> </code> то будут показаны лишь те элементы, у которых значение данного свойства задано и равно Истина. Почему же в 8.2 колонки создаются, а в 8.3 не хотят? Нужно сделать, чтобы везде было все одинаково, а потому, если в качестве выбора характеристик не таблицу, а свой запрос, т.е. в качестве запроса динамического списка установить такой запрос:     Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов         ГДЕ             ДополнительныеСведения.Объект ССЫЛКА Справочник.ДоговорыКонтрагентов) </code> то получаем ситуацию, что код добавления элемента по наименованию: </code> начинает ругаться на строку с присвоением пути к данным, в то время как код с отбором: <code> НовыйЭлементОтбора                    = СписокДоговоров.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлементОтбора.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("ДоговорКонтрагента.[Булевое значение ((Доп. свойство))]"); </code> нормально отрабатывает, но зато поведение одинаковое, что в 8.2, что в 8.3. К чему я все это описал: каким должен быть путь к данным, чтобы колонку можно было добавить программно?
#1 by Wobland
а в каком поле запроса у тебя то, что нужно? //разумеется, не читал
#2 by LordCMEPTb
Парадокс в том, что у меня в произвольном запросе нет как такового поля. Оно появляется из-за подключения характеристик к справочнику. Написать в самом запросе левые соединения с регистром сведений, содержащим эти свойства, можно, но свойств у меня может накопиться порядка 10-15 штук, и все нужные, а демонический список с таким запросом обновляется секунд 40-60 при 10к договорах, а тот же список с характеристиками - секунд 5
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С