Задать свой период отчета в СКД

Прошу с ходу не пинать.

Задача: Создать отчет по регистру накопления за последние 2 дня.
Дата отчета(КонецПериода) должна ставится по умолчанию(ТекущаяДата) с возможностью для редактирования(Включить в пользовательские настройки)

Собственно проблемы:
1-Как сделать так, чтоб при открытии формы отчета, дата отчета(КонецПериода) ставилась по умолчанию, и не возвращалась с последнего открытия формы, при случае её редакции.
2-Как задать необходимый мне период?
По сути мне необходимо вычислить НачалоПериода, которое равно КонецПериода-2 дня. И, соответственно, чтоб НачалоПериода пересчитывалось при изменении даты отчета(КонецПериода).

Как мне все это организовать в СКД?

З.Ы. Желательно подробнее, поэтапно, я только постигаю дзен 1С.

Подписаться
Уведомить о
guest
6 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
NPL
NPL
11 лет назад

Я подобные вещи решаю так:
1. На форму вывожу поле Даты
2. Далее при открытии формы инициализирую его как мне нужно.
3. При открытии формы и при изменении поля даты выполняю подобный код
ПараметрДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(“НачалоПериода”));
ПараметрДатаНач.Значение = ЭлементыФормы.НачПериода.Значение;
ПараметрДатаНач.Использование=Истина;

allucard
allucard
11 лет назад

NPL, а можно поподробнее?
Уже вывел Даты в форму, прицепил их к отчету, но вот “достучаться” до необходимых мне значений у меня не получается.
Вышеизложенный Вами код вызвал кучу возмущения у компилятора)
Если не сложно, то мне конкретно нужно добиться того, чтоб:
КонецПериода=ТекущаяДата();
Опыта в этом вопросе 0.
Сделал следующее:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“КонецПериода”);
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = ТекущаяДата();
КонецПроцедуры
Вот только эффекта должного не получил, и, как я понял, я пытаюсь передать значение(ТекущаяДата) в параметр, который в СКД характеризуется как “произвольная дата”, а не саму дату.
Что-то я попутал…

allucard
allucard
11 лет назад

Итого, что я наработал по данному вопросу:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“КонецПериода”);
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = ТекущаяДата();
ПараметрСКД2 = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“НачалоПериода”);
ПараметрСКД2.Использование = Истина;
ПараметрСКД2.Значение = ТекущаяДата() – (86400*2);
КонецПроцедуры
&НаКлиенте
Процедура ТабличноеПолеПараметрыПриИзменении(Элемент)
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“КонецПериода”);
ПараметрСКД.Использование = Истина;
ПараметрСКД2 = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“НачалоПериода”);
ПараметрСКД2.Использование = Истина;
ПараметрСКД2.Значение = Дата(ПараметрСКД.Значение) – (86400*2);
КонецПроцедуры
Тут мы присваиваем даты при открытии формы, с точностью до секунды.
А при изменении “даты отчёта”(КонецПериода) пересчитываем значение НачалоПериода отёта.
Всё работает как надо(в пользовательском режиме), только при закрытии формы постоянно просит сохранить вариант отчёта, надо бы офрмить “отказ”)
З.Ы. Надеюсь кому и пригодится.

ser6702
ser6702
11 лет назад

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

allucard
allucard
11 лет назад

Я не использовал реквизиты в форме, я создал табличное поле в форме, и прикрепил его к параметрам отчёта.
Т.е. в общем, это второй вариант,
З.Ы. где ж Вы были, когда мне так нужна была помощь)))

NPL
NPL
11 лет назад

Второй вариант Да рабочий.
На практике приходится выводить в быстрый отбор только часть параметров и еще несколько полей отбора для удобства. Часть параметров надо заполнить программно без участия пользователя.
Объединить это в одну таблицу не получилось в свое время.