Само собой, вместо MS Project можно подставить любую аналогичную программу, Oracle Primavera, например.
Вообще, если кто не в теме, лучшая программа в этом классе, можно сказать, эталон – это отечественный Spider Project (далее – Спайдер). По качеству расписания, по возможностям, по методической проработке он просто на голову выше конкурентов.
Есть у него, конечно, и недостатки. С моей, субъективной, точки зрения, один из них, – это обилие возможностей. Это утяжеляет пользовательский интерфейс и требует серьезного обучения. При всем при этом интерфейс Спайдера все же гораздо логичнее, чем у MS Project. Еще один недостаток – трудность адаптации и интеграции с другими системами. Возможности языка сценариев, скажем так, уступают связке VBA и COM-интерфейса у MS Project. Ну, еще и цена, hasp-защита, отсутствие серверного режима.
Все это когда-то побудило меня попробовать сделать свой движок, пусть и с худшим качеством расписания и меньшими возможностями. Началось с названия: LevelService (далее – LS). Кончилось тем, что расписание (в среднем) считается даже чуть лучше, чем в Спайдере. Возможностей, конечно, меньше, но многое сделано. Дальше я просто перечислю то, что реализовано, без расшифровки. Если что-то непонятно, то советую скачать демоверсию Спайдера, почитать “Помощь” и поиграться с примерами. Кроме того, на сайте есть много интересных материалов, в том числе с критикой MS Project и других конкурентов. И все это правда 🙂
Итак, реализовано:
- Расчет расписания с выравниванием загрузки ресурсов вперед от старта или назад от директивного финиша. Считается раннее, позднее расписание, свободный резерв (flex). Расчет расписания идет с точностью до минуты. Точность до секунды (как в Спайдере) была сочтена избыточной.
- Ограничения на задачи – НеРаньшеЧем, НеПозжеЧем, КакМожноРаньше, КакМожноПозже.
- Неограниченное количество календарей (кроме ресурсов машины, естественно). В календарях нет жесткой привязки к неделе, как во многих программах, период календаря может быть и неделя, и месяц, и количество дней. Например, можно легко сделать подекадный календарь, или скажем, “четные утром, нечетные вечером”. Диапазон у исключений задается с точностью до дня (в Спайдере – до минуты).
- Несколько команд (варианты термина: смен, бригад, групп) ресурсов в операции.
- Для операций можно задавать длительность или объем.
- Типы операций — Длительность, Производительность, Гамак, Фаза.
- Множественные связи, в т. ч. с задержкой по времени (календарь используется) или по объему (календарь не используется).
- Жесткие связи.
- Роли. Заполняются ресурсами динамически по количеству или производительности.
- Мультиресурсы. Их нельзя заменить простой комбинацией ресурсов, т. к. мультиресурсы могут использоваться в ролях. Кроме того, производительность мультиресурса может быть не равна сумме производительностей его ресурсов.
- Производство ресурсов по времени.
- Работа с неполной загрузкой, причем честная, как в Спайдере, а не халтура с ресурсочасами. Пример: 2 человека с загрузкой 50% не должны быть равны одному с загрузкой 100%.
Кое-что из нереализованного. Нет (пока?):
- производства ресурсов на операциях
- выравнивания по материалам и финансам
- переменной загрузки ресурсов
- двойных связей (термин из Спайдера, сочтено экзотикой)
- плановых прерываний задач (нет, и не будет). В процессе учета факта разрыв задачи, конечно, может быть.
Отсутствие выравнивания по материалам и финансам никак не мешает рассчитать по расписанию движение материалов и финансов. Опять-таки, для разработчиков это не так уж и сложно.
Некоторые результаты
В 2024 году на форуме planningplanet.com Евгений Зорин проводил сравнение MS Project, Oracle Primavera и Спайдер. Победил Спайдер с большим отрывом. Сумма дней для 25 тестовых проектов у него 4824. Это число с тех пор, вероятно, уменьшилось, но не сильно. MS Project с тех пор только ухудшил результаты.
У LS сумма дней — 4684. Для ориентировки по скорости работы: расчет 600 проектов длительностью 120 операций из PSPLIB занимает около 3-х минут (на десктопе).
Сейчас LS доступен в виде REST-сервиса. Сервер – обычный ноутбук, но никаких ограничений пока нет. В дальнейшем планируется переезд в облако.
Для использования сервиса подойдет среда с языком программирования, хорошей рисовалкой диаграммы Ганта и выводом в таблицы. Платформа 1С годится. Диаграмма Ганта там довольно ограничена, но разработчики обещают её улучшить.
Для желающих попробовать прилагается архив с клиентами на 1С, C# и VBA (Excel)
На 1С и C# есть 3 вида клиентов:
- Для обработки файлов MS Project (.xml формат).
- Для обработки файлов Спайдер (выгрузка в текстовые CSV файлы)
- Простая демонстрация вызова без входных файлов.
Клиенты на C# просто получают результаты расчета. Для этого их нужно будет скомпилировать. Использовалась среда Visual Studio 2024.
Клиенты на 1С повеселее – они рисуют диаграмму Ганта, таблицу дат и графики загрузки ресурсов. Сами клиенты — это обработки типа .epf. Для запуска подойдет любая конфигурация, в т. ч. и пустая. Режим запуска — "Обычное приложение", режим использования модальности -"Использовать". Формы обычные. Тестирование проводилось на релизах вплоть до 8.3.15.1700.
Клиент на VBA не использует входных файлов, для запуска потребуется MS Excel.
Также прилагаются тестовые наборы проектов из библиотеки PSPLIB. Более подробная информация содержится в файле Readme!.txt.