|
|
|
Помогите, пожалуйста, с созданием файла DBF! | ☑ | ||
|---|---|---|---|---|
|
0
НевестаПрограмМИСТА
18.10.10
✎
10:05
|
Всем доброе утро! Помогите, пожалуйста!
Пытаюсь создать программно файл DBF. Делаю примерно следующее: ДБФ = Новый XBase(); ДБФ.поля.Добавить("A", "S", 30); ДБФ.поля.Добавить("B", "S", 30); ДБФ.поля.Добавить("C", "S", 30); ДБФ.поля.Добавить("D", "S", 30); ДБФ.поля.Добавить("E", "S", 30); ДБФ.поля.Добавить("F", "S", 30); ДБФ.поля.Добавить("G", "S", 30); ДБФ.АвтоСохранение = Истина; ИмяФайла = "b73056" + Прав(Основание.Номер, 2); ИмяФайлаБазы = "\\E:\Share\ВнешниеОбработкиДляКА\Электронный реестр Сбербанка\" + ИмяФайла + ".dbf"; ДБФ.СоздатьФайл(ИмяФайлаБазы); ДБФ.Кодировка = КодировкаXBase.OEM; ДБФ.АвтоСохранение = Истина; ДБФ.ОткрытьФайл(ИмяФайлаБазы); // 1-я строка ДБФ.Добавить(); ....... ДБФ.Записать(); ДБФ.ЗакрытьФайл(); Сообщить("Формирование DBF-файла завершено"); Сообщить("Путь к файлу: " + ИмяФайлаБазы); Выдает ошибку:{Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Добавить) ДБФ.Добавить(); по причине: Перед выполнением операции нужно открыть базу Я так понимаю, что не открывает, потому что не создает. Смотрю в обработчике при методах СоздатьФайл(), ОткрытьФайл() и Добавить() пишет: Обращение к процедуре к процедуре объекта как к функции. Находила на форумах подобные ошибки, но так и не разобралась. Помогите, пожалуйста. Заранее всем спасибо. |
|||
|
1
Ajbolitov
18.10.10
✎
10:15
|
попробуй убрать строчку
ДБФ.ОткрытьФайл(ИмяФайлаБазы); |
|||
|
2
НевестаПрограмМИСТА
18.10.10
✎
10:18
|
Убрала. Ничего не изменилось (((
|
|||
|
3
dragonIMV
18.10.10
✎
10:22
|
ФайлБТ.ОткрытьФайл("X:\CASHLOAD\PluCash1.dbf");
Если Не ФайлБТ.Открыта() Тогда ФайлБТ.СоздатьФайл("X:\CASHLOAD\PluCash1.dbf"); Иначе //ФайлБТ.ОчиститьФайл(); КонецЕсли; это кусок из обработки выгрузки на кассу...под рукой вот была... далее, кодировку указывал я после открытия/создания файла, и работает нормально это...да и автосохранение убрать после открытия надо |
|||
|
4
dragonIMV
18.10.10
✎
10:23
|
далее, имя файла не более 8 символов!!!!! для dbf
и все на латинице...кирилицу нельзя использовать |
|||
|
5
НевестаПрограмМИСТА
18.10.10
✎
10:23
|
(3) Спасибо. Сейчас попробую
|
|||
|
6
dragonIMV
18.10.10
✎
10:25
|
еще вопрос, выполняется на клиенте или на сервере?
сервер когда выполняет может не видеть доступ через сеть, есть там проблемы разные с этим... да и клиент не всегда видит доступ, попробую пока название файла локальное, на том же компе, где идет работа с 1Ской |
|||
|
7
НевестаПрограмМИСТА
18.10.10
✎
10:30
|
(6) пока всё на клиенте.
Попробовала (3) тоже самое: {Форма.Форма.Форма(40)}: Ошибка при вызове метода контекста (Добавить) ДБФ.Добавить(); по причине: Перед выполнением операции нужно открыть базу Для (4) там ровно 8 символов: латинская "b" и ещё 7 цифр |
|||
|
8
dragonIMV
18.10.10
✎
10:32
|
(7) в чем работаете вообще? что за платформа и конфигурация?
|
|||
|
9
НевестаПрограмМИСТА
18.10.10
✎
10:36
|
(8) Комплексная автоматизация (редакция 1.1)
|
|||
|
10
dragonIMV
18.10.10
✎
10:38
|
файл уже есть хоть какой то? проверьте в месте выгрузки, есть ли файл уже созданный с таким названием
|
|||
|
11
dragonIMV
18.10.10
✎
10:39
|
бывает ошибка такая, если файл есть созданный, но как то неправильно заполненный...либо файл dbf в этот момент открыт кем то (например в Excel)...
|
|||
|
12
НевестаПрограмМИСТА
18.10.10
✎
10:43
|
(10-11) дело в том, что файла созданного как раз и нет. Пробовала даже так: не создавала файл программно, а пыталась открыть уже готовый файл, не открывает, выдает ту же ошибку
|
|||
|
13
Salvador Limones
18.10.10
✎
10:44
|
(12) Путь менять пробовала, на локальный. Может с шарой проблемы?
|
|||
|
14
dragonIMV
18.10.10
✎
10:44
|
ошибка идет на "ДБФ.ОткрытьФайл(ИмяФайлаБазы);" ? (если смотреть пошагово)
|
|||
|
15
НевестаПрограмМИСТА
18.10.10
✎
10:46
|
(14) нет, на ДБФ.Добавить()
Ругается, что база не открыта |
|||
|
16
НевестаПрограмМИСТА
18.10.10
✎
10:48
|
+ (15) {Форма.Форма.Форма(41)}: Ошибка при вызове метода контекста (Добавить)
ДБФ.Добавить(); по причине: Перед выполнением операции нужно открыть базу |
|||
|
17
dragonIMV
18.10.10
✎
10:51
|
сделай так попробуй:
ДБФ = Новый XBase(); ДБФ.поля.Добавить("A", "S", 30); ДБФ.поля.Добавить("B", "S", 30); ДБФ.поля.Добавить("C", "S", 30); ДБФ.поля.Добавить("D", "S", 30); ДБФ.поля.Добавить("E", "S", 30); ДБФ.поля.Добавить("F", "S", 30); ДБФ.поля.Добавить("G", "S", 30); ИмяФайла = "b11111"; ИмяФайлаБазы = КаталогВременныхФайлов() + ИмяФайла + ".dbf"; ФайлБТ.ОткрытьФайл(ИмяФайлаБазы); Если Не ФайлБТ.Открыта() Тогда ФайлБТ.СоздатьФайл(ИмяФайлаБазы); КонецЕсли; ДБФ.Кодировка = КодировкаXBase.OEM; ДБФ.АвтоСохранение = Истина; // 1-я строка ДБФ.Добавить(); ....... ДБФ.Записать(); ДБФ.ЗакрытьФайл() |
|||
|
18
dragonIMV
18.10.10
✎
10:51
|
стоп...
первая строка не ДБФ = Новый XBase(); а ДБФ = Новый XBase; у меня без скобок работает все |
|||
|
19
НевестаПрограмМИСТА
18.10.10
✎
10:51
|
(17) сейчас попробую
|
|||
|
20
НевестаПрограмМИСТА
18.10.10
✎
10:52
|
(18) ок
|
|||
|
21
dragonIMV
18.10.10
✎
10:59
|
вот сейчас в 1С 8.1 УТ 10.3.6.8 сделал и все сработало, файл создался без ошибок:
ФайлБТ = Новый XBase(); ФайлБТ.поля.Добавить("A", "S", 30); ФайлБТ.поля.Добавить("B", "S", 30); ФайлБТ.поля.Добавить("C", "S", 30); ФайлБТ.поля.Добавить("D", "S", 30); ФайлБТ.поля.Добавить("E", "S", 30); ФайлБТ.поля.Добавить("F", "S", 30); ФайлБТ.поля.Добавить("G", "S", 30); ИмяФайла = "b11111"; ИмяФайлаБазы = КаталогВременныхФайлов() + ИмяФайла + ".dbf"; ФайлБТ.ОткрытьФайл(ИмяФайлаБазы); Если Не ФайлБТ.Открыта() Тогда ФайлБТ.СоздатьФайл(ИмяФайлаБазы); КонецЕсли; Если Не ФайлБТ.Открыта() Тогда Сообщить ("Нет доступа к серверу Crystal Set, проверьте соединение. Выгрузка цен не возможна! Выгрузку цен необходимо осуществить в ручном режиме."); Отказ=Истина; КонецЕсли; ФайлБТ.Кодировка = КодировкаXBase.OEM; ФайлБТ.АвтоСохранение = Истина; // 1-я строка ФайлБТ.Добавить(); ФайлБТ.A = "первый"; ФайлБТ.B = "второй"; ФайлБТ.C = "третий"; ФайлБТ.D = "четвертый"; ФайлБТ.Записать(); ФайлБТ.ЗакрытьФайл(); |
|||
|
22
НевестаПрограмМИСТА
18.10.10
✎
11:01
|
Ура!!! Создался! ))) Но почему-то не заполнился... может я его не через то, что надо смотрю... Через дэжавю можно смотреть?
|
|||
|
23
dragonIMV
18.10.10
✎
11:02
|
ФайлБТ.Добавить();
..... ФайлБТ.Записать(); это надо в цикле делать, при каждой новой строке... т.е. записывать файл после добавление каждой строки |
|||
|
24
dragonIMV
18.10.10
✎
11:09
|
если что, пиши в аську...если будут по dbf вопросы...
я сейчас на обед ушел)) |
|||
|
25
НевестаПрограмМИСТА
18.10.10
✎
11:11
|
(24) ок )))
|
|||
|
26
НевестаПрограмМИСТА
18.10.10
✎
11:41
|
У меня после каждого добавления строки стоит ДБФ.Записать().
Открываю через Дэжавю и ничего не вижу... По отладчику всё записывается |
|||
|
27
НевестаПрограмМИСТА
18.10.10
✎
12:41
|
огромное спасибо за помощь! У меня всё получилось )))
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |