1C 8.2 не можу встановити безпечний режим. Безпечний режим роботи. Запуск зовнішньої обробки в режимі звичайної програми

11.05.2020 Новини

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

Запуск зовнішньої обробки в режимі звичайної програми

У звичайному додатку необхідно використовувати метод Створити об'єкта Зовнішні Обробки, в який передається повне ім'я файлу зовнішньої обробки. Метод повертає об'єкт типу ЗовнішняОбробка, цей об'єкт і є зовнішня обробка, що відкривається. Якщо потрібно відкрити форму зовнішньої обробки, то в отриманого об'єкта викликаємо метод ОтриматиФорму(), який поверне основну форму, а потім викликаємо метод Відкрити() для її відкриття.


Обробка = ЗовнішніОбробки.Створити(ПовнеІм'яФайлу);
Обробка.ОтриматиФорму().Відкрити();

У зовнішніх обробках основною формою завжди має бути звичайна, а керована додатковою, інакше не працюватиме метод ОтриматиФорму() в режимі звичайного додатка.

Запуск зовнішньої обробки в режимі керованої програми

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

&На сервері
Функція ОтриматиІм'яЗовнішньоїОбробки(ДвійковіДані)
АдресаВчасномуСховище = ПоміститиВчаснеСховище(ДвійковіДані);
Повернення Зовнішні Обробки.
КінецьФункції

&На Клієнті
Повне ім'я файлу = ""; // Повне ім'я зовнішньої обробки файлу.
ДаніФайла = Новий ДвійковіДані(ПовнеІм'яФайлу);
Ім'яЗовнішньоїОбробки = ОтриматиІм'яЗовнішньоїОбробки(ДаніФайлу);
ВідкритиФорму("ЗовнішняОбробка." + Ім'яЗовнішньоїОбробки + ".Форма");

Безпечний режим для зовнішніх обробок

Методи Створити() та Підключити() об'єкти ЗовнішніОбробки мають вхідний параметр БезпечнийРежим - ознака підключення зовнішньої обробки в безпечному режимі. Якщо параметр не вказано, підключення буде здійснено у безпечному режимі.
Безпечний режимроботи призначений захисту системи від виконання на сервері «ненадійного» програмного коду. Потенційну небезпеку становлять зовнішні обробки або програмний код, що вводиться користувачем для використання у методах Виконати() та Обчислити().
У безпечному режимі накладаються такі обмеження:
  • привілейований режим скасовується, якщо його було встановлено;
  • спроби переходу до привілейованого режиму ігноруються;
  • заборонені операції із COM-об'єктами;
  • заборонено завантаження та підключення зовнішніх компонентів;
  • заборонено доступ до файловій системі(крім тимчасових файлів);
  • заборонено доступ до Інтернету.
Обробки, відкриті інтерактивно, виконуються не в безпечному режимі, тому рекомендується реалізація механізму відкриття зовнішніх обробок у безпечному режимі, а також на рівні прав заборонити користувачеві інтерактивне відкриття зовнішніх обробок.
Для заборони інтерактивного відкриття обробок у всіх ролях, призначених користувачеві, необхідно зняти право "Інтерактивне відкриття зовнішніх обробок" (див. рис. 1).
Малюнок 1. Права інтерактивного відкриття зовнішніх обробок/звітів
Право "Інтерактивне відкриття зовнішніх обробок" ніяк не впливає на об'єкт Зовнішні Обробки.

Програмне відкриття зовнішніх звітів, аналогічно зовнішнім обробкам, слід використовувати об'єкт глобального контексту Зовнішні Звіти, який має тип ЗовнішніЗвітиМенеджер.

Під час запуску програми Завантаження документів під звичайним користувачемвиникає помилка "Встановлено безпечний режим. Виконання операції заборонено".

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

Введіть назву групи та позначте галочками доступні користувачам цієї групи ролі -

  • Інтерактивне відкриття зовнішніх звітів та обробок
  • Використання додаткових звітів та обробок

Натисніть Записати та закрити


Поверніться до меню Користувачі та виберіть зі списку співробітника, який буде працювати з програмою Завантаження документів. Натисніть Права доступу. У списку профілів позначте раніше створений профіль. Натисніть Записати.


Для того, щоб користувачі могли запустити обробку, рекомендується додати Завантаження документів до списку зовнішніх обробок. Для цього в меню Адміністрування / Друковані форми та обробки / Додаткові звіти та обробкистворіть нову обробку. Вкажіть шлях до файлу "ЗагрузкаДокументов.epf" та призначте ім'я. Вкажіть розташування обробки в меню, звідки користувач зможе запустити її надалі, наприклад, виберіть меню Довідники

Натиснувши на пункт Швидкий доступви вказуєте, кому з користувачів доступна обробка:


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


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


Достатньо зняти прапор із опції "Використовуються профілі безпеки".


Після цього програма запускатиметься успішно.

Справа в тому, що при використанні клієнт-серверного варіантуроботи 1С зовнішні обробки/звіти відкриваються у безпечному режимі, у якому заборонено використання привілейованого режиму. А привілейований режим використовується дуже часто у типових конфігураціях: формування друкованих форм, різні службові перевірки(Реєстрація обмінів) і т.д. В результаті навіть використовуючи звичайний звіт на СКД без форми (за замовчуванням використовується загальна форма "ФормаЗвіту") і зберігаючи налаштування користувачазвіту (у відповідний довідник), ви отримаєте помилку про недостатність прав доступу на різні константи та параметри сеансу, які використовуються у службових цілях після рядка ВстановитиПривілейованийРежим(Істина);

"Правильним" рішенням буде підключення зовнішніх обробок та звітів через механізми БСП "Додаткові звіти та обробки" з відключенням безпечного режиму або додаванням дозволів (на мою думку, з версії БСП 2.2.2.1). Але якщо з якихось причин необхідне використання саме зовнішніх файлівзвітів/обробок, то можна налаштувати профіль безпеки кластера, який використовується як профіль безпеки безпечного режиму для конкретної інформаційної бази.

Хотів би відразу помітити, що такий варіант не є кращим, але через різні обставини можна його використовувати в такому спрощеному вигляді. Наприклад, у мене кілька баз у різних містах, загальна локальна сісти з жорстко обмеженими правами, закритими USB тощо, десь використовується Бухгалтерія 2.0, а десь 3.0, майже всі звіти роблю засобами СКД без форм, щоб вони відкривалися обох версіях. Обслуговувати всі ці звіти для різних версійта різних баз справа трудомістка та безперспективна, т.к. у планах є перехід на єдину конфігурацію та базу...

Створюємо профіль.
У консолі кластера створюємо профіль безпеки, в якому встановлюємо прапори "Може використовуватись як профіль безпеки безпечного режиму"та " у розділі "Дозволений повний доступ:" "До привілейованого режиму".

У багатьох випадках використання звітів та простих обробок даний методбуде застосовний. Для складніших ситуацій описувати процес немає сенсу, т.к. він викладений у документації (можливість налаштовувати профілі безпеки для конкретних зовнішніх файлів через вказівку його хеш-суми тощо).

P.S. Думав, що профілі безпеки функціонують тільки при використанні ліцензій на платформу та сервер рівня КОРП, але даний функціонал відпрацьовує і на платформі 1С:Підприємство 8.3 (умовно можна назвати ПРОФ за аналогією з типовими конфігураціями Базова/ПРОФ/КОРП)

У версії 8.3.9.2170 було посилено безпеку - тепер система запитує підтвердження на запуск зовнішніх обробок, розширень та інше. Мабуть після трояна:

Реалізовано механізм захисту від небезпечних дій. При виконанні потенційно небезпечної дії система видає попередження, що містить інформацію про виконувану дію та потенційну небезпеку цієї дії. До потенційно небезпечних дій належать:

  • Завантаження зовнішнього звіту, обробки чи розширення конфігурації.
  • Завантаження або оновлення конфігурації/розширення.
  • Доступ із зовнішнього звіту/обробки або розширення до таких можливостей:
  • Виконання команди операційної системи.
  • Керування користувачами.

Користувач має можливість дозволити чи відхилити потенційно небезпечну дію. Якщо дія дозволена, у ряді випадків може знадобитися повторно виконати дозволену дію.

Повідомлення виглядає так:

Попередження безпеки

Відкривається "" із файлу " C:\.......epf". Рекомендується звертати увагу на джерело, з якого було отримано даний файл. Якщо з джерелом немає домовленості про розробку додаткових модулів, або є сумніви у вмісті файлу, то його не рекомендується відкривати, оскільки це може зашкодити комп'ютеру та даним. Дозволити відкривати цей файл. ТА НІ

Рішення:

У конфігураторі у властивостях користувача ІБ видалити прапорець "Захист від небезпечних дій".

З документації:Вимкнення механізму захисту від небезпечних дій

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

1. Вимкнути прапорець Захист від небезпечних дій (Захист Від Небезпечних Дій) у властивостях конкретного користувача. Це вимкне захист для цього користувача.

2. Скористатися параметром ЗахистВід НебезпечнихДій методів Підключити() менеджерів зовнішніх обробок (звітів). У цьому випадку є можливість завантажити зовнішню обробку без запитів користувача.

3. Скористатися властивістю ЗахистОНебезпечнихДій об'єкта РозширенняКонфігурації перед викликом методу Записати() цього об'єкта.

4. Скористайтеся параметром DisableUnsafeActionProtection файлу conf.cfg. У цьому випадку механізм захисту від небезпечних дій відключатиметься для всіх користувачів інформаційних баз, рядки з'єднання яких задовольняють зазначеним маскам.

Вимкнення захисту від небезпечних дій виконується за такими правилами (у зазначеному порядку):

1. Захист вважається відключеним, якщо у поточного користувачаскинуто прапорець Захист від небезпечних дій.

2. Захист вважається вимкненим, якщо рядок з'єднання з інформаційною базоюзадовольняє один із шаблонів, вказаних у параметрі DisableUnsafeActionProtection файлу conf.cfg.

3. Якщо зовнішня обробка (звіт) підключається з явно відключеним захистом за допомогою параметра ЗахистВід Небезпечних Дій.

4. Якщо захист явним чином вимкнено за допомогою властивості розширення ЗахистВід Небезпечних Дій.