Имя: Пароль:
1C
1С v8
работа с типом значения в запросе
,
0 Genius
 
14.04.15
16:46
Доброго всем времени суток!
Подскажите если кто знает, как реализовать следующую ситуацию..
Нужно в одной таблице вывести 3 поля - тип объекта, количество объектов и количество версий объектов данного типа. Источник данных - регистр версионирования.

ВЫБРАТЬ  
    ТИПЗНАЧЕНИЯ(ВерсииОбъектов.Объект) КАК ВидОбъекта,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВерсииОбъектов.Объект) КАК КоличествоОбъектов
ИЗ
    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов

СГРУППИРОВАТЬ ПО
    ТИПЗНАЧЕНИЯ(ВерсииОбъектов.Объект)

Подобным запросом можно получить две разные таблицы - одну с количеством объектов, другая с количеством версий.
Идеальным вариантом было бы их соединить по виду объекта, на крайний случай - объединить по нему же. Но получившийся ВидОбъекта (результат функции ТИПЗНАЧЕНИЯ()) - такая зараза, которая не поддаётся какому-либо сравнению. Фунцция "Выразить" тоже не работает.  В итоге имею две таблицы, которые просто нужно соединить, а как - хз.
Уже голову сломал..
1 Defender aka LINN
 
14.04.15
16:50
Только что соединил 2 таблицы по полю "ТипЗначения(...)". Что я сделал не так?
2 Genius
 
14.04.15
17:10
по типу значения = да, я не указал, то что у меня результаты обоих запросов выгружаются во временную таблицу, и вот эти временные таблицы уже не соединяются. Делаю через ВТ из-за большого объёма, подругому сервер может не потянуть
3 pessok
 
14.04.15
17:13
(2) т.е. ПО Т1.ВидОбъекта = Т2.ВидОбъекта не взлетает?
4 Genius
 
14.04.15
17:14
да, так не взлетает..
5 Defender aka LINN
 
14.04.15
17:14
(2) Доктор, а я как сделал?

ВЫБРАТЬ
    Магазины.Ссылка,
    ТИПЗНАЧЕНИЯ(Магазины.ОсновнойСклад) КАК Тип
ПОМЕСТИТЬ Таблица
ИЗ
    Справочник.Магазины КАК Магазины
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Таблица.Тип,
    Таблица.Ссылка,
    Таблица1.Ссылка КАК Ссылка1
ИЗ
    Таблица КАК Таблица
        ЛЕВОЕ СОЕДИНЕНИЕ Таблица КАК Таблица1
        ПО Таблица.Тип = Таблица1.Тип
6 ДенисЧ
 
14.04.15
17:15
(5) ЭЭэ нет..
Ты сначала получи ТЗ, потом помести её в ВТ, а потом уже объединяй... )
7 pessok
 
14.04.15
17:16
(5) я так понимаю, что в (0) разные временные таблицы
8 pessok
 
14.04.15
17:16
(6) это тогда проще сделать в ТЗ строковую колонку с типом значения и соединять по ней ;)
9 Genius
 
14.04.15
17:19
Вот так работает. Остается только сгруппировать результат:



ВЫБРАТЬ
    ТИПЗНАЧЕНИЯ(ВерсииОбъектов.Объект) КАК ВидДокумента,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВерсииОбъектов.НомерВерсии) КАК Количество_1,
    СУММА(1) КАК Количество
ПОМЕСТИТЬ ДанныеПоВерсиям
ИЗ
    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов

СГРУППИРОВАТЬ ПО
    ТИПЗНАЧЕНИЯ(ВерсииОбъектов.Объект)
;

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

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

СГРУППИРОВАТЬ ПО
    ТИПЗНАЧЕНИЯ(ВерсииОбъектов.Объект)
;

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

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

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

ВЫБРАТЬ
    Док.ВидДокумента,
    NULL,
    Док.КоличествоВерсий
ИЗ
    Версии КАК Док
;

////////////////////////////////////////////////////////////////////////////////
//ВЫБРАТЬ
//    Таб.ВидДокумента КАК ВидДокумента,
//    СУММА(Таб.КоличествоДокументов) КАК КоличествоДокументов,
//    СУММА(Таб.КоличествоВерсий) КАК КоличествоВерсий
//ИЗ
//    ВремТаб КАК Таб

//СГРУППИРОВАТЬ ПО
//    Таб.ВидДокумента


Если убрать последние комменты - получится последняя ВТ с группировкой, которая не работает. Может я че не то делаю, но найти ошибку не могу..
10 Defender aka LINN
 
14.04.15
17:19
Забавно. Работать работает, но в конструкторе уже не открывает :)
(7) Да пожалуйста:

ВЫБРАТЬ
    Магазины.Ссылка,
    ТИПЗНАЧЕНИЯ(Магазины.ОсновнойСклад) КАК Тип
ПОМЕСТИТЬ Таблица
ИЗ
    Справочник.Магазины КАК Магазины
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Склады.Магазин,
    ТИПЗНАЧЕНИЯ(Склады.Ссылка) КАК Тип
ПОМЕСТИТЬ Таблица2
ИЗ
    Справочник.Склады КАК Склады
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Таблица.Ссылка,
    Таблица.Тип,
    Таблица2.Магазин,
    Таблица2.Тип КАК Тип1
ИЗ
    Таблица КАК Таблица
        ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
        ПО Таблица.Тип = Таблица2.Тип

(6) Ну и фантазия у тебя...
11 Genius
 
14.04.15
17:20
Представление я уже к ходе экспериментов добавил. По сути оно ничего не поменяло