ОБСУЖДЕНИЕ

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

14 ответов 9,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

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

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

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

Помогите, что я делаю не так?!
 
а какую ошибку выдает ?
 
убери попытку и посмотри, что пишет
 
<!--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);
 
Наверника возвращает что-то типа C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf
В итоге 1C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf - и ничеко небудет так как такого файла нет
Нужно вычлинить из файла Имя файла и каталог

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

Смотрю в Отладчике:
КаталогВыгрузки = "C:\Temp\"
ФС.УстТекКаталог(КаталогВыгрузки) = Ошибка в выражении!
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
ФС.ПереименоватьФайл(Файл,"1"+Файл,1) = Ошибка в выражении!
 
КомандаСистемы("move /y "+КаталогВыгрузки+ИмяФайла+" "+КаталогВыгрузки+"1"+ИмяФайла);
 
вот так
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);

точно работает
 
А что касается вот такой конструкции,
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
наверняка обусловлено тем, что имя файла превысило 8 символов,
вообще манера старых программистов не называть файлы русскими буквами и делать имя длиннее 8 символов (отрыжка DOS) далеко не плоха, не находите ?
 
<!--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);
а так ?
 
А чем мой вариант плох? Принимаю любую критику ;)
 
а файл с исходным именем вобще-то существует по указанному пути ?
 
мля
Код:
//*******************************************
Процедура СоздатьФайл()
Если ПустоеЗначение(Каталог)=1 Тогда
Предупреждение("Не выбран каталог выгрузки!",20);
Возврат;
КонецЕсли;


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

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


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

ВСЕ РАБОТАЕТ!!!
Всех благодарю!
Дело было в том, что перед переименованием я не закрывала файл dbf ;)
 
Статус
Закрыто для дальнейших ответов.