|
Кто не спит!Подскажите пжл с загрузкой 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
|
спасибо)сейчас попробую
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |