Имя: Пароль:
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
ИЗ
ВТ КАК ВТ
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.