Имя: Пароль:
1C
1С v8
как в СКД вычислить год назад от текущей даты
0 amadeus2010
 
02.05.12
17:05
создал отчет на СКД,который сравнивает продажи менеджеров за период текущего и прошлого годов.Теперь при выборе пользователем периода необходимо сделать так чтобы при указании текущего года высчитывался прошлый год как ТекПериод,Год,-1.Пытался в параметрах СКД указать выражение &НачПериод-(365*24*60)ссылается на ошибку,иакже использовал ДОБАВИТЬКДАТЕ(&КонПериод, "ГОД",-1)отображает данные только за текущий год, а в прошлом нули стоят. Написал такой код:

Процедура УстановитьПараметрыПериода()

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

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

Процедура ВыбПериодНажатие(Элемент)
   НастройкаПериода = Новый НастройкаПериода;
   НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
   НастройкаПериода.РедактироватьКакИнтервал = Истина;
   НастройкаПериода.РедактироватьКакПериод = Истина;
   НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
   Если НастройкаПериода.Редактировать() Тогда
   КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
   КонецЕсли;
      УстановитьПараметрыПериода()
КонецПроцедуры

По всей видимости надо прописать формулу в одну из процедур только вот не знаю куда.Прошу помощи
1 Zolotko
 
02.05.12
17:08
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
   
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
   
   парам_ДатаНачала = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНач"));
   парам_ДатаНачала.Использование = Истина;
   парам_ДатаНачала.Значение = НачалоГода(ДобавитьМесяц(ТекущаяДата(), -12));
   
   парам_ДатаОкончания = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаКон"));
   парам_ДатаОкончания.Использование = Истина;
   парам_ДатаОкончания.Значение = Конецгода(ТекущаяДата());


при открытии формы отчета задать напрямую параметры
2 amadeus2010
 
02.05.12
17:10
при открытии формы отчета задать напрямую параметры-не совсем понял этот момент
3 amadeus2010
 
02.05.12
17:11
т.е в параметрах указать КонецПериода(&КонПериод, "День") и т.д по коду?
4 Fram
 
02.05.12
17:12
Ну почему при открытии?!.. При выборе пользователем параметра
5 amadeus2010
 
03.05.12
08:04
как я вас понял надо (1) поставить в процедуру ВЫбпериодНажатие?
6 amadeus2010
 
03.05.12
08:33
Сделал так


Процедура УстановитьПараметрыПериода()
   СхемаКомпоновкиДанных = ПолучитьМакет("СравнительныйАнализПродаж");
   
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
       
   
  Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый
  ПараметрКомпоновкиДанных("КонПериод"));;
  Параметр.Значение = НачалоДня(НачПериода);
  Параметр.Использование = Истина;
 
 
   
  Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый
  ПараметрКомпоновкиДанных("НачПериод"));;
  Параметр.Значение = НачалоДня(НачПериода);
  Параметр.Использование = Истина;
 
  Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый
  ПараметрКомпоновкиДанных("НачПериодпрошлыйгод"));;
  Параметр.Значение =НачалоГода(ДобавитьМесяц(ТекущаяДата(), -12));
  Параметр.Использование = Истина;
 
 
  Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый
  ПараметрКомпоновкиДанных("КонПериодпрошлыйгод"));;
  Параметр.Значение = НачалоГода(ДобавитьМесяц(ТекущаяДата(), -12));
  Параметр.Использование = Истина;
 

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

правильно ли это?