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



Задача с олимпиады (запрос 1С)

Задача с олимпиады (запрос 1С)
Я
   SeregaMW
 
01.02.18 - 17:51
Добрый вечер Всем, помогите решить задачу или направить на путь ее решения.
Необходимо решить задачу запросом.
Есть n записей в справочники сотрудники так же в периодическом регистре сведений хранятся записи о событиях сотрудников (ушел в отпуск, уволен, вышел на работу и т.д.) Необходимо вывести отчет о истории событий сотрудников вида:
Сотрудник|Событие|ДатаНачала|ДатаКонца

Справочник сотрудники содержит реквизит "Наименование"

Регистр сведений периодический, измерения сотрудник, ресурсы Событие(ушел в отпуск, уволен, вышел на работу и т.д.)

Ссылка на конфигурацию http://dropmefiles.com/FlPkZ
 
 
   H A D G E H O G s
 
1 - 01.02.18 - 17:54
Не о событиях, а о состояниях сотрудника
   SeregaMW
 
2 - 01.02.18 - 17:55
(1) Возможно
   SeregaMW
 
3 - 01.02.18 - 17:56
(1) Откуда задача как решить?
   mistеr
 
4 - 01.02.18 - 17:56
(0) Рассказывай, как пробовал, что не получается.
И что за олимпиада.
   Fram
 
5 - 01.02.18 - 17:57
(3) задачка с собеседований. Сам никак?
   Неверный Параметр И
 
6 - 01.02.18 - 17:59
(0) > или направить на путь
Учитесь самостоятельно. Это полезно и интересно.
   SeregaMW
 
7 - 01.02.18 - 17:59
(5) Ни как не могу получить дату конца события(состояния).
   X Leshiy
 
8 - 01.02.18 - 18:01
(7) Ну очевидно же, что дата конца события это дата начала следующего.
   X Leshiy
 
9 - 01.02.18 - 18:03
(0) Главное, пиши запрос в цикле, за это дополнительно баллы накидывают.
   Fram
 
10 - 01.02.18 - 18:03
(7) могу подсказку дать. Надо соединять регистр с самим собой, и не раз.
Сам не программист?
 
 Рекламное место пустует
   SeregaMW
 
11 - 01.02.18 - 18:03
(8) Это очевидно как это в запросе выразить?
   Неверный Параметр И
 
12 - 01.02.18 - 18:04
(7) Это за секунду до начала следующего.
При выводе в таблицу надо рисовать данные не текущей позиции выборки, а запомненной предыдущей. Последнюю обработать отдельно.
   Неверный Параметр И
 
13 - 01.02.18 - 18:04
(11) зачем?
   X Leshiy
 
14 - 01.02.18 - 18:05
(12) (13) Ему так задали, непонятно, нахрена)

(11) см. (10)
   SeregaMW
 
15 - 01.02.18 - 18:06
(9) Нету циклов, только запрос и очень толсто тролишь!
(13) Условия задачи
   Неверный Параметр И
 
16 - 01.02.18 - 18:08
(15) О, условия из (0) на ходу меняются. Сейчас, наверно, мы еще про СКД услышим
   X Leshiy
 
17 - 01.02.18 - 18:08
(15) Да ну. Лично я получаю остатки по периодам строго в цикле!

В гробу я видал городить дурацкие стоэтажные запросы))
   SeregaMW
 
18 - 01.02.18 - 18:09
(17) садись ДВА! Надо в запросе!
   SeregaMW
 
19 - 01.02.18 - 18:10
(16) Что изменилось?
   X Leshiy
 
20 - 01.02.18 - 18:11
(18) Это тебе надо, а я могу себе позволить)))
   Неверный Параметр И
 
21 - 01.02.18 - 18:13
(18) Ололомпиадник, какой социальный пакет ожидает победителя? Оклад белый? (:
   SeregaMW
 
22 - 01.02.18 - 18:13
(10) Согласен, но не могу понять как его так соединять?
   mistеr
 
23 - 01.02.18 - 18:14
(11) Подсказываю. Для каждой записи выбираешь те, которые идут после нее. Из них выбираешь самую раннюю. Берешь ее дату и отнимаешь секунду.
   X Leshiy
 
24 - 01.02.18 - 18:16
(23) И получаешь, тадам! Запрос в цикле только внутри запроса))
   Неверный Параметр И
 
25 - 01.02.18 - 18:16
(23) Ты должен написать текст запроса. Это важно!
   X Leshiy
 
26 - 01.02.18 - 18:16
(22) Они везде, запросы в циклах, от них не уйдешь!))
   H A D G E H O G s
 
27 - 01.02.18 - 18:16
ВЫБРАТЬ
    Состояния.Сотрудник КАК Сотрудник,
    Состояния.Период КАК Период,
    Состояния.Состояние КАК Состояние,
    МИНИМУМ(ДатаСледующегоСостояния.Период) КАК ДатаБудущегоСобытия
ПОМЕСТИТЬ СотрудникиПоПериодам
ИЗ
    РегистрСведений.Состояния КАК Состояния
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Состояния КАК ДатаСледующегоСостояния
        ПО (Состояния.Сотрудник = ДатаСледующегоСостояния.Сотрудник)
            И (Состояния.Период < ДатаСледующегоСостояния.Период)

СГРУППИРОВАТЬ ПО
    Состояния.Сотрудник,
    Состояния.Период,
    Состояния.Состояние
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    СотрудникиПоПериодам.Сотрудник КАК Сотрудник,
    СотрудникиПоПериодам.Период КАК Период,
    СотрудникиПоПериодам.Состояние КАК Состояние,
    Состояния.Состояние КАК БудущееСостояние
ИЗ
    СотрудникиПоПериодам КАК СотрудникиПоПериодам
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Состояния КАК Состояния
        ПО СотрудникиПоПериодам.Сотрудник = Состояния.Сотрудник
            И СотрудникиПоПериодам.ДатаБудущегоСобытия = Состояния.Период

УПОРЯДОЧИТЬ ПО
    Период
   H A D G E H O G s
 
28 - 01.02.18 - 18:17
У автора 8.3.11, мы такой пока не пользуемся, накидал по быстрому конфу, уверен, автор адаптирует сам.
   Неверный Параметр И
 
29 - 01.02.18 - 18:18
Ура. Осталось научить ТС быть жадным.
   H A D G E H O G s
 
30 - 01.02.18 - 18:21
(0) Что за Олимпиада, Серёга? Мы хотим тоже поучаствовать? Не специальная олимпиада?
   SeregaMW
 
31 - 01.02.18 - 18:39
(30) Олимпиада между студентами, а тут сам решить не могу, хотел понять суть решения,    H A D G E H O G s спасибо за помощь завтра попробую, напишу и расскажу что получилось!
   SeregaMW
 
32 - 01.02.18 - 18:40
(29) А ты Неверный Параметр И, троль! Ты в жизни попробуй так с незнакомым человеком пообщаться!
   mistеr
 
33 - 01.02.18 - 18:54
(27) Ну зачем так, сразу? Отнял у человека шанс немного продвинуться в профессии.
 
 
   Sapiens_bru
 
34 - 01.02.18 - 19:22
"На секунду вперед" , "Самую раннюю после неё"

Одинэсники забыли про СрезПервых?
   Йохохо
 
35 - 01.02.18 - 19:24
(33) нет, он тонко решил на оценку "ты списал", посмотри результат)
   H A D G E H O G s
 
36 - 01.02.18 - 19:29
В край моего щита метит копьем закат.
Пыль на зубах скрипит, пыль застилает взгляд.
Я говорю: "Мой господин, прекрасный граф Роланд,
Едем другим путем!"
Скалы над пропастью встали темницами,
Здесь доверять нельзя людям и птицам, и
Я говорю: "Мой господин, прекрасный граф Роланд,
Едем другим путем!"

с Йовин.
   H A D G E H O G s
 
37 - 01.02.18 - 19:29
(35) Я уверен, автор доработает.
   Fram
 
38 - 01.02.18 - 19:39
(22) мдэ.. а столько хвалился в JOB: Возьму удаленную работу.
   Fram
 
39 - 01.02.18 - 19:40
Мое мнение что кодер неспособный построить запрос для задачи в (0) это максимум уровень джуниора с соответствующей зп
   brznzglwgn
 
40 - 01.02.18 - 19:41
Так это в ЗУПе стандартный типовой запрос на получение состояний сотрудников. Ниче там не много.. одна ВТ и 3 соединения.
   один я дАртаньян
 
41 - 07.02.18 - 20:18
(0) Что за олимпиада? Вроде олиспиада была 06.02.18 и задача была другой.
   Cyberhawk
 
42 - 07.02.18 - 22:11
Сколько платят за решение вопроса?
   glebgleb
 
43 - 07.02.18 - 22:17
(42) Поздно. Автор отстранен решением МОК.
   Armando
 
44 - 07.02.18 - 23:40
Ветку не читал. Здесь об этом?
https://its.1c.ru/db/metod81#content:2910:hdoc
   Fragster
 
45 - 07.02.18 - 23:54
соединение с коррелированным подзапросом в условии. изи.
   Fragster
 
46 - 08.02.18 - 00:12
но однократный проход отсортированной таблицы будет эффективнее
   Franchiser
 
47 - 08.02.18 - 00:34
Нужно сделать запрос "сам с собой"
   Peltzer
 
48 - 08.02.18 - 06:47
(27) Т.з. воспринято не верно.

ВЫБРАТЬ
    Состояния.Сотрудник КАК Сотрудник,
    Состояния.Состояние КАК Состояние,
    Состояния.Период КАК ДатаНачала,
    МИНИМУМ(ДатаСледующегоСостояния.Период) КАК ДатаКонца
ИЗ
    РегистрСведений.Состояния КАК Состояния
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Состояния КАК ДатаСледующегоСостояния
        ПО (Состояния.Сотрудник = ДатаСледующегоСостояния.Сотрудник)
            И (Состояния.Период < ДатаСледующегоСостояния.Период)

СГРУППИРОВАТЬ ПО
    Состояния.Сотрудник,
    Состояния.Период,
    Состояния.Состояние
   K1RSAN
 
49 - 08.02.18 - 08:32
Ну можно сделать вообще топорно. Конечно, будут кидаться тапками в это решение, но вроде должно работать.

ВЫБРАТЬ
    Состояния.Сотрудник КАК Сотрудник,
    Состояния.Состояние КАК Состояние,
    Состояния.Период КАК Дата
ИЗ
    РегистрСведений.Состояния КАК Состояния
СГРУППИРОВАТЬ ПО
    Состояния.Сотрудник,
    Состояния.Период,
    Состояния.Состояние

Макет делаешь с параметрами, тут стандартно
В обходе цикла

Если НЕ Первый Тогда
ОбластьСтрока.Параметры.ДатаКонца = Выборка.Дата;
ТабДок.Вывести(ОбластьСтрока);
КонецЕсли;
ОбластьСтрока.Параметры.Сотрудник = Выборка.Сотрудник;
//И Т.Д.


После цикла обрабатываешь последнюю выборку, а в параметр "ДатаКонца" ставишь что-нибудь типа "по текущее время"

З.Ы. если надо именно в запросе получить готовую для работы выборку - то тут ХЗ.
 
 Рекламное место пустует
   evorle145
 
50 - 08.02.18 - 09:13
(27) только не давно разбирался в ЗУПе с личной карточкой и там был такой же запрос для раздела 8, где надо было определить начало и конец отпусков) так что задача вполне жизненная.
   alxxsssar
 
51 - 08.02.18 - 09:39
(10) Чой то не раз. Одного раза достаточно с условием меньше или равно. и максимумом потом группировать


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