Получить запросом непрерывные интервалы - можно? #412272


#0 by Живой Ископаемый
Например сейчас запросом, который приведу ниже, я получаю такое: Сотрудник1 Отпуск ежегодный    07.05.2009 Сотрудник1 Отпуск ежегодный    08.05.2009 Сотрудник1 Отпуск ежегодный    18.05.2009 Сотрудник1 Отпуск ежегодный    19.05.2009 ==== Хочу каким-нибудь образом получать такое: Сотрудник1 Отпуск ежегодный    Интервал1 07.05.2009-08.05.2009 Сотрудник1 Отпуск ежегодный    Интервал2 18.05.2009-19.05.2009 ===== Только потом кодом и в ТЗ?
#1 by Живой Ископаемый
скажите, что нельзя и я пойду...
#2 by Широкий
уходи
#3 by Deon
да можно, наверно, надо подумать только как
#4 by IronDemon
Есть реквизит по которому можно определить начало это или конец?
#5 by Deon
Как выглядит табличка из которой ты тягаешь данные?
#6 by Живой Ископаемый
(4,5) ну.. пока нет.. Это просто регистр сведений независимый, периодический до дня.. за день собственно указывается сам факт невыхода... Стало быть если сильно хочу, то нужно добавить... хорошо, спасибо...
#7 by Deon
Выбирай из это регистра только те записи, для который нет значения с предыдущей датой. Это будут начала интервалов. Концы интервалов надо выбирать, как минимальная дата, которая больше начала интервала и на следущую дату у которой нет записи. Надеюсь внятно выразился
#8 by Живой Ископаемый
понял, спасибо....
#9 by КонецЕсли
ну-ну. 07.05.2009 10.05.2009 из интервал с 7 по 10
#10 by Deon
Под "следующей" и "предыдущей" я имею ввиду дату, отличающуюся на 1 день. Для 07.05 следующей даты (08.05) нет, поэтому это конец интервала
#11 by Deon
Или, если ты об этом "которая больше начала интервала", то, конечно надо так:
#12 by Bober
ВЫБРАТЬ    2 ВЫБРАТЬ    3 ВЫБРАТЬ    4 ВЫБРАТЬ    5 ВЫБРАТЬ    6 ВЫБРАТЬ    7 ВЫБРАТЬ    8 ВЫБРАТЬ    9 ВЫБРАТЬ    0 ;
#13 by КонецЕсли
Первая мысль по топику - нужна рекурсия. Один запрос не прокатит.
#14 by Jaap Vduul
+7 Как-то так:                    И Н1.Дата ЕСТЬ NULL)) ГДЕ    Невыходы2.Дата ЕСТЬ NULL
#15 by Deon
Умница, но не учел справедливое замечание из
#16 by Deon
тебе повезло, даже запрос готовый написали
#17 by Jaap Vduul
в фигня какая-то...
#18 by Jaap Vduul
+17 А, понял. Не сработает, если интервал = 1 день
#19 by КонецЕсли
+Вторая мысль - а почему бы нет?..
#20 by Jaap Vduul
+18 Итого: ВЫБРАТЬ    Невыходы.Сотрудник,                    И Н1.Дата ЕСТЬ NULL )) ГДЕ    Невыходы2.Дата ЕСТЬ NULL
#21 by TormozIT
#22 by Живой Ископаемый
у меня такого нет.. Если человек был в отпуске с 7 по 10, то в РС 4 записи - на 7,8,9,10.. Если только две - 7 и 10, то это два интервала...
#23 by Живой Ископаемый
так-так.. даже не ожидал.. Сейчас буду пробовать...
#24 by Deon
Часто встречающаяся задача, давно бы уже 1С сделала специальную функцию для определения количества дней наличия товара на складе
#25 by Deon
Ну вырази уже свою мысль в на холсте конфигуратора :)
#26 by Ненавижу 1С
пример, выдает непрерывные участки дат, когда были заданы валюты (хотя бы одной, без фильтра по валютам):        КурсыВалютН.Период ЕСТЬ NULL        И КурсыВалютК.Период ЕСТЬ NULL ) КАК ВложенныйЗапрос        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют        ПО (КурсыВалют.Период МЕЖДУ ВложенныйЗапрос.ПериодНач И ВложенныйЗапрос.ПериодКон) СГРУППИРОВАТЬ ПО
#27 by TormozIT
А, не. Здесь мимо. Наверное по регистрам расчета можно более эффективно посчитать.
#28 by Живой Ископаемый
не РР, РС.. буквально скопирован с КурсовВалют
#29 by Живой Ископаемый
Почти супер, потому что у меня РС "Невыходы" скопирован с РС КурсыВалют, но я правда изменил семантику - если нет за какой-то день записи, то стало быть это не то же самое состояние, а нет невыхода... :(
#30 by КонецЕсли
Дак уже выразил в консоли, перед тем как запостить . Только я ставил эксперементы на себе (нафига мне ждать пока он весь персонал обработает) и в запрос встроил отбор по физлицу. Автору такие оганичения нафиг нужны были, поэтому постить сюда не стал. Выглядит запрос как дальний родственник
#31 by Deon
А чем тебе не вштырило?
#32 by Ненавижу 1С
условия поставь
#33 by Ненавижу 1С
тьфу, а тут тоже самое, он выводит даты на которые проставлен курс валют
#34 by Ненавижу 1С
в получилось так:
#35 by Живой Ископаемый
с конца начал.. сейчас...
#36 by kumena
Это что за конфигурация где надо свой регистр для учета невыходов создавать?
#37 by Живой Ископаемый
БП...
#38 by Ненавижу 1С
я тебе в дал ответ
#39 by Живой Ископаемый
Еще одна причина по которой не катит - нужно соединять не только ПО период, но и по Сотрудник, Организация, Причина... у меня не вышло.. Пробую 20 пока
#40 by kumena
я так и не понял, начало от конца отпуска можно отличить?
#41 by Живой Ископаемый
жирни, вкусни! кжается 20 действительно работает: ==== ВЫБРАТЬ    Невыходы.Сотрудник,                    И Н1.Период ЕСТЬ NULL )) ГДЕ    Невыходы2.Период ЕСТЬ NULL
#42 by Живой Ископаемый
Ну смотри... можно отличить разырвом между записями.. в самой записи признаков нет: На первой картинке видим что два непрерывных интервала Невыходов - с 6-го по 10 и с 18 по 31... Попытался как смог показать записи из РС по каждому из интервалов(для первого интервала не все записи в списке видны) Запрос из 20 правильно поделил эти интервалы... Спасибо огромное.. Сам бы я наверное такой запрос не написал
#43 by МихаилМ
вот вариант
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С