Закажите бесплатный расчет стоимости вашей задачи по 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.

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

Задайте ВОПРОС на нашем форуме 1С! ››

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

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

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

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

    Ответить

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

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

      Ответить

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

    Ответить

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*