Книга знаний

1С:Предприятие / Приемы программирования / Обмен данными, УРБД

Глюк XBase: Добавление записей и КоличествоЗаписей()

Автор статьи: kazam | Редакторы: Волшебник
Последняя редакция №5 от 26.04.06 | История
URL: http://kb.mista.ru/article.php?id=162

Ключевые слова: СоздатьФайл, ОткрытьФайл, КоличествоЗаписей, XBase


При использовании метода КоличествоЗаписей() после Добавить() и до Записать() для файлов, открытых с помощью ОткрытьФайл(), метод Записать() может не записать в БД ничего, при этом 1с не выдает никакой ошибки.

Пример:
1й вызов функции добавит запись, 2й - нет.

Функция СоздДБФ()
    ДБФ = СоздатьОбъект("XBase");
    
    ДБФ.ДобавитьПоле("N", 1, 10, );
    ДБФ.ДобавитьПоле("ID_b", 2, 70, );
    ДБФ.ДобавитьИндекс("IDX_N", "N", 1, 0,);
    ДБФ.ДобавитьИндекс("IDX_IDb", "ID_b", 0, 0,);
    ДБФ.КодоваяСтраница(КодировкаБД);
    Если ФС.СуществуетФайл(ПутьЭкспорта + ИмяДБФИД + ".dbf") = 0 Тогда
        ДБФ.СоздатьФайл(ПутьЭкспорта + ИмяДБФИД + ".dbf", ПутьЭкспорта + ИмяДБФИД + ".cdx");
    Иначе
        ДБФ.ОткрытьФайл(ПутьЭкспорта + ИмяДБФИД + ".dbf",, 0); 
        ДБФ.СоздатьИндексныйФайл(ПутьЭкспорта + ИмяДБФИД + ".cdx");
        ДБФ.Переиндексировать();
    КонецЕсли;
    
    ДБФ.Добавить();
    ДБФ.N = ДБФ.КоличествоЗаписей();
    ДБФ.Записать();
    ДБФ.ЗакрытьФайл();
    Возврат ДБФ.N;
КонецФункции


Подсказали на форуме:
Если заменить ... - будет работать © кто-то
    ДБФ.Добавить();
//    ДБФ.N = ДБФ.КоличествоЗаписей();
    ДБФ.N = ДБФ.КоличествоЗаписей()+1; 
    ДБФ.Записать();
    ДБФ.ЗакрытьФайл();


Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика