|
v7: Ошибка в прямом запросе |
☑ |
0
Базис
naïve
22.12.16
✎
18:45
|
Структура данных:
Справочник "ДСП_Аппараты"
Периодический реквизит "СерийныйНомер"
Нужно найти на текущую дату элемент с этим серийником.
SELECT
СпрАпп.ID Как Ссылка,
$ПоследнееЗначение.СпрАпп.СерийныйНомер(СпрАпп.ТекЭлемент,ТекДата, 86399000) Как СерийныйНомер
FROM
$Справочник.ДСП_Аппараты Как СпрАпп
WHERE
СерийныйНомер = СерийникДляПоиска
Получаю ошибку : Meta name parser error: виртуальное поле не найдено "$ПоследнееЗначение.СпрАпп.СерийныйНомер"
.
Что ей надо?
|
|
1
Базис
naïve
22.12.16
✎
18:49
|
Отключусь на час.
|
|
2
palpetrovich
22.12.16
✎
18:56
|
наверное точек много ...большей одной - уже много :)
|
|
3
Djelf
гуру
22.12.16
✎
18:58
|
Синтаксис: $ПоследнееЗначение.<ВидОбъекта>.<Идентификатор>(Элемент,Дата)
Пример: $ПоследнееЗначение.Контрагенты.ОсновнойДоговор(:ТекЭлемент,:РабочаяДата) КАК [ОсновнойДоговор $Справочник.Договоры]
$ПоследнееЗначение.Контрагенты.ОсновнойДоговор($Жур.Контрагент,$Жур.ДатаДокумента) КАК [ОсновнойДоговор $Справочник.Договоры]
ИМХО: Парсер не понимает <ВидОбъекта> в виде пседонима.
|
|
4
PZh
22.12.16
✎
21:48
|
SELECT
СпрАпп.ID Как Ссылка,
$ПоследнееЗначение.ДСП_Аппараты .СерийныйНомер(СпрАпп.ТекЭлемент,ТекДата, 86399000) Как СерийныйНомер
FROM
$Справочник.ДСП_Аппараты Как СпрАпп
WHERE
СерийныйНомер = СерийникДляПоиска
Что вы используете для прямых запросов? Я бы написал так:
SELECT
СпрАпп.ID Как Ссылка,
$ПоследнееЗначение.ДСП_Аппараты .СерийныйНомер(СпрАпп.id,:ТекДата) Как СерийныйНомер
FROM
$Справочник.ДСП_Аппараты Как СпрАпп
WHERE
СерийныйНомер = :СерийникДляПоиска
Запрос.УстановитьТекстовыйПараметр("СерийникДляПоиска", 86399000);
Запрос.УстановитьТекстовыйПараметр("ТекДата", ТекущаяДата());
|
|
5
FN
23.12.16
✎
20:00
|
рс=СоздатьОбъект("ODBCRecordSet");
Мета=СоздатьОбъект("MetaDataWork");
рс.УстановитьТекстовыйПараметр("ТекДата",ТекущаяДата());
рс.УстановитьТекстовыйПараметр("ИДРеквизита",Мета.ИДРеквизитаСправочника("ДСП_Аппараты","СерийныйНомер"));
рс.УстановитьТекстовыйПараметр("НужныйСерийник",СокрЛП(СерийникДляПоиска));
рс.ВыполнитьИнструкцию("
|SELECT top 10 Константы.OBJID [Объект $Справочник.ДСП_Аппараты]
| , Константы.VALUE Значение
|FROM _1SCONST AS Константы With (NOLOCK)
|WHERE 1=1
| AND Константы.DATE <= :ТекДата
| AND Константы.ID = :ИДРеквизита
| AND Константы.Value = :НужныйСерийник
|order by Константы.DATE desc
|").ВыбратьСтроку();
Как-то так
|
|
6
Базис
naïve
26.12.16
✎
11:23
|
(5) Отлично, быстрый получился запрос. Но в колонке "Значение" отдаёт идентификатор, 3TF4 и подобные.
|
|
7
Это_mike
26.12.16
✎
11:24
|
(6) дык типизируй
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший