ОтборКомпоновкиДанных в Запросе #603997


#0 by AlexYa
Идея следующая: по списку ссылок нахожу все объекты, их содержащие    НайденныеСсылки = НайтиПоСсылкам(МассивЗаменяемых); Затем в отобранной таблице хочу сделать произвольный отбор. Для интерфейса выбрал КомпоновщикНастроек (тип КомпоновщикНастроекКомпоновкиДанных), Отбор. Как его заполнить нужными типами - отдельная песня. Но вот он заполнен, НайденныеСсылки получены. Пытаюсь скрестить ужа с ежом. Простой перебор в цикле, отбор неподходящих по условию с их последующим удалением работает. Но очень долго. Вот кусок кода условия: ИначеЕсли Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии Тогда    Для Каждого ЭлементМассива Из Элемент.ПравоеЗначение Цикл Что не вошло включаем в массив на удаление: Если НЕ ВключатьВОтбор Тогда И потом удаляем из таблицы: Для Каждого СтрокаСсылка Из МассивНаУдаление Цикл К тому же различные комбинации отбора с использованием групп сильно усложнят алгоритм. Есть ещё два варианта: 1. засунуть НайденныеСсылки в запрос,как источник данных и сформировать нужное условие по реквизитам. По идее в запросе должно быть быстрее. 2. Прикрутить отбор к Табличному полю, у которого источник НайденныеСсылки. Но вся беда в том, что колонки табличного поля содержат ссылку на данные, на метаданные и на заменяемое значение. Чтобы в отборе были нужные поля, нужно эти поля добавлять в новые колонки и заполнять их из ссылок на данные. Есть у кого идеи, как к таблице из произвольных ссылок прикрутить произвольный отбор по возможным реквизитам этих ссылок?
#1 by Kashemir
Прочитал по диагонали. По поводу вопроса - ТЗ источник схемы компоновки. Нужное поле набора ограничиваем типом нужно колонки ТЗ. Отбор соответственно используется типовой СКДэшный. Результат выполнения СКД выводим в ТЗ при настройке единственно детальной группировки, включающей все поля исходной ТЗ - профит.
#2 by AlexYa
вот тут по-детальней. СКД - это здорово. Но предварительно нужно все поля из отбора сделать полями запроса. Иначе не взлетит. И вот есть у нас в отборе Контрагент. А в одной из ссылок такого реквизита просто нет. И как сработает наш отбор? хотя, попробовать надо. А после того, как мы получили запрос для СКД, какие шаги нужно сделать, чтобы получить ТЗ из него? Естественно, после срабатывания отбора.
#3 by Kashemir
Проще на примере На закладке "Модификация набора данных" реализована имитация типового отбора средствами СКД по произвольной таблице значений
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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