Esempio n. 1
0
        private List <Requisite> ReadRequisities(BracketsFileNode node, bool shortPath = false)
        {
            var fields = new List <Requisite>();

            var count = (int)node.GetNode(1);

            for (int i = 0; i < count; i++)
            {
                var requisiteNode = node.GetNode(i + 2);

                Requisite requisite;

                if (shortPath)
                {
                    requisite       = ReadMetadataObject <Requisite>(requisiteNode.GetNode(0, 1));
                    requisite.Types = ReadTypesInfo(requisiteNode.GetNode(0, 2));
                }
                else
                {
                    requisite       = ReadMetadataObject <Requisite>(requisiteNode.GetNode(0, 1, 1, 1));
                    requisite.Types = ReadTypesInfo(requisiteNode.GetNode(0, 1, 1, 2));
                }

                fields.Add(requisite);
            }

            return(fields);
        }
Esempio n. 2
0
        private static List <TypeInfo> ReadTypesInfo(BracketsFileNode node)
        {
            var list = new List <TypeInfo>();

            int count;
            int offset = 1;

            if ((string)node[0] == "Pattern")
            {
                count = node.Nodes.Count - 1;
            }
            else
            {
                count  = (int)node.GetNode(1);
                offset = 2;
            }

            for (int x = 0; x < count; x++)
            {
                var typeInfoNode = node.GetNode(x + offset);
                var typeInfo     = ReadTypeInfo(typeInfoNode);

                list.Add(typeInfo);
            }

            return(list);
        }
Esempio n. 3
0
        private static TypeInfo ReadTypeInfo(BracketsFileNode node)
        {
            var type = (string)node.GetNode(0);

            switch (type)
            {
            case "#":
                var uuid = (string)node.GetNode(1);
                return(new ReferenceTypeInfo(uuid));

            case "B":
                return(new TypeInfo(ValueType.Boolean));

            case "S":
                if (node.Nodes.Count > 1)
                {
                    var sLength     = (int)node.GetNode(1);
                    var fixedLength = (int)node.GetNode(2) == 0;
                    return(new StringTypeInfo(sLength, fixedLength));
                }
                else
                {
                    return(new StringTypeInfo(0, false));
                }

            case "N":
                var nLength     = (int)node.GetNode(1);
                var precision   = (int)node.GetNode(2);
                var notNegative = (int)node.GetNode(3) == 0;
                return(new NumericTypeInfo(nLength, precision, notNegative));

            case "D":
                if (node.Nodes.Count > 1)
                {
                    var kindStr = (string)node.GetNode(1);
                    if (kindStr == "D")
                    {
                        return(new DateTimeTypeInfo(DateTimeKind.Date));
                    }
                    else if (kindStr == "T")
                    {
                        return(new DateTimeTypeInfo(DateTimeKind.Time));
                    }
                    else
                    {
                        throw new Exception($@"{kindStr} is unknown marker of the date and time kind");
                    }
                }
                else
                {
                    return(new DateTimeTypeInfo(DateTimeKind.DateTime));
                }

            default:
                throw new Exception($@"{type} is unknown marker of the requisite type");
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Reads properties of the 1C configuration
 /// </summary>
 /// <param name="config"></param>
 /// <param name="conf"></param>
 private void ReadConfigurationProperties(BracketsFileNode node)
 {
     Name     = (string)node.GetNode(3, 1, 1, 1, 1, 2);
     Synonym  = GetSynonym(node.GetNode(3, 1, 1, 1, 1, 3));
     Comment  = (string)node.GetNode(3, 1, 1, 1, 1, 4);
     Supplier = (string)node.GetNode(3, 1, 1, 14);
     Version  = (string)node.GetNode(3, 1, 1, 15);
     DataLockingControlMode = (DataLockingControlMode)(int)node.GetNode(3, 1, 1, 17);
     CompatibilityMode      = (string)node.GetNode(3, 1, 1, 26);
 }
Esempio n. 5
0
        private T ReadMetadataObject <T>(BracketsFileNode node, string uuid) where T : MetadataObject, new()
        {
            T obj = new T
            {
                UUID    = uuid,
                Name    = (string)node.GetNode(2),
                Synonym = GetSynonym(node.GetNode(3))
            };

            return(obj);
        }
Esempio n. 6
0
        private static string GetSynonym(BracketsFileNode node)
        {
            var hasSynonym = (int)node.GetNode(0) != 0;

            if (hasSynonym)
            {
                return((string)node.GetNode(2));
            }

            return(null);
        }
Esempio n. 7
0
        private string GetData(BracketsFileNode node)
        {
            var dataType = (string)node[0];

            switch (dataType)
            {
            case "R":     // Reference
                return((string)node[1]);

            case "U":     // Undefined
                return("");

            case "S":     // String
                return((string)node[1]);

            case "B":     // Boolean
                return((string)node[1] == "0" ? "false" : "true");

            case "P":     // Complex data
                StringBuilder str = new StringBuilder();

                var subDataNode = node[1];

                //var subDataType = (int)subDataNode[0];
                // What's known (subDataNode):
                // 1 - additional data of "Authentication (Windows auth) in thin or thick client"
                // 2 - additional data of "Authentication in COM connection" event
                // 6 - additional data of "Authentication in thin or thick client" event
                // 11 - additional data of "Access denied" event

                // I hope this is temporarily method
                var subDataCount = subDataNode.Count - 1;

                if (subDataCount > 0)
                {
                    for (int i = 1; i <= subDataCount; i++)
                    {
                        var value = GetData(subDataNode[i]);

                        if (value != string.Empty)
                        {
                            str.AppendLine($"Item {i}: {value}");
                        }
                    }
                }

                return(str.ToString());

            default:
                return("");
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Reads properties of "Enum" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadEnumsAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(4, 1, 1, 17));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <OneSEnum>(objectInfo.GetNode(1, 5, 1), objectGuid);

                Enums.Add(obj);
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Reads properties of "Constant" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadConstantsAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(4, 1, 1, 3));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <Constant>(objectInfo.GetNode(1, 1, 1, 1), objectGuid);

                var typesNode = objectInfo.GetNode(1, 1, 1, 2);
                obj.Types = ReadTypesInfo(typesNode);

                Constants.Add(obj);
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Reads properties of "Document journal" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadDocumentJournalsAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(4, 1, 1, 10));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <DocumentJournal>(objectInfo.GetNode(1, 3, 1), objectGuid);

                var requisitiesNode = objectInfo.GetNode(4);

                obj.Graphs = ReadRequisities(requisitiesNode, true);

                DocumentJournals.Add(obj);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Reads properties of "Calculation register" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadCalculationRegistersAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(6, 1, 4));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <CalculationRegister>(objectInfo.GetNode(1, 15, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "1b304502-2216-440b-960f-60decd04bb5d":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "b12fc850-8210-43c8-ae05-89567e698fbb":
                        obj.Dimensions = ReadRequisities(objectDetailsNode);
                        break;

                    case "702b33ad-843e-41aa-8064-112cd38cc92c":
                        obj.Resources = ReadRequisities(objectDetailsNode);
                        break;

                    case "274bf899-db0e-4df6-8ab5-67bf6371ec0b":
                        obj.Recalculations = await ReadRecalculations(connection, objectDetailsNode, ct);

                        break;

                    default:
                        continue;
                    }
                }

                CalculationRegisters.Add(obj);
            }
        }
Esempio n. 12
0
        private static List <string> GetMetadataObjectGuids(BracketsFileNode node)
        {
            var data = new List <string>();

            var objectsCount = (int)node.GetNode(1);

            if (objectsCount == 0)
            {
                return(data);
            }

            for (int i = 0; i < objectsCount; i++)
            {
                data.Add((string)node.GetNode(i + 2));
            }

            return(data);
        }
Esempio n. 13
0
        /// <summary>
        /// Reads properties of "Chart of accounts" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadChartsOfAccountsAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(5, 1, 3));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <ChartOfAccounts>(objectInfo.GetNode(1, 15, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "6e65cbf5-daa8-4d8d-bef8-59723f4e5777":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "4c7fec95-d1bd-4508-8a01-f1db090d9af8":
                        obj.TabularSections = ReadTabularSections(objectDetailsNode);
                        break;

                    case "78bd1243-c4df-46c3-8138-e147465cb9a4":
                        obj.AccountingFlags = ReadRequisities(objectDetailsNode);
                        break;

                    case "c70ca527-5042-4cad-a315-dcb4007e32a3":
                        obj.ExtDimensionAccountingFlags = ReadRequisities(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                ChartsOfAccounts.Add(obj);
            }
        }
Esempio n. 14
0
        private List <TabularSection> ReadTabularSections(BracketsFileNode node)
        {
            var list = new List <TabularSection>();

            var count = (int)node.GetNode(1);

            for (int i = 0; i < count; i++)
            {
                var tabularSectionNode = node.GetNode(i + 2);

                var obj = ReadMetadataObject <TabularSection>(tabularSectionNode.GetNode(0, 1, 5, 1));

                obj.Requisities = ReadRequisities(tabularSectionNode.GetNode(2));

                list.Add(obj);
            }

            return(list);
        }
Esempio n. 15
0
        /// <summary>
        /// Reads properties of "Task" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadTasksAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(7, 1, 3));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <OneSTask>(objectInfo.GetNode(1, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "8ddfb495-c5fc-46b9-bdc5-bcf58341bff0":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "ee865d4b-a458-48a0-b38f-5a26898feeb0":
                        obj.TabularSections = ReadTabularSections(objectDetailsNode);
                        break;

                    case "e97c0570-251c-4566-b0f1-10686820f143":
                        obj.AddressingAttributes = ReadRequisities(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                Tasks.Add(obj);
            }
        }
Esempio n. 16
0
        /// <summary>
        /// Reads properties of "Accumulation register" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadAccumulationRegistersAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(4, 1, 1, 13));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <AccumulationRegister>(objectInfo.GetNode(1, 13, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "b64d9a42-1642-11d6-a3c7-0050bae0a776":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "b64d9a43-1642-11d6-a3c7-0050bae0a776":
                        obj.Dimensions = ReadRequisities(objectDetailsNode);
                        break;

                    case "b64d9a41-1642-11d6-a3c7-0050bae0a776":
                        obj.Resources = ReadRequisities(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                AccumulationRegisters.Add(obj);
            }
        }
Esempio n. 17
0
        /// <summary>
        /// Reads properties of "Accounting register" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadAccountingRegistersAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(5, 1, 4));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <AccountingRegister>(objectInfo.GetNode(1, 15, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "9d28ee33-9c7e-4a1b-8f13-50aa9b36607b":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "35b63b9d-0adf-4625-a047-10ae874c19a3":
                        obj.Dimensions = ReadRequisities(objectDetailsNode);
                        break;

                    case "63405499-7491-4ce3-ac72-43433cbe4112":
                        obj.Resources = ReadRequisities(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                AccountingRegisters.Add(obj);
            }
        }
Esempio n. 18
0
        /// <summary>
        /// Reads properties of "Document" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadDocumentsAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(4, 1, 1, 4));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <Document>(objectInfo.GetNode(1, 9, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "45e46cbc-3e24-4165-8b7b-cc98a6f80211":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "21c53e09-8950-4b5e-a6a0-1054f1bbc274":
                        obj.TabularSections = ReadTabularSections(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                Documents.Add(obj);
            }
        }
Esempio n. 19
0
        /// <summary>
        /// Reads properties of "Exchange plan" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="config"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadExchangePlansAsync(DbConnection connection, BracketsFileNode node, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(node.GetNode(3, 1, 19));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <ExchangePlan>(objectInfo.GetNode(1, 12), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "1a1b4fea-e093-470d-94ff-1d2f16cda2ab":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "52293f4b-f98c-43ea-a80f-41047ae7ab58":
                        obj.TabularSections = ReadTabularSections(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                ExchangePlans.Add(obj);
            }
        }
Esempio n. 20
0
        /// <summary>
        /// Reads properties of "Catalog" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadCatalogsAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(4, 1, 1, 16));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <Catalog>(objectInfo.GetNode(1, 9, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "cf4abea7-37b2-11d4-940f-008048da11f9":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "932159f9-95b2-4e76-a8dd-8849fe5c5ded":
                        obj.TabularSections = ReadTabularSections(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                Catalogs.Add(obj);
            }
        }
Esempio n. 21
0
        /// <summary>
        /// Reads properties of "Business process" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadBusinessProcessesAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(7, 1, 4));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <BusinessProcess>(objectInfo.GetNode(1, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "87c988de-ecbf-413b-87b0-b9516df05e28":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "a3fe6537-d787-40f7-8a06-419d2f0c1cfd":
                        obj.TabularSections = ReadTabularSections(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                BusinessProcesses.Add(obj);
            }
        }
Esempio n. 22
0
        private T ReadMetadataObject <T>(BracketsFileNode node) where T : MetadataObject, new()
        {
            var uuid = (string)node.GetNode(1, 2);

            return(ReadMetadataObject <T>(node, uuid));
        }
Esempio n. 23
0
        private async Task <List <Recalculation> > ReadRecalculations(DbConnection connection, BracketsFileNode node, CancellationToken ct)
        {
            var recalculations = new List <Recalculation>();

            var count = (int)node.GetNode(1);

            for (int i = 0; i < count; i++)
            {
                var recalculationNode = node.GetNode(i + 2);

                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, recalculationNode.Text, ct));

                var recalculation = ReadMetadataObject <Recalculation>(objectInfo.GetNode(1, 7, 1));

                recalculations.Add(recalculation);
            }

            return(recalculations);
        }
Esempio n. 24
0
        /// <summary>
        /// Reads properties of "Chart of characteristic types" metadata objects
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="conf"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        private async Task ReadChartsOfCharacteristicTypesAsync(DbConnection connection, BracketsFileNode conf, CancellationToken ct)
        {
            var objectGuids = GetMetadataObjectGuids(conf.GetNode(4, 1, 1, 12));

            foreach (var objectGuid in objectGuids)
            {
                var objectInfo = BracketsFileParser.Parse(await GetStringConfigFileDataAsync(connection, objectGuid, ct));

                var obj = ReadMetadataObject <ChartOfCharacteristicTypes>(objectInfo.GetNode(1, 13, 1), objectGuid);

                var objectDetailsNodesCount = (int)objectInfo.GetNode(2);

                for (int i = 3; i < (3 + objectDetailsNodesCount); i++)
                {
                    var objectDetailsNode = objectInfo.GetNode(i);

                    var objectDetailsNodeGuid = (string)objectDetailsNode.GetNode(0);

                    switch (objectDetailsNodeGuid)
                    {
                    case "31182525-9346-4595-81f8-6f91a72ebe06":
                        obj.Requisities = ReadRequisities(objectDetailsNode);
                        break;

                    case "54e36536-7863-42fd-bea3-c5edd3122fdc":
                        obj.TabularSections = ReadTabularSections(objectDetailsNode);
                        break;

                    default:
                        continue;
                    }
                }

                ChartsOfCharacteristicTypes.Add(obj);
            }
        }