Интернет Windows Android

Как включить использование внешних обработок. Как снять запрет на открытие внешних обработок

Всем привет. Через поиск ничего похожего не нашел, если не прав - ткните носом, буду благодарен.

БП 3.0 (3.0.59.54), платформа 8.3.10.2580. Есть необходимость запустить обработку "УниверсальныйОбменДаннымиXML". Она входит в конфигурацию и ее можно открыть через " " но только под ролью администратора. Но есть необходимость делать это под обычным пользователем. Снимать с поддержки и править права очень не хочется. Сохранил её как внешнюю, отключил проверку прав доступа в коде, открываю под обычным пользователем через меню "Файл" - все нормально открывается. Само собой, это не есть удобно и хочется подключить ее через "Дополнительные ". Ок, добавляю описание через процедуру ПриСозданииНаСервере, подключаю, вывожу в интерфейс пользователя и.. получаю болт. Окно обработки не открывается. Вернее открывается на долю секунды и тут же закрывается. Причем происходит это независимо от прав пользователя, в том числе и под администратором. Может кто подскажет, куда копать?

Код проверки модуля формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// Проверка прав доступа должна располагаться самой первой.
Если Не ПравоДоступа("Администрирование", Метаданные) Тогда
//ВызватьИсключение НСтр("ru = "Использование обработки в интерактивном режиме доступно только администратору."");
КонецЕсли;

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

#Область ОписаниеОбработки
Функция СведенияОВнешнейОбработке() Экспорт
// Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
ПараметрыРегистрации = Новый Структура;

// Объявим еще одну переменную, которая нам потребуется ниже
МассивНазначений = Новый Массив;

// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");

// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
// которые поддерживают механизм ВПФ
МассивНазначений.Добавить("Подсистемы.Администрирование");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);

// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", "Универсальный обмен данными ");

// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);

// Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Обработка для обмена данными между произвольными базами 1С");

// Создадим таблицу команд (подробнее смотрим ниже)
ТаблицаКоманд = ПолучитьТаблицуКоманд();

// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "Универсальный обмен данными XML", "УправляемаяФорма", "ОткрытиеФормы");

// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

// Теперь вернем системе наши параметры
Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()

// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;

// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
#КонецОбласти

При запуске программы Загрузка документов под обычным пользователем возникает ошибка "Установлен безопасный режим. Выполнение операции запрещено".

Эта сложность возникает т.к. для запуска внешней обработки недостаточно прав. Для настройки прав доступа зайдите в базу в режиме 1С Предприятие от имени Администратора и перейдите в раздел Настройки пользователей и прав / Профили групп доступа, нажмите Создать группу.

Введите название группы и отметьте галочками доступные пользователям этой группы роли -

  • Интерактивное открытие внешних отчетов и обработок
  • Использование дополнительных отчетов и обработок

Нажмите Записать и закрыть


Вернитесь в меню Пользователи и выберите из списка сотрудника, который будет работать с программой Загрузка документов. Нажмите Права доступа. В списке профилей отметьте созданный ранее профиль. Нажмите Записать .


Чтобы пользователи могли запустить обработку рекомендуется добавить Загрузку документов к списку внешних обработок. Для этого в меню Администрирование / Печатные формы и обработки / Дополнительные отчеты и обработки создайте новую обработку. Укажите путь к файлу "ЗагрузкаДокументов.epf" и присвойте имя. Укажите размещение обработки в меню, откуда пользователь сможет запустить ее в дальнейшем, например выберите меню Справочники

Нажав на пункт Быстрый доступ вы указываете, кому из пользователей доступна обработка:


После настройки нажмите Записать и закрыть . Для запуска обработки пользователям достаточно будет заново зайти в базу и открыть ее из меню доступа (в примере - Справочники) и нажать Выполнить .


Откройте Меню - Все функции.. . и найдите в списке параметр "Используются профили безопасности" .


Достаточно снять флаг с опции "Используются профили безопасности".


После этого программа будет запускаться успешно.

Программное открытие внешней обработки осуществляется с помощью объекта глобального контекста ВнешниеОбработки, который имеет тип ВнешниеОбработкиМенеджер . Для каждого режима работы платформы 1С (режим обычного приложения и режим управляемого приложения) используются различные методы объекта для работы с внешними обработками.

Запуск внешней обработки в режиме обычного приложения

В обычном приложении необходимо использовать метод Создать() объекта ВнешниеОбработки, в который передается полное имя файла внешней обработки. Метод возвращает объект типа ВнешняяОбработка , этот объект и есть открываемая внешняя обработка. Если требуется открыть форму внешней обработки, то у полученного объекта вызываем метод ПолучитьФорму(), который вернет основную форму, а затем вызываем метод Открыть() для её открытия.


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

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

Запуск внешней обработки в режиме управляемого приложения

В режиме управляемых форм появляется разделение алгоритма по контексту выполнения. На клиенте получаем двоичные данные по полному имени файла внешней обработки. Передаем полученные двоичные данные на сервер и помещаем их во временное хранилище. Далее необходимо вызвать метод Подключить() объекта ВнешниеОбработки, в который передается адрес на временное хранилище. Метод возвращает имя подключенной внешней обработки. Возвращаем имя внешней обработки на клиент, формируем строковый путь к форме обработки и с помощью метода ОткрытьФорму() открываем форму внешней обработки.

&НаСервере
Функция ПолучитьИмяВнешнейОбработки(ДвоичныеДанные)
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Возврат ВнешниеОбработки.Подключить(АдресВоВременномХранилище);
КонецФункции

&НаКлиенте
ПолноеИмяФайла = ""; // Полное имя файла внешней обработки.
ДанныеФайла = Новый ДвоичныеДанные(ПолноеИмяФайла);
ИмяВнешнейОбработки = ПолучитьИмяВнешнейОбработки(ДанныеФайла);
ОткрытьФорму("ВнешняяОбработка." + ИмяВнешнейОбработки + ".Форма");

Безопасный режим для внешних обработок

Методы Создать() и Подключить() объекта ВнешниеОбработки имеют входящий параметр БезопасныйРежим - признак подключения внешней обработки в безопасном режиме. Если параметр не указан, подключение будет осуществлено в безопасном режиме.
Безопасный режим работы предназначен для защиты системы от выполнения на сервере «ненадежного» программного кода. Потенциальную опасность представляют внешние обработки или программный код, вводимый пользователем для использования в методах Выполнить() и Вычислить().
В безопасном режиме накладываются следующие ограничения:
  • привилегированный режим отменяется, если он был установлен;
  • попытки перехода в привилегированный режим игнорируются;
  • запрещены операции с COM-объектами;
  • запрещена загрузка и подключение внешних компонентов;
  • запрещен доступ к файловой системе (кроме временных файлов);
  • запрещен доступ к Интернету.
Обработки, открытые интерактивно, выполняются не в безопасном режиме, поэтому рекомендуется реализация механизма открытия внешних обработок в безопасном режиме, а так же на уровне прав запретить пользователю интерактивное открытие внешних обработок.
Для запрета интерактивного открытия обработок, во всех ролях, назначенных пользователю, необходимо снять право "Интерактивное открытие внешних обработок" (см. рисунок 1).
Рисунок 1. Права интерактивного открытия внешних обработок/отчетов
Право "Интерактивное открытие внешних обработок" никак не влияет на объект ВнешниеОбработки.

Программное открытие внешних отчетов, аналогично внешним обработкам, только следует использовать объект глобального контекста ВнешниеОтчеты, который имеет тип ВнешниеОтчетыМенеджер .

Начиная с новых релизов, компания 1С: предприняла попытку по устранению волны вирусов-криптовальщиков, путём ограничения запуска внешних отчетов и обработок для всех пользователей конкретной учётной системы.

Конечно, это вызвало волну недопонимания со стороны, как пользователей, так и руководящего состава отдела ИТ (программистов, администраторов).

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

Да, конечно, при правильных настройках резервного копирования, часть данных можно спасти, но что если у вашей компании каждый день/час/минуту вводятся данные, восстановить которые, либо не представляется возможным, либо потребуется большое усилие это сделать: человеческие ресурсы, время, бюджет и т.д.

Что это значит: ну первое, с чем сталкивается пользователь — это банальный запуск специализированных форм и обработок включенных в учетную систему — т.е. пользователь не сможет запустить даже, например, модифицированный и унифицированный счёт организации, или например отчет для управленческого распределения ДДС, ну и т.п.

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

Как же решить этот вопрос? понятно, что полностью оградить пользователя от опасности «занести заразу» не сможет ни одна современная антивирусная система, или система ограничений прав доступа, но для конкретных специалистов, которые были оповещены об угрозах и проведен ликбез по запуску потенциально опасных элементов, открыть доступ всё же придется.

Итак, что же предполагается сделать:

  1. Установить ответственность на сотрудника, который должен запускать такие доработки, файлы, отчеты;
  2. Провести с данным работником некоторый ликбез для полного понимания угроз и безопасности;
  3. Предоставить этому сотруднику возможность запуска внешних обработок в 1С:

Первые 2 пункта мы не затрагиваем, т.к. это на совести административного персонала и сотрудников IT департамента компании, а вот по пункту 3 — можно воспользоваться инструкцией описанной ниже:

  1. Прежде всего Вам потребуется доступ к конфигуратору 1С: пользователя с полными правами;
  2. Запускаем конфигуратор под пользователем с полными правами;
  3. В общем меню (как правило он сверху) находим пункт «Администрирование» ->»Пользователи»

4. Выбираем изменяемого пользователя:

Снимаем галочку с «защита от опасных действий» и переходим во вкладку прочее и здесь, если у данного пользователя, ранее не была установлено роль «Интерактивное открытие внешних форм и обработок», устанавливаем галочку:

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

Мы очень надеемся, что данная статья была Вами прочитана с самого начала и Вы осознаёте риски этих манипуляций.

Как разрешить интерактивное открытие внешних отчетов и обработок? (1С:Бухгалтерия 8.3. редакция 3.0)

2016-12-08T15:52:26+00:00

Если при открытии внешней обработки или отчёта через меню Файл->Открыть

появляется ошибка "Нарушение прав доступа":

То вариантов для использования обработки всего два.

Первый вариант, это регистрация обработки в справочнике "Дополнительные отчёты и обработки" (об этом ).

Но, что если обработка не поддерживает такую регистрацию? А обработка очень полезная и открыть её очень хочется.

В этом случае можно пойти по второму варианту и вновь включить возможность открытия обработок в базе через меню Файл->Открыть.

Инструкция для этого ниже.

Зайдите в конфигуратор базы:

Выполните команду меню "Администрирование"->"Пользователи":

Двойным щелчком откройте своего пользователя:

Перейдите на закладку "Прочие", установите галку "Интерактивное открытие внешних отчетов и обработок" и нажмите "ОК":

Теперь закройте конфигуратор и базу (если она у вас была открыта).

Вновь зайдите в базу и попытайтесь открыть отчёт через меню "Файл"->"Открыть".

Теперь всё получится

Есть нюансы...

Способ, который я описал в этой инструкции на 100% рабочий, но при его использовании право на "Интерактивное открытие внешних обработок" спустя время может снова пропасть.

Чтобы этого избежать установите эту же галку в режиме 1С:Предприятия в текущем для вашего пользователя профиле групп доступа.

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

С уважением, Владимир Милькин (преподаватель и разработчик ).