Получить интервал времени из строки. Получает из текстового описания интервал времени в секундах.
// Получает из текстового описания интервал времени в секундах.
//
// Параметры:
// СтрокаСоВременем - Строка - текстовое описание времени, где числа записаны цифрами,
// а единицы измерения - строкой.
//
// Возвращаемое значение
// Число - интервал времени в секундах.
Функция ПолучитьИнтервалВремениИзСтроки(Знач СтрокаСоВременем) Экспорт
Если ПустаяСтрока(СтрокаСоВременем) Тогда
Возврат 0;
КонецЕсли;
СтрокаСоВременем = НРег(СтрокаСоВременем);
СтрокаСоВременем = СтрЗаменить(СтрокаСоВременем, Символы.НПП," ");
СтрокаСоВременем = СтрЗаменить(СтрокаСоВременем, ".",",");
СтрокаСоВременем = СтрЗаменить(СтрокаСоВременем, "+","");
ПодстрокаСЦифрами = "";
ПодстрокаСБуквами = "";
ПредыдущийСимволЭтоЦифра = Ложь;
ЕстьДробнаяЧасть = Ложь;
Результат = 0;
Для Позиция = 1 По СтрДлина(СтрокаСоВременем) Цикл
ТекущийКодСимвола = КодСимвола(СтрокаСоВременем,Позиция);
Символ = Сред(СтрокаСоВременем,Позиция,1);
Если (ТекущийКодСимвола >= КодСимвола("0") И ТекущийКодСимвола <= КодСимвола("9"))
ИЛИ (Символ="," И ПредыдущийСимволЭтоЦифра И Не ЕстьДробнаяЧасть) Тогда
Если Не ПустаяСтрока(ПодстрокаСБуквами) Тогда
ПодстрокаСЦифрами = СтрЗаменить(ПодстрокаСЦифрами,",",".");
Результат = Результат + ?(ПустаяСтрока(ПодстрокаСЦифрами), 1, Число(ПодстрокаСЦифрами))
* ЗаменитьЕдиницуИзмеренияНаМножитель(ПодстрокаСБуквами);
ПодстрокаСЦифрами = "";
ПодстрокаСБуквами = "";
ПредыдущийСимволЭтоЦифра = Ложь;
ЕстьДробнаяЧасть = Ложь;
КонецЕсли;
ПодстрокаСЦифрами = ПодстрокаСЦифрами + Сред(СтрокаСоВременем,Позиция,1);
ПредыдущийСимволЭтоЦифра = Истина;
Если Символ = "," Тогда
ЕстьДробнаяЧасть = Истина;
КонецЕсли;
Иначе
Если Символ = " " И ЗаменитьЕдиницуИзмеренияНаМножитель(ПодстрокаСБуквами) = "0" Тогда
ПодстрокаСБуквами = "";
КонецЕсли;
ПодстрокаСБуквами = ПодстрокаСБуквами + Сред(СтрокаСоВременем,Позиция,1);
ПредыдущийСимволЭтоЦифра = Ложь;
КонецЕсли;
КонецЦикла;
Если Не ПустаяСтрока(ПодстрокаСБуквами) Тогда
ПодстрокаСЦифрами = СтрЗаменить(ПодстрокаСЦифрами,",",".");
Результат = Результат + ?(ПустаяСтрока(ПодстрокаСЦифрами), 1, Число(ПодстрокаСЦифрами))
* ЗаменитьЕдиницуИзмеренияНаМножитель(ПодстрокаСБуквами);
КонецЕсли;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
Создать временную таблицу периодов с заданной периодичностью
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)