Доступ до файлової системи з коду конфігурації
1.1. Під час звернення з коду конфігурації до файлів і каталогів файлової системи слід мати на увазі, що доступ до них обмежений правами користувача операційної системи, від імені якого запущено застосунок:Робота з тимчасовими файлами. Особливості роботи з файлами на сервері 1С:Підприємства. Див. також
Особливості роботи з файлами на сервері 1С:Підприємства
1.1. Під час звернення з коду конфігурації до файлів і каталогів файлової системи слід мати на увазі, що доступ до них обмежений правами користувача операційної системи, від імені якого запущено застосунок:
- якщо доступ до файлової системи здійснюється засобами вбудованої мови на клієнті, то він виконується під правами користувача, від імені якого запущено застосунок (тонкий, товстий або вебклієнт). Як правило, це поточний користувач операційної системи, однак запуск міг бути виконаний і від імені іншого користувача.
- якщо доступ до файлової системи здійснюється засобами вбудованої мови на сервері, то:
- у разі використання вебклієнта з файловою інформаційною базою доступ обмежений правами користувача, від імені якого запущено вебсервер.
- у разі використання клієнт-серверної інформаційної бази доступ обмежений правами користувача, від імені якого запущено сервер 1С:Підприємства.
1.2. Зокрема, не слід виконувати запис будь-яких файлів у каталозі виконуваних файлів 1С:Підприємства (одержуваного за допомогою методу КаталогПрограммы), оскільки доступ на запис до цього каталогу може мати лише користувач операційної системи з адміністративними правами. У подібних випадках для запису файлів слід використовувати тимчасовий каталог операційної системи, який можна отримати методом КаталогВременныхФайлов.
Використання методу КаталогПрограммы виправдане лише для читання або запуску файлів каталогу виконуваних файлів 1С:Підприємства. Наприклад, для запуску копії тонкого клієнта 1С:Підприємства поточної версії допустимо використовувати:
ЗапуститьПриложение(КаталогПрограммы() + "1cv8s.exe");
Робота з тимчасовими файлами
2.1. За потреби створити файл, час існування якого не перевищує час роботи сеансу, слід використовувати метод ПолучитьИмяВременногоФайла. Після завершення роботи з файлом необхідно його видалити. Інакше файл буде видалено не раніше завершення роботи процесу, у якому його було створено. Під час роботи на сервері 1С:Підприємства це може призвести до вичерпання вільного місця на диску, на якому розташований каталог тимчасових файлів.
Наприклад:
ФайлВыгрузки = ПолучитьИмяВременногоФайла("xml"); ДанныеФайла.Записать(ФайлВыгрузки); // Робота з файлом // … // Видаляємо тимчасовий файл Попытка УдалитьФайлы(ФайлВыгрузки); Исключение ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие с возможной ошибкой'"), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки;
Див. також: Використання Журналу реєстрації
Не слід використовувати інші способи іменування тимчасових файлів. Оскільки під час використання функції платформи файл гарантовано буде видалено під час наступного запуску платформи (навіть у разі аварійного завершення платформи).
2.2. У рідкісних випадках, за потреби створення тимчасових файлів, час існування яких пов’язаний із будь-яким процесом або подією та не має обмежуватися часом роботи сеансу, слід видаляти такі файли самостійно. При цьому слід враховувати нештатний сценарій роботи, наприклад через передчасне, аварійне завершення процесу або у випадку, якщо очікувана подія не настала з будь-яких причин.
Наприклад, потрібно працювати з тимчасовими файлами під час кількох послідовних викликів вебсервісу. Рекомендується такий підхід:
-
Під час створення файлів їхні імена заносяться до допоміжного регістру зі збереженням часу створення;
-
За штатного проходження процесу остання операція, якій були потрібні файли, видаляє їхні записи в допоміжному регістрі перед своїм завершенням;
-
Допоміжне регламентне завдання періодично перевіряє наявність записів у допоміжному регістрі, час існування яких свідомо перевищує час штатного завершення процесу. У разі виявлення таких записів завдання видаляє тимчасові файли та записи про них.
Особливості роботи з файлами на сервері 1С:Підприємства
3. Під час роботи з файлами на сервері 1С:Підприємства не слід зберігати тимчасові файли довше одного серверного виклику, оскільки під час наступного серверного виклику цих файлів уже може не бути в очікуваному місці.
Така поведінка пояснюється архітектурою кластера серверів 1С:Підприємства – код вбудованою мовою виконується робочими процесами. У загальному випадку робочих процесів може бути більше одного, і кожен із них може мати свою файлову систему (оскільки різні робочі процеси можуть розташовуватися на різних робочих серверах). Водночас серверні виклики одного й того самого сеансу можуть оброблятися різними робочими процесами (внаслідок автоматичного балансування навантаження, автоматичного перезапуску або з інших причин). Крім того, за налаштованого резервування кластерів 1С:Підприємства у разі перемикання на резервний кластер використовуватимуться його робочі процеси.
За потреби зберегти дані між серверними викликами (у межах одного сеансу) слід використовувати тимчасове сховище платформи (методи ПоместитьВоВременноеХранилище, ПолучитьИзВременногоХранилища та ін.).
Див. також
- Загальні вимоги до конфігурації