Інтернет Windows Android

1с встановити безпечний режим. Безпечний режим роботи

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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


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


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


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


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

На прикладі «Управління торгівлею 11.3» розглянемо простий процес підключення зовнішньої друкованої форми. Також розглянемо особливості нової системи безпеки.

швидкий перехід

попередні дії

Для початку слід включити функціонал або перевірити його доступність

1. Заходимо під повними правами в інформаційну базу.

2. Заходимо в меню «НДІ і адміністрування» / Блок «Адміністрування» / Команда «Друковані форми, звіти і обробки».

Додавання

У відкритому розділі:

Додаємо обробку по кнопці «Створити» (це важливо) або ж «Оновлюємо!» існуючу:

  • Виділити її в списку (якщо не виділено або порожньо, команда не спрацює, але нічого не скаже).
  • Натиснути кнопку «Завантажити з файлу».

Після появи для 1С у зовнішній обробки в нових конфігураціях з'явилися перевірки безпеки.

Слід встановлювати тільки обробки створені самостійно або отримані з відомих каналах зв'язку (не з пошти, тільки з сайту з чинним сертифікатом, або наданим працівниками розробника, підтвердженим їм по телефону).

Якщо в обробці все прописано розробником, то будуть встановлено «Розміщення» - об'єкти в яких обробка буде задіяна, з'явиться команда (и).
Для роботи досить буде натиснути «Зберегти і закрити».

Перевірка

Відразу після цього в залежності від виду обробки:

  • Друкована форма стає доступною при відкритті документа або з його списку (для вже відкритої при повторному відкритті) по кнопці «Друк».
  • Обробки доступні в розділах «Додаткові обробки» в кожній підсистемі
  • Обробки заповнення по кнопці «Заповнити» списку або головним командним панелі форми об'єкта.

Для вище зазначеної обробки запуск буде виглядати ось так:

Якщо документ новий, його слід записати, механізм зовнішніх обробок вас попередить про це:

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

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

У нових релізах платформи і конфігураціях посилився захист від запуску шкідливих програм.

В обробці може викликатися запуск Excel для завантаження, в цьому випадку нова підсистема безпеки також попередить вас:

При цьому код обробника переривається.

У разі, якщо ви натиснете «Так», то система попросить вас повторно викликати команду:

Для користувача інформаційної бази можливо відключити захист від небезпечних дій через «Конфігуратор»:

З режиму «Підприємство» змінити це не можна, можливо так зроблено спеціально, можливо з'явиться після оновлення.

Також слід звернути увагу, що якщо обробка використовує Excel, вона повинна запускати в небезпечному режимі (так було і до введення нової системи, це працює паралельно):

«Неможливо завантажити MS EXCEL !!!» «Встановлено безпечний режим. Рятувальна операція заборонено »

У зовнішніх обробках це виглядає ось так:

Розробнику слід у внутрішньому описі обробки встановити його в «Брехня», тоді все буде нормально:

Функція СведеніяОВнешнейОбработке () Експорт ПараметриРегістраціі \u003d Новий Структура; ПараметриРегістраціі.Вставіть ( "БезопаснийРежім", Брехня);

При оновленні конфігурації також з'явився застережливий текст про джерело, з якого був отриманий файл конфігурації:

З виходом платформи 8.3.9.2033 з'явився новий механізм «Захист від небезпечних дій».

Завдяки цьому нововведенню 1С -ка тепер на відкриття обробки (і не тільки) стала лаятися:

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

Відкривається «Моя зовнішня обробка» з файлу «Моя_Внешняя_Обработка.epf»

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

Дозволити відкривати даний файл?

Так 1С вирішила боротися з шкідливим кодом!

Звідки буде братися цей «шкідливий код» на підприємстві поки загадка)

До потенційно небезпечних дій віднесли:

  • Завантаження зовнішнього звіту, обробки або розширення конфігурації.
  • Завантаження або оновлення конфігурації / розширення.
  • Доступ з зовнішнього звіту / обробки або розширення до наступних можливостей:
  • Виконання команди операційної системи.
  • Управління користувачами (запис або видалення інформації про користувача інформаційної бази).
  • Виклик методу Підключити () менеджера зовнішніх обробок (звітів).
  • Виклик методу РасшіреніеКонфігураціі.Запісать ().
  • Робота з COM-об'єктами.

Як же це «чудо» відключити?

Для цього необхідно запустити 1С Підприємство в режимі конфігуратора.
Вибрати меню «Адміністрування» - «Користувачі».
У вікні наших користувачів, потрібно відкрити вікно налаштування користувача і на закладці «Основні» прибрати пташку «Захист від небезпечних дій»

Є й інші способи відключити це:

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

В даному параметр можна вказати кілька масок поділюваних символом «;», наприклад:

DisableUnsafeActionProtection \u003d test _. *; Stage _. *;

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

  • Параметр ЗащітаОтОпаснихДействій методів Підключити () менеджерів зовнішніх обробок (звітів)
  • Властивість ЗащітаОтОпаснихДействій об'єкта РасшіреніеКонфігураціі перед викликом методу Записати () цього об'єкта.

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

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

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

3. Якщо захист явно відключена за допомогою параметра ЗащітаОтОпаснихДействій зовнішньої обробки або звіту.

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

Друк (Ctrl + P)

об'єкти конфігурації

У разі необхідності використання на сервері «ненадійного» програмного коду: зовнішні обробки або програмний код, що вводиться користувачем для використання в методах Виконати () і Обчислити (), можна скористатися безпечним режимом роботи.

У безпечному режимі:

  • привілейований режим скасовується.
  • Перехід в привілейований режим ігнорується.
  • заборонені операції, що призводять до використання зовнішніх коштів по відношенню до платформи «1С: Підприємство» (включаючи неблокірующіх аналоги зазначених методів):
  • Механізми COM:
    • COMОб'ект ();
    • ПолучітьCOMОб'ект ();
    • ОболочкаHTMLДокумента.ПолучітьCOMОб'ект ().
  • Завантаження зовнішніх компонентів:
    • ЗагрузітьВнешнююКомпоненту ();
    • ПодключітьВнешнююКомпоненту ().
  • Доступ до файлової системи:
    • ЗначеніеВФайл ();
    • КопіроватьФайл ();
    • Об'едінітьФайли ();
    • ПереместітьФайл ();
    • РазделітьФайл ();
    • СоздатьКаталог ();
    • УдалітьФайли ();
    • Новий Файл;
    • Новий xBase;
    • ЗапісьHTML.ОткритьФайл ();
    • ЧтеніеHTML.ОткритьФайл ();
    • ЧтеніеXML.ОткритьФайл ();
    • ЗапісьXML.ОткритьФайл ();
    • ЧтеніеFastInfoset.ОткритьФайл ();
    • ЗапісьFastInfoset.ОткритьФайл ();
    • КаноніческаяЗапісьXML.ОткритьФайл ();
    • ПреобразованіеXSL.ЗагрузітьІзФайла ();
    • ЗапісьZipФайла.Открить ();
    • ЧтеніеZipФайла.Открить ();
    • Новий ЧтеніеТекста (), якщо перший параметр - рядок;
    • ЧтеніеТекста.Открить (), якщо перший параметр - рядок;
    • Новий ЗапісьТекста (), якщо перший параметр - рядок;
    • ЗапісьТекста.Открить (), якщо перший параметр - рядок;
    • Новий ІзвлеченіеТекста ();
    • зміна властивості ІзвлеченіеТекста.ІмяФайла;
    • ІзвлеченіеТекста.Запісать ();
    • Новий Картинка (), якщо перший параметр - рядок;
    • Картінка.Запісать ();
    • Новий ДвоічниеДанние ();
    • ДвоічниеДанние.Запісать ();
    • Новий ЗапісьДанних (), якщо перший параметр - рядок;
    • Новий ЧтеніеДанних (), є перший параметр - рядок;
    • всі методи об'єкта МенеджерФайловихПотоков;
    • Новий ФайловийПоток ();
    • ФорматірованнийДокумент.Запісать ();
    • ГеографіческаяСхема.Прочітать ();
    • ГеографіческаяСхема.Запісать ();
    • ГеографіческаяСхема.Напечатать ();
    • ТаблічнийДокумент.Прочітать ();
    • ТаблічнийДокумент.Запісать ();
    • ТаблічнийДокумент.Напечатать (); ГрафіческаяСхема.Прочітать ();
    • ГрафіческаяСхема.Запісать ();
    • ГрафіческаяСхема.Напечатать ();
    • ТекстовийДокумент.Прочітать ();
    • ТекстовийДокумент.Запісать ().
  • Доступ до Інтернету:
    • Новий ІнтернетСоедіненіе,
    • Новий ІнтернетПочта,
    • Новий ІнтернетПроксі,
    • Новий HTTPСоедіненіе,
    • Новий FTPСоедіненіе.

УВАГА! При виконанні заборонених операцій під час виконання генерує виняток.

Примітка. Зовнішні звіти та обробки, що відкриваються за допомогою меню Файл - Відкрити, виконуються в безпечному режимі, якщо у користувача відсутні адміністративні права доступу.

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

Якщо в процедурі або функції викликів методу УстановітьБезопаснийРежім (Брехня) зроблено більше, ніж викликів методу УстановітьБезопаснийРежім (Істина), То буде викликано виключення.

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

// Формується програмний код, який слід виконати // Можливо, що код завантажується з зовнішніх джерел // або введений вручну ІсполняемийКод \u003d ПолучітьВиполняемийКодІзВнешнегоМіра (); // Включимо безпечний режим УстановітьБезопаснийРежім (Істина); // Виконаємо потенційно небезпечний код Виконати (ІсполняемийКод); // Вимкнемо безпечний режим УстановітьБезопаснийРежім (Брехня);

У деяких випадках налаштування безпечного режиму можуть конфліктувати з настройками привілейованого режиму. Прикладом такого конфлікту виступає проведення документа, для якого встановлено властивість Привілейований режим при проведенні, з коду на вбудованій мові, який виконується в безпечному режимі. В цьому випадку привілейований режим відключається, а спроби його включити ігноруються. В результаті код на вбудованій мові, який «розраховує» на включений привілейований режим, «стикається» з його відсутністю, що призводить до виникнення помилок з неочевидними причинами появи. Для запобігання такій ситуації, система «1С: Підприємство» автоматично відключає безпечний режим для обробників подій, які доступні в модулі об'єкта або модулі менеджера, за умови, що виконуваний код на вбудованому мові не розташовується в розширенні конфігурації. Такі обробники відзначаються в синтаксис-помічника особливим чином.

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

В рамках одного методу на вбудованій мові не може бути більше одного рівня вкладеності установки безпечного режиму (викликом методу УстановітьБезопаснийРежім ()) і установки відключення безпечного режиму (автоматично на час виконання обробників подій об'єктів метаданих або викликом методу УстановітьОтключеніеБезопасногоРежіма ()). При спробі збільшити вкладеність генерується виняток:

// Коректне використання Процедура ІмяПроцедури () УстановітьОтключеніеБезопасногоРежіма (Істина); УстановітьБезопаснийРежім (Істина); УстановітьБезопаснийРежім (Брехня); УстановітьОтключеніеБезопасногоРежіма (Брехня); КонецПроцедури // Неправильне використання Процедура ІмяПроцедури () УстановітьОтключеніеБезопасногоРежіма (Істина); УстановітьБезопаснийРежім (Істина); УстановітьОтключеніеБезопасногоРежіма (Брехня); // Виняток КонецПроцедури Процедура ІмяПроцедури () УстановітьБезопаснийРежім (Істина); УстановітьОтключеніеБезопасногоРежіма (Брехня); // Виняток КонецПроцедури