Имя: Пароль:
1C
1С v8
Вебклиент дата , в тонком клиенте работает все нормально.
0 SkillUp
 
09.01.20
14:43
Создал отчет, для тонкого и веблклиента. На ВебКлиенте при изменении ДатыНач и ДатаКон ошибка- "Преобразование к значению типу Дата не может быть выполнено". На тонком все работает отлично.

Не могу понять из-за чего? Кто с таким сталкивался?

Может на вебе надо формировать дату в другом формате?

Мой код: "РазобратьДату" (из строки получаю дату); Понимаю, что из-за этой функции идет ошибка (на вебе), а из-за чего не могу понять?

Функция РазобратьДату(ДатаСтрока);
    
    Возврат Дата(Сред(ДатаСтрока,7,4)+Сред(ДатаСтрока,4,2)+Сред(ДатаСтрока,0,2));
    
КонецФункции  

Помогите, если подобное было у вас. Уже не знаю что делать...
1 sqr4
 
09.01.20
14:45
Ну я бы через сообщить поглядел, что там в ДатаСтрока и что в итоге получилось, перед преобразованием в дату и от этого бы плясал
2 SkillUp
 
09.01.20
14:46
(1) Пробую...
3 SkillUp
 
09.01.20
14:51
(1) И в тонком и на вебе, одинаковые значения и типы. Но на вебе ошибка.
4 palsergeich
 
09.01.20
14:52
(3) незаполненная дата на тонком и веб клиенте - разные значения, я уже напарывался
5 palsergeich
 
09.01.20
14:54
(4) Предлагаю костыль
Если ДатаСтрока = "00010101" Тогда
возврат Неопределено;
КонецЕсли
Ну или можешь привести значение через соответствующий метод типа ОпиманиеТипов
6 SkillUp
 
09.01.20
14:54
(4) А можно чуть поподробней, пож.
7 SkillUp
 
09.01.20
14:55
(5) ааа, сейчас гляну у себя...
8 palsergeich
 
09.01.20
14:56
(6) Выведи эелемент типа дата на форму.
Сделай кнопку.
Оставь поле пустым и по кнопке добави секуду и выведи черезз сообщить.
Сравни то что выведется в тонком и веб клиенте
9 SkillUp
 
09.01.20
14:57
(8) Сейчас проверю...
10 SkillUp
 
09.01.20
14:57
(8) Полезная информация.
11 palsergeich
 
09.01.20
14:59
Но как я понял это касается только того что выведено в интерфейс.
Вне интерфейса вроде работает одинаково
12 НЕА123
 
09.01.20
15:14
 Возврат Дата(Сред(ДатаСтрока,7,4)+Сред(ДатаСтрока,4,2)+Сред(ДатаСтрока,0,2)+"000000")

или так

 Возврат Дата(0+Сред(ДатаСтрока,7,4),0+Сред(ДатаСтрока,4,2),0+Сред(ДатаСтрока,0,2))
13 palsergeich
 
09.01.20
15:19
Идею понял.
Может быть кстати, но обычно вариант в ТС работает
14 pechkin
 
09.01.20
15:24
а какой формат строки?
мне кажется проще по другому
15 pechkin
 
09.01.20
15:25
кстати ф-ция дата может принимать не только строку но и числа.
через них надежнее
16 novichok79
 
09.01.20
15:26
для начала надо знать версию платформы.
в веб-клиенте бывают неоднозначные ошибки. возможно в новой пофиксили уже.
17 novichok79
 
09.01.20
15:28
я бы разложил функцию на составляющие, чтобы найти место, где платформа падает

Год = Число(Сред(ДатаСтрока, 7, 4));
Месяц = Число(Сред(ДатаСтрока, 4, 2));
День = Число(Сред(ДатаСтрока, 0, 2));

Дата = Дата(Год, Месяц, День, 0, 0, 0);
18 SkillUp
 
09.01.20
15:34
(17) Спасибо, поробую!
19 SkillUp
 
09.01.20
15:35
(15) Как вариант, да.
20 НЕА123
 
09.01.20
15:37
(13)
согласно СП (0) не должно работать.
21 Skylark
 
09.01.20
15:53
Вызывает интерес, а зачем вообще эти преобразования?
Поле для ввода даты строкового типа что ли? Почему не типа дата?
22 SkillUp
 
09.01.20
16:01
(21) Вопрос в корень. А как по другому вытянуть значенние на которое изменили, допустим "ДатаНач" (на форме отчета).

Мой код:

&НаКлиенте
Процедура ДатаНачПриИзменении(Элемент)
    
    ДатаП = РазобратьДату(Элемент.ВыделенныйТекст);

Элемент.ВыделенныйТекст - Дата в строковом типе. Вот и преобразую из строки в дату.
23 НЕА123
 
09.01.20
16:02
еще и так (недокументированно)

Возврат Дата(ДатаСтрока+" 00:00:00");
24 НЕА123
 
09.01.20
16:03
(22)
это рождественская шутка?
25 SkillUp
 
09.01.20
16:04
(24) :)
26 pechkin
 
09.01.20
16:07
так у тебя просто текст не выделен, поэтому строка пустая и возникает ошибка
27 Skylark
 
09.01.20
16:09
(22) А что, в Элемент нет реквизита Значение или что-то в этом духе, которая будет иметь значение типа Дата?
Посмотри в отладчике, что там есть
28 SkillUp
 
09.01.20
16:10
(26) Пож., объясни не неопытному. Из-за чего "текст не выделен, поэтому строка пустая и возникает ошибка".
29 SkillUp
 
09.01.20
16:15
(26) При этом коде:

Сообщить(Элемент.ВыделенныйТекст+"!");
    ДатаП = РазобратьДату(Элемент.ВыделенныйТекст);

Сообщение 2 раза
1-ый раз - нормальная дата.
2-ой раз - Просто "!".

В тонком клиенте, одно сообщение, с нормальной датой...
30 SkillUp
 
09.01.20
16:15
(26) Скорей всего ты прав. Только не пойму переделать...
31 НЕА123
 
09.01.20
16:18
(30)
делай (27)


ну, если некошерно
Элемент.ТекстРедактирования.
32 SkillUp
 
09.01.20
16:19
(27) НЕТУ.
33 pechkin
 
09.01.20
16:19
зачем разбирать, когда можно напрямую смотреть значение реквизита
34 pechkin
 
09.01.20
16:19
ну у элемента нет значения, но реквизит то все равно есть
35 SkillUp
 
09.01.20
16:20
(31) Пробую через "Элемент.ТекстРедактирования"
36 Skylark
 
09.01.20
16:20
(32) А что в ЭтаФорма.Элементы.ДатаНач ?
37 Skylark
 
09.01.20
16:24
(36) Не, там тоже ПолеФормы
Ну тогда бери просто ДатаНач - там 100% выбранное значение будет, что ты городишь на пустом месте фигню какую-то
38 SkillUp
 
09.01.20
16:24
ВСЕ ЗАРАБОТАЛО!!! Через "Элемент.ТекстРедактирования" а не через "Элемент.ВыделенныйТекст", тут конечно не без моей вины. Уж не судите строго, опыта не хватает... Уже не помню, кто указал на мою ошибку. ВСЕМ ОГРОМНОЕ СПАСИБО ЕЩЕ РАЗ!!! Благодаря только вам и разобрался.
39 Skylark
 
09.01.20
16:29
(38) Это совершенно не нужный изврат, см (37)
40 SkillUp
 
09.01.20
16:51
(39) Спасибо, скорей всего ты прав, но "ДатаНач". Если хорошо помню, если брать просто "ДатаНач" там только старая (до изменения) дата. И все. Поэтому и пошел путем - Элемент.ТекстРедактирования. И преобразованием из строковой в даты в дату.
41 Сияющий в темноте
 
09.01.20
18:16
там есть такая история,что до окончания редактирования поля ввода значение в элементе редактирования отличается от того,которое пока еще записано в реквизите.
нужно просто завершить редактирование
или не использоват события этого же поля ввода.
42 Fragster
 
гуру
09.01.20
19:18
............................................________
....................................,.-'"...................``~.,
.............................,.-"..................................."-.,
.........................,/...............................................":,
.....................,?......................................................,
.................../...........................................................,}
................./......................................................,:`^`..}
.............../...................................................,:"........./
..............?.....__.........................................:`.........../
............./__.(....."~-,_..............................,:`........../
.........../(_...."~,_........"~,_....................,:`........_/
..........{.._$;_......"=,_......."-,_.......,.-~-,},.~";/....}
...........((.....*~_......."=-._......";,,./`..../"............../
...,,,___.`~,......"~.,....................`.....}............../
............(....`=-,,.......`........................(......;_,,-"
............/.`~,......`-...................................../
.............`~.*-,.....................................|,./.....,__
,,_..........}.>-._...................................|..............`=~-,
.....`=~-,__......`,.................................
...................`=~-,,.,...............................
................................`:,,...........................`..............__
.....................................`=-,...................,%`>--==``
........................................_..........._,-%.......`
...................................,
43 SkillUp
 
09.01.20
20:53
Это ..., блин, как стыдно.