
'Версия: $Revision: 1.1 $
'
'Скрипт предназначен для профилактических целей. 
'В текущей форме перебираются все контролы, и проверяется наличие функций, 
'использованных в контролах. Если функции нет ни в текущем модуле, ни в глобальном,
'то выдаётся сообщение вида
'ИмяСлоя - Заголовок - Идентификатор - ИмяФункции
'
'TODO:  неплохо бы проверять ещё и: переменные, выражения вида Спр.ТекущийЭлемент(), обращения к методам классов,
'       анализ многострочной части формы
'
'
'Авторы: Phoenix и ADirks
'

sub CheckControlFunctionsExistens()
	set doc = CommonScripts.GetTextDoc(1, 0)
	if doc is nothing then exit sub
	set Form = Windows.ActiveWnd.Document.Page(0)
	set docGM = Documents("ГлобальныйМодуль")
	
	Set reFuncs = new RegExp
	reFuncs.IgnoreCase = true
	reFuncs.Global = true
	reFuncs.Pattern = "(([_a-zа-яё][_0-9a-zа-яё]*)\s*\([^;]*);*\s*"

	for i = 0 to Form.ctrlCount - 1
		Formula = Trim(Form.ctrlProp(i, cpFormul))
		Set Matches = reFuncs.Execute(Formula)
		For Each Match in Matches
			FuncName = Match.Submatches(1)
			Found = false
			If Lcase(FuncName) = "ввестипериод" Then
				Found = true
			ElseIf Lcase(FuncName) = "формат" Then
				Found = true
			ElseIf CommonScripts.FindProc(doc, FuncName) >= 0 Then
				Found = true
			ElseIf CommonScripts.FindProc(docGM, FuncName) >= 0 Then
				Found = true
			End If

			If not Found Then
				vStr = Form.ctrlProp(i,cpLayer) & " - " & Form.ctrlProp(i,cpTitle) & " - " & Form.ctrlProp(i,cpStrID) & " - " & Match.Submatches(0) 
				message vStr, mNone
			End If
		Next
	next
end sub


'
' Процедура инициализации скрипта
'
Private Sub Init()
	Set c = Nothing
	On Error Resume Next
	Set c = CreateObject("OpenConf.CommonServices")
	On Error GoTo 0
	If c Is Nothing Then
   	Message "Не могу создать объект OpenConf.CommonServices", mRedErr
   	Message "Скрипт " & SelfScript.Name & " не загружен", mInformation
   	Scripts.UnLoad SelfScript.Name
		Exit Sub
	End If
	c.SetConfig(Configurator)

	SelfScript.AddNamedItem "CommonScripts", c, False
End Sub

'=====================================================
'=====================================================
'=====================================================
Init
