Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Регистраторы из нескольких таблиц

Регистраторы из нескольких таблиц
Я
   alexeykav
 
04.11.17 - 16:35
Добрый день камрады.

Ковыряю запрос на СКД.
 
 
   alexeykav
 
1 - 04.11.17 - 16:35
ВЫБРАТЬ
    _РасчетыСКонтрагентами.Контрагент КАК Контрагент,
    _РасчетыСКонтрагентами.ВыбДоговор КАК Договор,
    _РасчетыСКонтрагентами.Организация КАК Организация,
    _РасчетыСКонтрагентами.Ссылка КАК СудебноеДело,
    ЕСТЬNULL(ЗаймТело.СуммаНачальныйОстаток, 0) КАК СуммаТелаНачало,
    ЕСТЬNULL(ЗаймТело.СуммаОборотКт, 0) КАК СуммаТелаУменьшение,
    ЕСТЬNULL(ЗаймТело.СуммаОборотДт, 0) КАК СуммаТелаУвличение,
    ЕСТЬNULL(ЗаймТело.СуммаКонечныйОстаток, 0) КАК СуммаТелаОкончание,
    ЕСТЬNULL(ПроцентыШтрафы.СуммаНачальныйОстаток, 0) КАК ПроцентыШтрафыНачало,
    ЕСТЬNULL(ПроцентыШтрафы.СуммаОборотКт, 0) КАК ПроцентыШтрафыУменьшение,
    ЕСТЬNULL(ПроцентыШтрафы.СуммаОборотДт, 0) КАК ПроцентыШтрафыУвличение,
    ЕСТЬNULL(ПроцентыШтрафы.СуммаКонечныйОстаток, 0) КАК ПроцентыШтрафыОкончание,
    ЕСТЬNULL(Пени.СуммаНачальныйОстаток, 0) КАК ПениНачало,
    ЕСТЬNULL(Пени.СуммаОборотКт, 0) КАК ПениУменьшение,
    ЕСТЬNULL(Пени.СуммаОборотДт, 0) КАК ПениУвличение,
    ЕСТЬNULL(Пени.СуммаКонечныйОстаток, 0) КАК ПениОкончание,
    ЕСТЬNULL(УслугиЮриста.СуммаНачальныйОстаток, 0) КАК УслугиЮристаНачало,
    ЕСТЬNULL(УслугиЮриста.СуммаОборотКт, 0) КАК УслугиЮристаУменьшение,
    ЕСТЬNULL(УслугиЮриста.СуммаОборотДт, 0) КАК УслугиЮристаУвличение,
    ЕСТЬNULL(УслугиЮриста.СуммаКонечныйОстаток, 0) КАК УслугиЮристаОкончание,
    ЕСТЬNULL(Пошлина.СуммаНачальныйОстаток, 0) КАК ПошлинаНачало,
    ЕСТЬNULL(Пошлина.СуммаОборотКт, 0) КАК ПошлинаУменьшение,
    ЕСТЬNULL(Пошлина.СуммаОборотДт, 0) КАК ПошлинаУвличение,
    ЕСТЬNULL(Пошлина.СуммаКонечныйОстаток, 0) КАК ПошлинаОкончание,
    ЕСТЬNULL(-Деопзиты.СуммаНачальныйОстаток, 0) КАК ДеопзитыНачало,
    ЕСТЬNULL(-Деопзиты.СуммаОборотКт, 0) КАК ДеопзитыУменьшение,
    ЕСТЬNULL(-Деопзиты.СуммаОборотДт, 0) КАК ДеопзитыУвличение,
    ЕСТЬNULL(-Деопзиты.СуммаКонечныйОстаток, 0) КАК ДеопзитыОкончание,
    ВЫБОР
        КОГДА НЕ ЗаймТело.Регистратор ЕСТЬ NULL
            ТОГДА ЗаймТело.Регистратор
        КОГДА НЕ ПроцентыШтрафы.Регистратор ЕСТЬ NULL
            ТОГДА ПроцентыШтрафы.Регистратор
        КОГДА НЕ Пени.Регистратор ЕСТЬ NULL
            ТОГДА Пени.Регистратор
        КОГДА НЕ УслугиЮриста.Регистратор ЕСТЬ NULL
            ТОГДА УслугиЮриста.Регистратор
        КОГДА НЕ Пошлина.Регистратор ЕСТЬ NULL
            ТОГДА Пошлина.Регистратор
        КОГДА НЕ Деопзиты.Регистратор ЕСТЬ NULL
            ТОГДА Деопзиты.Регистратор
        ИНАЧЕ
            _РасчетыСКонтрагентами.Ссылка    
    КОНЕЦ КАК Регистратор,
    ЗаймТело.ПериодСекунда
        
ИЗ
    Документ._РасчетыСКонтрагентами КАК _РасчетыСКонтрагентами
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет.Код = "58.03", , ) КАК ЗаймТело
        ПО _РасчетыСКонтрагентами.Контрагент = ЗаймТело.Субконто1
            И _РасчетыСКонтрагентами.ВыбДоговор = ЗаймТело.Субконто2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет.Код = "76.06", , ) КАК ПроцентыШтрафы
        ПО _РасчетыСКонтрагентами.Контрагент = ПроцентыШтрафы.Субконто1
            И _РасчетыСКонтрагентами.ВыбДоговор = ПроцентыШтрафы.Субконто2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет.Код = "76.02", , ) КАК Пени
        ПО _РасчетыСКонтрагентами.Контрагент = Пени.Субконто1
            И _РасчетыСКонтрагентами.ВыбДоговор = Пени.Субконто2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет.Код = "76.05", , ) КАК УслугиЮриста
        ПО _РасчетыСКонтрагентами.Контрагент = УслугиЮриста.Субконто1
            И _РасчетыСКонтрагентами.ВыбДоговор = УслугиЮриста.Субконто2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет.Код = "76.09", , ) КАК Пошлина
        ПО _РасчетыСКонтрагентами.Контрагент = Пошлина.Субконто1
            И _РасчетыСКонтрагентами.ВыбДоговор = Пошлина.Субконто2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет.Код = "76.99", , ) КАК Деопзиты
        ПО _РасчетыСКонтрагентами.Контрагент = Деопзиты.Субконто1
            И _РасчетыСКонтрагентами.ВыбДоговор = Деопзиты.Субконто2
            
ГДЕ
    _РасчетыСКонтрагентами.Проведен = ИСТИНА
   alexeykav
 
2 - 04.11.17 - 16:37
Не могу вывести группировку по Регистратору.

Остатки и обороты не корректные.
   alexeykav
 
3 - 04.11.17 - 16:39
Добавление поля ПериодСекунда не помогает
   alexeykav
 
4 - 04.11.17 - 16:43
Роли по Регистратору, Периоду выставлял
   alexeykav
 
5 - 04.11.17 - 16:45
Всю голову уже сломал
   alexeykav
 
6 - 04.11.17 - 16:57
Можно ли объединить регистраторы из несткольких таблиц в одну?
   Franchiser
 
7 - 04.11.17 - 17:00
Зачем такие сложности в запросе, когда можно просто использовать временные таблицы. Используй ИР, посмотри макет компоновки, возможно найдешь причину. Если не ошибаюсь помимо периодичности "период секунда" для корректности нужно выбирать обороты по Дт и Кт
   alexeykav
 
8 - 04.11.17 - 17:14
Попробую, отпишусь
   mistеr
 
9 - 04.11.17 - 18:54
(1) Счет.Код = "76.09"... Жесть какая. Про параметры не слышал?

Данные из регистра сначала собери в ВТ по всем интересующим счетам. Намного проще станет.

По сути вопроса. Как ты представляешь СКД посчитает тебе остатки и обороты, если в полях выборки нет СЧЕТА? Без счета роли смысла на имеют.
   mikecool
 
10 - 04.11.17 - 20:18
можно еще покопать в сторону нескольких источников данных
 
 Рекламное место пустует
   Franchiser
 
11 - 04.11.17 - 23:02
И ещё всем ты указываешь параметры для виртуальных таблиц? В СКД это не нужно, по крайней мере в данном случае, есть стандартные параметры
   ВыборКогдаТогда
 
12 - 05.11.17 - 01:50
(0)

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

А вторую часть запроса переделай на запрос к одной виртуальной таблице остатки и обороты,

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

Если с каждого счета нужно брать разные поля, тогда можно через ВЫБОР КОГДА ТаблицаХозрасчетный.Счет=&ОпределенныеСчет ТОГДА ИНАЧЕ КОНЕЦ

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует