Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема v 7.7 - ДБФ - прямой запрос к периодическому реквизиту справочника (число прочтений - 5172 )
Tvish
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 22
Зарегистрирован: 26. Февраля 2010
v 7.7 - ДБФ - прямой запрос к периодическому реквизиту справочника
26. Февраля 2010 :: 15:38
Печать  
v 7.7 - ДБФ - прямой запрос к периодическому реквизиту
справочника

поиск не помогает

Запрос типа:

|SELECT
     |      Спр.ID as ID,
     |      $ПоследнееЗначение.Контрагенты.Менеджер(Спр.ID, :ВыбДата) as Менеджер
     |FROM
     |      $Справочник.Контрагенты as Спр


в результате выдает

SELECT
     Спр.ID as ID,
     (
select top 1
left(c3095_vv.value, 9)
from
_1sconst as c3095_vv (nolock)
where
c3095_vv.id = 3095 and
c3095_vv.objid = Спр.ID and
(c3095_vv.date <= '20100226')
order by c3095_vv.date desc, c3095_vv.time desc, c3095_vv.docid desc, c3095_vv.row_id desc
) as Менеджер
FROM
     sc224 as Спр

State S1000, native 300, message [Microsoft][ODBC Visual FoxPro Driver]Function name is missing ).

посмотрела ДД файл

таблица называется  не _1sconst , а 1sconst
кроме этого, поля c3095_vv.row_id вообще нет
вместо него  LINENO

решила переписать сама запрос без парсера, в итоге получила

ТекстЗапроса ="
     |SELECT
     |      Спр.ID as ID
     |FROM
     |      $Справочник.Контрагенты as Спр
     |WHERE
     |         (
     |            SELECT
     |                  c3095_vv.value
     |            from
     |                  1sconst as c3095_vv
     |            where                        
     |                  c3095_vv.id = ?????????
     |                  and
     |                  c3095_vv.objid = Спр.ID
     |           and
     |                  c3095_vv.date <= :ВыбДата~~ 
     |            order by
     |                  c3095_vv.date desc
     |            ) = :ВыбМенеджер
     |"; 
     

при этом что передавать в c3095_vv.id  - не знаю!!!!!!!!!!!!1
на top 1 - ругается, а как же отобрать одно значение?

ОЧень нужна помощь! пожалуйста....
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v 7.7 - ДБФ - прямой запрос к периодическому реквизиту справочника
Ответ #1 - 26. Февраля 2010 :: 19:12
Печать  
Не используй ODBC для прямого доступа к ДБФ-базе. Есть 2 путь:
1) использовать OLEDB;
2) использовать 1sqlite
При этом ВТ "ПоследнееЗначение" придется писать самому. Если же использовать 1sqlite, то за нас хорошо постарался Саша aka vandalsvq. Смотри класс ПрямойЗапрос
  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: v 7.7 - ДБФ - прямой запрос к периодическому реквизиту справочника
Ответ #2 - 26. Февраля 2010 :: 19:50
Печать  
из учебника в help 1cpp.chm (для oledb)
Код
Выбрать все
|SELECT

|  СпрН.Descr AS Наименование,

|  Цены.Цена as [Цена $Число]

|FROM

|  $Справочник.Номенклатура СпрН

|LEFT JOIN

|  $Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID AND

|				   $СпрЦ.ТипЦен = :ТипЦен";

|LEFT JOIN (

|  SELECT

|     Период.objid as objid,

|     Период.value as Цена

|  FROM 1sconst as Период

|  WHERE

|     Период.date IN

|     (SELECT

|	     MAX(Константа.date)

|     FROM 1sconst as Константа

|     WHERE

|	     (Константа.date <= :ВыбДата ~~)

|	     AND (Константа.id = $ИсторияРеквизита.Цены.Цена)

|	     AND (Константа.objid = Период.objid)

|     )

|     AND Период.id = $ИсторияРеквизита.Цены.Цена

|  ) as Цены ON Цены.objid = СпрЦ.id




 

  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать