|
|
СоздатьИндексныйФайл Неправильная информация |
☑ |
|
0
fdv_83
07.09.17
✎
20:01
|
Здравствуйте. Необходимо при помощи обработки создать dbf файл с одной индексированной колонкой для дальнейшего поиска информации по ней. Но в методе СоздатьИндексныйФайл выдается ошибка "Неправильная информация". Подскажите, пожалуйста, как можно решить эту проблему. Прилагаю код:
ПутьКФайлу = "D:\Kontr_1C.dbf";
ПутьКИндексу = "D:\Kontr_1C.cdx";
Файл = Новый Файл(ПутьКФайлу);
Если Не Файл.Существует() Тогда
ФайлDBFСинхронизацияКонтрагентов = Новый XBase();
ФайлDBFСинхронизацияКонтрагентов.АвтоСохранение = Истина;
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("Code","S",254);
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("Name","S",254);
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("UID_1C","S",254);
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("Name_1C","S",254);
ФайлDBFСинхронизацияКонтрагентов.СоздатьФайл(ПутьКФайлу,ПутьКИндексу);
ФайлDBFСинхронизацияКонтрагентов.Индексы.Добавить("IdxCode","Code",Истина);
ФайлИндекс = ФайлDBFСинхронизацияКонтрагентов.СоздатьИндексныйФайл(ПутьКИндексу);
Иначе
ФайлDBFСинхронизацияКонтрагентов = Новый XBase(ПутьКФайлу,ПутьКИндексу,Ложь);
КонецЕсли;
|
|
|
1
Остап Сулейманович
07.09.17
✎
20:14
|
(0) В моем СП прописана такая последовательность :
xB = Новый xBase;
xB.Поля.Добавить("CODE", "S", 5);
xB.Поля.Добавить("NAME", "S", 40);
// Добавим индекс по полю CODE:
xB.Индексы.Добавить("IDXCODE","CODE", Истина);
xB.СоздатьФайл("c:\test.dbf", "c:\test.cdx");
т. е. сначала "Индексы.Добавить" и только потом "СоздатьФайл"
|
|
|
2
kosts
07.09.17
✎
20:45
|
Проверь, возможно СоздатьИндексныйФайл() не нужен в данном случае.
Т.к. путь к индексу уже задается в СоздатьФайл(ПутьКФайлу,ПутьКИндексу)
|
|
|
3
fdv_83
08.09.17
✎
01:46
|
(1) (2) Написал так
ПутьКФайлу = "D:\Kontr_1C.dbf";
ПутьКИндексу = "D:\Kontr_1C.cdx";
Файл = Новый Файл(ПутьКФайлу);
Если Не Файл.Существует() Тогда
ФайлDBFСинхронизацияКонтрагентов = Новый XBase();
ФайлDBFСинхронизацияКонтрагентов.АвтоСохранение = Истина;
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("Code","S",254);
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("Name","S",254);
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("UID_1C","S",254);
ФайлDBFСинхронизацияКонтрагентов.Поля.Добавить("Name_1C","S",254);
ФайлDBFСинхронизацияКонтрагентов.Индексы.Добавить("IdxCode","Code",Истина);
ФайлDBFСинхронизацияКонтрагентов.СоздатьФайл(ПутьКФайлу,ПутьКИндексу);
//ФайлИндекс = ФайлDBFСинхронизацияКонтрагентов.СоздатьИндексныйФайл(ПутьКИндексу);
Иначе
ФайлDBFСинхронизацияКонтрагентов = Новый XBase(ПутьКФайлу,ПутьКИндексу,Ложь);
КонецЕсли;
То же самое пишет (неправильная информация) на строчке
ФайлDBFСинхронизацияКонтрагентов.СоздатьФайл(ПутьКФайлу,ПутьКИндексу);
Такое впечатление, что я как-будто нарушаю правила создания dbf файла, но не могу понять, что именно не так я делаю.
|
|
|
4
fdv_83
08.09.17
✎
01:59
|
Всем спасибо проблема решена. Дело было в недопустимой длине создаваемых полей (254), сделал 150, всё сработало
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший