![]() |
![]() |
![]() |
|
Загрузить дату из DBF | ☑ | ||
---|---|---|---|---|
0
KUBIK
16.12.10
✎
20:46
|
Коллеги подскажите, как получить передать значение из поля DBF-файла с типом "Дата" и длиной поля 8?
WinDBFview показывает, что в поле есть значение: 03.02.2005 а при преобразовании в строку дает: 01.01.0001 0:00:00 |
|||
1
DrShad
16.12.10
✎
20:47
|
а тип поля в ДБФ какой?
|
|||
2
KUBIK
16.12.10
✎
20:47
|
(1) Дата
|
|||
3
DrShad
16.12.10
✎
20:47
|
и как в строку преобразовываешь? Формат() не предлагать?
|
|||
4
KUBIK
16.12.10
✎
20:48
|
(3) СтрДата=""+ДБФ.DATAVYD;
Форматом тоже пробовал :(( |
|||
5
Mnemonic1C
16.12.10
✎
20:49
|
Ну самый простой вариант добавить нули, а потом преобразовать к типу 'Дата', впринципе и в 7.7 она постоянно путает котлеты с мухами, особенно если дбф в разных форматах сохраняется
|
|||
6
KUBIK
16.12.10
✎
20:51
|
(5) "добавить нули" = не понял, пример кинь
|
|||
7
aleks-id
16.12.10
✎
20:51
|
СтрДата=Строка(ДБФ.DATAVYD);
|
|||
8
DrShad
16.12.10
✎
20:53
|
(7) ему из десяти нужно 8 так что без формат, только через извращения со строками
|
|||
9
Mnemonic1C
16.12.10
✎
20:54
|
Дат = СтрДата(Строка(ДБФ.DATAVYD)+" 0:00:00");
Как то так, по памяти, ща основном в 7.7 пишу, так что не смеятся если что:)) |
|||
10
aleks-id
16.12.10
✎
20:55
|
(8) тогда так:
СтрДата=СтрЗаменить(Строка(ДБФ.DATAVYD),".",""); |
|||
11
Mnemonic1C
16.12.10
✎
20:56
|
Дат = Дата(Строка(ДБФ.DATAVYD)+" 0:00:00");
|
|||
12
aleks-id
16.12.10
✎
20:56
|
или какие ему 8 то нужно не пойму???
|
|||
13
KUBIK
16.12.10
✎
20:57
|
(9) СтрДата() ??? = нет такой функции :(((
|
|||
14
Mnemonic1C
16.12.10
✎
20:58
|
А так (11)
|
|||
15
DrShad
16.12.10
✎
20:58
|
(12) сорр не так понял сабж, в ДБФ длина поля 8
|
|||
16
DrShad
16.12.10
✎
20:59
|
(13) Формат то чем не подошел?
|
|||
17
KUBIK
16.12.10
✎
21:02
|
Делал так:
Формат(ДБФ.DATAVYD,"ДЛФ=Д") на выходе "" |
|||
18
DrShad
16.12.10
✎
21:03
|
(17) поржал, пиши еще
пробовал один |
|||
19
KUBIK
16.12.10
✎
21:05
|
(18) :)))) просто туплю уже... битый час уже
|
|||
20
DrShad
16.12.10
✎
21:06
|
(19) а воспользоваться кончтруктором форматной строки религия не позволяет?
|
|||
21
KUBIK
16.12.10
✎
21:14
|
Конструктор фс не дал желаемого результата... :(((
|
|||
22
DrShad
16.12.10
✎
21:16
|
врешь!
|
|||
23
KUBIK
16.12.10
✎
21:22
|
(22) Формат(ДБФ.DATAVYD,"ДФ=dd.MM.yyyy") на выходе пустая строка
|
|||
24
KUBIK
16.12.10
✎
21:25
|
Сообщить(ТипЗнч(ДБФ.DATAVYD)); выдает: Дата (!!)
|
|||
25
aleks-id
16.12.10
✎
21:37
|
а чо выдает Сообщить(ДБФ.DATAVYD);
|
|||
26
KUBIK
17.12.10
✎
21:22
|
Выкрутился из положения: прочитал DBF через ADODB.
Только дата: 03.02.05 выдаётся как 03.02.1905 00:00:00 Как можно получить правильное столетие? |
|||
27
KUBIK
17.12.10
✎
23:28
|
никто не подскажет? (типа ап)
|
|||
28
EvgeniuXP
17.12.10
✎
23:49
|
(26) так ты ж сам писал 8 знаков тебе надо, а теперь столетие просишь.
|
|||
29
KUBIK
17.12.10
✎
23:53
|
(28) Не надо мне 8 знаков.
Надо просто получить из поля DBF типа "Дата" значение даты. Все попытки с XBase приводили к 01.01.0001 00:00:00 |
|||
30
EvgeniuXP
17.12.10
✎
23:57
|
(29) у DBF файла должна быть типизирована колонка (D), видимо тип у тебя не тот, т.к. проблем нет с датами при чтении/записи из/в dbf-файл.
|
|||
31
KUBIK
17.12.10
✎
23:57
|
+(28) 8 знаков = это длина поля DBF, тип "Дата"
|
|||
32
KUBIK
17.12.10
✎
23:59
|
(30) колонка типизирована (читаю с помощью WinDBFview) = DATAVYD, тип "Дата", длина поля 8
|
|||
33
KUBIK
18.12.10
✎
00:00
|
Может в этом проблема: файл DBF формируется в 7.7
|
|||
34
EvgeniuXP
18.12.10
✎
00:01
|
ДБФ.ДобавитьПоле("RASPER","D",8,0);
|
|||
35
EvgeniuXP
18.12.10
✎
00:02
|
(33) без разницы, проблем нет между 7.7 и 8.х связанные с датой - постоянно делаем обмен на работе.
|
|||
36
EvgeniuXP
18.12.10
✎
00:05
|
скорее всего сама колонка в DBF-файле у тебя не тип Дата - отсюда и проблемы - правь конфу в 7.7, укажи тип колонки при экспорте файла (см. (34)).
|
|||
37
KUBIK
18.12.10
✎
00:10
|
(35) Не кинешь кусок кода по чтению даты?
Щас глянул выгрузку из 7.7: ДБФ1=СоздатьОбъект("XBase"); ДБФ1.КодоваяСтраница(1); ............................ ДБФ1.ДобавитьПоле("DataVyd","D",,); ............................... ДБФ1.СоздатьФайл(ИмяФайла); Вроде все пучком |
|||
38
KUBIK
18.12.10
✎
00:13
|
Может надо так:
ДБФ1.ДобавитьПоле("DataVyd","D",8,0); а не ДБФ1.ДобавитьПоле("DataVyd","D",,); ? |
|||
39
KUBIK
18.12.10
✎
00:17
|
то бишь, явно прописать длину и точность?
Если так, то ляп кодера клиента |
|||
40
EvgeniuXP
18.12.10
✎
00:23
|
БД=Новый XBase;
БД.ОткрытьФайл(мФайлИмпорта); БД.Первая(); Пока НЕ БД.ВКонце() Цикл Если КонецМесяца(БД.RASPER)<КонецМесяца(БД.PERDEY) Тогда БД.Следующая(); Продолжить; КонецЕсли; // Создаем и проводим документ ПотериДляВыслуги: НовыйДокумент=Документы.ПотериДляВыслуги.СоздатьДокумент(); НовыйДокумент.Дата =КонецМесяца(БД.RASPER); НовыйДокумент.ДатаДействия =КонецМесяца(БД.PERDEY); НовыйДокумент.Записать(); БД.Следующая(); КонецЦикла; |
|||
41
EvgeniuXP
18.12.10
✎
00:23
|
(39) скорее всего в этом и причина, я всегда указывал.
|
|||
42
KUBIK
18.12.10
✎
00:26
|
(40) Спасибо.
Мой код: Данные.ОткрытьФайл(СокрЛП(ПромФайл.ПолноеИмя)); Данные.Кодировка=КодировкаXBase.OEM; Если НЕ Данные.Открыта() Тогда Сообщить("Ошибка открытия файла ""TOVARS.DBF""! Возможно файл открыт другой программой"); Возврат; КонецЕсли; КолЗаписей=Данные.КоличествоЗаписей(); Если КолЗаписей=0 Тогда Предупреждение(" Файл ""TOVARS.DBF"" не содержит ни одной записи! | Орбаботка прервана!",5); Возврат; Иначе НачатьТранзакцию(); Данные.Первая(); Пока Истина Цикл Состояние("Обработка номенклатуры..."); ОбработкаЗаписиDBF(Данные); Если НЕ Данные.Следующая() Тогда Прервать; КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); Данные.ЗакрытьФайл(); КонецЕсли; Сообщить("Обработан файл данных номенклатуры ""TOVARS.DBF"""); Иначе Предупреждение("Отсутствует файл данных номенклатуры ""TOVARS.DBF""! | Обработка загрузки прервана",5); Возврат; КонецЕсли; |
|||
43
KUBIK
18.12.10
✎
00:30
|
(41) Спасибо, щас на демке сбацаю.
(40) У меня в процедуре ОбработкаЗаписиDBF(Данные) почти тож самое, только заполнение реквизитов справочника |
|||
44
KUBIK
18.12.10
✎
00:34
|
:))) щас заметил свой ляп: | Орбаботка прервана!",5);
|
|||
45
KUBIK
18.12.10
✎
01:48
|
Как интересно:
Щас качнул и установил "Редактор DBF 1.75.1" снова открыл несчастный файл (сформированный в 7.7 с форматом даты поля: ("D",,) и... вижу в поле DATAVYD : 03.02.0005 (а WinDBFview показывал 03.02.05)!!! поменял 0005 на 2005. Загрузилось без проблем!!! Сформировал файл с явным указанием формата даты: все ОК Спасибо еще раз EvgeniuXP. Хотя сам наступал на энти грабли "дефолта": как-то клиент купил управляемый свитч DLink. "Хтото" ему типа "настроил и включил"... 1С и доступ к сети просто умирали. Пригласили, я посмотрел на состояние портов Link Speed: а там везде Default (mnfrd settings). Поставил 100FD и все пучком пошло. Резюме всем: указывайте формат даты поля DBF явно! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |