Имя: Пароль:
1C
 
Как запросом понять, первый ли это документ по клиенту?
,
0 Мигрень
 
30.03.17
11:01
Как запросом понять, первый ли это документ. Например, выбираю документы РТиУ за февраль по клиенту ООО "Ромашка". Если по этому клиенту были ранее документы (в январе, в предыдущих годах), то мне такой клиент не нужен и документы по нему в феврале в выборку не должны попадать. Как бы это так запрос сделать?
1 Анютик
 
30.03.17
11:03
выбрать первые 1 документ за весь период с отбором по контрагенту и посмотреть, если Null, значит первый документ)
2 Мигрень
 
30.03.17
11:08
(1) Может быть как-то можно левым соединением, а в условии ПО, указать "меньше" или "больше"..
3 Мигрень
 
30.03.17
11:12
А вот еще идея, может быть "Выбрать первые 1", где период (документы берутся из РН - регистраторы) меньше "дата начала отчета". Тогда не придется смотреть "с начала всех времен"..
4 dezss
 
30.03.17
11:19
а если так?

Выбрать контрагенты.ссылка,
док.ссылка
из справочник.контрагенты как контрагенты
левое соединение
  документы.РТиУ как док
  по док.контр = контрагенты.ссылка
где
  док.дата < &первоетекущегомесяца
  выбор когда док.ссылка = значение(документ.РТиУ.пустаяссылка)
  тогда
     истана
  иначе
     ложь
  конец
5 Анютик
 
30.03.17
11:21
(3) в какой конфигурации? в БП не все документы двигают одинаково РН. Можно и пропустить...но вообще да, чем меньше - тем быстрее:))
6 Мигрень
 
30.03.17
11:22
(4) А зачем справочник Контрагенты здесь? Достаточно просто выборка по документам.
7 dezss
 
30.03.17
11:22
(6) можно и так...просто в (0) было написано, что такой клиент не нужен, вот и решил прицепить, на всякий)))
8 Naf2017
 
30.03.17
11:23
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РТУ.Контрагент
ИЗ
    Документ.РеализацияТоваровУслуг КАК РТУ
ГДЕ
    РТУ.Дата МЕЖДУ &Дата1 И &Дата2
    И РТУ.Ссылка В
            (ВЫБРАТЬ ПЕРВЫЕ 1
                Т.Ссылка
            ИЗ
                Документ.РеализацияТоваровУслуг КАК Т
            ГДЕ
                Т.Контрагент = РТУ.Контрагент
            УПОРЯДОЧИТЬ ПО
                Т.Дата)
9 dezss
 
30.03.17
11:24
(6) к тому же, этот запрос выведет и тех, у кого нет документов в текущем...а из (0) не совсем понятно, нужны они или нет
10 Мигрень
 
30.03.17
11:24
(6) УТ11.2. Можно взять виртуальную таблицу РН "ВыручкаИСебестоимостьПродажОбороты". Задача - определить, были ли ранее отгрузки у клиента.
11 Мигрень
 
30.03.17
11:25
(9) Нет, без документов в текущем периоде не нужны, точно.
12 dezss
 
30.03.17
11:27
(11) ну тогда и нафиг их...
(10) в конкретной конфе можно найти много разных решений...
Но если есть сущность документа и основываемся на ней, то лучше ее и использовать.
А то решат они в очередном обновлении изменить этот регистр или вообще убрать и будет боль-слезы и вспоминание того, что же там делалось...
13 Рэйв
 
30.03.17
11:27
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РеализацияТоваровУслуг.Контрагент
ПОМЕСТИТЬ ВТ_Ненужные
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Дата < &ДатаНачФевраль
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Ссылка
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    НЕ Контрагенты.Ссылка В
                (ВЫБРАТЬ
                    ВТ_Ненужные.Контрагент
                ИЗ
                    ВТ_Ненужные)
14 dezss
 
30.03.17
11:28
(13) доки нужны, а не контрагенты, так что первой таблицы хватит)))
15 dezss
 
30.03.17
11:29
(14) тока знак больше или равно
16 Рэйв
 
30.03.17
11:30
(14)да там делов то для любого случая.:-)
Чего было тему поднимать
17 Naf2017
 
30.03.17
11:31
ВЫБРАТЬ
    РТУ.Контрагент
ИЗ
    Документ.РеализацияТоваровУслуг КАК РТУ

СГРУППИРОВАТЬ ПО
    РТУ.Контрагент

ИМЕЮЩИЕ
    МИНИМУМ(РТУ.Дата) МЕЖДУ &Дата1 И &Дата2
18 dezss
 
30.03.17
11:33
(16) сам в шоке)
19 dezss
 
30.03.17
11:34
(17) можно просто больше-равно даты начала месяца
20 Мигрень
 
30.03.17
11:34
Ога, сейчас что-нибудь выберу :)
21 olegves
 
30.03.17
11:38
(0) выбери за отчетный месяц во ВТ все документы за период, а потом выбор из ВТ с левым соединением по контрагенту к выборке за ранее начала твоего отчетного периода с условием Есть Null для соединенного поля...
как то так
22 Naf2017
 
30.03.17
11:42
(19) сказали же, что тех кого в этом периоде нет тоже не выбирать
23 Мигрень
 
30.03.17
11:44
(21) Да, что-то типа такого попробую сделвть
24 dezss
 
30.03.17
11:49
(22) ИМЕЮЩИЕ
    МИНИМУМ(РТУ.Дата) >= &ДатаНачалаМесяца
25 Naf2017
 
30.03.17
13:09
(24) туда попадут и те, у кого первая РТУ была в марте, а не в его месяце-феврале
26 Мигрень
 
30.03.17
13:19
Попробовал брать документы из виртуальной таблицы регистра и из физической. Из виртуальной-то оно побыстрее будет. Раза в два.
27 Мигрень
 
30.03.17
13:24
Вот так как-то получилось

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ОтгрузкиВТекущемПериоде.Партнер КАК Партнер,
    ВТ_ОтгрузкиВТекущемПериоде.Документ КАК Документ
ИЗ
    ВТ_ОтгрузкиВТекущемПериоде КАК ВТ_ОтгрузкиВТекущемПериоде
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПартнерыБылиОтгрузкиРанее КАК ПартнерыБылиОтгрузкиРанее
        ПО ВТ_ОтгрузкиВТекущемПериоде.Партнер = ПартнерыБылиОтгрузкиРанее.Партнер
ГДЕ
    ЕСТЬNULL(ПартнерыБылиОтгрузкиРанее.Партнер, 0) = 0
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн