Разное

1С время без секунд: Как получить дату и время без секунд в 1с 8?

Функция формат в 1С — дата, время, числа, булево, строка

Функция Формат в 1С 8.3 предоставляет достаточно интересный инструмент разработчику для форматирования значений. Особенно часто эта функция используется для вывода примитивных типов данных (даты, времени, чисел, строки, булево) в нужном формате.

Рассмотрим подробнее функцию и способ составления форматной строки.

Функция Формат()

Синтаксис функции достаточно прост:

Формат(<Значение>,<Форматная строка>)

Значение — форматируемое значение, Форматная строка — строка, заданная определенным образом, из которой формируется правило обработки формата.

Самое интересное — форматная строка. Рассмотрим её подробнее.

Конструктор форматной строки

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

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Для запуска конструктора достаточно вызвать контекстное меню (правая кнопка мыши) и выбрать в списке «Конструктор форматной строки»:

Сам конструктор выглядит следующим образом:

Где необходимо выбрать нужную Вам вкладку в зависимости от типа данных — Число, Дата или Булево.

Рассмотрим использование функции на примерах.

Формат даты в 1С на примере месяца: прописью, без времени

Получить формат даты без времени:

Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy") // "25.02.2015"

Формат даты 1С, где месяц прописью:

Формат(ТекущаяДата(), "ДЛФ=DD") // "25 февраля 2015"

Формат времени без даты, только час, минута и секунда:

Формат(ТекущаяДата(), "ДЛФ=T") // "20:15:43"

Примеры формата числа

Получим формат числа с двумя точками после запятой:

Формат(100500, "ЧДЦ=2") // "100 500,00"

Число без неразрывных пробелов:

Формат(100500, "ЧГ=") // "100500"

Использование запятой вместо точки для дробной части:

Формат(100500, "ЧДЦ=2; ЧРД=,") // "100 500,00"

Округление числа (не математическое) до целых:

Формат(100500.99, "ЧДЦ=") // "100 500"

Вывод лидирующих нулей без неразрывных пробелов:

Формат(100500, "ЧЦ=9; ЧВН=; ЧГ=") // "000100500"

Читайте также другие статьи по конфигурированию 1С.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

работа с датами в 1С

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Внутренний язык программирования 1С 8.3 для начинающих программистов: работа с датами в 1С

Автор уроков и преподаватель школы: Владимир Милькин

 Тип дата в языке 1С 8.3 уже знаком нам по прошлым занятиям. Сегодня мы рассмотрим более подробно операции, которые можно совершать над датами.

Работа с датами в 1С

Итак, откуда изначально появляется тип дата в нашей программе?

Во-первых, мы можем задать значение даты прямо в коде:

ПервыйДеньЛета = '20140601';
Сообщить(ПервыйДеньЛета);

В этом случае значение даты вводится в одинарных кавычках. Первые четыре числа означают год (2014), следующие два числа — месяц (06, июнь) и, наконец, последние два — день месяца (01). Таким образом мы задали 1 июня 2014 года.

Во-вторых, мы можем использовать специальную команду, формирующую значение даты:

ПервыйДеньЛета = Дата(2014, 06, 01);
Сообщить(ПервыйДеньЛета);

Результат будет тем же самым. Но в этом случае мы вызываем команду (или правильнее сказать конструктор) Дата и в качестве параметров указываем числа, обозначающие год, месяц и число нашей даты.

В-третьих, мы можем ввести значение даты от пользователя:

ДатаОтПользователя = '00010101';
ВвестиДату(ДатаОтПользователя);
ОткрытьЗначение(ДатаОтПользователя);

Тут мы сначала заводим переменную для хранения значения даты и присваиваем начальное пустое значение (‘00010101’), а затем вызываем команду ВвестиДату, указывая в качестве параметра переменную в которую нужно вернуть значение, введенное пользователем.

И, наконец, мы можем получить значение дата, как результат работы другой команды 1С. Например, так:

Сегодня = ТекущаяДата();
Сообщить(Сегодня);

Давайте продолжим работу с последним примером (будем дописывать  в него код).

Вот как мы можем из уже готовой даты вытащить только год, месяц или число:

Сообщить(Год(Сегодня));
Сообщить(Месяц(Сегодня));
Сообщить(День(Сегодня));

А что если нужно прибавить к дате один день? Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Это можно сделать вот так:

Сегодня = ТекущаяДата();
Завтра = Сегодня + 24 * 60 * 60;
Сообщить(Завтра);

Почему мы прибавили именно такое число (24 * 60 * 60)? Потому что напрямую к дате можно прибавлять только секунды. А нам нужно прибавить сутки в которых 24 часа, в часе 60 минут, в минуте 60 секунд.

Секунды можно не только прибавлять, но и отнимать от даты.

А что если нам нужно прибавить целый месяц? Конечно, и в этом случае можно посчитать количество секунд в месяце и прибавить, но гораздо проще использовать специальную команду 1С, которая как раз для этого предназначена:

Сегодня = ТекущаяДата();
ЧерезМесяц = ДобавитьМесяц(Сегодня, 1);

Команда ДобавитьМесяц в качестве параметров принимает дату к которой нужно прибавить месяц и количество месяцев. Если указать отрицательное количество, то произойдёт не прибавление, а вычитание месяцев из даты.

Даты также можно отнимать друг от друга:

РазностьДат = '20140101' - '20100101';
Сообщить(РазностьДат);

Результатом вычитания дат будет количество секунд между ними. Ну а как перевести секунды в минуты, часы или даже дни, думаю вы догадаетесь сами.

Какие ещё есть интересные функции для работы с датой в 1С?

Мы можем узнать день недели:

Сообщить(ДеньНедели(Сегодня));

Команда ДеньНедели возвращает число от 1 до 7. Единица обозначает понедельник, двойка — вторник и так до воскресенья.

Таким же образом мы можем узнать порядковый номер дня с начала года:

Сообщить(ДеньГода(Сегодня));

А также порядковый номер недели (к которой относится дата) в году:

Сообщить(НеделяГода(Сегодня));

Но и это ещё не все функции для работы с датой, которые есть в 1С. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. С более полным перечнем на примерах вы можете ознакомиться в справочнике по языку (ссылка).

Пройдите тест

а) Напишите функцию, которая принимает дату и возвращает день недели, на который приходится дата в строковом виде (например, понедельник).  Теперь, используя эту функцию, напишите программу, которая выводит пользователю какой сегодня день недели.

Как перевести секунды в часы и минуты? —

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

КоличествоСекунд = 7210;

Все мы знаем, что в одном часе 3600 секунд (60 минут по 60 секунд), поэтому, если мы разделим наш интервал на 3600, то получим в целой части количество часов, а в остатке количество секунд, которые могут быть и минутами, и секундами:

//получаем часы
Часы = Цел(КоличествоСекунд / 3600);
//считаем остаток
ОстатокСекунд = КоличествоСекунд - Часы * 3600;
//или 
ОстатокСекунд = КоличествоСекунд % 3600;

В идеале нам нужны только два оператора:

  1. оператор деления /
  2. оператор остатка от деления %

Теперь нам нужно аналогичным образом получить количество минут:

//получаем минуты
Минуты = Цел(ОстатокСекунд / 60);//в минуте 60 сек

Ну, а остаток — это наши секунды:

Секунды = ОстатокСекунд % 60;

Давайте посмотрим, что мы получили:

Сообщить("" + Часы + " часов, " + Минуты + " минут, " + Секунды + " секунд");
//Результат:
//	2 часов, 0 минут, 10 секунд

Если собрать все воедино, наша функция будет выглядеть так:

Функция ПериодЧасыМинутыСекунды(Знач КоличествоСекунд)
	
	Перем Часы, Минуты, Секунды;
	
	//получаем часы
	Часы = Цел(КоличествоСекунд / 3600);
	//считаем остаток
	КоличествоСекунд = КоличествоСекунд % 3600;
	//получаем минуты
	Минуты = Цел(КоличествоСекунд / 60);//в минуте 60 сек
	//остались секунды
	Секунды = КоличествоСекунд % 60;
	
	Возврат ("" + Часы + " часов, " + Минуты + " минут, " + Секунды + " секунд");
	
КонецФункции

Попробуйте самостоятельно доработать ее так, чтобы она считала еще и количество дней)

Читайте также:

Как сделать паузу в коде 1с 8

Эта статья расскажет о способах написания пауз на встроенном языке 1С:Предприятие 8, их достоинствах и недостатках. Также Вы узнаете, какой способ является самым оптимальным с точки зрения потребляемых ресурсов компьютера. 

Использование пауз в 1С — стародавняя головная боль. До сих пор этот механизм никак не реализован на уровне платформы. Поэтому программистам приходится изобретать велосипеды и ходить по граблям.

1). Использование целочисленных циклов

Самый старый (встречал такие шедевры еще на платформе 1с:Предприятие 7.7), самый грубый и самый ресурсоемкий способ — использование цикла, ограниченного целым числом:

Функция Тест(Параметр = 0)
  ...
  Для Инд = 1 По 1000 Цикл
    //пока выполняется цикл поток прерван
  КонецЦикла;
  ...
КонецФункции

Грубый — потому что невозможно точно предсказать, сколько будет длиться цикл, ведь скорость  его выполнения напрямую зависит от вычислительной мощности компьютера. Ресурсоемкий — потому что процесс 1С занимает 100% ресурсов ПК.

Его мы однозначно отметаем!

2). Использование цикла с датой

Другой древний способ, чуть более точный, но такой же ресурсоемкий — использование цикла, ограниченного датой:

Функция Тест(Параметр = 0)
  ...
  ДатаКон = ТекущаяДата() + 1;//1 секундой больше
  Пока ТекущаяДата() &lt; ДатаКон Цикл
    //пока выполняется цикл поток прерван
  КонецЦикла;
  ...
КонецФункции

По-прежнему, точность данного алгоритма оставляет желать лучшего, т.к. погрешность может составлять 100 и более миллисекунд. Да и быстродействие не на высоте.

Его мы тоже отметаем!

3) Использование обработчиков ожидания

При работе с формами для реализации повторяющихся во времени действий, можно воспользоваться механизмом обработчиков ожидания:

Функция Тест(Параметр = 0)
  //подключаем периодический обработчик ожидания каждые 500 мсек
  ПодключитьОбработчикОжидания("ОбработчикОжидания", 0.5);
КонецФункции
Процедура ОбработчикОжидания() Экспорт
  ...
КонецПроцедуры

В данном примере мы определили экспортную процедуру ОбработчикОжидания() модуля формы, а затем подключили ее на повторный вызов каждые 500 миллисекунд, используя метод ПодключитьОбработчикОжидания().

Из плюсов метода: точность и низкое потребление ресурсов ПК. Из недостатков этого метода можно отметить ограниченность его использования только клиентской частью приложения (на сервере обработчики ожидания не работают). Кроме того, его невозможно использовать для вставки в выполняемый код, т.к. обработчики 1С  задействованы только в свободное от основных вычислений время.

4) Использование скриптов WShell

Паузу можно реализовать с помощью VBScript и методов COM-объекта WScript.Shell. Ниже приведена готовая процедура, лишенная описанных ранее недостатков:

Процедура ПаузаИсполнения(Секунд) Экспорт	
Перем ИмяВременногоФайла;

  //имя файла, куда сохраним скрипт
  ИмяВременногоФайла = ПолучитьИмяВременногоФайла("vbs");
	
  Попытка
    Скрипт = Новый ТекстовыйДокумент;
    Скрипт.УстановитьТекст("WScript.sleep " + XMLСтрока(Цел(Секунд * 1000)));
    Скрипт.Вывод = ИспользованиеВывода.Разрешить;
    Скрипт.Записать(ИмяВременногоФайла, КодировкаТекста.Системная);
		
    WshShell=Новый COMОбъект("WScript.Shell");
    WshShell.Run("wscript.exe """ + ИмяВременногоФайла + """", 0, -1);
		
    //удаляем временный файл
    УдалитьФайлы(ИмяВременногоФайла);
		
  Исключение
    Сообщить(ОписаниеОшибки());
  КонецПопытки;
	
КонецПроцедуры//ПаузаИсполнения()

Но у приведенной процедуры есть свои недостатки: вряд ли удастся использовать ее на платформе Linux или веб-клиенте.

Время

— Java 8 DateTimeFormatter с дополнительной частью без секунд

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

секунд Javascript в минуты и секунды

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

c # — дни, часы, минуты, секунды между двумя датами

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

java — Преобразовать значение секунд в часы минуты секунды?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *