Добавить параметр данных СКД в отчет программно

1. dctvghbdtn 05.06.17 15:08 Сейчас в теме +0.78 $m
Всем всех благ!

Не пойму как победить ...

Есть отчет в ЗУП, Табель учета рабочего времени. Подписывает его Руководитель. Программа ставит руководителя предприятия. Нас это не устраивает.

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

Просто на форму отчета вынести реквизит нельзя. Т.к. это общая форма для всех отчетов, а сам отчет формируется в модуле объекта отчета.

Было принято решение добавить этот параметр в СКД программно и потом его уже обрабатывать, по аналогии с параметром Ответственный того же отчета.

Параметр допустим называется Руководитель.

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

Рыба используемого кода:

ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
		
ПараметрРуководительПодразделения = ОтчетОбъект.СхемаКомпоновкиДанных.Параметры.Добавить(); 
ПараметрРуководительПодразделения.Имя = "Руководитель2";
ПараметрРуководительПодразделения.Заголовок = "Руководитель2";
ПараметрРуководительПодразделения.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Сотрудники");
ПараметрРуководительПодразделения.ОграничениеИспользования = Ложь;
ПараметрРуководительПодразделения.Значение = Справочники.Сотрудники.ПустаяСсылка();
ПараметрРуководительПодразделения.Использование = ИспользованиеПараметраКомпоновкиданных.Всегда;
ПараметрРуководительПодразделения.ВключатьВДоступныеПоля = Истина;
		
мПараметрРуководительПодразделения = ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек.УнифицированнаяФормаТ13.Настройки.ПараметрыДанных.Элементы.Добавить(); 
мПараметрРуководительПодразделения.Параметр = Новый ПараметрКомпоновкиДанных("Руководитель2");
мПараметрРуководительПодразделения.Использование = Истина;
мПараметрРуководительПодразделения.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
мПараметрРуководительПодразделения.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
мПараметрРуководительПодразделения.Значение = Справочники.Сотрудники.ПустаяСсылка();
		
Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ОтчетОбъект.СхемаКомпоновкиДанных));
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. shnurov 06.06.17 02:24 Сейчас в теме
Откуда код, из модуля формы? В модуле объекта смотрели? Именно там весь шаманизм.
2. rybolovlev_ms 05.06.17 16:08 Сейчас в теме
Может проще создать свою форму отчета и не мучаться с параметрами СКД?
3. starik-2005 3036 05.06.17 16:31 Сейчас в теме
И нафига козе баян? Если это общая форма, то, предположу, что ЗУП тут 3.х. Также предположу, что параметры, определенные в варианте отчета, прекрасно выводятся в общую форму. Дальше просто: меняете запрос, добавляете параметр, меняете вариант - профит.
dctvghbdtn; +1 Ответить
4. dctvghbdtn 05.06.17 17:56 Сейчас в теме
(3) Конфигурация на поддержке, хотелось бы обойтись кодом не затрагивая основной запрос.
В принципе параметр добавляется кодом в СКД, в т.ч. в пользовательские настройки. Вот только видимо я куда-то не туда код ставлю, все "перетирается" типовым функционалом.

ЗУП 3.*
5. starik-2005 3036 05.06.17 17:57 Сейчас в теме
(4)
все "перетирается" типовым функционалом.
"Перетрите" типовой функционал расширением.
7. dctvghbdtn 06.06.17 11:04 Сейчас в теме
Рыба кода моя.

В модуле объекта отчета формируется отчет (здесь я отловлю новый параметр и заменю заполнение параметра Руководитель макета отчета).

Настройки СКД загружаются в общей форме отчета. :) Настройки пытаюсь подменить в форме отчета. Не взлетает почему то.
8. пользователь 07.06.17 09:28
Сообщение было скрыто модератором.
...
9. dctvghbdtn 07.06.17 11:12 Сейчас в теме
Добавил команду

ЭтаФорма.СоздатьЭлементыФормыПользовательскихНастроек(, РежимОтображенияНастроекКомпоновкиДанных.БыстрыйДоступ);


Появился реквизит на форме, но при открытии настроек пропадает, и при формировании отчета сам параметр пропадает :)
10. AQR84 37 19.09.18 14:47 Сейчас в теме
(9) Я бы на вашем месте делал бы упор не на изменение макета и не на добавление новых параметров СКД, а на изменение процедуры где эти параметры типового отчета заполняются и привязать допустим руководителя через доп.сведениях к подразделению и если доп.сведения заполнены, то заполнение параметра делать из доп.сведений, если нет, то штатный механизм.

У нас была например задача в подвал в подписанты выводить различных сотрудников ответственных за данное штатное расписание и это были отнюдь не ответсвенные лица орг-ции, соответственно формировали штатку с отбором по подразделению, в подразделение через доп.сведения прикрутили подписантов, в расширении в модули отчета переопределили процедуру вывестиподвал
11. Leon29 14.08.20 15:10 Сейчас в теме
В итоге как удалось победить?
Тоже хочется без снятия с поддержки через расширение (не копирую всю СКД) добавить параметр, который в коде потом отрабатывается. Плюс на форме пользователь может редактировать в настройках (кнопка на форме "Настройки").
Пока не удалось добавить.
12. sinops 24.05.21 12:01 Сейчас в теме
Думаю уже не актуально, но вдруг кому пригодиться.

Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетОбъект.СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

Проблема именно здесь, он заново грузит настройки по умолчанию, затирая то что уже сделано.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот