Как реализовать учет времени выполнения технологических операций в цехе на 1С

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Промышленность, строительство и АПК
← На главную

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

Типовые инструменты 1С: конфигурации ERP и MES

Если на предприятии развернута система уровня ERP, разработка с нуля часто не требуется. Рассмотрим встроенные средства платформы:

  1. 1С:ERP Управление предприятием: в подсистеме пооперационного управления производством применяется документ Операция. Для цеховых рабочих предусмотрены специализированные рабочие места — Выполнение технологических операций и Диспетчирование технологических операций. Система позволяет отмечать этапы («Создана», «В работе», «Завершена»), регистрировать частичное выполнение и относить выработку на конкретных исполнителей или бригады.
  2. 1С:MES Оперативное управление производством: специализированное решение, содержащее готовый АРМ производственного рабочего. Интерфейс адаптирован под сенсорные экраны и терминалы: рабочий авторизуется через карту или штрихкод, видит сменно-суточное задание, нажимает «Начать», фиксирует технологические паузы или причины простоев оборудования, а система автоматически рассчитывает длительность и трудоемкость.

Архитектура собственного решения для учета времени

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

  1. Отказ от парсинга журнала регистрации: журнал регистрации предназначен для аудита безопасности и администрирования. Использовать его для бизнес-логики нельзя из-за высокой нагрузки и сложности выборки.
  2. Использование независимого регистра сведений: для накопления отметок времени создадим независимый непериодический регистр сведений (например, УчетВремениТехнологическихОпераций). Измерениями будут выступать Сотрудник, ЗаказНаПроизводство (или ТехнологическаяОперация), а ресурсами и реквизитами — ВремяНачала, ВремяОкончания, Статус (В работе, Приостановлено, Завершено) и ДлительностьВСекундах.
  3. Идентификация сотрудников и деталей: для минимизации ручного ввода в условиях цеховой пыли и работы в перчатках оптимально использовать считыватели штрихкодов или бесконтактных карт (RFID/NFC). На заказ-наряд или талон наносится штрихкод документа, а у исполнителя имеется персональный бейдж или пин-код.

Базовый алгоритм подсчета интервалов времени

Рассмотрим пример программной логики для фиксации начала, приостановки и завершения выполнения операции на форме терминала:


// Фиксация начала выполнения работы
Процедура НачатьРаботуНаСервере(Исполнитель, ДокументОснование, Операция)
    МенеджерЗаписи = РегистрыСведений.УчетВремениТехнологическихОпераций.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Исполнитель = Исполнитель;
    МенеджерЗаписи.ДокументОснование = ДокументОснование;
    МенеджерЗаписи.Операция = Операция;
    МенеджерЗаписи.ВремяНачала = ТекущаяДатаСеанса();
    МенеджерЗаписи.Статус = Перечисления.СтатусыВыполненияОпераций.ВРаботе;
    МенеджерЗаписи.Записать();
КонецПроцедуры

// Обработка приостановки или завершения интервала
Процедура ЗафиксироватьОкончаниеИнтервалаНаСервере(Исполнитель, ДокументОснование, Операция, НовыйСтатус)
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Рег.ВремяНачала КАК ВремяНачала
        |ИЗ
        |   РегистрСведений.УчетВремениТехнологическихОпераций КАК Рег
        |ГДЕ
        |   Рег.Исполнитель = &Исполнитель
        |   И Рег.ДокументОснование = &ДокументОснование
        |   И Рег.Операция = &Операция
        |   И Рег.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыВыполненияОпераций.ВРаботе)";
    
    Запрос.УстановитьПараметр("Исполнитель", Исполнитель);
    Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
    Запрос.УстановитьПараметр("Операция", Операция);
    
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ТекущееВремя = ТекущаяДатаСеанса();
        ИнтервалСекунд = ТекущееВремя - Выборка.ВремяНачала;
        
        // Записываем итоговый факт в историю интервалов
        ЗаписьИстории = РегистрыСведений.ИсторияВремениОпераций.СоздатьМенеджерЗаписи();
        ЗаписьИстории.Исполнитель = Исполнитель;
        ЗаписьИстории.ДокументОснование = ДокументОснование;
        ЗаписьИстории.Операция = Операция;
        ЗаписьИстории.ПериодНачала = Выборка.ВремяНачала;
        ЗаписьИстории.ПериодОкончания = ТекущееВремя;
        ЗаписьИстории.Длительность = ИнтервалСекунд;
        ЗаписьИстории.Записать();
        
        // Обновляем текущий статус рабочего
        МенеджерТекущегоСостояния = РегистрыСведений.УчетВремениТехнологическихОпераций.СоздатьМенеджерЗаписи();
        МенеджерТекущегоСостояния.Исполнитель = Исполнитель;
        МенеджерТекущегоСостояния.ДокументОснование = ДокументОснование;
        МенеджерТекущегоСостояния.Операция = Операция;
        МенеджерТекущегоСостояния.Статус = НовыйСтатус;
        МенеджерТекущегоСостояния.Записать();
    КонецЕсли;
КонецПроцедуры

Важные технические рекомендации при внедрении

Разберем практические нюансы, с которыми сталкиваются при эксплуатации цеховых терминалов:

  1. Синхронизация времени: не используйте метод ТекущаяДата() на стороне клиента, так как часы на локальных моноблоках могут сбиваться или быть изменены пользователем. Применяйте исключительно функцию ТекущаяДатаСеанса() или получайте серверное время базы данных.
  2. Оптимизация лицензирования: для цехового терминала общего пользования не обязательно запускать отдельный сеанс под каждого рабочего. Можно держать один постоянный сеанс общего интерфейса «Киоск», в котором пользователь идентифицируется сканированием бейджа на время выполнения транзакции, либо передавать данные через легковесные HTTP-сервисы 1С.
  3. Забытые операции и смены: обязательно настройте регламентное задание 1С, которое проверяет незакрытые смены и «зависшие» в статусе «В работе» операции в конце рабочего дня. Такие операции закрываются автоматически по расписанию смены или отправляются на ручную корректировку мастеру участка.
← На главную