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

Тема в разделе "1C и всё что с ней связано", создана пользователем randa, 1 апр 2010.

Статус темы:
Закрыта.
  1. randa

    randa Гость

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

    вот есть ссылка шаблона в Delphi, где и как нужно отобразить код 1С-ки?!
    http://kb.mista.ru/article.php?id=319
    там пример приведен для 7.7, нужно реализовать в 8.1

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Если для восьмерки, используйте технологию COM. Восьмерка очень даже хорошо работает с СОМ-объектами.
     
  3. evgenyatam

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    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;

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

    randa Гость

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

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

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

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

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

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    Объект = Новый("AddIn.моя"); - неправильно. правильно Объект = Новый ComObject("AddIn.моя");
     
  6. randa

    randa Гость

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

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

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    в dll обычно выносят вычисления, потому как печать повторить очень даже просто. а вот понять бизнеслогику и воспроизвести ее бывает не то что "непросто" - невозможно практически!
     
  8. evgenyatam

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    1. На паскале толком нет хороших бесплатных компонентов для печати.
    2. такая как у вас печать делается на 1с за несколько минут и если ее вынести в длл - то кому надо - выкинут длл и напишут на 1с.
    3. из паскаля достаточно сложно управлять 1с - классами. обычно дллкам передают простые типы данных.
     
  9. randa

    randa Гость

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

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

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

    vitfil IT-интегратор

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

    randa Гость

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

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

    vitfil IT-интегратор

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

    randa Гость

    vitfil

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

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

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

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

    - наверно будет, даже незнаю, если честно 8.2 только на 1c.ru в демонстрационном режиме видел, мне бы с 8.1 разобраться:please:
     
Загрузка...
Похожие Темы - нужно код 1С
  1. victory
    Ответов:
    1
    Просмотров:
    1.218
  2. adolf93
    Ответов:
    0
    Просмотров:
    999
  3. Edip
    Ответов:
    1
    Просмотров:
    1.018
  4. daniilak
    Ответов:
    0
    Просмотров:
    925
  5. netuser
    Ответов:
    1
    Просмотров:
    2.643
Статус темы:
Закрыта.

Поделиться этой страницей