Переименовывание файла Dbf

  • Автор темы any-oz
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

any-oz

Гость
#1
Создаю файл dbf, но так как есть ограничение на его длину в 8 символов (XBase), то приходится переименовывать, мне надо подставить единичку в начало файла:

КаталогВыгрузки = ПутьВывода+"\";
ФС.УстТекКаталог(КаталогВыгрузки);

Файл = ФС.НайтиПервыйФайл(ИмяФайла+".DBF");

Если ПустаяСтрока(Файл)=0 Тогда
Попытка
ФС.ПереименоватьФайл(Файл,"1"+Файл,1);
Исключение
Сообщить("Не удалось переименовать Файл выгрузки!");
КонецПопытки;
КонецЕсли;

Помогите, что я делаю не так?!
 
K

kaa

Гость
#5
<!--QuoteBegin-any-oz+6:12:2007, 16:15 -->
<span class="vbquote">(any-oz @ 6:12:2007, 16:15 )</span><!--QuoteEBegin-->Файл = ФС.НайтиПервыйФайл(ИмяФайла+".DBF");
[snapback]88629" rel="nofollow" target="_blank[/snapback]​
[/quote]

Наверника возвращает что-то типа C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf

<!--QuoteBegin-any-oz+6:12:2007, 16:15 -->
<span class="vbquote">(any-oz @ 6:12:2007, 16:15 )</span><!--QuoteEBegin-->ФС.ПереименоватьФайл(Файл,"1"+Файл,1);
[snapback]88629" rel="nofollow" target="_blank[/snapback]​
[/quote]
В итоге 1C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf - и ничеко небудет так как такого файла нет
Нужно вычлинить из файла Имя файла и каталог

ФС.ПереименоватьФайл(Файл,Каталог+"\1"+Файл,1);
 
A

any-oz

Гость
#6
Наверника возвращает что-то типа C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf
В итоге 1C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf - и ничеко небудет так как такого файла нет
Нужно вычлинить из файла Имя файла и каталог

ФС.ПереименоватьФайл(Файл,Каталог+"\1"+Файл,1);
Смотрю в Отладчике:
КаталогВыгрузки = "C:\Temp\"
ФС.УстТекКаталог(КаталогВыгрузки) = Ошибка в выражении!
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
ФС.ПереименоватьФайл(Файл,"1"+Файл,1) = Ошибка в выражении!
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#7
КомандаСистемы("move /y "+КаталогВыгрузки+ИмяФайла+" "+КаталогВыгрузки+"1"+ИмяФайла);
 

vbs

Well-Known Member
18.02.2007
1 708
3
#8
вот так
UnLoadDirectory = "E:\Transfer";
FS.SetCurrentDirectory(UnLoadDirectory);
FileName = "Avail.dbf";
File = FS.FindFirstFile(FileName);
FS.MoveFile(File,"1"+File,1);

или так
UnLoadDirectory = "E:\Transfer";
FS.SetCurrentDirectory(UnLoadDirectory);
FileName = "Avail*";
File = FS.FindFirstFile(FileName+".dbf");
FS.MoveFile(File,"1"+File,1);

точно работает
 

vbs

Well-Known Member
18.02.2007
1 708
3
#9
А что касается вот такой конструкции,
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
наверняка обусловлено тем, что имя файла превысило 8 символов,
вообще манера старых программистов не называть файлы русскими буквами и делать имя длиннее 8 символов (отрыжка DOS) далеко не плоха, не находите ?
 
K

kaa

Гость
#10
<!--QuoteBegin-any-oz+6:12:2007, 18:51 -->
<span class="vbquote">(any-oz @ 6:12:2007, 18:51 )</span><!--QuoteEBegin-->Смотрю в Отладчике:
КаталогВыгрузки = "C:\Temp\"
ФС.УстТекКаталог(КаталогВыгрузки) = Ошибка в выражении!
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
ФС.ПереименоватьФайл(Файл,"1"+Файл,1) = Ошибка в выражении!
[snapback]88666" rel="nofollow" target="_blank[/snapback]​
[/quote]


КаталогВыгрузки = "C:\Temp\"
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
ФС.ПереименоватьФайл(КаталогВыгрузки+"\"+Файл,"1"+Файл,1);
а так ?
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#11
А чем мой вариант плох? Принимаю любую критику ;)
 
J

jj_mail

Гость
#13
а файл с исходным именем вобще-то существует по указанному пути ?
 
K

kaa

Гость
#14
мля
Код:
//*******************************************
Процедура СоздатьФайл()
Если ПустоеЗначение(Каталог)=1 Тогда
Предупреждение("Не выбран каталог выгрузки!",20);
Возврат;
КонецЕсли;


ДБФ = СоздатьОбъект("XBase"); 
ДБФ.ДобавитьПоле("CODE", 1, 19, 3);
ДБФ.ДобавитьПоле("NAME", 2, 25, 0);	
ДБФ.СоздатьФайл(Каталог+"\mydb.dbf");
ДБФ.Записать();
ДБФ.ЗакрытьФайл();	
КонецПроцедуры
//******************************************************************************/
Процедура Переименовать()
ФС.УстТекКаталог(СокрЛП(Каталог));
Результат = ""; 
Результат = ФС.НайтиПервыйФайл("*.DBF*");
Если Результат<>"" Тогда
ФС.ПереименоватьФайл(СокрЛП(Каталог)+"\"+Результат,СокрЛП(Каталог)+"\1"+Результат,1);
КонецЕсли;
КонецПроцедуры
//******************************************************************************/
Процедура ПриНачалеВыбораЗначения(Элемент)
Если Элемент="Каталог" Тогда
Путь="";
Если ФС.ВыбратьКаталог(Путь,"Выберете каталог",20)=1 Тогда
Каталог=Путь;
КонецЕсли;
КонецЕсли;	 
КонецПроцедуры
ВСЕ РАБОТАЕТ!!!
 
A

any-oz

Гость
#15
мля
Код:
//*******************************************
Процедура СоздатьФайл()
Если ПустоеЗначение(Каталог)=1 Тогда
Предупреждение("Не выбран каталог выгрузки!",20);
Возврат;
КонецЕсли;


ДБФ = СоздатьОбъект("XBase"); 
ДБФ.ДобавитьПоле("CODE", 1, 19, 3);
ДБФ.ДобавитьПоле("NAME", 2, 25, 0);	
ДБФ.СоздатьФайл(Каталог+"\mydb.dbf");
ДБФ.Записать();
ДБФ.ЗакрытьФайл();	
КонецПроцедуры
//******************************************************************************/
Процедура Переименовать()
ФС.УстТекКаталог(СокрЛП(Каталог));
Результат = ""; 
Результат = ФС.НайтиПервыйФайл("*.DBF*");
Если Результат<>"" Тогда
ФС.ПереименоватьФайл(СокрЛП(Каталог)+"\"+Результат,СокрЛП(Каталог)+"\1"+Результат,1);
КонецЕсли;
КонецПроцедуры
//******************************************************************************/
Процедура ПриНачалеВыбораЗначения(Элемент)
Если Элемент="Каталог" Тогда
Путь="";
Если ФС.ВыбратьКаталог(Путь,"Выберете каталог",20)=1 Тогда
Каталог=Путь;
КонецЕсли;
КонецЕсли;	 
КонецПроцедуры
ВСЕ РАБОТАЕТ!!!
Всех благодарю!
Дело было в том, что перед переименованием я не закрывала файл dbf ;)
 
Статус
Закрыто для дальнейших ответов.