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

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

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

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

Funt432286

всем доброго времени суток

Заполняю диаграмму Ганта (ДГ). Заполняю уровень оператора и у каждого оператора должно выводиться по подуровню
В итоге Операторы выводятся нормально, а номера заказов только последняя запись из выборки.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| А_ПланПреПресс.ОператорПредпресса КАК Оператор,
| КОЛИЧЕСТВО(А_ПланПреПресс.ОператорПредпресса) КАК КолВРаботе
|ИЗ
| РегистрСведений.А_ПланПреПресс КАК А_ПланПреПресс
|ГДЕ
| А_ПланПреПресс.РасчетЗаказа.СтатусЗаказа = &СтатусЗаказа
| И А_ПланПреПресс.ОператорПредпресса <> &ОператорПредпресса
|
|СГРУППИРОВАТЬ ПО
| А_ПланПреПресс.ОператорПредпресса";

Запрос.УстановитьПараметр("ОператорПредпресса", Справочники.Пользователи.ПустаяСсылка());
Запрос.УстановитьПараметр("СтатусЗаказа", Справочники.П_СтатусыЗаказов.НайтиПоНаименованию("Допечатная подготовка"));

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

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

чНомТочки = 0;

// ******** 1 уровень - Операторы **********************
Пока ВыборкаОператоры.Следующий() Цикл
Точка = Диаграмма.УстановитьТочку(ВыборкаОператоры.Оператор);
Точка.Текст = Строка(ВыборкаОператоры.Оператор);
Точка.Расшифровка = ВыборкаОператоры.Оператор;

// ******** 2 уровень - Номера ТЗ ******************
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| А_ПланПреПресс.НомерЗаказа,
| А_ПланПреПресс.Заказчик,
| А_ПланПреПресс.НомерОчереди,
| А_ПланПреПресс.СрочностьЗаказа,
| А_ПланПреПресс.Оборудование,
| А_ПланПреПресс.ОператорПредпресса,
| А_ПланПреПресс.СтатусЗаказаОтдел
|ИЗ
| РегистрСведений.А_ПланПреПресс КАК А_ПланПреПресс
|ГДЕ
| А_ПланПреПресс.РасчетЗаказа.СтатусЗаказа = &СтатусЗаказа
| И А_ПланПреПресс.ОператорПредпресса = &ОператорПредпресса";

Запрос.УстановитьПараметр("ОператорПредпресса", ВыборкаОператоры.Оператор);
Запрос.УстановитьПараметр("СтатусЗаказа", Справочники.П_СтатусыЗаказов.НайтиПоНаименованию("Допечатная подготовка"));

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

ВыборкаНомерТЗ = РезультатЗапроса.Выбрать();
ВыборкаНомерТЗ.Количество();

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

чНомТочки = чНомТочки + 1;

КонецЦикла;

Просто ДГ для меня вещь новая!


antoneus

А что-то иное ожидалось после такого кода?

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

Funt432286

antoneus, я понимаю что Точки должны создаваться как-то в цикле

только не пойму как!?

ТочкаТЗ = Диаграмма.УстановитьТочку(чНомТочки, ВыборкаОператоры.Оператор);
ТочкаТЗ[чНомТЗ].Текст = Строка(ВыборкаНомерТЗ.НомерЗаказа);
ТочкаТЗ[чНомТЗ].Расшифровка = ВыборкаНомерТЗ.НомерЗаказа;

Получение элемента по индексу для значения не определено
{Обработка.ПланеркаПреПресс.Форма.ПланеркаПреПресс.Форма(557)}: ТочкаТЗ[чНомТЗ].Текст = Строка(ВыборкаНомерТЗ.НомерЗаказа);
{Обработка.ПланеркаПреПресс.Форма.ПланеркаПреПресс.Форма(2819)}: ЗагрузитьОператорыЗагрузка();

antoneus

Номер точки нужно инкрементировать во внутреннем цикле, а перед ним обнулять, не?

Funt432286

antoneus, получился вот такой код
Запрос.УстановитьПараметр("ОператорПредпресса", ВыборкаОператоры.Оператор);
Запрос.УстановитьПараметр("СтатусЗаказа", Справочники.П_СтатусыЗаказов.НайтиПоНаименованию("Допечатная подготовка"));

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

ВыборкаНомерТЗ = РезультатЗапроса.Выбрать();
ВыборкаНомерТЗ.Количество();

Пока ВыборкаНомерТЗ.Следующий() Цикл

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


Сообщить(ВыборкаНомерТЗ.НомерЗаказа);
КонецЦикла;

выдает вот такую ошибку

Получение элемента по индексу для значения не определено
{Обработка.ПланеркаПреПресс.Форма.ПланеркаПреПресс.Форма(551)}: ТочкаТЗ[чНомТЗ].Текст = Строка(ВыборкаНомерТЗ.НомерЗаказа);
{Обработка.ПланеркаПреПресс.Форма.ПланеркаПреПресс.Форма(2814)}: ЗагрузитьОператорыЗагрузка();

antoneus

блд)

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

Funt432286

antoneus, Длин, я просто думал что параметр УстановитьТочку(чНомТЗ - относится к Родительскому  уровню

Спасибо! Этот этап получился!

antoneus

К родительскому уровню относится ВыборкаОператоры.Оператор. Блин, ну СП для чего писали?

Funt432286

antoneus, только почему-то данные записанные в подстроку с номером тз не соответствуют выборке
При чем выборка правильная и присваивается правильно, а вот выводится в таблицу совсем не то что выбирается

Funt432286

Funt432286, вот что получается при отладке по точке

Теги:

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

Рейтинг@Mail.ru

Поиск