|   |   | 
| 
 | СКД, БСП 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) Мне нужно что бы за пользователем сохранилась возможность редактировать и включать / выключать данный отбор. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |