1с добавить колонку реквизита недоступно
Причины появления ошибки
При появлении ошибки после обновления конфигурации достаточно дождаться выхода исправленной версии. Разработчики 1С оперативно реагируют на возникшие проблемы и решают вопрос в короткие сроки. Но лучше подстраховаться заранее и либо предварительно устанавливать обновления на тестовую базу, либо иметь в запасе актуальную резервную копию.
Если конфигурация изменялась, редактировалась под нужды организации, то для устранения ошибки лучше обратиться к программисту 1С.
Доступно только для чтения данных
При работе с объектами 1С различают два способа обращения к данным:
- ссылка — содержит только представление объекта, часто это код и наименование. Сам объект не загружается. Доступ к реквизитам получают разыменованием: обращением через точку. Ссылки читаются из базы, но не изменяются;
- объект — включает данные в полном объеме, в т. ч. реквизиты, табличные части, которые можно создавать, удалять и редактировать.
Ссылочные данные программисты используют, когда не потребуется изменять объект. Программа обрабатывает ссылки быстрее, т. к. из базы загружается только информация об объекте — ссылка, а не сам объект целиком со всеми реквизитами и другими входящими в него данными. Для записи изменений из ссылки получают объект: например, с помощью метода ПолучитьОбъект() . Если это не сделано, и присвоение нового значения производится ссылочному полю, возникает ошибка «Поле объекта недоступно для записи».
Для перехода к месту ошибки:
- запустите конфигурацию в режиме отладки через конфигуратор Отладка — Начать отладку ;
- повторите действия, приводящие к ошибке;
- в окне предупреждения нажмите Подробно , затем Конфигуратор .
В открывшемся служебном окне в нижней части конфигуратора отразится информация о месте сбоя:
- Поле объекта недоступно для записи (ВалютаДенежныхСредств) — тест ошибки и имя элемента, куда программа пытается сохранить данные;
- Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(137) — путь до модуля, где расположена выполняемая строка кода, и порядковый номер строки с ошибкой;
- НайденныйБанковскийСчет.ВалютаДенежныхСредств = БанковскийСчет.ВалютаДенежныхСредств — команда записи изменений, в которой возникает сбой.
- НайденныйБанковскийСчет — содержит ссылку на элемент справочника Банковские счета ;
- ВалютаДенежныхСредств — реквизит справочника Банковские счета , имеет ссылочный тип данных на справочник Валюта .
При определении типа выделяйте объект постепенно: сначала узнайте тип первой часть объекта до точки, далее увеличивайте количество выделенных частей. Если реквизит имеет ссылочный тип данных, результат в окне Выражение может быть неверно понят пользователем. Почти всегда в операциях присваивания последним указывается реквизит объекта.
- документы, справочники, планы счетов и др. — ПолучитьОбъект();
- константы, перечисления, регистры и др. — Получить(), Прочитать();
Подробное описание методов смотрите в Синтакс-Помощнике .
Объекты конфигурации делятся:
- объекты (ДокументОбъект.[Имя] и др.) — можно найти в базе по ссылке. На вкладке Прочее в окне редактирования объекта конфигурации есть Модуль объекта ;
- набор записей — для изменения одной записи регистров, перечислений используют менеджер записи, для констант — менеджер значения.
Ошибку «Поле объекта недоступно для записи» 1С выдает при неправильной записи как объектных данных, так и наборов записей. Обращение с записями лучше не исправлять самостоятельно, а поручить программисту.
Попытка изменить системные поля
В 1С существуют специальные системные поля, которым программа присваивает значения по умолчанию:
- порядковый номер строки;
- номер группировки;
- уровень группировки.
Системные поля доступны только для чтения. Создаются автоматически к элементам: например, номера строк табличных частей или уровень группировки в отчете. Повлиять на них пользователь не может. При попытке изменить значение будет выдано окно с предупреждением:
Один из вариантов решения:
Имя переменной совпадает с именем объекта
При использовании переменных в программном коде следует задавать им наименования, отличные от зарезервированных за объектами системы. В противном случае программа посчитает их не переменными, которым можно присваиваться любое значение, а элементами базы соответствующего типа с уже заданными значениями.
Кроме команды равенства логично предположить, что переменная используется в последующем коде, где после изменения имени начнут возникать различные сбои. Поэтому поменять наименование нужно во всем местах, в которых она упоминается.
Изменение элемента формы
Еще один пример кода, приводящий к ошибке «Поле объекта недоступно для записи», — неверное обращение к полям формы при попытке присвоить им новое значение.
Формы содержат коллекцию элементов формы, через разыменование (точку) получают доступ к полю, таблице и т. д. и управляют их свойствами. Элементы используются для графической визуализации информации на форме. Они не содержат данные, путь к ним прописан в свойстве Путь к данным .
Чтобы изменить значение элемента, используют:
Вмешательство в программный код при отсутствии необходимых навыков может повлечь за собой другие сбои и повреждения в структуре базы данных.
Читайте также: