Имя: Пароль:
1C
1С v8
СКД. В коде задать значения параметра отбора.
,
0 Fedor
 
29.11.11
20:04
В отчете в отборе есть 1 параметр. Как при открытии этого отчета в коде установить конкретное значение этого параметра?
1 DrShad
 
29.11.11
20:31
а посмотреть в типовом отчете?
2 Fedor
 
29.11.11
20:42
Перепробовал много вариантов. Делал даже по примеру типового отчета. Значения присваиваются. Но в настройках запоминается последнее выбранное вручную значение.
3 philosofka
 
29.11.11
23:40
Процедура ПриОткрытии()

   Настройки = КомпоновщикНастроек.Настройки;
   КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ПравоеЗначение = <нужное значение>;
       КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;

КонецПроцедуры
4 Fedor
 
30.11.11
01:17
(3) Отчет делаю на 1С 8.2, и там так не работает. Всё-равно при открытии устанавливает последний вариант, а не <нужное значение>. Но при закрытии пишет, что вариант отчета был изменен и спрашивает, сохранить ли вариант.
5 MikleV
 
30.11.11
01:28
подумать..что можно установить не только в ПриОткрытии()
6 Fedor
 
30.11.11
01:37
(5) Та не в том дело. Это понятно. Я и писал не только в ПриОткрытии(). И значение устанавливается (для проверки вывел его на форму). Но в отборе значение не меняется, хотя на вариант это влияет.
7 MikleV
 
30.11.11
01:39
в отборе не меняется - где?
т.е. как понял, что не меняется
8 Fedor
 
30.11.11
01:46
(7) На форме над полем результата есть поле "КомпоновщикНастроекПользовательскиеНастройки", в котором отображаются параметры с быстрым отбором. Там у этого параметра задано последнее заданное значение, и на устанавливаемое оно не меняется. И если нажать на кнопку "Настройка..." (редактировать текущие настройки отчета), то там то же значение.
9 Fedor
 
30.11.11
02:05
(7) Ну и, естественно, результат отчета соответствующий.
10 kipish
 
30.11.11
08:29
перем ОтборПодр;

Процедура ОтборПодрПриИзменении(Элемент)
       Если ОтборПодр <> Неопределено Тогда  
       ОтборПодр.ПравоеЗначение = ЭлементыФормы.ОтборПодр.Значение;
   Иначе
       ОтборПодр = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       ОтборПодр.ЛевоеЗначение = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Подразделение")).Поле;
       ОтборПодр.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
       ОтборПодр.ПравоеЗначение = ЭлементыФормы.ОтборПодр.Значение;
       ОтборПодр.Использование = Истина;
       КонецЕсли;
КонецПроцедуры

ОтборПодр = Неопределено;
11 Fedor
 
30.11.11
12:19
(10) Это нужно делать в форме отчета? Переменная ОтборПодр - это реквизит формы?
12 Fedor
 
30.11.11
13:29
Кто-то знает как в 8.2 в СКД устанавливать в коде значение параметра отбора?
13 Kreont
 
30.11.11
13:34
КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ПравоеЗначение = ______;
КомпоновщикНастроек.Настройки.Отбор.Элементы[0].Использование = Истина;
14 Sulimov
 
30.11.11
13:37
а что у тебя? обычное приложение или управляемое?
15 Fedor
 
30.11.11
13:39
(14) Управляемое приложение.
16 Sulimov
 
30.11.11
13:48
А где ты хочешь отбор установить в общих настройках или пользовательских (которые на форме)?
17 Fedor
 
30.11.11
14:06
в пользовательских, которые на форме.
18 Sulimov
 
30.11.11
14:12
Тогда нужно как-то так:
  ЭлементыОтбора = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
  мОтбор = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[4];
  мОтбор.Использование = Истина;
Надо в отладчике посмотреть, какой индекс и как до него достучаться. Я только проверку делал, установлен или нет...
19 Fedor
 
30.11.11
14:13
Я делал так:
КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ПравоеЗначение = <нужное значение>
Значение устанавливается, но на параметр отбора это не влияет.
20 Fedor
 
30.11.11
14:16
(18) А это где должно быть написано? Я делал ПриСозданииНаСервере и ПриОткрытии, там пишу Отчет.КомпоновщикНастроек.Настройки.Отбор... Но как нужно не работает.
21 Sulimov
 
30.11.11
14:17
Мне нужно было ПриКомпоновкеРезультата()
22 Sulimov
 
30.11.11
14:18
(19) Так вот это у тебя в общих настройках...
23 Sulimov
 
30.11.11
14:19
ты попробуй напиши так ПриОткрытии()
24 Fedor
 
30.11.11
14:32
Написал так: Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.
Но там нет нужного параметра.
Похоже я не правильно объяснил ситуацию.
В запросе пишу:
ВЫБРАТЬ
   Документ1.Ссылка.Реквизит1 КАК НужноеПоле
...
Потом в Настройках отчета на вкладке Отбор добавляю отбор по полю НужноеПоле.
И при открытии отчета хочу установить в качестве значения этого отбора нужное значение.
25 Sulimov
 
30.11.11
14:53
Ну так выбрал запросом и в пользовательские пихай... Не получается что-ли?
26 Fedor
 
30.11.11
15:06
Получается. Но, я хочу, чтоб при открытии отчета одно конкретное значение в отборе устанавливалось автоматически. А дальше сделал, чтоб для разных прав было доступно или не доступно изменение этого параметра отбора.
27 Sulimov
 
30.11.11
15:29
Ну так а просто настройки сохранить..?
28 Fedor
 
30.11.11
15:32
Не пойдет.
29 Fedor
 
30.11.11
15:53
Другие варианты есть? Нужно именно в коде установить необходимое значение отбора.
30 Sulimov
 
30.11.11
15:54
Так а как ты пишешь, еще раз? И куда, еще раз, хочешь установить?
31 Fedor
 
30.11.11
16:09
В запросе пишу:
ВЫБРАТЬ
   Документ1.Реквизит1 КАК Реквизит1,
   Документ1.Реквизит2 КАК Реквизит2,
   Документ1.Ссылка
ИЗ
   Документ.Документ1 КАК Документ1
ГДЕ
   Документ1.Проведен
   И (НЕ Документ1.ПометкаУдаления)
В отбор добавляю поле Реквизит1.
У отчета, кроме СКД, создаю форму отчета и форму настроек.
При открытии отчета в поле КомпоновщикНастроекПользовательскиеНастройки находится параметр Реквизит1, который я хочу автоматически заполнять конкретным значением (он не во всех случаях будет доступен для изменения вручную.
32 Fedor
 
30.11.11
16:45
Делал так, но на значение отбора это не повлияло.
ОтборПодр = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0];
ОтборПодр.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Реквизит1")).Поле;
ОтборПодр.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
ОтборПодр.ПравоеЗначение = "123"; //ЭлементыФормы.ОтборПодр.Значение;
ОтборПодр.Использование  = Истина;
33 kipish
 
01.12.11
10:01
(11) Переменная ОтборПодр - это реквизит формы?

ЭлементыФормы.ОтборПодр.Значение; // здесь да, эл формы

всё остальное переменная так обозвана просто.

Да в модуле формы!

Скачай книгу хрусталёвой и почитай там есть примеры.

Процедура ПриОткрытии()
       ОтборОрг = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
       ОтборОрг.ЛевоеЗначение = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Организация")).Поле;
       ОтборОрг.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
       ОтборОрг.ПравоеЗначение = Справочники.Организации.НайтиПоКоду("000000001");
       ОтборОрг.Использование = Истина;
       //-----------------------------------------------------------------------//
КонецПроцедуры


может это тебе поможет