Имя: Пароль:
1C
1С v8
Запрос к Таблице значений
,
0 haggart
 
16.08.12
19:26
Приемник = Новый ТаблицаЗначений;
   Приемник.Колонки.Добавить("Метаданные",Новый ОписаниеТипов("Строка"));
   Приемник.Колонки.Добавить("ИмяПользователя",Новый ОписаниеТипов("Строка"));
   ВыгрузитьЖурналРегистрации(Приемник, , "Метаданные,ИмяПользователя", , );
   
   
   Запрос = Новый Запрос;
   МенеджерВТ = Новый МенеджерВременныхТаблиц;
   Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
   Запрос.Текст = "ВЫБРАТЬ
                     |    Таб.Метаданные
                     |ПОМЕСТИТЬ ВТДанные
                     |ИЗ
                     |    &Данные КАК Таб";
   Запрос.УстановитьПараметр("Данные",Приемник);
   Результат = Запрос.Выполнить().Выгрузить();  




Выдает ошибку Тип не может быть выбран в запросе.
Подскажите где копать.
Спасибо.
1 ДенисЧ
 
16.08.12
19:29
1. длину строки задай.
2. Посмотри на типы колонок после выгрузки, ты уверен, что они не изменились?
2 haggart
 
16.08.12
19:33
как задать длину строки?
3 Rie
 
16.08.12
19:37
(2) КвалификаторыСтроки() в ОписаниеТипов().
4 ДенисЧ
 
16.08.12
19:38
(2) продам СП, дорого.
Кстати, в нём есть пример описания типа колонки ТЗ...
5 haggart
 
16.08.12
19:43
Короче

   Приемник = Новый ТаблицаЗначений;
   Приемник.Колонки.Добавить("Метаданные",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(200));
   Приемник.Колонки.Добавить("ИмяПользователя",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(200));
   ВыгрузитьЖурналРегистрации(Приемник, , "Метаданные,ИмяПользователя", , );
   
   
   Запрос = Новый Запрос;
   МенеджерВТ = Новый МенеджерВременныхТаблиц;
   Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
   Запрос.Текст = "ВЫБРАТЬ
                     |    Таб.Метаданные
                     |ПОМЕСТИТЬ ВТДанные
                     |ИЗ
                     |    &Данные КАК Таб";
   Запрос.УстановитьПараметр("Данные",Приемник);
   Результат = Запрос.Выполнить().Выгрузить();  
       

Но отладчиком смотрю, что после выгрузки журнала в ТЗ, пропадают все типы... нафиг.
как мне после выгрузки задать тип?
6 ДенисЧ
 
16.08.12
19:48
Создать новую ТЗ с нужными типами, скопировать туда исходную через ЗаполнитьЗначенияСвойств()
7 Живой Ископаемый
 
16.08.12
19:55
Еще можно создать однажды нужную, с нужными типами.. Потом ее сериализовать тем или иным способом пустую. Строку поместить в макет, и перед использованием в запросе, получать из этого макета и десериализовывать
8 haggart
 
16.08.12
20:10
А кто знает, почему 1С так мозго@бчески подошла к запросу к ТЗ? Чем она так уж отличается от любой другой таблицы? НА любом SQL давным давно никто не замечает разницы при обращении к виртуальным таблицам и обычным.
9 Mort
 
16.08.12
20:12
(8) Напиши свою 1С с блэкджеком и шлюхами.
10 Живой Ископаемый
 
16.08.12
20:13
2(8) я попросил, мне так удобнее..
11 haggart
 
16.08.12
20:20
(8) :))))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший