helpf.pro
Регистрация
 0 
Распечатать

Функция переводит Дату в формате 1С в формат вида 'YYYYMMDD hh:mm:ss' и обратно

Код 1C v 8.х
 // Функция переводит дату в формате 1С в международный текстовый формат вида 'YYYYMMDD hh:mm:ss'
// Параметры: Дата1С - Дата - Дата в формате 1С
// Возвращаемое значение: Строка - Дата в международном текстовом формате
//
Функция ДатаВСтроку(Дата1С)
Результат = Формат(Год(Дата1С),"ЧГ=0") + ?(СтрДлина(Строка(Месяц(Дата1С))) < 2,"0" + Строка(Месяц(Дата1С)) , Строка(Месяц(Дата1С)))
+ ?(СтрДлина(Строка(День(Дата1С))) < 2, "0" + Строка(День(Дата1С)), Строка(День(Дата1С))) + " "
+ ?(СтрДлина(Строка(Час(Дата1С))) < 2, "0" + Строка(Час(Дата1С)), Строка(Час(Дата1С))) + ":"
+ ?(СтрДлина(Строка(Минута(Дата1С))) < 2, "0" + Строка(Минута(Дата1С)), Строка(Минута(Дата1С))) + ":"
+ ?(СтрДлина(Строка(Секунда(Дата1С))) <2, "0" + Строка(Секунда(Дата1С)), Строка(Секунда(Дата1С)));
Возврат Результат;
КонецФункции

// Функция переводит строку в дату с указанным форматом
// Параметры:
// Строка - Строка - Дата в виде строки
// ФорматДаты - Строка - Формат даты, в который переводится строка
// Возвращаемое значение: Дата - Дата в указанном формате
//
Функция ПривестиСтрокуКДате(Строка, ФорматДаты="дмг")
Список = Новый Массив;

Подстрока = "";
Позиция = 1;
ДлинаСтроки = СтрДлина(Строка) + 1;

Пока Позиция <= ДлинаСтроки цикл
Символ = Сред(Строка, Позиция, 1);
Если (Символ >= "0") И (Символ <= "9") тогда
Подстрока = Подстрока + Символ;
ИначеЕсли Подстрока <> "" тогда
Список.Добавить(Число(Подстрока));
Подстрока = "";
КонецЕсли;
Позиция = Позиция + 1;
КонецЦикла;

Если Список.Количество() < 3 тогда
Возврат Неопределено;
КонецЕсли;

Если ФорматДаты="дмг" тогда
День = Список[0]; Месяц = Список[1]; Год = Список[2];
ИначеЕсли ФорматДаты="мдг" тогда
День = Список[1]; Месяц = Список[0]; Год = Список[2];
ИначеЕсли ФорматДаты="гмд" тогда
День = Список[2]; Месяц = Список[1]; Год = Список[0];
Иначе
День = 1; Месяц = 1; Год = 1;
КонецЕсли;

Час = 0; Минута = 0; Секунда = 0;
Если Список.Количество() >= 5 тогда
Час = Список[3];
Минута = Список[4];
Секунда = ?(Список.Количество() >= 6, Список[5], 0);
КонецЕсли;

Попытка
Результат = Дата(Год, Месяц, День, Час, Минута, Секунда);
Исключение
Возврат Неопределено;
КонецПопытки;

Возврат Результат;

КонецФункции
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 19390
 0 
Распечатать
Возможно, вас также заинтересует
Google maps, поиск оптимального маршрута 2
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; *...
rphost занимает память и грузит процессор 12
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и...
Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID 21
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В
Ввод договоров ГПХ в ЗУП (счет 76) 5
Часто меня спрашивают: Как правильно отразить договор ГПХ в ЗУП? Ниже небольшая, последовательная инструкция: Прием на работу Сведения о физическом лице, выполняющем работы по договору подряда, должны быть внесены...
Ввод дополнительного ежегодного отпуска 0
Вид расчета, используемый для начисления оплаты дополнительного ежегодного отпуска , описывается в плане видов расчета Основные начисления организаций . Новый вид расчета удобнее создать копированием...
Посмотреть все результаты поиска похожих
Комментарии
sergcool83
14.04.2014 11:29Комментарий: 1
sergcool83
Ну и велосипед!!!! А не проще обратиться к форматной строке - ДФ=ДФ=yyyy-MM-dd hh:mm:ss; и так же ДФ=ДФ=dd.mm.yyyy hh:mm:ss;
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.