Имя: Пароль:
1C
1C 7.7
v7: 1С++ $ПоследнееЗначение
0 Csar
 
23.06.15
13:14
Всем привет.
Использую прямые запросы в 1С77
Подскажите, пожалуйста, как указать последнее значение периодического реквизита не на дату, задаваемую в параметрах, а на дату документа?
Вот мой запрос:
SELECT
$ДокС.Сумма
, $ДокС.Клиент [$Справочник.Контрагенты]
, $ДокС.Договор [$Справочник.Договоры]

FROM
$ДокументСтроки.АгентскоеВознаграждение as ДокС

INNER JOIN
_1SJourn as Жур With (NOLOCK) ON ДокС.IDDoc = Жур.IDDoc AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
AND ltrim(Жур.DocNo) = :НомерДок

INNER JOIN
$Справочник.Тел_ДопСоглОД AS ДС With (NOLOCK) ON $ДокС.Договор = ДС.PARENTEXT
AND $ПоследнееЗначение.Тел_ДопСоглОД.Статус(ДС.ID, Жур.Date_Time_IDDoc) = $Перечисление.Тел_СтатусДС.Подписан

WHERE
$ДокС.Сумма <> 0


При таком запросе 1С ругается на преобразование Жур.Date_Time_IDDoc:
"State 22007, native 241, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string."
1 Ёпрст
 
гуру
23.06.15
13:20
(0) не использовать $ПоследнееЗначение, делать просто подзапрос к _1sconst
2 Csar
 
23.06.15
13:21
(1) Да, тоже вариант) Спасибо

Нашел обходной вариант:
вместо Жур.date_time_iddoc использовать cast(left(Жур.date_time_iddoc,8) as datetime)
3 Csar
 
23.06.15
13:22
Любопытно, искал кучу времени до того как написал сюда) Как написал сюда, то нашел за 5 минут.
4 Ёпрст
 
гуру
23.06.15
13:29
И чего, с кастом работает ?
5 Ёпрст
 
гуру
23.06.15
13:29
хотя да, должно
6 Mikeware
 
23.06.15
13:30
(4) должно. Дата
7 DmitrO
 
23.06.15
13:31
а зачем искать если в документации:
    Получение наиболее позднего периодического значения
$ПоследнееЗначение.<ИмяСправочника >| Константа.<ИмяРеквизита | ИмяКонстанты>(<ИдОбъекта>, <Дата>[, <Время>[, <ИДДокумента>]])
Позволяет получить последнее значение на указанную дату.

Параметры:
<ИдОбъекта>
Тип конструкция типа выражение MS T-SQL; внутренний идентификатор элемента справочника, или 0 для константы.
<Дата>
Тип конструкция типа выражение MS T-SQL; дата, на которую нужно получить последнее значение.
<Время>
Тип конструкция типа выражение MS T-SQL; время, на которое нужно получить последнее значение.
<ИДДокумента>
Тип конструкция типа выражение MS T-SQL; идентификатор документа, на позицию которого нужно получить последнее значение.
8 Csar
 
23.06.15
13:34
(4) Да, пашет
(7) мне как то не дало ничего это описание, хотя видел его.
9 Csar
 
23.06.15
13:36
(7) я хотел сказать, что не знал как Жур.date_time_iddoc преобразовать в нечто типа Дата.
10 DmitrO
 
23.06.15
13:37
(9)настоящий семерочник должен это знать как "Отче наш" :)
11 Csar
 
23.06.15
13:39
(10) Я по 1С8, а в 1С77 приходится иногда залезать.
12 Mikeware
 
23.06.15
13:44
(10) иэх... многие считают, что семерки уже нет....
13 spock
 
23.06.15
13:48
(12) поживет еще лет 5 точно
14 DmitrO
 
23.06.15
13:49
настоящий семерочник, это вам не восмерочник какой нибудь.. :)
по запросам, у восьмерочников "руки без пальцев" им о такой операции cast(left(Жур.date_time_iddoc,8) as datetime) только мечтать :)
15 Mikeware
 
23.06.15
13:52
(14) ну, это же не заслуга семерки, это заслуга прямого доступа к SQL. а в восьмерке - доступ только кривой.
хотя с "черными запросами" не сравнить...
16 ЧеловекДуши
 
23.06.15
13:53
(0) Лучше сам пиши запрос к Последнему значению :)
17 Ёпрст
 
гуру
23.06.15
13:53
ну, в чорных запросах тоже можно было творить "чудеса"
18 Serginio1
 
23.06.15
13:53
(14) А уж об рекурсивных CTE,over(partition by ) MERGE итд тошлько в сладких снах
19 DmitrO
 
23.06.15
13:54
(15)ну мне-то это, мог бы и не объяснять :)
я говорю о фактическом положении дел
20 ЧеловекДуши
 
23.06.15
13:55
(17) Не знаю насчет чудес, но "прогноз погоды" в черных получить проще :)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс