Имя: Пароль:
1C
1C 7.7
v7: Выбор родителя в запросе (класс ODBCRecordSet)
0 pofigos
 
25.06.12
18:50
Приветствую всех. Есть запрос:

Запрос = СоздатьОбъект("ODBCRecordSet");
   Запрос.УстановитьТекстовыйПараметр("ВыбДата",НачДата);    
   Запрос.УстановитьТекстовыйПараметр("КонДата",КонДата);
   
   Если ПустоеЗначение(ВыбФилиал) = 0 Тогда
       УслФил = "Филиал = :ВыбФилиал";
       Запрос.УстановитьТекстовыйПараметр("ВыбФилиал",ВыбФилиал);
   Иначе
       УслФил = "";
   КонецЕсли;    

... еще параметры, которые выбираются на форме.. Контрагент или группа контрагентов, товар или группа товаров..

ТекстЗапроса = "
   |SELECT
   |    Рег.Покупатель as [Покупатель $Справочник.Контрагенты],
   |    Рег.Филиал as [Филиал $Справочник.Подразделение],
   |    Рег.Товар as [Товар $Справочник.ВидыТоваров],
   |    Рег.Признак as [ТипОперации $Справочник.ТипыОпераций],
   |    Рег.СуммаОборот as СуммаОборот,
   |    Рег.КоличествоОборот as КоличествоОборот
   |FROM
   |    $РегистрОбороты.Реализация(:ВыбДата,:КонДата~,,,"+УслФил+",(Покупатель,Товар,Филиал,Признак),(Сумма,Количество)) as Рег
   |";
   Запрос.Отладка(1);
   
   Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ВыхТаб);

Вопрос такой, подскажите, объясните (это было бы идеально :) ) или направьте... На форме могут выбираться группы справочников. При выборе только элементов все отрабатывает. Как правильно построить доп.условие (товар является группой и в этой группе есть еще группы).

Спасибо заранее.
1 Rie
 
25.06.12
18:54
(0) Смотри в сторону УложитьСписокОбъектов.
2 pofigos
 
25.06.12
18:56
Пробовал таким способом:
СпрТовары.ИспользоватьРодителя(ВыбВидыТоваров);
               СпрТовары.ВыбратьЭлементы();
               Пока СпрТовары.ПолучитьЭлемент() = 1 Цикл
                   Если СпрТовары.ЭтоГруппа() = 1 Тогда
                       Список.ДобавитьЗначение(СпрТовары.ТекущийЭлемент());
                   КонецЕсли;    
               КонецЦикла;
               
               ИмяТаблицы="#Группа";
               Запрос.УложитьСписокОбъектов(Список,ИмяТаблицы);
               УслФил=УслФил+"Товар IN (SELECT Val FROM "+ИмяТаблицы+")";

Результат был нулевой..
3 Rie
 
25.06.12
19:13
(2) А до того УслФил чему было равно?
4 КонецЦикла
 
25.06.12
19:26
По идее достаточно добавить один элемент-группу и почитать доку:


Синтаксис: УложитьСписокОбъектов(Список, ИмяТаблицы, [ВидЭлементов])

Параметры:

       Список - тип: СписокЗначений, Справочник, Счет. Объект, содержание которого будет отправляться на сервер. Если передан список значений, во врем. таблицу попадает содержимое списка. Допустимо также передавать группу справочника, элемент справочника, группу счетов, счет - в этом случае во временную таблицу поступает переданное значение, однако если указан ВидЭлементов (вид справочника, или план счетов), то будет попытка включить в таблицу все подчененные элементы.
       ИмяТаблицы - тип: Строка. Имя временной таблицы.
       ВидЭлементов - тип: Строка. Вид справочника для иерархического включения элементов или вид плана счетов для иерархического включения счетов. Если параметр не указан, иерархического включения не происходит.
5 КонецЦикла
 
25.06.12
19:27
Если что могу выложить как формировать такой список руками при необходимости и сложных условиях (текст запроса)
Но тут должно все тупо работать, ничего сложного
6 pofigos
 
25.06.12
19:38
В том то и дело, за инфу спасибо, то где я читаю, этого нет.. Возможно пустая выборка, из- за того, что не указал вид элементов
(2) при начале формирования УслФил="". В зависимости от выбранных параметров на форме формируется условие. Выборка только по элементам выводит верный результат. С группами ноль.
Попробую с указанием вида элементов
7 Азат
 
25.06.12
19:40
(6) а что ты читаешь? по-моему, хелп к 1С++ только на www.1cpp.ru есть
8 Rie
 
25.06.12
19:41
(6) Так, на всякий случай - а тип измерения Товар какой?
9 pofigos
 
25.06.12
19:41
Данного описания (именно подробного, увы не видел). Исправлюсь :)
10 pofigos
 
25.06.12
19:42
(6) товар - справочник товаров. 5 уровней иерархии
11 Rie
 
25.06.12
19:43
(10) Задан ли вид у измерения? (предполагаю, что задан, - но на всякий случай спрашиваю).
12 Rie
 
25.06.12
19:44
+(11) Дело в том, что есть ещё и УложитьСписокОбъектов13
13 pofigos
 
25.06.12
19:44
Да, конечно задан.
14 orefkov
 
25.06.12
21:44
Огласите ...ИК... весь текст запроса, пжста...
15 Тот же
 
25.06.12
21:52
Дело в том, что в результате запроса групп нет. Чтобы были группы нужно в запросе добавить родителя и по нему группировать.
И еще в условие Запрос.УложитьСписокОбъектов(Список,ИмяТаблицы) нужен третий параметр - тип саправочника.
16 pofigos
 
26.06.12
02:10
Всем спасибо, проблема была  в отсутствии 3-го параметра УложитьСписокОбъектов(Список, ИмяТаблицы, [ВидЭлементов])
AdBlock убивает бесплатный контент. 1Сергей