|
|
|
Длина имени файла превысила 8 символов! Есть решение? | ☑ | ||
|---|---|---|---|---|
|
0
Samir
16.03.10
✎
10:37
|
Загружаю электронную накладную DBF, но название 12 символов и соответственно ругается
Подскажите народ, есть ли решение данной проблемы? |
|||
|
1
Нуф-Нуф
16.03.10
✎
10:38
|
переименовать?
|
|||
|
2
povar
16.03.10
✎
10:39
|
(1) +1
|
|||
|
3
mikecool
16.03.10
✎
10:39
|
название меньше еще не предлагали?
|
|||
|
4
kiruha
16.03.10
✎
10:40
|
(1)+2
|
|||
|
5
Cthulhu
16.03.10
✎
10:41
|
сделать 8 символов.
делается так. 1) находишь нужный файл (символов сколько хочешь в имени); 2) копируешь его во временный файл с уникальным именем длиной меньще 9-ти символов; 3) грузишь их этого (п.2) файла данные; 4) удаляешь этот (п.2) временный файл. |
|||
|
6
Samir
16.03.10
✎
10:42
|
Трабла в том, что поставщик присылает 2 фала DBF:
transinvcust.dbf transinvcustspecs.dbf В них по 5-6 накладных. Нужно сначало открыть первую, поймать связку и после найденной связки открывать 2-ую и создавать документы. Переименовав, я не отличу 1 файл от второго. Ибо первые 8 символов у них одинковые. |
|||
|
7
hhhh
16.03.10
✎
10:43
|
(6) развеселил. Спасибо.
|
|||
|
8
vde69
16.03.10
✎
10:44
|
transinvcust.dbf = trans01.dbf
transinvcustspecs.dbf = trans02.dbf |
|||
|
9
Samir
16.03.10
✎
10:44
|
(7) обращайтесь
|
|||
|
10
Господин ПЖ
16.03.10
✎
10:45
|
(6) ds: отвердение мозга
|
|||
|
11
hhhh
16.03.10
✎
10:45
|
(9) переименуй в 1.dbf и 2.dbf
|
|||
|
12
Samir
16.03.10
✎
10:46
|
(11) Да понял я, спасибо. Просто думал мало-ли, мож нашли какое решение без переименовывания.
|
|||
|
13
Эльниньо
16.03.10
✎
10:46
|
ФС.ПереименоватьФайл("transinvcust.dbf", "st.dbf");
ФС.ПереименоватьФайл("transinvcustspecs.dbf", "stspecs.dbf"); |
|||
|
14
Противный
16.03.10
✎
10:47
|
(8) а если через "~" писать, как сокращенные имена DOS?
transinvcust.dbf = transi~1.dbf transinvcustspecs.dbf = transi~2.dbf |
|||
|
15
МихаилМ
16.03.10
✎
10:48
|
есть.
АтрибутыФайла(<ИмяФайла>,<РазмерФайла>,<АтрибутыФайла>,<ВремяСоздания>,<ВремяПоследнегоДоступа>,<ВремяПоследнейЗаписи>,<РасширенноеИмяФайла>) Назначение: Возвращает атрибуты файла (в параметрах). Параметры: <ИмяФайла> - строка с именем файла; <РазмерФайла> - переменная, принимающая размер файла в байтах; <АтрибутыФайла> - переменная, принимающая атрибуты файла; Возвращаемое строковое значение длиной 9 символов, в котором закодированы атрибуты файла. Символы могут принимать значения ''0'' или ''1'': первый символ: если ''1'' - файл только для чтения; второй символ: если ''1'' - скрытый файл; третий символ: если ''1'' - системный файл; четвертый символ: если ''1'' - каталог; пятый символ: если ''1'' - архивный файл; шестой символ: если ''1'' - обычный файл (все другие атрибуты не установлены); седьмой символ: если ''1'' - временный файл; восьмой символ: если ''1'' - файл, сжатый каким-либо архиватором; девятый символ: если ''1'' - нет доступа к файлу. <ВремяСоздания> - переменная, принимающая строку с датой и временем создания файла; <ВремяПоследнегоДоступа> - переменная, принимающая строку с датой и временем последнего доступа к файлу; <ВремяПоследнейЗаписи> - переменная, принимающая строку с датой и временем последней записи файла; <РасширенноеИмяФайла> - переменная, принимающая строку с полным именем файла. Подробнее см. в книгу ''1С:Предприятие 7.7. Описание встроенного языка. Часть 2'', глава 37 ''Работа с Файлами''. |
|||
|
16
Иду
16.03.10
✎
10:48
|
fso=СоздатьОбъект("Scripting.FileSystemObject");
База.ОткрытьФайл(fso.GetFile(ФайлДБФ).ShortPath,,0);//Это исчо лучче... (с) smaharbA |
|||
|
17
Samir
16.03.10
✎
10:55
|
(16) Чет не работает :(
|
|||
|
18
aka AMIGO
16.03.10
✎
10:59
|
||||
|
19
Samir
16.03.10
✎
12:40
|
Продолжаем тему, почему не перименовывет файл?
ФС.ПереименоватьФайл("transinvcust.dbf", "st.dbf"); ФС.ПереименоватьФайл("transinvcustspecs.dbf", "stspecs.dbf"); Первый раз переименовал, а повторно хоть ты тресни не хочет. Проходит весь код, но файлы не переименовывет. Код: ДБФ=СоздатьОбъект("XBase"); ИмяФайла="transinvcust.dbf"; ИмяПути="D:\Documents and Settings\Рабочий стол\invoice\"; ПутьДБ=ИмяПути+ИмяФайла; Если ФС.СуществуетФайл(ПутьДБ)=1 Тогда ФС.ПереименоватьФайл("transinvcust.dbf", "st.dbf",1); ФС.ПереименоватьФайл("transinvcustspecs.dbf", "stspecs.dbf",1); ИмяФайла="st.dbf"; ИмяФайла1="stspecs.dbf"; КонецЕсли; Если СтрДлина(ИмяФайла)>12 Тогда Предупреждение("Файлов загрузки не обнаружено!!!"); Возврат; КонецЕсли; ПутьДБ=""; ПутьДБ1=""; ПутьДБ=ИмяПути+ИмяФайла; ПутьДБ1=ИмяПути+ИмяФайла1; ДБФ.ОткрытьФайл(ПутьДБ); Если ДБФ.Открыта()=1 Тогда //Сообщить("Электронная накладная удачно открыта",1); Иначе Предупреждение("Неудачная попытка открытия электронной накладной !!!"); Возврат; КонецЕсли; ДБФ.Открыта()=0; Файлы не перименованы. Ниче не могу понять. |
|||
|
20
Cthulhu
16.03.10
✎
12:42
|
(19): см.(5)
|
|||
|
21
Samir
16.03.10
✎
12:44
|
(20) И сразу глупый вопрос, как копировать?
Вроде опять таки ФС.ПерименоватьФайл()? |
|||
|
22
Cthulhu
16.03.10
✎
12:51
|
(21): нет. читай СП.
|
|||
|
23
МихаилМ
16.03.10
✎
14:28
|
не мучайтесь
я Вам же в (15) написал |
|||
|
24
Cthulhu
16.03.10
✎
14:32
|
(23): ну, во-первых, ты написал фигню - точнее не фигню, а ответ не на тот вопрос.
а во-вторых, ещё в (5) подробно написано как решить задачу не изменяя исходные файлы (хотя и не разжё языка). |
|||
|
25
Гость2
16.03.10
✎
14:57
|
(6) Файлы DBF-V. Грузи драйверы от Фокс-Про последнего и будет тебе счастье.
|
|||
|
26
smaharbA
16.03.10
✎
14:58
|
(14) и чо будет ?
|
|||
|
27
Гость2
16.03.10
✎
15:02
|
//Открываем соединение
DBConn = CreateObject("ADODB.Connection"); DBConn.Open("Provider=vfpoledb;" + "Data Source=" + _КаталогФайла + "\Goscontract.dbf;" + "Mode=ReadWrite|Share Deny None;"+ "Collating Sequence=MACHINE;"+ "Password='';"); //Делаем выборку ФГК = DBConn.Execute("Select * from [Goscontract]"); Пока ФГК.EOF=0 Цикл //Цикл по записям DBF IDGK = ФГК.Fields("IDGK").value; NGK = ФГК.Fields("NGK").value; DT = ФГК.Fields("DT").value; DT_BEGIN= ФГК.Fields("DT_BEGIN").value; DT_END = ФГК.Fields("DT_END").value; TIPLG = ФГК.Fields("TIPLG").value; OWNER = ФГК.Fields("OWNER").value; COMMENT = ФГК.Fields("COMMENT").value; ABR = ФГК.Fields("ABR").value; ............................................ ФГК.MoveNext(); //Переходим к след. записи DBF КонецЦикла; // DBConn.Close(); //Закрываем соединение |
|||
|
28
Гость2
16.03.10
✎
15:05
|
+(27) Внимательно смотри формат даты.
|
|||
|
29
smaharbA
16.03.10
✎
16:15
|
|
|||
|
30
Гость2
16.03.10
✎
16:31
|
(29) А напрямую из dbf слабо?
|
|||
|
31
fez
16.03.10
✎
16:39
|
(19) Предварительно удаляй те файлы, в которые переименовываешь.
|
|||
|
32
smaharbA
16.03.10
✎
16:54
|
(30) а что в (29) разве иначе ?
|
|||
|
33
Арчибальд
16.03.10
✎
17:57
|
В методе ПереименоватьФайл() либо нужно указывать полные имена файлов, либо применить сначала УстТекКаталог()
|
|||
|
34
SaschaWild
16.03.10
✎
18:45
|
Решение в данном случае одно, переименовать файл, связано это только ограничение на длину имени, пришедшую с далеких времен.
|
|||
|
35
Гость2
16.03.10
✎
19:28
|
(34) -> (27)
|
|||
|
36
Ковычки
17.03.10
✎
01:01
|
(34) а можно поинтересоваться какое такое ограничение ?
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |