Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Установка параметров отбора в СКД при открытии

Установка параметров отбора в СКД при открытии
Я
   Кокос
 
09.11.16 - 21:16
Ставил приведенный код в присозданиинасервере и в приоткрытии. Параметры ставятся. отборы очищаются но новые отборы не применяются и не появляются в настройках. Может кто подскажет что сделал не так?
В отладке все работает без ошибок.
Если Параметры.Свойство("Документ") И ТипЗнч(Параметры.Документ) = Тип("ДокументСсылка.ПересчетТоваров") Тогда
        //установка параметра по периоду-работает

        ПараметрДатаНач = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
        ПараметрДатаНач.Использование = Ложь;

        ПараметрДатаКон = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
        ПараметрДатаКон.Использование = Ложь;

           Если Параметры.Свойство("ПоляДляОтбора") Тогда
        
            НастройкиДляОтбора = Отчет.КомпоновщикНастроек.Настройки;
            ОтборыПересчета = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы;
            ОтборыПересчета.Очистить();    //очистка параметров - работает

            // дальше отборы не работают и не появляются на форме

            ТоварыДляОтбора = Параметры.ПоляДляОтбора;
            Для Каждого ТоварОтбора из ТоварыДляОтбора Цикл
                
                ГруппаОтбора = ОтборыПересчета.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
                ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
                ГруппаОтбора.Использование = Истина;
                
                ПервыйОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                ПервыйОтборГруппы.Использование = Истина;
                ПервыйОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура");
                ПервыйОтборГруппы.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
                ПервыйОтборГруппы.ПравоеЗначение= ТоварОтбора.Номенклатура;
                
                ВторойОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                ВторойОтборГруппы.Использование = Истина;
                ВторойОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Характеристика");
                ВторойОтборГруппы.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
                ВторойОтборГруппы.ПравоеЗначение= ТоварОтбора.Характеристика;
                
            КонецЦикла;
            
            СкладОтборГруппы = ОтборыПересчета.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            СкладОтборГруппы.Использование = Истина;
            СкладОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад");
            СкладОтборГруппы.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
            СкладОтборГруппы.ПравоеЗначение= Параметры.Документ.Склад;
        КонецЕсли;
    
    КонецЕсли;
 
 
   mikecool
 
1 - 09.11.16 - 22:42
я не знаю, почему, но цикл по отборам заменил бы на "в списке" или как его там
   vicof
 
2 - 10.11.16 - 00:13
Наверное, в компоновщик нужно загрузить настройки
   vicof
 
3 - 10.11.16 - 00:13
Привет, Онотоле ;)
   EvgeniuXP
 
4 - 10.11.16 - 01:33
Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(ПользовательскиеНастройки)
   Кокос
 
5 - 10.11.16 - 09:56
(3) Ляксандер и (4)Евгений спасибо. Щас попробую )
   Кокос
 
6 - 10.11.16 - 10:02
(1) я бы тоже. но задача состоит в том чтобы вывести только по тем комбицаниям обуви и размеров по которым есть расхождения.
   Кокос
 
7 - 10.11.16 - 21:28
Если кому интересно. Сделал через глобальную команду.
Пришлось еще вариант добавлять в компоновщик. Но это всё.
Помогла конфа отсюда http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=617456&threadtype=0&partt617456=2


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ПоляДляОтбора = Новый Массив;
    Если ТипЗнч(ПараметрКоманды) = Тип("ДокументСсылка.ПересчетТоваров") Тогда
        Для Каждого Товар из ПараметрКоманды.Товары Цикл
            Если Товар.КоличествоУпаковок <> Товар.КоличествоУпаковокФакт Тогда
                ПоляДляОтбора.Добавить(Новый Структура("Номенклатура,Характеристика",Товар.Номенклатура,Товар.Характеристика));
            Конецесли;
        КонецЦикла;
    КонецЕсли;
    ОтборПоСкладу = Новый Массив;    
    ОтборПоСкладу.Добавить(Новый Структура("Склад",ПараметрКоманды.Склад));
        
    ПараметрыФормы = Новый Структура("Документ,ПоляДляОтбора,СформироватьПриОткрытии,ПользовательскиеНастройки",ПараметрКоманды,ПоляДляОтбора,Истина,
    ЗаполнитьПользовательскиеНастройкиОтчета("ВедомостьПоТоварамНаСкладах",Новый Структура("Отбор,ОтборПоСкладу",ПоляДляОтбора,ОтборПоСкладу),"_ПересчетыТоваров"));

    ОткрытьФорму("Отчет.ВедомостьПоТоварамНаСкладах.Форма", 
            ПараметрыФормы, 
            ПараметрыВыполненияКоманды.Источник, 
            ПараметрыВыполненияКоманды.Уникальность, 
            ПараметрыВыполненияКоманды.Окно, 
            ПараметрыВыполненияКоманды.НавигационнаяСсылка);
            
КонецПроцедуры


Функция ЗаполнитьПользовательскиеНастройкиОтчета(ИмяОтчета,ПараметрыПользователя,ИмяВарианта) Экспорт    
    ОтчетОбъект=Отчеты[ИмяОтчета].Создать();
    КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;    
    Если ИмяВарианта<>"" Тогда
        Варианты=ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек;
        НайденныйВариант=Варианты.Найти(ИмяВарианта);
        Если НайденныйВариант<>Неопределено Тогда
            Настройки=НайденныйВариант.Настройки;             
            ПоляОтбора = ПараметрыПользователя.Отбор;
            Настройки.Отбор.Элементы.Очистить();
            ГруппаОтбораТоваров = Настройки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
            ГруппаОтбораТоваров.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
            ГруппаОтбораТоваров.Использование = Истина;
    
            Для каждого ПараметрПользователя Из ПоляОтбора Цикл
                                
                    ГруппаОтбора = ГруппаОтбораТоваров.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
                    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
                    ГруппаОтбора.Использование = Истина;
                    
                    ПервыйОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                    ПервыйОтборГруппы.Использование = Истина;
                    ПервыйОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура");
                    ПервыйОтборГруппы.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
                    ПервыйОтборГруппы.ПравоеЗначение= ПараметрПользователя.Номенклатура;
                    
                    ВторойОтборГруппы = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
                    ВторойОтборГруппы.Использование = Истина;
                    ВторойОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Характеристика");
                    ВторойОтборГруппы.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
                    ВторойОтборГруппы.ПравоеЗначение= ПараметрПользователя.Характеристика;
                    
            КонецЦикла;
                        
            СкладОтборГруппы = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            СкладОтборГруппы.Использование = Истина;
            СкладОтборГруппы.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад");
            СкладОтборГруппы.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
            СкладОтборГруппы.ПравоеЗначение= ПараметрыПользователя.ОтборПоСкладу[0].Склад;
        КонецЕсли;         
    Иначе            
        Настройки = КомпоновщикНастроек.ПолучитьНастройки();        
    КонецЕсли; 
    
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    
    Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
    
КонецФункции

Список тем форума
Рекламное место пустует  Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует