Доброго времени.
Есть последовательный ряд чисел. Например от 100 до 1000. Есть заполненные значения этого ряда, например 1,2,3, 5,6, 8,9
Необходимо заполнить значением первую незаполненную ячейку.
Если все заполненные, то заполнить следующую незаполненную (ну это в принципе не сложно, но всё же в совокупности всё равно не получается). Вроде бы логика понятна, но как реализовать.
---
В общем, может кому будет полезно:

```1c
    Функция...........................
    РезультатЗапроса = Запрос.Выполнить;
    Выборка = РезультатЗапроса.Выбрать;

    Выборка.Следующий;
    Счетчик = Выборка.НачалоДиапазона;

    Если Выборка.Код = 0 Тогда
    Объект.Код = Выборка.НачалоДиапазона;
    Иначе
    Выборка.Сбросить();

    Пока Выборка.Следующий() Цикл

    Если Счетчик = Выборка.Код Тогда
    Счетчик = Счетчик + 1;
    Продолжить;
    Иначе
    Объект.Код = Счетчик;
    Возврат Счетчик;
    КонецЕсли;

    КонецЦикла;
    Объект.Код = Счетчик;
    Возврат Счетчик;

    КонецЕсли

    КонецФункции
```
---
Собеседование? Пользуйте массив, перебирайте его циклом и проверяйте на ожидаемое значение. При необходимости - вставляйте новое значение.
---
Нет. Делаю задачу. Подсказать некому, сижу туплю.
Присваиваются коды документам в диапазоне. Каждый последующий на единицу больше. Но пользователь может присвоить и свой, ему понравившийся. Если снова присваивать автоматом, то надо, чтоб присваивался первый неприсвоенный в последовательности.
---
Для этого придумана автоматическая нумерация и нумераторы.
Но вы можете продолжать изобретать велосипед - ваше право.
---
Если бы всё так просто я бы не спрашивал.
---
Знаю, но не буду - старый я уже, чтобы учить плохому. А ты дерзай, хамло.
---
Тем более, проходи мимо, не дури голову и хами своим знакомым. Не бойся признаться, что не соображаешь. Дурик.
---
Если у вас реквизит Код числовой, то легко найти первый пропущенный Код в диапазоне, примерно таким запросом

```1c
    //это данные примера, код с пропусками
    выбрать 1 как Код поместить Таб
    объединить все Выбрать 2
    объединить все Выбрать 7
    объединить все Выбрать 4
    объединить все Выбрать 5
    ;
    //выбрать * из таб

    Выбрать
    Таб.Код,
    Таб.Код + 1 как ПропущенныйКод
    из
    Таб
    левое соединение Таб Таб2
    по Таб.Код + 1 = Таб2.Код

    где
    Таб2.Код есть Null

    упорядочить по
    Таб.Код
```

Если код строковый, то немного сложнее, надо сгенерить временную таблицу с непрерывной/правильной нумерацией и соединяться с ней
---
Код числовой. Я запросом получаю таблицу значений, в строках которой одно из полей есть код, значения которого в диапазоне от 500 до 599. Код в строках заполняется прибавлением числа 1 к наибольшему, но иногда пользователь заполняет его сам. Образуются незаполненные значения в последовательности. Их надо заполнять автоматом, если пользователь не заполняет их вручную.

Код наработки не могу выложить, т.к. рабочий пк без выхода в интернет.
---
В общем, может кому будет полезно:

```1c
    Функция...........................
    РезультатЗапроса = Запрос.Выполнить;
    Выборка = РезультатЗапроса.Выбрать;

    Выборка.Следующий;
    Счетчик = Выборка.НачалоДиапазона;

    Если Выборка.Код = 0 Тогда
    Объект.Код = Выборка.НачалоДиапазона;
    Иначе
    Выборка.Сбросить();

    Пока Выборка.Следующий() Цикл

    Если Счетчик = Выборка.Код Тогда
    Счетчик = Счетчик + 1;
    Продолжить;
    Иначе
    Объект.Код = Счетчик;
    Возврат Счетчик;
    КонецЕсли;

    КонецЦикла;
    Объект.Код = Счетчик;
    Возврат Счетчик;

    КонецЕсли

    КонецФункции
```