Имя: Пароль:
1C
1С v8
Значение параметра в СКД по условию
,
0 mashik212
 
22.08.19
16:01
Всем добрый день)

Запуталась в 3х соснах, надеюсь на помощь!


В отчете есть параметр ДатаОкончания. Он нужен не во всех вариантах, в общем не обязательный. Нужно, чтобы при его использовании и заполнении пользователем бралась эта дата, в противном случае бралась текущая дата.

Пыталась в Выражение положить конструкции типа ниже. Добаляла и проверки на неопределено и null.  Ошибки не выдает, но при запуске отчета ругается на не заданный параметр


КОНЕЦПЕРИОДА(ВЫБОР  КОГДА  (&ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) ТОГДА &ДатаОкончания ИНАЧЕ &ТекущаяДата  КОНЕЦ    , "ДЕНЬ")

&ТекущаяДата  - параметр в списке выше, где вычисляется текущая дата

Ниже ссылка на скриншот
http://prntscr.com/ow3dtm
1 mikecool
 
22.08.19
16:02
используй {} на условии
2 vdss
 
22.08.19
16:06
Попробуй вместо &ТекущаяДата поставить ТекущаяДата()
3 mashik212
 
22.08.19
16:08
(1) Нет, этот параметр в запросе нужен всегда.
Мне нужно, чтобы значение вычислялось в параметрах СКД (на скрине в вопросе)
4 mashik212
 
22.08.19
16:10
(2) я так сразу и писала, но ошибка была такая же
5 mikecool
 
22.08.19
16:13
что за любовь использовать <>, если обе ветки условия используются?
а на какой параметр ругается? &ТекущаяДата?
6 mashik212
 
22.08.19
16:17
(5) Не знаю, какой тип возвращается у незаполненной даты, поэтому методом тыка..

Нет, ругается на ДатуОкончания. При замене параметра ТекущаяДата на метод ошибка остается
7 mikecool
 
22.08.19
16:19
имхо - надо в запросе &ДатаОкончания запихнуть в {} и все
8 hhhh
 
22.08.19
16:19
(6) ну так и есть. &ДатаОкончания у вас не определено. Странно, что вы не заметили.
9 mikecool
 
22.08.19
16:20
(8) +1 в самом выражении вычисления параметра оно еще не определено
10 mashik212
 
22.08.19
16:21
(7) напишите, пожалуйста, строку. где именно их вставить?
11 mashik212
 
22.08.19
16:22
(8) если пользователь задает дату, она разве не прилетает сюда до вычислений?
12 mikecool
 
22.08.19
16:25
РегистрНакопления..Остатки({ДатаОкончания Как ДатаОкончания}) как то так
13 vdss
 
22.08.19
16:25
КОНЕЦПЕРИОДА(ВЫБОР  КОГДА  (&ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) ТОГДА &ДатаОкончания ИНАЧЕ &ТекущаяДата  КОНЕЦ    , "ДЕНЬ")

Попробуй эту конструкцию вставить в текст запроса, а не в параметры.
В параметрах оставь &ДатаОкончания - задается пользователем, и &ТекущаяДата = ТекущаяДата()
14 mikecool
 
22.08.19
16:26
(13) только условия поптал
15 vdss
 
22.08.19
16:29
скопировал из (0) :)

КОНЕЦПЕРИОДА(ВЫБОР  КОГДА  (&ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) ТОГДА &ТекущаяДата ИНАЧЕ &ДатаОкончания  КОНЕЦ    , "ДЕНЬ")
16 Darky
 
22.08.19
16:32
Почему не так?

Процедура ПриКомпоновкеРезультата()

ДатаОтчета = ?(ЗначениеЗаполнено(ДатаОкончания), ДатаОкончания, ТекущаяДата());
НаписатьСтрокиНаУстановкуПараметраСКД("ДатаОтчета", ДатаОтчета);

КонецПроцедуры
17 mashik212
 
22.08.19
16:38
(13) у меня этот параметр используется как параметр виртуальной таблицы ПЕРИОД
Вставить эту строку в УСЛОВИЕ для виртуальной таблицы не получается
18 mikecool
 
22.08.19
16:44
(17) смотри (12)
19 vdss
 
22.08.19
16:52
Я сейчас проверяю в консоли запросов.
КОНЕЦПЕРИОДА(&ДатаОкончания, "ДЕНЬ") не работает.
КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ) работает.

В справке первый вариант указан как правильный. Странно

Платформа 8.3.15.1565
20 hhhh
 
22.08.19
16:56
(19) покажи скрин справки. может ты не в запросы, а в справку скд залез?
21 vdss
 
22.08.19
17:02
Точняк
22 mashik212
 
22.08.19
17:54
(18) когда я сделала замену в тексте запроса на вашу с фигурными скобками, скд не распознает это и при сохранении в конструкторе затирает
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОкончания, ) КАК КурсыВалютСрезПоследних