Имя: Пароль:
1C
 
как в запросе поставить в условие проверку на текущую дату, без установки параметра?
,
0 23th
 
23.08.22
09:30
Например у меня условие
КадроваяИсторияСотрудниковСрезПоследних.ДействуетДо <= &Дата

Но тогда надо писать Запрос.УстановитьПараметр("Дата", ТекущаяДата());

А нужно, чтобы не было установки параметра, и параметр прямо в запросе прописыался:

КадроваяИсторияСотрудниковСрезПоследних.ДействуетДо <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

Как это было бы проверка на пустую дату

Может быть можно как то написать эту самую без установки параметра?
1 23th
 
23.08.22
09:30
Как бы получается условие на дату формирования самого запроса
2 Kassern
 
23.08.22
09:33
(0) Зачем все это? Чем вас параметр не устроил? В СКД можно значении параметра прописать ТекущаяДата()
3 MaQo
 
23.08.22
09:33
| КадроваяИсторияСотрудниковСрезПоследних.ДействуетДо <=" + Дата + "
| Дальнейший запрос
4 MaQo
 
23.08.22
09:34
(3) хотя это нарушение стандартов
5 Kassern
 
23.08.22
09:34
(3) В этом случае "Дата", так же параметр
6 Kassern
 
23.08.22
09:35
В общем, штатной нет функции в запросе 1с, чтобы явно указать текущую дату.
7 СеменовСемен
 
23.08.22
09:35
почему такая нелюбовь к параметрам?
8 Timon1405
 
23.08.22
09:36
(2) +1. что это за запрос без параметров(сейчас будет сказка что он в алгоритме/конвертации/макете) и где гарантия что в будущем при изменении логики его использования они не понадобятся?
9 Kassern
 
23.08.22
09:36
либо заменяете текст как в (3), либо указываете УстановитьПараметр, либо юзаете СКД и там выражение.
10 23th
 
23.08.22
09:45
(7) Да потому что этот запрос как текст из внешней программы где даже близко нет возможности установить параметр.
По сути это ДЛЛ какая-то.
Может как то надо разобртаься и найти это место... Может это обработка... Я сам не видел в глаза эту программу. Мне сказали делай запрос без параметров и все.
11 lodger
 
23.08.22
09:47
(10) а нельзя просто пнуть экспортную процедуру из общего модуля? а в ней хоть чо пиши на 1се.
12 Ryzeman
 
23.08.22
09:49
(10) У тебя запрос где выполняется? Если это не 1сный запрос, то тебе надо знать куда и где он будет выполняться. В Transact-SQL есть GetDate() например:

SELECT CAST( GETDATE() AS Date )

Если же у тебя запрос на 1с, то нет НИ ОДНОЙ причиные не использовать параметр.
13 СеменовСемен
 
23.08.22
09:50
(10) тогда датавремя(х,х,х) передавай в тексте
14 Dmitrii
 
гуру
23.08.22
10:07
(10) >> Мне сказали делай запрос...

Я что-то не пойму.
Текст запроса ты сам составляешь или всё таки он приходит из внешнего источника?
Если сам составляешь текст запроса, значит можешь его корректировать. И тогда подходит вариант (3) с подменой части текста запроса на что-то типа "ДАТАВРЕМЯ(2022,8,23)".

Все альтернативы озвучены в (9).

Либо брать дату из каких-то других таблиц. Например из последней записи в регистре сведений КурсыВалют. Только помнить, что курсы могут устанавливаться не на каждый день и, например, на выходные или праздничные дни записи не будет.
Может в твоей конфигурации есть ещё какие-нибудь регистры, куда обязательно ежедневно делаются записи.
15 СеменовСемен
 
23.08.22
10:09
(14) таки как раз курсы на каждый день в регистре
16 Dmitrii
 
гуру
23.08.22
10:15
(15) Возможно. Мне почему-то казалось, что записи делаются только на дни установки курса ЦБ. Могу ошибаться.
Тогда остаётся только риск, что курсы не были загружены.
17 23th
 
23.08.22
10:23
(16) КУрсов нет так как это наш любимый и ненаглядный ЗУП 3
18 23th
 
23.08.22
10:24
Единственное что придумать константу, которая при начале работы системы будет каждый раз устанавливаться тем человеком который зуп открывает...
19 23th
 
23.08.22
10:26
Хотя можно походу брать тупо по последней записи регистра самого КадроваяИстория.... сейчас посмотрю!
20 RomanYS
 
23.08.22
10:28
(18) зачем человеком, лучше регламентным заданием
(19) у вас там такая текучка. Знаю организации где этот регистр по полгода может не двигаться
21 Dmitrii
 
гуру
23.08.22
10:34
В ЗУПе есть регистр сведений "Сведения о пользователях". Там есть поле "Дата последней активности".
Запись в регистр делается при авторизации каждого пользователя.
Если хоть кто-нибудь в программу заходил, то будет запись с сегодняшней датой последней активности.
22 23th
 
23.08.22
10:35
(20) текучки нет, просто иногда особо ценные люди перемещаются с должности на должность