- В этой теме 1 ответ, 2 участника, последнее обновление 2 недели, 6 дней назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как изменить недоступный для записи реквизит (ЦенаБезНДС) в 1С?
нет первый вариант {Справочник.УслугиТранспорта.Форма.ФормаСписка.Форма(8)}: Поле объекта недоступно для записи (ЦенаБезНДС)
Выборка.ЦенаБезНДС = 0;
Ошибка «Поле объекта недоступно для записи (ЦенаБезНДС)» возникает, потому что выборка из справочника — это объект только для чтения, и напрямую менять её реквизиты нельзя. Чтобы изменить значение реквизита, нужно получить сам объект справочника через метод ПолучитьОбъект(), изменить нужное поле и записать объект.
В вашем случае правильный подход такой:
1. Получить объект справочника по ссылке из выборки.
2. Изменить реквизит объекта.
3. Записать объект.
Пример кода:
|
1 2 3 4 5 6 7 |
// Использовать метод НайтиПоКоду или НайтиПоРеквизиту вместо НайтиПоНаименованию Выборка = Справочники.УслугиТранспорта.Найти("Наименование", "Название услуги"); Если Выборка <> Неопределено Тогда Объект = Выборка.ПолучитьОбъект(); Объект.ЦенаБезНДС = 0; Объект.Записать(); КонецЕсли; |
Если у вас есть уже выборка, например:
|
1 2 3 4 5 |
Для Каждого Строка Из Справочники.УслугиТранспорта.Выбрать() Цикл Объект = Строка.ПолучитьОбъект(); Объект.ЦенаБезНДС = 0; Объект.Записать(); КонецЦикла; |
Обратите внимание, что метод ПолучитьОбъект() возвращает объект для записи, а выборка — только для чтения.
Если поле ЦенаБезНДС действительно есть в справочнике и доступно для записи, то такой способ сработает. Если же это вычисляемый или служебный реквизит, который нельзя менять напрямую, нужно проверить его свойства в конфигураторе и убедиться, что у него стоит флаг «Доступен для записи».
Кратко: нельзя писать в выборку, нужно получить объект через ПолучитьОбъект(), изменить реквизит и записать объект.