Доступ к БД из своей программы...

Планирую для расчетов написать свои программы, отсюда вопрос, есть ли какая либо возможность получить доступ к данным ЛЭРС, к примеру - формирую отчет по точке, есть ли какая либо промежуточная база содержащая результаты выводимые в отчете? Если есть, то как к ней обратиться и какая у нее структура?

Для этого используется библиотека автоматизации.

Рекомендуем использовать её как .NET-сборку, так как в данный момент мы разрабатываем Lers.Framework - набор библиотек для взаимодействия с ЛЭРС УЧЁТ из других программ. Весь функционал библиотеки автоматизации будет перенесён в фреймворк, однако COM-интерфейсы некоторое время будут недоступны.

Другой способ - использовать веб-службу доступа к данным. Переход на Lers.Framework её не затронет.

Здравствуйте.
Для передачи данных из ЛЭРС в систему учёта энергоресурсов предприятия использую JScript и доступ к сборке через COM. В процессе эксплуатации немного напрягает падения закачек по причине обновления софта и требования к обновлению библиотеки автоматизации - за последние полгода такое происходило уже 4 раза. И всегда - внезапно. А после прочтения последнего сообщения данной темы я пришел к выводу, что планируется обновление, которое приведет к полной неработоспособности выбранного мною механизма доступа к данным.
Соответственно возникли следующие вопросы:

  1. Правильно ли я понял это сообщение и необходимо будет переделывать ПО перекачки на другие механизмы?
  2. Почему не реализуете обратную совместимость по интерфейсам доступа к данным при обновлениях ПО?

Здравствуйте Андрей.

Мы в курсе проблем с библиотекой автоматизации. Именно поэтому мы решили создать фреймворк, который должен решить их.

В данный момент все наши силы направлены на проработку интерфейса фреймворка, для того, чтобы в дальнейшем он не менялся. Также фреймворк будет автоматически обновляться с системой. Именно из-за этого мы задерживаем выход версии 3.03.

Мы планируем оставить библиотеку автоматизации, она будет представлять COM интерфейс для фреймворка. Но в связи с тем, что мы не успеваем выпустить версию 3.03, мы реализуем COM интерфейс в следующих обновлениях 3.03, 3.04. Интерфейс библиотеки автоматизации останется таким же, за исключением некоторых деталей. Поэтому вам не придется менять механизмы взаимодействия с нашей системой.

Скажите, пожалуйста, чем обосновано использование COM интерфейса? Возможно, вам проще будет работать напрямую через фреймворк?

И всё равно я не совсем понял, будет ли промежуток в устанавливаемых версиях, когда COM-интерфейс будет неработоспособен или нет?

Применение COM связано с тем, что данный механизм привычен и уже используется для обмена данными между различными системами, если нет возможности организации взаимодействия СУБД-СУБД. В СУБД ЛЭРС мы просились, но нам сказали, что она постоянно меняется и лучше использовать “неизменную” библиотеку автоматизации :-): А на тот момент JScript+COM - был самый простой способ получения данных с её использованием.
По поводу использования фреймворка - не знаю даже. Существующий скрипт с задачей перекачки часовых и суточных данных по 8 точкам учёта вполне справляется. Если с COM будет всё плохо - тогда уж придётся на фреймворк переезжать.

Разрыв будет, т.к. обновление 3.03.00 будет без COM-интерфейса (просто не успеваем). Мы добавим его либо в последующих обновлениях 3.03.хх, либо в 3.04 - точно сказать пока трудно, т.к. еще не решен ряд ключевых вопросов.

Понятно. А где взять софт и документацию по поводу Lers.FW ?

Начиная с версии системы 3.03 Lers.Framework будет распространяться в составе системы. Сейчас наши силы направлены на разработку самого фреймворка, документация будет разрабатываться по ходу работ, после выпуска 3.03.00.

Сурово.
Тогда каким образом на данный момент минимизировать время время простоя существующей перекачки при обновлении на 3.03, если фреймворк появится только в ней? Поможет ли переписывание автоматизации на C# вместо Jscript+COM?
И по поводу распространения в составе системы:
На данный момент в качестве перекачивающей машины используется отдельная виртуалка, на которой зарегистрирована только Lers.Automation.dll. Правильно ли я понял, что на эту машину придётся ставить полный дистрибутив ЛЭРС? И аналогично - на компьютер разработчика, который будет работать с фреймворком?

Сложный вопрос, коротко ответить не получится. Давайте сначала немного подробнее остановимся на том, что такое фреймворк и почему мы на него переходим.

Часть первая.

До настоящего времени, различные компоненты системы работали с сервером напрямую, и в каждом из них приходилось реализовывать один и тот же функционал (подключение к серверу, запросы данных, уведомления и т.п.). Каждый новый компонент (веб-интерфейс, плагины, библиотека автоматтизации) только увеличивал объем работ и тормозил развитие системы.

Когда мы начали работать над плагинами, мы решили что должны по максимуму облегчить жизнь разработчиков плагинов. В идеале, эти разработчики должны писать только свой код, беря все необходимое из наших библиотек. Все пришло к тому, что плагины должны работать через библиотеку автоматизации.

Бибилиотеку автоматизации мы изначально позиционировали как средство интеграции ЛЭРС УЧЕТ с другими системами и, по отношению к системе, она стояла как бы немного в стороне и ей уделялся минимум внимания. По сути, библиотека состоит из набора .Net-классов, некоторые из которых видимы через COM.

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

После долгих обсуждений, мы приняли решение что клиент, и все другие компоненты нашей системы (за парой исключений) должны работать с сервером через библиотеку автоматизации. Саму библиотеку было решено разделить на 2 части: .Net-классы и их COM-обвязку. Первую часть мы назвали “ЛЭРС фреймворк”, а второй оставили старое название - “Библиотека автоматизации”

Таким образом, библиотека автоматизации (точнее ее .Net-часть в виде фреймворка) становится ядром нашей системы и мы начинаем работать с сервером ЛЭРС УЧЕТ по одним правилам с другими программистами и администраторами. Когда мы закончим основные работы над фреймворком (это примерно через 2-3 месяца), его возможности будут гораздо большей, чем у библиотеки автоматизации.

На сегодняшний день мы реализовали примерно 40% от необходимого функционала фреймворка (только самое необходимое, без чего он не заработает). На фреймворк полностью переведен веб-интрефейс, имеющиеся плагины и часть основного клиента. К сожалению, мы не успеваем отразить эти изменения на COM-обвязку и документировать их до выпуска обновления.

Помимо самого создания библиотеки автоматизации мы усиленно перерабатываем ядро системы, чтобы оно хотя бы внешне (на уровне интерфейса фреймворка) соответствовало той модели, которую мы намерены получить через год. Например, в объекте учета будут явно выделены системы, у каждой из систем будут свои точки учета, энергоснабжающая организация и т.д. Все это делается для того, чтобы свести к минимуму будущие изменения в интерфейсе фреймворка и не доставлять проблемы сторонним разработчикам.

Само обновление по объему изменений в коде сопоставимо с обновлением с 2.хх на 3.хх. Все приходится тестировать заново, поэтому после выпуска обновления мы будем рекомендовать основной массе пользователей не торопиться с его установкой.

Часть вторая (короткая).

Создавая библиотеку автоматизации мы хотели, чтобы через нее можно было подключаться к серверам разных версий и делали все, для обеспечения их совместимости. Практика показала что это невозможно, если мы хотим выпускать обновления раз в 1-2 месяца. Если перейти на выпуск новой версии системы раз в год, как это делается в большинстве продуктов - пожалуйста. Варианты с увеличением стоимости системы для покрытия издержек мы решили даже не рассматривать.

Поскольку мы не можем обеспечить совместимость библиотеки с разными версиями системы, мы решили “привязать” библиотеку к системе - начиная с 3.03 она будет работать только с сервером такой же версии, как и сама библиотека (разумеется, через фреймворк с такой же версией). Это должно быть сделано в ближайшие несколько дней. Возможно, мы найдем способ избежать строго контроля версий, но пока рабочих идей нет…

Часть третья (ответы на исходные вопросы).

Чтобы минимизировать время простоя, лучше повременить с одновлением до 3.03, дождавшись публикации документации. Интерфейс у фреймворка и библиотеки будет практически одинаковый. Правки в интерфейсе самой библиотеки (и соответственно, в использующих ее скриптах) будут минимальны: в основном, идет переименование классов и методов. Логика работы библиотеки изменится мало.

Переход с JScript+COM на .Net откроет более широкие возможности для работы с системой - как я уже упоминал, мы с вами будем использовать один и тот же фреймворк на одних и тех же условиях. Если вы работаете с разными серверами - переход на .Net не решит проблемы с разными версиями серверов, т.к. фреймворк будет работать только с сервером такой же версии как и он сам.

Для перекачки данных между серверами разных версий мы добавили в состав системы веб-службы (для ее работы необходима установка веб-интерфейса). Она также работает со своим сервером через фреймворк, но ее интерфейс практически не меняется (совместимость интерфейсов доступа к данным поддерживать не в пример легче, чем интерфейсов редактирования объектов учета).

Для использования фреймворка на отдельном компьютере потребуется выполнить установку общих компонент ЛЭРС УЧЕТ. Как точно это будет называться в программе установки я пока сказать не могу - новая программа установки будет только через 1-2 дня :-):.

P.S. Спасибо, если дочитали до конца и не заснули ;).

Здравствуйте. Подскажите пожалуйста наиболее простой программный способ импорта данных ЛЭРС в свою базу данных?
Возможно ли, настроив источник данных ODBC к базе ЛЭРС, считать информацию за определенный период стандартными методами SQL?
Как работать с фреймворком Lers FW из-под delphi?

Структура нашей базы данных постоянно меняется, мы не рекомендуем работать с ней напрямую. Для импорта данных из ЛЭРС используйте Lers Framework.

Как работать с фреймворком Lers FW из-под delphi?

Используйте Delphi for .Net

Здравствуйте.
Спасибо за совет

Используйте > Delphi for .Net

, но только там описано, что

Начиная с версии 2009, поддержка Delphi.NET была прекращена… Для разработки под .NET предлагается Delphi Prism

Хочется немного уточнить… Подскажите пожалуйста, как, используя только Embarcadero® Delphi® XE или Embarcadero® C++Builder® XE, использовать Lers Framework? Или в используемых мной продуктах разработки в принципе не возможно создать приложение для работы с Lers Framework и нужно использовать C#, java, Delphi Prism и т.д. Может быть есть пример простейшего проекта для delphi?
За ранее благодарен.

Хочется немного уточнить… Подскажите пожалуйста, как, используя только Embarcadero® Delphi® XE или Embarcadero® C++Builder® XE, использовать Lers Framework? Или в используемых мной продуктах разработки в принципе не возможно создать приложение для работы с Lers Framework и нужно использовать C#, java, Delphi Prism и т.д. Может быть есть пример простейшего проекта для delphi?
За ранее благодарен.

Embarcadero® Delphi® XE и Embarcadero® C++Builder® XE не позволяют использовать .NET приложения.

Спасибо за интерес к нашему продукту.