Имя: Пароль:
1C
1C 7.7
v7: Работа с датой
0 MagicFly
 
27.03.15
11:16
Доброго время суток! Есть следующая задача, если дата документа превышает 15 дней, то строка должна выделяться цветом в журнале.
Я прописываю следующую функцию для этого. Правильно ли я написал:
Функция Срок()
    Если ПустоеЗначение(ТекущийДокумент) = 0 Тогда
        ДатаОпределения=ТекущаяДата()-ТекущийДокумент.ДатаДок;
        Если ДатаОпределения>=15 Тогда
            Возврат "FONT["+ПолучитьЦвет(128,0,0)+"] BRUSH["+ПолучитьЦвет(252,148,184)+"]";
        КонецЕсли;
    КонецЕсли;
    Возврат "";
КонецФункции
1 DCKiller
 
27.03.15
11:20
Вот... Уже попробовать и посмотреть, что получится, самому лень. Сразу на мисту лезть.
2 MagicFly
 
27.03.15
11:22
Так пробовал, ничего результат нулевой((( (1)
3 StillEnough
 
27.03.15
11:26
//сделал бы так
если (ТекущаяДата() - ДатаДок) < (15 * 23 * 60 * 60 + 59 * 60) Тогда

//-

КонецЕсли;
4 Ёпрст
 
27.03.15
11:28
(3) наркоман шоле ?
Це же клюшки
5 Ёпрст
 
27.03.15
11:28
(2) новый план расскраски поди используешь, не ?
6 salvator
 
27.03.15
11:29
Лучше приводить к началу дня имхо
7 Web00001
 
27.03.15
11:30
(6) клюшки вроде не содержали времени в дате
8 smitru
 
27.03.15
11:31
(0) "ДатаОпределения=ТекущаяДата()-ТекущийДокумент.ДатаДок;"

А кто тебе сказал, что вычитанием ты получаешь именно дни?

Попробуй посмотреть отладчим что и как
9 salvator
 
27.03.15
11:31
(7) Ах, да. Как давно это было :))
10 MagicFly
 
27.03.15
11:33
А как получить дни?
11 salvator
 
27.03.15
11:34
(10) Дата документа позже текущей даты?
12 DCKiller
 
27.03.15
11:34
(2) ПолучитьЦвет() убери...
13 MagicFly
 
27.03.15
11:41
(12) в смысле ПолучитьЦвет() убрать?
14 MagicFly
 
27.03.15
11:43
(11) дата документа может быть равна текущей дате, может быть раньше текущей даты
15 salvator
 
27.03.15
11:43
(14) Отладчик что говорит? В условие заходит?
16 Масянька
 
27.03.15
11:43
(13) Вставь перед условием:
Сообщить("Дата - " + ДатаОпределения + " - " + ТипЗначениеСтр(ДатаОпределения));

Что выведет?
17 MagicFly
 
27.03.15
11:45
(16) выдает Неопознанный оператор
18 MagicFly
 
27.03.15
11:48
Вот работающий пример. Но в этом случае я использую флажок
Функция Отправка()
    Если ПустоеЗначение(ТекущийДокумент) = 0 Тогда
        Если ФлОтправить=1 Тогда
            Возврат "FONT["+ПолучитьЦвет(128,0,0)+"] BRUSH["+ПолучитьЦвет(156,237,165)+"]";
        КонецЕсли;
    КонецЕсли;
    Возврат "";
КонецФункции
19 DCKiller
 
27.03.15
11:48
(13) В прямом. Пусть будет не
"FONT["+ПолучитьЦвет(128,0,0)+"] BRUSH["+ПолучитьЦвет(252,148,184)+"]",

а так:

"FONT[128,0,0] BRUSH[252,148,184]"
20 MagicFly
 
27.03.15
11:49
(19) ничего!
21 DCKiller
 
27.03.15
11:49
(18) значит разность между датами получается как-то не так... ты в отладчике-то смотрел, что дает твое ТекущаяДата()-ТекущийДокумент.ДатаДок?
22 MagicFly
 
27.03.15
11:50
(21) ничего не дает, ноль эмоций
23 Масянька
 
27.03.15
11:52
(17) Теперь перед этим сообщить добавь:
Сообщить("тек - " + ТекущаяДата() + " - " + ТипЗначениеСтр(ТекущаяДата()) + " дата - " + ТекущийДокумент.ДатаДок + ТипЗначениеСтр(ТекущийДокумент.ДатаДок));
24 MagicFly
 
27.03.15
11:54
(23) не действует((
25 Масянька
 
27.03.15
11:56
(24) Что "не действует"? Выводит что?
26 MagicFly
 
27.03.15
11:58
ошибка в коде, ничего не выводит.
Сообщить("тек - " + ТекущаяДата() + " - " + ТипЗначениеСтр(ТекущаяДата()<<?>>) + " дата - " + ТекущийДокумент.ДатаДок + ТипЗначениеСтр(ТекущийДокумент.ДатаДок));
{Журнал.ПринятыеПриборы.Форма.ФормаСписка.Модуль(22)}: Неопознанный оператор
<<?>>КонецЕсли;
{Журнал.ПринятыеПриборы.Форма.ФормаСписка.Модуль(26)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')
КонецЕсли<<?>>;
{Журнал.ПринятыеПриборы.Форма.ФормаСписка.Модуль(26)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')
При проверке модуля обнаружены синтаксические ошибки
27 Масянька
 
27.03.15
12:00
(26) Покажи, как вставил.
28 MagicFly
 
27.03.15
12:06
(27) Функция Срок()
    Сообщить("тек - " + ТекущаяДата() + " - " + ТипЗначениеСтр(ТекущаяДата()) + " дата - " + ТекущийДокумент.ДатаДок + ТипЗначениеСтр(ТекущийДокумент.ДатаДок));
    Если ПустоеЗначение(ТекущийДокумент) = 0 Тогда
        ДатаОпределения=ТекущаяДата()-ТекущийДокумент.ДатаДок;
        Если ДатаОпределения>=15 Тогда
            Возврат "FONT[128,0,0] BRUSH[252,148,184]";
        КонецЕсли;
    КонецЕсли;
    Возврат "";
КонецФункции
29 Ёпрст
 
27.03.15
12:07
(18) зачет. Эта функция в этом же журнале на другой колонке ?
30 Ёпрст
 
27.03.15
12:07
(27) не надо тут порнографию устраивать
31 Масянька
 
27.03.15
12:09
(28) Блин... Сказала же: первое сообщить перед Если, второе - перед ним.
Вот это -
   Сообщить("тек - " + ТекущаяДата() + " - " + ТипЗначениеСтр(ТекущаяДата()) + " дата - " + ТекущийДокумент.ДатаДок + ТипЗначениеСтр(ТекущийДокумент.ДатаДок));
нужно поставить после -
    Если ПустоеЗначение(ТекущийДокумент) = 0 Тогда


PS Мужчины-программисты :)))))))
32 MagicFly
 
27.03.15
12:09
ставил, безрезультатно
33 Масянька
 
27.03.15
12:10
(32) "Безрезультатно" что? Сообщить что выводит?
34 MagicFly
 
27.03.15
12:15
так я написал выше, выдат ошибку, еще до открытия жунала
35 MagicFly
 
27.03.15
12:17
(29) в какую колонку нужно поставить мою функцию?
36 DCKiller
 
27.03.15
12:20
(35) А в какой она у тебя сейчас прописана?
37 Шапокляк
 
27.03.15
12:23
ТипЗначениЯСтр же!
38 MagicFly
 
27.03.15
12:24
так то по  идее надо бы ее поставить в дату, но там нельзя прописать функцию
39 Масянька
 
27.03.15
12:25
(37) Без разницы. Не доходит.
(38) А откуда ты выдрал работающий пример?
40 oslokot
 
27.03.15
12:28
а чо, у ТС отладчик не работает?
41 DCKiller
 
27.03.15
12:31
(39) Она по ходу у него в модуле формы прописана, а на форме лейбл, вызывающий ее, размещен :)
42 DCKiller
 
27.03.15
12:32
(38) "По идее" тебе надо создать в форме списка журнала текстовую колонку и туда в формулу ее запихнуть.
43 Масянька
 
27.03.15
12:33
(41) Я представляю (как должно быть). Я не представляю - как у ТС.
44 palpetrovich
 
27.03.15
12:35
ДатаОпределения= Число(ТекущаяДата()-ТекущийДокумент.ДатаДок)
45 MagicFly
 
27.03.15
12:36
Всем спасибо, тема закрыта. Разобрался)))