Как открыть форму обработки в управляемом приложении
В версии 8.2 и старше: приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере.
Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий:
- Передать файл внешней обработки на сервер
- Подключить внешнюю обработку
- Открыть форму внешней обработки
Чтобы передать файл на сервер, его нужно поместить во временное хранилище. Для этого сначала на клиенте, в обработчике команды открытия внешней обработки, методом глобального контекста ПоместитьФайл() мы помещаем файл из локальной файловой системы во временное хранилище.
В четвертом параметре этого метода указывается признак интерактивного режима выбора файла внешней обработки. Если этот параметр Истина, то появляется диалог выбора файла, в котором можно выбрать файл для помещения в хранилище. В нашем примере этот параметр - Ложь, а путь к файлу, данные из которого будут помещены во временное хранилище, явно задан во втором параметре метода.
При вызове метода ПоместитьФайл() первым его параметром, АдресХранилища, мы указываем пустую строку. После выполнения метода в нее будет помещен путь к файлу внешней обработки во временном хранилище. Этот путь мы используем для того, чтобы подключить внешнюю обработку.
Подключение внешней обработки выполняется на сервере методом Подключить() менеджера внешних обработок. В качестве параметра ему передается путь к файлу внешней обработки во временном хранилище - АдресХранилища. Возвращает этот метод имя подключенной внешней обработки, - ИмяОбработки, - которое мы используем для того, чтобы открыть форму этой обработки.
Для открытия формы внешней обработки используется метод глобального контекста ОткрытьФорму(), в который передается имя формы в виде следующей строки: "ВнешняяОбработка."+ ИмяОбработки +".Форма". В приведенном варианте открывается основная форма обработки.
При работе с внешними обработками нужно учитывать, что по-умолчанию они запускаются в безопасном режиме исполнения программного кода. Это значит, что некоторые возможности встроенного языка будут для них недоступны. Если есть уверенность, что внешняя обработка не содержит вредоносного кода, ее можно подключить в обычном режиме исполнения программного кода. Для этого используется третий параметр метода Подключить() менеджера внешних обработок.
Подробнее о режиме безопасного исполнения программного кода можно прочитать в документации: 1С:Предприятие 8.2. Руководство разработчика, Раздел 5.5.4.3: Объекты конфигурации - Ветвь конфигурации «Общие» - Роли и права доступа - Безопасный режим работы.
Подробнее об использовании метода ПоместитьФайл() можно прочитать в синтакс-помощнике: Глобальный контекст - Процедуры и функции работы с файлами.
Подробнее об использовании метода Подключить() можно прочитать в синтакс-помощнике: Прикладные объекты - Внешние обработки и отчеты - ВнешниеОбработкиМенеджер - Методы.
У объекта ВнешняяОбработкаОбъект, есть свойство ИспользуемоеИмяФайла, доступное в контексте сервера - может пригодиться.
Жизненный пример
Форма с деревом значений, в котором перечислены обработки из каталога на сервере:
При двойном щелчке по названию файла - происходит его программное открытие:
В этой статье я разберу особенности программного открытия обработок в 1С. Мы узнаем, как открыть форму обработки, как открыть форму внешней обработки из самой внешней обработки, а также как открыть форму внешней обработки из клиентского режима платформы 1С 8.3.
Открыть форму обработки 1С
Начнем с того, что саму по себе открыть программной обработку нельзя. Можно открыть какую-либо из форм обработки. Для программного открытия управляемой формы обработки необходимо использовать метод ОткрытьФорму.
В первой статье, в которой мы начали знакомиться с обработками в 1С, я создал обработку «Обработка для примера» с формой.
В этой статье я покажу, как открыть программно форму этой обработки из другой обработки «Обработка1». Для этого у Обработки1 я создал управляемую форму и команду формы.
В клиентском обработчике команды, напишем код, который будет открывать основную форму обработки.
Какая именно форма обработки будет открыта, можно указать в контекстной подсказке, которая появляется после ввода названия обработки.
После, в результате выполнения команды, в отдельном окне будет открываться форма обработки «Обработка для примера».
Открыть форму внешней обработки 1С
Если нам необходимо, чтобы из одной формы внешней обработки открылась другая форма этой же внешней обработки, то также необходимо использовать метод ОткрытьФорму, как в примере выше, только вместо слова Обработка необходимо написать ВнешняяОбработка.
Разберем пример. Пусть, у внешней обработки будут две формы: Основная и Дополнительная.
На основной форме создадим команду «Открытие дополнительной», при выполнении которой будет открываться дополнительная форма.
У этой команды будет клиентский обработчик события, со следующим кодом:
Теперь, открыв внешнюю обработку, мы сможем из её основной формы открыть дополнительную.
Открыть внешнюю обработку 1С
Выше мы разбирали пример, когда внешняя обработка открыта, и нам нужно открыть форму внешней обработки из самой внешней обработки, но иногда возникают задачи, когда нужно открыть форму внешней обработки из какого-то другого места, зная путь к этой обработке на жестком диске, или выбрав непосредственно файл обработки.
В этой обработке создадим команду, при выполнении которой откроется форма внешней обработки.
В форме обработки напишем следующий код:
Код работает, начиная с платформы 8.3.15.
После выполнения команды, откроется окно выбора файла внешней обработки.
Если файл будет выбран, внешняя обработка откроется.
Статьи про открытие форм:
Статьи по конфигурированию в 1С:
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Есть внешняя обработка, написанная для версии 8.1. Можно ли запустить ее в версии 8.2 так, чтобы работать с ее старой, неуправляемой формой? Обработка нужна всего один раз, для переноса данных, и создавать для нее управляемую форму ради одного раза не хочется.
Для внешних обработок (открываемых из отдельного файла) в управляемом режиме использование обычных форм не поддерживается. Поэтому если в конфигурации, работающей в управляемом режиме, необходимо запустить обработку с неуправляемой формой, и не хочется создавать для этой обработки новую, управляемую форму, то сначала такую обработку нужно включить в состав конфигурации.
Обычные (неуправляемые) формы могут работать только в толстом клиенте. Тонкий и веб-клиенты поддерживают работу только с управляемыми формами.
Поэтому, если нужно открыть обычную форму обработки в управляемом интерфейсе приложения, то это возможно только в толстом клиенте, запущенном в режиме управляемого приложения.
Проще всего запустить толстого клиента в режиме управляемого приложения из конфигуратора, указав это в параметрах: Сервис - Параметры - Запуск 1С:Предприятия - Основные - Толстый клиент (управляемое приложение) .
При этом нужно помнить, что запуск клиентов в управляемом режиме возможен только в том случае, если у конфигурации отключена совместимость в версией 8.1 (свойство Режим совместимости ).
Однако этого недостаточно для того, чтобы платформа откорыла старую, неуправляемую форму обработки.
Возможность использования обычных форм в управляемом режиме регулируется специальным свойством конфигурации - Использовать обычные формы в управляемом приложении . Это свойство нужно установить.
В палитре свойств конфигурации это свойство отображается не всегда, а только в случае, если в параметрах конфигуратора выбран режим редактирования конфигурации Управляемое приложение и обычное приложение (Сервис - Параметры - Общие).
Ну и наконец, у объекта, обычную форму которого вы хотите увидеть в управляемомом режиме, должна существовать единственная основная форма объекта, и эта форма должна быть обычной, неуправляемой. В других случаях (если у объекта нет ни одной основной формы или у объекта есть управляемая основная форма) платформой будет по умолчанию генерироваться или открываться (если она есть) управляемая форма.
Включение механизма внешних обработок в программе
Установка данного флажка дает нам возможность использовать внешние обработки.
Создание новой внешней обработки в 1С 8.3 на примере
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Откроется окно новой внешней обработки. Сразу зададим ей имя. Оно будет предложено при сохранении обработки на диск:
Добавим новую управляемую форму обработки. Указываем, что это форма обработки и она является основной:
На форме у нас будет два реквизита:
В модуле формы будет создана одноименная процедура. В ней вызовем процедуру на сервере:
В процедуре на сервере напишем небольшой запрос и действия, связанные с установкой ставки НДС:
Пока ВыбДетЗаписи.Следующий() Цикл
СпрНомОбъект = ВыбДетЗаписи.Ссылка.ПолучитьОбъект();
СпрНомОбъект.СтавкаНДС = ВыбСтавкаНДС;
Но чтобы добавить туда нашу обработку, нужно сначала дать ей описание и сообщить программе ее свойства.
Приведу пример содержимого данной функции. Она должна быть экспортной и, соответственно, располагаться в модуле обработки:
Функция СведенияОВнешнейОбработке() Экспорт
Чтобы определить, какие поля структуры обязательны, можно сначала не описывать ее, просто создать пустую, а далее воспользоваться отладчиком. Если трассировать модули при регистрации обработки, сразу становится ясно, какие поля требуются, а какие нет.
Подключение внешней обработки в 1С 8.3
Читайте также: