Public Function NumbToStr(ByVal Numb As Currency,
Cl As Byte, Item1 As String, Item2 As String,
Item3 As String) As String

Static fInitData As Boolean
Dim NTS As String, Tmp As String, St As Byte, Triad As Integer
	'--------------------------------------------
	' Подготовка к работе глобальных переменных.
	'--------------------------------------------
	If Not fInitData Then
		InitData
		fInitData = True
	End If
	'-------------------------------------------
	' Подготовка к работе локальных переменных.
	'-------------------------------------------
	NTS = ""    ' текстовая запись числа
	St = 1      ' номер обрабатываемой триады
	'-----------------------------------------
	' Перебор триад числа, начиная с младшей.
	'-----------------------------------------
	While Numb > 0
		Triad = Numb - Int(Numb * 0.001) * 1000     ' выделение триады
		Numb = Int(Numb * 0.001)    ' отброс выделенной триады
		Select Case St
			Case 1 ' единицы
				NTS = TriadToStr(Triad, Cl)
				If Triad > 0 Then NTS = NTS + " "
				NTS = NTS + GetDeterm(Triad, Item1, Item2, Item3)
			Case 2 ' тысячи
				Tmp = TriadToStr(Triad, 2)
				If Triad > 0 Then Tmp = Tmp + " " + GetDeterm(Triad, "тысяча", "тысячи", "тысяч")
				If Tmp + NTS <> "" Then NTS = " " + NTS
				NTS = Tmp + NTS
			Case 3 ' миллионы
				Tmp = TriadToStr(Triad, 1)
				If Triad > 0 Then Tmp = Tmp + " " + GetDeterm(Triad, "миллион", "миллиона", "миллионов")
				If Tmp + NTS <> "" Then NTS = " " + NTS
				NTS = Tmp + NTS
			Case 4 ' миллиарды
				Tmp = TriadToStr(Triad, 1)
				If Triad > 0 Then Tmp = Tmp + " " + GetDeterm(Triad, "миллиард", "миллиарда", "миллиардов")
				If Tmp + NTS <> "" Then NTS = " " + NTS
				NTS = Tmp + NTS
			Case Else ' неизвестные
				NTS = "? " + NTS
		End Select
		St = St + 1     ' следующая триада
	Wend
	NumbToStr = NTS
End Function