|
СКД, БСП 3.1 Задать свои предопределенные значения отбора по умолчанию в "ФормеОтчета" | ☑ | ||
---|---|---|---|---|
0
bvb
29.10.24
✎
20:16
|
Добрый вечер
Хочу в форме отчета установить программно список для значение отбора для КомпоновщикНастроек.Настройки.Отбор.Элементы Подскажите на какой из предопределенных процедур в ФормеОтчета это нужно сделать ? Варианты : "ПриСозданииНаСервере" "ПередЗагрузкойНастроекВКомпоновщик" "ПослеЗагрузкиНастроекВКомпоновщик" "ПередЗагрузкойВариантаНаСервере" "ПриЗагрузкеВариантаНаСервере" "ПриЗагрузкеПользовательскихНастроекНаСервере" "ПередЗаполнениемПанелиБыстрыхНастроек" "ПослеЗаполненияПанелиБыстрыхНастроек" "ПриОпределенииПараметровВыбора" "ПриОпределенииИспользуемыхТаблиц" "ПриОпределенииСвойствЭлементовФормыНастроек" "ПриОпределенииОсновныхПолей" "ПередФормированиемОтчета" Пробовал на : ПриЗагрузкеВариантаНаСервере ПриЗагрузкеПользовательскихНастроекНаСервере |
|||
1
Волшебник
29.10.24
✎
20:17
|
на какой?
может "в какой?" |
|||
2
Franchiser
29.10.24
✎
20:25
|
Процедура ИнициализацияОтчета()
КомпоновщикНастроек.Настройки.Отбор.Элементы ... КонецПроцедуры ИнициализацияОтчета(); |
|||
3
bvb
06.11.24
✎
11:00
|
(2) Нет такой процедуры ИнициализацияОтчета есть ИнициализироватьОтчет.
Приеняют когда нужно вызвать отчет из вне с преднастройками. |
|||
4
bvb
06.11.24
✎
11:07
|
Я наверное неточно сформулировал исходную задачу...
В схеме есть отбор по контрагенту. Нужно использовать список значений. Его нужно предзаполнить. Список получается сложно ( запросом). Мне нужно чтобы сам отбор не использовался (галка не стояла), но список был заполнен на уровне метаданных Я пробовал заполнять : КомпоновщикНастроек.Настройки.Отбор.Элементы и Форма.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы ничего не получается |
|||
5
rozer76
06.11.24
✎
11:53
|
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриЗагрузкеПользовательскихНастроекНаСервере = Истина; КонецПроцедуры Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, НовыеПользовательскиеНастройкиКД) Экспорт КомпоновщикНастроекФормы = Форма.Отчет.КомпоновщикНастроек; //тут настраивай параметры и отборы и они "перекроют" пользовательские настройки, например этот параметр //НастроитьПериодПоУмолчанию(КомпоновщикНастроекФормы, "ПериодОтчета"); КонецПроцедуры подробнее тут https://infostart.ru/1c/articles/2112355/ |
|||
6
bvb
06.11.24
✎
12:18
|
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, НовыеПользовательскиеНастройкиКД) Экспорт
КомпоновщикНастроекФормы = Форма.Отчет.КомпоновщикНастроек; ЗадатьСписокМаркетплейсов (КомпоновщикНастроекФормы.Настройки); КонецПроцедур Процедура ЗадатьСписокМаркетплейсов (Настройки) СпМаркетПлейсов = Новый СписокЗначений; СпМаркетПлейсов.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("ООО ""ИНТЕРНЕТ РЕШЕНИЯ""",ИСТИНА)); СпМаркетПлейсов.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("МегаМаркет",ИСТИНА)); СпМаркетПлейсов.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("ВАЙЛДБЕРРИЗ",ИСТИНА)); УстановитьЗначениеОтбора(Настройки, "Контрагент", СпМаркетПлейсов, ВидСравненияКомпоновкиДанных.ВСписке, ИСТИНА); КонецПроцедуры Процедура УстановитьЗначениеОтбора(Настройки, НазваниеОтбора, ЗначениеОтбора, ВидСравнения, Использование = ИСТИНА) Экспорт Для Каждого Элемент ИЗ Настройки.Отбор.Элементы Цикл Если Строка(Элемент.ЛевоеЗначение) = НазваниеОтбора Тогда Элемент.ВидСравнения = ВидСравнения; Элемент.ПравоеЗначение = ЗначениеОтбора ; Элемент.Использование = Использование; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
7
bvb
06.11.24
✎
12:19
|
Форма.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы
Коллекция элементов отбора заполняется. Но в форме по кнопке "настройки" искомого списка нет |
|||
8
Franchiser
06.11.24
✎
14:16
|
(3) добавь
|
|||
9
rozer76
06.11.24
✎
14:44
|
(7) зачем так? У тебя же есть БСП. Пробуй через КомпоновкаДанныхКлиентСервер.ДобавитьОтбор
и передай КомпоновщикНастроек (он там сам разбирает что в него передали это или Настройки) и покури с параметром ВПользовательскиеНастройки |
|||
10
bvb
14.11.24
✎
13:47
|
(9) В УНФ 3.0 в модуле КомпоновкаДанныхКлиентСервер нет ДобавитьОтбор
|
|||
11
bvb
14.11.24
✎
13:55
|
Посмотрел https://infostart.ru/1c/articles/2112355/
Сделал в ПриСозданииНаСервере СпМаркетПлейсов = Новый СписокЗначений; Форма.ФормаПараметры.Отбор.Вставить("Контрагент", СпМаркетПлейсов); Но есть 3 Но : 1. В данной реализации програмно включать / выключать отбор нельзя. Мне нужно чтобы значения отбора были заполненно, но сам отбор по умолчанию был выключен. А так он включен по умолчанию 2. Поле отбора пропало из быстрых настроек формы 3. Доступ к изменению отбора есть только в режиме РАСШИРЕННОй настройки |
|||
12
SleepyHead
14.11.24
✎
15:47
|
(0) Попробуй через ОбщегоНазначенияКлиентСервер
ОтчетШР = Отчеты.ШтатноеРасписаниеНачисления.Создать(); ОтчетШР.КомпоновщикНастроек.ЗагрузитьНастройки(ОтчетШР.СхемаКомпоновкиДанных.ВариантыНастроек.Т3.Настройки); ОтчетШР.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта", "Т3"); Настройки = ОтчетШР.КомпоновщикНастроек.Настройки; Отбор = Настройки.Отбор; Отбор.Элементы.Очистить(); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Организация", ВидСравненияКомпоновкиДанных.Равно, РеквизитыСобытия.Организация); ОтчетШР.СкомпоноватьРезультат(Таб); |
|||
13
rozer76
14.11.24
✎
17:30
|
(10) дарю )
Подробности// Добавляет отбор в коллекцию отборов компоновщика или группы отборов // // Параметры: // ЭлементСтруктуры - КомпоновщикНастроекКомпоновкиДанных, НастройкиКомпоновкиДанных - элемент структуры компоновки данных. // Поле - Строка - имя поля, по которому добавляется отбор. // Значение - Произвольный - значение отбора компоновки данных. // ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнений КД (по умолчанию: Неопределено). // Использование - Булево - признак использования отбора (по умолчанию: Истина). // ДополнительныеПараметры - Структура - Структура со свойствами: // *ВПользовательскиеНастройки - Булево - признак добавления в пользовательские настройки компоновки данных (по умолчанию: ложь). // *ЗаменятьСуществующий - Булево - признак полной замены существующего отбора по полю (по умолчанию: истина). // // Возвращаемое значение: // ЭлементОтбораКомпоновкиДанных - добавленный отбор. // Функция ДобавитьОтбор(ЭлементСтруктуры, Знач Поле, Значение = Неопределено, ВидСравнения = Неопределено, Использование = Истина, ДополнительныеПараметры = Неопределено) Экспорт Если ДополнительныеПараметры = Неопределено Тогда ДополнительныеПараметры = Новый Структура("ВПользовательскиеНастройки, ЗаменятьСуществующий", Ложь, Истина); Иначе Если Не ДополнительныеПараметры.Свойство("ВПользовательскиеНастройки") Тогда ДополнительныеПараметры.Вставить("ВПользовательскиеНастройки", Ложь); КонецЕсли; Если Не ДополнительныеПараметры.Свойство("ЗаменятьСуществующий") Тогда ДополнительныеПараметры.Вставить("ЗаменятьСуществующий", Истина); КонецЕсли; КонецЕсли; Если ТипЗнч(Поле) = Тип("Строка") Тогда Поле = Новый ПолеКомпоновкиДанных(Поле); КонецЕсли; Если ТипЗнч(ЭлементСтруктуры) = Тип("КомпоновщикНастроекКомпоновкиДанных") Тогда Отбор = ЭлементСтруктуры.Настройки.Отбор; Если ДополнительныеПараметры.ВПользовательскиеНастройки Тогда Для Каждого ЭлементНастройки Из ЭлементСтруктуры.ПользовательскиеНастройки.Элементы Цикл Если ЭлементНастройки.ИдентификаторПользовательскойНастройки = ЭлементСтруктуры.Настройки.Отбор.ИдентификаторПользовательскойНастройки Тогда Отбор = ЭлементНастройки; КонецЕсли; КонецЦикла; КонецЕсли; ИначеЕсли ТипЗнч(ЭлементСтруктуры) = Тип("НастройкиКомпоновкиДанных") Тогда Отбор = ЭлементСтруктуры.Отбор; Иначе Отбор = ЭлементСтруктуры; КонецЕсли; Если ВидСравнения = Неопределено Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; КонецЕсли; ЭлементОтбора = Неопределено; Если ДополнительныеПараметры.ЗаменятьСуществующий Тогда Для каждого Элемент Из Отбор.Элементы Цикл Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда Продолжить; КонецЕсли; Если Элемент.ЛевоеЗначение = Поле Тогда ЭлементОтбора = Элемент; КонецЕсли; КонецЦикла; КонецЕсли; Если ЭлементОтбора = Неопределено Тогда ЭлементОтбора = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); КонецЕсли; ЭлементОтбора.Использование = Использование; ЭлементОтбора.ЛевоеЗначение = Поле; ЭлементОтбора.ВидСравнения = ВидСравнения; ЭлементОтбора.ПравоеЗначение = Значение; Возврат ЭлементОтбора; КонецФункции |
|||
14
Jackman
14.11.24
✎
20:10
|
(0) А почему именно через отбор, может лучше через скрытый параметр сделать? В него передать значение, а в запросе написать условие с этим параметром.
|
|||
15
bvb
15.11.24
✎
13:15
|
(13) Спасибо большое. А как она вызывается?
или ее просто вставлять в модуль объекта и она вызовется как при СозданииНаСервере ? (14) Мне нужно что бы за пользователем сохранилась возможность редактировать и включать / выключать данный отбор. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |