Выгрузка данных в 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();

См. также

Перенос данных из Парус 8 в ЗГУ 3

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

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

84000 руб.

19.08.2020    22448    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

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

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210180    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в 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 Платные (руб)

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

13200 руб.

20.11.2015    150725    367    375    

501

Маркетплейсный загрузчик для 12-ти маркетплейсов в "БП 3", "УТ 11", "КА 2", ERP, УНФ

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

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

1800 руб.

12.08.2021    31894    226    63    

117

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

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

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    214930    925    886    

939
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. German 413 14.07.11 09:26 Сейчас в теме
А как связи проставить?
2. Irwin 541 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 17 18.03.16 12:16 Сейчас в теме
у кого нить есть полный пример выгрузки?
9. hem1cuda 29.03.19 22:18 Сейчас в теме
10. bimy22 01.04.19 14:08 Сейчас в теме
Довольно подробно расписано, спасибо за публикацию.
Оставьте свое сообщение