Имя: Пароль:
1C
 
Подключение Com к MySQL в фоновом задании на Linux
,
0 Vigor06
 
04.09.15
14:35
Доброго дня!
Наша 1с-ка (Ут 10.3),серверный вариант,сервер 1с развернут на линуксе.
Есть необходимость подключаться регламентным заданием к базе MySQL и оттуда периодически забирать данные.
В тестовой обработке все нормально( ну еще бы,писалась и тестилась она на компутере под виндой). Но при выполнении данного кода в регл.задании выпадает ошибка "ошибка при вызове конструктора Com-объект". Как можно обойти это дело в наших условиях?
Спасибо


Процедура ЧтениеТасков() Экспорт
    Соединение = Новый COMОбъект("ADODB.Connection");
    ConnectionString = "DRIVER=MySQL ODBC 3.51 Driver;DATABASE=base;PWD=3r8y6c7v;SERVER=10.0.96.199;UID=1c;DataSource=sss;STMT=SET CHARACTER SET cp1251"; // это для MS SQL строка
    
    Попытка
        Соединение.Open(ConnectionString);
        Сообщить("Соединение осуществлено в "+ТекущаяДата());
    Исключение
        Возврат;
    КонецПопытки;
        
    ТекстЗапроса = "SELECT id,NAME,COMMENT,bugstatus_id, pin
    |FROM bugs
    |WHERE (bugstatus_id <>4 ) AND (ID>236)";
    НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
    НаборЗаписей.ActiveConnection = Соединение;
    НаборЗаписей.Open(ТекстЗапроса);
    
    Пока не НаборЗаписей.Eof() Цикл
    
        Задача = Задачи.ТехническиеЗадания.НайтиПоРеквизиту("IDCRM",НаборЗаписей.Fields("id").Value);
        Если НЕ ЗначениеЗаполнено(Задача) Тогда
            Описание =     НаборЗаписей.Fields("Comment").Value;
            мОписание  =Доработки.РазбитьСтроку(Описание,"&");
            нЗадача = Задачи.ТехническиеЗадания.СоздатьЗадачу();
            нЗадача.IDCRM = НаборЗаписей.Fields("id").Value;
            нЗадача.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ПинЗадач",НаборЗаписей.Fields("pin").Value);
            нЗадача.Важность = Перечисления.Важность.Средняя;
            нЗадача.Дата = ТекущаяДата();
            Если мОписание.количество()>1 Тогда
                нЗадача.Наименование =СтрЗаменить(мОписание[0],"$","");
                нЗадача.Описание = мОписание[1];
            Иначе                                                                 
                нЗадача.Наименование =СтрЗаменить(мОписание[0],"$","");
                нЗадача.Описание = мОписание[0];
            КонецЕсли;
            нЗадача.Записать();
                        
            
        КонецЕсли;
        НаборЗаписей.MoveNext();
    КонецЦикла;
    НаборЗаписей.Close();
    Соединение.Close();
    
КонецПроцедуры
1 Garikk
 
04.09.15
14:43
в линуксе нет COM
2 ДенисЧ
 
04.09.15
14:44
адо и пингвинукс?

Ви таки с дуба навернулись головой вниз или просто прикалываетесь?
3 Vigor06
 
04.09.15
14:45
так как быть то в данном случае,друзья?
4 UFO
 
04.09.15
14:49
Есть вероятность использования скрипта на перле.. А вот результат.. как то надо в 1с передать.. можно попробовать через текстовик, я думаю, или бинарный файл
5 UFO
 
04.09.15
14:49
Но я не в курсе как работает сервер 1С в линуксе
6 UFO
 
04.09.15
14:53
Если бы сервак 1С мог выполнить команду и забрать результат выполнения команды, то еще что то...
7 Garikk
 
04.09.15
14:54
незнаю не пользовался, но есть такая штука как "Внешний источник данных" и как я смотрю оно умеет mysql и написано что в линухе работает
8 don_Rumata
 
04.09.15
15:02
(6) сервак может так
9 Живой Ископаемый
 
04.09.15
15:04
10 don_Rumata
 
04.09.15
15:05
(4) А так да, какой-нить скрипт перловый или пхпэшный тащит что надо в файл, потом эска читает файл
11 Vigor06
 
04.09.15
15:29
спасибо))
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан