Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-04-18, 07:17x



Odpowiedz w temacie  [ Posty: 9 ] 
Wywołanie funkcji napisanej w .NET dla modułu Handel 
Autor Wiadomość

Rejestracja: 2017-05-30, 09:59
Posty: 18
Pomógł: 1
Post Wywołanie funkcji napisanej w .NET dla modułu Handel
Witam użytkowników forum mojasymfonia.pl
piszę dodatek do Symfonii, który będzie przez web service przesyłał dane na serwer. Czy jest możliwość uruchomienia za pomocą raportu AMBasic funkcji ze skompilowanej dll podając jej nazwę i parametry? Mam na myśli coś podobnego do viewtopic.php?p=346#p346 ale chcę użyć C#. W części C# będę używał https://msdn.microsoft.com/en-us/library/debx8sh9(v=vs.110).aspx Mam zamiar wywołać funkcję pobierającą kilka stringów i zwracającą string oraz wyświetlić ten string jako komunikat, prawdopodobna sygnatura: string response= WyslijNaServer(string numerFaktury, string kwota, string NIPNabywcy, string terminPlatnosci)
Jak można to zrobić? Czy wystarczy wsadzić w odpowiednie miejsce plik .dll i wywołać funkcję po nazwie? Do tej pory programowałem w enovie i wyglądało to trochę inaczej.


2017-05-31, 11:18
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
najprościej wywołaj program z parametrami.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2017-05-31, 12:03
Wyświetl profil

Rejestracja: 2017-05-30, 09:59
Posty: 18
Pomógł: 1
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
Jest to tego jakieś polecenie w AMBasic? Przeszukałem chyba całą dokumentację i nie znalazłem. Znalazłem Run ale on uruchamia inne raporty i Execute który uruchamia plik .exe i nie ma możliwości wstawienia parametrów.
Jak się nazywa funkcja która odpali moją dll?
W jakim katalogu powinien znajdować się plik dll?


2017-05-31, 12:22
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
Ta wiadomość była pomocna.(1)
arnoldinho pisze:
Jest to tego jakieś polecenie w AMBasic? Przeszukałem chyba całą dokumentację i nie znalazłem. Znalazłem Run ale on uruchamia inne raporty i Execute który uruchamia plik .exe i nie ma możliwości wstawienia parametrów.


możesz użyć viewtopic.php?p=24558#p24558

arnoldinho pisze:
Jak się nazywa funkcja która odpali moją dll?


Kod:
dispatch


arnoldinho pisze:
W jakim katalogu powinien znajdować się plik dll?


obojętnie bo jest i tak rejestrowany w systemie

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2017-05-31, 12:50
Wyświetl profil

Rejestracja: 2017-05-30, 09:59
Posty: 18
Pomógł: 1
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
dla kodu
Kod:
namespace InvoicesExporter
{
    [ComVisible(true)]
    public class Class1
    {
        Class1()
        {
        }
        public string Hello(string name)
        {
            return "Hello "+ name;
        }

        [ComRegisterFunction()]
        public static void RegisterClass(string key)
        {
            // Strip off HKEY_CLASSES_ROOT\ from the passed key as I don't need it
            StringBuilder sb = new StringBuilder(key);
            sb.Replace(@"HKEY_CLASSES_ROOT\", "");

            // Open the CLSID\{guid} key for write access
            RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(), true);

            // And create the 'Control' key - this allows it to show up in
            // the ActiveX control container
            RegistryKey ctrl = k.CreateSubKey("Control");
            ctrl.Close();

            // Next create the CodeBase entry - needed if not string named and GACced.
            RegistryKey inprocServer32 = k.OpenSubKey("InprocServer32", true);
            inprocServer32.SetValue("CodeBase", Assembly.GetExecutingAssembly().CodeBase);
            inprocServer32.Close();

            // Finally close the main key
            k.Close();
        }

        [ComUnregisterFunction()]
        public static void UnregisterClass(string key)
        {
            StringBuilder sb = new StringBuilder(key);
            sb.Replace(@"HKEY_CLASSES_ROOT\", "");

            // Open HKCR\CLSID\{guid} for write access
            RegistryKey k = Registry.ClassesRoot.OpenSubKey(sb.ToString(), true);

            // Delete the 'Control' key, but don't throw an exception if it does not exist
            k.DeleteSubKey("Control", false);

            // Next open up InprocServer32
            RegistryKey inprocServer32 = k.OpenSubKey("InprocServer32", true);

            // And delete the CodeBase key, again not throwing if missing
            k.DeleteSubKey("CodeBase", false);

            // Finally close the main key
            k.Close();
        }
    }
}

pokazuje mi komunikat jak w załączniku,
dodałem również
- w zakładce Build zaznacz Register for COM interop
- w zakładce Application przycisk w Assembly Information zaznacz Make assembly COM-Visible
o czym pisałeś w innym temacie,
przeniosłem dll do katalogu z symfonią i dalej pokazuje się błąd
Gdzie może leżeć przyczyna?

Testowałem przykład z kalkulatorem i działa ale wolałbym nie tworzyć pliku exe


Załączniki:
blad1.png
blad1.png [ 57.6 KiB | Przeglądany 3676 razy ]
2017-05-31, 14:40
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
Jak budujesz projekt to tworzona jest biblioteka dll rejestrowana w systemie. Jak ja przenosisz to jej nie znajdzie przy tworzeniu obiektu.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2017-05-31, 14:51
Wyświetl profil

Rejestracja: 2017-05-30, 09:59
Posty: 18
Pomógł: 1
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
W folderze z symfonią wrzuciłem kopię zostawiając w też dll w folderze z projektem, więc to chyba nie o to chodzi. Doczytałem o tym rejestrowaniu w rejestrze i nie wiem czy na pewno ten program sam się tam rejestruje, czy sam mam go zarejestrować? Użyłem tego tutoriala https://kb.blackbaud.com/articles/Article/48280 i dostałem nastepujący błąd
"Moduł C:\...\InvoicesExporter\bin\Release\InvoicesExporter.dll został załadowany ale nie odnaleziono punktu wejścia DllRegisterServer.
Upewnij się, że plik C:\...\InvoicesExporter\bin\Release\InvoicesExporter.dll InvoicesExporter.dll jest prawidłowym plikiem DLL lub OCX, a następnie spróbuj ponownie".
Co może być nie tak z tą dll?


2017-05-31, 15:28
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
Jeżeli Symfonia jest na tej samej maszynie co VisualStudio to podczas budowania projektu kontrolka jest rejestrowana.

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2017-05-31, 16:26
Wyświetl profil

Rejestracja: 2017-05-30, 09:59
Posty: 18
Pomógł: 1
Post Re: Wywołanie funkcji napisanej w .NET dla modułu Handel
Ta wiadomość była pomocna.(1)
Udało się, dziękuje za pomoc.
Rozwiązanie okazało się o wiele prostsze niż się spodziewałem.
Wystarczyło utworzyć klasę wg. tego tutoriala
https://docs.microsoft.com/en-us/dotnet ... -com-class


2017-06-06, 12:24
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 9 ] 
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki Kontrolka UserControl .NET w Handel Premium

[ Przejdź na stronę: 1, 2 ]

w Programowanie

Darek258

15

7128

2013-11-19, 22:16

koronen Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Kontrolki .NET w formatkach AMBASIC Handel > 2015

w Programowanie

Kartomiotacz

1

2137

2016-12-30, 20:59

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Problem z uruchomieniem modułu Handel zintegrowanego z FK

w Programy Handlowe

wis

2

3180

2022-12-20, 13:19

wis Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Wczytywanie pliku xml za pomocą funkcji Dispatch

w Programowanie

Pedro

4

2923

2014-05-08, 08:45

Pedro Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 1 gość


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant