Почему объекты конфигурации не доступны для редактирования в веб-клиенте и как это исправить

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

При работе со старыми конфигурациями, такими как Управление торговлей 10.3, разработчики часто сталкиваются с проблемой: при попытке открыть документ или справочник в веб-клиенте (например, для работы на ТСД) данные отображаются только для чтения. При этом у пользователя могут быть полные права, но кнопки записи и проведения отсутствуют или неактивны. В этой статье мы подробно разберем, почему это происходит и как настроить полноценную работу в веб-интерфейсе.

Разберем причину: Обычные формы против Управляемых

Основная причина кроется в архитектуре платформы 1С:Предприятие 8. Веб-клиент спроектирован для работы исключительно с управляемыми формами. Конфигурация УТ 10.3 базируется на «обычных» (толстых) формах, которые физически не могут быть отображены в браузере.

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

Шаг 1. Настройка режима использования управляемых форм

Прежде всего, нам необходимо убедиться, что конфигурация вообще позволяет использовать управляемый интерфейс. Для этого перейдем в свойства корневого узла конфигурации в дереве объектов. Нам нужно найти параметр Режим использования управляемых форм в обычном приложении (Managed application interface mode).

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

Шаг 2. Создание управляемой формы объекта

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

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

Важный нюанс: Многие разработчики опасаются, что создание управляемой формы «сломает» работу обычных пользователей в офисе. Выясним, так ли это. В окне свойств объекта на закладке «Формы» есть два раздельных списка: «Основные формы» и «Дополнительные». Платформа позволяет одновременно хранить и обычные, и управляемые формы. Пользователи «толстого» клиента продолжат видеть старые формы, а пользователи веб-клиента — новые.

Шаг 3. Разделение серверной и клиентской логики

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

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


&НаКлиенте
Процедура КомандаВыполнитьНаТСД(Команда)
    // Здесь только интерфейсная логика
    Предупреждение("Начинаем обработку...");
    ВыполнитьДействиеНаСервере();
КонецПроцедуры

&НаСервере
Процедура ВыполнитьДействиеНаСервере()
    // Здесь работа с данными, запросы, проведение
    Объект.Дата = ТекущаяДатаСеанса();
    Объект.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры

Шаг 4. Адаптация общих модулей и вызов функций

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

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

Шаг 5. Отказ от синхронных вызовов

Веб-клиент крайне чувствителен к методам, которые приостанавливают выполнение кода, таким как Вопрос() или Предупреждение(). Если при записи документа в УТ 10.3 срабатывает типовой код с модальным окном, веб-клиент выдаст ошибку, и редактирование станет невозможным.

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


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВопроса", ЭтотОбъект);
    ПоказатьВопрос(ОписаниеОповещения, "Провести документ?", РежимДиалогаВопрос.ДаНет);
    // Отменяем стандартную запись, чтобы дождаться ответа пользователя
    Отказ = Истина; 
КонецПроцедуры

&НаКлиенте
Процедура ПослеВопроса(Результат, ДополнительныеПараметры) Экспорт
    Если Результат = КодВозвратаДиалога.Да Тогда
        ЭтотОбъект.Записать(Новый ПараметрыЗаписи(РежимЗаписиДокумента.Проведение));
    КонецЕсли;
КонецПроцедуры

Резюме для реализации полноценного доступа

Подведем итог проделанной работы. Если вы столкнулись с режимом «Только просмотр» в веб-клиенте на базе УТ 10.3, выполните следующие действия:

  1. Проверьте, что в конфигурации разрешено использование управляемых форм.
  2. Создайте вручную управляемую форму для объекта и назначьте её основной управляемой формой.
  3. Убедитесь, что в модуле формы нет обращений к клиентским процедурам «толстого» клиента.
  4. Проверьте права доступа: функциональные опции не должны скрывать реквизиты, необходимые для редактирования.
  5. Если работа ведется через ТСД, убедитесь, что все используемые общие модули доступны серверу.

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

← На главную