В продолжение темы...
Цитата:Вопрос: А можно ли получить последнее значение периодического реквизита с помощью прямого запроса к DBF-базе, используя Microsoft Visual Foxpro Driver?
Можно вообще обойтись без LEFT JOIN, используя вспомогательные таблицы
1. Сокращаем размер 1sconst для ускорения последующих запросов
|SELECT *
|FROM 1sconst
|WHERE (id = $ИсторияРеквизита.ТМЦ.Цена_Розн) AND
| (date <= :ДатаЦены~~)
|INTO TABLE myconst
2. Оставляем составные ключи последних значений
|SELECT objid, MAX(date) as date0
|FROM myconst
|GROUP BY objid
|INTO TABLE _c1
3. Находим последние значения
|SELECT myconst.objid as objid, myconst.value as value
|FROM myconst, _c1
|WHERE (myconst.objid=_c1.objid) AND (myconst.date=_c1.date0)
|INTO TABLE _c2
4. Подставляем как реквизит справочника
|SELECT Спр.ID as [Товар $Справочник.ТМЦ],
| Спр.ID as [ID],
| Спр.Descr as Наименование,
| $Спр.Автор as Автор,
| $Спр.ГодИздания as ГодИздания,
| $Спр.СтавкаНДС as [ВидНДС $Справочник.НалогиОтчисления],
| сЦены.value as [Цена $Число],
| $Спр.ШтрихКод as ШтрихКод
|FROM
| $Справочник.ТМЦ as Спр, _c2 as сЦены
|WHERE
| (Спр.ID=cЦены.objid)
Такая последовательность запросов в DBF должна отработать быстрее, чем запрос с LEFT JOIN.
Только не забыть потом удалить результаты первых трех запросов. В данном случае это будут файлы MYCONST.DBF,_C1.DBF,_C2.DBF в каталоге ИБ.