• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как создать простейшего клиента на delphi для доступа к обектам Лоцман API

Автор pga, 27.07.11, 10:33:28

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

pga

Народ помогите новичку .
Дайте простейший пример как в delphi подключится через com и  извлечь данные
методами ЛоцманAPI в посредством объекта TClientDataSet.

Цель не создать плагин, но написать свой элементарный клиент - навигатор по дереву изделия.

Заранее благодарен.

l2qwe

Пользователь YorikER где то на форуме описывал об их опыте создания собственного клиента и его эксплуатации на предприятие.
И вот ссылка http://www.infnt.ru/default.html
Там есть библиотека для delphi "Visual Loodsman For Delphi"

Maxxx

Нужно просто подключится к COM серверу ЛОЦМАН. Например через socket или DCOM connection. А затем вызывать методы сервера, например - SocketConnection.AppServer.ConnectToDBEx(DBName, UserName, stPassword ,inKod, stError);

pga

При попытке подключении пакета LoodsmanDataAccess.bpl . Ругается на отсутствие какого то пакета - dsnapcon70.bpl. Инсталлятор  VisualLoodsmanForDelphi отработал нормально.

Что бы это значило ?.

l2qwe

Цитата: pga от 27.07.11, 15:09:16
При попытке подключении пакета LoodsmanDataAccess.bpl . Ругается на отсутствие какого то пакета - dsnapcon70.bpl. Инсталлятор  VisualLoodsmanForDelphi отработал нормально.

Что бы это значило ?.

Версия Delphi?

pga


l2qwe

dsnapcon70.bpl должен находится тут C:\Windows\System32, если нету то скорее всего Delphi урезанный или установлен не полностью.

YorikER

Библиотека VisualLoodsmanForDelphi к сожалению недописана до конца, как планировалось... В настоящий момент перешли на Delphi 2010 и пишем свой DataSnap сервер, как надстройку над СП Лоцмана для интерфейса через Интернет. Для программирования в Delphi 2010 рекомендую с помощью команды меню Componnent -> Import Component подключиться к серверу приложений и создать файл описания LoodsmanServerApplication_TLB.pas, в котором будут описаны компонент TMainSystem и интерфейс IMainSystem. Подробное описание методов сервера приложений находится в файле ЛОЦМАН API.CHM... Запросите его у АСКОНА если у Вас его нет. А дальше работайте с СП и получайте наборы данных в TClientDataSet... Успехов...

pga

#8
Спасибо за ответ, уважаемый YorikER. Все что вы предлагаете в Delphi 7 тоже доступно LoodsmanServerApplication_TLB.pas, получился. И доступ к базе имеется. Но вот как полученный объект дальше обрабатывать, чтобы не связываться с XML форматом, пока не пойму . Вроде объект по умолчанию возвращается в двоичной форме , но куда его передать в делфи, чтобы получить привычный датасет и работать напрямую с именами полей  , пока не пойму.

Собственно мне не понятно как соединить объект возвращаемый  Лоцман API с  TClientDataSet

YorikER

приблизительно так ...
var
  cds: TClientDataSet;
  MS: TMainSystem;
  stEM, inRC: OleVariant;
begin
  // пропустим функции соединения с сервером приложений
  try
    cds:=TClientDataSet.Create(nil);
    try
      cds.Data:=MS.GetLinkedFast(12137, 'Состоит из ...', False, inRC, stEM);
      // где:
      // 12137 - уникальный идентификатор объекта базы данных (щелкните правой кнопкой мыши
      // на любом объекте дерева объектов в ЛОЦМАН-Клиенте и выберите команду Свойства
      // в нижней строчке будет отображено целое число - идентификатор)
      // 'Состоит из ...' - наименование связи, по которой надо вернуть список объектов
      // False - просмотр по прямой связи (True - по обратной)
      // inRC, stEM - соответственно код ошибки и сообщение об ошибке
      // в TClientDataSet будет возращен набор данных, описанный в ЛОЦМАН API.CHM
      // далее делайте с ним, что хотите
    except
    end;
    if inRC<>0 then ShowMessage(stEM); // если ошибка отобразить сообщение
    else
    begin
      ...
    end;
  finally
    cds.Data:=null;
    cds.Free;
  end;
end;

pga

Спасибо YorikER. Так все просто оказывается. Дальше все более менее ясно.
Если интересно, передо мной стоит задача: дерево продукции из Лоцмана реплицировать в 1С УПП .
Первая попытка была писать все непосредственно в 1С. Из 1С доступ к библиотеке лоцмана попроще , там готовй Com объект есть. А вот получить данные в табличном представлении (в виде рекордсета) как в дельфи напрямую не получается. Пришлось разбирать  XML-узлы. В принципе получилось, но очень коряво и медленно. Поэтому решил пойти другим путем - написать в дельфи свою  библиотеку  - посредник между 1С и Лоцман , которая   и будет поставщиком нужных данных для репликации НСИ по дереву продукции.

YorikER

Советую почитать здесь http://www.delphi2009.ru/Delphi_2010_DataSnap_RUS.pdf как написать свой сервер со своими методами. Скорее всего Вам будет неудобно в среде 1С писать библиотеку обработки методов Лоцмана... Можно написать свой сервер, отдать ему всю обработку и возвращать тот набор данных, который Вам нужен... Повесите свой сервер как надстройку рядом с СП Лоцмана и вперед...

pga

Я в 1С и не собирался библиотеку писать. Предполагаю. писать DLL на Delphi. В 1С ее использовать.Вполне возможно свой сервер тоже написать. Война план покажет. Спасибо за ссылку.