Имя: Пароль:
1C
1С v8
Пересечение (время выезда, время возврата)
,
0 VSpicy
 
naïve
18.05.20
16:32
Добрый день!
Есть таблица с полями: "Водитель", Автомобиль, ВремяНачало, ВремяКонец.
Подскажите пожалуйста как мне поставить проверку, чтоб время не пересекалось???

У нас бывают часто случаи, пример на 17.05.2020: Иванов И.И. С135ММ197 08:30-17:30 и этот же водитель, но уже на другой машине 10:30-16:30
Нужно сделать так, чтобы исключить возможность сохранения документа, если у одного и того же водителя время начало и конца пересекалось.
1 Aleksey
 
18.05.20
16:36
2 Широкий
 
18.05.20
16:37
Пересчение: Начало<=Окончание1 И Окончание>=Начало1
3 VSpicy
 
naïve
18.05.20
16:37
08:30-17:30 10:30-16:30   - ИСКЛЮЧИТЬ
08:30-17:30 17:30-19:30   - НОРМАЛЬНО
4 VSpicy
 
naïve
18.05.20
16:39
(2) В моем случае только через запрос?
5 Йохохо
 
18.05.20
16:41
(4) что вводит юзер? ходку или дневной отчет по парку?
6 Aleksey
 
18.05.20
16:41
(4) аналогично
7 VSpicy
 
naïve
18.05.20
16:44
(5) Это документ "разнарядка" - значит ходку
8 Йохохо
 
18.05.20
16:46
(7) я дам провести) два раза в месяц сверка с УРВ и ошибочные красненьким в отчет. реализаций мильярд
9 VSpicy
 
naïve
18.05.20
16:49
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаНач", Разнарядка.ВремяНачала);
Запрос.УстановитьПараметр("ДатаКон", Разнарядка.ВремяОкончания);

Запрос.Текст = "ВЫБРАТЬ
               |    Разнарядка.Водитель,
               |    Разнарядка.ДатаНачала,
               |    Разнарядка.ДатаОкончания
               |ИЗ
               |    Документ.Разнарядка КАК СуточныйПлан
               |ГДЕ
               |    &ДатаНач <= Разнарядка.ВремяОкончания
               |            И &ДатаКон > = Разнарядка.ВремяНачала;

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить("В интервал попадает отпуск сотрудника " + Выборка.Водитель);    
КонецЦикла;

Примерно так?
10 VSpicy
 
naïve
20.05.20
14:48
(9) Не работает такая схема(
11 МихаилМ
 
20.05.20
15:13
почитайте темы на форуме про пересечение интервалов в запросе
12 Злопчинский
 
20.05.20
16:53
(7) потому что мудачно сделано.
вместо визуальной карты, куда пользователь кладет/цепляет/тащит нужные интервалиы - ввод каких томутных цифр.
13 VSpicy
 
naïve
25.05.20
13:28
Вот этот запрос работает на 100%

ВЫБРАТЬ
    уатРазнарядкаРазнарядка.Ссылка КАК Ссылка,
    уатРазнарядкаРазнарядка.Водитель КАК Водитель,
    уатРазнарядкаРазнарядка.НомерСтроки КАК НомерСтроки,
    уатРазнарядкаРазнарядка1.НомерСтроки КАК НомерСтроки1
ИЗ
    Документ.уатРазнарядка.Разнарядка КАК уатРазнарядкаРазнарядка
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.уатРазнарядка.Разнарядка КАК уатРазнарядкаРазнарядка1
        ПО уатРазнарядкаРазнарядка.Ссылка = уатРазнарядкаРазнарядка1.Ссылка
            И уатРазнарядкаРазнарядка.Водитель = уатРазнарядкаРазнарядка1.Водитель
            И уатРазнарядкаРазнарядка.НомерСтроки <> уатРазнарядкаРазнарядка1.НомерСтроки
            И (уатРазнарядкаРазнарядка.ДатаВыезда <= уатРазнарядкаРазнарядка1.ДатаВыезда
                    И уатРазнарядкаРазнарядка.ДатаВозвращения >= уатРазнарядкаРазнарядка1.ДатаВыезда
                ИЛИ уатРазнарядкаРазнарядка.ДатаВыезда <= уатРазнарядкаРазнарядка1.ДатаВозвращения
                    И уатРазнарядкаРазнарядка.ДатаВозвращения >= уатРазнарядкаРазнарядка1.ДатаВозвращения
                ИЛИ уатРазнарядкаРазнарядка.ДатаВыезда <= уатРазнарядкаРазнарядка1.ДатаВыезда
                    И уатРазнарядкаРазнарядка.ДатаВозвращения >= уатРазнарядкаРазнарядка1.ДатаВозвращения
                ИЛИ уатРазнарядкаРазнарядка.ДатаВыезда >= уатРазнарядкаРазнарядка1.ДатаВыезда
                    И уатРазнарядкаРазнарядка.ДатаВозвращения <= уатРазнарядкаРазнарядка1.ДатаВозвращения)
ГДЕ
    уатРазнарядкаРазнарядка.Ссылка = &ТекущийСП
    И уатРазнарядкаРазнарядка.Водитель <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн