Импорт начальных данных в подсистему Отдел Кадров

Материал из GedeminWiki
Перейти к: навигация, поиск

Импорт осуществляется на основе стандартной процедуры импорта из CSV файла. В процессе — создаются два приказа на текущую дату:

  • Приказ о приеме на работу с номером "Импорт 1". РУИД типа документа "147017326_119619099".
  • Приказ о внутреннем переводе с номером "Импорт 2". РУИД типа документа "147017335_119619099".

Позиции указанных приказов заполняются следующим образом:

Кадровое движение Исходные данные Создаваемые записи
Сотрудник принят на основное место работы. Внутренних перемещений не было. В исходном файле присутствует только одна запись для сотрудника. Поле Дата последнего приказа о переводе не заполнено. Добавляется позиция только в первый приказ.
Сотрудник принят на основное место работы. Были внутренние перемещения. В исходном файле присутствует только одна запись для сотрудника. Поле Дата последнего приказа о переводе содержит значение большее, чем Дата приказа о приеме. Добавляется позиция в оба приказа.
Сотрудник числится на предприятии по основному месту работы и как внутренний совместитель. В исходном файле присутствуют две записи. У первой — поле Вид работы должно содержать "01", у второй -- "02". Порядок записей в данном случае принципиален! Дата приказа о совмещении должна быть больше или равна дате приказа о приеме на работу. Как минимум, добавятся две записи в первый приказ. Одна на основное место работы, вторая — на совмещение. Если были перемещения, т.е. поле Дата последнего приказа о переводе содержит значение большее, чем Дата приказа о приеме, то добавятся соответствующие записи во второй приказ.
Сотрудник сначала был принят как внешний совместитель, а позже — как основной работник. Данные не должны попасть в исходный файл импорта. Кадровое движение по такому сотруднику должно быть создано вручную.

Если поле Вид работы содержит не числовой код, а наименование, то в процессе импорта записи типа "КОНТРАКТ" превращаются в "ОСНОВНОЙ", "СОВМЕСТИТЕЛЬ ПО КОНТРАКТУ" в "ВНУТРЕННИЙ СОВМЕСТИТЕЛЬ" и т.п. Оригинальный вид работ из исходного файла сохраняется в логе системы и может быть использован для дальнейшей ручной корректировки данных.

Для текущей рабочей организации создается подразделение "Импорт данных", куда помещаются все подразделения и записи контактов, создаваемые в процессе импорта. В дальнейшем, необходимо в ручном режиме объединить эти подразделения с существующими на базе данных.

Структура файла

Поля, отмеченные звездочкой, обязательны для заполнения.

# поля Наименование и допустимые значения Тип данных Поле в БД
1 Фамилия * VARCHAR(20) GD_PEOPLE.SURNAME
2 Имя * VARCHAR(20) GD_PEOPLE.FIRSTNAME
3 Отчество VARCHAR(20) GD_PEOPLE.MIDDLENAME
4 Дата рождения * DATE GD_PEOPLE.BIRTHDAY
5 Место рождения, город VARCHAR(32) GD_PEOPLE.USR$WG_BCITY
6 Место рождения, район VARCHAR(32) GD_PEOPLE.USR$WG_BDISTRICT
7 Место рождения, область VARCHAR(20) GD_PEOPLE.USR$WG_BREGION
8 Место рождения, страна VARCHAR(32) GD_PEOPLE.USR$WG_BCOUNTRY
9 Серия и номер паспорта VARCHAR(40) GD_PEOPLE.PASSPORTNUMBER
10 Дата выдачи паспорта DATE GD_PEOPLE.PASSPORTISSDATE
11 Орган, выдавший паспорт VARCHAR(40) GD_PEOPLE.PASSPORTISSUER
12 Дата действия паспорта DATE GD_PEOPLE.PASSPORTEXPDATE
13 Личный номер * VARCHAR(40) GD_PEOPLE.PERSONALNUMBER
14 Страховой номер * VARCHAR(40) GD_PEOPLE.USR$INSURANCENUMBER
15 Адрес: индекс VARCHAR(20) GD_PEOPLE.HZIP
16 Адрес: страна VARCHAR(20) GD_PEOPLE.HCOUNTRY
17 Адрес: населенный пункт VARCHAR(20) GD_PEOPLE.HCITY
18 Адрес: улица, дом, корпус, квартира VARCHAR(60) GD_PEOPLE.HADDRESS
19 Телефон VARCHAR(20) GD_PEOPLE.HPHONE
20 Пол (M -- мужской, F -- женский) CHAR(1) GD_PEOPLE.SEX
21 Образование (Высшее, незаконченное высшее, общее среднее, среднее специальное, неполное среднее, начальное общее, базовое профессионально-техническое) VARCHAR(40) USR$WG_PERSONALCARD.USR$EDUCATIONTYPEKEY - > USR$WG_EDUCTIONTYPE.USR$NAME
22 Семейное положение (Женат, замужем, вдовец, вдова, холост, не замужем, разведена, разведен) VARCHAR(20) USR$WG_PERSONALCARD.USR$FAMSTATUSKEY -> USR$WG_FAMSTATUS.USR$NAME
23 Национальность VARCHAR(24) USR$WG_PERSONALCARD.USR$NATIONALITY -> USR$WG_NATION.USR$NAME
24 Годность к воинской службе VARCHAR(180) USR$WG_PERSONALCARD.USR$MR_FITNESS - > USR$WG_MARTFITNESS.USR$NAME
25 Звание VARCHAR(60) USR$WG_PERSONALCARD.USR$MR_RANKKEY - > USR$WG_MILRATE.USR$NAME
26 Военкомат VARCHAR(60) USR$WG_PERSONALCARD.USR$MR_REGOFFICEKEY - > GD_CONTACT.NAME
27 Военно-учетная специальность (ВУС) INTEGER USR$WG_PERSONALCARD.USR$MR_PROFKEY -> USR$WG_MRS.USR$NUMBER
28 Табельный номер VARCHAR(10) USR$WG_MOVEMENTLINE.USR$LISTNUMBER
29 Дата приказа о приеме * DATE USR$WG_MOVEMENTLINE.USR$DATEBEGIN
30 Номер приказа о приеме (Это поле необязательно для заполнения. При импорте, все люди попадают в один приказ с номером Импорт 1) VARCHAR(20) GD_DOCUMENT.NUMBER
31 Дата последнего приказа о переводе DATE USR$WG_MOVEMENTLINE.USR$DATEBEGIN
32 Номер последнего приказа о переводе (Это поле необязательно, обычно людей при импорте сбрасывают в один приказ) VARCHAR(20) GD_DOCUMENT.NUMBER
33 Текущая должность VARCHAR(60) USR$WG_MOVEMENTLINE.USR$POSITIONKEY - > WG_POSITION.NAME
34 Текущее подразделение VARCHAR(60) USR$WG_MOVEMENTLINE.USR$DEPTKEY - > GD_CONTACT.NAME
35 Форма оплаты труда (Оклад, Сдельно, Повременно, Не ниже среднего. Могут быть свои типы, но первые четыре должны называться так) VARCHAR(20) USR$WG_MOVEMENTLINE.USR$PAYFORMKEY - > USR$WG_PAYFORM.USR$NAME
36 Вид работы (указывается код: "01" -- основная; "02" -- внутренний совместитель; "03" -- внешний совместитель. Кавычки не являются частью кода. Присутствие нуля -- обязательно) VARCHAR(20) USR$WG_MOVEMENTLINE.USR$KINDOFWORKKEY -> USR$WG_KINDOFWORK.USR$NAME
37 Характер работы (Постоянно, Временно, Сезонно, С оплатой по ср., Не ниже ср. Могут быть и свои типы) VARCHAR(20) USR$WG_MOVEMENTLINE.WORKCHARACTERKEY - > USR$WG_WORKCHARACTER.USR$NAME
38 Разряд INTEGER USR$WG_MOVEMENTLINE.USR$PASTCAT
39 Оклад NUMERIC(16, 4) USR$WG_MOVEMENTLINE.USR$MSALARY
40 Наименование учебного заведения VARCHAR(60) USR$WG_EDUCATION. USR$ACADEMYKEY - > GD_CONTACT.NAME
41 Код специальности VARCHAR(60) USR$WG_SPECGROUP_NEW. USR$OKSO
42 Специальность VARCHAR(60) USR$WG_EDUCATION. USR$SPECKEY
43 Код квалификации VARCHAR(20) USR$WG_PROFESSIONS. USR$OKPDTR
44 Квалификации VARCHAR(60) USR$WG_EDUCATION.USR$PROFESSIONKEY
45 Серия диплома,номер диплома, дата выдачи диплома VARCHAR(20) USR$WG_EDUCATION.USR$DIPLOMA
46 Стаж сотрудника DATE

Повторный ввод начальных данных

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

Макрос импорта

Используются вспомогательные скрипт-функции стандартного импорта из CSV файла.

Sub I2W_ImportData
 
  Dim Creator, Dlg
  Set Creator = New TCreator
  Set Dlg = Creator.GetObject(nil, "TOpenDialog", "")
  If Not Dlg.Execute Then Exit Sub
 
  Dim fso, f
 
  ReDim FieldValues(45)
  ReDim FieldDefs(45)
  FieldDefs(0)  = Array("surname",               "S", 20, True)
  FieldDefs(1)  = Array("firstname",             "S", 20, True)
  FieldDefs(2)  = Array("middlename",            "S", 20, False)
  FieldDefs(3)  = Array("birthday",              "D",  0, True)
  FieldDefs(4)  = Array("usr$wg_bcity",          "S", 32, False)
  FieldDefs(5)  = Array("usr$wg_bdistrict",      "S", 32, False)
  FieldDefs(6)  = Array("usr$wg_bregion",        "S", 20, False)
  FieldDefs(7)  = Array("usr$wg_bcountry",       "S", 32, False)
  FieldDefs(8)  = Array("passportnumber",        "S", 40, False)
  FieldDefs(9)  = Array("passportissdate",       "D",  0, False)
  FieldDefs(10) = Array("passportissuer",        "S", 40, False)
  FieldDefs(11) = Array("passportexpdate",       "D",  0, False)
  FieldDefs(12) = Array("personalnumber",        "S", 40, True)
  FieldDefs(13) = Array("usr$insurancenumber",   "S", 40, True)
  FieldDefs(14) = Array("hzip",                  "S", 20, False)
  FieldDefs(15) = Array("hcountry",              "S", 20, False)
  FieldDefs(16) = Array("hsity",                 "S", 20, False)
  FieldDefs(17) = Array("haddress",              "S", 60, False)
  FieldDefs(18) = Array("hphone",                "S", 20, False)
  FieldDefs(19) = Array("sex",                   "S",  1, False)
  FieldDefs(20) = Array("usr$education",         "S", 40, False)
  FieldDefs(21) = Array("usr$maritalstatus",     "S", 20, False)
  FieldDefs(22) = Array("usr$nationalilty",      "S", 40, False)
  FieldDefs(23) = Array("usr$mr_fitness",        "S", 20, False)
  FieldDefs(24) = Array("usr$mr_rank",           "S", 60, False)
  FieldDefs(25) = Array("usr$mr_regoffice",      "S", 60, False)
  FieldDefs(26) = Array("usr$mr_prof",           "I",  0, False)
  FieldDefs(27) = Array("usr$listnumber",        "S", 10, False)
  FieldDefs(28) = Array("datebegin",             "D",  0, True)
  FieldDefs(29) = Array("begin_number",          "S", 20, False)
  FieldDefs(30) = Array("last_date",             "D",  0, False)
  FieldDefs(31) = Array("last_number",           "S", 20, False)
  FieldDefs(32) = Array("position",              "S", 60, False)
  FieldDefs(33) = Array("department",            "S", 60, False)
  FieldDefs(34) = Array("usr$wg_payform",        "S", 20, False)
  FieldDefs(35) = Array("usr$wg_kindofwork",     "S", 20, False)
  FieldDefs(36) = Array("usr$wg_workcharacter",  "S", 20, False)
  FieldDefs(37) = Array("usr$pastcat",           "I",  0, False)
  FieldDefs(38) = Array("usr$msalary",           "C",  0, False)
 
  FieldDefs(39) = Array("edu_USR$ACADEMYKEY",    "S", 60, False)
  FieldDefs(40) = Array("edu_USR$OKSO",          "S", 60, False)
  FieldDefs(41) = Array("edu_USR$SPECKEY",       "S", 60, False)
  FieldDefs(42) = Array("edu_USR$OKPDTR",        "S", 20, False)
  FieldDefs(43) = Array("edu_USR$PROFESSIONKEY", "S", 60, False)
  FieldDefs(44) = Array("edu_USR$DIPLOMA",       "S", 20, False)
  FieldDefs(45) = Array("USR$SENIORITY",         "D",  0, False)
 
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile(Dlg.FileName, 1)
 
  Dim ErrMsg, J, Res, Tr
 
  Set Tr = Creator.GetObject(nil, "TIBTransaction", "")
  Set Tr.DefaultDatabase = IBLogin.Database
  Tr.StartTransaction
 
  dim OrderDate, qOrder, qOrderMove
  set qOrder = Creator.GetObject(nil, "TIBSQL", "")
  qOrder.Transaction = Tr
  qOrder.SQL.Text = _
    "SELECT " & _
    "  ml.DOCUMENTKEY " & _
    "FROM USR$WG_MOVEMENTLINE ml " & _
    "WHERE ml.USR$EMPLKEY = :EmplKey " & _
    "  AND ml.USR$KINDOFWORKKEY = :KOW " & _
    "  AND ml.USR$MOVEMENTTYPE = 1 "
 
  set qOrderMove = Creator.GetObject(nil, "TIBSQL", "")
  qOrderMove.Transaction = Tr
  qOrderMove.SQL.Text = _
    "SELECT " & _
    "  ml.DOCUMENTKEY " & _
    "FROM USR$WG_MOVEMENTLINE ml " & _
    "WHERE ml.USR$EMPLKEY = :EmplKey " & _
    "  AND ml.USR$KINDOFWORKKEY = :KOW " & _
    "  AND ml.USR$DATEBEGIN = :DB " & _
    "  AND ml.USR$MOVEMENTTYPE = 2 "
 
 
  Dim AFolderKey, AImportDeptKey, Found
  AFolderKey = I2W_GetID(Tr, "TgdcFolder", "", _
    "name", "Импорт данных", _
    Array("name"), Array("Импорт данных"), False, Found)
  AImportDeptKey = I2W_GetID(Tr, "TgdcDepartment", "", _
    "name", "Импорт данных", _
    Array("parent", "name"), Array(IBLogin.CompanyKey, "Импорт данных"), False, Found)
 
  Dim FirstOrder, FirstOrderLine, FirstOrderDS
  Set FirstOrder = Creator.GetObject(nil, "TgdcUserDocument", "")
  FirstOrder.Transaction = Tr
  FirstOrder.SubType = "147017326_119619099"
  FirstOrder.Open
 
  Set FirstOrderDS = Creator.GetObject(nil, "TDataSource", "")
  FirstOrderDS.DataSet = FirstOrder
 
  Set FirstOrderLine = Creator.GetObject(nil, "TgdcUserDocumentLine", "")
  FirstOrderLine.SubType = FirstOrder.SubType
  FirstOrderLine.SubSet = "ByParent"
  FirstOrderLine.MasterSource = FirstOrderDS
  FirstOrderLine.MasterField = "documentkey"
  FirstOrderLine.DetailField = "parent"
  FirstOrderLine.Open
 
  FirstOrder.Insert
  FirstOrder.FieldByName("documentdate").AsDateTime = Date
  FirstOrder.FieldByName("number").AsString = "импорт 1"
  FirstOrder.Post
 
  I2W_Log Tr, "TgdcUserDocument", FirstOrder.ID, "Импорт: Создан приказ о приеме."
 
  Dim LastOrder, LastOrderLine, LastOrderDS
  Set LastOrder = Creator.GetObject(nil, "TgdcUserDocument", "")
  LastOrder.Transaction = Tr
  LastOrder.SubType = "147017335_119619099"
  LastOrder.Open
 
  Set LastOrderDS = Creator.GetObject(nil, "TDataSource", "")
  LastOrderDS.DataSet = LastOrder
 
  Set LastOrderLine = Creator.GetObject(nil, "TgdcUserDocumentLine", "")
  LastOrderLine.SubType = LastOrder.SubType
  LastOrderLine.SubSet = "ByParent"
  LastOrderLine.MasterSource = LastOrderDS
  LastOrderLine.MasterField = "documentkey"
  LastOrderLine.DetailField = "parent"
  LastOrderLine.Open
 
  LastOrder.Insert
  LastOrder.FieldByName("documentdate").AsDateTime = Date
  LastOrder.FieldByName("number").AsString = "импорт 2"
  LastOrder.Post
 
  I2W_Log Tr, "TgdcUserDocument", LastOrder.ID, "Импорт: Создан приказ о переводе."
 
  J = 1
  ErrMsg = ""
  Do While Not f.AtEndOfStream
    Res = I2W_Parse(f.ReadLine, FieldDefs, FieldValues)
 
 
    Select Case Res
      Case -99
        Dim MRSKey, PositionKey, PayFormKey, KindOfWorkKey, CharacterKey, DeptKey, MilOfficeKey
        Dim EducationTypeKey, FamStatusKey, NationKey, MartFitnessKey, MilRankKey, EmployeeKey
        Dim PersonalCardKey, KindOfWorkTemp
        Dim EducationKey, SpecGroupKey, ProfKey, AcademyKey, SenKey
 
        EducationTypeKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_EDUCTIONTYPE", _
          "usr$name", I2W_FieldByName("usr$education", FieldDefs, FieldValues), _
          Array("usr$name"), Array(I2W_FieldByName("usr$education", FieldDefs, FieldValues)), False, Found)
 
        FamStatusKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_FAMSTATUS", _
          "usr$name", I2W_FieldByName("usr$maritalstatus", FieldDefs, FieldValues), _
          Array("usr$name"), Array(I2W_FieldByName("usr$maritalstatus", FieldDefs, FieldValues)), False, Found)
 
        NationKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_NATION", _
          "usr$name", I2W_FieldByName("usr$nationalilty", FieldDefs, FieldValues), _
          Array("usr$name"), Array(I2W_FieldByName("usr$nationalilty", FieldDefs, FieldValues)), False, Found)
 
        MartFitnessKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_MARTFITNESS", _
          "usr$name", I2W_FieldByName("usr$mr_fitness", FieldDefs, FieldValues), _
          Array("usr$name"), Array(I2W_FieldByName("usr$mr_fitness", FieldDefs, FieldValues)), False, Found)
 
        MilRankKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_MILRATE", _
          "usr$name", I2W_FieldByName("usr$mr_rank", FieldDefs, FieldValues), _
          Array("usr$name"), Array(I2W_FieldByName("usr$mr_rank", FieldDefs, FieldValues)), False, Found)
 
        MilOfficeKey = I2W_GetID(Tr, "TgdcCompany", "", _
          "name", I2W_FieldByName("usr$mr_regoffice", FieldDefs, FieldValues), _
          Array("parent", "name"), Array(AFolderKey, I2W_FieldByName("usr$mr_regoffice", FieldDefs, FieldValues)), False, Found)
 
        MRSKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_MRS", _
          "usr$number", I2W_FieldByName("usr$mr_prof", FieldDefs, FieldValues), _
          Array("usr$number"), Array(I2W_FieldByName("usr$mr_prof", FieldDefs, FieldValues)), False, Found)
 
        PositionKey = I2W_GetID(Tr, "TgdcWgPosition", "", _
          "name", I2W_FieldByName("position", FieldDefs, FieldValues), _
          Array("name"), Array(I2W_FieldByName("position", FieldDefs, FieldValues)), False, Found)
 
        PayFormKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_PAYFORM", _
          "usr$name", I2W_FieldByName("usr$wg_payform", FieldDefs, FieldValues), _
          Array("usr$name"), Array(I2W_FieldByName("usr$wg_payform", FieldDefs, FieldValues)), False, Found)
 
        If IsNull(I2W_FieldByName("usr$wg_kindofwork", FieldDefs, FieldValues)) Then
          KindOfWorkTemp = "01"
        Else
          KindOfWorkTemp = Trim(I2W_FieldByName("usr$wg_kindofwork", FieldDefs, FieldValues))
 
          If Not IsNumeric(KindOfWorkTemp) Then
            Select Case UCase(KindOfWorkTemp)
              Case "ОСНОВНОЙ"
                KindOfWorkTemp = "01"
              Case "КОНТРАКТ"
                KindOfWorkTemp = "01"
              Case "СОВМЕСТИТЕЛЬ"
                KindOfWorkTemp = "02"
              Case Else
                If InStr(1, KindOfWorkTemp, "СОВМЕСТИТЕЛЬ ПО КОНТ", vbTextCompare) = 1 Then      ' СОВМЕСТИТЕЛЬ ПО КОНТРАКТУ
                  KindOfWorkTemp = "02"
                ElseIf InStr(1, KindOfWorkTemp, "СОВМЕСТИТЕЛЬ СО СТОР", vbTextCompare) = 1 Then  ' СОВМЕСТИТЕЛЬ СО СТОРОНЫ
                  KindOfWorkTemp = "03"
                ElseIf InStr(1, KindOfWorkTemp, "СОВМЕСТИТ.ПО КОНТР.С", vbTextCompare) = 1 Then  ' СОВМЕСТИТ.ПО КОНТР.СО СТОРОНЫ
                  KindOfWorkTemp = "03"
                Else
                  KindOfWorkTemp = "01"
                End If
            End Select
          End If
        End If
 
        If IsNumeric(KindOfWorkTemp) Then
          KindOfWorkKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_KINDOFWORK", _
            "usr$code", KindOfWorkTemp, _
            Array("usr$code", "usr$name"), Array(KindOfWorkTemp, KindOfWorkTemp), False, Found)
        Else
          KindOfWorkKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_KINDOFWORK", _
            "usr$name", KindOfWorkTemp, _
            Array("usr$name"), Array(KindOfWorkTemp), False, Found)
        End If
 
        CharacterKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_WORKCHARACTER", _
          "usr$name", I2W_FieldByName("usr$wg_workcharacter", FieldDefs, FieldValues), _
          Array("usr$name"), Array(I2W_FieldByName("usr$wg_workcharacter", FieldDefs, FieldValues)), False, Found)
 
        DeptKey = I2W_GetID(Tr, "TgdcDepartment", "", _
          "name", I2W_FieldByName("department", FieldDefs, FieldValues), _
          Array("parent", "name"), Array(AImportDeptKey, I2W_FieldByName("department", FieldDefs, FieldValues)), False, Found)
 
        If IsNull(DeptKey) Then
          DeptKey = AImportDeptKey
        End If
 
        ProfKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_PROFESSIONS", _
          "usr$name", I2W_FieldByName("edu_USR$PROFESSIONKEY", FieldDefs, FieldValues), _
          Array("usr$name", "USR$OKPDTR"), _
          Array(I2W_FieldByName("edu_USR$PROFESSIONKEY", FieldDefs, FieldValues), _
                I2W_FieldByName("edu_USR$OKPDTR", FieldDefs, FieldValues)), _
                False, Found)
 
        SpecGroupKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_SPECGROUP_NEW", _
          "USR$OKSO", I2W_FieldByName("edu_USR$OKSO", FieldDefs, FieldValues), _
          Array("usr$name", "USR$OKSO"), _
          Array(I2W_FieldByName("edu_USR$SPECKEY", FieldDefs, FieldValues), _
                I2W_FieldByName("edu_USR$OKSO", FieldDefs, FieldValues)), _
                False, Found)
 
        AcademyKey = I2W_GetID(Tr, "TgdcCompany", "", _
          "name", I2W_FieldByName("edu_USR$ACADEMYKEY", FieldDefs, FieldValues), _
          Array("parent", "name"), Array(AFolderKey, I2W_FieldByName("edu_USR$ACADEMYKEY", FieldDefs, FieldValues)), False, Found)
 
 
 
        Dim EmployeeName
        EmployeeName = I2W_FieldByName("surname", FieldDefs, FieldValues) & " " & _
          I2W_FieldByName("firstname", FieldDefs, FieldValues)
 
        EmployeeKey = I2W_GetID(Tr, "TgdcContact", "", "personalnumber", _
          I2W_FieldByName("personalnumber", FieldDefs, FieldValues), _
          Array("parent", _
            "name", _
            "surname", _
            "firstname", _
            "middlename", _
            "birthday", _
            "usr$wg_bcity", _
            "usr$wg_bdistrict", _
            "usr$wg_bregion", _
            "usr$wg_bcountry", _
            "passportnumber", _
            "passportissdate", _
            "passportissuer", _
            "passportexpdate", _
            "personalnumber", _
            "usr$insurancenumber", _
            "hzip", _
            "hcountry", _
            "hcity", _
            "haddress", _
            "hphone", _
            "sex"), _
          Array(_
            DeptKey, _
            EmployeeName, _
            I2W_FieldByName("surname", FieldDefs, FieldValues), _
            I2W_FieldByName("firstname", FieldDefs, FieldValues), _
            I2W_FieldByName("middlename", FieldDefs, FieldValues), _
            I2W_FieldByName("birthday", FieldDefs, FieldValues), _
            I2W_FieldByName("usr$wg_bcity", FieldDefs, FieldValues), _
            I2W_FieldByName("usr$wg_bdistrict", FieldDefs, FieldValues), _
            I2W_FieldByName("usr$wg_bregion", FieldDefs, FieldValues), _
            I2W_FieldByName("usr$wg_bcountry", FieldDefs, FieldValues), _
            I2W_FieldByName("passportnumber", FieldDefs, FieldValues), _
            I2W_FieldByName("passportissdate", FieldDefs, FieldValues), _
            I2W_FieldByName("passportissuer", FieldDefs, FieldValues), _
            I2W_FieldByName("passportexpdate", FieldDefs, FieldValues), _
            I2W_FieldByName("personalnumber", FieldDefs, FieldValues), _
            I2W_FieldByName("usr$insurancenumber", FieldDefs, FieldValues), _
            I2W_FieldByName("hzip", FieldDefs, FieldValues), _
            I2W_FieldByName("hcountry", FieldDefs, FieldValues), _
            I2W_FieldByName("hcity", FieldDefs, FieldValues), _
            I2W_FieldByName("haddress", FieldDefs, FieldValues), _
            I2W_FieldByName("hphone", FieldDefs, FieldValues), _
            I2W_FieldByName("sex", FieldDefs, FieldValues) _
          ), True, Found)
 
        EducationKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_EDUCATION", "usr$emplkey", _
          EmployeeKey, _
          Array("USR$EMPLKEY", "USR$ACADEMYKEY", "USR$PROFESSIONKEY", "USR$SPECKEY", "USR$DIPLOMA"), _
          Array(EmployeeKey, AcademyKey, ProfKey, SpecGroupKey, _
                I2W_FieldByName("edu_USR$DIPLOMA", FieldDefs, FieldValues)), _
          False, Found)
 
        SenKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_SENIORITY", "usr$emplkey", _
          EmployeeKey, _
          Array("USR$EMPLKEY", "USR$SENTYPE", "USR$DATEBEGIN"), _
          Array(EmployeeKey, 1, _
                I2W_FieldByName("USR$SENIORITY", FieldDefs, FieldValues)), _
          False, Found)
 
        PersonalCardKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_PERSONALCARD", "usr$emplkey", _
          EmployeeKey, _
          Array("usr$emplkey", _
            "usr$surname", _
            "usr$firstname", _
            "usr$middlename", _
            "usr$passportnumber", _
            "usr$passportissdate", _
            "usr$passportissuer", _
            "usr$passportexpdate", _
            "usr$personalnumber", _
            "usr$insurancenumber", _
            "usr$hzip", _
            "usr$hcountry", _
            "usr$hcity", _
            "usr$haddress", _
            "usr$pzip", _
            "usr$pcountry", _
            "usr$pcity", _
            "usr$paddress", _
            "usr$sex", _
            "usr$educationtypekey", _
            "usr$famstatuskey", _
            "usr$nationality", _
            "usr$mr_fitness", _
            "usr$mr_rankkey", _
            "usr$mr_regofficekey", _
            "usr$mr_profkey", _
            "usr$number"), _
          Array(_
            EmployeeKey, _
            I2W_FieldByName("surname", FieldDefs, FieldValues), _
            I2W_FieldByName("firstname", FieldDefs, FieldValues), _
            I2W_FieldByName("middlename", FieldDefs, FieldValues), _
            I2W_FieldByName("passportnumber", FieldDefs, FieldValues), _
            I2W_FieldByName("passportissdate", FieldDefs, FieldValues), _
            I2W_FieldByName("passportissuer", FieldDefs, FieldValues), _
            I2W_FieldByName("passportexpdate", FieldDefs, FieldValues), _
            I2W_FieldByName("personalnumber", FieldDefs, FieldValues), _
            I2W_FieldByName("usr$insurancenumber", FieldDefs, FieldValues), _
            I2W_FieldByName("hzip", FieldDefs, FieldValues), _
            I2W_FieldByName("hcountry", FieldDefs, FieldValues), _
            I2W_FieldByName("hcity", FieldDefs, FieldValues), _
            I2W_FieldByName("haddress", FieldDefs, FieldValues), _
            I2W_FieldByName("hzip", FieldDefs, FieldValues), _
            I2W_FieldByName("hcountry", FieldDefs, FieldValues), _
            I2W_FieldByName("hcity", FieldDefs, FieldValues), _
            I2W_FieldByName("haddress", FieldDefs, FieldValues), _
            I2W_FieldByName("sex", FieldDefs, FieldValues), _
            EducationTypeKey, _
            FamStatusKey, _
            NationKey, _
            MartFitnessKey, _
            MilRankKey, _
            MilOfficeKey, _
            MRSKey, _
            I2W_FieldByName("usr$listnumber", FieldDefs, FieldValues)), True, Found)
 
        On Error Resume Next
        OrderDate = I2W_FieldByName("datebegin", FieldDefs, FieldValues)
        qOrder.Close
        qOrder.ParamByName("EmplKey").AsInteger = EmployeeKey
        qOrder.ParamByName("KOW").AsInteger = KindOfWorkKey
        qOrder.ExecQuery
        if qOrder.EoF then
          FirstOrderLine.Insert
          FirstOrderLine.FieldByName("usr$movementtype").AsInteger = 1
          FirstOrderLine.FieldByName("usr$emplkey").AsInteger = EmployeeKey
          FirstOrderLine.FieldByName("usr$listnumber").AsString = I2W_FieldByName("usr$listnumber", FieldDefs, FieldValues)
          FirstOrderLine.FieldByName("usr$datebegin").AsDateTime = OrderDate
          FirstOrderLine.FieldByName("usr$deptkey").Value = DeptKey
          FirstOrderLine.FieldByName("usr$positionkey").Value = PositionKey
          FirstOrderLine.FieldByName("usr$payformkey").Value = PayFormKey
          FirstOrderLine.FieldByName("usr$kindofworkkey").Value = KindOfWorkKey
          FirstOrderLine.FieldByName("usr$workcharacterkey").Value = CharacterKey
          FirstOrderLine.FieldByName("usr$pastcat").Value = I2W_FieldByName("pastcat", FieldDefs, FieldValues)
          FirstOrderLine.FieldByName("usr$msalary").Value = I2W_FieldByName("msalary", FieldDefs, FieldValues)
          FirstOrderLine.Post
        end if
 
        If (Err.Number <> 0) Or (Err.Description > "") Then
          ErrMsg = ErrMsg & "Приказ о приеме: " & Err.Description & " Сотрудник: " & EmployeeName & ". Тип: " & KindOfWorkTemp & vbCrLf
        Else
          If (Not IsNull(I2W_FieldByName("last_date", FieldDefs, FieldValues))) And _
            (I2W_FieldByName("last_date", FieldDefs, FieldValues) > OrderDate) Then
 
            OrderDate = I2W_FieldByName("last_date", FieldDefs, FieldValues)
            qOrderMove.Close
            qOrderMove.ParamByName("EmplKey").AsInteger = EmployeeKey
            qOrderMove.ParamByName("KOW").AsInteger = KindOfWorkKey
            qOrderMove.ParamByName("DB").AsDateTime = OrderDate
            qOrderMove.ExecQuery
 
            if qOrderMove.EoF then
              LastOrderLine.Insert
              LastOrderLine.FieldByName("usr$movementtype").AsInteger = 2
              LastOrderLine.FieldByName("usr$emplkey").AsInteger = EmployeeKey
              LastOrderLine.FieldByName("usr$listnumber").AsString = I2W_FieldByName("usr$listnumber", FieldDefs, FieldValues)
              LastOrderLine.FieldByName("usr$datebegin").AsDateTime = OrderDate
              LastOrderLine.FieldByName("usr$deptkey").Value = DeptKey
              LastOrderLine.FieldByName("usr$positionkey").Value = PositionKey
              LastOrderLine.FieldByName("usr$payformkey").Value = PayFormKey
              LastOrderLine.FieldByName("usr$kindofworkkey").Value = KindOfWorkKey
              LastOrderLine.FieldByName("usr$workcharacterkey").Value = CharacterKey
              LastOrderLine.FieldByName("usr$pastcat").Value = I2W_FieldByName("pastcat", FieldDefs, FieldValues)
              LastOrderLine.FieldByName("usr$msalary").Value = I2W_FieldByName("msalary", FieldDefs, FieldValues)
              LastOrderLine.Post
            end if
            If (Err.Number <> 0) Or (Err.Description > "") Then
              ErrMsg = ErrMsg & "Приказ о переводе: " & Err.Description & " Сотрудник: " & EmployeeName & ". Тип: " & KindOfWorkTemp & vbCrLf
            End If
          End If
        End If
 
        On Error GoTo 0
 
      Case -1
        ErrMsg = ErrMsg & "Строка " & J & ": Неверное количество полей!" & vbCrLf
 
      Case Else
        ErrMsg = ErrMsg & "Строка " & J & ": Ошибка в поле " & FieldDefs(Res)(0) & vbCrLf
    End Select
 
    J = J + 1
  Loop
 
  If ErrMsg > "" Then
    MsgBox "Ошибка в процессе импорта. Дополнительная информация занесена в лог системы."
    I2W_Log Null, "", -1, ErrMsg
    Tr.Rollback
  Else
    If MsgBox("Успешно импортировано " & J - 1 & " записей. Сохранить?", vbYesNo) = vbYes Then
      Tr.Commit
    Else
      Tr.Rollback
    End If
  End If
 
End Sub

См. также

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты