|
помогите разобратся с загрузкой из DBF | ☑ | ||
---|---|---|---|---|
0
rchervak
13.06.12
✎
15:54
|
Всем Здрасте!!!
Подскажите пожалуйста, есть у меня dbf файл с колонкой DATA. в колонке формат ячейки "Общий" внутри находится значение "26.02.2012" Вот только еще зеленый треугольник и если на него навести то увидиш сл. текст - "Текстовая дата с 2-значним годом" Та вот при загрузке файла в 1с ДБФ = Новый XBase; ДБФ.Кодировка = КодировкаXBase.OEM; ДБФ.ОткрытьФайл(ПутьКФайлуТоваров,,Ложь); Он его читает , вот только ДБФ.DATA = 01.01.0001.00.00.00 реально ли заставить 1С правильно прочитать файл? PS:предлагать переделать формат файла не предлагать, так и делаем, только файл реально оч. большой и таких будет дофени |
|||
1
acsent
13.06.12
✎
15:56
|
ну у тебя текст, а не дата, прелбразовывай
|
|||
2
rchervak
13.06.12
✎
15:58
|
(1) я бы с удовольствием, вот только как преобразовать?
после ДБФ.ОткрытьФайл(ПутьКФайлуТоваров,,Ложь); в табло ДБФ.DATA = 01.01.0001.00.00.00 после хоть запереобразовывайся, ничего не меняется. |
|||
3
rchervak
13.06.12
✎
15:58
|
нужно заставить как то 1С преобразовать в нужный формат при открытии... вот тока как?
|
|||
4
mikecool
13.06.12
✎
15:59
|
Дата() тебе в помощь
|
|||
5
Irek-kazan
13.06.12
✎
16:00
|
формат ячейки "Общий" а это случайно не про эксель речь?
|
|||
6
Hande hoch
13.06.12
✎
16:01
|
да он открыл dbf экселем
|
|||
7
rchervak
13.06.12
✎
16:01
|
(5)не, дбф. возможно из экселя сохранили в дбф
|
|||
8
rchervak
13.06.12
✎
16:02
|
(4) говорю же не кактит. после открытия его уже никак не исправиш
|
|||
9
mikecool
13.06.12
✎
16:04
|
(8) за 500р скажу как )))
|
|||
10
Mafoni
13.06.12
✎
16:04
|
когда читаеш строчку из дбф - то строковое значение в поле дата - какое ? - "26.02.2012" - ?
Если да то что тебе мешает преобразовать его в нормальную дату ? с помощью (4)!!!!! |
|||
11
shamannk
13.06.12
✎
16:04
|
выложи файлик
|
|||
12
Mafoni
13.06.12
✎
16:04
|
демпингую - за 450 р скажу как ! :)
|
|||
13
mikecool
13.06.12
✎
16:05
|
не мешайте мне делать бизнес, я же не торгую семками )))
|
|||
14
rchervak
13.06.12
✎
16:06
|
(9) ПопытаемсяПолучитьДату = ДАТА(ДБФ.ПолучитьЗначениеПоля("DATA"));
результат - 01.01.0001.00.00.00 |
|||
15
Reset
13.06.12
✎
16:06
|
Первая()
|
|||
16
Kreont
13.06.12
✎
16:06
|
(15) наверное угадал :)
|
|||
17
Mafoni
13.06.12
✎
16:07
|
(0) - и никгда - не открывай DBF - екселем - это же моветон !!!
|
|||
18
Mafoni
13.06.12
✎
16:08
|
(0) - Весь код покажи
|
|||
19
rchervak
13.06.12
✎
16:09
|
(15) - а что ПЕРВАЯ()?? она равна ИСТИНА
|
|||
20
hhhh
13.06.12
✎
16:09
|
(19) на первую запись перешел? Или хотя бы на вторую?
|
|||
21
Reset
13.06.12
✎
16:10
|
(19) сначала первая, потом (14)
|
|||
22
Mafoni
13.06.12
✎
16:10
|
(19) - блин покажи весь код как читаеш ДБФ файл или тут люди должны угадывать твой код ?
|
|||
23
Reset
13.06.12
✎
16:10
|
Потом, извиняюсь за капитанство, Следующая
|
|||
24
rchervak
13.06.12
✎
16:12
|
ну вот в кратце:
ДБФ = Новый XBase; ДБФ.Кодировка = КодировкаXBase.OEM; Попытка ДБФ.ОткрытьФайл(ПутьКФайлуТоваров,,Ложь); Исключение Сообщить("Ошибка открытия файла"); Возврат; КонецПопытки; Пока Истина Цикл ОбработкаПрерыванияПользователя(); НоваяСтрока = Таблица.Добавить(); НоваяСтрока.ДАТА =ДБФ.DATA; Если Не ДБФ.Следующая() Тогда Прервать КонецЕсли; КонецЦикла; |
|||
25
Mafoni
13.06.12
✎
16:13
|
(0) - кстати можеш еще версию дбф сказать ?
|
|||
26
rchervak
13.06.12
✎
16:14
|
(25) а где?
|
|||
27
rchervak
13.06.12
✎
16:15
|
где ее посмотреть?
|
|||
28
rchervak
13.06.12
✎
16:15
|
в свойствах файла нету.
|
|||
29
Mafoni
13.06.12
✎
16:16
|
ээээ батенька да вы гурман
xB.ОткрытьФайл("c:\test.dbf", "c:\test.cdx"); // Максимальное значение поля COST xB.Первая(); МаксСтоимость = 0 ; Пока Не xB.ВКонце() Цикл Если xB.COST > МаксСтоимость Тогда МаксСтоимость = xB.COST; КонецЕсли; xB.Следующая(); КонецЦикла; |
|||
30
Mafoni
13.06.12
✎
16:17
|
Если что - это справка из Синтаксис-Помошника.
|
|||
31
palpetrovich
13.06.12
✎
16:17
|
(24) мда уж :)
|
|||
32
Reset
13.06.12
✎
16:17
|
(24)
ДБФ = Новый XBase; ДБФ.Кодировка = КодировкаXBase.OEM; Попытка ДБФ.ОткрытьФайл(ПутьКФайлуТоваров,,Ложь); Исключение Сообщить("Ошибка открытия файла"); Возврат; КонецПопытки; ДБФ.Первая(); /// <----- Пока Не ДБВ.ВКонце() Цикл ОбработкаПрерыванияПользователя(); НоваяСтрока = Таблица.Добавить(); НоваяСтрока.ДАТА =Дата(ДБФ.DATA+" 00:00:00"); // <----- ДБФ.Следующая(); // <----- КонецЦикла; |
|||
33
Reset
13.06.12
✎
16:19
|
Возможно, потребуется СокрЛП(ДБФ.DATA)
|
|||
34
Mafoni
13.06.12
✎
16:21
|
(0) - как успехи ?
|
|||
35
rchervak
13.06.12
✎
16:27
|
что то никак.. {Форма.Форма.Форма(157)}: Преобразование значения к типу Дата не может быть выполнено
НоваяСтрока.Дата = Дата(СокрЛП(ДБФ.DATA)+" 00:00:00"); // |
|||
36
Reset
13.06.12
✎
16:28
|
(35) В ДБФ.DATA что?
|
|||
37
rchervak
13.06.12
✎
16:30
|
самое интересное что формат там уже и так "ДАТА" а мы его пытаемся преобразовать
|
|||
38
Reset
13.06.12
✎
16:30
|
Выполни
Сообщить(ДБФ.DATA); Сообщить(ТипЗнч(ДБФ.DATA)); |
|||
39
palpetrovich
13.06.12
✎
16:30
|
(36) смотри в отладчике
|
|||
40
Reset
13.06.12
✎
16:30
|
(37) Это не мы, это ты
Нам оно неизвестно, что у тебя там |
|||
41
rchervak
13.06.12
✎
16:30
|
(36) ДБФ.DATA = 01.01.0001.00.00.00 тип ДАТА
|
|||
42
palpetrovich
13.06.12
✎
16:30
|
(37) не мы, а вы ;)
|
|||
43
Kreont
13.06.12
✎
16:30
|
Сделай в таблице сразу колонку с типом дата, и прямо пиши из дбф без форматирований всяких
|
|||
44
Reset
13.06.12
✎
16:31
|
Просто присваивай тогда
|
|||
45
mikecool
13.06.12
✎
16:31
|
прикольная тема )
|
|||
46
Kreont
13.06.12
✎
16:31
|
(41) что опять? :)
|
|||
47
palpetrovich
13.06.12
✎
16:31
|
(41) а код из (32) или свой?
|
|||
48
rchervak
13.06.12
✎
16:32
|
из 32
|
|||
49
Mafoni
13.06.12
✎
16:33
|
(45) - не то слово.
|
|||
50
rchervak
13.06.12
✎
16:33
|
(38)
01.01.0001 0:00:00 Дата |
|||
51
shamannk
13.06.12
✎
16:36
|
выложи файлиГГГГГГГГГГГГГ
|
|||
52
Kreont
13.06.12
✎
16:37
|
Скопируй себе из
http://commerce.at.ua/publ/1-1-0-17 одну только ф-ю, делает полн.импорт дбф в ТЗ, и колонки под типы сама сделает нужные. Функция ДБФвТаблицюЗначень(ПовнийШляхЗІмям,Кодування) Странно что в книге знаний нету примера такой простой задачи, переведу ф-ю на рус.язык и добавлю :) |
|||
53
rchervak
13.06.12
✎
16:37
|
могу скрин пойдет?
|
|||
54
palpetrovich
13.06.12
✎
16:39
|
(53) файл жалко? что скрин даст-то?
|
|||
55
shamannk
13.06.12
✎
16:39
|
(53) Скрин чаго? файлика в папке? думаю со зрением у тебя в порядке и ты действительно видеш свою дату. нужен файлик
|
|||
56
rchervak
13.06.12
✎
16:42
|
ща. попрубую. выложить
|
|||
57
rchervak
13.06.12
✎
16:44
|
тут куда обычно выкладывают? на файлообменник пойдет?
|
|||
58
rchervak
13.06.12
✎
16:46
|
||||
59
0_Serg_0
13.06.12
✎
16:52
|
(32) правильно
НО если в ДБФ тип Дата - то не надо преобразховывать "НоваяСтрока.ДАТА =Дата(ДБФ.DATA+" 00:00:00"); " |
|||
60
rchervak
13.06.12
✎
16:56
|
(59) т.е.
НоваяСтрока.ДАТА =ДБФ.DATA+" 00:00:00"; ?? или НоваяСтрока.ДАТА =ДБФ.DATA; ??? ни в том ни в том случай в колонку не загружается дата. |
|||
61
palpetrovich
13.06.12
✎
16:57
|
(58) действительно есть трабл. поле DATA - типа дата, причем встречаюся даты за 2016, 2018 года ...что-то тут нечисто :)
|
|||
62
Reset
13.06.12
✎
16:59
|
Файл странный, да
|
|||
63
rchervak
13.06.12
✎
17:01
|
ну наверное прийдется сначала с файлом работатть, изменять на нужный формат, а потом уже загружать.. жаль..
|
|||
64
palpetrovich
13.06.12
✎
17:03
|
(63) в общем не парься, все равно даты левые :)
|
|||
65
rchervak
13.06.12
✎
17:03
|
все равно спасибо всем кто откликнулся..
|
|||
66
rchervak
13.06.12
✎
17:04
|
(64) почему левые? я открываю экселем - нормальные вполне.
|
|||
67
shamannk
13.06.12
✎
17:05
|
v8: Загрузить дату из DBF тут написанно как
|
|||
68
palpetrovich
13.06.12
✎
17:08
|
(66) я смотрю WinDBFview и вижу даты с годами 2024, 2030 и т.д.
|
|||
69
Mafoni
13.06.12
✎
17:12
|
Каталог = "D:\tmp\";// каталог базы
DBConn = Новый COMОбъект("ADODB.Connection"); ADOCommand = Новый COMОбъект("ADODB.Command"); // подключаемся к каталогу DBConn.Open("Provider=VFPOLEDB.1;Data Source=" + Каталог+ ";"); // обявляем публичную переменную ADOCommand.ActiveConnection = DBConn; ADOCommand.CommandText = "EXECSCRIPT('PUBLIC KLN_RPC')"; ADOCommand.Execute(); ADOCommand.CommandText = "EXECSCRIPT('KLN_RPC=10')"; ADOCommand.Execute(); // собственно само подключение к файлу и выборка DBFBase = DBConn.Execute("Select * from [HARDWARE.DBF]"); Count = 0; Пока НЕ DBFBase.EOF() Цикл Count = Count +1; Сообщить(Count); Для Каждого Поле из DBFBase.Fields Цикл Сообщить(Поле.Name + " - " + DBFBase.Fields(Поле.Name).Value); КонецЦикла; DBFBase.MoveNext(); КонецЦикла; |
|||
70
palpetrovich
13.06.12
✎
17:13
|
+(68) а DBFNavigator.exe показывает пустые значения в поле ДАТА
|
|||
71
mikecool
13.06.12
✎
17:14
|
вы все еще кипятите? (с) )))
|
|||
72
shamannk
13.06.12
✎
17:15
|
(68) Боязнь дат больше текущей?
|
|||
73
rchervak
13.06.12
✎
17:16
|
(68)(69) - ответ как мне кажется в (67) - действительно этот файл выгружают из 1с 7.7 - буду связыватся с програмистом - пущай исправляет выгрузку
|
|||
74
palpetrovich
13.06.12
✎
17:18
|
(72) не то что-бы, просто странноое поведение (68) и (70)
|
|||
75
rchervak
13.06.12
✎
17:20
|
(45)а тема действительно получилсь прикольной...
|
|||
76
Mafoni
13.06.12
✎
17:23
|
(75) - при выгрузке данных в дбф в поле дата - было не верно записано значение - очень на это похоже.
|
|||
77
Mafoni
13.06.12
✎
17:27
|
(75) - если с помощью любого редактора подправить дату во всех строках то код в (69) отрабатывает на ура.
|
|||
78
ukolabrother
13.06.12
✎
17:37
|
Каждая тема чтения из дбф - перл!
|
|||
79
Mafoni
13.06.12
✎
18:14
|
(78) - да тут дбф явно кривой :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |