Содержание:
1. Работа с датами в 1С: ввод даты в режиме конфигуратора. Виды даты
2. Операции с переменной типа «Дата»
3. Системные функции для работы с переменной типа «Дата»
1. Работа с датами в 1С: ввод даты в режиме конфигуратора. Виды даты
В этой статье я хочу рассказать о дате, как об одном из примитивных типов данных в 1С. Все данные делятся на два вида. Первый – это данные создаваемые в конкретном прикладном решении. Примером этого вида данных могут служить справочники, перечисления или документы. Вторым видом данных являются данные, определенные на уровне системы, к которым относятся примитивные типы данных, такие как строка, число, дата или булево. Универсальные коллекции значений, такие как массив, структура, таблица значений или список значений, также могут быть определены на уровне системы.
Для демонстрации работы с датами в 1С: ввод даты будет использоваться учебная версия 1С.
1. Пустая дата.
2. Полный и краткий литерал даты.
3. Операции с переменной типа «Дата».
В режиме конфигуратора 1С я открою модуль приложения, в котором и буду рассматривать различные способы работы с этим типом данных.
Свойства
Конфигурация
Инициализируем пустое значение даты константой и выведем его для пользователя с помощью метода «Сообщить».
Сразу хотелось бы отметить, что тип дата 1С, в отличие от 1С типа строка, ограничен одинарными кавычками и, несмотря на название, содержит в своем составе не только дату, но и время с точностью до секунды.
Конфигурация
Конфигурация 1С: Предприятие учебная версия
Как можно заметить, в качестве пустого значения даты выбрана точка отсчета, являющаяся первым днем первого месяца первого года, со временем 00 часов 00 минут 00 секунд. Отсчет идет по григорианскому календарю с точностью до 0,1 миллисекунды. Это значит, что кроме явно прописываемых года, месяца, дня, часа, минуты и секунды, с точки зрения хранения данных дата содержит в себе еще 4 знака. Характерной особенностью даты является то, что ни в рамках литерала, ни в рамках представления алгоритма, точность выше секунды увидеть невозможно, так как стандартных механизмов для ее отображения нет. То есть несмотря на довольно высокую точность хранения даты, при работе с ней обычно точность не превышает секунды. Так как основным ограничением системы является скорость работы пользователя, то и такой точности в большинстве случаев хватает с избытком.
Введем другую дату.
Конфигурация 1С: Предприятие учебная версия
В режиме конфигуратора 1С она будет выглядеть так:
Конфигурация Модуль приложения
Несмотря на сложность в чтении, для системы все выглядит довольно логично. Слева располагается наиболее значимое значение – год (первые четыре цифры), а за ним все остальные по убыванию степени значимости, вплоть до секунды. Таким образом дата принимает вид традиционной позиционной системы, где более старшие разряды располагаются левее. Разница между двумя датами хранится в количестве секунд. Так как сам литерал даты довольно длинный и сложно читаемый, его написание было упрощено. Основным критерием правильности написания литерала является количество цифр. Оно должно быть правильным. Одним из способов написания литерала даты является полный литерал. Он выглядит так: ‘2017/10/25 13:48:19’. Несмотря на наличие посторонних символов, такой литерал будет принят системой и обработан без каких-либо проблем.
Конфигурация Модуль приложения
Конфигурация 1С: Предприятие учебная версия
Краткий литерал отличается от полного тем, что в нем не указывается время: ‘2017/10/25’ и он тоже без проблем читается системой.
Конфигурация Модуль приложения
Текущие вызовы
Несмотря на то, что время указано не было, оно всегда подразумевается. Это можно заметить по нулям в позициях времени.
2. Операции с переменной типа «Дата»
Для переменной типа «Дата» можно выполнить несколько операций. Для начала рассмотрим операцию сложения. Прибавим к нашей дате любое число. Пусть это будет число 70.
Конфигурация Модуль приложения
Текущие вызовы
По результату можно заметить, что 70 – это количество прибавляемых секунд, а так как в одной минуте 60 секунд, то прибавилась 1 минута и 10 секунд. Абсолютно аналогичным способом к дате можно прибавлять или отнимать любые значения вплоть до тысяч лет, но в пределах ограничений, наложенных системой. То есть, отнимать можно только до значения ‘01.01.0001 00:00:00’, а прибавлять до значения ’31.12.3999 23:59:59’. Без одной секунды четыре тысячи лет в Вашем полном распоряжении. Допустим, к указанной дате нужно прибавить час. Сделать это просто. Нужно всего лишь посчитать сколько секунд будет в часе.
Конфигурация Модуль приложения
Текущие вызовы
При возникновении такой необходимости даты можно вычитать, получая разницу между ними в секундах. Операция сложения между двумя датами недопустима.
3. Системные функции для работы с переменной типа «Дата»
Для работы с переменной типа «Дата» можно использовать системные функции. Рассмотрим некоторые из них:
Функция Дата();
Обязательными для этой функции являются год, месяц и день. Время можно указывать только полностью. Возвращает тип значения «Дата». С ее помощью появляется возможность интерактивно изменять значения даты с помощью заранее заданных переменных.
Конфигурация Модуль приложения
Текущие вызовы
Функция ТекущаяДата();
Возвращает текущее время операционной системы с точностью до секунды. Вводится без входных параметров.
Конфигурация Модуль приложения
Текущие данные
Функция ДеньГода();
Определяет каким по порядку является день года на указанную дату. Возвращает тип число.
Конфигурация Модуль приложения
Текущие вызовы
Функция ДеньНедели();
Действует аналогично функции ДеньГода(). Отсчет каждую неделю начинается заново.
Конфигурация Модуль приложения
Текущие данные
Полный список функций и возможных операций с типом Дата 1С можно найти в синтаксис помощнике в разделе «Глобальный контекст» «Функции работы со значениями типа Дата».
Глобальный контекст
Специалист компании "Кодерлайн"
Ярослав Копытов