Имя: Пароль:
1C
 
Выражение в параметре СКД (обработка пустого значения)
0 Asmodeus
 
14.04.09
15:39
1С 8.1.13.37
УТ 10.3.3.3

Имею в СКД НаборДанныхЗапрос, в котором есть параметр &Валюта:
"
...
ИЗ
...
   РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОкончания, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
..."

В конструкторе СКД, на закладке Параметры заполняется по умолчанию:
Имя = "Валюта"
Значение = "Валюта"
Доступные типы = "СправочникСсылка.Валюты"
Значение = "Справочник.Валюты.ПустаяСсылка"

Хочу в поле "Выражение" поместить выражение, которое бы при незаполненной валюте считала бы валютой рубли (чтобы отчет что-то показал, если пользователь его открыл и сразу нажал "Сформировать", ничего не заполняя).

Не очень понятна логика проверок.

Что я перепробовал:

1. Игрался дополнительно в конструкторе СКД, на закладке "Настройки" вариантами заполнения параметра "Валюта" с целью получить ПустуюСсылку или Неопределено.
2. Пробовал разные выражения...

.. Нашел, что если в поле "Выражение" поместить "Справочники.Валюты.НайтиПоКоду("810")", то отчет считает все в рублях. Всегда. Игнорируя пользователя :)
.. Нашел, что конструкция "Если .. КонецЕсли" не работает, нашел, что работает конструкция "Выбор Когда Тогда Конец" :)

А вот с условием беда...
1. "Выбор Когда &Валюта=Справочники.Валюты.ПустаяСсылка() Тогда Справочники.Валюты.НайтиПоКоду("810") Конец" - не работает никак (ошибок не выдает, рубли не подхватывает)
2. "Выбор Когда &Валюта=Значение(Справочник.Валюты.ПустаяСсылка) Тогда Справочники.Валюты.НайтиПоКоду("810") Конец" - не работает никак
3. "Выбор Когда &Валюта Есть Null Тогда Справочники.Валюты.НайтиПоКоду("810") Конец" - не работает никак
4. "Выбор Когда НЕ ЗначениеЗаполнено(&Валюта) Тогда Справочники.Валюты.НайтиПоКоду("810") Конец" - работает всегда на рубли, даже когда параметр выбран (другой валютой)

Судя по последней, складывается такое впечатление, что я выбираю одно, а проверяю другое...

Как бы поставить правильное условие?
Может быть как-то надо обращаться не к &Валюта, а как-нибудь, типа, СКД.Параметры.Валюта?
1 sergeante
 
14.04.09
15:50
эммм... кривой способ есть ;) счас напешу
2 sergeante
 
14.04.09
15:54
Открываем в консоле отчётов твою схему скд.
Задаём значение параметра (выбираем рубли).
Сохраняем схему.
в режиме конфигуратора открываем сохранённую схему (заместо старой). В параметре ты увидишь ГУИД твоей валюты вместо наименования.
Вот такой отчёт теоретически будет иметь предустановленный параметр.
3 sergeante
 
14.04.09
15:56
разумеется всё это мы делаем в конструкторе схемы скд
4 sergeante
 
14.04.09
16:05
неа... не канает. гуид конвертится в строку...
5 Asmodeus
 
14.04.09
16:06
Это ж как надо извращаться чтобы такое найти? :)
Попробовал...
Видимо пофиксили... Или наоборот, еще не родился этот баг в моих версиях :))
При попытке загрузить схему, сохраненную из консоли, выдает "Ошибка преобразования данных XDTO"+многобукв :) Параметры и настройки вообще пустые получаются :)
6 Asmodeus
 
14.04.09
16:07
Так, ведь - предустановить параметр вполне получается "Справочники.Валюты.НайтиПоКоду("810")". Не получается правильное условие сделать, чтобы это работало только по умолчанию для незаполненного...
7 IronDemon
 
14.04.09
16:09
Процедура ПриОткрытии()
   
   ЭлементПараметраДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Валюта");
   ЭлементПараметраДанных.Значение = Справочники.Валюты.НайтиПоКоду("810");
   
КонецПроцедуры
8 Asmodeus
 
15.04.09
12:41
Извиняюсь - убежал вчера.

(7) Спасибо, это отвечает поставленной цели.

Но у меня остается первичный вопрос открытым: "Почему не получается задать сравнение значения параметра в поле Выражение, закладки Параметры в конструкторе СКД?"
9 MSensey
 
15.04.09
17:37
Попробуй так - заведи второй параметр &ВалютаПоумолчанию, установи для нее нужное значение
А для &Валюта напиши:
ВЫБОР КОГДА &Валюта=Справочники.Валюты.ПустаяСсылка()
  Тогда &ВалютаПоумолчанию
ИНАЧЕ &Валюта
КОНЕЦ
10 BabySG
 
15.04.09
17:40
В параметрах надо выставить ссылку пустую на справочник, иначе туда прихожит непонятное значение.
У меня работает определение пустых параметров без проблем.
11 Asmodeus
 
16.04.09
13:07
(10) У меня стоит в Настройках для параметра "Валюта" значение "Справочник.Валюты.ПустаяСсылка", равно как и в Параметрах в поле "Значение"

(9) Вопрос не стоит в том как присвоить параметру значение конкретной валюты - он нормально устанавливается кодом "Справочники.Валюты.НайтиПоКоду("810")".
Вопрос в том, что он реагирует ни на условие
"Выбор Когда &Валюта=Справочники.Валюты.ПустаяСсылка() Тогда Справочники.Валюты.НайтиПоКоду("810") Конец"
ни на
"Выбор Когда &Валюта=Значение(Справочник.Валюты.ПустаяСсылка) Тогда Справочники.Валюты.НайтиПоКоду("810") Конец"
12 Asmodeus
 
16.04.09
13:07
+(11) поправка - НЕ реагирует
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.