Механізм тимчасового сховища, робота з файлами і картинками

Глава 20. Механізм тимчасового сховища, робота з файлами і картинками


Глава 20. Механізм тимчасового сховища, робота з файлами і картинками

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

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

20.1. тимчасове сховище

Тимчасове сховище - це спеціалізоване сховище інформації, в яке може бути вміщено значення. Основне призначення - це тимчасове зберігання інформації при клієнт-серверному взаємодії до її перенесення до бази даних.

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

Можна використовувати тимчасове сховище як універсальне сховище з контрольованим часом життя даних:

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

● Якщо при приміщенні даних у тимчасове сховище прив'язка до формі не була виконана, то очищення тимчасового сховища буде виконана в наступних випадках:

● При наступному запиті форми.

● При наступному серверному виклику з клієнтського загального модуля.

● При контекстному і неконтекстне клієнтських виклики з форми.

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

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

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

20.2. Способи роботи з файлами і тимчасовим сховищем

У цьому розділі містяться найбільш часті варіанти використання механізму роботи з тимчасовим сховищем і файлами.

20.2.1. Збереження даних з файлу в тимчасове сховище

20.2.1.1. Приміщення одного файлу

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

20.2.1.2. Приміщення набору файлів

Метод ПоместітьФайли () поміщає у тимчасове сховище кілька файлів за один виклик. Існує кілька різних способів використання цього методу:

● попередньо сформувати список додаються файлів, наприклад, коли попередньо вибрав файли, які необхідно помістити в інформаційну базу;

● передати в метод маску пошуку файлів, наприклад, коли потрібно помістити в інформаційну базу всі файли певного виду, наприклад, все картинки;

● передати в метод попередньо підготовлений об'єкт ДіалогВибораФайла в режимі відкриття файлів.

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

// СпісокФайлов - реквізит форми типу СпісокЗначеній,

// містить список додаються файлів

МассівФайлов = Новий Масив;

Для кожного ЕлементСпіска З СпісокФайлов Цикл

МассівФайлов. Додати (Новий ОпісаніеПередаваемогоФайла (ЕлементСпіска.));

ПомещенниеФайли = Новий Масив;

Результат = ПоместітьФайли (МассівФайлов. ПомещенниеФайли. Брехня, УнікальнийІдентіфікатор);

ПРИМІТКА. Для використання методу ПоместітьФайли () в веб-клієнті потрібне підключення розширення роботи з файлами (див. Тут).

20.2.2. Приміщення даних в тимчасове сховище

20.2.3. Отримання даних з тимчасового сховища

20.2.4. Видалення даних з тимчасового сховища

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

20.2.7. Отримання файлу з інформаційної бази

20.2.7.1. Отримання одного файлу

За замовчуванням метод виповнюється в інтерактивному режимі. Це означає, що буде сформовано діалогове вікно, в якому можна вказати дію з отриманим файлом: запустити його або зберегти у вказаний користувачем місце файлової системи. Якщо обраний інтерактивний режим, а параметр Файл не вказано, то операція відкриття файлу недоступна. Метод повертає значення типу Булево. Брехня означає, що користувач вибрав скасування операції в діалоговому вікні збереження файлів в інтерактивному режимі.

20.2.7.2. Отримання набору файлів

Метод ПолучітьФайли () дозволяє отримати і зберегти в локальній файловій системі користувача кілька файлів, що зберігаються в інформаційній базі. Як параметр передається список вивантажуються файлів.

// СпісокФайлов - список значень, що містить посилання на елементи

// довідника, в якому розташовані Вивантажувані файли

// Виставою списку значень є ім'я вивантажується файлу

МассівФайлов = Новий Масив;

Для кожного ЕлементСпіска З СпісокФайлов Цикл

Файл = Новий файл (Рядок (ЕлементСпіска. Значення));

ПолучаемийФайл = Новий ОпісаніеПередаваемогоФайла;

ПолучаемийФайл. Ім'я = ЕлементСпіска. подання;

ПолучаемийФайл. Зберігання = ПолучітьНавігаціоннуюСсилку (ЕлементСпіска. Значення. "Дані");

МассівФайлов. Додати (ПолучаемийФайл);

ПолученниеФайли = Новий Масив;

Результат = ПолучітьФайли (МассівФайлов. ПолученниеФайли. ПутьВигружаемихФайлов. Брехня);

Якщо НЕ Результат Тоді

Повідомлення = Новий СообщеніеПользователю;

Повідомлення. Текст = "Помилка отримання файлів!" ;

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

ПРИМІТКА. Для використання методу ПолучітьФайли () в веб-клієнті потрібне підключення розширення роботи з файлами (див. Тут).

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

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

● діалог буде викликатися для кожного переданого файлу, крім тих файлів, для яких властивість Ім'я об'єкта ОпісаніеПередаваемогоФайла містить абсолютний шлях;

● в якості початкового імені файлу в діалозі буде використовуватися значення властивості Ім'я об'єкта ОпісаніеПередаваемогоФайла;

● якщо для будь-якого файлу буде обраний відмова від збереження, то властивість Ім'я об'єкта ОпісаніеПереданногоФайла буде містити порожній рядок;

● метод ПолучітьФайли () поверне значення Істина. якщо хоча б один файл отримано успішно;

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

ПередаваемиеФайли = Новий Масив;

ПередаваемиеФайли. Додати (Опис);

ВиборФайла = Новий ДіалогВибораФайла (РежімДіалогаВибораФайла. Збереження);

ВиборФайла. Тема = "Збереження архіву";

ВиборФайла. Розширення = "zip";

ВиборФайла. Фільтр = "Архів (*. Zip) | * .zip | Все файли | *. *";

ВиборФайла. ІндексФільтра = 0;

ПолучітьФайли (ПередаваемиеФайли. ВиборФайла. Брехня);

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

20.2.8. Приклад використання файлових методів

// Отримання в інтерактивному режимі файлу з диска

// і приміщення його в тимчасове сховище.

Об'єкт. Имяфайла = ВибранноеІмя;

// довідника, запис об'єкта, видалення файлу з тимчасового

ЕлементСправочніка = РеквізітФормиВЗначеніе ( "Об'єкт");

ЕлементСправочніка. ДанниеФайла = Новий ХраніліщеЗначенія (ДвоічниеДанние. Новий СжатіеДанних ());

Файл = Новий файл (ЕлементСправочніка. Имяфайла);

ЕлементСправочніка. Имяфайла = Файл. ім'я;

ЗначеніеВРеквізітФорми (ЕлементСправочніка. "Об'єкт");

// Зчитування файлу з реквізиту та збереження його

// на локальному диску в інтерактивному режимі.

20.2.9. Дозвіл на виконання групи операцій з файлами

При виконанні деяких операцій в веб-клієнті може знадобитися отримати дозвіл на кілька операцій по роботі з файлами. Наприклад, необхідно виконати отримання документа з інформаційної бази і потім відкрити збережений документ за допомогою асоційованого програми.

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

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

ПРИМІТКА. Для використання методу ЗапросітьРазрешеніеПользователя () в веб-клієнті потрібно підключити розширення роботи з файлами (див. Тут).

Розглянемо приклад використання методу:

Якщо ПодключітьРасшіреніеРаботиСФайламі () Тоді

// Формування опису переданих файлів (в даному випадку файл один)

ПередаваемиеФайли = Новий Масив;

ПередаваемиеФайли. Додати (Опис);

// Готуємо об'єкт для отримання інформації про отримані файлах

ПереданниеФайли = Новий Масив;

// Визначаємо інші параметри методів

ІмяПереданногоФайла = КаталогСохраненія + "" + Об'єкт. Ім'я файлу ;

// Готуємо опис методів для отримання дозволів

Методи = Новий Масив;

Методи. Додати (Новий Масив);

Методи [0]. Додати ( "ПолучітьФайли");

Методи [0]. Додати (ПередаваемиеФайли);

Методи [0]. Додати (ПереданниеФайли);

Методи [0]. Додати (КаталогСохраненія);

Методи [0]. Додати (Інтерактивно);

Методи. Додати (Новий Масив);

Методи [1]. Додати ( "ЗапустітьПріложеніе");

Методи [1]. Додати (ІмяПереданногоФайла);

Якщо Чи не ЗапросітьРазрешеніеПользователя (Методи) Тоді

Попередження ( "Користувач відмовив у дозволі.");

ПолучітьФайли (ПередаваемиеФайли. ПереданниеФайли. КаталогСохраненія. Інтерактивно);

Попередження ( "Виконання не підтримується. Не встановлено розширення роботи з файлами.");

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

● Дозвіл запитується тільки для наступних методів:

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

● Якщо необхідно виконати дві (або більше) однакові операції з файлами (навіть з однаковим набором параметрів), слід вказати відповідну кількість елементів в масиві параметрів методу ЗапросітьРазрешеніеПользователя (). Наприклад, якщо необхідно двічі отримати з інформаційної бази один і той же файл і помістити його в фіксоване місце файлової системи, слід запросити дозвіл на дві операції.

● Якщо запитується дозвіл на операцію, при виконанні якої виконується інтерактивна операція (наприклад, функції ПолучітьФайли () як параметр передається об'єкт ДіалогВибораФайла), то така операція виключається із запиту.

Отримані дозволу зберігаються або до виконання дозволеного виклику, або до закінчення виконання вбудованої мови.

ПРИМІТКА. У товстому і тонкому клієнтів ЗапросітьРазрешеніеПользователя () метод завжди повертає значення Істина. без взаємодії з користувачем.

20.2.10. Робота з тимчасовим сховищем у фоновому завданні

Механізм тимчасового сховища, робота з файлами і картинками

Мал. 262. Відображення картинки на формі

ФайлКартінкі = Об'єкт. ФайлКартінкі;

Якщо Чи не ФайлКартінкі. Порожня () Тоді

20.3. Особливості використання в веб-клієнті

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

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

ПРИМІТКА 1. Для коректної роботи розширення роботи з файлами в веб-браузері Microsoft Internet Explorer рекомендується використання бібліотеки Microsoft Core XML Services (MSXML) версій 4.0 або 6.0.

ПРИМІТКА 2. Розширення роботи з файлами для веб-браузера Microsoft Internet Explorer встановлюється в каталог% APPDATA% \ 1C \ 1С EWebExt \ FileSystemExtIE.

Перед використанням компоненти слід виконати наступні дії:

● Відповідним чином налаштувати веб-браузер (докладніше див. Книгу «1С: Підприємство 8.2. Керівництво адміністратора»).

● Встановити розширення роботи з файлами. Для цього слід скористатися методом глобального контексту УстановітьРасшіреніеРаботиСФайламі (). Це інтерактивне дію, яку необхідно виконати один раз для кожного користувача локального комп'ютера, що використовує розширення.

● Підключити розширення роботи з файлами. Для цього слід скористатися методом ПодключітьРасшіреніеРаботиСФайламі ().

Схожі статті