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

Расчёт даты

Автор WarBoot, 12 мая 2015, 21:09

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

WarBoot

Доброго времени суток.
Есть такой вопрос как расчёт времени.
Т.е. У меня есть документ стоянка. В ней есть реквизит Дата. Как рассчитать время отбытия если учитывать что рассчитывается по часам, суткам, неделям, месяцам (перечисления в реквезите тарификация)

vitasw

Я б написал запрос. В нем есть хорошая функция РазностьДат

KrivosheevEV

МояДата постарела на 1 час:
МояДата = МояДата + 60*60;

WarBoot

Цитата: KrivosheevEV от 13 мая 2015, 07:57
МояДата постарела на 1 час:
МояДата = МояДата + 60*60;
Не совсем понятно почему 60*60?

cska-fanat-kz

Цитата: WarBoot от 13 мая 2015, 08:19
Цитата: KrivosheevEV от 13 мая 2015, 07:57
МояДата постарела на 1 час:
МояДата = МояДата + 60*60;
Не совсем понятно почему 60*60?

потому что если к дате прибавить число, то это считается как количество секунд
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

WarBoot

Цитата: KrivosheevEV от 13 мая 2015, 07:57
МояДата постарела на 1 час:
МояДата = МояДата + 60*60;
Ну могу предположить, что это в секундах...
Но всё ровно многое не понятно... Написал такой код:
&НаКлиенте
Процедура СрокСтоянкиПриИзменении()
    Объект.ДатаОтбытия = ПолучитьДату();
КонецПроцедуры

&НаСервере
Функция ПолучитьДату();
Если Объект.Тарификация = Перечисления.Тарификация.Час Тогда
Дата = Объект.Дата+60*60*объект.СрокСтоянки;
ИначеЕсли Объект.Тарификация = Перечисления.Тарификация.Сутки Тогда   
        Дата = Объект.Дата+60*60*24*объект.СрокСтоянки;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификация.Неделя Тогда
        Дата = Объект.Дата+60*60*24*7*объект.СрокСтоянки;
    ИначеЕсли Объект.Тарификация = Перечисления.Тарификация.Месяц Тогда
        Дата = Объект.Дата+60*60*24*7*30*объект.СрокСтоянки;
КонецЕсли;
КонецФункции



Ни чего не считает
Добавлено: 13 мая 2015, 08:35


Всем спасибо за помощь!!! Разобрался, в конце забыл прописать Возврат Даты;

cska-fanat-kz

Цитата: WarBoot от 13 мая 2015, 08:30
ИначеЕсли Объект.Тарификация = Перечисления.Тарификация.Месяц Тогда         
    Дата = Объект.Дата+60*60*24*7*30*объект.СрокСтоянки;

а если дней в месяце 31 или 28? )))
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

WarBoot

Цитата: cska-fanat-kz от 13 мая 2015, 09:10
Цитата: WarBoot от 13 мая 2015, 08:30
ИначеЕсли Объект.Тарификация = Перечисления.Тарификация.Месяц Тогда         
    Дата = Объект.Дата+60*60*24*7*30*объект.СрокСтоянки;

а если дней в месяце 31 или 28? )))

А ещё может быть 29.. Но я это уже точно сделать не смогу :(

cska-fanat-kz

Цитата: vitasw от 12 мая 2015, 23:45
Я б написал запрос. В нем есть хорошая функция РазностьДат

а также ооооооочень хорошая функция ДОБАВИТЬКДАТЕ()
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Функция ДобавитьКДате(Дата, Тип, Количество)

   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ДОБАВИТЬКДАТЕ(&Дата, "+Тип+", &Количество) КАК Результат";

   Запрос.УстановитьПараметр("Дата", Дата);
   Запрос.УстановитьПараметр("Количество", Количество);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   ВыборкаДетальныеЗаписи.Следующий();
   
   Возврат ВыборкаДетальныеЗаписи.Результат;

КонецФункции // ДобавитьКДате()
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

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

Рейтинг@Mail.ru

Поиск