Доброе утро. Не получается получить срез последних на дату. База -
DBF.
ТекстЗапроса:
глМетаДата = СоздатьОбъект("MetadataWork");
РеквизитЦены = Метаданные.Справочник("Номенклатура").Реквизит("ДисконтнаяЦена").Идентификатор;
ИдЦены = глМетаДата.ИДРеквизитаСправочника("Номенклатура",РеквизитЦены);
Сообщить("Идентификатор = "+ИдЦены);
ТекстЗапроса = "
|ВЫБРАТЬ
| История.ТекущийЭлемент КАК [Товар $Справочник.Номенклатура]
|, История."+РеквизитЦены+" КАК Цена
|ИЗ
| $СрезПоследних.Номенклатура(:ДатаКон,("+РеквизитЦены+")) КАК История
|";
ПрямойЗапросDBF.УстановитьТекстовыйПараметр("ДатаКон",ДатаЗавершенияПериода);
ПрямойЗапросDBF.Текст = ТекстЗапроса;
ПрямойЗапросDBF.Выполнить().Выгрузить(ТаблицаЗначенийЦен);
ТаблицаЗначенийЦен.ВыбратьСтроку(,РеквизитЦены);
Получаю пустую таблицу значений!
Отладка:
Цитата:1. Формирование цен:
- ОптоваяЦена
Идентификатор = 36
SELECT
История.ТекущийЭлемент AS [Товар $Справочник.Номенклатура]
, История.ДисконтнаяЦена AS Цена
FROM
(
select
vt_slicelast_SC33.ТекущийЭлемент
,max(vt_slicelast_SC33.ДисконтнаяЦена) as ДисконтнаяЦена
from (
select
slicelast_SC33.objid ТекущийЭлемент
,case when slicelast_SC33.id = ' 10' then slicelast_SC33.VALUE end ДисконтнаяЦена
from (
select tconst_2.objid, tconst_2.id, tconst_2.date, tconst_2.time, tconst_2.docid, tconst_2.value
from (select tconst_1.objid, tconst_1.id, max(const_j.idx_date_time_iddoc) date_time_iddoc
from [_1S.CONST] tconst_1
left join [Журнал] const_j
on tconst_1.docid = const_j.iddoc
where tconst_1.date <= '20110101'
and tconst_1.id = ' 10'
group by tconst_1.id, tconst_1.objid) slicelast_SC331
left join [_1S.CONST] tconst_2
on slicelast_SC331.id = tconst_2.id
and slicelast_SC331.objid = tconst_2.objid
and substr(slicelast_SC331.date_time_iddoc, 1, 8) = tconst_2.date
and substr(slicelast_SC331.date_time_iddoc, 9, 6) = tconst_2.time
and substr(slicelast_SC331.date_time_iddoc, 15, 9) = tconst_2.docid
) slicelast_SC33
) vt_slicelast_SC33
group by vt_slicelast_SC33.ТекущийЭлемент
) AS История
Подбор индекса для таблицы 1SCONST:
Ограничения: DATE<=; ID=;
Упорядочить: ID, OBJID,
Найдено в кэше
Выбран индекс IDD: ID+OBJID+DTOS(DATE)+TIME+DOCID+STR(PARTNO,3)
Попадает в сортировку
Стоимость: 40
Подбор индекса для таблицы 1SCONST:
Ограничения: DATE<=; ID=;
Упорядочить: ID, OBJID,
Найдено в кэше
Выбран индекс IDD: ID+OBJID+DTOS(DATE)+TIME+DOCID+STR(PARTNO,3)
Попадает в сортировку
Стоимость: 40
Подбор индекса для таблицы 1SJOURN:
Ограничения: IDDOC=;
Найдено в кэше
Выбран индекс IDDOC: IDDOC
Стоимость: 20
Подбор индекса для таблицы 1SJOURN:
Ограничения: IDDOC=;
Найдено в кэше
Выбран индекс IDDOC: IDDOC
Стоимость: 20
Подбор индекса для таблицы 1SCONST:
Ограничения: DATE=; TIME=; DOCID=; OBJID=; ID=;
Найдено в кэше
Выбран индекс IDD: ID+OBJID+DTOS(DATE)+TIME+DOCID+STR(PARTNO,3)
Стоимость: 24
Подбор индекса для таблицы 1SCONST:
Ограничения: DATE=; TIME=; DOCID=; OBJID=; ID=;
Найдено в кэше
Выбран индекс IDD: ID+OBJID+DTOS(DATE)+TIME+DOCID+STR(PARTNO,3)
Стоимость: 24
Время подготовки запроса: 7 мс, время выполнения запроса: 3439 мс.
Формирование цен завершено. Время работы: 0/00:00:04.833
Объект MetadataWork возвращает представление периодического реквизита в БД = число 36. Разбор запроса почему-то показывает строковое представление этого идентификатора = ' 10'.
Что я делаю не так?
P.S. ПрямойЗапросDBF.Версия = "1.8.4 25.02.2012"