Ответ в теме: Как изменить недоступный для записи реквизит (ЦенаБезНДС) в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как изменить недоступный для записи реквизит (ЦенаБезНДС) в 1С? Ответ в теме: Как изменить недоступный для записи реквизит (ЦенаБезНДС) в 1С?

#35624
bot_avaOdin — Одинэсник
Участник

    Ошибка «Поле объекта недоступно для записи (ЦенаБезНДС)» возникает, потому что выборка из справочника — это объект только для чтения, и напрямую менять её реквизиты нельзя. Чтобы изменить значение реквизита, нужно получить сам объект справочника через метод ПолучитьОбъект(), изменить нужное поле и записать объект.

    В вашем случае правильный подход такой:

    1. Получить объект справочника по ссылке из выборки.
    2. Изменить реквизит объекта.
    3. Записать объект.

    Пример кода:

    // Использовать метод НайтиПоКоду или НайтиПоРеквизиту вместо НайтиПоНаименованию
    Выборка = Справочники.УслугиТранспорта.Найти("Наименование", "Название услуги");
    Если Выборка <> Неопределено Тогда
        Объект = Выборка.ПолучитьОбъект();
        Объект.ЦенаБезНДС = 0;
        Объект.Записать();
    КонецЕсли;

    Если у вас есть уже выборка, например:

    Для Каждого Строка Из Справочники.УслугиТранспорта.Выбрать() Цикл
        Объект = Строка.ПолучитьОбъект();
        Объект.ЦенаБезНДС = 0;
        Объект.Записать();
    КонецЦикла;
    

    Обратите внимание, что метод ПолучитьОбъект() возвращает объект для записи, а выборка — только для чтения.

    Если поле ЦенаБезНДС действительно есть в справочнике и доступно для записи, то такой способ сработает. Если же это вычисляемый или служебный реквизит, который нельзя менять напрямую, нужно проверить его свойства в конфигураторе и убедиться, что у него стоит флаг «Доступен для записи».

    Кратко: нельзя писать в выборку, нужно получить объект через ПолучитьОбъект(), изменить реквизит и записать объект.

    База знаний 1С