Community

Проверка комплектности документа

Код пишется на уровне документа, либо на уровне раздела (не "Трудовой книжки") или поля вне раздела "Трудовая книжка".
Код пишется в предположении, что раздел "Трудовая книжка" является одностраничным и предназначен для наложения только на первую страницу документа "Трудовая книжка", все последующие не распознаваемые Приложения, следующие за данной страницей, считаются продолжением трудовой книжки. Код проверяет, что в трудовой книжке фиксированное число страниц (не больше и не меньше, чем требуется).



Dim i, vTotalPagesCount ' общее число страниц в документе
Dim j, vCount ' счетчик разделов конкретного типа в документе
Dim k ' счетчик страниц (приложений) в данном документе


vTotalPagesCount = me.Document.Pages.Count
Dim vAttachCount
Dim vErrorMessage

vErrorMessage = ""

if not (me.Field("PagesCount").Items Is Nothing) then ' если присутствует хотя бы одна трудовая книжка
vCount = me.Field("PagesCount").Items.Count ' кол-во приложенных трудовых книжек
j = 1 ' первая трудовая книжка
for i = 0 to vTotalPagesCount - 1 ' пробегаем по всем страницам документа в поисках документа данного типа
if me.Document.Pages.Item(i).SectionName = "Трудовая книжка" then
vAttachCount = 0 ' счетчик приложений к данной секции
for k = i + 1 to vTotalPagesCount - 1
if me.Document.Pages.Item(k).SectionName = "" then ' если страница - приложение, увеличиваем счетчик
vAttachCount = vAttachCount + 1
else ' уже будет другая трудовая книжка (проверяем, сколько приложений насчитали)
if vAttachCount <> 3 then
vErrorMessage = vErrorMessage & "В трудовой книжке, начинающейся со страницы " & CStr(i + 1) & " некорректное число страниц. Должно быть 3. Фактически присутствует " & CStr(vAttachCount) & "; "
Exit for
end if
end if
next
if j < vcount="">
i = k - 1
j = j + 1
else
if vAttachCount <> 3 then
vErrorMessage = vErrorMessage & "В трудовой книжке, начинающейся со страницы " & CStr(i + 1) & " некорректное число страниц. Должно быть 3. Фактически присутствует " & CStr(vAttachCount)
end if
end if
end if
next

me.CheckSucceeded = False
me.ErrorMessage = vErrorMessage

end if
0

Comments

0 comments

Please sign in to leave a comment.