Skip to content
лого - блог 1с программиста

Блог 1С программиста

Наработки, заметки и другая информация по 1С

  • Главная
  • Типовые конфигурации
    • ЗУП 3.1
      • Разработка
        • Обработки
        • Отчеты
        • Печатные формы
        • Расширения
      • Инструкции
      • Ответы техподдержки 1С
      • Общие вопросы
    • ДО 2.1
    • УХ 3.2
    • УПП 1.3
  • Интеграции и обмены
  • Шаблоны и заготовки
    • Типовые приемы
    • Отчеты
    • Обработки
    • Печатные формы
    • Расширения
  • Платформа 1С
  • Разработки
    • Контакты
  • Toggle search form

Пример работы с Диаграммой Ганта

Posted on 30 июня 25 г.18 августа 25 г. By Алексей Комментариев к записи Пример работы с Диаграммой Ганта нет

Содержание:

  • Файлы материала
  • Постановка задачи
  • Заполнение диаграммы данными
  • Печать и сохранение в файл «Диаграммы Ганта»
  • Где находятся настройки области построения?
  • Работа с фоном диаграммы Ганта
  • В диаграмме выводиться лишний день / месяц / год
  • Задваиваются «Точки» при нескольких «Сериях»

Диаграмма Ганта в 1С представлена в виде объекта встроенного языка. Используется для отражения длительности и последовательности процессов, представленных в виде горизонтальных линий расположенных на оси времени.

Диаграмма Ганта

Более подробно про «диаграмму Ганта» можно почитать на ИТС. Там же доступна для скачивания демонстрационная конфигурация «Диаграммы», в которой можно посмотреть примеры и по другим диаграммам.

Файлы материала
Обработка с примером работы «Диаграммы Ганта»Скачать
Постановка задачи

Рассмотрим основные возможности «Диаграммы Ганта» на примере построения «Графика отпусков по сотрудникам».

Предположим нам нужно получить «Диаграмму» такого вида:

Пример работы с диаграммой Ганта

Для этого создадим обработку, добавим реквизит с типом «Диаграмма Ганта» и перенесем его на форму.

Объект "Диаграмма Ганта" на форме

Видим, что по умолчанию поле диаграммы состоит из Таблицы с «Точками» и графической областью с интервалами. Таблица поддерживает «Иерархию» и при необходимости ее можно скрыть, установив свойство ПоложениеТаблицы = Нет для элемента формы ДиаграммаГанта. С версии платформы 3.1.21 кроме Точек и Текста в таблицу можно добавлять свои реквизиты.

Заполнение диаграммы данными

По условию задачи Точками будут Сотрудники, для демонстрации иерархии сделаем их вложенными в Организацию, Серия — это «Отпуск», Интервалы — продолжительность отпуска.

Получим исходные данные запросом:

1С (Код)
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
Функция ОтпускаСотрудников()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ""ООО """"Рассвет"""""" КАК Организация,
| ""Иванов И.И."" КАК Сотрудник,
| ДАТАВРЕМЯ(2025, 5, 5) КАК ДатаНачала,
| ДАТАВРЕМЯ(2025, 5, 11) КАК ДатаОкончания
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""ООО """"Рассвет"""""",
| ""Иванов И.И."",
| ДАТАВРЕМЯ(2025, 5, 19),
| ДАТАВРЕМЯ(2025, 5, 23)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""ООО """"Рассвет"""""",
| ""Петров П.П."",
| ДАТАВРЕМЯ(2025, 5, 12),
| ДАТАВРЕМЯ(2025, 5, 23)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""АО """"Звезда"""""",
| ""Сидоров П.П."",
| ДАТАВРЕМЯ(2025, 5, 9),
| ДАТАВРЕМЯ(2025, 5, 18)
|ИТОГИ ПО
| Организация,
| Сотрудник";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаОрганизация = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Возврат ВыборкаОрганизация;
КонецФункции

Обойдем полученную выборку по группировкам и установим данные в Диаграмму Ганта:

1С (Код)
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
&НаСервереБезКонтекста
Процедура ЗаполнитьДиаграммуГанта(ДиаграммаГанта, Период)
 
// Получение данных по отпускам
ВыборкаОрганизация = ОтпускаСотрудников();
// Заполнение диаграммы Ганта данными
ДиаграммаГанта.Обновление = Ложь;
ДиаграммаГанта.Очистить();
// Создание Серии
СерияОтпуск = ДиаграммаГанта.Серии.Добавить();
СерияОтпуск.Текст = "Отпуск";
// Обход Выборки по группировкам: Организации -> Сотрудники -> Детальные записи
Пока ВыборкаОрганизация.Следующий() Цикл
// Создание Точки верхнего уровня "Организации"
ТочкаОрганизация = ДиаграммаГанта.Точки.Добавить();
ТочкаОрганизация.Текст = ВыборкаОрганизация.Организация;
ВыборкаСотрудник = ВыборкаОрганизация.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСотрудник.Следующий() Цикл
// Создание Точки нижнего уровня "Сотрудники"
ТочкаСотрудник = ТочкаОрганизация.Точки.Добавить();
ТочкаСотрудник.Текст = ВыборкаСотрудник.Сотрудник;
// Получение значения на пересечении Точек и Серий
ЗначениеОрганизация = ДиаграммаГанта.ПолучитьЗначение(ТочкаОрганизация, СерияОтпуск);
ЗначениеСотрудник = ДиаграммаГанта.ПолучитьЗначение(ТочкаСотрудник, СерияОтпуск);
ВыборкаДетальныеЗаписи = ВыборкаСотрудник.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Создание Интервалов полученого Значения
ИнтервалОрганизация = ЗначениеОрганизация.Добавить();
ИнтервалОрганизация.Начало = ВыборкаДетальныеЗаписи.ДатаНачала;
ИнтервалОрганизация.Конец = КонецДня(ВыборкаДетальныеЗаписи.ДатаОкончания);
ИнтервалСотрудник = ЗначениеСотрудник.Добавить();
ИнтервалСотрудник.Начало = ВыборкаДетальныеЗаписи.ДатаНачала;
ИнтервалСотрудник.Конец = КонецДня(ВыборкаДетальныеЗаписи.ДатаОкончания);
КонецЦикла;
КонецЦикла;
КонецЦикла;
ДиаграммаГанта.Обновление = Истина;
КонецПроцедуры
Печать и сохранение в файл «Диаграммы Ганта»

Для объекта с типом «Диаграмма Ганта» по умолчанию возможность сохранения в файл и печать не доступна. Для того что бы реализовать эту задачу необходимо перенести ее в «Табличный документ», например таким образом:

1С (Код)
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
&НаСервере
Функция СформироватьТабличныйДокумент()
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
РисунокДиаграммы = ТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.ДиаграммаГанта);
РисунокДиаграммы.Ширина = 300;
РисунокДиаграммы.Высота = 100;
ДиаграммаГанта = РисунокДиаграммы.Объект;
// Работа с областями
ДиаграммаГанта.ОбластьЛегенды.Расположение = РасположениеЛегендыДиаграммы.Нет;
ДиаграммаГанта.ОбластьПостроения.Заголовок = "Сотрудники";
ДиаграммаГанта.ОбластьЗаголовка.Текст = "Пример от myblog-1c.ru";
// Добавление "Месяца" в шкалу времени
ЭлементыШкалыВремениДиаграммы = ДиаграммаГанта.ОбластьПостроения.ШкалаВремени.Элементы;
ЭлементШкалыВремениДиаграммыМесяц = ЭлементыШкалыВремениДиаграммы.Добавить();
ЭлементШкалыВремениДиаграммыМесяц.Единица = ТипЕдиницыШкалыВремени.Месяц;
ЗаполнитьДиаграммуГанта(ДиаграммаГанта, Период);
// Развернутое отображение "Точек"
Для Каждого ТекущаяТочка Из ДиаграммаГанта.Точки Цикл
   ДиаграммаГанта.РазвернутьТочку(ТекущаяТочка, Истина);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции

Так же пример «Печати» реализован в демонстрационной конфигурации 1С доступной для скачивания с ИТС по ссылке в начале статьи.

Тут нужно учесть, что при сохранении в Excel или выводе на печать «диаграмма Ганта» представляет из себя «Рисунок», как показала практика, для пользователей может быть неожиданным, что у нее нельзя поменять ширину колонки или вписать информацию в ячейку привычным образом.

Где находятся настройки области построения?

Для того, что бы перейти в настройки области построения и в частности шкалы времени, необходимо перейти в «Свойство» диаграммы -> Настройки -> перейти в «Свойства» области построения

Настройки диаграммы 1
Настройки диаграммы 2
Работа с фоном диаграммы Ганта

В настройках области построения, есть возможность выделить фон другим цветом, указав нужные интервалы, например выделим майские праздники и выходные:

Фон диаграммы Ганта

Тоже самое можно сделать программно:

1С (Код)
1
2
ИнтервалФона = ДиаграммаГанта.ИнтервалыФона.Добавить('20250501', КонецДня('20250504'));
ИнтервалФона.Цвет = WebЦвета.БледноМиндальный;
В диаграмме выводиться лишний день / месяц / год

По умолчанию полный интервал времени определяется автоматически, иногда он захватывает лишние пустые периоды, избежать этого можно таким образом:

1С (Код)
1
2
ДиаграммаГанта.АвтоОпределениеПолногоИнтервала = Ложь;
ДиаграммаГанта.УстановитьПолныйИнтервал(Период.ДатаНачала, КонецДня(Период.ДатаОкончания));
Задваиваются «Точки» при нескольких «Сериях»

На стандартных настройках при построении диаграммы по нескольким «Сериям» мы получаем задвоение «Точек», избежать этого можно установив ПоложениеТаблицы = Нет для элемента формы ДиаграммаГанта

Задвоение точек Диаграммы Ганта

Или программным путем:

1С (Код)
1
Элементы.ДиаграммаГанта.ПоложениеТаблицы = ПоложениеТаблицыДиаграммыГанта.Нет;

Рекомендации

  • Пример работы с "Пакетом запросов"
  • Релиз новой Платформы 1С 8.5
  • ЕСТЬNULL и МАКСИМУМ - кто главнее
Платформа 1С Tags:Диаграмма Ганта

Навигация по записям

Previous Post: Обзор новых возможностей ЗУП 3.1.33
Next Post: Коротко о Хешировании

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

ДзенTelegram

Разработки

  • Печатная форма "Расходный кассовый ордер" для ЗУП 3.1 Печатная форма "Расходный кассовый ордер" ЗУП 3.1 650,00 ₽
  • Отчет "План-факт отпусков сотрудников в виде диаграммы Ганта Отчет "План-факт по отпускам сотрудников" ЗУП 3.1 650,00 ₽
  • Приказ об отмене трудового договора (рис 1) Печатная форма "Отмена приема на работу" ЗУП 3.1 650,00 ₽
  • Обработка “Выплата сотруднику через банк” ЗУП 3.1 Обработка “Выплата сотруднику через банк” ЗУП 3.1 0,00 ₽
  • Тестирование API Яндекс GPT Обработка "Работа с API YandexGPT" 650,00 ₽

MDM web-сервис XML БСП ЕФС-1 ИИ КД 2.0 НДФЛ СЗВ-СТАЖ СЗВ-ТД СКД СТД-Р СФР СЭДО ФСС ФСС НС больничные листы взносы вычеты длительная операция запрос интерфейс кадровая история кадровые данные кадровые переводы легкий труд мастер-данных обмен данными общий модуль отбор отпуска печать без проверки печать с диалогом пользователи представление прием на работу резервы отпусков сверхурочные синхронизация ЗУП и БП средний заработок табель таблица периодов табличный документ фотография штатное расписание

Яндекс.Метрика

© 2022-2026 myblog-1c.ru

Пользовательское соглашение

Контакты