Разработка и Конфигурация · 9 мин
Как в 1С установить время проведения документа по умолчанию
Как в 1С установить время проведения документа по умолчанию: настройки режима, функция ТекущаяДатаСеанса, код в модуле и типичные ошибки настройки.
Время проведения документа в 1С влияет на хронологию движений по регистрам, последовательность документов и корректность расчёта себестоимости. Если пользователь создаёт документ «задним числом», время по умолчанию может оказаться случайным или унаследованным от текущего момента, что ломает порядок проведения. Поэтому настройка времени по умолчанию — частая задача и у администраторов, и у разработчиков.
Единой кнопки «время по умолчанию» в интерфейсе нет: поведение определяется режимом работы конфигурации (обычное или управляемое приложение), настройками документа в конфигураторе и кодом в модуле объекта. Ниже разобраны основные способы — от пользовательских настроек до программного назначения времени.
Материал применим к типовым и самописным конфигурациям на платформе 1С:Предприятие 8.3. Конкретные названия пунктов меню могут немного отличаться в зависимости от конфигурации, но логика везде одинаковая.
Как платформа 1С назначает время документа
Дата документа в 1С хранит и день, и время с точностью до секунды. При создании нового документа платформа автоматически подставляет текущую дату и время сеанса — это значение функции ТекущаяДатаСеанса(). Если пользователь вручную меняет только календарную дату, время обычно сохраняется текущим либо сбрасывается в зависимости от настроек конфигурации.
Для пользователя время часто не видно: в форме документа отображается только дата. Но физически время записано в базе, и именно оно определяет позицию документа в последовательности и момент проведения. Увидеть время можно, если открыть поле даты на редактирование или посмотреть документ в списке с настроенным выводом времени.
Настройка времени в режиме обычного приложения
В старых конфигурациях на обычных формах (например, «1С:Управление торговлей 10.3», «Бухгалтерия 1.6») есть служебная настройка, влияющая на время новых документов. Она находится в меню Сервис → Параметры, где можно задать способ установки времени для документов, вводимых не текущей датой.
Доступные варианты обычно такие: устанавливать текущее время, устанавливать начало дня (00:00:00) или конец дня (23:59:59) для документов «задним числом». Выбор «конец дня» удобен тем, что документ автоматически оказывается последним за дату и не конфликтует с уже проведёнными документами того же дня.
- 1Откройте меню Сервис → Параметры
- 2Найдите группу настроек, связанную с датой и временем документов
- 3Выберите вариант времени для документов, вводимых не текущей датой (например, конец дня)
- 4Сохраните настройки и создайте тестовый документ вчерашней датой
- 5Проверьте, какое время подставила платформа
Поведение времени в управляемом приложении
В современных конфигурациях на управляемых формах («Бухгалтерия 3.0», «Управление торговлей 11», «ERP») отдельной пользовательской настройки времени по умолчанию, как правило, нет. Платформа подставляет текущее время сеанса, а логика для документов «задним числом» зашита в код конфигурации либо отсутствует.
В ряде типовых решений при изменении даты документа на прошедшую время автоматически устанавливается на конец дня — это реализовано в обработчике изменения даты в модуле формы или объекта. Если в вашей конфигурации такого поведения нет, его можно добавить доработкой.
Программная установка времени по умолчанию
Если требуется, чтобы документ при создании или при смене даты получал фиксированное время, это делается в модуле объекта документа. Самый надёжный способ — обработчик ОбработкаЗаполнения для новых документов и обработчик изменения даты для уже существующих.
Простейший пример: при заполнении нового документа установить конец текущего дня. Для приведения даты к нужному времени используются функции НачалоДня() и КонецДня().
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
// Время по умолчанию — конец текущего дня
Дата = КонецДня(ТекущаяДатаСеанса());
КонецПроцедурыДля документов «задним числом» логично ставить конец указанного дня, чтобы документ не оказывался раньше других документов той же даты. Это делается в обработчике изменения поля даты в модуле формы:
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Если НачалоДня(Объект.Дата) < НачалоДня(ТекущаяДата()) Тогда
Объект.Дата = КонецДня(Объект.Дата) - 1;
Иначе
Объект.Дата = ТекущаяДата();
КонецЕсли;
КонецПроцедурыОбратите внимание на конструкцию КонецДня(Объект.Дата) - 1: функция возвращает 23:59:59 указанного дня, и обычно вычитание секунды не обязательно — оно нужно лишь если логика конфигурации требует время строго внутри дня. Проверяйте поведение на тестовой базе.
Часы, минуты и точность: ограничения платформы
Дата в 1С хранится с точностью до секунды, миллисекунды не поддерживаются. Два документа с одинаковой датой и временем различаются внутренней ссылкой — платформа упорядочит их по моменту, но для пользователя порядок может выглядеть неочевидным.
Ещё одно ограничение: свойство «Момент времени» документа формируется платформой автоматически и напрямую не редактируется. Можно менять только дату (включая время) — момент пересчитается при записи и проведении.
Способы задать время по умолчанию
Подходит для обычного приложения, не требует доработок. Недоступно в управляемых формах большинства современных конфигураций.
Гибкий способ для любой конфигурации. Требует прав доступа к конфигуратору и снятия объекта с поддержки, что усложняет обновления.
Позволяет добавить обработчики без изменения типового кода. Подходит для типовых конфигураций на поддержке.
Как проверить, что время установлено правильно
После настройки создайте тестовый документ вчерашней датой, проведите его и откройте движения по регистрам. Документ должен располагаться в хронологии там, где ожидалось — например, после всех документов того же дня при установке конца дня.
Дополнительно проверьте отчёты, чувствительные к последовательности: партионный учёт, расчёт себестоимости, взаиморасчёты. Если документ встал «не туда», эти отчёты покажут неверные остатки или пересортицу.
Как проверить результат
Подставляется заданное по умолчанию время
Время случайное или всегда 00:00:00
Встаёт в конец указанного дня
Пересекается по времени с другими документами дня
Движения формируются в правильной хронологии
Ошибки восстановления последовательности
Типичные ошибки и риски
Самая частая ошибка — изменение даты документа вручную без учёта времени: пользователь ставит прошлую дату, а время остаётся текущим, и документ «выпадает» из последовательности. Вторая типичная проблема — доработка типовой конфигурации напрямую вместо расширения, из-за чего при обновлении изменения теряются.
Критический риск — массовое перепроведение документов после изменения времени. Если поменять время у уже проведённых документов в рабочей базе, нарушится последовательность, и потребуется её восстановление. Все эксперименты выполняйте на копии базы.
FAQ
Что важно запомнить
Время по умолчанию в 1С задаётся либо настройкой в обычном приложении, либо кодом через свойство Дата с функциями НачалоДня и КонецДня. Для документов задним числом безопаснее ставить конец дня, а все изменения проверять на копии базы.
Почему у нового документа время всегда текущее?
Потому что платформа при создании документа подставляет значение текущей даты сеанса, включающее время. Чтобы изменить это поведение, нужна настройка в обычном приложении или программная установка даты в обработчике заполнения.
Как сделать, чтобы документ задним числом всегда был последним за день?
Установите время на конец дня: в коде это функция КонецДня(Дата), в обычном приложении — соответствующий вариант в настройках параметров. Тогда документ окажется позже всех документов той же даты.
Видно ли время документа пользователю?
В большинстве форм отображается только дата, но время хранится в базе и влияет на проведение. Увидеть его можно, открыв поле даты на редактирование или настроив вывод времени в списке документов.
Можно ли задать время по умолчанию без программирования?
Только в конфигурациях на обычных формах через меню Сервис → Параметры. В управляемом приложении типовой настройки обычно нет, и без доработки или расширения поведение изменить нельзя.
Что будет, если изменить время у уже проведённого документа?
Изменится момент документа, и он может сместиться в хронологии. Это нарушает последовательность проведения, поэтому после такого изменения потребуется её восстановление и, возможно, пересчёт итогов по регистрам.
Чем ТекущаяДата() отличается от ТекущаяДатаСеанса()?
ТекущаяДата() на клиенте возвращает время компьютера пользователя, а ТекущаяДатаСеанса() — время сеанса с учётом сервера и часового пояса. Для установки дат документов корректнее использовать ТекущаяДатаСеанса(), чтобы избежать расхождений между пользователями.