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

Отзывов (6)FavoriteLoadingВ закладки

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

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

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

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

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

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

6 Коммент.

  1. Я подобные вещи решаю так:
    1. На форму вывожу поле Даты
    2. Далее при открытии формы инициализирую его как мне нужно.
    3. При открытии формы и при изменении поля даты выполняю подобный код

    ПараметрДатаНач = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(“НачалоПериода”));
    ПараметрДатаНач.Значение = ЭлементыФормы.НачПериода.Значение;
    ПараметрДатаНач.Использование=Истина;

  2. NPL, а можно поподробнее?
    Уже вывел Даты в форму, прицепил их к отчету, но вот “достучаться” до необходимых мне значений у меня не получается.

    Вышеизложенный Вами код вызвал кучу возмущения у компилятора)

    Если не сложно, то мне конкретно нужно добиться того, чтоб:
    КонецПериода=ТекущаяДата();

    Опыта в этом вопросе 0.

    Сделал следующее:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

    Вот только эффекта должного не получил, и, как я понял, я пытаюсь передать значение(ТекущаяДата) в параметр, который в СКД характеризуется как “произвольная дата”, а не саму дату.
    Что-то я попутал…

  3. Итого, что я наработал по данному вопросу:

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

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

    Тут мы присваиваем даты при открытии формы, с точностью до секунды.
    А при изменении “даты отчёта”(КонецПериода) пересчитываем значение НачалоПериода отёта.

    Всё работает как надо(в пользовательском режиме), только при закрытии формы постоянно просит сохранить вариант отчёта, надо бы офрмить “отказ”)

    З.Ы. Надеюсь кому и пригодится.

  4. На форме 2 даты и два реквизита есть
    и кнопка для задания периода

    Процедура ДатаНачалаПриИзменении(Элемент) и к ДатаОкончания тоже относится

    ДатаНачала и ДатаОкончания

    Процедура ПриОткрытии()

    ДатаНачала=НачалоДня(ТекущаяДата());
    ДатаОкончания=КонецДня(ТекущаяДата());

    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“ДатаНачала”).Значение=ДатаНачала;
    КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(“ДатаОкончания”).Значение=ДатаОкончания;

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

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

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

  5. Я не использовал реквизиты в форме, я создал табличное поле в форме, и прикрепил его к параметрам отчёта.

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

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

Оставить комментарий

RSSКомментарии в RSS

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.