Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
09 мая 2025, 10:21

Работа с Диаграммной Ганта

Автор Funt432286, 06 мар 2025, 12:47

0 Пользователей и 1 гость просматривают эту тему.

antoneus

ДГ для меня вещь новая. Да, наверно, перед внутренним циклом обнулять не надо, чтобы у каждой точки был уникальный номер.

чНомТочки = 0;
Пока ВыборкаОператоры.Следующий() Цикл
    Точка                = Диаграмма.УстановитьТочку(ВыборкаОператоры.Оператор);
.......
    Пока ВыборкаНомерТЗ.Следующий() Цикл
        ТочкаТЗ                = Диаграмма.УстановитьТочку(чНомТочки, ВыборкаОператоры.Оператор);
        .....
        чНомТочки = чНомТочки + 1;
    КонецЦикла;
......
КонецЦикла;


Funt432286

antoneus, Для Вас вещь новая, а для меня вообще темный лес!

Получилось, вынес обнуление точки за самый первый цикл и все стало норм!

Теперь самое прикольное, выставить интервалы так, что бы они шли друг за другом!

Максим75

Funt432286, когда-то игрался диаграммой ганта с начислениями сотрудников
может поможе

Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             | ОсновныеНачисленияФактическийПериодДействия.Сотрудник,
             | ОсновныеНачисленияФактическийПериодДействия.Результат,
             | ОсновныеНачисленияФактическийПериодДействия.ПериодДействияНачало,
             | ОсновныеНачисленияФактическийПериодДействия.ПериодДействияКонец,
             | ОсновныеНачисленияФактическийПериодДействия.ВидРасчета,
             | ОсновныеНачисленияФактическийПериодДействия.Регистратор,
             | ОсновныеНачисленияФактическийПериодДействия.Регистратор.Представление
             |ИЗ
             | РегистрРасчета.ОсновныеНачисления.ФактическийПериодДействия КАК ОсновныеНачисленияФактическийПериодДействия";

ВыборкаРезультат = Запрос.Выполнить().Выбрать();

Диаграмма.Обновление = Ложь;
Диаграмма.Очистить();
Диаграмма.ОтображатьЗаголовок = Ложь;

Пока ВыборкаРезультат.Следующий() цикл

//Получить серию, точку и значение для них
ТекущаяСерия = Диаграмма.УстановитьСерию(ВыборкаРезультат.ВидРасчета);
ТекущаяТочка = Диаграмма.УстановитьТочку(ВыборкаРезультат.Сотрудник);
ТекущееЗначение = Диаграмма.ПолучитьЗначение(ТекущаяТочка,ТекущаяСерия);

//создадим нужные интервалы в значении
ТекущийИнтервал = ТекущееЗначение.Добавить();
ТекущийИнтервал.Начало = ВыборкаРезультат.ПериодДействияНачало;
ТекущийИнтервал.Конец = ВыборкаРезультат.ПериодДействияКонец;
ТекущийИнтервал.Текст = ВыборкаРезультат.РегистраторПредставление;
ТекущийИнтервал.Расшифровка = ВыборкаРезультат.Регистратор;

КОнецЦикла;

//раскрасим серии своми цветами

Для каждого Серия из Диаграмма.Серии цикл

Если Серия.Значение = ПланыВидовРасчета.ОсновныеНачисления.Оклад тогда
Серия.Цвет = WEBЦвета.Желтый;
ИначеЕсли Серия.Значение = ПланыВидовРасчета.ОсновныеНачисления.Премия тогда
Серия.Цвет = WEBЦвета.Зеленый;
иначе
Серия.Цвет = WEBЦвета.Красный;
КОнецЕсли;

КонецЦикла;

Диаграмма.Обновление = Истина;

Funt432286

а можно как-то программно менять интервал который отображается вверху диаграммы?
Т.е. стоит сейчас интервал неделя, по выбору радиокнопки нужно поменять на:
1. Месяц
2. Неделя (без выходных)
3. Часы (день, только время с 9:00 до 18:00)

Такое возможно программно сделать?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск