Работа с временными данными в 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С:Предприятие. - Перейдите в меню
Ещё → Изменить форму(или нажмитеShift+F2). - Найдите поле с временем, кликните по нему правой кнопкой и выберите
Свойства. - Вкладка
Данные→ параметрАвтозаполнение. Здесь можно выбрать:- 🔄
Текущая дата и время(заполняется автоматически при создании документа), - 📅
Текущая дата(только дата, время обнуляется), - ❌
Не заполнять(поле остается пустым).
- 🔄
- ⏱️ Устанавливать время в документах по заданным правилам (например, округление до ближайших 15 минут).
- 🔄 Преобразовывать строковые значения в тип ДатаВремя и обратно.
- 📊 Сравнивать временные интервалы для логики бизнес-процессов.
- 🕐 Учета рабочего времени в табеле (приход/уход сотрудников).
- ⏳ Расчета переработок и ночных часов.
- 📅 Планирования графиков работы.
- 🛒 Фиксации времени продажи в чеках (актуально для ЕГАИС).
- 🚚 Отслеживания логистических операций (отгрузка, доставка).
- 📈 Аналитики пиковых нагрузок на склады.
- 🏭 Производственными процессами (время запуска/окончания операций).
- 🔧 Ремонтными работами (учет простоев оборудования).
- 📊 Бюджетированием (распределение затрат по временным периодам).
- 🌍 Разницы часовых поясов (например, сервер 1С в Москве, а CRM — в Новосибирске).
- 🕒 Разных форматов хранения времени (Unix-time, ISO 8601, локальные форматы).
- ⏳ Задержек при передаче данных (время создания документа в внешней системе и время его обработки в 1С могут отличаться).
Для программистов: автоматическое заполнение времени настраивается в конфигураторе через свойство реквизита АвтоЗаполнение. Например, для поля ВремяСоздания в документе можно задать:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.ВремяСоздания = ТекущаяДатаВремя();
КонецПроцедуры
3. Работа с временем в запросах и отчетах
При формировании отчетов или аналитических выборок время часто используется как критерий фильтрации. Например, в 1С:Управление торговлей (УТ) может потребоваться выгрузить документы, созданные в определенный час пик. Для этого в языке запросов 1С предусмотрены специальные функции.
Основные функции для работы с временем в запросах:
| Функция | Описание | Пример использования |
|---|---|---|
ЧАС() |
Возвращает час из значения типа ДатаВремя | ГДЕ ЧАС(Документ.Дата) = 14 (документы, созданные в 14:00) |
МИНУТА() |
Возвращает минуты | ГДЕ МИНУТА(Документ.Время) BETWEEN 0 AND 30 |
НАЧАЛОДНЯ() |
Обнуляет время (устанавливает 00:00:00) | ГДЕ Документ.Дата >= НАЧАЛОДНЯ(&ДатаНачала) |
ДОБАВИТЬКДАТЕ() |
Сдвигает дату/время на заданный интервал | ДОБАВИТЬКДАТЕ(Документ.Дата, ЧАС, 2) (прибавить 2 часа) |
Пример запроса для выборки документов, созданных в вечернее время (с 18:00 до 23:59):
ВЫБРАТЬ
Документ.Ссылка КАК Ссылка,
Документ.Дата КАК ДатаСоздания
ИЗ
Документ.ПоступлениеТоваров КАК Документ
ГДЕ
ЧАС(Документ.Дата) >= 18
⚠️ Внимание: В запросах 1С функцияТЕКУЩАЯДАТА()возвращает дату и время сервера 1С, а не клиентского компьютера. Если сервер находится в другом часовом поясе, это может привести к расхождениям в отчетах. Для корректной работы используйтеТЕКУЩАЯДАТАСЕАНСА()— она учитывает настройки сеанса пользователя.
Почему в отчете время сдвинуто на 3 часа?
Это типичная проблема при работе с серверами в разных часовых поясах. Например, если сервер 1С находится в Москве (UTC+3), а пользователь — в Екатеринбурге (UTC+5), то время в отчетах будет отставать на 2 часа. Решение: настройте параметр "Часовой пояс сеанса" в файле конфигурации 1cv8.1cd или используйте обработку для корректировки времени при выводе данных.
4. Программное управление временем через встроенный язык
Для автоматизации задач, связанных с временем, в 1С используется встроенный язык программирования. С его помощью можно:
Базовые операции с временем на языке 1С:
// Пример 1: Установка фиксированного времени
ТекущийДокумент.ВремяНачала = ДатаВремя(2026, 5, 15, 9, 0, 0);
// Пример 2: Преобразование строки в ДатаВремя
ВремяИзСтроки = Время(СтрокаВремя); // Формат строки: "ЧЧ:ММ:СС"
// Пример 3: Сравнение временных меток
Если ТекущееВремя() > Время(18, 0, 0) Тогда
Сообщить("Сейчас вечер!");
КонецЕсли;
Особое внимание уделите функции ТЗначениеВДатаВремя() — она позволяет преобразовать значение из внешних источников (например, JSON или XML) в тип ДатаВремя, учитывая формат исходных данных. Это актуально при интеграции 1С с веб-сервисами или оборудованием (например, терминалами сбора данных).
Использовать функцию ТипЗнч() для проверки типа|Учитывать настройки региональных стандартов|Обрабатывать исключения при некорректном формате|Тестировать код на граничных значениях (00:00:00, 23:59:59)
-->
5. Особенности работы с временем в типовых конфигурациях
Каждая типовая конфигурация 1С имеет свои нюансы работы с временными данными. Рассмотрим наиболее распространенные сценарии:
1С:Зарплата и Управление Персоналом (ЗУП)
Здесь время используется для:
В документе Табель учета рабочего времени время указывается с точностью до минуты. Для массового заполнения можно использовать обработку Заполнить по графику, которая автоматически проставит время согласно утвержденному расписанию.
1С:Управление торговлей (УТ)
В торговле время критично для:
В документе Реализация товаров время автоматически проставляется при проведении, но его можно корректировать вручную (например, если чек был пробит ретроактивно).
1С:ERP Управление предприятием
В ERP-системах время интегрировано с:
⚠️ Внимание: В 1С:ERP при работе с производственными заданиями время указывается с точностью до секунды, но в отчетах по умолчанию может округляться до минут. Чтобы избежать расхождений, настройте параметрТочностьВременив отчетеАнализ выполнения производственных заданий.
6. Типичные ошибки и их решения
Ошибки при работе с временем в 1С часто ведут к искажению данных в отчетах или сбоям в бизнес-процессах. Рассмотрим самые распространенные проблемы и способы их устранения:
| Ошибка | Причина | Решение |
|---|---|---|
| Время в отчете сдвинуто на 3–4 часа | Разница часовых поясов между сервером и клиентом | Настроить параметр ЧасовойПоясСеанса в конфигурации или использовать ТЕКУЩАЯДАТАСЕАНСА() |
| Невозможно ввести время в документ | Поле заблокировано настройками ролей или бизнес-процессов | Проверить права пользователя или логику модуля документа |
| При экспорте в Excel время отображается как дата (например, "01.01.1900") | Excel интерпретирует время как количество дней с 1900 года | Использовать формат ячейки Время или экспортировать через ЗначениеВСтрокуВнутр() |
| Время округляется до часов (минуты сбрасываются в 00) | Настройка округления в параметрах отчета или документа | Отключить округление в свойствах поля или использовать программный ввод |
Критическая ошибка: при обмене данными с внешними системами (например, через REST API) время может передаваться в формате UTC, а в 1С — интерпретироваться как локальное. Это приводит к расхождениям до ±12 часов. Всегда проверяйте формат временных меток в интеграционных протоколах!
Для диагностики проблем с временем в 1С полезно использовать отладочные функции:
// Вывод текущих настроек времени
Сообщить("Текущая дата сервера: " + ТекущаяДата());
Сообщить("Текущая дата сеанса: " + ТекущаяДатаСеанса());
Сообщить("Часовой пояс: " + ЧасовойПояс());
7. Интеграция с внешними системами: синхронизация времени
При обмене данными между 1С и другими системами (например, Bitrix24, МойСклад, или оборудованием) синхронизация времени — одна из самых сложных задач. Основные проблемы возникают из-за:
Рекомендации по настройке синхронизации:
- Используйте UTC как универсальный формат для обмена. В 1С для преобразования применяйте функции:
// Преобразование локального времени в UTCUTCВремя = ЛокальноеВремяВUTC(ТекущаяДатаВремя());
// Обратно из UTC в локальное
ЛокальноеВремя = UTCВоВремя(UTCВремя);
- В настройках обмена (например, в Универсальном формате обмена) явно указывайте формат временных полей:
&НаСервереФункция ПолучитьНастройкиОбмена()
Настройки = Новый Структура();
Настройки.Вставить("ФорматДатаВремя", "yyyy-MM-ddTHH:mm:ss");
Возврат Настройки;
КонецФункции
- Для критических операций (например, фиксации времени оплаты в банковских выписках) используйте внешние источники времени (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);
Выборка.Записать();
КонецЦикла;
КонецПроцедуры
- 📅 Настраивайте шаблоны для часто используемых временных интервалов. В 1С:УТ можно создать шаблоны графиков работы, которые будут автоматически подставлять время в документы.
- 🛠️ Тестируйте временные функции на граничных значениях. Например, проверяйте корректность работы кода при переходе на летнее/зимнее время или в момент смены даты (23:59 → 00:00).
Для разработчиков: при создании отчетов с группировкой по времени (например, по часам) используйте виртуальные таблицы. Это значительно ускорит выполнение запроса:
ВЫБРАТЬ
ЧАС(Документ.Дата) КАК Час,
СУММА(Документ.Сумма) КАК Итого
ИЗ
Документ.РеализацияТоваров КАК Документ
СГРУППИРОВАТЬ ПО
ЧАС(Документ.Дата)
Всегда проверяйте настройки часовых поясов на сервере 1С и клиентских машинах. Даже если время отображается корректно в интерфейсе, при обмене данными или формировании отчетов могут возникать сдвиги.
FAQ: Частые вопросы о работе с временем в 1С
Как в 1С указать время с точностью до миллисекунд?
В большинстве типовых конфигураций 1С:Предприятие 8.3 время хранится с точностью до секунд. Однако в платформе поддерживается работа с миллисекундами через тип ДатаВремя. Чтобы указать миллисекунды:
- Используйте функцию
ДатаВремя()с указанием всех параметров:ТочноеВремя = ДатаВремя(2026, 5, 15, 14, 30, 25, 500); // 500 миллисекунд - Для отображения миллисекунд в отчетах настройте формат поля:
Формат("ДФ=yyyy-MM-dd HH:mm:ss.fff").
Обратите внимание: не все типовые конфигурации корректно обрабатывают миллисекунды. В 1С:ERP или 1С:КА это может работать, а в 1С:Бухгалтерии — нет.
Почему при переносе данных из Excel в 1С время сбивается?
Проблема связана с тем, что Excel хранит дату и время как количество дней с 1900-01-01, а 1С использует внутренний формат. При импорте:
- Проверьте формат ячейки в Excel: он должен быть
ВремяилиДата. - Используйте обработку загрузки с явным преобразованием:
ВремяИзExcel = ДатаВремя(1899, 12, 30) + ЧислоСекундВДень * ЗначениеИзExcel; - Учитывайте, что в Excel
1соответствует1900-01-01 00:00:00, а в 1С —0001-01-01 00:00:00.
Как в 1С сделать автозаполнение времени по графику работы?
Для автоматического заполнения времени в документах (например, в табеле учета рабочего времени) по утвержденному графику:
- Откройте документ
Табель учета рабочего времени. - Нажмите кнопку
Заполнить→По графику работы. - Выберите период и график, по которому нужно заполнить время.
- Система автоматически проставит время начала и окончания смены для каждого сотрудника.
Если графиков несколько, предварительно настройте их в справочнике Графики работы (Настройки → Графики работы).
Можно ли в 1С отобразить время в формате AM/PM?
Да, но для этого нужно изменить региональные настройки пользователя:
- Перейдите в
Сервис → Параметры → Форматы. - В разделе
Формат временивыберите12-часовой. - Сохраните настройки и перезапустите сеанс.
Обратите внимание: этот формат будет применяться ко всем полям времени в системе. Для выборочного отображения AM/PM потребуется доработка конфигурации.
Как в запросе 1С отфильтровать документы по времени без учета даты?
Чтобы выбрать документы, созданные в определенный час независимо от даты, используйте комбинацию функций ЧАС() и МИНУТА():
ВЫБРАТЬ
Документ.Ссылка
ИЗ
Документ.ПоступлениеТоваров КАК Документ
ГДЕ
ЧАС(Документ.Дата) = 18 // Вечерние документы (18:00–18:59)
И МИНУТА(Документ.Дата) BETWEEN 0 AND 59
Для интервала времени (например, с 14:00 до 16:30) используйте:
ГДЕ (ЧАС(Документ.Дата) = 14 И МИНУТА(Документ.Дата) >= 0)
ИЛИ (ЧАС(Документ.Дата) = 15)
ИЛИ (ЧАС(Документ.Дата) = 16 И МИНУТА(Документ.Дата) <= 30)