Имя: Пароль:
1C
1С v8
Новичковый вопрос по запросу к ТЗ
,
0 ildary
 
22.03.15
06:00
Уважаемые специалисты, подскажите пожалуйста, почему выполнение кода возвращает ошибку "Неверные параметры "ТабЗнач"
<<?>>&ТабЗнач Как ТабЗнач"? УФ, Клиент-сервер.

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос.УстановитьПараметр( "ТабЗнач", ТЗТоваров );
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ТабЗнач.Номенклатура КАК Номенклатура,
    |    ТабЗнач.ВРеализацию  КАК Количество,
    |    ТабЗнач.Цена          КАК Цена
    |ПОМЕСТИТЬ
    |    ВременнаяТаблица
    |ИЗ
    |    &ТабЗнач Как ТабЗнач
    |ГДЕ
    |    Количество > 0;
    |ВЫБРАТЬ * ИЗ ВременнаяТаблица";
    
    ТЗВрем = Запрос.Выполнить().Выбрать();
1 ShoGUN
 
22.03.15
06:05
(0) Потому что колонки в таблице значений не типизированы. У каждой колонки передаваемой таблицы должны быть прописаны типы значений.
2 ildary
 
22.03.15
06:07
(1) Большое спасибо за помощь! Про типизацию я читал, но думал, что из-за её отсутствия будет более внятная ошибка.
3 ShoGUN
 
22.03.15
06:08
(2) Экспериментатор? Какая разница, какая ошибка, когда явно написано - колонки должны быть типизированы? :)
4 ildary
 
22.03.15
06:09
(3) Нет, новичок в восьмерке :)
5 ildary
 
22.03.15
06:10
(3) и вдогонку, пока все тролли спят - а как типизировать уже существуюшую ТЗ (элемент формы), если в языке нет оператора УстановитьПараметрыКолонки?
6 ShoGUN
 
22.03.15
06:12
(5) А откуда эта существующая ТЗ взялась? Если создавалась руками - при создании. А при выгрузке откуда-то - она и так будет типизированная, нужно только типы прописывать у добавляемых колонок, если руками их добавляешь.
7 ildary
 
22.03.15
06:14
(6) это реквизит формы, и у него кстати уже все колонки типизированы (справочник, числа, булево).
8 ShoGUN
 
22.03.15
06:19
(7) Странно. Проверь ТипЗначения у всех колонок в отладчике. А так - только создавать новую колонку, типизировать её при создании, заполнять(ВыгрузитьКолонку/ЗагрузитьКолонку), удалать старую и переименовывать новую. Морока, да. Поэтому и говорю, что проще при создании прописывать типы.
Скорей всего у тебя нетипизированная колонка добавляется где-то. Даже если она одна - запрос к такой ТЗ всё равно нельзя сделать.
9 ildary
 
22.03.15
06:27
(8) Большое спасибо, разобрался, я считал, что это ТЗ, а это оказалось ДанныеФормыКоллеция. Теперь лезет другая ошибка: "Временная таблица уже существует "ВременнаяТаблица"
<<?>>ВременнаяТаблица"


    ТЗ1 = Новый ТаблицаЗначений;
    ТЗ1 = СписокТоваров.Выгрузить();
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос.УстановитьПараметр( "ТабЗнач", ТЗ1 );
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ТабЗнач.Номенклатура КАК Номенклатура,
    |    ТабЗнач.ВРеализацию  КАК Количество,
    |    ТабЗнач.Цена          КАК Цена
    |ПОМЕСТИТЬ
    |    ВременнаяТаблица
    |ИЗ
    |    &ТабЗнач Как ТабЗнач
    |ГДЕ
    |    ВРеализацию > 0;
    |ВЫБРАТЬ * ИЗ ВременнаяТаблица";
    
    ТЗВрем = Запрос.Выполнить().Выбрать();
10 ShoGUN
 
22.03.15
06:38
(9) В таком коде не нужен МВТ, тут просто пакетный запрос. Ну и таблицу переименовать попробуй.
11 hhhh
 
22.03.15
06:41
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

выкиньте
12 ildary
 
22.03.15
07:17
Всем большое спасибо, выкинул, все работает!

p.s. Что мне водка в летний зной, что мне вермут разливной,
когда такие люди на мисте со мной.