Имя: Пароль:
1C
1С v8
Не получается изменить ТЧ справочника: Поле объекта недоступно для записи
0 BoBaH
 
07.10.11
08:57
Только по голове не бейте!
Добрый день!

Платформа 8.2.14.537, конфигурация УПП 1.3.16.1.

Во внешней обработке пытаюсь изменить табличную часть Маршрут справочника ТехнологическиеКартыПроизводства (поле ТехнологическаяОперация):

ТехКарта: СправочникСсылка.ТехнологическиеКартыПроизводства.
НоваяТО: СправочникОбъект.ТехнологическиеОперации

[code]
1    Для Каждого ТочкаМаршрута Из ТехКарта.Маршрут Цикл
2        НоваяТО = СоздатьКопиюПоЭлементу(ТочкаМаршрута.ТехнологическаяОперация);
3        ТочкаМаршрута["ТехнологическаяОперация"] = НоваяТО.Ссылка;
4    КонецЦикла;
5    ТехКарта.Записать();
[/code]
В строке 3 ошибка: Поле объекта недоступно для записи. Пробовал и без квадратных скобок ТочкаМаршрута.ТехнологическаяОперация,не помогло :(
1 Rie
 
07.10.11
08:59
(0) А ТочкаМаршрута - это кто?
Сильно подозреваю, что это - ссылка.
2 Rie
 
07.10.11
09:00
+(1) Вернее, уже не подозреваю, а уверен - в (0) об этом явно сказано, то ТехКарта - это СправочникСсылка.
Получи объект и его меняй.
3 unregistered
 
07.10.11
09:00
ТекКарта - ссылка.
Ты сам об этом пишешь: "ТехКарта: СправочникСсылка.ТехнологическиеКартыПроизводства"

Для записи доступны только объекты, а не ссылки.
4 BoBaH
 
07.10.11
09:00
СправочникТабличнаяЧастьСтрока.ТехнологическиеКартыПроизводства.Маршрут
5 BoBaH
 
07.10.11
09:01
ТочкаМаршрута.ПолучитьОбъект(): метод объекта не обнаружен
6 Rie
 
07.10.11
09:02
(4) И что?

Маршрут = ТехКарта.Маршрут.ПолучитьОбъект();
Для каждого ТочкаМаршрута Из Маршрут Цикл
  // и тут меняй кого хочешь
7 Rie
 
07.10.11
09:03
(5) Разумеется. У строки ТЧ нет метода ПолучитьОбъект.
См. (6).
8 BoBaH
 
07.10.11
09:05
(6) ТехКарта.Маршрут.ПолучитьОбъект(): метод объекта не обнаружен
А вот ТехКарта.ПолучитьОбъект().Маршрут работает, пробую...
9 BoBaH
 
07.10.11
09:11
ТК = ТехКарта.ПолучитьОбъект();
ВесьМаршрут = ТК.Маршрут;
Для Каждого ТочкаМаршрута Из ВесьМаршрут Цикл
   НоваяТО = СоздатьКопиюПоЭлементу(ТочкаМаршрута.ТехнологическаяОперация);
   ТочкаМаршрута["ТехнологическаяОперация"] = НоваяТО.Ссылка;
КонецЦикла;
ТК.Записать();

Заработало, спасибо!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший