|
СКД. Установка параметра программно |
☑ |
0
Slon747
07.05.16
✎
08:57
|
Есть запрос:
ВЫБРАТЬ ТоварыНаСкладахОстатки.*
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки({&НачалоПериода}) КАК ТоварыНаСкладахОстатки
Параметр &НачалоПериода доступен в быстром отборе.
Нужно, чтобы если не выбран параметр, запрос возвращал остатки не на сегодня, а на какую-то дату.
Пробую устанавливать параметр вручную (убрал проверку на заполненность параметра):
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
МойПараметр = ПараметрыДанных.Найти("НачалоПериода");
МойПараметр.Значение = Дата('20010101');
МойПараметр.Использование = Истина;
КонецПроцедуры
Но отчет все равно формирует остатки на сегодня.
Как исправить?
P.S. Не спрашивайте зачем. Это один из запросов пакете запросов СКД.
|
|
1
Defender aka LINN
07.05.16
✎
09:10
|
УФ?
|
|
2
Slon747
07.05.16
✎
09:14
|
(1) Да
|
|
3
Defender aka LINN
07.05.16
✎
09:28
|
В пользовательских настройках и меняй.
А что вообще мешает назначить значению по умолчанию?
|
|
4
Slon747
07.05.16
✎
09:30
|
(3) А как менять в пользовательских настройка?
>А что вообще мешает назначить значению по умолчанию?
Пользователь может оставить пустое значение начало периода. В этом случае запрос должен вернуть пустые остатки (на начало летосчисления).
|
|
5
Defender aka LINN
07.05.16
✎
10:10
|
(4) КомпоновщикНастроек.ПользовательскиеНастройки, как ни ВНЕЗАПНО
|
|
6
Slon747
07.05.16
✎
11:00
|
(5) Спасибо. Сделал так.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Настройки = КомпоновщикНастроек.ПользовательскиеНастройки;
ИдентификаторНастройки = Настройки.ПолучитьИдентификаторПоОбъекту(КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода")));
ЭлементНастройки = Настройки.Элементы.Найти(ИдентификаторНастройки);
Если Не ЭлементНастройки.Использование Тогда
ЭлементНастройки.Значение = Дата('20010101');
ЭлементНастройки.Использование = Истина;
КонецЕсли;
КонецПроцедуры
|
|
7
Slon747
07.05.16
✎
11:05
|
Но возник вопрос. А можно так подставлять параметр, чтобы он не влиял на отображение в быстром отборе? Т.е. если в быстром отборе пусто, то запрос формировался на '20010101' или просто возвращал пустой результат?
|
|
8
Defender aka LINN
07.05.16
✎
12:17
|
В поле "Выражение" прописать что-то типа
ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1,1,1)
ТОГДА ДАТАВРЕМЯ(2001,1,1)
ИНАЧЕ &НачалоПериода
КОНЕЦ
|
|
9
Slon747
07.05.16
✎
17:28
|
(8) Так работает, если в быстром отборе установлена галочка (Использование), но не выставлен параметр. А если галочка не стоит, то пропускает.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший