02.07.2009, 20:40 | #1 |
Участник
|
Уважаемые форумчане подскажите вариант получения on-line остатков из 1С в Navision, например на форму Поставщиков.
Рассматриваю следующие варианты стыковки: 1. Текстовый файл В 1С добавляется обработка "выгрузить остатки" и в Navision соответственно загрузить. On-line конечно условный, хотя при определенной снаровке можно его так обозвать. 2. ADO запрос к базе данных 1C Пишется SELECT к таблице регистров и вроде все хорошо, но как сообщили 1С-ники название таблиц в следующей версии может измениться и соответственно кирдык обработке. 3. 1С COM connection Попытки не увенчались успехом, т.к. не нашел нужных методов для извлечения данных в Automation '1CV81 COM Connector Type Library'.COMConnector Исходя из вышеописанного - рабочий вариант номер 1. Хочу Вашего подтверждения этого грусного вывода. Версия 1с 8.1, Navision 5.1 |
|
03.07.2009, 07:29 | #2 |
Участник
|
Цитата:
через Com connection можно вызывать процедуры из глобального модуля, насколько я помню. Поэтому в 1С надо написать процедуру, а через com connection вызвать эту процедуру. В 8.1 добавились сложности типа "неглобального общего модуля", а также разница между сервером и клиентом (Com connection работает на клиенте, насколько я помню). Но это уже вопросы скорее к 1Сникам. |
|
03.07.2009, 08:09 | #3 |
Участник
|
Зачем использовать 1С, если у вас есть Navision?
|
|
03.07.2009, 10:45 | #4 |
Участник
|
В Navision управленческий учет, в 1С фискальный.
|
|
03.07.2009, 10:49 | #5 |
Участник
|
mazzy спасибо за ответ.
Цитата:
Скорее все-таки метод 3.
через Com connection можно вызывать процедуры из глобального модуля, насколько я помню. Поэтому в 1С надо написать процедуру, а через com connection вызвать эту процедуру. Classes COMConnector IClusterInfo IConnectionShort IInfoBaseConnectionInfo IInfoBaseInfo IInfoBaseShort IObjectLock IPortRangeInfo IRegUserInfo IServerAgentConnection IV8COMConnector IV8COMConnector2 IV8COMConnector3 IWorkingProcessConnection IWorkingProcessInfo IWorkingServerInfo |
|
03.07.2009, 14:42 | #6 |
Участник
|
Я вообще программировать в Nav не умею, но попытаюсь Вам помочь, т.к. подключиться к 1С можно из любой программы используя Com.
1. Прежде всего на компьютере, где будет запускаться вызов COM клиента 1С, этом COM клиент должен быть установлен. Для проверки сделайте в реестре поиск по "v81.COMConnector" Если такой ProgId существует, то компонент зарегистрирован. 2. Вот пример кода из Аксапты как выполнять запросы в 1С. Код: str text; //В аксапте есть универсальный класс Com, через который можно создать любой Com-объект по его ProgId или CLSID. Думаю у вас должно быть что-то подобное. Com com1c, con, query, Result, Choose; ; //Создаем объект com1c = new Com("v81.COMConnector"); // Подключение к БД con = com1c.Connect("srvr=\"сервер\";ref=\"конфигурация\";Usr=\"пользователь\";pwd=\"пароль\";"); //Пишем запрос на синтаксисе 1С text = " ВЫБРАТЬ * ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица" + " ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц" + " ПО ФизическиеЛица.Ссылка = ФИОФизЛиц.ФизЛицо" + " ГДЕ ФизическиеЛица.Код <> \"000000001\""; // Создаем объект Запрос query = con.NewObject("Запрос"); query.Text(Text); // Выполнение запроса Result = Query.Execute(); //Открываем выборку запроса Choose = Result.Choose(); // Выборка результата выполнения запроса While (Choose.Next()) { //До полей справочника можно добраться через точку. И почему-то в аксапте к ним нужно обращаться как к методам, т.е. сос скобками на конце. Вот пример. //Choose.Код(); //Choose.ФАМИЛИЯ(); //Choose.ИМЯ(); //Choose.ОТЧЕСТВО(); //Choose.ДАТАРОЖДЕНИЯ(); //Choose.ИНН(); //Choose.СтраховойНомерПФР(); } |
|
03.07.2009, 16:58 | #7 |
Участник
|
_scorp_ спасибо за код, как вижу NAV немного беднее в средствах программирования COM
"v81.COMConnector" в NAV называется "1CV81 COM Connector Type Library" другого в списке доступных не нашел хотя в реестре Windows (regedit) "v81.COMConnector" есть Код: CLEAR(V7Connector); CREATE(V7Connector); V7Connector.Connect('Srvr="DBASE";Ref="Company";Usr="Usr"'); - это работает, 1С коннектится V7Connector. Методы .... и тут проблема, не знаю как обратиться к методу Text или Exec или еще как нибуть по F5 нету ничего похожего вот это не могу написать в NAV Код: query.Text(Text); // Выполнение запроса Result = Query.Execute(); |
|