Временные таблицы в 8.1 - обязательная типизация полей таблиц значений-источников Ключевые слова: таблица, ошибка, тип, запрос, менеджервременныхтаблиц, поместить
Первая проблема при работе с временными таблицами у меня возникла, кодга попытался передать в качестве
источника таблицу значений - получил не совсем понятную ошибку:
"Ошибка при вызове метода контекста (Выполнить): Тип не может быть выбран в запросе".
Оказалось все просто - все колнки таблицы значений должны быть типизированы.
Примерно так:
ТаблицаПодразделений = Новый ТаблицаЗначений;
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.ПодразделенияОрганизаций"));
ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов);
ТаблицаПодразделений.Колонки.Добавить("Подразделение", ДопустимыеТипы);
МассивТипов.Очистить();
КЧ = Новый КвалификаторыЧисла();
МассивТипов.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(МассивТипов, , ,КЧ);
ТаблицаПодразделений.Колонки.Добавить("УровеньПодразделения", ОписаниеТиповЧ);
При этом описания необходимости этого в книге 1С:Предприятие 8.1 Бета-версия "Конфигурирование и
администрирование" я не нашёл. Подсказали на этом форуме.
От гения 1С:
Для написания запросов над временными таблицами 8.1 удобна методика: Книга знаний: v8: Конструирование сложных запросов для 1С
От zag2art
Если есть ТЗ, в каждой колонке которой значения всего одного типа, для типизации колонок, можно
воспользоваться функцией:
[1с]
Процедура ТипизацияТЗ(ТЗ) Экспорт
РезультатТЗ = новый ТаблицаЗначений;
Для Каждого Колонка из ТЗ.Колонки Цикл
Имя = Колонка.Имя;
МассивТипов = новый Массив(1);
МассивТипов[0] = ТипЗнч(ТЗ[0][Имя]);
Описатель = новый ОписаниеТипов(МассивТипов);
РезультатТЗ.Колонки.Добавить(Имя, Описатель);
КонецЦикла;
Для каждого Строка из ТЗ Цикл
СтрокаРез = РезультатТЗ.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРез, Строка);
КонецЦикла;
ТЗ = РезультатТЗ.Скопировать();
КонецПроцедуры
[/1с]
От lxs
Если мы говорим про выборку данных из какого-либо документа, то достаточно сделать так:
ТЗ = <СсылкаНаОбъект.ТабличнаяЧасть>.ВыгрузитьКолонки();
Результатом будет таблица значений со структурой и типизацией полей табличной части. |