Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:13

Ошибка в запросе через com-соединение

Автор Kamor, 19 июл 2018, 11:30

0 Пользователей и 1 гость просматривают эту тему.

Kamor

Добрый день!
Пишу отчет, который берет данные сразу из нескольких баз. НА форме отчета есть Таблица значений "Организации" в которую пользователь заносит все организации, которые не должны выводится в отчет. Данную таблицу значений я выгружаю в массив и добавляю условие в запрос, запрос корректно работает в текущей базе, но не выполняется через com-соединение. Если не добавлять условие с массивом, то все работает. Ошибка: Неверные параметры
И (Не РеализацияТоваровУслуг.Контрагент.Наименование <<?>>В (&Массив1))

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


Запрос.УстановитьПараметр("НачалоПериода", ОтчетОбъект.НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", ОтчетОбъект.КонецПериода);
Запрос.УстановитьПараметр("Покуп", контр);
Запрос.УстановитьПараметр("пользователь", ТекПользователь);
Запрос.УстановитьПараметр("Ном", Номенклатура);
Запрос.УстановитьПараметр("Орг", Организация);
Запрос.УстановитьПараметр("Массив1", Массив1);
       

LexaK

что такое массив? (грубо) это ссылка на какой-то объект в памяти программы
когда вы передаете массив в СОМ соединение это всего лишь ссылка, по которой в программе на другом конце СОМ соединения НЕТ данных

вот как-то еще надо передать и данные массива в СОМ соединение! :xfbnsdfb:
(ну если совсем просто то в СОМ соединении создать и заполнить массив, затем использовать его)
и что самое прикольное это надо делать для каждого соединения.
если помогло нажмите: Спасибо!

Kamor

Разобрался, надо было писать
массив1 = СоединениеБД.NewObject("Массив");

KOI8-R

массив1 тоже надо создавать через NewObject

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск