|
Как передать массив в запрос Во внешней базе? | ☑ | ||
---|---|---|---|---|
0
rchervak
17.08.11
✎
16:10
|
Здравствуйте.
Соеденяюсь с Удаленной базой по com соединению. подготавливаю заранее массив из Комитентов (тип строка ) Запрос = connection.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | Документ.номер КАК Номер, | ТЧ.Товар КАК Товар, | СУММА(ТЧ.Количество) КАК Количество, |ИЗ | Документ.ТоварыРасходная КАК Документ |ГДЕ | Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода | И Документ.Проведен | И (ТЧ.Комитент.наименование В (&Комитент) ИЛИ &Комитент ЕСТЬ NULL ) В итоге при выборке ошибка: РезультатЗапроса = Запрос.Выполнить().Выбрать(); по причине: Произошла исключительная ситуация: {(30, 30)}: Неверные параметры И (ТЧ.Комитент.наименование <<?>>В (&Комитент) ИЛИ &Комитент ЕСТЬ NULL ) Если без условия: И (ТЧ.Комитент.наименование В (&Комитент) ИЛИ &Комитент ЕСТЬ NULL ) То запрос работает , Правда без отбора :) Я так понимаю нельзя наверное в удаленную базу массив передать для выборки, Вот она и ругается. Но может есть способ? |
|||
1
Scooter
17.08.11
✎
16:11
|
(0)показывай как массив создаешь
|
|||
2
rchervak
17.08.11
✎
16:17
|
на форме есть список значений. называется -КомитентыХолдинга
ТекКомитент = ?(ЭлементыФормы.КомитентыХолдинга.Значение.Количество() = 0, NULL, ЭлементыФормы.КомитентыХолдинга.Значение.ВыгрузитьЗначения()); СписокКомитентов = Новый ТаблицаЗначений; СписокКомитентов.Колонки.Добавить("Комитенты"); Для Каждого эл Из ТекКомитент Цикл НоваяСтрока = СписокКомитентов.Добавить(); НоваяСтрока.Комитенты = эл; КонецЦикла; СписокК = СписокКомитентов.ВыгрузитьКолонку("Комитенты"); в итоге массив из списка комитентов выбранных пользователем |
|||
3
Reset
17.08.11
✎
16:18
|
СписокК=connection.NewObject("Массив");
Для каждого Элемент из СписокКомитентов цикл СписокК.Добавить(Элемент.Значение); КонецЦикла; |
|||
4
Reset
17.08.11
✎
16:22
|
(3) СписокКомитентов заменить на ---> КомитентыХолдинга
|
|||
5
lubja
17.08.11
✎
16:22
|
а что выступает в качестве значений в КомитентыХолдинга?
|
|||
6
Reset
17.08.11
✎
16:22
|
т.е. вместо (2):
СписокК=connection.NewObject("Массив"); Для каждого Элемент из КомитентыХолдинга цикл СписокК.Добавить(Элемент.Значение); КонецЦикла; |
|||
7
Reset
17.08.11
✎
16:23
|
(5) Список наименований комитентов, очевидно
|
|||
8
lubja
17.08.11
✎
16:23
|
(7) да мало ли, может ссылки....
|
|||
9
lubja
17.08.11
✎
16:24
|
+ а "сравнивает" эти ссылки с наименованием...
|
|||
10
Reset
17.08.11
✎
16:24
|
Или ссылок)
я решил что наименованяи изза "ТЧ.Комитент.наименование В (&" |
|||
11
lubja
17.08.11
✎
16:27
|
(10) скоро узнаем... когда ТС чо-нить ответит...
|
|||
12
Reset
17.08.11
✎
16:27
|
ТС, если в КомитентыХолдинга у тебя ссылки, то пиши
СписокК.Добавить(Элемент.Значение.Наименование); Хотя сама идея синхронизации по наименованию меня коробит |
|||
13
rchervak
17.08.11
✎
16:28
|
там в ТЧ какждого товара из документа есть Поле Комитент Тип поля - справочник, но сравниваю я наименование (тип строка)
|
|||
14
lubja
17.08.11
✎
16:28
|
(12) лучше в запросе сделать ГДЕ ТЧ.Комитент В (&МасситвСсылок)
|
|||
15
lubja
17.08.11
✎
16:29
|
(13) т.е в массиве содержаться строки?
|
|||
16
Reset
17.08.11
✎
16:29
|
(13) тогда см (14)
|
|||
17
rchervak
17.08.11
✎
16:31
|
(15) да строки
|
|||
18
Reset
17.08.11
✎
16:31
|
(14) Еще можно по варварски:
СписокК.Добавить(Строка(Элемент.Значение)); :) Тогда оно, вроде, не читает весь объект. |
|||
19
Reset
17.08.11
✎
16:32
|
(17) Понял чёнить из написанного?)
|
|||
20
rchervak
17.08.11
✎
16:36
|
(18) последнее не особо понял.
Но получилось сл. образом СписокК = connection.NewObject("Массив"); Для каждого Элемент из ТекКомитент цикл СписокК.Добавить(Элемент); КонецЦикла; |
|||
21
rchervak
17.08.11
✎
16:37
|
СписокК.Добавить(Элемент.Значение); - не пркатило так как выдоло ощибку (Что то типа у элемента нет значения.) наверное потому что элемент - строка
|
|||
22
Reset
17.08.11
✎
16:39
|
(21) в (6) лучше
|
|||
23
Reset
17.08.11
✎
16:40
|
+(22)
Но только в том случае, если в КомитентыХолдинга у тебя СТРОКИ. (Что там, ты путем не так и не сказал) |
|||
24
rchervak
17.08.11
✎
16:42
|
Спасибо за ответы всем :)) помогли реально
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |