Еще одну ошибку нашел. И ее причину.
Хочется иметь такую возможность:
Запрос.Текст = "Некоторый запрос";
Запрос.ОписаниеПараметра(аа)
Запрос.УстановитьТекстовыйПараметр(бб)
Запрос.ОписаниеПараметра(вв)
Запрос.УложитьСписокОбъектов(Список,ВремТб)
Запрос.УстановитьТекстовыйПараметр(гг)
Запрос.ПодготовитьПараметризованныйЗапрос()
НО! Метод
ПодготовитьПараметризованныйЗапрос()вываливает ошибку
Meta name parser error: параметр <:ИмяПараметра> не определенна параметры, установленные ранее при помощи
метода
УстановитьТекстовыйПараметр()Причина - между строками (моего, который "хочу") кода:
Запрос.Текст = "Некоторый запрос";
... далее: при каждом последующем вызове мотодов класса
... ВНУТРИ класса
... происходят промежуточные маленькие запросы
.... (СоздатьIdToStr, РежимRPC, ...)
... от имени того же самого объекта "ЗапросODBC"
... что приводит к сбрасыванию параметров,
... установленных ранее методом "УстановитьТекстовыйПараметр"
... Как результат - вызов "ЗапросODBC.Подготовить()"
... не работает и вываливает ошибку
... (ошибка Meta name parser error: параметр <:ИмяПараметра> не определен)
Запрос.ПодготовитьПараметризованныйЗапрос()
Решение: ПРЕДЛАГАЮ ТАКОЕ ИСПРАВЛЕНИЕ (ПРОШУ АВТОРА ВНЕСТИ В КЛАСС)
в методе "ПодготовитьПараметризованныйЗапрос"
вместо одной строки
ЗапросПодготовленУспешно = ЗапросODBC.Подготовить(ПараметризированныйТекст);
написать такой код:
Для к=1 По ПараметрыЗапроса.РазмерСписка() Цикл
//восстановим ранее сброшенные параметры
Переменная="";Значение = ПараметрыЗапроса.ПолучитьЗначение(к,Переменная);
ЗапросODBC.УстановитьТекстовыйПараметр(Переменная,Значение);
КонецЦикла;
ЗапросПодготовленУспешно = ЗапросODBC.Подготовить(ПараметризированныйТекст);
Если ЗапросПодготовленУспешно<>1 Тогда
ОбработкаОшибки(ЗапросODBC.ПолучитьОписаниеОшибки(),"!!!")
КонецЕсли;
ИЛИ (еще лучше) сделать отдельную приватную процедуру
которая будет выполнять установку текстовых параметров
НЕПОСРЕДСТВЕННО перед отправкой запроса в объект "ЗапросODBC"
по списку "ПараметрыЗапроса"
(после автоподстановок, парсинга и т.д.)
для
всех случаев:
- Выполнить()
- ВыполнитьЗапрос()
- ПодготовитьПараметризованныйЗапрос/ВыполнитьПараметризованныйЗапрос()