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

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

В процессе администрирования конфигурации «Торговля + Склад» на платформе 1С 7.7 специалисты часто сталкиваются с ситуацией, когда Журнал регистрации показывает создание документа текущим числом, в то время как сам документ датирован прошлым периодом. Рассмотрим причины этого явления и проанализируем, может ли это быть техническим сбоем или же это результат действий пользователя.

Анализ механизмов платформы и исключение технических сбоев

Проанализируем ситуацию: в Журнале регистрации (системном файле, который фиксирует события) мы видим запись от 10.09.2010 о создании документа ПКО (Приходный кассовый ордер). Однако в журнале документов этот же ПКО значится под датой 01.09.2010. Нам необходимо выяснить, виновата ли в этом база данных.

Выясним причину: платформа 1С 7.7 устроена таким образом, что она самостоятельно не меняет дату документа (число, месяц, год). Система может автоматически изменять время документа при проведении (согласно настройкам оперативного учета, например, «заменять время на текущее при проведении после ТА»), но дата всегда инициируется либо пользователем, либо программным кодом. Таким образом, вариант «самопроизвольного сбоя» из-за отключения питания или «глюка» базы практически исключен. В 99,9% случаев мы имеем дело с действиями оператора, которые могут быть как осознанными, так и случайными.

Сценарий 1: Копирование документов (клавиша F9)

Разберем самый распространенный случай, который часто называют «машинальной ошибкой». В 1С 7.7 при копировании существующего документа (через меню или клавишей F9) новый документ по умолчанию наследует все реквизиты оригинала, включая дату.

Если оператор решил создать новый ПКО, взяв за образец документ от 01.09.2010, и нажал «Копировать», то в форме нового документа автоматически подставится дата 01.09.2010. Если пользователь просто нажмет кнопку «ОК» или «Провести», не посмотрев на дату, документ запишется задним числом. В Журнале регистрации это отразится как «Создание документа» сегодняшним днем, но сам реквизит ДатаДок будет содержать старое значение.

Сценарий 2: Настройка «Рабочей даты» в параметрах системы

Посмотрим на настройки интерфейса. В 1С 7.7 существует понятие «Рабочая дата». Если пройти по пути Сервис — Параметры — Общие, можно обнаружить поле установки рабочей даты. Рассмотрим, как это влияет на работу:

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

Важно помнить, что Журнал регистрации при этом все равно будет фиксировать реальное время записи файла на диск (10.09.2010), что и создает видимое противоречие.

Сценарий 3: Ручное изменение даты в форме или списке

Проанализируем интерфейсные возможности. В конфигурации «Торговля + Склад» поле даты в документе, как правило, доступно для редактирования. Оператор мог случайно:

Сценарий 4: Программные механизмы (Ввод на основании и ВводНового)

Иногда дата устанавливается программно. Разберем код в модуле формы документа. Даже если в процедурах ПриЗаписи() или ОбработкаПроведения() изменений нет, стоит заглянуть в процедуру ВводНового().

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


Процедура ВводНового(Копирование)
    Если Копирование = 1 Тогда
        // Здесь может быть логика, которая либо оставляет старую дату,
        // либо принудительно ставит текущую.
        // Если кода нет — дата остается от документа-образца.
    Иначе
        // Проверка на ввод на основании
        Если ПустоеЗначение(Основание) = 0 Тогда
            ДатаДок = Основание.ДатаДок; // Установка даты по документу-основанию
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Если ПКО вводился на основании Реализации, которая сама была создана задним числом, то и подчиненный документ может унаследовать эту «старую» дату.

Как ограничить возможность проведения задним числом

Чтобы исключить влияние человеческого фактора и предотвратить подобные «сбои», необходимо реализовать контроль прав доступа. В 1С 7.7 это делается следующим образом:

  1. Запрет редактирования периода: В настройках полномочий пользователя (в самой конфигурации «Торговля + Склад» это часто вынесено в отдельный справочник «Полномочия») можно установить запрет на редактирование документов в закрытом периоде.
  2. Проверка даты в модуле: Мы можем добавить проверку в процедуру ПриЗаписи(), которая будет сравнивать ДатаДок с текущей системной датой ТекущаяДата().

Рассмотрим пример реализации такой проверки:


Процедура ПриЗаписи()
    Если ДатаДок < ТекущаяДата() Тогда
        Если Найти(Врег(ИмяПользователя()), "АДМИНИСТРАТОР") = 0 Тогда
            Предупреждение("У вас нет прав на создание документов задним числом!");
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

Резюме

Подводя итог, можно утвердительно сказать: ситуация, описанная вами, является следствием **действий оператора**. Будь то случайное копирование старого документа или работа с измененной «Рабочей датой», платформа 1С 7.7 лишь добросовестно исполнила команду пользователя. Для решения проблемы рекомендуем провести инструктаж персонала и ограничить права на работу с документами вне текущей даты.

← На главную