Имя: Пароль:
1C
1С v8
v8: Выбор всех элементов табличных частей
0 FuriKuri
 
08.04.13
12:30
Нужно выбрать все элементы из табличных частей трех документов. Как из 1 выбрать я знаю:

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ПереоценкаТоваровВРозницеТовары.Номенклатура
   
ИЗ
   Документ.ПереоценкаТоваровВРознице.Товары КАК ПереоценкаТоваровВРознТовары

А как из 3?
1 mikecool
 
08.04.13
12:32
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ПереоценкаТоваровВРозницеТовары.Номенклатура
   
ИЗ
   Документ.ПереоценкаТоваровВРознице.Товары КАК ПереоценкаТоваровВРознТовары
объединить все ....
2 MSII
 
08.04.13
12:34
Где ПереоценкаТоваровВРозницеТовары.Ссылка В (&ТриТвоихДокумента)
3 FuriKuri
 
08.04.13
13:08
ТАкая еще проблема. Я выбрал всю номенклатуру из документов, а также всю номенклатуру нужную из справочника номенклатуры. Каким образом можно из сопоставить так чтобы можно было сравнить и выгрузить те элементы которые есть в справочнике но которых нет в документах?
4 MSII
 
08.04.13
13:10
(3) Тебе есть смысл что-то по запросам почитать, чтобы набрать базовый уровень.
5 FuriKuri
 
08.04.13
13:13
(4) смсыл может и есть. но иедя может и не появится...
6 Jonny_Khomich
 
08.04.13
13:15
(5) зачем тебе сравнить твою выгруженную номеклатуру из документов со справочником номенклатуры?
7 FuriKuri
 
08.04.13
13:17
Нужно определить, какая номенклатура не используется в документах, и переместить ее в другую папку. Сделал через ссылки но это занимает большое время. теперь пробую вот так
8 FuriKuri
 
08.04.13
13:24
Вобщем я так понял нужно через левое соединение с проверкой на Null
9 mikecool
 
08.04.13
13:26
выбрать ссылка
из справочник.номенклатура
где не ссылка в (поззапрос на выборку номенклатуры из документов)
10 FuriKuri
 
08.04.13
13:29
(9) Я выше написал что делал через ссылки. Это занимает очень продолжительное время при большом количестве номенклатуры
11 mikecool
 
08.04.13
13:31
(10) я хз как ты это сделал через ссылки
что занимает продолжительное время? или ты думаешь - перебрать данные всей базы это два пальца об асфальт, если данных дохера?
12 FuriKuri
 
08.04.13
13:32
(11) ну вот хочу таким образом сделать и сравнить на скорость :)
13 FuriKuri
 
08.04.13
14:28
Сделал вот так. НО вот так, но почему то не выводятся значения :(

ТЗН1 = Новый ТаблицаЗначений;
ТЗН2 = Новый ТаблицаЗначений;

   
   
//поиск в документах    
Запрос1 = Новый Запрос;
Запрос1.Текст =  
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ПоступлениеТоваровУслуг.Номенклатура КАК товар
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ОприходованиеТоваров.Номенклатура КАК товар
|ИЗ
|    Документ.ОприходованиеТоваров.Товары КАК ОприходованиеТоваров
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ЗаказПокупателя.Номенклатура КАК товар
|ИЗ
|    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателя";

Результат = Запрос1.Выполнить();
ТЗДокумент = Результат.выгрузить();


//поиск в справочнике
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    Номенклатура.Ссылка КАК товар
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.ВидНоменклатуры = &ВидНоменклатуры";

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

Запрос = Новый Запрос;

Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ1 ИЗ &ТЗ КАК ТЗ1";
Запрос.УстановитьПараметр("ТЗ", ТЗДокумент);
Запрос.Выполнить();

Запрос.Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ2 ИЗ &ТЗ КАК ТЗ2";
Запрос.УстановитьПараметр("ТЗ", ТЗНоменклатура);
Запрос.Выполнить();

Запрос.Текст = "ВЫБРАТЬ
              |    ТЗ1.Товар
              |ИЗ
              |    ТЗ2 КАК ТЗ2
              |        ЛЕВОЕ СОЕДИНЕНИЕ ТЗ1 КАК ТЗ1
              |        ПО (ТЗ1.Товар = ТЗ2.Товар)
              |ГДЕ
              |    ТЗ2.Товар ЕСТЬ NULL ";

Выборка = Запрос.Выполнить().Выгрузить();


В чем я не прав ?
14 zladenuw
 
08.04.13
14:33
(13) ужас.
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ПоступлениеТоваровУслуг.Номенклатура КАК товар
ПОМЕСТИТЬ НоменклатураДокументов
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ОприходованиеТоваров.Номенклатура
ИЗ
   Документ.ОприходованиеТоваров.Товары КАК ОприходованиеТоваров

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ЗаказПокупателя.Номенклатура
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателя
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Номенклатура.Ссылка
ИЗ
   НоменклатураДокументов КАК НоменклатураДокументов
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
       ПО НоменклатураДокументов.товар = Номенклатура.Ссылка
ГДЕ
   НЕ Номенклатура.Ссылка В
               (ВЫБРАТЬ
                   ТЧ.товар
               ИЗ
                   НоменклатураДокументов КАК ТЧ)
15 zladenuw
 
08.04.13
14:34
(14) конструктор шайтан. без соединения
16 FuriKuri
 
08.04.13
14:36
Я уже разобрался... вконце неправильно соединения поставил..
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн