Имя: Пароль:
1C
1С v8
Период в отчете(СКД)
0 alluckard
 
15.03.12
16:56
Прошу с ходу не пинать.

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

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

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

З.Ы. Желательно подробнее, поэтапно, я только постигаю дзен 1С.
1 Alexey87
 
15.03.12
16:59
2 dangerouscoder
 
15.03.12
17:00
Давны давно находил на просторах пункта сайт про скд. Там был ман в котором все разжевано.
3 Rizhij_Nikitos
 
15.03.12
17:03
(0) правильно понял у тебя две границы(параметра) КонецПериода,НачалоПериода? КонецПериода по умолчанию был ТекущаяДата(), а НачалоПериода = КонецПериода -2 дня?
4 alluckard
 
15.03.12
17:24
Alexey87, данная книжка раскрыта передо мной, и если б она дала мне необходимую информацию, то я даже и не подумал сюда писать.
 dangerouscoder, где?
Или вы имеете ввиду 1cskd.ru, побывал и там.
  Rizhij_Nikitos, Да, именно две границы, и только одна доступна для пользователя(КонецПериода), и она должна быть равна текущей дате по умолчанию, при открытии формы отчета.
5 ботаникус
 
15.03.12
17:30
(0) по первому вопросу: в модуле формы отчета в процедуре ПослеЗагрузкичеготамНаСервере
установи нужные параметры через компоновщик настроек
6 alluckard
 
15.03.12
20:54
Уже вывел Даты в форму, прицепил их к отчету, но вот “достучаться” до необходимых мне значений у меня не получается.

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

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

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

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

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

Вот только эффекта должного не получил, и, как я понял, я пытаюсь передать значение(ТекущаяДата) в параметр, который в СКД характеризуется как “произвольная дата”, а не саму дату.
Что-то я попутал…
7 alluckard
 
16.03.12
12:56
up
8 teapot123
 
16.03.12
13:24
Начало, конец периода надо задать параметрами в запросе. При этом на вкладку СКД "параметры", они попадут автоматически.
Потом на вкладке "параметры" сделать начало недоступным для редактирования, конец - доступным
В коде (6) обращайся не к параметрам данных, а к пользовательским настройкам.
Начальный период можно рассчитать, например, в процедуре ОбработкаПроверкиЗаполнения.
Чтобы конечная дата не запоминалась, поставь на вкладке "настройки"->"параметры" значение для конца периода: "начало этого дня".

А вообще для пошаговых инструкций лучше найти соответствующую статью...
9 alluckard
 
16.03.12
14:37
В общем справился кое-как.
Авось кому понадобится.



&НаКлиенте
Процедура ПриОткрытии(Отказ)
   

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

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



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


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

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

ПараметрСКД2.Значение = Дата(ПараметрСКД.Значение) - (86400*2);
   
   
КонецПроцедуры
10 alluckard
 
16.03.12
14:41
Т.е. здесь мы, при открытии формы присваиваем даты КонецПериода(дату отчета) и НачалаПериода по умолчанию, в дальнейшем, при изменении даты КонецПериода меняется дата НачалоПериода, что даёт нам необходимый период отчета, те самые приславутые 2 дня.
11 bahus
 
16.03.12
14:45
Читать все лень
Там же все просто - делаешь в запросе один параметр - &ДатаНачала
В настройках комановки задаешь ему значение - Начало дня
В запросе вместо &ДатаОкончания пишешь ДОБАВИТЬКДАТЕ(&ДатаНачала, 2, ДЕНЬ)
12 bahus
 
16.03.12
14:48
+11 А, не правильно, надо конец дня же, нужно еще секунду вычесть.
13 alluckard
 
16.03.12
15:42
Вот проблема в том, что я не раз натыкался на функцию ДОБАВИТЬКДАТЕ, примеры её работы, но вот работать она у меня никак не хочет.
А  так же синтакс-помошник молчит о существовании данной функции.
Причины тому мне не известны!
хотя есть вариант: я делаю всё это в "1С:Предприятие 8.2, учебная версия (8.2.14.540)"

Может ограничения учебной версии так же коснулись и функционала.

И опять же, просто для кого?
Для меня сложно, ибо я только "открываю" для себя конфигурирование 1С.
14 Rizhij_Nikitos
 
17.03.12
18:33
в самой СКД, в последней вкладе там есть параметры где выбраныне поля и тд, вот там можно устаеновить значение периоду, текущая дата.