Разница между датами
Разработка - Универсальные функции
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Обработка «Расчёт разницы между датами с корректным склонением и учётом високосных годов»
Назначение
Обработка предназначена для расчёта разницы между двумя датами в понятном человеку формате: с разбивкой на годы, месяцы, дни, часы, минуты и секунды. Результат выводится с корректным склонением слов («год/года/лет» и т. д.) по правилам русского языка, а учёт високосных лет и разной длины месяцев обеспечивается за счёт работы с календарём платформы 1С.
Основные возможности
- Точный расчёт разницы: вычисляет разницу в секундах, затем преобразует её в дни, часы, минуты, секунды.
- «Человеческая» разбивка: отдельно формирует представление интервала в годах, месяцах и днях, корректно учитывая реальную длину месяцев и високосные годы (через функцию
ДобавитьМесяц). - Корректное склонение единиц измерения: автоматически подставляет «год», «года» или «лет» с учётом исключений для чисел 11–19.
- Учёт направления разницы: если конечная дата меньше начальной, в начале результата добавляется знак «−».
- Демонстрационный режим: встроенная процедура
Рандом()генерирует случайные интервалы дат для быстрой проверки работы обработки. - Отображение полного числа дней: в скобках выводится точное количество полных дней между датами — это полезно для сверки и отчётности.
Особенности реализации
- Серверная функция
ПолучитьРазностьДатвыполняет основные вычисления, включая нормализацию порядка дат и расчёт как точной, так и «человеческой» разницы. - Клиентская функция
СклонитьГодреализует логику склонения по правилам русского языка: обрабатывает исключения для чисел 11–19 и корректно формирует окончания в зависимости от последней цифры. - Процедура
ОбновитьРазностьформирует итоговую строку вывода, пропуская нулевые значения для лет и месяцев (если нет остатка), но всегда показывая дни, если они есть или являются единственной единицей измерения. - Генерация тестовых данных (
Рандом) позволяет быстро проверить обработку на разных интервалах — от нескольких часов до 50 лет.
Сценарии использования
- В отчётах и формах документов: для наглядного отображения длительности периодов (например, «срок просрочки», «длительность проекта», «возраст объекта»).
- Для пользовательских интерфейсов: когда важно показать разницу в привычном формате («2 года 3 месяца 5 дней»), а не просто в днях или секундах.
- При тестировании и демонстрации: встроенный генератор случайных дат упрощает проверку корректности расчётов на разных временных интервалах, включая переходы через високосные годы.
- Для интеграции в другие обработки: функцию
ПолучитьРазностьДатможно вынести в общий модуль и использовать в других частях конфигурации.
Технические требования
- Платформа: 1С:Предприятие 8.3 и выше.
- Конфигурация: любая, поддерживающая управляемые формы.
- Зависимости: не требуются.
Важные нюансы
- Учёт високосных годов происходит автоматически за счёт платформенной функции
ДобавитьМесяц, поэтому не требуется ручное определение високосности года. - Для месяцев и дней используется сокращённая форма («мес.», «дн.») — это общепринятый формат в интерфейсах 1С; склонение для них не применяется.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.27.61
Вступайте в нашу телеграмм-группу Инфостарт