1С 8 объект не найден

Ошибка в 1С 8.3 Поле объекта недоступно для записи появляется при доработках программного кода и обновлениях программы.

Прочитав эту статью, вы:

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

Причины ошибки

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

  • ошибку обновления программы;
  • обращение к данным изменяемого объекта по Ссылке вместо Объект;
  • попытку изменения системных полей в программном коде.

Во всех перечисленных случаях при попытке записи данных фиксируется ошибка Поле объекта недоступно для записи.

Ошибка обновления

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

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

Ваши действия:

  1. Уточните, зарегистрирована ли ошибка на сайте поддержки пользователей: Публикация ошибок 1С.
    Для этого в форме поиска ошибок наберите текст ошибки и укажите конфигурацию программы, в которой она проявляется.Нажмите кнопку Найти.
  2. Если ошибка зарегистрирована, обратите внимание на:
    • дату регистрации ошибки;
    • релиз исправления ошибки;
    • информацию Способ обхода.
  3. Выполните рекомендации, указанные в Способе обхода или обновитесь на релиз исправления ошибки.
  4. Если ошибка не зарегистрирована, обратитесь на горячую линию 1С для регистрации ошибки:
    • телефон горячей линии 1С: (495) 956-11-81;
    • E-mail:v8@1c.ru для вопросов по программам 1С:Предприятие 8.

Пока ошибку не исправили, восстановите базу и архивной копии или ждите выхода нового релиза обновления.

БухЭксперт8 рекомендует всегда делать копии перед обновлением. Это гарантирует возможность восстановления базы при неудачном обновлении.

Изменение объекта по ссылке

Самая распространенная ошибка начинающих программистов — запись изменений Объекта по Ссылке.

Объект — это внутренняя таблица 1С, в которой содержатся полные данные на элемент справочника, документ, регистр или обработку. Ссылка — указание места этой таблицы в 1С.

Чтобы вносить изменения в данные справочника, документа или регистра, нужно обращаться к данным Объекта, а не Ссылки.

При доработке программного кода или написании внешних обработок использование для изменения данных объекта Ссылки приводит к появлению ошибки Поле объекта недоступно для записи.

При написании обработки заполнения контактного лица в справочнике Контрагенты программист допустил ошибку в программном коде:

Выполнение записи происходит с ошибкой в поле Основное контактное лицо.

Ошибка записи выбранного контактного лица регистрируется при нажатии на кнопку Неправильно.

В данном программном коде Объект.Контрагент — это Ссылка на поле формы Контрагент обработки Заполнение контактного лица контрагента:

  • Объект — обработка;
  • Контрагент — поле на форме.

Для обращения к Объекту элемента справочника Контрагент нужно выполнить команду ПолучитьОбъект(). Исправленный программный код выглядит следующим образом:

В обработке Заполнение контактного лица контрагента исправление реализовано по кнопке Правильно. В этом случае программный код отработает без ошибки.

Но для получения идеального результата сохранения данных контактного лица в справочнике Контрагенты недостаточно, необходимо записать выбранного контрагента в справочнике Контактные лица.

По кнопке Идеально выбранное контактное лицо отобразится по ссылке Контактные лица контрагента.

БухЭксперт8 рекомендует выполнять все изменения программного кода на копии рабочей базы. Если ошибка появилась после доработки конфигурации или обработки программистом, лучше передать ему информацию по ошибке для исправления, а не пытаться исправлять ее самостоятельно.

Изменение системных полей

Третьей причиной, вызывающей ошибку Поле объекта недоступно для записи, является попытка изменения системных полей и команд в программном коде:

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

Эти поля недоступны для записи, попытка их изменения приводит к ошибке.

При написании обработки заполнения членов комиссии в документе Требование-накладная программист допустил ошибку в программном коде.

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

Ошибка записи выбранных в обработке членов комиссии регистрируется при нажатии кнопки Неправильно.

Ошибка вызвана присвоением номера системному полю НомерСтроки. Правильный программный код выглядит следующим образом:

По кнопке Правильно запись членов комиссии в документ Требование-накладная происходит без ошибки.

Все выбранные в обработке Заполнение членов комиссии в Требовании-накладной члены комиссии отображаются в документе по ссылке Комиссия.

БухЭксперт8 рекомендует выполнять все изменения программного кода на копии рабочей базы. Если ошибка появилась после доработки программистом конфигурации или обработки, лучше передать ему информацию по ошибке, а не пытаться исправлять ее самостоятельно.

См. также:

  • Ошибка 1С: Поле объекта не обнаружено
  • У пользователя недостаточно прав на исполнение операции
  • Конфигурация узла распределенной ИБ не соответствует ожидаемой
  • 1C Отчетность: не удалось расшифровать файл
  • Этот хост неизвестен 1С: как исправить
  • Ошибка при выполнении операции с информационной базой 1С 8.3

Если Вы еще не являетесь подписчиком системы БухЭксперт8:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) .
title
В данной статье я опишу пример быстрого восстановления данных.
Для пользователя:
Скачиваете эту обработку восстановления объектов по GUID :
Для 1С 8.1:
или Скачивать файлы может только зарегистрированный пользователь!
Для 1С 8.2:
Скачивать файлы может только зарегистрированный пользователь!

!!! Новая Версия!!! 8.2 и 8.3 — Скачивать файлы может только зарегистрированный пользователь!Подробное описание:
и открываете ее в программе:
1. Копируем фразу <Объект не найден… и вставляем в поле Объект не найден, жмем на кнопку GUID -> и получаем 05dbe824-a4c6-11dd-bf56-00145e3710ab
title
2. Если Вы знаете что удалили, то можете сразу нажать кнопку Создать Объект Из GUID — Пункт 4.
3. Если Вы не знаете что удалили, тогда вам нужно поднять архивную копию базы, открыть там обработку и вставить полученный GUID в поле GUID.
далее нажать Ссылку -> и в правом поле отобразится необходимый Вам объект(в моем случае Попов Роман Владимирович).
Открыв его, узнаем что это справочник Сотрудники и всю содержащуюся в справочнике информацию. Возвращаемся в базу, где необходимо восстановить объект и жмем кнопку Создать Объект Из GUID
title
4. Из открывшегося списка выбираем Справочник Сотрудники, в открывшейся форме заполняем все поля данными из архивной базы и жмем OK. Все, данный объект восстановлен.
Для быстрого поиска всех <Объект не найден> используйте Поиск в базе битых ссылок — «объект не найден»
Для программиста:
Для получения уникального идентификатора объекта, используйте код вида:
Код 1C v 8.х

 ГУИДССЫЛКИ= СсылкаНаОбъект.УникальныйИдентификатор(); 

Для того чтобы преобразовать <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) в УникальныйИдентификатор (GUID)
Код 1C v 8.х

 // ГУИДУдОбъкта = <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824)
ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъкта,"<Объект не найден> (","");
ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,")","");
ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,"0x","");
ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр));
// Преобразуем GUID
ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4)+"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4)+"-"+Сред(ГУИДУдОбъктаСтр,5,12);//и получаем ГУИД = 05dbe824-a4c6-11dd-bf56-00145e3710ab

Для получения ссылки по уникальному идентификатору, используйте код:
Код 1C v 8.х

 // ГУИД = 05dbe824-a4c6-11dd-bf56-00145e3710ab 
// Ссылка будет установлена в переменную СсылкаНаОбъектГуид
УникальныйИдентификатор = Новый УникальныйИдентификатор(ГУИД)
// все объекты по которым можно получить ссылку
Если ПолучитьСсылкуНоМенеджеруОбъекта(Справочники,УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(Документы,УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(ПланыВидовХарактеристик,УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(ПланыСчетов,УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(ПланыОбмена,УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(БизнесПроцессы,УникальныйИдентификатор) Тогда
ИначеЕсли ПолучитьСсылкуНоМенеджеруОбъекта(Задачи,УникальныйИдентификатор) Тогда
КонецЕсли;
// ПолучитьСсылкуНоМенеджеруОбъекта()
Функция ПолучитьСсылкуНоМенеджеруОбъекта(ОбъектыМенеджер,УникальныйИдентификатор)
Для Каждого Менеджер Из ОбъектыМенеджер Цикл
СсылкаНаОбъектГуид = Менеджер.ПолучитьСсылку(УникальныйИдентификатор);
Если СсылкаНаОбъектГуид.ПолучитьОбъект() <> Неопределено Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции

Создать объект документ или справочник и установить ему свой Уникальный идентификатор
Код 1C v 8.х

 // ТекGUID = 05dbe824-a4c6-11dd-bf56-00145e3710ab 
Попытка
УникальныйИд = Новый УникальныйИдентификатор(ТекGUID);
Исключение
Возврат;
КонецПопытки;
КартинкаСпр=БиблиотекаКартинок.Справочник;
КартинкаДок=БиблиотекаКартинок.Документ;
СписокВыбора= Новый СписокЗначений;
СписокВыбора.Добавить(null,"СПРАВОЧНИКИ");
Для каждого ЭлементМетаданных Из Метаданные.Справочники Цикл
Структурка=Новый Структура;
Структурка.Вставить("Имя",ЭлементМетаданных.Имя);
Структурка.Вставить("Тип",1);
СписокВыбора.Добавить(Структурка,ЭлементМетаданных.Синоним,,КартинкаСпр);
КонецЦикла;
СписокВыбора.Добавить(null,"ДОКУМЕНТЫ");
Для каждого ЭлементМетаданных Из Метаданные.Документы Цикл
Структурка=Новый Структура;
Структурка.Вставить("Имя",ЭлементМетаданных.Имя);
Структурка.Вставить("Тип",2);
СписокВыбора.Добавить(Структурка,ЭлементМетаданных.Синоним,,КартинкаДок);
КонецЦикла;
Результат=СписокВыбора.ВыбратьЭлемент("Выберите тип ссылки");
Если Результат=Неопределено Тогда
Возврат;
КонецЕсли;
Структурка=Результат.Значение;
Если Структурка=null Тогда
Возврат;
КонецЕсли;
НовыйОбъект=Неопределено;
Если Структурка.Тип=1 Тогда
Объект=Справочники.СоздатьЭлемент();
Объект.ОбменДанными.Загрузка=Истина;
Объект.УстановитьСсылкуНового(Справочники.ПолучитьСсылку(УникальныйИд));
Иначе
Объект=Документы.СоздатьДокумент();
Объект.ОбменДанными.Загрузка=Истина;
Объект.УстановитьСсылкуНового(Документы.ПолучитьСсылку(УникальныйИд));
КонецЕсли;
Форма=Объект.ПолучитьФорму();
Форма.Открыть();

Для 1С 7.7 смотрите:
Технология восстановления удаленных объектов или элементов в 1С 7.7
еще можно получить ИдентификаторДокумента при OLE доступе:
Код 1C v 7.x

 Если Док_Источник.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1 Тогда
Пока Док_Источник.ПолучитьДокумент() = 1 Цикл
Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент());
ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект));
// Для примера Объект возвращает {"O","0","0","3114","0","0"," 258156CB "},
// а ПолучитьИД(объект) = 258156CB
КонецЦикла;

Еще посмотрите метод:
ЗначениеВСтрокуВнутр(<?>);
Синтаксис:
ЗначениеВСтрокуВнутр(<Объект>)
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
<Объект> — значение объекта агрегатного типа данных которое нужно преобразовать.
Подробнее см. в документации, глава »Системные процедуры и функции»

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

Причины, поиск и исправление битых ссылок

При возникновении любой ошибки мы стараемся не только нивелировать ее последствия, но и предотвратить ее возникновение в будущем. Чтобы не допустить повторного появления ссылок на удаленные объекты, нам необходимо понять причины их появления в базах 1С 8.3. Обычно подобные явления, называемые битыми ссылками, возникают из-за следующих нюансов:

  1. Недостаточно безопасно настроены права, из-за чего у пользователей есть возможность прямого удаления элементов базы данных. Обычно простым пользователям не дают права на удаление во избежание подобных ситуаций;
  2. Случайное программное удаление данных. Для недопущения битых ссылок используйте функцию «УдалитьОбъекты», передавая объекты в нее в виде массива ссылок. Эта функция проверяет, есть ли в базе ссылки на удаляемые объекты, и стирает только неиспользуемые данные;
  3. Неверно настроенный обмен данными. Здесь совет один – при создании обмена между различными базами стоит быть внимательнее и проверить все ключевые реквизиты.
Рис.1 Тестирование и исправление ИБ
Рис.1 Тестирование и исправление ИБ

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

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

Для программного поиска обычно используют один из двух методов – с помощью языка запросов или через функцию «ПолучитьОбъект». Рассмотрим пример, когда нам необходимо найти ссылки на удаленного поставщика в документах «ПриобретениеТоваровУслуг». Выберем все документы, где значение поля «Партнер» не равно пустой ссылке, то есть заполнено, и есть NULL. Этот метод хорош тем, что можно установить дополнительные отборы или взять сразу несколько типов документов.

Запрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ | ПриобретениеТоваровУслуг.Ссылка КАК Ссылка | ИЗ | Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг | ГДЕ | ПриобретениеТоваровУслуг.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) | И ПриобретениеТоваровУслуг.Партнер ЕСТЬ НЕ NULL";РезультатЗапроса = Запрос.Выполнить();ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ДокументДляИсправления =ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); ДокументДляИсправления.Партнер = Справочники.Партнеры.ПустаяСсылка(); // код для замены на другого партнера(предварительно он должен быть создан) //ДокументДляИсправления.Партнер = Справочники.Партнеры.НайтиПоНаименованию("ПартнерДляБитыхСсылок"); ДокументДляИсправления.Записать() ;КонецЦикла;

Результатом запроса будет перечень документов с битыми ссылками. Чтобы их удалить, мы получаем объект каждого документа по ссылке, заменяем реквизит «Партнер» на пустую ссылку и записываем документ. Также можно заменить «.» на другого партнера или попробовать восстановить данные из резервной копии.

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

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

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

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

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

Иногда в ИБ можно встретить ссылки на объекты <Объект не найден> (75:a353ac9e17b7bc7111e60238e0dc59c6), это ссылки на удаленные объекты. Получаются такие ссылки в ходе сбоев ИБ, РИБ(Распределенных Информационных Баз) или других механизмов создающих ссылки не записанных объектов().

Поиск "Объект не найден" в регистре и удаление

В любом случае — это не есть хорошо, будем исправлять! Разберем пример поиска таких ссылок в регистре сведений «Данные для обработки» некой конфигурации, регистр имеет одно измерение «Номенклатура», тип Справочник.Номенклатура.

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

Поиск ссылок <Объект не найден>

Сама ссылка считается валидной, а вот если обратиться к ее реквизиту в запросе, то получим NULL. Из этого пишем запрос получающий наименование из ссылки в измерении «номенклатура» регистра сведений «Данные для обработки» и отбираем записи у которых значение запрашиваемого реквизита равно NULL. Если измерений по которым необходимо производить поиск больше одного, то объединяем условия через ИЛИ.

А для удаления таких записей просто создадим наборы записей указав отборы и запишем.

&НаСервереПроцедура УдалитьПлохиеЗаписиДанныхДляОбработки()// Найдем записи с <Объект не найден>Запрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ|ДанныеДляОбработки.Номенклатура КАК Номенклатура|ИЗ|РегистрСведений.ДанныеДляОбработки КАК ДанныеДляОбработки|ГДЕ|ДанныеДляОбработки.Номенклатура.Наименование ЕСТЬ NULL";Выборка = Запрос.Выполнить().Выбрать();// Удаление записей с <Объект не найден>Пока Выборка.Следующий() Цикл НаборЗаписей = РегистрыСведений.ДанныеДляОбработки.СоздатьНаборЗаписей();НаборЗаписей.Отбор.Номенклатура.Установить(Выборка.Номенклатура);НаборЗаписей.Записывать = Истина;НаборЗаписей.Записать(Истина);КонецЦикла;КонецПроцедуры

После выполнения данного кода из регистра сведений будут удалены все записи со ссылками <Объект не найден>.

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

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

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

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

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

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

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

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

Иванов.НомерПаспорта = «2175353»;

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

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

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

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

ИвановОбъект = ИвановСсылка.ПолучитьОбъект();

ИвановОбъект.НомерПаспорта = «2175353»;

ИвановОбъект.Записать();

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

image002

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

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

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

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

image003

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

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

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

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

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

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

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

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

123456
//Возможна ошибка присвоенияСумма = 1; // Правильно такЭлементы.Сумма = 1; //Происходит присвоение значения элементу формыЭтаФорма.Сумма = 1; //Происходит присвоение значения реквизиту формы

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