Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MSCRM3.0] Workflow service loopt vast

Pagina: 1
Acties:
  • 207 views sinds 30-01-2008
  • Reageer

  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
Ik heb, binnen MS CRM Dynamics 3.0 wat code geschreven die voor een offerte (quote) de verschillende offerteregels (quotedetails) ophaalt.
Het idee is dat er uiteindelijk een PDF van gemaakt wordt.


Code snippet:

Visual Basic .NET:
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Public Sub GenerateQuotePDF(ByVal QuoteID As Guid)
' Standard CRM Service Setup

Try

Dim service As New CrmService

service.Credentials = System.Net.CredentialCache.DefaultCredentials

Dim insQuote As srv_crm.quote

Dim cols As srv_crm.ColumnSet = New srv_crm.ColumnSet

cols.Attributes = New String() {"quoteid", "name", "totallineitemamount", "quotenumber", "revisionnumber"}

insQuote = CType(service.Retrieve(srv_crm.EntityName.quote.ToString, QuoteID, cols), srv_crm.quote)

 

Dim strQuote As String = Me.QuoteTemplate ' fetch the quotetemplate from disk  ' works

strQuote = strQuote.Replace("{{SUBJECT}}", insQuote.name) ' works

strQuote = strQuote.Replace("{{OURREFERENCE}}", insQuote.quotenumber.ToString & "/" & insQuote.revisionnumber.formattedvalue.ToString)' works

strQuote = strQuote.Replace("{{TOTAL_AMOUNT}}", insQuote.totallineitemamount.formattedvalue.Replace("€", '"€"))' works

strQuote = strQuote.Replace("{{CREATIONDATE}}", DateTime.Now.ToShortDateString)' works

strQuote = strQuote.Replace("{{CREATIONCITY}}", "Tilburg")' works

' now fetch the various offerrows

Dim colsq As srv_crm.ColumnSet = New srv_crm.ColumnSet

colsq.Attributes = New String() {"extendedamount", "productdescription", "quantity", "quoteid"}

Dim condition As New ConditionExpression

condition.AttributeName = "quoteid"

condition.Operator = ConditionOperator.Equal

condition.Values = New Object(0) {}

condition.Values(0) = insQuote.quoteid

Dim filter As New FilterExpression

filter.FilterOperator = LogicalOperator.And

filter.Conditions = New ConditionExpression() {condition}

Dim query As New QueryExpression

query.EntityName = EntityName.quotedetail.ToString

query.ColumnSet = colsq

query.Criteria = filter

Dim retrieved As BusinessEntityCollection = service.RetrieveMultiple(query)

Dim sbLoop As New System.Text.StringBuilder

For i As Integer = 0 To (retrieved.BusinessEntities.Length - 1)

Dim QD As quotedetail = CType(retrieved.BusinessEntities(i), quotedetail)

Dim Item As String = LoopHelper.Mid(strQuote)

Item = Item.Replace("{{ROW_CODE}}", "ROW: " & i)

Item = Item.Replace("{{ROW_NAME}}", QD.productdescription)

Item = Item.Replace("{{ROW_AMOUNT}}", QD.quantity.formattedvalue)

sbLoop.Append(Item)

Next

 

strQuote = LoopHelper.Combine(LoopHelper.Pre(strQuote), sbLoop.ToString, LoopHelper.Post(strQuote))

' fetching complete

 

 

 

 

 

Catch ex As Exception

**code to write error information to file **

End Try

End Sub


Als ik deze code aanroep (meer acties - regel toepassen) dan krijg ik na een tijdje van MS CRM de melding dat er iets fout is gegaan. Mijn code om de foutmelding te catchen wordt genegeerd, en de workflow service loopt vast.

De enige melding die ik nog heb weten los te peuteren van http://srv-crm/Trace.axd?id=2
is:

Category Message From First(s) From Last(s)
aspx.page Begin Init
aspx.page End Init 0.000243 0.000243
aspx.page Begin PreRender 0.000329 0.000086
Unhandled Execution Error
The remote procedure call failed.
at Microsoft.Crm.Util.RaiseXMLError(Exception e)
at Microsoft.Crm.Dialogs.ApplyRulePage.ConfigurePage()
at Microsoft.Crm.Application.Controls.AppPage.OnPreRender(EventArgs e)
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain() 13.727147 13.726818


Maar dat is ook een dusdanig generieke melding dat je er eigenlijk vrij weinig mee kan.
:(

  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 01:26
De CRM 3.0 Webservice heeft de vervelende eigenschap om bij teveel requests achter elkaar niet meer mee te willen werken; Ik heb dit zelf gehad bij een data-insert script wat per seconde 100 rijen richting de CRM database pompte. Bij mij hielp het om een kunstmatige delay in te bouwen van 100ms, misschien kun je daar iets mee?

Everytime I suffer I become a better man because of it


  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
Ik heb nu vlak voor de retrieve een simpele
Visual Basic .NET:
1
System.Threading.Thread.Sleep(1000) ' Sleep for 1 second

Geplaatst... maar ik krijg nu een exceptie waar ik niets mee kan:
Server was unable to process request.
Dus effectief nog niet veel opgeschoten :(

Inmiddels weer ietsjes verder... als je ex.Detail.InnerXml vangt, krijg je wel een echte foutmelding:

<error>
<code>0x80040203</code>
<description>Invalid argument.</description>
<type>Platform</type>
</error>

Maar ik geef een crm.key, en die wordt verwacht ook.

Effectief.. still stuck :?

[ Voor 35% gewijzigd door jp op 17-08-2007 09:42 ]


  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04 20:48
Heerlijk he, die foutmeldingen van Dynamics CRM die werkelijk overlopen van de informatie... :9

Krijg je die exceptie op de Retrieve (regel 95) of op de RetrieveMultiple (141) ?
Over het algemeen zit dan je request dan niet goed in elkaar, wanneer je een exceptie krijgt op een retrieve; geeft de Eventlog nog extra info ?

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
De eventlog loopt ook over van informatie, maar of je er wat aan hebt...

Faulting application crmworkflowservice.exe, version 3.0.5745.14, stamp 446ca2be, faulting module kernel32.dll, version 5.2.3790.4062, stamp 46264680, debug? 0, fault address 0x0000bee7.

VOor mijn vorige foutmelding overigens:
http://www.eggheadcafe.co.../Feb2006/post25795320.asp

[ Voor 19% gewijzigd door jp op 17-08-2007 09:44 ]


  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
Hij gaat fout op de retrievemultiple.

  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
Op een ander forum dezelfde vraag gesteld, en daar is een antwoord binnengekomen.

Dus voor de volledigheid even zijn antwoord hieronder:
---
I think your problem is the fllowing line:

condition.Values(0) = insQuote.quoteid

The quoteid property is of type Lookup. You need the its value property, which is a Guid:

condition.Values(0) = insQuote.quoteid.Value
---
Hele draad: http://forums.microsoft.c...?postid=2014697&SiteID=27
Pagina: 1