При работе с платформой 1С:Предприятие 8.2 и 8.3 пользователи часто сталкиваются с ситуацией, когда необходимо запустить старую внешнюю обработку (например, для настройки торгового оборудования или весов) в новой, пустой базе. Проблема заключается в том, что по умолчанию современные базы создаются с ориентацией на управляемый интерфейс. В результате при открытии файла через Ctrl+O обработка либо выдает ошибку, либо отображает абсолютно пустое окно без кнопок и полей ввода. Проанализируем причины такого поведения и разберем по шагам способы решения этой задачи.
Основная причина «пустого окна» кроется в различии архитектур. Старые обработки используют обычные формы, которые предназначены для работы в режиме Толстого клиента и Обычного приложения. Современные конфигурации по умолчанию запускаются в режиме управляемого приложения, где механизмы отрисовки окон работают иначе. Если система не проинструктирована должным образом, она просто не понимает, как отобразить элементы управления старого формата.
Рассмотрим самый быстрый способ, не требующий глубокого изменения настроек конфигурации. Мы можем заставить платформу запустить сеанс пользователя именно в том режиме, который необходим для старой обработки. Для этого выполним следующие действия:
/RunModeOrdinaryApplication
Этот параметр принудительно открывает базу в режиме «Обычного приложения», игнорируя настройки конфигурации по умолчанию. После этого в верхней части окна появится привычное «старое» меню (Файл, Правка, Операции), и через него можно будет успешно открыть внешнюю обработку.
Если планируется использовать базу постоянно именно для работы со старыми инструментами, разберем, как изменить глобальные настройки самой информационной базы. Для этого проанализируем настройки корневого объекта конфигурации:
Обычное приложение.Важный нюанс: Если вы создали абсолютно новую конфигурацию «с нуля», то даже после смены режима запуска вы можете увидеть пустое серое поле без верхнего меню. Это происходит потому, что в базе не создан ни один объект типа Интерфейс. В режиме обычного приложения меню формируется именно на основе этого объекта.
Бывают ситуации, когда нам нужно оставить современный интерфейс, но при этом иметь возможность открывать старые обработки. Посмотрим, как настроить такую «гибридную» работу. В свойствах конфигурации в Конфигураторе необходимо найти и установить флаг:
Использовать обычные формы в управляемом приложении
Когда эта опция включена, платформа будет пытаться эмулировать работу старого движка внутри нового окна. Однако помните, что для успешного открытия такой обработки все равно потребуется запуск через Толстый клиент. Тонкий клиент физически не содержит программного кода для отрисовки обычных форм.
Проанализируем специфическую ситуацию, упомянутую в обсуждении: обработка открывается, заголовок окна виден, но внутри — пустота. Это часто связано с настройками языков. В управляемых формах (и иногда в обычных при определенных условиях) элементы интерфейса, у которых не задан заголовок на текущем языке системы, могут не отображаться вовсе.
Выясним причину: если обработка была написана, например, в конфигурации, где основным языком был «Русский», а ваша новая пустая база создана с языком по умолчанию «Английский» (или наоборот), платформа может «потерять» надписи на кнопках и сами кнопки. Для исправления ситуации выполним следующие шаги:
ru (Русский)./L ru.Если вы как разработчик хотите обеспечить запуск старой обработки из кода управляемого приложения, рассмотрим пример использования метода УстановитьБезопасныйРежим и работы с ВнешниеОбработки. Но помните, что вызов обычных форм из управляемого интерфейса требует особого внимания к контексту исполнения.
Пример программного открытия внешней обработки (для Толстого клиента):
// Пример открытия обработки программно
ПутьКФайлу = "C:\MyFolder\MyProcessing.epf";
Обработка = ВнешниеОбработки.Создать(ПутьКФайлу, Ложь);
Обработка.ПолучитьФорму().Открыть();
В данном примере функция ПолучитьФорму() без параметров вернет именно основную обычную форму обработки, если база запущена в соответствующем режиме.
Выясним, чем отличается запуск через разные типы клиентов. Для работы со «старым меню» и старыми обработками в настройках информационной базы (в списке выбора баз) в поле Тип клиента всегда должно стоять Толстый клиент. В режиме Тонкого клиента вы получите ошибку о невозможности создания объекта или попытку открыть форму, которая завершится неудачей. Это критически важно для корректной работы с драйверами весов и другого торгового оборудования, так как их COM-объекты часто требуют прямого доступа к памяти, который обеспечивает только Толстый клиент.
Подведем итог наших действий для создания идеальной среды под старые обработки:
Следуя этим инструкциям, мы получим полнофункциональное «старое» окружение 1С, в котором любая внешняя обработка будет работать так, как было задумано её автором.