Доступ к форме пользовательских настроек отчета на СКД
Есть внешний отчет на СКД (написанный не мной, но это не важно).
На форме есть параметр типа справочник. И стандартный период.
Стоит задача ограничить список элементов в форме выбора справочника исходя из тех данных, которые введены в стандартный период.
Как это можно сделать?
Если бы это был не СКД, то я бы попытался отловить событие, например НачалоВыбора или ПриНачалеРедактирования и там задать фильтр отбора в форме выбора справочника. Но на СКД мы же не имеем доступа к форме.
Как можно решить проблему?
На форме есть параметр типа справочник. И стандартный период.
Стоит задача ограничить список элементов в форме выбора справочника исходя из тех данных, которые введены в стандартный период.
Как это можно сделать?
Если бы это был не СКД, то я бы попытался отловить событие, например НачалоВыбора или ПриНачалеРедактирования и там задать фильтр отбора в форме выбора справочника. Но на СКД мы же не имеем доступа к форме.
Как можно решить проблему?
По теме из базы знаний
- Пользовательские настройки системы компоновки данных
- Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим
- Доработка типового отчета на СКД с помощью расширения
- Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД
- Пользовательские настройки отчетов 1С. Часть 2. Группировки и варианты
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Как это можно сделать?
Боюсь, что без редактирования формы выбора справочника такое непросто будет сделать. Форму выбора можно в расширении отрихтовать. В СКД у параметра нужно в связях параметров выбора указать, допустим, какой-нить параметр "Параметр1", а в значении выбрать "период". Остальное - в форме. Т.к. на пользовательские настройки можно повлиять только в процедуре "ПриОткрытии", то ее нужно изменить - сбегать на сервер, очистить пользовательские настройки "Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Элементы.Очистить();", потом в них добавить дату начала и конца из параметра "Параметр1", который предварительно нужно в ПриСозданииНаСервере куда-нить запомнить.
(12)
Проблема в том, что возможные значения справочника в форме выбора заранее неизвестны. Они зависят от значения стандартного периода. Грубо говоря, нужно снять значения стандартного периода и из некого регистра выбрать запросом значения справочника за некий период.
Проблема в том, что возможные значения справочника в форме выбора заранее неизвестны. Они зависят от значения стандартного периода. Грубо говоря, нужно снять значения стандартного периода и из некого регистра выбрать запросом значения справочника за некий период.
(15) Пример:
Если у тебя уже параметр добавлен, можешь не добавлять, а просто найти этот параметр и установить достуные значения
ДоступныеЗначения = Новый СписокЗначений();
ДоступныеЗначения.Добавить(Истина, "Показывать");
ДоступныеЗначения.Добавить(Ложь, "Не показывать");
Параметры = СхемаКомпоновкиДанных.Параметры;
КоллекцияЗначенийПараметров = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.Элементы;
НовыйПараметр = Параметры.Добавить();
НовыйПараметр.Имя = "МойПараметр";
НовыйПараметр.Заголовок = "МойПараметр";
НовыйПараметр.ТипЗначения = Новый ОписаниеТипов("Булево");
НовыйПараметр.Значение = Истина;
НовыйПараметр.УстановитьДоступныеЗначения(ДоступныеЗначения);
ЗначениеПараметраНастроек = КоллекцияЗначенийПараметров.Добавить();
// Добавить в пользовательские настройки
ЗначениеПараметраНастроек.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
ЗначениеПараметраНастроек.Параметр = Новый ПараметрКомпоновкиДанных("МойПараметр");
СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.УстановитьЗначениеПараметра("МойПараметр", Истина);
ПоказатьЕсли у тебя уже параметр добавлен, можешь не добавлять, а просто найти этот параметр и установить достуные значения
без формы никак. добавляешь стандартную форму, в ней есть расширение, метод "СкомпоноватьРезультат", заменяешь им стандартную кнопку. Фильтры реализуешь передначалом выбора, потом программно добавляешь параметры в СКД
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот