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

В этой статье мы разберем все актуальные методы указания времени — от базового ручного ввода в документах до программного управления через встроенный язык. Особое внимание уделим типичным ошибкам, которые приводят к сбоям в отчетах или некорректной работе обработок. Например, почему при экспорте данных в Excel время может сдвигаться на несколько часов, или как избежать проблем с летним временем при интеграции с внешними системами.

Материал будет полезен как начинающим пользователям, которые впервые сталкиваются с необходимостью ввести время в 1С:ЗУП или 1С:ERP, так и опытным разработчикам, оптимизирующим обработки с временными данными. Все примеры актуальны для платформы 1С:Предприятие 8.3 (включая последние релизы 2026 года), но большинство методов применимы и к более ранним версиям.

1. Ручной ввод времени в документах и справочниках

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

Чтобы вручную указать время в документе:

  • 📝 Откройте нужный документ (например, Табель учета рабочего времени или Наряд на работу).
  • ⏰ Найдите поле с типом данных Время (обычно обозначается иконкой часов или подписью "Время начала/окончания").
  • 🖱️ Кликните по полю — откроется календарь с выбором даты и времени. Для точного ввода можно использовать формат ЧЧ:ММ:СС (например, 08:30:00).
  • ✅ Подтвердите ввод клавишей Enter или кликом по другому полю.

Важно учитывать формат отображения времени в настройках пользователя. Если в личном кабинете установлен формат 24-часовой, то ввод 8:30 PM (вечер) приведет к ошибке — нужно указывать 20:30. Проверить текущий формат можно в меню Сервис → Параметры → Форматы.

💡

Если поле времени неактивно, проверьте права доступа в ролях пользователя. Часто ограничения на редактирование временных данных устанавливаются для ролей "Кассир" или "Кладовщик".

⚠️ Внимание: При ручном вводе времени в документах 1С:Розница (например, в чеках или инвентаризациях) система может автоматически округлять секунды до нуля. Если требуется точность до секунды, используйте программный ввод или настройку параметров округления в конфигураторе.

2. Автоматическое заполнение времени текущим значением

В большинстве конфигураций время по умолчанию заполняется текущим значением с компьютера пользователя. Это удобно для документов, где фиксируется момент создания (например, Поступление товаров или Акт выполненных работ). Однако автоматическое заполнение можно и отключить, если требуется вводить время вручную.

Чтобы управлять автоматическим заполнением:

  1. Откройте документ в режиме 1С:Предприятие.
  2. Перейдите в меню Ещё → Изменить форму (или нажмите Shift+F2).
  3. Найдите поле с временем, кликните по нему правой кнопкой и выберите Свойства.
  4. Вкладка Данные → параметр Автозаполнение. Здесь можно выбрать:
    • 🔄 Текущая дата и время (заполняется автоматически при создании документа),
    • 📅 Текущая дата (только дата, время обнуляется),
    • Не заполнять (поле остается пустым).
  5. Для программистов: автоматическое заполнение времени настраивается в конфигураторе через свойство реквизита АвтоЗаполнение. Например, для поля ВремяСоздания в документе можно задать:

    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    

    Объект.ВремяСоздания = ТекущаяДатаВремя();

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

    📊 Как часто вы сталкиваетесь с необходимостью корректировать время в 1С?
    Ежедневно
    Несколько раз в неделю
    Редко
    Никогда

    3. Работа с временем в запросах и отчетах

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

    Основные функции для работы с временем в запросах:

    Функция Описание Пример использования
    ЧАС() Возвращает час из значения типа ДатаВремя ГДЕ ЧАС(Документ.Дата) = 14 (документы, созданные в 14:00)
    МИНУТА() Возвращает минуты ГДЕ МИНУТА(Документ.Время) BETWEEN 0 AND 30
    НАЧАЛОДНЯ() Обнуляет время (устанавливает 00:00:00) ГДЕ Документ.Дата >= НАЧАЛОДНЯ(&ДатаНачала)
    ДОБАВИТЬКДАТЕ() Сдвигает дату/время на заданный интервал ДОБАВИТЬКДАТЕ(Документ.Дата, ЧАС, 2) (прибавить 2 часа)

    Пример запроса для выборки документов, созданных в вечернее время (с 18:00 до 23:59):

    ВЫБРАТЬ
    

    Документ.Ссылка КАК Ссылка,

    Документ.Дата КАК ДатаСоздания

    ИЗ

    Документ.ПоступлениеТоваров КАК Документ

    ГДЕ

    ЧАС(Документ.Дата) >= 18

    ⚠️ Внимание: В запросах функция ТЕКУЩАЯДАТА() возвращает дату и время сервера 1С, а не клиентского компьютера. Если сервер находится в другом часовом поясе, это может привести к расхождениям в отчетах. Для корректной работы используйте ТЕКУЩАЯДАТАСЕАНСА() — она учитывает настройки сеанса пользователя.
    Почему в отчете время сдвинуто на 3 часа?

    Это типичная проблема при работе с серверами в разных часовых поясах. Например, если сервер 1С находится в Москве (UTC+3), а пользователь — в Екатеринбурге (UTC+5), то время в отчетах будет отставать на 2 часа. Решение: настройте параметр "Часовой пояс сеанса" в файле конфигурации 1cv8.1cd или используйте обработку для корректировки времени при выводе данных.

    4. Программное управление временем через встроенный язык

    Для автоматизации задач, связанных с временем, в используется встроенный язык программирования. С его помощью можно:

    • ⏱️ Устанавливать время в документах по заданным правилам (например, округление до ближайших 15 минут).
    • 🔄 Преобразовывать строковые значения в тип ДатаВремя и обратно.
    • 📊 Сравнивать временные интервалы для логики бизнес-процессов.

    Базовые операции с временем на языке :

    // Пример 1: Установка фиксированного времени
    

    ТекущийДокумент.ВремяНачала = ДатаВремя(2026, 5, 15, 9, 0, 0);

    // Пример 2: Преобразование строки в ДатаВремя

    ВремяИзСтроки = Время(СтрокаВремя); // Формат строки: "ЧЧ:ММ:СС"

    // Пример 3: Сравнение временных меток

    Если ТекущееВремя() > Время(18, 0, 0) Тогда

    Сообщить("Сейчас вечер!");

    КонецЕсли;

    Особое внимание уделите функции ТЗначениеВДатаВремя() — она позволяет преобразовать значение из внешних источников (например, JSON или XML) в тип ДатаВремя, учитывая формат исходных данных. Это актуально при интеграции с веб-сервисами или оборудованием (например, терминалами сбора данных).

    Использовать функцию ТипЗнч() для проверки типа|Учитывать настройки региональных стандартов|Обрабатывать исключения при некорректном формате|Тестировать код на граничных значениях (00:00:00, 23:59:59)

    -->

    5. Особенности работы с временем в типовых конфигурациях

    Каждая типовая конфигурация имеет свои нюансы работы с временными данными. Рассмотрим наиболее распространенные сценарии:

    1С:Зарплата и Управление Персоналом (ЗУП)

    Здесь время используется для:

    • 🕐 Учета рабочего времени в табеле (приход/уход сотрудников).
    • ⏳ Расчета переработок и ночных часов.
    • 📅 Планирования графиков работы.

    В документе Табель учета рабочего времени время указывается с точностью до минуты. Для массового заполнения можно использовать обработку Заполнить по графику, которая автоматически проставит время согласно утвержденному расписанию.

    1С:Управление торговлей (УТ)

    В торговле время критично для:

    • 🛒 Фиксации времени продажи в чеках (актуально для ЕГАИС).
    • 🚚 Отслеживания логистических операций (отгрузка, доставка).
    • 📈 Аналитики пиковых нагрузок на склады.

    В документе Реализация товаров время автоматически проставляется при проведении, но его можно корректировать вручную (например, если чек был пробит ретроактивно).

    1С:ERP Управление предприятием

    В ERP-системах время интегрировано с:

    • 🏭 Производственными процессами (время запуска/окончания операций).
    • 🔧 Ремонтными работами (учет простоев оборудования).
    • 📊 Бюджетированием (распределение затрат по временным периодам).
    ⚠️ Внимание: В 1С:ERP при работе с производственными заданиями время указывается с точностью до секунды, но в отчетах по умолчанию может округляться до минут. Чтобы избежать расхождений, настройте параметр ТочностьВремени в отчете Анализ выполнения производственных заданий.

    6. Типичные ошибки и их решения

    Ошибки при работе с временем в часто ведут к искажению данных в отчетах или сбоям в бизнес-процессах. Рассмотрим самые распространенные проблемы и способы их устранения:

    Ошибка Причина Решение
    Время в отчете сдвинуто на 3–4 часа Разница часовых поясов между сервером и клиентом Настроить параметр ЧасовойПоясСеанса в конфигурации или использовать ТЕКУЩАЯДАТАСЕАНСА()
    Невозможно ввести время в документ Поле заблокировано настройками ролей или бизнес-процессов Проверить права пользователя или логику модуля документа
    При экспорте в Excel время отображается как дата (например, "01.01.1900") Excel интерпретирует время как количество дней с 1900 года Использовать формат ячейки Время или экспортировать через ЗначениеВСтрокуВнутр()
    Время округляется до часов (минуты сбрасываются в 00) Настройка округления в параметрах отчета или документа Отключить округление в свойствах поля или использовать программный ввод

    Критическая ошибка: при обмене данными с внешними системами (например, через REST API) время может передаваться в формате UTC, а в 1С — интерпретироваться как локальное. Это приводит к расхождениям до ±12 часов. Всегда проверяйте формат временных меток в интеграционных протоколах!

    Для диагностики проблем с временем в полезно использовать отладочные функции:

    // Вывод текущих настроек времени
    

    Сообщить("Текущая дата сервера: " + ТекущаяДата());

    Сообщить("Текущая дата сеанса: " + ТекущаяДатаСеанса());

    Сообщить("Часовой пояс: " + ЧасовойПояс());

    7. Интеграция с внешними системами: синхронизация времени

    При обмене данными между и другими системами (например, Bitrix24, МойСклад, или оборудованием) синхронизация времени — одна из самых сложных задач. Основные проблемы возникают из-за:

    • 🌍 Разницы часовых поясов (например, сервер 1С в Москве, а CRM — в Новосибирске).
    • 🕒 Разных форматов хранения времени (Unix-time, ISO 8601, локальные форматы).
    • ⏳ Задержек при передаче данных (время создания документа в внешней системе и время его обработки в 1С могут отличаться).

Рекомендации по настройке синхронизации:

  1. Используйте UTC как универсальный формат для обмена. В для преобразования применяйте функции:
    // Преобразование локального времени в UTC
    

    UTCВремя = ЛокальноеВремяВUTC(ТекущаяДатаВремя());

    // Обратно из UTC в локальное

    ЛокальноеВремя = UTCВоВремя(UTCВремя);

  2. В настройках обмена (например, в Универсальном формате обмена) явно указывайте формат временных полей:
    &НаСервере
    

    Функция ПолучитьНастройкиОбмена()

    Настройки = Новый Структура();

    Настройки.Вставить("ФорматДатаВремя", "yyyy-MM-ddTHH:mm:ss");

    Возврат Настройки;

    КонецФункции

  3. Для критических операций (например, фиксации времени оплаты в банковских выписках) используйте внешние источники времени (NTP-серверы) вместо локальных часов сервера.

Пример обработки времени из JSON (формат ISO 8601):

// Допустим, из внешней системы пришла строка: "2026-05-15T14:30:00+03:00"

СтрокаВремени = ОбъектJSON.ВремяСоздания;

ДатаВремя = ТЗначениеВДатаВремя(СтрокаВремени, "yyyy-MM-ddTHH:mm:ssK");

// Преобразуем в локальное время

ЛокальноеВремя = UTCВоВремя(ДатаВремя);

⚠️ Внимание: При интеграции с 1С:Документооборот или 1С:EDT учитывайте, что время в этих системах может храниться с миллисекундной точностью, тогда как в типовых конфигурациях (например, 1С:Бухгалтерия) — только до секунд. Это может привести к ошибкам округления при сравнении временных меток.

8. Оптимизация работы с временем: советы экспертов

Для ускорения работы и снижения ошибок при работе с временем в следуйте этим рекомендациям:

  • Используйте кэширование для часто запрашиваемых временных данных. Например, если в отчете многократно проверяется принадлежность времени к определенному интервалу, сохраните границы интервала в переменные.
  • 🔄 Автоматизируйте рутинные операции с помощью обработок. Например, для массового переноса времени в документах можно написать простую обработку с циклом:
Процедура ПеренестиВремяНаЧасВперед()

Выборка = Документы.ЗаказПокупателя.Выбрать();

Пока Выборка.Следующий() Цикл

Выборка.ВремяДоставки = ДобавитьКДате(Выборка.ВремяДоставки, ЧАС, 1);

Выборка.Записать();

КонецЦикла;

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

  • 📅 Настраивайте шаблоны для часто используемых временных интервалов. В 1С:УТ можно создать шаблоны графиков работы, которые будут автоматически подставлять время в документы.
  • 🛠️ Тестируйте временные функции на граничных значениях. Например, проверяйте корректность работы кода при переходе на летнее/зимнее время или в момент смены даты (23:59 → 00:00).

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

ВЫБРАТЬ

ЧАС(Документ.Дата) КАК Час,

СУММА(Документ.Сумма) КАК Итого

ИЗ

Документ.РеализацияТоваров КАК Документ

СГРУППИРОВАТЬ ПО

ЧАС(Документ.Дата)

💡

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

FAQ: Частые вопросы о работе с временем в 1С

Как в 1С указать время с точностью до миллисекунд?

В большинстве типовых конфигураций 1С:Предприятие 8.3 время хранится с точностью до секунд. Однако в платформе поддерживается работа с миллисекундами через тип ДатаВремя. Чтобы указать миллисекунды:

  1. Используйте функцию ДатаВремя() с указанием всех параметров:
    ТочноеВремя = ДатаВремя(2026, 5, 15, 14, 30, 25, 500); // 500 миллисекунд
  2. Для отображения миллисекунд в отчетах настройте формат поля: Формат("ДФ=yyyy-MM-dd HH:mm:ss.fff").

Обратите внимание: не все типовые конфигурации корректно обрабатывают миллисекунды. В 1С:ERP или 1С:КА это может работать, а в 1С:Бухгалтерии — нет.

Почему при переносе данных из Excel в 1С время сбивается?

Проблема связана с тем, что Excel хранит дату и время как количество дней с 1900-01-01, а использует внутренний формат. При импорте:

  • Проверьте формат ячейки в Excel: он должен быть Время или Дата.
  • Используйте обработку загрузки с явным преобразованием:
    ВремяИзExcel = ДатаВремя(1899, 12, 30) + ЧислоСекундВДень * ЗначениеИзExcel;
  • Учитывайте, что в Excel 1 соответствует 1900-01-01 00:00:00, а в 0001-01-01 00:00:00.
Как в 1С сделать автозаполнение времени по графику работы?

Для автоматического заполнения времени в документах (например, в табеле учета рабочего времени) по утвержденному графику:

  1. Откройте документ Табель учета рабочего времени.
  2. Нажмите кнопку ЗаполнитьПо графику работы.
  3. Выберите период и график, по которому нужно заполнить время.
  4. Система автоматически проставит время начала и окончания смены для каждого сотрудника.

Если графиков несколько, предварительно настройте их в справочнике Графики работы (Настройки → Графики работы).

Можно ли в 1С отобразить время в формате AM/PM?

Да, но для этого нужно изменить региональные настройки пользователя:

  1. Перейдите в Сервис → Параметры → Форматы.
  2. В разделе Формат времени выберите 12-часовой.
  3. Сохраните настройки и перезапустите сеанс.

Обратите внимание: этот формат будет применяться ко всем полям времени в системе. Для выборочного отображения AM/PM потребуется доработка конфигурации.

Как в запросе 1С отфильтровать документы по времени без учета даты?

Чтобы выбрать документы, созданные в определенный час независимо от даты, используйте комбинацию функций ЧАС() и МИНУТА():

ВЫБРАТЬ

Документ.Ссылка

ИЗ

Документ.ПоступлениеТоваров КАК Документ

ГДЕ

ЧАС(Документ.Дата) = 18 // Вечерние документы (18:00–18:59)

И МИНУТА(Документ.Дата) BETWEEN 0 AND 59

Для интервала времени (например, с 14:00 до 16:30) используйте:

ГДЕ (ЧАС(Документ.Дата) = 14 И МИНУТА(Документ.Дата) >= 0)

ИЛИ (ЧАС(Документ.Дата) = 15)

ИЛИ (ЧАС(Документ.Дата) = 16 И МИНУТА(Документ.Дата) <= 30)