Доброго времени суток!Помогите разобраться.
Есть обработка, которая из dbf-файла заполняет документ "Изменение параметров начисления амортизации ОС". Заполняет она СПИ на максимальный по группе амортизации и стоимость для вычисления амортизации.

Проблема заключается в том, что данные из dbf грузятся почему-то через строчку.

```1c
    БД=Новый XBASE;
    БД.ОткрытьФайл(ПутьКФайлу);
    БД.Кодировка = КодировкаXBase.OEM;

    ИтСумма=0;
    номСтр=0;
    СпрОС = Справочники.ОсновныеСредства;
    ТекДок = Док.ПолучитьОбъект();
    Пока БД.Следующая() Цикл
    КодОС = СокрЛП(БД.KodOS);
    ОС = СпрОС.НайтиПоКоду(КодОС);
    Отбор = Новый Структура;
    Отбор.Вставить("ОсновноеСредство",ОС);
    Регистр = РегистрыСведений.ПараметрыАмортизацииОСБухгалтерскийУчет.ПолучитьПоследнее(ТекущаяДата(),(Отбор));
    Если ОС = СпрОС.ПустаяСсылка() Тогда
    Сообщить("Не найдено ОС по коду :"+КодОС);
    БД.Следующая();
    Продолжить;
    Иначе
    КонецЕсли;

    Если ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ПерваяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>24 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=24;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=24;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 24 месяца")
    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ВтораяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>36 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=36;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=36;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 36 месяцев")
    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ТретьяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>60 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=60;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=60;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 60 месяцев");
    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ЧетвертаяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>84 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=84;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=84;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 84 месяца")
    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ПятаяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>120 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=120;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=120;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 120 месяцев")
    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ШестаяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>180 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=180;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=180;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 180 месяцев");
    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.СедьмаяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>240 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=240;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=240;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 240 месяцев");
    КонецЕсли;

    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ВосьмаяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>300 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=300;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=300;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 300 месяцев");

    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ДевятаяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>360 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=360;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=360;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 360 месяцев");

    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ДесятаяГруппа Тогда
    Если Регистр.СрокПолезногоИспользования>600 Тогда
    Продолжить;
    Иначе
    СтрДок = ТекДок.ОС.Добавить();
    СтрДок.ОсновноеСредство = ОС;
    СтрДок.СрокПолезногоИспользованияБУ=600;
    СтрДок.СрокИспользованияДляВычисленияАмортизацииБУ=600;
    СтрДок.СтоимостьДляВычисленияАмортизацииБУ=БД.STOIMOST;
    Сообщить("Инв. №"+КодОС+"Текущий срок использования "+Регистр.СрокПолезногоИспользования);
    Сообщить("Максимальный срок полезного использования 600 месяцев");

    КонецЕсли;
    ИначеЕсли ОС.АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ОтдельнаяГруппа Тогда
    Продолжить;
    КонецЕсли;
    БД.Следующая();

    КонецЦикла;
    ТекДок.Записать();
    БД.ЗакрытьФайл();
```

Пример dbf прикрепил
---
english, Проблема заключается в том, что данные из dbf грузятся почему-то через строчку. Как же им не грузиться через строчку, если в коде понатыкано БД.Следующая() где надо и где не надо?

Если непонятно. то объясняю: каждое выполнение такой строчки приводит к переходу на следующую запись в DBF. И вот, перед КонецЦикла выполнили этот переход, вернулись к Пока ... Цикл - и что там прописано, а?

Короче, убирайте БД.Следующая() везде, кроме
```1c
    Пока БД.Следующая() Цикл
```
---
english, Проблема заключается в том, что данные из dbf грузятся почему-то через строчку. Как же им не грузиться через строчку, если в коде понатыкано БД.Следующая() где надо и где не надо?

Если непонятно. то объясняю: каждое выполнение такой строчки приводит к переходу на следующую запись в DBF. И вот, перед КонецЦикла выполнили этот переход, вернулись к Пока ... Цикл - и что там прописано, а?

Короче, убирайте БД.Следующая() везде, кроме
```1c
    Пока БД.Следующая() Цикл
```
---
Cooler, Спасибо огромное.Все получилось)
---
english, на всякий случай обращаю ваше внимание: вот отсюда

```1c
    Если ОС = СпрОС.ПустаяСсылка() Тогда
    Сообщить("Не найдено ОС по коду :"+КодОС);
    БД.Следующая();
    Продолжить;
    Иначе
    КонецЕсли;
```

БД.Следующая() тоже надо убрать, иначе при ненахождении ОС будет перепрыгивать через строчку по той же самой причине.

P.S. Да и Иначе тут ни к чему, ведь после него ничего нет.