четверг, 10 октября 2013 г.

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

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

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

Хит-парад причин появления этой ошибки возглавляет попытка присвоения ссылке элемента новых атрибутов. Делают это обычно примерно так:
Петров = Справочники.ФизическиеЛица.НайтиПоНаименованию(“Петров Иван);
Петров.НомерПаспорта = “2156363″;
И вот на это моменте новичок получает ошибку –  Поле объекта недоступно для записи 1С.
Следуют уяснить: изменять свойства и реквизиты возможно только объекта. В данном случае в переменная “Петров” содержит в себе т.н. “ссылку” – уникальный идентификатор в базе данных, с помощью которого система поддерживает уникальность. А то, что нам доступно “по точке” (Петров.НомерПаспорта) – это просто удобство 1С предприятия и на самом деле любая “точка” это еще один запрос к базе данных.
Правильное решение задачи:
ПетровСсылка = Справочники.ФизическиеЛица.НайтиПоНаименованию(“Петров Иван);
ПетровОбъект = ПетровСсылка.ПолучитьОбъект();
ПетровОбъект.НомерПаспорта = “2156363″;
ПетровОбъект.Записать();
В данном случае вы из ссылке получаете объект, а только потом изменяете его. И потом, естественно фиксируете новое состояние объекта – записываете его.

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

Второй, по популярности, причиной возникновения данной ошибки является – это попытка изменить реквизиты, которые не поддаются изменению.
Пример:
  • номер строки табличной части
  • использование ТекущаяСтрока, вместо ТекущиеДанные
  • и так далее
Взято отсюда.

Комментариев нет:

Неактивный атрибут "скрытый" или как снять атрибут скрытый после вируса

Некоторые пользователи компьютеров часто сталкиваются с проблемой, когда папки и файлы вдруг становятся скрытыми. Или, проще говоря, исчез...