8.х СКД установка параметров

Тема в разделе "Система компоновки данных (СКД)", создана пользователем kisol, 3 авг 2016.

  1. TopicStarter Overlay
    kisol
    Offline

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    В форме отчета на СКД устанавливаю параметр программно, но СКД на него не реагирует говорит что параметр не установлен. Что нужно поправить?

    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        УстановитьПривилегированныйРежим(Истина);
        СтандартнаяОбработка =  Ложь;   //   если не  отключить  стандартную обработку,   то  настройки затрутся
        ЗначениеПараметра  =  Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра
                (Новый ПараметрКомпоновкиДанных("Клиент"));
        Если НЕ  ЗначениеПараметра =  Неопределено  Тогда
            ЗначениеПараметра.Использование  = Истина;
            ЗначениеПараметра   =  Справочники.Клиенты.НайтиПоНаименованию("Источник");
        КонецЕсли
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
        ПриОткрытииНаСервере();
    КонецПроцедуры
    
    &НаСервере
    Процедура ПриОткрытииНаСервере()
        ПараметрДанных= Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Клиент");
    ПараметрДанных.Значение = Справочники.Клиенты.НайтиПоНаименованию("Источник");
    ПараметрДанных.Использование=Истина;
    КонецПроцедуры
    
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    kisol нравится это.
  3. TopicStarter Overlay
    kisol
    Offline

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    Пробую, отбор по клиенту не происходит, выводится весь список.
    Мне нужно жестко программно задавать отбор по выбранному клиенту

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    КомпоновщикНастроек=Отчет.КомпоновщикНастроек;

    ЭлементыОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы;

    НовыйЭлемент = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Клиент");
    НовыйЭлемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    НовыйЭлемент.ПравоеЗначение = Справочники.Клиенты.НайтиПоНаименованию("Источник");
    НовыйЭлемент.Использование = Истина;

    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(КомпоновщикНастроек.Настройки);
    КонецПроцедуры
    Последнее редактирование: 3 авг 2016
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Какая форма, какой отчет управляемая форма или нет. Клиент это параметр или отбор. Подробнее
  5. TopicStarter Overlay
    kisol
    Offline

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    Управляемая форма и СКД
    Вот сам запрос в отчете:
    Код:
    ВЫБРАТЬ
        Задача.Ссылка,
        Задача.Клиент,
        Задача.Дата,
        Задача.Приоритет,
        Задача.СостояниеЗадачи
    ИЗ
        Документ.Задача КАК Задача
    Мне нужно жестко в коде ограничить по клиенту вывод данных (по идеи лучше сделать параметром чтобы не получать все и не отбирать нужные) Выводить на форму не нужно управление.
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    1 В запросе определяешь параметр.
    2 в СКд ставишь галочку что бы он не показывался.
    3 А потом программно устанавливаешь параметр через КомпоновщикНастроек.Настройки.ПараметрыДанных. УстановитЗначение Параметров(
  7. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Ну, так, в запросе то где параметр указан ?
    --- Объединение сообщений, 3 авг 2016 ---
    Добавь в фигурных скобках
    Код:
    {ГДЕ
    Задача.Клиент В (&КлиентыСписок)
    }
    --- Объединение сообщений, 3 авг 2016 ---
    в настройках параметров (соотв. закладка скд) настрой типы значений, доступность
    kisol нравится это.
  8. TopicStarter Overlay
    kisol
    Offline

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    В какой процедуре это писать? Пробую не получается

    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        ПарамКлиент = Справочники.Клиенты.НайтиПоНаименованию("Источник");
        Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Клиент", ПарамКлиент);
    КонецПроцедуры
    
    &НаСервере
    Процедура ПриОткрытииНаСервере()
        ПарамКлиент = Справочники.Клиенты.НайтиПоНаименованию("Источник");
        Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Клиент", ПарамКлиент);
    КонецПроцедуры
    
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    &НаСервере
    Процедура ПередЗагрузкойВариантаНаСервере(Настройки)
    ПарамКлиент = Справочники.Клиенты.НайтиПоНаименованию("Источник");
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Клиент", ПарамКлиент);
    КонецПроцедуры
    --- Объединение сообщений, 3 авг 2016 ---
    &НаСервере
    Процедура ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки)
    ПарамКлиент = Справочники.Клиенты.НайтиПоНаименованию("Источник");
    Настройки.Элементы[0].Значение=ПарамКлиент;
    Настройки.Элементы[0].Использование Истина;
    КонецПроцедуры
    --- Объединение сообщений, 3 авг 2016 ---
    Второе надо прописывать если у тебя пользователь хоть раз открывал отчет исохранял ть.е есть уже пользовательские настройки
    --- Объединение сообщений, 3 авг 2016 ---
    Либо надо полоучапть настройки
    Настройки=Отчет.КомпоновщикНастроек.Настройки;
    //Затем устанавливать парметр
    ПарамКлиент = Справочники.Клиенты.НайтиПоНаименованию("Источник");
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Клиент", ПарамКлиент);
    //Затем загрузить эти настройки обратно в компановку
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    СкомпоноватьРезультат()
    --- Объединение сообщений, 3 авг 2016 ---
    Вообщем вот пример его попробуй
    Код:
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
        СтандартнаяОбработка = Ложь;
           
            Настройки=КомпоновщикНастроек.ПолучитьНастройки();
           
            Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Подразделение",Справочники.ПодразделенияОрганизаций.НайтиПоКоду("461197028"));
    
           
            КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
            МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
           
            ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
            ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ,Истина);
           
            ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
            ПроцессорВывода.УстановитьДокумент(ДокументРезультат); //Здесь обязательно
           
            ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    КонецПроцедуры
    Последнее редактирование: 3 авг 2016
    kisol нравится это.

Поделиться этой страницей