Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1144731535
Neiroman
2006-04-11 08:58
2006.04.30
Random()


2-1144760457
ANB
2006-04-11 17:00
2006.04.30
Как в Ворде заменить кусочек параграфа ?


2-1144925590
Dest81
2006-04-13 14:53
2006.04.30
Контрольная сума


8-1133365011
Yozj
2005-11-30 18:36
2006.04.30
микширование на лету


15-1144315906
Erik1
2006-04-06 13:31
2006.04.30
Где найти компонент для отображения TIFF формата с компресией?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский