1. user1202776 15.10.19 16:24 Сейчас в теме

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

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

Программно формирую отчет, но почему-то не находит параметры ДатаНачала и ДатаОкончания.
В Настройки.ПараметрыДанных.Элементы нет этих параметров.
Почему может не находить эти параметры?
Прикрепленные файлы:
Ответы
Избранное Подписка Сортировка: Древо
2. user5300 137 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 137 15.10.19 16:57 Сейчас в теме
(4)
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вакансии

Специалист техподдержки 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Системный аналитик 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Тестировщик 1С
Москва
зарплата от 70 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 50 000 руб. до 80 000 руб.
Полный день