При разработке для облачного сервиса 1С:Фреш (1С:Предприятие через интернет) у многих программистов возникает резонное опасение: как поведет себя система, если добавить в расширение новые документы или справочники? Поскольку во «Фреше» используется мультиарендная архитектура (одна база данных на тысячи абонентов), кажется, что структурные изменения могут затронуть всех пользователей сразу или вовсе нарушить работу системы. Рассмотрим подробно, как реализован этот механизм и какие правила необходимо соблюдать, чтобы успешно пройти аудит.
Разберем основной страх: «не завалю ли я общую базу новыми таблицами?». Начиная с версии платформы 8.3.11, в 1С реализован механизм, позволяющий вносить структурные изменения через расширения даже в разделенных базах данных. Проанализируем, как это работает «под капотом»:
Прежде чем приступать к разработке, выясним важный момент: режим совместимости основной конфигурации в облаке. Как правило, в 1С:Фреш используются самые свежие релизы типовых решений (например, БП 3.0 или УНФ), которые имеют режим совместимости не ниже 8.3.14. Рассмотрим, почему это критично:
Возможность делать структурные изменения (добавлять реквизиты, справочники, документы) в расширениях появилась давно, но именно в последних релизах она стала стабильной и поддерживаемой в облачных сервисах. Если ваша демо-база, на которой вы ведете разработку, соответствует релизу из сервиса, вы можете смело использовать новые объекты метаданных.
Просто написать код и загрузить его во «Фреш» не получится — расширение должно пройти обязательный аудит. Разберем основные правила, нарушение которых приведет к отклонению вашей разработки:
Использование безопасного режима: Все расширения во «Фреш» работают исключительно в безопасном режиме. Это накладывает серьезные ограничения на использование некоторых функций. Проанализируем типичные ошибки:
Выполнить() и Вычислить().Строгая типизация: Посмотрим на важный нюанс при создании реквизитов. В расширениях для облака запрещено использовать типы данных ЛюбаяСсылка, ЛюбойСправочник и аналогичные «широкие» типы. Тип должен быть строго определен. Это связано с тем, что механизм разделения данных должен однозначно понимать, к каким таблицам обращаться при запросе.
Флаг ОбменДанными.Загрузка: Особое внимание уделим программной записи объектов. Как отмечают эксперты, запрещается запись с флагом ОбменДанными.Загрузка = Истина. Рассмотрим почему: это может позволить обойти бизнес-логику и проверки, что критично для стабильности облачного сервиса. Пример правильной записи:
НовыйОбъект = Справочники.МойНовыйСправочник.СоздатьЭлемент();
НовыйОбъект.Наименование = "Тестовая запись";
// НовыйОбъект.ОбменДанными.Загрузка = Истина; // ТАК ДЕЛАТЬ НЕЛЬЗЯ
НовыйОбъект.Записать();
Если вы добавляете новый документ, вам, скорее всего, потребуется использовать возможности Библиотеки стандартных подсистем (печать, присоединенные файлы, версионирование). Разберем, как это реализовать в расширении:
Для того чтобы ваш новый документ корректно работал в интерфейсе «Фреша», его нужно «прописать» в соответствующих обработчиках БСП. Однако помните, что изменять типовые обработчики нужно крайне аккуратно, используя аннотации &После или &Вместо, чтобы не нарушить логику обновления основной конфигурации.
Выясним причину, по которой некоторые разработчики советуют «не хранить важные данные в расширениях». Основной риск заключается в административных действиях:
Совет: Всегда делайте резервные копии области данных (выгрузка в .dt) перед значимыми изменениями расширений.
Рассмотрим процедуру вывода вашего расширения «в свет». Существует два пути:
Подводя итог: добавлять новые документы и справочники в 1С:Фреш через расширения можно и нужно. Платформа отлично справляется с разделением этих данных. Главное — соблюдать правила безопасного программирования и стандарты разработки 1С.