• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Запуск web сервиса

C

CL1F

На удаленной ситеме (1С) крутится веб сервис

Документы согласуются в СЭД, и при изменении статуса документа, требуется передавать его в 1С

Подскажите схему как реализовать. Можно ли запускать веб сервисы как агенты с передачей параметров?
 

garrick

Lotus Team
26.10.2009
1 351
151
BIT
188
Может быть вам нужен клиент web-сервиса - Web Service Consumer? Который смог бы подключаться к web-сервису 1С и передавать ему данные.
 
C

CL1F

Допустим у нас есть WS на лотусе в БД INPUT.NSF
Код:
Class DatabaseInfo
    Private session As NotesSession
    Private db As NotesDatabase
    
    Public Sub New ()
        Set session = New NotesSession
        Set db = session.CurrentDatabase
    End Sub
    
    Public Function doc_add (m As String) As String
        Dim doc As NotesDocument
        Set doc = db.CreateDocument
        Call doc.ReplaceItemValue("Form","WSDoc")       
        Call doc.ReplaceItemValue("WS","DOC_ADD")
        Call doc.ReplaceItemValue("Date_add",Now())
        Call doc.ReplaceItemValue("Field_1","Val_1")
        Call doc.ReplaceItemValue("Field_2","Val_2")
        Call doc.ReplaceItemValue("Field_3","Val_3")
        Call doc.ReplaceItemValue("Field_4","Val_4")       
        Call doc.ReplaceItemValue("Message",m)
        Call doc.Save(True, True)
        
        doc_add = "Add doc " & doc.UniversalID & " in " & db.Title & ""
    End Function
    
    
    Public Function doc_get () As String
        doc_get = db.Title
    End Function
    
    
End Class

Ссылка формируется

В нем запускаем функцию doc_add и вводим сообщение.

Можете не большой пример предоставить, если требуется передать из БД OUTPUT.NSF данные из документа, например значение статуса, через WS Consummers, подразумевается что запуск WSC будет из агента или из формы QuerySave
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
если требуется передать из БД OUTPUT.NSF данные из документа, например значение статуса, через WS Consummers
используйте java (агент, наппример), там и примеров тьма и есть
[doublepost=1514197418,1514197010][/doublepost]всякие видео для WS
 
C

CL1F

Иногда не понимаю, почему не бросить небольшой пример, нет же, надо послать куда нибудь ...

Web Service Consumer - WSC_DOC
Код:
%INCLUDE "lsxsd.lss"
Class Doc_add As PortTypeBase
    
    Sub NEW
        Call Service.Initialize ("UrnDefaultNamespacedoc_addService", _
        "doc_addService.Domino", "http://server/input.nsf/doc?OpenWebService", _
        "Doc_add")
        
    End Sub
    
    Function DOC_ADD(M As String) As String
        Let DOC_ADD = Service.Invoke("DOC_ADD", M)
    End Function
    
    Function DOC_GET() As String
        Let DOC_GET = Service.Invoke("DOC_GET")
    End Function
    
End Class

Агент - Call_WSC
Код:
Option Public

Use "WSC_DOC"
Sub Initialize
    On Error GoTo ops
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim ErrorMsg As String
    Dim agent As NotesAgent

    Set agent = s.Currentagent
    Print "<h1>" & agent.Name & ": START" & "</h1><br>" 
    Print s.Effectiveusername & "<br>"
    
    Dim mess As String
    mess = "Message in - " & Now()
    
    Dim ws As New Doc_add
    
    Print ws.Doc_add(mess)  
gotoend:
    Exit Sub
ops:
    ErrorMsg = "Error in Agent '" & agent.Name & "'# " & Err & | - | & LSI_Info(2) & " - Line: " & CStr(Erl) & " - " & Error$ & " "
    Print ErrorMsg & "<br>"
    MsgBox ErrorMsg
End Sub
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
Иногда не понимаю, почему не бросить небольшой пример, нет же, надо послать куда нибудь ...
иногда не понимаю - зачем использовать ЛС, если он неудобен (в контексте решаемой задачи), имеет кучу особенностей (в части WS особенно), когда можно использовать весь спектр технологий и библиотек
[doublepost=1514284057,1514283823][/doublepost]и да... 1Це может и REST использовать

и не долбаться с WS
[doublepost=1514288496][/doublepost]еще REST есть и в домине, раз 100500 говорил здесь
грубо говоря - можно вовсе внешний сервис сделать, кот. будет брать из домины и класть в 1Це без кода в домине и 1Це
код набаянить на JS (ну или на чем хошь)
и да - по ссылке есть пример (ажно куча кода для REST набаянено)
читайте доки по домине - они рулёз ;)
 
Последнее редактирование:
Мы в соцсетях:

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