Как в 1с установить дату в

Обновлено: 04.07.2024

Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.

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

Функция Год

Функция Квартал

Возвращает номер квартала даты (целочисленное значение от 1 до 4)

Предположим, в ЗаказПокупателя передаем заказ №100 от 12.03.2016, в этом случае наш запрос вернет НомерКвартала = 1

Функция Месяц

Принимает параметр типа ДАТА. Возвращает номер месяца даты (целочисленное значение от 1 до 12).

Запрос вернет – 6

Функция ДеньГода

Принимает параметр типа ДАТА. Возвращает номер дня в году (целочисленное значение от 1 до 366).

Функция День

Принимает параметр типа ДАТА. Возвращает номер дня в месяце (целочисленное значение от 1 до 31).

Функция Неделя

Принимает параметр типа ДАТА. Возвращает номер недели в году.

Функция ДеньНедели

Принимает параметр типа ДАТА. Возвращает номер дня недели (целочисленной значение от 1 (понедельник) до 7 (воскресенье)).

Функция Час

Принимает параметр типа ДАТА. Возвращает час суток (целочисленное значение от 0 до 23).

Функция Минута

Принимает параметр типа ДАТА. Возвращает минуты часа (целочисленное значение от 0 до 59).

Функция Секунда

Принимает параметр типа ДАТА. Возвращает секунды минуты (целочисленное значение от 0 до 59).

Функция НачалоПериода

Функция возвращает для указанной даты начало периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

Запрос вернет – 01.06.2016

Функция КонецПериода

Функция возвращает для указанной даты конец периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

Запрос вернет – 30.06.2016

Функция ДобавитьКДате

Функция добавляет к дате указанное количество временных интервалов.

Получаем дату 15.10.2016 0:00:00 Очень удобно, что не приходится задумываться о количестве дней в месяцах.
Количество может быть и отрицательным. Тогда отсчет интервала производится в обратную сторону.

Функция РазностьДат

Функция рассчитывает календарную разницу между двумя датами и ее нельзя использовать в местах, где необходимо рассчитать банковских или рабочих дней. Тип может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ

Бухгалтерам часто требуется изменить рабочую дату при выполнении учетных операций в программе 1С: Бухгалтерия. Возможность корректировать текущую дату в программе существует, но многие об этом не догадываются. Программа автоматически ставит на рабочие документы системную дату компьютера. Если требуется ввести в программу большой объем документов определенным числом, то понадобиться изменить системную дату.

Рассмотрим конкретный пример, показывающий актуальность процедуры смены даты. Компании-арендодатели, которые сдают нежилые помещения, сталкиваются с необходимостью выставлять в конце месяца счета арендаторам. Обычно это происходит в последний день месяца. Постоянный контроль за документами отнимает много рабочего времени, и возможность изменить дату в программе и спокойно выписывать весь пакет документов очень актуальна.

Разработчики предусмотрели возможность изменения текущей даты на любую другую в программе 1С: Бухгалтерия сборки 3.0. Для этого в главном меню пользователю необходимо выбрать опцию "Настройки" и перейти во вкладку "Персональные настройки".


Переключатель нужно перевести в опцию "Другая дата", затем изменить дату на нужную пользователю. Установим дату тридцать первое октября 2019 года. После этого необходимо активировать поле "Записать и сохранить".


Попробуем создать документ "Реализация услуг". Мы видим, что установленная нами измененная дата - тридцать первое октября 2019 года автоматически проставлена во вкладке "Дата документа".


Такая функция не только упрощает работу бухгалтера. В некоторых ситуациях без этой операции совершенно невозможно обойтись. Например, при корректировке неточностей прошлых лет доступ к некоторым заблокированным элементам справочников возможен только при изменении даты. Эти справочники использовались в ранних версиях программы, и недоступны в текущей версии 3.0.

Для примера изучим данные субконто "Расходы по страхованию (до 2017 г.)". В текущей сборке 3.0 этот справочник недоступен и аналитические данные не отражаются. Таким образом, необходимо корректировать текущую дату на любую другую в конце 2016 года, чтобы перенести остатки по неиспользуемой аналитике. Это позволяет вернуть программу "в прошлое", и работать с заблокированными на текущую дату данными.

Разберем подобную операцию в программе 1С:Бухгалтерия версия 3.0

Счет 69.01 Оборотно-сальдовой ведомости, на конец периода, по строке "Расходы по страхованию (до 2017 г.)" имеет в наличии сальдо.


Необходимо совершить следующую операцию - внести во вкладку "Налог (взносы): начислено/уплачено" остаток по неиспользуемой аналитике. Для этого откроем вкладку "Операция" (Операции -Операции, введенные вручную - Создать - Операция). Как видно из примера, программа не позволяет активировать из справочника нужную аналитику.


Корректируем рабочую дату во вкладке "Персональные настройки". Установим любую дату не позже тридцать первого декабря 2016 года. Затем активируем функцию "Записать и закрыть".


После этих действий стала доступна необходимая аналитика во вкладке "Операция".


Сформируем Оборотно-сальдовую ведомость счета 69.01 для проверки правильности отображения внесенных изменений. Все перенесено верно - сальдо на конец периода отсутствует.


После завершения этих операций необходимо перевести дату на сегодняшнюю, активировав опцию "Текущая дата".

Дата – тип данных, который задает число, месяц, год (обязательно) и часы, минуты и секунды (не обязательно) по григорианскому календарю.

На прошлых занятиях мы изучили примитивные типы данных Число и Строка, ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.

В системе 1С:Предприятие 8 для хранения и управления данными используются литералы – внутренний формат данных, который удобен компьютеру, но не всегда нагляден для человека. И если для Числа и Строки литералами являлись соответственно цифры и буквы, то для Даты это строка цифр, заключенная в одинарные кавычки вида 'ГГГГММДДччммсс', где:

  • ГГГГ - четыре цифры года (включая тысячелетие и век);
  • ММ - две цифры месяца;
  • ДД - две цифры даты;
  • чч - две цифры часа (в 24-х часовом формате);
  • мм - две цифры минут;
  • сс - две цифры секунд;

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

Дата('2019.03.23 10:45:25') = "23.03.2019 10:45:25"
Дата('2019\03\23-10

Для работы с примитивными данными могут применяться функции Глобального контекста – это функции, не привязанные к какому-либо объекту и работающие непосредственно с реквизитами. Свои функции Глобального контекста есть для Строки (сократить, объединить, разделить строки и др.), Числа (округлить, вычислить синус угла и др.), Даты (получить из даты год, день, получить текущую дату или дату конца года и др.), и других типов данных.

Рекомендуем ознакомиться с функциями Глобального контекста для примитивных данных в синтаксис-помощнике.


Использование функции Глобального контекста с примитивным типом данных Дата

Для примера возьмем функцию ДеньНедели, которая определяет номер дня недели для указанной даты, где 1 – понедельник, а 7 – воскресенье.

С помощью функции создадим обработку, определяющую, в какой день недели родился человек.

Создадим внешнюю обработку с двумя реквизитами:

  • ДеньРождения типа Дата
  • НазваниеДняНедели типа Строка

И перенесем реквизиты на форму.


Ранее мы задавали процедуры, связанные с командами, но запускать процедуру может не только кнопка. Процедура может запускаться при определенных условиях, например, при изменении реквизита. В данном случае сделаем так, чтобы после введения даты автоматически запускалась процедура расчета дня недели.

Для этого надо правой клавишей мышки щелкнуть по реквизиту ДатаРождения и в появившемся контекстном меню выбрать событие ПриИзменении:


Выберем создание обработчика события на клиенте.


Платформа 1С:Предприятие 8 автоматически ввела часть кода обработчика, связанную с условием запуска процедуры.


Чтобы получить день недели, код должен будет содержать следующие части:

  1. Массив данных, в котором будут храниться названия дней недели.
  2. Функцию ДеньНедели, которая вернет нам порядковый номер дня недели.
  3. Функцию, которая будет устанавливать соответствие между порядковым номером дня недели и элементом массива данных и выводить итоговые данные строкой.

Массив данных – это универсальная коллекция значений. Нумерация элементов массива начинается с 0 в квадратных скобках. Общее число элементов массива задается в круглых скобках. В массиве могут быть любые данные, в данном случае нам необходима Строка:

Массив=Новый Массив (7);

Теперь нам с помощью функции ДеньНедели получить число, возвращаемое функцией от даты рождения.

Теперь из массива вытащим название дня недели, соответствующее реквизиту Число. При этом переменная Число может получать значения от 1(понедельник) до 7(воскресенье), поэтому для получения названия дня недели из массива уменьшим Число на 1 и присвоим полученное значение реквизиту формы НазваниеДняНедели.

Итоговый код обработчика будет выглядеть следующим образом:


Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.

Форматирование данных

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

Ознакомьтесь с детальным описанием функции Формат в синтаксис-помощнике Глобальный контекст – Функции форматирования – Формат.

Для иллюстрации примера форматирования даты создадим функцию-обработчик &НаКлиенте, которая будет выводить дату в нужном нам формате. Для этого в обработке создадим:

  • Реквизит ФорматированнаяДата
  • Поле ФорматированнаяДата (то есть перенесем на форму соответствующий реквизит)
  • Команду ФорматироватьДату
  • Кнопку ФорматироватьДату (то есть перенесем на форму соответствующую команду)


Далее приступим к написанию кода обработчика. Код функции выглядит так:

Формат(Значение, ФорматнаяСтрока), где Значением может быть реквизит, а ФорматнаяСтрока – это набор правил форматирования вида "Имя=Значение; ".

Правило форматирования даты задается Именем ДФ, а Значение задается следующим синтаксисом:

  • д (d) - день месяца (цифрами) без лидирующего нуля;
  • дд (dd) - день месяца (цифрами) с лидирующим нулем;
  • МММ (MMM) - краткое название месяца;
  • ММММ (MMMM) - полное название месяца;
  • г (y) - номер года без века и лидирующего нуля;
  • гг (yy) - номер года без века с лидирующим нулем;
  • гггг (yyyy) - номер года с веком
  • И др.

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

  • ""дд/МММ/гггг"" отобразится как 01/01/2020
  • ""дд ММММ гггг ‘г.’"" отобразится как 01 января 20 г.

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


Вы можете использовать собственные правила форматирования и внести изменения в наш вариант. Функция Формат отформатирует дату рождения в строку и присвоит реквизиту ОтформатированнаяДата.

Зайдите в 1С в пользовательском режиме и загрузите обработку, чтобы протестировать.


Примитивные данные типа Дата могут участвовать в различных вычислениях.

Например, необходимо получить количество дней, оставшихся до Нового года.

Для иллюстрации этого примера создадим реквизит ОсталосьДоНовогоГода типа Строка и допишем в процедуре обработчике ДатаРожденияПриИзменении(Элемент)

Код, который заполнит этот реквизит остатком дней до нового года:



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

Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.

В прошлой статье мы узнали, что такое дата и как с неё работать. В этой статье изучим основные функции работы с датами в 1С 8.3.

Текущая дата в 1С

В 1С имеется возможность получить текущую дату, ту дату, которая выставлена в данный момент в операционной системе компьютера. Делается это при помощи метода ТекущаяДата.

Этот метод является функцией, не имеет параметров и с его помощью можно получить текущую дату в 1С 8.3.

Посмотрим, что возвращает этот код

Текущая дата в 1С

Как вы могли заметить, текущая дата получена в полном формате (год, месяц, день, час, минута и секунда), т.е. текущая дата у нас возвращается с точностью до секунды.

Определить год, месяц, день, час, минуту и секунду даты в 1С

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

Год(<Дата>) – возвращает год даты

Месяц(<Дата>) – возвращает месяц даты

День(<Дата>) – возвращает день даты

Час(<Дата>) – возвращает час даты

Минута(<Дата>) – возвращает минут даты

Секунда(<Дата>) – возвращает секунду даты

Рассмотрим пример, в котором возьмем текущую дату и вернем год, месяц, час, минуту и секунду этой даты.

И результат работы этого кода.

Методы 1С год, месяц, день, число, минута, секунда

Дата начала и дата конца периода в 1С

В платформе 1С 8.3. имеется возможность определить начало и конец периода даты, которому она принадлежит.

Возьмем, например, дату 10.09.2017 – начала месяца этой даты будет 01.09.2017, а начало года – 01.01.2017. И противоположное, у этой даты конец месяца – 30.09.2017, а конец года -31.12.2017.

Делается это при помощи следующих методов:

И противоположные методы:

Данные методы являются функциями, которые имеют один параметр с типом дата и возвращают соответствующую дату.

Рассмотрим пример, в котором будем получать начало и конец квартала текущей даты, начало и конец недели текущей даты, и начало и конец часа текущей даты. В этом примере будет шесть методов: НачалоКвартала, НачалоНедели, НачалоЧаса, КонецКвартала, КонецНедели, КонецЧаса. Остальные методы определения начала и конца периода работают аналогично.

И результат работы этих методов.

Дата начала и дата конца периода

Неделя года, день года и день недели

Рассмотрим похожие функции, которые возвращают порядковый номер соответствующего периода, которому принадлежит дата.

НеделяГода(<Дата>) – возвращает порядковый номер недели в году, на которую приходится дата.

ДеньГода(<Дата>) – возвращает порядковый номер дня года указанной даты.

ДеньНедели(<Дата>) – возвращает порядковый номер дня недели указанной даты.

Сделаем пример, в котором у текущей даты определим какой день недели (понедельник, вторник и т.д.), какой день года, и какая неделя в году.

Неделя года, день года и день недели

Добавить месяц к дате в 1С

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

В этом примере мы прибавили к дате 1 час. Но если нужно к какой-то дате прибавить месяц, то данный метод не всегда подойдет: в разных месяцах разное количество дней.

И если такая задача возникает, то нужно использовать метод ДобавитьМесяц. При помощи этого метода, можно добавить к дате или убавить от даты нужное количество месяцев.

Этот метод является функцией, возвращает переменную с типом дата и имеет следующий синтаксис:

Этот метод добавляет или вычитает из даты в первом параметре количество месяцев из второго параметра.

Рассмотрим пример: добавим к текущей дате месяц и год, а также вычтем из текущей даты месяц и год.

И результат этого кода:

Добавить месяц к дате

Другие статьи о примитивных типах:

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

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