Имя: Пароль:
1C
1С v8
Расскажите про ПолучитьОперативнуюОтметкуВремени
0 Mashinist
 
13.06.13
17:55
Кратко суть выглядит так
В базе похожей на Альфа-Авто периодически документы начинают проводится будущим временем
Т.е. как бы последовательность уходит вперед
Документ проводится оперативно по часам, скажем в 15:20, и после проведения получает время 17:30
Про сервер и время на локальном компе все проверили. Везде все хорошо.

Вариант, который двигает оперативную отметку это ПолучитьОперативнуюОтметкуВремени()
Т.е. если взять в цикле 600 раз  ПолучитьОперативнуюОтметкуВремени() и провести после этого документ, то он и уйдет в будущее на 10 мин

Нашел в конфе много, где встречающихся вызовов ПолучитьОперативнуюОтметкуВремени()... все еще не просмотрел, но многие вызывают удивление
например такое

КонецДня(ПолучитьОперативнуюОтметкуВремени())

Как по мне это равносильно такому

КонецДня(ТекущаяДата())

потому как в описании ПолучитьОперативнуюОтметкуВремени() написано
Возвращаемое значение соответствует текущей дате...

Более сложный момент

   Если Документ.ЭтоНовый() Тогда
       МоментВремени = ПолучитьОперативнуюОтметкуВремени();
   Иначе    
       МоментВремени = Документ.МоментВремени();          
   КонецЕсли;
   тз = ОстаткиБонусов.Остатки(МоментВремени,Фильтр,"Автомобиль,БонусныйТалон","СуммаБонусов");          

Ну т.е. если документ новый, то остатки мы получаем на оперативную отметку
Оно вроде как и ничего...
Пользователь создает документ и там что-то считается на ПолучитьОперативнуюОтметкуВремени. Может быть... потому как пока он нажмет проведение текущее время уже будет больше того, что получено и вроде все ОК
Но почему нельзя использовать тот же КонецДня?
1 dauster
 
13.06.13
18:20
я так понял, что рарус исправлял эту проблему у себя, путем переписывания модулей http://rarus.ru/forum/forum7/topic1121/

поэтому базу, похожую на Альфа-Авто - тоже, очевидно, нужно допилить, переписав блоки с вызовами ПолучитьОперативнуюОтметкуВремени().

В противном случае, время неизбежно будет убегать вперед, т.к. каждый вызов - это плюс 1 секунда.
2 Mashinist
 
13.06.13
18:34
(1) Спасибо! Очень в тему
3 EvgeniuXP
 
13.06.13
19:00
(0) а если перепроводишь документ и меняешь у него дату, тоже прибавлять/вычитать остатки? :)
4 EvgeniuXP
 
13.06.13
19:00
(3) в смысле, остатки текущего документа попадут в расчет остатков - а это не гуд.
5 EvgeniuXP
 
13.06.13
19:02
(4) еще точнее: остатки текущего прошлого проведенного документа. Или движения чистят? Тогда зачем движения на 15 часов, если документ на 13 часов проводится, или перепроводится.
6 Dethmont
 
13.06.13
22:17
(0) В каком событии\процедуре этот код?
7 Mashinist
 
14.06.13
01:55
(3) если ты про
тз = ОстаткиБонусов.Остатки(МоментВремени,Фильтр,"Автомобиль,БонусныйТалон","СуммаБонусов");          
То там четко видно, что ПолучитьОперативнуюОтметкуВремени(); только для нового. так что можно перепроводить и дату менять
конкретно этот код кажется в форме документа
уже и не помню...

КонецДня(ПолучитьОперативнуюОтметкуВремени()) все равно где. реально это просто двигает момент отметку и ничего полезного не делает
Рарус это все типа переписал...
И нам придется :-)
Просто удивился тупизне кода и подумал, что может я чего-то недопонимаю...
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс