Имя: Пароль:
1C
1С v8
составной ТИП реквизита через ВЫРАЗИТЬ возвращает документ, а не значение рекв-т
0 AmeliTA
 
01.02.17
18:59
Помогите, уже не знаю что делать. Получаю данные из регистра бухгалтерии - Регистраторы за месяц и мне нужно вывести подразделение из регистратора, а регистратор является составным типом.

в итоге решила выбрать документы, выгрузить в таблицу значений (тз), потом в коде найти типы документов различные и наличие реквизита Подразделения у данного типа.
И дальше пихаю эту тз (вт) в запрос в качестве параметра, и там в коде циклом (цикл по тз с типами документов) формирую текст запроса, подставляю тип возможных документов и реквизит "Выразить( ВТ.Регистратор как Документ."+ТипДокмуента +")."+Подразделение. Проблема в том, что вместо значения реквизита Подразделения выводится Регистратор. что делать уже не знаю. Помогите, пожалуйста.
1 Fram
 
01.02.17
19:11
Какой кошмар!
Юзай ССЫЛКА в запросах
2 Fram
 
01.02.17
19:13
а вообще вроде и тупо Регистратор.Подразделение можно попрбовать в первичном запросе. надо попробовать
3 AmeliTA
 
01.02.17
19:13
Запрос = Новый Запрос;
    МенВремТаб = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МенВремТаб;
Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода",КонецПериода);
Запрос.УстановитьПараметр("СчетБУДоходыКт",СчетБУДоходыКт);

    Запрос.Текст = "ВЫБРАТЬ
          
                |ХозрасчетныйОборотыДтКт.Регистратор,
                |ХозрасчетныйОборотыДтКт.СуммаОборот,
                |null КАК Подразделение,
                |ХозрасчетныйОборотыДтКт.Организация
        
            |ИЗ
                |РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , , СчетКт В ИЕРАРХИИ (&СчетБУДоходыКт), , ) КАК ХозрасчетныйОборотыДтКт";
            
      
Результат = Запрос.Выполнить().Выгрузить();


МассивГП="";
    ТЗ_ТипыДокументов = Новый ТаблицаЗначений;
    ТЗ_ТипыДокументов.Колонки.Добавить("ТипДокумента",Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(200)));
    ТЗ_ТипыДокументов.Колонки.Добавить("Подразделение",Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100)));
    ТЗ_ТипыДокументов.Колонки.Добавить("Подразделение_САГ",Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100)));
    ТЗ_ТипыДокументов.Колонки.Добавить("ПодразделениеОрганизации",Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100)));

    НайденоПодразделение = Ложь;

    Для каждого Стр Из Результат Цикл    
        Если НЕ ЗначениеЗаполнено(Стр.Подразделение) тогда  
            ИмяТипаДокумента = Стр.Регистратор.Метаданные().Имя;
            НайденнаяСтрока = ТЗ_ТипыДокументов.Найти(ИмяТипаДокумента, "ТипДокумента");
            НайденоПодразделение = Ложь;
            НайденоПодразделение_САГ = Ложь;
            НайденоПодразделениеОрганизации = Ложь;
            Если НайденнаяСтрока = Неопределено Тогда
                Если ЕстьРеквизитОбъекта("Подразделение",Стр.Регистратор) тогда
                    НайденоПодразделение = Истина;
                КонецЕсли;
                Если ЕстьРеквизитОбъекта("Подразделение_САГ",Стр.Регистратор) тогда
                    НайденоПодразделение_САГ = Истина;
                конецесли;

                Если ЕстьРеквизитОбъекта("ПодразделениеОрганизации",Стр.Регистратор) тогда
                    НайденоПодразделениеОрганизации = Истина;
                конецесли;
                
                Если НайденоПодразделение или НайденоПодразделение_САГ или НайденоПодразделениеОрганизации Тогда
                    СтрТЗ = ТЗ_ТипыДокументов.Добавить();
                    СтрТЗ.ТипДокумента = ИмяТипаДокумента;
                    если  НайденоПодразделение тогда
                        СтрТЗ.Подразделение = "Подразделение";
                    КонецЕсли;
                    если  НайденоПодразделение_САГ тогда
                        СтрТЗ.Подразделение_САГ = "Подразделение_САГ";
                    КонецЕсли;
                    если  НайденоПодразделениеОрганизации тогда
                        СтрТЗ.ПодразделениеОрганизации = "ПодразделениеОрганизации";
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;

        КонецЕсли;
    КонецЦикла;
    Если ТЗ_ТипыДокументов.количество() > 0 Тогда
                
        МенВрТаб = Новый МенеджерВременныхТаблиц;
        Запрос = Новый Запрос;
        Запрос.МенеджерВременныхТаблиц = МенВремТаб;
        
        ТекстЗапросаПодразделения =  "ВЫБРАТЬ
         | ВТ_Результат.Регистратор, ВТ_Результат.Причина1, ВТ_Результат.Причина2, ВТ_Результат.СуммаБУ, СуммаУУ, ВТ_Результат.ПодразделениеУУ, ВТ_Результат.ПодразделениеОрганизации, ВТ_Результат.ЦФО, ВТ_Результат.Организация,
         | выбор КОГДА не ВТ_Результат.подразделение = null тогда ВТ_Результат.подразделение ";
        
        Для каждого Эл Из ТЗ_ТипыДокументов ЦИкл
            ТекстЗапросаПодразделения = ТекстЗапросаПодразделения + "
            |        КОГДА ВТ_Результат.Регистратор ссылка Документ."+Эл.ТипДокумента +"
            |        тогда выразить(ВТ_Результат.Регистратор КАК Документ."+Эл.ТипДокумента + ")."+?(не Эл.Подразделение="",Эл.Подразделение,?(не Эл.Подразделение_САГ="",Эл.Подразделение_САГ,Эл.ПодразделениеОрганизации));
        КонецЦикла;
        
        ТекстЗапросаПодразделения = ТекстЗапросаПодразделения +" иначе  ВТ_Результат.Подразделение конец   как  Подразделение
         |поместить вт ИЗ
         | &Результат КАК ВТ_Результат; выбрать * из вт";
        Запрос.Текст = ТекстЗапросаПодразделения;
        Запрос.УстановитьПараметр("Результат", Результат);
        
        Рез = Запрос.Выполнить().Выгрузить();
    КонецЕсли;
4 Fram
 
01.02.17
19:14
1С вроде сам отсеивает неподходящие типы при получении через точку.
5 Mankubus
 
01.02.17
19:15
(3) ВЫБОР КОГДА Регистратор ССЫЛКА Документ.ПТУ ТОГДА ВЫРАЗИТЬ (Регистратор КАК Документ.ПТУ).Подразделение
КОГДА Регистратор ССЫЛКА Документ.РТУ ТОГДА ВЫРАЗИТЬ (Регистратор КАК Документ.РТУ).Подразделение
....и т.д. все документы
КОНЕЦ
6 AmeliTA
 
01.02.17
19:18
(1) (5) (5)
Я не знаю какие типы будут в документе, там все документы, неужели мне все 100 документов перечислять?
7 AmeliTA
 
01.02.17
19:20
(4)
долго запрос выполняется, в типе более 100 документов, а значит будет создано более 100 левых соединений.
8 AmeliTA
 
01.02.17
19:23
без тестирования переделала свой запрос для форума, упростила, выше последний кусок неправильный (реквизиты выборки из регистра бухгалтерии).

Если ТЗ_ТипыДокументов.количество() > 0 Тогда
                
        МенВрТаб = Новый МенеджерВременныхТаблиц;
        Запрос = Новый Запрос;
        Запрос.МенеджерВременныхТаблиц = МенВремТаб;
        
        ТекстЗапросаПодразделения =  "ВЫБРАТЬ
         | ВТ_Результат.Регистратор, ВТ_Результат.СуммаОборот, ВТ_Результат.Организация,
         | выбор КОГДА не ВТ_Результат.подразделение = null тогда ВТ_Результат.подразделение ";
        
        Для каждого Эл Из ТЗ_ТипыДокументов ЦИкл
            ТекстЗапросаПодразделения = ТекстЗапросаПодразделения + "
            |        КОГДА ВТ_Результат.Регистратор ссылка Документ."+Эл.ТипДокумента +"
            |        тогда выразить(ВТ_Результат.Регистратор КАК Документ."+Эл.ТипДокумента + ")."+?(не Эл.Подразделение="",Эл.Подразделение,?(не Эл.Подразделение_САГ="",Эл.Подразделение_САГ,Эл.ПодразделениеОрганизации));
        КонецЦикла;
        
        ТекстЗапросаПодразделения = ТекстЗапросаПодразделения +" иначе  ВТ_Результат.Подразделение конец   как  Подразделение
         |поместить вт ИЗ
         | &Результат КАК ВТ_Результат; выбрать * из вт";
        Запрос.Текст = ТекстЗапросаПодразделения;
        Запрос.УстановитьПараметр("Результат", Результат);
        
        Рез = Запрос.Выполнить().Выгрузить();
    КонецЕсли;
9 H A D G E H O G s
 
01.02.17
19:28
Автора расстрелять отправить готовить борщ за такие запросы.
10 AmeliTA
 
01.02.17
19:28
реквизит регистратор имеет составной тип из всех документов конфы, это  129 документов. Неужели нет светлых мыслей? как сделать быстрый запрос.
11 AmeliTA
 
01.02.17
19:29
(9)
что нет так? )
12 H A D G E H O G s
 
01.02.17
19:31
(11) Напиши запрос без этих динамических соплей
   Для каждого Эл Из ТЗ_ТипыДокументов ЦИкл
            ТекстЗапросаПодразделения = ТекстЗапросаПодразделения + "
            |        КОГДА ВТ_Результат.Регистратор ссылка Документ."+Эл.ТипДокумента +"
            |        тогда выразить(ВТ_Результат.Регистратор КАК Документ."+Эл.ТипДокумента + ")."+?(не Эл.Подразделение="",Эл.Подразделение,?(не Эл.Подразделение_САГ="",Эл.Подразделение_САГ,Эл.ПодразделениеОрганизации));
        КонецЦикла;

конкретно для одного типа документа, так, чтобы запрос открывался в конструкторе и напиши его сюда.

А потом пользуй СтрЗаменить()

И никогда так не делай
13 AmeliTA
 
01.02.17
19:32
логики не ищите в первом запросе и втором, это копипаст сокращенный.
14 Zhuravlik
 
01.02.17
19:32
(8) Если надо сгенерировать текст запроса - то есть объекты Метаданные и СхемаЗапроса
15 H A D G E H O G s
 
01.02.17
19:32
Ну и этот бред убери

выбор КОГДА не ВТ_Результат.подразделение = null тогда ВТ_Результат.подразделение

Сравнение с null всегда дает ЛОЖЬ

Используй конструкцию ЕСТЬ NULL
16 Zhuravlik
 
01.02.17
19:35
Я бы еще порекоммендовал избавиться от частого употребления простого условия... Потом смотришь на такой код, и голова опухает.
_
Простое условие - для *простых* условий
Результат = ?(а=1, 2, 3); // - это простое условие
Результат = ?(а=1, ?(b = 2, 3,4), 5); // это бред...
17 AmeliTA
 
01.02.17
19:36
(12)
ВЫБРАТЬ
ВТ_Результат.Регистратор, ВТ_Результат.Причина1, ВТ_Результат.Причина2, ВТ_Результат.СуммаБУ, СуммаУУ, ВТ_Результат.ПодразделениеУУ, ВТ_Результат.ПодразделениеОрганизации, ВТ_Результат.ЦФО, ВТ_Результат.Организация,
выбор КОГДА не ВТ_Результат.подразделение есть null тогда ВТ_Результат.подразделение  
        КОГДА ВТ_Результат.Регистратор ссылка Документ.КорректировкаДолга
        тогда Документ.КорректировкаДолга.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.КорректировкаЗаписейРегистров
        тогда Документ.КорректировкаЗаписейРегистров.Подразделение_САГ
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОперацияБух
        тогда Документ.ОперацияБух.Подразделение_САГ
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПлатежноеПоручениеВходящее
        тогда Документ.ПлатежноеПоручениеВходящее.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПриходныйКассовыйОрдер
        тогда Документ.ПриходныйКассовыйОрдер.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОтчетОРозничныхПродажах
        тогда Документ.ОтчетОРозничныхПродажах.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.РеализацияТоваровУслуг
        тогда Документ.РеализацияТоваровУслуг.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ВозвратТоваровОтПокупателя
        тогда Документ.ВозвратТоваровОтПокупателя.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.КорректировкаРеализации
        тогда Документ.КорректировкаРеализации.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.АктОбОказанииПроизводственныхУслуг
        тогда Документ.АктОбОказанииПроизводственныхУслуг.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПередачаОС
        тогда Документ.ПередачаОС.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОприходованиеТоваров
        тогда Документ.ОприходованиеТоваров.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПеремещениеТоваров
        тогда Документ.ПеремещениеТоваров.Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОтчетПроизводстваЗаСмену
        тогда Документ.ОтчетПроизводстваЗаСмену.Подразделение иначе  ВТ_Результат.Подразделение конец   как  Подразделение
поместить вт ИЗ
&Результат КАК ВТ_Результат; выбрать * из вт
18 H A D G E H O G s
 
01.02.17
19:36
Надо всосать СхемуЗапроса, годная вещь.
19 AmeliTA
 
01.02.17
19:36
(17)
вот что у меня в отладке получилось
20 AmeliTA
 
01.02.17
19:37
текст запроса, который потом выполняется. но вместо подразделения, регистратор выводится
21 H A D G E H O G s
 
01.02.17
19:38
тогда Документ.КорректировкаДолга.Подразделение
заменить на
тогда ВЫРАЗИТЬ(ВТ_Результат.Регистратор как Документ.КорректировкаДолга).Подразделение
22 AmeliTA
 
01.02.17
19:39
(16)
этот бред сформировал правильный текст запроса. сорри, старый запрос остался, так я тоже делала.
23 AmeliTA
 
01.02.17
19:41
ВЫБРАТЬ
ВТ_Результат.Регистратор, ВТ_Результат.Причина1, ВТ_Результат.Причина2, ВТ_Результат.СуммаБУ, СуммаУУ, ВТ_Результат.ПодразделениеУУ, ВТ_Результат.ПодразделениеОрганизации, ВТ_Результат.ЦФО, ВТ_Результат.Организация,
выбор КОГДА не ВТ_Результат.подразделение = null тогда ВТ_Результат.подразделение  
        КОГДА ВТ_Результат.Регистратор ссылка Документ.КорректировкаДолга
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.КорректировкаДолга).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.КорректировкаЗаписейРегистров
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.КорректировкаЗаписейРегистров).Подразделение_САГ
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОперацияБух
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ОперацияБух).Подразделение_САГ
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПлатежноеПоручениеВходящее
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ПлатежноеПоручениеВходящее).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПриходныйКассовыйОрдер
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ПриходныйКассовыйОрдер).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОтчетОРозничныхПродажах
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ОтчетОРозничныхПродажах).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.РеализацияТоваровУслуг
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.РеализацияТоваровУслуг).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ВозвратТоваровОтПокупателя
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ВозвратТоваровОтПокупателя).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.КорректировкаРеализации
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.КорректировкаРеализации).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.АктОбОказанииПроизводственныхУслуг
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.АктОбОказанииПроизводственныхУслуг).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПередачаОС
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ПередачаОС).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОприходованиеТоваров
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ОприходованиеТоваров).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ПеремещениеТоваров
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ПеремещениеТоваров).Подразделение
        КОГДА ВТ_Результат.Регистратор ссылка Документ.ОтчетПроизводстваЗаСмену
        тогда выразить(ВТ_Результат.Регистратор КАК Документ.ОтчетПроизводстваЗаСмену).Подразделение иначе  ВТ_Результат.Подразделение конец   как  Подразделение
поместить вт ИЗ
&Результат КАК ВТ_Результат; выбрать * из вт
24 AmeliTA
 
01.02.17
19:53
в консоли подразделение выводит

             ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.Регистратор,
    ХозрасчетныйОборотыДтКт.Организация,
    ХозрасчетныйОборотыДтКт.СуммаОборот,
    NULL КАК подразделение
ПОМЕСТИТЬ вт_результат
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Регистратор, , , СчетКт В ИЕРАРХИИ (&СчетБУ90019101), , ) КАК ХозрасчетныйОборотыДтКт
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт_результат.Регистратор,
    вт_результат.СуммаОборот,
    вт_результат.Организация,
    ВЫБОР
        КОГДА НЕ вт_результат.подразделение ЕСТЬ NULL
            ТОГДА вт_результат.подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.КорректировкаДолга
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.КорректировкаДолга).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.КорректировкаЗаписейРегистров
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.КорректировкаЗаписейРегистров).Подразделение_САГ
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ОперацияБух
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ОперацияБух).Подразделение_САГ
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ПлатежноеПоручениеВходящее).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ПриходныйКассовыйОрдер).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ОтчетОРозничныхПродажах).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.РеализацияТоваровУслуг).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ВозвратТоваровОтПокупателя).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.КорректировкаРеализации
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.КорректировкаРеализации).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.АктОбОказанииПроизводственныхУслуг
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.АктОбОказанииПроизводственныхУслуг).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ПередачаОС
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ПередачаОС).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ОприходованиеТоваров).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ПеремещениеТоваров).Подразделение
        КОГДА вт_результат.Регистратор ССЫЛКА Документ.ОтчетПроизводстваЗаСмену
            ТОГДА ВЫРАЗИТЬ(вт_результат.Регистратор КАК Документ.ОтчетПроизводстваЗаСмену).Подразделение
        ИНАЧЕ вт_результат.подразделение
    КОНЕЦ КАК Подразделение
ИЗ
    вт_результат КАК вт_результат
25 youalex
 
01.02.17
20:11
А в самом регистре разве нет подразделения?
26 youalex
 
01.02.17
20:17
+ соединяться можно с журналом (если там есть графа подразделение, и нужные типы).
27 AmeliTA
 
02.02.17
09:49
(25)
не для всех записей в регистре заполнено субконто -подразделением, нужно именно из самого документа вытащить.
28 AmeliTA
 
02.02.17
10:07
если передавать таблицу значений выбранную ранее из регистра в качестве параметра в новый запрос, то даже в запросе нельзя через точку выбрать подраздление от регистратора, пишет ошибку что поле подразделение не найдено
29 AmeliTA
 
02.02.17
10:35
заработало. сначало нужно передать тз во временную и потом из нее сделать выборку с выразить. Если делать просто через точку, то один день обрабатывался минут 5, если не больше, сейчас 1 сек и выборка будет за месяц )

ВЫБРАТЬ *
ПОМЕСТИТЬ ВТ ИЗ
&Результат КАК ВТ_Результат;
ВЫБРАТЬ ВТ.Регистратор, ВТ.СуммаБУ, ВТ.СуммаУУ, , ВТ.Организация,

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