Глюк XBase: Добавление записей и КоличествоЗаписей() Ключевые слова: СоздатьФайл, ОткрытьФайл, КоличествоЗаписей, 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;
ДБФ.Записать();
ДБФ.ЗакрытьФайл();
|