Имя: Пароль:
1C
1С v8
Разность дат
,
0 Sa6nek6
 
26.11.12
13:32
Подскажите чайничку как вычислить число между датами?
Приехал клиент в гостиницу снял номер по n-цене С Даты По Дату? Как вычислить число между датами чтоб потом умножить на n-цену
1 zak555
 
26.11.12
13:33
ты хочешь узнать количество дней ?
2 Sa6nek6
 
26.11.12
13:33
Ага)
3 Euguln
 
26.11.12
13:33
"-" не предлагать?
4 Sa6nek6
 
26.11.12
13:33
есть ли станарт функция?
5 ssh2006
 
26.11.12
13:34
Выбрать РазностьДат(Дата1, Дата2, День)
6 Sa6nek6
 
26.11.12
13:34
Спасиб!
7 МишКа
 
26.11.12
13:34
(0) Есть такая операция - вычитание, она же разность. Только учти, что это будут секунды.
8 Sa6nek6
 
26.11.12
13:35
// Вычисляет _разницу_ (в днях) между двумя датами.
// Чтобы вычислить _длину_ периода - нужно добавить 1
Функция глРазницаДат(ДатаС, ДатаПо) Экспорт
   Разн=Цел((НачалоДня(ДатаПо) - НачалоДня(ДатаС)) / (60 * 60 * 24));
   Возврат Разн;
КонецФункции // глРазницаДат()

// Вычисляет _длину_ периода (в днях) между двумя датами. Кон-Нач+1
Функция глДлинаПериода(ДатаС, ДатаПо) Экспорт
   Возврат глРазницаДат(ДатаС, ДатаПо)+1;
КонецФункции // глРазницаДат()

Функция глДобавитьДень(Дат, ЧислоДней) Экспорт
   Возврат Дат+ЧислоДней*(60 * 60 * 24);
КонецФункции // глДобавитьДень()
9 Sa6nek6
 
26.11.12
13:35
как то так ? правильно или нет????
10 Cube
 
26.11.12
13:38
(8) О, функции... А чо обработку не создал с экспортируемыми функциями расчета разницы дат, чтобы ещё интереснее было?))
11 МишКа
 
26.11.12
13:38
(9) У тебя утро-вечер будет равно 0 дней. +1 поставь.
12 Sa6nek6
 
26.11.12
13:40
Функция глДобавитьДень(Дат, ЧислоДней) Экспорт
   Возврат Дат+ЧислоДней*(60 * 60 * 24)+1;
КонецФункции // глДобавитьДень()
Тута??
13 МишКа
 
26.11.12
13:40
+(11) А, нет же. НачалодняДня стоит. Все правильно.
14 МишКа
 
26.11.12
13:41
Можно было цел() не ставить. Оно всегда целое.
15 МишКа
 
26.11.12
13:41
(12) Не надо.
16 Sa6nek6
 
26.11.12
13:42
Да я нашел этот код просто хотел спросить правильно ли он написан и вставить куда лушче??
17 МишКа
 
26.11.12
13:46
Непонятно почему в функции длинапериода стоит +1.
Получается, что если начало и конец в одном дне, тогда длина периода не 0, а 1.
18 Sa6nek6
 
26.11.12
13:52
Через запрос проще будет?
19 МишКа
 
26.11.12
13:52
(18) Безусловно. Читай (5).
20 Sa6nek6
 
26.11.12
13:54
РАЗНОСТЬДАТ(РегистрацияПостояльцев.ДатаС,РегистрацияПостояльцев.ДатаПо, <Тип>)
что в типе указать?
21 МишКа
 
26.11.12
13:54
Хотя, если говорить только о днях. Все, что тебе нужно, это:

Разн=(НачалоДня(ДатаПо) - НачалоДня(ДатаС)) / (60 * 60 * 24))
22 МишКа
 
26.11.12
13:55
(20) Так и писать День. Без кавычек.
23 Cunni
 
26.11.12
13:55
День, Месяц, Год. СП и справка(через ф1) в помощь. Про запросы больше в справке написано, в частности функция разностьдат()
24 Sa6nek6
 
26.11.12
13:55
И все? Вставить в форму?
25 МишКа
 
26.11.12
13:56
(20) У вас расчетный час 24:00 ?
26 Sa6nek6
 
26.11.12
13:56
Ага
27 Sa6nek6
 
26.11.12
13:57
а каквзять этот день от туда сильно уж чайник)
28 МишКа
 
26.11.12
13:57
(24) Создать запрос. Выполнить запрос. Получить результат запроса. И только потом можно делать с ним что желаешь (например вставлять в форму.)
29 МишКа
 
26.11.12
13:58
(27) Пиши, как в (21) тогда.
30 Sa6nek6
 
26.11.12
13:59
Это без запроса тога?
31 Sa6nek6
 
26.11.12
14:00
Лан спасибо огромное буду разбираться Спасибо!
32 Sa6nek6
 
26.11.12
14:11
(29)
&НаСервере
Функция ПолучитьДень()
                       //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    РегистрацияПостояльцев.ДатаС,
       |    РегистрацияПостояльцев.ДатаПо,
       |    РАЗНОСТЬДАТ(РегистрацияПостояльцев.ДатаС, РегистрацияПостояльцев.ДатаПо, ДЕНЬ) КАК Поле1
       |ИЗ
       |    Документ.РегистрацияПостояльцев КАК РегистрацияПостояльцев";

     Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       Возврат ВыборкаДетальныеЗаписи.День;
   КонецЕсли;
   Возврат 0;
КонецФункции
33 Sa6nek6
 
26.11.12
14:11
МишКа так не???
34 Sa6nek6
 
26.11.12
14:13
:(
35 Sa6nek6
 
26.11.12
14:16
Хто нить глянте код!
36 kosts
 
26.11.12
14:21
(32) С и ПО вроде наоборот нужно.
Где условие ?
37 Sa6nek6
 
26.11.12
14:23
Местами поменять? Какое?
38 Sa6nek6
 
26.11.12
14:25
&НаСервере
Функция РассчетДень()
                       //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    РегистрацияПостояльцев.ДатаС,
       |    РегистрацияПостояльцев.ДатаПо,
       |    РАЗНОСТЬДАТ(РегистрацияПостояльцев.ДатаПо, РегистрацияПостояльцев.ДатаС, ДЕНЬ) КАК Поле1
       |ИЗ
       |    Документ.РегистрацияПостояльцев КАК РегистрацияПостояльцев";

     Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       Возврат ВыборкаДетальныеЗаписи.День;
   КонецЕсли;
   Возврат 0;
   
КонецФункции
39 AndyD
 
26.11.12
14:28
" КАК Поле1"...
"Возврат ВыборкаДетальныеЗаписи.День;"


поменяй на " КАК День"
40 Sa6nek6
 
26.11.12
14:30
&НаСервере
Функция РасчетДень()
                       //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    РегистрацияПостояльцев.ДатаС,
       |    РегистрацияПостояльцев.ДатаПо,
       |    РАЗНОСТЬДАТ(РегистрацияПостояльцев.ДатаПо, РегистрацияПостояльцев.ДатаС, ДЕНЬ) КАК День
       |ИЗ
       |    Документ.РегистрацияПостояльцев КАК РегистрацияПостояльцев";

     Результат = Запрос.Выполнить();
     ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       Возврат ВыборкаДетальныеЗаписи.День;
   КонецЕсли;
   Возврат 0;
   
КонецФункции
41 Sa6nek6
 
26.11.12
14:31
А как теперь этот день умножить на цену примерно что писать?
42 Sa6nek6
 
26.11.12
14:31
И эту функцию в процедуру записать? и там выполнять?
43 AndyD
 
26.11.12
14:43
Возврат ВыборкаДетальныеЗаписи.День*ЦенаЗаДень;
44 Мимо Проходил
 
26.11.12
14:47
В гостиницах расчетный час обычно 12-00.
Так что находишь ближейший "больший" полдень для выезда и "меньший" для заезда. Потом вычисляешь разницу.
45 Serg_1960
 
26.11.12
14:52
И проверку на заполнение значений - обязательно надо.