Имя: Пароль:
1C
1С v8
Помогите разобраться с запросом
0 1Сергей
 
23.02.16
14:06
Есть регистр сведений ДвиженияТовара с реквизитом Контрагент.
Контрагент составного типа:
СправочникСсылка.Контрагенты
СправочникСсылка.ТорговыеТочки

Торговые точки подчинены контрагентам.
Необходимо выбрать всех контрагентов и торговых точек, но так, чтобы не было таких контрагентов, у которых в выборку попали подчиненные торговые точки.

Что делаю не так?


ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДвиженияТовара.Контрагент.Владелец КАК Контрагент,
    ДвиженияТовара.Контрагент КАК ТорговаяТочка
ПОМЕСТИТЬ ТорговыеТочки
ИЗ
    РегистрСведений.ДвиженияТовара КАК ДвиженияТовара
ГДЕ
    ДвиженияТовара.Период МЕЖДУ &Период1 И &Период2
    И ДвиженияТовара.Контрагент ССЫЛКА Справочник.ТорговыеТочки
    И ДвиженияТовара.Контрагент.Владелец.БрендКонтракта = &БрендКонтракта

СГРУППИРОВАТЬ ПО
    ДвиженияТовара.Контрагент.Владелец,
    ДвиженияТовара.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДвиженияТовара.Контрагент КАК Контрагент
ПОМЕСТИТЬ Контрагенты
ИЗ
    РегистрСведений.ДвиженияТовара КАК ДвиженияТовара
        ЛЕВОЕ СОЕДИНЕНИЕ ТорговыеТочки КАК ТорговыеТочки
        ПО ДвиженияТовара.Контрагент = ТорговыеТочки.Контрагент
ГДЕ
    ДвиженияТовара.Период МЕЖДУ &Период1 И &Период2
    И ДвиженияТовара.Контрагент ССЫЛКА Справочник.Контрагенты
    И ДвиженияТовара.Контрагент.БрендКонтракта = &БрендКонтракта
    И ТорговыеТочки.ТорговаяТочка ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    ДвиженияТовара.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Контрагент.Код КАК Код,
    ВЫБОР
        КОГДА Контрагенты.Контрагент ССЫЛКА Справочник.ТорговыеТочки
            ТОГДА ВЫБОР
                    КОГДА Контрагенты.Контрагент.ИД7 = ""
                        ТОГДА Контрагенты.Контрагент.ИД8
                    ИНАЧЕ Контрагенты.Контрагент.ИД7
                КОНЕЦ
        КОГДА Контрагенты.Контрагент.ИД = ""
            ТОГДА Контрагенты.Контрагент.Код
        ИНАЧЕ Контрагенты.Контрагент.ИД
    КОНЕЦ КАК ИД,
    Контрагенты.Контрагент.Наименование КАК Наименование,
    ВЫБОР
        КОГДА Контрагенты.Контрагент ССЫЛКА Справочник.ТорговыеТочки
            ТОГДА ВЫБОР
                    КОГДА ПОДСТРОКА(Контрагенты.Контрагент.ЮрАдрес, 1, 3) = ""
                        ТОГДА Контрагенты.Контрагент.Владелец.ЮрАдрес
                    ИНАЧЕ Контрагенты.Контрагент.ЮрАдрес
                КОНЕЦ
        ИНАЧЕ Контрагенты.Контрагент.ЮрАдрес
    КОНЕЦ КАК ЮрАдрес,
    ЕСТЬNULL(КаналыРынка.Код, Контрагенты.Контрагент.КодКаналаРынка) КАК КодКаналаРынка,
    ЕСТЬNULL(КаналыРынка.Наименование, Контрагенты.Контрагент.КаналРынка) КАК КаналРынка
ИЗ
    (ВЫБРАТЬ
        Контрагенты.Контрагент КАК Контрагент
    ИЗ
        Контрагенты КАК Контрагенты
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ТорговыеТочки.ТорговаяТочка
    ИЗ
        ТорговыеТочки КАК ТорговыеТочки
    
    СГРУППИРОВАТЬ ПО
        ТорговыеТочки.ТорговаяТочка) КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КаналыРынка КАК КаналыРынка
        ПО Контрагенты.Контрагент.СпрКаналРынка = КаналыРынка.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ТорговыеТочки
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ Контрагенты
1 Cyberhawk
 
23.02.16
14:09
Не так подаешь информацию - кому интерсно простыню твою читать?
2 1Сергей
 
23.02.16
14:13
(1) проблема возникает уже в создании второй временной таблицы. Туда попадат контрагенты, по которым в первой выборке уже есть торговые точки.
Достаточно прочитать этот кусок:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДвиженияТовара.Контрагент.Владелец КАК Контрагент,
    ДвиженияТовара.Контрагент КАК ТорговаяТочка
ПОМЕСТИТЬ ТорговыеТочки
ИЗ
    РегистрСведений.ДвиженияТовара КАК ДвиженияТовара
ГДЕ
    ДвиженияТовара.Период МЕЖДУ &Период1 И &Период2
    И ДвиженияТовара.Контрагент ССЫЛКА Справочник.ТорговыеТочки
    И ДвиженияТовара.Контрагент.Владелец.БрендКонтракта = &БрендКонтракта

СГРУППИРОВАТЬ ПО
    ДвиженияТовара.Контрагент.Владелец,
    ДвиженияТовара.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДвиженияТовара.Контрагент КАК Контрагент
ПОМЕСТИТЬ Контрагенты
ИЗ
    РегистрСведений.ДвиженияТовара КАК ДвиженияТовара
        ЛЕВОЕ СОЕДИНЕНИЕ ТорговыеТочки КАК ТорговыеТочки
        ПО ДвиженияТовара.Контрагент = ТорговыеТочки.Контрагент
ГДЕ
    ДвиженияТовара.Период МЕЖДУ &Период1 И &Период2
    И ДвиженияТовара.Контрагент ССЫЛКА Справочник.Контрагенты
    И ДвиженияТовара.Контрагент.БрендКонтракта = &БрендКонтракта
    И ТорговыеТочки.ТорговаяТочка ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    ДвиженияТовара.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
3 1Сергей
 
23.02.16
14:17
балин. Пока писал разобрался...
оказывается у меня дубли в контрагентах

Прошу прощения за беспокойство
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн