Customer to jedna z klas dotępnych w Microsoft Dynamics CRM SDK (w assembly i poprzez web service) i jednocześnie koncepcyjny typ obiektów, które możemy w niektórych przypadkach przypisywać do rekordów. O co dokładnie chodzi?

W skrócie, Customer to typ referencyjny wskazujący obiekt typu account albo contact. Dzięki zastosowaniu takiej klasy, możliwe jest np. tworzenie szans sprzedaży i wstawienie do pola „Potencjalny Klient” obiektu typu account (konto) lub contact (kontakt). Nie trzeba mieć więc dwóch różnych pól – jednego wykorzystywanego jeśli klient byłby kontaktem, a drugiego jeśli klient byłby kontem. Jeden z najbardziej popularnych przykładów wykorzystania typu Customer to właśnie pole customerid w szansie sprzedaży (opportunity). Pole to zawiera GUID konta lub kontaktu, ale nie tylko. Jak więc dowiedzieć się z jakim obiektem mamy do czynienia? Bardzo prosto – ponieważ typ Customer dziedzidzy po CrmReference, pozwala przechowywać nie tylko GUID, ale i nazwę oraz typ rekordu. Dlatego, żeby dowiedzieć się z jakim obiektem mamy do czynienia w przypadku customerid (lub wszędzie tam, gdzie jest relacja typu Customer), musimy sprawdzić wartość właściwości type:

Customer c = naszaSzansaSprzedazy.customerid;
string typObiektu = c.type;    // tutaj jest informacje o typie (account lub contact)
string guidObiektu = c.Value;    // tutaj jest GUID wskazywanego obiektu

Aby pobrać teraz dane o obiekcie wskazywanym przez customerid wystarczy, że użyjemy np. metody Retrieve, wykorzystując znaleziony typ i GUID obiektu:

_naszCRMService.Retrieve(typObiektu, guidObiektu, new AllColumns());

Należy pamiętać, że NIE ma możliwości konwertowania obiektów typu Customer  do np. konta (tak naprawdę można to osiągnąć wykorzystując wewnętrzną klasę SDK – Moniker, ale to nie tego typu konwersja). Tzn, że nie można zrobić czegoś takiego:

account acc = (account)naszaSzansaSprzedazy.customerid;    // to nie zadziala!

Ograniczenia typu Customer:

Podstawowe ograniczenie tego typu to brak możliwości tworzenia nowych relacji wiążących Customer z innymi encjami. Tylko obecne w systemie relacje (m.in. szansa sprzedaży -> Customer, sprawa -> Customer) mogą korzystać z tego typu. Dodatkowe ograniczenie to fakt, że nie można zobaczyć tego typu np. w widokach, bo nie jest to typ encji, jak account czy contact.

Reklama