Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программно установить значение параметра СКД в отчете
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Constantus
Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Имеется отчет на СКД. Один из параметров отчета "Регион"

ГДЕ
    ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    И ЗаказПокупателя.Контрагент.Регион = &Регион


Имеется форма отчета (зачем-то я ее сделал когда-то управляемой формой)

Как можно установить значение параметра "Регион" в отчете, взяв его из Констант, чтобы он каждый раз отображался при открытии?

Регион = Константы.ТекущийРегион.Получить();

Vidocq05
Constantus @ Сегодня, 10:17 необходимо зарегистрироваться для просмотра ссылки ,
попробуйте так:

Процедура ПриОткрытии()

    ПараметрДанных= КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Регион");    

    ПараметрДанных.Значение = Константы.ТекущийРегион.Получить();

    ПараметрДанных.Использование=Истина;
      

КонецПроцедуры
Constantus
Vidocq05 @ Сегодня, 13:32 необходимо зарегистрироваться для просмотра ссылки ,

Проблема заключается в том, что сама форма отчета - управляемая форма...

Приведенный код срабатывает на обычной форме отчета...

Пробовал аналогичный код вставить для управляемой формы - не работает, выдает естественно кучу ошибок...
sava1
В параметрах Скд Выражение - прям так и пишите % Константы.....Получить()
Constantus
sava1 @ Сегодня, 13:41 необходимо зарегистрироваться для просмотра ссылки ,

Хитро... Но либо не понял, либо не получилось, либо комплексно затупил...

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

Код для обычной формы отчета сработал на ура...

Настройки = КомпоновщикНастроек.Настройки;
Значен = Настройки.ПараметрыДанных.Элементы.Найти(Новый ПараметрКомпоновкиДанных("Регион"));
Значен.Значение = Константы.ТекущийРегион.Получить();
Значен.Использование = Истина;


Но для управляемой судя по всему требуется другой код обращения к настройкам
Vidocq05
Цитата(Constantus @ 14.09.17, 11:39) необходимо зарегистрироваться для просмотра ссылки
Проблема заключается в том, что сама форма отчета - управляемая форма...

Приведенный код срабатывает на обычной форме отчета...

Сори. Не обратил внимания.
Я в упровляемых формах не силен, но все таки, а если так:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   УстановитьПараметрСервер();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура УстановитьПараметрСервер()

   Настройки = КомпоновщикНастроек.Настройки;
   Значен = Настройки.ПараметрыДанных.Элементы.Найти(Новый ПараметрКомпоновкиДанных("Регион"));
   Значен.Значение = Константы.ТекущийРегион.Получить();
   Значен.Использование = Истина;

КонецПроцедуры

Ну или может так:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

   Настройки = КомпоновщикНастроек.Настройки;
   Значен = Настройки.ПараметрыДанных.Элементы.Найти(Новый ПараметрКомпоновкиДанных("Регион"));
   Значен.Значение = Константы.ТекущийРегион.Получить();
   Значен.Использование = Истина;

КонецПроцедуры
Constantus
Vidocq05 @ Сегодня, 14:26 необходимо зарегистрироваться для просмотра ссылки ,

Эти методы тоже пробовал... Не работают, даже при отладке в первом случае не обращается... во втором ничего не меняет
podcast
Constantus @ Сегодня, 12:32 необходимо зарегистрироваться для просмотра ссылки ,
А почему вы не получите значение константы в запросе?
info230a02
Constantus @ 14.09.17, 11:32 необходимо зарегистрироваться для просмотра ссылки ,
Наверное уже неактуально, но все же:
Нужен контекст формы (почему: пока не знаю)
Посему
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

и
&НаСервереБезКонтекста
Процедура УстановитьПараметрСервер()

ничего не меняют
А если
&НаСервере
Процедура УстановитьПараметрСервер()

и вместо
   Настройки = КомпоновщикНастроек.Настройки;
   Значен = Настройки.ПараметрыДанных.Элементы.Найти(Новый ПараметрКомпоновкиДанных("Регион"));
   Значен.Значение = Константы.ТекущийРегион.Получить();
   Значен.Использование = Истина;;

написать
   Настройки = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Регион");
   Настройки .Значение = Константы.ТекущийРегион.Получить();
   Настройки .Использование = Истина;

Тогда все работает
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.