Имя: Пароль:
1C
 
Сделать ввод даты не позже текущей
0 RomaH
 
naïve
09.10.17
10:43
Поле типа дата
известно, что если ввести только день - то в дату запишется день текущего месяца и года

как красиво сделать, что бы при вводе дня вводилась дата по тому же принципу, но не позже текущей даты
т.е.
- месяц
или
- год
1 Fedor-1971
 
09.10.17
10:46
(0) ПриИзменении проверь дату введённую дату на соотношение с текущей и исправь как нужно
2 RomaH
 
naïve
10.10.17
07:15
(1) не правильно
получается, что даже если пользователь ввел полную дату - т.е. не пользовался автодополнением - то я ему эту дату поменяю на месяц раньше

надо именно автодополнить правильно

т.е. ввел 18 - получил 18.09.2017 (сегодня 10.10.2017)
ввел 1810 - получил 18.10.2016
181017 - 18.10.2017
3 ildary
 
10.10.17
07:20
(2) начнем с вопроса - а у нас есть способ отличить дату, введённую руками полностью от даты дополненной?
4 PuhUfa
 
10.10.17
07:22
(2) текстовое поле с маской ввода "под дату", ну и дальше уже извращайся как хочешь
5 Fedor-1971
 
10.10.17
09:09
(2) В АвтоПодбор у поля дата сохраняй в локальную переменную введённую строку, в ОкончаниеВводаТекста - обработай её, стандартный параметр "Текст" тебе не поможет, там уже сработала система
(4) геморно
6 Serg_1960
 
10.10.17
09:20
После изменения проверил дату. Если больше н.в. - минус месяц, проверил ещё раз. Не угадал? Минус год.
7 Serg_1960
 
10.10.17
09:24
Ооо... я проснулся :) А задача то - не так проста, как кажется. Интересная задача. Вопросом "А зачем?".
8 Mort
 
10.10.17
09:46
В фирме работают 1000 и все они ежедневно по 100 раз вводят эту дату. Другой причины не вижу.
9 RomaH
 
naïve
10.10.17
09:48
(7) операторы привыкли пользоваться автодополнением - набивают только первые цифры в дате
документы приходят с задержкой 2-10 дней
числа с 10 до конца месяца - все красиво
а вот с 1 до 10 - много ошибок при таком вводе получается
10 RomaH
 
naïve
10.10.17
09:49
(8) ну 5 сотрудников ежедневно по ... 1000 раз
11 Mort
 
10.10.17
09:50
(10) тогда лучше пусть совсем не вводят дату.
12 RomaH
 
naïve
10.10.17
09:55
(11) это как это?
13 Fedor-1971
 
10.10.17
09:56
(12) то что в (5) попробовал?
14 Mort
 
10.10.17
09:58
(12) да так, если пользователю приходиться сто раз в день делать одно и то же, значит архитектура кривая. Или наоборот, прямая как топор. Придумай как.
15 Fedor-1971
 
10.10.17
10:08
(14) не факт, что архитектура кривая.
У пользователя стопка перемешанных документов с датами, например, накладные от 20/09 по 08/10 - и дата обязательна. Автоматизировать автодополнение по внутренним правилам имеет смысл, только надо определиться для отчётов автодополнение останется стандартным или нет, поскольку глобально вставить пальцы в системную функцию не представляется возможным.
16 RomaH
 
naïve
10.10.17
10:13
(13) вроде как подходит
17 RomaH
 
naïve
10.10.17
10:15
только саму дату я правильно понял - устанавливать сразу в значение?

&НаКлиенте
Процедура ОплатаДатаВыполненияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
    //СтандартнаяОбработка = Ложь;
    Элементы.Оплата.ТекущиеДанные.ДатаВыполнения = '20171002';
КонецПроцедуры
18 Fedor-1971
 
10.10.17
10:18
(17) Наверно, Текст можно исправить и оставить стандартную обработку
19 lopus
 
10.10.17
10:20
Процедура ДатаЗнчОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
Год = Прав(Текст,4);
Месяц = Сред(Текст,4,2);
День = Лев(Текст,2);
ДатаПроверяемая = Дата(Год,Месяц,День);
    Если ТекущаяДата() < ДатаПроверяемая Тогда
        Значение = ДобавитьМесяц(ДатаПроверяемая,-1);
    Иначе
        Значение = ДатаПроверяемая;
    КонецЕсли;
    СтандартнаяОбработка = Ложь;
КонецПроцедуры
Если для обычных форм
20 Fedor-1971
 
10.10.17
10:28
(19) ты не прочитал (2), пользователь может ввести полную дату больше текущей и это приемлемо, автодополнение срабатывает только когда ввели часть даты