При использовании устаревших или сильно переработанных конфигураций на обычных формах (таких как 1С:Управление торговлей 10.3) перед разработчиками часто возникает задача перевода части пользователей на работу в веб-браузере под управлением Linux. Для этого требуется разработать специализированные рабочие места (АРМ) на управляемых формах с современным интерфейсом «Такси», сохранив при этом основной функционал системы.
Рассмотрим подробно, как правильно перевести конфигурацию УТ 10.3 на платформу 1С 8.3, настроить режим совместимости и реализовать АРМ для работы через веб-клиент.
Первый шаг при решении этой задачи — запуск базы данных на платформе 1С:Предприятие 8.3. Однако при попытке полностью отключить режим совместимости в свойствах конфигурации или установить его в значение Не использовать разработчики неизбежно сталкиваются с большим количеством ошибок компиляции и синтаксиса. Это связано со спецификой кода 8.2, используемого в УТ 10.3.
Проанализируем правильный порядок настройки свойств корневого узла конфигурации:
Версия 8.2.13 или Версия 8.2.16 (в зависимости от исходных настроек вашей версии УТ 10.3). Это позволит всей базовой логике и обычным формам работать без ошибок.Режим совместимости интерфейса в значение Такси или Такси. Разрешить Версия 8.2.Использовать управляемые формы в толстом клиенте в обычном режиме.После публикации базы на веб-сервере (Apache или IIS) платформа 1С будет автоматически отображать все управляемые формы в интерфейсе «Такси» при подключении через браузер или тонкий клиент.
Разберем основные моменты, на которые необходимо обратить внимание при написании управляемых форм АРМ внутри конфигурации УТ 10.3:
1. Настройка общих модулей
В типовой УТ 10.3 для многих общих модулей включены флаги Клиент (обычное приложение) и Сервер, но выключен флаг Клиент (управляемое приложение). Если вызван метод такого модуля напрямую из клиентского кода управляемой формы в веб-клиенте, возникнет ошибка выполнения.
Для решения этой проблемы необходимо у используемых модулей включить флаг Клиент (управляемое приложение) либо вызывать обработку данных строго через серверные процедуры формы с инструкциями препроцессору:
&НаСервере
Процедура ОбработатьДанныеНаСервере()
// Вызов серверного кода УТ 10.3
МодульУчета.ЗаполнитьДокумент(Объект);
КонецПроцедуры
2. Отказ от модальности и синхронных вызовов
В веб-клиенте и при работе под Linux синхронные вызовы (такие как Вопрос(), Предупреждение(), ОткрытьФормуМодально()) не поддерживаются. При проектировании АРМ все интерактивные действия следует реализовывать через асинхронные методы с описателями оповещения:
&НаКлиенте
Процедура ЗапроситьПодтверждение(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Продолжить проведение документа?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопрос(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ПровестиДокументНаСервере();
КонецЕсли;
КонецПроцедуры
3. Изоляция от объектов обычного приложения
В веб-клиенте обычные формы не физически не отображаются. Попытка вызова формы объекта через ПолучитьФорму() без указания управляемой формы приведет к исключению. Веб-пользователям должны быть доступны исключительно элементы и интерфейсы управляемых форм.
Если конфигурация УТ 10.3 сильно переписана и внесение изменений в общие модули или структуры метаданных нежелательно, рассмотрим второй архитектурный подход — создание изолированного АРМ.
Такой подход полностью изолирует пользователей веб-клиента от устаревшего кода 8.2 и гарантирует высокую скорость работы АРМ без необходимости доработки типовых механизмов УТ 10.3.