ООО "ПМ-Студия" Мы рады Вас удивить!
   
Главная
Программы
KitchenDraw
Загрузить
Примеры

Описание скрипта связи KDVB1C и 1С Предприятие 7.7

Для передачи данных использован язык скриптов (VBScript), входящий в комплект Windows. Это сделано для обеспечения возможности изменения алгоритма передачи непосредственно у заказчика, т.к. исходный текст скрипта в KDVB1C, доступен для редакции. При нажатии на кнопку связи с 1С, KDVB1C создаёт форму и несколько визуальных элементов на ней. После загрузки формы в память, программа грузит скрипт и передает ему управление. Путем редактирования скрипта, можно задействовать расположенные на форме элементы. Всего на форме определены три кнопки (CommandButton), три метки (Label), три текстовых поля. Их можно использовать для определения пользовательского интерфейса. Для обработки нажатий кнопок cmd2 и cmd3 – используйте предопределенные имена процедур обработчикв событий. Например для обработки события нажатия кнопки cmd2 нужно в скрипте определить процедуру:  Sub cmd2() …..  EndSub. В скрипте таким образом определена реакция на нажатие кнопки cmd1.

'Файл скрипт, для организации связи KDVB1C с 1С Предприятие 7.7
'ООО "ПМ-Студия" Copyryght 2004г
'-------------------------------------------------------
'Предопределенные объекты
'form - ссылка на текущую форму
'rs - ссылка на recordset
'rsJournal - ссылка на recordset со строкой текущего заказа
'bd1c - ссылка на базу данных 1C Предприятие 7.7
'form.gridSt1c - грид (MSFlexGrid)
'
'Предопределенные процедуры
'form.ShowMes(s as string) - Вывести строку в окно Log из скрипта (для отладки)
'form.FormatM(z as variant, s as string) as string - функция Format для форматирования дат.
'
'Обратите внимание, что вызовы функций 1С необходимо записывать
'в англоязычной транскрипции.

'Так как я так и не определил, как из скрипта вставить control в форму, то
'я решил разместить в форме несколько уже готовых элементов. Их имена следующие:
'cmd1, cmd2, cmd3 - коммандная кнопка
'lb1, lb2, lb3 - label
'txt1, txt2, txt3 - текстовое поле
'Что бы воспользоваться этими элементами, их надо передвинуть в форму.
'предварительно сделать их доступными

'Выключим лишние элементы
Form.cmd1.enabled=false
Form.cmd2.enabled=false
Form.cmd3.enabled=false
Form.lb1.enabled=false
Form.lb2.enabled=false
Form.lb3.enabled=false
Form.txt1.enabled=false
Form.txt2.enabled=false
Form.txt3.enabled=false
'Воспользуемся первой кнопкой, Передвинем кнопку cmd1, подпишем её
Form.cmd1.enabled=true
Form.cmd1.Top = 4320
Form.cmd1.Left = 180
Form.cmd1.Width = 1935
Form.cmd1.Height = 315
Form.cmd1.Caption = "Работа"

'Подпишем заголовок формы
Form.Caption = "Связь с 1С Бухгалтерия 7.7"

'Вставим колонки в грид и подпишем их
Form.gridSt1c.Cols = 4
Form.gridSt1c.AddItem ""
Form.gridSt1c.ColWidth(0) = 0
Form.gridSt1c.ColWidth(1) = 1000
Form.gridSt1c.ColWidth(2) = 3000
Form.gridSt1c.ColWidth(3) = Form.gridSt1c.Width - (Form.gridSt1c.ColWidth(1) + Form.gridSt1c.ColWidth(2)) - 100
Form.gridSt1c.TextMatrix(0, 1) = "Заказ №"
Form.gridSt1c.TextMatrix(0, 2) = "Контрагент"
Form.gridSt1c.TextMatrix(0, 3) = "Комментарий"
Form.gridSt1c.row = 0

'Зададим выравнивание колонок грида
For i = 1 To 3
    Form.gridSt1c.col = i 'Активная колонка
    Form.gridSt1c.CellAlignment = 4 'Выравнивание по центру
Next

Form.gridSt1c.RemoveItem (2) 'Удалим вторую строку, т.к. она вставляется по умолчанию
'К моменту открытия формы, мы уже имеем готовый объект bd1c - ссылка на открытую базу 1С
'В гриде отобразим список документов "Счет" из 1С
'Прочитаем документы из 1С


Form.lblHeadGrid.Caption ="Журнал документов СЧЕТ из 1с за "+Form.FormatM(rsJournal.Fields("DataCreate").Value,"DD.MM.YY")
ClearGrid 'Очистим грид
AddGrid 'Заполним грид списком документов из 1С

'--------------------------------------------------------

‘Эта процедура для проверки работоспособности скрипта
Sub Test()
    Dim MyControl
    For Each MyControl In Form.Controls
        Form.ShowM (MyControl.Name)
    Next

    'Проверим работу rs
    Form.ShowM "------------------------------------"
    For each MyControl in rsJournal.Fields
        Form.ShowM (MyControl.Name)
    Next
    Form.ShowM cstr(rsJournal.Fields("DataCreate").Value)
End Sub

'--------------------------------------------------------
'Осуществляет связь KDVB1C с 1С
'Имя процедуры cmd1 - предопределено (имя кнопки)

Sub cmd1()
    dim Nom1
    dim Nom2
    dim NomDok
    dim dScet

    Set dScet = bd1c.CreateObject("Документ.Счет")
    Set Nom1 = bd1c.CreateObject("Справочник.Номенклатура")
    Set Nom2 = bd1c.CreateObject("Справочник.Номенклатура")

    dScet.New() 'Формируем новый документ Счет
    dScet.SetAttrib "НомерДок", (rsJournal.Fields("NomerZ").Value)
    dScet.SetAttrib "ДатаДок", (rsJournal.Fields("DataCreate").Value)
    dScet.Write() 'Записываем документ
End Sub

'--------------------------------------------------------
'Очистить грид

Sub ClearGrid()
    dim i
    For i = 2 To Form.gridSt1c.Rows - 1
        Form.gridSt1c.RemoveItem (1)
    Next
    Form.gridSt1c.TextMatrix(1, 1) = ""
    Form.gridSt1c.TextMatrix(1, 2) = ""
    Form.gridSt1c.TextMatrix(1, 3) = ""
End Sub

'--------------------------------------------------------
'Заполнить грид
Sub AddGrid()
    dim dScet
    dim i
    dim DateDok

    Set dScet = bd1c.CreateObject("Документ.Счет")
    i = 1
    DateDok = rsJournal.Fields("DataCreate").Value 'Читаем дату документа из recordset журнала
    If 1 = dScet.SelectDocuments((DateDok), (DateDok)) Then         'Есть документы в выборке
        Do While dScet.GetDocument() = 1
            If > 1 Then
                Form.gridSt1c.AddItem ""
            End If
            'Так как нельзя в скрипте использовать синтаксис 1С Пример: Спр.Наименование="Иваноов"
            'Приходится использовать английскую транскрипцию 1С вызовов
            Form.gridSt1c.TextMatrix(i, 1) = Trim(dScet.GetAttrib("НомерДок"))
            Set kagent = dScet.GetAttrib("Контрагент")
            Form.gridSt1c.TextMatrix(i, 2) = Trim(kagent.GetAttrib("Наименование"))
            Form.gridSt1c.TextMatrix(i, 3) = Trim(dScet.GetAttrib("Комментарий"))
            i = i + 1
        Loop
    End If
End Sub



Сайт создан в системе uCoz