Как убрать секунды из даты 1с
В статье представлены способы задать формат даты 1с 8. Для этого необходимо использовать форматную строку. Редактировать ее можно либо вручную, либо при помощи специального конструктора.
Форматные строки используются в:
При использовании функции Формат, следует помнить, что она возвращает строковое значение, т.е. представление переданной даты в определенном формате.
Формат даты 1с при помощи форматной строки
При помощи форматной строки можно задать параметры форматирования даты. Не стоит описывать их полностью вручную. Лучше всего, воспользоваться встроенным в платформу конструктором, а затем отредактировать полученную форматную строку вручную. Это сэкономит ваши силы и позволит быстро добиться результата.
В свойствах полей, ячеек макета, конструктор форматной строки вызывается нажатием кнопки. А в коде он вызывается аналогично конструктору запроса: контекстное меню -> Конструктор форматной строки…
- Следует описать функцию Формат, без форматной строки:
- Поставить курсор между кавычек, вызвать конструктор;
- После окончания работы с конструктором нажать ОК.
Конструктор форматной строки
Сам же конструктор форматной строки представляет собой набор вкладок, предназначенных для форматирования данных различных типов. Нас интересует вкладка Дата.
В первую очередь следует проверить, подходит ли для ваших целей Локальный формат даты. Если это так, то стоит воспользоваться именно им, так как он учитывает особенности построения дат для разных стран. То есть для русскоязычной версии будет отображать привычную нам дату, а для локализованных версий — привычную иностранным пользователям.
В остальных случаях можно пользоваться произвольным форматом даты. Его можно не только выбирать из выпадающего списка, но и редактировать вручную. Для редактирования используются следующие форматные коды:
- д (d) — день месяца (цифрами) без лидирующего нуля;
- дд (dd) — день месяца (цифрами) с лидирующим нулем;
- ддд (ddd) — краткое название дня недели;
- дддд (dddd) — полное название дня недели;
- М (m) — минута без лидирующего нуля;
- ММ (mm) — минута с лидирующим нулем;
- МММ (MMM) — краткое название месяца *);
- ММММ (MMMM) — полное название месяца *);
- к (q) — номер квартала в году;
- г (y) — номер года без века и лидирующего нуля;
- гг (yy) — номер года без века с лидирующим нулем;
- гггг (yyyy) — номер года с веком;
- ч (h) — час в 12-часовом варианте без лидирующих нулей;
- чч (hh) — час в 12-часовом варианте с лидирующим нулем;
- Ч (H) — час в 24-часовом варианте без лидирующих нулей;
- ЧЧ (HH) — час в 24-часовом варианте с лидирующим нулем;
- м (m) — минута без лидирующего нуля;
- мм (mm) — минута с лидирующим нулем;
- с (s) — секунда без лидирующего нуля;
- сс (ss) — секунда с лидирующим нулем;
- вв (tt) — отображение половины дня AM/PM (действительно только для языков конфигурирования, поддерживающих 12 часовой вариант представления времени).
Также можно добавлять в форматную строку произвольный текст, используя кавычки (если добавляемый текст не может быть интерпретирован, как составная часть даты, тогда можно обойтись и без кавычек):
Итоговый текст такой форматной строки будет выглядеть следующим образом:
Примеры использования формата дат
Приведем несколько примеров форматирования даты.
Дата без времени (05.10.2020)
Только время (12:35:50)
Месяц текстом, год полностью (Октябрь 2020)
Месяц текстом кратко, год без тысячелетия (окт. 20)
Месяц числом, через точку год полностью (10.2020)
Склонение названия месяца
При форматировании даты не всегда достаточно именительного падежа. Иногда требуется указать, к примеру, что отчет сформирован в «Октябре 2020 г.», а не в «Октябрь 2020 г.». Для решения этой проблемы подойдет серверная строковая функция ПолучитьСклоненияСтроки (доступна, начиная с версии платформы 8.3.13).
Функция возвращает массив вариантов склонения строки. Подробнее прочитать про заполнение параметров можно в синтаксис помощнике.
Дата в 1С 8.3 - это примитивный тип данных, который всегда имеет формат: год, месяц, день, час, минута, секунда. Поэтому переменная типа дата содержит не только дату, но и время. Простой способ создания новой переменной типа дата является приравнивание к переменной строки цифр в одинарных кавычках вида 'ГГГГММДДччммсс' (если часы, минуты и секунды не указывать, то они приравниваются к 00:00:00) где:
✔ Работа с датой и временем
&НаКлиенте
Процедура РаботаСДатойИВременем ( Команда )
// Установка даты в переменную
ТолькоДата = '20200415' ; // 15.04.2020
// Преобразование строки в дату
ТолькоДата = Дата ( "20200415" ); // 15.04.2020
// Преобразование чисел в дату отдельными частями
ТолькоДата = Дата ( 2020 , 04 , 15 ); // 15.04.2020
// Установка в дате: часы, минуты и секунды
ДатаВремя = '20200415162703' ; // 15 апреля 2020 г. 16 ч. 27 мин. 03 сек.
// Получение года (месяца, дня, часа, минуты, секунды) у даты
Год_Даты = Год ( ДатаВремя ); // 2020
Месяц_Даты = Месяц ( ДатаВремя ); // 4
День_Даты = День ( ДатаВремя ); // 15
Час_Даты = Час ( ДатаВремя ); // 16
Минута_Даты = Минута ( ДатаВремя ); // 27
Секунда_Даты = Секунда ( ДатаВремя ); // 03
// Прибавление к дате 3 секунды
Сообщить ( ДатаВремя + 3 ); // 15.04.2020 16:27:06
// Прибавление к дате два месяца
Сообщить ( ДобавитьМесяц ( ДатаВремя , 2 )); // 15.06.2020 16:27:03
// Вычитание от даты одного месяца
Сообщить ( ДобавитьМесяц ( ДатаВремя , - 1 )); // 15.03.2020 16:27:03
// Получение текущей (рабочей) даты
Сообщить ( ТекущаяДата ());
// вариант 1:
&НаКлиенте
Процедура ОперацииДеньДата ( Команда )
Сообщить ( МатематикаДень ( '20200415' , 1 )); //16.04.2020 0:00:00
Сообщить ( МатематикаДень ( '20200415' , - 1 )); //14.04.2020 0:00:00
&НаКлиенте
Функция МатематикаДень ( Дата , ЧислоДней )
Возврат Дата + 86400 * ЧислоДней ; // 86400 сек.
// или вариант 2 (менее универсальный):
&НаКлиенте
Функция ПолучитьСледующийДень ( Дата )
// с помощью функции КонецДня прибавляем секунду к 15.04.2020 23:59:59
&НаКлиенте
Процедура ДополнительныеФункцииДаты ( Команда )
// Указываем дату явно:
ДатаВремя = '20200415162703' ; // 15 апреля 2020 г. 16:27:03
//или
ДатаВремя = '2020.04.15:16:27:03' ; // 15 апреля 2020 г. 16:27:03
Сообщить ( ДеньГода ( ДатаВремя )); // 15
Сообщить ( ДеньНедели ( ДатаВремя )); // 3 - Среда (нумерация с понедельника "1")
Сообщить ( НеделяГода ( ДатаВремя )); // 3 Неделя
Сообщить ( НачалоГода ( ДатаВремя )); // 01.01.2020 0:00:00
Сообщить ( КонецГода ( ДатаВремя )); // 31.12.2020 23:59:59
Сообщить ( НачалоКвартала ( ДатаВремя )); // 01.04.2020 0:00:00
Сообщить ( КонецКвартала ( ДатаВремя )); // 30.06.2020 23:59:59
Сообщить ( НачалоМесяца ( ДатаВремя )); // 01.04.2020 0:00:00
Сообщить ( КонецМесяца ( ДатаВремя )); // 30.04.2020 23:59:59
Сообщить ( НачалоНедели ( ДатаВремя )); // 13.04.2020 0:00:00
Сообщить ( КонецНедели ( ДатаВремя )); // 19.04.2020 23:59:59
Сообщить ( НачалоДня ( ДатаВремя )); // 15.04.2020 0:00:00
Сообщить ( КонецДня ( ДатаВремя )); // 15.04.2020 23:59:59
Сообщить ( НачалоЧаса ( ДатаВремя )); // 15.04.2020 16:00:00
Сообщить ( КонецЧаса ( ДатаВремя )); // 15.04.2020 16:59:59
Сообщить ( НачалоМинуты ( ДатаВремя )); // 15.04.2020 16:27:00
Сообщить ( КонецМинуты ( ДатаВремя )); // 15.04.2020 16:27:59
Функция Формат в 1С 8.3 выводит примитивные типы данных (дата, время, число, булево) в удобное отображение для чтения. Используется при визуальном выводе информации на экран. Синтаксис функции: Формат(Значение - форматируемое значение, Форматная строка - строковое значение, включающее параметры форматирования). На платформе 1С 8.3 также доступен встроенный конструктор форматной строки , который вызывается в модуле по клику правой кнопки мыши и выборе из списка.
✔ Формат Суммы (Числа)
&НаКлиенте
Процедура ФорматированиеСуммы ( Команда )
// Отображение общего числа цифр
Сообщить ( Формат ( 138 , "ЧЦ=3" )); // 138
Сообщить ( Формат ( 138 , "ЧЦ=2" )); // 99
Сообщить ( Формат ( 138 , "ЧЦ=1" )); // 9
// Отображение общего числа цифр после запятой
Сообщить ( Формат ( 138.214 , "ЧДЦ=2" )); // 138.21
Сообщить ( Формат ( 138.214 , "ЧДЦ=1" )); // 138.2
Сообщить ( Формат ( 138.214 , "ЧДЦ=0" )); // 138
// Сдвиг разрядов числа
Сообщить ( Формат ( 7 , "ЧС=5" )); // 0,00007
Сообщить ( Формат ( 7 , "ЧС=1" )); // 0,7
Сообщить ( Формат ( 7 , "ЧС=-3" )); // 7000
// Установка разделителя групп
Сообщить ( Формат ( 500000000 , "ЧРГ=*" )); // 500*000*000
// Вывод нулевого представления числа
Сообщить ( Формат ( 0 , "ЧН=ноль" )); // ноль
// Вывод лидирующих нулей
Сообщить ( Формат ( 138 , "ЧЦ=10; ЧВН ЧЦ=2; ЧВН ЧГ=0" )); // 3000000
Сообщить ( Формат ( 3000000 , "ЧГ=3,0" )); // 3 000 000
Сообщить ( Формат ( 3000000 , "ЧГ=3,2,0" )); // 30 00 000
// Представление числа прописью
Сообщить ( ЧислоПрописью ( 138.21 )); // Сто тридцать восемь 21
// Рубли-копейки (Сто тридцать восемь рублей 21 копейка)
ФСтр = "Л=ru_RU;ДП=Истина" ; ПарПИ = "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2" ; //по-русски
ФСтр = "Л=en_US;ДП=Истина" ; ПарПИ = "rouble,roubles,kopeck,kopecks,2" ; //по-английски
ФСтр = "Л=uk_UA;ДП=Истина" ; ПарПИ = "карбованець,карбованцi,карбованцiв,м,копiйка,копiйки,копiйок,м,2" ; //по-украински
ФСтр = "Л=lv_LV;ДП=Истина" ; ПарПИ = "rublis,rubli,rublu,v,kapeika,kapeiki,kapeiku,s,2" ; //по-латышски
ФСтр = "Л=ro_RO;ДП=Истина" ; ПарПИ = "rubla,ruble,f,copeica,copeici,f,2" ; //по-румынски
ФСтр = "Л=bg_BG;ДП=Истина" ; ПарПИ = "рубла,рубли,ж,копейка,копейки,ж,2" ; //по-болгарски
// Доллары-центы (Сто тридцать восемь долларов США 21 цент)
ФСтр = "Л=ru_RU;ДП=Истина" ; ПарПИ = "доллар,доллара,долларов,м,цент,цента,центов,м,2" ; //по-русски
ФСтр = "Л=en_US;ДП=Истина" ; ПарПИ = "dollar,dollars,cent,cents,2" ; //по-английски
ФСтр = "Л=uk_UA;ДП=Истина" ; ПарПИ = "долар,долара,доларiв,м,цент,цента,центiв,м,2" ; //по-украински
ФСтр = "Л=lv_LV;ДП=Истина" ; ПарПИ = "dolars,dolari,dolaru,v,cent,centi,centu,v,2" ; //по-латышски
ФСтр = "Л=ro_RO;ДП=Истина" ; ПарПИ = "dolar,dolari,m,cent,centi,m,2" ; //по-румынски
ФСтр = "Л=bg_BG;ДП=Истина" ; ПарПИ = "долар,долара,м,цент,цента,м,2" ; //по-болгарски
// Евро-евроценты (Сто тридцать восемь евро 21 евроцент)
ФСтр = "Л=ru_RU;ДП=Истина" ; ПарПИ = "евро,евро,евро,м,евроцент,евроцента,евроцентов,м,2" ; //по-русски
ФСтр = "Л=en_US;ДП=Истина" ; ПарПИ = "euro,euros,eurocent,eurocents,2" ; //по-английски
ФСтр = "Л=uk_UA;ДП=Истина" ; ПарПИ = "євро,євро,євро,м,євроцент,євроцента,євроцентів,м,2" ; //по-украински
ФСтр = "Л=lv_LV;ДП=Истина" ; ПарПИ = "eiro,eiro,eiro,v,cents,centi,centi,v,2" ; //по-латышски
ФСтр = "Л=ro_RO;ДП=Истина" ; ПарПИ = "euro,euro,м,eurocent,eurocenti,м,2" ; //по-румынскимммм
ФСтр = "Л=bg_BG;ДП=Истина" ; ПарПИ = "евро,евро,с,евроцент,евроцента,м,2" ; //по-болгарски
Сообщить ( ЧислоПрописью ( 138.21 , ФСтр , ПарПИ ));
// Килограммы-граммы (Сто тридцать восемь килограммов 210 грамм)
Сообщить ( ЧислоПрописью ( 138.21 , "Л=ru_RU; ДП=Истина" , "килограмм, килограмма, килограммов, м, грамм, грамма, граммов, м, 3" ));
В 1С значение типа «Дата» – это календарная дата григорианского календаря (с 01 января 0001 года по 31 декабря 3999 год) и время с точностью до 0,1 миллисекунды. Разработчику неизбежно приходится сталкиваться с данным типом, поэтому в этой статье предлагаю ознакомиться с его основными функциями и принципами работы.
«Дата» в модулях 1С
Как инициализировать дату
С помощью литерала встроенного языка
С помощью функции 1С Дата()
Как указать пустую дату
Функции для работы с датой
Получить текущую дату
Получить отдельные части даты
Следует заметить, что пробел в номере года вставляется при установках по умолчанию (подразумевается, что не установлен признак группировки в региональных установках).
Определить дату и время начала некоторого периода из даты
Для решения таких задач существует набор функций НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). В параметр задаётся значение даты начало периода, которого необходимо определить.
Определить дату и время конца некоторого периода из даты
Для получения конца периода из даты, можно использовать специальные функции НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). Параметр принимает значение «нашей даты», аналогично, как и в функции Начало…().
Определить номер недели или дня в году
Определить номер дня в неделе
Как отнять или прибавить к дате в 1С год, месяц, день, час, минуту, секунду
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Чтобы прибавить, вычесть месяц или год правильно использовать функцию ДобавитьМесяц(, ). Если параметру задать отрицательное значение, то число месяцев отнимается.
Формат даты в 1С
Функция Формат(, ). В параметре перечисляются параметры форматирования через символ «;». Возвращаемый тип строка.
Для задания параметра можно воспользоваться «конструктором форматной строки». При написании кода вызвать его не составляет труда. Необходимо только нажать правую кнопку «мыши» и из контекстного меню выбрать одноимённый конструктор.
На вкладке «Дата» задаём нужный нам формат.
Как вызвать диалоговое окно для ввода даты
Не модальный режим:
«Дата» в запросах 1С
Инициализация даты в запросах
Функция ДАТАВРЕМЯ()
Стоит отметить, что параметры данной функции принимают только литералы в отличие от схожей на неё функции для работы с датой в модулях Дата(). Например запись с передачей в функцию полей выборки из временной таблицы ДАТАВРЕМЯ(вт.Год, вт.Месяц, вт.День) выдаст ошибку.
Пустая дата
Текущая дата и работа с условием по дате в запросе
Так же не стоит забывать, что передать в запрос дату можно с помощью параметра. Для указания текущей даты это единственный вариант.
Получить отдельные части даты. Функции: ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТА, СЕКУНДА
В запросе получить отдельные части даты возможно с помощью одноимённых функций ГОД(), КВАРТАЛ(), МЕСЯЦ(), ДЕНЬ(), ЧАС(), МИНУТА(), СЕКУНДА().
Получить начало, конец некоторого периода
Существует две функции для решения таких задач. Соответственно НАЧАЛОПЕРИОДА(, ) и КОНЕЦПЕРИОДА(, ).
Где в параметр указывается «наша дата», а в параметр задаётся значение периода (Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час, Минута).
Аналогично и для функции КОНЕЦПЕРИОДА().
Добавить сдвиг к дате
Для решения таких задач пригодится функция ДОБАВИТЬКДАТЕ(, , ). В параметр задаётся «наша дата», в параметр временной интервал (Год, Полугодие, Месяц и т.д.).
Использование функции РАЗНОСТЬДАТ()
Функция Формат в 1С 8.3 предоставляет достаточно интересный инструмент разработчику для форматирования значений. Особенно часто эта функция используется для вывода примитивных типов данных (даты, времени, чисел, строки, булево) в нужном формате.
Рассмотрим подробнее функцию и способ составления форматной строки.
Функция Формат()
Синтаксис функции достаточно прост:
Значение — форматируемое значение, Форматная строка — строка, заданная определенным образом, из которой формируется правило обработки формата.
Самое интересное — форматная строка. Рассмотрим её подробнее.
Конструктор форматной строки
Для облегчения труда разработчика фирма 1С встроила в платформу специальный конструктор форматной строки.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Для запуска конструктора достаточно вызвать контекстное меню (правая кнопка мыши) и выбрать в списке «Конструктор форматной строки»:
Сам конструктор выглядит следующим образом:
Где необходимо выбрать нужную Вам вкладку в зависимости от типа данных — Число, Дата или Булево.
Рассмотрим использование функции на примерах.
Формат даты в 1С на примере месяца: прописью, без времени
Получить формат даты без времени:
Формат даты 1С, где месяц прописью:
Формат времени без даты, только час, минута и секунда:
Примеры формата числа
Получим формат числа с двумя точками после запятой:
Число без неразрывных пробелов:
Использование запятой вместо точки для дробной части:
Округление числа (не математическое) до целых:
Вывод лидирующих нулей без неразрывных пробелов:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Читайте также: