Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Таблица значений из таблиц значений против запросов к одной ТЗ.

Таблица значений из таблиц значений против запросов к одной ТЗ.
Я
   Креатив
 
08.06.21 - 09:49
Есть необходимость обработки рабочих интервалов сотрудников за определённый период.
Пока что для работы с этим набором данных видятся две возможности.
1. Создать ТЗ с сотрудниками и колонкой, содержащей ТЗ с интервалами по каждому сотруднику.
2. Создать одну общую ТЗ по всем сотрудникам с интервалами, а оттуда доставать по необходимости данные по каждому сотруднику.
Мне необходимо, чтобы набор по каждому сотруднику при получении сохранял ту же сортировку, что и изначальные данные.
   fisher
 
1 - 08.06.21 - 10:35
Ты просишь выбрать структуру данных, но делаешь это без описания необходимых алгоритмов.
   fisher
 
2 - 08.06.21 - 10:37
В общем, нужно знать какая именно "обработка" будет выполняться. В общем случае второй вариант более универсальный.
   Креатив
 
3 - 08.06.21 - 10:45
(1)Так алгоритмы будут выстроены под структуру. Мне на каждом шаге основного алгоритма нужно получать по данному сотруднику ближайший рабочий интервал.  В сущности, есть и третий вариант. Каждый раз снова собирать данные по сотруднику.  Минус этого подхода в том, что при необходимости второй(третий и последующие) раз обрабатывает того же сотрудника внутри документа придётся снова собирать интервалы.
Пожалуй, начну именно с этого. Если будут наблюдаться замедления, перейду на второй вариант.
(2)Благодарю за совет.
   fisher
 
4 - 08.06.21 - 10:54
(3) > Так алгоритмы будут выстроены под структуру
Обычно структура выбирается под решаемые задачи. Но просто поиск - это простейшая задача. По общей ТЗ двоичным поиском тоже быстро будет.
Если уже есть какой-то обход, то можно комбинированные структуры данных сделать. Какие угодно. Например, общая ТЗ интервалов по сотрудникам и соответствия сотрудников строкам их первых и последних интервалов.
   fisher
 
5 - 08.06.21 - 10:56
Да и вообще, если данных много, а искать надо быстро, то в 1С лучше соответствия использовать. Через соответствия доступ фактически мгновенный при любом объеме данных.
   Serg_1960
 
6 - 08.06.21 - 10:59
(3) Однократное обращение к базе для заполнения общей структуры по всем сотрудниками - этот вариант быстрее. Т.е. быстрее тот вариант, когда отсутствуют цикличные обращения к базе данных.
   H A D G E H O G s
 
7 - 08.06.21 - 11:09
(5) Что соответствия, что индексированные ТЗ, одинаково
   fisher
 
8 - 08.06.21 - 11:12
(7) Возможно. Я не сравнивал. В 1С вопросы производительности всегда наперекосяк классике, ибо слишком высокий уровень абстракций. Но у меня и код с использованием соответствий обычно "чище" получается. Поэтому я их полюбляю.
   Salimbek
 
9 - 08.06.21 - 12:38
(0) Создаешь ТЗ с колонками, Сотрудник, ДатаНачала, ДатаОкончания, ИД_Интервала

Укладываешь во временную таблицу

Для очередного сотрудника выполняешь запрос с условием:
"Выбрать вт.ИД_Интервала из вт ГДЕ вт.Сотрудник = &ЗаданныйСотрудник И вт.ДатаНачала<=&ЗаданнаяДата И вт.ДатаОкончания>ЗаданнаяДата&"
   Said_We
 
10 - 08.06.21 - 14:04
(0) Формулировка не понятна:
"Мне необходимо, чтобы набор по каждому сотруднику при получении сохранял ту же сортировку, что и изначальные данные."

Если надо, то либо она уже есть и по полям составляющим интервал можно всегда узнать кто раньше и кто позже. Либо добавь поле, в котором будет храниться непосредственный порядковый номер записи - аналог номер строки ТЗ.

В общем что такое в вашем понимании ИНТЕРВАЛ не понятно, поэтому и .... Какие поля входят в интервал и можно ли определить по данным интервала какая строка раньше и какая позже?
   SleepyHead
 
11 - 08.06.21 - 14:12
(9) На укладывание в ВТ тоже время уходит.

Быстрее искать прямо в ТЗ с использованием индексов, если такая таблица большая.
   mistеr
 
12 - 08.06.21 - 14:44
(0) Я бы сначала попробовал сделать все и сразу в одном запросе, потом уже возиться с ТЗ.
   DrZombi
 
13 - 08.06.21 - 15:09
(0) Тогда это уже какой-то регистр, возможно сведений.
   DrZombi
 
14 - 08.06.21 - 15:13
(10) Где-то в ЗУП 3.1, есть подобное, там реализовано на регистре сведенье, при этом есть небольшая проверка, говорящая о том, что данный  регистр надо перезаполнить.
В итоге отчет получает данные по регистру, разными сотрудниками кадровой службы :)
   Said_We
 
15 - 08.06.21 - 15:17
(14) Ну так (0) молчит и не договаривает где и что. Может велосипед изобретает и мы с ним. Расскажет (0) от начала до конца где и что ему нужно, может быть вообще никакие интервалы искать не нужно будет. :-)
   Вафель
 
16 - 08.06.21 - 15:22
Вместо из лучше ссответствие
   Креатив
 
17 - 08.06.21 - 18:02
(12)Я бы так и сделал, но поскольку у сотрудника может смениться график, то сначала выдёргиваю графики в ТЗ, там создаю интервалы их действия. А потом уже по этим интервалам выбираю рабочие интервалы.
(15)Это УНФ. Делаю автоматическое заполнение загрузки ресуросв(план естественно).
   Said_We
 
18 - 08.06.21 - 18:35
(17) Тогда зачем нужно "... сохранял ту же сортировку ..."? У тебя есть дата, с которой действует график. В порядке действия даты вполне читабельно.
   Креатив
 
19 - 08.06.21 - 18:46
(18)Это чтобы избежать варианта с найтистроки в ТЗ.
   Said_We
 
20 - 08.06.21 - 18:54
(19) Какой ещё настройкой?
На входе у вас таблица: Сотрудник, ДатаС, ДатаПо, График.
Периоды в строчках не пересекаются.

Что ещё нужно? Какая разница, в каком порядке строки идут физически. Хоть строка по Иванову, потом строка по Петрову, а потом опять по Иванову.
   mistеr
 
21 - 08.06.21 - 22:52
(17) А что мешает сделать все это в запросе?
   Said_We
 
22 - 09.06.21 - 11:33
(21) Я тоже сути вопроса не понимаю.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.