Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Дата и значение Цены прямой запрос

v7: Дата и значение Цены прямой запрос
Я
   zenon46
 
06.02.20 - 09:43
Доброго всем времени суток!
Помогите подсказкой, как в прямом запросе можно получить дату и значение последней записи в справочнике цен по типу цены. $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) - это на выбранную дату, а как получить саму дату последней записи, пока никак не могу придумать.
Для понимания, что нужно, нужно получить по списку товаров, последнюю по типу цены, цену и дату ее установки. На выходе получив три поля, ТОВАР | Цена | ДатаЦены |
Спасибо всем!
   ivsher
 
1 - 06.02.20 - 10:06
Все периодические значения справочников, хранятся в таблице _1SConst. Описание полей таблицы есть в хелп файле компоненты прямых запросов.
   trdm
 
2 - 06.02.20 - 10:10
   dk
 
3 - 06.02.20 - 10:38
раз приведен пример из 1с++ то можешь запрос.отладка(1) перед запрос.выполнить и получишь прямой текст чистого sql запроса
   dk
 
4 - 06.02.20 - 10:39
или в консоли запросов 1с++ посмотреть план запроса - там чистый sql код будет
   zenon46
 
5 - 06.02.20 - 11:35
select top 1
cast(c324_vv.value as numeric(14, 2))
from
_1sconst as c324_vv (nolock)
where
c324_vv.id = 324 and
c324_vv.objid = Цены.ID and
(c324_vv.date <= @ВыбДата0)
order by c324_vv.date desc, c324_vv.time desc, c324_vv.docid desc, c324_vv.row_id desc

Развернутая ВТ, как отсюда выдрать дату и привязать к конкретному элементу товара ?
   dk
 
6 - 06.02.20 - 11:41
SELECT Цены.PARENTEXT [Владелец $Справочник.Номенклатура]
    , (
select top 1
cast(c3775_vv.value as numeric(14, 4))
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Цена
    , (
select top 1
cast(c3775_vv.date as datetime)
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Дата
    , (

select top 1
c3775_vv.time
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Время

FROM sc3772 AS Цены With (NOLOCK)
WHERE (Цены.PARENTEXT = '  5PUARAD')
    AND (Цены.sp3787 = '     1   ')

/*
SELECT Цены.PARENTEXT [Владелец $Справочник.Номенклатура]
    , $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) Цена
FROM $Справочник.Цены AS Цены With (NOLOCK)
WHERE (Цены.PARENTEXT = :лл)
    AND ($Цены.КатегорияЦены = :гг)
*/
   zenon46
 
7 - 06.02.20 - 12:20
(6) SELECT 
Цены.PARENTEXT [Владелец $Справочник.Номенклатура],
(
select top 1
cast(c3775_vv.value as numeric(14, 4))
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Цена
,
(
select top 1
cast(c3775_vv.date as datetime)
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Дата
,
(
select top 1
c3775_vv.time
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Время
FROM $Справочник.Цены AS Цены With (NOLOCK)
WHERE (Цены.PARENTEXT = :Владелец)
AND (Цены.ID = :ТипЦен)
   zenon46
 
8 - 06.02.20 - 12:20
К сожалению пусто, на выходе
   zenon46
 
9 - 06.02.20 - 12:22
Вот тут что должно быть ? AND (Цены.sp3787 = '     1   ') у меня нет такого поля "sp3787"
   dk
 
10 - 06.02.20 - 12:29
в твоем случае 
1. c324_vv.id = 324
2. AND (Цены.sp3787 = '     1   ') можешь убрать - это тип цены
   zenon46
 
11 - 06.02.20 - 12:29
(10) ну так мне как раз нужен определенный тип цен
   zenon46
 
12 - 06.02.20 - 12:35
Вот что в итоге вышло : только возвращает пустую таблицу

SELECT
Цены.PARENTEXT [Владелец $Справочник.Номенклатура],
(
select top 1
cast(c3775_vv.value as numeric(14, 4))
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Цена
,
(
select top 1
cast(c3775_vv.date as datetime)
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Дата
,
(
select top 1
c3775_vv.time
from
_1sconst as c3775_vv (nolock)
where
c3775_vv.id = 3775 and
c3775_vv.objid = Цены.ID and
(c3775_vv.date <= '20200206')
order by c3775_vv.date desc, c3775_vv.time desc, c3775_vv.docid desc, c3775_vv.row_id desc
) Время
FROM $Справочник.Цены AS Цены With (NOLOCK)
WHERE (Цены.PARENTEXT = :Владелец)
AND ($Цены.ТипЦен = :ТипЦен)
   dk
 
13 - 06.02.20 - 12:35
c324_vv.id = 324
   dk
 
14 - 06.02.20 - 12:36
точнее c3775_vv.id = 324
   trad
 
15 - 06.02.20 - 12:36
(9) очевидно это
AND ($Цены.КатегорияЦены = :гг)
   trad
 
16 - 06.02.20 - 12:38
(12) если возвращает пустую таблицу, то проблема где то тут
WHERE (Цены.PARENTEXT = :Владелец)
AND ($Цены.ТипЦен = :ТипЦен)
   zenon46
 
17 - 06.02.20 - 12:46
(16) убрал вообще условия отбора, получил всю таблицу https://prnt.sc/qyc6u4 но с пустым значением цены
   zenon46
 
18 - 06.02.20 - 12:47
Вот запрос :
SELECT
Цены.PARENTEXT [Владелец $Справочник.Номенклатура],
(
select top 1
cast(c324_vv.value as numeric(14, 4))
from
_1sconst as c324_vv (nolock)
where
c324_vv.id = 324 and
c324_vv.objid = Цены.ID and
(c324_vv.date <= '20200206')
order by c324_vv.date desc, c324_vv.time desc, c324_vv.docid desc, c324_vv.row_id desc
) Цена
,
(
select top 1
cast(c324_vv.date as datetime)
from
_1sconst as c324_vv (nolock)
where
c324_vv.id = 324 and
c324_vv.objid = Цены.ID and
(c324_vv.date <= '20200206')
order by c324_vv.date desc, c324_vv.time desc, c324_vv.docid desc, c324_vv.row_id desc
) Дата
,
(
select top 1
c324_vv.time
from
_1sconst as c324_vv (nolock)
where
c324_vv.id = 324 and
c324_vv.objid = Цены.ID and
(c324_vv.date <= '20200206')
order by c324_vv.date desc, c324_vv.time desc, c324_vv.docid desc, c324_vv.row_id desc
) Время
FROM $Справочник.Цены AS Цены With (NOLOCK)
   zenon46
 
19 - 06.02.20 - 12:49
Все работает!
   zenon46
 
20 - 06.02.20 - 12:49
Проверяю!
   Злопчинский
 
21 - 06.02.20 - 16:25
может чем-то пригодится
http://catalog.mista.ru/public/76287/
   zenon46
 
22 - 06.02.20 - 20:53
(21) спасибо это видел! Весь нюанс был в том что мне нужно было дату цены узнать, а не цену на дату.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.