работа с типом "date" (@ формула)

  • Автор темы 777DEN777
  • Дата начала
7

777DEN777

#1
Приветствую, подскажите пожалуйста по вопросу:
в представлении столбца введена формула
Код:
@Implode(ExDate;"*")
в результате получаем значение столбца:
27.04.2011*25.04.2011*26.04.2011*21.04.2011

формат даты верный

возникли случаи отображения формата следующего вида
08/21/2011 (08 месяц 21 число)

как корректно выполнить конвертацию даты в форат DD.MM.YYYY

или просто вместо даты ничего не показывать

Вариант не сработал (ОШИБКА: Неверный тип данных для оператора или @-функции: ожидался текстовый):
Код:
@Implode(@IfError(@ToTime(ExDate);"");"*")
 

Omh

Lotus team
04.07.2007
2 210
1
#3
ExDate в документах какой тип?
Как дата или как строка хранится?
 
13.03.2009
625
1
#4
как корректно выполнить конвертацию даты в форат DD.MM.YYYY
Интересно, почему никому не приходит в голову хранить числа в текстовых полях? Ну типа "1,237.12", "100 500,80". Свежо, необычно и держит в тонусе коллег по цеху...

У Вас поле ExDate текстовое...
Правильное решение - переделать его в Date/Time ( на форме и агентом во всех существующих документах ) и работать с датой, а не с текстом.
Парсить текст, преобразовывать в DateTime, форматировать этот DateTime к нужному виду - неправильное решение, т.к. это костыль для костыля. Устраните причину проблемы - исчезнет сама проблема.
P.S. В уголовный кодекс стоит внести ответственность за хранение даты в текстовом поле.
 
7

777DEN777

#7
Код:
@Implode(@IfError(@TextToTime(@Text(ExDate));"");"*")
ОШИБКА: Неверный тип данных для оператора или @функции: ожидался текстовый

ExDate в документах какой тип?
Как дата или как строка хранится?
см. вложенный файл

Интересно, почему никому не приходит в голову хранить числа в текстовых полях? Ну типа "1,237.12", "100 500,80". Свежо, необычно и держит в тонусе коллег по цеху...

У Вас поле ExDate текстовое...
Правильное решение - переделать его в Date/Time ( на форме и агентом во всех существующих документах ) и работать с датой, а не с текстом.
Парсить текст, преобразовывать в DateTime, форматировать этот DateTime к нужному виду - неправильное решение, т.к. это костыль для костыля. Устраните причину проблемы - исчезнет сама проблема.
P.S. В уголовный кодекс стоит внести ответственность за хранение даты в текстовом поле.
ребятам из InterTrust виднее,
для меня решение пока только с преобразованием
 

Вложения

  • 19.7 КБ Просмотры: 152
7

777DEN777

#9
ну как бы из картинки не следует, что поле текстовое... пустое поле лотус в любом случае сохранит как текст...
я бы для верности посмотрел на аналогичную картинку для непустого поля.
у пользователя который работал с документом в системе был установлен Английский (США) формат, от этого и поехало
 

Вложения

  • 22.2 КБ Просмотры: 145
  • 20.2 КБ Просмотры: 140

hosm

* so what *
18.05.2009
2 442
6
#10
Ну, если разработка чужая, то преобразовать в дату не получится.
тогда можно попробовать настроить у пользователя правильно формат дат, а документы отобрать во вьюху с отбором по @contains(ExDate; "/") или через поиск и дальше сконвертировать эти документы агентом типа такого:
@if(@contains(ExDate; "/");
Field ExDate :=
@transform(ExDate; "var";
@If(@contains(var;"/");@do(d3:=@explode(var; "/"); d3[2]+"."+d3[1]+"."+d3[3]); var));
@nothing)
к сожалению, не тестила код, писала сходу, но идея для замены формата должна быть понятна.
 

Omh

Lotus team
04.07.2007
2 210
1
#11
777DEN777
Пичааааль

Ты в этой базе можешь модифицировать код?

Надо избавляться от этого г. однозначно.
В крайнем случае, на сохранении продублировать данные в своё поле сохраняя их в правильном типе.
Хранить дату как string - верх ламерства.
 
13.03.2009
625
1
#12
вообще конечно жесть. "ребятам из InterTrust" пламенный привет...

рискну предположить:
судя по тому, что система нормально функциклирует на таких данных - данное поле тупо нигде не используется, либо используется только для отображения.
В противном случае это гамно где-нибудь вылезло. Ну не может система нормально работать, когда дата храница текстом, да еще и в произвольном формате.
Я бы ( ни секунды не сомневаясь :) ) перегнал пару документов в к нормальному DateTime и посмотрел пару дней на реакцию системы. Если криминала не обнаружится, перегнал бы все остальное. Ибо нех.
Если боязно, тогда по варианту Omh...

Оставшиеся два варианта:
- поправить american date format на нужный ( по примеру Oken ) и следить за локализацией всех клиентов
- обратиться в суппорт с вопросом "как жить дальше?"
 
7

777DEN777

#14
вопрос решен. :)
Большое спасибо всем за помощь,

особено kizarek то что надо, спасибо
 

Kizarek86

Lotus team
20.07.2007
864
4
#15
вопрос решен. i45.gif
Большое спасибо всем за помощь,

особено kizarek то что надо, спасибо
Совсем не факт что будут корректно преобразовываться даты других форматов, так что лучше делайте как советовали (поле должно быть типа Дата).

Будет месяц с днем местами изменены и пипка)
 
7

777DEN777

#16
Совсем не факт что будут корректно преобразовываться даты других форматов, так что лучше делайте как советовали (поле должно быть типа Дата).

Будет месяц с днем местами изменены и пипка)
это единичный случай, думаю в дальнейшем не должно быть проблем

к сожалению БД и разработки сторонней организации, доступ на изменения ограничен


не совсем понял насчет изменения местами месяца и дня. в скрине №2 такая ситуация 08/21/2011, но Ваш пример возвращает 21.08.2011.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#17
не совсем понял насчет изменения местами месяца и дня. в скрине №2 такая ситуация 08/21/2011, но Ваш пример возвращает 21.08.2011.
Это пока можно однозначно определить где месяц, а где число. Когда станет нельзя(08/09/2011), начнется веселье.
 

Anatoly

Lotus team
30.03.2007
222
0
#18
я не восторге от Интертрастовского OfficeMedia (а речь, похоже, о нем).
Но не надо их обвинять в том чего они не делали, рискуете подать им идею. :)
Вот описание поля ExDate из их шаблона
ExDate.JPG

Добавлено: Кстати, везде, где приходится сопровождать Office* и CompanyMedia от InterTrust - код открыт для сопровождения.
За исключением некоторых модулей.
 

Вложения

7

777DEN777

#19
я не восторге от Интертрастовского OfficeMedia (а речь, похоже, о нем).
Но не надо их обвинять в том чего они не делали, рискуете подать им идею. :)
Вот описание поля ExDate из их шаблона
Посмотреть вложение 4572

Добавлено: Кстати, везде, где приходится сопровождать Office* и CompanyMedia от InterTrust - код открыт для сопровождения.
За исключением некоторых модулей.
видимо мы говорим о разным БД (не буду указывать БД, это не имеет отношения к теме)
обвинения конкретно адресованные Интертраст в топике никто не указывал.
думаю такое решение результатом было необходимость разработчиков.
насчет риска )) бывает необходимость оперативного решения, в некоторых случаях касательно моего краткой консультацией, тем более это не ошибка системы, а собственная разработка в виде представления, думаю не стоит
 

hosm

* so what *
18.05.2009
2 442
6
#20
если
обвинения конкретно адресованные Интертраст в топике никто не указывал.
, то тогда стоит поаккуратней с фразами типа
можно обойтись без указания компании, тем более, что я не вижу представителей ИТ особо желающих отвечать на нашем форуме. как-то некорректно получается, имхо.
П.С. Я к ИТ отношения не имею, если что :)
ОФф:
Кстати, везде, где приходится сопровождать Office* и CompanyMedia от InterTrust - код открыт для сопровождения.
Код вроде и открыт, но лично я сталкивалась на запрет модификации элементов дизайна на проекте на базе СМ. Неудобно тем, что когда находят баги в твоей БД, но в "запретном" дизайне, то либо пишешь интересные вопросы, либо ищешь, как баг обойти - порой пишешь у себя "костыли", порой просто забиваешь :(