/// <summary> /// Параметризированный конструктор /// Выполняет до-загрузку данных о подчиненных подразделениях, если /// это требуется в соответствии с заданными параметрами конфигурации /// </summary> /// <param name="xmlList_ExceptedDepsList"> /// Перечень элемментов itws:department из секции itws:excepted-departments. /// Может быть null или пустым. /// </param> public ExpensesProcessPrarms(XmlNodeList xmlList_ExceptedDepsList) { StringBuilder sbExceptedDepsList = new StringBuilder(); StringBuilder sbExceptedDepsWithNestedList = new StringBuilder(); if (null != xmlList_ExceptedDepsList && 0 != xmlList_ExceptedDepsList.Count) { // Перебор всех элементов конфигурации; формируется две строки - // перечень идентификаторов подразделений "как есть" и перечень // идентификаторов подразделений, для которых еще надо определить // подчиненных: foreach (XmlElement xmlExceptedDep in xmlList_ExceptedDepsList) { if (null == xmlExceptedDep) { continue; } string sDepID = xmlExceptedDep.GetAttribute("id"); ObjectOperationHelper.ValidateRequiredArgumentAsID(sDepID, "Идентификатор подразделения (" + sDepID + ")"); if (String.Empty == xmlExceptedDep.GetAttribute("include-nested")) { sbExceptedDepsList.Append(sDepID).Append(","); } else { sbExceptedDepsWithNestedList.Append(sDepID).Append(","); } } // Если есть такие, для которых надо определить подчиненных, то // выполняем действия по дозагрузке: получение данных с сервера: if (sbExceptedDepsWithNestedList.Length > 0) { XParamsCollection dsParams = new XParamsCollection(); sbExceptedDepsWithNestedList.Length -= 1; dsParams.Add("SrcList", sbExceptedDepsWithNestedList.ToString()); object oResult = ObjectOperationHelper.ExecAppDataSourceScalar("CommonService-INIT-ExpandDepsIDsWithNested", dsParams); if (null != oResult && DBNull.Value != oResult) { sbExceptedDepsList.Append(oResult.ToString()).Append(","); } } } // Итоговый список if (sbExceptedDepsList.Length > 0) { sbExceptedDepsList.Length -= 1; } m_sEmpExpenses_ExceptedDepsList = sbExceptedDepsList.ToString(); }