Имя: Пароль:
1C
1С v8
Как установить первоначальное значение параметра в СКД?
0 Gorr
 
22.12.13
00:16
Как установить в конструкторе СКД значение пармметра типа дата по уколчанию?
Если на закладке Параметры в поле "Выражение" ввести следующее выражение ТекущаяДата(), то при открытии окна отчета, поле выбора параметра остается пустым. Что не так?
Вопрос наверное задавался уже миллион раз, но ответа я так и не нашел.
1 Gorr
 
22.12.13
00:19
Неудачный пример привел - для его решения можно выбрать "Начало этого дня" можно выбрать в настройках на закладке параметры. Но что если требуется предустановить какую-то другую дату или значение???
2 Рэйв
 
22.12.13
00:19
раз ты считаешь , что миллион раз. Может стоит сначала в поиск?
3 Gorr
 
22.12.13
00:20
(2) (Народ в основном задавался вопросом как программно установить значение параметра)
4 EvgeniuXP
 
22.12.13
00:23
(3) ну установи программно, будь мужиком!
5 Reaper_1c
 
22.12.13
00:25
(0) В настройках же.
6 Gorr
 
22.12.13
00:27
(5) Уточню вопрос. Можно ли сделать так, чтобы начальное значение параметра который видит пользователь когда отрывает отчет вычислялось на основе некоего выражения?
7 Gorr
 
22.12.13
00:30
(4) вопрос про конструктор СКД
8 EvgeniuXP
 
22.12.13
00:32
(6) смотря что хочешь, на конец дня установить - так это с точностью наоборот, в СКД есть выражения в параметрах, а пользователь видит дату без часов.
Если какой-то другой случай, вычисляй и отображай - программно делай - хотя смысл второго не понимаю.
9 Gorr
 
22.12.13
01:04
(6) с установкой параметра на конец или начало даты проблем нет. вопрос как задать саму дату которую он увидит когда откроет отчет?
10 EvgeniuXP
 
22.12.13
01:06
выражение - глобальный модуль - опиши дату как получить, верни.
11 EvgeniuXP
 
22.12.13
01:06
делай программно тогда и не парься.
12 Reaper_1c
 
22.12.13
03:30
(9) Стандартной датой начала.
13 Gorr
 
22.12.13
11:52
(12) а если нужно чтоб дата вычислялась динамически по выражению?
14 МастерВопросов
 
22.12.13
12:41
у меня так вроде получалось всё:

"В самой СКД на вкладке параметры для &ТекДата в колонке "Выражение" пишем "ТекущаяДата()", тогда в этот параметр автоматически передастся текущая дата."


может тебе нужно отключить доступность в пользовательских настройках?
15 Gorr
 
22.12.13
13:00
(14) попадет то попадет, но пользователь не увидит текущей даты в поле выбора параметра (В настройке параметра стоит флаг "Включать в пользовательские настройки")
ИМХО пользователь должен видеть все параметры формирования отчета в явном виде.
16 mistеr
 
22.12.13
17:34
(15) Ты реальную задачу опиши, а то "примет с датой ненеудачный" и пошел спорить.

Установка параметров по умолчанию делается при открытии формы отчета, если что.
17 Gorr
 
23.12.13
20:27
Не получается установить параметры и при открытии формы, если что:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Параметр = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0];
    Параметр.Значение = НачалоМесяца(ТекущаяДата());
    Параметр.Использование = истина;

КонецПроцедуры
18 Gorr
 
23.12.13
20:27
при этом код отрабатывает без ошибок и открывается форма отчета с пустым значением параметра!!!
19 Gorr
 
23.12.13
22:17
Может еще кому будет полезно. При необходимости установить значение параметров СКД по умолчанию, следует использовать Пользовательские настройки компоновки данных (работает на 8.3):

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Параметр = отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0];
    Параметр.Значение = ЗначениеПоУмолчанию;
    Параметр.Использование = Истина;
КонецПроцедуры
20 dj_serega
 
23.12.13
22:19
(19) А если параметр [0] будет не тот который сейчас?
21 Gorr
 
23.12.13
22:23
(20) А если ты разрабатываешь отчет, то должен знать какие у тебя параметры и порядок их следования.)
22 dj_serega
 
23.12.13
22:31
(21) Если я правильно понял, в течении (как минимум) 10 лет отчет изменяться не будет? =)
23 mistеr
 
23.12.13
22:33
(21) Это был намек на метод Найти(). С ним не "должен знать".
24 Gorr
 
24.12.13
15:57
(23) Во-первых вопрос который был обозначен в топике считаю решенным, а тему закрытой.
Во-вторых прежде чем проявлять остроту ума, было бы неплохо проверять свои советы на практике. А именно, метод Найти("МойПараметр")Коллекции элементов пользовательских настроек при любом раскладе возвращает Неопределено по крайней мере на платформе 8.3.4.365, так что вопрос в (20) не так очевиден как кажется. Но поскольку это обычная коллекция, не вижу проблем обойти ее элементы стандартно и найти искомый элемент по идентификатору типа строка. Например так:

&НаКлиенте
Функция НайтиЗначениеПараметраПоИмени(КоллекцияНастроек,ИмяПараметра)
    ИскомыйПараметр = Новый ПараметрКомпоновкиДанных(ИмяПараметра);
    для каждого ЗначениеПараметра из КоллекцияНастроек цикл
        если ЗначениеПараметра.Параметр = ИскомыйПараметр тогда
            возврат ЗначениеПараметра;            
        конецесли;
    конеццикла;
    возврат Неопределено;
конецФункции

Тогда процедура "ПриОткрытии" будет выглядеть следующим образом:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПараметрыПользовательскихНастроек = отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    Параметр = НайтиЗначениеПараметраПоИмени(ПараметрыПользовательскихНастроек,"МойПараметр");
    если Параметр <> Неопределено тогда
        Параметр.Значение = ЗначениеПоУмолчанию;
        Параметр.Использование = Истина;
    конецесли;
КонецПроцедуры
25 Ellowis
 
24.12.13
16:08
(24) ИдентификаторПользНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(КомпоновщикНастроек.Настройки["ПараметрыДанных"].НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(имяПарам)));

ПараметрПользовНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПользНастройки);

где "имяПарам" - имя необходимого параметра
26 mistеr
 
24.12.13
20:33
(24) На коллекции ПользовательскиеНастройки не проверял. На отборах, параметрах данных и пр. работает.