|
Сравнить 2 ТЗ | ☑ | ||
---|---|---|---|---|
0
Ruslan_
culeiman 01.02.17
✎
17:50
|
Есть 2 ТЗ, необходимо вытащить только те товары которые есть в ТЗ1, но нет в ТЗ2 :
ТЗ1 ТЗ2 Товар1 Товар1 Товар2 Подскажите примером кода пожалуйста |
|||
1
Heckfy
01.02.17
✎
17:55
|
Пример кода лень ваять.
Общий смысл: Запрос, тз во временные таблицы, левое соединение перовой со второй по NULL. |
|||
2
Aleksey
01.02.17
✎
17:55
|
В 7-ке, в 8-ке, в екселе?
|
|||
3
МихаилМ
01.02.17
✎
17:55
|
||||
4
Ruslan_
culeiman 01.02.17
✎
17:59
|
(1) левое соединение перовой со второй по NULL это вот так:
|ПО ВсяНоменклатура.Ссылка = NULL |
|||
5
Ёпрст
01.02.17
✎
18:03
|
||||
6
Chameleon1980
01.02.17
✎
18:37
|
(4) с нулл никогда не сравнишь
|
|||
7
Chameleon1980
01.02.17
✎
18:37
|
+ это ничто
|
|||
8
Heckfy
02.02.17
✎
10:01
|
(6) (7) - NULL - это что то :) :) :)
(4) Не, не так. Держи для примера запрос, который ищет контрагентов, у которых нет договоров. Свои таблицы в него подставь: &НаСервере Процедура СформироватьНаСервере() Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Контрагенты.Ссылка, | ДоговорыКонтрагентов.Ссылка КАК ВладелецСсылка |ИЗ | Справочник.Контрагенты КАК Контрагенты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ПО Контрагенты.Ссылка = ДоговорыКонтрагентов.Владелец |ГДЕ | ДоговорыКонтрагентов.Ссылка ЕСТЬ NULL " ; РезультатЗапроса=Запрос.Выполнить().Выбрать(); Сообщить(""+РезультатЗапроса.Количество()); КонецПроцедуры &НаКлиенте Процедура Сформировать(Команда) СформироватьНаСервере(); КонецПроцедуры |
|||
9
Shved_72
02.02.17
✎
10:02
|
Если на БСП:
ОбщегоНазначения.КоллекцииИдентичны(НовыйНабор,СтарыйНабор) |
|||
10
Альбатрос
02.02.17
✎
10:14
|
(9) Это несколько не то.
|
|||
11
iomoe
02.02.17
✎
10:25
|
Вот так, например:
ВЫБРАТЬ ТЗ1.Товар ИЗ ТЗ1 ГДЕ НЕ ТЗ1.Товар В (ВЫБРАТЬ ТЗ1.Товар ИЗ ТЗ2) |
|||
12
iomoe
02.02.17
✎
10:26
|
Опечатался немного: ВЫБРАТЬ ТЗ1.Товар ИЗ ТЗ1
ГДЕ НЕ ТЗ1.Товар В (ВЫБРАТЬ ТЗ2.Товар ИЗ ТЗ2) |
|||
13
Альбатрос
02.02.17
✎
10:27
|
(12) Соединение получше вложенного вопроса, имхо.
|
|||
14
iomoe
02.02.17
✎
10:29
|
Или так:
ВЫБРАТЬ ТЗ1.Товар ИЗ ТЗ1 ЛЕВОЕ СОЕДИНЕНИЕ ТЗ1 ПО ТЗ1.Товар = ТЗ2.Товар ГДЕ ТЗ2.Товар IS NULL |
|||
15
senior
02.02.17
✎
10:53
|
(1) отправлять на сервер БД таблицы, чтобы он сделал то, что можно сделать на сервере 1С? однако
|
|||
16
1dvd
02.02.17
✎
10:57
|
(6) а "Есть NULL" это не сравнение?
|
|||
17
Heckfy
02.02.17
✎
10:59
|
(15) Что это сейчас было?!?!?!
|
|||
18
mkalimulin
02.02.17
✎
11:00
|
(0) Просто собери в одну, а потом сверни.
|
|||
19
EvgeniuXP
02.02.17
✎
11:02
|
Только хардкод! Тз.НайтиСтроки()
|
|||
20
mkalimulin
02.02.17
✎
11:04
|
(19) Хардкор - это цикл по второй таблице внутри цикла по первой, школота!
|
|||
21
Windyhead
02.02.17
✎
11:04
|
(17) Грибы ))
|
|||
22
mkalimulin
02.02.17
✎
11:05
|
(17) Это было (18)
|
|||
23
Альбатрос
02.02.17
✎
11:08
|
(18) И что в итоге получится?
|
|||
24
mkalimulin
02.02.17
✎
11:12
|
(23) В итоге получится таблица, из которой можно выбрать искомое.
|
|||
25
EvgeniuXP
02.02.17
✎
11:14
|
(20) через найти и будешь два цикла делать, первый - обходить первую тз и находить во второй тз, второй - перебирай найденные :))) только хардкод!
|
|||
26
mkalimulin
02.02.17
✎
11:16
|
(25) Только хардкод - значит никаких найти(). Только "для" и "если".
|
|||
27
Альбатрос
02.02.17
✎
11:21
|
(24) из примера (0) у тебя получится первая таблица
|
|||
28
mkalimulin
02.02.17
✎
11:23
|
(27) Не тупи. Сворачиваешь с суммированием, разумеется.
|
|||
29
Рэйв
02.02.17
✎
11:25
|
ну если по хардкору то...
//- мУдалять=Новый Массив; Для каждого Стр Из Т2 Цикл мСтроки=Т!.НайтиСтроки(Новый Структура("Номенклатура",Стр.Номенклатура)); Для Каждого Эл из мСтроки цикл мУдалять.Добавить(Эл); Конеццикла; Конеццикла; Для Каждого Эл Из мУдалять Цикл Т1.Удалить(Эл); КонецЦикла; //-- Как то так:=) |
|||
30
mkalimulin
02.02.17
✎
11:26
|
(29) Молодец! Теперь сделай без найтистроки()
|
|||
31
Рэйв
02.02.17
✎
11:27
|
(30)что тут думать.Сравнением:-)
|
|||
32
Альбатрос
02.02.17
✎
11:28
|
(28) Он не договаривает, а туплю я ))))
|
|||
33
mkalimulin
02.02.17
✎
11:33
|
(32) Именно так.
|
|||
34
mkalimulin
02.02.17
✎
11:33
|
(31) Ну напиши. Мы полюбуемся.
|
|||
35
Рэйв
02.02.17
✎
11:39
|
(34)лень:-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |