Имя: Пароль:
1C
1С v8
Как в УПП ограничить прием заказа, по времени?
,
0 Серго62
 
19.05.14
10:05
Предприятие доставляет заказы покупателям собственным транспортом. Количество заказов, которые могут быть доставлены в определенный день ограничено количеством автомобилей. В связи с этим приняли решение принимать заказы на завтра до определенного времени, например до 14:00, так как после этого времени начинается планирование рейсов на завтра.
То есть до 14 принимаем заказ на завтра, а после 14 на послезавтра и последующие дни. При попытке принять заказ на завтра после 14 часов нужно выдавать предупреждение и "не выпускать" пользователя из даты отгрузки пока он не укажет правильную дату.

Сделал такую проверку для поля дата отгрузки:
Процедура ДатаОтгрузкиПриИзменении(Элемент)
    Если ТекущаяДата() > НачалоДня(ТекущаяДата())+(24*60*60) И Элемент.Значение < КонецДня(ТекущаяДата()+24*3600) Тогда // После 14:00 прием заказов на завтра прекращается
        Предупреждение("После 14:00 нельзя принимать заказы на завтра!");
        ЭтаФорма.ТекущийЭлемент = Элемент;
        //Значение = Элемент.Значение;
    КонецЕсли;
КонецПроцедуры

Но срабатывает эта проверка почему-то только один раз.
То есть если пользователь вводит неправильную дату и жмет Enter первый  раз, то он получает сообщение и остается в поле ввода, если он жмет Enter еще раз, то благополучно выходит из этого поля.

Можно ли как-то сделать так чтобы пользователь не мог выйти из поля ввода, пока не введет правильную дату?
1 Wobland
 
19.05.14
10:06
это даже не цепью приковать к пулемёту, тут юзер полностью беспомощен
2 Kalambur
 
19.05.14
10:09
используй ОбработкаВыбора
3 Серго62
 
19.05.14
10:15
(2) Это событие возникает только при выборе, в моем случае при выборе из календаря.
4 Серго62
 
19.05.14
10:16
(1) Все так безнадежно?
5 Wobland
 
19.05.14
10:20
(4) да не особо на самом деле. я не изобрёл ни одного нового ругательства, когда не смог сойти с поля в такой ситуации
6 Серго62
 
19.05.14
10:23
(5) Открой секрет, как не дать сойти с поля?
7 Wobland
 
19.05.14
10:27
(6) усердная молитва и пост избавляют от таких стремлений
8 Серго62
 
19.05.14
10:32
(7) Ну то есть никак, я правильно понимаю?
9 Серго62
 
19.05.14
10:37
Есть еще такой вариант - коварно сообщить пользователю о том, что он не прав при записи документа, он будет просто в восторге от этого сообщения, когда "набьет" весь документ и узнает о том, что не может его сохранить.
10 Wobland
 
19.05.14
10:38
(8) нет

ТекущаяДата() > НачалоДня(ТекущаяДата())+(24*60*60)
//если сегодня - это уже завтра, так что ли?
11 Wobland
 
19.05.14
10:39
(9) есть такая вещь как проведение. до него документ - просто черновичок
12 pumbaEO
 
19.05.14
10:40
Что делать, если начал набивать заявку в 13:59, а закончил в 14:01?

1. В Форме ПередЗаписью: ЭтоНовый + Проверка даты отгрузки.
2. Обработчик ожидания раз в минуту и могильной формочкой предуреждать "ДО окончания ввода заявки на сегодня остадлось 3 сек и 523 милисекунды".
13 Серго62
 
19.05.14
10:42
(10) сорри, это косячок, должно быть так ТекущаяДата() > НачалоДня(ТекущаяДата())+(14*60*60)

с циферкой ошибся, имелось ввиду, что если текущее время больше 14:00
14 Wobland
 
19.05.14
10:44
а вот придумали бы какую-то фиговину для выделения часа из даты...
15 Серго62
 
19.05.14
10:45
(12)Вот как раз, если проверять дату отгрузки, то такая проблема не возникнет.
16 Серго62
 
19.05.14
10:47
(14) Час(<Дата>) не оно?
17 Wobland
 
19.05.14
10:48
(16) оно, но сторно
18 Серго62
 
19.05.14
10:52
(11) Да, да, все так, но задача в том, чтобы уберечь пользователя от лишней работы. Поэтом нужно остановить его в дате отгрузки, если он ее ввел неправильно.
19 Серго62
 
19.05.14
11:03
(5) Если не секрет, где это можно увидеть или это не в 1с было?
20 Wobland
 
19.05.14
11:04
(19) ой, не помню, в 1с. а присвоение текущего элемента вполне себе работате
Основная теорема систематики: Новые системы плодят новые проблемы.