|
Как получить из отдельных дат периоды в запросе? | ☑ | ||
---|---|---|---|---|
0
inetguru
31.10.11
✎
19:59
|
Товарищи, подскажите, как сделать запрос.
Есть табель учета рабочего времени, есть регистр, где хранится информация о состоянии работника по табелю на каждый отдельно взятый день. Нужно из последовательности этих дат получить периоды состояний работника. Вот пример исходных данных: Период ВИДИСПОЛЬЗОВАНИЯРАБОЧЕГОВРЕМЕНИ 01.09.2010 0:00:00 Дни явок 02.09.2010 0:00:00 Дни явок 03.09.2010 0:00:00 Дни явок 06.09.2010 0:00:00 Нетрудоспособность 07.09.2010 0:00:00 Нетрудоспособность 08.09.2010 0:00:00 Нетрудоспособность 09.09.2010 0:00:00 Нетрудоспособность 10.09.2010 0:00:00 Нетрудоспособность 11.09.2010 0:00:00 Нетрудоспособность 12.09.2010 0:00:00 Нетрудоспособность 13.09.2010 0:00:00 Нетрудоспособность 14.09.2010 0:00:00 Нетрудоспособность 15.09.2010 0:00:00 Нетрудоспособность 16.09.2010 0:00:00 Нетрудоспособность 17.09.2010 0:00:00 Нетрудоспособность 20.09.2010 0:00:00 Дни явок 21.09.2010 0:00:00 Дни явок 22.09.2010 0:00:00 Дни явок 23.09.2010 0:00:00 Дни явок 24.09.2010 0:00:00 Дни явок 27.09.2010 0:00:00 Дни явок 28.09.2010 0:00:00 Дни явок 29.09.2010 0:00:00 Дни явок 30.09.2010 0:00:00 Дни явок В результате работы запроса нужно получить вот это: НачалоПериода ОкончаниеПериода ВИДИСПОЛЬЗОВАНИЯРАБОЧЕГОВРЕМЕНИ 01.09.2010 0:00:00 03.09.2010 0:00:00 Дни явок 06.09.2010 0:00:00 17.09.2010 0:00:00 Нетрудоспособность 20.09.2010 0:00:00 30.09.2010 0:00:00 Дни явок Т.е. состояние работника меняется если указано другое состояние (это касается разрыва с 25.09.10 по 26.09.10 – тут ничего не меняется, поэтому период не прерывается на 24.09.2011). Мозг на грани кипения. |
|||
1
Sersh
31.10.11
✎
20:05
|
(0) Без запроса никак?
|
|||
2
Живой Ископаемый
31.10.11
✎
20:10
|
||||
3
inetguru
01.11.11
✎
01:45
|
Ура!!! Спасибо за ссылку. Воспользовался данными темы и вот что получил:
<PRE style="color: blue">ВЫБРАТЬ ВложенныйЗапрос<span style="color: red">.</span>ПериодНач КАК ПериодНач<span style="color: red">,</span> ВложенныйЗапрос<span style="color: red">.</span>ПериодКон<span style="color: red">,</span> ВложенныйЗапрос<span style="color: red">.</span>ВидИспользованияРабочегоВремени ИЗ <span style="color: red">(</span>ВЫБРАТЬ РабочееВремяНач<span style="color: red">.</span>Период КАК ПериодНач<span style="color: red">,</span> РабочееВремяКон<span style="color: red">.</span>Период КАК ПериодКон<span style="color: red">,</span> РабочееВремяНач<span style="color: red">.</span>ВидИспользованияРабочегоВремени КАК ВидИспользованияРабочегоВремени<span style="color: red">,</span> РабочееВремяНач<span style="color: red">.</span>Сотрудник КАК Сотрудник ИЗ РегистрНакопления<span style="color: red">.</span>РабочееВремяРаботниковОрганизаций КАК РабочееВремяНач ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления<span style="color: red">.</span>РабочееВремяРаботниковОрганизаций КАК РабочееВремяКон ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления<span style="color: red">.</span>РабочееВремяРаботниковОрганизаций КАК РабочееВремяК ПО <span style="color: red">(</span>РАЗНОСТЬДАТ<span style="color: red">(</span>РабочееВремяКон<span style="color: red">.</span>Период<span style="color: red">,</span> РабочееВремяК<span style="color: red">.</span>Период<span style="color: red">,</span> ДЕНЬ<span style="color: red">)</span> <span style="color: red">=</span> <span style="color: black">1</span><span style="color: red">)</span> И РабочееВремяКон<span style="color: red">.</span>Сотрудник <span style="color: red">=</span> РабочееВремяК<span style="color: red">.</span>Сотрудник И РабочееВремяКон<span style="color: red">.</span>ВидИспользованияРабочегоВремени <span style="color: red">=</span> РабочееВремяК<span style="color: red">.</span>ВидИспользованияРабочегоВремени ПО РабочееВремяНач<span style="color: red">.</span>Период <span style="color: red"><=</span> РабочееВремяКон<span style="color: red">.</span>Период И РабочееВремяНач<span style="color: red">.</span>Сотрудник <span style="color: red">=</span> РабочееВремяКон<span style="color: red">.</span>Сотрудник И РабочееВремяНач<span style="color: red">.</span>ВидИспользованияРабочегоВремени <span style="color: red">=</span> РабочееВремяКон<span style="color: red">.</span>ВидИспользованияРабочегоВремени ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления<span style="color: red">.</span>РабочееВремяРаботниковОрганизаций КАК РабочееВремяН ПО <span style="color: red">(</span>РАЗНОСТЬДАТ<span style="color: red">(</span>РабочееВремяН<span style="color: red">.</span>Период<span style="color: red">,</span> РабочееВремяНач<span style="color: red">.</span>Период<span style="color: red">,</span> ДЕНЬ<span style="color: red">)</span> <span style="color: red">=</span> <span style="color: black">1</span><span style="color: red">)</span> И РабочееВремяНач<span style="color: red">.</span>Сотрудник <span style="color: red">=</span> РабочееВремяН<span style="color: red">.</span>Сотрудник И РабочееВремяНач<span style="color: red">.</span>ВидИспользованияРабочегоВремени <span style="color: red">=</span> РабочееВремяН<span style="color: red">.</span>ВидИспользованияРабочегоВремени ГДЕ РабочееВремяН<span style="color: red">.</span>Период ЕСТЬ NULL И РабочееВремяК<span style="color: red">.</span>Период ЕСТЬ NULL И РабочееВремяНач<span style="color: red">.</span>Сотрудник <span style="color: red">=</span> <span style="color: brown">&Сотрудник </span> И РабочееВремяНач<span style="color: red">.</span>Период <span style="color: red">>=</span> <span style="color: brown">&НачалоПериода </span> И РабочееВремяНач<span style="color: red">.</span>Период <span style="color: red"><=</span> <span style="color: brown">&КонецПериода </span> И РабочееВремяКон<span style="color: red">.</span>Период <span style="color: red">>=</span> <span style="color: brown">&НачалоПериода </span> И РабочееВремяКон<span style="color: red">.</span>Период <span style="color: red"><=</span> <span style="color: brown">&КонецПериода</span><span style="color: red">)</span> КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления<span style="color: red">.</span>РабочееВремяРаботниковОрганизаций КАК РабочееВремя ПО <span style="color: red">(</span>РабочееВремя<span style="color: red">.</span>Период МЕЖДУ ВложенныйЗапрос<span style="color: red">.</span>ПериодНач И ВложенныйЗапрос<span style="color: red">.</span>ПериодКон<span style="color: red">)</span> И ВложенныйЗапрос<span style="color: red">.</span>ВидИспользованияРабочегоВремени <span style="color: red">=</span> РабочееВремя<span style="color: red">.</span>ВидИспользованияРабочегоВремени И ВложенныйЗапрос<span style="color: red">.</span>Сотрудник <span style="color: red">=</span> РабочееВремя<span style="color: red">.</span>Сотрудник СГРУППИРОВАТЬ ПО ВложенныйЗапрос<span style="color: red">.</span>ПериодНач<span style="color: red">,</span> ВложенныйЗапрос<span style="color: red">.</span>ПериодКон<span style="color: red">,</span> ВложенныйЗапрос<span style="color: red">.</span>ВидИспользованияРабочегоВремени ИМЕЮЩИЕ КОЛИЧЕСТВО<span style="color: red">(</span>РАЗЛИЧНЫЕ РабочееВремя<span style="color: red">.</span>Период<span style="color: red">)</span> <span style="color: red">=</span> РАЗНОСТЬДАТ<span style="color: red">(</span>ВложенныйЗапрос<span style="color: red">.</span>ПериодНач<span style="color: red">,</span> ВложенныйЗапрос<span style="color: red">.</span>ПериодКон<span style="color: red">,</span> ДЕНЬ<span style="color: red">)</span> <span style="color: red">+</span> <span style="color: black">1 </span> УПОРЯДОЧИТЬ ПО ПериодНач </PRE> |
|||
4
inetguru
01.11.11
✎
01:47
|
Извинюсь за предыдущий пост.Хотел фот так:
[COLOR=#0000FF]ВЫБРАТЬ ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодНач КАК ПериодНач[COLOR=#FF0000],[/COLOR] ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодКон[COLOR=#FF0000],[/COLOR] ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени ИЗ [COLOR=#FF0000]([/COLOR]ВЫБРАТЬ РабочееВремяНач[COLOR=#FF0000].[/COLOR]Период КАК ПериодНач[COLOR=#FF0000],[/COLOR] РабочееВремяКон[COLOR=#FF0000].[/COLOR]Период КАК ПериодКон[COLOR=#FF0000],[/COLOR] РабочееВремяНач[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени КАК ВидИспользованияРабочегоВремени[COLOR=#FF0000],[/COLOR] РабочееВремяНач[COLOR=#FF0000].[/COLOR]Сотрудник КАК Сотрудник ИЗ РегистрНакопления[COLOR=#FF0000].[/COLOR]РабочееВремяРаботниковОрганизаций КАК РабочееВремяНач ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления[COLOR=#FF0000].[/COLOR]РабочееВремяРаботниковОрганизаций КАК РабочееВремяКон ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления[COLOR=#FF0000].[/COLOR]РабочееВремяРаботниковОрганизаций КАК РабочееВремяК ПО [COLOR=#FF0000]([/COLOR]РАЗНОСТЬДАТ[COLOR=#FF0000]([/COLOR]РабочееВремяКон[COLOR=#FF0000].[/COLOR]Период[COLOR=#FF0000],[/COLOR] РабочееВремяК[COLOR=#FF0000].[/COLOR]Период[COLOR=#FF0000],[/COLOR] ДЕНЬ[COLOR=#FF0000])[/COLOR] [COLOR=#FF0000]=[/COLOR] [COLOR=#00FF00]1[/COLOR][COLOR=#FF0000])[/COLOR] И РабочееВремяКон[COLOR=#FF0000].[/COLOR]Сотрудник [COLOR=#FF0000]=[/COLOR] РабочееВремяК[COLOR=#FF0000].[/COLOR]Сотрудник И РабочееВремяКон[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени [COLOR=#FF0000]=[/COLOR] РабочееВремяК[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени ПО РабочееВремяНач[COLOR=#FF0000].[/COLOR]Период [COLOR=#FF0000]<=[/COLOR] РабочееВремяКон[COLOR=#FF0000].[/COLOR]Период И РабочееВремяНач[COLOR=#FF0000].[/COLOR]Сотрудник [COLOR=#FF0000]=[/COLOR] РабочееВремяКон[COLOR=#FF0000].[/COLOR]Сотрудник И РабочееВремяНач[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени [COLOR=#FF0000]=[/COLOR] РабочееВремяКон[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления[COLOR=#FF0000].[/COLOR]РабочееВремяРаботниковОрганизаций КАК РабочееВремяН ПО [COLOR=#FF0000]([/COLOR]РАЗНОСТЬДАТ[COLOR=#FF0000]([/COLOR]РабочееВремяН[COLOR=#FF0000].[/COLOR]Период[COLOR=#FF0000],[/COLOR] РабочееВремяНач[COLOR=#FF0000].[/COLOR]Период[COLOR=#FF0000],[/COLOR] ДЕНЬ[COLOR=#FF0000])[/COLOR] [COLOR=#FF0000]=[/COLOR] [COLOR=#00FF00]1[/COLOR][COLOR=#FF0000])[/COLOR] И РабочееВремяНач[COLOR=#FF0000].[/COLOR]Сотрудник [COLOR=#FF0000]=[/COLOR] РабочееВремяН[COLOR=#FF0000].[/COLOR]Сотрудник И РабочееВремяНач[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени [COLOR=#FF0000]=[/COLOR] РабочееВремяН[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени ГДЕ РабочееВремяН[COLOR=#FF0000].[/COLOR]Период ЕСТЬ NULL И РабочееВремяК[COLOR=#FF0000].[/COLOR]Период ЕСТЬ NULL И РабочееВремяНач[COLOR=#FF0000].[/COLOR]Сотрудник [COLOR=#FF0000]=[/COLOR] [COLOR=brown]&Сотрудник [/COLOR] И РабочееВремяНач[COLOR=#FF0000].[/COLOR]Период [COLOR=#FF0000]>=[/COLOR] [COLOR=brown]&НачалоПериода [/COLOR] И РабочееВремяНач[COLOR=#FF0000].[/COLOR]Период [COLOR=#FF0000]<=[/COLOR] [COLOR=brown]&КонецПериода [/COLOR] И РабочееВремяКон[COLOR=#FF0000].[/COLOR]Период [COLOR=#FF0000]>=[/COLOR] [COLOR=brown]&НачалоПериода [/COLOR] И РабочееВремяКон[COLOR=#FF0000].[/COLOR]Период [COLOR=#FF0000]<=[/COLOR] [COLOR=brown]&КонецПериода[/COLOR][COLOR=#FF0000])[/COLOR] КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления[COLOR=#FF0000].[/COLOR]РабочееВремяРаботниковОрганизаций КАК РабочееВремя ПО [COLOR=#FF0000]([/COLOR]РабочееВремя[COLOR=#FF0000].[/COLOR]Период МЕЖДУ ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодНач И ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодКон[COLOR=#FF0000])[/COLOR] И ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени [COLOR=#FF0000]=[/COLOR] РабочееВремя[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени И ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]Сотрудник [COLOR=#FF0000]=[/COLOR] РабочееВремя[COLOR=#FF0000].[/COLOR]Сотрудник СГРУППИРОВАТЬ ПО ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодНач[COLOR=#FF0000],[/COLOR] ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодКон[COLOR=#FF0000],[/COLOR] ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ВидИспользованияРабочегоВремени ИМЕЮЩИЕ КОЛИЧЕСТВО[COLOR=#FF0000]([/COLOR]РАЗЛИЧНЫЕ РабочееВремя[COLOR=#FF0000].[/COLOR]Период[COLOR=#FF0000])[/COLOR] [COLOR=#FF0000]=[/COLOR] РАЗНОСТЬДАТ[COLOR=#FF0000]([/COLOR]ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодНач[COLOR=#FF0000],[/COLOR] ВложенныйЗапрос[COLOR=#FF0000].[/COLOR]ПериодКон[COLOR=#FF0000],[/COLOR] ДЕНЬ[COLOR=#FF0000])[/COLOR] [COLOR=#FF0000]+[/COLOR] [COLOR=#00FF00]1 [/COLOR] УПОРЯДОЧИТЬ ПО ПериодНач [/COLOR] |
|||
5
inetguru
01.11.11
✎
01:48
|
Блин, вот это точно оно:
ВЫБРАТЬ ВложенныйЗапрос.ПериодНач КАК ПериодНач, ВложенныйЗапрос.ПериодКон, ВложенныйЗапрос.ВидИспользованияРабочегоВремени ИЗ (ВЫБРАТЬ РабочееВремяНач.Период КАК ПериодНач, РабочееВремяКон.Период КАК ПериодКон, РабочееВремяНач.ВидИспользованияРабочегоВремени КАК ВидИспользованияРабочегоВремени, РабочееВремяНач.Сотрудник КАК Сотрудник ИЗ РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяНач ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяКон ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяК ПО (РАЗНОСТЬДАТ(РабочееВремяКон.Период, РабочееВремяК.Период, ДЕНЬ) = 1) И РабочееВремяКон.Сотрудник = РабочееВремяК.Сотрудник И РабочееВремяКон.ВидИспользованияРабочегоВремени = РабочееВремяК.ВидИспользованияРабочегоВремени ПО РабочееВремяНач.Период <= РабочееВремяКон.Период И РабочееВремяНач.Сотрудник = РабочееВремяКон.Сотрудник И РабочееВремяНач.ВидИспользованияРабочегоВремени = РабочееВремяКон.ВидИспользованияРабочегоВремени ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяН ПО (РАЗНОСТЬДАТ(РабочееВремяН.Период, РабочееВремяНач.Период, ДЕНЬ) = 1) И РабочееВремяНач.Сотрудник = РабочееВремяН.Сотрудник И РабочееВремяНач.ВидИспользованияРабочегоВремени = РабочееВремяН.ВидИспользованияРабочегоВремени ГДЕ РабочееВремяН.Период ЕСТЬ NULL И РабочееВремяК.Период ЕСТЬ NULL И РабочееВремяНач.Сотрудник = &Сотрудник И РабочееВремяНач.Период >= &НачалоПериода И РабочееВремяНач.Период <= &КонецПериода И РабочееВремяКон.Период >= &НачалоПериода И РабочееВремяКон.Период <= &КонецПериода) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремя ПО (РабочееВремя.Период МЕЖДУ ВложенныйЗапрос.ПериодНач И ВложенныйЗапрос.ПериодКон) И ВложенныйЗапрос.ВидИспользованияРабочегоВремени = РабочееВремя.ВидИспользованияРабочегоВремени И ВложенныйЗапрос.Сотрудник = РабочееВремя.Сотрудник СГРУППИРОВАТЬ ПО ВложенныйЗапрос.ПериодНач, ВложенныйЗапрос.ПериодКон, ВложенныйЗапрос.ВидИспользованияРабочегоВремени ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РабочееВремя.Период) = РАЗНОСТЬДАТ(ВложенныйЗапрос.ПериодНач, ВложенныйЗапрос.ПериодКон, ДЕНЬ) + 1 УПОРЯДОЧИТЬ ПО ПериодНач |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |