1с открыть внешнюю обработку. Как программно открыть внешнюю обработку? Открытие внешней обработки как объекта

Главная Для начинающих разработчиков Учимся программировать

Как программно открыть внешнюю обработку?

В версии 8.2 приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере.

Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий:

  • передать файл внешней обработки на сервер,
  • подключить внешнюю обработку,
  • открыть форму внешней обработки.
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) //Помещаем обработку во временном хранилище АдресХранилища = ""; Результат = ПоместитьФайл(АдресХранилища, "C:\ВнешняяОбработка.epf", Ложь); ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища); // Откроем форму подключенной внешней обработки ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма"); КонецПроцедуры &НаСервере Функция ПодключитьВнешнююОбработку(АдресХранилища) Возврат ВнешниеОбработки.Подключить(АдресХранилища); КонецФункции

Чтобы передать файл на сервер, его нужно поместить во временное хранилище. Для этого сначала на клиенте, в обработчике команды открытия внешней обработки, функцией ПоместитьФайл() мы помещаем файл из локальной файловой системы во временное хранилище.

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

При вызове функции ПоместитьФайл() первым её параметром, АдресХранилища , мы указываем пустую строку. После выполнения функции в эту переменную будет помещен путь к файлу внешней обработки во временном хранилище. Этот путь мы используем для того, чтобы подключить внешнюю обработку.

Подключение внешней обработки выполняется на сервере методом Подключить() менеджера внешних обработок. В качестве параметра ему передается путь к файлу внешней обработки во временном хранилище - АдресХранилища . Возвращает этот метод имя подключенной внешней обработки, - ИмяОбработки , - которое мы используем для того, чтобы открыть форму этой обработки.

Для открытия формы внешней обработки используется функция ОткрытьФорму() , в которую передается имя формы в виде следующей строки: "ВнешняяОбработка."+ ИмяОбработки +".Форма" . В приведенном варианте открывается основная форма обработки. Можно открыть также и неосновную форму обработки - об этом рассказывается в вопросе Как получить неосновную форму обработки? .

При работе в внешними обработками нужно учитывать, что по-умолчанию они запускаются в безопасном режиме исполнения программного кода. Это значит, что некоторые возможности встроенного языка будут для них недоступны. Если есть уверенность, что внешняя обработка не содержит вредоносного кода, ее можно подключить в обычном режиме исполнения программного кода. Для этого используется третий параметр метода Подключить() менеджера внешних обработок.

Подробнее о режиме безопасного исполнения программного кода можно прочитать в документации.

Бывает, что для работы необходимо воспользоваться внешней обработкой или отчетом, но не всегда это сразу удается. Иногда при попытке открыть внешнюю обработку либо отчет с помощью пункта меню «Файл» и далее - «Открыть» возникает сообщение об ошибке, заключающейся в нарушении прав доступа.

Но сначала рассмотрим, как вообще открываются внешние отчеты и обработки в «1С:Бухгалтерии 8.3 » версии 3.0. Обычно они представляют собой скачанный из Интернета или полученный другим способом архив. После того, как он будет сохранен, например, на рабочий стол, с помощью двойного щелчка мы сможем увидеть его содержимое.

Действия для обычного интерфейса:

  1. Нажимаем на нужный файл правой кнопкой мышки, выбираем пункт контекстного меню «Копировать».
  2. Возвращаемся на рабочий стол, нажимаем правой кнопкой на свободное место и выбираем «Вставить» (или просто перетаскиваем файл из архива на рабочий стол).
  3. Можно также извлечь файл из архива сразу в нужное место на диске (в нашем примере это рабочий стол).
  4. Теперь выбираем файл с обработкой на рабочем столе и нажимаем «Открыть».
  5. Обработка будет открыта в программе, и ею можно будет пользоваться.

Действия для управляемого интерфейса (например, «Такси»)

  1. Открываем непосредственно из файла.
  2. В меню выбираем пункт «Файл», далее - «Открыть».
  3. В открывшемся окне переходим на рабочий стол, выбираем файл обработки и нажимаем «Открыть».

Для большего удобства можно создать специальную папку для обработок и все их хранить в ней.

Если же открыть обработку или отчет не получается, можно воспользоваться одним из двух вариантов действий.

Первый способ

Можно зарегистрировать обработку в справочнике, называющемся «Дополнительные отчеты и обработки». Итак, регистрируем обработку в базе.

  1. Заходим в раздел администрирования, выбираем из списка пункт печатных форм, отчетов и обработок.
  2. В появившемся окне ставим галочку в пункте «Дополнительные отчеты и обработки» и открываем ссылку с аналогичным названием.
  3. В новом окне нажимаем на «Создать».
  4. Читаем предупреждение безопасности и нажимаем «Продолжить».
  5. В следующем окне выбираем место нахождения файла с обработкой и нажимаем «Открыть».

Важно!

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

  1. Если ошибки не возникло, находим в «Командах» пункт «Размещение».
  2. В окне «Разделы командного интерфейса» отмечаем галочкой раздел операций.
  3. В таблице находим «Быстрый доступ» и открываем его.
  4. Выбираем всех пользователей и нажимаем «ОК».
  5. Нажимаем кнопку «Записать и закрыть».

Обработка успешно зарегистрирована. Чтобы ее открыть, потребуется зайти в раздел операций, выбрать пункт дополнительных обработок, выделить нужную и нажать на «Выполнить».

Второй способ

Если обработка не поддерживает описанную в первом варианте регистрацию, можно поступить по-другому, а именно: снова включить возможность открывать обработки в базе с помощью меню «Файл» правой кнопкой мышки «Открыть».

  1. Заходим в конфигуратор базы.
  2. Выбираем в меню «Администрирование», далее - «Пользователи».
  3. Двойной щелчок по нужному пользователю.
  4. Переходим на закладку с названием «Прочие».
  5. Устанавливаем галочку на «Интерактивном открытии внешних отчетов и обработок».
  6. Нажимаем «ОК».
  7. Закрываем конфигуратор, а также, если она была открыта, базу.
  8. Снова заходим в базу и открываем нужный нам отчет в меню «Файл» с помощью команды «Открыть».

Рассмотрим в данной статье пошаговую инструкцию по созданию внешней обработки в 1С 8.3 в режиме управляемого приложения, соответственно, будем использовать управляемые формы. А самое главное — мы научимся подключать её к механизму «внешних обработок» конфигураций 1С, построенных на библиотеке стандартных подсистем версии 2.0 и новее.

Задача будет следующая: создать простейшую внешнюю обработку, которая будет выполнять групповое действие над справочником «Номенклатура», а именно, устанавливать выбранный процент ставки НДС для указанной группы номенклатуры.

Для этого сразу произведем необходимую настройку в программе (рассматривается конфигурация 1С 8.3: «Бухгалтерия предприятия 3.0» на управляемых формах).

Установка данного флажка дает нам возможность использовать внешние обработки.

Создание новой внешней обработки в 1С 8.3 на примере

Теперь переходим в конфигуратор. В меню «Файл» выбираем «Новый…». Откроется окно выбора вида создаваемого файла. Выбираем «Внешняя обработка»:

Откроется окно новой внешней обработки. Сразу зададим ей имя. Оно будет предложено при сохранении обработки на диск:

Добавим новую управляемую форму обработки. Указываем, что это форма обработки и она является основной:

На форме у нас будет два реквизита:

  • ГруппаНоменклатуры – ссылка на справочник «Номенклатура»;
  • ВыбСтавкаНДС – ссылка на перечисление Ставки НДС.

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

Очередность реквизитов можно менять стрелками «Вверх» – «Вниз»:

Получите 267 видеоуроков по 1С бесплатно:

Осталось добавить кнопку «Установить». В управляемых формах нельзя просто так добавить кнопку на форму. Даже если добавить её в структуру элементов формы, на самой форме её видно не будет. Кнопку обязательно нужно связать с командой, которую она будет выполнять. Переходим к закладке «Команды» и добавляем команду «УстановитьСтавкуНДС». В свойствах команды создаем действие. Обработчик команды выбираем «На клиенте». Команду можно добавить на форму также простым «перетаскиванием» в раздел с элементами формы.

В модуле формы будет создана одноименная процедура. В ней вызовем процедуру на сервере:

&НаКлиенте

Процедура УстановитьСтавкуНДС(Команда)

УстановитьСтавкуНДСНаСервере();

КонецПроцедуры

В процедуре на сервере напишем небольшой запрос и действия, связанные с установкой ставки НДС:

&НаСервере

Процедура УстановитьСтавкуНДСНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)
| И НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа»;

Запрос.УстановитьПараметр(«ГруппаНоменклатуры», ГруппаНоменклатуры);
РезЗапроса = Запрос.Выполнить();
ВыбДетЗаписи = РезЗапроса.Выбрать();

Пока ВыбДетЗаписи.Следующий() Цикл

Попытка
СпрНомОбъект.Записать();
Исключение
Сообщить(«Ошибка записи объекта «»» + СпрНомОбъект + «»»!
|» + ОписаниеОшибки());
КонецПопытки;

КонецЦикла;

КонецПроцедуры

Возвращаемся на закладку «Форма», добавляем на форму кнопку и связываем ее с командой:

Как таковая наша обработка готова к использованию. Чтобы ее вызвать, в режиме «1С Предприятия» нужно зайти в меню «Файл» – «Открыть» и выбрать созданный файл.

Однако работа в таком режиме удобна для отладки обработки, а для работы пользователю не совсем подходит. Пользователи привыкли, чтобы у них все было «под рукой», то есть в самой базе данных.

Для этого и служит раздел «Дополнительные отчеты и обработки».

Но чтобы добавить туда нашу обработку, нужно сначала дать ей описание и сообщить программе ее свойства.

Описание функции «Сведения О Внешней Обработке»

Приведу пример содержимого данной функции. Она должна быть экспортной и, соответственно, располагаться в модуле обработки:

Функция СведенияОВнешнейОбработке() Экспорт

ДанныеДляРег = Новый Структура();
ДанныеДляРег.Вставить(«Наименование», «Установка ставки НДС»);
ДанныеДляРег.Вставить(«БезопасныйРежим», Истина);
ДанныеДляРег.Вставить(«Версия», «ver.: 1.001»);
ДанныеДляРег.Вставить(«Информация», «Обработка для установки ставки НДС в справочнике Номенклатура»);
ДанныеДляРег.Вставить(«Вид», «ДополнительнаяОбработка»);

ТабЗнКоманды = Новый ТаблицаЗначений;
ТабЗнКоманды.Колонки.Добавить(«Идентификатор»);
ТабЗнКоманды.Колонки.Добавить(«Использование»);
ТабЗнКоманды.Колонки.Добавить(«Представление»);

НовСтрока = ТабЗнКоманды.Добавить();
НовСтрока.Идентификатор = «ОткрытьОбработку»;
НовСтрока.Использование = «ОткрытиеФормы»;
НовСтрока.Представление = «Открыть обработку»;
ДанныеДляРег.Вставить(«Команды», ТабЗнКоманды);

Возврат ДанныеДляРег;

КонецФункции

Чтобы лучше понять, какие поля структуры регистрационных данных нужно использовать, посмотрим реквизиты справочника «Дополнительные отчеты и обработки»:

Как видим, все довольно просто. Не совпадает лишь один реквизит: «ВариантЗапуска» – «Использование». Если посмотреть код одного из общих модулей, то мы увидим, как возникает связка этих полей:

Чтобы определить, какие поля структуры обязательны, можно сначала не описывать ее, просто создать пустую, а далее воспользоваться отладчиком. Если трассировать модули при регистрации обработки, сразу становится ясно, какие поля требуются, а какие нет.

Подключение внешней обработки в 1С 8.3

Для работы с внешними обработками (а внешняя печатная форма тоже является внешней обработкой) существует объект ВнешниеОбработки.

Рассмотрим два возможных случая:

Внешняя обработка хранится на диске отдельно от информационной базы

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

Открытие формы внешней обработки

Для программного открытия формы внешней обработки в 1С используется функция ПолучитьФорму() объекта ВнешниеОбработки. Функция имеет несколько параметров. Рассмотрим простое открытие основной формы обработки:


Форма= ВнешниеОбработки. ПолучитьФорму(АдресФайла) ;
Форма. Открыть() ;

Для открытия неосновной формы внешней обработки необходимо указать ее имя.

//В переменной АдресФайла находится полный путь к файлу внешней обработки
Форма= ВнешниеОбработки. ПолучитьФорму(АдресФайла, "НеосновнаяФорма" ) ;
Форма. Открыть() ;

Открытие внешней обработки как объекта

Для того чтобы получить внешнюю обработку как объект используется функция Создать() объекта ВнешниеОбработки.

//В переменной АдресФайла находится полный путь к файлу внешней обработки
ОбъектОбработки= ВнешниеОбработки. Создать(АдресФайла) ;

По умолчанию все обработки открываются в безопасном режиме. Чтобы его отключить, используются следующие параметры:

//В переменной АдресФайла находится полный путь к файлу внешней обработки

Внешняя обработка или печатная форма сохранена в информационной базе

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

Для открытия внешней обработки нужно:

  1. Получить ее из хранилища.
  2. Сохранить файл с обработкой на диск.
  3. Открыть форму или получить объект обработки.
  4. Если мы имеем дело с внешней печатной формой, то можно заполнить стандартный реквизит СсылкаНаОбъект и вызвать экспортную функцию Печать.

//В переменной СпрСсылка находится ссылка на элемент справочника ВнешниеОбработки
ДвДанные= СпрСсылка. ХранилищеВнешнейОбработки. Получить() ;
АдресФайла= ПолучитьИмяВременногоФайла() ;
ДвДанные. Записать(АдресФайла) ;
ОбъектОбработки= ВнешниеОбработки. Создать(АдресФайла, Ложь ) ;