1С 7.7 функция распознавания типа значения

Гениальное просто
Гениальное просто

Эта функция использует регулярные выражения vbscript и может делить любое переданное значение на: целое число, число вообще, дату и строку. Изначально нужно передавать строковой параметр, к примету «12,5», функция вернет «Число», а если передать «12», тогда вернет «ЧислоЦелое»

Возвращает: Определяемый тип, возвращаемый тип — строка. Возможные варианты: «Число», «ЧислоЦелое», «Строка», «Дата».

Обратите внимание, что если передать в качестве параметра строку «12.0», будет возвращен параметр «Число», а не «ЧислоЦелое».

Применение: Я использую для определения типа при чтении данных из различных файлов типа excel, csv или ADO таблиц.

Текст функции:

Функция глОпределитьТипЯчейкиADO(Значение)
//Разделяет типы на строку, число и дату
 Если ПустоеЗначение(Значение)=1 тогда
  возврат 0;
 конецЕсли;
Значение=Строка(Значение);
Истина=-1;
Ложь=0;
RegExp = CreateObject("VBScript.RegExp");

RegExp.IgnoreCase = Ложь; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultiLine = Ложь; //Многострочный режим
//есть ли буквы
RegExp.Pattern = "^[-\+]?\d+$";
 Если RegExp.Test(Значение)=Истина Тогда
 Возврат "ЧислоЦелое";
КонецЕсли;
RegExp.Pattern = "^[-\+]?\d*[.,]?[\d]{0,}$"; //число вообще (и целое и со знаками после точки или запятой)
Если RegExp.Test(Значение)=Истина Тогда
 Возврат "Число";
иначе
 RegExp.Pattern = "^\d{1,2}[\.\/-]([0]?\d|1[12])[\.\/-]\d{2,4}$"; //Дата
 //датой считает форматы вида 2.12.2014 , 01.12.14, 3.08.2014, 30-10-2014, 15/12/14 и т.д. первая цифра может быть
 //    одна или две. Цифр года 2, 3 или 4
 если RegExp.Test(Значение) = Истина Тогда
  Возврат "Дата";
 Иначе
  Возврат "Строка";
 КонецЕсли;
КонецЕсли;
КонецФункции

 

Добавить комментарий