![]() |
![]() |
![]() |
|
КД: Как загрузить в 8-ку дату дока СО ВРЕМЕНЕМ из 7.7? | ☑ | ||
---|---|---|---|---|
0
fisher
14.03.09
✎
18:43
|
Собсно, сабж.
С КД пока слабо знаком. И так и сяк пробовал - болт. Подскажите, кто сталкивался. |
|||
1
ТелепатБот
гуру
14.03.09
✎
18:43
|
||||
2
fisher
14.03.09
✎
18:45
|
Генерил на вход строковый литерал ГГГГММДДЧЧММСС - выдаёт ошибку преобразования XMLЗначение() при загрузке...
|
|||
3
Lama12
14.03.09
✎
18:46
|
(1) Писал в 7.7 специальную экспортную функцию в глобальном модуле.
|
|||
4
Айболитов
14.03.09
✎
18:51
|
может поможет
ПолучитьВремя(<?>,,) Синтаксис: ПолучитьВремя(<Часы>,<Минуты>,<Секунды>) Назначение: Прочитать время документа. Возвращает время документа в переданные для этого переменные <Часы>, <Минуты>, <Секунды>. Возвращает: Строковое значение времени записи документа в виде 'ЧЧ.ММ.СС'. Параметры: <Часы> - переменная для приема часа записи документа; <Минуты> - переменная для приема минут записи документа; <Секунды> - переменная для приема секунд записи документа. Замечание: Метод можно использовать только для объектов, созданных функцией СоздатьОбъект. |
|||
5
Айболитов
14.03.09
✎
18:51
|
Функция ПолучитьВремяДокументаЧислом(Док)
Перем Ч,М,С; Док.ПолучитьВремя(Ч,М,С); Возврат 3600*Ч+60*М+С; КонецФункции // ПолучитьВремяДокументаЧислом() |
|||
6
Айболитов
14.03.09
✎
18:52
|
ну и это строку передашь в 8, а там переконвертишь в нужный формат
|
|||
7
Иду
14.03.09
✎
19:02
|
Айболитов=банальный восьмерошный дебил.
(0) держи: Функция ПолучитьДатуВремя(ДатаОпр) //именно дата из семерки, формат не важен ДатаВремяОпр=""; Если (СтрДлина(СокрЛП(ДатаОпр))>10) Тогда ДатаОпр=Лев(ДатаОпр,10); КонецЕсли; Если СтрДлина(СокрЛП(ДатаОпр))=10 Тогда ДеньДаты=Лев(ДатаОпр,2); МесяцДаты=Сред(ДатаОпр,4,2); ГодДаты=Прав(СокрЛП(ДатаОпр),4); Попытка ДатаВремяОпр=Дата(ГодДаты+МесяцДаты+ДеньДаты+"000000"); Исключение Сообщить("Ошибка даты "+ДатаОпр); КонецПопытки; КонецЕсли; Если СтрДлина(СокрЛП(ДатаОпр))=8 Тогда ДеньДаты=Лев(ДатаОпр,2); МесяцДаты=Сред(ДатаОпр,4,2); ГодДаты="20"+Прав(СокрЛП(ДатаОпр),2); ДатаВремяОпр=Дата(ГодДаты+МесяцДаты+ДеньДаты+" 000000"); КонецЕсли; Возврат ДатаВремяОпр; КонецФункции |
|||
8
Айболитов
14.03.09
✎
19:04
|
(7) опух что ль?!?!?
|
|||
9
Лефмихалыч
14.03.09
✎
19:09
|
(7) тупой код - то же самое можно в пять строчек уложить МАКСИМУМ, а то и в две вообще. Кроме того, задачи (0) это не решает
|
|||
10
Иду
14.03.09
✎
19:12
|
(9) Шо не решает? я из своей переделки КД копи-паст и делал. максимум минимум = это вообще всяку дату в виде строки полученную в голимый формат 8*хы вертит. в ней-же.
|
|||
11
Лефмихалыч
14.03.09
✎
19:14
|
(10) у тебя на выходе начало ня всегда, а автору надо реальное время
|
|||
12
Лефмихалыч
14.03.09
✎
19:14
|
начало на = начало дня
|
|||
13
Лефмихалыч
14.03.09
✎
19:15
|
таёмаЁ!!!111одинодин
|
|||
14
Иду
14.03.09
✎
19:19
|
(13) Добрый вечер.
ну поменяй 000000 на любое из ЧЧММСС уверяю, точонадо и получится. |
|||
15
Лефмихалыч
14.03.09
✎
19:27
|
(2) как ты делаешь вот это загадочное: "Генерил на вход строковый литерал"
(14) терь я буду печатать медленно, по буквам, чтобы ты ни чего не пропустил: автору надо в восьмерке получить реальное время документов из семерки, а не у всех одинаковое. |
|||
16
Иду
14.03.09
✎
19:36
|
(15) мне, придурку, можно и по-буквам. токмо топикстартеру это = не поможет.
Или КД шкку переписать, чтобы методом, предложенным Айболитовым и иксэмэльку еще и время передавать. а оно ему точно надо? |
|||
17
Aleksey_3
14.03.09
✎
19:38
|
В КД есть встроенная функция
Функция ПолучитьДатуV8(ЧастьДата, ЧастьВремя = "00:00:00") Если ПустоеЗначение(ЧастьДата) = 1 Тогда Возврат "0001-01-01T" + ЧастьВремя; Иначе Возврат "" + ДатаГод(ЧастьДата) + "-" + Формат(ДатаМесяц(ЧастьДата),"Ч(0)2") + "-" + Формат(ДатаЧисло(ЧастьДата),"Ч(0)2") + "T" + ЧастьВремя; КонецЕсли; КонецФункции // ПолучитьДатуV8() |
|||
18
fisher
15.03.09
✎
13:55
|
Народ, вы вообще сабжи внимательно читаете? С элементарными навыками скриптописания я как бы знаком. Из 7.7 могу что угодно в любом виде куда угодно подсунуть. Вопрос куда и как, чтоб КД это схавала как надо.
Я делал так: источник данных в правиле конвертации не указывал - подсовывал таблицу значений. В поле "Дата" в правиле выгрузки генерил нужный строковый литерал, который восьмерка умеет неявно преобразовывать к дате/времени (ГГГГММДДЧЧММСС), в надежде что КД правильно интерпретирует этот пассаж. Но при загрузке КД выдаёт описанную мной ошибку. В связи с этим и вопрос - где и в каком формате в КД можно установить дату/время загружаемого документа? В каком событии? Думал, в "ПослеЗагрузки()" явно установить (если сначала обычным способом загрузить - без времени), но там уже к таблице-источнику нельзя обратиться... (17) О! Похоже на то что надо. Т.е. КД при загрузке хавает дату/время именно в этом формате? Завтра обязательно попробую. |
|||
19
fisher
15.03.09
✎
14:07
|
(17) А где вообще можно ознакомиться с перечнем и описанием встроенных функций КД?
|
|||
21
Defender aka LINN
15.03.09
✎
14:19
|
(19) Открываешь обработку конфигуратором и смотришь.
|
|||
22
Aleksey_3
15.03.09
✎
14:22
|
В ПКС в дате прописываешь
ЧастьДата=Источник.ДадаДок; ЧастьВремя=СтрЗаменить(ПолучитьВремя(Источник),".",":"); Значение=ПолучитьДатуV8(ЧастьДата, ЧастьВремя) Писал по памяти, мог где-то ошибиться. но смысл ты понял |
|||
24
fisher
15.03.09
✎
19:11
|
(22) По использованию у меня вопросов нет, спасибо. Просто не знал, что КД восьмерочную дату/время понимает в своём хитром формате. Получется что-то типа
ГГГГ-ММ-ДДTЧЧ:ММ:СС |
|||
25
rusrus
15.03.09
✎
19:38
|
Я понимаю, что не в тему, но (7) отжиг. Куча буков по перестановке слов, чтоб в итоге получить Формат(ДатаДок,"Д ГГГГММДД"). Матчасть надо учить
|
|||
26
fisher
16.03.09
✎
10:56
|
(17) Спасибо, всё получилось.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |