Имя: Пароль:
1C
1C 7.7
v7: Работа со временем в 1с 7.7?
,
0 Ночной Эльф
 
31.07.12
13:46
Как в 1с 7.7 пользоваться временем и есть ли такая переменная типа время? Собственно задача такая берется к примеру переменная "Код" которое имеет значение либо 1 либо 0.

ВремяНачало = <9:00>; \\<<< какого типо он должен быть?
Если Код = 1 тогда
   ВремяНачало = ВремяНачало + <30 минут>;
Иначе
   ВремяНачало = ВремяНачало + <60 минут>;
КОнецЕсли;

Как такое можно сделать? Чтобы в итоге получилось либо 9:30 либо 10:00. И так не один раз а в цикле вплоть до 18:00?

Всем заранее спасибо.
1 zak555
 
31.07.12
13:47
ТиС ?
2 m g r
 
31.07.12
13:48
УстановитьВремя(ч,м,с);
3 Ork
 
31.07.12
13:49
(0) Встроенная функция ТекеущееВремя() - наше Фсе.
Получаешь часы, минуты, секунды. Как число. Дальше складывай, вычитай, сравнивай с любым числом.
4 Азат
 
31.07.12
13:49
я обычно делаю так - получаю время как ТекущееВремя(ЧЧ, ММ, СС);
а потом Время = СС + ММ * 60 + ЧЧ * 3600;

ну и прибавление:
Если Код = 1 Тогда Время = Время + 30 * 60 Иначе Время = Время + 60 * 60
5 Heckfy
 
31.07.12
13:50
Вот еще полезная штучка: http://yandex.ru/yandsearch?text=_getperformanceconter()&lr=213
6 Ночной Эльф
 
31.07.12
13:51
(1) комплексная
7 Ночной Эльф
 
31.07.12
13:52
(4) а тип какой число ?
8 Азат
 
31.07.12
13:53
(7) да, ЧЧ, ММ, СС - числа
9 Злопчинский
 
31.07.12
13:57
10 Ночной Эльф
 
31.07.12
14:46
че то не получается у меня не как делают вот так

ТекущееВремя(ЧЧ, ММ);
ЧЧ = 9;
ММ = 1;

Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Разрешение180 = 1 Тогда
               Время = ММ * 60 + ЧЧ;
               Сообщить(Время);
           Иначе
               Время = ММ * 60 + ЧЧ;
               * 30);
               Сообщить(Время);
           КонецЕсли;

вобще не то получается
11 Ночной Эльф
 
31.07.12
14:46
вернее вот так

ТекущееВремя(ЧЧ, ММ);
ЧЧ = 9;
ММ = 1;

Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Разрешение180 = 1 Тогда
               Время = ММ * 30 + ЧЧ;
               Сообщить(Время);
           Иначе
               Время = ММ * 60 + ЧЧ;
               * 30);
               Сообщить(Время);
           КонецЕсли;

вобще не то получается
12 Ёпрст
 
31.07.12
14:48
(11) что написал, то и получил..
И зачем в этом коде ТекущееВремя(ЧЧ, ММ); - не ясно.
13 Азат
 
31.07.12
14:49
(10) давай косарик на киви, если сам прочитать совет не можешь)
14 ADirks
 
31.07.12
14:51
например


///******************************** ADirks 15.05.2012 ************
Функция фПустоеВремя(Знач стрВремя) Экспорт
   стрВремя = СокрЛП(стрВремя);
   Если ПустаяСтрока(стрВремя) = 1 Тогда
       Возврат 1;
   ИначеЕсли стрВремя = ":" Тогда
       Возврат 1;
   КонецЕсли;
   Возврат 0;
КонецФункции
///******************************** ADirks 15.05.2012 ************


///******************************** ADirks 15.05.2012 ************
Функция ВремяИзСтрокиВСекунды(стрВремя) Экспорт
   сзВремя = СтрокуВСписок(стрВремя, ":", 1);
   
   чВремя = 0;
   н = сзВремя.РазмерСписка();
   нЧасть = 1;
   Пока н > 0 Цикл
       часть = Число(сзВремя.ПолучитьЗначение(н));
       Если нЧасть = 1 Тогда
           чВремя = чВремя + часть;
       ИначеЕсли нЧасть = 2 Тогда
           чВремя = чВремя + (часть * 60);
       ИначеЕсли нЧасть = 3 Тогда
           чВремя = чВремя + (часть * 60 * 24);
       КонецЕсли;
       
       н = н - 1;
       нЧасть = нЧасть + 1;
   КонецЦикла;
   
   Возврат чВремя;
КонецФункции
///******************************** ADirks 15.05.2012 ************

///******************************** ADirks 15.05.2012 ************
Функция ВремяИзСекундВСтроку(Знач чВремя, нГруппЦифр = -1) Экспорт
   сзВремя = СоздатьОбъект("СписокЗначений");
   Делитель = 60;
   Пока чВремя > 0 Цикл
       ост = чВремя % Делитель;
       сзВремя.ВставитьЗначение(1, Формат(ост, "Ч(0)2"));
       чВремя = (чВремя - ост) / Делитель;
   КонецЦикла;
   
   Если нГруппЦифр <> -1 Тогда
       Пока сзВремя.РазмерСписка() < нГруппЦифр Цикл
           сзВремя.ВставитьЗначение(1, "00");
       КонецЦикла;
   КонецЕсли;
   
   Возврат СписокВСтроку(сзВремя, ":");
КонецФункции
///******************************** ADirks 15.05.2012 ************


///******************************** ADirks 15.05.2012 ************
Функция СложитьВремя(стрВремя1, стрВремя2) Экспорт
   чВремя1 = ?(ТипЗначения(стрВремя1)=1, стрВремя1, ВремяИзСтрокиВСекунды(стрВремя1));
   чВремя2 = ?(ТипЗначения(стрВремя2)=1, стрВремя2, ВремяИзСтрокиВСекунды(стрВремя2));
   
   Возврат ВремяИзСекундВСтроку(чВремя1 + чВремя2);
КонецФункции
///******************************** ADirks 15.05.2012 ************

///******************************** ADirks 16.05.2012 ************
Функция фВремяПопадаетВИнтервал(стрНачИнтервала, стрКонИнтервала, стрВремя) Экспорт
   Если стрВремя < стрНачИнтервала Тогда
       Возврат 0;
   КонецЕсли;
   Если стрВремя > стрКонИнтервала Тогда
       Возврат 0;
   КонецЕсли;
   Возврат 1;
КонецФункции
///******************************** ADirks 16.05.2012 ************

///******************************** ADirks 11.07.2012 ************
//Если Заголовок == -1  то без ввода обрабатываем вх.строку Время
Функция ВвестиВремя(Знач Время, Заголовок) Экспорт
   Если Заголовок <> -1 Тогда
       Если ВвестиСтроку(Время, Заголовок, 5) <> 1 Тогда
           Возврат "";
       КонецЕсли;
   КонецЕсли;
   
   Время = СокрЛП(Время);
   Если СтрДлина(Время) <= 2 Тогда
       чВремя = Число(Время);
       Время = Формат(чВремя, "Ч(0)2") + ":00";
   КонецЕсли;
   Если (СтрДлина(Время) = 4) И (Найти(Время, ":") = 0) Тогда
       Время = Лев(Время, 2)+":"+Сред(Время, 3);
   КонецЕсли;
   
   Возврат Время;
КонецФункции
///******************************** ADirks 11.07.2012 ************

///******************************** ADirks 11.07.2012 ************
Функция фВремяВведеноКорректно(Знач Время) Экспорт
   Время = СокрЛП(Время);
   Если СтрДлина(Время) <> 5 Тогда
       Возврат 0;
   КонецЕсли;
   
   Если фСтрокаСодержитТолькоДопустимыеСиволы(Время, "0123456789:") <> 1 Тогда
       Возврат 0;
   КонецЕсли;

   Если Время > "24:59" Тогда
       Возврат 0;
   КонецЕсли;
   
   Возврат 1;
КонецФункции
///******************************** ADirks 11.07.2012 ************
15 miki
 
31.07.12
15:12
(14)т. е. с 23:59 до 24:59 валидное время?
16 Ночной Эльф
 
01.08.12
08:40
(14) Подскажи пожалуйста что это за функция такая

СтрокуВСписок()

Понять не могу ? ругается на нее
17 izekia
 
01.08.12
08:43
(5) counter
18 Светлый Гений
 
01.08.12
08:52
(16)Эта функция, которая элементы списока запихивает в строку, разделяя их вторым переданным параметром.
19 Светлый Гений
 
01.08.12
08:52
(18)*списка
20 yanejsh
 
01.08.12
08:58
Код=2;
Ч=9;
М=0;
С=0;
Время=""+Формат(Ч,"Ч(0)2")+":"+Формат(М,"Ч(0)2")+":"+Формат(С,"Ч(0)2");
Сообщить(""+Время);
Время=3600*Ч+60*М+С;
Если Код = 1 тогда
   Время = Время + 30*60;
Иначе
   Время = Время + 60*60;
КонецЕсли;
Сообщить(""+Время);
Дни=Цел(Время/86400);
Время=Время-Дни*86400;
Ч=Цел(Время/3600);
Время=Время-Ч*3600;
М=Цел(Время/60);
Время=Время-М*60;
С=Время;
ТекСтрока=Строка(Дни)+"/"+Формат(Ч,"Ч(0)2")+":"+Формат(М,"Ч(0)2")+":"+Формат(С,"Ч(0)2");
Сообщить(""+ТекСтрока);
21 ADirks
 
01.08.12
09:56
Функция СтрокуВСписок(_Стр_, Разделитель = ",", ОбрезатьПробелы = 0) Экспорт
   Перем Стр, Поз;
   Перем Сп, Зн;
   
   Сп = СоздатьОбъект("СписокЗначений");
   Стр = СтрЗаменить(_Стр_, Разделитель, РазделительСтрок);
   КоличествоСтрок = СтрКоличествоСтрок(Стр);
   Для н = 1 По КоличествоСтрок Цикл
       Зн = СтрПолучитьСтроку(Стр, н);
       Если ОбрезатьПробелы = 1 Тогда Зн = СокрЛП(Зн); КонецЕсли;
       Сп.ДобавитьЗначение(Зн, Зн);
   КонецЦикла;

   Возврат Сп;
КонецФункции

Функция СписокВСтроку(Сп, Разделитель = ",", ВключатьПустыеЗначения = 0) Экспорт
   Перем н, Стр, Значение, Зпт;
   
   Стр = ""; Зпт = "";
   Для н = 1 По Сп.РазмерСписка() Цикл
       Значение = Строка( Сп.ПолучитьЗначение(н) );
       Если (ПустаяСтрока(Значение) = 0) ИЛИ (ВключатьПустыеЗначения = 1) Тогда
           Стр = Стр + Зпт + Значение;
           Зпт = Разделитель;
       КонецЕсли;
   КонецЦикла;
   
   Возврат Стр;
КонецФункции
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший