Главная страница Microsoft Project УПРАВЛЕНИЕ ПРОЕКТАМИ
Спрашивайте! Наши эксперты ответят.
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

 
Для оперативного ответа рекомендуем задать вопрос в нашей группе Facebook
Более 11.000 человек уже в нашей группе по MS Project
На этом форуме запрещены ссылки, но они разрешены в группе Facebook
 
Интеграция MS Project 2010 и 1С.

 
Начать новую тему   Ответить на тему    Список форумов УПРАВЛЕНИЕ ПРОЕКТАМИ -> Разработка, программирование и интеграция MS Project
Предыдущая тема :: Следующая тема  
Автор Сообщение
disad
Участник


Зарегистрирован: 26.11.2014
Сообщения: 3

СообщениеДобавлено: Чт, 27 Ноя 2014, 9:17    Заголовок сообщения: Интеграция MS Project 2010 и 1С. Ответить с цитатой

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

Нахожусь в процессе изучения темы. К данному моменту накопилось некоторое начальное понимание в методологии. Постараюсь сформулировать конкретные вопросы. Использую PSI, подключаюсь к соответствующим веб сервисам и вызываю их методы используя протокол SOAP. Т.е. из 1С просто посылаю пакеты используя com объект MSXML2.xmlHttp

В данный момент уперся в следующую проблему:

Требуется уметь обновлять процент завершения у задач, а также пользовательские настраиваемые поля с суммами. Нужна высокая точность вычислений. Суммы сверяются с бухгалтерией и должны биться до копейки.

Выбрал самый простой способ - метод UpdateStatus сервиса Statusing, осознал что этот метод работает только для назначенных задач (это легло в картину бизнес требований) и может обновлять только корпоративные настраиваемые поля. Я создал корпоративное пользовательское поле уровня задач. (Task Level ECF) Далее столкнулся со следующей проблемой: UpdateStatus работает с назначениями. Отсылаю пакет - акцептую обновления в центре утверждений. Пытаюсь увидеть изменения в основном представлении у задач, но оказывается что значения полей хранятся в отдельных таблицах - отдельно для самих задач и отдельно для назначений ! Используя возможность так называемого roll-down - можно сделать чтобы вводимые данные на уровне задач автоматически разворачивались до назначений. А мне хочется наоборот - обновив данные назначений по пользовательским полям увидеть их в представлении для задач (в представлении для назначений изменнные данные я вижу, но там нет древовидной структуры и т.д.) ..... Можно ли обойтись какими либо настройками проджект или мне придется отказываться от UpdateStatus и каким то образом работать через SOAP c DataSet- тами и службой очередей ?

Заранее большое спасибо всем откликнувшимся!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
disad
Участник


Зарегистрирован: 26.11.2014
Сообщения: 3

СообщениеДобавлено: Пн, 01 Дек 2014, 7:24    Заголовок сообщения: Ответить с цитатой

Как работать с очередями через PSI вроде разобрался, возникает второй вопрос: Как программно используя PSI вернуть все "зависшие" извлеченные проекты ? Есть ли такая возможность ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vladimir Ivanov
Администратор Сайта


Зарегистрирован: 21.09.2003
Сообщения: 3531
Откуда: TurboProject.Ru

СообщениеДобавлено: Пн, 01 Дек 2014, 7:32    Заголовок сообщения: Ответить с цитатой

Одно могу сказать вам, коллега.

Ваша участь незавидна. Вас сейчас начнет засыпать багами MSPS.

Если есть возможность выскочить из программирования PSI на программирование на клиент делайте это ASAP. Был бы у вас опыт, вы бы в PSI не полезли бы.

Так вы можете получить сейчас фейрверк багов MS и никаких средств влияния на них. Кроме как рефлектором достать код Microsoft и самому исправлять их ошибки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
disad
Участник


Зарегистрирован: 26.11.2014
Сообщения: 3

СообщениеДобавлено: Пн, 01 Дек 2014, 8:00    Заголовок сообщения: Ответить с цитатой

Что же делать? .... Менять выбранную технологию на ходу ....... Ок, а каков тогда путь программирования на клиенте ? Исходные данные: есть два сервера - на одном стоит серверная часть 1С со своим SQL Server , на другой физически машине стоит сервер проджект .... Нужно уметь обновлять данные проджект автоматически. Если PSI не походит ввиду глючности - какова альтернатива ? Делать Update прямыми запросами к базе проджект , как вариант рассматривался- но как последний безвыходный вариант.

Спасибо за участие.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
damir2497
Новичок


Зарегистрирован: 12.03.2015
Сообщения: 2

СообщениеДобавлено: Чт, 12 Мар 2015, 20:41    Заголовок сообщения: Ответить с цитатой

Совсем недавно занимаюсь программирование под Project Server 2010. Посмотрите на эту библиотеку - FluentPs [url]http://fluentps.codeplex.com/[/url] Очень классная библиотека (т.к. для Project Server 2010 нет клиентской объектной библиотеки как CSOM для 2013). Там есть примеры в исходниках. Добавляете библиотеку через nuget, создаете POCO классы и работаете с generic сервисами.
В вашем случае нужно свойство с атрибутом:
[PSNativeField(ColumnName = TaskCustomFieldsColumnNames.TASK_PCT_COMP)]
Но учтите, что в случае изменения его изменятся фактические трудозатраты, для кастомных полей юзайте атрибут(только тип поля может быть другой):
[PSCustomField(FieldName = "Имя кастомного поля", FieldType = PSFieldType.Text)]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
damir2497
Новичок


Зарегистрирован: 12.03.2015
Сообщения: 2

СообщениеДобавлено: Чт, 12 Мар 2015, 20:45    Заголовок сообщения: Ответить с цитатой

[quote="disad"]Как работать с очередями через PSI вроде разобрался, возникает второй вопрос: Как программно используя PSI вернуть все "зависшие" извлеченные проекты ? Есть ли такая возможность ?[/quote]
Пример. На ICommandHandler не обращайте внимания - реализация cqrs паттерна (отличная статья тут https://cuttingedge.it/blogs/steven/pivot/entry.php?id=91 https://cuttingedge.it/blogs/steven/pivot/entry.php?id=92)
internal class CheckInProjectsCommandHandler : ICommandHandler<CheckInProjectsCommand>
{
private readonly IPSProjectService<Project> _projectService;
private readonly IPSQueueSystemService _queueService;

public CheckInProjectsCommandHandler(IPSProjectService<Project> projectService, IPSQueueSystemService queueService)
{
_projectService = projectService;
_queueService = queueService;
}

public void Handle(CheckInProjectsCommand command)
{
foreach (var projectUid in command.ProjectUids)
{
var checkInJobId = _projectService.CheckIn(projectUid, command.SessionUid);
_queueService.WaitForQueue(checkInJobId);
}
}
}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов УПРАВЛЕНИЕ ПРОЕКТАМИ -> Разработка, программирование и интеграция MS Project Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

© 2003 - 2009, Портал MicrosoftProject.ru. Все права защищены.