Экспорт данных из ЛЭРС Учет в свой SQL-сервер

Раздел для разработчиков по взаимодействию с ЛЭРС УЧЕТ, созданию собственных внешних модулей, экспорту/импорту данных и т.д.

Модератор: Модераторы

Аркадий
Сообщения: 154
Зарегистрирован: 01 окт 2013, 10:26

Экспорт данных из ЛЭРС Учет в свой SQL-сервер

Сообщение Аркадий » 12 фев 2014, 05:19

Здравствуйте!

Вопрос мой касается экспорта данных из ЛЭРС в стороннюю базу данных.
Заранее прошу принять во внимание тот факт, что сфера моей деятельности далека от программирования и баз данных. Поэтому прошу снисходительно отнестись к вероятным неточностям выражений и формулировок.

Итак, вводные данные.

Имеем свою АСДКУ, которая формирует SQL-базу данных. О ее устройстве, структуре и прочих характеристиках информации у меня на сегодняшний день нет (прошу указать, если они важны для ответа - кое-какие из них можно уточнить). Часть объектов, опрашиваемых этой АСДКУ, есть желание перевести на работу с ЛЭРС Учетом ввиду его высокой надежности и удобства пользования и управления (в части опроса).
На данный момент создание нужных отчетных форм штатными средствами ЛЭРС Учета не возможно. Также факт существования двух разрозненных баз данных не является желательным в условиях нашего предприятия. В этой связи имеется необходимость экспортировать данные из ЛЭРС Учет (часовое, суточное, месячное потребление, показания точек учета) в автоматическом режиме в существующую единую SQL-базу данных предприятия. С этой же единой базой данных будут работать средства представления и анализа данных (технологический портал), которые будут вести обработку данных требуемым образом.

Вопросы:

1. Позволяют ли существующие инструменты LERS Framework (или иные) производить экспорт основных данных таким образом, чтобы они могли быть использованы сторонней базой данных SQL?
2. Помимо непосредственного взаимодействия ЛЭРС учета со сторонне базой данных, какие есть варианты автоматического экспорта данных, для их последующей обработки?

Заранее спасибо.
Александр Сидоров
Разработчик
Разработчик
Сообщения: 897
Зарегистрирован: 16 мар 2010, 06:53

Re: Экспорт данных из ЛЭРС Учет

Сообщение Александр Сидоров » 12 фев 2014, 06:36

Здравствуйте, Аркадий.

1. Привожу простейший код на языке C# по экспорту данных из ЛЭРС УЧЕТ в стороннюю базу данных с помощью LERS Framework:

 C#

Код: Выделить всё

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);

         // Открываем соединение со сторонней базой данных.

         using (SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=MyDB;Integrated Security=True"))
         {
            connection.Open();

            // Получаем список всех точек учета и для каждой из них запрашиваем данные.

            foreach (MeasurePoint measurePoint in server.MeasurePoints.GetList())
            {
               // Запрашиваем данные о суточном потреблении за предыдущую неделю.

               MeasurePointConsumptionRecordCollection consumption = measurePoint.Data.GetConsumption(DateTime.Today.AddDays(-7), DateTime.Today.AddDays(-1), Lers.Data.DeviceDataType.Day);

               // Экспортируем полученные данные в стороннюю базу данных.

               foreach (MeasurePointConsumptionRecordWater record in consumption)
               {
                  using (SqlCommand command = new SqlCommand("INSERT INTO [MyTable] VALUES(@MeasurePointNumber, @Date, @M1, @T1)", connection))
                  {
                     command.Parameters.AddWithValue("@MeasurePointNumber", measurePoint.Number);
                     command.Parameters.AddWithValue("@Date", record.DateTime);
                     command.Parameters.AddWithValue("@M1", record.M_in);
                     command.Parameters.AddWithValue("@T1", record.T_in);

                     command.ExecuteNonQuery();
                  }
               }
            }
         }
      
         server.Disconnect(2000);
      }
   }

Документацию по LERS Framework можно скачать здесь
Примеры по LERS Framework можно скачать здесь

2. Данные также можно экспортировать через Web-службу (является частью Web-интерфейса).

Описание есть на нашем сайте.
Примеры использования можно скачать здесь

Еще есть возможность экспортировать данные в виде XML, но пока эта функция не была добавлена во Framework и выполнить экспорт можно только вручную, через рабочее место оператора. Подробнее в документации.
Telegram-канал новостей ЛЭРС УЧЁТ: https://t.me/lersuchet
Аркадий
Сообщения: 154
Зарегистрирован: 01 окт 2013, 10:26

Re: Экспорт данных из ЛЭРС Учет

Сообщение Аркадий » 12 фев 2014, 07:00

Т.е. все возможно, нужно привлечь программистов. Спасибо!
Александр Сидоров
Разработчик
Разработчик
Сообщения: 897
Зарегистрирован: 16 мар 2010, 06:53

Re: Экспорт данных из ЛЭРС Учет

Сообщение Александр Сидоров » 13 фев 2014, 06:14

Если вам удобнее писать на PHP, то лучшим вариантом будет использование вышеупомянутой Web-службы, к которой можно обращаться через протокол SOAP.

Официальное руководство по работе с SOAP в PHP доступно здесь.
Telegram-канал новостей ЛЭРС УЧЁТ: https://t.me/lersuchet
Аркадий
Сообщения: 154
Зарегистрирован: 01 окт 2013, 10:26

Re: Экспорт данных из ЛЭРС Учет

Сообщение Аркадий » 28 фев 2014, 11:37

Спасибо за пример (С#)!
Скомпилировали его с x32 версией библиотеки - получилось подключиться к серверу. А вот с x64 версией библиотеки даже скомпилировать не выходит - возникает ошибка (ругается на библиотеку). Есть ли какие-либо нюансы, связанные с разрядностью систем?

UPD: Работаем с ЛЭРС Учет для 64-разрядных систем (3.07.20)
Аватара пользователя
Евгений Николаенко
Главный воспитатель
Главный воспитатель
Сообщения: 4384
Зарегистрирован: 03 фев 2010, 03:52

Re: Экспорт данных из ЛЭРС Учет

Сообщение Евгений Николаенко » 28 фев 2014, 13:52

Приведите полный текст ругани.
Блог разработчиков ЛЭРС Учёт:
http://blog.lers.ru
Аркадий
Сообщения: 154
Зарегистрирован: 01 окт 2013, 10:26

Re: Экспорт данных из ЛЭРС Учет

Сообщение Аркадий » 03 мар 2014, 10:48

При попытке компиляции примера консольного приложения с использованием x64 библиотеки видим следующую ошибку:
System.BadImageFormatException was unhandled
Could not load file or assembly 'Lers.System, Version=3.0.0.0, Culture=neutral, PublicKeyToken=e7c6d6299713498c' or one of its dependencies. Была сделана попытка загрузить программу, имеющую неверный формат.
Error Compile.jpg
Error Compile.jpg (102.66 КБ) 2078 просмотров


С библиотекой x32 такой ошибки не возникает.
Александр Сидоров
Разработчик
Разработчик
Сообщения: 897
Зарегистрирован: 16 мар 2010, 06:53

Re: Экспорт данных из ЛЭРС Учет

Сообщение Александр Сидоров » 04 мар 2014, 02:32

Эта ошибка может возникать если ваш проект компилируется под платформу x86. Приложение, скомпилированное под платформу х86 не может использовать 64-разрядные библиотеки и выдает данную ошибку.

В настройках вашего проекта вам нужно сменить платформу на x64.
Какую среду разработки вы используете?
Telegram-канал новостей ЛЭРС УЧЁТ: https://t.me/lersuchet
Аркадий
Сообщения: 154
Зарегистрирован: 01 окт 2013, 10:26

Re: Экспорт данных из ЛЭРС Учет

Сообщение Аркадий » 06 мар 2014, 11:04

Вопрос сняли переходом на ОС х32 и ЛЭРС x32. Со средой разработки работаю не я, поэтому вынужден оставить ваш вопрос без ответа.
Аватара пользователя
Евгений Николаенко
Главный воспитатель
Главный воспитатель
Сообщения: 4384
Зарегистрирован: 03 фев 2010, 03:52

Re: Экспорт данных из ЛЭРС Учет

Сообщение Евгений Николаенко » 07 мар 2014, 14:39

Ответ уже дал Александр - ошибка возникает в том случае, когда на 64-х битной системе проект сы ссылкой на 64-х битную библиотеку компилируется под платформу х86.

Если вам нужно делать 32-х битную сборку на 64-х битной системе - удалите из проекта ссылку на 64-х битную версию Lers.System.dll и добавьте ссылку на 32-х битную версию.
Блог разработчиков ЛЭРС Учёт:
http://blog.lers.ru

Вернуться в «Lers Framework и интеграция с другими системами»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость