Так в том то и дел что все мануалы уже поднял, ваши рекомендации выполнил, ни черта, валится с ошибкой индекса и все:
Вот код обработки для теста прямого запроса, в таблицу на форме выводит элементы группы номенклатуры и остаток, все просто блин, ошибка Возврат RS.ВыполнитьСкалярный(); {D:\1C ADMIN\ОБРАБОТКИ\SQL_ПОДБОР.ERT(40)}: State 07009, native 0, message [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
Перем RS;
// ТекстЗапроса() // // Параметры: // Нет // // Возвращаемое значение: // Текст запроса // // Вызывается из формул элементов диалога: // // Описание: // Формирует текс запроса, для рассчета остатков // Функция ТекстЗапросаСКЛ() ТекстЗапроса = " |DECLARE @Товар CHAR(9),@Фирма CHAR(9),@Склад CHAR(9) |Set @Фирма = ? |Set @Склад = ? |Set @Товар = ? |SELECT | sum(Рег.КоличествоОстаток) as Количество |FROM | $РегистрОстатки.ОстаткиТМЦ(,,Фирма = @Фирма AND Склад = @Склад AND Номенклатура = @Товар,(Фирма,Склад,Номенклатура), Количество) as Рег |";
Возврат ТекстЗапроса; КонецФункции
Функция ПолучитьОстатокНоменклатурыСКЛ(Товар) RS.УстПараметр(3, Товар); Возврат RS.ВыполнитьСкалярный(); КонецФункции
Процедура ПриОткрытии() ВыбФирма = глЗначениеПоУмолчанию("ОсновнаяФирма"); ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(ВыбФирма); ВыбСклад = глЗначениеПоУмолчанию("ОсновнойСклад"); ТаблицаПодбора.НоваяКолонка("Номенклатура", , , ,"Выбранный товар",20 ); ТаблицаПодбора.НоваяКолонка("Единица" , , , ,"Ед." ,4 ); ТаблицаПодбора.НоваяКолонка("ОстатокФ" ,"Число",14,3,"Ост. ф." ,10,,2); КонецПроцедуры // ПриОткрытии
Процедура Сформировать() Если ПустоеЗначение(ВыбФирма) = 1 Тогда Предупреждение("Не указана фирма!",10); СтатусВозврата(0); Возврат; КонецЕсли; Если ПустоеЗначение(ВыбСклад) = 1 Тогда Предупреждение("Не указан склад!",10); СтатусВозврата(0); Возврат; КонецЕсли; Если ПустоеЗначение(ВыбТМЦ) = 1 Тогда Предупреждение("Не указана группа ТМЦ!",10); СтатусВозврата(0); Возврат; КонецЕсли; Если ЗагрузитьВнешнююКомпоненту("1cpp.dll") = 0 Тогда Сообщить("Неудачная попытка загрузить 1cpp.dll! Выполнение отчета невозможно!","!"); СтатусВозврата(0); Возврат; КонецЕсли; RS = СоздатьОбъект("ODBCRecordset"); ТекстЗапроса = ТекстЗапросаСКЛ(); Если RS.Подготовить(ТекстЗапроса) = 0 Тогда Сообщить(RS.ПолучитьОписаниеОшибки()); КонецЕсли; RS.ПостроитьПараметры(); RS.УстПараметр(1, ВыбФирма); RS.УстПараметр(2, ВыбСклад); Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.ИспользоватьРодителя(ВыбТМЦ); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() > 0 Цикл Если Спр.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; ТаблицаПодбора.НоваяСтрока(); ТаблицаПодбора.Номенклатура = Спр.ТекущийЭлемент(); ТаблицаПодбора.Единица = Спр.БазоваяЕдиница; ТаблицаПодбора.ОстатокФ = ПолучитьОстатокНоменклатурыСКЛ(Спр.ТекущийЭлемент()); КонецЦикла; КонецПроцедуры
// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ // ДатаКонца = ПолучитьДатуТА(); ВыбТМЦ.ВыборГруппы(1);
|