нужно код с 1С вынести в Dll в Delphi

  • Автор темы randa
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

randa

задача такая.
нужно код с 1С вынести в dll, (пытаюсь писать в Delphi)
чтобы функции работали с неё, а на dll будет завязан ключ HASP
кто сталкивался, подскажите...

вот есть ссылка шаблона в Delphi, где и как нужно отобразить код 1С-ки?!

там пример приведен для 7.7, нужно реализовать в 8.1

понимаю что без знания Delphi ничего ни сделаешь, Delphi уже изучаю понемногу
дайте толчок smile smile
 
V

vitfil

Если для восьмерки, используйте технологию COM. Восьмерка очень даже хорошо работает с СОМ-объектами.
 
E

evgenyatam

function T_vk_object.meth1(mode: TMode): String;
var s: String;
var ms: Integer;
begin
case mode of
m_rus_name: Result:='ВсплывающаяПодсказка';
m_eng_name: Result:='BalloonTooltip';
m_n_params: g_NParams:=2; //Количество параметров функции
m_execute: begin
// сюда дописываеш твой код.
end;
end;//case
end;

естественно напрямую код скорировать не удасться. его придется переписывать на языке паскаль.
 
R

randa

все понял...
буду пробовать...

таким образом загружать в 1С!?

Попытка
ЗагрузитьВнешнююКомпоненту("моя.dll")
Исключение
Сообщить("Ошибка загрузки внешней компоненты!");
КонецПопытки;
Попытка

// Получить объект компоненты.
Объект = Новый("AddIn.моя");

Исключение
Сообщить("Не удалось создать объект внешней компоненты");
КонецПопытки;
 
E

evgenyatam

Объект = Новый("AddIn.моя"); - неправильно. правильно Объект = Новый ComObject("AddIn.моя");
 
R

randa

что то до меня пока трудно доходит
вот к примеру процедуру, как выгрузить в dll, чтобы потом без ключа не получилось бы вывести на печать:

Процедура Печать() Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.СборкаКомпьютера.ПолучитьМакет("Печать");
// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(Шапка);
// ПереченьНоменклатуры
Область = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ТабДок.Вывести(Область);
ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
ОбластьПереченьНоменклатуры.Параметры.Заполнить(ТекСтрокаПереченьНоменклатуры);
ТабДок.Вывести(ОбластьПереченьНоменклатуры);
КонецЦикла;

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
КонецПроцедуры
 
V

vitfil

в dll обычно выносят вычисления, потому как печать повторить очень даже просто. а вот понять бизнеслогику и воспроизвести ее бывает не то что "непросто" - невозможно практически!
 
E

evgenyatam

1. На паскале толком нет хороших бесплатных компонентов для печати.
2. такая как у вас печать делается на 1с за несколько минут и если ее вынести в длл - то кому надо - выкинут длл и напишут на 1с.
3. из паскаля достаточно сложно управлять 1с - классами. обычно дллкам передают простые типы данных.
 
R

randa

1. На паскале толком нет хороших бесплатных компонентов для печати.
2. такая как у вас печать делается на 1с за несколько минут и если ее вынести в длл - то кому надо - выкинут длл и напишут на 1с.
3. из паскаля достаточно сложно управлять 1с - классами. обычно дллкам передают простые типы данных.

я знаю что такая печать делается в 1с легко, это и есть печать из типовой конфы
из чего тогда лучше управлять 1с - классами...!?что посоветуете!?

vitfil
понял.ну к примеру
Документ Закрытие Месяца
Расчет и корректировка себестоимости продукции (услуг) - дописан

вот я думаю как реализовать передачу параметров и каких в dll в данном случае!?
пока я вижу два варианта:
1. при нажатии на кнопку ОК, когда начинается "Расчет и корректировка себестоимости продукции" загружается внешняя компонента
2. или при установке галочки(но непредставляю возможно ли это) :rolleyes:
 
V

vitfil

randa, хотите добрый совет? Их есть у меня! Не заморачивайтесь вы с вынесением кода во внешнюю ДЛЛ. Чем защищать будите? Hasp? Ну так для снятия дампа ключа и последующей эмуляции существует множество утилит.
Для защиты конфигурации 7.7 можно использовать КЗК2 от Альфа. Для восьмерки можно делать поставку без исходных кодов. В обоих случаях формировать ключ лицензии (файл) и постоянно его проверять. В ключе может быть зашит хэш, скажем, наименования организации. Проверять для каждого нового документа, при печати, проведении. В общем, на ваше усмотрение.
 
R

randa

vitfil
ну в принципе да, симулировать его можно...
но ведь если построить нормальную защиту, хотя бы свободное распространение конфы можно предотвратить
наблюдаются такие случаи, что разработанную конфу перепродают похожей по сфере деятельности фирме
как быть в таких случаях

а где можно по подробнее почитать о поставке без исходных кодов...и формировании ключа лицензии.....?!
 
V

vitfil

Для семерки подробней в документации по КЗК2. Для восьмерки - в документации. Формировать ключ лицензии можно любым удобным для вас способом. Например, преобразованием УНП по известному одному лишь вам алгоритму. Результат преобразования - и есть ваш ключ лицензии. Говорите, грамотная организация зашиты... А если это 8.2 и работает в режиме тонкого клиента или через web? Проблем с загрузкой внешних компонент защиты не будет?
 
R

randa

vitfil

не надо так грузить... :D
все дается ведь с опытом....

видел конфы практически 50% вынесено в dll
т.е. открываешь модуль, а там только процедура загрузки внешней компоненты, и все вынесено в dll
только непомню это была 7 или 8 была
как думаете насколько реально это сделать!?

"Для восьмерки - в документации." в какой именно документации
Руководство разработчика!?

"А если это 8.2 и работает в режиме тонкого клиента или через web? Проблем с загрузкой внешних компонент защиты не будет? "

- наверно будет, даже незнаю, если честно 8.2 только на 1c.ru в демонстрационном режиме видел, мне бы с 8.1 разобраться:please:
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!