В версии 8.2 и старше: приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере.
Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий:
- Передать файл внешней обработки на сервер
- Подключить внешнюю обработку
- Открыть форму внешней обработки
Чтобы передать файл на сервер, его нужно поместить во временное хранилище. Для этого сначала на клиенте, в обработчике команды открытия внешней обработки, методом глобального контекста ПоместитьФайл() мы помещаем файл из локальной файловой системы во временное хранилище.
В четвертом параметре этого метода указывается признак интерактивного режима выбора файла внешней обработки. Если этот параметр Истина, то появляется диалог выбора файла, в котором можно выбрать файл для помещения в хранилище. В нашем примере этот параметр — Ложь, а путь к файлу, данные из которого будут помещены во временное хранилище, явно задан во втором параметре метода.
При вызове метода ПоместитьФайл() первым его параметром, АдресХранилища, мы указываем пустую строку. После выполнения метода в нее будет помещен путь к файлу внешней обработки во временном хранилище. Этот путь мы используем для того, чтобы подключить внешнюю обработку.
Подключение внешней обработки выполняется на сервере методом Подключить() менеджера внешних обработок. В качестве параметра ему передается путь к файлу внешней обработки во временном хранилище — АдресХранилища. Возвращает этот метод имя подключенной внешней обработки, — ИмяОбработки, — которое мы используем для того, чтобы открыть форму этой обработки.
Для открытия формы внешней обработки используется метод глобального контекста ОткрытьФорму(), в который передается имя формы в виде следующей строки: "ВнешняяОбработка."+ ИмяОбработки +".Форма". В приведенном варианте открывается основная форма обработки.
При работе с внешними обработками нужно учитывать, что по-умолчанию они запускаются в безопасном режиме исполнения программного кода. Это значит, что некоторые возможности встроенного языка будут для них недоступны. Если есть уверенность, что внешняя обработка не содержит вредоносного кода, ее можно подключить в обычном режиме исполнения программного кода. Для этого используется третий параметр метода Подключить() менеджера внешних обработок.
Подробнее о режиме безопасного исполнения программного кода можно прочитать в документации: 1С:Предприятие 8.2. Руководство разработчика, Раздел 5.5.4.3: Объекты конфигурации — Ветвь конфигурации «Общие» — Роли и права доступа — Безопасный режим работы.
Подробнее об использовании метода ПоместитьФайл() можно прочитать в синтакс-помощнике: Глобальный контекст — Процедуры и функции работы с файлами.
Подробнее об использовании метода Подключить() можно прочитать в синтакс-помощнике: Прикладные объекты — Внешние обработки и отчеты — ВнешниеОбработкиМенеджер — Методы.
У объекта ВнешняяОбработкаОбъект, есть свойство ИспользуемоеИмяФайла, доступное в контексте сервера — может пригодиться.
Жизненный пример
Форма с деревом значений, в котором перечислены обработки из каталога на сервере:
При двойном щелчке по названию файла — происходит его программное открытие:
В статье рассматривается способ программного обращения к внешней обработке или отчету и открытие его формы для отображения пользователю.
- Программное открытие внешней обработки
- Программное открытие внешнего отчета
- Специальные предложения
- См. также
- Полезные процедуры и функции для программиста 141
- Таблица значений. Нюансы 192
- [Шпаргалка] Программное создание элементов формы 284
- Агрегатные функции СКД, о которых мало кто знает 343
- Три костыля. Сказ про фокусы в коде 123
- Отслеживание выполнения фонового задания 141
- Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 254
- Фоновое выполнение кода в 1С — это просто 120
- Процедура ПриКомпоновкеРезультата 270
- СКД — наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты 131
- СКД — использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ 148
- Регистры сведений. За кулисами 129
- "Меньше копипаста!", или как Вася универсальную процедуру писал 183
- Создание отчетов с помощью СКД — основные понятия и элементы 209
- Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017 179
- Регистры накопления. Структура хранения в базе данных 176
- Выполнение внешней обработки в фоновом задании 149
- Выгрузка документа по условию 5
- Как прикрутить ГУИД к регистру сведений 23
- О расширениях замолвите слово. 193
- Git-репозитории для 1С-кода (опыт использования при небольших проектах) 202
- Трюки с внешними источниками данных 166
- Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев 120
- Этюды по программированию. Хитрости создания расширений для конфигураций на БСП. Часть 1. 114
- Возможности типовых шаблонов ограничения доступа на уровне записей (RLS) 166
- Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария 222
- EnterpriseData – часть 2. Процесс выгрузки данных 127
- Новый подход к обмену данными EnterpriseData 207
- EnterpriseData — пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации 119
- Программное заполнение пользовательских параметров и отборов СКД 136
- Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 127
- Вспомогательные инструкции в коде 1С 106
- Произвольный код в фоновом режиме 165
- Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C 147
- Тестер: частые вопросы 156
- Повышаем эффективность разработки правил обмена 124
- Введение в механизм представлений в ЗУП ред. 3 156
- Как сделать запрос на изменение данных 75
- Строим графы средствами 1С (без GraphViz) 43
Программное открытие внешней обработки
Программное открытие внешней обработки состоит из нескольких этапов:
- Помещение внешней обработки во временное хранилище;
- Передача внешней обработки на сервер;
- Подключение внешней обработки на сервере;
- Открытие формы подключенной обработки на клиенте.
Рассмотрим описанные действия на примере. Открытие обработки производится при нажатии на кнопку (процедура КомандаОткрытьВнешнююОбработку () ).
Для передачи файлов с клиента на сервер (и наоборот) предназначено временное хранилище. Помещение файла во временное хранилище осуществляется методом
После успешного помещения файла во временное хранилище происходит передача управления в процедуру, указанную в описании оповещения (параметр ОписаниеОповещенияОЗавершении > ).
Далее вызывается серверная процедура ПодключитьВнешнююОбработкуНаСервере () , в которой осуществляется подключение внешней обработки функцией Подключить () менеджера внешних обработок. В первом параметре содержится адрес временного хранилища с внешней обработкой. Функция возвращает имя подключенной внешней обработки, по которому к ней можно будет обращаться.
Заключительным этапом осуществляется открытие внешней обработки методом ОткрытьФорму () .
Данный код будет отрабатывать без ошибок даже в том случае, если у пользователя нет прав на открытие внешних обработок.
В представленном примере внешняя обработка должна храниться по фиксированному пути и иметь определенное имя: «D:МояОбработка.epf». Для предоставления пользователю возможности интерактивно выбрать внешнюю обработку необходимо немного доработать код:
Программное открытие внешнего отчета
Алгоритм программного открытия формы внешнего отчета идентичен открытию формы внешней обработки. Отличие заключается в том, что для подключения отчета необходимо использовать тип ВнешниеОтчетыМенеджер вместо типа ВнешниеОбработкиМенеджер .
Рассмотрим пример. Открытие отчета производится при нажатии на кнопку (процедура КомандаОткрытьВнешнийОтчет () ):
Остались вопросы?
Спросите в комментариях к статье.
Прописываем в форме следующий код:
Затем получаем форму на клиенте вызовом процедуры ПолучитьФормуВнешнегоОтчета(ИмяФормы), где ИмяФормы — строка с именем нужной формы.
Форму требовалось вызывать единожды, поэтому проверку на повторное подключение не делал, выдает ошибку при повторном вызове, как вариант — подключение реализовывать при открытии данной формы, а полученное имя хранить в строковом реквизите.
Идея сыровата, но может кому поможет.
Специальные предложения
См. также
Полезные процедуры и функции для программиста 141
Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.
07.10.2019 9112 HostHost 23
Таблица значений. Нюансы 192
Обзор некоторых аспектов использования общеизвестного инструмента 1С.
01.10.2019 8658 Yashazz 35
[Шпаргалка] Программное создание элементов формы 284
Программное создание практически всех популярных элементов формы.
06.09.2019 9941 rpgshnik 41
Агрегатные функции СКД, о которых мало кто знает 343
Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.
05.09.2019 13218 ids79 44
Три костыля. Сказ про фокусы в коде 123
Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.
03.09.2019 9319 YPermitin 68
Отслеживание выполнения фонового задания 141
Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.
17.08.2019 10681 ids79 16
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 254
Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.
08.08.2019 14344 ids79 30
Фоновое выполнение кода в 1С — это просто 120
Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.
02.08.2019 11509 avalakh 21
Процедура ПриКомпоновкеРезультата 270
26.07.2019 12588 2 vasilev2015 54
СКД — наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты 131
Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.
26.07.2019 12984 ids79 6
СКД — использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ 148
Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «<…>», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.
17.07.2019 11377 ids79 27
Регистры сведений. За кулисами 129
Небольшие заметки по внутреннему устройству регистров сведений.
09.07.2019 8906 YPermitin 12
"Меньше копипаста!", или как Вася универсальную процедуру писал 183
Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.
04.07.2019 8139 SeiOkami 49
Создание отчетов с помощью СКД — основные понятия и элементы 209
Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.
25.06.2019 21222 ids79 17
Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017 179
Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.
11.06.2019 12786 dmurk 134
Регистры накопления. Структура хранения в базе данных 176
Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.
16.05.2019 19221 YPermitin 27
Выполнение внешней обработки в фоновом задании 149
Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).
11.05.2019 11415 Eret1k 23
Выгрузка документа по условию 5
Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий. А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.
25.04.2019 6242 m-rv 2
Как прикрутить ГУИД к регистру сведений 23
. и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.
16.04.2019 8889 m-rv 16
О расширениях замолвите слово. 193
О чём стоит задуматься при принятии решения о создании расширения конфигурации…
07.04.2019 17920 ellavs 122
Git-репозитории для 1С-кода (опыт использования при небольших проектах) 202
Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий").
28.03.2019 14080 ellavs 83
Трюки с внешними источниками данных 166
Некоторые трюки для преодоления ограничений внешних источников данных.
14.03.2019 14429 YPermitin 52
Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев 120
Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.
26.02.2019 10509 Vladimir Litvinenko 23
Этюды по программированию. Хитрости создания расширений для конфигураций на БСП. Часть 1. 114
Некоторые нюансы, если вы захотите создавать свои расширения.
04.02.2019 10906 milkers 8
Возможности типовых шаблонов ограничения доступа на уровне записей (RLS) 166
Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный
03.02.2019 17450 ids79 9
Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария 222
Первая часть цикла публикаций, посвященных Vanessa-ADD
09.01.2019 27704 Vladimir Litvinenko 69
EnterpriseData – часть 2. Процесс выгрузки данных 127
Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».
26.12.2018 13899 ids79 27
Новый подход к обмену данными EnterpriseData 207
Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).
14.12.2018 23292 ids79 72
EnterpriseData — пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации 119
В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0
16.11.2018 20485 ids79 20
Программное заполнение пользовательских параметров и отборов СКД 136
Публикация представляет из себя краткие примеры того, как можно заполнять параметры СКД программно так, чтобы все параметры и отборы были доступны в быстрых настройках и в обычных (типовых) настройках параметров и отборов СКД.
13.11.2018 22293 Unk92 19
Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 127
Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП
10.11.2018 22386 ids79 40
Вспомогательные инструкции в коде 1С 106
Помогаем редактору кода 1С помогать нам писать и анализировать код.
15.10.2018 21590 tormozit 100
Произвольный код в фоновом режиме 165
Задача: реализовать выполнение произвольного кода в фоновом режиме без изменения конфигурации, т.е. во внешней обработке.
03.09.2018 15844 nikita0832 42
Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C 147
У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.
23.08.2018 23017 Rain88 42
Тестер: частые вопросы 156
Ошибкам бой — тесты норма жизни!
25.07.2018 21084 grumagargler 24
Повышаем эффективность разработки правил обмена 124
Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.
25.06.2018 20323 olegtymko 47
Введение в механизм представлений в ЗУП ред. 3 156
В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".
04.06.2018 25707 xrrg 82
Как сделать запрос на изменение данных 75
В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.
01.06.2018 22273 m-rv 21
Строим графы средствами 1С (без GraphViz) 43
Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали.
23.05.2018 18070 slozhenikin_com 19