| 
    
            
         
         | 
    
  | 
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 
 | 
         
        Всем спасибо, тема закрыта. Разобрался)))     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |