Почему с формы номенклатуры в УТ 10.3 пропали реквизиты и как их вернуть?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с конфигурациями на обычных формах, такими как Управление торговлей 10.3 или Управление производственным предприятием 1.3, разработчики часто сталкиваются с неприятной ситуацией: после очередного обновления с формы элемента справочника Номенклатура исчезают привычные реквизиты, такие как СтавкаНДС, ЕдиницаХраненияОстатков и другие. При этом в метаданных самого справочника реквизиты присутствуют, а при попытке добавить их на форму вручную система выдает ошибку о неуникальности имени. Это говорит о том, что элементы на форме есть, но они стали невидимыми или «уехали» за пределы видимости.

В данной статье мы разберем причины возникновения этой проблемы, связанные с внедрением функционала маркировки (ИС МП), и пошагово рассмотрим способы восстановления интерфейса формы.

Выясним причину исчезновения элементов

Проанализируем ситуацию: почему элементы управления «прячутся»? Основная причина кроется в механизме автоматического объединения форм при обновлении конфигурации. В последних релизах 1С активно внедряет поддержку системы «Честный знак» (маркировка товаров). Для этого на форму номенклатуры добавляются новые контейнеры — панели и страницы для настройки частичного выбытия и других специфических параметров маркируемой продукции.

Во время процесса «Сравнения и объединения» конфигураций, координаты существующих элементов (таких как СтавкаНДС) могут некорректно пересчитаться. В результате элементы оказываются «захвачены» новыми панелями-родителями. Если эти панели по умолчанию скрыты (например, программно выключаются в процедуре ПриОткрытии для товаров, не подлежащих маркировке), то и все вложенные в них реквизиты также исчезают из поля зрения пользователя.

Способ 1. Поиск элементов через панель «Частичное выбытие»

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

  1. Откроем форму элемента справочника Номенклатура в конфигураторе.
  2. Перейдем на закладку, где визуально отсутствуют поля (обычно это основная вкладка).
  3. Найдем в дереве элементов или непосредственно на форме элемент с именем ПанельНастройкиЧастичногоВыбытия (она может быть наложена поверх других элементов).
  4. В свойствах этой панели временно включим режим «Режим прокручиваемых страниц». Это позволит нам увидеть содержимое, которое не помещается в текущие границы.
  5. На этой панели могут появиться стрелки прокрутки. Переключимся на вторую или последующие страницы. Как правило, именно там «складируются» уехавшие элементы: СтавкаНДС, НоменклатурнаяГруппа и другие.
  6. Выделим необходимые элементы, вырежем их (Ctrl+X) и вставим (Ctrl+V) обратно в основной корень формы или на нужную страницу главной панели.

Способ 2. Работа со списком элементов управления формы

Если визуально на форме найти «пропажу» не удается, проанализируем структуру формы через специализированный инструмент. Посмотрим, как найти элемент по имени, если он скрыт глубоко в иерархии.

Для этого выполним следующие действия:

  1. В редакторе формы нажмем кнопку «Список элементов управления» (обычно находится на верхней панели инструментов конфигуратора).
  2. В открывшемся окне воспользуемся поиском (Ctrl+F) и введем имя искомого реквизита, например, СтавкаНДС.
  3. Важный момент: если поиск выдает СтавкаНДС1, значит, вы уже пытались добавить новый элемент. Нам же нужно найти оригинал без индекса «1».
  4. Когда оригинальный элемент найден в списке, обратим внимание на колонку «Родитель» или «Владелец». Это подскажет нам, внутри какой панели или страницы он сейчас находится.
  5. Проверим координаты элемента: свойства Лево и Верх. Если там указаны огромные значения (например, 2000) или отрицательные числа, элемент находится за границами видимости. Установим значения 0, чтобы он появился в левом верхнем углу родительского контейнера.

Технический нюанс: ошибка «Не уникальное имя»

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

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


ЭлементыФормы.СтавкаНДС.Доступность = Ложь;
ЭлементыФормы.СтавкаНДС.ТолькоПросмотр = Истина;

Если вы удаляете старый элемент и создаете новый, его внутренний идентификатор меняется, а также могут сброситься настройки привязок и событий (ПриИзменении, НачалоВыбора). Поэтому всегда лучше найти и переместить оригинальный элемент, чем создавать его дубликат.

Способ 3. Проверка слоев формы

В обычных формах существует понятие слоев (Layers). Рассмотрим вероятность того, что реквизиты были случайно перенесены на неактивный слой.

  1. Откроем свойства формы и перейдем на закладку «Слои».
  2. Проверим, какие слои определены для формы (например, «Основной», «Наборы», «Услуги»).
  3. Найдем «пропавший» реквизит в списке элементов управления и посмотрим его свойство Слой.
  4. Если элемент привязан к слою, который не отображается при текущем типе номенклатуры (например, реквизит для товара находится на слое услуг), он будет скрыт программно.
  5. Убедимся, что реквизит находится на нулевом слое (общий для всех) или на соответствующем его логике.

Дополнительные рекомендации по верстке

После того как вы нашли и вернули элементы на место, рекомендуем проверить привязки. В обычных формах это критически важно для корректного отображения при изменении размеров окна. Щелкните правой кнопкой мыши по возвращенному элементу, выберите «Установить привязки» и убедитесь, что он жестко закреплен за соответствующими границами формы или соседними элементами.

Также стоит заглянуть в модуль формы и найти процедуры ПриОткрытии или ОбновитьФорму. Проанализируем код на наличие конструкций, управляющих видимостью:


Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьМаркировку") Тогда
    ЭлементыФормы.ПанельНастройкиЧастичногоВыбытия.Видимость = Ложь;
КонецЕсли;

Если ваши реквизиты остались внутри этой панели, они будут исчезать в режиме «Предприятие», даже если в конфигураторе вы их видите. Перенос элементов в основной корень формы (ЭтаФорма) решает эту проблему окончательно.

← На главную