После обновления error

Обговорення питань, пов'язаних з функціонуванням програми
Відповісти
Deviagro
Повідомлень: 5
З нами з: 10 травня 2017, 09:10

После обновления error

Повідомлення Deviagro » 10 травня 2017, 09:15

После установки обновления на сервере M.e.doc
Не сохраняются НН и дальнейшие действия так же не работают. Отправка, проверка и т.д
Полная переустановка не помогла.
Данная проблема только на ПК где установлен сервер.
Вкладення
error .jpeg
error .jpeg (176.84 Кіб) Переглянуто 3060 разів
лог медка.txt
(48.82 Кіб) Завантажено 12 разів

EugeneUkraine
Повідомлень: 84
З нами з: 27 липня 2016, 14:49

Re: После обновления error

Повідомлення EugeneUkraine » 10 травня 2017, 11:21

Вы РК восстанавливали или базу подбрасывали?

Deviagro
Повідомлень: 5
З нами з: 10 травня 2017, 09:10

Re: После обновления error

Повідомлення Deviagro » 10 травня 2017, 11:26

1-й раз восстанавливали
2-й раз копировали db
результат один и тот же ошибка при сохранении

EugeneUkraine
Повідомлень: 84
З нами з: 27 липня 2016, 14:49

Re: После обновления error

Повідомлення EugeneUkraine » 10 травня 2017, 12:09

Deviagro писав:1-й раз восстанавливали
Какой тип РК Вы использовали zbk or bkz?

EugeneUkraine
Повідомлень: 84
З нами з: 27 липня 2016, 14:49

Re: После обновления error

Повідомлення EugeneUkraine » 10 травня 2017, 12:26

Выложите пожалуйста полный текст ошибки по спойлером.

eData
Повідомлень: 109
З нами з: 09 березня 2016, 13:45

Re: После обновления error

Повідомлення eData » 10 травня 2017, 12:33

Ошибка при сохранении или проверке ЄСВ таблицы 7
| Показать
M.E.DOC 10.01.179
Мережева версія
J3040711 ОС: Microsoft Windows NT 6.1.7601 Service Pack 1

Помилка виконання програми обробки:
CheckDuplicateTableInfo 1, "NUMIDENT|C_PID|START_DT|STOP_DT|DAYS|HH|MM|NORMA_1|NORMA_2", 1000
Несоответствие типа: 'CheckDuplicateTableInfo'

Line: 20 Pos: 2
Error: 0x80020101
Script sub: CHECK

'VERSION=1;STYLE=NEW;
SUB CREATE() 'Програма створення
rsMain.Edit
With rsMain

.FldVal("PK") = "X"
.FldVal("FORM_TYPE")=1

If Doc.GblVal("IsInsp")=1 And Doc.GblVal("IsFirebird") = 0 Then ''если Оракл
Doc.FillE0407Tab
End If

End With
rsMain.Post
END SUB
SUB CHECK() 'Програма перевiрки
rsMain.Edit
With rsMain

CheckDuplicateTableInfo 1, "NUMIDENT|C_PID|START_DT|STOP_DT|DAYS|HH|MM|NORMA_1|NORMA_2", 1000

If Trim(.FldVal("FIRM_RUKINN")) = "" Then _
Call Trace_AddMessage("Заповніть поле 'Податковий номер або серія та номер паспорта' керівника", "FIRM_RUKINN")
If Trim(.FldVal("FIRM_RUK")) = "" Then _
Call Trace_AddMessage("Заповніть 'Ініціали та прізвище' керівник", "FIRM_RUK")
If Trim(.FldVal("FIRM_BUHINN")) = "" Then _
Call Trace_InfoMessage("Попередження: Заповніть поле 'Податковий номер або серія та номер паспорта' головного бухгалтера", "FIRM_BUHINN")
If Trim(.FldVal("FIRM_BUH")) = "" Then _
Call Trace_InfoMessage("Попередження: Заповніть 'Ініціали та прізвище' головного бухгалтера", "FIRM_BUH")

'Set regEx = New RegExp
' regEx.Pattern = "^\d{10}|БК[А-ЯІЇЄ]{2}\d{6}|[А-ЯІЇЄ]{3}\s\d{6}|F[0-9А-ЯA-ZІЇЄ]{9}$"

' If not regEx.Test(TRIM(.FldVal("FIRM_RUKINN"))) Then
' Call Trace_AddMessage("Введено невірний формат ідентифікаційного номеру керівника " + CStr(.FldVal("FIRM_RUKINN")) & _
' ". Допустимі формати : ХХХХХХХХХХ - цифри, або ", "FIRM_RUKINN")
' Call Trace_AddMessage("NNN ХХХХХХ - три УКР. літери, пробіл, шість цифр (свідоцтво соц. страхування), або БКNNXXXXXX – "+ _
' "(БК, серія та № паспорта)(УКР. літери ), або ", "")
' Call Trace_AddMessage("FNNNNNNNNN, де F- латинська літера(константа), далі NNNNNNNNN - довільний набір латинських та " & _
' "українських літер, а також цифр ", "")
' End If
' If TRIM(.FldVal("FIRM_BUHINN")) <> "" and not regEx.Test(TRIM(.FldVal("FIRM_BUHINN"))) Then
' Call Trace_AddMessage("Введено невірний формат ідентифікаційного номеру головного бухгалтера " + CStr(.FldVal("FIRM_BUHINN")) & _
' ". Допустимі формати : ХХХХХХХХХХ - цифри, або ", "FIRM_BUHINN")
' Call Trace_AddMessage("NNN ХХХХХХ - три УКР. літери, пробіл, шість цифр (свідоцтво соц. страхування), або БКNNXXXXXX – "+ _
' "(БК, серія та № паспорта)(УКР. літери ), або ", "")
' Call Trace_AddMessage("FNNNNNNNNN, де F- латинська літера(константа), далі NNNNNNNNN - довільний набір латинських та " & _
' "українських літер, а також цифр ", "")
' End If

mm = Month(CalcLastPeriodDate(Doc.NPerDate, Doc.PerType))
YY = Year(CalcLastPeriodDate(Doc.NPerDate, Doc.PerType))


If .FldVal("PK") <> "" Then ''''лише для Початкової

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF
Doc.GblVal("EXP") = 0

If CStr(rsTab1.FldVal("NUMIDENT")) <> "" Then
Set rsGetP04TabByINN = GetP04TabByINN(CStr(rsTab1.FldVal("NUMIDENT")), 6)

Flag = true
While Not rsGetP04TabByINN.Eof

If ((rsGetP04TabByINN.FldVal("PAY_YEAR") = YY and rsGetP04TabByINN.FldVal("PAY_MNTH") = mm) or _
(rsGetP04TabByINN.FldVal("PAY_YEAR") = 0 and rsGetP04TabByINN.FldVal("PAY_MNTH") = 0)) and _
rsGetP04TabByINN.FldVal("EXP") <> 1 Then
Call Trace_InfoMessage( "Попередження: ІПН = " _
& CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Перевірте дані Таблиці 6: не вказано 'спецстаж'.", _
CStr("NUMIDENT:" + CStr(rsTab1.RecNo)))
End If

If ((rsGetP04TabByINN.FldVal("PAY_YEAR") <> YY and rsGetP04TabByINN.FldVal("PAY_YEAR") <> 0 ) or _
(rsGetP04TabByINN.FldVal("PAY_MNTH") <> mm and rsGetP04TabByINN.FldVal("PAY_MNTH") <> 0)) Then
Doc.GblVal("EXP") = Doc.GblVal("EXP") + 1
End IF

rsGetP04TabByINN.Next
Wend

If Doc.GblVal("EXP")>0 and Doc.GblVal("EXP") >= rsGetP04TabByINN.RecordCount Then
Call Trace_InfoMessage( "Попередження: ІПН = " _
& CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Перевірте дані Таблиці 6: не вказано 'спецстаж'.", _
CStr("NUMIDENT:" + CStr(rsTab1.RecNo)))
End If

If rsGetP04TabByINN.Eof and rsGetP04TabByINN.Bof Then
Call Trace_InfoMessage( "Попередження: ІПН = " _
& CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Перевірте дані Таблиці 6: не вказано 'спецстаж'.", _
CStr("NUMIDENT:" + CStr(rsTab1.RecNo)))

End If
Set rsGetP04TabByINN = Nothing

End If

rsTab1.Next
Wend
Set rsTab1 = Nothing

End If ''''лише для Початкової


'If Doc.GblVal("ProgramType")<>"BUDJET" Then '''если не Оракл

If OrgDS.FldVal("PFUPILG")<>1 Then _
Call Trace_AddMessage("Вкажіть наявність підстав для пільг у картці установи в розділі ПФ", "")

'End If

dd = Day(CalcLastPeriodDate(Doc.NPerDate, Doc.PerType))

Set regEx = New RegExp
regEx.Pattern = "^\d{10}|БК[А-ЯІЇЄ]{2}\d{6}|[А-ЯІЇЄ]{3}\s\d{6}|F[0-9А-ЯA-ZІЇЄ]{9}$"

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF

If not regEx.Test(TRIM(rsTab1.FldVal("NUMIDENT"))) Then
Call Trace_AddMessage("ЗО ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ", введено невірний формат ІПН. " _
& "Допустимі формати : ХХХХХХХХХХ - цифри, або ", _
CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))
Call Trace_AddMessage( "NNN ХХХХХХ - три УКР. літери, пробіл, " _
& "шість цифр (свідоцтво соц. страхування), або БКNNXXXXXX – " _
& "(БК, серія та № паспорта)(УКР. літери ), або ", "")
Call Trace_AddMessage("FNNNNNNNNN, де F- латинська літера(константа), далі " _
& "NNNNNNNNN - довільний набір латинських та " _
& "українських літер, а також цифр ", "")
End If


If Trim(rsTab1.FldVal("NUMIDENT"))<>"" and (Trim(rsTab1.FldVal("NUMIDENT")) = "0000000000" or Trim(rsTab1.FldVal("NUMIDENT")) = "1111111111" or _
Trim(rsTab1.FldVal("NUMIDENT")) = "2222222222" or Trim(rsTab1.FldVal("NUMIDENT")) = "3333333333" or Trim(rsTab1.FldVal("NUMIDENT")) = "4444444444" or _
Trim(rsTab1.FldVal("NUMIDENT")) = "5555555555" or Trim(rsTab1.FldVal("NUMIDENT")) = "6666666666" or Trim(rsTab1.FldVal("NUMIDENT")) = "7777777777" or _
Trim(rsTab1.FldVal("NUMIDENT")) = "8888888888" or Trim(rsTab1.FldVal("NUMIDENT")) = "9999999999") Then
Call Trace_AddMessage("ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) + "' "+CStr(rsTab1.FldVal("LN"))+ _
". Введено невірний формат ІПН. Введіть коректний номер платника податку ЗО", CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))
End If

Spr = App.GetSprValue("HBPFU04", "Num", Cstr(rsTab1.FldVal("C_PID")), "Num")
If rsTab1.FldVal("C_PID") <> Spr Then _
Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Код підстави < "+ CStr(rsTab1.FldVal("C_PID")) _
& " > не знайдено в довіднику.", _
CStr("C_PID:" + CStr(rsTab1.RecNo)))


' If Doc.GblVal("ProgramType")<>"BUDJET" Then '''если не Оракл
'-----------------Проверка дат с 5 таблицей: -----------------------------------
set rsTab5 = GetP04TabByINN(CStr(rsTab1.FldVal("NUMIDENT")), 5)
''' есть такой ИНН:

Flag1 = true

While Not rsTab5.Eof
If rsTab5.RecordCount >1 Then _
Flag1 = false
rsTab5.Next
Wend

If Not (rsTab5.Eof And rsTab5.Bof) and Flag1 Then

If rsTab1.FldVal("START_DT") < rsTab5.FldVal("START_DT") and +_
rsTab5.FldVal("ZO")<>3 and rsTab5.FldVal("ZO")<>4 and rsTab5.FldVal("ZO")<>5 and rsTab5.FldVal("ZO")<>6 Then _
Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Значення гр.10 'Початок періоду' Таб.7 " _
& "< "+ CStr(rsTab1.FldVal("START_DT")) _
& " > не може бути менше значення гр.10 'Дата початку' Таб.5 < " _
& CStr(rsTab5.FldVal("START_DT")) _
& " >, крім ЗО з категор. 3,4,5,6 в Таб.5.", _
CStr("START_DT:" + CStr(rsTab1.RecNo)))
' If rsTab5.FldVal("START_DT")=0 and rsTab1.FldVal("START_DT") <> 1 Then _
' Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & " Значення гр.10 'Початок періоду' Таб.7 " _
' & "< " + CStr(rsTab1.FldVal("START_DT")) _
' & " > повинно дорівнювати 1, оскільки значення гр.10 'Дата початку' "_
' & "Таб.5 не заповнене.", _
' CStr("START_DT:" + CStr(rsTab1.RecNo)))

End If
If Not (rsTab5.Eof And rsTab5.Bof) and Flag1 = false Then

If rsTab5.FldVal("START_DT")<>0 and rsTab1.FldVal("START_DT") < rsTab5.FldVal("START_DT") and +_
rsTab5.FldVal("ZO")<>3 and rsTab5.FldVal("ZO")<>4 and rsTab5.FldVal("ZO")<>5 and rsTab5.FldVal("ZO")<>6 Then _
Call Trace_InfoMessage( "Попередження: ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Значення гр.10 'Початок періоду' Таб.7 " _
& "< " + CStr(rsTab1.FldVal("START_DT")) _
& " > не може бути менше значення гр.10 'Дата початку' Таб.5 < " _
& CStr(rsTab5.FldVal("START_DT")) _
& " >, крім ЗО з категор. 3,4,5,6, а також для ЗО, у яких в Таб.5 більше одного заповненого рядка", _
CStr("START_DT:" + CStr(rsTab1.RecNo)))
' If rsTab5.FldVal("START_DT")=0 and rsTab1.FldVal("START_DT") <> 1 Then _
' Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & " Значення гр.10 'Початок періоду' Таб.7 " _
' & "< "+ CStr(rsTab1.FldVal("START_DT")) _
' & " > повинно дорівнювати 1, оскільки значення гр.10 'Дата початку' "_
' & "Таб.5 не заповнене.", _
' CStr("START_DT:" + CStr(rsTab1.RecNo)))

End If

If Not (rsTab5.Eof And rsTab5.Bof) Then
If rsTab5.FldVal("END_DT")<>0 and rsTab1.FldVal("STOP_DT") > rsTab5.FldVal("END_DT") and _
rsTab5.FldVal("ZO")<>3 and rsTab5.FldVal("ZO")<>4 and rsTab5.FldVal("ZO")<>5 and rsTab5.FldVal("ZO")<>6 Then _
Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Значення гр.11 'Кінець періоду' Таб.7 " _
& "< " + CStr(rsTab1.FldVal("STOP_DT")) _
& " > не може бути більше значення гр.10 'Дата закінчення' Таб.5 < " _
& CStr(rsTab5.FldVal("END_DT")) _
& " >, крім ЗО з категор. 3,4,5,6 в Таб.5.", _
CStr("STOP_DT:" + CStr(rsTab1.RecNo)))

' If rsTab5.FldVal("END_DT")=0 and rsTab1.FldVal("STOP_DT") <> dd Then _
' Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & " Значення гр.11 'Кінець періоду' Таб.7 " _
' & "< " + CStr(rsTab1.FldVal("STOP_DT")) _
' & " > повинно дорівнювати " +CStr(dd)+ ", оскільки значення гр.10 'Дата закінчення' "_
' & "Таб.5 не заповнене.", _
' CStr("STOP_DT:" + CStr(rsTab1.RecNo)))

End If

set rsTab5 = Nothing
'-------------------------------------------------------------------------------
' End If '' если не Оракл

If rsTab1.FldVal("NUMIDENT") = "" Then _
Call Trace_AddMessage("Застрахована особа " + CStr(rsTab1.FldVal("LN")) _
& " "+CStr(rsTab1.FldVal("NM")) _
& ". Не зазначено поле 'Номер облікової картки ЗО'", _
CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("LN") = "" Then _
Call Trace_AddMessage("ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ". Не зазначено прізвище застрахованої особи в полі 'Прізвище'", _
CSTR("LN:"+ CSTR(rsTab1.RecNo)))
If rsTab1.FldVal("NM") = "" Then _
Call Trace_AddMessage("ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ". Не зазначено ім'я застрахованої особи в полі 'Ім'я'", _
CSTR("NM:"+ CSTR(rsTab1.RecNo)))
If rsTab1.FldVal("FTN") = "" Then _
Call Trace_InfoMessage("Попередження: ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ". Не зазначено по батькові застрахованої особи в полі 'По батькові'", _
CSTR("FTN:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("UKR_GROMAD") <> 0 and rsTab1.FldVal("UKR_GROMAD") <> 1 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Громадянин України' <" + CStr(rsTab1.FldVal("UKR_GROMAD"))+"> " & _
"повинно бути 0 або 1 ", _
CSTR("UKR_GROMAD:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("C_PID") = "" Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Не заповнено код підстави для обліку спецстажу ", _
CSTR("C_PID:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("NORMA_1") = 0 and rsTab1.FldVal("NORMA_2") = 0 and rsTab1.FldVal("NORMA_3") = 0 Then _
Call Trace_InfoMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Не заповнено поле 'норма тривалості роботи' ", _
CSTR("NORMA_1:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("START_DT") < 1 or rsTab1.FldVal("START_DT") > dd Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Початок періоду' повинно бути " _
& "цілим числом від 1 до "+CStr(dd), _
CSTR("START_DT:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("STOP_DT") < 1 or rsTab1.FldVal("STOP_DT") > dd Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кінець періоду' повинно бути " _
& "цілим числом від 1 до "+CStr(dd), _
CSTR("STOP_DT:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("START_DT") <> 0 and rsTab1.FldVal("STOP_DT") <> 0 and _
rsTab1.FldVal("START_DT") > rsTab1.FldVal("STOP_DT") Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Дата початку періоду перевищує дату кінця періоду", _
CSTR("START_DT:"+ CSTR(rsTab1.RecNo)))

' If (rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("HH") <> 0 and rsTab1.FldVal("NORMZ") <> 0) or _
' (rsTab1.FldVal("DAYS") = 0 and rsTab1.FldVal("HH") <> 0 and rsTab1.FldVal("NORMZ") <> 0) or _
' (rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("HH") = 0 and rsTab1.FldVal("NORMZ") <> 0) or _
' (rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("HH") <> 0 and rsTab1.FldVal("NORMZ") = 0) Then _
' Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & ". Дозволяється заповнювати лише один вид необхідної " _
' & "одиниці виміру спеціального стажу: або к-сть місяців і днів, " _
' & "або годин і хвилин, або нормозмін ", _
' CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

' If rsTab1.FldVal("DAYS") = 0 and rsTab1.FldVal("HH") = 0 and rsTab1.FldVal("MM") = 0 and rsTab1.FldVal("NORMZ") = 0 Then _
' Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & ". Зазначте варіант необхідної одиниці виміру та фактичну " _
' & "тривалість стажу за кодом підстави ", _
' CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

' If rsTab1.FldVal("DAYS") <> 0 and _
If rsTab1.FldVal("DAYS") <> (rsTab1.FldVal("STOP_DT") - rsTab1.FldVal("START_DT")) +1 Then _
Call Trace_InfoMessage("Попередження: ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість днів' повинно дорівнювати " _
& "значенню (День кінця періоду - День початку періоду) + 1", _
CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("DAYS") < 0 or rsTab1.FldVal("DAYS") > 31 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість днів' повинно бути " _
& "цілим числом від 1 до 31", _
CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("HH") < 0 or rsTab1.FldVal("HH") > 248 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість годин' не повинно бути більше 248", _
CSTR("HH:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("MM") < 0 or rsTab1.FldVal("MM") > 60 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість хвилин' не повинно бути більше 60", _
CSTR("MM:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("DAYS") = 0 and rsTab1.FldVal("HH") = 0 and rsTab1.FldVal("MM") = 0 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Не заповнене жодне з полів гр.12 або гр.13", _
CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("NORMA_1") > 31 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Норма тривалості' більше 31 ", _
CSTR("NORMA_1:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("SEAZON") <> 0 and rsTab1.FldVal("SEAZON") <> 1 and _
rsTab1.FldVal("SEAZON") <> 2 and rsTab1.FldVal("SEAZON") <> 3 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Ознака сезону повинна бути від 1 до 3", _
CSTR("SEAZON:"+ CSTR(rsTab1.RecNo)))

rsTab1.Next
Wend
Set rsTab1 = Nothing

Set rsTab1 = Doc.DataSets("TAB1")
Set rsTab1Clone = rsTab1.Clone
rsTab1.First

If (rsTab1.RecordCount <=1000 and Doc.GblVal("ProgramType")<>"BUDJET") or Doc.GblVal("ProgramType")="BUDJET" Then ''Сделают на функционале для большего количества записей, потому что долго проверяется документ
While Not rsTab1.EOF

' rsTab1Clone.Filter = "NUMIDENT = '"+ CStr(rsTab1.FldVal("NUMIDENT"))+ "' AND C_PID = '" + CStr(rsTab1.FldVal("C_PID"))+ "' AND START_DT = "+ CStr(rsTab1.FldVal("START_DT"))+ " AND STOP_DT = " + CStr(rsTab1.FldVal("STOP_DT"))+ " AND DAYS = " + CStr(rsTab1.FldVal("DAYS"))+ " AND HH = " + CStr(rsTab1.FldVal("HH"))+ " AND MM = " + CStr(rsTab1.FldVal("MM"))+ " AND NORMA = '" + CStr(rsTab1.FldVal("NORMA"))+ "'"
''' разбили на проверку по IsNull:

stroka_filter = "NUMIDENT = '"+ CStr(rsTab1.FldVal("NUMIDENT"))+ "'"
If IsNull(rsTab1.FldVal("C_PID")) or rsTab1.FldVal("C_PID") = "" Then
stroka_filter = stroka_filter + " AND C_PID IS NULL"
Else
stroka_filter = stroka_filter + " AND C_PID = '" + CStr(rsTab1.FldVal("C_PID"))+ "'"
End If
If IsNull(rsTab1.FldOrigVal("START_DT")) Then
stroka_filter = stroka_filter + " AND START_DT IS NULL"
Else
stroka_filter = stroka_filter + " AND START_DT = " + CStr(rsTab1.FldVal("START_DT"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("STOP_DT")) Then
stroka_filter = stroka_filter + " AND STOP_DT IS NULL"
Else
stroka_filter = stroka_filter + " AND STOP_DT = " + CStr(rsTab1.FldVal("STOP_DT"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("DAYS")) Then
stroka_filter = stroka_filter + " AND DAYS IS NULL"
Else
stroka_filter = stroka_filter + " AND DAYS = " + CStr(rsTab1.FldVal("DAYS"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("HH")) Then
stroka_filter = stroka_filter + " AND HH IS NULL"
Else
stroka_filter = stroka_filter + " AND HH = " + CStr(rsTab1.FldVal("HH"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("MM")) Then
stroka_filter = stroka_filter + " AND MM IS NULL"
Else
stroka_filter = stroka_filter + " AND MM = " + CStr(rsTab1.FldVal("MM"))+ ""
End If
If IsNull(rsTab1.FldVal("NORMA_1")) Then
stroka_filter = stroka_filter + " AND NORMA_1 IS NULL"
Else
stroka_filter = stroka_filter + " AND NORMA_1 = '" + CStr(rsTab1.FldVal("NORMA_1"))+ "'"
End If
If IsNull(rsTab1.FldVal("NORMA_2")) Then
stroka_filter = stroka_filter + " AND NORMA_2 IS NULL"
Else
stroka_filter = stroka_filter + " AND NORMA_2 = '" + CStr(rsTab1.FldVal("NORMA_2"))+ "'"
End If
If IsNull(rsTab1.FldVal("NORMA_3")) Then
stroka_filter = stroka_filter + " AND NORMA_3 IS NULL"
Else
stroka_filter = stroka_filter + " AND NORMA_3 = '" + CStr(rsTab1.FldVal("NORMA_3"))+ "'"
End If
rsTab1Clone.Filter = stroka_filter

If rsTab1Clone.RecordCount >1 then
Call Trace_AddMessage("Для ЗО ІПН '"&CSTR(rsTab1.FldVal("NUMIDENT"))&"' " &CStr(rsTab1.FldVal("LN"))&" вже існує запис з повним співпадінням наступних реквізитів: " & _
"'№ ОК ЗО, 'Код підстави', 'Початок періоду', 'Кінець періоду', 'Кількість днів', 'Кількість годин, хв.', 'Норма тривалості роботи ...'", CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))
End If
rsTab1Clone.Filter = ""

rsTab1.Next
Wend
End If ' If (rsTab1.RecordCount <=1000 and Doc.GblVal("ProgramType")<>"BUDJET") or Doc.GblVal("ProgramType")="BUDJET"
Set rsTab1Clone = Nothing

Set rsTab1 = Nothing

Doc.GblVal("FT") = 0
Cnd = "CharCode='J3000411' AND CODE=" + Trim(Doc.Card("IDPARENT"))
Set rsDocs = App.DocumentsDataSet(Cnd)
rsDocs.First
If Not rsDocs.EOF Then
Set SomeDoc = App.OpenDocumentByCode(rsDocs.FldVal("Code"))
Set rsSomeDoc = SomeDoc.DataSets("MAIN")
If rsSomeDoc.FldVal("FORM_TYPE") = 1 Then Doc.GblVal("FT") = 1
If rsSomeDoc.FldVal("FORM_TYPE") = 3 Then Doc.GblVal("FT") = 3
Set SomeDoc = nothing
Set rsSomeDoc = nothing
End If
Set rsDocs = Nothing

If Doc.GblVal("FT") = 1 Then
Cnd = "CharCode='J3040111' AND IDPARENT=" + Trim(Doc.Card("IDPARENT"))
Set rsDocs = App.DocumentsDataSet(Cnd)
rsDocs.First
If (rsDocs.EOF and rsDocs.BOF) Then _
Call Trace_AddMessage("Звіт містить таблицю 7, а таблиця 1 звіту відсутня. Створіть таблицю 1", "")
Set rsDocs = Nothing
End If

'------в пачці "скасовуюча" повинні бути початкова і скасовуюча табл.
If Doc.GblVal("FT") = 3 and .FldVal("FORM_TYPE") = 1 Then
n = 0
Cnd = "CharCode='J3040711' AND IDPARENT=" + Trim(Doc.Card("IDPARENT"))
Set rsDocs = App.DocumentsDataSet(Cnd)
rsDocs.First
While Not rsDocs.EOF
Set SomeDoc = App.OpenDocumentByCode(rsDocs.FldVal("Code"))
Set rsSomeDoc = SomeDoc.DataSets("MAIN")
If rsSomeDoc.FldVal("FORM_TYPE") = 1 Then n = n + 1
If rsSomeDoc.FldVal("FORM_TYPE") = 3 Then n = n + 3
Set SomeDoc = nothing
Set rsSomeDoc = nothing
rsDocs.Next
Wend
Set rsDocs = Nothing
If n <> 4 Then _
Call Trace_AddMessage("Табл.7 Для скасовуючих звітів одночасно із 'початковою' необхідно подавати 'скасовуючу' таблицю. Виправте зазначену помилку", "")
End If

End With
rsMain.Post
END SUB
SUB OPEN() 'Вiдкриття
rsMain.Edit
With rsMain

'If .FldVal("PK")= "" and .FldVal("SK")="" and .FldVal("DK")="" Then
' If .FldVal("FORM_TYPE")=1 Then _
' .FldVal("PK") = "X"
' If .FldVal("FORM_TYPE")=3 Then _
' .FldVal("SK") = "X"
' If .FldVal("FORM_TYPE")=5 Then _
' .FldVal("DK") = "X"
'End If

End With
rsMain.Post
END SUB
SUB AFTER_SPR() 'Вибор з справочника (після)

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.Edit

If DocEditedFieldName = "NUMIDENT" Or DocEditedFieldName = "LN" Or _
DocEditedFieldName = "NM" Or DocEditedFieldName = "FTN" Then

'rsTab1.FldVal("START_DT") = Day(CurrSprDS.FldVal("DateAdd"))
'rsTab1.FldVal("END_DT") = Day(CurrSprDS.FldVal("DateEnd"))

' FullName = CStr(CurrSprDS.FldVal("Name"))
' FullName = LTrim(FullName)
' FullName = RTrim(FullName)
' FullName = UCase(FullName)
' pos = InStr(FullName," ")
' If pos <> 0 Then
' LastName = Left(FullName,pos)
' rsTab1.FldVal("LN") = LastName
' ElseIf pos = 0 and len(FullName) <> 0 Then
' rsTab1.FldVal("LN") = FullName
' rsTab1.FldVal("NM") = ""
' rsTab1.FldVal("FTN") = ""
' rsTab1.FldVal("NUMIDENT") = UCase(CStr(CurrSprDS.FldVal("Num")))
' End If
' If Trim(FullName)<>"" and pos <> 0 Then
' SecondAndMidName = Mid(FullName, pos)
' SecondAndMidName = LTrim(SecondAndMidName)
' SecondAndMidName = RTrim(SecondAndMidName)
'
' pos = InStr(SecondAndMidName," ")
'
' If pos = 0 and len(SecondAndMidName) <> 0 Then _
' FirstName = SecondAndMidName
'
' If pos = 0 Then pos = InStr(SecondAndMidName,".")
'
' If pos <> 0 Then
' FirstName = Left(SecondAndMidName, pos)
' SecondName = Mid(SecondAndMidName, pos)
' if "." = left(SecondName,1) Then SecondName = Mid(SecondAndMidName, pos+1)
' End If
'
' SecondName = LTrim(SecondName)
' SecondName = RTrim(SecondName)

'-----заповнення NUMIDENT
TAB1_A2 = ""
TAB1_A22 = ""

TAB1_A22 = CStr(CurrSprDS.FldVal("Num"))
'''Если формат NNXXXXXX , то сначала добавлем "БК":
If Len(Trim(CStr(CurrSprDS.FldVal("Num")))) = 8 and _
ConvStrToDbl(Left(TAB1_A22,1)) = 0 and ConvStrToDbl(Mid(TAB1_A22,1,1)) = 0 and IsNumeric(Right(TAB1_A22,6)) Then
TAB1_A2 = "БК" + TAB1_A22
End If

'''Если формат NNNXXXXXX , то сначала между буквами и цифрами вставляем ПРОБЕЛ:
If Len(Trim(CStr(CurrSprDS.FldVal("Num")))) = 9 and _
ConvStrToDbl(Left(TAB1_A22,1)) = 0 and ConvStrToDbl(Mid(TAB1_A22,1,1)) = 0 and ConvStrToDbl(Mid(TAB1_A22,2,1)) = 0 and IsNumeric(Right(TAB1_A22,6)) Then
TAB1_A2 = Left(TAB1_A22,3)+" "+ Right(TAB1_A22,6)
End If

If TAB1_A2 = "" Then TAB1_A2 = TAB1_A22
'-----
' rsTab1.FldVal("NM") = FirstName
' rsTab1.FldVal("FTN") = SecondName
rsTab1.FldVal("LN") = UCase(Trim(CurrSprDS.FldVal("LASTNAME")))
rsTab1.FldVal("NM") = UCase(Trim(CurrSprDS.FldVal("FIRSTNAME")))
rsTab1.FldVal("FTN") = UCase(Trim(CurrSprDS.FldVal("MIDDLENAME")))
rsTab1.FldVal("NUMIDENT") = UCase(TAB1_A2)
' rsTab1.FldVal("NUMIDENT") = CStr(CurrSprDS.FldVal("Num"))
rsTab1.FldVal("UKR_GROMAD")=CurrSprDS.FldVal("UKR_GROMAD")
' End If ' If Trim(FullName)<>"" and pos <> 0

End If

rsTab1.Post
Set rsTab1 = Nothing

END SUB
SUB SAVE() 'Збереження

'If Not IsNull(Doc.Card("IDPARENT")) Then
' Doc.GblVal("KeyCD") = Trim(Doc.Card("IDPARENT"))
' If Doc.GblVal("KeyCD") > 0 Then
' Set SomeDoc = App.OpenDocumentByCode(Doc.GblVal("KeyCD"))
' Set rsSomeDoc = SomeDoc.DataSets("MAIN")
'
' rsSomeDoc.Edit
' rsSomeDoc.FldVal("N7_3") = 1
' rsSomeDoc.Post
'
' SomeDoc.Save(0)
' SomeDoc.Close
' Set SomeDoc = Nothing
' Set rsSomeDoc = Nothing
' End If
'End If '''If Not IsNull(Doc.Card("IDPARENT")) Then

END SUB
SUB IMPORT() 'Імпорт
rsMain.Edit
With rsMain

If .FldVal("PK") <> "" Then .FldVal("FORM_TYPE") = 1
If .FldVal("SK") <> "" Then .FldVal("FORM_TYPE") = 3
If .FldVal("DK") <> "" Then .FldVal("FORM_TYPE") = 5

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOf
rsTab1.Edit
If IsNull(rsTab1.FldOrigVal("UKR_GROMAD")) Then rsTab1.FldVal("UKR_GROMAD") = 0
rsTab1.Post
rsTab1.Next
Wend
Set rsTab1 = Nothing

End With
rsMain.Post
END SUB
SUB EXPORT() 'Експорт
rsMain.Edit
With rsMain

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOf
rsTab1.Edit
If IsNull(rsTab1.FldOrigVal("UKR_GROMAD")) Then rsTab1.FldVal("UKR_GROMAD") = 0
rsTab1.Post
rsTab1.Next
Wend
Set rsTab1 = Nothing

End With
rsMain.Post
END SUB

Deviagro
Повідомлень: 5
З нами з: 10 травня 2017, 09:10

Re: После обновления error

Повідомлення Deviagro » 10 травня 2017, 13:52

| Показать
J1201009 ОС: Microsoft Windows NT 5.1.2600 Service Pack 3

Помилка виконання програми обробки:
Set Dict = CreateObject("Scripting.Dictionary")
0x00000000

Line: 554 Pos: 1
Error: 0x80020101
Script sub: CHECK

'VERSION=1;STYLE=NEW;
SUB AFTER_SPR()'Программа обработки после выбора из справочника
With rsMain
.Edit
If DocEditedFieldName = "N3" Or DocEditedFieldName = "N4" or DocEditedFieldName = "EDR_POK" Or DocEditedFieldName = "DEPT_POK" Then
.FldVal("N3") = currSprDS.FldVal("Name")
.FldVal("N4") = currSprDS.FldVal("IndTaxNum")
' .FldVal("N5") = currSprDS.FldVal("Adr")
' .FldVal("N7") = currSprDS.FldVal("CodeNDS")
' If currSprDS.FldVal("CityCode")<> "" Then
' .FldVal("N6") = currSprDS.FldVal("CityCode")+ currSprDS.FldVal("TelNum")
' Else
' .FldVal("N6") = currSprDS.FldVal("TelNum")
' End if
.FldVal("EDR_POK") = currSprDS.FldVal("Num")
If Not IsEmpty (CurrSprDS.Fields.Item("DEPT")) Then
.FldVal("DEPT_POK") = currSprDS.FldVal("DEPT")
Else
.FldVal("DEPT_POK") = ""
End if
.FldVal("N8") = currSprDS.FldVal("DOGNAME")
.FldVal("N82") = currSprDS.FldVal("DOGDATE")
.FldVal("N81") = currSprDS.FldVal("DOGNUM")
End If
If DocEditedFieldName = "PZOB" Then
.FldVal("PZOB") = currSprDS.FldVal("Num")
End If
If DocEditedFieldName = "PKRED" Then
.FldVal("PKRED") = currSprDS.FldVal("Num")
End If
If DocEditedFieldName = "N14" Then
.FldVal("N14") = currSprDS.FldVal("Num")
End If
If DocEditedFieldName = "N10" or DocEditedFieldName = "INN" Then
If currSprDS.FldVal("FIRSTNAME")<> "" Then .FldVal("N10") = Left(currSprDS.FldVal("FIRSTNAME"),1) + ". " + currSprDS.FldVal("LASTNAME")
If currSprDS.FldVal("FIRSTNAME")<> "" and currSprDS.FldVal("MIDDLENAME")<> "" Then .FldVal("N10") = Left(currSprDS.FldVal("FIRSTNAME"),1) + "." + Left(currSprDS.FldVal("MIDDLENAME"),1) + ". " + currSprDS.FldVal("LASTNAME")
.FldVal("INN") = currSprDS.FldVal("Num")
End If

Set rsTab1 = Doc.DataSets("TAB1")
If DocEditedFieldName = "TAB1_A14" or DocEditedFieldName = "TAB1_A141" Then
rsTab1.Edit
rsTab1.FldVal("TAB1_A14") = CurrSprDS.FldVal("CharCode")
rsTab1.FldVal("TAB1_A141") = CurrSprDS.FldVal("Num")
rsTab1.Post
End If
If DocEditedFieldName = "TAB1_A13" Or DocEditedFieldName = "TAB1_A16" Then
rsTab1.Edit
rsTab1.FldVal("TAB1_A13") = CurrSprDS.FldVal("Name")
If CurrSprDS.FldVal("GOODSTYPE") = 1 or CurrSprDS.FldVal("GOODSTYPE") = 2 Then
rsTab1.FldVal("TAB1_A131") = ""
rsTab1.FldVal("TAB1_A133") = CurrSprDS.FldVal("CHARCODE")
Else
rsTab1.FldVal("TAB1_A131") = CurrSprDS.FldVal("CHARCODE")
rsTab1.FldVal("TAB1_A133") = ""
End If
If CurrSprDS.FldVal("ISIMP")=1 Then rsTab1.FldVal("TAB1_A132") = 1 Else rsTab1.FldVal("TAB1_A132") = Null
If CurrSprDS.FldVal("Price")<>0 Then
rsTab1.FldOrigVal("TAB1_A16") = CurrSprDS.FldOrigVal("Price")

If rsMain.FldVal("N2_12") <> 5 Then

If Not(rsMain.FldVal("N25")=1 and (rsMain.FldVal("N14")="04" or rsMain.FldVal("N14")="08" or rsMain.FldVal("N14")="09" or rsMain.FldVal("N14")="10" or rsMain.FldVal("N14")="13") and _
rsMain.FldVal("N4")="600000000000") Then

If Not IsNull(rsTab1.FldOrigVal("TAB1_A16")) Then rsTab1.FldVal("TAB1_A10") = rsTab1.FldVal("TAB1_A15")*rsTab1.FldVal("TAB1_A16") Else rsTab1.FldVal("TAB1_A10") = Null

End If ' If Not(.FldVal("N25")=1 and (.FldVal("N14")="04" or .FldVal("N14")="08" or .FldVal("N14")="09" or .FldVal("N14")="13") and _
End If ' If .FldVal("N2_12") <> 5 Then

Else
rsTab1.FldVal("TAB1_A16") = Null
End if
'----- одиниці виміру тільки для 9
If Not isempty (CurrSprDS.Fields.Item("NUMHBUMEASURE")) Then
Spr = App.GetSprValue("HBUMEASURE2", "NUM", Cstr(currSprDS.FldVal("NUMHBUMEASURE")), "CHARCODE")
If Trim(Spr) <> "" Then
rsTab1.FldVal("TAB1_A14") = Spr
rsTab1.FldVal("TAB1_A141") = currSprDS.FldVal("NUMHBUMEASURE")
Else
rsTab1.FldVal("TAB1_A14") = ""
rsTab1.FldVal("TAB1_A141") = ""
End if
End if
'----
rsTab1.Post
End If

If DocEditedFieldName = "TAB1_A131" Then
rsTab1.Edit
rsTab1.FldVal("TAB1_A131") = CurrSprDS.FldVal("Num")
rsTab1.Post
End If

Set rsTab1 = Nothing

.Post
End With
END SUB
SUB MODIFY()'Программа модификации
rsMain.Edit
With rsMain
If Doc.GblVal("ProgramType")="BUDJET" Then 'если Оракл (исключая инспектор)
If Not (ParentOrgDs.Bof And ParentOrgDs.EOF) Then
If ParentOrgDs.FldVal("NAME") <> "" and .FldVal("FIRM_NAME") <> "" and _
Instr(Trim(.FldVal("FIRM_NAME")),",") = 0 and ParentOrgDS.FldVal("IndTaxNum") = .FldVal("FIRM_INN") Then _
.FldVal("FIRM_NAME") = ParentOrgDs.FldVal("NAME") + " , " + .FldVal("FIRM_NAME")
End if
Else
If OrgDS.FldVal("ISDEPT") = 1 and OrgDS.FldVal("HIGHERORGNAME") <> "" and .FldVal("FIRM_NAME") <> "" and _
Instr(Trim(.FldVal("FIRM_NAME")),",") = 0 and OrgDS.FldVal("IndTaxNum") = .FldVal("FIRM_INN") Then _
.FldVal("FIRM_NAME") = OrgDS.FldVal("HIGHERORGNAME") + " , " + .FldVal("FIRM_NAME")
End if ' If Doc.GblVal("ProgramType")="BUDJET"

If .FldVal("N13") = 0 Then .FldVal("N14") = ""

If DocEditedFieldName = "N26" and .FldVal("N26") <> "" Then .FldVal("N26") = "Без ПДВ"

If (DocEditedFieldName = "N4" or DocEditedFieldName = "N3") and (.FldVal("N4") = "100000000000" or .FldVal("N4") = "0") Then .FldVal("N3") = "Неплатник"

' If .FldVal("N2_11") <> "" and .FldVal("N2_12") <> 0 and .FldVal("N2_13") <> "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/" + CStr(.FldVal("N2_12"))+ "/" + CStr(.FldVal("N2_13"))
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") = 0 and .FldVal("N2_13") <> "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "//"+ CStr(.FldVal("N2_13"))
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") <> 0 and .FldVal("N2_13") = "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/"+ CStr(.FldVal("N2_12"))+ "/"
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") = 0 and .FldVal("N2_13") = "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))
If .FldVal("N2_12") = 0 and .FldVal("N2_13") = "" Then
.FldVal("N2_1") = CStr(.FldVal("N2_11"))
Else
.FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/" + CStr(.FldVal("N2_12"))+ "/" + CStr(.FldVal("N2_13"))
.FldVal("N2_1") = Replace(.FldVal("N2_1"), "/0/", "//")
End If

.FldVal("N2_1I") = ConvStrToDbl(.FldVal("N2_11"))

.FldVal("SN") = "№" + Cstr(.FldVal("N2_1"))

' If .FldVal("N811")<>"" Or .FldVal("N812")<>"" Then _
' .FldVal("N81") = Trim(.FldVal("N811"))+ Trim(.FldVal("N812"))

If .FldVal("N2_12") <> 5 Then

If Not(.FldVal("N25")=1 and (.FldVal("N14")="04" or .FldVal("N14")="08" or .FldVal("N14")="09" or .FldVal("N14")="10" or .FldVal("N14")="13") and _
.FldVal("N4")="600000000000") Then

Doc.GblVal("TAB_A10_20")=Null
Doc.GblVal("TAB_A10_7")=Null
Doc.GblVal("TAB_A10_901")=Null
Doc.GblVal("TAB_A10_902")=Null
Doc.GblVal("TAB_A10_903")=Null
Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF
If Not IsNull(rsTab1.FldOrigVal("TAB1_A10")) and rsTab1.FldVal("TAB1_A8")=20 Then Doc.GblVal("TAB_A10_20")=Doc.GblVal("TAB_A10_20") + rsTab1.FldVal("TAB1_A10")
If Not IsNull(rsTab1.FldOrigVal("TAB1_A10")) and rsTab1.FldVal("TAB1_A8")=7 Then Doc.GblVal("TAB_A10_7")=Doc.GblVal("TAB_A10_7") + rsTab1.FldVal("TAB1_A10")
If Not IsNull(rsTab1.FldOrigVal("TAB1_A10")) and rsTab1.FldVal("TAB1_A8")=901 Then Doc.GblVal("TAB_A10_901")=Doc.GblVal("TAB_A10_901") + rsTab1.FldVal("TAB1_A10")
If Not IsNull(rsTab1.FldOrigVal("TAB1_A10")) and rsTab1.FldVal("TAB1_A8")=902 Then Doc.GblVal("TAB_A10_902")=Doc.GblVal("TAB_A10_902") + rsTab1.FldVal("TAB1_A10")
If Not IsNull(rsTab1.FldOrigVal("TAB1_A10")) and rsTab1.FldVal("TAB1_A8")=903 Then Doc.GblVal("TAB_A10_903")=Doc.GblVal("TAB_A10_903") + rsTab1.FldVal("TAB1_A10")
rsTab1.Next
Wend
Set rsTab1 = Nothing

'--- сума
If Not(IsNull(Doc.GblVal("TAB_A10_20"))) Then .FldVal("A5_7") = Doc.GblVal("TAB_A10_20") Else .FldVal("A5_7") = Null
If Not(IsNull(Doc.GblVal("TAB_A10_7"))) Then .FldVal("A5_71") = Doc.GblVal("TAB_A10_7") Else .FldVal("A5_71") = Null
If Not(IsNull(Doc.GblVal("TAB_A10_901"))) Then .FldVal("A5_9") = Doc.GblVal("TAB_A10_901") Else .FldVal("A5_9") = Null
If Not(IsNull(Doc.GblVal("TAB_A10_902"))) Then .FldVal("A5_8") = Doc.GblVal("TAB_A10_902") Else .FldVal("A5_8") = Null
If Not(IsNull(Doc.GblVal("TAB_A10_903"))) Then .FldVal("A5_10") = Doc.GblVal("TAB_A10_903") Else .FldVal("A5_10") = Null

End If ' If Not(.FldVal("N25")=1 and (.FldVal("N14")="04" or .FldVal("N14")="08" or .FldVal("N14")="09" or .FldVal("N14")="13")

'--- ПДВ
If Not(IsNull(.FldOrigVal("A5_7"))) Then
.FldVal("A6_7") = .FldVal("A5_7") * 20 /100
Else
.FldVal("A6_7") = Null
End If

If Not(IsNull(.FldOrigVal("A5_71"))) Then
.FldVal("A6_71") = .FldVal("A5_71") * 7 /100
Else
.FldVal("A6_71") = Null
End If

If Not(Isnull(.FldOrigVal("A6_7")) and Isnull(.FldOrigVal("A6_71"))) Then
.FldVal("A6_11") = Doc.SumByList("A6_7", "A6_71")
Else
.FldVal("A6_11") = Null
End If

'--- разом
If Not(IsNull(.FldOrigVal("A6_11")) and IsNull(.FldOrigVal("A5_7")) and IsNull(.FldOrigVal("A5_71")) and IsNull(.FldOrigVal("A5_9")) and _
IsNull(.FldOrigVal("A5_8")) and IsNull(.FldOrigVal("A5_10"))) Then
.FldVal("A7_11") = Doc.SumByList("A6_11","A5_7", "A5_71", "A5_9", "A5_8","A5_10")
Else
.FldVal("A7_11") = Null
End If

End If ' If .FldVal("N2_12") <> 5

fld = DocEditedFieldName
If (fld = "TAB1_A10") and .FldVal("A5_10") <> 0 and .FldVal("PZOB") = 0 Then
MsgBox "Введіть код податкового зобов'язання", vbOKOnly + vbExclamation, "ЗАУВАЖЕННЯ!"
End If

'---Відправка по маршруту:
'---------- "0" - Відправка відбуватиметься по маршруту
'---------- "1" - Відправка лише на реєстрацію в ДПС
'---------- "2" - Відправка на реєстрацію в ДПС апотім контрагенту
.FldVal("N21") = 0
If .FldVal("N4")="0" or .FldVal("N4")="100000000000" or .FldVal("N4")="300000000000" or .FldVal("N4")="400000000000" or .FldVal("N4")="600000000000" or _
.FldVal("FIRM_INN")="200000000000" or .FldVal("FIRM_INN")="500000000000" or .FldVal("FIRM_INN")= .FldVal("N4") Then .FldVal("N21") = 1
If .FldVal("N4")="200000000000" Then .FldVal("N21") = 2

End With
rsMain.Post
Set rsTab1sum = Nothing
Set rsTab1 = Nothing
END SUB
SUB TABLE()'Програма модифікації рядка таблиці
rsMain.Edit
With rsMain
If DocEditedFieldName = "" Then
Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF
rsTab1.Edit
rsTab1.FldVal("TAB1_A1") = rsTab1.RecNo
rsTab1.Post
rsTab1.Next
Wend
Set rsTab1 = Nothing
End If

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.Edit

' rsTab1.FldVal("TAB1_A1") = rsTab1.RecNo

fld=DocEditedFieldName

If rsMain.FldVal("N2_12") <> 5 Then
If Not(rsMain.FldVal("N25")=1 and (rsMain.FldVal("N14")="04" or rsMain.FldVal("N14")="08" or rsMain.FldVal("N14")="09" or rsMain.FldVal("N14")="10" or rsMain.FldVal("N14")="13") and _
rsMain.FldVal("N4")="600000000000") Then

If fld = "TAB1_A15" Or fld = "TAB1_A16" Then
If Not IsNull(rsTab1.FldOrigVal("TAB1_A16")) Then rsTab1.FldVal("TAB1_A10") = rsTab1.FldVal("TAB1_A15")*rsTab1.FldVal("TAB1_A16") Else rsTab1.FldVal("TAB1_A10") = Null
End If

End If ' If Not(.FldVal("N25")=1 and (.FldVal("N14")="04" or .FldVal("N14")="08" or .FldVal("N14")="09" or .FldVal("N14")="13") and _
End If ' If .FldVal("N2_12") <> 5 Then

rsTab1.Post
Set rsTab1 = Nothing

End With
rsMain.Post
END SUB
SUB CREATE()'Програма створення
rsMain.Edit
With rsMain
.FldVal("VER") = 1

.FldVal("N11") = Date
.FldVal("N19") = 1
If OrgDS.FldVal("DEPT")<>"" Then .FldVal("N2_13") = OrgDS.FldVal("DEPT")

' .FldVal("PHON") = .FldVal("FIRM_CITYCD") + .FldVal("FIRM_TELORG")

End With
rsMain.Post
END SUB
SUB OPEN()'Програма відкриття
With rsMain
.Edit
' If .FldVal("N81") <> "" and .FldVal("N811") = "" and .FldVal("N812") = "" Then
' .FldVal("N811") = Trim(Left(.FldVal("N81"),6))
' .FldVal("N812") = Trim(Mid(.FldVal("N81"),7,Len(.FldVal("N81"))-1))
' End if

' импорт J1201007-> J1201008
' *.DBF III -> VER=0
' *.DBF VII -> VER=2
' импорт J1201008-> J1201008
' *.DBF III -> VER=0
' *.DBF VII -> VER=1
'------очистка 0 при импорте из *.DBF VII
If .FldVal("VER") = 2 Then
.FldVal("VER") = 1

If Isnull(.FldOrigVal("A6_7")) and Isnull(.FldOrigVal("A6_71")) Then _
.FldVal("A6_11") = Null
End If

'------очистка 0 для ранее созданных(отправленных) форм (импорт из *.DBF III)
If .FldVal("VER") <> 1 and .FldVal("VER") <> 2 Then
.FldVal("VER") = 1

Mas = Array("A7_11","A6_11","A6_7","A6_71","A5_7","A5_71","A5_9","A5_8","A5_10","A3_11")
For i = LBound(Mas) to UBound(Mas)
If .FldVal(Trim(Mas(i))) = 0 Then .FldVal(Trim(Mas(i))) = Null
Next

'------очистка динам. табл. для импортированных докуметов с других систем
' Set rsTab1 = Doc.DataSets("TAB1")
' rsTab1.First
' While Not rsTab1.EOF
' rsTab1.Edit
' If rsTab1.FldVal("TAB1_A16")<>0 Then
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A17")) and rsTab1.FldVal("TAB1_A17") = 0 Then rsTab1.FldVal("TAB1_A17")=Null
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A171")) and rsTab1.FldVal("TAB1_A171") = 0 Then rsTab1.FldVal("TAB1_A171")=Null
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A110")) and rsTab1.FldVal("TAB1_A110") = 0 Then rsTab1.FldVal("TAB1_A110")=Null
'
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A18")) and rsTab1.FldVal("TAB1_A18") = 0 Then rsTab1.FldVal("TAB1_A18")=Null
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A19")) and rsTab1.FldVal("TAB1_A19") = 0 Then rsTab1.FldVal("TAB1_A19")=Null
' End If
' rsTab1.Post
' rsTab1.Next
' Wend
' Set rsTab1 = Nothing
''------
'
' Doc.GblVal("TAB_A17")=0
' Doc.GblVal("TAB_A171")=0
' Doc.GblVal("TAB_A110")=0
' Set rsTab1 = Doc.DataSets("TAB1")
' rsTab1.First
' While Not rsTab1.EOF
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A17")) Then Doc.GblVal("TAB_A17")=1
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A171")) Then Doc.GblVal("TAB_A171")=1
' If Not IsNull(rsTab1.FldOrigVal("TAB1_A110")) Then Doc.GblVal("TAB_A110")=1
' rsTab1.Next
' Wend
' Set rsTab1 = Nothing
'
' If Doc.GblVal("TAB_A17")=0 and .FldVal("A5_7") = 0 and Not IsNull(.FldOrigVal("A5_7")) Then
' .FldVal("A5_7") = Null
' .FldVal("A6_7") = Null ' для очистки файлов *.dbf ver.III
' .FldVal("A7_7") = Null
' End If
' If Doc.GblVal("TAB_A171")=0 and .FldVal("A5_71") = 0 and Not IsNull(.FldOrigVal("A5_71")) Then
' .FldVal("A5_71") = Null
' .FldVal("A6_71") = Null ' для очистки файлов *.dbf ver.III
' .FldVal("A7_71") = Null
' End If
' If Doc.GblVal("TAB_A110")=0 and .FldVal("A5_10") = 0 and Not IsNull(.FldOrigVal("A5_10")) Then
' .FldVal("A5_10") = Null
' .FldVal("A7_10") = Null
' End If
'
' If Isnull(.FldOrigVal("A5_7")) and Isnull(.FldOrigVal("A5_71")) and .FldVal("A5_8")=0 and .FldVal("A5_9")=0 and Isnull(.FldOrigVal("A5_10")) Then
' .FldVal("A5_11") = Null
' End If
'
' If IsNull(.FldOrigVal("A5_11")) and IsNull(.FldOrigVal("A6_11")) and .FldVal("A3_11")=0 Then
' .FldVal("A7_11") =Null
' End If

End If

.Post
End With

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF
rsTab1.Edit
rsTab1.FldVal("TAB1_A1") = rsTab1.RecNo
rsTab1.Post
rsTab1.Next
Wend
Set rsTab1 = Nothing

END SUB
SUB SAVE()'Програма збереження
rsMain.Edit
With rsMain

a131_1 = 0
a131_2 = 0

a133_1 = 0
a133_2 = 0
Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF
rsTab1.Edit
rsTab1.FldVal("TAB1_A1") = rsTab1.RecNo
If rsTab1.FldVal("TAB1_A131")<>"" Then a131_1 = 1
If rsTab1.FldVal("TAB1_A131")="" Then a131_2 = 1

If rsTab1.FldVal("TAB1_A133")<>"" Then a133_1 = 1
If rsTab1.FldVal("TAB1_A133")="" Then a133_2 = 1
rsTab1.Post
rsTab1.Next
Wend
Set rsTab1 = Nothing

If a131_1 = 1 and a131_2 = 0 Then
.FldVal("UKTPRESENCE") = "Наявний"
ElseIf a131_1 = 1 and a131_2 = 1 Then
.FldVal("UKTPRESENCE") = "Наявний частково"
ElseIf a131_1 = 0 and a131_2 = 1 Then
.FldVal("UKTPRESENCE") = "Відсутній"
End If

If a133_1 = 1 and a133_2 = 0 Then
.FldVal("SERVICEPRESENCE") = "Наявний"
ElseIf a133_1 = 1 and a133_2 = 1 Then
.FldVal("SERVICEPRESENCE") = "Наявний частково"
ElseIf a133_1 = 0 and a133_2 = 1 Then
.FldVal("SERVICEPRESENCE") = "Відсутній"
End If

' If .FldVal("N2_11") <> "" and .FldVal("N2_12") <> 0 and .FldVal("N2_13") <> "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/" + CStr(.FldVal("N2_12"))+ "/" + CStr(.FldVal("N2_13"))
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") = 0 and .FldVal("N2_13") <> "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "//"+ CStr(.FldVal("N2_13"))
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") <> 0 and .FldVal("N2_13") = "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/"+ CStr(.FldVal("N2_12"))+ "/"
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") = 0 and .FldVal("N2_13") = "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))
If .FldVal("N2_12") = 0 and .FldVal("N2_13") = "" Then
.FldVal("N2_1") = CStr(.FldVal("N2_11"))
Else
.FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/" + CStr(.FldVal("N2_12"))+ "/" + CStr(.FldVal("N2_13"))
.FldVal("N2_1") = Replace(.FldVal("N2_1"), "/0/", "//")
End If

.FldVal("N2_1I") = ConvStrToDbl(.FldVal("N2_11"))

'---Відправка по маршруту:
'---------- "0" - Відправка відбуватиметься по маршруту
'---------- "1" - Відправка лише на реєстрацію в ДПС
'---------- "2" - Відправка на реєстрацію в ДПС апотім контрагенту
.FldVal("N21") = 0
If .FldVal("N4")="0" or .FldVal("N4")="100000000000" or .FldVal("N4")="300000000000" or .FldVal("N4")="400000000000" or .FldVal("N4")="600000000000" or _
.FldVal("FIRM_INN")="200000000000" or .FldVal("FIRM_INN")="500000000000" or .FldVal("FIRM_INN")= .FldVal("N4") Then .FldVal("N21") = 1
If .FldVal("N4")="200000000000" Then .FldVal("N21") = 2

End With
rsMain.Post
END SUB
SUB CHECK() 'Перевiрка
rsMain.Edit
With rsMain
' IF IsDate(.FldVal("N11")) THEN _
' IF .FldVal("N11") < DateSerial(2015,1,1) Then _
' Call Trace_AddMessage("Зауваження! Данна форма ПН вступає в дію з 01.01.2015 р.","N11")
' IF .FldVal("FIRM_NAME")= "" THEN _
' Call Trace_AddMessage("Заповніть будь ласка поле 'Продавець'.","FIRM_NAME")
' IF .FldVal("FIRM_INN")= "" THEN _
' Call Trace_AddMessage("Заповніть будь ласка поле 'Індивідуальний податковий номер продавця'.","FIRM_INN")
' IF .FldVal("FIRM_ADR")= "" THEN _
' Call Trace_AddMessage("Заповніть будь ласка поле 'Місцезнаходження продавця'.","FIRM_ADR")
' IF .FldVal("N3")= "" THEN _
' Call Trace_AddMessage("Заповніть будь ласка поле 'Покупець'.","N3")
' IF .FldVal("N4")= "" THEN _
' Call Trace_AddMessage("Заповніть будь ласка поле 'Індивідуальний податковий номер покупця'.","N4")
' IF .FldVal("N5")= "" THEN _
' Call Trace_InfoMessage("Заповніть будь ласка поле 'Місцезнаходження покупця'.","N5")
' IF .FldVal("N8")= "" THEN _
' Call Trace_InfoMessage("Заповніть будь ласка поле 'Умова поставки'.","N8")
' IF .FldVal("N9")= "" THEN _
' Call Trace_InfoMessage("Заповніть будь ласка поле 'Форма проведених розрахунків'.","N9")
IF .FldVal("N10")= "" THEN _
Call Trace_AddMessage("Заповніть будь ласка поле 'підпис і прізвище особи, яка склала податкову накладну'.","N10")
IF Not IsDate(.FldVal("N11")) THEN _
Call Trace_AddMessage("Заповніть будь ласка поле 'Дата виписки податкової накладної'.","N11")
' IF .FldVal("N2_11")= "" THEN _
' Call Trace_AddMessage("Заповніть будь ласка поле 'Порядковий номер податкової накладної'.","N2_11")
IF IsDate(.FldVal("N11")) and Month(.FldVal("N11"))<> Month(Doc.NPerDate) THEN _
Call Trace_InfoMessage("Зауваження! Дата виписки ПН не відповідає поточному періоду.","N11")
IF .FldVal("N2_11")<> "" and Left(.FldVal("N2_11"),1)="0" THEN _
Call Trace_InfoMessage("Попередження. Поле 'Порядковий номер' не повинно містити нулі на початку номера.","N2_11")
' IF .FldVal("N2_12")= 7 and (.FldVal("A6_8")=0 or .FldVal("A6_8")=Null) THEN _
' Call Trace_AddMessage("Поле 'Податок на додану вартість' повинно бути заповненим.","A6_8")
If .FldVal("FIRM_INN")="500000000000" and .FldVal("N4") <> OrgDs.FldVal("INDTAXNUM") Then _
Call Trace_AddMessage("Невірно вказаний ІПН покупця.","N4")

If .FldVal("N4")<>"0" Then
If (.FldVal("N4")="100000000000" and Not((.FldVal("N14")="01" or .FldVal("N14")="02" or .FldVal("N14")="11"))) or _
(.FldVal("N4")<>"100000000000" and (.FldVal("N14")="01" or .FldVal("N14")="02" or .FldVal("N14")="11")) Then _
Call Trace_AddMessage("Якщо ІПН покупця 100000000000, то ТП може бути 01, 02, 11 і навпаки.","N4")
If (.FldVal("N4")="300000000000" and .FldVal("N14")<>"07") or (.FldVal("N4")<>"300000000000" and .FldVal("N14")="07") Then _
Call Trace_AddMessage("Якщо ІПН покупця 300000000000, то ТП може бути 07 і навпаки.","N4")
End If ' If .FldVal("N4")<>"0"
If (.FldVal("N4")="200000000000" and .FldVal("N14")<>"12") or (.FldVal("N4")<>"200000000000" and .FldVal("N14")="12") Then _
Call Trace_AddMessage("Якщо ІПН покупця 200000000000, то ТП може бути 12 і навпаки.","N4")
If (.FldVal("FIRM_INN")="500000000000" and .FldVal("N14")<>"14") or (.FldVal("FIRM_INN")<>"500000000000" and .FldVal("N14")="14") Then _
Call Trace_AddMessage("Якщо ІПН продавця 500000000000, то ТП може бути 14 і навпаки.","FIRM_INN")
If .FldVal("N26")<>"" and Not(IsNull(.FldOrigVal("A6_11")) and IsNull(.FldOrigVal("A6_7")) and IsNull(.FldOrigVal("A6_71")) and IsNull(.FldOrigVal("A5_7")) and _
IsNull(.FldOrigVal("A5_71")) and IsNull(.FldOrigVal("A5_9")) and IsNull(.FldOrigVal("A5_8"))) Then _
Call Trace_AddMessage("Якщо ПН складена на операції, звільнені від оподаткування, то р.ІІ - VIII не заповнюються.","N26")
If (.FldVal("N26")<>"" and IsNull(.FldOrigVal("A5_10"))) or (.FldVal("N26")="" and Not(IsNull(.FldOrigVal("A5_10")))) Then _
Call Trace_AddMessage("Якщо ПН складена на операції, звільнені від оподаткування, то необхідно заповнити р.IX та проставити відмітку 'Без ПДВ'.","N26")
If .FldVal("N25")=1 and ((.FldVal("N4")="600000000000" and Not(.FldVal("N14")="04" or .FldVal("N14")="08" or .FldVal("N14")="09" or .FldVal("N14")="10" or .FldVal("N14")="13")) or _
(.FldVal("N4")<>"600000000000" and (.FldVal("N14")="04" or .FldVal("N14")="08" or .FldVal("N14")="09" or .FldVal("N14")="10" or .FldVal("N14")="13"))) Then _
Call Trace_AddMessage("Якщо ІПН покупця 600000000000, то ТП може бути 04, 08, 09, 10, 13 і навпаки.","N4")
If .FldVal("N25")=1 and .FldVal("N14")="11" Then _
Call Trace_AddMessage("ПН з ТП 11 не може містити відмітку 'Зведена'.","N25")
If .FldVal("N4")="600000000000" and .FldVal("N25")<>1 Then _
Call Trace_AddMessage("Якщо ІПН покупця 600000000000, то повинна стояти відмітка 'Зведена податкова накладна'.","N25")
If .FldVal("N14")="15" and .FldVal("FIRM_INN") <> .FldVal("N4") Then _
Call Trace_AddMessage("Якщо ТП 15 то ІПН продавця повинен дорівнювати ІПН покупця.","N4")
If .FldVal("N4")<>"0" Then
If (.FldVal("N14")="03" or .FldVal("N14")="05" or .FldVal("N14")="06") and _
.FldVal("N4")="400000000000" and .FldVal("N3") <> .FldVal("FIRM_NAME") Then _
Call Trace_AddMessage("Якщо ТП 03, 05, 06 і ІПН покупця 400000000000, то назва покупця повинна відповідати назві продавця.","N3")
If .FldVal("N25")=0 and ((.FldVal("N4")="400000000000" and Not(.FldVal("N14")="03" or .FldVal("N14")="05" or .FldVal("N14")="06")) or _
(.FldVal("N4")<>"400000000000" and (.FldVal("N14")="03" or .FldVal("N14")="05" or .FldVal("N14")="06"))) Then _
Call Trace_AddMessage("Якщо ІПН покупця 400000000000, то ТП може бути 03, 05, 06 і навпаки.","N4")
End If ' If .FldVal("N4")<>"0"

Set rsTabsum = Doc.DataSets("TAB1",1)
sum = rsTabsum.FldVal("TAB1_A10")
Set rsTabsum = Nothing
If .FldVal("N2_12") <> 5 and .FldVal("N25")=1 and sum <> 0 and .FldVal("A5_7") = 0 and .FldVal("A5_71") = 0 Then _
Call Trace_InfoMessage("Перевірте заповнення рядків з І по VІ Розділу А.","A5_7")

If Not(IsNull(.FldOrigVal("A5_10"))) and Not(IsNull(.FldOrigVal("A5_7")) and IsNull(.FldOrigVal("A5_71")) and IsNull(.FldOrigVal("A5_8")) and IsNull(.FldOrigVal("A5_9"))) Then _
Call Trace_AddMessage("Для операцій, звільнених від оподаткування необхідно заповнити окрему податкову накладну.","A5_10")
' If Not(IsNull(.FldOrigVal("A5_10"))) and .FldVal("N16")="" Then _
' Call Trace_AddMessage("Для операцій, звільнених від оподаткування необхідно заповнити дане поле.","N16")

' IF Doc.GblVal("ProgramType")= "MEDOC" Then
' IF Not IsDate(.FldVal("N82")) THEN _
' Call Trace_InfoMessage("Рекомендуємо заповнити дату договору для формування пакету зв'язаних Первинних документів.","N82")
' IF .FldVal("N81")= "" THEN _
' Call Trace_InfoMessage("Рекомендуємо заповнити № договору для формування пакету зв'язаних Первинних документів.","N81")
' End If
If ABS(.FldVal("A6_7")- RoundVal(.FldVal("A5_7")*0.2,2)) >= 1 Then
Call Trace_AddMessage("Значення рядка III розділу А повинно дорівнювати значенню рядка V розділу А х 0,20 (допустиме відхилення суми ПДВ до 1,00 грн.). ","A6_7")
Else
If .FldVal("A6_7") <> RoundVal(.FldVal("A5_7")*0.2,2) Then _
Call Trace_InfoMessage("Значення рядка III розділу А повинно дорівнювати значенню рядка V розділу А х 0,20. ","A6_7")
End If
If ABS(.FldVal("A6_71")- RoundVal(.FldVal("A5_71")*0.07,2)) >= 1 Then
Call Trace_AddMessage("Значення рядка IV розділу А повинно дорівнювати значенню рядка VІ розділу А х 0,07 (допустиме відхилення суми ПДВ да 1,00 грн.).","A6_71")
Else
If .FldVal("A6_71") <> RoundVal(.FldVal("A5_71")*0.07,2) Then _
Call Trace_InfoMessage("Значення рядка IV розділу А повинно дорівнювати значенню рядка VІ розділу А х 0,07.","A6_71")
End If

Set regEx = New RegExp
regEx.Pattern = "^([0-9]{5,10}|[АБВГДЕЄЖЗИІКЛМНОПРСТУФХЦЧШЩЮЯ]{2}[0-9]{6}|[0]){0,1}$"
If not regEx.Test(.FldVal("EDR_POK")) Then _
Call Trace_AddMessage("Некоректно заповнене поле (допускається числовий код, або № паспорта).","EDR_POK")


'-----перевірка на відповідність кода КВЕД та УКТЗЕД
Set Dict = CreateObject("Scripting.Dictionary")
Dict.Add "701", Array("0701", "0702000000", "0703", "0704", "0705", "0706", "070700", "0709", "0710", "0712", "0714", "0807", "121291")
Dict.Add "702", Array("0806")
Dict.Add "703", Array("0808", "0809")
Dict.Add "704", Array("0810", "0802")
Dict.Add "705", Array("0102", "0401")
Dict.Add "706", Array("0102", "0511")
Dict.Add "707", Array("0101", "0401")
Dict.Add "708", Array("0104", "0401", "5101")
Dict.Add "709", Array("0103", "0511")
Dict.Add "710", Array("0105", "0407")
Dict.Add "711", Array("0106", "0409000000", "5001000000", "4301", "4302")
Dict.Add "712", Array("2401")
Dict.Add "713", Array("0201", "0202", "0203", "0204", "020500", "0206", "0208", "0502", "5101")
Dict.Add "714", Array("0207")
Dict.Add "715", Array("0401", "0403")
Dict.Add "716", Array("0408", "350211", "350219")
Arr = Dict.Keys
Ar = Dict.Items
'-----

Set rsTab = Doc.DataSets("TAB1")
rsTab.First
While Not rsTab.EOF
' If Not IsDate(rsTab.FldVal("TAB1_A12")) Then _
' Call Trace_AddMessage("Заповніть будь ласка поле 'Дата відвантаження'.", CSTR("TAB1_A12:"+ CSTR(rsTab.RecNo)))
' If IsDate(rsTab.FldVal("TAB1_A12")) And IsDate(rsMain.FldVal("N11")) And rsTab.FldVal("TAB1_A12") > rsMain.FldVal("N11") Then _
' Call Trace_AddMessage("Дата відвантаження не може перевищувати дату виписки податкової накладної.", CSTR("TAB1_A12:"+ CSTR(rsTab.RecNo)))
' If IsDate(rsTab.FldVal("TAB1_A12")) And IsDate(rsMain.FldVal("N11")) And rsTab.FldVal("TAB1_A12") <> rsMain.FldVal("N11") Then _
' Call Trace_InfoMessage("Зауваження! Дата виписки ПН відрізняється від дати виникнення податкового зобов'язання.", CSTR("TAB1_A12:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A13")= "" Then _
Call Trace_AddMessage("Заповніть будь ласка поле 'Номенклатура поставки товарів'.", CSTR("TAB1_A13:"+ CSTR(rsTab.RecNo)))
If rsMain.FldVal("N2_12")<>5 Then
If rsTab.FldVal("TAB1_A14")= "" Then
If rsMain.FldVal("N14")= "15" or rsMain.FldVal("N14")= "11" Then
' Call Trace_InfoMessage("Заповніть будь ласка поле 'Одиниця виміру товару'.", CSTR("TAB1_A14:"+ CSTR(rsTab.RecNo)))
Else
Call Trace_AddMessage("Заповніть будь ласка поле 'Одиниця виміру товару'.", CSTR("TAB1_A14:"+ CSTR(rsTab.RecNo)))
End If
End If
If rsMain.FldVal("N14")<> "04" and rsMain.FldVal("N14")<> "08" and rsMain.FldVal("N14")<> "09" and rsMain.FldVal("N14")<> "10" and rsMain.FldVal("N14")<> "13" Then
If rsTab.FldVal("TAB1_A15")= 0 Then _
Call Trace_InfoMessage("Заповніть будь ласка поле 'Кількість (об'єм, обсяг)'.", CSTR("TAB1_A15:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A16")= 0 Then _
Call Trace_InfoMessage("Заповніть будь ласка поле 'Ціна поставки одиниці продукції'.", CSTR("TAB1_A16:"+ CSTR(rsTab.RecNo)))
If rsMain.FldVal("N14")<> "15" and rsTab.FldVal("TAB1_A131")="" and rsTab.FldVal("TAB1_A133")="" Then _
Call Trace_AddMessage("Повинно бути заповнене одне із полів гр.3.1 або гр.3.3.", CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
End If
If rsTab.FldVal("TAB1_A10")=0 Then _
Call Trace_InfoMessage("Заповніть будь ласка поле 'Обсяг продажу'.", CSTR("TAB1_A10:"+ CSTR(rsTab.RecNo)))
End If ' If rsMain.FldVal("N2_12")<>5

If rsTab.FldVal("TAB1_A131")<>"" and rsTab.FldVal("TAB1_A133")<>"" Then _
Call Trace_AddMessage("При заповненні гр.3.1 гр.3.3 не заповнюється.", CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A133")<>"" and (rsTab.FldVal("TAB1_A131")<>"" or rsTab.FldVal("TAB1_A132")<>0) Then _
Call Trace_AddMessage("При заповненні гр.3.3 гр.3.1,3.2 не заповнюються.", CSTR("TAB1_A133:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A132")=1 and Not(Len(rsTab.FldVal("TAB1_A131"))=10 and rsTab.FldVal("TAB1_A133")="") Then _
Call Trace_AddMessage("При заповненні гр.3.2 гр.3.1 має містити 10-и значний код УКТ ЗЕД, а гр.3.3 не заповнюються.", CSTR("TAB1_A132:"+ CSTR(rsTab.RecNo)))

' If rsMain.FldVal("N2_12")=7 and (rsTab.FldVal("TAB1_A17")<>0 or rsTab.FldVal("TAB1_A19")<>0 or rsTab.FldVal("TAB1_A110")<>0) Then _
' Call Trace_AddMessage("Якщо в номері ПН вид діяльності 7, то графи 8,10 та 11 не заповнюються.", CSTR("TAB1_A17:"+ CSTR(rsTab.RecNo)))
' If Not((Not IsNull(rsTab.FldOrigVal("TAB1_A17")) And IsNull(rsTab.FldOrigVal("TAB1_A171")) And rsTab.FldVal("TAB1_A18")=0 And rsTab.FldVal("TAB1_A19")=0 And IsNull(rsTab.FldOrigVal("TAB1_A110"))) or _
' (IsNull(rsTab.FldOrigVal("TAB1_A17")) And Not IsNull(rsTab.FldOrigVal("TAB1_A171")) And rsTab.FldVal("TAB1_A18")=0 And rsTab.FldVal("TAB1_A19")=0 And IsNull(rsTab.FldOrigVal("TAB1_A110"))) or _
' (IsNull(rsTab.FldOrigVal("TAB1_A17")) And IsNull(rsTab.FldOrigVal("TAB1_A171")) And rsTab.FldVal("TAB1_A18")<>0 And rsTab.FldVal("TAB1_A19")=0 And IsNull(rsTab.FldOrigVal("TAB1_A110"))) or _
' (IsNull(rsTab.FldOrigVal("TAB1_A17")) And IsNull(rsTab.FldOrigVal("TAB1_A171")) And rsTab.FldVal("TAB1_A18")=0 And rsTab.FldVal("TAB1_A19")<>0 And IsNull(rsTab.FldOrigVal("TAB1_A110"))) or _
' (IsNull(rsTab.FldOrigVal("TAB1_A17")) And IsNull(rsTab.FldOrigVal("TAB1_A171")) And rsTab.FldVal("TAB1_A18")=0 And rsTab.FldVal("TAB1_A19")=0 And Not IsNull(rsTab.FldOrigVal("TAB1_A110"))) or _
' (IsNull(rsTab.FldOrigVal("TAB1_A17")) And IsNull(rsTab.FldOrigVal("TAB1_A171")) And rsTab.FldVal("TAB1_A18")=0 And rsTab.FldVal("TAB1_A19")=0 And IsNull(rsTab.FldOrigVal("TAB1_A110")))) Then _
' Call Trace_AddMessage("В одному рядку може бути заповнена тільки одна з гр.8-12.", CSTR("TAB1_A17:"+ CSTR(rsTab.RecNo)))
' If rsMain.FldVal("N20")=1 and (rsTab.FldVal("TAB1_A131")<>"" or rsTab.FldVal("TAB1_A14")<>"" or rsTab.FldVal("TAB1_A141")<>"" or rsTab.FldVal("TAB1_A15")<>0 or _
' rsTab.FldVal("TAB1_A16")<>0 or rsTab.FldVal("TAB1_A17")<>0 or rsTab.FldVal("TAB1_A171")<>0 or rsTab.FldVal("TAB1_A18")<>0 or rsTab.FldVal("TAB1_A19")<>0 or rsTab.FldVal("TAB1_A110")<>0) Then _
' Call Trace_InfoMessage("При наявності відмітки 'Складається оператором інвестору...' графи з 4 по 12 не заповнюються.", CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
If (rsTab.FldVal("TAB1_A15")<>0 or rsTab.FldVal("TAB1_A16")<>0) and rsTab.FldVal("TAB1_A10")<> RoundVal(rsTab.FldVal("TAB1_A15")*rsTab.FldVal("TAB1_A16"),2) Then _
Call Trace_InfoMessage("Значення гр.10 повинно дорівнювати значенню гр.6 х гр.7", CSTR("TAB1_A10:"+ CSTR(rsTab.RecNo)))
If (rsMain.FldVal("N14")="04" or rsMain.FldVal("N14")="08" or rsMain.FldVal("N14")="09" or rsMain.FldVal("N14")="10" or rsMain.FldVal("N14")="13") and rsMain.FldVal("N4")="600000000000" and _
Not(rsTab.FldVal("TAB1_A131")="" and rsTab.FldVal("TAB1_A132")=0 and rsTab.FldVal("TAB1_A133")="" and rsTab.FldVal("TAB1_A141")="" and IsNull(rsTab.FldOrigVal("TAB1_A15")) and IsNull(rsTab.FldOrigVal("TAB1_A16")) and _
IsNull(rsTab.FldOrigVal("TAB1_A8")) and rsTab.FldVal("TAB1_A9")="" and rsTab.FldVal("TAB1_A11")=0) Then _
Call Trace_AddMessage("У 'Зведеній податковій накладній' з ТП 04, 08, 09, 10, 13 і ІПН 600000000000 у табл. част. гр.3.1,3.2,3.3,5-9,11 не заповнюються.", CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
If IsDate(rsMain.FldVal("N11")) and rsMain.FldVal("N11")>=DateSerial(2017,3,1) and rsMain.FldVal("N14")="15" and _
Not(rsTab.FldVal("TAB1_A131")="" and rsTab.FldVal("TAB1_A132")=0 and rsTab.FldVal("TAB1_A133")="" and rsTab.FldVal("TAB1_A14")="" and rsTab.FldVal("TAB1_A141")="" and rsTab.FldVal("TAB1_A11")=0) Then _
Call Trace_AddMessage("У податковій накладній з ТП 15 у табл. част. гр.3.1,3.2,3.3,4,5,11 не заповнюються.", CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
If rsMain.FldVal("N14")="11" and Not(rsTab.FldVal("TAB1_A14")="" and rsTab.FldVal("TAB1_A141")="" and IsNull(rsTab.FldOrigVal("TAB1_A15")) and IsNull(rsTab.FldOrigVal("TAB1_A16"))) Then _
Call Trace_InfoMessage("У податковій накладній з ТП 11 у табл. част. гр.4,5,6,7 не заповнюються.", CSTR("TAB1_A141:"+ CSTR(rsTab.RecNo)))
If rsMain.FldVal("N2_12")=5 and Not(rsTab.FldVal("TAB1_A131")="" and rsTab.FldVal("TAB1_A132")=0 and rsTab.FldVal("TAB1_A133")="" and rsTab.FldVal("TAB1_A14")="" and rsTab.FldVal("TAB1_A141")="" and IsNull(rsTab.FldOrigVal("TAB1_A15")) and _
IsNull(rsTab.FldOrigVal("TAB1_A16")) and IsNull(rsTab.FldOrigVal("TAB1_A8")) and rsTab.FldVal("TAB1_A9")="" and IsNull(rsTab.FldOrigVal("TAB1_A10")) and rsTab.FldVal("TAB1_A11")=0 and _
IsNull(rsMain.FldOrigVal("A6_7")) and IsNull(rsMain.FldOrigVal("A6_71")) and IsNull(rsMain.FldOrigVal("A5_7")) and IsNull(rsMain.FldOrigVal("A5_71")) and IsNull(rsMain.FldOrigVal("A5_9")) and _
IsNull(rsMain.FldOrigVal("A5_8")) and IsNull(rsMain.FldOrigVal("A5_10")) and IsNull(rsMain.FldOrigVal("A3_11"))) Then _
Call Trace_AddMessage("У податковій накладній, складеній в межах виконання багатосторонньої угоди про розподіл продукції оператором інвестору у табл. част. гр.3.1,3.2,3.3,4-11 не заповнюються, рядки ІІІ-Х не заповнюються.", CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
' If rsTab.FldVal("TAB1_A9")<>"" and rsTab.FldVal("TAB1_A8")<>903 Then _
' Call Trace_AddMessage("Невірно вказаний код ставки.", CSTR("TAB1_A8:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A9")="" and rsTab.FldVal("TAB1_A8")=903 Then _
Call Trace_AddMessage("Необхідно заповнити поле 'Код пільги'.", CSTR("TAB1_A9:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A9")="99999999" and rsMain.FldVal("N16")="" Then _
Call Trace_AddMessage("Якщо в гр. 9 вказано 99999999, то необхідно заповнити поле.", "N16")
If rsTab.FldVal("TAB1_A8")=0 and rsMain.FldVal("N2_12")<>5 and rsMain.FldVal("N4")<>"600000000000" Then _
Call Trace_AddMessage("Необхідно заповнити поле 'Код ставки'.", CSTR("TAB1_A8:"+ CSTR(rsTab.RecNo)))
If (rsMain.FldVal("N2_12")=2 and rsTab.FldVal("TAB1_A11")=0) or (rsMain.FldVal("N2_12")<>2 and rsTab.FldVal("TAB1_A11")<>0) Then _
Call Trace_AddMessage("Якщо у другій половині порядкового номера ПН зазначено код '2', то гр.11 розділу Б повинна бути заповнена і навпаки.",CSTR("TAB1_A11:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A11")<>0 and (rsTab.FldVal("TAB1_A11")< 701 or rsTab.FldVal("TAB1_A11")> 716) Then _
Call Trace_InfoMessage("'Коду виду діяльності для с/г товарів' повинен мати значення від 701 до 716.", CSTR("TAB1_A11:"+ CSTR(rsTab.RecNo)))

'----перевірка на наявність кода УКТЗЕД у довіднику
Spr = App.GetSprValue("HBUKTUKTZED", "NUM", Cstr(rsTab.FldVal("TAB1_A131")), "NUM")
If rsTab.FldVal("TAB1_A131")<>"" and Trim(Spr) = "" Then _
Call Trace_InfoMessage("Даний код УКТ ЗЕД(умовний код товару) не знайдено в Довіднику.", CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
'----перевірка на відповідність одиниць виміру та кода
Spr = App.GetSprValue("HBUMEASURE2", "NUM", CStr(rsTab.FldVal("TAB1_A141")), "CHARCODE")
If rsTab.FldVal("TAB1_A14")<> Trim(Spr) Then _
Call Trace_InfoMessage("Назва одиниці виміру не відповідає коду одиниці виміру(виключення становить умовні позначення, відсутні в КСПОВО).", CSTR("TAB1_A14:"+ CSTR(rsTab.RecNo)))
'-----перевірка на відповідність кода КВЕД та УКТЗЕД
For i=0 To Dict.Count-1
k = 0 ' поиск УКТЗЕД по списку
n = 0 ' найден ли код вида деят. с/г предпр.
If CStr(rsTab.FldVal("TAB1_A11")) = CStr(Arr(i)) Then
MAS = Ar(i)
st = Join(MAS, ", ")
n = 1
For j = 0 to Ubound(MAS)
If Left(CStr(rsTab.FldVal("TAB1_A131")),Len(CStr(MAS(j)))) = CStr(MAS(j)) Then
k = 1
Exit For
End if
Next
End If
If k = 1 or n = 1 Then Exit For
Next
If n = 1 and k = 0 Then _
Call Trace_InfoMessage("Для 'Коду виду діяльності для с/г товарів' "&CStr(rsTab.FldVal("TAB1_A11"))&" код товару за УКТЗЕД повинен мати значення "& CStr(st), CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
'-----

'-----ВАЛИДАЦИЯ ПО XSD
Set regEx = New RegExp
regEx.Pattern = "^([0-9]{10}|[0-9]{8}|[0-9]{6}|00[0-9]{3}|[0-9]{4}|[0])?$"
If Not regEx.Test(rsTab.FldVal("TAB1_A131")) Then _
Call Trace_AddMessage("Некоректно заповнене поле.",CSTR("TAB1_A131:"+ CSTR(rsTab.RecNo)))
Set regEx = Nothing

Set regEx = New RegExp
regEx.Pattern = "^(([\d]{2}\.[\d]{2}\.[\d]{2}-[\d]{2}(\.[\d]{1,2})*)|([\d]{2}\.[\d]{2}\.[\d]{2}(-[\d]{1,2})*)|([\d]{2}\.[\d]{2}(\.[\d]{1,2})*))?$"
If Not regEx.Test(rsTab.FldVal("TAB1_A133")) Then _
Call Trace_AddMessage("Некоректно заповнене поле.",CSTR("TAB1_A133:"+ CSTR(rsTab.RecNo)))
Set regEx = Nothing

Set regEx = New RegExp
regEx.Pattern = "^([0-9]{4})?$"
If Not regEx.Test(rsTab.FldVal("TAB1_A141")) Then _
Call Trace_AddMessage("Некоректно заповнене поле.",CSTR("TAB1_A141:"+ CSTR(rsTab.RecNo)))
Set regEx = Nothing

If rsTab.FldVal("TAB1_A8")<>0 and (rsTab.FldVal("TAB1_A8")<1 or rsTab.FldVal("TAB1_A8")>999) Then _
Call Trace_AddMessage("Некоректно заповнене поле.",CSTR("TAB1_A8:"+ CSTR(rsTab.RecNo)))
If rsTab.FldVal("TAB1_A8")<>0 and Not(rsTab.FldVal("TAB1_A8")=20 or rsTab.FldVal("TAB1_A8")=7 or rsTab.FldVal("TAB1_A8")=901 or _
rsTab.FldVal("TAB1_A8")=902 or rsTab.FldVal("TAB1_A8")=903) Then _
Call Trace_AddMessage("Некоректно заповнене поле.",CSTR("TAB1_A8:"+ CSTR(rsTab.RecNo)))

If rsTab.FldVal("TAB1_A9")<>"" and ConvStrToDbl(rsTab.FldVal("TAB1_A9"))=0 and rsTab.FldVal("TAB1_A9")<>"0" Then _
Call Trace_AddMessage("Некоректно заповнене поле.",CSTR("TAB1_A9:"+ CSTR(rsTab.RecNo)))

Mas = Array("TAB1_A10")
Mas1 = Array("TAB1_A10:")
For i = LBound(Mas) to UBound(Mas)
If rsTab.FldVal(Trim(Mas(i))) < 0 Then _
Call Trace_AddMessage("Значення показника не може бути від'ємним.",CSTR(Mas1(i)+ CSTR(rsTab.RecNo)))
Next

If rsTab.FldVal("TAB1_A11")<>0 and (rsTab.FldVal("TAB1_A11")< 1 or rsTab.FldVal("TAB1_A11")> 999) Then _
Call Trace_AddMessage("Некоректно заповнене поле.",CSTR("TAB1_A11:"+ CSTR(rsTab.RecNo)))
'-----------------

rsTab.Next
Wend

If rsTab.RecordCount > 9999 Then _
Call Trace_AddMessage("Максимальна кількість рядків не повинна перевищувати 9999.", CSTR("TAB1_A1:"+ CSTR(rsTab.RecNo)))

Set rsTab = nothing
Set Dict = nothing

'-----ВАЛИДАЦИЯ ПО XSD
Set regEx = New RegExp
regEx.Pattern = "^((0[1-9])|(1[0-7]))?$"
If Not regEx.Test(.FldVal("N14")) Then _
Call Trace_AddMessage("Некоректно заповнене поле.","N14")
Set regEx = Nothing

If ConvStrToDbl(.FldVal("N2_11"))< 1 or ConvStrToDbl(.FldVal("N2_11"))> 9999999 Then _
Call Trace_AddMessage("Некоректно заповнене поле.","N2_11")
If .FldVal("N2_12")<>0 and Not(.FldVal("N2_12")=2 or .FldVal("N2_12")=5) Then _
Call Trace_AddMessage("Некоректно заповнене поле.","N2_12")
If .FldVal("N2_13")<>"" and (ConvStrToDbl(.FldVal("N2_13"))< 1 or ConvStrToDbl(.FldVal("N2_13"))> 9999) Then _
Call Trace_AddMessage("Некоректно заповнене поле.","N2_13")

If .FldVal("FIRM_NAME")= "" Then _
Call Trace_AddMessage("Заповніть будь ласка поле 'Продавець'.","FIRM_NAME")
If .FldVal("N3")= "" Then _
Call Trace_AddMessage("Заповніть будь ласка поле 'Покупець'.","N3")

If .FldVal("FIRM_INN")="" or (ConvStrToDbl(.FldVal("FIRM_INN"))< 1000 or ConvStrToDbl(.FldVal("FIRM_INN"))> 999999999999) Then _
Call Trace_AddMessage("Некоректно заповнене поле.","FIRM_INN")
'If .FldVal("N4")="" or (ConvStrToDbl(.FldVal("N4"))< 1000 or ConvStrToDbl(.FldVal("N4"))> 999999999999) Then _
' Call Trace_AddMessage("Некоректно заповнене поле.","N4")
'Set regEx = New RegExp
' regEx.Pattern = "^(0)|([0-9]{6,12})|([АБВГДЕЄЖЗИ_КЛМНОПРСТУФХЦЧШЩЮЯ]{2}[0-9]{6})$"
' If Not regEx.Test(.FldVal("FIRM_INN")) Then _
' Call Trace_AddMessage("Некоректно заповнене поле.","FIRM_INN")
'Set regEx = Nothing

Set regEx = New RegExp
regEx.Pattern = "^((0)|([0-9]{6,12})|([АБВГДЕЄЖЗИІКЛМНОПРСТУФХЦЧШЩЮЯ]{2}[0-9]{6}))$"
If Not regEx.Test(.FldVal("N4")) Then _
Call Trace_AddMessage("Некоректно заповнене поле.","N4")
Set regEx = Nothing

Set regEx = New RegExp
regEx.Pattern = "^([0-9]{5,10}|[АБВГДЕЄЖЗИІКЛМНОПРСТУФХЦЧШЩЮЯ]{2}[0-9]{6})$"
If Not regEx.Test(.FldVal("INN")) Then _
Call Trace_AddMessage("Некоректно заповнене поле.","INN")
Set regEx = Nothing

Mas2 = Array("A5_7","A5_71","A5_8","A5_9","A5_10","A3_11","A6_7","A6_71","A6_11","A7_11")
For i = LBound(Mas2) to UBound(Mas2)
If .FldVal(Trim(Mas2(i))) < 0 Then _
Call Trace_AddMessage("Значення показника не може бути від'ємним.",Mas2(i))
Next
'-----------------

End With
rsMain.Post
END SUB
SUB IMPORT() 'Імпорт
rsMain.Edit
With rsMain
.FldVal("N19") = 1

' If .FldVal("N2_11") <> "" and .FldVal("N2_12") <> 0 and .FldVal("N2_13") <> "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/" + CStr(.FldVal("N2_12"))+ "/" + CStr(.FldVal("N2_13"))
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") = 0 and .FldVal("N2_13") <> "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "//"+ CStr(.FldVal("N2_13"))
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") <> 0 and .FldVal("N2_13") = "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/"+ CStr(.FldVal("N2_12"))+ "/"
' If .FldVal("N2_11") <> "" and .FldVal("N2_12") = 0 and .FldVal("N2_13") = "" Then _
' .FldVal("N2_1") = CStr(.FldVal("N2_11"))
If .FldVal("N2_12") = 0 and .FldVal("N2_13") = "" Then
.FldVal("N2_1") = CStr(.FldVal("N2_11"))
Else
.FldVal("N2_1") = CStr(.FldVal("N2_11"))+ "/" + CStr(.FldVal("N2_12"))+ "/" + CStr(.FldVal("N2_13"))
.FldVal("N2_1") = Replace(.FldVal("N2_1"), "/0/", "//")
End If

'---Відправка по маршруту:
'---------- "0" - Відправка відбуватиметься по маршруту
'---------- "1" - Відправка лише на реєстрацію в ДПС
'---------- "2" - Відправка на реєстрацію в ДПС апотім контрагенту
.FldVal("N21") = 0
If .FldVal("N4")="0" or .FldVal("N4")="100000000000" or .FldVal("N4")="300000000000" or .FldVal("N4")="400000000000" or .FldVal("N4")="600000000000" or _
.FldVal("FIRM_INN")="200000000000" or .FldVal("FIRM_INN")="500000000000" or .FldVal("FIRM_INN")= .FldVal("N4") Then .FldVal("N21") = 1
If .FldVal("N4")="200000000000" Then .FldVal("N21") = 2

Deviagro
Повідомлень: 5
З нами з: 10 травня 2017, 09:10

Re: После обновления error

Повідомлення Deviagro » 10 травня 2017, 13:54

лог обрезан в конце т.к слишком много символов для спойлера
Установка всех обновлений для ХР не помогла.
Удаление пакетов обновлений в дату когда возникла проблема не помогла.

EugeneUkraine
Повідомлень: 84
З нами з: 27 липня 2016, 14:49

Re: После обновления error

Повідомлення EugeneUkraine » 10 травня 2017, 13:56

Deviagro
А пробовали просто нажать F6 F5 F4 в открытой таблице 7 ?
Вы отчет импортировали из другой учетной системы?
Региональные настройки на сервере и станциях у Вас совпадают, какие они?

Deviagro
Повідомлень: 5
З нами з: 10 травня 2017, 09:10

Re: После обновления error

Повідомлення Deviagro » 10 травня 2017, 14:28

vbsreg4x32.bat помогло .Можно close

VetalON
Повідомлень: 15
З нами з: 20 квітня 2017, 11:30

Re: После обновления error

Повідомлення VetalON » 10 травня 2017, 15:03

Точно такая же ошибка. Как решить неизвестно .bat не помогает!
| Показать
M.E.DOC 10.01.179
Мережева версія
J3040711 ОС: Microsoft Windows NT 5.1.2600 Service Pack 3

Помилка виконання програми обробки:
CheckDuplicateTableInfo 1, "NUMIDENT|C_PID|START_DT|STOP_DT|DAYS|HH|MM|NORMA_1|NORMA_2", 1000
Type mismatch: 'CheckDuplicateTableInfo'

Line: 20 Pos: 2
Error: 0x80020101
Script sub: CHECK

'VERSION=1;STYLE=NEW;
SUB CREATE() 'Програма створення
rsMain.Edit
With rsMain

.FldVal("PK") = "X"
.FldVal("FORM_TYPE")=1

If Doc.GblVal("IsInsp")=1 And Doc.GblVal("IsFirebird") = 0 Then ''если Оракл
Doc.FillE0407Tab
End If

End With
rsMain.Post
END SUB
SUB CHECK() 'Програма перевiрки
rsMain.Edit
With rsMain

CheckDuplicateTableInfo 1, "NUMIDENT|C_PID|START_DT|STOP_DT|DAYS|HH|MM|NORMA_1|NORMA_2", 1000

If Trim(.FldVal("FIRM_RUKINN")) = "" Then _
Call Trace_AddMessage("Заповніть поле 'Податковий номер або серія та номер паспорта' керівника", "FIRM_RUKINN")
If Trim(.FldVal("FIRM_RUK")) = "" Then _
Call Trace_AddMessage("Заповніть 'Ініціали та прізвище' керівник", "FIRM_RUK")
If Trim(.FldVal("FIRM_BUHINN")) = "" Then _
Call Trace_InfoMessage("Попередження: Заповніть поле 'Податковий номер або серія та номер паспорта' головного бухгалтера", "FIRM_BUHINN")
If Trim(.FldVal("FIRM_BUH")) = "" Then _
Call Trace_InfoMessage("Попередження: Заповніть 'Ініціали та прізвище' головного бухгалтера", "FIRM_BUH")

'Set regEx = New RegExp
' regEx.Pattern = "^\d{10}|БК[А-ЯІЇЄ]{2}\d{6}|[А-ЯІЇЄ]{3}\s\d{6}|F[0-9А-ЯA-ZІЇЄ]{9}$"

' If not regEx.Test(TRIM(.FldVal("FIRM_RUKINN"))) Then
' Call Trace_AddMessage("Введено невірний формат ідентифікаційного номеру керівника " + CStr(.FldVal("FIRM_RUKINN")) & _
' ". Допустимі формати : ХХХХХХХХХХ - цифри, або ", "FIRM_RUKINN")
' Call Trace_AddMessage("NNN ХХХХХХ - три УКР. літери, пробіл, шість цифр (свідоцтво соц. страхування), або БКNNXXXXXX – "+ _
' "(БК, серія та № паспорта)(УКР. літери ), або ", "")
' Call Trace_AddMessage("FNNNNNNNNN, де F- латинська літера(константа), далі NNNNNNNNN - довільний набір латинських та " & _
' "українських літер, а також цифр ", "")
' End If
' If TRIM(.FldVal("FIRM_BUHINN")) <> "" and not regEx.Test(TRIM(.FldVal("FIRM_BUHINN"))) Then
' Call Trace_AddMessage("Введено невірний формат ідентифікаційного номеру головного бухгалтера " + CStr(.FldVal("FIRM_BUHINN")) & _
' ". Допустимі формати : ХХХХХХХХХХ - цифри, або ", "FIRM_BUHINN")
' Call Trace_AddMessage("NNN ХХХХХХ - три УКР. літери, пробіл, шість цифр (свідоцтво соц. страхування), або БКNNXXXXXX – "+ _
' "(БК, серія та № паспорта)(УКР. літери ), або ", "")
' Call Trace_AddMessage("FNNNNNNNNN, де F- латинська літера(константа), далі NNNNNNNNN - довільний набір латинських та " & _
' "українських літер, а також цифр ", "")
' End If

mm = Month(CalcLastPeriodDate(Doc.NPerDate, Doc.PerType))
YY = Year(CalcLastPeriodDate(Doc.NPerDate, Doc.PerType))


If .FldVal("PK") <> "" Then ''''лише для Початкової

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF
Doc.GblVal("EXP") = 0

If CStr(rsTab1.FldVal("NUMIDENT")) <> "" Then
Set rsGetP04TabByINN = GetP04TabByINN(CStr(rsTab1.FldVal("NUMIDENT")), 6)

Flag = true
While Not rsGetP04TabByINN.Eof

If ((rsGetP04TabByINN.FldVal("PAY_YEAR") = YY and rsGetP04TabByINN.FldVal("PAY_MNTH") = mm) or _
(rsGetP04TabByINN.FldVal("PAY_YEAR") = 0 and rsGetP04TabByINN.FldVal("PAY_MNTH") = 0)) and _
rsGetP04TabByINN.FldVal("EXP") <> 1 Then
Call Trace_InfoMessage( "Попередження: ІПН = " _
& CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Перевірте дані Таблиці 6: не вказано 'спецстаж'.", _
CStr("NUMIDENT:" + CStr(rsTab1.RecNo)))
End If

If ((rsGetP04TabByINN.FldVal("PAY_YEAR") <> YY and rsGetP04TabByINN.FldVal("PAY_YEAR") <> 0 ) or _
(rsGetP04TabByINN.FldVal("PAY_MNTH") <> mm and rsGetP04TabByINN.FldVal("PAY_MNTH") <> 0)) Then
Doc.GblVal("EXP") = Doc.GblVal("EXP") + 1
End IF

rsGetP04TabByINN.Next
Wend

If Doc.GblVal("EXP")>0 and Doc.GblVal("EXP") >= rsGetP04TabByINN.RecordCount Then
Call Trace_InfoMessage( "Попередження: ІПН = " _
& CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Перевірте дані Таблиці 6: не вказано 'спецстаж'.", _
CStr("NUMIDENT:" + CStr(rsTab1.RecNo)))
End If

If rsGetP04TabByINN.Eof and rsGetP04TabByINN.Bof Then
Call Trace_InfoMessage( "Попередження: ІПН = " _
& CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Перевірте дані Таблиці 6: не вказано 'спецстаж'.", _
CStr("NUMIDENT:" + CStr(rsTab1.RecNo)))

End If
Set rsGetP04TabByINN = Nothing

End If

rsTab1.Next
Wend
Set rsTab1 = Nothing

End If ''''лише для Початкової


'If Doc.GblVal("ProgramType")<>"BUDJET" Then '''если не Оракл

If OrgDS.FldVal("PFUPILG")<>1 Then _
Call Trace_AddMessage("Вкажіть наявність підстав для пільг у картці установи в розділі ПФ", "")

'End If

dd = Day(CalcLastPeriodDate(Doc.NPerDate, Doc.PerType))

Set regEx = New RegExp
regEx.Pattern = "^\d{10}|БК[А-ЯІЇЄ]{2}\d{6}|[А-ЯІЇЄ]{3}\s\d{6}|F[0-9А-ЯA-ZІЇЄ]{9}$"

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOF

If not regEx.Test(TRIM(rsTab1.FldVal("NUMIDENT"))) Then
Call Trace_AddMessage("ЗО ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ", введено невірний формат ІПН. " _
& "Допустимі формати : ХХХХХХХХХХ - цифри, або ", _
CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))
Call Trace_AddMessage( "NNN ХХХХХХ - три УКР. літери, пробіл, " _
& "шість цифр (свідоцтво соц. страхування), або БКNNXXXXXX – " _
& "(БК, серія та № паспорта)(УКР. літери ), або ", "")
Call Trace_AddMessage("FNNNNNNNNN, де F- латинська літера(константа), далі " _
& "NNNNNNNNN - довільний набір латинських та " _
& "українських літер, а також цифр ", "")
End If


If Trim(rsTab1.FldVal("NUMIDENT"))<>"" and (Trim(rsTab1.FldVal("NUMIDENT")) = "0000000000" or Trim(rsTab1.FldVal("NUMIDENT")) = "1111111111" or _
Trim(rsTab1.FldVal("NUMIDENT")) = "2222222222" or Trim(rsTab1.FldVal("NUMIDENT")) = "3333333333" or Trim(rsTab1.FldVal("NUMIDENT")) = "4444444444" or _
Trim(rsTab1.FldVal("NUMIDENT")) = "5555555555" or Trim(rsTab1.FldVal("NUMIDENT")) = "6666666666" or Trim(rsTab1.FldVal("NUMIDENT")) = "7777777777" or _
Trim(rsTab1.FldVal("NUMIDENT")) = "8888888888" or Trim(rsTab1.FldVal("NUMIDENT")) = "9999999999") Then
Call Trace_AddMessage("ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) + "' "+CStr(rsTab1.FldVal("LN"))+ _
". Введено невірний формат ІПН. Введіть коректний номер платника податку ЗО", CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))
End If

Spr = App.GetSprValue("HBPFU04", "Num", Cstr(rsTab1.FldVal("C_PID")), "Num")
If rsTab1.FldVal("C_PID") <> Spr Then _
Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Код підстави < "+ CStr(rsTab1.FldVal("C_PID")) _
& " > не знайдено в довіднику.", _
CStr("C_PID:" + CStr(rsTab1.RecNo)))


' If Doc.GblVal("ProgramType")<>"BUDJET" Then '''если не Оракл
'-----------------Проверка дат с 5 таблицей: -----------------------------------
set rsTab5 = GetP04TabByINN(CStr(rsTab1.FldVal("NUMIDENT")), 5)
''' есть такой ИНН:

Flag1 = true

While Not rsTab5.Eof
If rsTab5.RecordCount >1 Then _
Flag1 = false
rsTab5.Next
Wend

If Not (rsTab5.Eof And rsTab5.Bof) and Flag1 Then

If rsTab1.FldVal("START_DT") < rsTab5.FldVal("START_DT") and +_
rsTab5.FldVal("ZO")<>3 and rsTab5.FldVal("ZO")<>4 and rsTab5.FldVal("ZO")<>5 and rsTab5.FldVal("ZO")<>6 Then _
Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Значення гр.10 'Початок періоду' Таб.7 " _
& "< "+ CStr(rsTab1.FldVal("START_DT")) _
& " > не може бути менше значення гр.10 'Дата початку' Таб.5 < " _
& CStr(rsTab5.FldVal("START_DT")) _
& " >, крім ЗО з категор. 3,4,5,6 в Таб.5.", _
CStr("START_DT:" + CStr(rsTab1.RecNo)))
' If rsTab5.FldVal("START_DT")=0 and rsTab1.FldVal("START_DT") <> 1 Then _
' Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & " Значення гр.10 'Початок періоду' Таб.7 " _
' & "< " + CStr(rsTab1.FldVal("START_DT")) _
' & " > повинно дорівнювати 1, оскільки значення гр.10 'Дата початку' "_
' & "Таб.5 не заповнене.", _
' CStr("START_DT:" + CStr(rsTab1.RecNo)))

End If
If Not (rsTab5.Eof And rsTab5.Bof) and Flag1 = false Then

If rsTab5.FldVal("START_DT")<>0 and rsTab1.FldVal("START_DT") < rsTab5.FldVal("START_DT") and +_
rsTab5.FldVal("ZO")<>3 and rsTab5.FldVal("ZO")<>4 and rsTab5.FldVal("ZO")<>5 and rsTab5.FldVal("ZO")<>6 Then _
Call Trace_InfoMessage( "Попередження: ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Значення гр.10 'Початок періоду' Таб.7 " _
& "< " + CStr(rsTab1.FldVal("START_DT")) _
& " > не може бути менше значення гр.10 'Дата початку' Таб.5 < " _
& CStr(rsTab5.FldVal("START_DT")) _
& " >, крім ЗО з категор. 3,4,5,6, а також для ЗО, у яких в Таб.5 більше одного заповненого рядка", _
CStr("START_DT:" + CStr(rsTab1.RecNo)))
' If rsTab5.FldVal("START_DT")=0 and rsTab1.FldVal("START_DT") <> 1 Then _
' Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & " Значення гр.10 'Початок періоду' Таб.7 " _
' & "< "+ CStr(rsTab1.FldVal("START_DT")) _
' & " > повинно дорівнювати 1, оскільки значення гр.10 'Дата початку' "_
' & "Таб.5 не заповнене.", _
' CStr("START_DT:" + CStr(rsTab1.RecNo)))

End If

If Not (rsTab5.Eof And rsTab5.Bof) Then
If rsTab5.FldVal("END_DT")<>0 and rsTab1.FldVal("STOP_DT") > rsTab5.FldVal("END_DT") and _
rsTab5.FldVal("ZO")<>3 and rsTab5.FldVal("ZO")<>4 and rsTab5.FldVal("ZO")<>5 and rsTab5.FldVal("ZO")<>6 Then _
Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& " Значення гр.11 'Кінець періоду' Таб.7 " _
& "< " + CStr(rsTab1.FldVal("STOP_DT")) _
& " > не може бути більше значення гр.10 'Дата закінчення' Таб.5 < " _
& CStr(rsTab5.FldVal("END_DT")) _
& " >, крім ЗО з категор. 3,4,5,6 в Таб.5.", _
CStr("STOP_DT:" + CStr(rsTab1.RecNo)))

' If rsTab5.FldVal("END_DT")=0 and rsTab1.FldVal("STOP_DT") <> dd Then _
' Call Trace_AddMessage( "ІПН = " & CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & " Значення гр.11 'Кінець періоду' Таб.7 " _
' & "< " + CStr(rsTab1.FldVal("STOP_DT")) _
' & " > повинно дорівнювати " +CStr(dd)+ ", оскільки значення гр.10 'Дата закінчення' "_
' & "Таб.5 не заповнене.", _
' CStr("STOP_DT:" + CStr(rsTab1.RecNo)))

End If

set rsTab5 = Nothing
'-------------------------------------------------------------------------------
' End If '' если не Оракл

If rsTab1.FldVal("NUMIDENT") = "" Then _
Call Trace_AddMessage("Застрахована особа " + CStr(rsTab1.FldVal("LN")) _
& " "+CStr(rsTab1.FldVal("NM")) _
& ". Не зазначено поле 'Номер облікової картки ЗО'", _
CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("LN") = "" Then _
Call Trace_AddMessage("ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ". Не зазначено прізвище застрахованої особи в полі 'Прізвище'", _
CSTR("LN:"+ CSTR(rsTab1.RecNo)))
If rsTab1.FldVal("NM") = "" Then _
Call Trace_AddMessage("ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ". Не зазначено ім'я застрахованої особи в полі 'Ім'я'", _
CSTR("NM:"+ CSTR(rsTab1.RecNo)))
If rsTab1.FldVal("FTN") = "" Then _
Call Trace_InfoMessage("Попередження: ІПН '" + CStr(rsTab1.FldVal("NUMIDENT")) _
& "' "+CStr(rsTab1.FldVal("LN")) _
& ". Не зазначено по батькові застрахованої особи в полі 'По батькові'", _
CSTR("FTN:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("UKR_GROMAD") <> 0 and rsTab1.FldVal("UKR_GROMAD") <> 1 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Громадянин України' <" + CStr(rsTab1.FldVal("UKR_GROMAD"))+"> " & _
"повинно бути 0 або 1 ", _
CSTR("UKR_GROMAD:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("C_PID") = "" Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Не заповнено код підстави для обліку спецстажу ", _
CSTR("C_PID:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("NORMA_1") = 0 and rsTab1.FldVal("NORMA_2") = 0 and rsTab1.FldVal("NORMA_3") = 0 Then _
Call Trace_InfoMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Не заповнено поле 'норма тривалості роботи' ", _
CSTR("NORMA_1:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("START_DT") < 1 or rsTab1.FldVal("START_DT") > dd Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Початок періоду' повинно бути " _
& "цілим числом від 1 до "+CStr(dd), _
CSTR("START_DT:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("STOP_DT") < 1 or rsTab1.FldVal("STOP_DT") > dd Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кінець періоду' повинно бути " _
& "цілим числом від 1 до "+CStr(dd), _
CSTR("STOP_DT:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("START_DT") <> 0 and rsTab1.FldVal("STOP_DT") <> 0 and _
rsTab1.FldVal("START_DT") > rsTab1.FldVal("STOP_DT") Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Дата початку періоду перевищує дату кінця періоду", _
CSTR("START_DT:"+ CSTR(rsTab1.RecNo)))

' If (rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("HH") <> 0 and rsTab1.FldVal("NORMZ") <> 0) or _
' (rsTab1.FldVal("DAYS") = 0 and rsTab1.FldVal("HH") <> 0 and rsTab1.FldVal("NORMZ") <> 0) or _
' (rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("HH") = 0 and rsTab1.FldVal("NORMZ") <> 0) or _
' (rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("HH") <> 0 and rsTab1.FldVal("NORMZ") = 0) Then _
' Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & ". Дозволяється заповнювати лише один вид необхідної " _
' & "одиниці виміру спеціального стажу: або к-сть місяців і днів, " _
' & "або годин і хвилин, або нормозмін ", _
' CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

' If rsTab1.FldVal("DAYS") = 0 and rsTab1.FldVal("HH") = 0 and rsTab1.FldVal("MM") = 0 and rsTab1.FldVal("NORMZ") = 0 Then _
' Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
' & " " + CStr(rsTab1.FldVal("LN")) _
' & ". Зазначте варіант необхідної одиниці виміру та фактичну " _
' & "тривалість стажу за кодом підстави ", _
' CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

' If rsTab1.FldVal("DAYS") <> 0 and _
If rsTab1.FldVal("DAYS") <> (rsTab1.FldVal("STOP_DT") - rsTab1.FldVal("START_DT")) +1 Then _
Call Trace_InfoMessage("Попередження: ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість днів' повинно дорівнювати " _
& "значенню (День кінця періоду - День початку періоду) + 1", _
CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("DAYS") < 0 or rsTab1.FldVal("DAYS") > 31 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість днів' повинно бути " _
& "цілим числом від 1 до 31", _
CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("HH") < 0 or rsTab1.FldVal("HH") > 248 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість годин' не повинно бути більше 248", _
CSTR("HH:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("MM") < 0 or rsTab1.FldVal("MM") > 60 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Кількість хвилин' не повинно бути більше 60", _
CSTR("MM:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("DAYS") = 0 and rsTab1.FldVal("HH") = 0 and rsTab1.FldVal("MM") = 0 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Не заповнене жодне з полів гр.12 або гр.13", _
CSTR("DAYS:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("DAYS") <> 0 and rsTab1.FldVal("NORMA_1") > 31 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Значення поля 'Норма тривалості' більше 31 ", _
CSTR("NORMA_1:"+ CSTR(rsTab1.RecNo)))

If rsTab1.FldVal("SEAZON") <> 0 and rsTab1.FldVal("SEAZON") <> 1 and _
rsTab1.FldVal("SEAZON") <> 2 and rsTab1.FldVal("SEAZON") <> 3 Then _
Call Trace_AddMessage("ІПН = " + CStr(rsTab1.FldVal("NUMIDENT")) _
& " " + CStr(rsTab1.FldVal("LN")) _
& ". Ознака сезону повинна бути від 1 до 3", _
CSTR("SEAZON:"+ CSTR(rsTab1.RecNo)))

rsTab1.Next
Wend
Set rsTab1 = Nothing

Set rsTab1 = Doc.DataSets("TAB1")
Set rsTab1Clone = rsTab1.Clone
rsTab1.First

If (rsTab1.RecordCount <=1000 and Doc.GblVal("ProgramType")<>"BUDJET") or Doc.GblVal("ProgramType")="BUDJET" Then ''Сделают на функционале для большего количества записей, потому что долго проверяется документ
While Not rsTab1.EOF

' rsTab1Clone.Filter = "NUMIDENT = '"+ CStr(rsTab1.FldVal("NUMIDENT"))+ "' AND C_PID = '" + CStr(rsTab1.FldVal("C_PID"))+ "' AND START_DT = "+ CStr(rsTab1.FldVal("START_DT"))+ " AND STOP_DT = " + CStr(rsTab1.FldVal("STOP_DT"))+ " AND DAYS = " + CStr(rsTab1.FldVal("DAYS"))+ " AND HH = " + CStr(rsTab1.FldVal("HH"))+ " AND MM = " + CStr(rsTab1.FldVal("MM"))+ " AND NORMA = '" + CStr(rsTab1.FldVal("NORMA"))+ "'"
''' разбили на проверку по IsNull:

stroka_filter = "NUMIDENT = '"+ CStr(rsTab1.FldVal("NUMIDENT"))+ "'"
If IsNull(rsTab1.FldVal("C_PID")) or rsTab1.FldVal("C_PID") = "" Then
stroka_filter = stroka_filter + " AND C_PID IS NULL"
Else
stroka_filter = stroka_filter + " AND C_PID = '" + CStr(rsTab1.FldVal("C_PID"))+ "'"
End If
If IsNull(rsTab1.FldOrigVal("START_DT")) Then
stroka_filter = stroka_filter + " AND START_DT IS NULL"
Else
stroka_filter = stroka_filter + " AND START_DT = " + CStr(rsTab1.FldVal("START_DT"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("STOP_DT")) Then
stroka_filter = stroka_filter + " AND STOP_DT IS NULL"
Else
stroka_filter = stroka_filter + " AND STOP_DT = " + CStr(rsTab1.FldVal("STOP_DT"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("DAYS")) Then
stroka_filter = stroka_filter + " AND DAYS IS NULL"
Else
stroka_filter = stroka_filter + " AND DAYS = " + CStr(rsTab1.FldVal("DAYS"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("HH")) Then
stroka_filter = stroka_filter + " AND HH IS NULL"
Else
stroka_filter = stroka_filter + " AND HH = " + CStr(rsTab1.FldVal("HH"))+ ""
End If
If IsNull(rsTab1.FldOrigVal("MM")) Then
stroka_filter = stroka_filter + " AND MM IS NULL"
Else
stroka_filter = stroka_filter + " AND MM = " + CStr(rsTab1.FldVal("MM"))+ ""
End If
If IsNull(rsTab1.FldVal("NORMA_1")) Then
stroka_filter = stroka_filter + " AND NORMA_1 IS NULL"
Else
stroka_filter = stroka_filter + " AND NORMA_1 = '" + CStr(rsTab1.FldVal("NORMA_1"))+ "'"
End If
If IsNull(rsTab1.FldVal("NORMA_2")) Then
stroka_filter = stroka_filter + " AND NORMA_2 IS NULL"
Else
stroka_filter = stroka_filter + " AND NORMA_2 = '" + CStr(rsTab1.FldVal("NORMA_2"))+ "'"
End If
If IsNull(rsTab1.FldVal("NORMA_3")) Then
stroka_filter = stroka_filter + " AND NORMA_3 IS NULL"
Else
stroka_filter = stroka_filter + " AND NORMA_3 = '" + CStr(rsTab1.FldVal("NORMA_3"))+ "'"
End If
rsTab1Clone.Filter = stroka_filter

If rsTab1Clone.RecordCount >1 then
Call Trace_AddMessage("Для ЗО ІПН '"&CSTR(rsTab1.FldVal("NUMIDENT"))&"' " &CStr(rsTab1.FldVal("LN"))&" вже існує запис з повним співпадінням наступних реквізитів: " & _
"'№ ОК ЗО, 'Код підстави', 'Початок періоду', 'Кінець періоду', 'Кількість днів', 'Кількість годин, хв.', 'Норма тривалості роботи ...'", CSTR("NUMIDENT:"+ CSTR(rsTab1.RecNo)))
End If
rsTab1Clone.Filter = ""

rsTab1.Next
Wend
End If ' If (rsTab1.RecordCount <=1000 and Doc.GblVal("ProgramType")<>"BUDJET") or Doc.GblVal("ProgramType")="BUDJET"
Set rsTab1Clone = Nothing

Set rsTab1 = Nothing

Doc.GblVal("FT") = 0
Cnd = "CharCode='J3000411' AND CODE=" + Trim(Doc.Card("IDPARENT"))
Set rsDocs = App.DocumentsDataSet(Cnd)
rsDocs.First
If Not rsDocs.EOF Then
Set SomeDoc = App.OpenDocumentByCode(rsDocs.FldVal("Code"))
Set rsSomeDoc = SomeDoc.DataSets("MAIN")
If rsSomeDoc.FldVal("FORM_TYPE") = 1 Then Doc.GblVal("FT") = 1
If rsSomeDoc.FldVal("FORM_TYPE") = 3 Then Doc.GblVal("FT") = 3
Set SomeDoc = nothing
Set rsSomeDoc = nothing
End If
Set rsDocs = Nothing

If Doc.GblVal("FT") = 1 Then
Cnd = "CharCode='J3040111' AND IDPARENT=" + Trim(Doc.Card("IDPARENT"))
Set rsDocs = App.DocumentsDataSet(Cnd)
rsDocs.First
If (rsDocs.EOF and rsDocs.BOF) Then _
Call Trace_AddMessage("Звіт містить таблицю 7, а таблиця 1 звіту відсутня. Створіть таблицю 1", "")
Set rsDocs = Nothing
End If

'------в пачці "скасовуюча" повинні бути початкова і скасовуюча табл.
If Doc.GblVal("FT") = 3 and .FldVal("FORM_TYPE") = 1 Then
n = 0
Cnd = "CharCode='J3040711' AND IDPARENT=" + Trim(Doc.Card("IDPARENT"))
Set rsDocs = App.DocumentsDataSet(Cnd)
rsDocs.First
While Not rsDocs.EOF
Set SomeDoc = App.OpenDocumentByCode(rsDocs.FldVal("Code"))
Set rsSomeDoc = SomeDoc.DataSets("MAIN")
If rsSomeDoc.FldVal("FORM_TYPE") = 1 Then n = n + 1
If rsSomeDoc.FldVal("FORM_TYPE") = 3 Then n = n + 3
Set SomeDoc = nothing
Set rsSomeDoc = nothing
rsDocs.Next
Wend
Set rsDocs = Nothing
If n <> 4 Then _
Call Trace_AddMessage("Табл.7 Для скасовуючих звітів одночасно із 'початковою' необхідно подавати 'скасовуючу' таблицю. Виправте зазначену помилку", "")
End If

End With
rsMain.Post
END SUB
SUB OPEN() 'Вiдкриття
rsMain.Edit
With rsMain

'If .FldVal("PK")= "" and .FldVal("SK")="" and .FldVal("DK")="" Then
' If .FldVal("FORM_TYPE")=1 Then _
' .FldVal("PK") = "X"
' If .FldVal("FORM_TYPE")=3 Then _
' .FldVal("SK") = "X"
' If .FldVal("FORM_TYPE")=5 Then _
' .FldVal("DK") = "X"
'End If

End With
rsMain.Post
END SUB
SUB AFTER_SPR() 'Вибор з справочника (після)

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.Edit

If DocEditedFieldName = "NUMIDENT" Or DocEditedFieldName = "LN" Or _
DocEditedFieldName = "NM" Or DocEditedFieldName = "FTN" Then

'rsTab1.FldVal("START_DT") = Day(CurrSprDS.FldVal("DateAdd"))
'rsTab1.FldVal("END_DT") = Day(CurrSprDS.FldVal("DateEnd"))

' FullName = CStr(CurrSprDS.FldVal("Name"))
' FullName = LTrim(FullName)
' FullName = RTrim(FullName)
' FullName = UCase(FullName)
' pos = InStr(FullName," ")
' If pos <> 0 Then
' LastName = Left(FullName,pos)
' rsTab1.FldVal("LN") = LastName
' ElseIf pos = 0 and len(FullName) <> 0 Then
' rsTab1.FldVal("LN") = FullName
' rsTab1.FldVal("NM") = ""
' rsTab1.FldVal("FTN") = ""
' rsTab1.FldVal("NUMIDENT") = UCase(CStr(CurrSprDS.FldVal("Num")))
' End If
' If Trim(FullName)<>"" and pos <> 0 Then
' SecondAndMidName = Mid(FullName, pos)
' SecondAndMidName = LTrim(SecondAndMidName)
' SecondAndMidName = RTrim(SecondAndMidName)
'
' pos = InStr(SecondAndMidName," ")
'
' If pos = 0 and len(SecondAndMidName) <> 0 Then _
' FirstName = SecondAndMidName
'
' If pos = 0 Then pos = InStr(SecondAndMidName,".")
'
' If pos <> 0 Then
' FirstName = Left(SecondAndMidName, pos)
' SecondName = Mid(SecondAndMidName, pos)
' if "." = left(SecondName,1) Then SecondName = Mid(SecondAndMidName, pos+1)
' End If
'
' SecondName = LTrim(SecondName)
' SecondName = RTrim(SecondName)

'-----заповнення NUMIDENT
TAB1_A2 = ""
TAB1_A22 = ""

TAB1_A22 = CStr(CurrSprDS.FldVal("Num"))
'''Если формат NNXXXXXX , то сначала добавлем "БК":
If Len(Trim(CStr(CurrSprDS.FldVal("Num")))) = 8 and _
ConvStrToDbl(Left(TAB1_A22,1)) = 0 and ConvStrToDbl(Mid(TAB1_A22,1,1)) = 0 and IsNumeric(Right(TAB1_A22,6)) Then
TAB1_A2 = "БК" + TAB1_A22
End If

'''Если формат NNNXXXXXX , то сначала между буквами и цифрами вставляем ПРОБЕЛ:
If Len(Trim(CStr(CurrSprDS.FldVal("Num")))) = 9 and _
ConvStrToDbl(Left(TAB1_A22,1)) = 0 and ConvStrToDbl(Mid(TAB1_A22,1,1)) = 0 and ConvStrToDbl(Mid(TAB1_A22,2,1)) = 0 and IsNumeric(Right(TAB1_A22,6)) Then
TAB1_A2 = Left(TAB1_A22,3)+" "+ Right(TAB1_A22,6)
End If

If TAB1_A2 = "" Then TAB1_A2 = TAB1_A22
'-----
' rsTab1.FldVal("NM") = FirstName
' rsTab1.FldVal("FTN") = SecondName
rsTab1.FldVal("LN") = UCase(Trim(CurrSprDS.FldVal("LASTNAME")))
rsTab1.FldVal("NM") = UCase(Trim(CurrSprDS.FldVal("FIRSTNAME")))
rsTab1.FldVal("FTN") = UCase(Trim(CurrSprDS.FldVal("MIDDLENAME")))
rsTab1.FldVal("NUMIDENT") = UCase(TAB1_A2)
' rsTab1.FldVal("NUMIDENT") = CStr(CurrSprDS.FldVal("Num"))
rsTab1.FldVal("UKR_GROMAD")=CurrSprDS.FldVal("UKR_GROMAD")
' End If ' If Trim(FullName)<>"" and pos <> 0

End If

rsTab1.Post
Set rsTab1 = Nothing

END SUB
SUB SAVE() 'Збереження

'If Not IsNull(Doc.Card("IDPARENT")) Then
' Doc.GblVal("KeyCD") = Trim(Doc.Card("IDPARENT"))
' If Doc.GblVal("KeyCD") > 0 Then
' Set SomeDoc = App.OpenDocumentByCode(Doc.GblVal("KeyCD"))
' Set rsSomeDoc = SomeDoc.DataSets("MAIN")
'
' rsSomeDoc.Edit
' rsSomeDoc.FldVal("N7_3") = 1
' rsSomeDoc.Post
'
' SomeDoc.Save(0)
' SomeDoc.Close
' Set SomeDoc = Nothing
' Set rsSomeDoc = Nothing
' End If
'End If '''If Not IsNull(Doc.Card("IDPARENT")) Then

END SUB
SUB IMPORT() 'Імпорт
rsMain.Edit
With rsMain

If .FldVal("PK") <> "" Then .FldVal("FORM_TYPE") = 1
If .FldVal("SK") <> "" Then .FldVal("FORM_TYPE") = 3
If .FldVal("DK") <> "" Then .FldVal("FORM_TYPE") = 5

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOf
rsTab1.Edit
If IsNull(rsTab1.FldOrigVal("UKR_GROMAD")) Then rsTab1.FldVal("UKR_GROMAD") = 0
rsTab1.Post
rsTab1.Next
Wend
Set rsTab1 = Nothing

End With
rsMain.Post
END SUB
SUB EXPORT() 'Експорт
rsMain.Edit
With rsMain

Set rsTab1 = Doc.DataSets("TAB1")
rsTab1.First
While Not rsTab1.EOf
rsTab1.Edit
If IsNull(rsTab1.FldOrigVal("UKR_GROMAD")) Then rsTab1.FldVal("UKR_GROMAD") = 0
rsTab1.Post
rsTab1.Next
Wend
Set rsTab1 = Nothing

End With
rsMain.Post
END SUB

timapollo
Повідомлень: 115
З нами з: 11 березня 2014, 09:51

Re: После обновления error

Повідомлення timapollo » 11 травня 2017, 12:04

Не сохраняются НН и дальнейшие действия так же не работают. Отправка, проверка и т.д
Полная переустановка не помогла.
Запуск бібліотек через *.bat не допомогає, свариться на wshext.dll, wshom.ocx. Будуть проводитись маніпуляції по видаленню оновлень ОС та відновлення ОС, якщо не допоможе, то перевстановлення ОС, відповідно до нагуглених результатів.
| Показать
неожиданное решение вопроса:
удалил KB971033
удалил все обновления-кракозябры
обновил систему(валидный ключ)
выполнил сканирование-проверку и восстановление системных файлов
Вуаля!
не понял,что именно восстановилось,но все стало идеально.

Відповісти

Повернутись до “Помилки у роботі програми”