Как исправить некорректные привязки в форме справочника Номенклатура в 1С:УПП после обновления?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

После проведения планового обновления конфигурации «1С:Управление производственным предприятием» (УПП) редакции 1.3 многие администраторы и разработчики сталкиваются с неприятным сюрпризом: интерфейс карточки номенклатуры начинает вести себя непредсказуемо. При попытке пользователя изменить размеры окна (растянуть его по горизонтали или вертикали) элементы управления — кнопки, текстовые поля, вкладки и табличные части — начинают накладываться друг на друга, сжиматься до невидимого состояния или вовсе пропадать из зоны видимости.

В этой статье мы подробно разберем, почему возникает данная проблема, как продиагностировать её в конфигураторе и какие существуют практические способы решения — от временных мер (обходных путей) до полного устранения дефекта.

Симптомы проблемы и диагностика поведения формы

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

Основные признаки неисправности привязок в интерфейсе:

  1. Перекрытие элементов: Текстовые поля описания или характеристик «наезжают» на табличные части или основные реквизиты.
  2. Некорректное масштабирование: При растягивании формы вправо некоторые поля остаются неизменного размера, а другие необоснованно растягиваются, скрывая соседние элементы управления.
  3. Исчезновение кнопок: Нижняя панель с кнопками «ОК», «Записать» и «Закрыть» уходит за видимые границы экрана или перекрывается содержимым основных вкладок.

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

Для первичной диагностики выполним следующие шаги в конфигураторе:

  1. Откроем конфигуратор вашей базы данных.
  2. В дереве метаданных перейдем по пути: Справочники — Номенклатура — Формы — ФормаЭлемента.
  3. Двойным кликом откроем форму.
  4. В главном меню или с помощью сочетания клавиш Ctrl + R запустим режим проверки формы.
  5. Попробуем интерактивно изменять размеры тестового окна. На определенных этапах сжатия или расширения мы сразу увидим, какой именно реквизит или панель настроены неверно и начинают ломать общую структуру.

Техническая причина: Официальный баг 000066168

Проанализируем природу этой ошибки. Описанная проблема не является следствием некорректных действий администратора при обновлении или уникальной особенностью конкретной базы данных. Это официально зарегистрированная ошибка фирмы «1С» под номером 000066168.

Она была допущена разработчиками при выпуске обновлений в середине мая 2020 года и затронула конфигурации:

Суть дефекта заключается в том, что при очередном обновлении состава реквизитов формы элемента справочника Номенклатура были случайно сбиты горизонтальные и вертикальные свойства привязок (anchors) для ключевых контейнеров (панелей и групп). Из-за этого нарушилась иерархия автоматического расчета координат дочерних элементов при изменении размеров родительского окна.

Метод 1. Сброс настроек положения окна у пользователей (Временная мера)

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

Для восстановления нормального отображения формы выполним следующие действия:

  1. Откроем карточку проблемной номенклатуры.
  2. В верхнем меню программы выберем пункт «Окна».
  3. В выпадающем списке нажмем команду «Восстановить положение окна».

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

Метод 2. Исключение формы из обновления (Откат формы)

Рассмотрим более надежный способ решения проблемы, если вы только планируете обновление на релизы 1.3.140.х или если база находится на поддержке с возможностью изменения. Отличным выходом будет сохранение стабильной версии формы из предыдущего рабочего релиза (например, 1.3.139.х).

Разберем по шагам процесс отката привязок формы элемента через механизм сравнения и объединения:

  1. Запустим конфигуратор и откроем конфигурацию.
  2. Вызовем меню Конфигурация — Поддержка — Обновить конфигурацию (или выполним сравнение и объединение с конфигурацией поставщика/файлом конфигурации .cf предыдущего стабильного релиза).
  3. В открывшемся дереве объектов сравнения снимем общую галку со всей конфигурации.
  4. Развернем ветку: Справочники — Номенклатура — Формы.
  5. Найдем объект ФормаЭлемента.
  6. Снимите флажок напротив этого объекта. Таким образом, при обновлении всей остальной конфигурации сама форма элемента номенклатуры останется нетронутой (сохранит старые, корректно настроенные привязки).
  7. Выполним обновление конфигурации базы данных (клавиша F7).

Если вы уже обновились и форма работает некорректно, вы можете аналогичным образом объединить вашу рабочую конфигурацию с архивной копией базы (до обновления) или с чистым шаблоном конфигурации релиза 1.3.139.х, выбрав для замены исключительно объект Справочники.Номенклатура.Формы.ФормаЭлемента.

Метод 3. Ручное исправление привязок в конфигураторе

Если вам необходимо сохранить новые доработки формы элемента из релиза 1.3.140.х, но при этом восстановить её работоспособность, привязки придется поправить вручную. Рассмотрим, как это сделать.

Выполним следующие действия в режиме редактирования формы элемента:

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

Для наглядности приведем пример того, как логически распределяются привязки основных элементов формы карточки номенклатуры в обычном приложении:


// Логическая схема привязок элементов управления:
ЭлементФормы.ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Правая, ГраницаФормы.Правая);
ЭлементФормы.ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ГраницаФормы.Низ);

ЭлементФормы.ПанельКнопок.УстановитьПривязку(ГраницаЭлементаУправления.Верх, ГраницаФормы.Низ);
ЭлементФормы.ПанельКнопок.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ГраницаФормы.Низ);

Проверить корректность внесенных изменений можно прямо в процессе редактирования, нажимая Ctrl + R и растягивая окно в разные стороны.

Метод 4. Установка официального исправления (Рекомендуемый способ)

Поскольку проблема носила критический характер и мешала комфортной работе сотен предприятий, фирма «1С» оперативно выпустила исправление. Ошибка 000066168 была полностью устранена в последующих релизах.

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

В этих версиях разработчики полностью пересобрали верстку формы элемента, исправив все ошибочные свойства привязок. Дополнительным аргументом в пользу этого обновления является то, что в релизе 1.3.140.2 также наблюдались проблемы с импортом банковских выписок (из-за нового тега КодНазПлатежа, введенного ЦБ РФ с 1 июня 2020 года). Обновление до актуальных релизов (1.3.141.1 / 1.3.142.1) позволит вам одним махом закрыть обе эти критические проблемы и вернуть систему в стабильное рабочее состояние.

← На главную