Быстрый старт · 10 мин
Как вставить текущую дату в 1С
Способы вставить текущую дату в 1С: горячие клавиши, функция ТекущаяДата(), установка даты документа, отличия серверной и клиентской даты, типичные ошибки.
Текущая дата в 1С вставляется несколькими способами в зависимости от задачи: горячими клавишами при ручном вводе, автоматически при создании документа или программно через встроенный язык. Большинству пользователей достаточно знать сочетание клавиш и принцип автозаполнения, а разработчикам — функции ТекущаяДата() и ТекущаяДатаСеанса().
Важно понимать, что платформа 1С различает дату компьютера пользователя, дату сервера и рабочую дату сеанса. Из-за этой разницы в документах иногда появляется «вчерашнее» или «завтрашнее» число, и пользователи ошибочно считают это сбоем программы.
Ниже разобраны все практические сценарии: ввод даты в поле, настройка автоматической подстановки, программное получение текущей даты, работа с датой документа и типичные ошибки с их решением.
Как ввести текущую дату в поле вручную
В любом поле ввода с типом «Дата» платформа поддерживает быстрый ввод без полного набора значения. Достаточно ввести день и месяц цифрами, например «1503», и нажать Enter — год подставится текущий. Если ввести только число дня, например «15», программа дополнит его текущим месяцем и годом.
Ещё один способ — календарь. Нажмите клавишу F4 или кнопку выбора справа от поля, откроется календарь, где текущее число уже подсвечено. Клик по нему вставляет сегодняшнюю дату. В тонком и веб-клиенте календарь выглядит иначе, чем в толстом клиенте, но логика та же.
Для сдвига даты на день вперёд или назад удобны клавиши «+» и «−» на цифровом блоке клавиатуры: курсор в поле даты, нажатие плюса увеличивает дату на один день. Это быстрее, чем набирать число заново, когда нужно провести пачку документов последовательными датами.
- 1Установите курсор в поле даты
- 2Введите день и месяц без разделителей, например 1503
- 3Нажмите Enter — год подставится автоматически
- 4Альтернатива: нажмите F4 и выберите подсвеченное сегодняшнее число в календаре
- 5Проверьте, что в поле отображается нужная дата полностью, включая год
Автоматическая установка текущей даты в новых документах
При создании нового документа 1С по умолчанию подставляет текущую дату и, как правило, текущее время. Это стандартное поведение большинства типовых конфигураций: «1С:Бухгалтерия», «Управление торговлей», «Зарплата и управление персоналом» и других. Пользователю не нужно ничего делать — дата уже заполнена.
Однако в типовых конфигурациях действует механизм «запоминания» даты: если вы вручную изменили дату документа, следующий новый документ может открыться с той же изменённой датой, а не с текущей. Это сделано намеренно — для удобного ввода документов задним числом серией. Чтобы вернуть текущую дату, откройте календарь в поле даты и выберите сегодняшнее число.
В ряде конфигураций поведение настраивается. Например, в «1С:Бухгалтерии» есть настройка, определяющая, подставлять ли текущую дату в новые документы или использовать дату последнего введённого. Ищите её в разделе персональных настроек пользователя — точное расположение зависит от версии конфигурации.
Рабочая дата сеанса и почему она отличается от календарной
В 1С существует понятие рабочей даты — даты, которая используется по умолчанию в сеансе работы. В файловых базах и при определённых настройках рабочая дата совпадает с системной датой компьютера, но администратор может зафиксировать её на конкретном числе. Тогда все новые документы будут создаваться именно с этой датой.
Проверить и изменить рабочую дату можно через меню «Сервис» или «Администрирование» — пункт «Параметры» либо «Рабочая дата», в зависимости от интерфейса и конфигурации. Изменение действует только на текущий сеанс пользователя.
Если бухгалтер жалуется, что «программа ставит неправильную дату», в первую очередь проверьте три вещи: системную дату и часовой пояс на компьютере, рабочую дату в параметрах 1С и настройку подстановки даты в конфигурации. Проблема практически всегда находится в одном из этих трёх мест.
Как выбрать действие
Текущая дата в программном коде
Разработчики получают текущую дату встроенными функциями. Основные две — ТекущаяДата() и ТекущаяДатаСеанса(). Первая доступна и на клиенте, и на сервере, но на клиенте возвращает дату компьютера пользователя, которую тот может изменить вручную. Вторая всегда возвращает дату сервера 1С и потому надёжнее для учётных операций.
Типовой пример — установка даты нового объекта или заполнение реквизита:
// На сервере — предпочтительный вариант
ДокументОбъект.Дата = ТекущаяДатаСеанса();
// На клиенте — только для интерфейсных задач
Элементы.ДатаПланирования.ТекстРедактирования = Формат(ТекущаяДата(), "ДЛФ=D");
Для получения начала или конца текущего дня используются функции НачалоДня() и КонецДня(): НачалоДня(ТекущаяДатаСеанса()) вернёт сегодняшнюю дату с временем 00:00:00. Это стандартный способ строить отборы «за сегодня» в запросах и динамических списках.
В запросах вместо функций кода применяется параметр, передаваемый из программы, либо функция языка запросов для текущей даты не предусмотрена — дату всегда передают через параметр:
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Запрос.Текст = "ВЫБРАТЬ * ИЗ Документ.Реализация ГДЕ Дата >= &ТекущаяДата";
ТекДата = ТекущаяДатаСеанса();
НачалоСегодня = НачалоДня(ТекДата);
КонецСегодня = КонецДня(ТекДата);Отличия ТекущаяДата() и ТекущаяДатаСеанса(): что выбрать
Выбор функции влияет на корректность учётных данных, особенно в распределённых системах, где пользователи работают в разных часовых поясах или на компьютерах с неточными часами.
| Критерий | ТекущаяДата() | ТекущаяДатаСеанса() |
|---|---|---|
| Источник даты | Часы того места, где выполняется код | Часы сервера 1С |
| Доступность | Клиент и сервер | Только сервер |
| Защита от подмены | Нет, зависит от настроек ПК пользователя | Да, контролируется администратором |
| Типичное применение | Интерфейсные подсказки, черновые расчёты | Даты документов, проведение, регистры |
Правило простое: всё, что попадает в учётные данные, должно опираться на ТекущаяДатаСеанса(). ТекущаяДата() на клиенте допустима только для отображения подсказок в интерфейсе, где неточность не влияет на данные.
Проверка результата и ограничения
После вставки даты вручную убедитесь, что поле содержит полное значение: день, месяц и год. Быстрый ввод «1503» при нестандартных региональных настройках компьютера теоретически может интерпретироваться иначе, поэтому визуальная проверка обязательна, особенно при вводе документов на стыке месяцев.
При программной установке даты проверяйте результат в пользовательском режиме, а не только в отладчике: поведение может отличаться из-за рабочей даты сеанса и прав пользователя. Также помните, что у документов дата связана с нумерацией — изменение даты проведённого документа на другой период может потребовать перенумерации.
Ограничение, о котором часто забывают: запрет изменения данных (дата запрета редактирования) блокирует запись документов прошлыми датами. Если документ не сохраняется с выбранной датой и появляется сообщение о запрете, дело не в способе вставки даты, а в закрытом периоде — обратитесь к администратору или главному бухгалтеру.
Как проверить результат
Отображается полная дата с текущим годом
Год прошлый или будущий, дата не соответствует ожиданию
Подставляется сегодняшнее число
Подставляется дата последнего вручную введённого документа
Соответствует серверному времени
Совпадает с временем клиентского ПК при сбитых часах
Частые вопросы
Какой горячей клавишей вставить текущую дату в 1С?
Отдельной клавиши «вставить сегодня» нет. Используйте F4 для открытия календаря, где текущее число уже выделено, или введите день и месяц цифрами — год программа допишет сама. Клавиши «+» и «−» сдвигают дату по дням.
Почему документ создаётся не с сегодняшней датой?
Чаще всего срабатывает механизм запоминания: вы ранее вручную меняли дату, и программа подставляет её в новые документы. Реже причина в зафиксированной рабочей дате сеанса или неверной системной дате компьютера.
Чем ТекущаяДата() отличается от ТекущаяДатаСеанса()?
ТекущаяДата() берёт время того компьютера, где выполняется код, и доступна везде. ТекущаяДатаСеанса() берёт время сервера, работает только на сервере и защищена от подмены пользователем. Для учётных данных правильнее второй вариант.
Как получить в коде только сегодняшнее число без времени?
Используйте НачалоДня(ТекущаяДатаСеанса()) — это даст сегодняшнюю дату с нулевым временем. Для отображения без времени в интерфейсе примените Формат() с параметром ДЛФ=D.
Можно ли запретить пользователям менять дату документов?
Прямой настройки «запретить менять дату» в типовых конфигурациях обычно нет, но действует дата запрета редактирования, закрывающая прошлые периоды. Полное ограничение реализуется доработкой: проверкой в обработчике ПередЗаписью.
Почему в веб-клиенте дата отличается от даты в тонком клиенте?
Веб-клиент опирается на часовой пояс и настройки браузера и сервера, которые могут отличаться от локальных. Проверьте часовой пояс сеанса в параметрах информационной базы и настройки сервера.
Что важно запомнить
В поле даты текущее число вставляется быстрым вводом дня и месяца или через календарь по F4; новые документы заполняются текущей датой автоматически. В коде для учётных данных используйте ТекущаяДатаСеанса() на сервере, а ТекущаяДата() на клиенте оставьте для интерфейсных задач. Если дата «не та», проверяйте рабочую дату сеанса, системные часы и настройку запоминания даты.