К статье
Практический материал

Быстрый старт · 10 мин

Как вставить текущую дату в 1С

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

Текущая дата в 1С вставляется несколькими способами в зависимости от задачи: горячими клавишами при ручном вводе, автоматически при создании документа или программно через встроенный язык. Большинству пользователей достаточно знать сочетание клавиш и принцип автозаполнения, а разработчикам — функции ТекущаяДата() и ТекущаяДатаСеанса().

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

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

Как ввести текущую дату в поле вручную

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

Ещё один способ — календарь. Нажмите клавишу F4 или кнопку выбора справа от поля, откроется календарь, где текущее число уже подсвечено. Клик по нему вставляет сегодняшнюю дату. В тонком и веб-клиенте календарь выглядит иначе, чем в толстом клиенте, но логика та же.

Для сдвига даты на день вперёд или назад удобны клавиши «+» и «−» на цифровом блоке клавиатуры: курсор в поле даты, нажатие плюса увеличивает дату на один день. Это быстрее, чем набирать число заново, когда нужно провести пачку документов последовательными датами.

Быстрый ввод текущей даты в поле
  1. 1
    Установите курсор в поле даты
  2. 2
    Введите день и месяц без разделителей, например 1503
  3. 3
    Нажмите Enter — год подставится автоматически
  4. 4
    Альтернатива: нажмите F4 и выберите подсвеченное сегодняшнее число в календаре
  5. 5
    Проверьте, что в поле отображается нужная дата полностью, включая год

Автоматическая установка текущей даты в новых документах

При создании нового документа 1С по умолчанию подставляет текущую дату и, как правило, текущее время. Это стандартное поведение большинства типовых конфигураций: «1С:Бухгалтерия», «Управление торговлей», «Зарплата и управление персоналом» и других. Пользователю не нужно ничего делать — дата уже заполнена.

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

В ряде конфигураций поведение настраивается. Например, в «1С:Бухгалтерии» есть настройка, определяющая, подставлять ли текущую дату в новые документы или использовать дату последнего введённого. Ищите её в разделе персональных настроек пользователя — точное расположение зависит от версии конфигурации.

Рабочая дата сеанса и почему она отличается от календарной

В 1С существует понятие рабочей даты — даты, которая используется по умолчанию в сеансе работы. В файловых базах и при определённых настройках рабочая дата совпадает с системной датой компьютера, но администратор может зафиксировать её на конкретном числе. Тогда все новые документы будут создаваться именно с этой датой.

Проверить и изменить рабочую дату можно через меню «Сервис» или «Администрирование» — пункт «Параметры» либо «Рабочая дата», в зависимости от интерфейса и конфигурации. Изменение действует только на текущий сеанс пользователя.

Если бухгалтер жалуется, что «программа ставит неправильную дату», в первую очередь проверьте три вещи: системную дату и часовой пояс на компьютере, рабочую дату в параметрах 1С и настройку подстановки даты в конфигурации. Проблема практически всегда находится в одном из этих трёх мест.

Маршрут решения

Как выбрать действие

Новые документы создаются с прошлой датой, которую вы вводили вручнуюОткройте календарь в поле даты и выберите сегодняшнее число — механизм запоминания сбросится
Все документы создаются с одной зафиксированной датойПроверьте рабочую дату в параметрах сеанса и верните использование системной даты
Дата на сервере отличается от даты на клиентеПроверьте системное время и часовые пояса на сервере и рабочих станциях, при необходимости привлеките администратора

Текущая дата в программном коде

Разработчики получают текущую дату встроенными функциями. Основные две — ТекущаяДата() и ТекущаяДатаСеанса(). Первая доступна и на клиенте, и на сервере, но на клиенте возвращает дату компьютера пользователя, которую тот может изменить вручную. Вторая всегда возвращает дату сервера 1С и потому надёжнее для учётных операций.

Типовой пример — установка даты нового объекта или заполнение реквизита:

// На сервере — предпочтительный вариант

ДокументОбъект.Дата = ТекущаяДатаСеанса();

// На клиенте — только для интерфейсных задач

Элементы.ДатаПланирования.ТекстРедактирования = Формат(ТекущаяДата(), "ДЛФ=D");

Для получения начала или конца текущего дня используются функции НачалоДня() и КонецДня(): НачалоДня(ТекущаяДатаСеанса()) вернёт сегодняшнюю дату с временем 00:00:00. Это стандартный способ строить отборы «за сегодня» в запросах и динамических списках.

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

Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());

Запрос.Текст = "ВЫБРАТЬ * ИЗ Документ.Реализация ГДЕ Дата >= &ТекущаяДата";

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

Отличия ТекущаяДата() и ТекущаяДатаСеанса(): что выбрать

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

КритерийТекущаяДата()ТекущаяДатаСеанса()
Источник датыЧасы того места, где выполняется кодЧасы сервера 1С
ДоступностьКлиент и серверТолько сервер
Защита от подменыНет, зависит от настроек ПК пользователяДа, контролируется администратором
Типичное применениеИнтерфейсные подсказки, черновые расчётыДаты документов, проведение, регистры

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

Типичные ошибки
01
Использовать ТекущаяДата() на клиенте для записи даты документа — пользователь с переведёнными часами внесёт неверные данные
02
Вызывать ТекущаяДатаСеанса() в клиентском контексте — получите ошибку компиляции, функция недоступна на клиенте
03
Сравнивать даты без приведения к началу дня — документ за 14:35 не попадёт в условие 'равно сегодня'
04
Передавать дату строкой в запрос вместо параметра — риск неоднозначного преобразования формата

Проверка результата и ограничения

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

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

Ограничение, о котором часто забывают: запрет изменения данных (дата запрета редактирования) блокирует запись документов прошлыми датами. Если документ не сохраняется с выбранной датой и появляется сообщение о запрете, дело не в способе вставки даты, а в закрытом периоде — обратитесь к администратору или главному бухгалтеру.

Контрольные точки

Как проверить результат

Дата в поле документа
Норма

Отображается полная дата с текущим годом

Тревожный признак

Год прошлый или будущий, дата не соответствует ожиданию

Дата нового документа при создании
Норма

Подставляется сегодняшнее число

Тревожный признак

Подставляется дата последнего вручную введённого документа

Дата, записанная программно
Норма

Соответствует серверному времени

Тревожный признак

Совпадает с временем клиентского ПК при сбитых часах

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

Какой горячей клавишей вставить текущую дату в 1С?

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

Почему документ создаётся не с сегодняшней датой?

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

Чем ТекущаяДата() отличается от ТекущаяДатаСеанса()?

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

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

Используйте НачалоДня(ТекущаяДатаСеанса()) — это даст сегодняшнюю дату с нулевым временем. Для отображения без времени в интерфейсе примените Формат() с параметром ДЛФ=D.

Можно ли запретить пользователям менять дату документов?

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

Почему в веб-клиенте дата отличается от даты в тонком клиенте?

Веб-клиент опирается на часовой пояс и настройки браузера и сервера, которые могут отличаться от локальных. Проверьте часовой пояс сеанса в параметрах информационной базы и настройки сервера.

Итог

Что важно запомнить

В поле даты текущее число вставляется быстрым вводом дня и месяца или через календарь по F4; новые документы заполняются текущей датой автоматически. В коде для учётных данных используйте ТекущаяДатаСеанса() на сервере, а ТекущаяДата() на клиенте оставьте для интерфейсных задач. Если дата «не та», проверяйте рабочую дату сеанса, системные часы и настройку запоминания даты.