Выгрузка данных в MS Project через COM-соединение

01.09.11

Интеграция - Загрузка и выгрузка в Excel

Работа с Microsoft Project через COM-соединение

Навеяно постом.

Нехватка материала по работе с Project'ом через COM подтолкнула меня написать эту статью. Материал не претендует на полноту, но, надеюсь, поможет программистам в некоторых базовых моментах. Использовалась русская версия продукта, поэтому названия полей и таблиц приведены такими, как они были прописаны в VBA при записи макросов. Для другого языка, думаю, перевести проблем не составит.

Итак, создание COMОбъекта:

MSProject = Новый COMОбъект("MSProject.Application");

создание нового файла:

MSProject.FileNew();

получаем коллекцию задач:

Tasks = MSProject.ActiveProject.Tasks;

отключение сообщений об ошибках и диалоговых окон (вида "Такой файл уже существует"):

MSProject.DisplayAlerts = False;

указываем сколько часов в рабочем дне:

MSProject.ActiveProject.HoursPerDay = 8;

для добавления колонок на рабочую область, использую метод TableEditEx у Application:

ИмяТаблицы = "&Ввод";
ПозицияКолонки = 2;
ТипПоля = "Текст1";
MSProject.Application.TableEditEx(ИмяТаблицы,True,,,,, ТипПоля ,"Представление колонки",,,,,,,  ПозицияКолонки ,,,,,);

Фактически в таблице хранится фиксированное количество столбцов и мы лишь можем управлять видимостью их и изменением свойств. Поэтому мы можем в любой столбец прописать свои значения, даже если его не видно на листе. Чтобы отобразить данные, нужно добавить колонку с тем типом данных, который мы указали. Второй параметр должен быть True. Список имен таблиц можно увидеть выполнив макрос с одним единственным словом Tables (может есть и "нормальный" вызов этого списка, но я этими поисками не занимался). После этого на форме появится список всех доступных таблиц проекта.

После добавления колонок нужно обновить таблицу:

MSProject.Application.TableApply(ИмяТаблицы);

Добавим задачу в проект:

NewTask = Tasks.Add();
мСоответствиеЗадач.Вставить(Задача1С, NewTask);

Переменная  мСоответствиеЗадач  это соответствие, для последующего добавления предшественников, если они будут.

Изменение уровня задачи в иерархии задач (действия аналогичны нажатию стрелок "Понизить уровень задачи" и "Повысить уровень задачи" на панели проекта:

Task.OutlineIndent(); // понижение уровня
Task.OutlineOutdent(); // повышение уровня

Редактирование полей, которые не ReadOnly можно напрямую:

NewTask.Name = "Название";
NewTask.Milestone = True;  // Веха

Обратите внимание, что поля Start (Начало задачи) и Finish (Окончание задачи) не должны быть заполнены пустой датой:

Если ЗначениеЗаполнено(ДатаНачалаПлан) Тогда
   
NewTask.Start = ДатаНачалаПлан + Hour * 9;
КонецЕсли;
Если
ЗначениеЗаполнено(ДатаОкончанияПлан) Тогда
   
NewTask.Finish = ДатаОкончанияПлан + Hour * 18;
КонецЕсли;

Остальные поля можно редактировать через метод SetField, который умеет работать через константы имен полей и их ID (можно посмотреть в справке все ID всех доступных полей). Пример через ID:

NewTask.SetField(188743731, КодСДР); // Текст1

Добавим ресурсы через константу по имени поля. В квадратных скобках указывается Загрузка ресурса:

FieldRes = Tasks.Application.FieldNameToFieldConstant("Названия ресурсов");
NewTask.SetField(FieldRes, Исполнитель.Наименование + "[80%]");

Если ресурсов больше, чем один, то они указываются в одну строку через точку с запятой.

Добавим предшественников с помощью метода  LinkPredecessors. Здесь-то нам и понадобится соответствие задач 1С и задач Project'а:

LinkTask = мСоответствиеЗадач[ЗадачаПредшественник];
Task.LinkPredecessors(LinkTask);

Можно изменить шрифт:

MSProject.Application.SelectSheet();
MSProject.Application.Font32Ex("Arial", 8 , True);

Сохраним и выйдем:

MSProject.FileSaveAs(ПутьКФайлу);
MSProject.Application.Quit();

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    22045    23    49    

39

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

24.04.2017    52057    104    165    

91

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    25925    25    1    

27

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 1C:Бухгалтерия 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

6000 5100 руб.

09.11.2016    238640    1086    905    

1021

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, Детский мир, МагнитЭкспресс (быв.Казань-Экспресс), Леруа Мерлен, ЭНФАНТА (Акушерство), ЛаМода, Летуаль, Твой дом, Золотое Яблоко в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:КА 2, 1С:ERP Управление предприятием. Возможность подключить любые маркетплейсы. Анализ продаж ОZON. 30 дней БЕСПЛАТНОГО пользования!

3600 руб.

12.08.2021    36839    379    68    

164

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

05.10.2022    11353    13    8    

15

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 22.01.2025, версия 9.9 - 9.14)

16800 руб.

20.11.2015    157673    384    378    

516

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1053    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. German 413 14.07.11 09:26 Сейчас в теме
А как связи проставить?
2. Irwin 564 14.07.11 09:47 Сейчас в теме
(1) У объекта Task есть два метода LinkPredecessors() и LinkSuccessors(). Первый добавляет предшественника, второй наследника.
hem1cuda; +1 Ответить
3. artmicro 06.10.11 15:09 Сейчас в теме
Спасибо. Очень помогло. В процессе бурной автоматизации отдела, появилась необходимость работы с Project, так что Ваша статья пришлась очень даже кстати. :)
hem1cuda; +1 Ответить
4. Romanius 25.11.11 14:56 Сейчас в теме
Вдруг кому пригодится. У метода LinkPredecessors() можно использовать 3 параметра, собственно ссылка на предшественника, тип привязки, и запаздывание.

по 1-му все понятно
второй параметр - число от 1 до 4 (на текущий момент, 2010-й Project).
3-й параметр чуть хитрее, тип значение Variant - не заморачиваясь с английским выяснилось текстовое представление числа в данном конкретном методе.

где-то так
ОсновнаяЗадача.LinkPredecessors(ЗадачаПредок,1,Строка(ПроцессСмещение));


ЗЫ: И еще Project считает по рабочим дням, это следует учитывать.
5. RukORK 07.02.12 10:08 Сейчас в теме
Очень полезная статья, помогла в настройке выгрузки проектов в project
6. RukORK 07.02.12 10:09 Сейчас в теме
7. Konsult 07.02.12 10:11 Сейчас в теме
Очень понятно и информативно расписано, автор молодец.
hem1cuda; +1 Ответить
8. Daniayr 18 18.03.16 12:16 Сейчас в теме
у кого нить есть полный пример выгрузки?
9. hem1cuda 29.03.19 22:18 Сейчас в теме
10. bimy22 01.04.19 14:08 Сейчас в теме
Довольно подробно расписано, спасибо за публикацию.
Оставьте свое сообщение