Основное по работе с обработкой:
1. Для создания проекта обязательны для заполнения поля:
- Сервер
- Login
- Password
- Наименование проекта
2.Для создания задачи в проекте обязательны для заполнения поля:
- Сервер
- Login
- Password
- Наименование задачи
- MSProject— ссылка на проект с ID проекта (пример:-https://Сервер/_api/ProjectServer/Projects(‘857b301a-c9ec-e811-ab63-66a60938dcd6’)- где 857b301a-c9ec-e811-ab63-66a60938dcd6- ID)
- Длительность задачи — иначе длительность равна 0, также от указанной буквы, зависит в чем измеряется длительность (в моем примере 80ч=10 рабочим дням).
3. Можно последовательно создать проект и создать в нем задачу, достаточно заполнить поля шапки:
- Сервер
- Login
- Password
- Наименование проекта
- Наименование задачи
- Длительность задачи — иначе длительность равна 0, также от указанной буквы, зависит в чем измеряется длительность (в моем примере 80ч=10 рабочим дням)
Далее последовательно нажимаем Создать Проект и Добавить задачу.
Очень мало информации есть по REST API в Project Server, еще меньше ее на русском языке. Грусть печаль, но для умеющих читать английскую техническую документацию и умеющих читать/писать в JavaScript все проще (вот чем я пользовалась Создание, получение, обновление и удаление проектов с использованием JavaScript Project Server здесь все касается PS 2013, Project-REST-Basic-Operations/createproject.ps1— пример кода для его анализа, CSOM and REST samples showing task indent and insert, Calling SharePoint REST API with POST from Fiddler, DraftProject class— помогло с решение последнего нюанса).
Использую HTTPЗапрос+Json. Нашла прекрасную процедуру+функцию для парсинга Json и возможности получения необходимых данных в данной статье: Импорт из Json в 1с. Так же очень понравилась статья про Таймамуты: Паузы при исполнении кода (Sleep для 1С) — паузы в моем коде установлены с учетом нашего Сервера (паузы нужны не везде, но все же выбран не нагружающий вариант). Для чтения ошибок очень хорошо помогли данные ссылки: Коды ошибок Project Server и Справочник по кодам статуса HTTP, ДЕКOДИРОВАТЬ ТЕКСТ U0XXX ОНЛАЙН— очень помогает, тк многие ошибки возвращаются со строками такого плана "u041du043eu0432u043eu0435 u0432" .
И ГЛАВНОЕ СПАСИБО коллегам на работе— нюансы со статикой подключения и пример работы в Java были предоставлены ими (пример взятый у коллег выложить не могу, но схожее указано в ссылках выше).
И так по шагам разбираю действия обработки:
Создание Проекта:
1."/_api/contextinfo" — метод получения информации о подключении.
Я бы сказала метод фиксации подключения, мы в ответ получаем текст json, выбираем "FormDigestValue" полностью с датой, временем и с цифрами в конце, определяем как ID подключения и в дальнейшем при работе указываем в заголовке "X-RequestDigest". Это очень важный момент, мало где можно найти информацию о необходимости такой статистики подключения.
Заголовки:
"Accept","application/json;odata=verbose"
"Content-Type", "application/json"
"odata","verbose"
"X-RequestForceAuthentication","true"
2. "/_api/ProjectServer/Projects/Add()" — метод добавления проекта. К данному методу формируется временный файл json с параметрами, которые обязательны при заполнении, id проекта при этом формируется автоматически уже в самом Project-е. Дата старта, если ее не указывать будет равна текущей дате.
Заголовки:
"Accept","application/json;odata=verbose"
"Content-Type", "application/json"
"odata","verbose"
"X-RequestForceAuthentication","true"
"X-HTTP-Method", "POST" — можно не указывать
"X-RequestDigest","FormDigestValue" — id подключения
Пример json:
{
‘parameters’:{
‘Name’:’"1C тест test’,
‘Start’:2025-11-07T14:37:08′}
}
Все на выходе мы получим опубликованный в Project проект и ссылку на него, для дальнейших манипуляций.
Создание задачи в Проекте:
1." /_api/contextinfo"— аналогично действиям выше.
Заголовки:
"Accept","application/json;odata=verbose"
"Content-Type", "application/json"
"odata","verbose"
"X-RequestForceAuthentication","true"
2. "/_api/ProjectServer/Projects(‘%s’)/checkout()" — где %s- id проекта, метод получения Проекта (в Project проект будет извлечен для изменений). Без извлечения проекта, добавлять и изменять в нем данные не получится. Так же извлекать проект необходимо при работе с Дополнительными параметрами проекта.
Заголовки:
"Accept","application/json;odata=verbose"
"Content-Type", "application/json"
"odata","verbose"
"X-RequestForceAuthentication","true"
"X-HTTP-Method", "POST" — можно не указывать
"X-RequestDigest","FormDigestValue" — id подключения
3."/_api/ProjectServer/Projects(‘%s’)/Draft/Tasks/Add()" — метод добавления задачи. К данному методу формируется временный файл json с параметрами, которые обязательны при заполнении, id задачи при этом формируется автоматически уже в самом Project-е. Дата старта, если ее не указывать будет равна дате старта проекта. Продолжительность если не указать букву, будет автоматически измеряться в стандартной единице измерения (в моем примере стандартная единица измерения "день"-соответствует букве "д", так же можно указать в "часах", соответственно указав после цифр букву "ч", при этом учитывается рабочее время 8 часовой рабочий день 5/7 дней в неделю.)
Заголовки:
"Accept","application/json;odata=verbose"
"Content-Type", "application/json"
"odata","verbose"
"X-RequestForceAuthentication","true"
"X-HTTP-Method", "POST" — можно не указывать
"X-RequestDigest","FormDigestValue" — id подключения
Пример json:
{
‘parameters’:{
‘Name’:’"1C test’,
‘Start’:2025-11-07T14:37:08′,
‘Duration’:’5′}
}
4. "/_api/ProjectServer/Projects(‘%s’)/Draft/update()" — метод обновления данных в проекте. Необходимо зафиксировать внесенные данные в очереди на публикацию.
Заголовки:
"Accept","application/json;odata=verbose"
"Content-Type", "application/json"
"odata","verbose"
"X-RequestForceAuthentication","true"
"X-HTTP-Method", "POST" — можно не указывать
"X-RequestDigest","FormDigestValue" — id подключения
5. "/_api/ProjectServer/Projects(‘%s’)/Draft/Publish(true)" — метод публикации проекта. Вот тут была своя "заковырка". Вроде и передаю уже в самом ресурсе (True), но оказалось не достаточно. Необходимо формировать временный файл json с указанием checkIn=true.
Заголовки:
"Accept","application/json;odata=verbose"
"Content-Type", "application/json"
"odata","verbose"
"X-RequestForceAuthentication","true"
"X-HTTP-Method", "POST" — можно не указывать
"X-RequestDigest","FormDigestValue" — id подключения
Пример json:
{
‘checkIn’:’true’
}
Все, далее опубликуется проект с задачей.
Хочу заметить, что в процессе тестирования создалось много задач не опубликованных и не видимых для пользователей. И хотя проект был принудительно возвращен, задачи не появлялись в списке и при этом ни куда не пропали. При первой же удачной попытке публикации проекта из 1С с задачами, все эти ранее созданные задачи так же отобразились!!!!
Видимо, здесь акцент идет на очередь публикации из метода Update. Но пока точно не проверено.
ЗЫ: Надеюсь, для кого-то сделала доброе дело)))