Имя: Пароль:
1C
1С v8
Левое соединение
,
0 Chuvaschow
 
04.08.15
09:38
Здравствуйте!

Помогите разобраться. Есть два регистра накопления: http://sendimage.me/6Kzz0xyA и http://sendimage.me/ObHFRxyB. Необходимо свести их в один отчет в разрезе ВидПродажи. Вот такой сделан запрос:

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

На выходе получаю http://sendimage.me/YZJ3LxyG, где пустые строки - это данные из регистра ОплатаСписком. Как объяснить 1с, что ВидПродажи и в том и в другом регистрах - один и тот же справочник и слить в одно значение?
1 leonidkorolev
 
04.08.15
09:41
Попробуй

ПО ПродажиПоСотрудникамОбороты.ВидПродажи =&Вид1 И ОплатаСпискомОбороты.ВидПродажи=&Вид2
2 leonidkorolev
 
04.08.15
09:42
ой нет ступил
3 sash-ml
 
04.08.15
09:44
(0) зачем левое соединение
объединить все не?
4 Лодырь
 
04.08.15
09:44
(0) Если у вас ЛЕВОЕ соединение, то зачем вам значения вида продаж из оплат списком? Оно априори совпадет и со значением в таблице продажи по сотрудникам.

Если вы хотите, чтобы попали и те и другие записи, следует использовать объединение.
5 Chuvaschow
 
04.08.15
09:46
(4) Сейчас попробую
6 Chuvaschow
 
04.08.15
09:49
Попробовал так

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

Итог такойже, без изменений
7 AllJoke
 
04.08.15
09:50
Выбрать * Из рег1
8 AllJoke
 
04.08.15
09:50
ОБЪЕДИНИТЬ ВСЁ
Выбрать * из Рег2
9 Бубка Гоп
 
04.08.15
09:51
(6) Не соединять надо, а объединять
10 Chuvaschow
 
04.08.15
09:57
Я правильно понял, что нужно создать 2 временные таблицы из регистров и в третьем запросе объединить их?
11 magicSan
 
04.08.15
09:59
12 Chuvaschow
 
04.08.15
10:10
ВЫБРАТЬ
    ПродажиПоСотрудникамОбороты.РозничнаяТочка,
    ПродажиПоСотрудникамОбороты.ВидПродажи,
    ЕСТЬNULL(ПродажиПоСотрудникамОбороты.СуммаОборот, 0) КАК СуммаОборот
ИЗ
    РегистрНакопления.ПродажиПоСотрудникам.Обороты(&НачалоПериода, &КонецПериода, Период, ) КАК ПродажиПоСотрудникамОбороты

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

ВЫБРАТЬ
    ОплатаСпискомОбороты.РозничнаяТочка,
    ОплатаСпискомОбороты.ВидПродажи,
    ЕСТЬNULL(ОплатаСпискомОбороты.СуммаОборот, 0)
ИЗ
    РегистрНакопления.ОплатаСписком.Обороты(&НачалоПериода, &КонецПериода, Период, ) КАК ОплатаСпискомОбороты
13 Chuvaschow
 
04.08.15
10:14
Не получается...
14 itlikbez
 
04.08.15
10:25
(13) Не объединяет?
15 Chuvaschow
 
04.08.15
10:28
Нет-нет. Помоему нужно исключить строки с пустым значением по колонке ВидПродажи в регистре ПродажиПоСотрудникам
16 Chuvaschow
 
04.08.15
10:46
Все получилось, спасибо огромное!
Закон Брукера: Даже маленькая практика стоит большой теории.