Задача: Из внешней самописной программы добавить проводки в Б4 (main.dbf), причем во время работы пользователей.
Рассматривал вариант прямого обращения к таблице и записи в нее значений, но считаю, что это не совсем верно, т.к. не известно как себя поведет БЕСТ. Один добрый человек, сказал, что еще можно написать на харборе данный плагин и вызывать его из командной строки, например main.exe MyProg, но поиски по новому и старому форуму, мне ничего не дали.
Подскажи как мне быть, что не прибегать к прямому обращению к таблицы, например через ado, bde, apollo и т.д.
это да, я так и думал. но меня больше технология вызова этой функции интересует, т.е. как ее вызывать из вне можно? попытки поиграть с main.exe MyProg.hrb ни к чему не привели.
и база не nbook, а main ;), но это уже дело техники.
Запускать программы пользователя на выполнение можно из командной строки, из *.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.
Вариант 1
Есть еще забытый способ - групповые операции.
Там доступен код харбора.
Он вернет сумму или необходимые значения для создания проводки и проводка будет создана
Вариант 2
Делаете таблицу с проводками в dbf формате.
Инициализируете функцию импорта проводок программно и они там :)
Вариант 3
настраиваете шаблон типовой операции а в функцию расчета суммы вписываете плагин на харборе.
по правильности ввода данных, первое, как правильно получить код NNOper? Как получить код _USER_CODE, в примере выше он есть, но данные в базу не попадают :(. И еще, я не очень понимаю как это реализовано в этом языке, но что-то мне подсказывает, что прежде чем писать в таблицу, ее необходимо заблокировать, так ли это? И еще, как в той же командной строке передать логин и пароль пользователя, а так-же код доступа в раздел?
Извините может за глупые ы, но это мой первый опыт, жизнь заставила :)
Сергей пишет:
И еще, я не очень понимаю как это реализовано в этом языке, но что-то мне подсказывает, что прежде чем писать в таблицу, ее необходимо заблокировать, так ли это? И еще, как в той же командной строке передать логин и пароль пользователя, а так-же код доступа в раздел?
1. Насчет блокировки.
Вы применяете функцию ADDREC() это функция БЭСТа а не языка и она внутри уже содержит блокировку записи для удобства.
2.Что касается логина и пароля - вы наверно должны понимать что передавать логин и пароль в командной строке, прописать это в бат-файл все равно что их открыть.
Вы можете установить еще один БЭСТ, настроить там пути к этой же базе и использовать именно его для записи проводок извне.
А правами доступа к этой папке закрыть возможность попадать в БЭСТ другим через этот вариант.
И еще, я не очень понимаю как это реализовано в этом языке, но что-то мне подсказывает, что прежде чем писать в таблицу, ее необходимо заблокировать, так ли это? И еще, как в той же командной строке передать логин и пароль пользователя, а так-же код доступа в раздел?
1. Насчет блокировки.
Вы применяете функцию ADDREC() это функция БЭСТа а не языка и она внутри уже содержит блокировку записи для удобства.
2.Что касается логина и пароля - вы наверно должны понимать что передавать логин и пароль в командной строке, прописать это в бат-файл все равно что их открыть.
Вы можете установить еще один БЭСТ, настроить там пути к этой же базе и использовать именно его для записи проводок извне.
А правами доступа к этой папке закрыть возможность попадать в БЭСТ другим через этот вариант.
точно так же и вызываемый батник можно закрыть правами от чужего доступа ;)... и вы реально сами прекрасно понимаете, что защита у БЕСТ-а, исключительно от дурака, т.е. от того же бухгалтера или новой девочки, которая только что была принята на работу.
Ладно, это все лирика, если серьезно я сейчас доделываю небольшую приблуду, которая будет решать данный , благо практика написания таких приложений есть (расчет себестоимости, например).