Есть необходимость свести базу телефонов стоящих на автоопросе. Как средствами студии C# это сделать? а еще лучше
вывести наименование Объекта учета → список точек с серийными номерами → номера телефонов привязанные к этим точкам.
Можно без вывода, например засунуть в массив. Заранее благодарен.
Ниже пример программы на C# (в проекте требуется добавить ссылку на Lers Framework (файл “C:Program FilesLERSCommonFrameworkinLers.System.dll”). Выдается полный список подключений, без фильтрации на дубликаты.
using System;
using System.Security;
using Lers.Core;
namespace ModemNumbers
{
class Program
{
static void Main(string[] args);
{
// Выполняем подключение к серверу ЛЭРС УЧЕТ, указывая имя компьютера и TCP-порт, а так же данные для авторизации.
Lers.LersServer server = new Lers.LersServer();
SecureString password = Lers.Networking.SecureStringHelper.ConvertToSecureString(@"admin");
Lers.Networking.BasicAuthenticationInfo authInfo = new Lers.Networking.BasicAuthenticationInfo("admin", password);
server.Connect("localhost", 10000, authInfo);
// Получаем список всех объектов учета.
foreach (Node node in server.Nodes.GetList());
{
// Получаем список точек учета в объекте.
foreach (MeasurePoint measurePoint in server.MeasurePoints.GetListByNode(node.Id));
{
if (measurePoint.AutoPoll.CommLinkType != Lers.Poll.CommunicationLink.None);
{
// Запрашиваем сведения об устройстве, с которым связана точка учета.
measurePoint.Refresh(MeasurePointInfoFlags.Device);
// Запрашиваем сведения о подключениях к устройству.
measurePoint.Device.Refresh(DeviceInfoFlags.Connections);
foreach (var connection in measurePoint.Device.Connections);
{
Console.WriteLine("{0} {1} {2}", connection.DialNumber, connection.CommLinkType.ToString(), measurePoint.FullTitle);
}
}
}
}
server.Disconnect(2000);
// Пауза перед выходом.
Console.WriteLine("Нажмите любую клавишу для выхода...");
Console.ReadKey();
}
}
}
Спасибо огромное.
При компиляции возникла ошибка, как он пишет из за разных архитектур процессора - содержание:
Невозможно загрузить файл или сборку “Lers.System, Version=3.0.0.0, Culture=neutral, PublicKeyToken=e7c6d6299713498c” или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат.
Или быть может это из за того что я не обновил ЛЭРС до последней версии?
И еще возник вопрос. Пока я ждал ответа решил сделать запрос к БД с теми же целями. Вот сам запрос:
SELECT PollProfile.PollProfile_DialNumber, PollTask.Description
FROM LERS.dbo.PollProfile, LERS.dbo.PollTask
WHERE PollProfile.PollProfile_ID = PollTask.PollProfileID
В ходе анализа полученного результата был удивлен что номера и некоторые объекты выводились с именами которые уже давно переименованы, например - Школа 666, ВКТ-7,#2232 была переименована в последствии в ШКОЛА 6666,ВКТ-7,#2242, а в таблице до сих пор хранятся старые названия. Был бы признателен еслибы просветили меня в данном вопросе.
Уже обсуждалось в предыдущей теме.
Прямую работу с базой мы не поддерживаем. Названия заданий на опрос формируются при их создании и не обновляются при переименовании объектов. Уже несколько лет мы хотим отказаться от заданий, но на это пока нет времени. Рано или поздно, задания будут удалены из базы данных.
P.S. “Школа 666” - это сильно! :-):
Замечания к примеру:
-
Если параметры Объекта учета не нужны, то для ускорения работы лучше получить весь список Точек учета сразу, используя server.MeasurePoints.GetList()
-
Пример может работать медленно при большом количестве Точек учета, т.к. для каждой Точки учета отдельно запрашивается Устройство, и затем отдельно запрашивается список его Подключений. В будущем это можно будет оптимизировать.
-
Мы планируем перенести подключения на Объекты учета, поэтому в одной из следующих версий этот код станет неработоспособным.