Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Как в самой 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.055 c
6-1137397801
Pazitron_Brain
2006-01-16 10:50
2006.04.30
Как организовать чат с использованием TClientSocket и TServerSock


3-1141986211
BanderLog
2006-03-10 13:23
2006.04.30
Выборка N+K записей на FB


3-1141489847
Александр К...
2006-03-04 19:30
2006.04.30
Распространение приложений, использующих BDE


2-1144731535
Neiroman
2006-04-11 08:58
2006.04.30
Random()


2-1144940158
тим
2006-04-13 18:55
2006.04.30
real & integer