1с получить квартал из даты
Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.
Создать переменную с типом дата можно несколькими способами:
Способ 1:
Присвоение переменной значения типа ‘ГГГГММДДччммсс’ или ‘ГГГГ.ММ.ДД:чч:чч:сс’
‘20100304235959’ — вернет дату 04.03.2010 23:59:59.
‘2011.10.09:22:10:12’ — вернет дату 09.10.2011 22:10:12.
Способ 2:
Использование функции глобального контекста Дата (Год, Месяц, День, час, минуты, секунды).
Дата(2010, 07, 14, 12, 13, 14) — вернет значение 14.07.2010 12:13:14
Этой же функцией можно преобразовать строку в дату.
Дата(20100714121314) — вернет значение 14.07.2010 12:13:14
Способ 3 (для запросов):
Использование выражения ДАТАВРЕМЯ (Год, Месяц, День, час, минута, секунда)
Для любого из способов указание часов, минут и секунд не является обязательным.
Дата (2010, 07, 14) — вернет значение 14.07.2010 0:00:00
Способ 4:
Еще можно попросить пользователя ввести нужную дату. Для этого необходимо воспользоваться функцией ВвестиДату(Дата, Подсказка, ЧастьДаты). Первый параметр задает переменную, которой будет присвоено введенное значение. Второй параметр — это заголовок диалогового окна, третий параметр определяет, какую часть типа дата необходимо ввести. Он может принимать следующие значения:
- ЧастиДаты.Дата — будут введены только год, месяц и день;
- ЧастиДаты.Время — будут введены только часы, минуты, секунды. В этом случае дата будет иметь вид 0001.01.01 чч:мм:сс.
- ЧастиДаты.ДатаВремя — будут введены все составляющие даты и времени.
Способ 5 (получить текущую дату и время)
Проверка пустой даты
Часто бывает необходимо проверить, введена дата или нет. Пустая дата — это первое января 1 года, 0 часов, 0 минут, 0 секунд. Проверка может выглядеть следующим образом:
Использование даты в реквизитах
В реквизитах справочников, документов и т.д. можно использовать:
- дату, тогда время всегда равно 00:00:00;
- только время, тогда дата равна 01.01.0001;
- дату и время.
Получение отдельных составляющих даты
Получить номер дня в месяце:
Получить номер дня в году:
Получить номер дня в неделе:
Получить номер недели в году:
Операции по преобразованию дат
Дата представляет собой количество секунд, прошедших с 1 января 0001 года 00:00:00. Поэтому, чтобы добавить к дате дни, часы, минуты и т.д., нужно прибавить соответствующее количество секунд.
Результат = Дата + 1 ; //Прибавили секунду
Результат = Дата + 2 * 60 ; //Прибавили 2 минуты
Результат = Дата + 3 * 60 * 60 * 24 ; //Прибавили 3 дня
Прибавить или отнять от даты один или несколько месяцев:
Результат = ДобавитьМесяц ( Дата , 2 ) ; //Добавляет к дате 2 месяца
Результат = ДобавитьМесяц ( Дата , - 2 ) //Отнимает от даты 2 месяца
Получить конец или начало периода:
Результат = НачалоКвартала ( Дата ) ; // Возвращает дату начала квартала, время 00:00:00
Результат = КонецКвартала ( Дата ) ; //Возвращает дату конца квартала, время 23:59:59
Результат = НачалоМесяца ( Дата ) ; // Возвращает дату начала месяца, время 00:00:00
Результат = КонецМесяца ( Дата ) ; //Возвращает дату конца месяца, время 23:59:59
Результат = НачалоНедели ( Дата ) ; // Возвращает дату начала недели, время 00:00:00
Результат = КонецНедели ( Дата ) ; //Возвращает дату конца недели, время 23:59:59
Результат = НачалоДня ( Дата ) ; // Дата остается прежней, время 00:00:00
Результат = КонецДня ( Дата ) ; // Дата остается прежней, время 23:59:59
Результат = НачалоЧаса ( Дата ) ; //Дата и час остаются прежними, минуты и секунды 00:00
Результат = КонецЧаса ( Дата ) ; //Дата и час остаются прежними, минуты и секунды 59:59
Результат = НачалоМинуты ( Дата ) ; //Дата, час и минута остаются прежними, секунды 00
Результат = КонецМинуты ( Дата ) ; //Дата, час и минута остаются прежними, секунды 59
Добавить комментарий Отменить ответ
Теперь мы в соцсетях! Подписывайтесь, чтобы получать информацию о последних обновлениях или задать вопрос.
Форматная строка — содержит описание способа представления значения в строковом виде.
Форматная строка используется для форматирования данных следующих типов:
Форматная строка используется при форматировании значений функцией Формат(), а также во встроенных выражениях функций Шаблон() и ФиксШаблон().
Обобщенный синтаксис форматной строки
Форматная строка содержит обязательное описание типа данных и дополнительные параметры форматирования:
Значение | Value | Описание |
---|---|---|
Д | D | форматировать как дату |
Ч | N | форматировать как число |
С | S | форматировать как строку |
Рассмотрим параметры для каждого типа подробнее…
Параметры для типа Дата
Элемент | Описание |
---|---|
Шаблон | Определяет предопределенный вариант представления даты. Может принимать следующие значения: |
Пример использования форматной строки 1с 7.7 для форматирования даты:
Параметры для типа Число
Для числовых значений предусмотрено два варианта представления:
- цифровой прописью:
- символьной прописью:
При составлении форматной строки следует соблюдать указанную последовательность параметров. В таблице ниже приведено подробное описание всех параметров:
Параметры цифровой прописи
Элемент | Описание |
---|---|
(0) | Задает заполнение недостающих символов нулями слева |
Внимание!
Если Вы допустили ошибку в шаблоне, то результатом будет максимально возможное значение.
Параметры для типа Строка
Элемент | Описание |
---|---|
Длина | Ограничивает длину получаемой строки |
* — обязательный параметр |
Пример использования форматной строки 1с 7.7 для форматирования строк:
Комментарии
А как сделать формат отрицательного числа, чтобы при выводе оно выходило красным?
Андрей, функция Формат() не умеет этого делать. За раскраску текста отвечает ячейка таблицы, в которую Вы выводите полученное значение. Смотрите свойства ячейки таблицы: Контроль = "Забивать+Красным"
Наталья, есть два варианта, где форматируется строка:
- В макете печатной формы ТТН
- Непосредственно в коде
Если случай первый, найдите в макете нужную ячейку и попробуйте указать следующие варианты:
Если предложенные варианты не помогли, верните все назад и ищите в коде место, где формируется переменная, указанная в ячейке. Ее нужно будет заменить на такую функцию: Формат(ПечСумма, "Ч015.2")
Как-то так. Удачи!
Функция Сокр0(ЧислоСтр) Экспорт
// Функция форматирует число оставляя после точки
// минимальное количество знаков
Стр = СокрЛП(ЧислоСтр);
iТочки = 0;
iЦифры = 0;
i = СтрДлина(Стр);
// Сканировать строку до точки
Пока i>=0 Цикл
// выделить символ
Сим = Сред (Стр, i, 1);
Если (Сим=".") Тогда // Наткнулись на точку
iТочки = i;
Прервать;
КонецЕсли;
Если (Сим"0") И (iЦифры=0) Тогда // Наткнулись на цифру, но впервые
iЦифры = i;
КонецЕсли;
i = i - 1;
КонецЦикла;
Если iТочки > 0 Тогда // Да, точка имеется
// убрать до целой части
Стр = Лев (Стр, ?(iЦифры>iТочки, iЦифры, iТочки-1));
КонецЕсли;
Возврат Стр;
КонецФункции
Наталья, можете просто в макете ТТН для поля сумма убрать Сокр0(). По идее, этого д.б. достаточно, чтобы оставались нули.
Александр, спасибо за поддержку! 🙂 Я пошла другим путем. В счетах у меня все суммы печатаются корректно, поэтому я изменила в макете ТТН форматы по образу и подобию счета. Вроде всё печатается нормально. Еще раз спасибо за потраченное время.
В 1С значение типа «Дата» – это календарная дата григорианского календаря (с 01 января 0001 года по 31 декабря 3999 год) и время с точностью до 0,1 миллисекунды. Разработчику неизбежно приходится сталкиваться с данным типом, поэтому в этой статье предлагаю ознакомиться с его основными функциями и принципами работы.
«Дата» в модулях 1С
Как инициализировать дату
С помощью литерала встроенного языка
С помощью функции 1С Дата()
Как указать пустую дату
Функции для работы с датой
Получить текущую дату
Получить отдельные части даты
Следует заметить, что пробел в номере года вставляется при установках по умолчанию (подразумевается, что не установлен признак группировки в региональных установках).
Определить дату и время начала некоторого периода из даты
Для решения таких задач существует набор функций НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). В параметр задаётся значение даты начало периода, которого необходимо определить.
Определить дату и время конца некоторого периода из даты
Для получения конца периода из даты, можно использовать специальные функции НачалоГода(), НачалоКвартала(), НачалоМесяца(), НачалоНедели(), НачалоДня(), НачалоЧаса(), НачалоМинуты(). Параметр принимает значение «нашей даты», аналогично, как и в функции Начало…().
Определить номер недели или дня в году
Определить номер дня в неделе
Как отнять или прибавить к дате в 1С год, месяц, день, час, минуту, секунду
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Чтобы прибавить, вычесть месяц или год правильно использовать функцию ДобавитьМесяц(, ). Если параметру задать отрицательное значение, то число месяцев отнимается.
Формат даты в 1С
Функция Формат(, ). В параметре перечисляются параметры форматирования через символ «;». Возвращаемый тип строка.
Для задания параметра можно воспользоваться «конструктором форматной строки». При написании кода вызвать его не составляет труда. Необходимо только нажать правую кнопку «мыши» и из контекстного меню выбрать одноимённый конструктор.
На вкладке «Дата» задаём нужный нам формат.
Как вызвать диалоговое окно для ввода даты
Не модальный режим:
«Дата» в запросах 1С
Инициализация даты в запросах
Функция ДАТАВРЕМЯ()
Стоит отметить, что параметры данной функции принимают только литералы в отличие от схожей на неё функции для работы с датой в модулях Дата(). Например запись с передачей в функцию полей выборки из временной таблицы ДАТАВРЕМЯ(вт.Год, вт.Месяц, вт.День) выдаст ошибку.
Пустая дата
Текущая дата и работа с условием по дате в запросе
Так же не стоит забывать, что передать в запрос дату можно с помощью параметра. Для указания текущей даты это единственный вариант.
Получить отдельные части даты. Функции: ГОД, КВАРТАЛ, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТА, СЕКУНДА
В запросе получить отдельные части даты возможно с помощью одноимённых функций ГОД(), КВАРТАЛ(), МЕСЯЦ(), ДЕНЬ(), ЧАС(), МИНУТА(), СЕКУНДА().
Получить начало, конец некоторого периода
Существует две функции для решения таких задач. Соответственно НАЧАЛОПЕРИОДА(, ) и КОНЕЦПЕРИОДА(, ).
Где в параметр указывается «наша дата», а в параметр задаётся значение периода (Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час, Минута).
Аналогично и для функции КОНЕЦПЕРИОДА().
Добавить сдвиг к дате
Для решения таких задач пригодится функция ДОБАВИТЬКДАТЕ(, , ). В параметр задаётся «наша дата», в параметр временной интервал (Год, Полугодие, Месяц и т.д.).
Использование функции РАЗНОСТЬДАТ()
Функция Формат в 1С 8.3 предоставляет достаточно интересный инструмент разработчику для форматирования значений. Особенно часто эта функция используется для вывода примитивных типов данных (даты, времени, чисел, строки, булево) в нужном формате.
Рассмотрим подробнее функцию и способ составления форматной строки.
Функция Формат()
Синтаксис функции достаточно прост:
Значение — форматируемое значение, Форматная строка — строка, заданная определенным образом, из которой формируется правило обработки формата.
Самое интересное — форматная строка. Рассмотрим её подробнее.
Конструктор форматной строки
Для облегчения труда разработчика фирма 1С встроила в платформу специальный конструктор форматной строки.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Для запуска конструктора достаточно вызвать контекстное меню (правая кнопка мыши) и выбрать в списке «Конструктор форматной строки»:
Сам конструктор выглядит следующим образом:
Где необходимо выбрать нужную Вам вкладку в зависимости от типа данных — Число, Дата или Булево.
Рассмотрим использование функции на примерах.
Формат даты в 1С на примере месяца: прописью, без времени
Получить формат даты без времени:
Формат даты 1С, где месяц прописью:
Формат времени без даты, только час, минута и секунда:
Примеры формата числа
Получим формат числа с двумя точками после запятой:
Число без неразрывных пробелов:
Использование запятой вместо точки для дробной части:
Округление числа (не математическое) до целых:
Вывод лидирующих нулей без неразрывных пробелов:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
В статье представлены способы задать формат даты 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).
Функция возвращает массив вариантов склонения строки. Подробнее прочитать про заполнение параметров можно в синтаксис помощнике.
Читайте также: