К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Ностальгия. Запрос в 7.7 с условием НЕ

Гость
0 - 18.12.2015 - 14:06
На днях пришлось вспоминать запросы 7.7 И столкнулся с такой работой запроса, которую мне побороть пока не удалось.
конструкция
Условие(НЕ(Клиент в выбКлиент))
работает исключительно в том случае, если значение выбКлиент (реквизит на форме типа "Справочник.Контрагенты") это группа справочника. Если выбКлиент это элемент справочника, то запрос сразу выдает пустое значение выборки (даже не перебирая документы за период).

База файловая ТиС 8.7
Полный текст запроса:
Код:
|Период с начДата по конДата;
|ОбрабатыватьДокументы Проведенные;
|Клиент = Документ.ПриходнаяНакладная.Клиент,Документ.РасходнаяНакладная.Клиент;
|Товар = Документ.ПриходнаяНакладная.Товар,Документ.РасходнаяНакладная.Товар;
|КоличествоВ = Документ.ПриходнаяНакладная.Количество;
|Количество = Документ.РасходнаяНакладная.Количество;
|Сумма = Документ.РасходнаяНакладная.Сумма;
|СуммаВ= Документ.ПриходнаяНакладная.Сумма;
|тДок = Документ.ПриходнаяНакладная.ТекущийДокумент,Документ.РасходнаяНакладная.ТекущийДокумент;
|Функция ИтогКол = Сумма(Количество-КоличествоВ);
|Функция ИтогСум = Сумма(Сумма-СуммаВ); 
|Условие (Товар в выбТовар);
|Условие (НЕ(Клиент В выбКлиент));
|Группировка Клиент без групп;
|Группировка Товар без групп;
|Группировка тДок;";
Это такая фича или неправильно вспомнил как писать запросы 7.7 :-) ? Ради интереса попробовал конструкцию Условие(НЕ(Клиент = выбКлиент)) - не работает вообще (ни с элементом, ни с группой), сразу выдает пустую выборку.

PS Соответственно без этого "НЕ" все работает корректно: и с группой, и с элементом



Гость
1 - 18.12.2015 - 14:19
(+0)Пока вышел из ситуации при помощи проверки на принадлежность списку значения.
Но в идеале хотелось бы понять что не так, ночь же спать не буду :-)
Гость
2 - 18.12.2015 - 14:49
багофича, понять и простить разработчиков 1с7.7
Гость
3 - 18.12.2015 - 16:36
Да причем тут багофича, если мне не изменяет память, то в описании встроенного языка прямым текстом написано: работает только для групп, или списка значений. В 7,7 же нет иерархии элементов, как в 8.х.
Гость
4 - 18.12.2015 - 17:03
(3)Если в список значений добавить 1 элемент (не группу) и задать конструкцию
Условие (НЕ(Клиент в Список));
то тоже не работает, выдает сразу пустую выборку
Гость
5 - 18.12.2015 - 17:28
(4) не поверишь. Только что накропал простенький отчет для ЗиК. И да, это условие прекрасно работает. http://rghost.ru/8KFG2vmSq
Гость
6 - 18.12.2015 - 17:29
Взял первый попавшийся документ, так что в ЗиК должен быть введен и заполнен хоть один табель.
7 - 19.12.2015 - 01:50
4-Sasha > проверяй действительно ли файловая база
Проблемы с не и списком при наличии в списке единсвенного значения есть на скуле, на файловой вроде нормально работает

Более подробно смотри здесь
http://infostart.ru/public/83887/
Особенно комменты ближе к финишу
8 - 19.12.2015 - 02:15
Также можно рекомендовать текст запроса определять динамически, делая его более простым

ТекстЗапроса="
|
|ЧтоТо = ОткудаТо;
|
|%условие1%
|%условие2%
|
|Группировка ЧтоТо;
|";

Если типзначениястр(множество)="списокзначений" тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%условие%","Условие(ЧтоТ о в Множество);");
ИначеЕсли множество.ЭтоГруппа()=1 тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%условие%","Условие(ЧтоТ о в Множество);");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%условие%","Условие(ЧтоТ о = Множество);");
КонецЕсли;
Гость
9 - 19.12.2015 - 10:05
(8) хорошая статья,про запросы многого не знал. Хотя с 12 ошибкой сам сталкивался.


К списку вопросов






Copyright ©, Все права защищены