Я пишу программу для изменения некоторых счетов в GP10 с помощью eConnect. Некоторые счета требуют, чтобы распределения были сброшены, потому что итоги не складываются правильно из-за различных других (не важных для этого вопроса) процессов; это достигается с помощью этой программы. Кроме того, большинство счетов-фактур будут перемещены в другой пакет (подумайте, если вы не знакомы с GP), также с помощью этой программы.
Обе эти задачи выполняются путем обработки файлов одного типа через eConnect. Этот метод обрабатывает этот файл:
public bool PersistAllChangesInDynamics()
{
//instantiate the proper eConnect object for updating the invoice.
eConnectType eConnect = new eConnectType();
SOPTransactionType transType = new SOPTransactionType();
transType.taSopHdrIvcInsert = this.ConvertToSopHdrIvcInsertXml();
//Adjust fields to reset distributions.
transType.taSopHdrIvcInsert.UpdateExisting = 1;
transType.taSopHdrIvcInsert.CREATEDIST = 1;
SOPTransactionType[] updateInvTypeArray = { transType };
eConnect.SOPTransactionType = updateInvTypeArray;
//serialize and process the document.
XmlDocument eConnectDoc = eConnectHelper.SerializeEConnectDoc(eConnect);
return eConnectHelper.ProcessEConnectDoc(eConnectDoc);
}
Мой вопрос вращается вокруг этого куска кода:
transType.taSopHdrIvcInsert.UpdateExisting = 1; //updates the batch changes
transType.taSopHdrIvcInsert.CREATEDIST = 1; //re-creates the distributions
taSopHdrIvcInsert - это объект, предоставляемый eConnect для сохранения любых изменений в счетах. Насколько я знаю, не существует объекта, который ТОЛЬКО воссоздает дистрибутивы. Всякий раз, когда я обрабатываю документ, eConnect вызывает хранимую процедуру с аналогичным именем в базе данных Dynamics для правильного сохранения этих изменений. UpdateExisting и CREATEDIST являются необязательными параметрами для этого SP.
Иногда мне нужно будет только обновить пакет (или другие части счета-фактуры) или только заново создать дистрибутивы, но в других случаях мне нужно будет сделать и то, и другое. Пересоздание дистрибутивов не вызывает нежелательных изменений, вы всегда хотите, чтобы дистрибутивы были корректными для каждого счета. Я не проверял экономию времени между выполнением только одной операции за раз; поскольку объект вызывает SP на стороне сервера, я не вижу, где это займет значительно различное время.
Кто-нибудь из вас видит какую-либо причину, чтобы разделить это на 2-3 различных метода, чтобы сохранить каждую нужную функцию отдельной?