Имя: Пароль:
1C
1С v8
Произвольный отчет. Параметр КонецПериода
0 dgamelya
 
26.11.12
09:51
Добрый день! Делаю произвольный отчет. Необходимо выбрать данный за период заданный пользователем и за этот же период но год назад. У меня два источника данных. Во втором выбираются данные которые были год назад

ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода,КВАРТАЛ),ГОД,-1),ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&КонецПериода,КВАРТАЛ),ГОД,-1), , , , {(Организация)}, , ) КАК ХозрасчетныйОбороты

Но при формировании отчета выходит ошибка Неверные параметры "КОНЕЦПЕРИОДА"
РегистрБухгалтерии.Хозрасчетный.Обороты(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, КВАРТАЛ), ГОД, -1), ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(<<?>>&КонецПериода, КВАРТАЛ), ГОД, -1), , , , Организация = &Параметр2, , ) КАК ХозрасчетныйОбороты

Получается не видит параметр КонецПериода, хотя если условия запроса написать так
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода,КВАРТАЛ),ГОД,-1),&КонецПериода, , , , {(Организация)}, , ) КАК ХозрасчетныйОбороты

то все нормально.
Но мне нужно чтобы дата была год назад от заданной. Подскажите пожалуйста в чем может быть проблема
1 НЕА123
 
26.11.12
10:10
КонецПериода - тип Дата?
2 dgamelya
 
26.11.12
10:11
Может кто знает как параметру запроса присвоить значение реквизита произвольного отчета. Думала может создать параметр свой ОкончаниеПериода и присвоить ему значение КонецПериода. Но не нашла где это можно сделать. Есть конечно возможность самим на форме отчета задавать значение ОкончаниеПериода, но это не совсем то
3 dgamelya
 
26.11.12
10:12
(1) Да, дата. Тип такой же как и &НачалоПериода
4 Trainee
 
26.11.12
10:16
Я не оч. понял, зачем так сложно: у тебя и первая и вторая дата - год назад? Почему бы не устанавливать их в параметрах?
5 dgamelya
 
26.11.12
10:19
(4) В смысле?чтобы пользователь сам устанавливал дату в параметрах?Это не совсем удобно, ему придется помимо текущей даты еще и дату прошлого года устанавливать
6 yurec_k
 
26.11.12
10:22
попробуй не использовать стандартные параметры,
типа:

....
РегистрНакопления.РасчетыСКлиентами.Обороты(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&КонецПериода1, МЕСЯЦ), ГОД, -1), ДОБАВИТЬКДАТЕ(&КонецПериода1, ГОД, -1), Регистратор, ) КАК РасчетыСКлиентамиОбороты
.....
7 programmer1c_
63
 
26.11.12
10:23
(5) вариант № 1 - передавать в параметры &НачалопериодаПрошлогоГода, &КонецПериодаПрошлогоГода

Запрос.УстановитьПараметр("НачалоПериодаПрошлогоГода", ДОБАВИТЬМЕСЯЦ(НачалоПериода, -12));

Запрос.УстановитьПараметр("КонецПериодаПрошлогоГода", ДОБАВИТЬМЕСЯЦ(КонецПериода, -12));

вариант № 2 - поменять местами -  к примеру вот так

КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&КонецПериода, ГОД, -1), КВАРТАЛ)
8 Trainee
 
26.11.12
10:24
(5) В смысле, если твой пользователь устанвливает только 1 дату, то сделай НачалоПериода() и КонецПериода() в параметрах привязав их к вводимой дате.
(6) +1
9 dgamelya
 
26.11.12
10:37
(7) вариант 2 такая же ошибка.
Просто не хотелось лезть в конфигуратор и добавлять там параметры, думала как то можно будет обойтись без этого
Спасибо за советы!))
10 dgamelya
 
26.11.12
10:43
Хотя нашла что есть уже такой параметр КонецПериодаПрошлый.
Так что не нужно ничего добавлять!Еще раз огромное спасибо!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан