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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При первых начинания неопытных разработчиков 1С 8.3 достаточно часто возникает такая проблема: Поле объекта недоступно для записи 1С. Необходимо разобраться, почему же может возникать подобная проблемы и что следует делать, чтобы она больше не беспокоила пользователя. В случае если вы НЕ программист 1С, а обычный пользователь. Если программирование для вас всего лишь обычное слово и к нему вы не имеете никакого отношения, то лучше ничего не трогать, так как вы можете ещё больше усугубить ситуацию.

Возможно, проблема заключается в обычной ошибке, которую допустил ваш программист при доработке конфигурации. В таком случае, вам просто необходимо попросить помощи у специалиста, который разберется в данной ситуации без каких-либо проблем.

Автор Тема: Поле объекта недоступно для записи (Номер строки) (Прочитано 18133 раз). 0 Пользователей и 1. Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Структура.контрагент); ДокРасчетов. Можно использовать какую-то функцию 1С, чтобы номер заполнялся? МодульОбъекта(166)}: Поле объекта недоступно для записи (Формы) Формы = ЭтотОбъект.Метаданные().Формы; ТУТ: Код: // ЭКСПОРТИРУЕМЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ Процедура вЗагрузитьОбработки(ДоступныеОбработки, ВыбранныеОбработки) Экспорт Формы = ЭтотОбъект. Поместил кнопку в форме списка справочника, написал код: Процедура ДействияФормыНомера(Кнопка) Выборка = Справочники.СписокУпражнений.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Родитель.Наименование = " Тогда Если Выборка.ГруппаМышц.

Подобная ошибка легко исправляется, если она не успела потянуть за собой осложнения. Также можно обновить полностью платформу до новейшей версии, если проблема «поле объекта недоступно для записи 1С» появилась после недавнего обновления конфигурации. Полезная информация для начинающих программистов 1С. Наиболее частой ошибкой неопытных программистов является изменение в программном коде данных, которые менять у вас не было права.

Для подробного разъяснения, необходимо рассмотреть следующие ситуации: Следует менять объект, а не ссылку! Самым распространенным объяснением появления данной ошибки следует считать изменение свойств ссылки, а не объекта. Как правило, это выглядит так: Сидоров = Справочник.ФизЛицо.ПоискПоНаименованию("Сидоров Федор"); Сидоров.НомерУдостоверенияЛичности = "6574928"; В таком случае и возникает проблема «Поле объекта недоступно для записи 1С». Нужно запомнить, что возможность менять реквизиты или какие-либо свойства характерна только объекту. В приведенном примере переменная «Сидоров» включает в себя идентификатор для поддержки уникальности в базе, то есть ссылку. Верный вариант: СидоровСсылка = Справочник.ФизЛицо.ПоискПоНаименованию ("Сидоров Федор"); СидоровОбъект = СидоровСсылка.ПолучитьОбъект(); СидоровОбъект.


Начинающие программисты 1С достаточно часто видят перед собой сообщение об ошибке недоступности поля объекта при записи. Существует всего три пути появления этой ошибки, но на практике с ней встречаются достаточно часто, поэтому разработчику надо знать, как исправить ситуацию. Поняв один раз причины появления сообщения системы «Поле объекта недоступно для записи», вы перестанете получать его раз и навсегда.

Почему появляется эта ошибка?

Если вы простой пользователь и видите перед собой такую ошибку, то вряд ли вы сможете с ней справиться самостоятельно. Проблема не в ваших действиях, а в ошибке в коде программы. Чтобы исправить ее, необходимо проанализировать алгоритмы. Поэтому, увидев ошибку «Поле недоступно для записи», сообщите разработчику и ждите его указаний. Если в штате вашей компании нет программистов 1С, то к вам на помощь придут сторонние специалисты.

Разработчики выделяют 3 распространенные причины появления окна с ошибкой:

Попытка изменения ссылки, а не объекта. В системе 1С существуют определенные правила, и одно из них гласит: «Изменять можно только объекты». Проблема в том, что ссылка – просто адрес объекта в базе данных, созданный для уникальности. Важно понять разницу между ссылкой и объектом, потому что при некоторых операциях с ними результат будет одинаковый.

Если вы случайно или по незнанию попытались изменить реквизит ссылки и получили ошибку, то необходимо добавить всего пару строк кода. В платформе 8.3 заложена функция получения объекта по ссылке, и для изменения значения реквизитов придется ею воспользоваться. То есть перед изменением нужно получить объект по ссылке, изменить реквизит и записать объект.

НЕПРАВИЛЬНЫЙ КОД: СсылкаНаНоменклатуру = Справочники.Номенклатура.НайтиПоНаименованию("Сметана 25%"); СсылкаНаНоменклатуру.Наименование = "Сметана Вологодская 25%"; СсылкаНаНоменклатуру.Записать() ; ПРАВИЛЬНЫЙ КОД: СсылкаНаНоменклатуру = Справочники.Номенклатура.НайтиПоНаименованию("Сметана 25%"); НоменклатураОбъект = СсылкаНаНоменклатуру.ПолучитьОбъект(); НоменклатураОбъект.Наименование = "Сметана Вологодская 25%"; НоменклатураОбъект.Записать();

Вторым источником данной ошибки по частотности является код, в котором разработчик пытается поменять запрещенные к изменению реквизиты. Этим грешат неопытные программисты 1С, пытаясь изменить номер строки в табличной части, идентификаторы и так далее.

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

Еще одной причиной появления подобной ошибки является обновления. 1С выпускает их достаточно часто и для конфигураций, и для платформ. Проблема в том, что далеко не все изменения подвергаются тщательному тестированию, и пользователи невольно выполняют эту работу. Именно поэтому рекомендуется пользоваться тестовой базой для обновления, на которой проверять работоспособность нового релиза 1С, сопоставлять на ней значение и параметры.

Что делать, если после обновления вы все-таки не можете работать, наблюдая ошибку недоступности поля объекта для записи?

Специалисты советуют либо установить самый последний выпуск конфигурации и платформы 1С, либо, наоборот, вернуться к предыдущему работоспособному и ждать исправлений. Конечно, можно залезть в код типовой конфигурации и поправить ошибку, но для этого необходимо быть высококвалифицированным разработчиком 1С и помнить, что после изменения вы не сможете обновляться в автоматическом режиме.

Если вы решили обратиться за помощью, имейте в виду, что в вашей компании может быть установлено несколько программных продуктов от 1С, поэтому для облегчения работы программистов при обращении сообщите им подробные данные. К нужным параметрам относится наименование программы, ее версия и действия, которые привели к появлению ошибки. С этими вводными разработчик в разы быстрее разберется с возникшей проблемой.




Close