배경
하나는 자신의 연락처의 부분 집합에 청구서와 함께 매월 정보를 전송 마케팅 목록에 대한 대규모 Excel 파일을 생성합니다. 이러한 연락처는 먼저 마케팅 목록에 추가되고 연락처의 이름, 주소 정보 및 OCR 번호는 으로 추출됩니다. 이러한 멤버를 Excel 파일로 내보낼 때 (인쇄용으로 보낼 수 있기 때문에) 고객이 파일을 생성하는 데 많은 문제가있었습니다. 우리가 성공하자 생성 된 Excel 파일 은 크기가 약 550MB이며 약 40k 행과 10 개 미만의 이름 및 주소 정보 열에 해당합니다. 잠시 후 Dynamics CRM에서 데이터가없는 160 개의 숨겨진 열이 추가로 생성되었음을 확인했습니다. 을 삭제하면 파일 크기가 4MB로 줄어 들었습니다. 이 칼럼들은 "processid"와 "processts"라는 이름으로 번갈아 사용되었습니다.는 고객의
이 문제는 예를 들어. 고급 인보이스를 찾으십시오.이 경우 수출 시간에 플러그인을 실행하기 때문에 Dynamics CRM이 특별한 작업을하는지 궁금합니다.
- 캠페인이 생성됩니다
에 대한 자세한 사항
우리의 고객이 더 구체적으로, 사용하는 흐름은 다음과 같다. 이 캠페인은 생성하는 고유 한 ID 인 순번을 가져옵니다. - 마케팅 목록이 만들어지고 캠페인에 연결됩니다.
- 회원은 마케팅 목록에 추가됩니다. 이 회원은 고유 한 ID 인 일련 번호도 가지고 있습니다.
- 마케팅 목록 양식에서 마케팅 목록 구성원으로 전환하십시오.
- 작성한 사용자 정의보기 인 "보기 내보내기"를 선택하십시오. 최소한의 재현에서이보기에는 컨택의 완전한 이름과 "생성 된 OCR"필드가 포함됩니다.
- 여러 연락처 검색 후 등록 된 플러그인이 트리거되고 일련 번호와 캠페인의 일련 번호를 기반으로 마케팅 목록의 각 구성원에 대한 OCR 번호가 만들어집니다. 그런 다음 "생성 된 OCR"필드에 추가됩니다.
- 그러면보기가 Excel로 내보내집니다. 플러그인이 다시 트리거됩니다.
- 내보내기가 성공하면, 생성 된 파일은 "빈 열 번호 표시"프로세스 id "와 processts가 포함되어 있습니다.
PostContactRetrieveMultiple 플러그인
protected override void Execute(PluginVars variables)
{
if (variables.Context.InputParameters.Contains("Query") && variables.Context.InputParameters["Query"] is QueryExpression)
{
QueryExpression objQueryExpression = (QueryExpression) variables.Context.InputParameters["Query"];
//Generate and fill the ocr number field when requested
if (objQueryExpression.EntityName == Contact.EntityLogicalName && objQueryExpression.ColumnSet.Columns.Contains("company_generatedocr"))
{
if (objQueryExpression.LinkEntities.Count > 0 && objQueryExpression.LinkEntities.Count(le => le.LinkToEntityName == ListMember.EntityLogicalName) > 0)
{
var contacts = ((EntityCollection)variables.Context.OutputParameters["BusinessEntityCollection"]);
Guid relatedListGuid = (Guid)objQueryExpression.LinkEntities.First(le => le.LinkToEntityName == ListMember.EntityLogicalName).LinkCriteria.Conditions[0].Values[0];
CampaignExtensions.GenerateOcrNumbersForCollection(contacts, relatedListGuid, variables.Dao);
}
}
}
}
CampaignExtensions (관련없는 코드 스 니펫)
아래에 사용 된 OCREngine은 예를 들어 일련 번호를 기반으로 OCR 번호를 만드는 Google의 도구입니다. 연락처 및 캠페인뿐만 아니라 해당 인보이스가 지불 될 때 생성 된 번호를 해석 할 수 있습니다.
public static void GenerateOcrNumbersForCollection(EntityCollection entityCollection, Guid marketingListId, DataAccess dao)
{
var campaignSequenceNumber = GetCampaignSequenceNumberFromList(marketingListId, dao);
foreach (var entity in entityCollection.Entities)
{
string sequenceNumber = entity.GetSequenceValue(dao); //Get the sequence number for the contact
var spec = new OCRSpecification();
spec.DonorNumber = sequenceNumber;
spec.CampaignNumber = campaignSequenceNumber;
entity.Attributes.Add("company_generatedocr", OCREngine.GenerateOCR(spec));
}
}
하나의 멤버 마케팅 목록에 대한 수출 구성원이 파일은 "프로세스 id"와 "processts"열 (아래 참조)의 한 세트를 포함 결과입니다. 40,000 명의 회원을 내보낼 때이 열이 80 세트 포함됩니다. 이러한 열은 Dynamics CRM의보기에 없습니다.
Complete Name Generated OCR processid processts Henric Fröberg 800004450000165
내 질문에
- 왜 이러한 추가 열이 추가됩니다?
- 내 보낸 멤버 수와 열의 수 사이에 상관 관계가있는 것으로 보이는 이유는 무엇입니까?
- 이 문제를 방지하기 위해 파일 크기가 으로 줄어들 수 있도록하려면 어떻게해야합니까? 우리는 역학 CRM 2016을 사용하고
온 - 프레미스, 마케팅 목록에 대한 Excel 파일을 수출 롤업 1 (8.1.0.359), 그러나 우리가 했어요 어려움이 우리로 지금까지
먼저 확인 : 사용자 지정이 전혀 없도록 새 조직을 만들고 거기에서 마케팅 목록을 내보내고 문제가 지속되는지 확인하십시오. 그렇다면 지원 티켓을여십시오 (플랫폼 버그입니다). 그렇지 않으면 일부 사용자 정의 논리가 내보내기를 엉망으로 만듭니다. – Alex