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

Особенность работы со временем в заключается в том, что система оперирует не только визуальным представлением (например, 14:30:00), но и внутренним хранением данных в формате ДатаВремя. Это приводит к типичным ошибкам, когда пользователь вводит время в одно поле, а система интерпретирует его иначе. Мы разберём, как избежать таких ситуаций, какие настройки влияют на корректность данных, и что делать, если время "сбивается" при обмене между базами или выгрузке в отчёты.

Для кого эта статья?

  • 📊 Бухгалтеры и кадровики — научитесь быстро заполнять табели, учитывать переработки и корректировать временные данные без ошибок.
  • 💻 Программисты 1С — получите готовые примеры кода для работы с типом ДатаВремя, обработки временных интервалов и автоматизации ввода.
  • 🔧 Администраторы — узнаете, как настроить формат отображения времени в пользовательском интерфейсе и избежать конфликтов при обновлениях.
📊 С какой целью вы чаще всего вводите время в 1С?
Учёт рабочего времени
Формирование отчётов
Автоматизация через код
Другое

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

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

В большинстве конфигураций (например, 1С:Зарплата и Управление Персоналом или 1С:Бухгалтерия) поля для времени выглядят как выпадающие календари с возможностью выбора часов и минут. Но если поле имеет тип ДатаВремя, то при ручном вводе текста (например, 8:30) система может автоматически дополнить его текущей датой, что приведёт к неверным данным. Чтобы избежать этого:

  • 🕒 Используйте кнопку выпадающего списка (⏷) рядом с полем — это гарантирует корректный формат.
  • 📅 Если поле комбинированное (дата + время), сначала выберите дату, затем отредактируйте время.
  • ⚙️ Проверьте настройки региональных стандартов в Администрирование → Настройки программы → Региональные настройки — неверный формат времени (12/24 часа) может блокировать ввод.

Пример: В документе Табель учёта рабочего времени поле Время начала ожидает формат ЧЧ:ММ:СС. Если вы введёте 9-30, система может интерпретировать это как 09:00:00 (игнорируя минуты) или выдать ошибку. Всегда используйте двоеточие в качестве разделителя!

💡

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

2. Настройка форматов отображения времени

По умолчанию 1С:Предприятие отображает время в 24-часовом формате (13:45:00). Однако в некоторых конфигурациях (особенно локализованных для зарубежных филиалов) может использоваться 12-часовой формат с указанием AM/PM. Это создаёт путаницу при ручном вводе и экспорте данных.

Чтобы изменить формат отображения:

  1. Перейдите в Администрирование → Настройки программы → Региональные настройки.
  2. В блоке Форматы даты и времени выберите нужный шаблон (например, HH:mm:ss для 24-часового формата).
  3. Сохраните настройки и перезапустите сеанс .
Формат Пример отображения Применение
HH:mm:ss 14:30:00 Стандарт для России и СНГ
h:mm tt 2:30 PM Для англоязычных конфигураций
HH:mm 14:30 Упрощённый формат без секунд

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

Что делать, если время отображается некорректно после обновления?

После обновления конфигурации проверьте версию платформы 1С. В версиях ниже 8.3.18 могли возникать баги с отображением времени в формате AM/PM даже при настройке 24-часового формата. Решение — обновить платформу или вручную исправить формат в метаданных через Конфигуратор.

3. Программный ввод времени через код 1С

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

  • 📝 Создание значения времени: Используйте функцию Время(Часы, Минуты, Секунды).
  • 🔄 Извлечение компонентов: Для разбора времени на часы/минуты применяйте Час(), Минута(), Секунда().
  • ⏱️ Операции с интервалами: Для расчёта разницы между временными метками используйте РазностьДат().

Примеры кода:


// Создание времени 15:45:00

ВремяНачала = Время(15, 45, 0);

// Извлечение часов из текущего времени

ТекущийЧас = Час(ТекущаяДата());

// Расчёт продолжительности события (в секундах)

Длительность = РазностьДат(ВремяОкончания, ВремяНачала);

Типичная ошибка: Присваивание строкового значения (например, "14:30") переменной типа ДатаВремя без преобразования. Это приводит к исключению Ошибка приведение значения к типу Дата. Всегда используйте явное преобразование:

ВремяИзСтроки = ВремяЗнач("14:30:00");

☑️ Проверка кода для работы со временем

Выполнено: 0 / 4

4. Ввод времени в табелях учёта рабочего времени

В конфигурациях 1С:Зарплата и Управление Персоналом и 1С:ERP время фиксируется в документах Табель учёта рабочего времени или Отметки времени. Здесь важно соблюдать правила:

  • Формат ячеек: Время вводится в формате ЧЧ:ММ (например, 08:30 для 8:30 утра). Разделитель — двоеточие.
  • 🔄 Корректировка: Для изменения времени используйте двойной клик по ячейке или кнопку Редактировать.
  • ⚠️ Ограничения: Некоторые табели блокируют ввод времени вне рабочего графика сотрудника (например, ночные часы).

Если время в табеле не сохраняется или сбрасывается, проверьте:

  1. Настройки графика работы сотрудника в справочнике Физические лица.
  2. Права пользователя на редактирование табелей (роль Кадровик с полными правами).
  3. Наличие блокировок в настройках документа (например, Запрет редактирования закрытых периодов).
💡

При вводе времени в табеле система автоматически округляет значения до ближайших 5–15 минут в зависимости от настроек учёта. Это может искажать данные при точном учёте переработок.

5. Ошибки при вводе времени и способы их исправления

Даже опытные пользователи сталкиваются с ошибками при работе со временем в . Рассмотрим самые распространённые проблемы и их решения:

Ошибка Причина Решение
Некорректное значение даты Ввод времени без указания даты в поле типа ДатаВремя Используйте ДатаВремя(1, 1, 1, Часы, Минуты, 0) для "чистого" времени
Время не сохраняется в документе Поле заблокировано бизнес-логикой (например, проверка на рабочий день) Проверьте условия модуля документа в Конфигураторе
Разница во времени при обмене данными Разные временные зоны в базах-источнике и приёмнике Настройте синхронизацию временных зон в правилах обмена

Критическая ошибка: При экспорте времени в Excel через ВыгрузитьВExcel() данные могут отображаться как дата 01.01.1899 + время. Это связано с внутренним хранением даты в (количество секунд с 1899 года). Чтобы исправить:

// Преобразование перед выгрузкой

ВремяДляExcel = Формат(ВремяНачала, "ДФ=HH:mm:ss");

💡

Если при обмене данными между базами время сдвигается на несколько часов, проверьте настройки временной зоны в файле 1CV8.1CD (для файловой базы) или в кластере сервера 1С (для клиент-серверного варианта).

6. Автоматизация ввода времени: обработки и внешние отчёты

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

  • 📥 Импорт из CSV/XLS: Загрузка времени прихода/ухода сотрудников из файлов.
  • 🔄 Синхронизация с оборудованием: Интеграция со сканерами отпечатков или RFID-терминалами.
  • Расчёт переработок: Автоматическое выделение сверхурочных часов.

Пример кода для загрузки времени из Excel:

// Чтение данных из файла

ТаблицаДанных = ПолучитьДанныеИзExcel(ПутьКФайлу);

Для Каждого Строка Из ТаблицаДанных Цикл

ВремяПрихода = ВремяЗнач(Строка.ВремяПрихода);

Документ.Табель.ДобавитьСотрудника(Строка.Сотрудник, ВремяПрихода);

КонецЦикла;

Готовые обработки для автоматизации:

  • 📄 "Загрузка табеля из Excel" (доступна на Инфостарт и 1С-Галлерея).
  • 🔌 "Интеграция с Зарплатой.ру" (для синхронизации с облачными сервисами).
  • ⚙️ "Универсальный парсер времени" (для нестандартных форматов данных).
Как проверить корректность загруженных данных?

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

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

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

Примеры запросов:

// Группировка по часам

ВЫБРАТЬ

Час(Табель.ВремяПрихода) КАК ЧасПрихода,

COUNT(*) КАК КоличествоСотрудников

ИЗ

Документ.Табель КАК Табель

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

Час(Табель.ВремяПрихода)

// Фильтрация по временному интервалу

ВЫБРАТЬ

Табель.Сотрудник,

Табель.ВремяПрихода

ИЗ

Документ.Табель КАК Табель

ГДЕ

Табель.ВремяПрихода МЕЖДУ Время(8, 0, 0) И Время(10, 0, 0)

Для расчёта интервалов в отчётах используйте виртуальные таблицы:

// Продолжительность рабочего дня

ВЫБРАТЬ

РазностьДат(Табель.ВремяУхода, Табель.ВремяПрихода) КАК Длительность

ИЗ

Документ.Табель КАК Табель

Оптимизация: При работе с большими массивами данных (например, табели за год) добавьте индексы по полям времени в конфигураторе. Это ускорит выполнение запросов в 5–10 раз.

💡

В запросах 1С функция ВРЕМЯ() возвращает текущее время сервера, а не клиента. Учитывайте это при распределённой работе с удалёнными базами.

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

Как ввести время ночной смены (например, с 22:00 до 6:00)?

В документе Табель укажите время ухода позже времени прихода на следующий день (например, 22:00 01.06.2026 и 06:00 02.06.2026). Система автоматически рассчитает продолжительность смены. Если время сбрасывается, проверьте настройки графика работы в справочнике Типы графиков — там должен быть разрешен ночной режим.

Почему при вводе времени в поле появляется дата 01.01.0001?

Это происходит, потому что поле имеет тип ДатаВремя, а вы вводите только время без даты. Чтобы избежать этого, используйте:

ПолеВремени = ДатаВремя(1, 1, 1, Часы, Минуты, 0);

Или настройте формат поля в конфигураторе на отображение только времени (свойство ФорматHH:mm).

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

В модуле документа добавьте обработчик события ПриСозданииНаСервере():

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

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

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

Для клиентского заполнения (без перезаписи при сохранении) используйте событие ПриАктивизацииСтроки().

Можно ли ввести время с точностью до миллисекунд?

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

  1. Используйте программный ввод через Время(Часы, Минуты, Секунды, Миллисекунды).
  2. Храните миллисекунды в отдельном числовом поле (например, ДлительностьМс).

В отчётах миллисекунды можно вывести через функцию Формат() с шаблоном "ДФ=HH:mm:ss.fff".

Как исправить сдвиг времени на 3 часа в отчётах?

Сдвиг связан с переходом на зимнее/летнее время или неверными настройками временной зоны. Проверьте:

  1. Временную зону сервера 1С (в файле ragent.conf или настройках кластера).
  2. Настройки операционной системы на сервере и клиентских машинах.
  3. Параметр ИспользоватьЛокальноеВремя в конфигураторе (раздел Администрирование → Настройки программы).

Если проблема сохраняется, обновите платформу 1С до версии 8.3.20+ — в ней исправлены баги с временными зонами.

💡

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