No Image

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

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Читайте также:  Рива тюнер как пользоваться

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

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

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

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

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

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

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

Читайте также:  Windows 7 ultimate for game

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

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

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

Обучение программированию на 1С

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

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

Причины возникновения ошибки

К появлению системного окна с этой ошибкой может привести 6 факторов:

  1. Попытка изменения значений в полях, смена которых бессмысленна;
  2. Ошибка в коде;
  3. Попытка изменения системных полей;
  4. Недостаточно прав на изменение;
  5. Устаревшая конфигурация 1С;
  6. В управляемой форме используется элемент и реквизит с одним именем.

1. Попытка изменения значений в полях, смена которых бессмысленна

Например, в программе происходит попытка замены ссылки, а не объекта. Но сделать этого невозможно. Если изменить ссылку, то, во-первых, она будет ссылаться на несуществующий объект (в никуда), во-вторых, нужный объект по ней вы больше не найдёте.

Пример неправильного фрагмента кода:

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

И при вводе последней строчки появляется ошибка «Поле объекта недоступно для записи».

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

Читайте также:  Программа для синтезирования голоса

Как исправить ошибку? Чтобы сообщение «Поле объекта недоступно для записи» больше не появлялось, нужно прописать следующее:

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

Теперь по ссылке выполняется обращение к объекту, а затем уже он редактируется. После этого объект записывается, то есть фиксируется его новое состояние.

2. Ошибка в коде

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

3. Попытка изменения системных полей

Пользователь пытается редактировать те данные, на замену которых он не имеет прав. Например, номер строки в таблице, установка «ТекущаяСтрока» вместо «ТекущиеДанные» и т. д. Иногда ошибка возникает из-за простой невнимательности. Если обращаться к правильным полям – ошибка появляться не будет.

4. Недостаточно прав на изменение

Иногда поле, которое пытается изменить пользователь, доступно только для чтения. Это связано с правами на объекты конкретного пользователя. Чтобы устранить возникающую ошибку, необходимо проанализировать права на конкретный объект и либо разрешить пользователю доступ к соответствующему полю (на запись), либо вообще исключить поле (или целый объект) из рассмотрения.

5. Устаревшая конфигурация 1С

Иногда ошибка «Поле объекта недоступно для записи» появляется при обновлении 1С. Чтобы убрать её, нужно обновиться до самой свежей версии платформы.

Устранить ошибку обычно не сложно и сделать это может сам пользователь. Если же серьёзно нарушена конфигурация 1С, исправить положение сможет только специалист.

6. В управляемой форме используется элемент и реквизит с одним именем

Достаточно редко ошибка «Поле объекта недоступно для записи» появляется при совпадении имён реквизита и элемента управляемой формы. Чтобы устранить ошибку, необходимо явно прописать обращение к реквизиту или элементу формы.

К примеру, в форме 1С имеется реквизит с именем «Сумма». С таким же именем на форме находится элемент «Сумма».

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector