Для вычисления дат пересечения двух периодов многие зачастую используют довольно сложные наборы условий, не дающих нужный результат, или достигающих его излишне сложным путем.
Файлы
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
0% комиссии — оплата напрямую исполнителю;
Исполнители любого масштаба — от отдельных специалистов до команд под проект;
Прямой обмен контактами между заказчиком и исполнителем;
Безопасная сделка — при необходимости;
Рейтинги, кейсы и прозрачная система откликов.
Для вычисления дат пересечения двух периодов достаточно использовать всего лишь одноусловие и пару платформенных функций:
Если Макс(ДатаС1, ДатаС2) <= Мин(ДатаПо1, ДатаПо2) Тогда
ДатаПересечения1 = Макс(ДатаС1, ДатаС2);
ДатаПересечения2 = Мин(ДатаПо1, ДатаПо2);
Если ДатаПересечения1<>ДатаПересечения2 Тогда
ТекстСообщения = "Периоды пересекаются в "+ Формат(ДатаПересечения1,"ДФ=dd.MM.yyyy") + " и " + Формат(ДатаПересечения2,"ДФ=dd.MM.yyyy");
Иначе
ТекстСообщения = "Периоды пересекаются в "+ Формат(ДатаПересечения1,"ДФ=dd.MM.yyyy");
КонецЕсли;
Иначе
ТекстСообщения = "Периоды не пересекаются";
КонецЕсли;
Также прикладываю обработку, наглядно демонстрирующую работу данного условия (платформа 8.3.10.2650).