Как включить кнопку "Изменить форму" в списке реализации товаров и услуг в 1С:УТ 11 через веб-клиент?

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

При работе в конфигурации «1С:Управление торговлей» (редакция 11) через веб-клиент пользователи часто сталкиваются с неприятной особенностью: в меню «Ещё» списка документов «Реализация товаров и услуг» неожиданно пропадает стандартная кнопка «Изменить форму». Это лишает пользователей возможности гибко настраивать интерфейс под себя, например, выводить дополнительные реквизиты, менять порядок колонок или скрывать неиспользуемые поля. Примечательно, что у пользователей с административными правами эта кнопка присутствует, а в других списках (например, в заказах клиентов) она доступна и у обычных менеджеров.

В рамках этой статьи мы подробно проанализируем технические причины такого поведения системы, разберем по шагам логику работы платформы «1С:Предприятие 8.3» в веб-клиенте и рассмотрим три практических способа решения этой проблемы.

Выясняем причину: почему открывается форма обработки, а не документа

Для начала давайте разберем ситуацию изнутри. Когда обычный пользователь открывает список реализаций в веб-клиенте, система может открывать не стандартную форму списка документа Документ.РеализацияТоваровУслуг.ФормаСписка, а специализированную форму, которая физически расположена в другом объекте метаданных — в обработке «Самообслуживание партнеров» (Обработка.СамообслуживаниеПартнеров).

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

  1. Запрет изменения формы на уровне свойств: В палитре свойств формы обработки (например, ДокументыРеализации) свойство РазрешитьИзменениеФормы принудительно установлено в значение Ложь. Платформа блокирует отображение команды «Изменить форму», чтобы внешний клиент не смог случайно или намеренно вывести на экран скрытые системные поля, внутренние цены или реквизиты других контрагентов.
  2. Ограничения прав доступа (RLS и роли): У пользователя может быть активна роль, связанная с самообслуживанием. В таком случае система автоматически перенаправляет его на интерфейс внешнего клиента. Если у пользователя в его профиле групп доступа отключено системное право Сохранение данных пользователя (Save User Data), платформа автоматически скрывает любые элементы настройки интерфейса.
  3. Параметры запуска веб-клиента: Иногда публикация информационной базы на веб-сервере (Apache или IIS) настраивается таким образом, что для определенного URL-адреса принудительно устанавливается режим запуска рабочего места самообслуживания.

Теперь, когда мы понимаем архитектурные особенности работы интерфейса, рассмотрим подробные варианты решения этой задачи.

Способ А. Использование расширения конфигурации (Рекомендуемый способ)

Если ваша конфигурация находится на поддержке и вы не хотите снимать её с поддержки ради изменения одного свойства, наиболее правильным и безопасным решением будет использование механизма расширений. Мы можем точечно переопределить свойства формы обработки, не затрагивая основную конфигурацию.

Выполним следующие шаги:

  1. Запустим базу в режиме «Конфигуратор».
  2. Перейдем в меню Конфигурация — Расширения конфигурации.
  3. Создадим новое расширение (например, с именем ИправлениеИнтерфейсаВебКлиента), оставив назначение «Адаптация».
  4. В дереве метаданных основной конфигурации найдем обработку СамообслуживаниеПартнеров.
  5. Раскроем ветку этой обработки, найдем форму списка реализаций (обычно это ДокументыРеализации или аналогичная форма, используемая для вывода продаж внешним клиентам).
  6. Нажмем правой кнопкой мыши по форме и выберем команду «Добавить в расширение».
  7. В окне расширения откроем палитру свойств добавленной формы.
  8. Найдем свойство «Разрешить изменение формы» (в английской версии — AllowFormCustomize) и установим для него значение Истина (поставим флажок).
  9. Сохраним расширение и обновим конфигурацию базы данных.

После применения этого расширения у пользователей, работающих через веб-клиент, в меню «Ещё» появится заветная кнопка «Изменить форму».

Способ Б. Программное добавление дополнительного реквизита в динамический список

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

Для реализации этого метода проанализируем код формы и модифицируем динамический список. Нам потребуется обратиться к запросу динамического списка и добавить левое соединение с таблицей дополнительных сведений.

Рассмотрим пример кода, который можно поместить в модуль расширяемой формы в обработчик события ПриСозданииНаСервере:


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Получаем схему или текст запроса динамического списка
    ТекстЗапроса = Список.ТекстЗапроса;
    
    // Модифицируем запрос динамического списка, добавляя левое соединение
    // для получения значения нужного дополнительного реквизита
    НовыйТекстЗапроса = ТекстЗапроса + "
    |ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.ДополнительныеРеквизиты КАК ДопРеквизиты
    |    ПО Список.Ссылка = ДопРеквизиты.Ссылка
    |    И ДопРеквизиты.Свойство = &ЦелевоеСвойство";
    
    Список.ТекстЗапроса = НовыйТекстЗапроса;
    
    // Устанавливаем параметр запроса — ссылку на план видов характеристик "Дополнительные реквизиты и сведения"
    Список.Параметры.УстановитьЗначениеПараметра("ЦелевоеСвойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("РегионДоставки"));
    
КонецПроцедуры

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

Способ В. Копирование настроек формы от администратора пользователям

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

Давайте выполним этот процесс по шагам:

  1. Авторизуемся в веб-клиенте под учетной записью с административными правами.
  2. Откроем нужный список документов реализации. Так как мы зашли под администратором, в меню «Ещё» нам будет доступна команда «Изменить форму».
  3. Настроим форму: добавим необходимые колонки, дополнительные реквизиты, настроим их ширину и видимость. Нажмем «Применить» и «ОК», чтобы сохранить настройки.
  4. Завершим работу в веб-клиенте и откроем базу под администратором через стандартный Тонкий клиент.
  5. Перейдем в раздел меню НСИ и администрирование — Настройки пользователей и прав.
  6. В подразделе «Персональные настройки пользователей» найдем ссылку «Копирование настроек» и перейдем по ней.
  7. В открывшемся окне в поле «Копировать настройки от» выберем пользователя-администратора (под которым мы настраивали форму в шаге 2).
  8. В блоке «Кому копировать» выберем вариант «Определенным пользователям» или «Группе пользователей» и отметим галочками тех сотрудников, которые работают через веб-клиент.
  9. В списке копируемых настроек выберем пункт «Настройки внешнего вида» и найдем там нашу измененную форму обработки СамообслуживаниеПартнеров.
  10. Нажмем кнопку «Скопировать и закрыть».

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

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

← На главную