Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Чуток доработал синтаксический контроль в dots (dots.SyntaxCheckModule) (число прочтений - 1654 )
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Чуток доработал синтаксический контроль в dots (dots.SyntaxCheckModule)
25. Марта 2015 :: 13:17
Печать  
Включил проверку несуществующих констант.
Код
Выбрать все
'Контроль модуля на неверные "Форма.<Реквизит>
Sub SyntaxCheckModule()
	Doc = "" : WorkBook = ""
	If Not VerifyTextWindowInWorkBook(Doc,WorkBook) Then
		Exit Sub
	End IF

	' Проверка валидности выражений Форма.\
	if WorkBook Then
		'Массив методов объекта "Форма". Их надо исключить из проверки...
		ArrOFMethods = бновить","Refresh","ИспользоватьЗакладки","TabCtrlState",_
		r","КнопкаПоУмолчанию","DefButton",_
		Выбора","ChoiceMode",_
		ия")

		Patern = "(\s|^|;)+(форма|Form)+\s*\.+[" & cnstRExWORD & "]+"
		'Найдем вхождения в текст "Форма.Реквизит
		ttext = FindInStrEx(Patern, Doc.text)
		ArrFR = Split(ttext,vbCrLf)
		ttextROF = GetTableRecvFromForms(0,FALSE)
		ArrROF = Split(ttextROF,vbCrLf)
		if (UBound(ArrFR)<>-1) And (UBound(ArrROF)<>-1) Then
			For qq=0 To UBound(ArrFR)
				ArrFR(qq) = ReplaceEX(ArrFR(qq), Array(" ","",";","", vbcr,"",vbTab,""))
				if Len(ArrFR(qq))>0 Then
					Arr = Split(ArrFR(qq),".")
					if UBound(Arr)=1 Then
						IsFind = False
						if Not FindInArray(Arr(1),ArrOFMethods) Then
							For qq2=0 To UBound(ArrROF)
								if UCase(Arr(1)) = UCase(ArrROF(qq2)) Then
									IsFind = True
									Exit For
								End IF
							Next
							If Not IsFind Then
								Message "Некоректное выражение: """ & ArrFR(qq)&"""", 2
							End IF
						End IF
					End IF
				End IF
			Next
		End IF
		' { trdm  [201503251718]
		'stop
		Patern = "(\s|^|;)+(Константа|Const)+\s*\.+[" & cnstRExWORD & "]+"
		'Найдем вхождения в текст "Константа.Идентификатор и проверим каких нет в конфе

		ttext = FindInStrEx(Patern, Doc.text)
		ArrFR = Split(ttext,vbCrLf)
		if (UBound(ArrFR)<>-1) Then


			Set Childs = MetaData.TaskDef.Childs(CStr("Константа"))
			StrConstAllLC = ""
			For i = 0 To Childs.Count - 1
				Set mdo = Childs(i)
				AddToString StrConstAllLC, LCase(mdo.Name), vbCrLf
			next
			ConstOtherCheck = ""
			ArrCnst = Split(StrConstAllLC,vbCrLf)
			For qq=0 To UBound(ArrFR)
				ConstStr = ArrFR(qq)
				Arr = Split(ConstStr,".")
				IDConst = LCase(Arr(1))
				if Not FindInArray(IDConst, ArrCnst) Then
					UgeEst = split(ConstOtherCheck,vbCrLf)
					if Not FindInArray(IDConst, UgeEst) Then
						Message "Некоректное выражение: """ + ConstStr + """", 2
					End IF
				End IF
				AddToStringUni ConstOtherCheck,IDConst,vbCrLf
			Next
		End IF
		' } trdm  [201503251718]
	End IF
End Sub
 

  
Наверх
IP записан
 
Fiasko
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 03. Февраля 2015
Re: Чуток доработал синтаксический контроль в dots (dots.SyntaxCheckModule)
Ответ #1 - 04. Декабря 2018 :: 11:40
Печать  
Заменил эту процедуру.
Ругается на VerifyTextWindowInWorkBook
Этой процедуры в dots.vbs у меня нет. Моя версия - 1.13
Видимо, существует более свежая?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать