Имя: Пароль:
1C
 
Помогите с запросом!
,
0 Мисти
 
15.08.18
16:20
Суть такая. из регистра берутся данные по площади - по договору и по доп. соглашению. При этом доп. соглашения может не быть вовсе! У меня при этом получается, что по доп. соглашению площадь 0. А мне нужно как-то отделить случаи, когда доп. соглашение есть и по нему 0 от случая, когда его нет вовсе. Это же по смыслу противоположно!!!
1 Buster007
 
15.08.18
16:21
свой вариант?
2 Buster007
 
15.08.18
16:21
ЕСТЬ NULL тебе может помочь, думаю
3 XLife
 
15.08.18
16:22
есть борщ и нет борща...
4 Мисти
 
15.08.18
16:22
ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Договор КАК Договор,
    АР_СтавкиСрезПоследних.Услуга КАК Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды КАК ОбъектАренды,
    АР_СтавкиСрезПоследних.Площадь КАК ПлощадьПоЗаключению,
    0 КАК ПлощадьПоДопСоглашению,
    АР_СтавкиСрезПоследних.Регистратор КАК Регистратор
ПОМЕСТИТЬ ВТ_ДокументЗаключения
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних({(&КонецПериода)}, Регистратор ССЫЛКА Документ.АР_ЗаключениеДоговораАренды) КАК АР_СтавкиСрезПоследних

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

ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Договор,
    АР_СтавкиСрезПоследних.Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды,
    0,
    АР_СтавкиСрезПоследних.Площадь,
    АР_СтавкиСрезПоследних.Регистратор
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних({(&КонецПериода)}, Регистратор ССЫЛКА Документ.АР_ДополнительноеСоглашение) КАК АР_СтавкиСрезПоследних
;
Начало там такое
5 olegves
 
15.08.18
16:23
(0) Соглашения нет, когда ПолеСоглашения IS NULL при левом соединении договора с допсоглашением
6 Fedor-1971
 
15.08.18
16:24
0 КАК ПлощадьПоДопСоглашению = поставь не 0, а -1
7 Мисти
 
15.08.18
16:24
(5) "нэ умэю" как говорила моя двухлетняя племянница
8 XLife
 
15.08.18
16:26
(7) >"нэ умэю"
грузинка?
9 Мисти
 
15.08.18
16:27
нет, просто маленькая была и говорила только те слова, которые получались четко. А что не получалось - не говорила вовсе.
10 Fedor-1971
 
15.08.18
16:33
(9) Не соскакивай, чем -1 для отличия не нравится?
Дальше при перебое результата ПлощадьПоДопам = 1;, а в цикле ПлощадьПоДопам += Выборка.ПлощадьПоДопСоглашению
11 Мисти
 
15.08.18
16:34
Там нет никаких циклов, там скд!
Мне как в (5) надо дорисовать!
Кто-нибудь может мой запрос дорисовать?
12 Fedor-1971
 
15.08.18
16:46
(11) Например так:
ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Договор КАК Договор,
    АР_СтавкиСрезПоследних.Услуга КАК Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды КАК ОбъектАренды,
    АР_СтавкиСрезПоследних.Площадь КАК ПлощадьПоЗаключению,
    isNull(АР_СтавкиДоп.Площадь, "Так нету допа") КАК ПлощадьПоДопСоглашению,
    АР_СтавкиСрезПоследних.Регистратор КАК Регистратор
ПОМЕСТИТЬ ВТ_ДокументЗаключения
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних({(&КонецПериода)}, Регистратор ССЫЛКА Документ.АР_ЗаключениеДоговораАренды) КАК АР_СтавкиСрезПоследних
  Левое соединение РегистрСведений.АР_Ставки.СрезПоследних({(&КонецПериода)}, Регистратор ССЫЛКА Документ.АР_ДополнительноеСоглашение) КАК АР_СтавкиДоп
ПО
    АР_СтавкиСрезПоследних.Договор = АР_СтавкиДоп.Договор,
    АР_СтавкиСрезПоследних.Услуга = АР_СтавкиДоп.Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды = АР_СтавкиДоп.ОбъектАренды

С тебя 200 рупий на благотворительность, отдашь кому посчитаешь нужным
13 Сергиус
 
15.08.18
17:21
(0)Добавь новое поле, по которому будешь определять признак. Если соединение с доп.соглашением NULL, оно ИСТИНА, иначе всегда ЛОЖЬ
14 Мисти
 
15.08.18
17:52
(12) Так не работает.
В (13) описано (12), и я теоретически это понимаю, но никак не могу изобразить.
15 Fedor-1971
 
15.08.18
17:59
(14) что не работает? проверь консолью запросов
И смотри на условия связи
    АР_СтавкиСрезПоследних.Договор = АР_СтавкиДоп.Договор,
   И АР_СтавкиСрезПоследних.Услуга = АР_СтавкиДоп.Услуга,
   И АР_СтавкиСрезПоследних.ОбъектАренды = АР_СтавкиДоп.ОбъектАренды

Возможно нужно добавить
     И НЕ АР_СтавкиСрезПоследних.Регистратор= АР_СтавкиДоп.Регистратор

т.е. к себе договор не является допом
16 Мисти
 
15.08.18
18:01
Запрос кривой получается, я не понимаю, как поправить.
17 Fedor-1971
 
15.08.18
18:05
(16) что именно кривое? показывай как поправила
18 Мисти
 
15.08.18
18:07
Предположим, первая таблица у меня Д1 У1 100
                                   д2 у2 50
А вторая д2 У2 10
Их объединение дает
Д1 У1 100 0
д2 У2  50 10

Мне бы еще признак1 нулл
           признак2 Истина
Как это сделать?
19 Мисти
 
15.08.18
18:08
Как-как - вставила кусочек выше в свой запрос.
20 Мисти
 
15.08.18
18:09
Не, ну явно не так как написано, потому что "поместить" относится к 1 запросу, а доп.соглашение - ко второму
21 Fedor-1971
 
15.08.18
18:21
Гонишь.

Если вставить просто так вот это:
ПО
    АР_СтавкиСрезПоследних.Договор = АР_СтавкиДоп.Договор,
    АР_СтавкиСрезПоследних.Услуга = АР_СтавкиДоп.Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды = АР_СтавкиДоп.ОбъектАренды

Будет ошибка, т.к. нет "И"

Вот это:
    isNull(АР_СтавкиДоп.Площадь, "Так нету допа") КАК ПлощадьПоДопСоглашению,

К твоему 100, Так нету допа

Давай Зяма, показывай запрос
22 Мисти
 
15.08.18
18:22
Я тыщу переведу на благотворительность, только напиши мне этот кусочек полностью!
23 Fedor-1971
 
15.08.18
18:23
(18)
Выбор
Когда АР_СтавкиДоп.Площадь есть Null тогда Истина Иначе Ложь Конец Как ПризнакНаличияДопов

Небось isNull(АР_СтавкиДоп.Площадь, 0) так сделала?

Результат покажи, блин. Домой пора идти.
24 Fedor-1971
 
15.08.18
18:24
Ломается как булка
25 Fedor-1971
 
15.08.18
18:33
Если что, завтра подмогну. Про тышчу - сама напросилась.
26 Мисти
 
16.08.18
14:42
ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Услуга КАК Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды КАК ОбъектАренды,
    АР_СтавкиСрезПоследних.Договор КАК Договор,
    АР_СтавкиСрезПоследних.Площадь КАК Площадь
ПОМЕСТИТЬ ОбъектыСДопСоглашениями
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних(, Регистратор ССЫЛКА Документ.АР_ДополнительноеСоглашение) КАК АР_СтавкиСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Договор КАК Договор,
    АР_СтавкиСрезПоследних.Услуга КАК Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды КАК ОбъектАренды,
    АР_СтавкиСрезПоследних.Площадь КАК ПлощадьПоЗаключению,
    0 КАК ПлощадьПоДопСоглашению,
    АР_СтавкиСрезПоследних.Регистратор КАК Регистратор,
    NULL КАК ПризнакДопа
ПОМЕСТИТЬ ВТ_ДокументЗаключения
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних({(&КонецПериода)}, Регистратор ССЫЛКА Документ.АР_ЗаключениеДоговораАренды) КАК АР_СтавкиСрезПоследних

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

ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Договор,
    АР_СтавкиСрезПоследних.Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды,
    0,
    АР_СтавкиСрезПоследних.Площадь,
    АР_СтавкиСрезПоследних.Регистратор,
    ВЫБОР
        КОГДА АР_СтавкиСрезПоследних.Площадь ЕСТЬ NULL
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних({(&КонецПериода)}, Регистратор ССЫЛКА Документ.АР_ДополнительноеСоглашение) КАК АР_СтавкиСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ ОбъектыСДопСоглашениями КАК ОбъектыСДопСоглашениями
        ПО АР_СтавкиСрезПоследних.Услуга = ОбъектыСДопСоглашениями.Услуга
            И АР_СтавкиСрезПоследних.ОбъектАренды = ОбъектыСДопСоглашениями.ОбъектАренды
            И АР_СтавкиСрезПоследних.Договор = ОбъектыСДопСоглашениями.Договор
;
27 Мисти
 
16.08.18
14:44
Пока получилось ровно не то, что нужно.
В запросе не произошло объединение по площадям - отдельно идут по заключению, отдельно по доп. соглашению, ну и НЕТ стоит как раз у доп. соглашений
28 Мисти
 
16.08.18
15:04
Ну, т.е. у меня во втором запросе, где "объединить" на 1 поле больше - "есть ли доп", поэтому с первым и не объединяется.
29 Fedor-1971
 
16.08.18
15:06
(27) мощно, я думаю, не твоё это писать запросы. От слова совсем.
Окажи себе благотворительную помощь на выделенные 1000 руб. купи себе книжку, ЛЮБУЮ художественную книжку, и читай её до дыр. Запросы оставь в покое.

Ты хоть мозг включала или, так на автопилоте "Авось что-то исправлю и может быть заработает"? Тебе написали целый запрос, повторю в твоём варианте:

ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Услуга КАК Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды КАК ОбъектАренды,
    АР_СтавкиСрезПоследних.Договор КАК Договор,
    АР_СтавкиСрезПоследних.Площадь КАК Площадь
ПОМЕСТИТЬ ОбъектыСДопСоглашениями
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних(, Регистратор ССЫЛКА Документ.АР_ДополнительноеСоглашение) КАК АР_СтавкиСрезПоследних
;

////////////////////////////////////////////////

ВЫБРАТЬ
    АР_СтавкиСрезПоследних.Договор КАК Договор,
    АР_СтавкиСрезПоследних.Услуга КАК Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды КАК ОбъектАренды,
    АР_СтавкиСрезПоследних.Площадь КАК ПлощадьПоЗаключению,
    isNull(ОбъектыСДопСоглашениями.Площадь, "НЕТ допа") КАК ПлощадьПоДопСоглашению,
    АР_СтавкиСрезПоследних.Регистратор КАК Регистратор,
    ВЫБОР
        КОГДА ОбъектыСДопСоглашениями.Площадь ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ
КАК ПризнакДопа
ПОМЕСТИТЬ ВТ_ДокументЗаключения
ИЗ
    РегистрСведений.АР_Ставки.СрезПоследних({(&КонецПериода)}, Регистратор ССЫЛКА Документ.АР_ЗаключениеДоговораАренды) КАК АР_СтавкиСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ ОбъектыСДопСоглашениями КАК ОбъектыСДопСоглашениями
        ПО АР_СтавкиСрезПоследних.Услуга = ОбъектыСДопСоглашениями.Услуга
            И АР_СтавкиСрезПоследних.ОбъектАренды = ОбъектыСДопСоглашениями.ОбъектАренды
            И АР_СтавкиСрезПоследних.Договор = ОбъектыСДопСоглашениями.Договор
30 Fedor-1971
 
16.08.18
15:15
29+ не надо ничего "объединить все", левое соединение к твоему основному договору прилепит ВСЕ доп соглашения и поля

    АР_СтавкиСрезПоследних.Договор КАК Договор,
    АР_СтавкиСрезПоследних.Услуга КАК Услуга,
    АР_СтавкиСрезПоследних.ОбъектАренды КАК ОбъектАренды,
    АР_СтавкиСрезПоследних.Площадь КАК ПлощадьПоЗаключению,
    АР_СтавкиСрезПоследних.Регистратор КАК Регистратор,

в выборке будут одинаковыми (!!!), т.к. взяты из основного договора,
а ПлощадьПоДопСоглашению разные, согласно каждого доп.соглашения. Если допа 2, то и строки в результирующей выборке будет 2 (это для информации, вдруг что-то пойдёт не так)
31 Мисти
 
16.08.18
15:19
У меня на запросы мозг не включается. У меня географический кретинизм, а это из той же области.
32 Мимохожий Однако
 
16.08.18
15:25
Дождись пятницы. Помогут.
33 Fedor-1971
 
16.08.18
15:26
(31) Не путай "Не хочу что-то понимать" и "Лень вникнуть и  сделать, на форуме напишут" с проблемами в ориентировании на местности.

Запрос замечательно тестится в консоли запросов и сразу видно какие данные выбрались и как соединились, нет тут географии, а полный набор данных прямо перед глазами, даже головой вертеть не надо.
34 Fedor-1971
 
16.08.18
15:27
(32) к стати, как вариант, но только для понедельника - вторника.
35 Мисти
 
16.08.18
15:33
Вот я и вижу, что не то получается.
36 Мисти
 
16.08.18
15:34
И это еще не так просто посмотреть! 48 тыщ строк.
37 Fedor-1971
 
16.08.18
15:49
(36) при минимальном желании находим договор с допами и в консоли запросов
Где АР_СтавкиСрезПоследних.Договор КАК Договор = &НужныйДоговор

Ай как сложно, просто жуть.
Скажи лень? Не с красным ли дипломом из универа вышла? (знавал я таких кадров, без понимания, но красно-дипломированных)
38 Мисти
 
16.08.18
15:54
Ага, с красным. Я много чего умею и обычно хорошо соображаю, но не в запросах.
39 Мисти
 
16.08.18
16:12
Палучилось!!!
Там вообще-то было 3 запроса, и я точно поняла, в чем причина, и писала не я.
Куда переводить? Я обычно - "на политику" - Шлосбергу, "детям" - в фондпр, ну и иногда просто - кто очень просит.
https://vk.com/schaaa - вот этому - давно собиралась, но всё никак.
40 Fedor-1971
 
16.08.18
16:26
(39) Раз выбрала кому, просто помоги.
Закон Брукера: Даже маленькая практика стоит большой теории.