Имя: Пароль:
1C
1C 7.7
v7: 1C++ Запрос с фильтром по группе не работает
,
0 BARS_2
 
26.03.12
14:30
был готовый отчет на прямом запросе с фильтровалкой по выбраному контрагенту. понадобилось сделать с фильтром и по группе в том числе. вроде бы все сделал по правильному, но на выходе получаю пустую таблицу. Что где упустил сделал не так?
добавил вот такую ветку
           Если ВибКон.ЭтоГруппа()=1 Тогда
               SQLSes.УложитьСписокОбъектов13(ВибКон, "#ФілКон");
               
               ТекЗап = ТекЗап + "
               | AND ($ДокВиТ.Контрагент IN (SELECT Val FROM #ФілКон))
               |";
           Иначе
               SQLSes.УстановитьТекстовыйПараметр("ФілКон", ВибКон);
               
               ТекЗап = ТекЗап + "
               | AND ($ДокВиТ.Контрагент = :ФілКон)
               |";
           КонецЕсли;
1 Mikeware
 
26.03.12
14:35
Не прочитал описание
2 FN
 
26.03.12
14:35
$ДокВиТ.Контрагент - неопределенного вида?
3 Mikeware
 
26.03.12
14:36
(2) даже не в этом дело...
4 viktor_vv
 
26.03.12
14:40
SQLSes.УложитьСписокОбъектов13(ВибКон, "#ФілКон","ВидСправочникаВибКон");
5 FN
 
26.03.12
14:40
(3) ну А вдруг в "ВибКон" развернутый список :)
хотя маловероятно...
6 FN
 
26.03.12
14:42
(4) путешь
Синтаксис: УложитьСписокОбъектов13(Список, ИмяТаблицы)
7 FN
 
26.03.12
14:42
(6) *путаешь
8 viktor_vv
 
26.03.12
14:46
(6) А, может быть. Таки да. А то я таким не пользовался, думал по аналогии.
9 FN
 
26.03.12
14:47
(0) замени
SQLSes.УложитьСписокОбъектов13(ВибКон, "#ФілКон");
на
SQLSes.УложитьСписокОбъектов(ВибКон, "#ФілКон","Контрагенты");
10 BARS_2
 
26.03.12
14:54
(2)Реквизит определенного вида - справочник.контрагенты
(5) виб кон в данном случае - папка справочника
(9) сейчас попробую. хотя не ясна логика
11 BARS_2
 
26.03.12
14:57
(9) заработало. а объяснение можно? мне непонятна разница в тоговых временных таблицах #ФілКон
12 viktor_vv
 
26.03.12
14:57
Так логика простая.

strRefKinde (строка): вид справочника для иерархического включения элементов или вид плана счетов для иерархического включения счетов;
13 viktor_vv
 
26.03.12
14:58
УложитьСписокбъектов13 получаешь таблицу с колокной типа строка 13 знаков (ВидСправочника + ИдентификаторЭлемента).

УложитьСписокбъектов получаешь таблицу с колокной типа строка 9 знаков (ИдентификаторЭлемента).
14 BARS_2
 
26.03.12
15:08
(13) спасибо. в документашке на этом как-то незаострено.
15 BARS_2
 
26.03.12
15:11
правда может то у меня документашка такая. простая влет
16 МастерВопросов
 
26.03.12
15:20
(11) если в "уложитьсписок" указан третьим парметром Идентификатор справочника, то учитывается его иерархия, если не указан, то ищется просто вхождение в список, указанный в первом параметре см.(9)
17 Mikeware
 
26.03.12
15:59
(14) в документации как раз описано.
(16) и это справедливо только для УложитьСписокОбъектов, но не для УложитьСписокОбъектов13...
18 МастерВопросов
 
27.03.12
05:39
(14) Добрался до компа, цитирую мануал ("совершенно бедводмедно, т.е. даром"(с)):

УложитьСписокОбъектов(<?>,<?>,<?>)
Синтаксис:
PutObjectList(ObjList, strTableName, strRefKinde)
Назначение:
сохраняет список объектов во временной таблице MS SQL. Идентификаторы
объектов из списка ObjList сохраняются во временной таблице strTableName. Таблица
имеет единственное поле val char(9). Имя таблицы должно начинаться с символа «#».
Если strRefKinde идентификатор иерархического справочника, то таблица будет
содержать элементы иерархически принадлежащие группам переданным в списке.
(Подобно оператору «в» стандартного языка запросов 1С.)
Параметры:
- ObjList (СписокЗначений/АгрегатныйТип): список для сохранения или
элемент справочника, группа справочника, документ и т.п.;
- strTableName (строка): имя таблицы;
- strRefKinde (строка): вид справочника для иерархического включения элементов или вид плана счетов для иерархического включения счетов;