Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Программно установить значение параметра СКД в отчете          
Constantus Подменю пользователя
сообщение 14.09.17, 9:17
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

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

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


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

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

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


Vidocq05 Подменю пользователя
сообщение 14.09.17, 10:32
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Constantus @ Сегодня, 10:17 * ,
попробуйте так:

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

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

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

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

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

Constantus Подменю пользователя
сообщение 14.09.17, 10:39
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Vidocq05 @ Сегодня, 13:32 * ,

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

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

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

sava1 Подменю пользователя
сообщение 14.09.17, 10:41
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

В параметрах Скд Выражение - прям так и пишите % Константы.....Получить()

Constantus Подменю пользователя
сообщение 14.09.17, 10:49
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 13:41 * ,

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

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

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

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


Но для управляемой судя по всему требуется другой код обращения к настройкам

Vidocq05 Подменю пользователя
сообщение 14.09.17, 11:26
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Цитата(Constantus @ 14.09.17, 11:39) *
Проблема заключается в том, что сама форма отчета - управляемая форма...

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

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

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

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

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

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

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

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

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

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

Constantus Подменю пользователя
сообщение 14.09.17, 11:32
Сообщение #7

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Vidocq05 @ Сегодня, 14:26 * ,

Эти методы тоже пробовал... Не работают, даже при отладке в первом случае не обращается... во втором ничего не меняет

podcast Подменю пользователя
сообщение 14.09.17, 13:10
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 306
Спасибо сказали: 74 раз
Рейтинг: 0

Constantus @ Сегодня, 12:32 * ,
А почему вы не получите значение константы в запросе?

info230a02 Подменю пользователя
сообщение 14.11.17, 10:12
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 56
Спасибо сказали: 3 раз
Рейтинг: 0

Constantus @ 14.09.17, 11:32 * ,
Наверное уже неактуально, но все же:
Нужен контекст формы (почему: пока не знаю)
Посему
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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

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

Тогда все работает


Signature
В теорії, теорія і практика нерроздільні. На практиці це не так.
Yoggi Berra

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 21:29
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!