Как стандартному периоду программно задать начало и конец периода?

1. user1202776 27.01.20 12:56 Сейчас в теме
В СКД есть параметры "Периодичность" с типом СтанадртныйПериод. Как этому параметру программно задать начало и конец периода?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Teut_Vlad 180 27.01.20 13:07 Сейчас в теме
Модуль объкта
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаНачала", ДатаНачала);
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаОкончания", ДатаОкончания);
КонецПроцедуры
3. user1202776 27.01.20 13:11 Сейчас в теме
(2)я в внешней обработке задаю параметры и отборы отчета
4. Teut_Vlad 180 27.01.20 13:13 Сейчас в теме
(3) так, я говорю про это (см рисунок)
А вы про что говорите?)
Прикрепленные файлы:
5. user1202776 27.01.20 13:19 Сейчас в теме
(4)я говорю не про внешний отчет, а про внешнюю обработку. Внешняя обработка формирует отчет и сохраняет в EXcel файле
6. Teut_Vlad 180 27.01.20 13:22 Сейчас в теме
(5) Если выложите код создания и сохранения, мб смогу что то подсказать
НовОтчет = Отчеты.ПлановыеОтгрузкиПроизводство.Создать();
НовОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаНачала", ДатаНачала);
НовОтчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаОкончания", ДатаОкончания);
7. user1202776 27.01.20 13:26 Сейчас в теме
(6)
Таб = Новый ТабличныйДокумент;
	
	ИмяФайлаОтчета = КаталогВременныхФайлов() + "Report_.tmp";
	Отчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию("2323332");
	
	ДвоичныеДанные = Отчет.ХранилищеВнешнейОбработки.Получить();
	ДвоичныеДанные.Записать(ИмяФайлаОтчета);
	
	
	НужныйОтчет	= ВнешниеОтчеты.Создать(ИмяФайлаОтчета, ложь);
	
	СхемаКомпоновкиДанных = НужныйОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");	
	Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; 
	КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
	КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
	Настройки = КомпоновщикНастроек.Настройки;
Показать
8. Teut_Vlad 180 27.01.20 13:30 Сейчас в теме
Так заработает?
Таб = Новый ТабличныйДокумент;
    
    ИмяФайлаОтчета = КаталогВременныхФайлов() + "Report_.tmp";
    Отчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию("2323332");
    
    ДвоичныеДанные = Отчет.ХранилищеВнешнейОбработки.Получить();
    ДвоичныеДанные.Записать(ИмяФайлаОтчета);
    
    
    НужныйОтчет    = ВнешниеОтчеты.Создать(ИмяФайлаОтчета, ложь);
    
    СхемаКомпоновкиДанных = НужныйОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");    
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; 
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Настройки = КомпоновщикНастроек.Настройки;
	//после восстановления настроек по умолчанию, ставим свои+
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаНачала", ДатаНачала);
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаОкончания", ДатаОкончания);
	//Закончили ставить параметры
Показать

Я так понимаю, ниже еще код сохранения в Excell
9. user1202776 27.01.20 13:34 Сейчас в теме
(8)Да, правильно понимаете
Выдает ошибку:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(3828)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаНачала", ДатаНачала);
по причине:
Параметр с указанным именем не найден
11. Teut_Vlad 180 27.01.20 13:36 Сейчас в теме
(9) как говорили учителя в школе, всё разжуй и положи в рот))
Что у вас в параметрах внешнего отчета?))
Какое имя у параметра с этим самым стандартным периодом
Прикрепленные файлы:
10. user1202776 27.01.20 13:36 Сейчас в теме
(8)
Прикрепленные файлы:
12. Teut_Vlad 180 27.01.20 13:44 Сейчас в теме
(10) а так?
Таб = Новый ТабличныйДокумент;
    
    ИмяФайлаОтчета = КаталогВременныхФайлов() + "Report_.tmp";
    Отчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию("2323332");
    
    ДвоичныеДанные = Отчет.ХранилищеВнешнейОбработки.Получить();
    ДвоичныеДанные.Записать(ИмяФайлаОтчета);
    
    
    НужныйОтчет    = ВнешниеОтчеты.Создать(ИмяФайлаОтчета, ложь);
    
    СхемаКомпоновкиДанных = НужныйОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");    
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; 
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Настройки = КомпоновщикНастроек.Настройки;
	//после восстановления настроек по умолчанию, ставим свои+
	ИдентификаторПользНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Периодичность")));
	ПараметрПользовНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ИдентификаторПользНастройки);
	ПараметрПользовНастройки.Использование = Истина;
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаНачала", ДатаНачала);
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаОкончания", ДатаОкончания);
	//Закончили ставить параметры
Показать
13. user1202776 27.01.20 14:03 Сейчас в теме
(12)КомпоновщикНастроек.ПользовательскиеНастройки.Элементы у меня пустой. Там ничего нету в отладчике. Поэтому ПараметрПользовНастройки= неопределенно
14. Teut_Vlad 180 27.01.20 14:18 Сейчас в теме
(13) ну допустим я скопировал с другого сайта и не заморачивался
    //после восстановления настроек по умолчанию, ставим свои+
	КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Периодичность")).Использование = Истина;
	
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаНачала", ДатаНачала);
    КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаОкончания", ДатаОкончания);
    //Закончили ставить параметры
16. user1202776 27.01.20 15:03 Сейчас в теме
(14)все равно выдает такую ошибку:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(3828)}: Ошибка при вызове метода контекста (УстановитьЗначениеПараметра)
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Периодичность.ДатаНачала", ДатаНачала);
по причине:
Параметр с указанным именем не найден

перепробовал все параметры
17. user1202776 27.01.20 15:10 Сейчас в теме
(14)
КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Периодичность")).Использование = Истина;
    
	
	КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[5].Значение.ДатаНачала=ДатаНачала;
	КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[5].Значение.ДатаОкончания=ДатаОкончания;

так получается установить параметры, но судя по-всему как-то неправильно так ставит период. Потому что ,когда в пользовательском режиме запускаю отчет, ставлю тот же период и отчет выводит корректные данные, а когда так программно делаю, присутствует погрешность.
18. Teut_Vlad 180 27.01.20 15:20 Сейчас в теме
(17)
присутствует погрешность.

попробуй
КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[5].Значение.ДатаОкончания= КонецДняя(ДатаОкончания);

Хотя не должно влиять для Стандартного периода
19. user1202776 27.01.20 15:21 Сейчас в теме
(18)так и делаю, все равно погрешность дает
20. Teut_Vlad 180 27.01.20 15:25 Сейчас в теме
(19) это единственный параметр в отчете?
21. user1202776 27.01.20 15:32 Сейчас в теме
(20)нет, всем параметрам присваиваю одно значение.концам периода-один конец периода, а началам периода- одно начало периода.
Прикрепленные файлы:
22. Teut_Vlad 180 27.01.20 16:00 Сейчас в теме
(21) почему не стоит на ограничение все параметрам с выражением Периодичность?
23. user1202776 27.01.20 16:18 Сейчас в теме
(22)поставил ограничение, все равно не корректные данные выдает
24. user1202776 27.01.20 18:05 Сейчас в теме
(22) вот так присваивается:
	ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Периодичность");
Если ПараметрДанных <> Неопределено Тогда
	ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
    Если ПараметрПользовательскойНастройки <> Неопределено Тогда
		ПараметрПользовательскойНастройки.Значение.ДатаНачала=НачалоДня(ТекущаяДата()-86400);
		ПараметрПользовательскойНастройки.Значение.ДатаОкончания=КонецДня(ТекущаяДата()-80000);
        КонецЕсли;
КонецЕсли;
/
Показать

но все равно почему-то с погрешностью показывает, может дело не в периоде
25. antz 27.01.20 19:38 Сейчас в теме
(24)

1. В запросе есть выборка из виртуальной таблицы регистра накопления?
2. В запросе есть параметры НачалоПериода и КонецПериода?
26. user1202776 27.01.20 19:44 Сейчас в теме
(25)да, в запросе есть выборка из виртуальной таблицы регистра накопления
нет, в запросе нет параметров НачалоПериода и КонецПериода
28. antz 27.01.20 22:32 Сейчас в теме
(26) Выражения для этих параметров надо очистить, тогда должно нормальные данные показать.
Прикрепленные файлы:
29. user1202776 27.01.20 22:33 Сейчас в теме
(28)я и без этих выражений пробовал.такие же данные выводит
27. user1202776 27.01.20 19:45 Сейчас в теме
(25)могу сам запрос скинуть, но запрос большой
15. user1202776 27.01.20 14:44 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)