Имя: Пароль:
1C
1С v8
Дубли в справочнике
0 User_Agronom
 
06.03.13
11:32
Собственно запрос:
ВЫБРАТЬ
     Номенклатура1.Ссылка КАК Товар1,
     Номенклатура1.Артикул,
     Номенклатура2.Ссылка КАК Товар2,
     Номенклатура2.Артикул
ИЗ
 (ВЫБРАТЬ
     Ссылка,
     Артикул
ИЗ
     Справочник.Номенклатура) КАК Номенклатура1
ЛЕВОЕ СОЕДИНЕНИЕ
   (ВЫБРАТЬ
     Ссылка,
     Артикул
ИЗ
     Справочник.Номенклатура) КАК Номенклатура2
ПО Номенклатура1.Артикул = Номенклатура2.Артикул
  ГДЕ НЕ Номенклатура1.ССылка=Номенклатура2.Ссылка
   И НЕ Номенклатура1.Артикул = ""
УПОРЯДОЧИТЬ ПО Номенклатура1.Артикул

Запрос работает и работает правильно. Но он содержит дубли.
Как избавиться от дублей?
1 Wobland
 
06.03.13
11:33
выбери различные
2 Wobland
 
06.03.13
11:33
а ещё лучше выбери из одной таблицы
3 Defender aka LINN
 
06.03.13
11:33
Удалить из справочника
4 cw014
 
06.03.13
11:36
У ученых теперь только один вопрос: ЧТО ЭТО?
5 Defender aka LINN
 
06.03.13
11:37
(4) Это дубли, сэр!
6 1Сергей
 
06.03.13
11:37
(3)+1 универсальной обработкой
7 mistеr
 
06.03.13
11:38
(0) Чего хотим получить-то?
8 User_Agronom
 
06.03.13
11:38
(1) Записи то различные, просто Товар1 и Товар2 зеркально отражены.
(3)  (6) Цель исправить справочник. По артикулу грузится заказ из внешних файлов
(4) Запрос, который отлавливает номенклатуру с одинаковыми артикулами
9 User_Agronom
 
06.03.13
11:38
(7) Список номенклатуры с одинаковыми артикулами
10 1Сергей
 
06.03.13
11:39
(8) >> Цель исправить справочник. По артикулу грузится заказ из внешних файлов

И? чего теперь от нас хочешь? Ответ тебе уже дали
11 User_Agronom
 
06.03.13
11:40
(10) Мне интересно есть ли простой способ избавиться от сдвоений в этом запросе.
12 Defender aka LINN
 
06.03.13
11:41
(8) Для этого специально обученная обработка есть.
13 Defender aka LINN
 
06.03.13
11:41
(11) При чем тут запрос вообще?
14 mistеr
 
06.03.13
11:42
(9) Итоги по артикулу не пробовал?
15 Wobland
 
06.03.13
11:42
(13) чтобы познать магию полного соединения по равенству артикулов и неравенству ссылок
16 decdmb
 
06.03.13
11:43
Так может сгруппировать по артикулу и посчитать с количеством > 1 ?
17 User_Agronom
 
06.03.13
11:44
(13) Результат
ТоварА    ААА   ТоварБ ААА
ТоварБ    ААА   ТоварА ААА
Таким образом на одно сдвоение получаются две строки в результате выполнения запроса
(15) полного соединения?
(16) Запрос громоздкий получается. Может как проще можно?
18 decdmb
 
06.03.13
11:46
ВЫБРАТЬ
 Номенклатура.Артикул,
 КОЛИЧЕСТВО(*) КАК Количество
ИЗ
Справочник.Номенклатура
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
19 Мыш
 
06.03.13
11:47
(17)
ВЫБРАТЬ РАЗЛИЧНЫЕ Н1.Ссылка, Н2.Ссылка
ИЗ Справочник.Номенклатура КАК Н1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Н2
ПО Н1.Артикул=Н2.Артикул И НЕ Н1.Ссылка=Н2.Ссылка
20 exchang
 
06.03.13
11:52
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
21 mistеr
 
06.03.13
11:52
(18) СГРУППИРОВАТЬ забыл.

(19) А если 3, 4 дубля?
22 Defender aka LINN
 
06.03.13
11:53
(19) Вообще-то это разные строки.
23 decdmb
 
06.03.13
11:53
(21) Да, спс
24 Мыш
 
06.03.13
11:57
(22) Ты прав.
(21) Тогда так:
ВЫБРАТЬ РАЗЛИЧНЫЕ Н1.Ссылка
ИЗ Справочник.Номенклатура КАК Н1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Н2
ПО Н1.Артикул=Н2.Артикул И НЕ Н1.Ссылка=Н2.Ссылка
ИТОГИ ПО Н1.Артикул
25 User_Agronom
 
06.03.13
12:08
(24) Работает неправильно((
26 Мыш
 
06.03.13
12:11
(25) А именно?
27 Тролль главный
 
06.03.13
12:12
ВЫБРАТЬ
   Номенклатура.Артикул
ПОМЕСТИТЬ Дубли
ИЗ
   Справочник.Номенклатура КАК Номенклатура

СГРУППИРОВАТЬ ПО
   Номенклатура.Артикул

ИМЕЮЩИЕ
   КОЛИЧЕСТВО(Номенклатура.Ссылка) > 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Дубли.Артикул КАК Артикул,
   Номенклатура.Ссылка
ИЗ
   Дубли КАК Дубли
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
       ПО Дубли.Артикул = Номенклатура.Артикул

УПОРЯДОЧИТЬ ПО
   Артикул
28 User_Agronom
 
06.03.13
12:18
(26) Количество номенклатуры в результате гораздо больше имеющихся дублей.
(27) Я думал про это. И про вариант с количеством. И даже путем перебора в цикле результата запроса (0).
Одним запросом получается никак нельзя((
29 Reset
 
06.03.13
12:19
(24) Оно же крайне медленно работать будет
(18) нормально с учетом (21
30 Reset
 
06.03.13
12:20
(28) Чего нельзя? тебе же полный вариант привели в (27)
31 User_Agronom
 
06.03.13
12:30
(27) (30) Работает правильно и хорошо. Спасибо.
Но это два запроса
32 Тролль главный
 
06.03.13
12:35
(31) это один, пакетный, не нравится временная таблица - всунь в подзапрос
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший