Имя: Пароль:
1C
 
Преобразование строки в дату. Вопрос избитый, но ничего не работает(((
, , ,
0 belka4_4
 
27.02.16
14:19
Есть список значений с типом дата. он программно заполняется и передаётся на форму в реквизит типа Список значений - тоже датой типизирован, состав даты - дата.
Проблема в преобразовании. Мне надо чтобы на форму возвращалась дата без времени.
Пробую так:
Список = Новый СписокЗначений;
Список.ТипЗначения = Новый ОписаниеТипов("Дата");
ДатаН = Формат(Дата,"ДФ = yyyyMMdd");
Список.Добавить(ДатаН);
ДатыСписок = Список;

Где Дата - реквизит формы типа дата
ДатыСписок - реквизит формы типа Список значений с типом дата.

На форме имеем список из пустых дат, что понятно, т.к. в реквизит передаю строку. Но если ДатаН преобразовать к типу дата с помощью Дата() - опять получаем дату со временем. Замкнутый круг(((
1 Провинциальный 1сник
 
27.02.16
14:24
Что за реквизит типа "Список значений" на форме, где вы его взяли? Тем более типизированный.
2 Garykom
 
гуру
27.02.16
14:24
В ваших консерваториях явно что то не то. Точнее не те, не тех и не тому учат...
3 Провинциальный 1сник
 
27.02.16
14:28
А, понял, имеется в виду "реквизит формы" а не "реквизит на форме". Там в типизации указывается, будет дата или датавремя.
4 belka4_4
 
27.02.16
14:29
(2)
1с нам не преподавали. Сама изучаю.
5 Провинциальный 1сник
 
27.02.16
14:31
(4) Вы тип значения объекта выбрали из выпадающего списка. Выберите из диалога. Там внизу будет "состав даты".
6 ДенисЧ
 
27.02.16
14:32
(2) Ты поосторожней, мало ли чему их там учат....
(4) https://www.youtube.com/watch?v=pssgsrrciOk
7 belka4_4
 
27.02.16
14:34
(3), (5)
Указан состав даты - дата. На самой форме в свойствах реквизита.
8 Провинциальный 1сник
 
27.02.16
14:38
(7) УМВР - ЧЯДНТ?
9 belka4_4
 
27.02.16
14:41
10 Провинциальный 1сник
 
27.02.16
14:41
А, вот оно чё, Михалыч. "Список = Новый СписокЗначений;" зря тут.
11 ДенисЧ
 
27.02.16
14:42
(8) она к тебе таки пришла...
12 belka4_4
 
27.02.16
14:43
(9)
картинка обрезалась
Но там стоит состав даты.
13 belka4_4
 
27.02.16
14:44
(10)
Этот список заполняется заново в зависимости от других реквизитов формы
14 Провинциальный 1сник
 
27.02.16
14:44
(12) Верю. См. (10) - не надо новый список создавать.
15 Провинциальный 1сник
 
27.02.16
14:45
(13) Метод Очистить().
16 Мэс33
 
27.02.16
14:46
[sarcasm]глючный одинэс[/sarcasm]
17 Провинциальный 1сник
 
27.02.16
14:49
(16) Вообще зря конечно платформа вообще это позволяет. Но это, я так понимаю, неизбежное зло, связанное с возможностью программно создавать реквизиты формы в коде.
18 belka4_4
 
27.02.16
15:02
(17) Убрала новый список значений. Оставила
ДатыСписок.Очистить();    
ДатыСписок.Добавить(Дата);
Всё равно время добавляется(
19 belka4_4
 
27.02.16
15:06
(18)
Если список открыть для редактирования - там всё ок, без дат. А вот на самой форме, где даты отображаются через ; там со временем. Это как-то исправляется?
20 Garykom
 
гуру
27.02.16
15:49
СписокЗначений (ValueList)
Добавить (Add)
Синтаксис:

Добавить(<Значение>, <Представление>, <Пометка>, <Картинка>)
Параметры:

<Значение> (необязательный)

Тип: Произвольный.
Значение, которое необходимо добавить.
<Представление> (необязательный)

Тип: Строка; ФорматированнаяСтрока.
Строковое выражение, содержащее представление добавляемого значения.
Значение по умолчанию: Пустая строка.
<Пометка> (необязательный)

Тип: Булево.
Определяет, создавать новое значение с установленной пометкой или без пометки.
Значение по умолчанию: Ложь.
<Картинка> (необязательный)

Тип: Картинка.
Визуальное представление значения.
Значение по умолчанию: Пустая картинка.
Возвращаемое значение:

Тип: ЭлементСпискаЗначений.

Описание:

Добавляет новый элемент в конец списка значений.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

Выборка = Справочники.ТипыЦен.Выбрать();
Пока Выборка.Следующий() Цикл
    СписокТиповЦен.Добавить(Выборка.Ссылка, Выборка.Наценка, Истина);
КонецЦикла;

ЗЫ "Представление"
21 belka4_4
 
27.02.16
16:25
(20). Спасибо. Думала, это в настройках формы надо искать.
22 belka4_4
 
27.02.16
16:28
(20)
Хотя для списка дат не работает(
23 Garykom
 
гуру
27.02.16
16:42
(22) ДатыСписок.Добавить(ТекДата, Формат(ТекДата, "ДЛФ=Д")); ?
24 ДенисЧ
 
27.02.16
16:48
Это особый, бездатый, список....
25 belka4_4
 
27.02.16
16:50
(23)
именно так и писала
26 belka4_4
 
27.02.16
16:54
(23)
ИначеЕсли Объект.ГрафикМероприятия = ПредопределенноеЗначение("Перечисление.ГрафикиМероприятий.Еженедельно") Тогда    
ТекДата = ДатаПервогоМероприятияИзСерии;
Пока ТекДата <= ДатаПоследнегоМероприятияИзСерии Цикл
ДатыСписок.Добавить(ТекДата, Формат(Дата, "ДЛФ=D"));
ТекДата = ТекДата + 7*24*3600;
КонецЦикла;
.........
КонецЕсли

Скрин:
http://pixs.ru/showimage/Bezimyanni_5794613_20869226.jpg
27 Garykom
 
гуру
27.02.16
16:54
(25) у вас какая то неправильная 1С... с неправильными списками...
28 belka4_4
 
27.02.16
16:56
(27) Печаль(
Вот для одной даты в списке всё прекрасно работает. И в отладчике когда прогоняю добавляется без времени в список. А отображается со временем.
29 Garykom
 
гуру
27.02.16
17:01
30 Провинциальный 1сник
 
27.02.16
17:22
(29) У вас в поле список не отображается, а у ТС отображается.
31 Провинциальный 1сник
 
27.02.16
17:23
+(30) То есть ТС нужно не поле выбора из списка, а поле отображения списка. С датами без времени.
32 belka4_4
 
27.02.16
17:24
(29)
Чтобы исключить косяки алгоритма создала тоже чистую обработку.
http://pixs.ru/showimage/Bezimyanni_1233001_20869529.jpg
http://pixs.ru/showimage/Bezimyanni_3893961_20869523.jpg
33 belka4_4
 
27.02.16
17:24
(31)
что-что надо поменять?
34 Записьдампа
 
27.02.16
17:30
(33) Бгг
Сделай реквизит формы типа Дата, выведи на форму связанный элемент, поставь у этого элемента режим ВыборИзСписка и добавляй значения в список выбора элемента.
35 Garykom
 
гуру
27.02.16
17:32
(34) моя про консерватории сразу написать...
36 ДенисЧ
 
27.02.16
17:45
А что, фото не будет? (((
37 Провинциальный 1сник
 
27.02.16
17:48
А может ТС надо именно видеть весь список сразу?
38 Записьдампа
 
27.02.16
17:50
(37) А чо она молчит?
39 Провинциальный 1сник
 
27.02.16
17:51
(38) Просто если ей именно надо чтобы список отображался в поле - то тут похоже реально баг, всегда отображается датавремя независимо от того, что указано в составе даты.
40 Garykom
 
гуру
27.02.16
17:52
(39) пофиг, можно же строка тип сделать и конвертить туды/сюды
41 Провинциальный 1сник
 
27.02.16
17:54
(40) Правильнее при добавлении в список даты задать явно представление через Формат. Тогда будет видно то, что захочешь.
42 Записьдампа
 
27.02.16
17:56
(41) +1
Дата = ТекущаяДата();
Реквизит1.Добавить(Дата, Формат(Дата, "ДФ=dd.MM.yyyy"));
Реквизит1.Добавить(Дата, Формат(Дата, "ДФ=dd.MM.yyyy"));
43 Записьдампа
 
27.02.16
17:57
Так и не увидим мы фотографии Алены Из Бреста...
44 Garykom
 
гуру
27.02.16
17:58
(41) Там немного не то и не тем делают.
Вместо "поле" пусть "таблица" кинет на форму от списка

но это глупость проще разными другими способами сделать то что нужно для интерфейса

ЗЫ ксати это не баг это фича такая что дата всегда полная отображается если реквизит типа СЗ на форму в виде "Поле" кинут
45 Записьдампа
 
27.02.16
17:59
(44) Нет. 8.3.7.1759 - представление. ЧЯДНТ?
46 Garykom
 
гуру
27.02.16
18:01
(45) ааа точно, можно же после добавления список то обработать с заменой представлений на нужные

зы зато Алёна еще и на C++ кодит, чудо просто ))
47 Garykom
 
гуру
27.02.16
18:06
(43) и кстати правильно делает :) от внешности все мониторы зафапают
тем более в профиле "есть друг"
48 belka4_4
 
27.02.16
18:08
(36), (43). Моё фото не несёт в себе никакой инфы, полезной для форумчан.
(41) - в посте (26) писала, что юзаю Формат
Да, надо чтобы на форме был список. Выводить в таблицу...Таблица много места будет занимать. А на форме и так куча всего. Конечно, красота, не главная. Заказчик вообще пока не знает, что для него что-то делают. Но хочется красоту навести.
(46)Интересно, откуда узнали. Но да, c++ - один из изучаемых ранее языков.
(46)Так оно в отладчике нормально добавляет. Это всё отображение.
49 Провинциальный 1сник
 
27.02.16
18:12
(48) "в посте (26) писала, что юзаю Формат "
А если вместо формата фигню строковую написать - что отобразит?
50 belka4_4
 
27.02.16
18:16
(49)
ДатыСписок.Добавить(ТекДата, "СТРОКААА");
В итоге список значений вместо определённого количества дат состоит из такого же количества СТРОКАААА", перечисленных через ;
51 Провинциальный 1сник
 
27.02.16
18:19
(50) Тогда выведи через Сообщить то, что формирует Формат. Чудес не бывает, в противоестественный интеллект 1с по анализу представления я не верю.
52 Провинциальный 1сник
 
27.02.16
18:21
Кстати в (26) ты добавляешь значение ТекДата, а представление форматом переменной Дата. Ошибка.
53 belka4_4
 
27.02.16
18:24
(52) - просто копипаст из разных кусков кода - несколько иначесли. Не заметила этого. сори. Но ошибка не в этом.
(51) - сообщение прилежно выводит как надо- без времени,через ;
54 belka4_4
 
27.02.16
18:26
(52)
Хотя нет. В коде в одном месте и правда не верное. Сейчас проверю
55 Garykom
 
гуру
27.02.16
18:26
(51) там недоделка у 1С легкая, что "состав даты" Дата|Время|Дата и время не учитывается при отображении в "Поле"
56 Провинциальный 1сник
 
27.02.16
18:27
(55) Если для элемента задано представление в списке - то пофиг должно быть.
57 Garykom
 
гуру
27.02.16
18:28
(56) так только вручную кодом это можно задать, через конфигуратор неа
58 belka4_4
 
27.02.16
18:35
Так. Мой косячище был в пресловутом копипасте. В одном месте не исправила переменную и так уж получилось, что тестила эту ветку иначеесли. Спасибо (52), что тыкнул пальцем.
Теперь всё, что заполняется в список программно, пишется нормально. Что руками- со временем.
59 Garykom
 
гуру
27.02.16
18:45
(58) после заполнения руками проходишься циклом и исправляешь как правильно
60 belka4_4
 
27.02.16
18:48
(59). Я это сделала вот так:
&НаКлиенте
Процедура ДатыСписокПриИзменении(Элемент)
Для Каждого Элемент Из ДатыСписок Цикл
Элемент.Представление = Формат(Элемент, "ДЛФ = D");
КонецЦикла;
КонецПроцедуры
61 belka4_4
 
27.02.16
18:59
С вопросом форматирования вроде всё. Первичный тестинг показал, что работает? как надо.
Спасибо всем большое за помощь начинающему 1Снику=)
P.S. Копипаст - зло=(
62 Записьдампа
 
27.02.16
19:01
(60) Формат надо от Элемент.Значение брать.
63 belka4_4
 
27.02.16
19:04
(62). Работа от этого не поменялась - всё так же пашет. Но если это более правильно, то спасибо
&НаКлиенте
Процедура ДатыСписокПриИзменении(Элемент)
Для Каждого Эл Из ДатыСписок Цикл
Эл.Представление = Формат(Эл.Значение, "ДЛФ = D");
КонецЦикла;
КонецПроцедуры
2 + 2 = 3.9999999999999999999999999999999...