|
Запрос к внешней базе, не могу сделать отбор остатков по списку складов.
| ☑ |
0
Повелитель
23.06.15
✎
12:33
|
Здравствуйте.
База Типовая УТ.
Делаю запрос к внешней БД через comconector83.
Если в списке 1 склад, то работает, если больше одного то не работает.
Не могу понять как сделать отбор по списку складов.
СписокСкладов = "";
Для Каждого Состав Из СпискоКодовСкладов Цикл
СписокСкладов = СписокСкладов + Состав + """,""";
КонецЦикла;
Если ЗначениеЗаполнено(СписокСкладов) Тогда
СписокСкладов = Лев(СписокСкладов,СтрДлина(СписокСкладов)-3);
КонецЕсли;
//Получим остатки из внешней БД
Запрос = ВнешняяБД.NewObject("Запрос");
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
| ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Код В (&СписокСкладов)) КАК ТоварыНаСкладахОстатки
|
|";
Запрос.УстановитьПараметр("СписокСкладов",СписокСкладов);
ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
|
|
1
Зеленый пень
23.06.15
✎
12:36
|
Рано тебе еще "повелевать" 1С.
СписокСкладов - должен быть Массив или СписокЗначений, причем - как объект внешней базы.
|
|
2
Повелитель
23.06.15
✎
12:36
|
(0) Причем в консоли запросов (которая умеет работать с внешними БД) работает вот такой вариант:
ВЫБРАТЬ
ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Код В ("0001","0002")) КАК ТоварыНаСкладахОстатки
|
|
3
Ёпрст
23.06.15
✎
12:42
|
более того, склады, должны быть элементами оле-базы.
|
|
4
Зеленый пень
23.06.15
✎
13:04
|
(2) Ну тогда и формируй такой текст запроса программно, но проще - массив.
|
|
5
Повелитель
23.06.15
✎
13:09
|
(1) Спасибо, все заработало.
(3) Мы через код склада, но спасибо будем учитывать
|
|