Имя: Пароль:
1C
1С v8
Передать параметр в запрос
0 Patrio_
O_Muerte
 
30.09.11
15:39
Добрый день.
Уважаемые, подскажите, каким образом передать параметр в запрос, если параметр - это реквизит отчета (на форме его нет), а сам отчет выполняется при помощи схемы компоновки данных (при создании формы я установил галочку использовать СКД, то есть в самом модуле формы нет ни слова про выполняемый запрос).
1 butterbean
 
30.09.11
15:44
что значит "реквизит отчета"??
2 Patrio_
O_Muerte
 
30.09.11
15:50
(1)В режиме конфигуратора при создании нового отчета\обработки появляется форма создания данной обработки: там есть несколько полей, в нижней части есть большое поле, в котором перечислены "Реквизиты, Табличные части, Формы, Макеты".
Так вот в пункте Реквизиты и присутствует мой реквизит, который надо передать как парамет в СКД.
3 shuhard
 
30.09.11
15:51
(2) выполняй СКД программно
устанавливай параметры
примеров на мисте докуя
4 butterbean
 
30.09.11
15:52
можно так:
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ИмяПараметра");
Параметр.Значение = ТутЗначение;
Параметр.Использование = Истина;
5 Darky
 
30.09.11
15:53
я делал так (по памяти)
СКД.Параметры.МойПараметр.Значение = МойРеквизит

естественно вывод отчета нужно делать программно
Но если есть способ проще, буду рад узнать :)
6 Patrio_
O_Muerte
 
30.09.11
16:03
(3)Если не получится выпендрится, то придется так и делать.
(4)А куда пихать эти строки?
(5)+1:)
7 butterbean
 
30.09.11
16:04
(6) после изменения твоего реквизита
8 shuhard
 
30.09.11
16:05
(6) есть и другие пути,
ты же не хранишь в учетной системе отчеты и содержимое реквизита где-то устанавливаешь

сделай его константой и не парься
9 Patrio_
O_Muerte
 
30.09.11
16:18
(7)Процедура МинусМесяц(Элемент)
   Месяц = Месяц - 1;
   ВремДата = ДобавитьМесяц(ВремДата,-1);
   ЭлементыФормы.Месяц.Заголовок = Формат(ВремДата,"ДФ = ММММ");
   
   Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Месяц");
   Параметр.Значение = Месяц;
   Параметр.Использование = Истина;    
   
КонецПроцедуры

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

Процедура ПлюсМесяц(Элемент)
   Месяц = Месяц + 1;
   ВремДата = ДобавитьМесяц(ВремДата,1);
   ЭлементыФормы.Месяц.Заголовок = Формат(ВремДата,"ДФ = ММММ");
   
   Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Месяц");
   Параметр.Значение = Месяц;
   Параметр.Использование = Истина;    
   
КонецПроцедуры

Вот модуль формы моего отчета - вставил то, что написано, при любых изменениях нужного реквизита. Отладчиком хожу получает параметр присваивает нужные значения.
Но при формировании отчета валится с ошибкой:

Ошибка исполнения отчета
по причине:
Ошибка в выражении "Месяц"

Где еще подпилить?

(8)Не понял, реквизит меняется в диалоге путем нажатию двух кнопок  - "+" и "-".
10 butterbean
 
30.09.11
16:21
где ругается-то??
11 butterbean
 
30.09.11
16:21
(10)+ может у тебя в запросе проблема
12 Patrio_
O_Muerte
 
30.09.11
16:21
(10)При нажатии на кнопку "сформировать".
13 Patrio_
O_Muerte
 
30.09.11
16:21
(11)В консоли нормально выполняется
14 Patrio_
O_Muerte
 
30.09.11
16:36
В качестве апа.
Подозреваю, что где-то не поставил какую-то галочку.
15 Darky
 
30.09.11
16:41
Покажи кусок кода запроса, где есть параметр Месяц
16 Patrio_
O_Muerte
 
30.09.11
16:44
ВЫБРАТЬ
   РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
   РаботникиОрганизацийСрезПоследних.Организация,
   РаботникиОрганизацийСрезПоследних.Должность,
   РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения,
   РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
   РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК СотрудникНаименование,
   МЕСЯЦ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) КАК Месяц
{ВЫБРАТЬ
   Месяц}
ИЗ
   РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, ) КАК РаботникиОрганизацийСрезПоследних
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&Дата, ) КАК СостояниеРаботниковОрганизацийСрезПоследних
       ПО РаботникиОрганизацийСрезПоследних.Сотрудник = СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник
           И РаботникиОрганизацийСрезПоследних.Организация = СостояниеРаботниковОрганизацийСрезПоследних.Организация
           И РаботникиОрганизацийСрезПоследних.Период = СостояниеРаботниковОрганизацийСрезПоследних.Период
ГДЕ
   РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок > 0
   И МЕСЯЦ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) = &Месяц

УПОРЯДОЧИТЬ ПО
   СотрудникНаименование
17 НЕА123
 
30.09.11
16:49
(16)
{ВЫБРАТЬ
   Месяц}
?
18 Patrio_
O_Muerte
 
30.09.11
16:58
(17)Если ты про то что его надо убрать, то результата нет - убрать убрал, а ошибка осталась.
Но суть в том, что я добавил эти строки когда уже после того как ошибка возникла - это я типа пытался понять что где не поставил.
19 НЕА123
 
30.09.11
17:07
ВЫБОР КОГДА (РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) IS NULL Тогда 0
Иначе
МЕСЯЦ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения)
КОНЕЦ
КАК Месяц
20 НЕА123
 
30.09.11
17:08
+(19) в ГДЕ тоже самое.
и параметр может стоит переименовать.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший