|
ОтборКомпоновкиДанных в Запросе | ☑ | ||
---|---|---|---|---|
0
AlexYa
03.04.12
✎
13:00
|
Идея следующая: по списку ссылок нахожу все объекты, их содержащие
НайденныеСсылки = НайтиПоСсылкам(МассивЗаменяемых); Затем в отобранной таблице хочу сделать произвольный отбор. Для интерфейса выбрал КомпоновщикНастроек (тип КомпоновщикНастроекКомпоновкиДанных), Отбор. Как его заполнить нужными типами - отдельная песня. Но вот он заполнен, НайденныеСсылки получены. Пытаюсь скрестить ужа с ежом. Простой перебор в цикле, отбор неподходящих по условию с их последующим удалением работает. Но очень долго. Вот кусок кода условия: ИначеЕсли Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии Тогда Для Каждого ЭлементМассива Из Элемент.ПравоеЗначение Цикл ВключатьВОтбор = СтрокаСсылка.Данные[Строка(Элемент.ЛевоеЗначение)].ПринадлежитЭлементу(ЭлементМассива) ИЛИ СтрокаСсылка.Данные[Строка(Элемент.ЛевоеЗначение)] = ЭлементМассива; Если ВключатьВОтбор Тогда Прервать; КонецЕсли; КонецЦикла; Что не вошло включаем в массив на удаление: Если НЕ ВключатьВОтбор Тогда МассивНаУдаление.Добавить(СтрокаСсылка); КонецЕсли; И потом удаляем из таблицы: Для Каждого СтрокаСсылка Из МассивНаУдаление Цикл НайденныеСсылки.Удалить( СтрокаСсылка); КонецЦикла; К тому же различные комбинации отбора с использованием групп сильно усложнят алгоритм. Есть ещё два варианта: 1. засунуть НайденныеСсылки в запрос,как источник данных и сформировать нужное условие по реквизитам. По идее в запросе должно быть быстрее. 2. Прикрутить отбор к Табличному полю, у которого источник НайденныеСсылки. Но вся беда в том, что колонки табличного поля содержат ссылку на данные, на метаданные и на заменяемое значение. Чтобы в отборе были нужные поля, нужно эти поля добавлять в новые колонки и заполнять их из ссылок на данные. Есть у кого идеи, как к таблице из произвольных ссылок прикрутить произвольный отбор по возможным реквизитам этих ссылок? |
|||
1
Kashemir
03.04.12
✎
13:07
|
Прочитал по диагонали. По поводу вопроса - ТЗ источник схемы компоновки. Нужное поле набора ограничиваем типом нужно колонки ТЗ. Отбор соответственно используется типовой СКДэшный.
Результат выполнения СКД выводим в ТЗ при настройке единственно детальной группировки, включающей все поля исходной ТЗ - профит. |
|||
2
AlexYa
03.04.12
✎
13:27
|
(1) вот тут по-детальней. СКД - это здорово. Но предварительно нужно все поля из отбора сделать полями запроса. Иначе не взлетит. И вот есть у нас в отборе Контрагент. А в одной из ссылок такого реквизита просто нет. И как сработает наш отбор? хотя, попробовать надо.
А после того, как мы получили запрос для СКД, какие шаги нужно сделать, чтобы получить ТЗ из него? Естественно, после срабатывания отбора. |
|||
3
Kashemir
03.04.12
✎
13:31
|
Проще на примере http://infostart.ru/public/74068/
На закладке "Модификация набора данных" реализована имитация типового отбора средствами СКД по произвольной таблице значений |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |