Разделы сайта
Выбор редакции:
- Как Мелания Трамп на самом деле относится к Дональду и Иванке: пугающий вердикт экспертов по языку тела Иванка и мелания трамп
- Как заработать монеты в Покемон Го
- Спонсорские интеграции Faces&Laces
- Что такое криптовалюта и как на ней можно заработать?
- Разведение породистых собак и котов
- Бизнес-идея: няня на час
- Как лучше организовать малый бизнес с партнерами?
- Секреты успешной работы на бирже статей и копирайтинга Advego
- Как заработать на ведении блога
- Свой бизнес: досуговый центр для школьников и подростков
Реклама
1с проверить дату на пустое значение |
При работе с датами 1С, типовой порядок частей даты – год, месяц, день, час, минуты, секунды. При этом часы, минуты, секунды можно пропустить. При создании даты из строки («приведение к дате») можно указать в локализованном формате (день.месяц.год часы:минуты:секунды), но только полностью. Например: //Работа с датами 1С - преобразовать дату в 1С из строки, разные способы //Работа с датами 1С - указание значения даты без приведения, напрямую Работа с датами 1С — Пустая дата 1С Чтобы проверить дату 1С на заполненность – ее сравнивают с «пустой датой». При наличии в справочнике/документе реквизита с типом дата, если пользователь не заполнил это поле, то ее значение также будет – «пустая дата». «Пустая дата» — это 01.01.0001 00:00:00. Например: Работа с датами 1С — Дата в реквизитах (справочников, документов и т.п.) При указании типа реквизита можно указать использовать:
Получение даты Для получения даты и времени используется функция 1С ТекущаяДата(). Очень важно место – где вызывается эта функция – на клиенте или на сервере. Подробнее см. тему «Режим исполнения/Исполнение». Часто бывает, что на клиентских машинах время немного разное, поэтому стараются везде использовать серверное время – даже если оно установлено на сервере не верно, то хотя бы у всех клиентов будет одинаковое неверное время. Для того, чтобы получить серверную дату (дату, установленную в операционной системе компьютера сервера), обычно в конфигурации создают общий модуль с установленной галочкой «Сервер» в свойствах, и в нем создают функцию //вызов этой функции для использования из другого модуля выглядит так Также в тонком клиенте непосредственно у функций модулей указывается где она будет исполнена: Начало и конец дня Для даты «30.10.2012»:
Используется в отчетах и запросах, требующих получить данные за период – день, месяц, год. Так например период с «01.01.2012 00:00:00» по «31.01.2012 00:00:00» неверен, так как не включает в себя один день месяца (но включает в себя одну секунду последнего дня месяца). Работа с датами 1С — Сравнение дат Дата содержит дату и время. При сравнении дат (без учета времени) их обычно приводят к началу дня (месяца, года). Например: На всякий случай, пример сравнения даты в периоде: Работа с датами 1С - Изменение даты Дата является числом секунд. Если мы хотим не просто узнать – больше ли одна дата другой – но и на сколько больше, то получаем разницу в секундах. Например: Также мы можем изменить дату, при изменении мы добавляем или отнимаем количество секунд: НачалоПредыдущегоДня = НачалоДня(НачалоЭтогоДня – 1); //убираем секунду – делая «вчера» и берем начало дня у «вчера» НачалоПредыдущегоДня = НачалоЭтогоДня – 24*60*60; //другой способ – отнимаем 24 часа – 24(часа)*60(получились минуты)*60(секунды) Работа с датами 1С - Момент времени Момент времени – это расширенное представление даты, применимое к документам (и соответственно регистрам). Оно требуется для сравнения времени документов, если дата и время документов одно и то же. Соответственно его можно использовать при отборах в запросах. Момент времени можно получить у документа следующими способами: Также можно сравнить момент времени с датой/временем: Работа с датами 1С - Форматирование дат При довольно часть встречается необходимость работы с переменными типа «Дата». В данной статье мы рассмотрим основные приемы — передача текущей даты, проверка на пустое значение, произвольная дата. При написании запросов зачастую необходимо сравнивать данные с текущей датой. Во встроенном языке 1С есть функция ТекущаяДата(). Она позволяет определить текущее время и дату на компьютере. Для произведения операций с текущей датой необходимо передавать в запрос значение этой функции в качестве параметра. Ниже представлен запрос, выбирающий все файлы, присоединенные к авансовым отчетам с датой создания до настоящего момента:
Произвольная датаРассмотренная выше функция позволяет сравнивать и, следовательно, производить отбор по любому периоду. Такой способ позволяет задать в запросе жесткий отбор без использования дополнительных параметров. Обратите внимание, что используя эту функцию в примере выше, в качестве входных параметров мы передавали только три числа (год, месяц, день). Последние три (час, минута, секунда) не являются обязательными и при отсутствии заменяются на «0», то есть начало дня. В рамках данного примера будут получены все файлы, присоединенные к авансовым отчетам до конца прошлого 2016 года. В связи с этим мы укажем час, минуту и секунду, чтобы сравнивать моментом времени «31 декабря 2016 г 23:59:59».
Пустая датаОсуществить проверку переменной на то, содержит ли она в себе незаполненную дату проще всего обычным сравнением. В этом примере мы, используя запрос, выберем все поступления денежных средств на р/с, у которых не заполнена входящая дата. У всех документов, существующих в конфигурациях 1С, а, следовательно, и практически у всех регистров обязательно должен быть хотя бы один реквизит с типом Дата, именно поэтому каждому разработчику необходимо знать и понимать:
Именно на эти вопросы мы и постараемся ответить в нашей статье. Что такое дата и как ее определитьТак как для принятия большинства управленческих решений и ведения учета не требуется точность времени, превышающая 1 секунду, разработчики платформы 1С решили, что именно эта величина будет предельным минимумом в формате даты. Таким образом, каждая реквизит, описывающий время события в программе должен содержать:
Необязательно указывать: час, минуту и секунду. Если эти три параметра опущены и нет дополнительных условий, программа автоматически устанавливает время на начало дня. Существующие в мире форматы даты имеют существенное различие:
Именно последний формат и использует платформа 1С. Преобразование к датеДля того чтобы из нескольких значений или из строки получить параметр с типом Дата необходимо использовать код, указанный на Рис. 1 Как видно из приведенного рисунка, определить дату можно как с помощью одной строки, так и с разбиением этой строки на составные части при помощи запятой, результат от этого не поменяется. Важно понимать, что год даты должен содержать четыре цифры, включая тысячелетие и век события, месяц, день, часы и секунды – должны иметь длину в два символа, включая лидирующие нули. Отсчет времени в программе идет от начала дня 1 января 0001 года. Для приведенного выше кода это значение можно определить одним из двух способов (Рис. 2). Рис. 2 Во второй строке мы опустили часы, минуты и секунды события, что нисколько не повлияло на работоспособность нашего кода. Особенности использования даты в запросах 1СДля большинства типов данных, используемых платформой 1С, существуют предопределенные значения пустоты. Для чисел – это 0, для ссылок можно определить значение ПустаяСсылка(), для даты пустым значением принято считать дату начала отсчета, именно с ней необходимо сравнивать реквизиты соответствующего типа при установке параметров запроса. Важно понять, что даже если в значении реквизита формы, имеющем рассматриваемый тип, не указано никаких цифр, то есть окно имеет вид (Рис. 3), это не означает что в нем ничего не указано, сравнение этого параметра с пустой строкой не пройдет. Рис. 3 Получив пустую дату, мы можем указать ее в качестве параметра к нашему запросу, то есть использовать конструкцию (Рис. 4) Однако, существуют моменты, когда проверку лучше проводить внутри текста запроса, не передавая пустую дату в качестве параметра. Для этого в коде запроса можно ввести соответствующее условие (Рис. 5) и использовать функцию запроса ДатаВремя(). Рис. 5 В приведенном тексте запроса мы опустили лидирующие нули у года, месяца и дня, а так же не указали часов, минут и секунд и программа, что называется, скушала это допущение. Дата и граница времениЕще один интересный факт, касающийся соотношения запросов и даты – это использование понятия «момент времени» при обращении к различным таблицам базы данных. Точность «до миллисекунды», указанная в технической документации при описании примитивного типа Дата ярче всего проявляется при выборке записей из виртуальных таблиц регистра накопления: если у регистра накопления помимо таблицы Обороты, существуют таблицы Остатки и ОстаткиИОбороты, то выборка по ним, осуществленная на определенное время, может дать различные результаты. Для того чтобы понять, как и почему это происходит, рассмотрим простой пример:
В чем же причина подобного поведения и как этого избежать?
Выходов из этой ситуации несколько:
Последний вариант можно представить кодом, указанном на Рис. 6. В первом параметре нашего объекта мы указываем дату, на которую необходимо сформировать отчет, второй параметр определяет тип границы. Так как для нас важно, чтобы движения на заданную дату вошли в выборку мы должны установить этот параметр в положение «Включая». В этой статье будут рассмотрены способы проверки на пустое значение в зависимости от типа проверяемого реквизита в , в том числе пустой ссылки. Значение NULL возвращается в том случае, когда реквизита попросту нет. Тип в этом случае будет тоже NULL. Например, вы объединяете две таблицы через левое соединение. В том случае, когда для левой таблицы не будет найдено ни одного значения в правой, вернется NULL. Проверку на данное значение можно осуществить при помощи конструкции «ЕСТЬ NULL» и « ». В первом случае возвращается Истина или Ложь. Во втором случае можно сразу задать другое значение в том случае, когда возвращается NULL. В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.
Пустая датаПроверка значения на пустую дату производится путем сравнения с конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Пример использования приведен ниже: Пустая ссылка в запросе 1СВ случае, когда возвращаемый реквизит имеет ссылочный тип, например, это элемент какого-либо справочника, документа и т. п., используется следующая конструкция: ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка). В приведенном ниже примере запрос выбирает всех партнеров, у которых не указан бизнес-регион. Чтобы проверить на «ЗначениеЗаполнено» нужно сделать обратное условие:
Пустая строкаДля проверки строковых типов производится сравнение с другим образцом. В данном случае – «». Приведенный ниже запрос отберет всех партнеров с незаполненным наименованием. Очень часто в запросах 1С приходится работать с датами. Особенно когда запрос строится к объектам метаданных в которых содержится периодическая информация. Как правило это регистры (сведений, накопления, расчета, бухгалтерии). Рассмотрим наиболее часто используемые функции языка запросов 1С для работы с датами. Примеры будем строить на основе регистра сведений РаботникиОрганизаций Конфигурации ЗУП редакция 2.5.
Здесь были рассмотрены наиболее часто употребляемые функции языка запросов 1С. Остальные применяются достаточно редко. При необходимости примеры работы с ними можно посмотреть в справке, встроенной в платформу 1С. |
Читайте: |
---|
Популярное:
Новое
- Как заработать монеты в Покемон Го
- Спонсорские интеграции Faces&Laces
- Что такое криптовалюта и как на ней можно заработать?
- Разведение породистых собак и котов
- Бизнес-идея: няня на час
- Как лучше организовать малый бизнес с партнерами?
- Секреты успешной работы на бирже статей и копирайтинга Advego
- Как заработать на ведении блога
- Свой бизнес: досуговый центр для школьников и подростков
- Бизнес идея: продажа мяса свинины - Магазины и продукты