В разработке часто возникают ситуации, когда нужно провести какие-то манипуляции с пустой датой: сравнить является ли какая-либо дата пустой, записать в какой-то реквизит с типом Дата пустую дату, а также иногда необходимо использовать пустую дату в запросе. В этой статье разберем, как работает пустая дата в 1С.
Что такое пустая дата в 1С? Эта дата, которая соответствует дате григорианского календаря 1 января 1 года 0 часов, 0 минут и 0 секунд. Такая дата с таким временем в 1С считается пустой.
Задаем пустую дату
Задать пустую дату в модуле можно несколькими способами.
При помощи ординарных кавычек:
НашаПустаяДата = '00010101';
Или:
НашаПустаяДата = '00010101000000';
При помощи метода Дата:
НашаПустаяДата = Дата(1,1,1);
Или:
НашаПустаяДата = Дата(1,1,1,0,0,0);
В обоих случаях, переменная НашаПустаяДата будет иметь тип Дата, но являться пустой. Если мы посмотрим на значение переменной НашаПустаяДата в отладке, то увидим, что эта переменная имеет тип Дата, с датой, которая соответствует 1 января 1 года.
Сравниваем с пустой датой
Как в программном модуле проверить является ли какая-либо дата пустой? Сделать это можно двумя способами. В первом способе используется метод ЗначениеЗаполнено. Этот метод вернёт Истина, если дата не пустая, и Ложь, если дата пустая. Например, узнаем, является ли НашаПустаяДата пустой. Для этого будем использовать условие.
НашаПустаяДата = Дата(1,1,1,0,0,0); Если ЗначениеЗаполнено(НашаПустаяДата) Тогда Сообщить("Дата пустая"); иначе Сообщить("Дата не пустая"); КонецЕсли;
В этом случае, выйдет сообщение, что дата пустая.
Если же мы проверим так не пустую дату.
НашаНеПустаяДата = Дата(2011,1,1); Если ЗначениеЗаполнено(НашаНеПустаяДата) Тогда Сообщить("Дата не пустая"); иначе Сообщить("Дата пустая"); КонецЕсли;
То функция ЗначениеЗаполнено вернёт Истина, и выйдет другое сообщение.
Можно проверять, просто сравнивая какую-то переменную или реквизит с пустой датой. Например, в коде ниже проверяется, является ли реквизит формы ДатаЗаписиДокумента пустой датой.
Если ДатаЗаписиДокумента = Дата(1,1,1) Тогда Сообщить("Эта дата пустая!"); КонецЕсли;
Где: ДатаЗаписиДокумента реквизит управляемой формы.
Задаем пустую дату в запросе
Иногда, в запросе необходимо создать поле с пустой датой. Чтобы это сделать, необходимо использовать функцию ДатаВремя.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажаТоваров.Номер КАК Номер, | ПродажаТоваров.Дата КАК Дата, | ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПустая |ИЗ | Документ.ПродажаТоваров КАК ПродажаТоваров";
При помощи этой функции задаются даты и время в запросе. Но, если в качестве первых трёх параметров задать значение 1, то в поле выборки будет пустая дата.
Также, мы можем передать значение с пустой датой в запрос.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажаТоваров.Номер КАК Номер, | ПродажаТоваров.Дата КАК Дата, | &ПустаяДатаВЗапрос КАК ДатаПустая |ИЗ | Документ.ПродажаТоваров КАК ПродажаТоваров"; Запрос.УстановитьПараметр("ПустаяДатаВЗапрос",Дата(1,1,1));
В поле ДатаПустая выборки, сформированной из запроса теперь всегда будет пустая дата (как для первого, так и для второго случая).
Сравниваем с пустой датой в запросе
Сравнить какое либо поле в запросе с пустой датой можно двумя способами: используя метод ДатаВремя и передавая пустую дату в запрос.
Используем метод ДатаВремя:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажаТоваров.Номер КАК Номер, | ПродажаТоваров.Дата КАК Дата |ИЗ | Документ.ПродажаТоваров КАК ПродажаТоваров |ГДЕ | НЕ ПродажаТоваров.ДатаОтгузки = ДАТАВРЕМЯ(1, 1, 1)";
Передаем пустую дату в запрос:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажаТоваров.Номер КАК Номер, | ПродажаТоваров.Дата КАК Дата |ИЗ | Документ.ПродажаТоваров КАК ПродажаТоваров |ГДЕ | НЕ ПродажаТоваров.ДатаОтгузки = &ПустаяДатаВЗапрос"; Запрос.УстановитьПараметр("ПустаяДатаВЗапрос",Дата(1,1,1));
В обоих случаях, будут выведены только те документы, у которых не пустая дата отгрузки.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Подписывайтесь на мой канал в телеграмме: https://t.me/Programming1CNizamutdinov
И вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
НашаПустаяДата = Дата(1,1,1,0,0,0);
Если ЗначениеЗаполнено(НашаПустаяДата) Тогда
Сообщить(«Дата пустая»);
иначе
Сообщить(«Дата не пустая»);
КонецЕсли;
Тут выйдет сообщение: «Дата не пустая».