Всем привет! Коллеги подскажите пожалуйста, есть независимый регистр сведений в котором надо отобрать к примеру первые 20 строк с проверкой на заполненность одного измерения, т.е. измерение должно быть не заполненным и в эти 20 строк в пустые измерения добавить данные которые мне нужны, по сути в запросе я выбираю нужные мне строки с этим проблем нет, как именно в этих строках которые я отобрал поменять значения в регистре?
---
навскидку:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 20
    | РегистрСведений1.Измерение1 КАК Измерение1,
    | РегистрСведений1.Измерение2 КАК Измерение2
    |ИЗ
    | РегистрСведений.РегистрСведений1 КАК РегистрСведений1
    |ГДЕ
    | РегистрСведений1.Измерение2 = ""
    |";

    РезультатЗапроса = Запрос.Выполнить();

    Если РезультатЗапроса.Пустой() Тогда
    Возврат;
    КонецЕсли;

    Выборка = РезультатЗапроса.Выбрать();

    НачатьТранзакцию();
    Попытка
    Пока Выборка.Следующий() Цикл
    Запись = РегистрыСведений.РегистрСведений1.СоздатьМенеджерЗаписи();
    Запись.Измерение1 = Выборка.Измерение1;
    Запись.Измерение2 = Выборка.Измерение2;
    Запись.Прочитать();
    Запись.Измерение2 = Выборка.Измерение1; // тут заполняете новыми нужными данными
    Запись.Записать();
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    Исключение
    ОтменитьТранзакцию();
    КонецПопытки;
```

В примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
---
Только менять все сразу, а не по 20.
---
А почему нельзя поменять?
---
SQL не сможет отделить зерна от плевел.
---
Прикольно, спасибо, буду думать что-то другое
---
```1c
    НаборЗаписей = РегистрыСведений.<ВАШРЕГИСТР>.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.<ВАШЕИЗМЕРЕНИЕ>.Значение = Неопределено; /// Либо другой отбор
    НаборЗаписей.Прочитать();
    Для каждого Запись Из НаборЗаписей Цикл
    Запись.<ВАШЕИЗМЕРЕНИЕ> = <ВАШЕЗНАЧЕНИЕ>;
    КонецЦикла;
    НаборЗаписей.Записать();
```
---
А где здесь 20 строк?
---
..........и получим ошибку несоответствия значения измерения отбору.
---
1. получили ВСЕ записи с пустым измерением
2. пробежались по списку, создавая менеджер записи, устанавливая нужное значение измерения и записали каждую запись
3. создали набор записей с отбором по пустому измерению и записали набор.
---
навскидку:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 20
    | РегистрСведений1.Измерение1 КАК Измерение1,
    | РегистрСведений1.Измерение2 КАК Измерение2
    |ИЗ
    | РегистрСведений.РегистрСведений1 КАК РегистрСведений1
    |ГДЕ
    | РегистрСведений1.Измерение2 = ""
    |";

    РезультатЗапроса = Запрос.Выполнить();

    Если РезультатЗапроса.Пустой() Тогда
    Возврат;
    КонецЕсли;

    Выборка = РезультатЗапроса.Выбрать();

    НачатьТранзакцию();
    Попытка
    Пока Выборка.Следующий() Цикл
    Запись = РегистрыСведений.РегистрСведений1.СоздатьМенеджерЗаписи();
    Запись.Измерение1 = Выборка.Измерение1;
    Запись.Измерение2 = Выборка.Измерение2;
    Запись.Прочитать();
    Запись.Измерение2 = Выборка.Измерение1; // тут заполняете новыми нужными данными
    Запись.Записать();
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    Исключение
    ОтменитьТранзакцию();
    КонецПопытки;
```

В примере Измерение2 тип Строка, по-этому проверка на заполненность - пустая строка.
---
Получилось, спасибо вам огромное!!!