При программном формировании отчета не находит параметры периода

1. user1202776 15.10.19 16:24 Сейчас в теме
НужныйОтчет	= ВнешниеОтчеты.Создать(ИмяФайлаОтчета, ложь);
	СхемаКомпоновкиДанных = НужныйОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	НачалоПериода = Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала");
	НачалоПериода.Значение = НачалоДня(ТекущаяДата()-86400);
	КонецПериода = Настройки.ПараметрыДанных.Элементы.Найти("ДатаОкончания");
	КонецПериода.Значение = КонецДня(ТекущаяДата()-86400);

Программно формирую отчет, но почему-то не находит параметры ДатаНачала и ДатаОкончания.
В Настройки.ПараметрыДанных.Элементы нет этих параметров.
Почему может не находить эти параметры?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user5300 1014 15.10.19 16:30 Сейчас в теме
(1) Вариант 1 ;
Свойство "Использование" = истина


НачалоПериода = Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала");
НачалоПериода.Значение = НачалоДня(ТекущаяДата()-86400);
НачалоПериода.Использование = Истина;  /////ВОТ

///вариант 2
Попытка 
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", НачалоДня(ТекущаяДата()-86400)) ///Так эффективнее =)
Исключение
Конецпопытки;

Показать
3. user1202776 15.10.19 16:40 Сейчас в теме
(2)Так выводит ту же ошибку:
КонецПериода = Настройки.ПараметрыДанных.Элементы.Найти("ДатаОкончания");
	КонецПериода.Значение = КонецДня(ТекущаяДата()-86400);
КонецПериода.Использование = Истина;


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




по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(19, 53)}: Не задано значение параметра "ДатаНачала"
AV_ПараметрыЦенообразования.Реализация.Дата МЕЖДУ <<?>>&ДатаНачала И &ДатаОкончания
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(527)}: Ошибка при вызове метода контекста (Вывести)
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(19, 53)}: Не задано значение параметра "ДатаНачала"
AV_ПараметрыЦенообразования.Реализация.Дата МЕЖДУ <<?>>&ДатаНачала И &ДатаОкончания
4. user1202776 15.10.19 16:42 Сейчас в теме
(2)и еще в Настройки.ПараметрыДанных.Элементы все равно не находит этих параметров, а если не находит , то как поставить им значения
5. user5300 1014 15.10.19 16:57 Сейчас в теме
(4)
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

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

	НачалоПериода = КомпНастроек .ПараметрыДанных.Элементы.Найти("ДатаНачала");
    НачалоПериода.Значение = НачалоДня(ТекущаяДата()-86400);
НачалоПериода.Использование = истина

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

    КомпНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпНастроек.ЗагрузитьНастройки(Настройки);
Показать
6. aezdakov 5 15.10.19 16:58 Сейчас в теме
(4)предполагаю, что их нужно туда добавить. Чтобы удостоверится, посмотрите в отладке у настроек доступныепараметры, думаю там они точно есть.
10. user1202776 15.10.19 17:16 Сейчас в теме
(6)они же есть итак в СКД.В этом отчете 5 параметров, два их которых дата начала и датаокончания. Остальные три параметры показываются в Настройки.ПараметрыДанных.Элементы
16. aezdakov 5 15.10.19 17:35 Сейчас в теме
(10)ок, тогда проще:
ЗначенияПараметровДанныхКомпоновкиДанных.УстановитьЗначениеПараметра (DataCompositionDataParameterValues.SetParameterValue)
ЗначенияПараметровДанныхКомпоновкиДанных (DataCompositionDataParameterValues)
УстановитьЗначениеПараметра (SetParameterValue)
Синтаксис:

УстановитьЗначениеПараметра(<Параметр>, <Значение>)
Параметры:

<Параметр> (обязательный)

Тип: Строка; ПараметрКомпоновкиДанных.
Имя параметра или параметр компоновки данных, значение которого нужно установить.
<Значение> (обязательный)

Значение, которое нужно установить.
Описание:

Устанавливает значение параметра и включает свойство Использование. Если параметр с указанным именем не найден, будет вызвано исключение.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

В вашем случае будет:
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", НачалоДня(ТекущаяДата()-86400));
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаОкончания", КонецДня(ТекущаяДата()-86400));

Пользуйтесь СП, всё остальное от лукавого.
17. user1202776 15.10.19 17:47 Сейчас в теме
(16)а как программно вывести доступное поле в отчет?То, что хочу вывести находится в "ДоступыеПоля".И как-то можно поставить каким по счету будет выводится эта колонка?
И как удалить поле, которое не нужно?
18. aezdakov 5 15.10.19 18:03 Сейчас в теме
(17)ну раз действительно нет и есть в доступных, а так же не помогло:
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", НачалоДня(ТекущаяДата()-86400));

Тогда тут не всё так однозначно) В конфигураторе нажимаете F1 в открывшейся справке нажимаете индекс и там вбиваете: ЗначенияПараметровДанныхКомпоновкиДанных
В найденной справке выбираем свойство элементы, потом в открывшейся справке выбираем "Тип: КоллекцияЗначенийПараметровКомпоновкиДанных" и там видим наличие метода "Добавить", читаем справку и делаем вывод, что нам нужно примерно следующее:
ДобавлеямДичь = Настройки.ПараметрыДанных.Элементы.Добавить();

"ДобавлеямДичь" имеет свои свойства, возвращаемся в справку и смотрим какие типы возвращает этот метод "Добавить()":
Возвращаемое значение:

Тип: ЗначениеПараметраКомпоновкиДанных или ЗначениеПараметраНастроекКомпоновкиДанных

Что-то из этого явно истина. Я бы на этом этапе воспользовался бы отладкой и узнал бы какой тип имеет это наша "ДобавлеямДичь" и опять таки вернулся бы в СП за расшифровкой и так далее и так далее. Если дойдёте до этого этапа и не сможете понять как действовать дальше, то укажите какой тип получите от определения "ДобавлеямДичь", будем мучиться дальше, ну а я поехал домой.
7. user5300 1014 15.10.19 17:00 Сейчас в теме
15. user1202776 15.10.19 17:26 Сейчас в теме
8. wertep 23 15.10.19 17:13 Сейчас в теме
(1)
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию

А почему берем НастройкиПоУмолчанию?

Параметры пихаем в КомпоновщикНастроек.
Настройки = КомпоновщикНастроек.Настройки
user1202776; +1 Ответить
9. user1202776 15.10.19 17:14 Сейчас в теме
(8)так пробовал, выдает ошибку, что КомпоновщикНастроек не найден
11. wertep 23 15.10.19 17:18 Сейчас в теме
(9)
что КомпоновщикНастроек не найден

При формировании он идет как реквизит формы отчета.
А при программном формировании тебе его надо в рукопашную получить, и потом при формировании отчета использовать.
yushka; user1202776; +2 Ответить
12. user1202776 15.10.19 17:19 Сейчас в теме
(11)так?:
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    КомпНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпНастроек.ЗагрузитьНастройки(Настройки);
13. wertep 23 15.10.19 17:20 Сейчас в теме
(12)
примерно так?

Да примерно так.
14. user1202776 15.10.19 17:24 Сейчас в теме
(13)спасибо, так получилось:
НужныйОтчет	= ВнешниеОтчеты.Создать(ИмяФайлаОтчета, ложь);
	СхемаКомпоновкиДанных = НужныйОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    КомпНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпНастроек.ЗагрузитьНастройки(Настройки);
	Настройки = КомпНастроек.Настройки;
	НачалоПериода = Настройки.ПараметрыДанных.Элементы.Найти("ДатаНачала");
	НачалоПериода.Значение = НачалоДня(ТекущаяДата()-86400);
НачалоПериода.Использование = Истина;
	КонецПериода = Настройки.ПараметрыДанных.Элементы.Найти("ДатаОкончания");
	КонецПериода.Значение = КонецДня(ТекущаяДата()-86400);
КонецПериода.Использование = Истина;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот