|
1С 8. Запрос из регистра сведений по периодам с отбором по измерению | ☑ | ||
---|---|---|---|---|
0
mishkerdon
03.11.15
✎
09:19
|
Добрый день! Есть регистр сведений "Собственники помещения" с периодичностью "Месяц". Он состоит из измерения "Помещение" и ресурса "Собственник".
Нужно вытащить историю владения определенного помещения определенным собственником. Допустим, с 1 ноября 2014 по 31 декабря 2015 и с 1 апреля 2015 по 1 июля 2015 собственник1 владел помещением. Все это забито в регистре в виде записей: 1 - 01.11.2014 собственник1 2 - 01.01.2015 собственник2 3 - 01.04.2015 собственник1 4 - 01.07.2015 собственник3 Как вытащить историю владения собственником1 через запрос? (т.е. с датой начала и конца владения) |
|||
1
Горогуля
03.11.15
✎
09:22
|
сначала выбрать, потом из, затем где
|
|||
2
Molinor
03.11.15
✎
09:25
|
За тебя предлагаешь сделать? Показывай что сделал, что не получается.
|
|||
3
mishkerdon
03.11.15
✎
09:38
|
(2) не предлагаю сделать, просто может кто-то сталкивался.
На данный момент вижу только возможность через код сначала вывести конец каждого месяца в указанном периоде, и на конец каждого месяца отдельный запрос запускать, затем результат запроса опять через код сгруппировать по непрерывным периодам. Но чтобы все это в одном запросе, никак в голову не входит. |
|||
4
Ващета
03.11.15
✎
09:43
|
Две таблицы со срезами можно соединить с условием период второй больше периода первой из первой вытаскивать начало пользования, из второй по группировке минимум вытаскивать окончание пользования
|
|||
5
mishkerdon
03.11.15
✎
09:50
|
(4) что-то не очень понял. Как это сделать, если несколько раз владел помещением?
|
|||
6
Molinor
03.11.15
✎
09:51
|
(5)
Вытаскиваешь все начала владения помещением нужным собственником, левым соединением цепляешь этот же РС, где период больше начала владения и сменился собственник. И находишь минимум, вот твоя дата окончания владения. |
|||
7
hhhh
03.11.15
✎
10:21
|
(5) запрос разве бывает НЕ несколько? Всегда ведь несколько.
|
|||
8
mishkerdon
03.11.15
✎
11:03
|
(6) разве в этом случае не вернет несколько раз типа 01.11.2014-01.01.2015 и 01.11.2014-01.07.2015 и 01.04.2015-01.07.2015 ?
|
|||
9
Molinor
03.11.15
✎
11:13
|
(8)
До конца дочитай (6) "И находишь минимум, вот твоя дата окончания владения." |
|||
10
mishkerdon
03.11.15
✎
11:14
|
(9) спасибо большое! попробую написать запрос, если что отпишусь :)
|
|||
11
mishkerdon
03.11.15
✎
11:44
|
В общем ситуация такая, немножко дополню вышеуказанный совет - после группировки по началу владения и выборки минимального конца владения, нужно затем группировать по концу владения и выбрать минимальное начало владения.
Это делается для исключения двойных записей, когда в РС идут записи типа 1 - 01.01.2015 собственник1 2 - 01.04.2015 собственник1 3 - 01.07.2015 собственник2 |
|||
12
Molinor
03.11.15
✎
11:46
|
(11)
Ну почему нельзя полностью. то прочитать? "левым соединением цепляешь этот же РС, где период больше начала владения и !!!сменился собственник!!!" |
|||
13
Molinor
03.11.15
✎
11:47
|
(12)
Ошибся, немного не о том подумал. |
|||
14
MrKartez
03.11.15
✎
12:04
|
Получаешь периоды владения собственника под номером один. Тащишь это фигню в отдельную вложенную таблицу. во втором пакетном запросе тащишь эту вт и вдовесок физическую таблицу регистра, соединяя по условию ВТ.Период <РегистрСведений.Период, при этом делаешь группировку Минимум (РЕГИСТРСВЕДЕНИЙ.ПИРЕИОД)ВТ.Период - это дата начала владения, Минимум - дата окончания владения, но так как минимум будет означать начала следующего владельца, для понта можешь отнять от даты одну секунду, чтобы вместо 01.11.2015, например, было окончания месяца 31.10.2015 23:59:59
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |