работа с dbf файлами
04.07.2008
15:20
#1
"Здравствуйте! Мне необходимо перебросить справочник из EXCEL в 1с(в файл sc29.dbf).Я сохранила файл EXCEL в формате dbf 4 (файл 144.dbf). Затем пробовала построчно сбрасывать информацию из этого файла в файл sc29.dbf, но при открытии файла sc29.dbf дается сообщение, что необходимо прежде открыть файл.Тогда решила сбросить инф-ю из 144.dbf вначале в массив, а затем в файл sc29.dbf.Но дается сообщение
ДБФ.Последняя();
{E:\BASE\КПД1\EXTFORMS\DBF.ERT(25)}: Перед выполнением операции нужно открыть базу!
А при просмотре sc29.dbf в dbfview файл становится недоступным. Не понимаю,что происходит, почему не могу его открыть. Помогите,пожалуйста!С уважением,Татьяна.
Процедура Сформировать()
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("поле1");
ТЗ.НоваяКолонка("поле2");
ДБФ1=СоздатьОбъект("XBASE");
ПутьДБ="E:\BASE\КПД1" ;
ДБФ1.ОткрытьФайл("E:\BASE\КПД1\144.DBF");
ДБФ1.Первая();
Пока ДБФ1.ВКонце()=0 Цикл
ф1=ДБФ1.NAIM;
к=ДБФ1.KOEF;
ТЗ.НоваяСтрока();
ТЗ.поле1=Ф1;
ТЗ.поле2=К;
ДБФ1.Следующая();
КонецЦикла;
ДБФ1.ЗакрытьФайл(); //массив заполняется нормально
ДБФ=СоздатьОбъект("XBASE");
ДБФ.ОткрытьФайл("E:\BASE\КПД1\SC29.DBF");
I=1;
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()>0 Цикл
I=I+1;
ДБФ.Последняя(); //ругается, что файл не открыт
ДБФ.Добавить();
ДБФ.CODE=I;
ДБФ.SP32=ТЗ.поле1;
ДБФ.DESCR=ТЗ.поле1;
ДБФ.Записать();
КонецЦикла;
ДБФ.ЗакрытьФайл();
КонецПроцедуры
"
ДБФ.Последняя();
{E:\BASE\КПД1\EXTFORMS\DBF.ERT(25)}: Перед выполнением операции нужно открыть базу!
А при просмотре sc29.dbf в dbfview файл становится недоступным. Не понимаю,что происходит, почему не могу его открыть. Помогите,пожалуйста!С уважением,Татьяна.
Процедура Сформировать()
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("поле1");
ТЗ.НоваяКолонка("поле2");
ДБФ1=СоздатьОбъект("XBASE");
ПутьДБ="E:\BASE\КПД1" ;
ДБФ1.ОткрытьФайл("E:\BASE\КПД1\144.DBF");
ДБФ1.Первая();
Пока ДБФ1.ВКонце()=0 Цикл
ф1=ДБФ1.NAIM;
к=ДБФ1.KOEF;
ТЗ.НоваяСтрока();
ТЗ.поле1=Ф1;
ТЗ.поле2=К;
ДБФ1.Следующая();
КонецЦикла;
ДБФ1.ЗакрытьФайл(); //массив заполняется нормально
ДБФ=СоздатьОбъект("XBASE");
ДБФ.ОткрытьФайл("E:\BASE\КПД1\SC29.DBF");
I=1;
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()>0 Цикл
I=I+1;
ДБФ.Последняя(); //ругается, что файл не открыт
ДБФ.Добавить();
ДБФ.CODE=I;
ДБФ.SP32=ТЗ.поле1;
ДБФ.DESCR=ТЗ.поле1;
ДБФ.Записать();
КонецЦикла;
ДБФ.ЗакрытьФайл();
КонецПроцедуры
"
05.07.2008
16:59
#2
"Явно фоксом несет от Вас, милочка ))
Не очень понятно зачем такая переброска делается и судя по имени файла это справочник (можно порушить всю ссылочность таким кодом), и тем более есть универсальная оработка переноса из Ёкселя.
Но если сильно надо проще не через дбф, а через работу со Справочником перенос делать:
...
ДБФ1.ЗакрытьФайл(); //массив заполняется нормально, ну и ладненько, не спорю
// ДБФ=СоздатьОбъект("XBASE"); // Нафиг-Нафиг
// ДБФ.ОткрытьФайл("E:\BASE\КПД1\SC29.DBF");
// I=1;
ТЗ.ВыбратьСтроки();
СпрХ = СоздатьОбъект("Справочник.Такой-то");
Пока ТЗ.ПолучитьСтроку()>0 Цикл
СпрХ.Новый();
СпрX.Наименование = ТЗ.поле2;
...// Если есть другие поля, аналогично
СпрХ.Записать();
КонецЦикла;"
Не очень понятно зачем такая переброска делается и судя по имени файла это справочник (можно порушить всю ссылочность таким кодом), и тем более есть универсальная оработка переноса из Ёкселя.
Но если сильно надо проще не через дбф, а через работу со Справочником перенос делать:
...
ДБФ1.ЗакрытьФайл(); //массив заполняется нормально, ну и ладненько, не спорю
// ДБФ=СоздатьОбъект("XBASE"); // Нафиг-Нафиг
// ДБФ.ОткрытьФайл("E:\BASE\КПД1\SC29.DBF");
// I=1;
ТЗ.ВыбратьСтроки();
СпрХ = СоздатьОбъект("Справочник.Такой-то");
Пока ТЗ.ПолучитьСтроку()>0 Цикл
СпрХ.Новый();
СпрX.Наименование = ТЗ.поле2;
...// Если есть другие поля, аналогично
СпрХ.Записать();
КонецЦикла;"
06.07.2008
14:03
#3
По-моему, 1С:7.7 не поддерживает формат dbf4. Возьмите, что-нибудь подревнее
А писать на прямую в таблицы 1С, вообще-то не рекомендуется. Как вы интересно будете генерировать поле ID?
А писать на прямую в таблицы 1С, вообще-то не рекомендуется. Как вы интересно будете генерировать поле ID?
Читают тему
(гостей: 1)