|   |   | 
| 
 | Система расписания (планирования по времени) и работа с запросами | ☑ | ||
|---|---|---|---|---|
| 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)Задача упрощена. Вставить плановую продолжительность операции в справочник - не проблема. Сейчас на задачу накладываю ограничение и решаю с ним.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |