|  08.10.2012, 08:58 | #1 | 
| северный Будда |  Импорт потенциальных клиентов 
			
			DAX 2012 kernel 6.0.947.0 Дано: Сейлы участвуют в различных мероприятиях, с которых приносят талмудические списки потенциальных клиентов и их контактов, которые потом прозваниваются. В 2012 (в модуле Sales and marketing) есть достаточно удобный инструмент для этого (call-листы), но предварительно переносить туда информацию из талмудов руками муторно, чревато ошибками, да и просто жаль на это время тратить. Решили сделать импорт этих данных в Аксапту автоматическим, по установленному шаблону. Алгоритм - создаём руками call-лист в 2012, нажимаем в нём кнопку импорта, система генерит для каждого потенциального клиента лид (lead, возможный customer) и DirParty, для каждого контакта - Contact и свой DirParty, а потом связывает их. Пользовательской информации о том, как сделать такое с клиентами в Сети оказалось достаточно много. А вот про лиды там почему-то ничего не нашлось - то ли функционал непопулярный, то ли я не так искал... В общем, я решил выложить то, что у меня получилось. Возможно, кому-то это облегчит жизнь в будущем. Очевидные вещи вроде приёма данных из файла я опустил. Так можно создать лиды: X++:     smmLeadsService                         leadsService;
    smmLeads                                leads;
    smmLeads_smmLeadTable                   leadTable;
    smmLeads_DirParty_DirOrganization       leadDirOrg;
    DirParty                                party;
    DirPartyName                            custName;
    DirPartyPostalAddressView               partyPostalAddress;
    DirPartyContactInfoView                 partyContactInfo;
    ;
    custName    = "Customer name"; // берём из Экселя
    leadsService    = smmLeadsService::construct();
    leads           = new smmLeads();
    leadTable   = leads.createsmmLeadTable().addNew();
    leadTable.parmSubject(custName);
    leadTable.parmStatus(smmLeadStatus::Open);	
    leadDirOrg  = new smmLeads_DirParty_DirOrganization();
    leadDirOrg.parmName(custName);
    leadDirOrg.parmNameAlias(custName);
    leadDirOrg.parmLanguageId(languageId); // системный язык
    leadTable.createDirParty().add(leadDirOrg);
    leadsService.create(leads);
    ret = DirPartyTable::findByName(custName, DirPartyType::Organization);
    if (!ret)
    {
        throw error ("Лид не был создан");
    }
    party = new dirParty(ret);
    partyPostalAddress.CountryRegionId  = "RUS";	// код страны
    partyPostalAddress.Street           = "Адрес";	// берём из Excel
    partyPostalAddress.ZipCode          = "123456";	// берём из Excel
    partyPostalAddress.IsPrimary        = true;
    party.createOrUpdatePostalAddress(partyPostalAddress);
    partyContactInfo.Type       = LogisticsElectronicAddressMethodType::Phone;
    partyContactInfo.Locator    = "+79019000000";	// берём из Excel
    partyContactInfo.IsPrimary  = true;
    party.createOrUpdateContactInfo(partyContactInfo);
	// ну и т.д. для всех контактов лида в целомX++:     DirPartyContactInfoView     contactInfo;
    ContactPerson               contactPerson;
    ContactPersonEntity         contactPersonEntity;
    DirOrgPersonRelations       dirOrgPersonRelations;
    ;
    contactPersonEntity = ContactPersonEntity::construct(contactPerson);
    contactPersonEntity.parmFirstName("Иван");			// берём из Excel
    contactPersonEntity.parmLastName("Тёркин"); 		// берём из Excel
    contactPersonEntity.parmProfession("Директор");		// берём из Excel
    contactPersonEntity.parmContactForParty(_custPartyRecId);	// Party лида
    contactPersonEntity.parmSensitivity(smmSensitivity::Personal);
    contactPersonEntity.write();
    contactInfo.Type    = LogisticsElectronicAddressMethodType::Phone;
    contactInfo.Locator             = "1234455";	// берём из Excel
    contactInfo.LocatorExtension    = "678";		// берём из Excxel
    contactInfo.IsPrimary           = true;
    contactPersonEntity.createOrUpdateContactInfo(contactInfo);
	// ну и т.д. для всех персональных контактовX++:     CustCustomerService                     custService;
    CustCustomer                            cust;
    CustCustomer_CustTable                  custTable;
    CustCustomer_DirParty_DirOrganization   dirOrg;
    CustCustomer_OrganizationName           orgName;
    DirPartyName                            custName;
    ;
    custName    = "Customer name"; // берём из Экселя
    custService = CustCustomerService::construct();
    cust        = new CustCustomer();
    custTable = cust.createCustTable().addNew();
    dirOrg = new CustCustomer_DirParty_DirOrganization();
    dirOrg.parmName(custName);
    dirOrg.parmNameAlias(custName);
    dirOrg.parmLanguageId(languageId); // системный язык
    orgName = dirOrg.createOrganizationName().addNew();
    orgName.parmName(custName);
    custTable.createDirParty().add(dirOrg);
    custService.create(cust);P.S. Наверное, можно сделать то же самое посредством механизма импорта из Excel через аксаптовский add-in, но у меня к нему устойчивая антипатия со времён заливки продуктового справочника. Да и не считаю я правильным делать такое для регулярных операций 
				__________________ С уважением, Вячеслав | 
|  | 
| Теги | 
| customer, dynamics ax, lead, ax2012 | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| импорт клиентов ax2009. | 7 | |||
| импорт "справочника" клиентов | 14 | |||
| Стандартный импорт данных. Обновление | 0 | |||
| импорт данных | 2 | |||
| Коды клиентов в CRM - проблема | 5 | |||
| 
 |