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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
Строка 7: Строка 7:
  
 
{| border="1" cellpadding="2" cellspacing="0" style="border-collapse:collapse;"
 
{| border="1" cellpadding="2" cellspacing="0" style="border-collapse:collapse;"
!style="background:#ffdead;" width="260px" | Кадровое движение
+
!style="background:#ffdead;" | Кадровое движение
!style="background:#ffdead;" width="260px" | Исходные данные
+
!style="background:#ffdead;" | Исходные данные
!style="background:#ffdead;" | Создаваемые записи
+
!style="background:#ffdead;" | Создаваемые записи
 
|-
 
|-
 
| Сотрудник принят на основное место работы. Внутренних перемещений не было.  
 
| Сотрудник принят на основное место работы. Внутренних перемещений не было.  

Версия 19:47, 27 марта 2011

Импорт осуществляется на основе стандартной процедуры импорта из 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

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

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

  1. Приказ о внутреннем переводе "Импорт 2"
  2. Приказ о приеме на работу "Импорт 1"
  3. Подразделение "Импорт данных" со всеми вложенными подразделениями и записями сотрудников предприятия.

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

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

'#include TCREATOR
 
' Здесь должны быть подключены процедуры
' стандартного импорта из 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(38)
  ReDim FieldDefs(38)
  FieldDefs(0)  = Array("surname",             "S", 20, True)
  FieldDefs(1)  = Array("firstname",           "S", 20, True)
  FieldDefs(2)  = Array("middlename",          "S", 20, False)
  FieldDefs(3)  = Array("birthdate",           "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)
 
  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 AFolderKey, AImportDeptKey, Found
  AFolderKey = I2W_GetID(Tr, "TgdcFolder", "", _
    "name", "Импорт данных", _
    Array("name"), Array("Импорт данных"), Found)
  AImportDeptKey = I2W_GetID(Tr, "TgdcDepartment", "", _
    "name", "Импорт данных", _
    Array("parent", "name"), Array(IBLogin.CompanyKey, "Импорт данных"), 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
 
        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)), 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)), 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)), 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)), 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)), 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)), 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)), Found)
 
        PositionKey = I2W_GetID(Tr, "TgdcWgPosition", "", _
          "name", I2W_FieldByName("position", FieldDefs, FieldValues), _
          Array("name"), Array(I2W_FieldByName("position", FieldDefs, FieldValues)), 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)), Found)
 
        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)), Found)
 
        DeptKey = I2W_GetID(Tr, "TgdcDepartment", "", _
          "name", I2W_FieldByName("department", FieldDefs, FieldValues), _
          Array("parent", "name"), Array(AImportDeptKey, I2W_FieldByName("department", FieldDefs, FieldValues)), Found)
 
        If IsNull(DeptKey) Then
          DeptKey = AImportDeptKey
        End If
 
        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) _
          ), Found)
 
        If IsNull(I2W_FieldByName("usr$wg_kindofwork", FieldDefs, FieldValues)) Then
          KindOfWorkTemp = "01"  ' по умолчанию -- основное место работы
        Else
          KindOfWorkTemp = Trim(I2W_FieldByName("usr$wg_kindofwork", FieldDefs, FieldValues))
 
          ' В процессе импорта записи типа "КОНТРАКТ" превращаются в "ОСНОВНОЙ",
          ' "СОВМЕСТИТЕЛЬ ПО КОНТРАКТУ" в "ВНУТРЕННИЙ СОВМЕСТИТЕЛЬ" и т.п.
          ' Оригинальный вид работ сохраняется в логе системы.
          I2W_Log Tr, "TgdcContact", EmployeeKey, KindOfWorkTemp
 
          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), Found)
        Else
          KindOfWorkKey = I2W_GetID(Tr, "TgdcAttrUserDefined", "USR$WG_KINDOFWORK", _
            "usr$name", KindOfWorkTemp, _
            Array("usr$name"), Array(KindOfWorkTemp), Found)
        End If
 
        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)), Found)
 
        On Error Resume Next
 
        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 = I2W_FieldByName("datebegin", FieldDefs, FieldValues)
        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
 
        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) > I2W_FieldByName("datebegin", FieldDefs, FieldValues)) 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 = I2W_FieldByName("last_date", FieldDefs, FieldValues)
            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
 
            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

См. также

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

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