Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Запрос Левое соединение

Запрос Левое соединение
Я
   KonstantinK90
 
06.09.16 - 06:57
Всем привет помогите разобраться с запросом! мне нужно запросом. Задача такая: Необходимо разработать отчет по ежемесячному приросту новых торговых точек(Контрагентов), купивших продукцию Супротек.
Торговая точка считается новой с даты первой отгрузки. делаю вот так чет е получается
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВложВзаиморасчеты.Регистратор КАК Регистратор,
    ВложВзаиморасчеты.Контрагент КАК Контрагент,
    СупротекНоменклатура.Номенклатура
ИЗ
    (ВЫБРАТЬ
        ПродажиОбороты.Регистратор.Ссылка КАК РегистраторСсылка,
        ПродажиОбороты.Номенклатура КАК Номенклатура,
        ПродажиОбороты.Контрагент КАК Контрагент
    ИЗ
        РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ПродажиОбороты
    ГДЕ
        ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) КАК СупротекНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВзаиморасчетыСКонтрагентамиОбороты.Регистратор КАК Регистратор,
            ВзаиморасчетыСКонтрагентамиОбороты.Контрагент КАК Контрагент
        ИЗ
            РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, &НачалоПериода, Регистратор, ) КАК ВзаиморасчетыСКонтрагентамиОбороты) КАК ВложВзаиморасчеты
        ПО СупротекНоменклатура.РегистраторСсылка = ВложВзаиморасчеты.Регистратор
            И СупротекНоменклатура.Контрагент = ВложВзаиморасчеты.Контрагент

УПОРЯДОЧИТЬ ПО
    Контрагент
 
 
   KonstantinK90
 
1 - 06.09.16 - 06:59
Как правильно проверить у нас есть некий период как узнать были ли продажи до этого периода если нет тогда считаем контрагента новым
   Jonny_Khomich
 
2 - 06.09.16 - 07:12
сделай реквизит или свойство у контрагента, дата первой покупки, заполняй его при проведении документа и ориентируйся на него. на прошлой работе так было
   KonstantinK90
 
3 - 06.09.16 - 07:15
на будущее как вармант а сейчас как быть?
   AlexToo
 
4 - 06.09.16 - 07:15
(1) я б наверно, заморочился и выбрал бы сначала из регистра продаж контрагентов и период регистрации, с группировкой по контрагенту, что бы по каждому было видно когда была первая покупка, а потом обходя этот результат проверял, попадет ли дата первой покупки в заданный период или нет.
   KonstantinK90
 
5 - 06.09.16 - 07:18
ну вот выбрал я продажи по конкретной номенклатуре
ВЫБРАТЬ РАЗЛИЧНЫЕ
    СупротекНоменклатура.РегистраторСсылка,
    СупротекНоменклатура.Контрагент
ИЗ
    (ВЫБРАТЬ
        ПродажиОбороты.Регистратор.Ссылка КАК РегистраторСсылка,
        ПродажиОбороты.Номенклатура КАК Номенклатура,
        ПродажиОбороты.Контрагент КАК Контрагент
    ИЗ
        РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ПродажиОбороты
    ГДЕ
        ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) КАК СупротекНоменклатура
   KonstantinK90
 
6 - 06.09.16 - 07:19
а как проверить запросом есть ли продажи по этим контрагентам
   KonstantinK90
 
7 - 06.09.16 - 07:20
за предыдущие периоды
   AlexToo
 
8 - 06.09.16 - 07:26
(7) ты на СКД всё это делаешь одним запросом хочешь всё сделать?
   KonstantinK90
 
9 - 06.09.16 - 07:26
да
   AlexToo
 
10 - 06.09.16 - 07:33
(9) попробуй вложенным запросом к своему выбрать из продаж контрагента и период с отбором по дате меньше чем начало твоего периода и потом по контрагенту соединять вложенный запрос с твоим результатом по супротеку, если во вложенном запросе есть данные значит есть продажи за предыдущий период.
 
 Рекламное место пустует
   KonstantinK90
 
11 - 06.09.16 - 07:43
чет не получается по смотри может я не правильно че делаю
ВЫБРАТЬ РАЗЛИЧНЫЕ
    СупротекНоменклатура.РегистраторСсылка,
    ВложенныйПредПериод.Номенклатура,
    СупротекНоменклатура.Контрагент
ИЗ
    (ВЫБРАТЬ
        ПродажиОбороты.Регистратор.Ссылка КАК РегистраторСсылка,
        ПродажиОбороты.Номенклатура КАК Номенклатура,
        ПродажиОбороты.Контрагент КАК Контрагент
    ИЗ
        РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ПродажиОбороты
    ГДЕ
        ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) КАК СупротекНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПродажиОбороты.Номенклатура КАК Номенклатура,
            ПродажиОбороты.Контрагент КАК Контрагент
        ИЗ
            РегистрНакопления.Продажи.Обороты(, &НачалоПериода, Регистратор, ) КАК ПродажиОбороты
        ГДЕ
            ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) КАК ВложенныйПредПериод
        ПО СупротекНоменклатура.Контрагент = ВложенныйПредПериод.Контрагент
   KonstantinK90
 
12 - 06.09.16 - 07:45
блин уже все утро сижу ни как не получаетсмя
   azt-yur
 
13 - 06.09.16 - 07:57
В запросе делай группировки по Контрагенту и ресурс Минимум(Период) и условие на ресурс между начПериод и конПериод
   azt-yur
 
14 - 06.09.16 - 07:58
+ (13) и без указания периода в таблице оборотов
   azt-yur
 
15 - 06.09.16 - 08:01
Хотя хрень будет если оборотов в регистре много. Будет тормозить и память жрать. Лучше как в (2) сделать по подписке на событие
   AlexToo
 
16 - 06.09.16 - 08:14
(11) получается он у тебя так выберет из второй таблицы, либо записи если есть предыдущие продажи, либо Null если их нет. Поэтому надо ещё условие на проверку, что тебе нужны записи именно с Null вместо контрагента. Ещё отбора по номенклатуре че-то совсем не увидел, ты вроде говорил, по супротеку нужна.
И да если оборотов в регистре много будет притормаживать.
Можт правда сделать реквизит у контрагента, и обратоботкой проставить даты?
   FIXXXL
 
17 - 06.09.16 - 08:18
(3) сейчас построить таблицу "первой покупки" по клиенту, обойти справочник и проставить дату
   mkalimulin
 
18 - 06.09.16 - 08:46
(0) Список новых контрагентов за период:

ВЫБРАТЬ Контрагент
ИЗ РегистрНакопления.Продажи
СГРУППИРОВАТЬ ПО Контрагент
ИМЕЮЩИЕ МИНИМУМ(Период) между &НачалоПериода И &КонецПериода


Вам надо тренироваться.
http://catalog.mista.ru/public/533557/

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует