|
![]() |
#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, но у меня к нему устойчивая антипатия со времён заливки продуктового справочника. Да и не считаю я правильным делать такое для регулярных операций
__________________
С уважением, Вячеслав |
|
![]() |
#2 |
Участник
|
Не совсем понятно - вы допилили стандартный импорт Интересов? Или написали свой? Чем именно стандартный не подходит (он еще в тройке был, в 2012 переведен на AIF)?
__________________
Ivanhoe as is.. |
|
![]() |
#3 |
северный Будда
|
Нет, стандартный не трогали. Лиды будут поступать из разных источникоов и разными способами - решили, что проще курочить свой собственный класс.
__________________
С уважением, Вячеслав |
|
![]() |
#4 |
MCT
|
CRM, конечно в аксе крут, но в MS CRM по-круче будет, пошто не пошли отдельным продуктом, потом за интегрировали и все ?
__________________
Axapta book for developer |
|
![]() |
#5 |
Участник
|
Предлагаю открыть отдельную ветку и обсудить. Давно самого этот вопрос мучает. В свою очередь готов ответить по модулю AX 2009 (по наличию времени, могу и 2012 глянуть).
__________________
Ivanhoe as is.. |
|
![]() |
#6 |
Участник
|
|
|
![]() |
#7 |
северный Будда
|
Пока в этом нет необходимости
__________________
С уважением, Вячеслав |
|
Теги |
customer, dynamics ax, lead, ax2012 |
|
![]() |
||||
Тема | Ответов | |||
импорт клиентов ax2009. | 7 | |||
импорт "справочника" клиентов | 14 | |||
Стандартный импорт данных. Обновление | 0 | |||
импорт данных | 2 | |||
Коды клиентов в CRM - проблема | 5 |
|