На этот раз задача посложнее.
Нужно в DocsVision изменить значение в справочнике сотрудников в секции сотрудник.
Менять буду по принципу, если значение не равно нужному мне, то меняем.
Меня интересует поле - Тип маршрутизации - RoutingType.
В DocsVision есть простой способ для подобных действий. Это механизм FindRows. Он принимает xml запрос, по которому ищет соответствия. Им и буду пользоваться.\
P.S. Запрос можно усложнять, делая выборку по нескольким условиям.
Нужно в DocsVision изменить значение в справочнике сотрудников в секции сотрудник.
Менять буду по принципу, если значение не равно нужному мне, то меняем.
Меня интересует поле - Тип маршрутизации - RoutingType.
В DocsVision есть простой способ для подобных действий. Это механизм FindRows. Он принимает xml запрос, по которому ищет соответствия. Им и буду пользоваться.\
P.S. Запрос можно усложнять, делая выборку по нескольким условиям.
using System; using System.Xml; // подключение библиотек СУБП using DocsVision.Platform.ObjectManager; using DocsVision.Workflow.Objects; using DocsVision.Workflow.Runtime; using DocsVision.Workflow.Gates; using DocsVision.Platform.HelperAPI; using ProcessInfo = DocsVision.Workflow.Runtime.ProcessInfo; namespace DVScriptHost { class DVScript { public void Execute(ProcessInfo process, PassState passInfo) { try { const string cStaffType = "6710B92A-E148-4363-8A6F-1AA0EB18936C";//Справочник сотрудников const string cEmployeers = "DBC8AE9D-C1D2-4D5E-978B-339D22B32482";//Секция сотрудники ProcessVariable oCard = process.GetVariableByName("Карточка"); DVGate gate = (DVGate)process.Gates[DVGate.GateID]; UserSession session = gate.Session; CardData StaffCatalog = session.CardManager.get_DictionaryData(cStaffType); SectionData dataEmployees = StaffCatalog.Sections[cEmployeers]; SectionQuery query = new SectionQuery(); Condition condition = query.ConditionGroup.Conditions.AddNew("RoutingType", FieldTypeEnum.FIELD_ENUM, ConditionOperationEnum.CONDITION_OPERATION_NOTEQUALS, "3"); process.LogMessage(query.GetText(true, null)); RowDataCollection result = dataEmployees.FindRows(query.GetText(true, null)); process.LogMessage("result Count" + result.Count); for (int i = 0; i < result.Count; i++) { //process.LogMessage("result[i].ID " + result[i].ID); DVPrincipal abc = (DVPrincipal)gate.GetVariable((long)DVVariableType.PRINCIPAL, result[i].ID); abc.RoutingType = 3; // process.LogMessage("abc RoutingType " + abc.RoutingType); // process.LogMessage("abc FirstName " + abc.FirstName); // process.LogMessage("abc LastName " + abc.LastName); /*if(abc.RoutingType != 3) { process.LogMessage("----->>>>>>abc RoutingType " + abc.RoutingType + " != 3"); }*/ } condition = query.ConditionGroup.Conditions.AddNew("RoutingType", FieldTypeEnum.FIELD_ENUM, ConditionOperationEnum.CONDITION_OPERATION_NOTEQUALS, "3"); RowDataCollection result = dataEmployees.FindRows(query.GetText(true, null)); process.LogMessage("result Count" + result.Count); } catch (Exception ex) { // запись в журнал ошибки исполнения process.LogMessage("Ошибка выполнения скрипта:" + ex.ToString()); } return; } } }
Комментариев нет:
Отправить комментарий