|
v7: Дата и значение Цены прямой запрос | ☑ | ||
---|---|---|---|---|
0
zenon46
06.02.20
✎
09:43
|
Доброго всем времени суток!
Помогите подсказкой, как в прямом запросе можно получить дату и значение последней записи в справочнике цен по типу цены. $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) - это на выбранную дату, а как получить саму дату последней записи, пока никак не могу придумать. Для понимания, что нужно, нужно получить по списку товаров, последнюю по типу цены, цену и дату ее установки. На выходе получив три поля, ТОВАР | Цена | ДатаЦены | Спасибо всем! |
|||
1
ivsher
06.02.20
✎
10:06
|
Все периодические значения справочников, хранятся в таблице _1SConst. Описание полей таблицы есть в хелп файле компоненты прямых запросов.
|
|||
2
trdm
06.02.20
✎
10:10
|
||||
3
dk
06.02.20
✎
10:38
|
раз приведен пример из 1с++ то можешь запрос.отладка(1) перед запрос.выполнить и получишь прямой текст чистого sql запроса
|
|||
4
dk
06.02.20
✎
10:39
|
или в консоли запросов 1с++ посмотреть план запроса - там чистый sql код будет
|
|||
5
zenon46
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 Развернутая ВТ, как отсюда выдрать дату и привязать к конкретному элементу товара ? |
|||
6
dk
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 ($Цены.КатегорияЦены = :гг) */ |
|||
7
zenon46
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 = :ТипЦен) |
|||
8
zenon46
06.02.20
✎
12:20
|
К сожалению пусто, на выходе
|
|||
9
zenon46
06.02.20
✎
12:22
|
Вот тут что должно быть ? AND (Цены.sp3787 = ' 1 ') у меня нет такого поля "sp3787"
|
|||
10
dk
06.02.20
✎
12:29
|
в твоем случае
1. c324_vv.id = 324 2. AND (Цены.sp3787 = ' 1 ') можешь убрать - это тип цены |
|||
11
zenon46
06.02.20
✎
12:29
|
(10) ну так мне как раз нужен определенный тип цен
|
|||
12
zenon46
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 ($Цены.ТипЦен = :ТипЦен) |
|||
13
dk
06.02.20
✎
12:35
|
c324_vv.id = 324
|
|||
14
dk
06.02.20
✎
12:36
|
точнее c3775_vv.id = 324
|
|||
15
trad
06.02.20
✎
12:36
|
(9) очевидно это
AND ($Цены.КатегорияЦены = :гг) |
|||
16
trad
06.02.20
✎
12:38
|
(12) если возвращает пустую таблицу, то проблема где то тут
WHERE (Цены.PARENTEXT = :Владелец) AND ($Цены.ТипЦен = :ТипЦен) |
|||
17
zenon46
06.02.20
✎
12:46
|
(16) убрал вообще условия отбора, получил всю таблицу https://prnt.sc/qyc6u4 но с пустым значением цены
|
|||
18
zenon46
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) |
|||
19
zenon46
06.02.20
✎
12:49
|
Все работает!
|
|||
20
zenon46
06.02.20
✎
12:49
|
Проверяю!
|
|||
21
Злопчинский
06.02.20
✎
16:25
|
может чем-то пригодится
http://catalog.mista.ru/public/76287/ |
|||
22
zenon46
06.02.20
✎
20:53
|
(21) спасибо это видел! Весь нюанс был в том что мне нужно было дату цены узнать, а не цену на дату.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |