Справочник Производители - Ошибка при программном изменении

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Справочник Производители - Ошибка при программном изменении
 
Добрый день!
загрузил в Справочники.Производители - производителей.
Затем хочу программно изменить СтранаПроисхождения и получаю ошибку:
Цитата
"Поле объекта недоступно для записи (СтранаПроисхождения)"
Кусок кода:
Код
Выборка = Справочники.Производители.Выбрать();
Пока Выборка.Следующий() Цикл
     NewElement = Справочники.Производители.НайтиПоКоду(Выборка.Код);
     Если ПустаяСтрока(Выборка.СтранаПроисхождения) Тогда
          NewElement.СтранаПроисхождения = Справочники.КлассификаторСтранМира.НайтиПоКоду("840");
     КонецЕсли;
КонецЦикла;
...

Подскажите, пожалуйста, в чём может быть проблема?
 
В данном фрагменте кода NewElement не есть объект. Это ссылка на элемент справочника.
Должно быть так
NewElementСсылка = Справочники.Производители.НайтиПоКоду(Выборка.Код);
Если ПустаяСтрока(Выборка.СтранаПроисхождения) Тогда
  NewElementОбъект = NewElementСсылка.ПолучитьОбъект();
  NewElementОбъект.СтранаПроисхождения = Справочники.КлассификаторСтранМира.НайтиПоКоду("840");
КонецЕсли;
В коде есть еще одна потенциальная ошибка. НайтиПоКоду может и вовсе ничего не найти. Условие надо изменить следующим образом
Если (NewElementСсылка<>Неопределено) И (НЕ NewElementСсылка.ПустаяСсылка()) И (ПустаяСтрока(Выборка.СтранаПроисхождения)) Тогда
 
Цитата
Александр Яблочкин пишет:
В коде есть еще одна потенциальная ошибка. НайтиПоКоду может и вовсе ничего не найти. Условие надо изменить следующим образом
Если (NewElementСсылка<>Неопределено) И (НЕ NewElementСсылка.ПустаяСсылка()) И (ПустаяСтрока(Выборка.СтранаПроисхождения)) Тогда
1. Спасибо, заработало. + в конце добавить "NewElementОбъект.Записать();",чтобы изменения сохранились.
2. Не понимаю, почему НайтиПоКоду может и вовсе не найти ничего, если 1) элемент мы получаем в цикле по функции Выбрать - т.е. он есть в справочнике 2) поле Код вроде обязательное, т.е. должно точно быть.
 
Цитата
tugayenko пишет:
2. Не понимаю, почему НайтиПоКоду может и вовсе не найти ничего, если 1) элемент мы получаем в цикле по функции Выбрать - т.е. он есть в справочнике 2) поле Код вроде обязательное, т.е. должно точно быть.
То что Записать - это подразумевалось само собой.
Я же не вижу всего кода и соответственно мне неизвестен запрос и его результат. Поэтому и указал на то, что стоит добавить проверку по результатам поиска.
 
Цитата
Александр Яблочкин пишет:
То что Записать - это подразумевалось само собой.
Я же не вижу всего кода и соответственно мне неизвестен запрос и его результат. Поэтому и указал на то, что стоит добавить проверку по результатам поиска.
Я добавил "Записать", чтобы если кто-то будет просматривать ветку не забыл добавить в код запись объекта  ;), бо я лично забыл :)
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С