Исправление ошибки функции ПолучитьВремяИзменения()

При работе с файлами и каталогами выяснилось, что функция ПолучитьВремяИзменения() некорректно возвращает время.

Пример:
    дата изменения файла — 2024-01-01 10:00:00
    функция возвращает дату — 2024-01-01 11:00:00
  
В синтаксис помощнике в примечание к функции написано:
    В режиме совместимости выдает местное время последней модификации файла с ошибкой NTFS. Если файл изменен летом, а просматривается зимой, то полученное время отстает на 1 час. Если файл изменен зимой, а просматривается летом, то полученное время опережает на 1 час. Если установлен режим совместимости Версия8_2_13 или выше, то время выдается без ошибки.
    
Для корректировки времени была написана функция ПолучитьСмещениеВремени().

Пример использования функции: 

 СмещениеВремени = ПолучитьСмещениеВремени();
ВремяИзменения = Файл.ПолучитьВремяИзменения() + СмещениеВремени;

Сама функция:

// Возвращает смещение времени из-за некорректной функции ПолучитьВремяИзменения()
// Часть примечание из описания функции:
//  В режиме совместимости выдает местное время последней модификации файла с ошибкой NTFS.
//  Если файл изменен летом, а просматривается зимой, то полученное время отстает на 1 час.
//  Если файл изменен зимой, а просматривается летом, то полученное время опережает на 1 час.
//
// Источник - //infostart.ru/public/323233/
// Автор - OtTech //infostart.ru/profile/492011/
//
// Возвращаемое значение:
// Число - Количество секунд смещения.
//
Функция ПолучитьСмещениеВремени()

ИмяФайла = ПолучитьИмяВременногоФайла();

ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Записать(ИмяФайла);

Файл = Новый Файл(ИмяФайла);

Разница = ОКР((ТекущаяДата() - Файл.ПолучитьВремяИзменения()) / 3600);

УдалитьФайлы(ИмяФайла);

Возврат Разница * 3600;

КонецФункции

 

После использования функции дата стала такой же, как и при просмотре свойств файла.

5 Comments

  1. jobkostya1c8

    Хорошо что Вы нашли ошибку в функции платформы ПолучитьВремяИзменения() и предложили способ исправления. Так ведь и будет тянуться ошибка у разработчиков платформы 1С 8.

    Reply
  2. WhiteOwl

    Вот из-за этой ошибки и не работает проверка отчетности ПФР программой CheckPFR из 1С.

    Reply
  3. OtTech

    Вот еще пример, где возникли проблемы из-за данной ошибки.

    Reply
  4. DrAku1a

    (1)

    Если установлен режим совместимости Версия8_2_13 или выше, то время выдается без ошибки.

    , да вроде как они уже исправили.

    Reply
  5. OtTech

    (4) DrAku1a, к сожалению это не так, стоит режим совместимости Версия 8.3.4 и данная ошибка у меня возникает

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *