| 
    
            
         
         | 
    
  | 
Расскажите про ПолучитьОперативнуюОтметкуВремени | ☑ | ||
|---|---|---|---|---|
| 
    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) если ты про 
  
        тз = ОстаткиБонусов.Остатки(МоментВремени,Фильтр,"Автомобиль,БонусныйТалон","СуммаБонусов"); То там четко видно, что ПолучитьОперативнуюОтметкуВремени(); только для нового. так что можно перепроводить и дату менять конкретно этот код кажется в форме документа уже и не помню... КонецДня(ПолучитьОперативнуюОтметкуВремени()) все равно где. реально это просто двигает момент отметку и ничего полезного не делает Рарус это все типа переписал... И нам придется :-) Просто удивился тупизне кода и подумал, что может я чего-то недопонимаю...  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |