2

Есть реквизит в документе "ДатаДоставки". Его пользователь заполняет сам. Как поставить запрет выбора даты раньше чем текущая дата?

Пыталась сравнить с текущей датой c выводом ошибки, но у меня код тоже не работает:

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
 Дата = Элементы.ДатаДоставки.ТекущиеДанные;
 Если Дата().Сравнить(ТекущаяДата()) = -1 Тогда
 Сообщить ("Ввод раньше текущей даты запрещен!");
 КонецЕсли

КонецПроцедуры
Elena
  • 103
  • Обратите внимание, что пользователь вероятно может перевести локальное время на компе и внести данные с любой датой. – Kromster Dec 26 '16 at 11:00
  • Да, вероятность есть.... тогда мне надо будет попробовать сравнивать с текущей датой сервера, попробую предложенный код на сервере – Elena Dec 26 '16 at 11:05

2 Answers2

2

Возможно Вы неверно запрашиваете значение даты из формы. Вот так у меня работает:

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
   ДатаДоставки = Объект.ДатаДоставки;
   Если НачалоДня(ДатаДоставки) <  НачалоДня(ТекущаяДата()) Тогда
     Сообщить ("Ввод раньше текущей даты запрещен!");
   КонецЕсли;
КонецПроцедуры

Если Вам нужно, чтобы выводилось не только предупреждение, но запрещалось сохранять документ, то необходимо вставить эту проверку в процедуру ПередЗаписью:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если НачалоДня(ДатаДоставки) <  НачалоДня(ТекущаяДата()) Тогда
      Сообщить ("Ввод раньше текущей даты запрещен!");
      Отказ = Истина;
    КонецЕсли;
КонецПроцедуры
Ella S.
  • 1,861
  • спасибо! Смогу попробовать применить только через несколько часов. Предварительно отмечу как отвеченный. А можете подсказать, как сделать, когда пользователь выбирает дату, сделать даты ранее текущей не активными? Это возможно? – Elena Dec 26 '16 at 10:38
  • Да, теперь заработало)))))) – Elena Dec 26 '16 at 17:34
-1
Если Дата() <  ТекущаяДата() Тогда
 Сообщить ("Ввод раньше текущей даты запрещен!");
КонецЕсли;
Denis
  • 8,910
  • 11
  • 31
  • 55