Ваши комментарии
Ага ,написать на ассемблере систему обработки базы данных с сотней разных рабочих мест и интерфейсов для них. Наверное можно. Если ты работал на нем десятилетиями и уже накопил кучу шаблонов на каждый случай.
Если нет - то приходится работать в среде, где другие для тебя создали эти шаблоны и выложили их на всеобщее пользование. Иначе будешь писать шаблоны сам до второго пришествия.
У меня была программа прекрасно рабjтающая на C# с SMART. Но начальник захотел сделать такие в ней изменения, что без кучи готовых VCL компонентов я буду год работать. Из избушки сделать небоскреб. Все-таки Delphi дает немалое ускорение в разработке, если нужен сложный и многоуровневый интерфейс. Придется изучать доки от Delphi.
Ну то есть мне тоже надо написать свой коннектор, я правильно понимаю? Учитывая что работа одноразовая, сильно не хочется изобретать велосипед. Наверное быстрее организовать обмен данных между Delphi и SMART через готовый MS SQL коннектор. Но пока время есть, еще поэкспериментирую, почитаю доки по Delphi. Обычно с OLE у меня проблем d Delphi не было никогда. Все методы работали без извращений и без обращения к переменным через интерфейс. Но в этом случае видимо опались сложные OLE- объекты. Так просто с ними не поработаешь.
Этот код не работает. Программа на Delphi не видит такого OLE объекта, выдает ошибку. Был бы рабочий пример, я бы понял, как правильно подключить библиотеку для этого кода чтобы этот код сработал. Примеры сразу отбрасывают кучу вопросов. А так остается эксперименты и чтение документации, работа через созданный ActiveX.
Нет готовый модуль мне не нужен. Просто в c# я нашел кусок кода который работал и прекрасно получал данные с документа SMART.
var connector = new Cleverence.Warehouse.StorageConnector();
connector.SelectCurrentApp("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
var Document = connector.GetDocument('123');
На Delphi похожий код не проходит. Создаю элемент ActiveX из библиотеки Terminal.Connector.
Помещаю на форму. То есть по идее создаю новый экземпляр, так же как и в C# командой new. Методы и функции у него те же самые. Но теперь работают только первые две строчки.
На третьей ругается, что несовместимы типы IDispatch и String. То есть так же как в C# я к документу обратиться уже не могу. Сейчас сижу разбираюсь как сделать из строки переменную понятную функции GetDocument.
Там описаны общие методы. То есть придется изучать, как в Delphi например подключаться через REST API. Экспериментировать, идти методом проб и ошибок. А хотелось бы примеров уже готовых программ или работающего кода как из Delphi прочитать какое-то поле в конкретном документе на сервере SMART.
На Visual Studio C# я такие программы нашел. Но к сожалению разработанные для него dll не работают как надо в Delphi. Если готовых примеров нет - придется делать обмен данными через MS SQL. Наверное так будет быстрее всего. К счатью хотя коннектор к MS SQL не надо писать.
Спасибо заработало, а то уже весь интернет перерыл в поисках примера. :)
заменил var - теперь строка выглядит так:
Cleverence.Warehouse.DocumentItemCollection DocumentItems = document.CurrentItems;
Ничего не изменилось
Мне надо получить все строки документа с сервера Smart Mobile в свою программу C#.
var connector = new Cleverence.Warehouse.StorageConnector();
connector.SelectCurrentApp("http://pck017:10501/termo");
var document = connector.GetDocument("123");
Шапку документа читает, тут все порядке.
Дальше нашел кусок кода который должен из документа давать возможность получить данные строки
var DocumentItems = document.CurrentItems;
foreach (var documentItem in DocumentItems)
{
string packingId = documentItem.PackingId;
string ShKod = documentItem.GetField("ШтрихКод");
}
Но кусок оказался нерабочий. Ошибки я привел выше. Как правильно получить все строки из документа чтобы потом занести их в свою базу?
Сервис поддержки клиентов работает на платформе UserEcho
Ну я тоже начинаю подумать, что надо переходить на 1C. Там тоже готовых шаблонов, выложенных в сеть навалом, как и в Delphi. И форумы прекрасные. Но пока пугает то, что придется заново все изучать, с нуля.