Начинающие программисты 1С достаточно часто видят перед собой сообщение об ошибке недоступности поля объекта при записи. Существует всего три пути появления этой ошибки, но на практике с ней встречаются достаточно часто, поэтому разработчику надо знать, как исправить ситуацию. Поняв один раз причины появления сообщения системы «Поле объекта недоступно для записи», вы перестанете получать его раз и навсегда.
Почему появляется эта ошибка?
Если вы простой пользователь и видите перед собой такую ошибку, то вряд ли вы сможете с ней справиться самостоятельно. Проблема не в ваших действиях, а в ошибке в коде программы. Чтобы исправить ее, необходимо проанализировать алгоритмы. Поэтому, увидев ошибку «Поле недоступно для записи», сообщите разработчику и ждите его указаний. Если в штате вашей компании нет программистов 1С, то к вам на помощь придут сторонние специалисты.
Разработчики выделяют 3 распространенные причины появления окна с ошибкой:
Попытка изменения ссылки, а не объекта. В системе 1С существуют определенные правила, и одно из них гласит: «Изменять можно только объекты». Проблема в том, что ссылка – просто адрес объекта в базе данных, созданный для уникальности. Важно понять разницу между ссылкой и объектом, потому что при некоторых операциях с ними результат будет одинаковый.
Если вы случайно или по незнанию попытались изменить реквизит ссылки и получили ошибку, то необходимо добавить всего пару строк кода. В платформе 8.3 заложена функция получения объекта по ссылке, и для изменения значения реквизитов придется ею воспользоваться. То есть перед изменением нужно получить объект по ссылке, изменить реквизит и записать объект.
НЕПРАВИЛЬНЫЙ КОД:
СсылкаНаНоменклатуру = Справочники.Номенклатура.НайтиПоНаименованию("Сметана 25%");
СсылкаНаНоменклатуру.Наименование = "Сметана Вологодская 25%";
СсылкаНаНоменклатуру.Записать() ;
ПРАВИЛЬНЫЙ КОД:
СсылкаНаНоменклатуру = Справочники.Номенклатура.НайтиПоНаименованию("Сметана 25%");
НоменклатураОбъект = СсылкаНаНоменклатуру.ПолучитьОбъект();
НоменклатураОбъект.Наименование = "Сметана Вологодская 25%";
НоменклатураОбъект.Записать();
Вторым источником данной ошибки по частотности является код, в котором разработчик пытается поменять запрещенные к изменению реквизиты. Этим грешат неопытные программисты 1С, пытаясь изменить номер строки в табличной части, идентификаторы и так далее.
ДокументОбъект = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("000000003").ПолучитьОбъект();
Для каждого строчка из ДокументОбъект.Товары цикл
строчка.НомерСтроки = 2;
КонецЦикла;
ДокументОбъект.Записать();
Еще одной причиной появления подобной ошибки является обновления. 1С выпускает их достаточно часто и для конфигураций, и для платформ. Проблема в том, что далеко не все изменения подвергаются тщательному тестированию, и пользователи невольно выполняют эту работу. Именно поэтому рекомендуется пользоваться тестовой базой для обновления, на которой проверять работоспособность нового релиза 1С, сопоставлять на ней значение и параметры.
Что делать, если после обновления вы все-таки не можете работать, наблюдая ошибку недоступности поля объекта для записи?
Специалисты советуют либо установить самый последний выпуск конфигурации и платформы 1С, либо, наоборот, вернуться к предыдущему работоспособному и ждать исправлений. Конечно, можно залезть в код типовой конфигурации и поправить ошибку, но для этого необходимо быть высококвалифицированным разработчиком 1С и помнить, что после изменения вы не сможете обновляться в автоматическом режиме.
Если вы решили обратиться за помощью, имейте в виду, что в вашей компании может быть установлено несколько программных продуктов от 1С, поэтому для облегчения работы программистов при обращении сообщите им подробные данные. К нужным параметрам относится наименование программы, ее версия и действия, которые привели к появлению ошибки. С этими вводными разработчик в разы быстрее разберется с возникшей проблемой.
консультация эксперта
самые свежие новости 1 раз в месяц