BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / помогите с вопросом создания проводки Б4+

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
помогите с вопросом создания проводки Б4+
 
Задача: Из внешней самописной программы добавить проводки в Б4 (main.dbf), причем во время работы пользователей.
Рассматривал вариант прямого обращения к таблице и записи в нее значений, но считаю, что это не совсем верно, т.к. не известно как себя поведет БЕСТ. Один добрый человек, сказал, что еще можно написать на харборе данный плагин и вызывать его из командной строки, например main.exe MyProg, но поиски по новому и старому форуму, мне ничего не дали.
Подскажи как мне быть, что не прибегать к прямому обращению к таблицы, например через ado, bde, apollo и т.д.
 
Можно напрямую, примерно так:
Код
  cdir:= LoadPath()+"main.dbf"
  netuse('mbook',cdir)
  mbook->(addrec())
  mbook->NNOPER    :=cMainNoper
  mbook->TASK      :="05"
  mbook->DATAOPER  :=dDateOp
  mbook->NNDOC     :="002НДС"+alltrim(str(month(dDateOp)))
  mbook->DT_SCHET  :=cDts
  mbook->DT_CODE   :=""
  mbook->KT_SCHET  :=cKts
  mbook->KT_CODE   :=cCodeAn
  mbook->SUMMA     :=nSumNDS
  mbook->NAMEOPER  :=ctext
  mbook->VALUTA    :="РУБ"
  mbook->VSUMMA    :=nSumNDS
  mbook->VCURS     :=1
  mbook->SCLAD     :=""
  mbook->USER_DATE :=date()
  mbook->NNOPER_D  :=0
  mbook->NNOPER_K  :=0
  mbook->USER_CODE :=_USER_CODE
  mbook->(f_dbUnLock())
  mbook->(dbCloseArea())
С уважением,
Ильин Евгений
 
это да, я так и думал. но меня больше технология вызова этой функции интересует, т.е. как ее вызывать из вне можно? попытки поиграть с main.exe MyProg.hrb ни к чему не привели.
и база не nbook, а main ;), но это уже дело техники.
Изменено: Сергей - 29.01.2009 09:43:10
 
Цитата
Запускать программы пользователя на выполнение можно из командной строки, из *.bat -файлов. При необходимости использовать планировщики задач, для вызова функции в ночном режиме.
Синтаксис строки запуска следующий:
[CpathExe] [/ключ для программы][cPathFe] </ключ и код базы данных > </ключ и параметры>
где
•CpathExe – Путь исполняемому файлу соответсвующего модуля программы БЭСТ4+;
•ключ для программы – ключ, определяющий, что будет осуществлен вызов программы пользователя FileEval. Значение – fe;
•cPathFe – Путь к программе пользователя. Путь пишется после ключа без пробела;
ключ и код базы данных – указывается ключ L и следом за ним код базы данных. Параметр не обязательный. если параметр не указан, то будет выведен список базы данных
•ключ и параметры – казывается ключ U и следом за ним параметры, передаваемые в программу пользователя. Параметр не обязательный. .
Запуск из командной строки необходимо осуществлять из папки с установленной программой БЭСТ4+ (папка с файолом best.bat). При запуске из bat-файла нужно перед вызовом данной команды перейти в эту папку или перед запуском самого bat-файл эта папка должна быть текущей.
bin\sclad /feC:\BEST4_PL\PRO\PLUGINS\EXTENSNS\MAIN\im.prg /L000001
В примере происходит вызов программы im.prg для модуля "Товары.Готовая продукция" для предриятия с кодом 000001.


Источник
 
Еще можно в инструментарии сформировать exe-шник без оболочки.
И просто его запускать.
С уважением,
Ильин Евгений
 
Вариант 1
Есть еще забытый способ - групповые операции.
Там доступен код харбора.
Он вернет сумму или необходимые значения для создания проводки и проводка будет создана
Вариант 2
Делаете таблицу с проводками в dbf формате.
Инициализируете функцию импорта проводок программно и они там :)
Вариант 3
настраиваете шаблон типовой операции а в функцию расчета суммы вписываете плагин на харборе.
 
полтергейст какой-то... делаю так
файл utest.prg
Код
SAYANDWAIT("this my test!!!")


далее делаю запуск
BIN\main.exe /feR:\utest.prg /L000001

в результате, просто запускает БЕСТ :(... что не так???

пробовал на 11-й и 12-й версии, результат одинаковый. но как-то у людей ведь это работает???
Изменено: Сергей - 29.01.2009 20:57:15
 
попробовал запустить так BIN\sclad.exe /feR:\utest.prg /L000001
и он запустился!... но вот Вопрос, я смогу так добавлять проводки? модуль-то другой...
 
Ура... через sclad.exe он нормально добавляет проводку, вот что получилось накидать на скорую руку
Код
Private cNNOper,cNameOper,cDateOper,cDTSchet,cDTCode,cKTSchet,cKTCode
Private cSumma,cVSumma,cKurs,cValuta

cNNOper:=StepPlus()
cNameOper:="testtest"
cDateOper:=STOD("20091010")
cDTSchet:="624"
cDTCode:="001800"
cKTSchet:="623"
cKTCode:="001800"
cVSumma:=100
cKurs:=35.25
cSumma:=3525
cValuta:="РУБ"

netuse('mbook',LoadPath()+"main.dbf")
mbook->(addrec())
mbook->NNOPER:=cNNOper
mbook->TASK:="01"
mbook->DATAOPER:=cDateOper
mbook->NNDOC:=""
mbook->DT_SCHET:=cDTSchet
mbook->DT_CODE:=cDTCode
mbook->KT_SCHET:=cKTSchet
mbook->KT_CODE:=cKTCode
mbook->SUMMA:=cSumma
mbook->NAMEOPER:=cNameOper
mbook->VALUTA:=cValuta
mbook->VSUMMA:=cVSumma
mbook->VCURS:=cKurs
mbook->SCLAD:=""
mbook->USER_DATE:=date()
mbook->NNOPER_D:=0
mbook->NNOPER_K:=0
mbook->USER_CODE:=_USER_CODE
mbook->(f_dbUnLock())
mbook->(dbCloseArea()) 

SAYANDWAIT("saving")


Вопрос по правильности ввода данных, первое, как правильно получить код NNOper? Как получить код _USER_CODE, в примере выше он есть, но данные в базу не попадают :(. И еще, я не очень понимаю как это реализовано в этом языке, но что-то мне подсказывает, что прежде чем писать в таблицу, ее необходимо заблокировать, так ли это? И еще, как в той же командной строке передать логин и пароль пользователя, а так-же код доступа в раздел?
Извините может за глупые Вопросы, но это мой первый опыт, жизнь заставила :)
Изменено: Сергей - 29.01.2009 22:07:04
 
stepplus() даст nnoper, а код оператора при запуске в таком режиме следует самому определить.
Изменено: itman - 30.01.2009 07:55:51
С уважением,
Ильин Евгений
 
Цитата
Сергей пишет:
И еще, я не очень понимаю как это реализовано в этом языке, но что-то мне подсказывает, что прежде чем писать в таблицу, ее необходимо заблокировать, так ли это? И еще, как в той же командной строке передать логин и пароль пользователя, а так-же код доступа в раздел?


1. Насчет блокировки.
Вы применяете функцию ADDREC() это функция БЭСТа а не языка и она внутри уже содержит блокировку записи для удобства.
2.Что касается логина и пароля - вы наверно должны понимать что передавать логин и пароль в командной строке, прописать это в бат-файл все равно что их открыть.
Вы можете установить еще один БЭСТ, настроить там пути к этой же базе и использовать именно его для записи проводок извне.
А правами доступа к этой папке закрыть возможность попадать в БЭСТ другим через этот вариант.
Изменено: nordk - 30.01.2009 12:35:36
 
Цитата
nordk пишет:
Цитата Сергей пишет:

И еще, я не очень понимаю как это реализовано в этом языке, но что-то мне подсказывает, что прежде чем писать в таблицу, ее необходимо заблокировать, так ли это? И еще, как в той же командной строке передать логин и пароль пользователя, а так-же код доступа в раздел?



1. Насчет блокировки.

Вы применяете функцию ADDREC() это функция БЭСТа а не языка и она внутри уже содержит блокировку записи для удобства.

2.Что касается логина и пароля - вы наверно должны понимать что передавать логин и пароль в командной строке, прописать это в бат-файл все равно что их открыть.

Вы можете установить еще один БЭСТ, настроить там пути к этой же базе и использовать именно его для записи проводок извне.

А правами доступа к этой папке закрыть возможность попадать в БЭСТ другим через этот вариант.


точно так же и вызываемый батник можно закрыть правами от чужего доступа ;)... и вы реально сами прекрасно понимаете, что защита у БЕСТ-а, исключительно от дурака, т.е. от того же бухгалтера или новой девочки, которая только что была принята на работу.
Ладно, это все лирика, если серьезно я сейчас доделываю небольшую приблуду, которая будет решать данный Вопрос, благо практика написания таких приложений есть (расчет себестоимости, например).
Страницы: 1
Читают тему (гостей: 1)