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