Переключение на Главную Страницу Страницы: [1] 2 3 4 ОтправитьПечать
Очень популярная тема (более 25 ответов) Универсальные интерфейсы загрузки/выгрузки данных (число прочтений - 26954 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Универсальные интерфейсы загрузки/выгрузки данных
15. Июля 2008 :: 08:35
Печать  
В продолжение тем
Коллекции в 1С++ ( http://www.1cpp.ru/forum/YaBB.pl?num=1215152763/0 )
и 1sqlite ( http://www.1cpp.ru/forum/YaBB.pl?num=1214205575/251#251 )

предлагаю в этой ветке обсуждать универсальные интерфейсы выгрузки / загрузки данных.

Сейчас в 1sqlite и icpp 3.0 реализованы похожие интерфейсы для загрузки произвольных данных на базе CValue.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #1 - 15. Июля 2008 :: 08:40
Печать  
kms писал(а) 15. Июля 2008 :: 08:21:
artbear писал(а) 15. Июля 2008 :: 04:48:
Я пока что предлагаю добавить хотя бы ldrDone, без него, например, не сделаешь нормальную выгрузку в таблицу значений / список значений на форме, т.к. негде вернуть флаг Refresh и обновить элемент после загрузки данных.

А.
Зачем, говоришь нужен Done в интерфейсе выгрузки?
Может быть, перенести обсуждение в отдельную ветку?

В ИТЗ::Выгрузить есть метод UnloadToVT - выгрузка ИТЗ в ТаблицуЗначений.
Данный метод вроде бы умеет нормально работать с ТЗ на форме, т.е. во время загрузки данных в подобную ТЗ не происходит постоянной тормозной перерисовки данных.
Вроде этой твой код Улыбка твои отпечатки остались.

Т.е. перед выгрузкой запрещается автообновление ТЗ на форме, а после выгрузки разрешается.
Т.е. первую часть выполняем в обработчике загрузки в ldrInit, а для второй нужна операция завершения ldrDone, без нее не удастся разрешить подобную проблему.

В принципе, я уже добавил ldrDone к нашему общему интерфейсу, все нормально работает.
Тем более, что и вы с Сашей также пришли к этому завершающему методу Done.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #2 - 15. Июля 2008 :: 09:06
Печать  
artbear писал(а) 15. Июля 2008 :: 08:35:
предлагаю в этой ветке обсуждать универсальные интерфейсы выгрузки / загрузки данных.


По поводу...
Можно вопрос чайника?
Предположим есть com-сервер, у которого есть метод возвращающий ссылку на массив
return @array
Нет ли способа получить как либо этот массив (ИТ или ТЗ) в среде 1С?
В массиве только простые типы.
Или только в цикле поэлементно?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #3 - 15. Июля 2008 :: 09:15
Печать  
kiruha писал(а) 15. Июля 2008 :: 09:06:
Предположим есть com-сервер, у которого есть метод возвращающий ссылку на массив
return @array
Нет ли способа получить как либо этот массив (ИТ или ТЗ) в среде 1С?
В массиве только простые типы.
Или только в цикле поэлементно?

Пока никак Печаль
Но очень скоро вполне можно будет.
Развернутый пример дать можешь?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #4 - 15. Июля 2008 :: 09:45
Печать  
artbear писал(а) 15. Июля 2008 :: 09:15:
kiruha писал(а) 15. Июля 2008 :: 09:06:
Предположим есть com-сервер, у которого есть метод возвращающий ссылку на массив
return @array
Нет ли способа получить как либо этот массив (ИТ или ТЗ) в среде 1С?
В массиве только простые типы.
Или только в цикле поэлементно?

Пока никак Печаль
Но очень скоро вполне можно будет.
Развернутый пример дать можешь?


Так как раз думаю. Появилась идея написать DCOM-сервер на FoxPro - тогда запросы можно выполнять
на физическом сервере.
Непонятно только как возвращать данные - через возврат простых типов долго,  через создание временных
файлов ДБФ - лучше, но не настолько...


P.S>В принципе же наверно лучше универсальный способ, не привязанного к конкретному com-серверу ?
Или просто нужен для тестов?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #5 - 15. Июля 2008 :: 10:01
Печать  
У COM есть какой-то универсальный интерфейс для возврата массивов/коллекций, правда, названия не помню.
Можно в 1С++ сделать спец.оболочку для этого интерфейса. Это оболочка/прокси-объект и реализует необходимую работу по получению данных из этого интерфейса.
Нужно просто вспомнить название интерфейса и как с ним работать.
По идее не должно быть сложно Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #6 - 15. Июля 2008 :: 10:09
Печать  
artbear писал(а) 15. Июля 2008 :: 10:01:
У COM есть какой-то универсальный интерфейс для возврата массивов/коллекций, правда, названия не помню.
Можно в 1С++ сделать спец.оболочку для этого интерфейса. Это оболочка/прокси-объект и реализует необходимую работу по получению данных из этого интерфейса.
Нужно просто вспомнить название интерфейса и как с ним работать.
По идее не должно быть сложно Улыбка


Было бы супер.  Улыбка
Мир com-ов достаточно обширен, даже 1СV8:)

Пример кода(из докуметации) .
На сервере FoxPro
Цитата:
Вы можете возвращать массивы, как элементы некоторого класса, при помощи специального оператора @.Возврат массивов из методов Класса позволяет использовать технологиюкомпонент Visual FoxPro COM, когда используемые компоненты написаны надругих языках программирования:  Visual Basic / Visual C++. В этомслучае используется ключевое слово IMPLEMENTS при описании класса COM.

..используется прямая адресация элементов массива...

Код
Выбрать все
DEFINE CLASS t1 AS custom OLEPUBLIC
DIMENSION Arrayelement[3]
FUNCTION GetMyArray() AS array
   this.Arrayelement[1] = 1
   this.Arrayelement[2] = 2
   this.Arrayelement[3] = 3
   RETURN @THIS.Arrayelement
ENDFUNC
ENDDEFINE 


Вызов в Fox
Код
Выбрать все
ComServer=CreateObject("myserver.t1")
myArray=ComServer.GetMyArray()
?myArray[1]
?myArray[2]  



В прикрепленном файле реализация этого простого сервера.
Чтобы заработал нужно зарегить
myserver.exe /regserver
Убрать регистрацию myserver.exe /Unregserver
« Последняя редакция: 15. Июля 2008 :: 11:37 - kiruha »  

ComServer.rar ( 17 KB | Загрузки )
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #7 - 15. Июля 2008 :: 11:28
Печать  
Ну и готовый примерчик передачи COM-коллекции не помешал бы Улыбка
Типа нажал, запустил и т.д.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #8 - 15. Июля 2008 :: 11:36
Печать  
В icpp реализован еще один прокси-объект для загрузки в табличную часть документа.
Теперь метод ИТЗ::Выгрузить практически выродился и стал очень маленьким и простым, все на интерфейсах.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #9 - 15. Июля 2008 :: 11:39
Печать  
artbear писал(а) 15. Июля 2008 :: 11:28:
Ну и готовый примерчик передачи COM-коллекции не помешал бы Улыбка
Типа нажал, запустил и т.д.


Приложил выше постом.
Там возвращается простой массив, но ничто не мешает выполнить любой запрос -
т.е. в реализации особых сложностей нет.

Приложен exe вместе с проектом на Fox
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #10 - 15. Июля 2008 :: 11:45
Печать  
kiruha писал(а) 15. Июля 2008 :: 11:39:
Приложен exe вместе с проектом на Fox

А где ты Фокс собираешь? 9 версию где можно скачать нахаляву?
Халяву можно в личку написать Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #11 - 15. Июля 2008 :: 11:49
Печать  
Вот про COM-коллекции хорошо расписано
http://www.rsdn.ru/article/com/comcoll.xml
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #12 - 15. Июля 2008 :: 11:55
Печать  
kiruha писал(а) 15. Июля 2008 :: 11:39:
Приложен exe вместе с проектом на Fox

При запуске ехе ругается на невозможность найти рантайм-библиотеку Фокса Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #13 - 15. Июля 2008 :: 12:01
Печать  
artbear писал(а) 15. Июля 2008 :: 11:55:
kiruha писал(а) 15. Июля 2008 :: 11:39:
Приложен exe вместе с проектом на Fox

При запуске ехе ругается на невозможность найти рантайм-библиотеку Фокса Печаль


Chieftain http://www.1cpp.ru/forum/YaBB.pl?num=1210677779/25#25

Компилирую в Fox.
Где в сети полный - не знаю - я купил диск - но он много места - вариант от Chieftain позволяет редактировать
проекты?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Универсальные интерфейсы загрузки/выгрузки дан
Ответ #14 - 15. Июля 2008 :: 12:05
Печать  
artbear писал(а) 15. Июля 2008 :: 11:55:
kiruha писал(а) 15. Июля 2008 :: 11:39:
Приложен exe вместе с проектом на Fox

При запуске ехе ругается на невозможность найти рантайм-библиотеку Фокса Печаль

Нашел библиотеки.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 4
ОтправитьПечать