Диаграмма ганта.Как убрать лишние часы в временной шкале?
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Хочется апнуть тему! Мучаюсь уже 3й день с тем же вопросом. Интернет перерыт, а ответов нет. Нигде не нашел информации типа категоричного "нет, так нельзя сделать". Для информации. Конфигурация 1С УПП Платформа 8.1. Отчет "Диаграмма загрузки рабочих центров".
Лучше поздно, чем никогда )
Решение проблемы заключается в том, чтобы "заставить" систему обрабатывать рабочий день (ВремяНачала - ВремяОкончания) как полные сутки. Потребуется преобразование каждой даты интервалов (ДиаграммаМонитораЗагрузкиРемонтнойЗоныОпределитьПериодИнтерв ала) и формирование "собственной" шкалы времени (ДиаграммаМонитораЗагрузкиРемонтнойЗоныШкалыВремени). Если разрешено редактирование - необходимо выполнить обратные преобразования.
Решение проблемы заключается в том, чтобы "заставить" систему обрабатывать рабочий день (ВремяНачала - ВремяОкончания) как полные сутки. Потребуется преобразование каждой даты интервалов (ДиаграммаМонитораЗагрузкиРемонтнойЗоныОпределитьПериодИнтерв
Функция ДиаграммаМонитораЗагрузкиРемонтнойЗоныОпределитьПериодИнтервала( Знач Период, Знач ВремяНачала, Знач ВремяОкончания )
Если ( ВремяНачала > 0 ) ИЛИ ( ВремяОкончания < 24 ) Тогда
ПериодНачала = НачалоДня( Период ) + ВремяНачала * 60 * 60;
ПериодОкончания = НачалоДня( Период ) + ВремяОкончания * 60 * 60 - 1;
Если ( Период < ПериодНачала ) Тогда
Период = ПериодНачала;
КонецЕсли;
Если ( Период > ПериодОкончания ) Тогда
Период = ПериодОкончания;
КонецЕсли;
Период = НачалоДня( Период ) + ( Период - НачалоДня( Период ) - ВремяНачала * 60 * 60 ) * 24 / ( ВремяОкончания - ВремяНачала );
КонецЕсли;
Возврат Период;
КонецФункции
Процедура ДиаграммаМонитораЗагрузкиРемонтнойЗоныШкалыВремени( Знач ДиаграммаГанта, Знач ПериодНачало, Знач ПериодОкончание, Знач ВремяНачала, Знач ВремяОкончания, Знач ШкалаМинутКратность )
ШкалаСутки = ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы[ 0 ];
Если ( ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы.Количество() < 2 ) Тогда
ШкалаЧасы = ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы.Добавить();
Иначе
ШкалаЧасы = ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы[ 1 ];
КонецЕсли;
Если ( ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы.Количество() < 3 ) Тогда
ШкалаМинуты = ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы.Добавить();
Иначе
ШкалаМинуты = ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы[ 2 ];
КонецЕсли;
ШкалаСутки.Метки.Очистить();
ШкалаЧасы.Метки.Очистить();
ШкалаМинуты.Метки.Очистить();
Если ( ВремяНачала > 0 ) ИЛИ ( ВремяОкончания < 24 ) Тогда
ШкалаСутки.Видимость = Истина;
ШкалаЧасы.ОтображатьПериодическиеМетки = Ложь;
ШкалаСутки.ЛинииДелений = Новый Линия( ТипЛинииДиаграммы.Пунктир );
ШкалаЧасы.Видимость = Истина;
ШкалаЧасы.ОтображатьПериодическиеМетки = Ложь;
ШкалаЧасы.ЛинииДелений = Новый Линия( ТипЛинииДиаграммы.Пунктир );
ШкалаМинуты.Видимость = Истина;
ШкалаМинуты.ОтображатьПериодическиеМетки = Ложь;
ШкалаМинуты.ЛинииДелений = Новый Линия( ТипЛинииДиаграммы.Пунктир );
Метка = ШкалаСутки.Метки.Добавить( ДиаграммаМонитораЗагрузкиРемонтнойЗоныОпределитьПериодИнтерв ала( ТекущаяДата(), ВремяНачала, ВремяОкончания ) );
Метка.ЦветЛинии = WebЦвета.Красный;
Сутки = НачалоДня( ПериодНачало );
Пока ( Сутки <= ПериодОкончание ) Цикл
Метка = ШкалаСутки.Метки.Добавить( ДиаграммаМонитораЗагрузкиРемонтнойЗоныОпределитьПериодИнтерв ала( Сутки, ВремяНачала, ВремяОкончания ) );
Метка.Текст = Формат( Сутки, "ДЛФ=DD" ) + ", " + Формат( Сутки, "ДФ=дддд" );
Для Часы = ВремяНачала По ( ВремяОкончания - 1 ) Цикл
Метка = ШкалаЧасы.Метки.Добавить( ДиаграммаМонитораЗагрузкиРемонтнойЗоныОпределитьПериодИнтерв ала( Сутки + Часы * 60 * 60, ВремяНачала, ВремяОкончания ) );
Метка.Текст = Формат( Часы, "ЧЦ=2; ЧН=; ЧВН=" ) + ":00";
Минуты = 0;
Пока ( Минуты < 60 ) Цикл
Метка = ШкалаМинуты.Метки.Добавить( ДиаграммаМонитораЗагрузкиРемонтнойЗоныОпределитьПериодИнтерв ала( Сутки + Часы * 60 * 60 + Минуты * 60, ВремяНачала, ВремяОкончания ) );
Метка.Текст = Формат( Минуты, "ЧЦ=2; ЧН=; ЧВН=" );
Минуты = Минуты + ШкалаМинутКратность;
КонецЦикла;
КонецЦикла;
Сутки = НачалоДня( Сутки + 24 * 60 * 60 );
КонецЦикла;
Иначе
ШкалаСутки.Видимость = Истина;
ШкалаСутки.ОтображатьПериодическиеМетки = Истина;
ШкалаСутки.Единица = ТипЕдиницыШкалыВремени.День;
ШкалаСутки.ЛинииДелений = Новый Линия( ТипЛинииДиаграммы.Пунктир );
ШкалаСутки.Кратность = 1;
ШкалаСутки.ФорматДня = ФорматДняШкалыВремени.ДеньМесяцаДеньНедели;
ШкалаЧасы.Видимость = Истина;
ШкалаЧасы.ОтображатьПериодическиеМетки = Истина;
ШкалаЧасы.Единица = ТипЕдиницыШкалыВремени.Час;
ШкалаЧасы.ЛинииДелений = Новый Линия( ТипЛинииДиаграммы.Пунктир );
ШкалаЧасы.Кратность = 1;
ШкалаЧасы.Формат = "ДФ = ЧЧ:мм";
ШкалаМинуты.Видимость = Истина;
ШкалаМинуты.ОтображатьПериодическиеМетки = Истина;
ШкалаМинуты.Единица = ТипЕдиницыШкалыВремени.Минута;
ШкалаМинуты.ЛинииДелений = Новый Линия( ТипЛинииДиаграммы.Пунктир );
ШкалаМинуты.Кратность = ШкалаМинутКратность;
Метка = ШкалаСутки.Метки.Добавить( ТекущаяДата() );
Метка.ЦветЛинии = WebЦвета.Красный;
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)