Прямой запрос. Выбор групп справочника #415642


#0 by Bibr
Простейший запрос.     не возвращает группы. без "and Спр.ID IN (SELECT Val FROM #ВыбТов)" все норм. что делать?
#1 by Джинн
Значит в #ВыбТов только элементы.
#2 by Bibr
нет, группа
#3 by Bibr
или список групп
#4 by Sadovnikov
Откуда взялась #ВыбТов ?
#5 by AeDen
И не выберет:)
#6 by Bibr
почему? как быть? добавлять Х условий по количеству групп?
#7 by AeDen
Отбирать группы:)
#8 by Джинн
(2,3) Уж не методом УложитьСписокОбъектов она образована?
#9 by Bibr
в 1С запросе условие "Условие(ТорговаяМарка в СпсТМ);" где СпсТм - список значений с группами - замечательно работает. в синтаксисе "УложитьСписокОбъектов" сказано, что список значений передавать в качестве параметра можно. но похоже реализовано это как-то не до конца
#10 by Bibr
да
#11 by AeDen
А еще что про уложить сказано?
#12 by Джинн
Это реализовано так, как нужно. То, что ты не понимаешь логики работы метода еще не говорит о том, что там что-то "не до конца" реализовано.
#13 by Bibr
Параметры: Список - тип: СписокЗначений, Справочник, Счет. Объект, содержание которого будет отправляться на сервер. Если передан список значений, во врем. таблицу попадает содержимое списка. Допустимо также передавать группу справочника, элемент справочника, группу счетов, счет - в этом случае во временную таблицу поступает переданное значение, однако если указан ВидЭлементов (вид справочника, или план счетов), то будет попытка включить в таблицу все подчененные элементы. ИмяТаблицы - тип: Строка. Имя временной таблицы. ВидЭлементов - тип: Строка. Вид справочника для иерархического включения элементов или вид плана счетов для иерархического включения счетов. Если параметр не указан, иерархического включения не происходит. Описание: сохраняет список внутренних идентификаторов объектов во временной таблице MS SQL. Идентификаторы объектов из списка сохраняются во временной таблице в поле val char. Имя таблицы должно начинаться с символа "#". Если указан вид ВидЭлементов - идентификатор иерархического справочника, то таблица будет содержать элементы, иерархически принадлежащие группам переданным в списке. (Подобно оператору "в" стандартного языка запросов 1С.) Замечание: метод допустимо применять только для источника данных Microsoft SQL Server.
#14 by Bibr
да, похоже ты прав. только что же делать?
#15 by Bibr
Recordset.УложитьСписокОбъектов(ВыбТов, "#ВыбТов", "Товары") - возвращает только элементы. Recordset.УложитьСписокОбъектов(ВыбТов, "#ВыбТов",) - не возвращает элементы:)
#16 by Bibr
что значит отбирать группы? делать в цикле отдельные подзапроссы на каждую группу?
#17 by Джинн
Не используй метод УложитьСписокОбъектов. Только и всего. Сам заполни временную таблицу. Или подзапрос напиши.
#18 by КонецЦикла
Посмотреть как работает УложитьСписокОбъектов в профайлере и немного подправить на свой вкус Ну или пригласить специалиста... это уже надо в качестве подписи
#19 by Bibr
подправить 1cpp.dll? боюсь у меня пока мало знаний на это. а можно поподробней? в запрос же нужно передавать какие-то параметры. Что тогда передавать и как это обрабатывать?
#20 by Guk
переходи на восьмерку...
#21 by Кириллка
смеялся над первой частью поста по разным причинам.
#22 by КонецЦикла
Текст запроса :) Ну никто наверное готовое не напишет, ну только если очень заинтересует твоя проблема На 1cpp.ru много сведений и люди там отзывчивы у целом
#23 by antoneus
а есть ещё ИндексированнаяТаблица и метод Группировать
#24 by Bibr
а можно поподробней? рою щас инфу... чую, что мне может что-то вроде этого помочь. ТекстЗапроса="|SELECT   | $Регистр.ОстаткиТоваров.Товар as [Товар $Справочник.Номенклатура],   | $Регистр.ОстаткиТоваров.Склад as [Склад $Справочник.МестаХранения], а что за объект ИндексированнаяТаблица?
#25 by antoneus
#26 by v_rtex
не правильно чуешь
#27 by insider
может на IsFolder проверить? :)
#28 by insider
+27 например:
#29 by v_rtex
ну это ж только корневые группы выберет
#30 by insider
уверен? ;)
#31 by insider
+30 просто снимаем проверку на parentid и все, просто скопировал че было, типа думать тоже автору придется - я за него не буду
#32 by v_rtex
уверен, если бы не было оговорок в
#33 by insider
ну да :) это был кусок кода, который д.б. выбирать или группы верхнего уровня или же внутри выбранного (-ых) групп первого уровня - группы второго уровня. вообщем специфическая жесткая иеррахия справочника с определнной смысловой нагрузкой в каждом уровне. собсно это же просто пример был, чтоб автор ознакомился, так сказать :)
#34 by Bibr
(28-33) Пользователь на форме выбирает группу. Уровень - от 1 до 4х. Необходимо выбрать все вложенные элементы и группы. Вашим способом не получится - нужно передавать параметр в текст. только вот непонятно как.
#35 by insider
ага, ну хоть понятно, что ты хочешь теперь :) первым делаешь мой первый вариант, выгружаешь в СЗ для выбора группы первого уровня, потом... щас придумаю :)
#36 by insider
+35 хм... тут процедура получается, надо вычислять до упора верхнего родителя для каждого элемента, чтобы проверить условие :(
#37 by insider
обойти требование можно или стоит городить огород? это еще и долго считаться будет ващет. конечная цель всех этих выборок?
#38 by v_rtex
ну если 4 уровня строго.. то можно 4 left join'a и в каждом условие на группы..
#39 by v_rtex
в смысле условие в where поставить..
#40 by insider
ну где 4 - там и пять, хотя можно и left join, громоздко, конечно и некрасиво, но можно :)
#41 by Кириллка
не надо так писать ltrim(s.parentid)='0'
#42 by Bibr
(37-40) есть справочник товары. количество уровней - 4. требуется: пользователь выбирает группу любого уровня (или не выбирает - весь справочник), ему выводится конечный остаток по регистру "ОстаткиТоваров" по всем элементам и по всем группам. Через 1с-запрос это реализуется очень просто. Через прямой с элементами все замечательно, а вот с группами геморрой. Неужели нет какого-то простого способа это сделать?
#43 by SnarkHunter
Остаток по группе - это что? Средняя температура по палате? Остаток по группе = 6, в том числе 2 валенка и четыре литра спирта...
#44 by Bibr
это сумма остатков по элементам. рассмотрим самый простой случай. (сделаю его, сделаю и свое) регистр ОстаткиТоваров. измерения: Товар, Склад ресурсы: Стоимость, количество. на форме отчета: реквизит ВыбраннаяГруппа. выводимый отчет: столбцы товар, количество, стоимость. соблюдена иерархия как в справочнике. в колонках строк, соответствующих группам товаров - сумма по всем элементам подгруппы. Пример: Выбрана группа "детали" сформированный отчет:  Товар               кол  стоимость Детали итого          16  179.00                Болты             5   37.00        Болты Bosh    2   12.00        Болты Nike    3   25.00    Гайки Bosh    4   92.00        Гайки Nike    5   30.00    Шурупы Tefal  2   20.00
#45 by МихаилМ
то вот болванка иерархии спавочника 1с77 select ID <,РОД1.ID AS parentID_1,..,РОДN.ID AS parentID_N > from ВАШ_СПРАВОЧНИК LEFT JOIN ВАШ_СПРАВОЧНИК РОД1 ON ВАШ_СПРАВОЧНИК.parentID = РОД1.ID .. LEFT JOIN ВАШ_СПРАВОЧНИК РОДN если нужно выбрать только подчиненые одной группы OR (РОД2.ID = <КорневаяГруппа>) .. не забудте nolock и поиграйтесь с индексами (мб в WHERE РОДN-1.parentID = <КорневаяГруппа>   если у Вас sql2005 посмотрите в сторону cte (
#46 by Bibr
Спасибо!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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