Добрый день, уважаемые форумчане! Делаю отчет в виде диаграммы, необходимо задать параметры периода в запросе. Без параметров диаграмма выводится, но если добавляю параметры, то выводится ничего. В чем может быть дело, куда копать? Заранее спасибо!
Скрины запроса и параметров приложил.
---
на закладке "Параметры" для параметра Период снять флаг "Ограничение доступности".
На закладке "Настройки" в "Параметры" включить параметр "Период". Включить его в пользовательские настройки.
Там же можно установить значение по умолчанию.
Но самое главное, появится новая закладка "Параметры" в настройках отчета. Где и можно устанавливать значения параметра.
---
там же еще параметр Контрагент.
Который указан в самой настройке.
Вот из-за него вполне и не выводит.
В консоле отчетов это еще работает (все работает в пользовательском режиме).
Но в схеме СКД это давно не срабатывает. Подозреваю не находит контрагента.
Для этого параметра нужно проделать такие же манипуляции, как и для параметра Период.
---
ну тут либо не заданы значения выделенных параметров, либо нет данных за этот период
---
и где установленные значения параметра Период?
Не установленные значения = значения по умолчанию = Пустая дата.
Естественно на пустую дату данных нет...
---
Все равно не получается...
---
на закладке "Параметры" для параметра Период снять флаг "Ограничение доступности".
На закладке "Настройки" в "Параметры" включить параметр "Период". Включить его в пользовательские настройки.
Там же можно установить значение по умолчанию.
Но самое главное, появится новая закладка "Параметры" в настройках отчета. Где и можно устанавливать значения параметра.
---
Прошу прощения, я относительно новичок. "Включить его в пользовательские настройки" - это добавить Пользовательские поля?
(8)
---
ПКМ по параметру во вкладке "Настройки" -> Свойства элемента пользовательских настроек. Там выставить флаг "Включать в пользовательские настройки"
---
Спасибо, получилось!
---
Может нужно добавить необязательные параметры
---
а на форму поле с "Период" выведено? Через него точно период задается ?
---
Пока на форму не вывожу, только в консоли отчетов.
---
ну а в консоли то точно задаете через "Период" ?
---
Да, если Вы про вкладку "Параметры данных"
---
Но в выводе на форму такая же беда. Может быть подскажете, в чем дело?

```1c
    &НаКлиенте
    Процедура ПолучитьМакеты()
    НовыйМакет=ТабличноеПолеАнализ.Добавить();
    НовыйМакет.Название="Макет";
    НовыйМакет.Описание="Макет";
    НовыйМакет.НачалоПериода = НачалоГода(ТекущаяДата());
    НовыйМакет.КонецПериода = КонецГода(ТекущаяДата())

    &НаСервере
    Функция ПолучитьМакет(НазваниеМакета)
    Об = РеквизитФормыВЗначение("Объект");
    СхемаКомпоновкиДанных = Об.ПолучитьМакет(НазваниеМакета);
    ЗначениеВРеквизитФормы(Об,"Объект");

    Возврат СхемаКомпоновкиДанных;
    КонецФункции

    &НаСервере
    Процедура ВывестиОтчет(НазваниеМакета,НачалоПериода,КонецПериода)

    СхемаКомпоновкиДанных = ПолучитьМакет(НазваниеМакета);

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

    Настройки = КомпоновщикНастроек.Настройки;

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

    ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    ПараметрПериод.Значение = НачалоДня( НачалоПериода);
    ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
    ПараметрПериод.Значение = КонецДня( КонецПериода);
    КонецЕсли;

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

    Результат = МакетАнализ;
    Результат.Очистить();

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

    Результат.ОтображатьЗаголовки = Ложь;
    Результат.ОтображатьСетку = Ложь;

    КонецПроцедуры
```

Делаю так.
---
Если не ЗначениеЗаполнено(НачалоПериода) Тогда
            Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НачалоМесяца(ТекущаяДата()));
            Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецМесяца(ТекущаяДата()));
        Иначе
            НастройкиОсновной = СхемаКомпоновкиДанных.ВариантыНастроек.Найти("Основной").Настройки;

            ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
            ПараметрПериод.Значение = НачалоДня( НачалоПериода);
            ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
            ПараметрПериод.Значение = КонецДня( КонецПериода);
        КонецЕсли;

Зачем пытаетесь установить заблокированные параметры? Они будут вычисляться из параметра Период.
А его как раз и не устанавливаете. Он с пустой датой. Соответственно и привязанные к нему параметры так же будут с пустой датой.
Устанавливайте параметр Период.

PS. еще, устанавливать параметр нужно в пользовательских настройках. Они перекрывают основные настройки.
Для этого необходимо найти параметр в основных настройках и узнать ИдентификаторПользовательскихНастроек. И уже по нему находить нужный параметр в пользовательских настройках. Изменять нужно именно его.
---
вместо "НачалоПериода" и "КонецПериода" просто "Период" ?
---
да. Период это параметр, который открыт для установки. Только это не дата, а СтандартныйПериод, соответственно и установка его несколько отличается.

```1c
    ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));

    Если ПараметрПериод <> Неопределено Тогда
    ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрПериод.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
    ПараметрПользовательскойНастройки.Значение.ДатаНачала=НачалоДня( НачалоПериода);
    ПараметрПользовательскойНастройки.Значение.ДатаОкончания=КонецДня( КонецПериода);
    КонецЕсли;
    КонецЕсли;
```
---
ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));

Если ПараметрПериод <> Неопределено Тогда
    ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрПериод.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
        ПараметрПользовательскойНастройки.Значение.ДатаНачала=НачалоДня( НачалоПериода);
        ПараметрПользовательскойНастройки.Значение.ДатаОкончания=КонецДня( КонецПериода);
        КонецЕсли;
КонецЕсли;

К сожалению, диаграмма не выводится.
---
а. выводите через КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
Тогда не нужно получать пользовательские настройки.
Устанавливайте параметр сразу в Настройки.

```1c
    ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));

    Если ПараметрПериод <> Неопределено Тогда
    ПараметрПериод.Значение.ДатаНачала=НачалоДня( НачалоПериода);
    ПараметрПериод.Значение.ДатаОкончания=КонецДня( КонецПериода);
    КонецЕсли;
```
---
(19) ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));

Если ПараметрПериод <> Неопределено Тогда
    ПараметрПериод.Значение.ДатаНачала=НачалоДня( НачалоПериода);
    ПараметрПериод.Значение.ДатаОкончания=КонецДня( КонецПериода);
КонецЕсли;

К сожалению, без результата
---
откуда вызывается процедура ВывестиОтчет?
Она вообще вызывается?
---
(21)

```1c
    &НаКлиенте
    Процедура ТабличноеПолеАнализВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    Если Поле.Имя = "ТабличноеПолеАнализОписание" Тогда
    СтандартнаяОбработка=ложь;
    ТекСтрока = ТабличноеПолеАнализ.Получить(ВыбраннаяСтрока);
    ВывестиОтчет(ТекСтрока.Название,ТекСтрока.НачалоПериода,ТекСтрока.КонецПериода);
    Элементы.ГруппаОтчеты.Текущаястраница = Элементы.Отчеты;
    КонецЕсли;
    КонецПроцедуры
```
---
пройдитесь отладчиком. Тяжело что-то еще посоветовать не видя данных.
---
на какие значения обращать внимание?
---
заполняются ли параметры и как.

И вот этот код:
НастройкиОсновной = СхемаКомпоновкиДанных.ВариантыНастроек.Найти("Основной").Настройки;
Вот зачем он?

Приведите полученный текущий код.
---
НастройкиОсновной

```1c
    &НаСервере
    Процедура ВывестиОтчет(НазваниеМакета,НачалоПериода,КонецПериода)
    СхемаКомпоновкиДанных = ПолучитьМакет(НазваниеМакета);

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);

    Настройки = КомпоновщикНастроек.Настройки;
    ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));

    Если ПараметрПериод <> Неопределено Тогда
    ПараметрПериод.Значение.ДатаНачала=НачалоДня( НачалоПериода);
    ПараметрПериод.Значение.ДатаОкончания=КонецДня( КонецПериода);
    КонецЕсли;
    .
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

    Результат = МакетАнализ;
    Результат.Очистить();

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

    Результат.ОтображатьЗаголовки = Ложь;
    Результат.ОтображатьСетку = Ложь;

    КонецПроцедуры
```
---
там же еще параметр Контрагент.
Который указан в самой настройке.
Вот из-за него вполне и не выводит.
В консоле отчетов это еще работает (все работает в пользовательском режиме).
Но в схеме СКД это давно не срабатывает. Подозреваю не находит контрагента.
Для этого параметра нужно проделать такие же манипуляции, как и для параметра Период.
---
(27) Убрал этот параметр, заработало. Спасибо!!!
---
А как добавить туда помимо макетов отчет?
По кнопке открывается отчет, вот так (1 скрин), необходимо, чтобы он показывался также, как те макеты с диаграммами
---
.
---
Очень нуждаюсь в Вашей помощи. https://forum.infostart.ru/forum9/topic284562/#message2848740