powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Запуск произвольной обработки через OLE в 1С77
10 сообщений из 10, страница 1 из 1
Запуск произвольной обработки через OLE в 1С77
    #37411795
haliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: есть произвольная обработка для 1с77. Как запустить извне (например, из Delphi) через OLE её на выполнение?

Задача2: Как запустить текст произвольной обработки на выполнение. Нужно избежать записи обработки на диск.

Заранее признателен за помощь.
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37411831
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Так же, как и запуск обработки в 1С - методом ОткрытьФорму(...........
Те же проблемы - как сделать так, чтобы обработка сразу выполнялась, а не висела открытой формой.
Тот же метод решения - организовать вызов нужного кода прямо в обработчике ПриОткрытии() этой формы.

2. В режиме OLE у 7ки специальный метод есть - ExecuteBatch(Код);
Выполняет произвольный код на встроенном языке. Из любого количества строк состоящий. Хоть весь модуль обработки.
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37411843
haliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, буду разбираться )
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37412171
haliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Все получилось, спасибо.
2. К сожалению, не произвольный текст
, либо я чего-то не то делаю

Написал обработку-белиберду, работающую в 1с77
<code>
Перем Перем1;
Перем Перем2;

//*******************************************
Процедура Выполнить()

КонецПроцедуры



Перем1 = 1;
Перем2 = 2;

// Сообщить(Перем1);
// Сообщить(Перем2);

ПутьКФайлу="C:\output.txt"; //сохраняем путь
Текст = СоздатьОбъект("Текст"); //создаем объект текст
Текст.Открыть(ПутьКФайлу);

Док = СоздатьОбъект("Документ.Счет");
Док.ВыбратьДокументы();

Пока Док.ПолучитьДокумент()>0 Цикл
Сообщить(Док.НомерДок);
Текст.ДобавитьСтроку(Док.НомерДок);
КонецЦикла;

Текст.Записать(ПутьКФайлу);
Форма.Закрыть(0);
</code>

по OLE вызываться не хочет :(. В чем может быть проблема?
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37412794
Zerro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haliff1. Все получилось, спасибо.
2. К сожалению, не произвольный текст
, либо я чего-то не то делаю

Написал обработку-белиберду, работающую в 1с77
<code>
Перем Перем1;
Перем Перем2;

//*******************************************
Процедура Выполнить()

КонецПроцедуры



Перем1 = 1;
Перем2 = 2;

// Сообщить(Перем1);
// Сообщить(Перем2);

ПутьКФайлу="C:\output.txt"; //сохраняем путь
Текст = СоздатьОбъект("Текст"); //создаем объект текст
Текст.Открыть(ПутьКФайлу);

Док = СоздатьОбъект("Документ.Счет");
Док.ВыбратьДокументы();

Пока Док.ПолучитьДокумент()>0 Цикл
Сообщить(Док.НомерДок);
Текст.ДобавитьСтроку(Док.НомерДок);
КонецЦикла;

Текст.Записать(ПутьКФайлу);
Форма.Закрыть(0);
</code>

по OLE вызываться не хочет :(. В чем может быть проблема?
в смысле выззыватся не хочет? какая ошибка
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37413030
haliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по оле не хочет. Пишу что-то типа

/////////////////
var EvalExprStr : string;
...
EvalExprStr := <текст обработки, приведенной выше>
...

onesobj := createoleobject('V1CEnterprise.Application');
onesobj.initialize(onesobj.rmtrade,'/D' + "C:\Documents and Settings\Администратор\Мои документы\1C\" + ' /M /N' + ''sa + ' /P' + '111' ,'');

onesobj.ExecuteBatch(EvalExprStr);
///////////////

этот текст молча не выполняется (возвращает 0 (или False по другому говоря))

если же запихнуть в EvalExprStr что-то простое, например
ОткрытьФормуМодально("Обработка",,"C:\Обработка77.ert")
то все выполняется
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37413052
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haliffпо оле не хочет. Пишу что-то типа

/////////////////
var EvalExprStr : string;
...
EvalExprStr := <текст обработки, приведенной выше>
...

onesobj := createoleobject('V1CEnterprise.Application');
onesobj.initialize(onesobj.rmtrade,'/D' + "C:\Documents and Settings\Администратор\Мои документы\1C\" + ' /M /N' + ''sa + ' /P' + '111' ,'');

onesobj.ExecuteBatch(EvalExprStr);
///////////////

этот текст молча не выполняется (возвращает 0 (или False по другому говоря))

если же запихнуть в EvalExprStr что-то простое, например
ОткрытьФормуМодально("Обработка",,"C:\Обработка77.ert")
то все выполняется

Возможно, не воспринимает определение процедуры в этом тексте. Попробуй без него обойтись - только набором исполняемых строк
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37413069
haliff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объясню ситуацию. Есть текст большой сложной обработки. С целью зашитить её - оборачиваю все в exe-шник. Хочется хранить в зашифрованном виде обработку, потом через оле создать в себе экземпляр 1С, на лету расшифровать обработку, и подсунуть на выполнение созданному экземпляру. Обработка порядка 20 тысяч строк, причем она такая не одна :(
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37413095
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haliffобъясню ситуацию. Есть текст большой сложной обработки. С целью зашитить её - оборачиваю все в exe-шник. Хочется хранить в зашифрованном виде обработку, потом через оле создать в себе экземпляр 1С, на лету расшифровать обработку, и подсунуть на выполнение созданному экземпляру. Обработка порядка 20 тысяч строк, причем она такая не одна :(

Не так все просто - чтобы "простые смертные" легко свои семерочные модули закрывали.
Приближенные к 1С разработчики (типа Раруса) прячут свои модули в dll.
Есть и КЗК от Альфа (комплекс защиты конфигураций) - вроде недорого стоит.
...
Рейтинг: 0 / 0
Запуск произвольной обработки через OLE в 1С77
    #37413134
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
haliffобъясню ситуацию. Есть текст большой сложной обработки. С целью зашитить её - оборачиваю все в exe-шник. Хочется хранить в зашифрованном виде обработку, потом через оле создать в себе экземпляр 1С, на лету расшифровать обработку, и подсунуть на выполнение созданному экземпляру. Обработка порядка 20 тысяч строк, причем она такая не одна :(



Если ExecuteBatch умеет выполнять последовательность операторов, но не умеет компилировать процедуры, можно и так попробовать сделать:
Создать внешнюю компоненту со своими методами, каждый из которых будет соответствовать отдельной процедуре, и вызывать на исполнение этим методом свой код (который расшифровывает перед выполнением).
А "главный" модуль этого комплекта - подключает внешнюю компоненту, да и вызывает ее методы в нужном порядке с нужными аргументами.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Запуск произвольной обработки через OLE в 1С77
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]