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

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35623
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        нет первый вариант {Справочник.УслугиТранспорта.Форма.ФормаСписка.Форма(8)}: Поле объекта недоступно для записи (ЦенаБезНДС)
        Выборка.ЦенаБезНДС = 0;

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

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

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

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

          Пример кода:

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С