Имя: Пароль:
1C
1C 7.7
v7: Объясните, что не так с глФильтрПоПеременнойЗапроса
,
0 1C_noob_1C
 
19.11.12
15:38
Доброго времени суток.

Не могу понять что я делаю не так.


глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник",  "Номенклатура",        "Номенклатура",       "По номенклатуре или группе");
глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник",  "ЗначенияСвойств",    "Номенклатура",       "По свойствам номенклатуры");

СписокКодовОпераций = СоздатьОбъект("СписокЗначений");
           СписокКодовОпераций.ДобавитьЗначение(Перечисление.КодыОпераций.Перемещение);
           
           Запрос = СоздатьОбъект("Запрос");
           ТекстЗапроса =
           "//{{ЗАПРОС(Сформировать)
           |Период с ДатаНачалаРасчетов1 по ДатаКонцаРасчетов1;
           |Без итогов;
           |КодОперации = Регистр.ПартииНаличие.КодОперации;
           |Номенклатура = Регистр.ПартииНаличие.Номенклатура;
           |_1 = Регистр.ПартииНаличие.ТекущийДокумент.ПеремещениеТМЦ.СкладПолучатель;
           |Количество = Регистр.ПартииНаличие.Количество;
           |Функция КоличествоПриход = Приход(Количество);
           |Группировка Номенклатура без групп без упорядочивания;
           |Группировка Номенклатура;
           |Группировка _1;
           |Условие(КодОперации в СписокКодовОпераций);
           |Условие(_1.РозничныйСклад = 1);
           |"//}}ЗАПРОС
           ;
           
           Загол="";
           НетОш = 1; // нет ошибок при наложении фильтров
           НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Номенклатура",,, ТекстЗапроса, Загол,"СвойстваНоменклатуры");
           Если НетОш = 0 Тогда
               Возврат;
           КонецЕсли;


Запрос выбирает всю номенклатуру вне зависимости значений множественного фильтра по номенклатуре. По свойствам номенклатуры работает как надо.
Делал по аналогии с отчетом ОстаткиТМЦ (там все работает).

Подскажите, где ошибся или чего не хватает.

Платформа: 7.70.025
Коифигурация: ТиС 7.70.941
1 Ёпрст
 
19.11.12
15:40
|Группировка Номенклатура без групп без упорядочивания;
           |Группировка Номенклатура;

вот тут косяк номер раз
2 Ёпрст
 
19.11.12
15:42
а так, смотри что за текст запроса получился
перед Запрос.Выполнить..
например, Предупреждение(ТекстЗапроса)
3 1C_noob_1C
 
19.11.12
15:45
Ёпрст4, извиняюсь. Это была ошибка при копировании кода в тему.
Пробовал разные группировки...
4 Ёпрст
 
19.11.12
15:47
(3) смотри, что за текст запроса финальный..
+ желательно где то еще делать
глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст);
в сформировать
5 Ёпрст
 
19.11.12
15:47
чтоб фильтры обновились в МФ
6 1C_noob_1C
 
19.11.12
15:48
Смотрел текст запроса. глФильтрПоПеременнойЗапроса добавляет нужные условия и значение глобальных переменных правильные
7 1C_noob_1C
 
19.11.12
15:48
глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст);
делаю
8 пипец
 
19.11.12
15:48
|Условие(Номенклатура в Номенклатура??
9 1C_noob_1C
 
19.11.12
15:49
|Условие(Номенклатура в Условие1)
10 Ёпрст
 
19.11.12
15:49
текст запроса какой в итоге ?

в МФ что выбрано ?
1 элемент поди ?..
11 Ёпрст
 
19.11.12
15:50
в Условие1.. сколько элементов ? Один ?
И база sql ?
12 1C_noob_1C
 
19.11.12
15:53
текст запроса при фильтре только по номенклатуре:

//{{ЗАПРОС(Сформировать)
Период с ДатаНачалаРасчетов1 по ДатаКонцаРасчетов1;
Без итогов;
КодОперации = Регистр.ПартииНаличие.КодОперации;
Номенклатура = Регистр.ПартииНаличие.Номенклатура;
_1 = Регистр.ПартииНаличие.ТекущийДокумент.ПеремещениеТМЦ.СкладПолучатель;
Количество = Регистр.ПартииНаличие.Количество;
Функция КоличествоПриход = Приход(Количество);
Группировка Номенклатура;
Группировка _1;
Условие(КодОперации в СписокКодовОпераций);
Условие(_1.РозничныйСклад = 1);
Условие (Номенклатура в глУсловие1);


при фильтре по номенкларе и свойствам:


//{{ЗАПРОС(Сформировать)
Период с ДатаНачалаРасчетов1 по ДатаКонцаРасчетов1;
Без итогов;
КодОперации = Регистр.ПартииНаличие.КодОперации;
Номенклатура = Регистр.ПартииНаличие.Номенклатура;
_1 = Регистр.ПартииНаличие.ТекущийДокумент.ПеремещениеТМЦ.СкладПолучатель;
Количество = Регистр.ПартииНаличие.Количество;
Функция КоличествоПриход = Приход(Количество);
Группировка Номенклатура;
Группировка _1;
Условие(КодОперации в СписокКодовОпераций);
Условие(_1.РозничныйСклад = 1);
Условие (Номенклатура в глУсловие1);Условие (Номенклатура в глУсловие3);


Номенклатуры в фильтре > 0 (точнее 408)
13 1C_noob_1C
 
19.11.12
15:54
база не sql
14 Ёпрст
 
19.11.12
15:58
дык .. и что, не фильтрует ?
15 1C_noob_1C
 
19.11.12
15:59
вот и я хз(
16 1C_noob_1C
 
19.11.12
15:59
ни по номенклатуре ни группам номенклатуры
17 Ёпрст
 
19.11.12
15:59
т.е запрос пустой, или каак ?
18 Ёпрст
 
19.11.12
16:00
и вот это условие
Условие(_1.РозничныйСклад = 1);
ну не в п..у!
19 Ёпрст
 
19.11.12
16:00
тормоз это короче, а на скуле, так и подавно
20 1C_noob_1C
 
19.11.12
16:04
запрос не пустой
выбирает всю номенклатуру
21 1C_noob_1C
 
19.11.12
16:04
но странно то, что брал я это из отчета ОстаткиТМЦ
там все ОК
22 Ёпрст
 
19.11.12
16:06
ну дык, перед Запрос.Выполнить(ТекстЗапроса)
воткни

глУсловие1.ВыбратьЗначение(,);
глУсловие3.ВыбратьЗначение(,);

и сморти, что в списке и того ли оно типа.
23 1C_noob_1C
 
19.11.12
16:06
смотрел, все как надо
24 1C_noob_1C
 
19.11.12
16:08
глУсловие1 - список номенклатуры
глУсловие3 - список свойств
25 1C_noob_1C
 
19.11.12
16:09
извиняюсь, соврал
26 Ёпрст
 
19.11.12
16:10
а ?
27 1C_noob_1C
 
19.11.12
16:14
если фильтр по номенклатуре и по свойствам, то
глУсловие1 - список номенклатуры
глУсловие3 - список номенклатуры, с нужными свойствами
28 Ёпрст
 
19.11.12
16:16
а так ?
Группировка Номенклатура Без Групп;
29 Ёпрст
 
19.11.12
16:16
выбери 1 позицию и проверяй.
Всё должно фильтровать, ежели список не пустой в фильтре
30 Ёпрст
 
19.11.12
16:17
и это, жуколов закрой, если открыт
31 1C_noob_1C
 
19.11.12
16:24
"жуколов закрой"?
32 Ёпрст
 
19.11.12
16:34
jnkflxbr
33 1C_noob_1C
 
19.11.12
16:39
ага, туплю под конец рабочего дня))
34 1C_noob_1C
 
19.11.12
16:49
разобрался
ошибка была в данных фильтра
функции отрабатывали правильно
еще раз перед глФильтрПоПеременнойЗапроса вставил глПриСменеСтрокиТаблицыМФ, хотя она выполнялась в самом начале "Сформировать"

Спасибо за помощь.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс