Механизм учета времени в конфигурации 1С (вариант с числовыми реквизитами)

26.12.25

Разработка - Математика и алгоритмы

Представление реквизитов учета времени в удобном для пользователя виде - в часах и минутах. Математические манипуляции с этими реквизитами, формирование аналитических отчетов. Решение для любой платформы - от 7.7 до 8.3. В статье представлена методика учета временнЫх реквизитов и фрагменты кода.

   У меня есть авторская конфигурация для учета путевой документации а автотранспортном предприятии (Автобусный парк), работает уже четвертый год, всех все устраивает, но написана была на 7.7. Решил улучшить - переписал под 8.3 и по ходу работы над ней изменил методику учета временных показателей. Раньше реквизиты учета времени (а их довольно много в конфигурации) были представлены просто  в виде десятичного числа с точностью до сотых - два знака после запятой, т.е. время учитывалось в десятичной системе счисления, что визуально очень неудобно - например , сколько времени означает число 8.95. Очень неудобно. Поэтому решил это дело исправить. Сначала хотел изменить их на тип "Дата" с составом даты "Время" , но математика с таким реквизитом требует много лишних манипуляций, а кроме у этого реквизита типа "Дата" с составом даты "Время" есть непреодолимое ограничение значения - 23:59 , что в моем случае неприемлемо, т.к. автомобиль может находиться в рейсе свыше этого значения, например - 25:45. Ниже описан вариант решения.

   Есть документ "Путевой лист". Для учета времени работы в наряде - созданы в данных документа два реквизита:

-  "ВремяВНаряде"  - Число 6.2  , формат"ЧЦ=5; ЧДЦ=2; ЧРД=:; ЧН=00:00"

-  "ВремяВНарядеМинут"  - Число 10

На форме документа размещен реквизит "ВремяВНаряде", в котором целая часть - это часы. а дробная - минуты. Ниже - процедура обработки события "ПриИзменении" этого реквизита: 

&НаКлиенте
Процедура ВремяВНарядеПриИзменении(Элемент)  
	
	хВремяМинут = Объект.ВремяВНаряде - Цел(Объект.ВремяВНаряде);  
	Если хВремяМинут >= 0.6 Тогда        
		Объект.ВремяВНаряде = Цел(Объект.ВремяВНаряде) + 1 + хВремяМинут - 0.6; 
	КонецЕсли;
	
	Объект.ВремяВНарядеМинут = Цел(Объект.ВремяВНаряде) * 60 + (Объект.ВремяВНаряде - Цел(Объект.ВремяВНаряде)) * 100;
	
КонецПроцедуры

   Т.е. обработка выполняет корректность отображения реквизита "ВремяВНаряде" в виде "часы,минуты" и параллельно с этим выполняет запись количества минут в реквизит "ВремяВНарядеМинут".

   Расчет суммы заработной платы за отработанное время в наряде - "СуммаВНаряде":

	Документ.СуммаВНаряде = Документ.ВремяВНарядеМинут * Документ.ТарифВНаряде / 60;

, где "ТарифВНаряде" - тариф стоимости 1 часа работы.

   При проведении документа в регистр накопления записываем значение реквизита  "ВремяВНарядеМинут". 

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

	ВН = Выборка.ВремяВНарядеМинут;
	ОбластьСтрока.Параметры.ВремяВНаряде = Цел(ВН/60) + (ВН-(Цел(ВН/60)*60))/100;

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

Вступайте в нашу телеграмм-группу Инфостарт

конфигурация время отчет обработка анализ разработчик программист авторское решение учет

См. также

Математика и алгоритмы Программист 1С 8.3 Абонемент ($m)

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

1 стартмани

07.11.2025    5050    13    InFlach    17    

26

Математика и алгоритмы Запросы Программист 1С:Предприятие 8 Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    5170    ivanov660    9    

24

Математика и алгоритмы Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    13273    stopa85    12    

43

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    20993    user1959478    57    

40

Математика и алгоритмы Разное 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    12590    maksa2005    8    

27

Математика и алгоритмы Инструментарий разработчика Программист 1С:Предприятие 8 Россия Абонемент ($m)

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

1 стартмани

09.06.2023    21351    11    SpaceOfMyHead    20    

65

Математика и алгоритмы Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    14216    RustIG    9    

30

Механизмы платформы 1С Математика и алгоритмы Программист 1С:Предприятие 8 Россия Бесплатно (free)

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

23.11.2022    13267    gzharkoj    15    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 2138 03.12.25 16:58 Сейчас в теме
Практичнее было бы создать 1 реквизит ВремяВНаряде, тип Дата, а на форме отображать как 2 поля ввода - часы и минуты с помощью формата даты
Прикрепленные файлы:
ВремяВНаряде.epf
2. AVK67 8 03.12.25 19:13 Сейчас в теме
С точки зрения эргономики интерфейса думаю вариант, предложенный вами, не совсем удачен, - два поля ввода с целью учета одного показателя - для пользователя не есть лучше решение. Реквизиты учета времени в моем случае размещаются и в табличной части документа, а там вообще считаю неуместно будет размещать два поля ввода вместо одного.
Здесь ведь вопрос не только в визуальном представлении реквизита времени, а и в последующем использовании его значений в запросах, в расчетах и отчетах.
Прикрепленные файлы:
3. ixijixi 2138 03.12.25 19:57 Сейчас в теме
(2) ну сделать одно поле с форматом ЧЧ:мм, я ж всех ваших нюансов не знаю 😄

Со временем просто удобнее работать, чем его из чисел переводить. Плюс автоматически исключаем проблему проверки корректности данных. Тут уже никак не ввести 1 час 99 минут.
4. AVK67 8 03.12.25 20:23 Сейчас в теме
(3)
ну сделать одно поле с форматом ЧЧ:мм, я ж всех ваших нюансов не знаю 😄

Со временем просто удобнее работать, чем его из чисел переводить. Плюс автоматически исключаем проблему проверки корректности данных. Тут уже никак не ввести 1 час 99 минут.


Согласен, что удобнее ,и без всяких проверок на корректность ввода. Но нюанс в том, что в промежуточных расчетах в модуле формы (при ее обновлении), при проведении документа - запись в регистр - все равно придется использовать числовое значение - количество минут , т.е. выполнять преобразование реквизита типа Дата в числовое значение.
Для отправки сообщения требуется регистрация/авторизация