Работа в облачном сервисе 1С:Фреш (1cFresh) накладывает на разработчика ряд жестких ограничений. Главное из них — отсутствие прямого доступа к Конфигуратору рабочей базы. Вы не можете просто зайти в конфигурацию, поставить точку останова или «на лету» подправить код в модуле. Архитектура SaaS (мультиарендность), при которой сотни компаний работают на одном физическом сервере, требует обеспечения абсолютной безопасности и стабильности системы.
В этой статье мы подробно разберем, как устроен процесс разработки, отладки и внедрения изменений в облаке 1С:Фреш. Мы рассмотрим пошаговый алгоритм действий программиста, особенности прохождения технического аудита фирмы «1С», а также альтернативные варианты интеграции баз данных.
---
Для того чтобы ваша доработка (будь то внешняя обработка, отчет или расширение конфигурации) заработала в облачной базе клиента, необходимо пройти строго регламентированную цепочку действий. Проанализируем ее по шагам:
---
Поскольку интерактивная отладка непосредственно в облаке невозможна, нам необходимо воссоздать точную копию среды исполнения локально. Выясним, как это сделать без лишних трудозатрат:
1. Получение актуальной копии базы данных. Попросите клиента выгрузить резервную копию базы данных (в формате .dt) через личный кабинет 1С:Фреш или сделайте это самостоятельно, если у вас есть соответствующие права администратора. Разверните эту базу локально на своей платформе «1С:Предприятие».
2. Использование ключа отладки. При локальном тестировании расширений часто возникает проблема блокировки фоновых заданий или некорректного поведения логики БСП (Библиотеки стандартных подсистем) в файловом варианте работы базы. Для обхода этих ограничений запускайте клиентское приложение 1С из Конфигуратора с ключом командной строки:
/C РежимОтладки
Этот параметр заставляет БСП выполнять все длительные операции (фоновые задания) синхронно в основном сеансе. Это позволяет перехватывать выполнение кода точками останова в любой момент времени.
3. Имитация безопасного режима. В облаке Фреш все расширения и обработки работают в строгом безопасном режиме. При локальном тестировании обязательно включайте в свойствах расширения или внешней обработки признак БезопасныйРежим = Истина. Это поможет обнаружить ошибки обращения к файловой системе или запрещенным методам еще до отправки кода на аудит.
---
Пройти технический аудит 1С:Фреш с первого раза — сложная задача для новичка. Чтобы сэкономить время, разберем ключевые требования к коду, несоблюдение которых гарантирует отклонение вашей доработки:
Вопрос() или Предупреждение(), категорически запрещено. Интерфейс должен работать плавно в любом веб-браузере. Вместо этого используйте асинхронные методы: например, ПоказатьВопрос() с передачей описания оповещения.МояКомпания_. Реквизит МояКомпания_ДатаДоставки пройдет проверку, а просто ДатаДоставки — нет, так как при обновлении типовой конфигурации вендором может возникнуть конфликт имен.Excel.Application на сервере). Все операции с файлами должны проходить через асинхронную передачу во временное хранилище:
&НаКлиенте
Процедура НачатьИмпортФайла()
ОписаниеОповещения = Новый ОписаниеОповещения("ИмпортФайлаЗавершение", ЭтотОбъект);
НачатьПомещениеФайлаНаСервер(ОписаниеОповещения, , , , , УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ИмпортФайлаЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Результат Тогда
ОбработатьФайлНаСервере(Адрес);
КонецЕсли;
КонецПроцедуры
---
Если перед вами стоит задача настроить выгрузку данных из облачной базы 1С:Фреш во внешнюю базу или сторонний сервис, рассмотрим наиболее жизнеспособные сценарии:
Если обе базы находятся внутри облака 1С:Фреш (например, «1С:Управление нашей фирмой» и «1С:Бухгалтерия»), то никакие доработки кода вообще не требуются. Настройка синхронизации выполняется штатными средствами в пользовательском режиме (раздел «Администрирование — Синхронизация данных»). Система сама организует регулярный фоновый обмен по внутренним защищенным каналам.
Если требуется обмен с внешней системой (например, с вашим сайтом или CRM-системой), вы можете написать расширение, использующее HTTPСоединение. Однако здесь есть важный технический нюанс: в безопасном режиме облако блокирует любые сетевые запросы во внешнюю сеть.
Чтобы обмен заработал, в модуле вашей доработки необходимо программно задекларировать запрос разрешений на использование небезопасных операций. Рассмотрим пример кода, регистрирующего разрешение на обращение к конкретному веб-ресурсу:
Функция ПолучитьРазрешенияНаОбменДанными() Экспорт
Разрешения = Новый Массив;
// Указываем конкретный адрес и порт внешнего сервиса
Протокол = "HTTPS";
АдресРесурса = "api.my-crm-system.ru";
ПортРесурса = 443;
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(Протокол, АдресРесурса, ПортРесурса);
Разрешения.Добавить(Разрешение);
Возврат Разрешения;
// Эти разрешения будут проверены аудиторами вручную, и после одобрения
// платформа разрешит вашей обработке выполнять запросы к данному хосту.
КонецФункции
---
Бывают ситуации, когда требования клиента подразумевают кардинальное изменение бизнес-логики типового решения (например, глубокая кастомизация проведения документов, создание сотен новых объектов метаданных или интеграция с устаревшим оборудованием по специфическим протоколам). В таких случаях постоянная переработка решений под жесткие требования аудита Фреша становится экономически нецелесообразной.
Проанализируем альтернативные варианты размещения баз данных клиента:
Таким образом, выбирая технологию 1С:Фреш, разработчик соглашается на строгое следование стандартам разработки 1С, работу исключительно через расширения и регулярные процедуры аудита. Это дисциплинирует программиста и гарантирует легкое обновление баз клиентов в будущем, но требует повышенных временных затрат на начальных этапах разработки.