コード例 #1
0
        /// <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]);
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Загрузить все тексты обработчиков событий из заданной папки.
        /// </summary>
        /// <param name="path">Папка с обработчиками событий.</param>
        /// <returns>Тексты обработчиков событий в виде значения реквизита.</returns>
        protected string LoadEventsFromFolder(string path)
        {
            var eventTexts = new Dictionary <EventType, string>();

            foreach (EventType eventType in Enum.GetValues(typeof(EventType)))
            {
                var eventFileName = EventTypeFileNames.GetFileName(eventType);
                var eventFilePath = Path.Combine(path, eventFileName);
                if (File.Exists(eventFilePath))
                {
                    var eventText = this.LoadTextFromFile(eventFilePath);
                    eventTexts.Add(eventType, eventText);
                }
            }
            return(EventTextParser.Join(eventTexts));
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        /// <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]);
                            }
                        }
                    }
                }
            }
        }
コード例 #5
0
        /// <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]);
                            }
                        }
                    }
                }
            }
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        /// <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);
            }
        }
コード例 #8
0
        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());
        }