![]() |
![]() |
![]() |
|
v7: Не работает запрос по документам | ☑ | ||
---|---|---|---|---|
0
XXX
27.05.16
✎
11:00
|
Добрый день!
1. ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Контрагент = Документ.Реализация.Контрагент; |Количество = Документ.Реализация.Количество; |Функция СуммаКоличество= Сумма(Количество); |Условие (не(Контрагент в Выбконтрагент)); |Группировка Контрагент;"; Не работает когда Выбконтрагент - это 1 элемент справочника или список из 1-ого элемента. Когда Выбконтрагент - это одна Группа справочника, или список из одной группы то работает. Или когда Выбконтрагент это список как минимум из двух элементов тоже работает. Также пробовал "|Условие (не(Контрагент = Выбконтрагент));" тоже не работает, а вот "|Условие (Контрагент <> Выбконтрагент);" работает блин ). 2. А такой запрос работает всегда, если выборку делать из регистра!!! ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Контрагент = Регистр.Продажи.Покупатель; |Количество = Регистр.Продажи.Количество; |Функция СуммаКоличество= Сумма(Количество); |Условие (не(Контрагент в Выбконтрагент)); |Группировка Контрагент;"; Это глюк в платформе? Или это уже давно известный факт? Или это у меня что-то не так? |
|||
1
Злопчинский
27.05.16
✎
12:50
|
база скульная?
|
|||
2
Злопчинский
27.05.16
✎
12:50
|
это фича на скульной базе
|
|||
3
пипец
27.05.16
✎
12:51
|
делай в списокзначений - работает всегда - что группа - что одно значение
|
|||
4
XXX
27.05.16
✎
15:05
|
(1) (2) База dbf.
(3) Если имеется ввиду по тексту ниже, то не работает. Выбконтрагент = СоздатьОбъект("СписокЗначений"); Выбконтрагент.ДобавитьЗначение(Контрагент); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Контрагент = Документ.Реализация.Контрагент; |Количество = Документ.Реализация.Количество; |Функция СуммаКоличество= Сумма(Количество); |Условие (не(Контрагент в Выбконтрагент)); |Группировка Контрагент;"; |
|||
5
XXX
27.05.16
✎
15:14
|
+ (4) А вот так работает.
Выбконтрагент = СоздатьОбъект("СписокЗначений"); Выбконтрагент.ДобавитьЗначение(Контрагент); Выбконтрагент.ДобавитьЗначение(Контрагент); //еще раз егоже ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Контрагент = Документ.Реализация.Контрагент; |Количество = Документ.Реализация.Количество; |Функция СуммаКоличество= Сумма(Количество); |Условие (не(Контрагент в Выбконтрагент)); |Группировка Контрагент;"; |
|||
6
пипец
27.05.16
✎
15:33
|
хе - а проверь принадлежит ? сработает ?
|
|||
7
XXX
27.05.16
✎
15:53
|
(6) Принадлежит = 1 или 0 работает блин
Выбконтрагент = СоздатьОбъект("СписокЗначений"); Выбконтрагент.ДобавитьЗначение(Контрагент); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Контрагент = Документ.Реализация.Контрагент; |Количество = Документ.Реализация.Количество; |Функция СуммаКоличество= Сумма(Количество); |Условие (Выбконтрагент.Принадлежит(Контрагент) = 0); // = 1 тоже работает |Группировка Контрагент;"; |
|||
8
XXX
27.05.16
✎
16:35
|
+ (7) Но запрос в этом случае не устанавливает фильтр при выборке, а делает полную выборку а потом отфильтровывает. Т.е. Что формировать по всем клиентам, что формировать по одному - одинаково долго. Просто идея такая - то что проблема выявилась, это факт. Пока это выявлено на одном отчете. Но наверняка существуют еще отчеты которые могут попасть под эту проблему. Поэтому хочется решить ее универсально, изменив функцию "глФильтрПоПеременнойЗапроса". Уж точно проблема решится в 90% отчетах. Остальные уже по факту. Но если ее изменить как в 7 (с "Имя1 в Имя2" на "Имя2.Принадлежит(Имя1)"), то все отчеты начнут дольше работать, это не устроит. Так что может есть у кого какие мысли? У меня пока только такая: Проверять списокЗначений в МФ в этой процедуре. И если в нем 1 элемент, то продублировать его. Но как то это не очень красиво вроде.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |