Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 05:53
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Создать отсчет времени.  (Прочитано 3630 раз)

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

Оффлайн Ученик65037

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-30
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день.
Подскажите как можно сделать отсчет времени до обеда от начала дня.
При помощи конструкции:

&НаКлиенте
Процедура Команда1(Команда)
     ПодключитьОбработчикОжидания("Команда2", 1);
КонецПроцедуры

  &НаКлиенте
  Процедура Команда2()
     Дата1 = ТекущаяДата();
     НачалоДня = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
ДоОбеда=ТекущаяДата()-НачалоДня;-не работает.
    Сообщить (ТекущаяДата());
   
  КонецПроцедуры   
p.s.:Заранее спасибо. Новичек.


Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
НачалоДня = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
Вот тут вы строку получаете и потом из даты пытаетесь вычесть строку.
чтобы получить начало дня от даты используйте функцию НачалоДня.

Добавлено: 30 Июн 2014, 17:08

Ну и еще понятие "до обеда" надо четко описать.
например, если обед начинается в 13-00, тогда время обеда можно вычислить так:
ТекВремя = ТекущаяДата();
ВремяОбеда = НачалоДня(ТекВремя) + 60*60*13;
Если ТекВремя = ВремяОбеда Тогда
Сообщить("Пора обедать!");
КонецЕсли;
на всякий случай, чтоб было понятно: 60*60*13 - это я прибавил 13 часов, переведенные в секунды (если к дате прибавить число, прибавляются именно секунды)

Оффлайн Ученик65037

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-30
  • Сайт: 
  • Профессия: Ученик 1С
НачалоДня = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
Вот тут вы строку получаете и потом из даты пытаетесь вычесть строку.
чтобы получить начало дня от даты используйте функцию НачалоДня.

Добавлено: 30 Июн 2014, 17:08

Ну и еще понятие "до обеда" надо четко описать.
например, если обед начинается в 13-00, тогда время обеда можно вычислить так:
ТекВремя = ТекущаяДата();
ВремяОбеда = НачалоДня(ТекВремя) + 60*60*13;
Если ТекВремя = ВремяОбеда Тогда
Сообщить("Пора обедать!");
КонецЕсли;
на всякий случай, чтоб было понятно: 60*60*13 - это я прибавил 13 часов, переведенные в секунды (если к дате прибавить число, прибавляются именно секунды)
Спасибо. Конструкция интересная. Только она ничего не выводит, никакого сообщения. По идеи она ко времени прибавляет время когда должен быть обед. Но у меня задача сделать в виде таймера.Чтобы от текущего времени шел отсчет времени по секундно до начала обеденного времени.

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
да вроде все просто

//считаем что обед в 13:00
СекундДоОбеда = НачалоДня(ТекущаяДата()) + 3600 * 13 - ТекущаяДата();
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн Ученик65037

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-30
  • Сайт: 
  • Профессия: Ученик 1С
да вроде все просто

//считаем что обед в 13:00
СекундДоОбеда = НачалоДня(ТекущаяДата()) + 3600 * 13 - ТекущаяДата();
Поле вобще пропало.

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
Шеф!!! Все пропало! Все пропало! :lol:
(прикольно)
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн Ученик65037

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-30
  • Сайт: 
  • Профессия: Ученик 1С
Шеф!!! Все пропало! Все пропало! :lol:
(прикольно)

Перем мСчет;
 
// нажание на старт
Процедура СтартНажатие(Элемент)
мСчет = 0;
ПодключитьОбработчикОжидания("Отсчет",1);
КонецПроцедуры
 
// нажатие на стоп
Процедура СтопНажатие(Элемент)
ОтключитьОбработчикОжидания("Отсчет");
КонецПроцедуры
 
// обработчик ожидания
Процедура Отсчет()
мСчет = мСчет + 1;
ЭлементыФормы.НадписьТаймер.Заголовок = Время(мСчет);
КонецПроцедуры
 
// функция преобразования числа во время
Функция Время(Значение)
Если Значение < 60 Тогда
  Возврат Строка(Значение) + " сек.";
  ИначеЕсли Значение >= 60 и Значение < 60*60 Тогда
Возврат Строка(Цел(Значение/60)) + " мин. " + Строка(Значение-Цел(Значение/60)*60) + " сек.";
  ИначеЕсли Значение >= 60*60 и Значение < 60*60*24 Тогда
Возврат Строка(Цел(Значение/(60*60))) + " час. "
+  Строка(Цел((Значение - (Цел(Значение/(60*60))*60*60))/60)) + " мин. "
+ Строка(Значение-Цел(Значение/60)*60) + " сек.";
КонецЕсли;
КонецФункции
// конец

Попробовал так. Но выдает ошибки в синтаксисе.:fdbsdfbsd:

Последний раз редактировалось: Klyacksa; 01 Июл 2014, 11:24. Причина: Не забывайте использовать тег [code]

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
у меня полчилось!!!! создал общую форму, общую команду, в форме написал такой код. Все работает! Прикольно, так работаешь себе, а тебе там где-то в форме тикает время сколько осталось до обеда!!! МОЖНО ПОЙТИ ДАЛЬШЕ!!! После обеда, в той же форме паказывать время до окончания рабочего дня!!!!
Так весь рабочий день в два счетчика и будет укладываться в счетчик до обеда и в счетчик до ухода с работы.


вот код в форме


&НаКлиенте
Процедура ПриОткрытии(Отказ)
//Вставить содержимое обработчика
ПодключитьОбработчикОжидания("Отсчет",1);
КонецПроцедуры

&НаКлиенте
Процедура Отсчет()

Секунд = НачалоДня(ТекущаяДата()) + 3600 * 13 - ТекущаяДата();
Час = Цел(Секунд / 60 / 60);
Мин = Цел((Секунд % 3600) / 60);
Сек = Цел(Секунд % 60);
Текст = ?(час > 0, строка(час) + " час ", "") + ?(мин > 0, строка(мин) + " мин ", "") + ?(сек > 0, строка(сек) + " сек", "");

Элементы.Надпись.Заголовок = "До обеда: " + Текст;

КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ОтключитьОбработчикОжидания("Отсчет");
КонецПроцедуры
Помогло? - Нажми СПАСИБО!!!
                       :)

Последний раз редактировалось: Klyacksa; 01 Июл 2014, 12:05. Причина: ПОЖАЛУЙСТА уважайте глаза читающих, не забывайте использовать тег [code]

Оффлайн Ученик65037

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-30
  • Сайт: 
  • Профессия: Ученик 1С
у меня полчилось!!!! создал общую форму, общую команду, в форме написал такой код. Все работает! Прикольно, так работаешь себе, а тебе там где-то в форме тикает время сколько осталось до обеда!!! МОЖНО ПОЙТИ ДАЛЬШЕ!!! После обеда, в той же форме паказывать время до окончания рабочего дня!!!!
Так весь рабочий день в два счетчика и будет укладываться в счетчик до обеда и в счетчик до ухода с работы.


вот код в форме


&НаКлиенте
Процедура ПриОткрытии(Отказ)
//Вставить содержимое обработчика
ПодключитьОбработчикОжидания("Отсчет",1);
КонецПроцедуры

&НаКлиенте
Процедура Отсчет()

Секунд = НачалоДня(ТекущаяДата()) + 3600 * 13 - ТекущаяДата();
Час = Цел(Секунд / 60 / 60);
Мин = Цел((Секунд % 3600) / 60);
Сек = Цел(Секунд % 60);
Текст = ?(час > 0, строка(час) + " час ", "") + ?(мин > 0, строка(мин) + " мин ", "") + ?(сек > 0, строка(сек) + " сек", "");

Элементы.Надпись.Заголовок = "До обеда: " + Текст;

КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ОтключитьОбработчикОжидания("Отсчет");
КонецПроцедуры


Добрый вечер всем. Получилось реализовать этот код.
&НаКлиенте
Процедура Команда1(Команда)
     ПодключитьОбработчикОжидания("Команда2", 1);
КонецПроцедуры
  &НаКлиенте
  Процедура Команда2()
    Дата1 = ТекущаяДата();
    ДоОбедаОсталосьЧасов = Цел(((НачалоДня(ТекущаяДата()) + 3600 * 13) - ТекущаяДата())/3600);
    ОсталосьМинут =((НачалоДня(ТекущаяДата()) + 3600 * 13) - ТекущаяДата())%3600;
    ДоОбедаОсталосьМинут = Цел(ОсталосьМинут/60);
     ДоОбедаОсталосьСекунд =((НачалоДня(ТекущаяДата()) + 3600 * 13) - ТекущаяДата())%60;
     Элементы.Декорация1.Заголовок= "До обеда: "+Строка(ДоОбедаОсталосьЧасов)+":"+Строка(ДоОбедаОсталосьМинут)+":"+Строка(ДоОбедаОсталосьСекунд);
ДоКонцаРабочегоДняОсталосьЧасов = Цел(((НачалоДня(ТекущаяДата()) + 3600 * 20) - ТекущаяДата())/3600);
    ОсталосьМинут =((НачалоДня(ТекущаяДата()) + 3600 * 20) - ТекущаяДата())%3600;
    ДоКонцаРабочегоДняОсталосьМинут = Цел(ОсталосьМинут/60);
     ДоКонцаРабочегоДняОсталосьСекунд =((НачалоДня(ТекущаяДата()) + 3600 * 20) - ТекущаяДата())%60;
     Элементы.Декорация2.Заголовок= "Конец дня: "+Строка(ДоКонцаРабочегоДняОсталосьЧасов)+":"+Строка(ДоКонцаРабочегоДняОсталосьМинут)+":"+Строка(ДоКонцаРабочегоДняОсталосьСекунд);
  КонецПроцедуры

Пользуйтесь на здоровье!!!


Теперь у меня    другой вопрос. Как можно вывести реквизит с документа на общую форму как реквизит в форме надписи: К примеру поле ИМЯ. Заранее благодарен.     


 

Создать com соединение [com соединение]

Автор MuI_I_IkaРаздел Алгоритмы

Ответов: 0
Просмотров: 483
Последний ответ 30 Май 2017, 16:52
от MuI_I_Ika
Как создать нескольких документов "расчет при увольнении" на основании кадрового документа "увольнение" как Отпуска

Автор cozuРаздел Пользователям "1С - Предприятие 8"

Ответов: 3
Просмотров: 3185
Последний ответ 21 Мар 2015, 20:24
от дфтын
Создать базу с новым списком баз или как скрыть базу

Автор GendelfРаздел Пользователям "1С - Предприятие 8"

Ответов: 11
Просмотров: 6917
Последний ответ 04 Дек 2012, 13:47
от Gendelf
Как в Native API 8.2 в методе класса создать экземпляр другого класса?

Автор qesrf3we4rРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 2660
Последний ответ 01 Апр 2011, 11:03
от qesrf3we4r
Команда "создать на основании" в журнале документов

Автор cannabis_86Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 5342
Последний ответ 10 Апр 2014, 14:58
от MuI_I_Ika

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
175 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
alex0402
44 Сообщений
AIFrame
39 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 286
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal