|
Период в отчете(СКД) | ☑ | ||
---|---|---|---|---|
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
|
в самой СКД, в последней вкладе там есть параметры где выбраныне поля и тд, вот там можно устаеновить значение периоду, текущая дата.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |