Имя: Пароль:
1C
1С v8
Отбор в запросе
0 ghostrid3r
 
17.03.14
14:21
Добрый день уважаемые форумчане, по логике вещей мне будет достаточно для отбор по организации вытянуть поле из документа? Просто в регистре его почему то нету, говорят выпилили давно. :)

пример запроса:


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

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.Владелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    регистр.Контрагент
ПОМЕСТИТЬ НужныеКонтрагенты
ИЗ
    регистр КАК регистр
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеК.АдресДоставкиВладелец,
    МАКСИМУМ(ВсеК.Период) КАК Период
ПОМЕСТИТЬ Даты
ИЗ
    ВсеК КАК ВсеК

СГРУППИРОВАТЬ ПО
    ВсеК.АдресДоставкиВладелец
;

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

СГРУППИРОВАТЬ ПО
    ВсеК.АдресДоставкиВладелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    АктСверкиВзаиморасчетов.Контрагент,
    СУММА(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф1
                ТОГДА АктСверкиВзаиморасчетов.ОстатокНаКонец
            ИНАЧЕ 0
        КОНЕЦ) КАК ДебетДокФ1,
    СУММА(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф1
                ТОГДА -АктСверкиВзаиморасчетов.ОстатокНаКонецКонтрагент
            ИНАЧЕ 0
        КОНЕЦ) КАК ДебетКонтрагентФ1,
    СУММА(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф2
                ТОГДА АктСверкиВзаиморасчетов.ОстатокНаКонец
            ИНАЧЕ 0
        КОНЕЦ) КАК ДебетДокФ2,
    СУММА(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф2
                ТОГДА -АктСверкиВзаиморасчетов.ОстатокНаКонецКонтрагент
            ИНАЧЕ 0
        КОНЕЦ) КАК ДебетКонтрагентФ2,
    МАКСИМУМ(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф1
                ТОГДА ВЫРАЗИТЬ(АктСверкиВзаиморасчетов.Комментарий КАК СТРОКА(200))
        КОНЕЦ) КАК ПримечаниеФ1,
    МАКСИМУМ(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф2
                ТОГДА ВЫРАЗИТЬ(АктСверкиВзаиморасчетов.Комментарий КАК СТРОКА(200))
        КОНЕЦ) КАК ПримечаниеФ2,
    СУММА(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф1
                ТОГДА АктСверкиВзаиморасчетов.ОстатокНаКонец + АктСверкиВзаиморасчетов.ОстатокНаКонецКонтрагент
            ИНАЧЕ 0
        КОНЕЦ) КАК ОтклонениеФ1,
    СУММА(ВЫБОР
            КОГДА АктСверкиВзаиморасчетов.ВидВзаиморасчета = &Ф2
                ТОГДА АктСверкиВзаиморасчетов.ОстатокНаКонец + АктСверкиВзаиморасчетов.ОстатокНаКонецКонтрагент
            ИНАЧЕ 0
        КОНЕЦ) КАК ОтклонениеФ2
ПОМЕСТИТЬ документ
ИЗ
    Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ГДЕ
    АктСверкиВзаиморасчетов.ДатаНачала = &Дата1
    И АктСверкиВзаиморасчетов.ДатаОкончания = &Дата2

СГРУППИРОВАТЬ ПО
    АктСверкиВзаиморасчетов.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВложенныйЗапрос.Контрагент,
    СУММА(ВложенныйЗапрос.ДебетДокФ1) КАК ДебетДокФ1,
    СУММА(ВложенныйЗапрос.ДебетКонтрагентФ1) КАК ДебетКонтрагентФ1,
    СУММА(ВложенныйЗапрос.ДебетДокФ2) КАК ДебетДокФ2,
    СУММА(ВложенныйЗапрос.ДебетКонтрагентФ2) КАК ДебетКонтрагентФ2,
    МАКСИМУМ(ВложенныйЗапрос.ПримечаниеФ1) КАК ПримечаниеФ1,
    МАКСИМУМ(ВложенныйЗапрос.ПримечаниеФ2) КАК ПримечаниеФ2,
    СУММА(ВложенныйЗапрос.ОтклонениеФ1) КАК ОтклонениеФ1,
    СУММА(ВложенныйЗапрос.ОтклонениеФ2) КАК ОтклонениеФ2,
    МАКСИМУМ(ВложенныйЗапрос.Территория) КАК Территория,
    СУММА(ВложенныйЗапрос.ДебетФ1) КАК ДебетФ1,
    СУММА(ВложенныйЗапрос.ДебетФ2) КАК ДебетФ2,
    МИНИМУМ(ВЫБОР
            КОГДА ВложенныйЗапрос.ДвижениеФ1 <> 0
                ТОГДА "да"
            ИНАЧЕ "нет"
        КОНЕЦ) КАК ДвижениеФ1,
    МИНИМУМ(ВЫБОР
            КОГДА ВложенныйЗапрос.ДвижениеФ2 <> 0
                ТОГДА "да"
            ИНАЧЕ "нет"
        КОНЕЦ) КАК ДвижениеФ2
ИЗ
    (ВЫБРАТЬ
        регистр.Контрагент КАК Контрагент,
        ЕСТЬNULL(регистр.Территория, КонтрагентыИМенеджеры.Территория) КАК Территория,
        регистр.ДебетФ1 КАК ДебетФ1,
        регистр.ДебетФ2 КАК ДебетФ2,
        NULL КАК ДебетДокФ1,
        NULL КАК ДебетКонтрагентФ1,
        NULL КАК ДебетДокФ2,
        NULL КАК ДебетКонтрагентФ2,
        NULL КАК ПримечаниеФ1,
        NULL КАК ПримечаниеФ2,
        NULL КАК ОтклонениеФ1,
        NULL КАК ОтклонениеФ2,
        регистр.ДвижениеФ1 КАК ДвижениеФ1,
        регистр.ДвижениеФ2 КАК ДвижениеФ2
    ИЗ
        регистр КАК регистр
            ЛЕВОЕ СОЕДИНЕНИЕ КонтрагентыИМенеджеры КАК КонтрагентыИМенеджеры
            ПО регистр.Контрагент = КонтрагентыИМенеджеры.Контрагент
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        документ.Контрагент,
        NULL,
        NULL,
        NULL,
        документ.ДебетДокФ1,
        документ.ДебетКонтрагентФ1,
        документ.ДебетДокФ2,
        документ.ДебетКонтрагентФ2,
        документ.ПримечаниеФ1,
        документ.ПримечаниеФ2,
        документ.ОтклонениеФ1,
        документ.ОтклонениеФ2,
        NULL,
        NULL
    ИЗ
        документ КАК документ) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Контрагент
1 Maxus43
 
17.03.14
14:23
в каком регистре нет Организации? в ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ? О_о
2 kosts
 
17.03.14
14:24
(0) Чаще всего да, т.к. организация в шапке.
3 ghostrid3r
 
17.03.14
14:24
(1) Да прикинь
4 Maxus43
 
17.03.14
14:24
даже если нет - в договоре есть Организация, оттуда взять получше бедет, чем ещё док тянуть.
5 Maxus43
 
17.03.14
14:25
(3) не ожидал :) чо за конфа?
З.ы. отчеты строить сложней и РЛС непонятно как, а выгода какая?)
6 ghostrid3r
 
17.03.14
14:27
(5) я сам не ожидал, раньше на УПП работал чуток все было, сейчас вроде тоже упп, но говорят самописаная переписаная. Но факт выпиливания Организации непонятен.
7 Maxus43
 
17.03.14
14:28
(6) а, не типовая чтоли? не пугай так больше... я думал в новых типовых выпиливают
8 ghostrid3r
 
17.03.14
14:29
(4) Значит всетаки профитнее потянуть из Договора?
9 ghostrid3r
 
17.03.14
14:29
(7) я ж не написал что она типовая :)
10 Maxus43
 
17.03.14
14:30
в договоре осталась? там бери лучше. Если конечно договора одной организации не юзаются в другой. Если так пилят - то там и учёт волшебный
11 Maxus43
 
17.03.14
14:31
(8) конечно, так соединение только с одним справочником будет, а регистраторов много, в кучу таблиц поедет. Это просто по логике
12 ghostrid3r
 
17.03.14
14:32
(10) (11) спс
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший