Имя: Пароль:
1C
1С v8
Подключение по com. Запрос не работает - "неверные параметры"
0 Темный
 
19.07.11
12:37
Подключаюсь к другой базе по com - соединению. Не могу загрузить данные из таблицы значений во временную таблицу :-(
Итак, как я получаю ТЗ в своей базе:

   ТЗ1 = Новый ТаблицаЗначений;
   ТЗ1.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("Строка"));
   ТЗ1.Колонки.Добавить("НомерГТД",Новый ОписаниеТипов("Строка"));
   ТЗ1.Колонки.Добавить("НаименованиеПолное",Новый ОписаниеТипов("Строка"));
   ТЗ1.Колонки.Добавить("Код",Новый ОписаниеТипов("Строка"));
   ТЗ1.Колонки.Добавить("СтранаПроисхождения",Новый ОписаниеТипов("Строка"));
   ТЗ1.Колонки.Добавить("Родитель",Новый ОписаниеТипов("Строка"));
1 Темный
 
19.07.11
12:38
Потом делаю ТЗ в подключенной базе:

   ТЗПриемник = Приемник.NewObject("ТаблицаЗначений");
   ТЗПриемник.Колонки.Добавить("Номенклатура", Приемник.NewObject("ОписаниеТипов","Строка"));
   ТЗПриемник.Колонки.Добавить("НомерГТД",Приемник.NewObject("ОписаниеТипов","Строка"));
   ТЗПриемник.Колонки.Добавить("НаименованиеПолное",Приемник.NewObject("ОписаниеТипов","Строка"));
   ТЗПриемник.Колонки.Добавить("Код",Приемник.NewObject("ОписаниеТипов","Строка"));
   ТЗПриемник.Колонки.Добавить("СтранаПроисхождения",Приемник.NewObject("ОписаниеТипов","Строка"));
   ТЗПриемник.Колонки.Добавить("Родитель",Приемник.NewObject("ОписаниеТипов","Строка"));
2 Темный
 
19.07.11
12:39
Потом заполняю первую ТЗ обходом из запроса:

   Пока  ВыбЗап.Следующий()
   Цикл
       СтрокаТЗ1 = ТЗ1.Добавить();
       СтрокаТЗ1.Номенклатура = СокрЛП(ВыбЗап.Номенклатура);
       СтрокаТЗ1.НомерГТД = СокрЛП(ВыбЗап.НомерГТД);
       СтрокаТЗ1.НаименованиеПолное = СокрЛП(ВыбЗап.НаименованиеПолное);
       СтрокаТЗ1.Код = СокрЛП(ВыбЗап.Код);
       СтрокаТЗ1.СтранаПроисхождения = СокрЛП(ВыбЗап.СтранаПроисхождения);
       СтрокаТЗ1.Родитель = СокрЛП(ВыбЗап.Родитель);
   КонецЦикла;
3 Темный
 
19.07.11
12:39
Потом переношу данные:

   Стр = ЗначениеВСтрокуВнутр(ТЗ1);
   ТЗПриемник = ЗначениеИзСтрокиВнутр(Стр);
4 Темный
 
19.07.11
12:40
А вот и сам запрос:

   "ВЫБРАТЬ
   |    Таб1.Номенклатура КАК Номенклатура,
   |    Таб1.НомерГТД,
   |    Таб1.НаименованиеПолное,
   |    Таб1.Код,
   |    Таб1.СтранаПроисхождения,
   |    Таб1.Родитель
   |ПОМЕСТИТЬ ТабНомИсточник
   |ИЗ
   |    &Таб КАК Таб1
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ТабНомИсточник.Номенклатура КАК Номенклатура,
   |    КОЛИЧЕСТВО(НоменклатураСпр.Ссылка) КАК КолВоНайденых,
   |    ТабНомИсточник.НомерГТД,
   |    ТабНомИсточник.НаименованиеПолное,
   |    ТабНомИсточник.Код,
   |    ТабНомИсточник.СтранаПроисхождения,
   |    ТабНомИсточник.Родитель
   |ИЗ
   |    ТабНомИсточник КАК ТабНомИсточник
   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСпр
   |        ПО ТабНомИсточник.Номенклатура = НоменклатураСпр.Наименование
   |
   |СГРУППИРОВАТЬ ПО
   |    ТабНомИсточник.Номенклатура,
   |    ТабНомИсточник.НомерГТД,
   |    ТабНомИсточник.НаименованиеПолное,
   |    ТабНомИсточник.Код,
   |    ТабНомИсточник.СтранаПроисхождения,
   |    ТабНомИсточник.Родитель
   |
   |ИМЕЮЩИЕ
   |    КОЛИЧЕСТВО(НоменклатураСпр.Ссылка) = 0";
5 Темный
 
19.07.11
12:40
А здесь передаю таблицу:

   Запрос.УстановитьПараметр("Таб",ТЗПриемник);
6 73
 
19.07.11
12:41
Всё?
7 Темный
 
19.07.11
12:43
В отладчике смотрел, таблица имеет колонки тип "Строка".
выражение                            значение тип
ТЗПриемник.Колонки.Код.ТипЗначения   строка   описаниетипов
8 Темный
 
19.07.11
12:43
Ошибка:

   Выборка = Запрос.Выполнить().Выбрать();
по причине:
Произошла исключительная ситуация: {(10, 2)}: Неверные параметры "Таб"
<<?>>&Таб КАК Таб1
9 Темный
 
19.07.11
12:44
Все. Что не так делаю? Вроде форум внимательно читал...
10 73
 
19.07.11
12:46
А чего в (2) сразу табличку вторую не заполнить?

И как запрос создаёшь не показал...
11 73
 
19.07.11
12:49
(10)+ Имхо, в (3) описание таблички второй затирается...
12 Темный
 
19.07.11
12:52
Запрос = Приемник.newObject("Query");
13 Темный
 
19.07.11
12:53
Может, и затирается. Но, вряд ли, в отладчике (7)
14 Темный
 
19.07.11
12:54
Попробую в (2) сразу заполнять.
15 73
 
19.07.11
12:55
(13) По (7) видно чьё это Описание типов и чья строка?
16 Темный
 
19.07.11
12:57
Однако, спасибо! Действительно, заполнил сразу табличку и взлетело. Видимо, через строку лучше не передавать