Имя: Пароль:
1C
 
Операторы "НЕ" "В" в ВТ
0 unbred
 
27.08.17
03:16
есть две временных таблицы
в 1й я получаю данные справочника,
во 2й я получаю данные справочника,которые используются в проведенных документах.
в результате запроса мне нужно получить
данные ВТ1, в которых нет данных ВТ2.
у меня получается примерно так:
ВЫБРАТЬ из вт1 как вт1  и вт2 как вт2
данные
ГДЕ
НЕ данныеВТ1 в (данныевт2) (или наоборот,не суть))
получатеся так,что я выбираю всё и в результате получаю всё,не смотря на условие.помогите с написанием(( .буду рад любой ссылке на похожий пример.
1 PuhUfa
 
27.08.17
03:22
запрос показывай
2 unbred
 
27.08.17
03:28
Запрос = Новый Запрос;
     Запрос.Текст =                                                                    
"ВЫБРАТЬ
|    ХарактеристикиНоменклатуры.Ссылка КАК ХарактеристикаСсылка,
|    ХарактеристикиНоменклатуры.Владелец КАК Владелец
|ПОМЕСТИТЬ ВТпопытка
|ИЗ
|    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|
|СГРУППИРОВАТЬ ПО
|    ХарактеристикиНоменклатуры.Владелец,
|    ХарактеристикиНоменклатуры.Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ПоступлениеТоваровУслугТовары.Характеристика КАК ХарактеристикиНоменклатуры
|ПОМЕСТИТЬ ВТХарИзДокПостТ
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|    ЗаказКлиентаТовары.Характеристика
|ИЗ
|    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|    РеализацияТоваровУслугТовары.Характеристика
|ИЗ
|    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|    ЗаказПоставщикуТовары.Характеристика
|ИЗ
|    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|    ТаможеннаяДекларацияИмпортТовары.Характеристика
|ИЗ
|    Документ.ТаможеннаяДекларацияИмпорт.Товары КАК ТаможеннаяДекларацияИмпортТовары
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|    СборкаТоваровТовары.Характеристика
|ИЗ
|    Документ.СборкаТоваров.Товары КАК СборкаТоваровТовары
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТХарИзДокПостТ.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|ПОМЕСТИТЬ ВТ
|ИЗ
|    ВТХарИзДокПостТ КАК ВТХарИзДокПостТ
|
|СГРУППИРОВАТЬ ПО
|    ВТХарИзДокПостТ.ХарактеристикиНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТпопытка.ХарактеристикаСсылка,
|    ВТ.ХарактеристикиНоменклатуры
|ИЗ
|    ВТ КАК ВТ,
|    ВТпопытка КАК ВТпопытка
|{ГДЕ
|    (НЕ ВТпопытка.ХарактеристикаСсылка В (ВТ.ХарактеристикиНоменклатуры)) КАК Поле1}"
;


запрос.УстановитьПараметр("ВидНоменклатуры",Объект.ВидНоменклатуры);
      выборка = запрос.Выполнить().Выгрузить();
      ТабличнаяЧасть.Загрузить(выборка);


последний запрос полный бред((
3 DES
 
27.08.17
07:55
а так ?
(ВТпопытка.ХарактеристикаСсылка не В (ВТ.ХарактеристикиНоменклатуры)) КАК Поле1}"
4 rphosts
 
27.08.17
08:35
какие нафиг фигурные скобки!
может так:

ГДЕ ВТ.ХарактеристикиНоменклатуры В (ВЫБРАТЬ ВТХарИзДокПостТ.ХарактеристикиНоменклатуры ИЗ ВТХарИзДокПостТ КАК ВТХарИзДокПостТ)

а перед этим  ВТ проиндексировать по ВТХарИзДокПостТ
5 Redkiy
 
27.08.17
08:46
Зачем тут вообще три временные таблицы? Достаточно одной.

|ВЫБРАТЬ
|    ПоступлениеТоваровУслугТовары.Характеристика
|ПОМЕСТИТЬ ВТ
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|
|;
|ВЫБРАТЬ
|    ХарактеристикиНоменклатуры.Ссылка,
|    ХарактеристикиНоменклатуры.Владелец
|ИЗ
|    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|
|ГДЕ НЕ ХарактеристикиНоменклатуры.Ссылка В(ВЫБРАТЬ ТЗ.Характеристика ИЗ ТЗ)
|СГРУППИРОВАТЬ ПО
|    ХарактеристикиНоменклатуры.Владелец,
|    ХарактеристикиНоменклатуры.Ссылка
6 Redkiy
 
27.08.17
08:47
(5) + опечатка, ТЗ заменить на ВТ
7 AlvlSpb
 
27.08.17
11:17
(6) Оператор "В" работает со списком значений или с массивом, с ТЗ работать не будет
8 Asmody
 
27.08.17
11:22
НЕ В работает медленно, если вообще работает. ЛЕВОЕ СОЕДИНЕНИЕ  с проверкой на NULL будет быстрее.
9 unbred
 
27.08.17
14:01
сделал левое соединение ,получил 2 колонки,в одной из которых пустые поля. хочу сделать что бы на форме были видны только те строки,в которых одно из значений пустое.
у колонок одинаковый тип ссылок,поэтому is null должно работать.
пишу
ГДЕ
колонка 1 ЕСТЬ NULL -синтаксическая ошибка
не хватает знаний синтаксиса. поисковик от меня уже устал.
помогите пожалуйста с одной строчкой((
10 unbred
 
27.08.17
14:04
надо к строке обратиться,а не к колонке.это понятно.
11 Tateossian
 
27.08.17
15:40
(7) Не прав. Работает. Вот пример (Номенклатура, Характеристика) В (ВЫБРАТЬ Номенклатура, Характеристика ИЗ НЕекийРЕгистр)
12 Tateossian
 
27.08.17
15:41
(2) ВОт это у тебя:
|{ГДЕ
|    (НЕ ВТпопытка.ХарактеристикаСсылка В (ВТ.ХарактеристикиНоменклатуры)) КАК Поле1}"

Конструкция построителя. Как мимнимум нужно оставить вот так:

|ГДЕ
|    (НЕ ВТпопытка.ХарактеристикаСсылка В (ВТ.ХарактеристикиНоменклатуры))
13 Redkiy
 
27.08.17
18:06
(7) Давно в профессии? Удивляет возраст, стаж на форуме и глупые советы.
14 unbred
 
27.08.17
18:19
сделал левым соединением и проверкой через null . спасибо.
15 unbred
 
27.08.17
20:52
хочу результат выборки этого запроса пометить на удаление
пишу
  выборка = запрос.Выполнить().Выгрузить();
      ТабличнаяЧасть.Загрузить(выборка);
      
      для каждого строка из выборка цикл
характеристика =строка.ссылка.получитьобъект();        
характеристика.пометкаудаления = истина;
конеццикла;
он мне отвечает "поле объекта не обнаружено (ссылка)
башка уже совсем не варит. почему я не могу получить объект?
16 unbred
 
27.08.17
20:59
(5) потому,что не все характеристики удалять надо,а только присущие неким документам.
17 Redkiy
 
28.08.17
05:44
(16) В постановке задачи в (0) у тебя как раз наоборот - выбрать элементы справочника не встречающиеся в документах.
18 1dvd
 
28.08.17
06:38
(15) запрос окончательный покажи

И пометка ставится методом УстановитьПометкуУдаления
19 unbred
 
28.08.17
09:42
(17) в Выбранных документах (2) извиняюсь за дезу.
(18) странно, у меня и так сработало.там по-моему без разницы.
в итоге в тз не ссылка была,а характеристикассылка.просто букв уже не видел. разобрался.