Требуется помощь в решении задачи:
Составить обработку, которая проверяет пересечение периодов и вывести его, если есть. Входные параметры - НачПериода1,НачПериода2,КонПериода1, КонПериода2.
Выходной параметр - НачПериода, КонПериода; или Сообщение - "Пересечения нет". Условие - Если не заполнена начальная дата периода, то это означает "-бесконечность"; Если не заполнена конечная дата, то это означает "+бесконечность".
НачалоПересечения = Макс(НачПериода1,НачПериода2);
КонецПересечения = Макс(КонПериода1, КонПериода2);
Если НачалоПересечения > КонецПересечения Тогда
Сообщить("Пересечения нет")
КонецЕсли;
Если Макс(НачПериода) <Макс(КонПериода) Тогда
Сообщить("Пересечение есть")
Иначе
Сообщить("Пересечения нет");
Если Не ЗначениеЗаполнено(НачПериода) Тогда
Сообщить("-бесконечность");
КонецЕсли;
(1) Я правильно понимаю, вам надо проверить не пересекаются ли интервалы НачПериода1-КонПериода1 с НачПериода2-КонПериода2 ? Не пойму правда, что должно быть в выходных параметрах НачПериода, КонПериода.
Гм... Лучшая помощь тут - это предоставить тебе возможность самому разобраться.
Ладно бы это касалось специфики 1С. А так... Нарисовать блок-схему и запрограммить. Лучше сам потренируйся.
Делал запросом проверку документа на пересечение его с интервалом
ВЫБОР
КОГДА &НачалоПериода МЕЖДУ Документ.НачалоПериода И Документ.КонецПериода
ИЛИ &КонецПериода МЕЖДУ Документ.НачалоПериода И Документ.КонецПериода
ТОГДА ИСТИНА
КОГДА Документ.НачалоПериода >= &НачалоПериода
ИЛИ Документ.КонецПериода <= &КонецПериода
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
Скорее так?
КОГДА &НачалоПериода МЕЖДУ Документ.НачалоПериода И Документ.КонецПериода
ИЛИ &КонецПериода МЕЖДУ Документ.НачалоПериода И Документ.КонецПериода
ТОГДА ИСТИНА
КОГДА Документ.НачалоПериода >= &НачалоПериода
И Документ.КонецПериода <= &КонецПериода
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ[/IS-QUOTE]
ВЫБОР
КОГДА &НачалоПериода МЕЖДУ Документ.НачалоПериода И Документ.КонецПериода
ИЛИ &КонецПериода МЕЖДУ Документ.НачалоПериода И Документ.КонецПериода
ТОГДА ИСТИНА
КОГДА Документ.НачалоПериода >= &НачалоПериода
ИЛИ Документ.КонецПериода <= &КонецПериода
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
Если КонПериод2 > КонПериод1 Тогда
Если НачПерио2 > КонПериод1 Тогда
Сообщить("Пересечения нет");
Иначе
Сообщить("Пересечение есть");
КонецЕсли;
Иначе
Если КонПериод2 < НачПериод1 Тогда
Сообщить("Пересечения нет");
Иначе
Сообщить("Пересечение есть");
КонецЕсли;
КонецЕсли;
Показать
Но тут правда без проверки на бесконечность. Думаю можно будет просто условия добавить, что если, например НачПериод1 не заполнен, то в любом случае, когда КонПериод2 < КонПериод1 будет пересечение.
Вроде ничего не упустила)