|
v7: Запрос, условие отрицания | ☑ | ||
---|---|---|---|---|
0
lg2marvel
29.07.13
✎
16:29
|
Добрый день.
Есть запрос: ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Поставщик = Справочник.Поставщики.Поставщик; |МестоХранения = Справочник.МестаХранения.ТекущийЭлемент; |ТМЦ = Справочник.ТМЦ.ТекущийЭлемент; |НеАктуальный = Справочник.ТМЦ.ТекущийЭлемент.НеАктуальный; |Условие(Поставщик.Принадлежит(выбПоставщик))=0; // |Условие (НЕ(Поставщик в (выбПоставщик))); |Группировка МестоХранения без групп; |Группировка ТМЦ без групп Все ВошедшиеВЗапрос; |Группировка Поставщик без групп; |Обрабатывать НеПомеченныеНаУдаление; |"//}}ЗАПРОС Для справочника ТМЦ есть подчиненный справочник Поставщики. Нужно чтоб запрос выдавал результат только тех позиций, по которым нет записей в подчиненном справочнике. Подскажите плз, как быть? |
|||
1
lg2marvel
29.07.13
✎
16:55
|
Забыл уточнить, данный пример выдает ошибку:
Условие(Поставщик.Принадлежит(выбПоставщик) <<?>> )=0; Запрос[6] : Неправильное использование операции сравнен |
|||
2
ДенисЧ
29.07.13
✎
16:56
|
|Условие(Поставщик.Принадлежит(выбПоставщик)=0);
|
|||
3
viktor_vv
29.07.13
✎
17:03
|
Так вроде тоже должно работать
|Условие (НЕ(Поставщик В ВыбПоставщик)); |
|||
4
lg2marvel
30.07.13
✎
10:46
|
Большое спасибо. Не знаю почему (3) вчера не работал.
|
|||
5
viktor_vv
30.07.13
✎
11:50
|
(4) Скобки лишние
в (выбПоставщик) |
|||
6
lg2marvel
30.07.13
✎
14:13
|
(3) условие явно не верно :-( выводит всех кроме указанных в выбПоставщик.
Подскажите как можно проверить отсутствие в подчиненном справочнике записи с полем = выбМестоХранения |
|||
7
lg2marvel
30.07.13
✎
14:19
|
Структура следующая:
Справочник ТМЦ Подчиненный справочник Поставщики поле МестоХранения поле Поставщик Запросом в (0) получаю ТМЦ, Поставщика для данного МестоХранения А вот как сделать наоборот ума не приложу. |
|||
8
lg2marvel
30.07.13
✎
14:21
|
На условие
|Условие(Поставщик.Принадлежит(выбПоставщик))=0; ругается при выполнении: --------------------------- 1С:Предприятие --------------------------- Поле агрегатного объекта не обнаружено (Принадлежит): 2 --------------------------- ОК --------------------------- |
|||
9
пипец
30.07.13
✎
14:24
|
почитай СП ...
Принадлежит(<?>) Синтаксис: Принадлежит(<Значение>) Назначение: Проверяет вхождение в список значений указанного значения, т.е. , является ли значение подмножеством списка значений Возвращает число: 1 - если проверяемое значение входит в список значений; 0 - если не входит |
|||
10
Ёпрст
30.07.13
✎
14:31
|
(8)
|Условие(Поставщик.Принадлежит(выбПоставщик)=0); |
|||
11
lg2marvel
30.07.13
✎
14:41
|
(10) Да, так и было в запросе, не с той строки скопировал.
|
|||
12
viktor_vv
30.07.13
✎
15:02
|
|Поставщик = Справочник.Поставщики.Поставщик;
// |МестоХранения = Справочник.МестаХранения.ТекущийЭлемент; |ТМЦ = Справочник.ТМЦ.ТекущийЭлемент,Справочник.Поставщики.Владелец; |НеАктуальный = Справочник.ТМЦ.ТекущийЭлемент.НеАктуальный; |Условие(Поставщик.Принадлежит(выбПоставщик))=0; // |Условие (ПустоеЗначение(Поставщик)=1); // |Группировка МестоХранения без групп; |Группировка ТМЦ без групп Все ВошедшиеВЗапрос; |Группировка Поставщик без групп; |Обрабатывать НеПомеченныеНаУдаление; |"//}}ЗАПРОС Если по первоначальному запросу, то как-то так. Опять же не уверен. И не совсем понятно как связаны Места хренения с ТМЦ и Поставщиками. |
|||
13
Ёпрст
30.07.13
✎
15:06
|
(11) тогда так:
(8) |Условие(выбПоставщик.Принадлежит(Поставщик)=0); где ВыбПоставщик - реквизит диалога или СЗ . |
|||
14
lg2marvel
30.07.13
✎
15:23
|
(13) да, ВыбПоставщик - реквизит диалога.
Поставщик = Справочник.Поставщики.Поставщик; Но результат тот же: --------------------------- 1С:Предприятие --------------------------- Поле агрегатного объекта не обнаружено (Принадлежит): 2 --------------------------- ОК --------------------------- Хотя тут (Результаты запроса в список значений все аналогично, но работает. |
|||
15
Voronve
30.07.13
✎
15:29
|
"//{{ЗАПРОС(Сформировать)
|ТМЦ = Справочник.ТМЦ.ТекущийЭлемент, Справочник.Поставщики.Владелец; |Поставщик = Справочник.Поставщики.Поставщик; |МестоХранения = Справочник.Поставщики.МестоХранения; |НеАктуальный = Справочник.Поставщики.Владелец.НеАктуальный; |Условие(ПустоеЗначение(Поставщик) = 1); |Группировка МестоХранения без групп; |Группировка ТМЦ без групп Все ВошедшиеВЗапрос; |Группировка Поставщик без групп; |Обрабатывать НеПомеченныеНаУдаление; |"//}}ЗАПРОС |
|||
16
lg2marvel
30.07.13
✎
15:42
|
(12) Ваш вариант проверить не удалось, причина в (8)(14),
попробовал так: |Поставщик = Справочник.Поставщики.Поставщик; |МестоХранения = Справочник.МестаХранения.ТекущийЭлемент; |ТМЦ = Справочник.ТМЦ.ТекущийЭлемент,Справочник.Поставщики.Владелец; |НеАктуальный = Справочник.ТМЦ.ТекущийЭлемент.НеАктуальный; |Условие (НЕ(Поставщик в выбПоставщик)); |Группировка МестоХранения без групп; |Группировка ТМЦ без групп Все ВошедшиеВЗапрос; |Группировка Поставщик без групп; |Обрабатывать НеПомеченныеНаУдаление; Получаю данные полностью с группы справочника ТМЦ = выбТовар. Связь между Место хренения, ТМЦ и Поставщиками следующая: Поставщики - подчиненный для ТМЦ, Поставщики имеет реквизиты Место хранения и Поставщик по которым делаем отбор ТМЦ в таблицу. (15) Получаю данные полностью с группы справочника ТМЦ = выбТовар Такое ощущение что условие полностью игнорируется, т.к. убрал его и получил тот же результат. |
|||
17
viktor_vv
30.07.13
✎
15:46
|
(16) Там не то закоментил.
// |Условие(Поставщик.Принадлежит(выбПоставщик))=0; |Условие (ПустоеЗначение(Поставщик)=1); Это тоже, что и в (15). |
|||
18
lg2marvel
30.07.13
✎
16:01
|
(17) (15) (13)
Может сформировать полный список ТМЦ а потом отобрать те в которых нет поставщиков? |
|||
19
Voronve
30.07.13
✎
16:03
|
(18) "нет поставщиков" это нет записей в подчиненном справочнике или поле постащик пустое ?
|
|||
20
Ёпрст
30.07.13
✎
16:12
|
(16) что это ?!
выкинуть всё в топку. |
|||
21
lg2marvel
30.07.13
✎
16:13
|
(19) нет записей
|
|||
22
lg2marvel
30.07.13
✎
16:14
|
(19) нет записей в подчиненном справочнике
|
|||
23
uno-group
30.07.13
✎
16:15
|
глянь типовую там категориитоваров так реализованы. делается в 2 запроса. одним некак
|
|||
24
lg2marvel
30.07.13
✎
17:36
|
Пробую так:
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Поставщик = Справочник.Поставщики.Поставщик; |МестоХранения = Справочник.Поставщики.МестоХранения; |ТМЦ = Справочник.Поставщики.Владелец; |НеАктуальный = Справочник.Поставщики.Владелец.НеАктуальный; |Группировка МестоХранения без групп; |Группировка ТМЦ без групп; |Группировка Поставщик без групп; |Обрабатывать НеПомеченныеНаУдаление; |"//}}ЗАПРОС ; ТекстЗапроса = ТекстЗапроса + "Условие (Поставщик в выбПоставщик);"; ТекстЗапроса = ТекстЗапроса + "Условие(НеАктуальный = 0);"; ТекстЗапроса = ТекстЗапроса + "Условие (ТМЦ в ВыбТовар);"; ТекстЗапроса = ТекстЗапроса + "Условие (МестоХранения в МФВыбСклады);"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; сз = СоздатьОбъект("СписокЗначений"); Запрос.Выгрузить(сз); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Поставщик = Справочник.Поставщики.Поставщик; |МестоХранения = Справочник.Поставщики.МестоХранения; |ТМЦ = Справочник.Поставщики.Владелец; |НеАктуальный = Справочник.Поставщики.Владелец.НеАктуальный; |Условие (Поставщик<>сз); |Группировка МестоХранения без групп; |Группировка ТМЦ без групп; |Группировка Поставщик без групп; |Обрабатывать НеПомеченныеНаУдаление; |"//}}ЗАПРОС ; Получается с точностью наоборот. Отбираются те данные которые есть в сз, а нужно наоборот - те которых там нет. |
|||
25
Ёпрст
30.07.13
✎
17:48
|
да ужж.
|Условие (Поставщик<>сз); |
|||
26
lg2marvel
31.07.13
✎
15:12
|
Странное дело, не сравнивает даже со списком значений.
|Условие (сз.Принадлежит(Поставщик) = 0); Поле агрегатного объекта не обнаружено (Принадлежит): 2 |
|||
27
Ёпрст
31.07.13
✎
15:25
|
(26) еще бы, чорный запрос не умеет выгружать в СЗ, у тебя в СЗ сейчас - таблица значений.
|
|||
28
Ёпрст
31.07.13
✎
15:26
|
дальше думай сам
|
|||
29
lg2marvel
31.07.13
✎
16:12
|
Ага, Вы открыли мне глаза.
Дуже дякую. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |