Имя: Пароль:
1C
1С v8
Запрос к внешней базе, не могу сделать отбор остатков по списку складов.
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) Мы через код склада, но спасибо будем учитывать