Имя: Пароль:
1C
1C 7.7
v7: 1С++ прямой запрос. Отбор по группе не работает
,
0 Подводный Таракан
 
20.12.12
08:10
Текст запроса:

   RS = СоздатьОбъект("ODBCRecordSet");
   RS.Отладка(0);
   ТекстЗапроса = "
   |SELECT Сотрудники.ID [Сотрудник $Справочник.Сотрудники]
   |, $Сотрудники.ТабельныйНомер ТабельныйНомер
   |, $Сотрудники.Бригада [Бригада $Справочник.СтруктураСмен]
   |, $Сотрудники.ОрганизационнаяСтруктураНовая [Подразделение $Справочник.ОрганизационнаяСтруктура]
   |, $Сотрудники.Категория [Звание $Справочник.КатегорииСотрудников]
   |FROM $Справочник.Сотрудники AS Сотрудники With (NOLOCK)
   |WHERE
   |($Сотрудники.ОрганизационнаяСтруктураНовая IN (SELECT val FROM #ВыбрОргСтруктура)
   |";
   RS.УложитьСписокОбъектов(ВыбрОргСтруктура, "#ВыбрОргСтруктура","ОрганизационнаяСтруктура");

выдает пустоту.
ВыбрОргСтруктура - группа, а элементы Сотрудники.ОрганизационнаяСтруктураНовая - тоже группы, принадлежащие выбранной орг структуре. Возможно поэтому не идет выборка. Как быть в таких случаях?
1 Wobland
 
20.12.12
08:11
ну не В же
2 Wobland
 
20.12.12
08:11
"в иерархии" как переводится?
3 Mikeware
 
20.12.12
08:14
А что у тебя во временной-то? пусто?
4 Mikeware
 
20.12.12
08:16
а, вьехал....
джойни свою временую с ОрганизационнойСтруктурой, бери родителя, и среди них ищи...
5 Подводный Таракан
 
20.12.12
08:21
(2) не могу найти с утра, как переводится)
6 Mikeware
 
20.12.12
08:22
(1)(2) чиво?
7 Подводный Таракан
 
20.12.12
08:26
(4) сейчас попробую осмыслить, пока не могу догнать...
8 Подводный Таракан
 
20.12.12
08:32
(4) не выходит, не писал таких запросов еще, поэтому не догоняю что с чем надо джойнить
9 Wobland
 
20.12.12
08:32
(6) он принадлежность к группе вычисляет?
10 Wobland
 
20.12.12
08:34
+(9) в этом случае вот кусок для размышления

   Если УпорядочиваниеПоИерархииНоменклатуры=1 Тогда
       ТекстЗапроса=ТекстЗапроса+"
       |    LEFT JOIN [ВремОбъекты.#ИерархияНоменклатуры] AS Иерархия
       |        ON [Иерархия.Значение]=[Номенклатура.Ссылка]";
   КонецЕсли;
11 Wobland
 
20.12.12
08:34
(10) гыгы, у меня там    Запрос=СоздатьОбъект("ToyQuery");
12 Подводный Таракан
 
20.12.12
08:42
(11) а если RS = СоздатьОбъект("ODBCRecordSet");
то так же прописывать?
13 Wobland
 
20.12.12
08:43
14 vinogradъ
 
20.12.12
08:53
(0) в AccountsRecordset есть УложитьСписокГрупп
15 Ёпрст
 
20.12.12
09:14
(0) в УложитьСписокОбъектов содержатся только элементы (все), которые принадлежат данной группе, там нет групп.

Тебе нужно ручонками добавить группы в фильтр.
16 Mikeware
 
20.12.12
09:21
in( select distinct Оргструктура.parentid from #ВыбрОргСтруктура  ВыбЭлементы
inner join $Спраавочник.ОрганизационнаяСтруктура Оргструктура
on Оргструктура.id=ВыбЭлементы.val )
17 Ёпрст
 
20.12.12
09:22
(16) distinct  лучше оттуда выкинуть
18 Mikeware
 
20.12.12
09:22
(15) нк, можно рученками в СЗ, сз - уложить без  третьего параметра.
19 Ёпрст
 
20.12.12
09:22
ну и .. это не верно
20 Ёпрст
 
20.12.12
09:23
так писать
:)
21 Mikeware
 
20.12.12
09:23
(17) можно и выкинуть
22 Ёпрст
 
20.12.12
09:23
могут быть вложенные группы, которые не будут в фильтре в этом случае.
23 Ёпрст
 
20.12.12
09:24
самое простое - посмотреть в профайлере на код УложитьСписокОбъектов и сделать такой же, только с группами
25 Mikeware
 
20.12.12
09:28
(22) как раз все вложенные группы и будут. включая и того, кого укладывают. Если, конечно, в группах есть элементы, хотя б по одному...
а так - я б собрал группы, как в (18)
26 Ёпрст
 
20.12.12
09:28
(24) конечно нет!

в #ВыбрОргСтруктура у тебя только элементы, и ты получаешь только непосредственного родителя в (16).

А вот родителя.родителя или родителя.родителя.родителя....родителя нет
:)
27 Подводный Таракан
 
20.12.12
09:48
(25) нет элементов, только группы в этом справочнике
28 Mikeware
 
20.12.12
10:04
(26) я ж добавил условие - "если в группах есть элементы, хотя б по одному...." :-)
(27) ну и собери их в сз, и уложи... как в (18)
или сделай как в (23)
29 Дык ё
 
20.12.12
10:10
(0) в qryConsole есть УложитьСписокГрупп
30 Ёпрст
 
20.12.12
10:20
Альтернатива УложитьСписокОбъектов с группами

где то было еще решение.
Ну еще попроще - куяу лефт джоинов по количеству уровней -1 лепить
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший