| 
    
        
     
     | 
    
  | 
программно установить отбор в отчете СКД | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Новый1сник2    
     16.05.23 
            ✎
    11:54 
 | 
         
        Добрый день!
 
        подскажите как программно установить отбор, (параметры передаются, а отбор почему то нет) &НаКлиенте Процедура мПрограммноЗаказаноПоставщикуОтчет(Номенклатура) Перем ФормаОтчёта, КомпоновщикНастроек, Период, ПараметрыФормы; Ном = мСЗПоНоменклатуреПолучитьНаСервере(Номенклатура); ФормаОтчёта = ПолучитьФорму("Отчет.мОтчетЗаказыПоставщику.Форма"); КомпоновщикНастроек = ФормаОтчёта.Отчет.КомпоновщикНастроек; мУстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, "ДатаОстатков", КонецДня(ТекущаяДата())); мУстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, "Организация", Объект.Организация); мУстановитьПользовательскийОтборСКД(КомпоновщикНастроек, "Номенклатура", Ном, ВидСравнения = Неопределено); ПараметрыФормы = Новый Структура(); ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); ПараметрыФормы.Вставить("КлючВарианта", "Основной"); ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки); ОткрытьФорму("Отчет.мОтчетЗаказыПоставщику.Форма", ПараметрыФормы, ЭтаФорма); КонецПроцедуры // КомандаОткрытьОтчётСОтбором  | 
|||
| 
    1
    
        Новый1сник2    
     16.05.23 
            ✎
    11:54 
 | 
         
        &НаКлиенте
 
        Процедура мУстановитьПользовательскийОтборСКД(КомпоновщикНастроек, ИмяОтбора, Значение, ВидСравнения = Неопределено) Перем ПолеКД, Элем, ЭлементОтбора, Настройки, ПользовательскиеНастройки, ПользовательскийОтбор; Настройки = КомпоновщикНастроек.Настройки; ПолеКД = Новый ПолеКомпоновкиДанных(ИмяОтбора); Для Каждого Элем Из Настройки.Отбор.Элементы Цикл Если Элем.ЛевоеЗначение = ПолеКД Тогда ЭлементОтбора = Элем; Прервать; КонецЕсли; КонецЦикла; Если ЭлементОтбора = Неопределено Тогда Возврат; КонецЕсли; Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки; ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); ПользовательскийОтбор.Использование = (Значение <> Неопределено); ПользовательскийОтбор.ВидСравнения = ?(ВидСравнения <> Неопределено, ВидСравнения, ВидСравненияКомпоновкиДанных.Равно); ПользовательскийОтбор.ПравоеЗначение = Значение; КонецЕсли; КонецПроцедуры // УстановитьПользовательскийОтборСКД  | 
|||
| 
    2
    
        Новый1сник2    
     16.05.23 
            ✎
    11:55 
 | 
         
        в отладчике 
 
        ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) почему то Ложь  | 
|||
| 
    3
    
        Новый1сник2    
     16.05.23 
            ✎
    12:15 
 | 
         
        пробовал так, тоже не получается
 
        НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ПолеОтбора = Новый ПолеКомпоновкиДанных("Номенклатура"); НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора; НовыйЭлементОтбора.Использование = Истина; НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = Ном;  | 
|||
| 
    4
    
        vicof    
     16.05.23 
            ✎
    12:19 
 | 
         
        Настройки = КомпоновщикНастроек.ПолучитьНастройки();     
         | 
|||
| 
    5
    
        Новый1сник2    
     16.05.23 
            ✎
    12:20 
 | 
         
        (4) а где это прописать?     
         | 
|||
| 
    6
    
        vicof    
     16.05.23 
            ✎
    12:21 
 | 
         
        Вместо этого Настройки = КомпоновщикНастроек.Настройки;     
         | 
|||
| 
    7
    
        Новый1сник2    
     16.05.23 
            ✎
    12:25 
 | 
         
        (6) пишет 
 
        по причине: Метод контекста недоступен  | 
|||
| 
    8
    
        toypaul    
     гуру 
    16.05.23 
            ✎
    12:25 
 | 
         
        ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора
 
        а последнем параметре заполнить (чем-нибудь) ИдентификаторПользовательскойНастройки  | 
|||
| 
    9
    
        Новый1сник2    
     16.05.23 
            ✎
    12:30 
 | 
         
        (8) где заполнить ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора ?
 
        можно пример  | 
|||
| 
    10
    
        toypaul    
     гуру 
    16.05.23 
            ✎
    12:35 
 | 
         
        (9) поисково-мозговую деятельность прошу произвести самостоятельно. так лучше усваивается     
         | 
|||
| 
    11
    
        vicof    
     16.05.23 
            ✎
    12:44 
 | 
         
        (6) Потому что на сервере надо делать     
         | 
|||
| 
    12
    
        Новый1сник2    
     16.05.23 
            ✎
    12:47 
 | 
         
        (11) на сервере тоже не работает отбор     
         | 
|||
| 
    13
    
        Новый1сник2    
     16.05.23 
            ✎
    14:47 
 | 
         
        такой код тоже не работает
 
        &НаСервереБезКонтекста Процедура УстановитьЭлементПользовательскогоОтбораСКД(КомпоновщикНастроек, ВидСравнения, ИмяПоля, Значение) ПользовательскийОтбор = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти( КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки); ЭлементОтбораПользовательский = ПользовательскийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораПользовательский.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор(); ЭлементОтбораПользовательский.ВидСравнения = ВидСравнения; ЭлементОтбораПользовательский.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); ЭлементОтбораПользовательский.ПравоеЗначение = Значение; ЭлементОтбораПользовательский.Использование = Истина; КонецПроцедуры  | 
|||
| 
    14
    
        Новый1сник2    
     16.05.23 
            ✎
    14:48 
 | 
         
        Ошибка
 
        {Документ.СчетНаОплатуПокупателю.Форма.ФормаДокумента.Форма(6000)}: Значение не является значением объектного типа (Элементы) ЭлементОтбораПользовательский = ПользовательскийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));  | 
|||
| 
    15
    
        Garykom    
     гуру 
    16.05.23 
            ✎
    14:51 
 | 
||||
| 
    16
    
        areaho0ray    
     16.05.23 
            ✎
    15:01 
 | 
         
        (13) Посмотри, что у тебя возвращается в ПользовательскийОтбор - скорее всего не отбор. Проверяй, что там за идентификатор у тебя.     
         | 
|||
| 
    17
    
        Новый1сник2    
     16.05.23 
            ✎
    15:07 
 | 
         
        (16) по разному уже попробовал, отбор ни как не устанавливается     
         | 
|||
| 
    18
    
        areaho0ray    
     16.05.23 
            ✎
    15:23 
 | 
         
        (17) Посмотри в отладчике, что там у тебя вообще есть.     
         | 
|||
| 
    19
    
        Новый1сник2    
     16.05.23 
            ✎
    15:29 
 | 
         
        (18) в отладчике есть доступные поля отбора, и параметры тоже есть,     
         | 
|||
| 
    20
    
        Новый1сник2    
     16.05.23 
            ✎
    15:30 
 | 
         
        Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда
 
        ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки; ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); ПользовательскийОтбор.Использование = Истина; ПользовательскийОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ПользовательскийОтбор.ПравоеЗначение = Значение; КонецЕсли;  | 
|||
| 
    21
    
        Новый1сник2    
     16.05.23 
            ✎
    15:30 
 | 
         
        ЭлементОтбора.ИдентификаторПользовательскойНастройки =""  в отладчике     
         | 
|||
| 
    22
    
        Новый1сник2    
     17.05.23 
            ✎
    10:08 
 | 
         
        благодарю за подсказки, разобрался сам     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |