|
СоздатьИндексныйФайл Неправильная информация | ☑ | ||
---|---|---|---|---|
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, всё сработало
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |