При работе с расширениями конфигурации на платформе 1С:Предприятие 8.3 (особенно на версиях 8.3.14 и 8.3.15) разработчики часто сталкиваются с неприятной ситуацией: после добавления нового реквизита в табличную часть формы он становится «заблокированным». Вы не можете изменить его имя, тип, свойства или даже просто удалить его из списка реквизитов. Рассмотрим подробнее, почему это происходит и как правильно организовать процесс разработки в расширении, чтобы избежать подобных проблем.
Проанализируем ситуацию. Основная причина кроется в зарегистрированной ошибке технологической платформы под номером 10208027. Суть проблемы заключается в том, что при определенных условиях конфигуратор некорректно обрабатывает метаданные расширения, если они добавляются непосредственно через редактор управляемой формы. Платформа ошибочно помечает новый реквизит как «заимствованный» из основной конфигурации, а так как в основной конфигурации этого реквизита нет, права на его редактирование блокируются.
Хотя официально было заявлено об исправлении этой ошибки в релизе 8.3.15.1489, на практике многие специалисты продолжали встречать это поведение и в более поздних сборках. Выясним, какие действия помогут обойти это ограничение, не дожидаясь обновления платформы.
Рассмотрим самый эффективный и надежный способ. Основная ошибка заключается в попытке добавить реквизит сразу в список реквизитов формы. Вместо этого нам необходимо строго соблюдать иерархию объектов в дереве метаданных. Разберем по шагам правильный алгоритм:
Документ.ПоступлениеТоваровУслуг), который мы заимствовали в расширение.Объект найдем нашу табличную часть и увидим там добавленный нами реквизит. Теперь мы можем просто перетащить его в визуальную часть формы (Элементы).При таком подходе Конфигуратор четко понимает, что данный реквизит является «собственным» объектом расширения, и сохраняет полную возможность его редактирования.
Если вы уже добавили реквизит и он «залип» (не редактируется), попробуем исправить это без удаления всего расширения. Проанализируем следующий алгоритм действий:
Иногда помогает временное удаление формы из расширения. Перед этим обязательно сохраните свои наработки или код, если вы уже что-то написали в модуле формы. После удаления формы из расширения, заимствуйте её заново, но убедитесь, что сама табличная часть объекта уже существует в расширении вместе с вашим новым реквизитом. При открытии заново заимствованной формы платформа должна правильно сопоставить реквизиты объекта и элементы формы.
Разберем ситуацию, которая часто беспокоит начинающих разработчиков: «Не порчу ли я структуру основной базы данных, добавляя реквизиты в расширение?». Выясним, как это работает на самом деле.
Когда мы добавляем собственный реквизит в расширение, платформа 1С изменяет структуру БД. Она создает физические таблицы (или колонки), которые имеют специальные префиксы, относящиеся к вашему расширению. Это штатное поведение. Однако стоит помнить о нескольких моментах:
Активно, платформа выполняет реструктуризацию таблиц при каждом обновлении конфигурации базы данных.СправочникСсылка.Склады, этот справочник также должен быть заимствован в расширение.Рассмотрим более сложный, «хакерский» способ, если стандартные методы не помогают. Этот метод основан на ручной правке метаданных. Посмотрим на последовательность действий:
<extended>true</extended> или некорректные ссылки на идентификаторы. Исправив описание объекта вручную и загрузив расширение обратно из файлов, можно «разблокировать» интерфейс конфигуратора.Важно: Данный метод требует понимания структуры XML-файлов 1С и должен применяться только в крайних случаях, когда другие способы бессильны.
Проанализировав проблему, мы видим, что большинство сложностей с редактированием реквизитов в расширении связано с нарушением логической цепочки «Метаданные -> Форма». Чтобы ваша работа была стабильной, придерживайтесь следующих правил:
Соблюдение этих простых принципов позволит вам избежать большинства «глюков» конфигуратора и сделает разработку расширений предсказуемой и комфортной.