Значение перидического реквизита

1. Cobranet123 370 19.04.18 11:35 Сейчас в теме
Здравствуйте, подскажите пожалуйста следующее, не могу получить прямым запросом значение периодического реквизита из справочника цены
Конфигурация: 1С 7.7 ТиС
Вот мой код :
	
Попытка
	база = СоздатьОбъект("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).Цена;

Показать

Все время выдает пустое значение
+
Найденные решения
12. Djelf 253 20.04.18 14:23 Сейчас в теме
Если сборка 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
Cobranet123; Gkmy; +2
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Gkmy 28 20.04.18 00:00 Сейчас в теме
(1)
- Здравствуйте,..
- здравствуйте
- подскажите пожалуйста следующее <...> значение
- пожалуйста,.. следующее значение - VERSTAMP - верно для 7.70.636
+
3. Gkmy 28 20.04.18 00:07 Сейчас в теме
(2)
для 7.70.941 сложнее -
#============================================================­===================
#==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    
#
Показать
+
6. Cobranet123 370 20.04.18 05:53 Сейчас в теме
(2),(3),(4),(5)
Если честно, вообще не понял о чем вы? какой информации вам недостаточно? справочник цены, он во всех релизах одинаков!
+
7. Gkmy 28 20.04.18 11:12 Сейчас в теме
(6)
одним запросом -
* розничные цены,
* единицы измерения на указанную дату и
* курсы валют цены на дату ее (цены) установки

реализация для 2005-ого сервера:
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-го получается больший и менее понятный запрос,
хотя тоже вполне работоспособный
+
8. Cobranet123 370 20.04.18 11:51 Сейчас в теме
(7)
Извиняюсь, не до конца уточнил задачу.
База файловая (просто подумал что раз указал что подключаю компоненту 1sqlite.dll, то будет понятно что файловая база), мое упущение.
В SQL-запросе понятное дело там проще указать и получить все это, а вот через прямой запрос при файловом варианте как это получить с использованием этой компоненты?
+
9. Gkmy 28 20.04.18 12:26 Сейчас в теме
(8)
- Извиняюсь, не до конца уточнил задачу.
База файловая (просто подумал что раз указал что подключаю компоненту 1sqlite.dll, то будет понятно что файловая база), мое упущение
.
- под каждым движком: 2000, 2005, 2008, 2012,.. 1sqlite -- у прямых запросов возможны различия в реализации, в зависимости от функционала; однако в сущности, по существу это ничто не отменяет.
- В SQL-запросе понятное дело там проще указать и получить все это, а вот через прямой запрос при файловом варианте как это получить с использованием этой компоненты?
- не понял.. предлагаете решать за вас вашу же задачу? - см. п. 4 без привязки, анализа 1Cv7.DD, а так же экспериментов на реальной ИБ
+
10. Gkmy 28 20.04.18 12:33 Сейчас в теме
(8)
мне по сути непонятно - например, зачем прямым запросом получать 2ва значения,.. а именно - ссылку не элемент справочника номенклатура и сложно связанное с ней значение цены.. такая задача штатными методами решается не менее продуктивно.. единственное, что приходит на ум - это интеграция с другой ИБ, но вот этого действительно в вашем коде не просматривается.
+
4. Gkmy 28 20.04.18 00:27 Сейчас в теме
(1)
- Конфигурация: 1С 7.7 ТиС...
- инф-ции недостаточно, - файл: 1Cv7.DD
+
5. Gkmy 28 20.04.18 00:32 Сейчас в теме
(1)
- Конфигурация: 1С 7.7 ТиС...
- у меня,.. в разных релизах - разные структуры; в 7.70.990:
#============================================================­===================
#==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     
#
Показать
+
11. Djelf 253 20.04.18 14:08 Сейчас в теме
(0) Это ЗапросЦен.Подставлять("Владелец", ВыбНом); не так!
Константы.ObjID это элемент справочника Цены, а не Номенклатура, а Номенклатура это Цены.PARENTEXT
+
12. Djelf 253 20.04.18 14:23 Сейчас в теме
Если сборка 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
Cobranet123; Gkmy; +2
13. Cobranet123 370 21.04.18 13:57 Сейчас в теме
(12)
Спасибо огромное!!!
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот