AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2009, 20:40   #1  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
Уважаемые форумчане подскажите вариант получения 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  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от anatol33 Посмотреть сообщение
3. 1С COM connection
Попытки не увенчались успехом, т.к. не нашел нужных методов для извлечения данных в Automation '1CV81 COM Connector Type Library'.COMConnector

Исходя из вышеописанного - рабочий вариант номер 1. Хочу Вашего подтверждения этого грусного вывода.
Скорее все-таки метод 3.
через Com connection можно вызывать процедуры из глобального модуля, насколько я помню.
Поэтому в 1С надо написать процедуру, а через com connection вызвать эту процедуру.

В 8.1 добавились сложности типа "неглобального общего модуля", а также разница между сервером и клиентом (Com connection работает на клиенте, насколько я помню). Но это уже вопросы скорее к 1Сникам.
__________________
полезное на axForum, github, vk, coub.
Старый 03.07.2009, 08:09   #3  
Aleksander is offline
Aleksander
Участник
 
82 / 10 (1) +
Регистрация: 30.04.2003
Адрес: Уссурийск
Зачем использовать 1С, если у вас есть Navision?
Старый 03.07.2009, 10:45   #4  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
В Navision управленческий учет, в 1С фискальный.
Старый 03.07.2009, 10:49   #5  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
mazzy спасибо за ответ.

Цитата:
Скорее все-таки метод 3.
через Com connection можно вызывать процедуры из глобального модуля, насколько я помню.
Поэтому в 1С надо написать процедуру, а через com connection вызвать эту процедуру.
Сложность в том, что непонятно как вызвать эту процедуру в Navision. Подходящих методов/классов не нашел, ниже список доступных.

Classes
COMConnector
IClusterInfo
IConnectionShort
IInfoBaseConnectionInfo
IInfoBaseInfo
IInfoBaseShort
IObjectLock
IPortRangeInfo
IRegUserInfo
IServerAgentConnection
IV8COMConnector
IV8COMConnector2
IV8COMConnector3
IWorkingProcessConnection
IWorkingProcessInfo
IWorkingServerInfo
Старый 03.07.2009, 14:42   #6  
_scorp__imported is offline
_scorp__imported
Участник
 
1 / 10 (1) +
Регистрация: 03.07.2009
Я вообще программировать в 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  
anatol33 is offline
anatol33
Участник
 
109 / 10 (1) +
Регистрация: 02.09.2008
_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();
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:54.