2009-07-23 3 views
4

J'ai été chargé d'écrire une application C# pour synchroniser les entrées de temps des employés dans une base de données séparée avec Quickbooks. Depuis que je suis tout nouveau à la programmation QB, j'essaie de réaliser des tâches de base, comme obtenir une liste de clients, puis des emplois pour chaque client, puis des employés. J'ai lu la documentation SDK, mais je suis encore un peu flou sur les détails parce que les exemples que je trouve sont un peu trop avancés pour moi en ce moment :-PComment obtenir la liste des clients, emplois et employés utilisant Quickbooks QBFC (8.0 SDK)

Pour garder les choses simples, je Je voudrais demander un extrait de code qui me donne la liste des clients pour les débutants. Voici le code que j'ai:

 QBSessionManager SessionManager = new QBSessionManager(); 
     IMsgSetRequest customerSet = SessionManager.CreateMsgSetRequest("US", 8, 0); 

     //   
     // Code to get list of customers here. 
     // 

     SessionManager.OpenConnection2("", "New App", ENConnectionType.ctLocalQBD); 
     SessionManager.BeginSession(string.Empty, ENOpenMode.omDontCare); 
     IMsgSetResponse Resp = SessionManager.DoRequests(customerSet); 
     MessageBox.Show(Resp.ToXMLString()); 
     SessionManager.EndSession(); 
     SessionManager.CloseConnection(); 

Quelqu'un peut-il remplir le « code pour obtenir la liste des clients ici » pour moi? Merci beaucoup d'avance!

Victor

Répondre

7

Ok, semble comme je l'ai trouvé la pièce manquante:

ICustomerQuery customers = customerSet.AppendCustomerQueryRq(); 

Ce produit toutes les données relatives à chaque client, ce qui est un pas en avant. Analyser le XML pour les clients devrait être assez simple, mais analyser les tâches/tâches individuelles pour chaque client sera laborieux, car il n'y a pas de sous-nœuds pour chaque tâche - en gros, vous obtenez des morceaux de XML avec toutes les informations de base du client. adresse, adresse de livraison, etc.), puis cette seule propriété appelée "FullName" qui ajoute deux points au nom du client, suivi du titre de la tâche (qui peut lui-même être suivi par un autre deux-points avec un titre de sous-tâche, etc.). Je me demande s'il y a quelque chose d'intelligent que je peux faire avec la requête request pour obtenir une meilleure réponse xml (par exemple, spécifiez quelles propriétés je veux renvoyer, et peut-être imposer la création de sous-nœuds pour chaque tâche) les commentaires sont appréciés.

+0

Oui, vous pouvez spécifier les éléments que vous souhaitez récupérer une requête pour limiter la quantité de communication. Vous pouvez créer avec une requête, cependant, vous devriez le faire dans une étape séparée (si je vous comprends bien). Je connais le XML, pas les méthodes du SDK, donc je ne peux pas vous donner les détails exacts. – Yishai

+0

J'ai besoin de tous les détails du client, comme le nom complet, les adresses, la ville, l'état, le code postal, etc., donc quel type de demandes sont utilisées. J'ai utilisé "CustomerQueryRq" ce type de requête. Je ne suis pas en mesure d'obtenir tous les détails des clients. –

7
customers.IncludeRetElementList.Add("IsActive"); 
customers.IncludeRetElementList.Add("ListID"); 
customers.IncludeRetElementList.Add("EditSequence"); 
customers.IncludeRetElementList.Add("Name"); 
customers.IncludeRetElementList.Add("ParentRef"); 

Seuls les champs indiqués dans la liste ci-dessus seront renvoyés de QuickBooks - il est très important d'utiliser les chaînes correctes dans le cas correct - aucun message d'erreur se produit si quelque chose ne va pas. Vous ne pouvez pas spécifier de sous-champs (par exemple, Ville dans un bloc Adresse, vous devez obtenir le bloc Adresse entier). Pour les champs personnalisés, vous devez également spécifier le OwnerID (utilisez 0 pour les champs personnalisés qui ne sont pas privés à une application)

customers.IncludeRetElementList.Add("DataExtRet"); //will return non-private and/or private data extension fields depending on the OwnerIDList, below 
customers.OwnerIDList.Add("0"); // required for non-private data extn fields 
customers.OwnerIDList.Add("Your Appln GUID"); // Use this to get private data extns for the Appln identified by the GUID 
+0

+1 pour l'astuce sur le DataExtRet tenace lors de la spécification de IncludeRetElementList. –

+0

Refusée. OwnerIDList = 0 a fait de la magie pour moi. –

Questions connexes