Откуда 1С берёт время в новом документе и как задать своё

· 10 мин

Содержание

Отдельной галочки «время документа по умолчанию» в типовых конфигурациях 1С 8.3 нет. Новый документ получает текущие дату и время сеанса, а сдвинуть их можно тремя способами: задать часовой пояс программы в Администрирование → Общие настройки, поправить время вручную в поле даты документа или установить время программно — кодом в модуле объекта, лучше через расширение конфигурации .

Частое заблуждение — что время в документе ничего не значит и достаточно даты. На деле время задаёт порядок документов внутри дня. От него зависит, спишется ли товар, который «пришёл» в 10:00, если реализация пробита в 09:58. Поэтому настройку времени проведения документа стоит делать осознанно, а не «чтобы было красиво».

Как 1С определяет дату и время документа

У каждого документа есть стандартный реквизит Дата. Тип у него «Дата» с составом «Дата и время», то есть время хранится всегда, даже если форма его не показывает.

Откуда берётся значение:

  • 🕐 Новый документ из формы. Типовые конфигурации при создании подставляют текущую дату сеанса — функцию ТекущаяДатаСеанса().
  • 💾 Пустая дата при записи. Если документ записали с незаполненной датой, платформа сама подставит текущую дату и время.
  • 📄 Копирование. Копия обычно получает новую текущую дату, а не дату исходного документа. Это поведение задаёт конфигурация, поэтому после копирования проверяйте поле «от».
  • 🔄 Загрузка через обмен. Дата и время приходят из источника как есть.

Почему время важнее, чем кажется

Документы в регистрах упорядочены по моменту времени: это дата и время документа плюс сама ссылка на него. Два документа с одинаковой датой и одинаковым временем выстроятся между собой в порядке, который вы не контролируете.

Где это всплывает на практике:

  • 📦 списание партий и контроль остатков — расход раньше прихода даёт отрицательный остаток;
  • 💰 взаиморасчёты — оплата раньше реализации превращается в аванс;
  • 📊 отчёты на момент времени — документ в 23:59:59 и в 00:00:00 попадают в разные дни.

ТекущаяДата и ТекущаяДатаСеанса — в чём разница

ФункцияЧто возвращаетГде опасна
ТекущаяДата()время компьютера, на котором выполняется код: на клиенте — ПК пользователя, на сервере — сервера 1Сна клиенте: у каждого пользователя свои часы
ТекущаяДатаСеанса()время с учётом часового пояса сеансаошибается, только если неверно задан сам пояс

Для заполнения даты документа используйте ТекущаяДатаСеанса(). Типовые конфигурации делают именно так.

Часовой пояс программы: если время уходит от серверного

Классическая жалоба: «На часах 10:15, а в документе 07:15». Обычно это не сбой, а разница часовых поясов. Сервер 1С стоит в одном поясе (часто в дата-центре по московскому времени или по UTC), а бухгалтерия работает в другом.

Настройка через параметры программы

В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) часовой пояс задаётся так:

  1. Откройте Администрирование → Общие настройки.
  2. Найдите поле «Часовой пояс» в группе параметров программы.
  3. Выберите пояс, по которому работает организация, например «Екатеринбург, UTC+5».
  4. Сохраните и перезапустите сеансы, чтобы новое время подтянулось у всех.

После этого ТекущаяДатаСеанса() возвращает время выбранного пояса, и новые документы получают «правильные» часы.

Смена часового пояса не трогает уже записанные документы. Сдвинется только время новых. Если вы поменяли пояс в середине дня, в списке может появиться «прыжок» на несколько часов — проверьте порядок прихода и расхода за этот день.

Когда пояс не спасает

  • 🌍 Филиалы в разных поясах, одна база. Пояс программы один на всю базу. Разные пояса для разных пользователей стандартными средствами не настраиваются — нужен код, который вызывает УстановитьЧасовойПоясСеанса() при входе пользователя.
  • 🖥️ Файловая база. Сервера нет, время берётся с компьютера пользователя. Если у двух бухгалтеров по-разному идут часы, документы будут с разным временем. Лечится синхронизацией времени Windows, а не настройками 1С.
  • ☁️ Облако. В сервисах 1С:Фреш и у хостеров пояс обычно задаётся в той же форме общих настроек. Если поле недоступно — его заблокировал провайдер, пишите в поддержку.

Как вручную изменить время в документе

Поле «от» в шапке документа — это поле даты и времени. Время в нём правится как обычный текст.

  1. Откройте документ.
  2. Встаньте курсором в поле даты после числа.
  3. Сотрите часы и минуты и наберите нужные, например 09:00:00.
  4. Нажмите «Записать» или «Провести и закрыть».

Если форма показывает только дату без времени, значит, разработчик задал полю формат только даты. В типовых БП 3.0 и УТ 11 время в поле «от» видно. В доработанных базах формат меняют в форме документа через Конфигуратор или расширение.

Документ «задним числом»

При вводе документа прошлой датой платформа никак не подменяет время. Оно останется таким, какое вы ввели или какое досталось от текущей даты.

Ситуация: сегодня 14:30, вы вводите поступление за 3-е число. В документе будет 03.xx 14:30:00. Если реализация за то же 3-е проведена в 11:00, она окажется раньше прихода. Решение — поставить поступлению время, например, 09:00:00.

💡 Практичное правило для бухгалтерии: приходы вводить с ранним временем, расходы — с поздним. Тогда при вводе задним числом порядок в дне получится правильным почти автоматически.

Оперативное проведение и время

У документа в конфигурации есть свойство «Оперативное проведение». Если оно разрешено, документ текущего дня при проведении получает оперативный режим, и платформа ставит ему текущее время. Ручная правка часов у такого документа «сегодняшним днём» перезапишется.

В Бухгалтерии 3.0 для большинства документов оперативное проведение выключено, поэтому там введённое время сохраняется. Если вы видите, что время само меняется при проведении, — это первое, что стоит проверить в конфигурации.

Как задать время по умолчанию кодом

Когда нужно, чтобы все новые документы определённого вида получали фиксированное время — например, приходные документы 09:00, — это делается в модуле объекта документа. Правки в типовой конфигурации снимают её с поддержки, поэтому код лучше положить в расширение.

Обработчик в модуле объекта

Логика простая: если документ новый, а время в дате нулевое (ровно полночь), поставить заданный час.

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

	Если ОбменДанными.Загрузка Тогда
		Возврат; // при обмене дату не трогаем
	КонецЕсли;

	Если Не ЗначениеЗаполнено(Дата) Тогда
		Дата = ТекущаяДатаСеанса();
	КонецЕсли;

	Если ЭтоНовый() И Дата = НачалоДня(Дата) Тогда
		Дата = НачалоДня(Дата) + 9 * 3600; // 09:00:00
	КонецЕсли;

КонецПроцедуры

Расчёт: 9 часов × 3600 секунд = 32 400 секунд от начала дня, это ровно 09:00:00.

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

То же через расширение конфигурации

Расширение подключается без снятия типовой с поддержки и переживает обновления. Порядок:

  1. В Конфигураторе: Конфигурация → Расширения конфигурации, создайте новое расширение.
  2. Добавьте в него нужный документ: в дереве основной конфигурации правой кнопкой по документу → «Добавить в расширение».
  3. Откройте модуль объекта документа в расширении.
  4. Вставьте обработчик с аннотацией, которая выполнит ваш код после типового:
&После("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

	Если ОбменДанными.Загрузка Или Отказ Тогда
		Возврат;
	КонецЕсли;

	Если ЭтоНовый() И Дата = НачалоДня(Дата) Тогда
		Дата = НачалоДня(Дата) + 9 * 3600;
	КонецЕсли;

КонецПроцедуры
  1. Сохраните расширение и обновите конфигурацию базы данных. Затем перезапустите сеанс 1С:Предприятия.

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

Хотите, чтобы пользователь видел время сразу при открытии формы, а не только после записи? Тот же приём ставят в обработчик формы ПриСозданииНаСервере для нового объекта. Но запись в модуле объекта надёжнее: она сработает и при создании документа обработкой, и при вводе на основании.

Какой способ выбрать

СпособКогда подходитРиски
Часовой пояс программывремя сдвинуто на целые часы для всеходин пояс на базу
Ручная правкаединичные документы задним числомчеловеческий фактор
Код в типовом модулесвоя доработанная конфигурацияснятие с поддержки, сложнее обновляться
Расширениетиповая на поддержкепосле крупных обновлений проверять, что расширение применилось

Время документов в распределённой базе и при обменах

В РИБ (распределённой информационной базе) у каждого узла свои часы и, возможно, свой пояс. Документ, созданный в филиале в 10:00 по местному времени, придёт в центральную базу с этим же значением даты. Пересчёта по поясам платформа при обмене не делает.

Что из этого следует:

  • 🌐 Пояса узлов. Если узлы в разных поясах, договоритесь о едином времени учёта. Обычно это время головного офиса. Пояс программы на всех узлах ставьте одинаковым.
  • ⏱️ Совпадение моментов. Два узла могут создать документы с одинаковой датой до секунды. Порядок между ними определит ссылка, то есть случайно. Для складских документов это повод разносить время по правилу «приход раньше расхода».
  • 🔢 Нумерация. Для уникальности номеров в РИБ у узлов задают префиксы. На время это не влияет, но помогает быстро понять, из какого узла пришёл документ со «странным» временем.
  • 🚫 Код в обработчиках. Любая автоподстановка времени должна пропускать загрузку по обмену, как в примере выше. Иначе один и тот же документ в разных узлах получит разное время.

Если базы обмениваются через конвертацию данных (например, УТ → Бухгалтерия), время документа переносится так же, как есть. Сдвигать его в приёмнике правилами обмена без веской причины не стоит: сверка между базами усложнится.

Права доступа: кто может менять дату и время

Возможность менять время — это возможность менять дату документа. Ограничивают её на трёх уровнях.

Права на реквизит «Дата»

В роли конфигурации для каждого документа настраиваются права не только на объект, но и на отдельные реквизиты, в том числе стандартные. Если у роли снято право «Редактирование» реквизита Дата, пользователь увидит поле, но изменить его не сможет. Время в новом документе тогда будет только тем, что подставила программа.

В типовых конфигурациях отдельных ролей на это нет — настройку делают в своей роли, добавленной расширением или в доработанной конфигурации.

Проведение не текущим днём

Для документов с разрешённым оперативным проведением у платформы есть отдельное право «Интерактивное проведение неоперативное». Без него пользователь не проведёт документ прошлой датой из формы. Это способ запретить кладовщику «двигать» документы в прошлое, оставив проведение сегодняшним днём.

Даты запрета изменения

В конфигурациях на БСП есть механизм дат запрета изменения. Его включают и настраивают в разделе Администрирование — функция так и называется «Даты запрета изменения». После закрытия периода документы с датой раньше даты запрета не изменить, в том числе нельзя поменять в них время.

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

Частые ошибки со временем документов

Диагностика: выберите симптом

Ещё две ошибки, которые встречаются при массовой правке:

  • ❌ Сдвинули время у проведённых документов и не перепровели последующие. Остатки и партии считаются по старой последовательности. В Бухгалтерии после правки запустите перепроведение за период в обработке групповой перепроводки или повторите закрытие месяца.
  • ❌ Поставили всем документам одно и то же время. Например, 00:00:00 у всего дня. Порядок внутри дня стал случайным. Лучше разнести: приходы 09:00, перемещения 12:00, расходы 15:00.

Частые вопросы

Можно ли в 1С скрыть время и оставить только дату?
Да, это делается форматом поля в форме документа, через Конфигуратор или расширение. Само время в базе всё равно хранится.
Почему отчёт «на конец дня» не видит документ, проведённый в 23:59:59?
Видит, если граница отчёта стоит на конец дня. Если отчёт сформирован на дату без времени, граница — начало дня, и документы этого дня в него не попадут.
Влияет ли время документа на налоговый учёт?
Для налогов значим день, а не час. Время важно для внутренней последовательности учёта: остатков, партий, взаиморасчётов.
Меняется ли время документа при перепроведении?
Нет. Перепроведение не трогает дату и время, кроме случая оперативного проведения документа текущего дня.
Как узнать точное время документа в списке?
Добавьте или расширьте колонку «Дата» в списке через «Ещё → Изменить форму» или посмотрите поле «от» в самом документе.