8.х Проблема при чтении dbf

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sdyav, 6 фев 2009.

  1. TopicStarter Overlay
    Sdyav
    Offline

    Sdyav

    Регистрация:
    14 ноя 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Читаю dbf при помощи объекта XBase

    Код:
    XB = Новый XBase(Путь + "\t020.DBF");
    Если Не xB.Открыта() Тогда
    Предупреждение("Не удалось открыть t020.DBF!");
    Возврат;
    КонецЕсли;
    XB.Первая();
    Пока НЕ XB.ВКонце() Цикл
    НомерПутевогоЛиста = XB.ПолучитьЗначениеПоля("NPL");
    \\ и т.д.
    XB.Следующая();
    КонецЦикла;
    
    
    Процентов 99 записей читаются нормально. А некоторые по непонятной причине пропускаются.
    Например, есть 2 записи: 1)NPL=72359 ; 2)NPL=72596. Записи ничем друг от друга не отличаются
    кроме значений некоторых полей (точно не удаленные, проверял). Просматривал таблицу при помощи
    Borland SQL Explorer и при помощи Dbu.exe. Обе записи отображаются. А при чтении из 1С выше описанным способом первая запись пропускается, как будто ее просто нет. Может, кто сталкивался с похожей проблемой?
    Буду признателен за совет.
  2. TopicStarter Overlay
    Sdyav
    Offline

    Sdyav

    Регистрация:
    14 ноя 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Все. Разобрался. Тема закрыта.
    Если кому интересно, вот правильный код:

    Код:
    XB = Новый XBase(Путь + "t020.DBF");
    Если Не xB.Открыта() Тогда
    Предупреждение("Не удалось открыть t020.DBF!");
    Возврат;
    КонецЕсли;
    
    XB.индексы.Добавить("IDXNPL", "NPL");
    XB.СоздатьИндексныйФайл(Путь + "t020.CDX");
    XB.ТекущийИндекс = XB.индексы.IDXNPL;
    XB.Переиндексировать();
    
    XB.Первая();
    Пока НЕ XB.ВКонце() Цикл
    НомерПутевогоЛиста = XB.ПолучитьЗначениеПоля("NPL");
    XB.Следующая();
    КонецЦикла;
    
    
    
    

Поделиться этой страницей