Имя: Пароль:
1C
1С v8
Как отобрать нужные записи в запросе?
0 ultrannge89
 
13.10.14
10:31
В общем имеется таблица, в которой отражены движения по различным договорам контрагентов, мне нужно отобрать те договора контрагентов, которые имеют такие же наименования как и договора имеющие движения, иначе говоря выбрать повторяющиеся договоры контрагентов, но по которым нет движений.
Почему то не отрабатывает левое соединение, Т1.наименование = Т2.наименование И Т1.Ссылка  <> Т2.Ссылка
1 Ненавижу 1С
 
гуру
13.10.14
10:33
наверняка там еще условие в ГДЕ
2 ultrannge89
 
13.10.14
10:36
нету условия, я обычно в связе ставлю условия...
3 Ненавижу 1С
 
гуру
13.10.14
10:37
(2) тогда наименования разные
4 sf
 
13.10.14
10:37
(0) дык левое соединение, это нифига не отбор записей.
5 Nenaviwu1c20
 
13.10.14
10:38
лучше скгруппируй по наименование.А ссылка количество
6 sf
 
13.10.14
10:41
(0) не стесняйся, выкладывай текст запроса
7 ultrannge89
 
13.10.14
10:42
Я стесняюсь, он не оптимален и сделан на скорую руку=))
8 Жан Пердежон
 
13.10.14
10:45
(7) по (0) и так ясно, что запрос УГ, так что выкладывай
9 ultrannge89
 
13.10.14
10:46
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.Субконто3,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт
ПОМЕСТИТЬ ОборотыПереуступки
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
    ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.бит_стр_УступкаПраваТребования
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОборотыПереуступки.Субконто1 КАК КонтрагентЦес,
    ОборотыПереуступки.Субконто2 КАК ДоговорЦес,
    ОборотыПереуступки.Субконто3 КАК НоменклЦес,
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 8, 25) КАК НомерДоговора,
    ОборотыПереуступки.СуммаОборотКт
ПОМЕСТИТЬ ПоЦессионариям
ИЗ
    ОборотыПереуступки КАК ОборотыПереуступки
ГДЕ
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 1, 7) В ("ДДУ № Ц", "ДДУ №Ц-", "ДДУ №Ц ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОборотыПереуступки.Субконто1 КАК КонтрагентИнв,
    ОборотыПереуступки.Субконто2 КАК ДоговорИнв,
    ОборотыПереуступки.Субконто3 КАК НоменклатураИнв,
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 8, 25) КАК НомерДоговора,
    ОборотыПереуступки.СуммаОборотДт
ПОМЕСТИТЬ ПоДоговорамИнвестирования
ИЗ
    ОборотыПереуступки КАК ОборотыПереуступки
ГДЕ
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 1, 7) В ("ДДУ № А", "ДДУ №А-", "ДДУ №А ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоДоговорамИнвестирования.КонтрагентИнв,
    ПоДоговорамИнвестирования.ДоговорИнв,
    ПоДоговорамИнвестирования.СуммаОборотДт,
    ПоЦессионариям.КонтрагентЦес,
    ПоЦессионариям.ДоговорЦес,
    ПоЦессионариям.СуммаОборотКт,
    ПоЦессионариям.НомерДоговора,
    ПоЦессионариям.НоменклЦес
ПОМЕСТИТЬ ПереуступкиПрав
ИЗ
    ПоЦессионариям КАК ПоЦессионариям
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоДоговорамИнвестирования КАК ПоДоговорамИнвестирования
        ПО ПоЦессионариям.НомерДоговора = ПоДоговорамИнвестирования.НомерДоговора
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
    ХозрасчетныйОстатки.Субконто2 КАК ДоговорКонрагента,
    ХозрасчетныйОстатки.Субконто3 КАК Дом,
    ВЫБОР
        КОГДА ХозрасчетныйОстатки.СуммаОстаток < 0
            ТОГДА ХозрасчетныйОстатки.СуммаОстаток * -1
        ИНАЧЕ ХозрасчетныйОстатки.СуммаОстаток
    КОНЕЦ КАК СуммаДоговора
ПОМЕСТИТЬ ДДУ1
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия), , ) КАК ХозрасчетныйОстатки
ГДЕ
    ПОДСТРОКА(ХозрасчетныйОстатки.Субконто2.Наименование, 1, 7) В ("ДДУ № А", "ДДУ №А-", "ДДУ №А ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПереуступкиПрав.КонтрагентИнв КАК Контрагент,
    ПереуступкиПрав.ДоговорИнв КАК ДоговорКонрагента,
    ПереуступкиПрав.НоменклЦес КАК Дом,
    ПереуступкиПрав.СуммаОборотДт КАК СуммаДоговора,
    ПереуступкиПрав.КонтрагентЦес,
    ПереуступкиПрав.ДоговорЦес,
    ПереуступкиПрав.СуммаОборотКт КАК СуммаЦес
ПОМЕСТИТЬ ДДУ
ИЗ
    ПереуступкиПрав КАК ПереуступкиПрав

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

ВЫБРАТЬ
    ДДУ1.Контрагент,
    ДДУ1.ДоговорКонрагента,
    ДДУ1.Дом,
    ДДУ1.СуммаДоговора,
    NULL,
    NULL,
    NULL
ИЗ
    ДДУ1 КАК ДДУ1
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка,
    ДоговорыКонтрагентов.Наименование
ПОМЕСТИТЬ ДоговорыКонтрагентов
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов





Пока так, щас подумаю как быть дальше
10 sf
 
13.10.14
10:52
(9) будь человеком!
бросил портянку, хочешь чтобы тебе помогли, а в портянке куча ВТ и ни одной выборки
сделай хоть пару слов описания где твое соединение из (0) хотя бы?????
11 ultrannge89
 
13.10.14
10:55
В том то и дело, что из (0), нет ничего, я пока не знаю как лучше реализовать, мне надо из ДоговорыКонтрагентов, выбрать только те которые равны с ДДУПлощадь по наименованию, но не равны по ссылке, пробовал просто левым, долго висит и выдает непонятно что
12 hhhh
 
13.10.14
10:56
ГДЕ
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 1, 7) В ("ДДУ № Ц", "ДДУ №Ц-", "ДДУ №Ц ")

ты забыл

"ДДУ № Ц "
13 hhhh
 
13.10.14
10:56
и "ДДУ №Ц"
14 ultrannge89
 
13.10.14
10:57
(12), спасибо, но я думаю собака не тут зарыта))) Хотя конечно.
15 ultrannge89
 
13.10.14
10:57
Они на самом деле все их по шаблону "ДДУ №Ц-" заводят, остальное на всякий случай...
16 ultrannge89
 
13.10.14
11:00
На самом деле вот так похожу на правду...
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка,
    ДоговорыКонтрагентов.Наименование,
    ДДУПлощадь.ДоговорКонрагента,
    ДДУПлощадь.Контрагент,
    ДДУПлощадь.Дом,
    ДДУПлощадь.СуммаДоговора,
    ДДУПлощадь.Квартира,
    ДДУПлощадь.ТипДоговора,
    ДДУПлощадь.Площадь,
    ДДУПлощадь.КонтрагентЦес,
    ДДУПлощадь.ДоговорЦес,
    ДДУПлощадь.СуммаЦес,
    ДДУПлощадь.ДоговорКонрагентаНаименование
ИЗ
    ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДДУПлощадь КАК ДДУПлощадь
        ПО ДоговорыКонтрагентов.Наименование = ДДУПлощадь.ДоговорКонрагентаНаименование
            И ДоговорыКонтрагентов.Ссылка <> ДДУПлощадь.ДоговорКонрагента
17 ultrannge89
 
13.10.14
11:05
Так 18




А вот так

;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) КАК Ссылка,
    ДоговорыКонтрагентов.Наименование
ПОМЕСТИТЬ Дог
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

СГРУППИРОВАТЬ ПО
    ДоговорыКонтрагентов.Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Дог.Ссылка,
    Дог.Наименование
ИЗ
    Дог КАК Дог
ГДЕ
    Дог.Ссылка > 1

А так 17
18 ultrannge89
 
13.10.14
11:12
А если в (17) еще и без помеченых на удаление то вообще 3...
19 ultrannge89
 
13.10.14
11:15
Но тут таблицу ДДУПлощадь, надо переделать, я думаю следует не соединять от самой первой левым соединением, а объединять с последующими таблицами, чтобы исключить ситуации когда заключают на один договор а оплачивают на его дубль...
20 hhhh
 
13.10.14
11:15
ГДЕ
    Дог.Ссылка > 1

что за бред? ссылка больше единицы?
21 ultrannge89
 
13.10.14
11:16
группировка до этого на количество...
22 ultrannge89
 
13.10.14
11:17
Я просто посмотрел сколько повторяющихся договоров имеется в базе
23 Jokero
 
13.10.14
11:18
ДЕРЖИ)

ВЫБРАТЬ
    "01" КАК ССЫЛЬ,
    "А" КАК ИМЯ
ПОМЕСТИТЬ ДАННЫЕ

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

ВЫБРАТЬ
    "02",
    "А"

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

ВЫБРАТЬ
    "03",
    "Б"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДАННЫЕ.ССЫЛЬ) КАК ССЫЛЬ,
    ДАННЫЕ.ИМЯ
ПОМЕСТИТЬ РАЗНЫЕДАННЫЕ
ИЗ
    ДАННЫЕ КАК ДАННЫЕ

СГРУППИРОВАТЬ ПО
    ДАННЫЕ.ИМЯ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РАЗНЫЕДАННЫЕ.ССЫЛЬ,
    ДАННЫЕ.ССЫЛЬ КАК ССЫЛЬ1,
    ДАННЫЕ.ИМЯ
ИЗ
    РАЗНЫЕДАННЫЕ КАК РАЗНЫЕДАННЫЕ
        ЛЕВОЕ СОЕДИНЕНИЕ ДАННЫЕ КАК ДАННЫЕ
        ПО РАЗНЫЕДАННЫЕ.ИМЯ = ДАННЫЕ.ИМЯ
ГДЕ
    РАЗНЫЕДАННЫЕ.ССЫЛЬ > 1
24 sf
 
13.10.14
11:20
(22) (23) двоечники. откройте для себя ИМЕЮЩИЕ
25 Chameleon1980
 
13.10.14
11:20
может я чего не понимаю или не внимательно читал, но из:
...Почему то не отрабатывает левое соединение, Т1.наименование = Т2.наименование И Т1.Ссылка  <> Т2.Ссылка...

как он свяжет по ссылкам, + в задании сказано отобрать договоры с таким же наим, но по которым нет движ.
26 Jokero
 
13.10.14
11:21
ИЛИ  я не верно въехал в задание, все договора (с движениями и без) в одной таблице находятся?
27 Chameleon1980
 
13.10.14
11:21
пардон
Т1.Ссылка  <> Т2.Ссылка
не заметил, что тут <> а не =
28 ultrannge89
 
13.10.14
11:29
(26) В ДоговорыКонтрагентов, содержатся все договора и с движениями и без...
29 Jokero
 
13.10.14
11:29
(24) Можно и имеющие - без временных табл, но сложнее понять

ВЫБРАТЬ
    "01" КАК ССЫЛЬ,
    "А" КАК ИМЯ
ПОМЕСТИТЬ ДАННЫЕ

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

ВЫБРАТЬ
    "02",
    "А"

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

ВЫБРАТЬ
    "03",
    "Б"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДАННЫЕ.ССЫЛЬ) КАК ССЫЛЬ,
    ДАННЫЕ1.ССЫЛЬ КАК ССЫЛЬ1,
    ДАННЫЕ1.ИМЯ
ИЗ
    ДАННЫЕ КАК ДАННЫЕ
        ЛЕВОЕ СОЕДИНЕНИЕ ДАННЫЕ КАК ДАННЫЕ1
        ПО ДАННЫЕ.ИМЯ = ДАННЫЕ1.ИМЯ

СГРУППИРОВАТЬ ПО
    ДАННЫЕ1.ССЫЛЬ,
    ДАННЫЕ1.ИМЯ

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДАННЫЕ.ССЫЛЬ) > 1
30 ultrannge89
 
13.10.14
11:31
Ладно, вроде работает, выдает то что надо, щас еще по проверяю, все или не все...

<code>
ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.Субконто3,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт
ПОМЕСТИТЬ ОборотыПереуступки
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия), , ) КАК ХозрасчетныйОстаткиИОбороты
ГДЕ
    ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.бит_стр_УступкаПраваТребования
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОборотыПереуступки.Субконто1 КАК КонтрагентЦес,
    ОборотыПереуступки.Субконто2 КАК ДоговорЦес,
    ОборотыПереуступки.Субконто3 КАК НоменклЦес,
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 8, 25) КАК НомерДоговора,
    ОборотыПереуступки.СуммаОборотКт
ПОМЕСТИТЬ ПоЦессионариям
ИЗ
    ОборотыПереуступки КАК ОборотыПереуступки
ГДЕ
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 1, 7) В ("ДДУ № Ц", "ДДУ №Ц-", "ДДУ №Ц ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОборотыПереуступки.Субконто1 КАК КонтрагентИнв,
    ОборотыПереуступки.Субконто2 КАК ДоговорИнв,
    ОборотыПереуступки.Субконто3 КАК НоменклатураИнв,
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 8, 25) КАК НомерДоговора,
    ОборотыПереуступки.СуммаОборотДт
ПОМЕСТИТЬ ПоДоговорамИнвестирования
ИЗ
    ОборотыПереуступки КАК ОборотыПереуступки
ГДЕ
    ПОДСТРОКА(ОборотыПереуступки.Субконто2.Наименование, 1, 7) В ("ДДУ № А", "ДДУ №А-", "ДДУ №А ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоДоговорамИнвестирования.КонтрагентИнв,
    ПоДоговорамИнвестирования.ДоговорИнв,
    ПоДоговорамИнвестирования.СуммаОборотДт,
    ПоЦессионариям.КонтрагентЦес,
    ПоЦессионариям.ДоговорЦес,
    ПоЦессионариям.СуммаОборотКт,
    ПоЦессионариям.НомерДоговора,
    ПоЦессионариям.НоменклЦес
ПОМЕСТИТЬ ПереуступкиПрав
ИЗ
    ПоЦессионариям КАК ПоЦессионариям
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоДоговорамИнвестирования КАК ПоДоговорамИнвестирования
        ПО ПоЦессионариям.НомерДоговора = ПоДоговорамИнвестирования.НомерДоговора
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
    ХозрасчетныйОстатки.Субконто2 КАК ДоговорКонрагента,
    ХозрасчетныйОстатки.Субконто3 КАК Дом,
    ВЫБОР
        КОГДА ХозрасчетныйОстатки.СуммаОстаток < 0
            ТОГДА ХозрасчетныйОстатки.СуммаОстаток * -1
        ИНАЧЕ ХозрасчетныйОстатки.СуммаОстаток
    КОНЕЦ КАК СуммаДоговора
ПОМЕСТИТЬ ДДУ1
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия), , ) КАК ХозрасчетныйОстатки
ГДЕ
    ПОДСТРОКА(ХозрасчетныйОстатки.Субконто2.Наименование, 1, 7) В ("ДДУ № А", "ДДУ №А-", "ДДУ №А ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПереуступкиПрав.КонтрагентИнв КАК Контрагент,
    ПереуступкиПрав.ДоговорИнв КАК ДоговорКонрагента,
    ПереуступкиПрав.НоменклЦес КАК Дом,
    ПереуступкиПрав.СуммаОборотДт КАК СуммаДоговора,
    ПереуступкиПрав.КонтрагентЦес,
    ПереуступкиПрав.ДоговорЦес,
    ПереуступкиПрав.СуммаОборотКт КАК СуммаЦес
ПОМЕСТИТЬ ДДУ
ИЗ
    ПереуступкиПрав КАК ПереуступкиПрав

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

ВЫБРАТЬ
    ДДУ1.Контрагент,
    ДДУ1.ДоговорКонрагента,
    ДДУ1.Дом,
    ДДУ1.СуммаДоговора,
    NULL,
    NULL,
    NULL
ИЗ
    ДДУ1 КАК ДДУ1
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка,
    ДоговорыКонтрагентов.Наименование
ПОМЕСТИТЬ ДоговорыКонтрагентов
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка,
    ДоговорыКонтрагентов.Наименование,
    ДДУПлощадь.ДоговорКонрагента,
    ДДУПлощадь.Контрагент,
    ДДУПлощадь.Дом,
    ДДУПлощадь.СуммаДоговора,
    ДДУПлощадь.Квартира,
    ДДУПлощадь.ТипДоговора,
    ДДУПлощадь.Площадь,
    ДДУПлощадь.КонтрагентЦес,
    ДДУПлощадь.ДоговорЦес,
    ДДУПлощадь.СуммаЦес,
    ДДУПлощадь.ДоговорКонрагентаНаименование
ИЗ
    ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДДУПлощадь КАК ДДУПлощадь
        ПО ДоговорыКонтрагентов.Наименование = ДДУПлощадь.ДоговорКонрагентаНаименование
            И ДоговорыКонтрагентов.Ссылка <> ДДУПлощадь.ДоговорКонрагента
</code>
31 ultrannge89
 
13.10.14
11:32
Тупо конечно, но ладно, мне не привыкать))) 7 секунд формируется...
32 ultrannge89
 
13.10.14
12:03
А чем кстати отличаются РБ.ХозрасчетныйОбороты от ОборотыДтКт
?
33 ultrannge89
 
13.10.14
12:12
ВЫБРАТЬ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) КАК Ссылка,
    ДоговорыКонтрагентов.Наименование
ПОМЕСТИТЬ ДогКонтрВсе
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
    ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ

СГРУППИРОВАТЬ ПО
    ДоговорыКонтрагентов.Наименование

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) > 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДогКонтрВсе.Наименование
ПОМЕСТИТЬ ДогКонтрНаимПовт
ИЗ
    ДогКонтрВсе КАК ДогКонтрВсе
ГДЕ
    ПОДСТРОКА(ДогКонтрВсе.Наименование, 1, 7) В ("ДДУ № Ц", "ДДУ №Ц-", "ДДУ №Ц, ДДУ № А", "ДДУ №А-", "ДДУ №А ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка
ПОМЕСТИТЬ ПовторяющиесяДоговоры
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДогКонтрНаимПовт КАК ДогКонтрНаимПовт
        ПО ДоговорыКонтрагентов.Наименование = ДогКонтрНаимПовт.Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СубконтоДт2 КАК Договор,
    ХозрасчетныйОборотыДтКт.СуммаОборот КАК Дт86
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт КАК ХозрасчетныйОборотыДтКт
        ПО ПовторяющиесяДоговоры.Ссылка = ХозрасчетныйОборотыДтКт.СубконтоДт2
            И (ХозрасчетныйОборотыДтКт.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия))




Почему так долго???? Выполняется около 3х секунд, хотя там для 6 договоров... Причем обороты есть только для одного... В чем ошибка?
34 ultrannge89
 
13.10.14
12:14
Ой, на тест серваке оперативы нету)))
35 ultrannge89
 
13.10.14
12:25
Такой вопрос:
Обороты по счетуКт где Субконто2Кт = БлаБла
Объединить
Обороты по счетуДт где Субконто2Дт = БлаБла
Это и есть просто обороты по счету, где субконто2 = БлаБла???
36 ultrannge89
 
13.10.14
12:44
В общем вот окончательный запрос:

<code>

ВЫБРАТЬ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) КАК Ссылка,
    ДоговорыКонтрагентов.Наименование
ПОМЕСТИТЬ ДогКонтрВсе
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
    ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ

СГРУППИРОВАТЬ ПО
    ДоговорыКонтрагентов.Наименование

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) > 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДогКонтрВсе.Наименование
ПОМЕСТИТЬ ДогКонтрНаимПовт
ИЗ
    ДогКонтрВсе КАК ДогКонтрВсе
ГДЕ
    ПОДСТРОКА(ДогКонтрВсе.Наименование, 1, 7) В ("ДДУ № Ц", "ДДУ №Ц-", "ДДУ №Ц, ДДУ № А", "ДДУ №А-", "ДДУ №А ")
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка
ПОМЕСТИТЬ ПовторяющиесяДоговоры
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДогКонтрНаимПовт КАК ДогКонтрНаимПовт
        ПО ДоговорыКонтрагентов.Наименование = ДогКонтрНаимПовт.Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто2
ПОМЕСТИТЬ Обороты86
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты КАК ХозрасчетныйОбороты
        ПО ПовторяющиесяДоговоры.Ссылка = ХозрасчетныйОбороты.Субконто2
            И (ХозрасчетныйОбороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто2
ПОМЕСТИТЬ Обороты76
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты КАК ХозрасчетныйОбороты
        ПО ПовторяющиесяДоговоры.Ссылка = ХозрасчетныйОбороты.Субконто2
            И (ХозрасчетныйОбороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_РасчетыСДольщикамиПоСредствамПолученнымНаФинансированиеСтроительства))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Обороты86.Субконто2
ПОМЕСТИТЬ ВсеОбороты
ИЗ
    Обороты86 КАК Обороты86

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

ВЫБРАТЬ
    Обороты76.Субконто2
ИЗ
    Обороты76 КАК Обороты76
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеОбороты.Субконто2
ПОМЕСТИТЬ ОборотыПоДог
ИЗ
    ВсеОбороты КАК ВсеОбороты

СГРУППИРОВАТЬ ПО
    ВсеОбороты.Субконто2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПовторяющиесяДоговоры.Ссылка,
    ОборотыПоДог.Субконто2
ПОМЕСТИТЬ Врем
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ЛЕВОЕ СОЕДИНЕНИЕ ОборотыПоДог КАК ОборотыПоДог
        ПО ПовторяющиесяДоговоры.Ссылка = ОборотыПоДог.Субконто2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Врем.Ссылка
ИЗ
    Врем КАК Врем
ГДЕ
    Врем.Субконто2 ЕСТЬ NULL

<\code>
37 sf
 
13.10.14
12:53
(36) 1. первые два запроса можно объединить
2. четвертый и пятый запрос - условие по счету, субконто к таблице обороты в параметры надо, а не в ГДЕ. и открой для себя "ИЛИ" и объедини запросы )))

ну и вообще не обязательно для накладывания условия каждый раз отдельную ВТ делать.
38 ultrannge89
 
13.10.14
13:11
Спасибо, щас попробую...
39 ultrannge89
 
13.10.14
13:33
А для группировки после объединения можно как то не использовать ВТ?
40 ultrannge89
 
13.10.14
13:37
ИЛИ я пока не смог открыть для себя... Куда смотреть?



ВЫБРАТЬ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) КАК Ссылка,
    ДоговорыКонтрагентов.Наименование
ПОМЕСТИТЬ ДогКонтрНаимПовт
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
    ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
    И ПОДСТРОКА(ДоговорыКонтрагентов.Наименование, 1, 7) В ("ДДУ № Ц", "ДДУ №Ц-", "ДДУ №Ц, ДДУ № А", "ДДУ №А-", "ДДУ №А ")

СГРУППИРОВАТЬ ПО
    ДоговорыКонтрагентов.Наименование

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) > 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка
ПОМЕСТИТЬ ПовторяющиесяДоговоры
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДогКонтрНаимПовт КАК ДогКонтрНаимПовт
        ПО ДоговорыКонтрагентов.Наименование = ДогКонтрНаимПовт.Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто2
ПОМЕСТИТЬ Обороты86и76
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия), , , , ) КАК ХозрасчетныйОбороты
        ПО ПовторяющиесяДоговоры.Ссылка = ХозрасчетныйОбороты.Субконто2

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

ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто2
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_РасчетыСДольщикамиПоСредствамПолученнымНаФинансированиеСтроительства), , , , ) КАК ХозрасчетныйОбороты
        ПО ПовторяющиесяДоговоры.Ссылка = ХозрасчетныйОбороты.Субконто2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Обороты86и76.Субконто2
ПОМЕСТИТЬ Обороты
ИЗ
    Обороты86и76 КАК Обороты86и76

СГРУППИРОВАТЬ ПО
    Обороты86и76.Субконто2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПовторяющиесяДоговоры.Ссылка,
    Обороты.Субконто2
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ЛЕВОЕ СОЕДИНЕНИЕ Обороты КАК Обороты
        ПО ПовторяющиесяДоговоры.Ссылка = Обороты.Субконто2
ГДЕ
    Обороты.Субконто2 ЕСТЬ NULL
41 sf
 
13.10.14
13:37
(39) какого объединения? можно без него.

ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто1
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(
            ,
            ,
            ,
            Счет = &сч86
                ИЛИ Счет = &сч76,
            &СубконтоДоговоры,
            ,
            ,
            ) КАК ХозрасчетныйОбороты
42 ultrannge89
 
13.10.14
13:38
Скорость заметно выросла, стала где то 0.2 сек
43 ultrannge89
 
13.10.14
13:39
Ппц :)
44 ultrannge89
 
13.10.14
13:45
ВЫБРАТЬ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) КАК Ссылка,
    ДоговорыКонтрагентов.Наименование
ПОМЕСТИТЬ ДогКонтрНаимПовт
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
    ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
    И ПОДСТРОКА(ДоговорыКонтрагентов.Наименование, 1, 7) В ("ДДУ № Ц", "ДДУ №Ц-", "ДДУ №Ц, ДДУ № А", "ДДУ №А-", "ДДУ №А ")

СГРУППИРОВАТЬ ПО
    ДоговорыКонтрагентов.Наименование

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) > 1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыКонтрагентов.Ссылка КАК Ссылка
ПОМЕСТИТЬ ПовторяющиесяДоговоры
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДогКонтрНаимПовт КАК ДогКонтрНаимПовт
        ПО ДоговорыКонтрагентов.Наименование = ДогКонтрНаимПовт.Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто2
ПОМЕСТИТЬ Обороты86и76
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(
                ,
                ,
                ,
                Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_ЦелевоеФинансированиеПоДоговорамДолевогоУчастия)
                    ИЛИ Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.бит_стр_РасчетыСДольщикамиПоСредствамПолученнымНаФинансированиеСтроительства),
                ,
                ,
                ,
                ) КАК ХозрасчетныйОбороты
        ПО ПовторяющиесяДоговоры.Ссылка = ХозрасчетныйОбороты.Субконто2

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОбороты.Субконто2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Обороты86и76.Субконто2,
    ПовторяющиесяДоговоры.Ссылка
ИЗ
    ПовторяющиесяДоговоры КАК ПовторяющиесяДоговоры
        ЛЕВОЕ СОЕДИНЕНИЕ Обороты86и76 КАК Обороты86и76
        ПО ПовторяющиесяДоговоры.Ссылка = Обороты86и76.Субконто2
ГДЕ
    Обороты86и76.Субконто2 ЕСТЬ NULL
45 ultrannge89
 
13.10.14
13:45
0,15 сек :)
46 ultrannge89
 
13.10.14
13:47
Спасибо, sf, возьму все на заметку...)))