То ли кофе мало то ли торможу.. Никак не ляжет алгоритмика.. Заданы два периода Начало1-Конец1 и Начало2-Конец2. Нужно найти непересечение данных интервалов, за базу взяв Начало1-Конец1..т.е. если интервалы совсем не пересекаются то берем Начало1-Конец1. Если Начало1>Конец2 или Начало2>Конец1 тогда Начало1-Конец1 КонецЕсли; т.е. этим предполагаем что они вообще не пересекаются... а вот при пересечение не соображу..
Ну тут комбинаций всего: 4! (факториал) =1*2*3*4=24 Код: Перем Нач1; Кон1; Нач2; Кон2; Если (Нач1 < Нач2) И (Кон1 < Кон2) Тогда ИначеЕсли (Нач1 < Нач2) И (Кон1 > Кон2) Тогда ИначеЕсли (Нач1 > Нач2) И (Кон1 > Кон2) Тогда ИначеЕсли (Нач1 > Нач2) И (Кон1 < Кон2) Тогда ИначеЕсли (Нач1 > Кон2) И (Кон1 < Кон2) Тогда ...... КонецЕсли;
В смысле? При всех комбинациях пишите свои условия... У Вас конечно будет меньше комбинаций, т.к. Кон1 всегда больше Нач1 и Кон2 всегда больше Нач2
Саша, если я правильно поняла и за базу взять первый интервал, то пересекаются они только если у тебя одна из границ как минимум лежит внутри первого интервала. Количество условий не будет равно на мой взгляд 4!
Если Начало1>Конец2 или Начало2>Конец1 Тогда Начало1-Конец1 ИначеЕсли Начало2>Начало1 и Конец2>Конец1 Тогда Начало1-Начало2 ИначеЕсли Начало2>Начало1 и Конец2<Конец1 Тогда Начало1-Начало2 и Конец2-Конец1 ИначеЕсли Начало2<Начало1 и Конец2<Конец1 Тогда Коне2-Конец1 Иначе Пустое КонецЕсли;
Еще 2 перем. добавьте, которые зададите при условиях Код: Если Начало1>Конец2 или Начало2>Конец1 Тогда ОснИнтервалНач = Начало1-Конец1; ОснИнтервалКон = Конец2;
Саша, так тебе не только Непересечение интервалов, а границы надо было задать при любом стечении обстоятельств?
Нууу как бы да... Задача изначальная.. При условии что нет заказов на производство народ отправляют на несколько дней за свой счет или в счет отпуска..Решили это процесс автоматизировать. этот период у нас задается Начало1 - Конец1. Соответсвенно выбираем сотрудников из регистра РаботникиОрганизации. При этом у нас есть регистр сведений СостояниеРаботниковОрганизации. В котором учитываются работники, которые уже в отпуске или на больничном, соответственно эти периоды для них необходимо исключить.
Ок, а если Вы задали Период1 - 01.03.15-31.03.15, а сотрудник в отпуске Период2 - 01.02.15-15.03.15 - тоже надо бы учесть... ЗЫ: Надо изначально задавать период "шире" Периода1, чтобы в выборку из Регистра попали незавершенные отпуска, больничные, по уходу за ребенком и т.д.
Чем не устраивает? ИначеЕсли Начало2<Начало1 и Конец2<Конец1 Тогда Коне2-Конец1 У нас период непересечения 16.03.2015 по 31.03.2015.
Как он не попадет? если я указал условие в котором он будет отработан? 01.02.15<01.03.15 и 15.03.15<31.03.2015 Тогда 15.03.15 - 31.03.2015 --- Объединение сообщений, 24 мар 2015 --- Уважаемый прошу прощения, еще раз сделаю акцент на то что мне надо не ПЕРЕСЕЧЕНИЕ периодов, а НЕПЕРЕСЕЧЕНИЕ периодов.
Какой должен быть результат в каждом из случаев? --- Объединение сообщений, 24 мар 2015 --- З.Ы. На самом деле там 8. и 9. еще должно быть, когда границы начала-конца совпадают.
1) Пустое 2) От окончания зеленого до окончания красного 3)От начала красного до начала зеленого 4)От начала красного до начала зеленого и от окончания зеленого до окончания красного 5) Пустое 6)От начала красного до окончания красного 7)От начала красного до окончания красного --- Объединение сообщений, 24 мар 2015 --- ну логика всего такая, что зачем отправлять человека в отпуск если он на больничном.. т.е. красная линия это период когда человеку необходимо в отпуск, а зеленая это он уже по какой то причине не работает.