Есть справочник у него есть
Реквизит НомерПозиции(данные) и Артикул (пустой)
Нужно из одного реквизита данные передать в другой.
так не работает.

```1c
    Выборка = Справочники.Автоработы.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
    Продолжить;
    КонецЕсли;
    СпраОБ=Выборка.Ссылка.ПолучитьОбъект();
    Если Выборка.Артикул=" Тогда
    Иначе
    Сообщить("До " + Выборка.Артикул);
    СпраОБ.Артикул= Выборка.НомерПозиции;
    КонецЕсли;
    Попытка
    СпраОБ.Записать();
    Сообщить("После " + Выборка.Артикул);
    Исключение
    КонецПопытки;
    КонецЦикла;
```
---
Вы понимаете что пытаестесь отобрать элементы Справочника с пустым Артикулом и присвоить Артикулу значение ,
НО в этом коде Иначе меняет всю логику - вашим кодом вы пытаетесь у тех элементов , у кого НЕ пустой Артикул изменить его на НомерПозиции...

Если Выборка.Артикул="" Тогда Иначе Сообщить("До " + Выборка.Артикул); СпраОБ.Артикул= Выборка.НомерПозиции; КонецЕсли;

Это соответствует вашим желаниям?
---
```1c
    Выборка = Справочники.Автоработы.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
    Продолжить;
    КонецЕсли;
    СпраОБ=Выборка.Ссылка.ПолучитьОбъект();
    Если не Выборка.Артикул=" Тогда
    Иначе
    Сообщить("До " + Выборка.Артикул);
    СпраОБ.Артикул= Выборка.НомерПозиции;
    КонецЕсли;
    Попытка
    СпраОБ.Записать();
    Сообщить("После " + Выборка.Артикул);
    Исключение
    КонецПопытки;
    КонецЦикла;
```

Забыл НЕ поставить. Нужно в пустой артикул передать значение НомерПозиции
---
Вы понимаете что пытаестесь отобрать элементы Справочника с пустым Артикулом и присвоить Артикулу значение ,
НО в этом коде Иначе меняет всю логику - вашим кодом вы пытаетесь у тех элементов , у кого НЕ пустой Артикул изменить его на НомерПозиции...

Если Выборка.Артикул="" Тогда Иначе Сообщить("До " + Выборка.Артикул); СпраОБ.Артикул= Выборка.НомерПозиции; КонецЕсли;

Это соответствует вашим желаниям?
---
Либо типы у реквизитов разные либо не заходит в "иначе". Строки проще проверять на ПустаяСтрока(Выборка.Артикул) а то вдруг там есть пробел и условие уже не сработает.
---
Выдает какую-то ошибку? Не перебирает нужные позиции? Находит но не записывает?
Ты эти свои "не работает" пользователям оставь.
---
А по-моему в коде присвоения значения косяк.
Идет присвоение:

```1c
    СпраОБ.Артикул= Выборка.НомерПозиции;
```

А в сигнальном сообщении уже другое выводится:

```1c
    Сообщить("После " + Выборка.Артикул)
```

Т.е., в Выборке вроде как есть Артикул. Но почему-то присвоение происходит из другого поля.
---
Выборка.Артикул= Выборка.НомерПозиции;

Так не работает пишет: Поле объекта недоступно для записи (Артикул)
---
В присвоении значения так наверн должно быть:

```1c
    СпраОБ.Артикул = Выборка.Артикул;
```
---
Мне нужно У Справочника
пустой Артикул заменить на НомерПозиции. так как в дальнейшим этот реквизит будет совсем удалён(НомерПозиции). Грубо привести его к типовому виду.
---
Скорее всего не присваивает реквизиту "Артикул" значение "НомерПозиции", т.к. выполняется условие:

Если Выборка.Артикул="" Тогда

"Артикул" пустой?!?!?
---
```1c
    Выборка = Справочники.Автоработы.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
    Продолжить;
    КонецЕсли;
    СпраОБ=Выборка.Ссылка.ПолучитьОбъект();
    Если не Выборка.Артикул=" Тогда
    Иначе
    Сообщить("До " + Выборка.Артикул);
    СпраОБ.Артикул= Выборка.НомерПозиции;
    КонецЕсли;
    Попытка
    СпраОБ.Записать();
    Сообщить("После " + Выборка.Артикул);
    Исключение
    КонецПопытки;
    КонецЦикла;
```

Забыл НЕ поставить. Нужно в пустой артикул передать значение НомерПозиции
---
А нормально написать - воспитание не позволяет?
Нужно обязательно с извратом?

Вот нормально

```1c
    Если Выборка.Артикул=" Тогда
    Сообщить("До " + Выборка.Артикул);
    СпраОБ.Артикул= Выборка.НомерПозиции;
    КонецЕсли;
```

Кроме того зачем сообщать Пустой Выборка.Артикул

```1c
    Если Выборка.Артикул=" Тогда
    СпраОБ.Артикул= Выборка.НомерПозиции;
    КонецЕсли;
```
---
Если Выборка.Артикул="" Тогда Сообщить("До " + Выборка.Артикул); СпраОБ.Артикул= Выборка.НомерПозиции; КонецЕсли;

так он просто перебирает все значения, но Артикул как был пустым так и остаётся.
Выводить до и после пусто
---
Вы менямете СпраОБ.Артику
А выводите почему-то Выборка.Артикул

Это нормально? Он конечно пустой
---
Всем спасибо разобрался, просто Не нужно было добавить, так как позиций около 700к . Проверил на чистой на 2-х позициях работает. Там есть где пустое значение НомерПозиции поэтому и сообщает пусто в отладке посмотрел.
---
Да не НЕ добавить нужно было а ИНАЧЕ убрать.