|
Система расписания (планирования по времени) и работа с запросами | ☑ | ||
---|---|---|---|---|
0
GrayT
24.07.12
✎
09:47
|
Помогите продвинутся в разработке сабжа.
Можно ли написать запрос который вернет таблицу содержащую список времени с определенным интервалом? Т.е. есть рабочая смена с 8 до 17, есть ограничение, что на операцию тратится 30 минут. Нужен запрос возвращающий колонку с периодами: 24.07.12 08:00; 24.07.12 08:30; 24.07.12 09:00; .....; 24.07.12 16:30; 25.07.12 08:00 ..... Возможно построить такой запрос? |
|||
1
х86
24.07.12
✎
09:51
|
джоин + добавить к дате
|
|||
2
Maxus43
24.07.12
✎
09:53
|
колонку с периодами можно (датами), есть статья в КЗ, насчет времени ещё подумать надо
|
|||
3
GrayT
24.07.12
✎
10:00
|
(1)Можно пример, может немного другой, но отражающий смысл. Просто только-только начал заниматься восьмеркой вплотную. И если для "стандартных" запросов примеров много, то тут просто в ступор впал. На ИТС Смотрел ДобавитьКДате, но как сделать список дат (времени) не пойму
(2)Попробую там поискать |
|||
4
Spieluhr
24.07.12
✎
10:05
|
как вариант сформировать ТаблицуЗначений нужного содержания, а потом из нее выбрать во временную таблицу пакетного запроса
|
|||
5
Maxus43
24.07.12
✎
10:09
|
можно прицепится к производственному календарю, если он есть. Даты вытащить будет легко
|
|||
6
МихаилМ
24.07.12
✎
10:12
|
не нужен такой запрос.
путаете получение данных с представлением. обработайте (представте) полученные данные на клиенте субд. + если таблица периодов не дискретицированна на периоды, то не будет эффективного индекса и через 100 000 записей начнуться проблемы производительности. |
|||
7
х86
24.07.12
✎
10:16
|
(3)Книга знаний: v8: Полные остатки по периоду во вложенном запросе смотри последний запрос
|
|||
8
GrayT
24.07.12
✎
10:20
|
(4)Вот как раз от ТЗ и хочу уйти - все сделать запросом.
(5) Нету. нетленка. Задача достаточно локальная и делается на пустой конфе (6)Если правильно понял смысл термина дискретизации, то тут она полная. Смена поколота на 30 минут Может я вообще не стой стороны зашел. Расскажу по задаче в целом. |
|||
9
Kashemir
24.07.12
✎
10:21
|
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&НачалоСмены, МИНУТА, &Шаг * (aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)) КАК НачалоИнтервала ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa, (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb, (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc, (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ГДЕ ДОБАВИТЬКДАТЕ(&НачалоСмены, МИНУТА, 30 * (aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d)) <= &КонецСмены |
|||
10
GrayT
24.07.12
✎
10:22
|
расширенное описание задачи - можно не читать :)
На текущий момент реализовано следующее. Имеем единицу оборудования и условие, что одна операция выполняется 30 минут. Т.е. имеем матрицу дней и участков времени в 30 минут. Используя диаграмму Ганта, организую построение графика. Алгоритм прост: в цикле плюсую время по 30 минут и строю в ТЗ список доступного времени (с учетом начала и окончания смены). Далее запросом к регистру сведений графика операций выбираю заполненные участки времени, до-заполняю ТЗ доступного времени и строю диаграмму. Требуется расширить функционал следующим образом - единиц оборудования несколько. Мало того график работы (по дням) каждой единицы самостоятельный (ремонты, профилактика, и т.п.). Хотелось бы организовать заполнение графика полностью запросами - в идеале одним, но пока и простой запрос толком построить не могу. Структур БД вижу так. 1. Справочник календари + регистр сведений календари. Измерения - Календарь (Ссылка на календарь), День (Дата(Состав дата)), Ресурс - Доступно (Булево). Т.е. регистр содержит все календарные даты с указание доступности в целом. 2. Справочник оборудование + Реквизит Календарь 3. Регистр ГрафикОпераций - Регистр сведений Измерения - Оборудование (Ссылка на справочник), ПозицияВремени (Дата (Дата+Время)), Ресурс - Операция (Справочник операций) 4. Ну и документы, что все это дело шевелят. Цель быстрое визуальное оформление графика. Вот теперь думаю как ко всему этому хозяйству запросами обращаться. |
|||
11
GrayT
24.07.12
✎
10:23
|
(7,9) Ага спасибо! Буду изучать :)
|
|||
12
Kashemir
24.07.12
✎
10:29
|
(11) Рекомендую где-то отдельно сохранить - очень помогает когда надо динамически получить выборку определенной размерности:
ВЫБРАТЬ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК ЧислоИнтервала ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa, (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb, (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc, (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd |
|||
13
МихаилМ
24.07.12
✎
10:36
|
мы живем в слишком динамичном мире
чтобы ограничиваться условмем " одна операция выполняется 30 минут" |
|||
14
GrayT
24.07.12
✎
10:45
|
(13)Задача упрощена. Вставить плановую продолжительность операции в справочник - не проблема. Сейчас на задачу накладываю ограничение и решаю с ним.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |