Почему при перепроведении документа в 1С меняется его время и как это исправить

Системный администратор 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

В практике работы с программами 1С (особенно в версиях 7.7 и 8.x) часто встречается неприятная ситуация: при обычном перепроведении документа Поступление ТМЦ или Реализация его время автоматически смещается. Это приводит к нарушению логической последовательности: документ «улетает» вперед или назад по временной оси, из-за чего отчеты начинают показывать временные отрицательные остатки («красноту»). Особенно странно это выглядит, когда у администратора системы все работает корректно, а у рядовых менеджеров документы «прыгают».

В данной статье мы подробно разберем причины такого поведения системы и пошагово рассмотрим способы лечения этого «пациента».

Причина 1. Рассинхронизация времени в локальной сети

Проанализируем ситуацию, когда база данных работает в многопользовательском режиме. Если на компьютере менеджера время спешит или отстает даже на несколько минут относительно сервера или других рабочих станций, возникают коллизии. При записи документа система может пытаться синхронизировать время документа с текущим системным временем локальной машины.

Что необходимо сделать:

  1. Проверить настройки часовых поясов на всех рабочих станциях.
  2. Настроить синхронизацию времени всех компьютеров с контроллером домена или единым NTP-сервером.
  3. Убедиться, что время на сервере баз данных (SQL) и сервере приложений 1С совпадает до секунды.

Причина 2. Особенности оперативного учета и прав доступа

Выясним, почему проблема часто проявляется именно у менеджеров. В 1С существует разделение на оперативное и неоперативное проведение. Оперативное проведение всегда фиксирует документ текущим моментом времени (здесь и сейчас), чтобы контроль остатков происходил актуально. Неоперативное проведение (которое чаще доступно администраторам) позволяет записывать документ «задним числом» без изменения его позиции на оси времени.

Если у менеджера в настройках пользователя или в коде конфигурации жестко прописано «Использовать текущее время при проведении», то любой сегодняшний документ при перепроведении будет получать новую метку времени — ту самую секунду, когда была нажата кнопка «ОК».

Причина 3. Механизм «Автовремя» в платформе

Рассмотрим техническую сторону вопроса на уровне платформы. В свойствах документов существует механизм управления временем. Если для документа включен режим автоматического установления времени, система может вести себя следующим образом:

Если вы столкнулись со смещением, проверьте, как отрабатывает процедура ПриЗаписи() или подписки на события. Часто разработчики вставляют туда «костыли» для автоматического упорядочивания документов внутри дня.

Причина 4. Кэширование настроек сеанса

Посмотрим на ситуацию, когда настройки были изменены, но документ продолжает «прыгать». Настройки параметров пользователя (например, «Использовать текущее время») могут храниться в кэше сеанса или в локальных файлах профиля (AppData). Порой настройки просто не обновляются при активном сеансе пользователя.

Решение: Полностью завершите работу пользователя в 1С, удалите папку кэша и выполните повторный вход. Иногда помогает полное пересоздание учетной записи пользователя в справочнике «Пользователи» или в Конфигураторе.

Причина 5. Код в модулях и «нештатные» доработки

Проанализируем программный код. Если база не является типовой или в нее вносились изменения, возможно, логика сдвига времени зашита в программный код. Нам необходимо выполнить глобальный поиск по конфигурации. Ищем следующие методы и ключевые слова:

Пример кода, который может принудительно менять время (и который стоит проверить в модуле документа):


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
        ЭтотОбъект.Дата = ТекущаяДата(); // Вот здесь и происходит сдвиг
    КонецЕсли;
КонецПроцедуры

Причина 6. Восстановление последовательности и контроль остатков

Часто пользователи пытаются перепроводить документы, когда «тянут» последовательность (ГП — граница последовательности). Если в цепочке документов возникает затык (например, не хватает товара из-за того, что расход стоит раньше прихода), менеджер интуитивно пытается «передвинуть» документ. Если это происходит в автоматическом или полуавтоматическом режиме, система может сама корректировать время для соблюдения логики «Сначала приход — потом расход».

Разберем, как с этим бороться:

  1. Используйте тестирование и исправление базы данных (ТиИ). Часто ошибки в таблицах последовательностей и итогов приводят к некорректному позиционированию.
  2. Проверьте настройку «Разрешить отрицательные остатки» при проведении. Если она выключена, система будет блокировать проведение, а при включенном «Автовремени» может пытаться найти подходящую «дырку» в графике остатков.

Итоговый алгоритм решения проблемы

Для того чтобы окончательно «вылечить пациента», выполните следующие действия совместно с системным администратором:

  1. Синхронизируйте время: Выполните команду net time /set на проблемных машинах или настройте автоматическую синхронизацию в Windows.
  2. Проверьте константы: В меню «Сервис» — «Параметры» на закладке «Оперативный учет» посмотрите, какие настройки установлены у конкретного пользователя.
  3. Тестирование базы: Запустите Конфигуратор -> Администрирование -> Тестирование и исправление. Выберите пункты «Реиндексация таблиц» и «Пересчет итогов».
  4. Журнал регистрации: Отфильтруйте события по конкретному проблемному документу. Посмотрите, кто и каким методом (интерактивно или программно) изменял документ. Если время меняется в момент проведения — это работа алгоритмов 1С; если в момент записи — это настройки интерфейса или код в ПриЗапись().

Соблюдение этих рекомендаций позволит стабилизировать работу базы данных и избежать появления отрицательных остатков, вызванных хаотичным перемещением документов по временной оси.

← На главную