Имя: Пароль:
1C
1C 7.7
v7: 7.7 DBF Индексы, все сдаюсь
0 Zoeh
 
18.08.11
07:21
Выдает ошибку типа индекс не найден

Процедура ЗаполнитьТочки()
   СпТочки.УдалитьВсе();
   файл = папкаОбмена + "\ManOrgs.dbf";
   файлинд = папкаОбмена + "\ManOrgs.cdx";
   ДБФ = СоздатьОбъект("XBase");
   Если ФС.СуществуетФайл(файл) = 0 Тогда
       ДБФ.ДобавитьИндекс("IndMan","IDDMan",0,0,"");
       ДБФ.ДобавитьПоле("IDDMan",   "S", 40, 0);
       ДБФ.ДобавитьПоле("IDDOrg",   "S", 40, 0);
       
       ДБФ.СоздатьФайл(файл,файлинд);
       //ДБФ.СоздатьИндексныйФайл(файлинд);
       ДБФ.Переиндексировать();
   Иначе
       ДБФ.ОткрытьФайл(файл,файлинд,1);
       Если ПустоеЗначение(СпМенеджеры.ТекущаяСтрока())=0 Тогда
           Идент=ЗначениеВСтрокуВнутр(СпМенеджеры.ПолучитьЗначение(СпМенеджеры.ТекущаяСтрока()));
           
           
           
           ДБФ.ТекущийИндекс("IndMan");
           ДБФ.Ключ.IDDMan=СокрЛП(Идент);
           Если ДБФ.НайтиПоКлючу(0)=1 Тогда
               Пока ДБФ.ВКонце()=0 Цикл
                   Точ=ЗначениеИзСтрокиВнутр(СокрЛП(ДБФ.IDDOrg));
                   СпТочки.ДобавитьЗначение(Точ,ВернутьПолнНазвТочки(Точ));
                   ДБФ.Следующая();
               КонецЦикла;
           КонецЕсли;
           
           
       КонецЕсли;
       ДБФ.ЗакрытьФайл();
       
   КонецЕсли;
   
КонецПроцедуры
1 Zoeh
 
18.08.11
07:34
?
2 ЧеловекДуши
 
18.08.11
07:35
А индексировать, кто будет?
3 ЧеловекДуши
 
18.08.11
07:36
+ После переиндексации разве не надо закрыть файл?
4 Zoeh
 
18.08.11
07:38
ДБФ.Переиндексировать();
5 Zoeh
 
18.08.11
07:39
(3) Закрыл и толку 0
6 Zoeh
 
18.08.11
07:42
И записал и переиндексировал
7 Zoeh
 
18.08.11
07:42
ДБФ.ДобавитьИндекс("IndMan","IDDMan",0,0,"");
       ДБФ.ДобавитьПоле("IDDMan",   "S", 40, 0);
       ДБФ.ДобавитьПоле("IDDOrg",   "S", 40, 0);
       
       ДБФ.СоздатьФайл(файл,файлинд);
       //ДБФ.СоздатьИндексныйФайл(файлинд);
       ДБФ.Переиндексировать();
       ДБФ.Записать();
       ДБФ.ЗакрытьФайл();
8 smaharbA
 
18.08.11
07:48
Индексы они такие, их так просто не возьмешь - Индексы не сдаются !
9 Zoeh
 
18.08.11
07:52
Ну а как их победить то?
10 Zoeh
 
18.08.11
07:56
ДБФ.КоличествоИндексов() = 0
11 andrewks
 
18.08.11
08:07
на какой строчке выдаёт ошибку? полный текст ошибки?
12 Ёпрст
 
гуру
18.08.11
08:11
(0)
//ДБФ.ДобавитьИндекс("IndMan","IDDMan",0,0,"");
ДБФ.ДобавитьПоле("IDDMan",   "S", 40, 0);
ДБФ.ДобавитьИндекс("IndMan","IDDMan",0,0,"");
ДБФ.ДобавитьПоле("IDDOrg",   "S", 40, 0);
13 Ёпрст
 
гуру
18.08.11
08:12
и жалко, что XBase не ругается матом.. я б послал за создание индекса не у существующего поля.
14 andrewks
 
18.08.11
08:13
(13) кстати, да, интересно, почему в данном случае не генерится ошибка