Проблемы с подсчётом даты
08.07.2011
12:19
#1
"добрый день
Проблема с датой, когда ввожу новый документ почему-то модуль к ДатаОтключенияСтарая не хочет прибавлять Дата((ДатаОплаты+(30*Месяцы))) он её вычитает, в чём может быть дело?
перем ДатаОтключенияСтарая;
Процедура ОбработкаПроведения()
СпрАбон=СоздатьОбъект("Справочник.Абоненты");
Пока ПолучитьСтроку()=1 Цикл
СпрАбон.ВыбратьЭлементы();
Пока СпрАбон.ПолучитьЭлемент(НомерКарты)=1 цикл
Если СпрАбон.НомерКарты=НомерКарты тогда
СпрАбон.ДатаОплаты.Установить(ТекущаяДата(),ДатаОплаты);
ДатаОтключенияСтарая=СпрАбон.ДатаОтключения;
СпрАбон.ДатаОтключения.Установить(ТекущаяДата(),(Дата(ДатаОтключенияСтарая)+Дата((ДатаОплаты+(30*Месяцы)))));
СпрАбон.Записать();
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры"
Проблема с датой, когда ввожу новый документ почему-то модуль к ДатаОтключенияСтарая не хочет прибавлять Дата((ДатаОплаты+(30*Месяцы))) он её вычитает, в чём может быть дело?
перем ДатаОтключенияСтарая;
Процедура ОбработкаПроведения()
СпрАбон=СоздатьОбъект("Справочник.Абоненты");
Пока ПолучитьСтроку()=1 Цикл
СпрАбон.ВыбратьЭлементы();
Пока СпрАбон.ПолучитьЭлемент(НомерКарты)=1 цикл
Если СпрАбон.НомерКарты=НомерКарты тогда
СпрАбон.ДатаОплаты.Установить(ТекущаяДата(),ДатаОплаты);
ДатаОтключенияСтарая=СпрАбон.ДатаОтключения;
СпрАбон.ДатаОтключения.Установить(ТекущаяДата(),(Дата(ДатаОтключенияСтарая)+Дата((ДатаОплаты+(30*Месяцы)))));
СпрАбон.Записать();
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры"
08.07.2011
16:37
#3
Спасибо, буду искать выход. Может быть попробую Дату в Числовой формат перевести.
11.07.2011
09:04
#7
чего хочу добиться: человек платит абонентскую плату за определённое косичество дней, пусть их будет 30, заплотил допустим 25.06.11, значит услуга у него отключится 27.07.11, но при этом у него расчётный период предыдущего месяца был такой 01.06.11 по 30.06.11. Получаеться что к 27.07.11 дано прибавить ещё 5 дней услуги за 6 месяц и датой отключения услуги будет, 01.08.11. Что подскажите?
14.07.2011
15:12
#9
">(Дата(ДатаОтключенияСтарая)+Дата((ДатаОплаты+(30*Месяцы)))
вобще что это получится "дата + дата"?
>СпрАбон.ДатаОтключения.Установить(ТекущаяДата(),(Дата(ДатаОтключенияСтарая)+Дата((ДатаОплаты+(30*Месяцы)))));
Если "человек платит абонентскую плату за определённое косичество дней, пусть их будет 30", то зачем умножать 30 на какие-то месяцы.
>заплотил допустим 25.06.11, значит услуга у него отключится 27.07.11, но при этом у него расчётный период предыдущего месяца был такой 01.06.11 по 30.06.11. Получаеться что к 27.07.11 дано прибавить ещё 5 дней услуги за 6 месяц и датой отключения услуги будет, 01.08.11.
Зачем прибавлять 30 к дате оплаты, потом смотреть конец предыдущего периода, потом вычислять разницу (5 дней) и опять ее прибавлять?
Нельзя сразу прибавить 30 к ДатаОтключенияСтарая?
Т.е. новая дата отключения:
СпрАбон.ДатаОтключения.Установить(ТекущаяДата(),ДатаОтключенияСтарая+30);
>Пока ПолучитьСтроку()=1 Цикл
> СпрАбон.ВыбратьЭлементы();
Зачем по каждой строке документа перебирать весь справочник для того чтобы найти элемент с номером карты.
"НайтиПоРеквизиту" не катит?
>СпрАбон.ПолучитьЭлемент(НомерКарты)
это что за параметр? На этом месте должен быть "Режим поиска" (с учетом/без учета иерархии), причем здесь номер карты?."
вобще что это получится "дата + дата"?
>СпрАбон.ДатаОтключения.Установить(ТекущаяДата(),(Дата(ДатаОтключенияСтарая)+Дата((ДатаОплаты+(30*Месяцы)))));
Если "человек платит абонентскую плату за определённое косичество дней, пусть их будет 30", то зачем умножать 30 на какие-то месяцы.
>заплотил допустим 25.06.11, значит услуга у него отключится 27.07.11, но при этом у него расчётный период предыдущего месяца был такой 01.06.11 по 30.06.11. Получаеться что к 27.07.11 дано прибавить ещё 5 дней услуги за 6 месяц и датой отключения услуги будет, 01.08.11.
Зачем прибавлять 30 к дате оплаты, потом смотреть конец предыдущего периода, потом вычислять разницу (5 дней) и опять ее прибавлять?
Нельзя сразу прибавить 30 к ДатаОтключенияСтарая?
Т.е. новая дата отключения:
СпрАбон.ДатаОтключения.Установить(ТекущаяДата(),ДатаОтключенияСтарая+30);
>Пока ПолучитьСтроку()=1 Цикл
> СпрАбон.ВыбратьЭлементы();
Зачем по каждой строке документа перебирать весь справочник для того чтобы найти элемент с номером карты.
"НайтиПоРеквизиту" не катит?
>СпрАбон.ПолучитьЭлемент(НомерКарты)
это что за параметр? На этом месте должен быть "Режим поиска" (с учетом/без учета иерархии), причем здесь номер карты?."
Читают тему
(гостей: 1)