Имя: Пароль:
1C
 
Поиск дублей документа в запросе (дубли определяются по четырем реквизитам)
0 Пип Пибип
 
19.05.11
17:34
День добрый, господа.

Задача стоит - вывести в отчете документы Поступление товаров и услуг, имеющие одинаковые поля:
Дата (без учета времени),
Контрагент,
Сумма,
Организация.

Наваял такой запрос:


ВЫБРАТЬ
   ПоступлениеТоваровУслуг.Дата КАК Дата,
   ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
   ПоступлениеТоваровУслуг.Организация КАК Организация,
   ПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
   ПоступлениеТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента,
   ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокумента
ИЗ
   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг

СГРУППИРОВАТЬ ПО
   Ссылка,
   НАЧАЛОПЕРИОДА(Дата, День),
   Организация,
   Контрагент,
   ДоговорКонтрагента,
   СуммаДокумента
   
ИМЕЮЩИЕ
   КОЛИЧЕСТВО(НАЧАЛОПЕРИОДА(Дата, День)) > 1
   И КОЛИЧЕСТВО(Контрагент) > 1
   И КОЛИЧЕСТВО(СуммаДокумента) > 1
   И КОЛИЧЕСТВО(Организация) > 1

УПОРЯДОЧИТЬ ПО
   Дата


Запрос возвращает пустую выборку. Заведомо подходящие документы-дубли в базе есть. Как чинить запрос? Хоть в ту сторону копаю (КОЛИЧЕСТВО(ххх) > 1)?
1 SupC
 
19.05.11
17:36
как он у тебя по ССЫЛКА сгруппирует????
2 Пип Пибип
 
19.05.11
17:37
Упс, очевидно, что никак :)))
3 AaNnDdRrEeYy
 
19.05.11
17:38
и договор кажется лишним
4 Grusswelle
 
19.05.11
17:38
ВЫБРАТЬ
   1 КАК ПодходящийДокумент

...потом группируешь.
5 Ksandr
 
19.05.11
17:46
ВЫБРАТЬ
СУММА (1),
НачалоПериода(Дата, День),
Контрагент.... бла бла
Из
.....
СГРУППИРОВАТЬ ПО

НачалоПериода(Дата, День),
Контрагент.... бла бла

Имеющие
СУММА (1) > 1
6 Ksandr
 
19.05.11
17:48
или Количество(РАЗЛИЧНЫЕ Ссылка) вместо СУММА(1)
7 Ksandr
 
19.05.11
17:50
Можно сделать ПОМЕСТИТЬ ВТ_Дубли
и потом
ВЫБРАТЬ
ВТ_Дубли.....,
Доки.Ссылка
Из ВТ_Дубли
ЛЕВОЕ СОЕДИНЕНИЕ Доки
ПО .....

суешь это компоновке, делаешь группировку, в ней указываешь все поля и наслаждаешься
8 Ksandr
 
19.05.11
17:50
+ к (7) все поля кроме Доки.Ссылка
9 Пип Пибип
 
20.05.11
11:28
(5) и все остальным авторам - мега спасибо!
Если кому понадобится, результат выглядит вот так:

ВЫБРАТЬ
   СУММА(1) КАК КоличествоДублей,
   НАЧАЛОПЕРИОДА(ПоступлениеТоваровУслуг.Дата, ДЕНЬ) КАК Дата,
   ПоступлениеТоваровУслуг.Организация КАК Организация,
   ПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
   ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокумента
ПОМЕСТИТЬ ВТ_Дубли
ИЗ
   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг

СГРУППИРОВАТЬ ПО
   НАЧАЛОПЕРИОДА(ПоступлениеТоваровУслуг.Дата, ДЕНЬ),
   ПоступлениеТоваровУслуг.Организация,
   ПоступлениеТоваровУслуг.Контрагент,
   ПоступлениеТоваровУслуг.СуммаДокумента

ИМЕЮЩИЕ
   СУММА(1) > 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_Дубли.Дата,
   ВТ_Дубли.Организация,
   ВТ_Дубли.Контрагент,
   ВТ_Дубли.СуммаДокумента,
   ПоступлениеТоваровУслуг.Ссылка
ИЗ
   ВТ_Дубли КАК ВТ_Дубли
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
       ПО (НАЧАЛОПЕРИОДА(ПоступлениеТоваровУслуг.Дата, ДЕНЬ) = ВТ_Дубли.Дата)
           И (ПоступлениеТоваровУслуг.Контрагент = ВТ_Дубли.Контрагент)
           И (ПоступлениеТоваровУслуг.СуммаДокумента = ВТ_Дубли.СуммаДокумента)
           И (ПоступлениеТоваровУслуг.Организация = ВТ_Дубли.Организация)

СГРУППИРОВАТЬ ПО
   ВТ_Дубли.Контрагент,
   ВТ_Дубли.СуммаДокумента,
   ВТ_Дубли.Организация,
   ВТ_Дубли.Дата,
   ПоступлениеТоваровУслуг.Ссылка

УПОРЯДОЧИТЬ ПО
   ВТ_Дубли.Дата
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший