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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.04.2003, 18:39   #1  
Marina is offline
Marina
Участник
 
3 / 10 (1) +
Регистрация: 09.04.2003
Адрес: Канада
? Запуск dataport
Можно ли запустить определенный датапорт вне программы, например из bat файла?

Спасибо за ответ.
Старый 09.04.2003, 20:22   #2  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
нет нельзя. датапорт - это внутренний объект navision, интерпретируется внутренними средствами клиента. если тебе нужен доступ к данным navsion то юзай c\front либо c\odbc
Старый 10.04.2003, 12:23   #3  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Но если очень хочется, то можно :)
Если речь идет просто о том, чтобы выполнить некоторый объект из командной строки, то это возможно. Правда не стандартными средствами Attain (я их по крайней мере не знаю), а средствами WSH (Windows Script Host), который является альтернавтивой bat-файлам для windows. С его помощью можно, в том числе, и управлять windows-приложениями путем посылки им сообщений.

В прикрепленном файле содержится такой пример.

Аналогичным образом можно выполнять и другие действия, в том числе и запускать датапорты.
Старый 10.04.2003, 12:33   #4  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Сохранить в файле с расширением js.
PHP код:
var WshShell WScript.CreateObject("WScript.Shell");

// Запустить attain
WshShell.Run("fin.exe",5);
WScript.Sleep(5000);
WshShell.SendKeys("{ENTER}");
WScript.Sleep(300);

// Открыть object-дизайнер
WshShell.SendKeys("+{F12}");
WScript.Sleep(300);

// Найти форму 1
WshShell.SendKeys("%m");
WScript.Sleep(300);
WshShell.SendKeys("^F");
WScript.Sleep(300);
WshShell.SendKeys("1");
WScript.Sleep(300);
WshShell.SendKeys("{ENTER}");
WScript.Sleep(300);

// Запустить форму
WshShell.SendKeys("%R");
WScript.Sleep(300);

// Перемещаться по полям
WshShell.SendKeys("{TAB}");
WScript.Sleep(300);
WshShell.SendKeys("{TAB}");
WScript.Sleep(300);
WshShell.SendKeys("{TAB}");
WScript.Sleep(300);
WshShell.SendKeys("{TAB}");
WScript.Sleep(300);
WshShell.SendKeys("{TAB}");
WScript.Sleep(3000);

// Выйти из Attain
WshShell.SendKeys("%{F4}");
WScript.Sleep(300); 
Старый 25.06.2003, 03:33   #5  
Aleksander is offline
Aleksander
Участник
 
82 / 10 (1) +
Регистрация: 30.04.2003
Адрес: Уссурийск
?
Grizzly - Вы не подскажите, где можно взять документацию по X++ ?
Старый 25.06.2003, 09:08   #6  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Думаю, там же где и Axapta, в MBS
Старый 25.06.2003, 12:31   #7  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
:(
Еси вы владеете средой Delphi.
и в лицензии есть доступ к C\FRONT,
и вам такие функции необходимо делать переодически, то лучше написать
на делфи вызов необходимого вам хозяйства.
Старый 25.06.2003, 13:01   #8  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Цитата:
Изначально опубликовано Lexi
лучше написать на делфи вызов необходимого вам хозяйства.
А под "хозяйством" вы что понимаете?
Старый 25.06.2003, 14:16   #9  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
Этим хитрым словом я постарался прекрыть следующее:

1. На данный момент я активно юзал работу C/FRONT с данными Navision и точно не знал (только слышал) что можно юзать и остальное.
2. На самом деле проблему нужно решать в комплексе с поставленной задачей, и если что требуется делать снаружи, то лучше это делать через C/FRONT.
Старый 25.06.2003, 14:37   #10  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Цитата:
Изначально опубликовано Lexi
1. На данный момент я активно юзал работу C/FRONT с данными Navision и точно не знал (только слышал) что можно юзать и остальное.
Я не юзал C/FRONT, но знаю, что датапорт через него вы не запустите (если, конечно, дополнительно не напишете интерпретатор объектов NA).
Старый 25.06.2003, 14:53   #11  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
Да, к сожалению C/FRONT не позволяет запускать ДатаПорты.

Ну тогда выход следующий: написать OCX вызывающий требуемый датапорт.


P.S.
И это будет правильней, эмуляции нажатий на клавиатуру.
Старый 25.06.2003, 15:18   #12  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Цитата:
Изначально опубликовано Lexi
Ну тогда выход следующий: написать OCX вызывающий требуемый датапорт.
ОСХ - это не решение, а способ взаимодействия компонент. Не сочтите за труд опишите в двух словах ваше решение, которое позволяет из вне Attain выполнить его объект.
Старый 25.06.2003, 15:23   #13  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
Элементарно:

В OCX вставляется Socket Server с вызовом необходимой функции.

Пишется отдельно Socket Client из которого вызывается требуемая функция.
Старый 25.06.2003, 15:31   #14  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Цитата:
Изначально опубликовано Lexi
Элементарно:

В OCX вставляется Socket Server с вызовом необходимой функции.

Пишется отдельно Socket Client из которого вызывается требуемая функция.
Вы очевидно не понимаете к чему я веду. NA - кто. Клиент или сервер?
Старый 25.06.2003, 15:37   #15  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
А Вы не "ведите", вы говорите как есть.

Клиент NA (с интегрированным Socket Server-ом) в данном случае является сервером по отношению к программе (Socket client) запускающий требуемый датапорт.
Старый 25.06.2003, 15:54   #16  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
У данного варианта есть ряд преимуществ перед эмуляцией кнопок:

Возможность проконтролировать результат обработки;
Возможность установок дополнительных параметров обработки;
Возможность установок дополнительных проверок результата обработки;
Возможность получения на Socket cliente ответных результатов.........

А ваша эмуляция...... ну запустил и что ....... сработало или нет .....?????
Старый 26.06.2003, 11:40   #17  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Цитата:
Изначально опубликовано Lexi
А Вы не "ведите", вы говорите как есть.
Хорошо.

Напомню задачу. Из внешнего приложения (из командной строки) нужно запустить NA, залогиниться в БД, открыть фирму, выполнить некоторый объект и по возможности закрыть NA.

Когда вы заявили, что можете сделать это, использовав COM-технологию, меня это заинтересовало. Это противоречит моим представлениям о системе. Однако я допускаю, что могу многого не знать, т.к. активно программированием уже давно не занимаюсь.

А знаю я следующее:

1. Клиент NA не может выступать в качестве COM-сервера, а только так вы можете инициализировать его из внешнего приложения. Если это не так, то укажите, пожалуйста, через какой COM-интерфейс вы это собираетесь делать.

2. В поставке с NA действительно идут несколько COM-объектов. Однако, назначение их не в том, чтобы дать возможность доступа к функциям NA из других приложений, а в том, чтобы дать возможность самому клиенту NA получить доступ к внешним функциям (winsocket, tapi и т.д.), потому что, например, нет иного способа в NA вызвать функцию из динамически связываемой библиотеки. И по отношению к этим COM-объектам клиент NA выступает COM-клиентом.

Цитата:
Клиент NA (с интегрированным Socket Server-ом) в данном случае является сервером по отношению к программе (Socket client) запускающий требуемый датапорт.
3. Никакого интегрированного в клиент NA Socket Server не существует. Клиент NA может выступать в качестве Socket Server-а (см. п. 2), однако, для этого сначала нужно:
-запустить NA;
-залогиниться в БД;
-запустить на выполнение объект, который создает набор Automation-переменных, через которые реализуется доступ к winsocket, открывает нужный порт и «слушает» его.

Т.е. вы опять вернулись к исходной задаче.

Цитата:
У данного варианта есть ряд преимуществ перед эмуляцией кнопок:
Несомненно. С этим никто спорить не будет. Однако, есть один большой недостаток – он из другой сказки.

P.S. Я буду рад если вы аргументировано опровергнете мое представление о NA, потому что считаю, что если бы ситуация была такой, какой описали ее вы, то всем от этого стало бы только лучше.
Старый 26.06.2003, 13:45   #18  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
1. В первоисточнике написано так:
Можно ли запустить определенный датапорт вне программы, например из bat файла?

а не так:

Напомню задачу. Из внешнего приложения (из командной строки) нужно запустить NA, залогиниться в БД, открыть фирму, выполнить некоторый объект и по возможности закрыть NA.

Не вижу фразы (из командной строки) может вы ее видите?

Если выделить фразу "вне программы", то под данную фразу не подходит вообще ни какое решение.


2. Если вы внимательно почитаете переписку, то увидите:

В OCX вставляется Socket Server с вызовом необходимой функции.

Это к
Цитата:
--------------------------------------------------------------------------------
Клиент NA (с интегрированным Socket Server-ом) в данном случае является
сервером по отношению к программе (Socket client) запускающий
требуемый датапорт.
--------------------------------------------------------------------------------
3. Никакого интегрированного в клиент NA Socket Server не существует.
Клиент NA может выступать в качестве Socket Server-а (см. п. 2), однако,
для этого сначала нужно:

Рашифровываю:

1. Пишется OCX модуль со встроенным Socket Server;
2. Данный модуль интегрируется в клиентскую часть navision;
3. Пишется клиентская часть;
4. Запускается Navision Client и наш OCX;
5. Запускается в пределах видимости сети Наш клиент.
6. И вперед.

3. Очень странно, что вы вдруг вспомнили, что это не та сказка.
Зачем тогда обсуждался вариант с C/FRONT и OCX?

Цитата:
---------------------------------------------
Я не юзал C/FRONT, но знаю, что датапорт через него вы не запустите (если,
конечно, дополнительно не напишете интерпретатор объектов NA).

ОСХ - это не решение, а способ взаимодействия компонент. Не сочтите за труд
опишите в двух словах ваше решение, которое позволяет из вне Attain выполнить
его объект.
---------------------------------------------

Кстати та или не та сказка еще вопрос? см п1.

4. Если нужно удаленно запустить Attain и его модули, то пишется отдельная программа (напр. тот же Socket Server но с другим портом) которая удаленно сделает необходимые действия, да и проверит правомерность запуска.

На самом деле если заняться темой, то можно накопать еще решений, все зависит от уровня квалификации копальщика.

P.S.

Старый 26.06.2003, 14:02   #19  
Rungart is offline
Rungart
Участник
 
491 / 12 (1) ++
Регистрация: 13.01.2003
Адрес: Украина
:)
По ходу обсуждения, у меня возник вопрос: а что делать с паролем пользователя? Хранить его в открытом виде в js файле? Вводить нового пользователя с правами на запуск конкретного датапорта? Кстати, как поведет себя OCX при запросе пароля?
Прошу прощения, если мои вопросы покажутся наивными.
Старый 26.06.2003, 14:17   #20  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Цитата:
Изначально опубликовано Lexi
Не вижу фразы (из командной строки) может вы ее видите?
Вы вероятно, плохо представляете себе что такое bat-файл.

Цитата:

Расшифровываю
...
4. Запускается Navision Client и наш OCX;
...
В том то и дело, что все ваши решения работают при запущенном NA и запущенном же в нем объекте. А Marina нужно было, чтобы все это дело запускалось из bat-файла.

Вот как эту задачу понимаю я. Например, у меня есть сервер с БД Navision. Я хочу, чтобы обмен данными с другой системой происходил ночью (чтобы не мешать другим пользователям). Для этого я хотел бы по расписанию запускать NA и выполнять нужные операции (выгрузка данных, бэкап и т.д.).

Если же предположить что NA у меня постоянно запущен, то, естественно, и вопросов бы не было.

[QUOTE][B]

4. Если нужно удаленно запустить Attain и его модули, то пишется отдельная программа (напр. тот же Socket Server но с другим портом) которая удаленно сделает необходимые действия, да и проверит правомерность запуска.

[QUOTE][B]

Lexi, откуда вы взяли, что интересует УДАЛЕННЫЙ запуск?

P.S. Уважаемая Marina, усли вы до сих пор читаете эту чушь, не сочтите за труд внести ясность относительно вашей задачи.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Экспорт данных в файл через dataport by_HT NAV: Программирование 0 18.10.2007 16:03
Последовательный запуск объектов Nataly NAV: Программирование 4 14.09.2005 07:12
Запуск "период.заданий" скриптом. seltest NAV: Администрирование 5 18.03.2005 10:50
Attain 3.60, XML Dataport Import kolesnikov NAV: Администрирование 4 22.05.2003 18:35
Attain: Как передать параметры Dataport-у? Incontrovertable NAV: Программирование 4 04.03.2003 15:13

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

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

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