Как реализовать и опубликовать расширение для работы с файлами в сервисе 1С:Фреш

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Разработка для облачных сервисов, таких как 1С:Предприятие через интернет (1C:Fresh), существенно отличается от работы с локальными информационными базами. Основное ограничение связано с безопасностью: в облаке ваш код выполняется в изолированной среде, где прямой доступ к файловой системе сервера или небезопасные операции жестко ограничены. Разберем на конкретном примере, как адаптировать расширение для разбивки файлов выгрузки клиент-банка под требования Фреша.

Анализ проблемы: почему расширение не работает «из коробки»

Рассмотрим стандартную ситуацию: программисту необходимо доработать конфигурацию 1С:Бухгалтерия (БП 3.0), чтобы при выгрузке платежных поручений файл 1c_to_kl.txt автоматически разбивался на части по 300 платежек. В локальной версии достаточно написать процедуру на сервере, которая считывает текст и записывает новые файлы на диск. Однако при попытке загрузить такое расширение во Фреш возникают сложности:

  1. Безопасный режим: Во Фреше расширения обязаны работать в безопасном режиме. Если у расширения снята галочка Безопасный режим, сервис просто не позволит его опубликовать без специального сложного аудита.
  2. Изоляция серверной файловой системы: Даже если вы получите разрешения, серверы Фреша не дадут вам записывать файлы по произвольным путям на диске C: или D:.
  3. Обязательный аудит: Любое расширение проходит проверку специалистами фирмы «1С». Код должен соответствовать строгим стандартам качества.

Перенос логики работы с файлами на сторону клиента

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

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


// На сервере подготавливаем порции данных
&НаСервере
Функция ПодготовитьПорцииДанных(ИсходныйТекст)
    МассивПорций = Новый Массив;
    // Логика разбиения текста на части по 300 платежек
    // ...
    МассивПорций.Добавить(ТекстЧасти1);
    МассивПорций.Добавить(ТекстЧасти2);
    Возврат МассивПорций;
КонецФункции

// На клиенте инициируем сохранение
&НаКлиенте
Процедура ПослеВыгрузкиНаКлиенте(ПутьКФайлу)
    ДанныеФайлов = ПодготовитьПорцииДанных(ТекстИзФайла);
    Для Каждого ТекстПорции Из ДанныеФайлов Цикл
        // Используем асинхронные методы для сохранения
        ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
        // Код сохранения файла на диск пользователя
    КонецЦикла;
КонецПроцедуры

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

Требования к качеству кода для прохождения аудита

Для успешной публикации во Фреше ваше расширение должно быть «чище», чем типовые конфигурации. Проанализируем основные причины, по которым аудит может быть отклонен:

Работа с профилями безопасности и разрешениями

Если ваша задача принципиально требует «небезопасных» действий (например, обращение к стороннему веб-сервису для валидации платежек), вам придется настраивать запросы разрешений. Выясним, как это работает:

В свойствах расширения в конфигураторе есть пункт «Профили безопасности». Там необходимо четко прописать, к каким ресурсам требуется доступ. Например:

При загрузке расширения в «Менеджер приложения» Фреш проанализирует эти запросы. Будьте готовы к тому, что такое расширение попадет на ручной аудит, который может длиться несколько рабочих дней.

Использование Библиотеки Стандартных Подсистем (БСП)

Для минимизации ошибок и упрощения прохождения аудита рекомендуется максимально использовать методы Библиотеки Стандартных Подсистем. Рассмотрим функции, которые полезны при работе с файлами в облаке:

Использование общего модуля РаботаСФайламиКлиент позволяет стандартизировать выбор и сохранение файлов. Вместо написания собственного велосипеда, проанализируем возможности метода РаботаСФайламиКлиент.СохранитьФайлНаДиск(). Это гарантирует, что механизмы взаимодействия с браузером или тонким клиентом будут отработаны корректно и не вызовут нареканий у аудиторов 1С.

Порядок публикации расширения

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

  1. Тестирование: Проверьте расширение локально под пользователем с ограниченными правами в безопасном режиме.
  2. Загрузка в Личный кабинет: Владелец абонента или обслуживающий партнер загружает файл .cfe в разделе «Адаптация» (Расширения).
  3. Автоматическая проверка: Система мгновенно проверит расширение на наличие запрещенных методов (например, Выполнить()).
  4. Ручной аудит: Специалисты 1С проверят логику и безопасность. Обычно это занимает от 2 до 3 рабочих дней.
  5. Подключение: После успешного аудита статус расширения изменится на «Используется», и его можно будет включить для конкретной информационной базы.

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

Таким образом, работа во Фреше требует от разработчика дисциплины и перехода на современные асинхронные методы платформы 1С:Предприятие 8.3. Следуя правилам выноса кода на клиент и используя механизмы БСП, вы сможете успешно внедрять даже сложные расширения в облачный сервис.

← На главную