Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Данные из восьмерки "наружу" (число прочтений - 7265 )
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Данные из восьмерки "наружу"
05. Декабря 2012 :: 05:58
Печать  
Есть задача, которая требует регулярного (скажем, 1 запрос раз в 10..30 минут) получения оперативных данных из базы.

Данные требуются вовне, и даже на совсем другом компе.
Пока вижу такие варианты:
1) ТАМ (где требуются данные) создать объект V8.Automation, подключиться к базе и вызвать функцию.
2) ТАМ выполнить SQL-запрос (скажем, вызвать хранимку, которая вернет то, что нужно)

Вариант 1) плох тем, что если я правильно помню, ТАМ потребуется установки 1С8
Вариант 2) плох тем, что а) заколупаешься писать хранимку, разыменовывая ручками имена полей и б) получивается отделение логики от базы и даже дублирование этой логики (а логика может со временем поменяться).

Есть еще небольшой нюанс в том, что данные только запрашиваются и должны быть видны только запрашиваемые данные - но это решается обращением к прокси-базе 1С (которая уже обращается за данными в "живую") в первом случае и созданием SP-хи в отдельной базе (а лучше - на отдельном SQL-сервере) во втором.

Подозреваю, что можно как-то использовать WEB-сервисы осьмерки и/или тонкого клиента (хотя последнее - все же вряд ли, разве что у тонкого клиента есть какой-то COM-объект, для подключения, не требующий всю 1Ску).

Что еще можете предложить?
  
Наверх
 
IP записан
 
kuntashov
Full Member
***
Отсутствует


1С:Специалист

Сообщений: 130
Местоположение: Саратов
Зарегистрирован: 13. Июня 2006
Пол: Мужской
Re: Данные из восьмерки "наружу"
Ответ #1 - 05. Декабря 2012 :: 06:18
Печать  
Для клиент-серверной версии я бы рекомендовал сделать регламентное задание в базе-источнике, которое бы с необходимой периодичностью выгружала бы данные в какую-либо базу (MS SQL, MySQL, PostgreSQL,...).

Ну а ТАМ также с какой либо периодичностью из этой таблицы данные забирать.

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

Плюс, не потребуется расходовать лишнюю лицензию 1С и не надо ставить 8ку ТУДА.

С веб-сервисами инфраструктура сложнее получится, плюс (точнее минус) лицензия клиентская будет нужна, как и при использовании внешнего соединения.

С тонким клиентом - не получится, он не для этих целей, для реализации внешнего соединения свой клиент - comctrl.dll называется.
  

С уважением, &&Александр Кунташов&&http://kuntashov.ru/
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Данные из восьмерки "наружу"
Ответ #2 - 05. Декабря 2012 :: 06:20
Печать  
Характер данных таков, что они АБСОЛЮТНО зависят от времени (тарификация, короче).

Тогда периодичность будет 1 раз в минуту
короче, сам себе создам нагрузку на пару порядков превышающую реальную.

Хотя, регламентным заданием выгружать готовые данные в скулевую базу, а оттуда забирать уже по запросу - мысль здравая.
  
Наверх
 
IP записан
 
kuntashov
Full Member
***
Отсутствует


1С:Специалист

Сообщений: 130
Местоположение: Саратов
Зарегистрирован: 13. Июня 2006
Пол: Мужской
Re: Данные из восьмерки "наружу"
Ответ #3 - 05. Декабря 2012 :: 06:36
Печать  
Насчет нагрузки, как я понимаю - это касалось предложения по плану обмена? Так я написал, что характер данных не знаю Улыбка

  

С уважением, &&Александр Кунташов&&http://kuntashov.ru/
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Данные из восьмерки "наружу"
Ответ #4 - 05. Декабря 2012 :: 06:38
Печать  
голосую за веб-сервис
  • на стороне сервера вся инфраструктура уже есть ее надо только задействовать
  • на стороне клиента - все зависит от того на чем он делается. Если есть некоторое подобие ws-прокси, то тоже все достаточно примитивно.
  • одна лицензия - для isapi расширения веб-сервера вообще не жалко (или все таки лицензий нужно по подключениям к веб-серверу)
  

1&&2&&3
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Данные из восьмерки "наружу"
Ответ #5 - 05. Декабря 2012 :: 06:47
Печать  
kuntashov писал(а) 05. Декабря 2012 :: 06:36:
Насчет нагрузки, как я понимаю - это касалось предложения по плану обмена? Так я написал, что характер данных не знаю Улыбка



План обмена неприемлим, ибо тарификация. т.е. физического изменения данных в базе, вроде как и нет - но данные наружу постоянно меняются.

Разумность в выгрузке готовых (рассчитанных) данных в отдельную скулевую базу в том, что не надо мучаться с текстом запроса хранимки и поддержанием логики этого запроса в соответствии с логикой внутри базы.
Но нагрузка там тоже будет огого.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Данные из восьмерки "наружу"
Ответ #6 - 05. Декабря 2012 :: 10:44
Печать  
По новой информации - ТАМ вообще линукс.
Т.е., так понимаю, внешнее соединение нафиг отпадает?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Данные из восьмерки "наружу"
Ответ #7 - 07. Декабря 2012 :: 01:05
Печать  
Я такие задачи решал прямым SQL-запросом:
В БД 1С (или в любой БД-посреднике) добавлено нужное количество не1С-овых таблиц, и обе ИС периодически их мониторят и правят.
Т.е. и 1С следит за изменением для прочтения входящих данных и другая истема периодически сканит таблицы на нужные данные.
А уж как организовать структуру этих таблиц - это уже от задачи зависит.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Данные из восьмерки "наружу"
Ответ #8 - 07. Декабря 2012 :: 03:22
Печать  
Пока остановился на 2х вариантах:

1) если не будет создавать особую нагрузку - регламентное задание в базе подготавливает данные и сваливает в таблицу, из которой внешка будет забирать.

2) создать вьюхи для необходимых таблиц, сделать хранимую процедуру, в хранимке повторить логику базы.
Тут только остается вопрос перегенерации вьюх (для паранойи).


Сначала попробую первый - и будем посмотреть.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Данные из восьмерки "наружу"
Ответ #9 - 27. Декабря 2012 :: 06:59
Печать  
Возвращаясь к своим баранам:

Ни у кого нет под рукой примера создания ADO(?)-соединения и выполнения запроса?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Данные из восьмерки "наружу"
Ответ #10 - 27. Декабря 2012 :: 08:01
Печать  
адо, откуда куда ?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Данные из восьмерки "наружу"
Ответ #11 - 27. Декабря 2012 :: 08:11
Печать  
Satans Claws писал(а) 27. Декабря 2012 :: 06:59:
Возвращаясь к своим баранам:

Ни у кого нет под рукой примера создания ADO(?)-соединения и выполнения запроса?

Код
Выбрать все
ДатаЛинк = Новый COMОбъект("DataLinks");
Соединение = Новый COMОбъект("ADODB.Connection");
ДатаЛинк.PromptEdit(Соединение);
Если Не ПустаяСтрока(Соединение.ConnectionString) Тогда
	Соединение.CursorLocation = 3;
	Соединение.Open();
	рс = Соединение.Execute(ТекстЗапроса);
	ADOUtils = Новый("AddIn.GameWithFire.ADOUtils");
	тз = ADOUtils.ADORecordsetВТаблицуЗначений(рс);
	тз.ВыбратьСтроку();
КонецЕсли; 


  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Данные из восьмерки "наружу"
Ответ #12 - 28. Декабря 2012 :: 05:20
Печать  
Eprst писал(а) 27. Декабря 2012 :: 08:01:
адо, откуда куда ?


Из 1С8 прочитать/данные в табличку MS-SQL.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Данные из восьмерки "наружу"
Ответ #13 - 03. Февраля 2014 :: 13:30
Печать  
Немного некропостинга:

если поднять WEB-сервис (в моем случае - принимающий данные извне), то как будет выглядеть отправка данных с отправляющей стороны?
Я правильно понимаю. что это будет банальный POST-запрос с данными?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Данные из восьмерки "наружу"
Ответ #14 - 03. Февраля 2014 :: 14:39
Печать  
Да.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать