Имя: Пароль:
1C
1С v8
Составной тип в запросе
0 vsg-work
 
26.05.21
15:19
Добрый день.

Возникла проблема. Есть таблица значений, которую создал программно. Описал типы, все как нужно. Единственное, у меня поле "ДокументОтгрузки" является составным типом (может быть как реализацией, так и отчет о розничных продажах).

Когда я эту таблицу значений передаю в запрос параметром, при исполнении 1С ругается следующим образом:
Тип не может быть выбран в запросе
<<?>>ТаблицаДанных.ДокументОтгрузки КАК ДокументОтгрузки,

КАк решается данная проблема, подскажите пожалуйста...
1 vde69
 
26.05.21
15:23
что-то типа такого

Выбор
когда т.Поле ссылка(документ.твойдокумент) тогда
выразить(т.Поле, документ.твойдокумент) = &пвр
иначе
ложь
конецвыбор
2 vsg-work
 
26.05.21
15:31
(1) Не понял, а что я должен в параметр поставить?) Вместе &пвр?
3 hhhh
 
26.05.21
15:38
(0) ну, покажите, как описали типы.
4 perlharbor
 
26.05.21
15:39
(0) Ну загляни в эту ТЗ и посмотри какие документы туда попадают. Может встречаться null например,или документ с типом,которого нет в описании колонки
5 vsg-work
 
26.05.21
15:44
(3)     МассивОписанийТипов = Новый Массив;
    МассивОписанийТипов .Добавить(Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг"));
    МассивОписанийТипов .Добавить(Новый ОписаниеТипов("ДокументСсылка.ВозвратТоваровОтПокупателя"));
    ТаблицаДанных.Колонки.Добавить("ДокументОтгрузки", Новый ОписаниеТипов(МассивОписанийТипов ));
6 vsg-work
 
26.05.21
15:45
(4) Ну вот, только два документа и попадают. NULL нету. Только два типа.
7 hhhh
 
26.05.21
15:48
(6) вот это какой-то дебилизм, описание типов, а внутри еще одно описание типов. Наверно так надо

МассивОписанийТипов .Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
8 Anton1307
 
26.05.21
15:49
Рабочий код:

    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ААА", ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(10));
    ТЗ.Колонки.Добавить("БББ", Новый ОписаниеТипов("ДокументСсылка.ПоступлениеТоваровУслуг, ДокументСсылка.РеализацияТоваровУслуг"));
    
    ТекстЗапроса = "ВЫБРАТЬ
                   |    Т.ААА,
                   |    Т.БББ
                   |ПОМЕСТИТЬ ВремТЗ
                   |ИЗ
                   |    &ТЗ КАК Т";
    
    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос.УстановитьПараметр("ТЗ", ТЗ);
    Запрос.Выполнить();
9 Anton1307
 
26.05.21
15:56
(5) У тебя здесь ошибка. Ты в качестве параметра типа колонки передаёшь не массив типов, в массив ОПИСАНИЙ типов.
Правильно - как в (7)
Ошибка? Это не ошибка, это системная функция.