gifts2017

Расширяемая библиотека функций VBScript

Опубликовал Андрей Вахрин (dolter) в раздел Программирование - Универсальные функции

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

Казалось бы, 1С, двигаясь вперед семимильными шагами, предоставляет нам все больше и больше функций для работы с простыми типами, но... Как всегда чего-то да не хватает.

Неплохой набор функций содержится в VB. Вот и сделал я "оболочку" для простого использования этих самых функций.

Что может быть проще написать

vb_DateAdd("d", 12, ТекущаяДата())

Причем 1С нам дает только ДобавитьМесяц() и приходится для добавления произвольной части даты или определения разницы дат использовать Запрос...

Я думаю, что многие найдут интересное именно для себя.

Добавление же своих собственных функций на VBS тоже не составит труда:

Function GetMyFunctions()
	Text = "
	|Function Factor(x)
	|	Factor = 1
	|	For i = 1 To x 
	|		Factor = Factor * i
	|	Next
	|End Function
	|
	|Function DecimalToBinary(x)
	|	n = x
	|
	|	tmp = Trim(CStr(n Mod 2))
	|	n = n \ 2
	|
	|	Do While n <> 0
	|		tmp = Trim(CStr(n Mod 2)) & tmp
	|		n = n \ 2
	|	Loop
	|
	|	DecimalToBinary = tmp
	|End Function
	|
	|Function PartOfString(str, x, delim)
    |	Arr = Split(str, delim)
    |	PartOfString = Arr(x - 1)
    |End Function
    |
    |Function GetCurrTime()
    |    dtTimer = Timer
    |
    |    intHours        = dtTimer \ (60 * 60)
    |    intMinutes      = (dtTimer - (intHours * (60 * 60))) \ 60
    |    intSeconds      = Fix(dtTimer - (intHours * (60 * 60)) - intMinutes * 60)
    |    intMilliSeconds = Fix((dtTimer - Fix(dtTimer)) * 1000)
    |    
    |    GetCurrTime = CStr(TimeSerial(intHours, intMinutes, intSeconds)) & ""."" & Right(""000"" & CStr(intMilliSeconds), 3)
    |End Function
	|";
	
	Return Text;
EndFunction

Я вставил совсем небольшой набор функций: факториал числа, преобразование десятичного числа в двоичное, получение части строки по номеру и получение текущего времени с миллисекундами. В вашем праве и в ваших силах увеличить этот набор до любого размера.

Вызов этих функций в коде можно оформит следующим образом:

vb_Run("PartOfString", Новый Структура("str,x,delim", "1 2 3 4 5 6", 4, " "));

Вторым параметром передается либо структура (ключи не важны, главное значения), либо массив, либо (для функций с одним параметром) отдельное значение. Типы значений параметров могут быть Число, Строка и Дата.

Так же в cf-файле, который вы можете скачать, есть обработка для тестирования функционала.

 Обработка тестирования

Скачать файлы

Наименование Файл Версия Размер
Конфигурация (cf) с подсистемой vbFunction 7
.cf 16,86Kb
03.01.15
7
.cf fst.n.lst 16,86Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Константин Юрин (kostyaomsk) 06.01.15 21:54
Стоит запомнить методы. VBScript придется изучать в необходимом объеме.