Запрос к Иерархии справочника как сделать #807163


#0 by IgorRst78
Прошу помочь в таком вопросе. Есть таблица вида: | ПолеА_Знач2 | ПолеB_Знач2 | ПолеC_Знач2 | ..... ------------------------------------------- Проблема в том, что ПолеА_Знач1 и ПолеА_Знач2 это группы. И надо размножить значения этого поля, на подчиненные элементы. При этом значения полей B и C у каждого входящего элемента должно быть таким же как у корневой папки. Никак не пойму как сделать. Кто подскажет?
#1 by silent person
тебе родительские папки получить надо чтоли ? Получение всех родителей элемента В языке запросов не предусмотрено специальных средств для получения всех родителей элемента. Для выполнения задачи можно воспользоваться иерархическими итогами, однако получение иерархических итогов оптимизировано для построения итогов большого количества записей, и не вполне эффективно для получения родителей одного элемента. Для более эффективного получения всех родительских записей элемента, рекомендуется перебирать в цикле его родителей небольшими порциями. Пример: Пример: В данном примере в окно служебных сообщений выводятся все родители для ссылки, записанной в переменную ЭлементНоменклатура. В цикле выбирается по 5 родителей ссылки. Если число уровней в справочнике ограничено и невелико, то возможно получение всех родителей одним запросом без цикла.
#2 by IgorRst78
не - не папки - а все входящие элементы. И ЗАПРОСОМ. В цикле - то просто! Но я не хочу
#3 by Mr_Best
в запросе выбираешь все записи ПолеА и к этой таблице присоединяешь левым соединением данные из таблицы "Таблица вида" по владельцу
#4 by IgorRst78
я чую что должно быть левое соединение, но не пойму, как соединить по владельцу. так как там разный уровень иерархии.
#5 by Mr_Best
с разным уровнем намучаешься, переделай этот регистр или создай дополнительный где храни подготовленные данные
#6 by arsik
Тебе же показали все. Вот это в условие пихни:
#8 by Лефмихалыч
оно?
#9 by Лефмихалыч
только это будет дохренища строк, ибо декартово. У тебя ж в топике не задано условий, по которым строки из этих трех множеств соединять...
#10 by IgorRst78
Это я уже все понял. намучался реально. Задача тупая - надо сделать хранилище настроек неких, где пользователь может и группы и элементы указывать и пустые поля - для всех. придется все же в цикле перебирать. так очевидно проще
#11 by IgorRst78
не получится - типовой справочник.
#12 by Лефмихалыч
1С не умеет по иерархии соединять. Так что тут без циклов не обойдешься
#13 by Ildarovich
Если еще не видели статью , то почитайте ее. Метод применим к вашей задаче. Смысл в том, чтобы получить для каждого элемента справочника родителя, потом родителя родителя, потом .. очень быстро всех "транзитивных" родителей. Повторением (три-четыре раза) одного простого запроса. А когда все родители будут получены, легко найти все входящие в группу элементы. в иерархии - это на самом деле запрос в цикле. Можно почитать здесь: умеет (не напрямую) .. при желании обойтись можно
#14 by youalex
Можно сделать служебный РС, в котором разворачивать иерархию в подписке ПриЗаписи Типа такого: Измерения:Элемент, Уровень(число),  Ресурс: Родитель.
#15 by arsik
Умеет. Но только зависит от максимального уровня справочника. Но это намного быстрее работает, чем циклами.
#16 by программистище
сделай отборы компоновкой (там и иерархия возможна) с иерархией не получится
#18 by Лефмихалыч
"умеет" - это когда "ПО Право.Ссылка в ИЕРАРХИИ (Лево.Группа)" все остальное - это "не умеет"
#19 by Ildarovich
Было бы наивным ждать этого от языка запросов 1С, если этого нет в T-SQL. В ИЕРАРХИИ смотрится инородно. На мой взгляд, эта конструкция - методологическая ошибка. Лучше бы заменить ее использование служебными реквизитами иерархического справочника типа полного пути (hierarchyid) или списком родителей или left - right (вложенные множества). Решение по ссылке из опирается на одно из таких возможных решений (списки родителей). Которые не пишутся в базу, а строятся на лету перед выполнение отчета.
#20 by Tateossian
В TSQL зато есть рекурсивные запросы, использующие обобщенные табличные выражения.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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