Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Поле объекта недоступно для записи в 1С

Для начинающих разработчиков 1С 8.3  трудно понять, почему же они так часто получают ошибку — Поле объекта недоступно для записи 1С (РабочаяДата, Код, Таблица, Номер, Дата и т.д.). Разберемся, почему эта ошибка может появятся, и как с ней бороться.

Поле объекта недоступно для записи 1С

Если Вы НЕ программист 1С

Если Вы понятия не имеете, что такое программирование, то лучше ничего не трогать. Скорее всего, программисты, которые дорабатывали Вашу конфигурацию, просто допустили досадную ошибку. Просто вызовите специалиста, который работал с Вами. Данная ошибка решается достаточно быстро (если она не тянет за собой другие, более сложные проблемы). Если контакты с личными программистами потеряны, Вы можете обратиться к нашим высококвалифицированным профессионалам, подробности на странице — доработка 1С.

Если ошибка возникла после обновления конфигурации 1С 8.2 или 8.3, скорее всего, Вам необходимо обновить платформу 1С до последней актуальной версии.

Получите 267 видеоуроков по 1С бесплатно:

Если Вы начинающий программист 1С

Если говорить в общем, то Вы пытаетесь в программном коде изменить данные, которые не имеете права менять. Рассмотрим конкретные случаи:

Меняй объект, а не ссылку

Хит-парад причин появления этой ошибки возглавляет попытка присвоения ссылке элемента новых атрибутов. Делают это обычно примерно так:

Петров = Справочники.ФизическиеЛица.НайтиПоНаименованию("Петров Иван");

Петров.НомерПаспорта = "2156363";

И вот на этом моменте новичок получает ошибку — Поле объекта недоступно для записи 1С.

Следует уяснить: изменять свойства и реквизиты возможно только объекта. В данном случае переменная «Петров» содержит в себе т.н. «ссылку» — уникальный идентификатор в базе данных, с помощью которого система поддерживает уникальность. А то, что нам доступно «по точке» (Петров.НомерПаспорта), — это просто удобство 1С предприятия, и на самом деле любая «точка» — это еще один запрос к базе данных.

Правильное решение задачи:

ПетровСсылка = Справочники.ФизическиеЛица.НайтиПоНаименованию("Петров Иван");

ПетровОбъект = ПетровСсылка.ПолучитьОбъект();

ПетровОбъект.НомерПаспорта = "2156363";

ПетровОбъект.Записать();

В данном случае Вы из ссылки получаете объект, а только потом изменяете его. И потом, естественно, фиксируете новое состояние объекта — записываете его.

Попытка изменить системные поля

Второй по популярности причиной возникновения данной ошибки является попытка изменить реквизиты, которые не поддаются изменению.

Пример:

  • номер строки табличной части;
  • использование ТекущаяСтрока, вместо ТекущиеДанные;
  • и так далее.

Читайте также другие статьи по 1С:

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 6 на “Поле объекта недоступно для записи в 1С
  1. Добрый день.
    Спасибо за замечательную статью, но остается одна закавыка.

    Отключаю стандартную обработку, открываю форму выбора с нужным мне отбором, но при двойном щелчке на выбираемом элементе поле в исходной форме не заполняется.

    Как это исправить?

    Ответить

    • Добрый день!
      Спасибо за отзыв.

      Так как вы отключили стандартную обработку он и не обрабатывает установку нового значения в поле выбора. То есть нужно сделать что то вроде «ТекущиеДанные.Реквизит = ВыбранноеЗначениеИзСписка».

      Ответить

  2. Здравствуйте! Очень помогла ваша статья, раньше пользовался ЗагрузкаДанныхИзТабличныхДокументов, теперь все намного упростилось. Спасибо большое!

    Ответить

  3. Добрый день.
    Есть еще один вопрос.
    Представим что у меня документ из 1527 строк и исправить надо 3 реквизита в 588 строке????

    Ответить

    • Сам нашел. Все просто… Если знаешь

      Ответить

  4. Спасибо! Всё толком и по делу. То что надо для юных падаванов)

    Ответить

Добавить комментарий: