Доступ к форме пользовательских настроек отчета на СКД

1. newborn 06.03.17 18:45 Сейчас в теме
Есть внешний отчет на СКД (написанный не мной, но это не важно).
На форме есть параметр типа справочник. И стандартный период.
Стоит задача ограничить список элементов в форме выбора справочника исходя из тех данных, которые введены в стандартный период.
Как это можно сделать?
Если бы это был не СКД, то я бы попытался отловить событие, например НачалоВыбора или ПриНачалеРедактирования и там задать фильтр отбора в форме выбора справочника. Но на СКД мы же не имеем доступа к форме.
Как можно решить проблему?
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. starik-2005 3036 06.03.17 23:27 Сейчас в теме
(1)
Как это можно сделать?
Боюсь, что без редактирования формы выбора справочника такое непросто будет сделать. Форму выбора можно в расширении отрихтовать. В СКД у параметра нужно в связях параметров выбора указать, допустим, какой-нить параметр "Параметр1", а в значении выбрать "период". Остальное - в форме. Т.к. на пользовательские настройки можно повлиять только в процедуре "ПриОткрытии", то ее нужно изменить - сбегать на сервер, очистить пользовательские настройки "Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Элементы.Очистить();", потом в них добавить дату начала и конца из параметра "Параметр1", который предварительно нужно в ПриСозданииНаСервере куда-нить запомнить.
+
4. newborn 07.03.17 00:28 Сейчас в теме
(3)
У меня нет доступа к форме отчета СКД.
+
6. starik-2005 3036 07.03.17 12:43 Сейчас в теме
(4) а это не форма отчета, а форма выбора справочника. При создании на сервере если есть параметр с указанным именем, то нужно установить отбор. А параметр с указанным именем заполняется в связях параметров выбора.
+
7. newborn 07.03.17 17:33 Сейчас в теме
(6)
Как я в форме выбора справочника получу значения стандартного периода, которые находятся на форме отчета СКД, ну или в пользовательских настройках СКД отчета? Ведь в форме выбора справочника нет ссылки на форму, откуда я его вызвал.
+
9. starik-2005 3036 07.03.17 22:15 Сейчас в теме
(7) если в отчете пропишете связи параметров выбора для параметра, то в форме будет соответствующий параметр.
+
10. newborn 07.03.17 22:38 Сейчас в теме
(9)
А вот это интересно. Попробую. Спасибо.
+
12. SP17081992 5 08.03.17 10:46 Сейчас в теме
(1) Ребята зачем создавать форму? В СКД в кладке "Параметры" есть "Параметр редактирование", там есть куча настроек. Если этот вариант не устраивает можно в модуле отчета программно заполнить "Доступное значение" (в той же вкладке).
+
13. newborn 08.03.17 19:50 Сейчас в теме
(12)
Проблема в том, что возможные значения справочника в форме выбора заранее неизвестны. Они зависят от значения стандартного периода. Грубо говоря, нужно снять значения стандартного периода и из некого регистра выбрать запросом значения справочника за некий период.
+
14. SP17081992 5 09.03.17 09:19 Сейчас в теме
(13) Понятно, вам подходит второй вариант.
можно в модуле отчета программно заполнить "Доступное значение"
+
15. newborn 09.03.17 11:53 Сейчас в теме
(14) Пример или ссылку на пример можно?
+
16. SP17081992 5 09.03.17 14:12 Сейчас в теме
(15) Пример:
ДоступныеЗначения = Новый СписокЗначений();
ДоступныеЗначения.Добавить(Истина, "Показывать");
ДоступныеЗначения.Добавить(Ложь, "Не показывать");

Параметры = СхемаКомпоновкиДанных.Параметры;
КоллекцияЗначенийПараметров = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.Элементы;

НовыйПараметр = Параметры.Добавить();
            НовыйПараметр.Имя = "МойПараметр";
            НовыйПараметр.Заголовок = "МойПараметр";
            НовыйПараметр.ТипЗначения = Новый ОписаниеТипов("Булево");
            НовыйПараметр.Значение = Истина;
            НовыйПараметр.УстановитьДоступныеЗначения(ДоступныеЗначения);
            
            ЗначениеПараметраНастроек = КоллекцияЗначенийПараметров.Добавить();
           // Добавить в пользовательские настройки
 
            ЗначениеПараметраНастроек.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
            ЗначениеПараметраНастроек.Параметр = Новый ПараметрКомпоновкиДанных("МойПараметр");
            СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.УстановитьЗначениеПараметра("МойПараметр", Истина);
Показать


Если у тебя уже параметр добавлен, можешь не добавлять, а просто найти этот параметр и установить достуные значения
+
17. newborn 09.03.17 16:10 Сейчас в теме
(16)
Очень интерсено. Спасибо. А в каком событии этот код надо делать?
+
18. SP17081992 5 09.03.17 16:13 Сейчас в теме
(17) ПриКомпоновкеРезультата()
+
19. newborn 09.03.17 17:34 Сейчас в теме
(18)
Так не пойдёт. Ибо мне элемент справочника на форме отчета должен появиться ДО начала выполнения отчета.
+
2. newborn 06.03.17 19:59 Сейчас в теме
5. adapter 417 07.03.17 11:36 Сейчас в теме
без формы никак. добавляешь стандартную форму, в ней есть расширение, метод "СкомпоноватьРезультат", заменяешь им стандартную кнопку. Фильтры реализуешь передначалом выбора, потом программно добавляешь параметры в СКД
alex-l19041; +1
8. newborn 07.03.17 17:34 Сейчас в теме
(5)
Вот как сделать такую форму? есть примеры или ссылки на примеры?
+
11. ipetrochenko 84 08.03.17 00:17 Сейчас в теме
Если форму списка изменить нет возможности, можно ещё попробовать извратиться через подписку на событие "ОбработкаПолученияФормы": через источник получить значение периода, открыть форму списка справочника и установить в ней отбор.
+
Внимание! Тема сдана в архив

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