Имя: Пароль:
1C
1С v8
Кто не спит!Подскажите пжл с загрузкой dbf файлов!!
0 Taffy
 
03.07.12
00:14
Из папки загружаю все файлы ,названия которых заканчиваются на  d1 и d2.Проблема вот в чем:смотрю в отладчике ИмяФайла="290612d1.d",а должно быть "290612d1".где в коде ошиблась?подскажите,если не сложно.Спасибо

   КаталогФайла ="F:\ExportCRM on report"+Каталог+"\";
   МассивФайлов = НайтиФайлы(КаталогФайла,"*d?.dbf");
 

   Для каждого ФайлДБФ Из МассивФайлов Цикл
       ИмяФайла = ФайлДБФ.Имя;
       Если (Прав(ИмяФайла,1)) = "1" ИЛИ (Прав(ИмяФайла,1)) = "2" Тогда  
       ДБФ = Новый XBase;
       ДБФ.ОткрытьФайл(ПутьКФайлу);
       ДБФ.Кодировка=КодировкаXBase.OEM;
       ////Проверка на наличие записей
   Если ДБФ.КоличествоЗаписей() = 0 Тогда
       Сообщить("Файл данных пуст");
       ДБФ.ЗакрытьФайл();
       //Возврат                      

   КонецЕсли;
1 Smallrat
 
03.07.12
00:31
что-то с именами файлов не так ? код вроде рабочий. единственно что  ИмяФайла идет
с расширением и должно вернуться чтото типа "290612d1.dbf"
2 probably
 
03.07.12
00:36
Имяфайла случайно выше нигде не определяется, как строка определенной длины?
И это не Jet случаем?
3 Taffy
 
03.07.12
00:48
имя файла выше нигде не определяется.нужно определить?
4 Taffy
 
03.07.12
00:48
да.что то с именем файлов не так((
5 Taffy
 
03.07.12
00:49
"290612d1.d" возвращает
6 Aleksey
 
03.07.12
00:52
(5) ИмяФайла Это случайно не реквизит на форме? А то походу 10 символов похоже на строковый реквизит дефолтный
7 Taffy
 
03.07.12
00:56
да.реквизит))10 символов...тут похоже и исправить надо?да?
8 Агент Инфостарта
 
03.07.12
01:02
(7) Ну так исправьте. Для имени файла корректнее будет 255 символов или неограниченная строка.
9 Taffy
 
03.07.12
01:09
спасибо.
10 Taffy
 
03.07.12
01:13
Извините пожалуйста,есть еще вопрос,обработка не заходит в файлы,заканчивающиеся на n1 и n2((хотя должна
КаталогФайла ="F:\ExportCRM on report"+Каталог+"\";
   МассивФайлов = НайтиФайлы(КаталогФайла,"*n?.dbf");
 

   Для каждого ФайлДБФ Из МассивФайлов Цикл
       ИмяФайла = ФайлДБФ.Имя;
       Если (Прав(ИмяФайла,1)) = "1" ИЛИ (Прав(ИмяФайла,1)) = "2" Тогда  
       ДБФ = Новый XBase;
       ДБФ.ОткрытьФайл(ПутьКФайлу);
       ДБФ.Кодировка=КодировкаXBase.OEM;
       ////Проверка на наличие записей

   Если ДБФ.КоличествоЗаписей() = 0 Тогда
       Сообщить("Файл данных пуст");
       ДБФ.ЗакрытьФайл();
       //Возврат                      


   КонецЕсли;
           
           СпрНоменклатура=Справочники.Номенклатура;                      
       СпрВидыНоменклатуры=Справочники.ВидыНоменклатуры;
       СпрЕдиницыИзмерения=Справочники.КлассификаторЕдиницИзмерения;
       ДБФ.Первая();
       Пока Истина Цикл
           
       Код=СокрЛП(ДБФ.KOD);
   Если СпрНоменклатура.НайтиПоКоду(Код)=СпрНоменклатура.ПустаяСсылка() Тогда
       Номенклатура = СпрНоменклатура.СоздатьЭлемент();
       //Если ЗначениеЗаполнено(ДБФ.KOD) Тогда
       //Код=СокрЛП(ДБФ.KOD);
       //    Если Код Тогда
         Номенклатура.Наименование = СокрЛП(ДБФ.NAMEN);
       Номенклатура.Артикул = СокрЛП(ДБФ.ART);
       Номенклатура.ВидНоменклатуры = СпрВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(ДБФ.VID),Истина);
       Номенклатура.БазоваяЕдиницаИзмерения=СпрЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(ДБФ.ED),Истина);  
       Номенклатура.Код=Код;
       Номенклатура.Записать();
      КонецЕсли;

       Если Не ДБФ.Следующая()Тогда
           Прервать;
       КонецЕсли;
       КонецЦикла;
     КонецЕсли;
       КонецЦикла;
   //КонецЕсли;
   Сообщить ("Номенклатура выгружена!");
11 Aleksey
 
03.07.12
01:26
(10) Попробуй
ИмяФайла = СокрЛП(ФайлДБФ.Имя);


Вообщем я для начало бы проверил что возвращает Прав(ИмяФайла,1)
12 Taffy
 
03.07.12
01:47
действительно.возвращает букву "f".сейчас попробую.спасибо
13 kotletka
 
03.07.12
01:50
ПутьКФайлу =?
14 Taffy
 
03.07.12
01:52
путь к файлу-реквизит формы
15 Taffy
 
03.07.12
01:55
теперь возвращает n1,n2 ,а в файл не заходит((
16 Aleksey
 
03.07.12
01:59
(15) а счем сравниваешь?
17 Taffy
 
03.07.12
02:04
в отладчике смотрю.
18 Taffy
 
03.07.12
02:15
не поняла вопрос про с чем сравниваю.
19 Aleksey
 
03.07.12
02:34
(18) "теперь возвращает n1," А в сабже сравниваешь с "1"
20 osa1C
 
03.07.12
06:20
найди сначала в имени файла разделитель (.) точку и потом выбирай 1 или 2 слева от точки
21 Aleksey
 
03.07.12
15:05
(20) Зачем?
КонецФайла=Лев(Прав(ИмяФайла,5),1);

или

КонецФайла=Сред(ИмяФайла,СтрДлина(ИмяФайла)-4,1);
22 Aleksey
 
03.07.12
15:07
Ну или если без извращений заменить

ИмяФайла = ФайлДБФ.Имя;

на

ИмяФайла = ФайлДБФ.ИмяБезРасширения;



Файл.ИмяБезРасширения (File.BaseName)
Файл (File)
ИмяБезРасширения (BaseName)
Использование:

Только чтение.
Описание:

Тип: Строка.
Содержит имя файла (без расширения), с которым связан объект.
Пример: если Файл.ПолноеИмя = "c:\temp\test.txt", то Файл.ИмяБезРасширения = "test".

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
23 0_Serg_0
 
03.07.12
15:16
(15)
ПутьКФайлу = КаталогФайла  + ИмяФайла ;
ДБФ.ОткрытьФайл(ПутьКФайлу);
24 Taffy
 
03.07.12
17:08
спасибо)сейчас попробую