Имя: Пароль:
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
Хотя нашла что есть уже такой параметр КонецПериодаПрошлый.
Так что не нужно ничего добавлять!Еще раз огромное спасибо!