Здравствуйте форумчане. Платформа 8.3.22.1709. Создан простой отчет. Мне надо чтобы пользователь мог устанавливать отборы из типовой формы отчета. Для этого при изменении реквизита вызывается следующая процедура.
(13)По моему не получится. Я же Вам код отправлял для обычных форм. А у Вас управляшки...
Для учебы, предлагаю создать свой отчет, максимально простой, в котором видны параметры, на нем научиться заполнять параметры и только затем переходить к нужному...
И не забывайте, что параметры могут быть включены в пользовательские настройки, причем пользовательские в этом случае имеют приоритет, поэтому их заполнять тоже надо.
&НаСервере
Процедура ПолеВыбораПриИзмененииНаСервере()
//установим параметр
Параметр = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Параметр1");
//тут можно проверить, а найден ли параметр, но на Ваше усмотрение
Параметр.Значение = ПолеВыбора;
Параметр.Использование = Истина;
//отобразим его в пользовательских настройках
//можно проверить перед этим что установка была успешна: Если ЗначениеЗаполнено(Параметр.ИдентификаторПользовательскойНастройки) Тогда, но это на Ваше усмотрение
ПользовательскийПараметр = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);
//можно проверить: на ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных"), но это на Ваше усмотрение
ПользовательскийПараметр.Значение = Параметр.Значение;
ПользовательскийПараметр.Использование = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПолеВыбораПриИзменении(Элемент)
ПолеВыбораПриИзмененииНаСервере();
КонецПроцедуры
Обновляем программу, открываем режим 1С предприятие, проверяем результат.
Также можно в настройках СКД, на вкладке «Другие настройки» отметить галочку «Выводить параметры». Заданные параметры будут отображаться под заголовком отчета, что облегчит тестирование.
В большинстве случаем при установке значения параметра достаточно стандартного интерфейса схемы компоновки данных. Но иногда возникают нестандартные случаи, когда необходимо установить параметр по условию, или возникла ситуация, когда отчет был сформирован программно.
(2) Мне надо устанавливать настройки именно из формы. Там в последствии будут отдельные вызываемые формы для отборов. Короче много нюансов, но пока я столкнулся на первом шаге.
Обновляем программу, открываем режим 1С предприятие, проверяем результат.
Также можно в настройках СКД, на вкладке «Другие настройки» отметить галочку «Выводить параметры». Заданные параметры будут отображаться под заголовком отчета, что облегчит тестирование.
В большинстве случаем при установке значения параметра достаточно стандартного интерфейса схемы компоновки данных. Но иногда возникают нестандартные случаи, когда необходимо установить параметр по условию, или возникла ситуация, когда отчет был сформирован программно.
Но странно, почему в типовой форме отчета тогда есть "КомпоновщикНастроек". Зачем он вообще нужен, если все параметры можно установить только в процедуре "При ПриКомпоновкеРезультата"
(1)То что Вы пытаетесь сделать, это установка параметров. На форме это делается так, например перед открытием занесем в параметр "Параметр1" число 111:
(9)Ой ёй, у Вас еще и управляшки...С этого и нужно было начинать...Там же весь код надо писать на сервере...
...покопайтесь в кнопке "Еще"! И на крайняк, параметры, можно увидеть отладчиком...
И Вы хоть отпишитесь, у Вас получилось задуманное или нет?
(10) Да, получилось, я отметил правильный ответ в теме. Там суть в том, что на клиенте ты сохраняешь параметры, а потом обращаешься к ним при компоновке результата.
(11)Не хочу Вас разочаровывать, но не у каждого отчета есть процедура компоновки.... Что в таком случае собираетесь делать? Желательно научиться параметры менять до нажатия кнопки сформировать, а не во время выполнения.
(13)По моему не получится. Я же Вам код отправлял для обычных форм. А у Вас управляшки...
Для учебы, предлагаю создать свой отчет, максимально простой, в котором видны параметры, на нем научиться заполнять параметры и только затем переходить к нужному...
И не забывайте, что параметры могут быть включены в пользовательские настройки, причем пользовательские в этом случае имеют приоритет, поэтому их заполнять тоже надо.
&НаСервере
Процедура ПолеВыбораПриИзмененииНаСервере()
//установим параметр
Параметр = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Параметр1");
//тут можно проверить, а найден ли параметр, но на Ваше усмотрение
Параметр.Значение = ПолеВыбора;
Параметр.Использование = Истина;
//отобразим его в пользовательских настройках
//можно проверить перед этим что установка была успешна: Если ЗначениеЗаполнено(Параметр.ИдентификаторПользовательскойНастройки) Тогда, но это на Ваше усмотрение
ПользовательскийПараметр = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Параметр.ИдентификаторПользовательскойНастройки);
//можно проверить: на ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных"), но это на Ваше усмотрение
ПользовательскийПараметр.Значение = Параметр.Значение;
ПользовательскийПараметр.Использование = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПолеВыбораПриИзменении(Элемент)
ПолеВыбораПриИзмененииНаСервере();
КонецПроцедуры
(14) Спасибо за помощь. Это все действительно работает. Моя ошибка была в том, что я устанавливал параметры, но не дублировал их в пользовательские настройки.
Добавлю один момент для тех кто потом будет читать. Для того, чтобы установить параметры при открытии отчета, надо поставить процедуру установки параметров не в событие "ПриСозданииНаСервере", а в событии "ПриОткрытии".
(15)Можно ответ отметить, как решение... А я то думал, Вы при изменении реквизита параметры меняете...
Да, между ПриСозданииНаСервере и ПриОткрытии выполняется восстановление пользовательских настроек...
Удачи!
(16) Может вы еще подскажете. Мне надо вывести диаграмму со средним значением по количеству командировок. В консоле запросов я это делаю очень легко, а вот в СКД у меня не получается. Отчет игнорирует то, что я указываю в ресурсе формулу "среднее" и считает только сумму. Не могу понять, что я делаю не так.
Отчет вы у себя вряд ли откроете, там у меня самописный регистр используется. Но сам текст запроса простой, главное я не могу понять, почему система игнорирует формулу в ресурсах.
(18)И правда, с диаграммой не помогу. Могу посоветовать вывести сначала в таблицу и убедиться, что данные присутствуют и они верны, и только затем пытаться сделать диаграмму
(19) Так они и в таблице не верны. Тут суть даже не в самой диаграмме. Я не могу посчитать среднее даже в таблице. Даже если делаю группировку в запросе, СКД игнорирует ее и считает сумму.
(21) Я попробовал все возможные варианты с рассчитывать по. Там все таки конечное количество комбинаций)))
Сейчас сделал через костыль. В отдельном пакете запроса рассчитываю максимальный номер автозаписи по всем месяцам и делю сумму командировок на это значение.
Меня даже посещали мысли что тут глюк платформы. Первый раз вижу, чтобы СКД сам пересчитывал данные. В запросе все считается правильно, а вставляешь в СКД и получаешь совсем другие данные.
(21) Погуглил еще. Есть такая проблема - при компоновке результат СКД может изменить итоговый запрос для оптимизации. Это может приводить к ошибкам, как произошло у меня. Есть несколько костыльных вариантов решения проблемы, но самый надежный способ это создание внешнего источника данных.