Имя: Пароль:
1C
1С v8
Вычитание дат
0 bas28000
 
02.07.13
12:44
Есть код:

   ПрошлоВремениСНачалаЗапуска = ТекущаяДата() - НачалоДня(ТекущаяДата()) - сл_НачалоРаботы;

Где сл_НачалоРаботы = это реквизит на форме, формата Дата. На данной строке вываливается такая ошибка:

{ВнешняяОбработка.ШедулерFTP.МодульОбъекта(11)}: Преобразование значения к типу Число не может быть выполнено
   ПрошлоВремениСНачалаЗапуска = ПрошлоВремениСНачалаЗапуска - сл_НачалоРаботы;

Хотя при проверке в Табло всех трех вычитаемых друг из друга выражений все они типа Дата, все вроде бы записаны верно. При этом если убрать третий член выражения:

   ПрошлоВремениСНачалаЗапуска = ТекущаяДата() - НачалоДня(ТекущаяДата()) - сл_НачалоРаботы;

то все работает нормально, вычитание происходит без запинки. В чем проблема, не подскажете?
1 Fragster
 
гуру
02.07.13
12:45
от числа нельзя дату отнимать
2 Fragster
 
гуру
02.07.13
12:45
а от даты число - можно
3 zak555
 
02.07.13
12:45
а так ?


ПрошлоВремениСНачалаЗапуска = ТекущаяДата() - (НачалоДня(ТекущаяДата()) - сл_НачалоРаботы);
4 bas28000
 
02.07.13
12:45
А, в смысле что при вычитании первого члена из второго получается уже не дата а число? Точно.
5 zak555
 
02.07.13
12:46
хотя результат будет не тот
6 anddro
 
02.07.13
12:50
ПрошлоВремениСНачалаЗапуска = ('00010101' + (ТекущаяДата() - НачалоДня(ТекущаяДата()))) - сл_НачалоРаботы;

1. Вычитаешь из даты дату - получаешь число.
2. Складываешь число с пустой датой - получаешь дату.
3. Вычитаешь из даты дату.
7 Fragster
 
гуру
02.07.13
12:54
а просто ПрошлоВремениСНачалаЗапуска  = ТекущаяДата() - сл_НачалоРаботы; не модно?
8 Godofsin
 
02.07.13
12:59
(7) +1. тоже не понял формулы из (0)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший