Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/75: Рейтинг темы: голосов - 75, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
1
1C 8.x

Вывод времени в диаграмме ганта

23.05.2014, 17:21. Показов 14775. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста как мне в диаграмме ганта вывести время построения второй строкой из регистра сведений цены на дорожки чтобы выводилось не с 00 до 23 а с начала времени с времени начала и по времени конца с 08 и по 23
само решение приложила
Вложения
Тип файла: 7z 1Cv8гант.7z (82.2 Кб, 33 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2014, 17:21
Ответы с готовыми решениями:

Интервалы в диаграмме Ганта
Здравствуйте! Делаю диаграмму Ганта, столкнулась со следующей проблемой: при выполнении программы в...

шкала времени в диаграмме Exel - 1 минута, секунда и т.д.
Здравствуйте. Есть проблемка с диаграммами. В ней есть шкала времени, но с минимальным разрешением...

Диаграмма Ганта
Здравствуйте! Нет сил уже с этой диаграммой((( Делаю отчет по невыходам сотрудников на работу....

Диаграмма Ганта
Добрый вечер! Ни у кого, случайно, не завалался пример отчёта с использованием диаграммы Ганта?...

20
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
23.05.2014, 17:51 2

Не по теме:

Александра2014, пишите конкретнее, о чем речь. В данном случае было бы логично указать "в отчете ЗанятостьДорожек...", чтобы люди не искали по всей конфе вашу диаграмму.



Добавлено через 2 минуты
Александра2014, плюс у вас куча ошибок валится. Код нерабочий.
0
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
23.05.2014, 17:59  [ТС] 3
Да забыла написать извиняюсь. Отчет Занятость Дорожек. Вернла все как было, потому что не знаю как установить время второй шкалой, после шкалы дня. Вытаскивать из регистра сведений Время начала и время конца, но тогда что с ними делать дальше?
Вложения
Тип файла: 7z 1Cv8испр.7z (81.9 Кб, 14 просмотров)
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
23.05.2014, 18:46 4
Лучший ответ Сообщение было отмечено Александра2014 как решение

Решение

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    ...
        Диаграмма = ЭлементыФормы.ДиаграммаГанта;
    Диаграмма.АвтоОпределениеПолногоИнтервала = Ложь; 
    Диаграмма.Очистить();
        // Установить заголовок диаграммы. 
        Диаграмма.ОбластьЗаголовка.Текст = "Занятость Дорожек"; 
        ВремяНач = ЭлементыФормы.ВремяНачала.Значение;
    ВремяКон = ЭлементыФормы.До.Значение;
    Диаграмма.УстановитьПолныйИнтервал(ВремяНач ,ВремяКон);
    
    Если Диаграмма.ОбластьПостроения.ШкалаВремени.Элементы.Количество() = 1 Тогда  
       Диаграмма.ОбластьПостроения.ШкалаВремени.Элементы.Добавить().Единица=ТипЕдиницыШкалыВремени.Час;
    КонецЕсли;
//здесь определяем границы временного интервала, на случай, если работает несколько дорожек.
    Запрос=Новый Запрос;
    Запрос.Текст= "ВЫБРАТЬ
                  | МИНИМУМ(ИнформацияОДорожке.ВремяНачала) КАК ВремяНачала,
                  | МАКСИМУМ(ИнформацияОДорожке.ВремяКонца) КАК ВремяКонца
                  |ИЗ
                  | РегистрСведений.ИнформацияОДорожке КАК ИнформацияОДорожке";
    ВыборкаВремяРаботы = Запрос.Выполнить().Выбрать(); 
    Если ВыборкаВремяРаботы.Следующий() Тогда
        ВремяНач = ВыборкаВремяРаботы.ВремяНачала;
        ВремяКон = ВыборкаВремяРаботы.ВремяКонца;
    КонецЕсли;
    Диаграмма.УстановитьПолныйИнтервал(ВремяНач,ВремяКон);
    СерияЗанят = Диаграмма.УстановитьСерию("Занят");
...
Добавлено через 4 минуты
единственное, что (но я не уверена, что это поправимо в Диаграмме Ганта): отображение элемента шкалы, в случае, если полный интервал шкалы исключает начало или конец элемента.
Например, если вы выберите в настройках один день: 23.05.2014 00:00:00-23:05.2014 23:59:59, а дорожки работают с 8:00 до 23:00 23.05.2014, то в шкале Дней месяца будет пусто. Но если вдруг дорожка будет работать по регистру с 22:05:2014 01:00:00, то при текущих настройках 23.05.2014 будет виден, а 22.05.2014 - снова нет.

Добавлено через 7 минут

Не по теме:

Цитата Сообщение от GreenkO Посмотреть сообщение
23.05.2014 будет виден
имеется в виду "подписан на шкале")

1
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
23.05.2014, 19:08  [ТС] 5
попробую как нибудь поправить. Спасибо
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
23.05.2014, 21:00 6
Александра2014, и еще: добавьте отбор в запросах по датам отчета.
0
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
28.05.2014, 13:56  [ТС] 7
что то никак не получается делать отбор
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
28.05.2014, 13:57 8
Александра2014, вы о чем? Покажите код.
0
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
28.05.2014, 14:06  [ТС] 9
1C
1
2
3
4
5
6
7
8
   Запрос.Текст= "ВЫБРАТЬ
                  | МИНИМУМ(ИнформацияОДорожке.ВремяНачала) КАК ВремяНачала,
                  | МАКСИМУМ(ИнформацияОДорожке.ВремяКонца) КАК ВремяКонца
                  |ИЗ
                  | РегистрСведений.ИнформацияОДорожке КАК ИнформацияОДорожке
                  |ГДЕ
                  | ИнформацияОДорожке.ВремяНачала = &ТекВремя";
                  Запрос.УстановитьПараметр("ТекВремя", ЭлементыФормы.ВремяНачала.Значение);
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
28.05.2014, 14:11 10
Лучший ответ Сообщение было отмечено Александра2014 как решение

Решение

1C
1
2
3
4
5
6
7
8
9
10
   Запрос.Текст= "ВЫБРАТЬ
                  | МИНИМУМ(ИнформацияОДорожке.ВремяНачала) КАК ВремяНачала,
                  | МАКСИМУМ(ИнформацияОДорожке.ВремяКонца) КАК ВремяКонца
                  |ИЗ
                  | РегистрСведений.ИнформацияОДорожке КАК ИнформацияОДорожке                  
                  |ГДЕ
                  | ИнформацияОДорожке.ВремяНачала >= &ВремяНач
                  | И ИнформацияОДорожке.ВремяКонца <= &ВремяКон";
                  Запрос.УстановитьПараметр("ВремяНач", ЭлементыФормы.ВремяНачала.Значение);
                  Запрос.УстановитьПараметр("ВремяКон", ЭлементыФормы.ВремяКонца.Значение);
1
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
28.05.2014, 14:17  [ТС] 11
Ругается на несоответствие типов
C
1
Несоответствие типов (параметр номер '1')
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
28.05.2014, 14:36 12
Александра2014, видимо при вычислении агрегатных функций запроса даже на пустом наборе появляется запись.
Измените код в этом месте:
1C
1
2
3
4
5
6
   ВыборкаВремяРаботы = Запрос.Выполнить().Выбрать(); 
    Если ВыборкаВремяРаботы.Следующий() И ВыборкаВремяРаботы.ВремяНачала <> Null И ВыборкаВремяРаботы.ВремяКонца <> Null Тогда
        ВремяНач = ВыборкаВремяРаботы.ВремяНачала;
        ВремяКон = ВыборкаВремяРаботы.ВремяКонца;
    КонецЕсли;
    Диаграмма.УстановитьПолныйИнтервал(ВремяНач,ВремяКон);
0
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
28.05.2014, 17:18  [ТС] 13
а как сделать так чтобы в документе диаграмма ганта тоже была, чтобы в документе как раз по отбору получилось а в отчете можно было любые даты выбирать. я добавила диаграмму и код тот же что и в отчете вставила и почему то не работает
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
28.05.2014, 17:41 14
Цитата Сообщение от Александра2014 Посмотреть сообщение
я добавила диаграмму и код тот же
какой?

Добавлено через 21 минуту
где же код документа?
0
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
28.05.2014, 17:46  [ТС] 15
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Процедура Диаграмма()
    Если ВремяНачала<>Дата(1,1,1) И ВремяКонца<>Дата(1,1,1) И ВремяНачала<ВремяКонца  Тогда
    
    Запрос=Новый Запрос;
    Запрос.Текст= "ВЫБРАТЬ
    |   ИнформацияОДорожке.ВремяНачала,
    |   ИнформацияОДорожке.ВремяКонца,
    |   ИнформацияОДорожке.Бронь,
    |   ИнформацияОДорожке.Дорожка.Ссылка как Дорожка
    |ИЗ
    |   РегистрСведений.ИнформацияОДорожке КАК ИнформацияОДорожке";
    ВыборкаРезультата = Запрос.Выполнить().Выбрать(); 
    Диаграмма = ЭлементыФормы.ДиаграммаГанта;
    Диаграмма.АвтоОпределениеПолногоИнтервала = Ложь; 
    Диаграмма.Очистить();
         // Установить заголовок диаграммы. 
        Диаграмма.ОбластьЗаголовка.Текст = "Занятость Дорожек"; 
        ВремяНач = ЭлементыФормы.ВремяНачала.Значение;
    ВремяКон = ЭлементыФормы.ВремяКонца.Значение;
    Диаграмма.УстановитьПолныйИнтервал(ВремяНач ,ВремяКон);
    
    Если Диаграмма.ОбластьПостроения.ШкалаВремени.Элементы.Количество() = 1 Тогда   
       Диаграмма.ОбластьПостроения.ШкалаВремени.Элементы.Добавить().Единица=ТипЕдиницыШкалыВремени.Час;
    КонецЕсли;
//здесь определяем границы временного интервала, на случай, если работает несколько дорожек.
    Запрос=Новый Запрос;
   Запрос.Текст= "ВЫБРАТЬ
                  | МИНИМУМ(ИнформацияОДорожке.ВремяНачала) КАК ВремяНачала,
                  | МАКСИМУМ(ИнформацияОДорожке.ВремяКонца) КАК ВремяКонца
                  |ИЗ
                  | РегистрСведений.ИнформацияОДорожке КАК ИнформацияОДорожке                  
                  |ГДЕ
                  | ИнформацияОДорожке.ВремяНачала >= &ВремяНач
                  | И ИнформацияОДорожке.ВремяКонца <= &ВремяКон";
                  Запрос.УстановитьПараметр("ВремяНач", ЭлементыФормы.ВремяНачала.Значение);
                  Запрос.УстановитьПараметр("ВремяКон", ЭлементыФормы.ВремяКонца.Значение);
   ВыборкаВремяРаботы = Запрос.Выполнить().Выбрать(); 
    Если ВыборкаВремяРаботы.Следующий() И ВыборкаВремяРаботы.ВремяНачала <> Null И ВыборкаВремяРаботы.ВремяКонца <> Null Тогда
        ВремяНач = ВыборкаВремяРаботы.ВремяНачала;
        ВремяКон = ВыборкаВремяРаботы.ВремяКонца;
    КонецЕсли;
    Диаграмма.УстановитьПолныйИнтервал(ВремяНач,ВремяКон);
    СерияЗанят = Диаграмма.УстановитьСерию("Занят");
    СерияБронь = Диаграмма.УстановитьСерию("Бронь");
        Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Дорожки.Ссылка Как Имя,
    | Дорожки.Порядок
    |ИЗ
    | Перечисление.Дорожки КАК Дорожки";
    
    
    Рег=Запрос.Выполнить().Выбрать();
    
    
    
    Пока Рег.Следующий() Цикл 
        
        Точка=Диаграмма.УстановитьТочку(Рег.Имя);
        
        Пока ВыборкаРезультата.Следующий() Цикл 
                        
            
            Если ВыборкаРезультата.Дорожка=Рег.Имя Тогда     
                
                Если ВыборкаРезультата.Бронь=Ложь Тогда 
                    СерияЗанят.Цвет =WebЦвета.Синий;
                    
                    Значение = Диаграмма.ПолучитьЗначение(Точка, СерияЗанят);
                    Интервал = Значение.Добавить();
                    Интервал.Текст = "занят";
                    
                    Интервал.Начало=ВыборкаРезультата.ВремяНачала;
                    Интервал.Конец=ВыборкаРезультата.ВремяКонца;
                    Интервал.Цвет = WebЦвета.Синий;
                Иначе 
                    СерияБронь.Цвет =WebЦвета.Красный;
                    
                    Значение = Диаграмма.ПолучитьЗначение(Точка, СерияБронь);
                    Интервал = Значение.Добавить();
                    Интервал.Текст = "бронь";   
                    
                    
                    Интервал.Начало=ВыборкаРезультата.ВремяНачала;
                    Интервал.Конец=ВыборкаРезультата.ВремяКонца;
                    Интервал.Цвет = WebЦвета.Красный;
 
                КонецЕсли;
            КонецЕсли;
            
        КонецЦикла;
        
        ВыборкаРезультата.Сбросить();
        
    КонецЦикла;
    
     КонецЕсли;
    
 
 КонецПроцедуры
 
 Процедура ВремяНачалаПриИзменении(Элемент)
     Диаграмма();
 КонецПроцедуры
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
28.05.2014, 17:49 16
Цитата Сообщение от Александра2014 Посмотреть сообщение
ВремяНач = ЭлементыФормы.ВремяНачала.Значение;
ВремяКон = ЭлементыФормы.ВремяКонца.Значение;
И что, на форме документа есть эти поля?

Добавлено через 56 секунд
ладно, лучше конфу...
1
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
28.05.2014, 18:08  [ТС] 17
и еще одна проблема с бронью
Что-то в этом условие не так делаю в модуле документа
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Рег=Запрос.Выполнить().Выбрать();
 
    Пока Рег.Следующий() Цикл 
       Если Рег.ВремяНачала<=ВремяНачала И ВремяНачала<=Рег.ВремяКонца Тогда
        БронНачало=Истина;
    КонецЕсли;
    
        Если Рег.ВремяНачала<=ВремяКонца И ВремяКонца<=Рег.ВремяКонца Тогда
        БронКонец=Истина;
    КонецЕсли;
    
    Если ВремяНачала<=Рег.ВремяНачала И Рег.ВремяКонца<=ВремяКонца Тогда
        Брон=Истина;
        КонецЕсли;
    КонецЦикла;
Вложения
Тип файла: 7z 1Cv811111111111111.7z (94.7 Кб, 19 просмотров)
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
28.05.2014, 18:29 18
Цитата Сообщение от Александра2014 Посмотреть сообщение
и еще одна проблема с бронью
Что-то в этом условие не так делаю в модуле документа
Какая проблема? Тут должны догадаться что за проблема и что не так?

Добавлено через 1 минуту
если хотите, чтобы вам помогли - максимально точно изъясните проблему.

Не по теме:

а то привыкли, что конфу посмотрят и все сами поймут. пора завязывать:gmad:



Добавлено через 4 минуты
Александра2014,
1. По проблеме построения диаграммы в документе: мало скопировать код откуда-то и тупо вставить в другое место, нужно процедуры событий элементов формы связать с ними! У вас процедура Диаграмма() вызывается по модулю формы документа при изменении ВремениНачала(а если конец не зададут ещё?, лучше сделать по отдельной кнопке). Заходим в свойства этого поля - ВремяНачала, и? Никаких событий там не видно.

Добавлено через 11 минут
2. По установке Брони: к чему вообще это условие?
1C
1
Если ВремяНачала<=Рег.ВремяНачала И Рег.ВремяКонца<=ВремяКонца Тогда
Значит, начинаем играть, когда дорожка ещё не начала работать, а закончить можно вовремя? Выходит так.
Для установки брони нужна проверка только:
1C
1
Если ВремяНачала >= Рег.ВремяНачала И ВремяНачала<=Рег.ВремяКонца И ВремяКонца>= Рег.ВремяНачала И ВремяКонца<=Рег.ВремяКонца Тогда
тогда проводим документ и устанавливаем бронь.
1
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 54
28.05.2014, 18:51  [ТС] 19
1C
1
Времяначала>РегКонца И ВремяКонца>Времениначала И ВремяКонца>РегКонца
вот так получается? или нет?
0
Эксперт 1С
3057 / 2004 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
28.05.2014, 18:58 20
Александра2014, я вам выше писала "как получается":
1C
1
Если ВремяНачала >= Рег.ВремяНачала И ВремяНачала<=Рег.ВремяКонца И ВремяКонца>= Рег.ВремяНачала И ВремяКонца<=Рег.ВремяКонца Тогда
С вашим условием могут начать играть, когда захотят, и закончат - аналогично. Если не понимаете сути условий: нарисуйте себе временную прямую и отмечайте на ней время начала и окончания работы дорожки и время начала и окончания игры.

Добавлено через 2 минуты
при условии, что вы ранее проверяете на ВремяНачала <= ВремяКонца, можно условие упростить:
1C
1
Если ВремяНачала >= Рег.ВремяНачала И ВремяКонца<=Рег.ВремяКонца Тогда
1
28.05.2014, 18:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2014, 18:58
Помогаю со студенческими работами здесь

Диаграмма Ганта
При построении диаграммы ганта в EXCEL, графики не соответствуют оси У, и одна и таже дата на...

Диаграмма Ганта на QT
День добрый, народ как можно реализовать диаграмму Ганта на qt? может у кого есть примеры или...

Диаграмма Ганта
Привет! Использую Python 3.4 и PyQt5 для написания своего приложения. Потребовалось отобразить...

Диаграмма Ганта
Здравствуйте,перерыл интернет и данный форум,ответа не нашел к сожалению.Собственно проблема:...

Реализация диаграммы Ганта
Добрый день! Я ищу компонент графика Ганта для разработки программы на VisualStudio. На графике...

Компонент диаграмма Ганта
Здравствуте подскажите где можно найти хороший и бесплатный компонент диаграммы Ганта для виндовс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru