|
Задача с олимпиады (запрос 1С) | ☑ | ||
---|---|---|---|---|
0
SeregaMW
01.02.18
✎
17:51
|
Добрый вечер Всем, помогите решить задачу или направить на путь ее решения.
Необходимо решить задачу запросом. Есть n записей в справочники сотрудники так же в периодическом регистре сведений хранятся записи о событиях сотрудников (ушел в отпуск, уволен, вышел на работу и т.д.) Необходимо вывести отчет о истории событий сотрудников вида: Сотрудник|Событие|ДатаНачала|ДатаКонца Справочник сотрудники содержит реквизит "Наименование" Регистр сведений периодический, измерения сотрудник, ресурсы Событие(ушел в отпуск, уволен, вышел на работу и т.д.) Ссылка на конфигурацию http://dropmefiles.com/FlPkZ |
|||
1
H A D G E H O G s
01.02.18
✎
17:54
|
Не о событиях, а о состояниях сотрудника
|
|||
2
SeregaMW
01.02.18
✎
17:55
|
(1) Возможно
|
|||
3
SeregaMW
01.02.18
✎
17:56
|
(1) Откуда задача как решить?
|
|||
4
mistеr
01.02.18
✎
17:56
|
(0) Рассказывай, как пробовал, что не получается.
И что за олимпиада. |
|||
5
Fram
01.02.18
✎
17:57
|
(3) задачка с собеседований. Сам никак?
|
|||
6
Неверный Параметр И
01.02.18
✎
17:59
|
(0) > или направить на путь
Учитесь самостоятельно. Это полезно и интересно. |
|||
7
SeregaMW
01.02.18
✎
17:59
|
(5) Ни как не могу получить дату конца события(состояния).
|
|||
8
X Leshiy
01.02.18
✎
18:01
|
(7) Ну очевидно же, что дата конца события это дата начала следующего.
|
|||
9
X Leshiy
01.02.18
✎
18:03
|
(0) Главное, пиши запрос в цикле, за это дополнительно баллы накидывают.
|
|||
10
Fram
01.02.18
✎
18:03
|
(7) могу подсказку дать. Надо соединять регистр с самим собой, и не раз.
Сам не программист? |
|||
11
SeregaMW
01.02.18
✎
18:03
|
(8) Это очевидно как это в запросе выразить?
|
|||
12
Неверный Параметр И
01.02.18
✎
18:04
|
(7) Это за секунду до начала следующего.
При выводе в таблицу надо рисовать данные не текущей позиции выборки, а запомненной предыдущей. Последнюю обработать отдельно. |
|||
13
Неверный Параметр И
01.02.18
✎
18:04
|
(11) зачем?
|
|||
14
X Leshiy
01.02.18
✎
18:05
|
(12) (13) Ему так задали, непонятно, нахрена)
(11) см. (10) |
|||
15
SeregaMW
01.02.18
✎
18:06
|
(9) Нету циклов, только запрос и очень толсто тролишь!
(13) Условия задачи |
|||
16
Неверный Параметр И
01.02.18
✎
18:08
|
(15) О, условия из (0) на ходу меняются. Сейчас, наверно, мы еще про СКД услышим
|
|||
17
X Leshiy
01.02.18
✎
18:08
|
(15) Да ну. Лично я получаю остатки по периодам строго в цикле!
В гробу я видал городить дурацкие стоэтажные запросы)) |
|||
18
SeregaMW
01.02.18
✎
18:09
|
(17) садись ДВА! Надо в запросе!
|
|||
19
SeregaMW
01.02.18
✎
18:10
|
(16) Что изменилось?
|
|||
20
X Leshiy
01.02.18
✎
18:11
|
(18) Это тебе надо, а я могу себе позволить)))
|
|||
21
Неверный Параметр И
01.02.18
✎
18:13
|
(18) Ололомпиадник, какой социальный пакет ожидает победителя? Оклад белый? (:
|
|||
22
SeregaMW
01.02.18
✎
18:13
|
(10) Согласен, но не могу понять как его так соединять?
|
|||
23
mistеr
01.02.18
✎
18:14
|
(11) Подсказываю. Для каждой записи выбираешь те, которые идут после нее. Из них выбираешь самую раннюю. Берешь ее дату и отнимаешь секунду.
|
|||
24
X Leshiy
01.02.18
✎
18:16
|
(23) И получаешь, тадам! Запрос в цикле только внутри запроса))
|
|||
25
Неверный Параметр И
01.02.18
✎
18:16
|
(23) Ты должен написать текст запроса. Это важно!
|
|||
26
X Leshiy
01.02.18
✎
18:16
|
(22) Они везде, запросы в циклах, от них не уйдешь!))
|
|||
27
H A D G E H O G s
01.02.18
✎
18:16
|
ВЫБРАТЬ
Состояния.Сотрудник КАК Сотрудник, Состояния.Период КАК Период, Состояния.Состояние КАК Состояние, МИНИМУМ(ДатаСледующегоСостояния.Период) КАК ДатаБудущегоСобытия ПОМЕСТИТЬ СотрудникиПоПериодам ИЗ РегистрСведений.Состояния КАК Состояния ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Состояния КАК ДатаСледующегоСостояния ПО (Состояния.Сотрудник = ДатаСледующегоСостояния.Сотрудник) И (Состояния.Период < ДатаСледующегоСостояния.Период) СГРУППИРОВАТЬ ПО Состояния.Сотрудник, Состояния.Период, Состояния.Состояние ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СотрудникиПоПериодам.Сотрудник КАК Сотрудник, СотрудникиПоПериодам.Период КАК Период, СотрудникиПоПериодам.Состояние КАК Состояние, Состояния.Состояние КАК БудущееСостояние ИЗ СотрудникиПоПериодам КАК СотрудникиПоПериодам ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Состояния КАК Состояния ПО СотрудникиПоПериодам.Сотрудник = Состояния.Сотрудник И СотрудникиПоПериодам.ДатаБудущегоСобытия = Состояния.Период УПОРЯДОЧИТЬ ПО Период |
|||
28
H A D G E H O G s
01.02.18
✎
18:17
|
У автора 8.3.11, мы такой пока не пользуемся, накидал по быстрому конфу, уверен, автор адаптирует сам.
|
|||
29
Неверный Параметр И
01.02.18
✎
18:18
|
Ура. Осталось научить ТС быть жадным.
|
|||
30
H A D G E H O G s
01.02.18
✎
18:21
|
(0) Что за Олимпиада, Серёга? Мы хотим тоже поучаствовать? Не специальная олимпиада?
|
|||
31
SeregaMW
01.02.18
✎
18:39
|
(30) Олимпиада между студентами, а тут сам решить не могу, хотел понять суть решения, H A D G E H O G s спасибо за помощь завтра попробую, напишу и расскажу что получилось!
|
|||
32
SeregaMW
01.02.18
✎
18:40
|
(29) А ты Неверный Параметр И, троль! Ты в жизни попробуй так с незнакомым человеком пообщаться!
|
|||
33
mistеr
01.02.18
✎
18:54
|
(27) Ну зачем так, сразу? Отнял у человека шанс немного продвинуться в профессии.
|
|||
34
Sapiens_bru
01.02.18
✎
19:22
|
"На секунду вперед" , "Самую раннюю после неё"
Одинэсники забыли про СрезПервых? |
|||
35
Йохохо
01.02.18
✎
19:24
|
(33) нет, он тонко решил на оценку "ты списал", посмотри результат)
|
|||
36
H A D G E H O G s
01.02.18
✎
19:29
|
В край моего щита метит копьем закат.
Пыль на зубах скрипит, пыль застилает взгляд. Я говорю: "Мой господин, прекрасный граф Роланд, Едем другим путем!" Скалы над пропастью встали темницами, Здесь доверять нельзя людям и птицам, и Я говорю: "Мой господин, прекрасный граф Роланд, Едем другим путем!" с Йовин. |
|||
37
H A D G E H O G s
01.02.18
✎
19:29
|
(35) Я уверен, автор доработает.
|
|||
38
Fram
01.02.18
✎
19:39
|
(22) мдэ.. а столько хвалился в JOB: Возьму удаленную работу.
|
|||
39
Fram
01.02.18
✎
19:40
|
Мое мнение что кодер неспособный построить запрос для задачи в (0) это максимум уровень джуниора с соответствующей зп
|
|||
40
brznzglwgn
01.02.18
✎
19:41
|
Так это в ЗУПе стандартный типовой запрос на получение состояний сотрудников. Ниче там не много.. одна ВТ и 3 соединения.
|
|||
41
один я дАртаньян
07.02.18
✎
20:18
|
(0) Что за олимпиада? Вроде олиспиада была 06.02.18 и задача была другой.
|
|||
42
Cyberhawk
07.02.18
✎
22:11
|
Сколько платят за решение вопроса?
|
|||
43
glebgleb
07.02.18
✎
22:17
|
(42) Поздно. Автор отстранен решением МОК.
|
|||
44
Armando
07.02.18
✎
23:40
|
Ветку не читал. Здесь об этом?
https://its.1c.ru/db/metod81#content:2910:hdoc |
|||
45
Fragster
гуру
07.02.18
✎
23:54
|
соединение с коррелированным подзапросом в условии. изи.
|
|||
46
Fragster
гуру
08.02.18
✎
00:12
|
но однократный проход отсортированной таблицы будет эффективнее
|
|||
47
Franchiser
гуру
08.02.18
✎
00:34
|
Нужно сделать запрос "сам с собой"
|
|||
48
Peltzer
08.02.18
✎
06:47
|
(27) Т.з. воспринято не верно.
ВЫБРАТЬ Состояния.Сотрудник КАК Сотрудник, Состояния.Состояние КАК Состояние, Состояния.Период КАК ДатаНачала, МИНИМУМ(ДатаСледующегоСостояния.Период) КАК ДатаКонца ИЗ РегистрСведений.Состояния КАК Состояния ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Состояния КАК ДатаСледующегоСостояния ПО (Состояния.Сотрудник = ДатаСледующегоСостояния.Сотрудник) И (Состояния.Период < ДатаСледующегоСостояния.Период) СГРУППИРОВАТЬ ПО Состояния.Сотрудник, Состояния.Период, Состояния.Состояние |
|||
49
K1RSAN
08.02.18
✎
08:32
|
Ну можно сделать вообще топорно. Конечно, будут кидаться тапками в это решение, но вроде должно работать.
ВЫБРАТЬ Состояния.Сотрудник КАК Сотрудник, Состояния.Состояние КАК Состояние, Состояния.Период КАК Дата ИЗ РегистрСведений.Состояния КАК Состояния СГРУППИРОВАТЬ ПО Состояния.Сотрудник, Состояния.Период, Состояния.Состояние Макет делаешь с параметрами, тут стандартно В обходе цикла Если НЕ Первый Тогда ОбластьСтрока.Параметры.ДатаКонца = Выборка.Дата; ТабДок.Вывести(ОбластьСтрока); КонецЕсли; ОбластьСтрока.Параметры.Сотрудник = Выборка.Сотрудник; //И Т.Д. После цикла обрабатываешь последнюю выборку, а в параметр "ДатаКонца" ставишь что-нибудь типа "по текущее время" З.Ы. если надо именно в запросе получить готовую для работы выборку - то тут ХЗ. |
|||
50
evorle145
08.02.18
✎
09:13
|
(27) только не давно разбирался в ЗУПе с личной карточкой и там был такой же запрос для раздела 8, где надо было определить начало и конец отпусков) так что задача вполне жизненная.
|
|||
51
alxxsssar
08.02.18
✎
09:39
|
(10) Чой то не раз. Одного раза достаточно с условием меньше или равно. и максимумом потом группировать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |