|
|
#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 |
|
северный Будда
|
Пока в этом нет необходимости
__________________
С уважением, Вячеслав |
|
|
|
|
#6 |
|
Участник
|
Предлагаю открыть отдельную ветку и обсудить. Давно самого этот вопрос мучает. В свою очередь готов ответить по модулю AX 2009 (по наличию времени, могу и 2012 глянуть).
__________________
Ivanhoe as is.. |
|
|
|
|
#7 |
|
Участник
|
|
|
|
|
|
#8 |
|
Участник
|
Старая тема есть Различия между модулями CRM
|
|
|
|
| За это сообщение автора поблагодарили: Ivanhoe (1). | |
|
|
#9 |
|
MCT
|
По мимо чисто функциональных отличий есть так же отличия по платформе - это возможность в обход действующих ролей делать общий доступ, вещь, которая бывает сильно нужна.
__________________
Axapta book for developer |
|
|
| Теги |
| customer, dynamics ax, lead, ax2012 |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| импорт клиентов ax2009. | 7 | |||
| импорт "справочника" клиентов | 14 | |||
| Стандартный импорт данных. Обновление | 0 | |||
| импорт данных | 2 | |||
| Коды клиентов в CRM - проблема | 5 | |||
|