GetOrganizationListByInnKpp() public method

Получить все организации по указанному ИНН (+ КПП). В случае поиска ИП, ФЛ или организации со списком филиалов - КПП не указывается.
public GetOrganizationListByInnKpp ( string inn, string kpp = null ) : Organization[]
inn string
kpp string
return Organization[]
コード例 #1
0
ファイル: Program.cs プロジェクト: Synerdocs/synerdocs-sdk
        /// <summary>
        /// Пример авторизации по сертификату
        /// получение данных по ИНН об организации-получателе
        /// отправка документа с подписью сертификатом пользователя
        /// отправка документов без подписания
        /// 
        /// отправка идет так:
        /// 
        /// сообщение1 - получателю1 без указания подразления
        ///   документ1
        ///   документ2
        /// </summary>
        /// <param name="args"></param>
        private static void Main(string[] args)
        {
            var url = "https://service.synerdocs.ru/exchangeservice.svc";
            var client = new Client(url, false, false, "", "WSHttpsBinding_IExchangeService");

            // авторизация по логину и паролю (тут возможно использовать также
            // авторизацию по сертификату при необходимости)
            var login = "******";
            var password = "******";
            if (client.Authenticate(login, password))
            {
                Console.WriteLine("Успешная авторизация, получен токен:");
                Console.WriteLine(client.Token);
            }
            else
            {
                Console.WriteLine("Ошибка авторизации");
                Console.ReadKey();
                return;
            }

            // получение текущего ящика
            var currentBoxInfo = client.GetBoxes().FirstOrDefault();
            if (currentBoxInfo == null)
            {
                Console.WriteLine("Ошибка при получении ящиков");
                return;
            }
            // выбор текущего ящика - от него будем отправлять документы
            // в простом случае - у пользователя доступен только один ящик
            // а если пользователь состоит в нескольких организациях - ящиков может быть несколько
            var currentBox = currentBoxInfo.Address;

            // ИНН организации-получателя
            var inn = "1839839970";
            // пусть не знаем КПП, при пустом значении - должно автоматически быть получено головное
            // при получении списка организации
            var kpp = "";

            // поиск организации получателя по атрибутам
            var organizations = client.GetOrganizationListByInnKpp(inn, kpp);

            // отладочный вывод некоторой информации о найденных организациях
            Console.WriteLine("Организации - получатели:");
            foreach (var organization in organizations)
                Console.WriteLine(organization.Name);

            // создание списка получателей документов в сообщении
            var messageRecipients = organizations.Select(x =>
                new MessageRecipient
                {
                    // ящик получателя, при этом автоматически будет выбрано головное подразделение,
                    // т.к. явно не указали подразделение
                    OrganizationBoxId = x.BoxAddress
                }).ToList();

            // добавление еще одного получателя:
            // выбор по определенному КПП подразделения организации - получателя
            var moreRecipientKpp = "243456789";
            var moreRecipient = client.GetOrganizationByInnKpp("1839840035", null);

            // вывод некоторой инфомрации о найденном получателе:
            Console.WriteLine("Организация - дополнительный получатель:");
            Console.WriteLine(moreRecipient.Name);

            // получим все подразделения организации и выберем нужное по КПП
            // в параметр метода передается текущий выбранный ящик
            var departments = client.GetOrganizationStructure(currentBox, moreRecipient.OrganizationId);
            var moreRecipientDepartment = departments.FirstOrDefault(x => x.Kpp == moreRecipientKpp);
            if (moreRecipientDepartment == null)
            {
                Console.WriteLine("Не удалось найти подразделение организации - дополительного получателя по КПП - " +
                                  moreRecipientKpp);
                return;
            }

            // ! т.к. Отправка документов без подписи нескольким контрагентам невозможна,
            // поэтому каждый из списков получателей содержим только одного получателя

            // Но например при отправке документов с подписью возможно отправлять документы сразу нескольких получателям

            // Пример указания определенного подразделения организации - получателя:
            // добавим полученную информацию о подразделении получателя в нужный список получателей
            var messageRecipientsWithDepartments = new List<MessageRecipient>
            {
                new MessageRecipient
                {
                    // ящик организации - получателя
                    OrganizationBoxId = moreRecipient.BoxAddress,
                    // ИД подразделения организации - получателя (необязательный параметр)
                    DepartmentId = moreRecipientDepartment.Id
                }
            };

            // содержимое неформализованного документа из файла на локальном компьютере
            var filesDir = "../../../../..";
            var filePath = filesDir + "/Documents/Untyped 3.txt";
            var fileBytes = File.ReadAllBytes(filePath);

            // Пример создание документов:
            // созданный объект - документ можно использовать при отправке в сообщениях
            // только 1 раз, т.к. поля должны быть уникальными
            var document1 = new Document
            {
                Id = Guid.NewGuid().ToString(),
                DocumentType = DocumentType.Untyped,
                UntypedKind = null,
                FileName = "Отправка без подписи - первый документ1 - " + Path.GetFileName(filePath),
                Content = fileBytes,
                Card = null,
                NeedSign = false
            };
            // создание 2го документа
            var document2 = new Document
            {
                Id = Guid.NewGuid().ToString(),
                DocumentType = DocumentType.Untyped,
                UntypedKind = null,
                FileName = "Отправка без подписи - второй документ2 - " + Path.GetFileName(filePath),
                Content = fileBytes,
                Card = null,
                NeedSign = false
            };

            // создаем сообщение для отправки
            var unsignedMessage = new UnsignedMessage
            {
                From = currentBox,
                // документы в сообщение
                Documents = new[]
                {
                    document1,
                    document2
                },
                // получатели
                Recipients = messageRecipients.ToArray()
            };

            // создаем сообщение для отправки по второму списку получателей - для примера c указанием подразделений
            // создание 3го документа
            var document3 = new Document
            {
                // для исключения дублирования ID документов - всегда необходимо создание уникальных идентификаторов документов
                Id = Guid.NewGuid().ToString(),
                DocumentType = DocumentType.Untyped,
                UntypedKind = null,
                FileName = "Отправка без подписи - первый документ3 - " + Path.GetFileName(filePath),
                Content = fileBytes,
                Card = null,
                NeedSign = false
            };
            // создание 4го документа
            var document4 = new Document
            {
                Id = Guid.NewGuid().ToString(),
                DocumentType = DocumentType.Untyped,
                UntypedKind = null,
                FileName = "Отправка без подписи - второй документ4 - " + Path.GetFileName(filePath),
                Content = fileBytes,
                Card = null,
                NeedSign = false
            };
            // создание 2го сообщения
            var unsignedMessage2 = new UnsignedMessage
            {
                From = currentBox,
                // документы в сообщение
                Documents = new[]
                {
                    document3,
                    document4
                },
                // получатели
                Recipients = messageRecipientsWithDepartments.ToArray()
            };
            // пример отправки двух сообщений с разными наборами получателей
            // отправляем сообщение 1
            SentMessage result1;
            try
            {
                result1 = client.SendUnsignedMessage(unsignedMessage);
                Console.WriteLine("Успешно отправлено исходящее сообщение с документами без подписи 1");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Ошибка при отправке сообщения 1" + ex.Message);
                Console.ReadKey();
                return;
            }
            // отправляем сообщение 2
            SentMessage result2;
            try
            {
                result2 = client.SendUnsignedMessage(unsignedMessage2);
                Console.WriteLine("Успешно отправлено исходящее сообщение с документами без подписи 2");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Ошибка при отправке сообщения 2" + ex.Message);
                Console.ReadKey();
                return;
            }
            Console.WriteLine("Успешно отправлено исходящее сообщения");

            Console.WriteLine("Для выхода нажмите enter");
            Console.ReadLine();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: Synerdocs/synerdocs-sdk
        /// <summary>
        /// Пример авторизации по сертификату
        /// получение данных по ИНН об организации-получателе
        /// отправка документа с подписью сертификатом пользователя
        /// отправка документ без подписания
        /// </summary>
        /// <param name="args"></param>
        private static void Main(string[] args)
        {
            var url = "https://service.synerdocs.ru/exchangeservice.svc";
            var appId = new Guid().ToString();

            var client = new Client(url, false, false, "", "WSHttpsBinding_IExchangeService");

            // сертификат для входа по сертификату и подписания
            var certificate = TryInstallOrGetCertificate();
            if (certificate == null)
                return;

            Console.WriteLine("Успешно получен сертификат с отпечатком: " + certificate.Thumbprint);

            // авторизуемся по сертификату
            if (client.AuthenticateWithCertificate(certificate.Thumbprint, appId))
            {
                Console.WriteLine("Успешная авторизация по сертификату, получен токен:");
                Console.WriteLine(client.Token);
            }
            else
            {
                Console.WriteLine("Ошибка авторизации по сертификату");
            }

            // ИНН организации-получателя
            var inn = "1839839904";
            // не знаем КПП, при пустом значении - должно найти головное подразделение организации
            var kpp = "";

            // поиск организации получателя по атрибутам
            var organizations = client.GetOrganizationListByInnKpp(inn, kpp);
            foreach (var organization in organizations)
                Console.WriteLine(organization.Name);

            // получаем содержимое неформализованного документа из файла на локальном компьютере
            var filesDir = "../../../../..";
            // пример подписи файлов с локального компьютера
            var filePath = filesDir + "/Documents/Untyped 3.txt";
            var filePath2 = filesDir + "/Documents/Untyped 1.png";
            var fileBytes = File.ReadAllBytes(filePath);
            var fileBytes2 = File.ReadAllBytes(filePath2);
            // создание подписей к бинарному содержимому файлов, подписание с помощью выбранного ранее сертификата
            var signature = CryptoApiHelper.Sign(certificate, fileBytes, true);
            var signature2 = CryptoApiHelper.Sign(certificate, fileBytes2, true);

            // получение текущего ящика
            var boxInfo = client.GetBoxes().FirstOrDefault();
            if (boxInfo == null)
            {
                Console.WriteLine("Ошибка при получении ящиков");
                return;
            }
            var currentBox = boxInfo.Address;

            // создание документа
            var document = new Document
            {
                Id = Guid.NewGuid().ToString(),
                DocumentType = DocumentType.Untyped,
                UntypedKind = null,
                FileName = Path.GetFileName(filePath),
                Content = fileBytes,
                Card = null,
                NeedSign = false
            };
            // создание еще одного документа (опционально)
            var document2 = new Document
            {
                Id = Guid.NewGuid().ToString(),
                DocumentType = DocumentType.Untyped,
                UntypedKind = null,
                FileName = Path.GetFileName(filePath2),
                Content = fileBytes2,
                Card = null,
                NeedSign = false
            };

            // создаем сообщение для отправки
            var message = new Message
            {
                // генерируем уникальный идентификатор для сообщения
                Id = Guid.NewGuid().ToString(),
                // указываем свой текущий ящик (ящик отправителя)
                From = currentBox,
                // документы
                Documents = new[]
                {
                    document,
                    document2
                },
                // получатели
                Recipients = organizations.Select(x =>
                    new MessageRecipient
                    {
                        OrganizationBoxId = x.BoxAddress
                    }).ToArray(),
                // прикрепляем подписи
                Signs = new[]
                {
                    new Sign
                    {
                        Id = Guid.NewGuid().ToString(),
                        DocumentId = document.Id,
                        Raw = signature
                    },
                    new Sign
                    {
                        Id = Guid.NewGuid().ToString(),
                        DocumentId = document2.Id,
                        Raw = signature2
                    }
                }
            };
            SentMessage result;
            try
            {
                result = client.SendMessage(message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Ошибка при отправке документов: " + ex.Message);
                Console.ReadKey();
                return;
            }
            Console.WriteLine("Успешно отправлено исходящее сообщение MessageId = {0}", result.MessageId);

            Console.WriteLine("Для выхода нажмите enter");
            Console.ReadLine();
        }