Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

ЗУП 3 Получить кадровую историю за период с учетом границ

ЗУП 3 Получить кадровую историю за период с учетом границ
Я
   егаис
 
04.06.18 - 22:20
Не подскажете, какой функций ОМ получить кадровую историю сотрудника по выбранным полям с учетом значений на границе поиска
Т.е. значение на начало, обороты, значение на конец
 
 
   егаис
 
1 - 04.06.18 - 22:31
Или нет такой функции и писать запрос с объединением срезов и оборотов?
   егаис
 
2 - 04.06.18 - 22:51
так, вопрос закрыт, нашел несколько другое решение.
Другая задача
есть ТЗ
09.01.18  1
12.01.18  1
14.01.18  0
15.01.18  1
18.01.18  0
21.01.18  0

как бы красиво его собрать в таблицу периодов, а не тупым перебором
09.01.18  13.01.18   1
14.01.18             0
15.01.18             1
18.01.18  21.01.18   0
   mmmarat
 
3 - 04.06.18 - 23:03
(0) ЗарплатаКадрыПериодическиеРегистры.СоздатьВТИмяРегистраПериоды(...

по таблице КадроваяИсторияСотрудников.

На входе ВТ с фильтром, на выходе интервалы изменений.
   catena
 
4 - 05.06.18 - 05:04
" нашел несколько другое решение. "

В приличном обществе принято делиться решениями, чтобы неофиты, умеющие пользоваться поиском, не разочаровывались в данном умении.
   catena
 
5 - 05.06.18 - 05:05
(2)а почему период с 9 по 13, но 15-е отдельной датой?
   егаис
 
6 - 05.06.18 - 08:07
(4)решение не связано с запросами. Выходная таблица берется из модуля табеля.
(5) потому что у 14 значение 0, а у 15 - 1 . Получаем таблицу с границами периодов по значению.
   catena
 
7 - 05.06.18 - 08:26
(6)Все равно не вижу логики.
почему

09.01.18  1
12.01.18  1
14.01.18  0

Преобразуется в
09.01.18  13.01.18   1

А
15.01.18  1
18.01.18  0

Не преобразуется в
15.01.18  17.01.18   1
   SleepyHead
 
8 - 05.06.18 - 08:29
(0) Потому что записи действуют "до", а не "по". До 14 числа - значит по 13-е.
   Optan
 
9 - 05.06.18 - 08:31
(8) Ну так 17.01 значение продолжает оставаться = 1
   SleepyHead
 
10 - 05.06.18 - 08:32
(9) Это уже к автору, возможно, просто опечатался.
 
 Рекламное место пустует
   егаис
 
11 - 05.06.18 - 08:37
(9)да, пардон, опечатка
в принципе возвращается таблица учета рабочего времени за каждый день. Поэтому...простым перебором конечно можно получить данную таблицу, но мы не ищем легких путей, хочется красиво извратиться.
   SleepyHead
 
12 - 05.06.18 - 08:44
(11) В предложенном в (3) варианте есть обращение к таблице значений в качестве источника данных. К стыду своему, не знал..
   catena
 
13 - 05.06.18 - 09:02
(11)
Выбрать Минимум(А),Б,Признак из
(Выбрать тзГраничныеДни.Дата как А, ДобавитьКДАте(Минимум(СледПериод.Дата),День,-1) как Б, тзГраничныеДни.Признак
из ВТ как тзГраничныеДни
Левое Соединение ВТ как СледПериод по 
тзГраничныеДни.Дата<СледПериод.Дата
и тзГраничныеДни.Признак<>СледПериод.Признак
Сгруппировать по тзГраничныеДни.Дата,тзГраничныеДни.Признак) как Данные
Сгруппировать по Б,Признак
   егаис
 
14 - 05.06.18 - 11:15
(13) спасибо, красиво
   егаис
 
15 - 05.06.18 - 12:58
блин, каша получается
на этапе формирование ВТ получилось отсечь ненужные строки
на выходе имеем
Иванов 09.01
Иванов 10.01
Иванов 11.01
Иванов 14.01
Иванов 15.01
Петров 09.01
Петров 12.01
Петров 13.01

Туплю, как привести к интервалу
Иванов 09.01  11.01
Иванов 14.01  15.01
Петров 09.01  09.01
Петров 12.01  13.01
   catena
 
16 - 05.06.18 - 13:30
Выбрать ДатаКалендаря как Дата, Д.Физлицо, Выбор когда ВТ.Дата Есть NULL тогда 0 иначе 1 конец как признак
Поместить ВТ2
Из РегистрСведений.РегламентированныйПроизводственныйКалендарь Кал
Левое соединение (Выбрать различные Физлицо из ВТ)как Д по Истина
Левое Соединение ВТ как ВТ по ВТ.Дата = Кал.ДатаКалендаря и ВТ.Физлицо=Д.Физлицо
Где Кал.ДатаКалендаря между &Д1 и &Д2
;
Выбрать Минимум(А) как А,Б,Признак, Физлицо из 
(Выбрать тзГраничныеДни.Дата как А, ДобавитьКДАте(Минимум(СледПериод.Дата),День,-1) как Б, тзГраничныеДни.Физлицо, тзГраничныеДни.Признак
из ВТ2 как тзГраничныеДни
Левое Соединение ВТ2 как СледПериод по 
тзГраничныеДни.Физлицо=СледПериод.Физлицо и
тзГраничныеДни.Дата<СледПериод.Дата
и тзГраничныеДни.Признак<>СледПериод.Признак
Сгруппировать по тзГраничныеДни.Дата,тзГраничныеДни.Признак,тзГраничныеДни.Физлицо) как Данные
Где Признак=1 
Сгруппировать по Б,Признак,Физлицо
Упорядочить по Физлицо,А
   егаис
 
17 - 05.06.18 - 13:40
"ВЫБРАТЬ
    |    Таблица.Дата КАК Дата,
    |    Таблица.Сотрудник КАК Сотрудник
    |ПОМЕСТИТЬ ВТ
    |ИЗ
    |    &ДанныеПроведения КАК Таблица
    |ГДЕ
    |    Таблица.ПрерываниеСтажа
    |    И Таблица.СпособРаботы = ЗНАЧЕНИЕ(Перечисление.Способы.Вахтовый)
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    МИНИМУМ(Данные.А) КАК А,
    |    Данные.Б КАК Б,
    |    Данные.Сотрудник КАК Сотрудник
    |ИЗ
    |    (ВЫБРАТЬ
    |        тзГраничныеДни.Дата КАК А,
    |        ДОБАВИТЬКДАТЕ(МИНИМУМ(СледПериод.Дата), ДЕНЬ, -1) КАК Б,
    |        тзГраничныеДни.Сотрудник КАК Сотрудник
    |    ИЗ
    |        ВТ КАК тзГраничныеДни
    |            ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК СледПериод
    |            ПО тзГраничныеДни.Сотрудник = СледПериод.Сотрудник
    |                И тзГраничныеДни.Дата < СледПериод.Дата
    |    
    |    СГРУППИРОВАТЬ ПО
    |        тзГраничныеДни.Дата,
    |        тзГраничныеДни.Сотрудник) КАК Данные
    |
    |СГРУППИРОВАТЬ ПО
    |    Данные.Б,
    |    Данные.Сотрудник
    |
    |УПОРЯДОЧИТЬ ПО
    |    Данные.Сотрудник,
    |    А";
   егаис
 
18 - 05.06.18 - 13:45
получается ерунда вроде
Иванов 09.01  09.01
Иванов 10.01  10.01
Иванов 11.01  13.01
Петров 14.01  14.01
Петров 15.01    -
   егаис
 
19 - 05.06.18 - 14:43
ап

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует