Здравствуйте, подскажите пожалуйста следующее, не могу получить прямым запросом значение периодического реквизита из справочника цены
Конфигурация: 1С 7.7 ТиС
Вот мой код :

```1c
    Попытка
    база = СоздатьОбъект("SQLiteBase");
    Исключение
    ЗагрузитьВнешнююКомпоненту("1sqlite.dll");
    база = СоздатьОбъект("SQLiteBase");
    КонецПопытки;

    база.Открыть(":memory:");

    ТекстЗапросаЦены = "
    |SEL ECT спр.id as [Ссылка :Справочник.Цены],
    |(
    |(SELECT value FR OM __1S_Const
    |WHERE id=:ТипЦены AND (date < :ВыбДата or date = :ВыбДата) and objid = :Владелец ORDER BY date desc LIMIT 1)
    |) as Цена
    |FROM Справочник_Цены as спр
    |";
    ЗапросЦен = база.НовыйЗапрос();
    ЗапросЦен.Подставлять("Владелец", ВыбНом);
    ЗапросЦен.Подставлять("ТипЦены", ВыбТипЦен);
    ЗапросЦен.Подставлять("ВыбДата", ВыбДата);
    ТекЦена = ЗапросЦен.ВыполнитьЗапрос(ТекстЗапросаЦены).ПолучитьЗначение(1,1).Цена;
```

Все время выдает пустое значение
---
Если сборка 1sqlite не от Орефкова, а посвежее https://infostart.ru/public/559826/ то самый быстрый способ такой

SEL ECT
max(Константы.DATE||Константы.TIME)
,Цены.PARENTEXT [Номенклатура $Справочник.Номенклатура]
,Цены.ТипЦен [ТипЦен $Справочник.ТипыЦен]
,Константы.VALUE [Цена $Число]

FR OM Справочник_Цены AS Цены
LEFT JOIN [_1S.Const] AS Константы
 ON Цены.ID=Константы.OBJID
 AND Константы.ID=:ИсторияРеквизита.Цены.Цена
 AND Константы.DATE<=:Дата
 WHERE Цены.PARENTEXT=:Номенклатура
AND Цены.ТипЦен = :ТипЦен
GROUP by Цены.ТипЦен,Цены.PARENTEXT
---
- Здравствуйте,..
- здравствуйте
- подскажите пожалуйста следующее <...> значение
- пожалуйста,.. следующее значение - VERSTAMP - верно для 7.70.636
---
для 7.70.941 сложнее -

```1c
    #============================================================­===================
    #==TABLE no 49 : Справочник Цены
    # Name |Descr |Type[A/S/U]|DBTableName|ReUsable
    T=SC319 |Справочник Цены |A |SC319 |1
    #-----Fields-------
    # Name |Descr |Type|Length|Precision
    F=ID |ID object |C |9 |0
    F=PARENTEXT |Parent in other tabl|C |9 |0
    F=ISMARK |Flag Object is Marke|C |1 |0
    F=VERSTAMP |Version stamp |C |6 |0
    F=SP6681 |(P)Валюта |C |9 |0
    F=SP6682 |(P)Процент |N |7 |2
    F=SP327 |(P)ТипЦен |C |9 |0
    F=SP8983 |(P)IDD |C |17 |0
    #----Indexes------
    # Name |Descr |Unique|Indexed fields |DBName
    I=IDD |of ID |0 |ID |IDD
    I=PCODE |of PARENT |0 |PARENTEXT |PCODE
    I=VI327 |VI327 |0 |SP327 |VI327
    I=VIP327 |VIP327 |0 |PARENTEXT,SP327 |VIP327
    I=VI8983 |VI8983 |0 |SP8983(UPPER=128) |VI8983
    I=VIP8983 |VIP8983 |0 |PARENTEXT,SP8983(UPPER=128) |VIP8983
    #
```
---
,(3),(4),(5)
Если честно, вообще не понял о чем вы? какой информации вам недостаточно? справочник цены, он во всех релизах одинаков!
---
одним запросом -
* розничные цены,
* единицы измерения на указанную дату и
* курсы валют цены на дату ее (цены) установки

реализация для 2005-ого сервера:

```1c
    sel ect
    тов [тов $Справочник.Номенклатура],
    Цена,
    ДатаУстановкиЦены,
    Единица
    [Единица $Справочник.Единицы],
    Вал
    [Валюта $Справочник.Валюты],
    Курс
    fr om (
    sel ect
    a.*,
    cast(b.value as numeric(10,4)) курс,
    row_number() over(partition by a. тов
    order by b.date desc, b.time desc, b.docid desc, b.row_id desc) rn2
    fr om (
    select Тов, Вал
    ,max(case when id=:ИДЦена then cast(value as numeric(14,2)) end) Цена
    ,max(case when id=:ИДЦена then date end) ДатаУстановкиЦены
    ,max(case when id=:ИДЕдиница then left(value,8) end) Единица
    fr om (
    select
    _1sconst.value, $СпрЦ.валюта Вал,
    objid, _1sconst.id, date, СпрЦ.parentext Тов,
    row_number() over(partition by _1sconst.id,
    _1sconst.objid order by date desc,
    time desc, docid desc,
    _1sconst.row_id desc) rn
    fr om _1sconst (nolock)
    inner join
    $Справочник.Цены СпрЦ (nolock) on СпрЦ.id = _1sconst.objid
    where _1sconst.id in (:ИДЦена, : ИДЕдиница)
    and date <= :ВыбДата
    and $СпрЦ.ТипЦен = :РозничныйТипЦен
    ) a where rn=1 group by Тов, Вал
    ) a left join _1sconst b (nolock)
    on a. Вал=b.objid and b.date<=a. ДатаУстановкиЦены
    wh ere b.id=:ИДКурс
    ) a Wh ere rn2=1
```

для 2000-го получается больший и менее понятный запрос,
хотя тоже вполне работоспособный
---
Извиняюсь, не до конца уточнил задачу.
База файловая (просто подумал что раз указал что подключаю компоненту 1sqlite.dll, то будет понятно что файловая база), мое упущение.
В SQL-запросе понятное дело там проще указать и получить все это, а вот через прямой запрос при файловом варианте как это получить с использованием этой компоненты?
---
- Извиняюсь, не до конца уточнил задачу.
База файловая (просто подумал что раз указал что подключаю компоненту 1sqlite.dll, то будет понятно что файловая база), мое упущение.
- под каждым движком: 2000, 2005, 2008, 2012,.. 1sqlite -- у прямых запросов возможны различия в реализации, в зависимости от функционала; однако в сущности, по существу это ничто не отменяет.
- В SQL-запросе понятное дело там проще указать и получить все это, а вот через прямой запрос при файловом варианте как это получить с использованием этой компоненты?
- не понял.. предлагаете решать за вас вашу же задачу? - см. п. 4 без привязки, анализа 1Cv7.DD, а так же экспериментов на реальной ИБ
---
мне по сути непонятно - например, зачем прямым запросом получать 2ва значения,.. а именно - ссылку не элемент справочника номенклатура и сложно связанное с ней значение цены.. такая задача штатными методами решается не менее продуктивно.. единственное, что приходит на ум - это интеграция с другой ИБ, но вот этого действительно в вашем коде не просматривается.
---
- Конфигурация: 1С 7.7 ТиС...
- инф-ции недостаточно, - файл: 1Cv7.DD
---
- Конфигурация: 1С 7.7 ТиС...
- у меня,.. в разных релизах - разные структуры; в 7.70.990:

```1c
    #============================================================­===================
    #==TABLE no 49 : Справочник Цены
    # Name |Descr |Type[A/S/U]|DBTableName|ReUsable
    T=SC319 |Справочник Цены |A |SC319 |1
    #-----Fields-------
    # Name |Descr |Type|Length|Precision
    F=ID |ID object |C |9 |0
    F=PARENTEXT |Parent in other tabl|C |9 |0
    F=ISMARK |Flag Object is Marke|C |1 |0
    F=VERSTAMP |Version stamp |C |6 |0
    F=SP6681 |(P)Валюта |C |9 |0
    F=SP6682 |(P)Процент |N |7 |2
    F=SP327 |(P)ТипЦен |C |9 |0
    #----Indexes------
    # Name |Descr |Unique|Indexed fields |DBName
    I=IDD |of ID |0 |ID |IDD
    I=PCODE |of PARENT |0 |PARENTEXT |PCODE
    I=VI327 |VI327 |0 |SP327 |VI327
    I=VIP327 |VIP327 |0 |PARENTEXT,SP327 |VIP327
    #
```
---
Это ЗапросЦен.Подставлять("Владелец", ВыбНом); не так!
Константы.ObjID это элемент справочника Цены, а не Номенклатура, а Номенклатура это Цены.PARENTEXT
---
Если сборка 1sqlite не от Орефкова, а посвежее https://infostart.ru/public/559826/ то самый быстрый способ такой

SEL ECT
max(Константы.DATE||Константы.TIME)
,Цены.PARENTEXT [Номенклатура $Справочник.Номенклатура]
,Цены.ТипЦен [ТипЦен $Справочник.ТипыЦен]
,Константы.VALUE [Цена $Число]

FR OM Справочник_Цены AS Цены
LEFT JOIN [_1S.Const] AS Константы
 ON Цены.ID=Константы.OBJID
 AND Константы.ID=:ИсторияРеквизита.Цены.Цена
 AND Константы.DATE<=:Дата
 WHERE Цены.PARENTEXT=:Номенклатура
AND Цены.ТипЦен = :ТипЦен
GROUP by Цены.ТипЦен,Цены.PARENTEXT
---
Спасибо огромное!!!