Имя: Пароль:
1C
1С v8
Тип не может быть выбран в запросе
,
0 yanejsh
 
06.11.13
10:00
Есть ТЗ с колонкой, в которой может быть два типа
Массив = Новый Массив;
Массив.Добавить(Новый ОписаниеТипов("СправочникСсылка.Материалы"));
Массив.Добавить(Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ОписаниеТипаМатерИНомен = Новый ОписаниеТипов(Массив, , );
ТаблицаРасходаМатериалов.Колонки.Добавить("Материал",ОписаниеТипаМатерИНомен);

Далее в запросе эта таблица подставляется во временную и выбирается
|ВЫРАЗИТЬ(ТаблицаМатериалов.Материал КАК Справочник.Номенклатура) КАК Материал,

Когда был один тип - все понятно.
Сейчас надо добавить два типа, а как это сделать в запросе?
1 yanejsh
 
06.11.13
10:19
как-то так пробую
http://kb.mista.ru/article.php?id=526

- неоплучается, говорит, что
Несовместимые типы "ВЫРАЗИТЬ"
<<?>>ВЫРАЗИТЬ(НЕОПРЕДЕЛЕНО КАК Справочник.Номенклатура) КАК Ссылка
2 yanejsh
 
06.11.13
10:43
Обошелся этим
ВЫРАЗИТЬ(ТаблицаМатериалов.Материал КАК Строка(100)) КАК Материал,
3 Галахад
 
гуру
06.11.13
10:45
Как это? Справочник в строку преобразовывает?
4 Feunoir
 
06.11.13
10:51
(2) А какая цель типизации в этом случае?
5 yanejsh
 
06.11.13
11:00
в ТЗ могло добавляться два типа справочника. теперь добавляется имя элемента справочника.
А цель - чтобы в запросе выбирать, он без типизации не может
6 yanejsh
 
06.11.13
11:01
ну и вместо
ТаблицаРасходаМатериалов.Колонки.Добавить("Материал",ОписаниеТипаМатерИНомен);
стало
ТаблицаРасходаМатериалов.Колонки.Добавить("Материал",Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(100)));
7 Feunoir
 
06.11.13
11:09
(5) Да ладно? Прямо так и не может? У параметра - таблицы значения должны быть все колонки явно типизированы, а в запросе уже больше ничего не требуется. Оно там само разберется. Но если уж тебе очень хочется, тогда через ВЫБОР.

ВЫБОР
   КОГДА (... ССЫЛКА Справочник.Материалы) ТОГДА ВЫРАЗИТЬ(... КАК Справочник.Материалы)
...
КОНЕЦ
8 yanejsh
 
06.11.13
11:25
что-то ОНО САМО не разбиралось.
через выбор тоже понятно.
9 Defender aka LINN
 
06.11.13
11:31
(2) То есть ты нам вот так вот запросто рассказываешь, что 1С преобразовывает типы в запросе, да?
10 hhhh
 
06.11.13
11:42
(8) сделайте 2 колонки

ТаблицаРасходаМатериалов.Колонки.Добавить("Материал",ОписаниеТипаМатер);
ТаблицаРасходаМатериалов.Колонки.Добавить("Номенклатура",ОписаниеТипаНомен);

чего вы паритесь из-за фигни?
11 Sammo
 
06.11.13
11:49
1. Зачем в запросе делать Выразить если колонка итак типизированная?
2. Если колонка составного типа, она и в запросе будет составного типа
12 Sammo
 
06.11.13
11:51
+11 Спокойно можно было использовать .Представление или Код или наименование.
С нюансами (про неявное соединение)
13 Rovan
 
гуру
06.11.13
12:15
(1) НЕОПРЕДЕЛЕНО - волшебная вещь!
использовать его надо только в крайнем случае
14 Feunoir
 
06.11.13
13:07
(8) см. (13) НЕОПРЕДЕЛЕНО это нетипизированное значение. Что-то я не сложу, как у тебя связаны тип колонки в таблице и ВЫРАЗИТЬ(НЕОПРЕДЕЛЕНО КАК Справочник.Номенклатура)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс