При разработке расширений для типовых конфигураций на платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с ситуацией, когда добавленные в табличную часть формы реквизиты становятся «заблокированными». Вы не можете ни изменить их свойства, ни удалить их из формы. Давайте разберемся, почему это происходит и как с этим работать.
Данная проблема официально зарегистрирована под номером 10208027. Суть ее заключается в том, что при заимствовании формы в расширение механизм платформы иногда некорректно обрабатывает метаданные новых колонок табличной части. Платформа начинает воспринимать эти элементы как «чужеродные» или заблокированные для редактирования, что приводит к невозможности их удаления или настройки.
Самый простой метод, который помогает в большинстве случаев — принудительное обновление структуры расширенной формы. Выполним следующие действия:
Важно: Будьте осторожны, так как в редких случаях принудительное обновление может сбросить некоторые настройки внешнего вида, поэтому перед процедурой всегда делайте резервную копию расширения (.cfe).
Если прямое создание реквизита в дизайнере формы не дает результатов, попробуйте изменить подход:
Товары документа ПоступлениеТоваровУслуг внутри расширения).Этот метод считается более стабильным, так как платформа корректнее обрабатывает добавление полей непосредственно к объекту, а не к интерфейсному элементу.
Если реквизит уже «завис» и не удаляется, сообщество разработчиков часто использует тактику «забывания» или последовательного пересоздания. Попробуем выполнить следующий алгоритм:
Видимость = Ложь и переименуйте его, добавив префикс Удалить_. Это позволит очистить визуальную часть формы, не ломая при этом структуру расширения.Если дизайнер форм упорно блокирует ваши действия, самым надежным способом будет вывод колонок на форму программно. Этот подход исключает конфликты в конфигураторе.
Для программного добавления колонок в обработчике ПриСозданииНаСервере можно использовать следующий подход:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Создаем новый элемент управления для колонки
НоваяКолонка = Элементы.Добавить(\"МойНовыйРеквизит\", Тип(\"ПолеФормы\"), Элементы.Товары);
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
НоваяКолонка.ПутьКДанным = \"Объект.Товары.МойНовыйРеквизит\";
КонецПроцедуры
Использование этого кода позволяет обойти ограничения графического интерфейса конфигуратора. Однако помните, что при таком подходе вы берете на себя ответственность за управление видимостью и доступностью колонки в процессе работы пользователя.
Поскольку проблема носит характер ошибки платформы, мы настоятельно рекомендуем следить за обновлениями. Как показывает практика, в версиях платформы 8.3.16 и выше, а также в последних релизах ветки 8.3.18+, ошибка проявляется значительно реже. Если вы используете устаревшую версию, планирование перехода на актуальный релиз является лучшим системным решением.
Помните: Всегда делайте бэкап расширения перед тем, как пытаться «лечить» зависшие реквизиты. Если структура расширения повреждена критически, единственным выходом будет создание нового файла расширения и перенос изменений вручную.