Имя: Пароль:
1C
1С v8
Выбор параметры даты в модуле отчета на СКД
0 amadeus2010
 
03.05.12
10:21
Доброе утро, имеется отчет на СКД, в форме отчета в процедуре УстановитьПараметрыПериода, имеются 4 параметра даты НачПериод,КонПериод, НачПериодапрошлыйгод и КонПериодапрошлыйгод.На форме отчета есть поле выбора даты НачПериода и КонПериода.При выборе даты в этих полях прошлый период должен рассчитываться как ДобавитьМесяц(КонПериода, -12). Но в результате при заполнении дат в Настройки пишется например следующее:
НачПериод 03.05.2012,а НачПериодпрошлый год 01.01.2011,хотя должно быть так 03.05.2011.Вот код процедуры

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

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

Процедура ВыбПериодНажатие(Элемент)
   НастройкаПериода = Новый НастройкаПериода;
   НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
   НастройкаПериода.РедактироватьКакИнтервал = Истина;
   НастройкаПериода.РедактироватьКакПериод = Истина;
   НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
   Если НастройкаПериода.Редактировать() Тогда
       НачПериода = НастройкаПериода.ПолучитьДатуНачала();
       КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
   КонецЕсли;
      УстановитьПараметрыПериода()
КонецПроцедуры
1 Cube
 
03.05.12
10:23
(0) Не надоело темы плодить? В одной всё написать нельзя что ли?
v8: как в СКД вычислить год назад от текущей даты
v8: как в СКД вычислить год назад от текущей даты
2 amadeus2010
 
03.05.12
10:27
просто возникают разные вопросы,пишу в одной теме, ответа нет,приходится заводить новые темы.А что по вопросу можно сделать
3 Cube
 
03.05.12
10:30
(2) У тебя один и тот же вопрос в трех разных темах, ващета...
А по сабжу: так если ты пишешь НачалоГода(ДобавитьМесяц(НачПериода, -12)), то как ты собираешься получить 03.05.2011, а не начало года? Что написал - то и получил.
4 amadeus2010
 
03.05.12
10:43
т.е вместо НачалоГода(ДобавитьМесяц(НачПериода, -12)) написать НачалоДня(ДобавитьМесяц(НачПериода, -12)); или просто параметр.значение=ДобавитьМесяц(НачПериода, -12) Верно мыслю?
5 Cube
 
03.05.12
10:45
(4) Проверить быстрее, чем пост на мисте написать...
6 amadeus2010
 
03.05.12
10:46
проверил отображает даты как надо,спасибо за совет
7 amadeus2010
 
04.05.12
16:51
Добрый вечер у меня по вопрос по поводу расчетов процентов по итогам в группе  в отчете СКД.В ресурсах есть поля которые рассчитывают процент продаж за период прошлого и текущего года. Если считать как ТоварПроцент=Товартекгод/Товарпрошлыйгод*100 то считает без проблем, по отдельности итоговые поля  также считаются нормально,но вот итоги по процентам дают неверный результат.
Сумма(Аквавитапрошлыйгод)-прописал в Ресурсы, а вот такая формула в Ресурсы

Выбор Когда  ЕстьNull(Аквавитатекгод,0)=0 И ЕстьNull(Аквавитапрошлыйгод,0)=0 тогда 100   Когда ЕстьNull(Аквавитапрошлыйгод,0)=0 тогда 100   Когда ЕстьNull(Аквавитатекгод,0)=0 Тогда 0 иначе (Аквавитатекгод/Аквавитапрошлыйгод)*100 конец считает процент неправильно.Добавлял Сумма(Выбор Когда....конец),тоже не считает правильно.
8 amadeus2010
 
04.05.12
16:53
т.е мне нужно чтобы считался результ по такой схеме
(ИтогТоварТекгод/ИтогТоварпрошлыйгод)*100
9 amadeus2010
 
04.05.12
17:21
нашел такое решение вопроса
Выбор Когда  ЕстьNull(сумма(Аквавитатекгод),0)=0 И ЕстьNull(сумма(Аквавитапрошлыйгод),0)=0 тогда 100   Когда ЕстьNull(сумма(Аквавитапрошлыйгод),0)=0 тогда 100   Когда ЕстьNull(сумма(Аквавитатекгод),0)=0 Тогда 0 иначе (сумма(Аквавитатекгод)/сумма(Аквавитапрошлыйгод))*100 конец
2 + 2 = 3.9999999999999999999999999999999...