1С бухгалтерия

В последнее время все чаще приходится прибегать к программному заполнению параметров и отборов отчета на СКД. В очередной раз при открытии отчета пытался задать параметры по умолчанию. Столкнулся с такой особенностью.

В общем сначала я в отдельной процедуре задаю значения параметров вот сюда:

Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы

Потом перекидываю значения параметров из настроек в пользовательские настройки:

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

Далее уже при формировании отчета, я получаю эти параметры в модуле отчета, в процедуре ПриКомпоновкеРезультата. Такой отчет у меня. Но дело не в этом. Проблема в том, что в модуле формы я как мне казалось установил параметры, а в модуле объекта параметры компоновщика настроек были пустыми. Сначала я пытался устанавливать эти параметры на форме из процедуры ПриСозданииНаСервере. Потом выяснилось, что этого не достаточно. Надо сделать установку параметров из процедуры ПриЗагрузкеПользовательскихНастроекНаСервере(), т.к. параметры были включены в пользовательские настройки. Все логично и при таком варианте при открытии формы параметры получались заполненными. Но! Это было на самописной конфигурации (правда на основе БСП).

Недавно довелось мне снова создавать отчет с предустановленными параметрами, правда уже для 1С БП 3.0. И вот там я застрял. Параметры никак не хотели заполняться. Выяснилось, что процедура ПриЗагрузкеПользовательскихНастроекНаСервере() в БП не вызывается при открытии формы. А без этого соответственно и параметры не заполняются. Вместо этого пришлось закидывать вызов установки параметров в процедуру ПриЗагрузкеВариантаНаСервере().

Почему именно так не понял.Главное что заработало.

Комментарии

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

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

admin аватар

За информацию спасибо. Только я не упомянул, что в своем отчете не использовал общую форму отчета "ФормаОтчета" (создавал свою форму), соответственно процедуры ОпределитьНастройкиФормы у меня не было и она и не вызвалась бы.

В методе ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию() есть описание возвращаемого значения.
Там есть поле "События". Ключевой момент - обработчики определяются не в форме отчета, а в модуле объекта. Посмотрите, если свободное время будет.

* События - Структура - события, для которых определены обработчики в модуле объекта отчета:

** ПриЗагрузкеПользовательскихНастроекНаСервере - Булево - если Истина, то в модуле объекта отчета
следует определить обработчик события по шаблону:
// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - форма отчета.
// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных -
// Пользовательские настройки для загрузки в компоновщик настроек.
//
// См. синтакс-помощник "Расширение управляемой формы для отчета.ПриЗагрузкеПользовательскихНастроекНаСервере"
// в синтакс-помощнике.
//
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, НовыеПользовательскиеНастройкиКД) Экспорт
// Обработка события.
КонецПроцедуры

admin аватар

Теперь уж до лучших времен. Когда опять приспичит, тогда попробую вникнуть во все это. Спасибо.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".