Customizar caixa de pesquisa de um lookup

by Pedro Azevedo 29. April 2013 00:49

Boas pessoal,

Uma das perguntas mais realizadas na comunidade é como modificar a janela de pesquisa de um lookup. Vamos ver as várias maneiras de customizar esta janela.

Por exemplo na entidade contacto temos um lookup para dizer qual o cliente que está afecto, podemos escolher entre a entidade cliente e contacto:

A entidade por defeito é o cliente e se quisermos que a entidade por defeito seja a entidade contacto, então podemos fazer isto:

document.getElementById("parentcustomerid").setAttribute("defaulttype", "2");

E o resultado é este:


Se quisermos dizer que a entidade contacto não faz sentido neste caso então podemos limitar a escolha a apenas a entidade cliente:

document.getElementById("parentcustomerid").setAttribute("lookuptypes", "1");

Vejam o resultado:

Agora imaginem que em vez de restringir quero colocar outra entidade, por exemplo o cliente potencial:

document.getElementById("parentcustomerid").setAttribute("lookuptypes", "1, 2, 4");

document.getElementById("parentcustomerid").setAttribute("lookuptypenames", "account:1,contact:2,lead:4");

document.getElementById("parentcustomerid").setAttribute("lookuptypeIcons", "/_imgs/ico_16_2.gif:/_imgs/ico_16_4.gif:/_imgs/ico_16_8.gif");

 

Neste caso estamos a dizer quais as entidades, os nomes das entidades e os respectivos icons, vejam o resultado:

 

Agora quero desabilitar a escolha de uma vista:

document.getElementById("parentcustomerid").setAttribute("disableViewPicker", "1");

Vejam o resultado:

Agora quero mudar qual a vista por defeito:

Xrm.Page.getControl("parentcustomerid").setDefaultView("00000000-0000-0000-00AA-000010001033");

Vejam o resultado:

 Todo este código pode ser colocado no evento onload do formulário.

 

Algumas perguntas poderão estar a ser feitas:

·         Que código são estes 1, 2 e 4?

São os códigos das entidades, eu neste post criei apenas para referência rápida sobre estes códigos.

·         Como posso obter o guid de uma vista?

Temos algumas hipóteses, abrir a vista para editar e copiar o id do URL. Estando a ver os registos de uma vista podemos carregar em “Copiar uma Hiperligação” e escolher opção “da Vista Actual”

Ainda existe outro método o addCustomView que está explicado neste post.

 

Espero que estas dicas rápidas sejam úteis.

 

Até a próxima

Tags: , , , ,

Bug - User does not have send-as privilege

by Pedro Azevedo 20. April 2013 23:26

Boas pessoal,

Esta semana perdi umas boas horitas atrás de um problema que ocorreu e que a sua resolução era muito fácil. Num cliente entrou um utilizador novo e as notificações geradas por aquele utilizador ficavam no estado rascunho.

Ao abrir a actividade esta estava no estado rascunho e ao tentar enviar novamente lançava um erro a dizer que não tinha permissões para o fazer e eu estava como administrador de sistema.

Uma visita ao trace do CRM deparei-me com a seguinte exceção:

“Crm Exception: Message: User does not have send-as privilege.”

A primeira verificação foi visualizar se as definições do utilizador, como por exemplo como estava configurado o acesso ao email e se tinha o email aprovado para poder enviar emails. Estava tudo bem. E no perfil deste utilizador não encontrei mais nada. Fui olhar para as roles que esse utilizador tinha e não consegui descobrir nenhuma que deve o tipo de permissão que o log referia.

Mas eu sabia que isto dava para colocar de alguma maneira. Por curiosidade fui ver o meu próprio perfil e confirmei que havia uma configuração para isto, vejam na imagem:

Mas atenção que caso o utilizador não tenha configurado o Email Router no Outgoing este setting não aparece como podem ver:

 

A solução então passava pelo utilizador ativar esta permissão, fui o que fiz e resultou.

Mas depois de resolver fui explorar melhor esta situação e aqui estou a documentar. Primeiramente quando é que isto acontece? Quando por exemplo fazemos um impersionate do utilizador e aí estamos a enviar um email por exemplo com um administrador mas quem vai oficialmente no enviar é outro utilizador. Isto também pode acontecer nos emails enviados em workflows.

Mas esta solução nem sempre é possível por isso explorei ao nível da base de dados onde estaria esta configuração. E com a query que apresento a seguir podemos dar esse previlégio a todos os utilizadores, ou para um utilizador especifico:

UPDATE UserSettings
SET IsSendAsAllowed = 1

Outra solução é a utilização de uma ferramenta que permite actualizar os settings dos utilizadores a ferramenta é esta.

Até a próxima.

Tags: , ,

Orador na 38ª Reunião da Comunidade NetPonto

by Administrator 12. April 2013 21:55

Boas pessoal

No próximo dia 20 de Abril irei falar sobre Microsoft Dynamics CRM 2011 na habitual reunião mensal da Comunidade NetPonto. Será a minha primeira aventura de falar em público por isso será um bom teste.

 

O título da minha sessão será: X(C)RM como plataforma de desenvolvimento rápido. Terá como objectivo apresentar o Microsoft Dynamics CRM 2011, a sua arquitectura e principais funcionalidade que podem tornar como uma plataforma de desenvolvimento rápido. Esta plataforma tem um nome: xRM.

No mesmo dia o Glauco Godoi irá fazer uma apresentação sobre ASP .NET SignalR. Sem dúvida que valerá o esforço de acordar cedo no sábado de manhã. Vejam aqui mais informações sobre as duas sessões e como se podem inscrever.

Até a próxima.

Tags: , ,

Referência Rápida - Códigos de Entidade

by Pedro Azevedo 7. April 2013 23:34

Boas pessoal,

Hoje vou criar um post que principalmente me vai ser muito útil já que de vez em quando procuro por esta informação. Todas as entidades no CRM têm um código que representa essa entidade. Uma maneira de descobrir o código é ver no URL o código que vem a seguir ao texto:

&etc=<entity_type_code>

Outra maneira de aceder a este código é realizar por exemplo uma query directa a base de dados:

select Name, ObjectTypeCode from EntityView order by ObjectTypeCode

Obtém-se a seguinte lista:

Entity Name

Object Type Code

Account

1

Contact

2

Opportunity

3

Lead

4

Annotation

5

BusinessUnitMap

6

Owner

7

SystemUser

8

Team

9

BusinessUnit

10

PrincipalObjectAccess

11

RolePrivileges

12

SystemUserLicenses

13

SystemUserPrincipals

14

SystemUserRoles

15

AccountLeads

16

ContactInvoices

17

ContactQuotes

18

ContactOrders

19

ServiceContractContacts

20

ProductSalesLiterature

21

ContactLeads

22

TeamMembership

23

LeadCompetitors

24

OpportunityCompetitors

25

CompetitorSalesLiterature

26

LeadProduct

27

RoleTemplatePrivileges

28

Subscription

29

FilterTemplate

30

PrivilegeObjectTypeCodes

31

SalesProcessInstance

32

SubscriptionSyncInfo

33

SubscriptionTrackingDeletedObject

35

ClientUpdate

36

SubscriptionManuallyTrackedObject

37

TeamRoles

40

PrincipalEntityMap

41

SystemUserBusinessUnitEntityMap

42

PrincipalAttributeAccessMap

43

PrincipalObjectAttributeAccess

44

PrincipalObjectAccessReadSnapshot

90

RecordCountSnapshot

91

Incident

112

Competitor

123

DocumentIndex

126

KbArticle

127

Subject

129

BusinessUnitNewsArticle

132

ActivityParty

135

UserSettings

150

ActivityMimeAttachment

1001

Attachment

1002

InternalAddress

1003

CompetitorAddress

1004

CompetitorProduct

1006

Contract

1010

ContractDetail

1011

Discount

1013

KbArticleTemplate

1016

LeadAddress

1017

Organization

1019

OrganizationUI

1021

PriceLevel

1022

Privilege

1023

Product

1024

ProductAssociation

1025

ProductPriceLevel

1026

ProductSubstitute

1028

SystemForm

1030

UserForm

1031

Role

1036

RoleTemplate

1037

SalesLiterature

1038

SavedQuery

1039

StringMap

1043

UoM

1055

UoMSchedule

1056

SalesLiteratureItem

1070

CustomerAddress

1071

SubscriptionClients

1072

StatusMap

1075

DiscountType

1080

KbArticleComment

1082

OpportunityProduct

1083

Quote

1084

QuoteDetail

1085

UserFiscalCalendar

1086

SalesOrder

1088

SalesOrderDetail

1089

Invoice

1090

InvoiceDetail

1091

SavedQueryVisualization

1111

UserQueryVisualization

1112

RibbonTabToCommandMap

1113

RibbonContextGroup

1115

RibbonCommand

1116

RibbonRule

1117

RibbonCustomization

1120

RibbonDiff

1130

ReplicationBacklog

1140

FieldSecurityProfile

1200

FieldPermission

1201

SystemUserProfiles

1202

TeamProfiles

1203

 

As entidades nativas têm um valor abaixo do 10000 e as customizadas acima deste valor.

Mantenham este post nos vossos favoritos.

 

Até a próxima.

Tags: , , ,

About

Muito bem casado, Pai babado e um gosto muito grande pela tecnologia.

Tenho um lema "Sharing is Learning"

Mais aqui -> http://www.psazevedo.com

Month List