Имя: Пароль:
1C
1С v8
Модуля расширения веб-сервера wsap24.dll или wsap22.dll
0 Garykom
 
гуру
26.06.19
14:20
Еще никто не раскурачивал на интерфейсы?

Чтобы вместо апача (или вместо iis с wsisapi.dll) через нечто другое с 1С работать?

По идее это
https://habr.com/ru/post/50909/

И можно
http://apache2dev.ru/2007/03/24/chto-est-moduli-apache2-pod-microsoft-windows/

Я вот nginx напрямую хочу или даже чем то внешним вызывать обработичики http-сервисов в 1С.
1 arsik
 
гуру
26.06.19
14:42
Вот заняться людям нечем.
2 Garykom
 
гуру
26.06.19
15:20
(1) Чем же например?

Пилить очередную формочку/отчетик или искать баги в типовых/обмене и исправлять? Надоело.
3 arsik
 
гуру
26.06.19
15:47
(2) Ну ты прыгаешь с одного на другое. Сделай уже натив апи для 1С на ГО.
4 Вафель
 
26.06.19
15:48
(0) вот внедришь так, а потом хер платформу обновишь
5 oleg_km
 
26.06.19
21:21
Так там же внутреннее взаимодействие расширение с сервером и 1Сном внутреннем формате. С таким успехом можно взламывать формат взаимодействия клиента и сервера. Может есть адаптер для nginx, преобразующий запросы в формат iis например?
6 Garykom
 
гуру
26.06.19
21:29
(3) Уже сделал.
И там напоролся на траблу когда веб-сервер прикрутил на Го.

Вот моя ВК и Golang присылают в 1С входящий http-запрос, я его благополучно передаю в 1С через "ВнешнееСобытие", обрабатывают там а дальше облом легкий.

Как вернуть из 1С в ВК и в Golang ответ чтобы через http-ответ ушел клиенту?
ВнешнееСобытие не возвращает ничего в ВК и оно через очередь работает, т.е. не блокируемое.

Надо как то извращаться с циклом ожидания в Golang, ждать пока в какой то переменной нечто появится (1С туда запишет из кода внешнего события) и это брать и отправлять.
7 Garykom
 
гуру
26.06.19
21:30
(5) Ссылки смотрели в (0)?
Я предложил чем то другим эмулировать апач, 1С даже не в курсе будет что не апач с ней работает.
8 Garykom
 
гуру
26.06.19
21:32
(6)+

func StartWeb() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if AddInFunc == nil {
            fmt.Println("AddInFunc = nil!")
        } else {
            C.invoke(C.closure(AddInFunc))
        }
        // Тут надо как то из 1С получить ответ обработки запроса
        w.Write([]byte("Hello, 1С!"))
    })
    
    port := "1111"
    if err := http.ListenAndServe(":"+port, nil); nil != err {
        fmt.Println(err)
    }
}
9 Garykom
 
гуру
26.06.19
21:35
(8) Пока конвертацию между типами данных и передачу в 1С еще не сделал, но сам ExternalEvent уходит в 1С и там показывается.


VOID CALLBACK Event() {
    if (!pAsyncEvent)
        return;
    wchar_t *who = L"ComponentNative", *what = L"Golang";

    //wchar_t *wsdata = new wchar_t[10];
    wchar_t *wsdata = L"Data";

    pAsyncEvent->ExternalEvent(who, what, wsdata);
}

void callBack() {
    Event();
}
10 Garykom
 
гуру
26.06.19
21:37
Ржачно что dll на Go с веб сервером на борту 11 мегабайт ))
11 Garykom
 
гуру
26.06.19
21:38
(8) (9) AddInFunc=callBack()