Как сравнить время в 1с
Дата — один из примитивных типов данных в системе 1С:Предприятие. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.
Одной из первых моих статей в этой рубрике была небольшая шпаргалка по работе с датами, но о датах в запросах там было написано очень мало. В запросах 1С с датами приходится работать довольно часто, особенно когда запрос строится к объектам метаданных в которых содержится периодическая информация. Как правило это регистры (сведений, накопления, расчета, бухгалтерии).
Функция Год
Функция Год() возвращает целое число – год даты. Например, выберем все заказы покупателя оформленные с 1 января 2016 года
Функция Квартал
Возвращает номер квартала даты (целочисленное значение от 1 до 4)
Предположим, в ЗаказПокупателя передаем заказ №100 от 12.03.2016, в этом случае наш запрос вернет НомерКвартала = 1
Функция Месяц
Принимает параметр типа ДАТА. Возвращает номер месяца даты (целочисленное значение от 1 до 12).
Запрос вернет – 6
Функция ДеньГода
Принимает параметр типа ДАТА. Возвращает номер дня в году (целочисленное значение от 1 до 366).
Запрос вернет – 175
Функция День
Принимает параметр типа ДАТА. Возвращает номер дня в месяце (целочисленное значение от 1 до 31).
Запрос вернет – 23
Функция Неделя
Принимает параметр типа ДАТА. Возвращает номер недели в году.
Запрос вернет – 25
Функция ДеньНедели
Принимает параметр типа ДАТА. Возвращает номер дня недели (целочисленной значение от 1 (понедельник) до 7 (воскресенье)).
Запрос вернет – 4
Функция Час
Принимает параметр типа ДАТА. Возвращает час суток (целочисленное значение от 0 до 23).
Запрос вернет – 18
Функция Минута
Принимает параметр типа ДАТА. Возвращает минуты часа (целочисленное значение от 0 до 59).
Запрос вернет – 25
Функция Секунда
Принимает параметр типа ДАТА. Возвращает секунды минуты (целочисленное значение от 0 до 59).
Запрос вернет – 36
Функция НачалоПериода
Функция возвращает для указанной даты начало периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ
Запрос вернет – 01.06.2016
Функция КонецПериода
Функция возвращает для указанной даты конец периода в который она входит. Период может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ
Запрос вернет – 30.06.2016
Функция ДобавитьКДате
Функция добавляет к дате указанное количество временных интервалов.
Получаем дату 15.10.2016 0:00:00 Очень удобно, что не приходится задумываться о количестве дней в месяцах.
Количество может быть и отрицательным. Тогда отсчет интервала производится в обратную сторону.
Функция РазностьДат
Функция рассчитывает календарную разницу между двумя датами и ее нельзя использовать в местах, где необходимо рассчитать банковских или рабочих дней. Тип может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ
Дата — это один из примитивных типов данных существующих в 1С. Также как числа и строки используется абсолютно повсеместно, и следовательно знание основных функций и принципов работы с типом “Дата” приобретают просто драматическую важность.
В начале скажем, что значение типа дата в 1С содержит точную (с точностью до 0,1 миллисекунды) дату григорианского календаря.
Типовой порядок частей даты принятый в 1С — год, месяц, день, час, минута, секунда.
Собственно простейший способ создания новой переменной типа дата является приравнивание к переменной строки цифр в одинарных кавычках (обязательно) вида ‘ГГГГММДДччммсс’ где:
- ГГГГ — четыре цифры года (включая тысячелетие и век);
- ММ — две цифры месяца;
- ДД — две цифры даты;
- чч — две цифры часа (в 24-х часовом формате);
- мм — две цифры минут;
- сс — две цифры секунд.
Часы, минуты и секунды можно не указывать, при этом они приравниваются к нулю.
Функции работы с датами
Функция Дата() служит для создания значения типа “Дата”. Использовать ее можно двумя способами:
- Дата(x) — где параметр “x” это строка вида “ГГГГММДДччммсс”, часы, минуты и секунды можно опустить, т.е. преобразуем строку в дату;
- Дата(x, y, z, w, v, c) — в этом случае параметры “x”, “y”, “z”, “w”, “v” и “c” являются числами и означают год, месяц, день, час, минуту и секунду соответственно. Как и в предыдущем случае час, минуту и секунду можно опустить.
ТекущаяДата
Функция ТекущаяДата() просто возвращает текущую дату того компьютера на котором она исполняется. В клиент-серверных системах будет разумно инкапсулировать эту функцию в общем модуле (с исполнением на сервере) и использовать ее только таким образом.
ТекущаяУниверсальнаяДатаВМиллисекундах
Функция ТекущаяУниверсальнаяДатаВМиллисекундах() позволяет узнать дату в миллисекундах. Данная функция доступна начиная с версии платформы 8.2.17. Замечание о клиент-серверных системах из функции выше справедливо и для этой функции.
Год, Месяц, День, Час, Минута, Секунда
Функции Год(x), Месяц(x), День(x), Час(x), Минута(x) и Секунда(x) возвращают соответствующую часть переданной им даты “x” в виде числа.
Начало…
Функции вида “Начало…(x)” получают дату в параметре “x” и возвращают дату начала периода времени в соответствии с названием конкретной функции. Существуют следующие функции:
- НачалоГода;
- НачалоКвартала;
- НачалоМесяца;
- НачалоНедели;
- НачалоДня;
- НачалоЧаса;
- НачалоМинуты.
Конец…
Функции вида “Конец…(x)” получают дату в параметре “x” и возвращают дату окончания периода времени в соответствии с названием конкретной функции. Существуют следующие функции:
- КонецГода;
- КонецКвартала;
- КонецМесяца;
- КонецНедели;
- КонецДня;
- КонецЧаса;
- КонецМинуты.
НеделяГода, ДеньГода
Функции НеделяГода(x) И ДеньГода(x) возвращают соответственно номер недели и номер дня в году для указанной даты “x”.
ДеньНедели
Функция ДеньНедели(x) возвращает номер дня недели для указанной даты “x”.
ДобавитьМесяц
Функция ДобавитьМесяц(x, y) добавляет к дате “x” количество месяцев “y”, которое может быть отрицательным, в этом случае происходит вычитание месяцев из даты “x”.
МоментВремени
МоментВремени это объект который является совокупностью даты и ссылки на какой-либо объект информационной базы. МоментВремени используется в качестве значения свойств или параметров методов других объектов, имеющих тип МоментВремени. Нужен в первую очередь для того, чтобы иметь возможность различать моменты времени для объектов имеющих одинаковую дату создания.
ВвестиДату
Функция ВвестиДату(x, y, z) вызывает диалог для ввода даты, введенная дата записывается в переменную “x”, кроме этого можно указать подсказку “y”, а также какую часть даты нужно ввести “z” Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода.
Выглядит это окно примерно так:
Окно ввода даты
Типовые задачи представления данных
Разность даты в днях, количество дней между датами
Простым вычитанием одной даты из другой мы можем получить разность между датами в секундах, следовательно получение любого другого типа разности (в минутах, днях и тд.) является простой арифметической операцией:
Кроме этого можно воспользоваться функцией «РАЗНОСТЬДАТ» из языка запросов:
Таким образом можно узнать следующие типы разности дат:
Разница между датами в месяцах, количество месяцев между датами
Здесь все в точности также, как и в предыдущем пункте.
Прибавить день к дате, вычесть день из даты, отнять от даты день
Прибавить месяц к дате, вычесть месяц из даты, отнять месяц от даты
Для прибавления/вычитания месяцев существует встроенная функция:
День недели по дате
Сравнение дат
Так как дата в 1С это по сути количество секунд прошедшее с начала нашей эры (т.е. число) то и сравнение производится так же как и числами. У объекта «МоментВремени» существует специальный метод «Сравнить» который позволяет сравнить один объект «МоментВремени» с другим.
Дата равна нулю (проверка на заполненность), проверка на пустую дату
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 14, средняя оценка: 4,50 из 5)
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени База 1С вылетает, виснет, не грузится, падает с ошибкой? 0
Есть ряд методов, которыми можно попытаться " поднять" упавшую базу 1С 8.х Но сперва нужно сделать резервную копию! Сделайте резервную копию простым копированием папки базы, выгрузка не всегда может быть корректна. Удалить все файлы в папке базы, Посмотреть все результаты поиска похожих
Еще в этой же категории
Момент Времени и Граница, назначение, примеры использования 39
Момент времени: Фирма 1С описывает так: Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методо Преобразование даты 1С в unixtime (Unix Time Stamp) 17
Как известно, unixtime содержит количество секунд, прошедших с 1 января 1970 года. Поэтому, для преобразования даты 1С в дату unixtime нам всего то нужно от нашей даты отнять дату 01.01.1970 и перевести получившееся значения в удобоваримый формат. Функция месяц прописью 11
// пример от glory01 А = Формат(20020820153309, " ДФ=ММММ" ) // А = " Август" А = Формат(ТекущаяДата(), " ДФ=ММММ" ) // А = " Март" Функция МесяцПрописью(НомерМесяца) Экспорт НомерМесяца=Число(НомерМесяца); Если НомерМесяца = 1 Тогда Воз Как вычислить разницу между двумя датами в месяцах 11
Функция РазницаДатВМесяцах(Дата1, Дата2) Экспорт ДатаНач = ?(Дата1 Дата2, Дата1, Дата2); ДатаКон = ?(Дата1 Дата2, Дата2, Дата1); Годы = Год( датаКон ) - Год( датаНач ); Месяцы = Месяц( датаКон ) - Месяц( датаНач ); Разность = месяцы + Как вычислить разницу между двумя датами в часах и минутах 10
Функция РазностьВремени(Время1, Время2); Разность = Время1 - Время2; Если Разность 0 Тогда Часов = Цел(Разность / 3600); Минут = Цел((Разность - Часов * 3600) / 60); Возврат Дата(1, 1, 1, Часов, Минут, 0); Иначе Возврат Дата(1,1,1,0,0,0); Посмотреть все в категории Работа с Датами (Временем)
Работа с Датами (Временем) | Версия | |
---|---|---|
Ввести дату, ввод даты | [7.x, 8.x] | |
Выбор периода, задать период | [7.x, 8.x] | |
Вычислить возраст человека и выразить его прописью | [8.x] | |
Добавить к Дате указанное количество дней | [8.x] | |
Добавить к Дате указанное количество лет | [8.x] | |
Как Выбрать Месяц формирования отчета? | [8.x, 8.2 УП] | |
Как вывести месяц прописью в родительском падеже?(Як вивести місяц в батьківському відмінку?) | [8.x] | |
Как вычислить количество дней между датами | [7.x, 8.x, 8.2 УП] | |
Как вычислить разницу между двумя датами в днях | [8.x] | |
Как вычислить разницу между двумя датами в месяцах | [8.x] | |
Как вычислить разницу между двумя датами в часах и минутах | [8.x, 8.2 УП] | |
Как перебрать все даты с НачалоПериода по КонецПериода и получить таблицу периодов? | [8.x, 8.2 УП] | |
Как по Номеру Недели Года получить Дату | [8.x, 8.2 УП] | |
Как показать период времени в формате hh:mm:ss | [] | |
Как получить день недели прописью? | [8.3] | |
Как получить количество ЛЕТ, МЕСЯЦЕВ, ДНЕЙ между датами? | [8.x] | |
Как получить количество рабочих дней в месяце по календарю? | [8.x, 8.2 УП, 8.3] | |
Как получить количество часов/минут из интервал с исключением ночного времени | [8.2 УП] | |
Как получить номер Декады месяца ( Например: 1 Декада )? | [7.x, 8.x, 8.2 УП] | |
Как получить текущее время с милисекундами? | [7.x, 8.x, 8.2 УП] | |
Как получить текущую (системную) дату на сервере 1С:Предприятия? | [8.x] | |
Как посчитать разницу между двумя датами? | [7.x, 8.x, 8.2 УП, 8.3] | |
Как преобразовать дату в формат RFC 822 и обратно? | [8.2 УП, 8.3] | |
Как при выполнении обработки сообщить пользователю текущее время и дату? | [8.x] | |
Как прибавить к дате день, месяц? | [8.x] | |
Как проверить дату на пустое значение? | [8.x] | |
Как соединить дату и время? | [8.x, 8.2 УП] | |
Как сравнить две даты (дни)? | [8.x] | |
Как узнать количество дней в месяце? | [8.x, 8.2 УП] | |
Как указать нужную,конкретную дату? | [7.x, 8.x] | |
Количество месяцев и дней между 2-мя датами | [8.x] | |
Месяц прописью и День Прописью | [7.x] | |
Момент Времени и Граница, назначение, примеры использования | [7.x, 8.x] | |
Неправильно рассчитывает номер недели в году, функция корректного расчета | [] | |
Перебор дат, заполнение списка, массива дат по порядку | [8.x] | |
Перевод, преобразование Даты в Строку и Обратно | [8.x, 8.2 УП] | |
Передаем в функцию дату, например 13.08.2009 11:13:54, получаем 13 августа 2009 г. | [8.x] | |
Подсчет реального количества месяцев между датами, включая начало и конец месяца | [8.x, 8.2 УП, 8.3] | |
Преобразование времени в универсальное (GMT) и местное в 1С | [8.x, 8.2 УП] | |
Преобразование даты 1С в unixtime (Unix Time Stamp) | [8.x] | |
Процедура вычисляет количество лет, месяцев и дней между двумя датами | [7.x, 8.x] | |
Пустая дата в запросе и в модуле | [8.x, 8.2 УП] | |
Разница между датами в рабочих днях, подсчет рабочих дней в 1С | [8.x, 8.2 УП, 8.3] | |
Синхронизация времени рабочей станции с сервером | [7.x, 8.x, 8.2 УП] | |
Синхронизация системного Времени по запросу | [8.x] | |
Сколько лет, месяцев, дней прошло между датами | [8.x] | |
Сколько лет, месяцев, дней прошло между датами | [8.x] | |
Строку в дату по форматной строке | [] | |
Функции для работы с датами через запрос (Разность, Добавление, Граница) | [8.x] | |
Функции преобразуют время из представления в виде строки в число и обратно | [8.x] | |
Функция вычисляет даты начала/конца периодов за интервал в виде таблицы значений | [8.x] | |
Функция дата прописью | [8.x] | |
Функция Дата прописью | [7.x, 8.x, 8.2 УП] | |
Функция месяц прописью | [7.x, 8.x] | |
Функция описывает период, определяемый датой и периодичностью | [8.x] | |
Функция переводит Дату в формате 1С в формат вида 'YYYYMMDD hh:mm:ss' и обратно | [8.x, 8.2 УП] | |
Функция пересчитывает сумму из валюты ВалютаНач по курсу КурНач в валюту ВалютаКон по курсу КурКон | [8.x] | |
Функция ПредставлениеПериода() аналог 7-ной функции ПериодСтр() | [8.x, 8.2 УП] | |
Функция преобразует строку вида 04/30/09 в дату | [8.x] | |
Функция преобразует строку вида 31.01.2015 в дату | [8.x, 8.2 УП, 8.3] | |
Функция проверяет является ли передаваемое значение датой или нет | [8.x] |
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц Посмотреть все результаты поиска похожих
Еще в этой же категории
Разница между датами в рабочих днях, подсчет рабочих дней в 1С 5
Разрабатывая некий функционал в 1С, бывает, необходимо посчитать количество рабочих дней после какой-то даты. В этой статье примеры кода и запросы в которых считается количество рабочих дней: Код, при вычислении определяет только по дню недели, ви Как посчитать разницу между двумя датами? 5
Код уникален и сработает везде. Функция ПолучитьКоличествоДней() Счетчик = 1; НачалоПериода = Объект.НачалоПериода; Пока НачалоПериода Объект.КонецПериода Цикл Счетчик = Счетчик + 1; Как получить день недели прописью? 4
При разработке часто пользователю хочется видеть на форме день недели словом, например: Вторник , Среда и т.д. Собственно как получить день недели словом? Через функцию формат: ДеньПрописью = Формат(ТекущаяДата(), "ДФ=дддд"); Еще вариант для кра Как получить количество рабочих дней в месяце по календарю? 1
Для одного проекта потребовалось получить количество рабочих дней в месяце по календарю, без учета праздников. В результате получилась простая функция: Функция ПолучитьКолВоРабочихДнейПоКалендарю(ДатаМесяца) Рабочие=0; Кон=НачалоМесяца(ДатаМес Подсчет реального количества месяцев между датами, включая начало и конец месяца 0
В одном проекте понадобилось подсчитывать полное количество месяцев между датами, Допустим надо получить кол-во месяцев между датами 25.10.14 и 21.11.14 Функция РазницаДатВМесяцах ( Как вычислить разницу между двумя датами в месяцах ) вернет Посмотреть все в категории Работа с Датами (Временем)
Читайте также: