Имя: Пароль:
1C
1С v8
Пустые результаты в запросе.
0 ogion83
 
12.08.14
14:39
Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    ВзаиморасчетыОстаткиИОбороты.Контрагент КАК Контрагент,
            |    ВзаиморасчетыОстаткиИОбороты.ВидВзаиморасчетов КАК ВидВзаиморасчетов,
            |    ЕстьNull(ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток,0) КАК СуммаНачальныйОстаток,
            |    ЕстьNull(ВзаиморасчетыОстаткиИОбороты.СуммаПриход,0) КАК СуммаПриход,
            |    ЕстьNull(ВзаиморасчетыОстаткиИОбороты.СуммаРасход,0) КАК СуммаРасход,
            |    ЕстьNull(ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток,0) КАК СуммаКонечныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ
            |ИЗ
            |    РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&Дата1, &Дата2, Авто, , ) КАК ВзаиморасчетыОстаткиИОбороты
            |ГДЕ
            |    ВзаиморасчетыОстаткиИОбороты.Контрагент В(&Контрагент) И
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления = &ПометкаУдаления
            |ИТОГИ
            |    СУММА(СуммаНачальныйОстаток),
            |    СУММА(СуммаПриход),
            |    СУММА(СуммаРасход),
            |    СУММА(СуммаКонечныйОстаток)
            |ПО
            |    ВидВзаиморасчетов,
            |    Контрагент,
            |    Документ";
        Запрос.УстановитьПараметр("Контрагент",СписокКонтрагентовСПериодическимиВыплатами);
        Запрос.УстановитьПараметр("Дата1",НачалоМесяца(Дата));
        Запрос.УстановитьПараметр("Дата2",КонецДня(Дата));
        Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);
Как бы сделать так, чтобы в результате запроса были и те контрагенты из списка, по которым не было движений за месяц?
1 Molinor
 
12.08.14
14:40
К справочнику контрагентов левым соединением то, что есть.
2 Господин ПЖ
 
12.08.14
14:41
левое соедниние в временной таблицей

>ЕстьNull(

это откуда сейчас возьмется?
3 ogion83
 
12.08.14
14:50
Что то не выходит
4 salvator
 
12.08.14
14:51
(3) Покажи запрос
5 ogion83
 
12.08.14
14:52
Запрос.Текст =
            "ВЫБРАТЬ
            |    ВзаиморасчетыОстаткиИОбороты.Контрагент КАК Контрагент,
            |    ВзаиморасчетыОстаткиИОбороты.ВидВзаиморасчетов КАК ВидВзаиморасчетов,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК СуммаПриход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК СуммаРасход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ
            |ИЗ
            |    РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&Дата1, &Дата2, Авто, , ) КАК ВзаиморасчетыОстаткиИОбороты
            |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
            |        ПО ВзаиморасчетыОстаткиИОбороты.Контрагент = Контрагенты.Ссылка
            |ГДЕ
            |    ВзаиморасчетыОстаткиИОбороты.Контрагент В(&Контрагент)
            |    И ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления = &ПометкаУдаления
            |ИТОГИ
            |    СУММА(СуммаНачальныйОстаток),
            |    СУММА(СуммаПриход),
            |    СУММА(СуммаРасход),
            |    СУММА(СуммаКонечныйОстаток)
            |ПО
            |    ВидВзаиморасчетов,
            |    Контрагент,
            |    Документ";
        Запрос.УстановитьПараметр("Контрагент",СписокКонтрагентовСПериодическимиВыплатами);
        Запрос.УстановитьПараметр("Дата1",НачалоМесяца(Дата));
        Запрос.УстановитьПараметр("Дата2",КонецДня(Дата));
        Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);
6 Господин ПЖ
 
12.08.14
14:53
>Что то не выходит

как я вас понимаю...
7 salvator
 
12.08.14
14:53
(5) Надо наоборот к справочнику цеплять левым соединением регистр. Или просто заменить на правое в своем запросе.
8 Господин ПЖ
 
12.08.14
14:53
накуа тебе весь справочник если уже список есть
9 AlexITGround
 
12.08.14
15:07
1. Убери соединение вообще.
2. И ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления = &ПометкаУдаления
Запрос.УстановитьПараметр("ПометкаУдаления",Ложь); - вот это можно просто
И Не ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления
10 Fragster
 
гуру
12.08.14
15:16
в конструкторе галку "все" поставить около контрагентов а не около взаиморасчетов
11 beer_fan
 
12.08.14
15:16
(9) Классно сказал - убрать соединение... это чтобы запрос систему гарантированно убил, если контрагентов много?
12 AlexITGround
 
12.08.14
15:19
(11) ВзаиморасчетыОстаткиИОбороты.Контрагент В(&Контрагент)

а это зачем, как ты думаешь?
13 AlexITGround
 
12.08.14
15:21
зачем тут соединение к справочнику я вообще неврублевский
14 beer_fan
 
12.08.14
15:23
(13) А если в СписокКонтрагентовСПериодическимиВыплатами не будет движений по какому-то контрагенту, а видеть его надо?
Только тогда надо это ограничение к справочнику контрагентов применять, а не к виртуальной таблице.
15 Fram
 
12.08.14
15:24
(13) "... те контрагенты из списка, по которым не было движений ..." из (0)
16 AlexITGround
 
12.08.14
15:41
(14),(15) круто рассуждаете, у меня , например, 90к контрагентов, а у ТС возможно и того больше, так целый справочник за каких пять лет соединять?
17 Fram
 
12.08.14
15:45
(16) да хоть 100500. не телепат, ответил в рамках вопроса
18 salvator
 
12.08.14
15:46
(16) Зачем весь справочник, если нужно только то, что лежит в &Контрагенты?
19 AlexITGround
 
12.08.14
15:49
(18) совершенно верно, см 9, 12.
20 ogion83
 
12.08.14
16:45
Что то (10) не нахожу
21 ogion83
 
12.08.14
16:51
Запрос.Текст =
            "ВЫБРАТЬ
            |    ВзаиморасчетыОстаткиИОбороты.Контрагент КАК Контрагент,
            |    ВзаиморасчетыОстаткиИОбороты.ВидВзаиморасчетов КАК ВидВзаиморасчетов,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК СуммаПриход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК СуммаРасход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ
            |ИЗ
            |    РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&Дата1, &Дата2, Авто, , ) КАК ВзаиморасчетыОстаткиИОбороты
            |ГДЕ
            |    ВзаиморасчетыОстаткиИОбороты.Контрагент В(&Контрагент)
            |    И ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления = &ПометкаУдаления
            |ИТОГИ
            |    СУММА(СуммаНачальныйОстаток),
            |    СУММА(СуммаПриход),
            |    СУММА(СуммаРасход),
            |    СУММА(СуммаКонечныйОстаток)
            |ПО
            |    ВидВзаиморасчетов,
            |    Контрагент,
            |    Документ";
        Запрос.УстановитьПараметр("Контрагент",СписокКонтрагентовСПериодическимиВыплатами);
        Запрос.УстановитьПараметр("Дата1",НачалоМесяца(Дата));
        Запрос.УстановитьПараметр("Дата2",КонецДня(Дата));
        Запрос.УстановитьПараметр("ПометкаУдаления",Ложь);
Нет ничего такого чтоб в конструкторе может указать?
22 RomanYS
 
12.08.14
16:53
смотри (1)
23 SSSSS_AAAAA
 
12.08.14
16:54
(21) Это надо выбирать ВСЕХ контрагентов и уже к ним цеплять обороты из регистра.
24 ogion83
 
12.08.14
16:55
(23) Попробую, если получится.
25 AlexITGround
 
12.08.14
17:59
(24) ты скажи, тебе в выборке все контрагенты нужны или только те, по которым есть остаток, было движение?
26 ogion83
 
13.08.14
08:16
(25) Нужны все контрагенты, которые есть в списке.
27 ogion83
 
13.08.14
09:18
Может как то так?
"ВЫБРАТЬ
            |    ВзаиморасчетыОстаткиИОбороты.Контрагент КАК Контрагент,
            |    ВзаиморасчетыОстаткиИОбороты.ВидВзаиморасчетов КАК ВидВзаиморасчетов,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК СуммаПриход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК СуммаРасход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ
            |ИЗ
            |    Справочник.Контрагенты КАК Контрагенты
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&Дата1, &Дата2, Авто, ДвиженияИГраницыПериода, ) КАК ВзаиморасчетыОстаткиИОбороты
            |        ПО (ВзаиморасчетыОстаткиИОбороты.Контрагент = Контрагенты.Ссылка)
            |ГДЕ
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления = &ПометкаУдаления
            |    И Контрагенты.Ссылка В(&Контрагент)
            |ИТОГИ
            |    СУММА(СуммаНачальныйОстаток),
            |    СУММА(СуммаПриход),
            |    СУММА(СуммаРасход),
            |    СУММА(СуммаКонечныйОстаток)
            |ПО
            |    ВидВзаиморасчетов,
            |    Контрагент,
            |    Документ";
Но не выходит...
28 AlexITGround
 
13.08.14
09:31
У меня УПП, немножко другая структура, делай по аналогии
code
ВЫБРАТЬ
    Контрагенты.Ссылка,
    ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаНачальныйОстаток,
    ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаПриход,
    ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК СуммаРасход,
    ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаКонечныйОстаток,
    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&Дата1, &Дата2, Авто, , Контрагент В (&Контрагент)) КАК ВзаиморасчетыОстаткиИОбороты
        ПО Контрагенты.Ссылка = ВзаиморасчетыОстаткиИОбороты.Контрагент
            И НЕ ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления
ИТОГИ
    СУММА(СуммаНачальныйОстаток),
    СУММА(СуммаПриход),
    СУММА(СуммаРасход),
    СУММА(СуммаКонечныйОстаток)
ПО
    Документ
29 bolobol
 
13.08.14
09:32
Помеченный на удаление регистратор??
30 AlexITGround
 
13.08.14
09:34
(29) сорри, строку убрать, это копчик :)
31 bolobol
 
13.08.14
09:34
И из справочника ничего не выбрано
32 AlexITGround
 
13.08.14
09:35
(31) Контрагенты.Ссылка
33 bolobol
 
13.08.14
09:36
(30) да я про (27) пишу, это там равнение параметру - истину залал и нет результата, как вариант
34 AlexITGround
 
13.08.14
09:37
(33) абсолютно согласен с тобой, поэтому и выборка пустая
35 hhhh
 
13.08.14
09:48
(28)

|ГДЕ
            |    ЕСТЬNULL(ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления, ЛОЖЬ) = &ПометкаУдаления
            |    И Контрагенты.Ссылка В(&Контрагент)
36 ogion83
 
13.08.14
09:58
Пробовать (28)?
37 hhhh
 
13.08.14
10:02
(36) а, та вы еще не пробовали? НУ вот этот бред выниньте сначала

  ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления = &ПометкаУдаления
38 AlexITGround
 
13.08.14
10:03
(36) пробуй 28, выкинь строку
И НЕ ВзаиморасчетыОстаткиИОбороты.Регистратор.ПометкаУдаления
39 AlexITGround
 
13.08.14
10:04
(35) а вот это все не надо, читай с самого начала
40 ogion83
 
13.08.14
10:18
"ВЫБРАТЬ
            |    Контрагент.Ссылка КАК Контрагент,
            |    ВзаиморасчетыОстаткиИОбороты.ВидВзаиморасчетов КАК ВидВзаиморасчетов,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК СуммаПриход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК СуммаРасход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ
            |ИЗ
            |    Справочник.Контрагенты КАК Контрагенты
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&Дата1, &Дата2, Авто, , Контрагент В (&Контрагент)) КАК ВзаиморасчетыОстаткиИОбороты
            |        ПО Контрагенты.Ссылка = ВзаиморасчетыОстаткиИОбороты.Контрагент
            |ИТОГИ
            |    СУММА(СуммаНачальныйОстаток),
            |    СУММА(СуммаПриход),
            |    СУММА(СуммаРасход),
            |    СУММА(СуммаКонечныйОстаток)
            |ПО
            |    ВидВзаиморасчетов,
            |    Контрагент,
            |    Документ";
Загнал результат в ТЗ, там пусто.
41 ogion83
 
13.08.14
10:26
Что то не идет.
42 ogion83
 
13.08.14
10:29
Хотя нет, получился список из кучи пустых строк, а в конце данные по контрагенту по которому были движения.
43 salvator
 
13.08.14
10:34
(40)
|    Контрагент.Ссылка КАК Контрагент,
...
|    Справочник.Контрагенты КАК Контрагенты

И ты хочешь сказать, что ошибки не выдает запрос?
44 ogion83
 
13.08.14
10:36
(43) Нет ошибок
45 ogion83
 
13.08.14
10:36
Но это Контрагент.Ссылка КАК Контрагент, я поменял на Контрагент.Ссылка
46 ogion83
 
13.08.14
10:36
Так и так без ошибок но результат не тот
47 Molinor
 
13.08.14
10:38
(45)
ы
48 ogion83
 
13.08.14
10:39
Точно, поправил, но выдал все контрагенты, а не только те что входят в список
49 hhhh
 
13.08.14
10:40
(48) ну включи мзг, добавь

          |ГДЕ
           |    Контрагенты.Ссылка В(&Контрагент)

у тебя же было это зачем выбросил?
50 Molinor
 
13.08.14
10:40
(48)
Думать совсем не хотим?
51 ogion83
 
13.08.14
10:41
А условие в этой строке (&Дата1, &Дата2, Авто, , Контрагент В (&Контрагент)) КАК ВзаиморасчетыОстаткиИОбороты не работает чтоли?
52 ogion83
 
13.08.14
10:41
Контрагент В (&Контрагент)
53 Molinor
 
13.08.14
10:42
Работает условие, но только на виртуальную таблицу.
54 Sorm
 
13.08.14
10:44
(0) Условие ПО РЕГИСТРАТОРУ для контрагентов, по которым НЕ БЫЛО движений?:) Нет ли здесь трудноуловимого противоречия?:)
55 hhhh
 
13.08.14
10:46
(52) ты целиком справочник берешь. и регистр с условием. И соединяешь.
56 salvator
 
13.08.14
10:48
(48) Убери условие на список контрагентов из виртуальной таблицы и наложи его на справочник в секции ГДЕ
57 ogion83
 
13.08.14
10:49
Во рабочий вариант, благодарствую.
Запрос.Текст =
            "ВЫБРАТЬ
            |    Контрагенты.Ссылка,
            |    ВзаиморасчетыОстаткиИОбороты.ВидВзаиморасчетов КАК ВидВзаиморасчетов,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаПриход КАК СуммаПриход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаРасход КАК СуммаРасход,
            |    ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток,
            |    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Документ
            |ИЗ
            |    Справочник.Контрагенты КАК Контрагенты
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&Дата1, &Дата2, Авто, , Контрагент В (&Контрагент)) КАК ВзаиморасчетыОстаткиИОбороты
            |        ПО Контрагенты.Ссылка = ВзаиморасчетыОстаткиИОбороты.Контрагент
            |ГДЕ
            |    Контрагенты.Ссылка В (&Контрагент)
            |ИТОГИ
            |    СУММА(СуммаНачальныйОстаток),
            |    СУММА(СуммаПриход),
            |    СУММА(СуммаРасход),
            |    СУММА(СуммаКонечныйОстаток)
            |ПО
            |    ВидВзаиморасчетов,
            |    Контрагент,
            |    Документ";
        Запрос.УстановитьПараметр("Контрагент",СписокКонтрагентовСПериодическимиВыплатами);
        Запрос.УстановитьПараметр("Дата1",НачалоМесяца(Дата));
        Запрос.УстановитьПараметр("Дата2",КонецДня(Дата));
58 hhhh
 
13.08.14
10:49
(56) нет. в виртуальной таблице тоже нужно. Не учи плохому.