public static string Create(SourceSystemType sourceSystem, long unicId)
        {
            // 0 - 000000123 - идентификатор объекта
            // 1 - 00 - код юр лица, всегда 00
            // 2 - 01 - код системы от куда пришёл - SourceSystemType
            // 3 - контрольная цифра
            // Алгоритм вычисления контрольной цифры:
            // Начиная с первой значимой цифры(>0), каждой позиции последующей цифры присваивается вес по порядку начиная с 1.
            // Вычисляется сумма произведений каждой цифры и веса. Последняя цифра в полученной сумме является контрольной цифрой.
            // 1*1 + 5*2 + 7*3 + 0*4 + 0*5 + 0*6 + 1*7=39 – контрольный символ  - 9
            const string template    = "{0}{1}{2}";
            const string legalEntity = "00";

            string id         = unicId.ToString();
            string systemCode = ((long)sourceSystem).ToString("D2");

            string barcode       = String.Format(template, id, legalEntity, systemCode);
            long   barcodeNumber = long.Parse(barcode);

            long[] barcodeNumbers = ToDigitArray(barcodeNumber);
            long   checkDigit     = barcodeNumbers.Select((t, i) => t * (i + 1)).Sum() % 10;

            barcode += checkDigit;
            return(barcode);
        }
        private static SourceSystemType GetSourceSystemType(string barcode)
        {
            string sourceSystemStringCode = barcode.Substring(barcode.Length - 3, 2);
            int    sourceSystemCode;

            if (!int.TryParse(sourceSystemStringCode, out sourceSystemCode))
            {
                return(SourceSystemType.None);
            }

            SourceSystemType sourceSystemType = (SourceSystemType)sourceSystemCode;

            return(sourceSystemType);
        }