Как передать значение Реквизита

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

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

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


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


Забыл НЕ поставить. Нужно в пустой артикул передать значение НомерПозиции
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. YannikAlx 43 25.03.19 10:59 Сейчас в теме
(1) Вы понимаете что пытаестесь отобрать элементы Справочника с пустым Артикулом и присвоить Артикулу значение ,
НО в этом коде Иначе меняет всю логику - вашим кодом вы пытаетесь у тех элементов , у кого НЕ пустой Артикул изменить его на НомерПозиции...

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


Это соответствует вашим желаниям?
2. noprogrammer 236 25.03.19 10:37 Сейчас в теме
Либо типы у реквизитов разные либо не заходит в "иначе". Строки проще проверять на ПустаяСтрока(Выборка.Артикул) а то вдруг там есть пробел и условие уже не сработает.
3. herfis 498 25.03.19 10:55 Сейчас в теме
Выдает какую-то ошибку? Не перебирает нужные позиции? Находит но не записывает?
Ты эти свои "не работает" пользователям оставь.
5. ImHunter 312 25.03.19 11:02 Сейчас в теме
А по-моему в коде присвоения значения косяк.
Идет присвоение:
        СпраОБ.Артикул= Выборка.НомерПозиции;

А в сигнальном сообщении уже другое выводится:
Сообщить("После " + Выборка.Артикул)

Т.е., в Выборке вроде как есть Артикул. Но почему-то присвоение происходит из другого поля.
8. Touh_Of_soul) 25.03.19 11:14 Сейчас в теме
(5)Выборка.Артикул= Выборка.НомерПозиции;

Так не работает пишет: Поле объекта недоступно для записи (Артикул)
9. ImHunter 312 25.03.19 11:22 Сейчас в теме
(8) В присвоении значения так наверн должно быть:
СпраОБ.Артикул = Выборка.Артикул;
11. Touh_Of_soul) 25.03.19 11:25 Сейчас в теме
(9)Мне нужно У Справочника
пустой Артикул заменить на НомерПозиции. так как в дальнейшим этот реквизит будет совсем удалён(НомерПозиции). Грубо привести его к типовому виду.
6. alalexmix 25 25.03.19 11:10 Сейчас в теме
Скорее всего не присваивает реквизиту "Артикул" значение "НомерПозиции", т.к. выполняется условие:

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

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


Забыл НЕ поставить. Нужно в пустой артикул передать значение НомерПозиции
10. YannikAlx 43 25.03.19 11:23 Сейчас в теме
(7) А нормально написать - воспитание не позволяет?
Нужно обязательно с извратом?

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


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


так он просто перебирает все значения, но Артикул как был пустым так и остаётся.
Выводить до и после пусто
13. YannikAlx 43 25.03.19 11:35 Сейчас в теме
(12) Вы менямете СпраОБ.Артику
А выводите почему-то Выборка.Артикул

Это нормально? Он конечно пустой
14. Touh_Of_soul) 25.03.19 12:04 Сейчас в теме
Всем спасибо разобрался, просто Не нужно было добавить, так как позиций около 700к . Проверил на чистой на 2-х позициях работает. Там есть где пустое значение НомерПозиции поэтому и сообщает пусто в отладке посмотрел.
15. YannikAlx 43 25.03.19 12:21 Сейчас в теме
(14) Да не НЕ добавить нужно было а ИНАЧЕ убрать.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)