В конфигурации пытаюсь использовать прямой запрос для получения цены товара в форме списка справочника:
Краткая пердистория:
-Есть спр. "Цены", подчиненный спр. "Номенклатура", который имеет реквизиты "ТипЦен" и "Цена"-периодический;
-Есть спр. "Прайс", в котором есть реквизит "Товар" - ссылка на эл. спр. "Номенклатура"
-В форме спр. "Прайс" необходимо выводить значение цены ук-го типа на тек. дату.
Т.к. получение стандартными средствами знач. цены ощутимо "тормозит" прокрутку справочника, было принято решение исп-ть прямой запрос:
Перем ЗапросЦ;
//_____________________________________________________________________________
Процедура ПриОткрытии()
Перем ТекстЗапросаЦ;
...........
Если (глЭтоSQLБаза = 1) Тогда
ЗапросЦ = СоздатьОбъект("ODBCRecordset");
ТекстЗапросаЦ = "
|SELECT
| $ПоследнееЗначение.Цены.Цена(СпрЦены.ID, ?)
|FROM
| $Справочник.Цены as СпрЦены WITH (NOLOCK)
|WHERE
| СпрЦены.ParentExt = ? AND $СпрЦены.ТипЦен = ? AND СпрЦены.IsMark = 0";
ЗапросЦ.Подготовить(ТекстЗапросаЦ);
ЗапросЦ.ДобПараметр(1,10,8,0);
ЗапросЦ.ДобПараметр(1,14,9,0);
ЗапросЦ.ДобПараметр(1,14,9,0);
ЗапросЦ.УстПараметр(1, ПолучитьДатуТА());
ЗапросЦ.УстПараметр(3, тип_цен);
КонецЕсли;
КонецПроцедуры //ПриОткрытии
//_____________________________________________________________________________
Функция ВернутьЦену()
Перем цена;
Если (ТекущийЭлемент().ЭтоГруппа() = 1) Тогда
Возврат "";
КонецЕсли;
Если (глЭтоSQLБаза = 1) Тогда
Если (тип_цен.СпособФормированияЦен = Перечисление.СпособыФормированияЦен.ХранитсяВИБ) Тогда
ЗапросЦ.УстПараметр(2, ТекущийЭлемент().Товар);
цена = ЗапросЦ.ВыполнитьСкалярный();
Возврат Формат(цена,"Ч0.2");
КонецЕсли;
КонецЕсли;
Если (глВернутьЦену(ТекущийЭлемент().Товар, тип_цен, ТекущаяДата(), цена) = 1) Тогда
Возврат Формат(цена,"Ч0.2");
КонецЕсли;
Возврат "";
КонецФункции //ВернутьЦену
//_____________________________________________________________________________
Функция "ВернутьЦену" используется в формуле, в колонке табл. части типа "Текст"
Запрос отлично выполняется 5 раз (форма спр. "свернута", видно малое кол-во строк), а затем база выпадает с ошибкой (см. вложение)
В чем может быть дело? Please HELP...
PS:"Вылет" происходит при выполнении кода:
Товар = ТекущийЭлемент().Товар;
25-я платформа, релиз 1С++ 2.0.2.2