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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.06.2003, 14:30   #21  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
Цитата:
Изначально опубликовано Rungart
По ходу обсуждения, у меня возник вопрос: а что делать с паролем пользователя? Хранить его в открытом виде в js файле? Вводить нового пользователя с правами на запуск конкретного датапорта?
Данный пример был приведен только как илюстрация идеи. Вы естественно можете написать это на другом средстве, а пароль хранить зашифрованным.
Можете завести спец. пользователя, для которого оставить минимальные права только на выполнение определенной функции без доступа к формам, кодеюнитам и т.д.
Кстати, эти функции можно запускать автоматически при логине этого пользователя и выбрасывать его сразу по завершении их выполнения.

Я отдаю себе отчет, что это не самое красивое решение, но по-моему единственное. Все остальные решения будут работать, если NA уже запущен.

Цитата:
Кстати, как поведет себя OCX при запросе пароля?
[/B]
А никак. ОСХ может быть использован в NA, только когда вы выполняете один из объектов NA, а следовательно уже находитесь в БД.
Старый 26.06.2003, 14:42   #22  
Rungart is offline
Rungart
Участник
 
491 / 12 (1) ++
Регистрация: 13.01.2003
Адрес: Украина
Меня просто действительно заинтересовала возможность запуска Navision не пребегая к скриптовым эмуляторам.

В свое время для решения подобной задачи мне пришлось использовать планировщик nnCron (с эмуляцией нажатий клавиш, контролем всплывающих окон и проч.). А пользователь таки да был с правом на запуск 1 формы и модификацией 2-х таблиц.

Кстати, после завершения всех необходимых операций программу было бы не плохо закрыть. Как сделать это средствами Navision для меня загадка до сих пор. (В упомянутой задаче я просто убил процесс .)
Старый 26.06.2003, 15:28   #23  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
------Вы вероятно, плохо представляете себе что такое bat-файл.

В bat-файл можно вставить что угодно - например программу производящую запуск клиента NA.

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

Так не обязательно его держать открытым. За это отвечает отдельная программ.
с.м. П4. Она открывает, стартует, закрывает. Для упрощения, можно на стартовую страницу в Navision установить запуск OCX.

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

Какая разница, удаленный или нет. Если нет то еще проще. Запускается программа стартующая attain, проверяющая запуск OCX, далее производиться подключение к OCX, запуск датапорта, при закрытии рограммы на OnClose - производиться отключение от порта и закрытие программы.

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

Да....... Marina..........
Старый 26.06.2003, 15:36   #24  
Rungart is offline
Rungart
Участник
 
491 / 12 (1) ++
Регистрация: 13.01.2003
Адрес: Украина
Цитата:
Изначально опубликовано Lexi
Какая разница, удаленный или нет. Если нет то еще проще. Запускается программа стартующая attain, проверяющая запуск OCX, далее производиться подключение к OCX, запуск датапорта, при закрытии рограммы на OnClose - производиться отключение от порта и закрытие программы.
Простите, я не очень понимаю, зачем в этой ситуации использовать OCX? В том месте, где Вы проверяете запуск OCX не проще ли написать что-то типа Dataport.RUN?
Старый 26.06.2003, 16:57   #25  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
Для того, что бы быть уверенным, что функция отработала, и получениея подтверждения на запускаемой программе.

------- не проще ли написать что-то типа Dataport.RUN?

Этот RUN нужно же в дальнейшем кудато вешать. Напр. на кнопку. Правильно.
Вы ведь не сможете запустить из вне Datatport.RUN.
Старый 26.06.2003, 17:57   #26  
Rungart is offline
Rungart
Участник
 
491 / 12 (1) ++
Регистрация: 13.01.2003
Адрес: Украина
Цитата:
Изначально опубликовано Lexi
Для того, что бы быть уверенным, что функция отработала, и получениея подтверждения на запускаемой программе.

------- не проще ли написать что-то типа Dataport.RUN?

Этот RUN нужно же в дальнейшем кудато вешать. Напр. на кнопку. Правильно.
Вы ведь не сможете запустить из вне Datatport.RUN.
Нет, не правильно. При запуске Attain всегда после аутентификации происходит выполнение функции LogInStart из codeunit 1 ApplicationManagement. Ничего не мешает ввести спец. пользователя RunData при входе которого запускать датапорт в конце этой функции.
Что же касается уверенности в корректной отработке задания, то возможно есть смысл попробовать получить флаг успешного выполнения при помощи функции, объявленной в датапорте и вызываемой сразу после его выполнения.
Старый 26.06.2003, 19:26   #27  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
Что касается LogInStart согласен.

Цитата:
Изначально опубликовано Rungart

Что же касается уверенности в корректной отработке задания, то возможно есть смысл попробовать получить флаг успешного выполнения при помощи функции, объявленной в датапорте и вызываемой сразу после его выполнения.
А куда вы собираетесь получать флаг успешного выполнения и как ?
Старый 27.06.2003, 08:02   #28  
Grizzly is offline
Grizzly
Участник
 
85 / 10 (1) +
Регистрация: 30.01.2003
Адрес: Омск
2Lexi.

Для того, чтобы узнать результат выполнения функции существует масса способов. Или вы всерьез считаете, что до появления OCX все программы работали как попало. Открою секрет - существует большое количество операционных систем, которые вообще не знают что такое OCX и очень хорошо себя чуствуют.

Как самый простой пример - достаточно написать функцию (датапорт) так, чтобы она выводила результат своей работы в файл.

P.S. Похоже вы совсем недавно узнали, что такое OCX и спешите поделиться этой радостью со всем остальным миром. Что ж, я очень рад за вас. Но использовать даже самую замечательную технологию нужно там где это уместно.
Старый 27.06.2003, 10:28   #29  
Rungart is offline
Rungart
Участник
 
491 / 12 (1) ++
Регистрация: 13.01.2003
Адрес: Украина
Цитата:
Изначально опубликовано Lexi
А куда вы собираетесь получать флаг успешного выполнения и как ? [/B]
Например, вот таким способом
http://www.mibuso.com/howtoinfo.asp?FileID=7
Старый 27.06.2003, 13:04   #30  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
Цитата:
Изначально опубликовано Grizzly

Для того, чтобы узнать результат выполнения функции существует масса способов. Или вы всерьез считаете, что до появления OCX все программы работали как попало.
А кто говорит, что только OCX. Все зависит от уроня квалификации. Читайте внимательней.

Цитата:
Изначально опубликовано Grizzly

Открою секрет - существует большое количество операционных систем, которые вообще не знают что такое OCX и очень хорошо себя чуствуют.
Может вы другой секрет откроете где еще работает attain.

Эта тема зашла в тупик. Предлагаю ее закрыть ее. Не хочется опускаться до уровня сказок, прочих операционных систем и т.д..


Для Rungart

Я запустил формы. Но что получается, что данные возвращаются в форму attain.
Старый 27.06.2003, 14:06   #31  
Rungart is offline
Rungart
Участник
 
491 / 12 (1) ++
Регистрация: 13.01.2003
Адрес: Украина
2 Lexi

Что касается передачи параметров, то я обычно делаю так:

Пусть у нас есть объект (форма,таблица, отчет или датапорт) задача: запустить его с определенными знчениями переменных, а затем просмотреть переменные, измененные в этом объекте.

Основной принцип: в главном объекте (форме,кодюните, etc.) объявить в Globals этот объект как переменную Obj. При этом по F5 у этой переменной мы можем увидеть все ее функции. Т.е. написав функцию для нашего объекта типа

RetVal() : Integer
exit(Глобальная_Переменная_Объекта)

мы сможем получить значение переменной "Глобальная_Переменная_Объекта" в главном объекте так

clear(Obj);
Obj.Run;
//====================
// объект отработал, где-то внутри его присвоилось значение переменной
// "Глобальная_Переменная_Объекта"
//====================
Перем:=Obj.RetVal
При этом следует помнить, что оператор CLEAR очистит объект.

Кстати, этот вопрос уже обсуждался здесь
Старый 27.06.2003, 14:18   #32  
Lexi is offline
Lexi
Участник
 
50 / 10 (1) +
Регистрация: 07.04.2003
Rungard.

Да но вы ведь не передаете параметр во внешнюю программу.
Все в этоге заканчивается в рамках attaina.
А та, прога, которая запустила attain не знает, нормально ли запустился датапорт.

То есть в дальнейшем вам необходимо "Перем:=Obj.RetVal" передать каким либо образом наружу. Речь идет о меж программном взаимоотношении.
Старый 27.06.2003, 14:27   #33  
Rungart is offline
Rungart
Участник
 
491 / 12 (1) ++
Регистрация: 13.01.2003
Адрес: Украина
Thumbs down
2 Lexi

Согласен. Был не прав. Исправлюсь.
:-\
Старый 11.02.2004, 03:21   #34  
Marina is offline
Marina
Участник
 
3 / 10 (1) +
Регистрация: 09.04.2003
Адрес: Канада
Прошло полгода...
Уважаемый Grizzly,

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

С уважением,
Марина
Старый 12.02.2004, 17:45   #35  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
Други!
А подскажите и опишите поподробнее,, как запустить датапорт в определенное время?!
Скачал, установил и настоил Crones с www.mibuso.com все равно он неработает!!! ;(
Старый 12.02.2004, 18:13   #36  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
В определенное время...
По таймеру, наверное.

Берете, например, Главное меню =)
Выставляете ему в свойствах TimerInterval (сколько - сами ориентируйтесь).
Соответственно, в триггере OnTimer() пишете что-нибудь вроде
IF (TIME > (Время Ч - дельта)) AND (TIME < (Время Ч + дельта)) THEN
DATAPORT.RUN(DATAPORT::<YourDataport>, параметры...)
Старый 13.02.2004, 09:52   #37  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
а зачем использовать дельту?!
Старый 13.02.2004, 10:49   #38  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
А на всякий случай...

Поставите Вы, скажем, интервал в 5 секунд.
А форма будет запущенна в 09 часов 03 минуты 12 секунд.
В таком случае условие (IF TIME = 120000T THEN...) никогда не отработается т.к. таймер сработает в 11:59:57 и в 12:00:02.
Старый 13.02.2004, 10:59   #39  
.rejector. is offline
.rejector.
Участник
Аватар для .rejector.
 
35 / 10 (1) +
Регистрация: 16.10.2003
да все верно, это я уже догадался. стормозил малость.
Возник другой вопрос, как передать параметры репорту?!
Старый 13.02.2004, 11:30   #40  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
В смысле не репорту, а датапорту, наверное? =)

Какие именно параметры?
Если имеются в виду параметры, которые задаются через реквест форму, то придется изменить датапорт. Т.е. задавать ему параметры не через реквест форму, а, например, считывать их в OnPreDataport из какой-нибудь специальнообученной таблички.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Экспорт данных в файл через 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, время: 02:00.