/// <summary> /// Экспортировать детальный раздел событий реквизитов. /// </summary> /// <param name="path">Путь к файлам модели.</param> /// <param name="requisites">Список реквизитов.</param> private void ExportRequisiteEvents(string path, List <RequisiteModel> requisites) { var changeEventReq = requisites.FirstOrDefault(r => r.Code == "ISBEDocTypeReqOnChange"); var selectEventReq = requisites.FirstOrDefault(r => r.Code == "ISBEDocTypeReqOnSelect"); if (changeEventReq.DecodedText != null || selectEventReq.DecodedText != null) { // Получаем путь к реквизиту. var requisiteCodeReq = requisites.FirstOrDefault(r => r.Code == "ISBEDocTypeReqCode"); var requisitePath = GetRequisitePath(path, requisiteCodeReq.DecodedText); // Сохраняем событие изменения. if (changeEventReq.DecodedText != null) { var changeEventFilePath = GetRequisiteChangeEventFileName(requisitePath); this.ExportTextToFile(changeEventFilePath, changeEventReq.DecodedText); } // Сохраняем события. if (selectEventReq.DecodedText != null) { var events = EventTextParser.Parse(selectEventReq.DecodedText); foreach (var eventType in events.Keys) { var eventFileName = "Requisite.Select.isbl"; if (eventType != EventType.Unknown) { eventFileName = EventTypeFileNames.GetFileName(eventType); } var eventFilePath = Path.Combine(requisitePath, eventFileName); this.ExportTextToFile(eventFilePath, events[eventType]); } } } }
/// <summary> /// Прочитать события. /// </summary> /// <param name="model">Модель.</param> /// <param name="entity">Сущность.</param> private static void ReadEvents(ComponentModel model, DocumentCardType entity) { var eventsReq = model.Card.Requisites .FirstOrDefault(r => r.Code == EventsReqName); if (eventsReq == null) { return; } var events = EventTextParser.Parse(eventsReq.DecodedText); foreach (var @event in events) { entity.Events.Add(@event); } }
/// <summary> /// Экспортировать реквизиты карточки. /// </summary> /// <param name="path">Путь к файлам модели.</param> /// <param name="requisites">Список реквизитов.</param> private void ExportCardRequisites(string path, List <RequisiteModel> requisites) { foreach (var requisite in requisites) { if (requisite.Code == "ISBRefTypeComment") { this.ExportTextToFile(GetCommentFileName(path), requisite.DecodedText); } if (requisite.Code == "ISBRefTypeAddParams") { this.ExportTextToFile(GetParamsFileName(path), requisite.DecodedText); } if (requisite.Code == "ISBRefTypeCommonSettings") { this.ExportTextToFile(GetSettingsFileName(path), requisite.DecodedText); } if (requisite.Code == "ISBRefTypeEventText") { if (requisite.DecodedText != null) { var events = EventTextParser.Parse(requisite.DecodedText); if (events.Count > 0) { // Получаем путь к событиям. var eventsPath = GetEventsPath(path); // Сохраняем события. foreach (var eventType in events.Keys) { var eventFileName = EventTypeFileNames.GetFileName(eventType); var eventFilePath = Path.Combine(eventsPath, eventFileName); this.ExportTextToFile(eventFilePath, events[eventType]); } } } } } }
/// <summary> /// Экспортировать реквизиты карточки. /// </summary> /// <param name="path">Путь к файлам модели.</param> /// <param name="requisites">Список реквизитов.</param> private void ExportCardRequisites(string path, List <RequisiteModel> requisites) { foreach (var requisite in requisites) { if (requisite.Code == "ISBDialogForm") { this.ExportTextToFile(GetCardFormFileName(path), requisite.DecodedText); } if (requisite.Code == "ISBDialogComment") { this.ExportTextToFile(GetCommentFileName(path), requisite.DecodedText); } if (requisite.Code == "ISBDialogEventText") { if (requisite.DecodedText != null) { var events = EventTextParser.Parse(requisite.DecodedText); if (events.Count > 0) { // Получаем путь к событиям. var eventsPath = GetEventsPath(path); if (!Directory.Exists(eventsPath)) { Directory.CreateDirectory(eventsPath); } // Сохраняем события. foreach (var eventType in events.Keys) { var eventFileName = EventTypeFileNames.GetFileName(eventType); var eventFilePath = Path.Combine(eventsPath, eventFileName); this.ExportTextToFile(eventFilePath, events[eventType]); } } } } } }
public IEnumerable <ReferenceType> Read(SqlConnection connection, Version platformVersion) { var components = new Dictionary <string, ReferenceType>(); var query = this.GetReferenceTypeQuery(platformVersion); if (string.IsNullOrEmpty(query)) { return(components.Values.ToList()); } var command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceType = new ReferenceType { Name = reader["Name"] as string, Title = reader["Title"] as string }; if (reader["State"] is string stateValue && StateValues.ContainsKey(stateValue)) { referenceType.State = StateValues[stateValue]; } if (reader["NumerationMethod"] is string numerationMethodValue && NumerationMethodValues.ContainsKey(numerationMethodValue)) { referenceType.NumerationMethod = NumerationMethodValues[numerationMethodValue]; } if (reader["DisplayRequisite"] is string displayRequisiteValue && DisplayRequisiteValues.ContainsKey(displayRequisiteValue)) { referenceType.DisplayRequisite = DisplayRequisiteValues[displayRequisiteValue]; } referenceType.LeadingReference = reader["LeadingReference"] as string; referenceType.HasLongRecordNames = YesValue.Equals(reader["HasLongRecordNames"] as string); referenceType.HasUniqueRecordNames = YesValue.Equals(reader["HasUniqueRecordNames"] as string); var eventsValue = reader["Events"] as string; if (!string.IsNullOrEmpty(eventsValue)) { var events = EventTextParser.Parse(eventsValue); foreach (var @event in events) { referenceType.Events.Add(@event); } } components.Add(referenceType.Name, referenceType); } } } query = this.GetMethodsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var method = new Method { Name = reader["Name"] as string, CalculationText = reader["CalculationText"] as string ?? string.Empty }; referenceType.Methods.Add(method); } } } } query = this.GetMethodParamsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var methodName = reader["MethodName"] as string; var method = referenceType.Methods .FirstOrDefault(m => m.Name == methodName); if (method == null) { continue; } var parameter = new MethodParam { Number = (int)reader["Number"], Name = reader["Name"] as string }; var typeValue = reader["Type"] as string; if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType)) { parameter.Type = methodParamType; } parameter.DefaultValue = reader["DefaultValue"] as string; parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue); method.Params.Add(parameter); } } } } query = this.GetActionQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var action = new ActionWithHandler { Name = reader["Name"] as string }; var calculationText = reader["CalculationText"] as string; var executionHandler = referenceType.Methods .FirstOrDefault(m => m.Name == calculationText); if (executionHandler != null) { action.ExecutionHandler = executionHandler; } else { action.CalculationText = calculationText ?? string.Empty; } referenceType.Actions.Add(action); } } } } query = this.GetRequisiteQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var cardRequisite = new CardRequisite { Number = (int)reader["Number"] }; if (reader["Section"] is string sectionValue && RequisiteSectionValues.ContainsKey(sectionValue)) { cardRequisite.Section = RequisiteSectionValues[sectionValue]; } cardRequisite.Name = reader["Name"] as string; cardRequisite.IsRequired = RuYesValue.Equals(reader["IsRequired"] as string); cardRequisite.IsFilter = RuYesValue.Equals(reader["IsFilter"] as string); cardRequisite.IsLeading = RuYesValue.Equals(reader["IsLeading"] as string); cardRequisite.IsControl = RuYesValue.Equals(reader["IsControl"] as string); var changeEventValue = reader["ChangeEvent"] as string; if (!string.IsNullOrEmpty(changeEventValue)) { var @event = new Event { EventType = EventType.Change, CalculationText = changeEventValue }; cardRequisite.Events.Add(@event); } var selectEventsValue = reader["SelectEvents"] as string; if (!string.IsNullOrEmpty(selectEventsValue)) { var events = EventTextParser.Parse(selectEventsValue); foreach (var @event in events) { if (@event.EventType == EventType.Unknown) { @event.EventType = EventType.Select; } cardRequisite.Events.Add(@event); } } referenceType.Requisites.Add(cardRequisite); } } } } query = this.GetViewQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var view = new View { Name = reader["Name"] as string, IsMain = RuYesValue.Equals(reader["IsMain"] as string), ListForm = reader["ListForm"] as string, CardForm = reader["CardForm"] as string }; referenceType.Views.Add(view); referenceType.Views.Add(view); } } } } return(components.Values.ToList()); }
/// <summary> /// Прочитать реквизиты карточки. /// </summary> /// <param name="model">Модель.</param> /// <param name="entity">Сущность.</param> private static void ReadCardRequisites(ComponentModel model, DocumentCardType entity) { if (model.DetailDataSets?.DetailDataSet1 == null) { return; } foreach (var row in model.DetailDataSets.DetailDataSet1.Rows) { var cardRequisite = new CardRequisite(); var numberReq = row.Requisites .FirstOrDefault(r => r.Code == ReqNumberReqName); if (!string.IsNullOrEmpty(numberReq?.Value)) { cardRequisite.Number = int.Parse(numberReq.Value); } var sectionReq = row.Requisites .FirstOrDefault(r => r.Code == ReqSectionReqName); if (sectionReq != null) { cardRequisite.Section = RequisiteHandlerUtils.GetRequisiteSection(sectionReq.ValueLocalizeID); } var nameReq = row.Requisites .FirstOrDefault(r => r.Code == ReqNameReqName); if (nameReq != null) { cardRequisite.Name = nameReq.Value; } var isRequiredReq = row.Requisites .FirstOrDefault(r => r.Code == ReqIsRequiredReqName); if (isRequiredReq != null) { cardRequisite.IsRequired = isRequiredReq.ValueLocalizeID == YesValue; } var isLeadingReq = row.Requisites .FirstOrDefault(r => r.Code == ReqIsLeadingReqName); if (isLeadingReq != null) { cardRequisite.IsLeading = isLeadingReq.ValueLocalizeID == YesValue; } var changeEventReq = row.Requisites .FirstOrDefault(r => r.Code == ReqChangeEventReqName); if (!string.IsNullOrEmpty(changeEventReq?.DecodedText)) { var @event = new Event { EventType = EventType.Change, CalculationText = changeEventReq.DecodedText }; cardRequisite.Events.Add(@event); } var selectEventReq = row.Requisites .FirstOrDefault(r => r.Code == ReqSelectEventsReqName); if (!string.IsNullOrEmpty(selectEventReq?.DecodedText)) { var events = EventTextParser.Parse(selectEventReq.DecodedText); foreach (var @event in events) { if (@event.EventType == EventType.Unknown) { @event.EventType = EventType.Select; } cardRequisite.Events.Add(@event); } } entity.Requisites.Add(cardRequisite); } }
public IEnumerable <Dialog> Read(SqlConnection connection, Version platformVersion) { var components = new Dictionary <string, Dialog>(); var query = this.GetDialogQuery(platformVersion); if (string.IsNullOrEmpty(query)) { return(components.Values.ToList()); } var command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialog = new Dialog { Name = reader["Name"] as string, Title = reader["Title"] as string, CardForm = reader["CardForm"] as string }; var eventsValue = reader["Events"] as string; if (!string.IsNullOrEmpty(eventsValue)) { var events = EventTextParser.Parse(eventsValue); foreach (var @event in events) { dialog.Events.Add(@event); } } components.Add(dialog.Name, dialog); } } } query = this.GetMethodsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var method = new Method { Name = reader["Name"] as string, CalculationText = reader["CalculationText"] as string ?? string.Empty }; dialog.Methods.Add(method); } } } } query = this.GetMethodParamsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var methodName = reader["MethodName"] as string; var method = dialog.Methods .FirstOrDefault(m => m.Name == methodName); if (method == null) { continue; } var parameter = new MethodParam { Number = (int)reader["Number"], Name = reader["Name"] as string }; var typeValue = reader["Type"] as string; if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType)) { parameter.Type = methodParamType; } parameter.DefaultValue = reader["DefaultValue"] as string; parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue); method.Params.Add(parameter); } } } } query = this.GetActionQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var action = new ActionWithHandler { Name = reader["Name"] as string }; var calculationText = reader["CalculationText"] as string; var executionHandler = dialog.Methods .FirstOrDefault(m => m.Name == calculationText); if (executionHandler != null) { action.ExecutionHandler = executionHandler; } else { action.CalculationText = calculationText ?? string.Empty; } dialog.Actions.Add(action); } } } } query = this.GetRequisiteQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var cardRequisite = new CardRequisite { Number = (int)reader["Number"] }; if (reader["Section"] is string sectionValue && RequisiteSectionValues.ContainsKey(sectionValue)) { cardRequisite.Section = RequisiteSectionValues[sectionValue]; } cardRequisite.Name = reader["Name"] as string; cardRequisite.IsRequired = YesValue.Equals(reader["IsRequired"] as string); cardRequisite.IsLastValueSaved = YesValue.Equals(reader["IsLastValueSaved"] as string); cardRequisite.IsSelectionConstrained = YesValue.Equals(reader["IsSelectionConstrained"] as string); var changeEventValue = reader["ChangeEvent"] as string; if (!string.IsNullOrEmpty(changeEventValue)) { var @event = new Event { EventType = EventType.Change, CalculationText = changeEventValue }; cardRequisite.Events.Add(@event); } var selectEventsValue = reader["SelectEvents"] as string; if (!string.IsNullOrEmpty(selectEventsValue)) { var events = EventTextParser.Parse(selectEventsValue); foreach (var @event in events) { if (@event.EventType == EventType.Unknown) { @event.EventType = EventType.Select; } cardRequisite.Events.Add(@event); } } dialog.Requisites.Add(cardRequisite); } } } } return(components.Values.ToList()); }