Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 08:15

Интервал времени

Автор keramik, 10 дек 2014, 16:29

0 Пользователей и 1 гость просматривают эту тему.

keramik

Как в форме 1с 7.7 оформить интервал времени?
Я нашёл, что время хранится в типе "Строка", в формате 99:99, но такой вариант не годится, т.к. позволяет записывать любые числовые значения (и 56ч:87мин, и 28ч:79мин).

Herby

Цитата: keramik от 10 дек 2014, 16:29Как в форме 1с 7.7 оформить интервал времени?

время в клюшках не хранится

Цитата: keramik от 10 дек 2014, 16:29(и 56ч:87мин, и 28ч:79мин)

проверки просто добавлять, чтобы в вводимое поле не смогли ввести 60 минут и более, 24 часа и более

keramik

Как правильно задать переменные и установить проверку максимального значения? 
В процедуре
Процедура УстановитьВремя(ч,м)
ч=Число(2);
м=Число(2);
ч.максЗнач=24;
м.максЗнач=60;
КонецПроцедуры;

Ругается, что переменные "ч" и "м" не определены, можно вводить любое число.
Добавлено: 11 дек 2014, 10:46


Не хочется для диапазона времени создавать кучу полей, где одно будет "Час", другое "Минуты" и потом дублировать их.
Добавлено: 11 дек 2014, 10:59


Нашёл ещё способ ВвестиПериод:
Процедура ВвестиПериод(ч,м)
ч=Число(2);
м=Число(2);
КонецПроцедуры;

Но он тоже пока не работает как надо - ругается, что неопределены переменные.

Herby

Если честно я вообще не понимаю что вы делаете в этих двух процедурах,
и неудивительно что платформа ругается)

Ну например здесь:

Цитата: keramik от 11 дек 2014, 10:46ч=Число(2);

что вы делаете? Число 2 преобразуете в число 2? Зачем?


keramik

Я хочу сдлать так, чтобы юзер мог ввести временной интервал в формате ЧЧ:ММ - ЧЧ:ММ, но не знаю, как прописать ограничение, чтобы максимум можно было ввести 23:59 - 23-59.
Ч=Число() - это я пытался определить переменную, но не правильно.

Herby

На форме поместите поле для ввода времени, в маске этого реквизита (поля) указываете 99:99,
в формуле этого поля прописываете процедуру проверки.

Процедура проверки приблизительно так должна выглядеть:


// параметр Время - сюда передаете ваше значение из поля, где вы вводите время
Функция глПриВыбореВремени(Время) 
  Перем Час, Минута;

  Если СокрЛП(Время) = ":" Тогда
    //реквизит не заполнен, проверка не требуется
    Возврат 1;
  КонецЕсли;

  Час = Число(Лев(Время, 2));
  Минута = Число(Прав(Время, 2));
  Если (Час > 23) или (Минута > 59) или (Найти(Время, " ") > 0) Тогда
    Предупреждение("Неправильно введено время!",5);
    Время = "";
    Возврат 0;
  КонецЕсли;
  Возврат 1;
КонецФункции

keramik

Спасибо за помощь.
Единственное, что закоментил часть строки
...или(Найти(Время, " ") > 0)...
иначе всё время выкидывало сообщение, что время неправильно введено. А в остальном всё отлично.
Спасибо большое.

Похожие темы (2)

Рейтинг@Mail.ru

Поиск