1с начало вчерашнего дня
1с начало вчерашнего дня
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Дата
Значения данного типа содержит дату григорианского календаря (с 01 января 0001 года) и время с точностью до 0,1 миллисекунды.
Литералы:
Строка цифр, заключенная в одинарные кавычки вида: ‘ГГГГММДДччммсс’, где:
Во встроенном языке в литерале типа Дата обязательно должно задаваться значение года, месяца и дня. Для задания даты соответствующей началу отсчета достаточно указать ‘00010101’. Допускается при указании литералов типа Дата опускать последние символы (секунды, минуты, часы и т.д.). Это означает, что данные параметры будут равны нулю (для времени) или единице (для даты). В литерале даты допускается использование различных разделителей.
Работа с типом Дата в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Использование дат
Для многих отчетов необходимо дать возможность пользователю указывать период, за который необходимо получить отчет. Часто данные периоды требуется указывать не с точностью до секунды, а с точностью до дня. Для того чтобы пользователь имел возможность ввести в параметрах данных дату без времени, достаточно указать в описании параметра данных тип параметра Дата с указанием состава даты «Дата».
После этого пользователь сможет вводить в параметры данных только значения дат, без времени.
В данном примере в качестве значений параметров виртуальной таблицы будут передаваться начало и конец дней, выбранных пользователем.
Использование стандартных периодов
Система компоновки данных позволяет использовать стандартные периоды для указания периода отчета.
Пользователь будет редактировать параметр в следующем виде:
Программирование в 1С для всех
В прошлой статье мы узнали, что такое дата и как с неё работать. В этой статье изучим основные функции работы с датами в 1С 8.3.
Текущая дата в 1С
В 1С имеется возможность получить текущую дату, ту дату, которая выставлена в данный момент в операционной системе компьютера. Делается это при помощи метода ТекущаяДата.
Этот метод является функцией, не имеет параметров и с его помощью можно получить текущую дату в 1С 8.3.
Посмотрим, что возвращает этот код
Как вы могли заметить, текущая дата получена в полном формате (год, месяц, день, час, минута и секунда), т.е. текущая дата у нас возвращается с точностью до секунды.
Определить год, месяц, день, час, минуту и секунду даты в 1С
В платформе 1С имеются методы, которые возвращают числовое представление года, месяца, дня, часа, минут и секунды определенной даты. Данные методы так и называются
Год( ) – возвращает год даты
Месяц( ) – возвращает месяц даты
День( ) – возвращает день даты
Час( ) – возвращает час даты
Минута( ) – возвращает минут даты
Секунда( ) – возвращает секунду даты
Рассмотрим пример, в котором возьмем текущую дату и вернем год, месяц, час, минуту и секунду этой даты.
И результат работы этого кода.
Дата начала и дата конца периода в 1С
В платформе 1С 8.3. имеется возможность определить начало и конец периода даты, которому она принадлежит.
Делается это при помощи следующих методов:
И противоположные методы:
Данные методы являются функциями, которые имеют один параметр с типом дата и возвращают соответствующую дату.
Рассмотрим пример, в котором будем получать начало и конец квартала текущей даты, начало и конец недели текущей даты, и начало и конец часа текущей даты. В этом примере будет шесть методов: НачалоКвартала, НачалоНедели, НачалоЧаса, КонецКвартала, КонецНедели, КонецЧаса. Остальные методы определения начала и конца периода работают аналогично.
И результат работы этих методов.
Неделя года, день года и день недели
Рассмотрим похожие функции, которые возвращают порядковый номер соответствующего периода, которому принадлежит дата.
НеделяГода( ) – возвращает порядковый номер недели в году, на которую приходится дата.
ДеньГода( ) – возвращает порядковый номер дня года указанной даты.
ДеньНедели( ) – возвращает порядковый номер дня недели указанной даты.
Сделаем пример, в котором у текущей даты определим какой день недели (понедельник, вторник и т.д.), какой день года, и какая неделя в году.
В этом примере я использовал условие, в котором в зависимости от того, что возвращал метод ДеньНедели выводил строкой нужное сообщение.
Добавить месяц к дате в 1С
В предыдущей статье мы научились добавлять к дате секунды (или вычитать из даты секунды). Делается это прибавлением к дате любого целого числового значения. Например, так:
В этом примере мы прибавили к дате 1 час. Но если нужно к какой-то дате прибавить месяц, то данный метод не всегда подойдет: в разных месяцах разное количество дней.
И если такая задача возникает, то нужно использовать метод ДобавитьМесяц. При помощи этого метода, можно добавить к дате или убавить от даты нужное количество месяцев.
Этот метод является функцией, возвращает переменную с типом дата и имеет следующий синтаксис:
Этот метод добавляет или вычитает из даты в первом параметре количество месяцев из второго параметра.
Рассмотрим пример: добавим к текущей дате месяц и год, а также вычтем из текущей даты месяц и год.
И результат этого кода:
Другие статьи о примитивных типах:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Функции для работы с датой в 1С
Получение частей даты
С помощью функций Год, Месяц, День, Час, Минута, Секунда из даты можно получить какую-либо ее часть:
День года и день недели
Функция День возвращает порядковый номер в месяце. То есть для 3 июня это будет 3. Функция ДеньГода вернет порядковый номер дня в году:
Для определения дня недели есть функция ДеньНедели, которая возвращает порядковый номер дня недели:
Начало и конец периода
Чтобы привести дату к началу определенного периода можно использовать функции НачалоМинуты, НачалоЧаса, НачалоДня, НачалоНедели, НачалоМесяца, НачалоКвартала, НачалоГода:
С помощью функций КонецМинуты, КонецЧаса, КонецДня, КонецНедели, КонецМесяца, КонецКвартала, КонецГода можно получить конец определенного периода:
Арифметические операции с датами
К дате можно прибавлять количество секунд, можно вычесть из одной даты другую, чтобы получить разность в секундах. Чтобы к одной дате прибавить или вычесть месяц можно использовать функцию ДобавитьМесяц:
Текущая дата
Функция ТекущаяДата возвращает системную дату компьютера. Может использоваться как на сервере, так и на клиенте. Причем если сервер и клиент это разные компьютеры и дата или время на них не совпадает, то данная функция вернет разные значения:
Часовые пояса
1С позволяет работать в одной информационной базе из разных часовых поясов. Часовой пояс может быть определен для:
Если часовой пояс не задан для сеанса, то используется часовой пояс информационной базы. Если для информационной базы часовой пояс тоже не задан, то используется часовой пояс сервера.
Часовой пояс информационной базы сохраняется в базе данных, часовой пояс сеанса должен устанавливаться при начале каждого сеанса.
Для установки часового пояса сеанса используется функция УстановитьЧасовойПоясСеанса. Чтобы получить текущее значение часового пояса сеанса предназначена функция ЧасовойПоясСеанса:
Для работы с часовым поясом информационной базы предназначены функции УстановитьЧасовойПоясИнформационнойБазы и ПолучитьЧасовойПоясИнформационнойБазы. Изменение часового пояса информационной базы возможно только в монопольном режиме. Чтобы изменение часового пояса информационной базы вступило в силу нужно перезайти в базу.
Чтобы получить часовой пояс сервера нужно использовать функцию ЧасовойПояс:
На сервере для получения текущей даты и времени нужно использовать функцию ТекущаяДатаСеанса. Данная функция получает дату и время с учетом часового пояса. То есть если сервер физически установлен в часовом поясе «Europe/Moscow», а подключение к нему выполняется из часового пояса «Asia/Krasnoyarsk», то функция ТекущаяДата вернет дату и время сервера, что не будет корректным. А если при старте сеанса в Красноярке установить часовой пояс «Asia/Krasnoyarsk», то функция ТекущаяДатаСеанса приведет время к часовому поясу сеанса пользователя.
Чтобы узнать все возможные часовые пояса можно воспользоваться функцией ПолучитьДопустимыеЧасовыеПояса. Данная функция вернет массив со всеми возможными часовыми поясами:
С помощью функции ПредставлениеЧасовогоПояса можно получить представление часового пояса:
Универсальная дата
С помощью функции ТекущаяУниверсальнаяДата можно получить дату и время UTC. С помощью функции ТекущаяУниверсальнаяДатаВМиллисекундах можно получить количество миллисекунд, начиная с 01.01.0001 года:
С помощью функции ТекущаяУниверсальнаяДатаВМиллисекундах можно получить замер времени в миллисекундах:
Также есть функции МестноеВремя и УниверсальноеВремя, которые позволяют получить местное время из универсального и универсальное время из местного:
Сравнение функций
Для сравнения функций работы с часовыми поясами представим, что есть информационная база, которая физически находится в Москве. Для данной базы методом УстановитьЧасовойПоясИнформационнойБазы был установлен часовой пояс «Europe/Moscow». А также есть пользователи из Красноярска, которые тоже работают с этой информационной базой. Для них при старте системы, в модуле сеанса устанавливается часовой пояс «Asia/Krasnoyarsk» с помощью метода УстановитьЧасовойПоясСеанса. Результаты представлены в таблице, вызовы всех функций были выполнены на сервере:
Почему не проводится документ «Отпуск» и появляется сообщение о планируемой дате выплаты в «1С:Бухгалтерии предприятия (ред. 3.0)»?
Время чтения: 2 мин.
Если Вы начисляете отпускные, не задумываясь о дате документа, то при нажатии на кнопку «Провести» внизу экрана может появиться сообщение «Планируемая дата выплаты не может быть меньше даты документа». Это означает, что нарушен срок выплаты отпускных, т.е. программа сравнивает дату документа и предполагаемую дату выплаты (за 3 дня до начала отпуска), и, если это соотношение не выполняется, появляется соответствующее сообщение.
В результате предполагаемая дата выплаты дохода будет отображена в документе ниже строки с суммой начислений.
Соответственно для того, чтобы провести документ, необходимо выбрать один из вариантов:
1) Изменить дату документа (в нашем примере дата документа может быть не больше 20.03);
2) Изменить предполагаемую дату выплаты.
Консультант Компании «АНТ-ХИЛЛ»
При цитировании статей или заметок ссылка на сайт автора обязательна
Накопились вопросы и нужна помощь?
С удовольствием на них ответим и поможем все настроить! Обращайтесь по тел.