Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
ВнизКак в самой 1C выполнить ее же выражение ? Найти похожие ветки
← →
ANB_Temp (2006-04-10 12:21) [0]Имеем строку с выражением. У 1С есть метод OLE EvalExpr, который позволяет посчитать выражение в виде строки. Но через OLE работать с 1С не могу, т.к. не могу передать свой контекст в вызваемую программу на делфи.
Есть ли в 1С встроенная функция языка, которая позволяет считать выражения динамически ?
Парсер на 1С писать не хочется, т.к. явно будет тормозить.
← →
ANB © (2006-04-11 09:19) [1]народ - это я запостил. Новая работа, мой комп еще не подключили, пришлось с чужого постить.
Решение нашли - функция Шаблон.
Кстати, кто нибудь занимался проблемой подключения к 1С через OLE ?
Если на компе стоит несколько 1С, как мне подключится именно к той, которая вызвала мою процедуру из делфи ?
← →
tesseract © (2006-04-11 09:27) [2]что конкретно нужно ?
> Решение нашли - функция Шаблон.
Он же evalExpr.
> Кстати, кто нибудь занимался проблемой подключения к 1С
> через OLE ?
Да, есть пример как считать метаданные. И пройтись по справочникам. 1с через OLE весьма тормозит.
> как мне подключится именно к той, которая вызвала мою процедуру
> из делфи ?
не понял впороса. Та база которая вызвала процедуру по-любому уже создала нужный тебе объект.
← →
Сергей М. © (2006-04-11 09:54) [3]
> ANB © (11.04.06 09:19) [1]
Вот пример VB-скрипта, использующего 1С как OLE-сервер и конкретно его метод EvalExpr():
Set App = CreateObject("V77.Application")
EvalResult = App.EvalExpr("2*2")
MsgBox("Результат вычисления выражения 2 * 2 равен " & EvalResult)
Не вижу никаких проблем сделать тоже самое в Делфи.
← →
ANB © (2006-04-11 10:10) [4]
> Сергей М. © (11.04.06 09:54) [3]
Значится - исходное условие. На одном компе стоит несколько 1С. Штук 5 может быть запущено одновременно. Юзер жмет кнопку в 1С - должна подгрузится моя DLL на делфи и сделать полезные вещи (создать отчет), доставая инфу из той 1С, в которой нажали кнопку.
Вопрос - как в делфовой DLL подключится именно к тому экземпляру 1С, из которой ее вызвали ?
> tesseract © (11.04.06 09:27) [2]
evalExpr - это для выполнения выражения снаружи (через OLE). Пока не решен вопрос выше - решили сделать обмен через временные локальные таблицы.
← →
tesseract © (2006-04-11 10:20) [5]
> Вопрос - как в делфовой DLL подключится именно к тому экземпляру
> 1С, из которой ее вызвали ?
Когда ты грузишь Addin на 1с ты получаешь сылку на экземпляр 1с.
Вызывая init тебе передаётся интерфейс запущенной 1с.
← →
ANB © (2006-04-11 10:26) [6]
> Когда ты грузишь Addin на 1с ты получаешь сылку на экземпляр
> 1с.
> Вызывая init тебе передаётся интерфейс запущенной 1с
А поподробнее, плз . . .
Чего сделать в 1С и откуда достать потом ссылку на экземпляр OLE 1С в делфи ?
← →
Сергей М. © (2006-04-11 10:37) [7]
> ANB © (11.04.06 10:10) [4]
Неужели так сложно выговорить слово "1C Add-In", чтобы сразу стало понятно, о чем идет речь ?
Когда 1С загружает твой плагин, он получает управление в методе Init(), параметром которого тебе передается диспинтерфейс того Application-объекта, который обращается к плагину.
← →
Сергей М. © (2006-04-11 10:38) [8]http://www.dinform.ru/kuban/htmls/public_htmls/9-103523.html
← →
ANB © (2006-04-11 10:38) [9]
> Сергей М. © (11.04.06 10:37) [7]
А где почитать про Add-In 1С ?
← →
Сергей М. © (2006-04-11 10:42) [10]
> ANB © (11.04.06 10:38) [9]
http://www.google.ru/search?hl=ru&q=1C%3A+%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F+%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D1%85+%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BE%D0%B2&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
← →
ANB © (2006-04-11 10:42) [11]
> Сергей М. © (11.04.06 10:38) [8]
Спасибо !
← →
tesseract © (2006-04-11 11:07) [12]Есть класс для создания 1с Addin.
Создан для избавления от ТХ кода при их создании.
минус - слабавато документирован. Зато поддерживает "перегрузку" методов и свойств :-)
← →
ANB © (2006-04-11 12:27) [13]
> tesseract © (11.04.06 11:07) [12]
Раздобыл примерчик для делфи 4. Ничего не работает. :(((
← →
Сергей М. © (2006-04-11 12:33) [14]
> Ничего не работает
Встроенный отладчик тебе в руки.
← →
ANB © (2006-04-11 13:13) [15]
> Сергей М. © (11.04.06 12:33) [14]
Упф. И как я в качестве хоста 1С то запишу ?
Странно, не работают готовые примеры, которые дала сама 1С.
← →
Сергей М. © (2006-04-11 13:21) [16]
> как я в качестве хоста 1С то запишу ?
Так и запиши - "C:\Program Files\1Cv77\BIN\1cv7s.exe"
Только не забудь и параметр хоста указать - enterprise
← →
tesseract © (2006-04-11 13:34) [17]
> Раздобыл примерчик для делфи 4. Ничего не работает. :(((
Согласен. Кривой он. Хотя и реально работает.
лучше пример от восьмёрки - больше шансов понять процесс.
настройки :
Project-> options-> directory/conditionals ->
output directory: D:\1c_bases\BaseDir
Run -> parametrs ->
host application "D:\program files\1cv77\BIN\1cv7s.exe"
Parametrs "enterprise /nUserName /pUserPass /dd:\1c_bases\BaseDir"
Workin directory -> "D:\1c_bases\BaseDir"
Всё ок
← →
ANB © (2006-04-11 13:41) [18]Воткнул пока везде запись в лог-файл. Запуск хоста - штука медленная. Но в лог ничего не пишется, даже в разделах инициализации и в теле DLL.
Странно. Видимо я совсем кривой пример раздобыл.
← →
tesseract © (2006-04-11 13:47) [19]
> Но в лог ничего не пишется,
В какой лог?
Пример с клипами рабочий (D7).
> Запуск хоста - штука медленная.
Делаешь пустую базу. У меня 3 справочника и документ - стартует пулей.
Настоятельно не рекомендуется пользоваться SQL базами - тормоза при старте ощутимые.
← →
Сергей М. © (2006-04-11 13:48) [20]
> Воткнул пока везде запись в лог-файл
Неужели использование встроенного отладчика такая уж сложно-непостижимая штука ?!
← →
ANB © (2006-04-11 17:03) [21]Фух. Пример с клипами завелся, я его уже почикал, засунул свои методы - работает.
> Неужели использование встроенного отладчика такая уж сложно-
> непостижимая штука ?!
Это мне не хотелось 1С грузить. У меня пустая база, а грузится все равно не быстро. Лог, кстати, уже и не понадобился.
Кстати, не смог передать в метод параметры - клинит его. Пришлось завести свойство и через него передавать.
← →
tesseract © (2006-04-11 17:45) [22]
> Кстати, не смог передать в метод параметры - клинит его
Да не не клинит. Не забываем про SafeArray и методы работы с ними.
Гемор только начинается......
← →
ANB © (2006-04-11 18:03) [23]
> tesseract © (11.04.06 17:45) [22]
Да хрен с ними. И через метод отработает.
А геморр точно только начинается.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c