Имя: Пароль:
1C
1С v8
1с82 как обратиться к StorHauz через OLE
0 Aleks_ST
 
26.07.12
16:15
Добрый день!
Подскажите в чем ощибка при обращении к StorHauz через OLE .
Пишу:

OLEОбъект="";
OLEОбъект=Новый COMОбъект("Sh4Ole.Sh4App");
Открыта=OLEОбъект.DBLogin();
Если Открыта = 0 Тогда
   ЕстьПодключение = Истина;
Иначе
   Предупреждение("Ошибка при подключении!");
   ЕстьПодключение = Ложь;
КонецЕсли;

Пишет МетодОбъекта не обнаружен DBLogin. Но в инструкции к StorHauz именно через эти команды идет подключение к базе??? При работе с 1с7 все эти команды работали?? Подскажите в чем ошибка
1 СноваЗдорова
 
26.07.12
16:17
Давай инструкцию сюда
2 Serginio1
 
26.07.12
16:43
Может
Открыта=OLEОбъект.DBLogin;
3 Aleks_ST
 
26.07.12
17:30
Инструкция  от StorHauz:
--------------------------------------------------------------------------------------------------------------

  Описание процедур

-
   Подцепиться к базе данных     0 -OK  <>0 код ошибки.
    function  DBLogin: integer ; safecall;


   function SetServerName (const ServName:WideString ): integer;  safecall;
   для установки названия сервера перед вызовом DBLoginEx
             Формат строки:  
         [S]:p[N или T]a[n1]t[n2],
           где S - имя сервера
           pN    - протокол NetBios
           pT    - протокол TCP/IP
           a[n1] - номер адаптера
           t[n2] - таймаут в мсек.
         Пример:   'SDBSERV:pTa3t1000'


   Подцепиться к базе данных без вызова формы логина
   0 -OK  <>0 код ошибки.
    function  DBLoginEx (const UserName, PassWord: WideString): integer ; safecall;

  Отцепиться от базы данных }
    procedure DBLogout;    safecall;

  Подцеплена ли БД  0 - подцеплена  <> 0 - код ошибки }
    function  DBConnected: integer; safecall;

  Возвращает версию базы данных }
    function GetDbVersion: WideString; safecall;

  Возвращает версию DLL }
    function GetVersion:  WideString; safecall;

  Возвращает Текущий тип учета 0-учет 1-спец учет}
    function GetSysFlag: integer;  safecall;

  Максимальное число одновременно открытых запросов }
    function MaxQueryCount: integer; safecall;

  Закрытие запроса меняет флаг used на False
    function CloseQuery (IndQuery: Integer) :integer; safecall;

  После любой операции можно посмотреть код ошибки и сообщение }
    function  GetExcMessage: WideString; safecall;   //  сообщение
    function  GetExcCode: integer; safecall;         //  код
4 Aleks_ST
 
26.07.12
17:35
Спасибо,Serginio1, действительно правильно было написать: Открыта=OLEОбъект.DBLogin;, без()
5 Serginio1
 
26.07.12
17:47
(4) Хотя странно, но по описанию DBLogin это функция. Кстати для интереса можешь в отладчике посмотреть все свойства.
Или посмотреть тлб библиотеки. Просто в 7 ке свойсва и методы одинаково вызывались
6 Михаил Козлов
 
26.07.12
17:50
4 года назад делал обработку для загрузки документов из СторХауза в 1С (8.1).
Она, правда, специфическая. Могу прислать - пришлите на мыло (в профиле).
7 Aleks_ST
 
26.07.12
18:18
Подцепился к базе, теперь не работает выборки из бызы:
ГруппыКонтр = OLEОбъект.CorrTree();    
Пока OLEОбъект.EOF(ГруппыКонтр) <> 1 Цикл
   Если ( (Число(OLEОбъект.ValByName(ГруппыКонтр,"1.101.1.0")) = 1 ) ИЛИ (НайтиГруппуКонтрагент(Строка(OLEОбъект.ValByName(ГруппыКонтр,"1.101.2.0"))) <> "" ) ) Тогда
       Сообщение = "";
       Сообщение = Сообщение+" Контрагент с наименованием :: " + Строка(OLEОбъект.ValByName(ГруппыКонтр,"1.101.3.0"));
       Если НайтиГруппуКонтрагент(Строка(OLEОбъект.ValByName(ГруппыКонтр,"1.101.1.0"))) <> ""  Тогда
           Сообщение = Сообщение + "        УЖЕ СУЩЕСТВУЕТ ";
       Иначе
           
           НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
           НоваяГруппа.Наименование = Строка(OLEОбъект.ValByName(ГруппыКонтр,"1.101.3.0"));
           НоваяГруппа.sh_rid = Строка(OLEОбъект.ValByName(ГруппыКонтр,"1.101.1.0"));
           Если Строка(OLEОбъект.ValByName(ГруппыКонтр,"1.101.2.0 ")) <> "" Тогда
               РодительКонтрагент = НайтиГруппуКонтрагент(Строка(OLEОбъект.ValByName(ГруппыКонтр,"1.101.2.0 ")));
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
КонецЦикла;
инструкция по
Дерево корреспондентов
    function CorrTree: integer; safecall;

                  1.101.1.0   уникальный идентификатор .Всегда есть запись с
                        (1.101.1.0) = 0, (1.101.2.0) is NULL - корень для складов
                        (1.101.1.0) = 1, (1.101.2.0) is NULL - корень для корреспондентов
                  1.101.2.0  ссылка на предка
                        (1.101.2.0) = 0 ссылка на группу CКЛАДЫ
                  1.101.3.0   наименование группы
8 Aleks_ST
 
26.07.12
18:59
Добрый день, Михаил Козлов!
Буду рад любой подсказки. На ваш адрес написал письмо, с просьбой выслать обработку.
Заранее благодарю.
9 Aleks_ST
 
26.07.12
23:26
Ребята, помогите, не проходит у меня обработка OLE. Подключилась нормально, т.е. после исправление и используя обработку Михаила

OLEОбъект="";
OLEОбъект=Новый COMОбъект("Sh4Ole.Sh4App");
Открыта=OLEОбъект.DBLogin
Подключение прошло, но выборки ни какой не делает:


 IndQuery = OLEОбъект.CorrFullList();//** получаю IndQuery =0,
                      //**  ошибка не выдается, но ничего не делается

    Если IndQuery < 0 Тогда
       Сообщить(OLEОбъект.GetExcMessage());
    Иначе
      ПОКА OLEОбъект.EOF(IndQuery) <> 1 Цикл
       статус = OLEОбъект.ValByName(IndQuery,"0.102.2.0");
           Если OLEОбъект<>0 Тогда
               новСтр = Контрагенты.Добавить();
           КонецЕсли;
           OLEОбъект.Next(IndQuery);
       КонецЦикла;
         OLEОбъект.CloseQuery(IndQuery);
   КонецЕсли;
Основная теорема систематики: Новые системы плодят новые проблемы.