Особенности разработки расширений для прохождения аудита 1С:Фреш, или как успешно пройти аудит

03.06.25

Разработка - Рефакторинг и качество кода

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

Введение

Помимо разработки для клиентов, компания «Эм Си Арт» занимается также разработкой собственных продуктов. Одно из решений разрабатывается, в том числе, для публикации в магазине расширений 1С:Фреш. 1С:Фреш – облачное решение для работы с 1С без использования своего «железа», покупки лицензий и т.д. Нужно просто оплатить, залить свою базу и можно пользоваться. Т.к. сервис облачный, то имеются некоторые ограничения и требования к публикуемым решениям. Естественно, во Фреше и на ИТС (информационно техническое сопровождение) есть ряд статей и рекомендаций для успешного прохождения аудита, но в некоторых особенностях сразу все равно не разобраться. В статье раскрыты нюансы (с которыми столкнулся автор) работы с регламентными заданиями, добавления новых объектов для хранения данных, запроса разрешений на выполнение небезопасных операций, повторной отправки расширения на аудит, удаления объектов, использования «попытка исключение».

 

Использование регламентных заданий расширением во Ф реше

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

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

 

Выше представлен один из вариантов кода, который может создавать и/или запускать регламентные задания методами БСП. Если такой код отправить на аудит во Фреш, то он, скорее всего, пройден не будет, во всяком случае в таком исполнении регламентные задания работать не будут. Дело в том, что во Фреше регламентные задания добавляются с помощью Команды расширения [1]. А они в свою очередь запускаются механизмом очереди заданий в модели сервиса, у которого свои рег. задания. Т.е. прямо в коде не выйдет создавать и/или запускать регламентные задания. Сходу из статьи [1] можно не понять, как правильно нужно реализовывать работу регламентных заданий для Фреша, поэтому далее рассмотрим это более подробно.

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

 
 ПрефиксРасширения_КомандаРасширения

 

В общем модуле представлен код для выполнения команды расширения. Его можно так и назвать: "КомандаРасширения" (само собой добавится префикс расширения). В свойствах данного модуля проставлена галка "Сервер". В статье [1] сказано, что при добавлении расширения в свою базу будет доступна настройка расписания для каждой команды расширения, т.е. пользователь при пользовании расширением не сможет легко и просто управлять расписанием регламентного задания. Также важно, что минимальный период выполнения, который можно выставить, равен 300 секундам. Вариант решения первой проблемы есть.  

Была оставлена возможность в расширении задать (не при добавлении расширения в базу, а непосредственно при его использовании) расписание регламентного задания. Для команды расширения при его добавлении в базу была выставлена минимальная периодичность (300 секунд) и признак активности. Из кода выше видно, что регламентное задание (на самом деле это фоновое, порожденное регламентным) команды расширения получает то расписание, которое установил пользователь при пользовании расширением и определяет, нужно ли его выполнять или время еще не настало. Стоит обратить внимание на то, что приходится хранить последнюю дату выполнения регламентного задания.

Таким образом получилось не просто адаптировать работу кода по регламентному заданию во Фреше, но и оставить возможность пользователю управлять расписанием внутри расширения (а не в его настройках). Единственное, что отличается от кода для коробочных решений: минимальный период исполнения регламентного задания - 300 секунд. 

 

Добавление новых объектов для хранения данных

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

 

Рисунок 1. Замечания при добавлении объектов для хранения данных

 

Рекомендация из рисунка выше полностью рабочая. На рисунке ниже продемонстрировано выполнение указанных рекомендаций.

 

Рисунок 2. Исправление замечаний при добавлении объектов для хранения данных

 

 

Запрос разрешений на выполнение небезопасных операций

Все расширения, отчеты и обработки добавляемые во Фреш должны быть полностью работоспособными в безопасном режиме [2]. Один из важных вопросов касается того, как будет реализован обмен данными с внешним сервисом. В нашем случае были использованы http запросы. При добавлении расширения для прохождения аудита указываются адреса ресурсов, с которыми планируется соединение, порты и протоколы. А что делать в случае, когда неизвестно заранее, с каким ресурсом будет обмениваться данными пользователь? Да, кейсы бывают разными и в этом случае пользователь сам указывает адрес ресурса для обмена данными. Если верить статье [3] на ИТС, то есть возможность указывать, что необходим доступ сразу ко всем интернет ресурсам, что решает упомянутую проблему. К сожалению, этот вопрос при общении со специалистами Фреша довести до конца не удалось. Было предложено 2 варианта: отправлять запрос с клиента (там ограничений нет) или использовать прокси. Первый вариант был отвергнут, потому что большинство кода исполняется на сервере, а клиент с сервера нельзя вызвать, поэтому был реализован второй вариант.

Для тех, кто не понял, стоит более подробно пояснить. В 1С указывается подключение только к одному ресурсу, т.е. к прокси, а он в свою очередь делает запрос на нужный ресурс уже без участия Фреша, что полностью закрывает текущую задачу. Таким образом пользователь может указывать любой ресурс для соединения и обмениваться с ним данными без указания этого ресурса в профилях безопасности, но прокси указать придется. 

 

Повторная отправка расширения на аудит

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

 

Удаление объектов

Отдельное внимание стоит уделить удалению объектов с помощью расширения, например, элементов справочников. Даже если Вы сильно уверены в том, что при удалении объекта не будет нарушена ссылочная целостность, такие манипуляции без контроля ссылочной целостности не пройдут аудит, т.е. контроль ссылочной целостности при удалении объектов во Фреше обязателен. Ниже представлен пример кода, который удаляет нужные объекты с контролем ссылочной целостности.

 
Удаление объектов с контролем ссылочной целостности

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

 

Привилегированный режим и использование "попытка исключение"

Осталось рассмотреть пару небольших и тоже важных моментов. При операциях, связанных с получением доступа к данным, например, выполнение запроса или получение объекта по ссылке, рекомендуется использование привилегированного режима. Это связано с тем, что у пользователя, от имени которого запущен код, может не быть прав на получение данных, используемых в коде. Чтобы потом не разбираться с правами каждого такого пользователя, стоит использовать этот режим, также важно не забывать его отключать.

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

 

Заключение

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

 

Список источников

1. ООО "1С-Софт". Расширения конфигурации, запускающие регламентные задания: [Электронный ресурс]., 2020 // URL:https://1cfresh.com/articles/so_confext_job. (Дата обращения: 30.05.2025).

2. ООО "1С-Софт". Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок: [Электронный ресурс]., 2017 // URL:https://1cfresh.com/articles/so_addprocess_fastaudit. (Дата обращения: 30.05.2025).
3. ООО "1С-Софт". Облачная подсистема Фреш: [Электронный ресурс]., 2020 // URL:https://its.1c.ru/db/freshpub#content:3599:hdoc:issogl2_42.4.3.3_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B0_%D0%B8_%D0%BF%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D0%B5%D0%B9_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8. (Дата обращения: 30.05.2025).

Вступайте в нашу телеграмм-группу Инфостарт

Облако 1С: Фреш разработка доп. расширения аудит

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Запросы Рефакторинг и качество кода Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Есть запросы, которые сразу вызывают подозрение: десятки соединений, множество временных таблиц, объединения, группировки и длинный список условий. Но чаще проблемы прячутся в другом месте — в запросах, которые выглядят вполне приемлемо. Пара обращений через точку, отбор после виртуальной таблицы, РАЗЛИЧНЫЕ «чтобы убрать дубли», большой список в параметре, реквизит регистратора через составной тип — и вот уже на тестовой базе все летает, а в рабочей базе отчет открывается минуту. Разберу такие случаи из практики: не синтаксические ошибки, а именно запросы, которые формально нормальные, но на больших данных начинают вести себя плохо.

04.05.2026    1223    YA_2060655612    11    

9

Рефакторинг и качество кода Программист Бесплатно (free)

Почему рефакторинг, призванный улучшать код, иногда приводит к сбоям, потерям времени и новым ошибкам? Показываем типичные ситуации, когда рефакторинг становится токсичным: работа с legacy-кодом, изменения перед релизом, рефакторинг про запас и без тестирования. Объясняем, как универсальные мегаметоды, преждевременные абстракции и отсутствие понимания бизнес-логики ухудшают систему. А также рассказываем, когда рефакторинг действительно нужен, и какие принципы помогают делать его безопасно и осознанно.

29.04.2026    737    _apelsin4ik    0    

5

Рефакторинг и качество кода Программист Стажер 1С 8.3 Бесплатно (free)

Код в 1С редко начинает тормозить сразу. Намного чаще он долго выглядит нормальным, а проблемы проявляются позже — когда растут данные, пользователи и количество доработок. В статье разбираю типичные причины такой деградации: запросы в цикле, лишние ПолучитьОбъект(), тяжёлые формы и обработку “по одному”. Статья практическая: с примерами, типичными ошибками и понятными признаками того, что код уже плохо масштабируется.

21.04.2026    1743    YA_2060655612    6    

11

Инструментарий разработчика Рефакторинг и качество кода Программист 1С:Предприятие 8 Бесплатно (free)

Инструмент для тех, кто устал читать модули по 50 тысяч строк и искать ошибки глазами. MetaVision загружает выгруженные файлы конфигурации и за секунды строит графы функций, находит уязвимости и подсвечивает проблемы производительности. Ключевые возможности: Визуализация логики функций (графы условий, циклов, транзакций и вызовов). Статический аудит безопасности (RCE, SSRF, COM-инъекции, пароли в коде). Поиск проблем производительности (запросы в циклах, вложенные блокировки). Полнотекстовый поиск по всем модулям конфигурации. Статистика по объектам и функциям. Безопасность: Программа работает строго локально. Код вашей конфигурации не отправляется в интернет и не анализируется на сторонних серверах. Попробуйте MetaVision сегодня — узнайте, что скрывает ваш код.

20.04.2026    9925    1042    KHoroshulinAV    55    

85

Рефакторинг и качество кода Программист 1С 8.3 Россия Бесплатно (free)

Как быстро разобраться в чужом коде? Как не забыть через полгода алгоритм работы своего собственного кода? Как наглядно проектировать? Ответам на эти вопросы посвящена данная публикация.

17.04.2026    700    chuprina_as    4    

4

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

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

20.03.2026    1463    ksnik    4    

5

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

ИИ действительно помогает команде ускориться: быстрее разбирать код, быстрее входить в сложные участки, быстрее запускать доработки. Проблема в том, что вместе со скоростью он может ускорять и другое — накопление скрытой сложности, рост цены изменений и потерю управляемости. В статье разбираю, почему первые успехи с ИИ так легко опьяняют, когда система начинает выставлять счёт и что нужно сделать, чтобы ускорение не превратилось в новый виток технического долга.

17.03.2026    2014    IgorVasilyev    54    

27

Рефакторинг и качество кода Программист 1С:Предприятие 8 1С:Комплексная автоматизация 2.х 1C:ERP Бесплатно (free)

В публикации показан пример оптимизации кода обработчика табличной части документа, приведена методика как избавляться от запросов внутри цикла, а также разобрано - почему важно делать обработку данных на сервере и стремиться к минимизации вызовов клиент-сервер.

09.02.2026    2043    Eugen-S    10    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nedovizin 07.06.25 08:53 Сейчас в теме
Интересно, а как сделать загрузку из excel в расширении для конфигурации в Фреш?
2. MC4RT 19 09.06.25 10:12 Сейчас в теме
(1) Вопрос касается общей логики или именно требований со стороны Фреша (вопрос слишком широкий))? Абсолютно точно работу с файлами нужно сделать рабочей в безопасном режиме: п.3.1 https://1cfresh.com/articles/so_addprocess_fastaudit. В п.3.3 сказано, что ограничения касаются только серверного кода.
Если у Вас уже есть рабочее расширение под Вашу задачу, то попробуйте отправить на аудит, а там уже при отказе сообщат, что нужно исправить.

У меня не было опыта работы с файлами пользователей во Фреше, но можно попробовать подумать в сторону временного файла (на них ограничений нет), а работа с двоичными данными доступна и на клиенте.
3. infosoft-v 1087 09.06.25 11:46 Сейчас в теме
Спасибо за отличную и подробную информацию. Очень полезно.
Прошу, подскажите новичку в 1С Фреш , как загрузить свое расширение в облако?
Я тестирую на аккаунте своей компании и не могу найти способа добавить (загрузить) свое расширение с локального компьютера в 1С Фреш. Читая документацию на портале, я пришел к выводу, что для загрузки своих расширений в облако требуется сперва получить статус разработчика 1С Фреш, отправив заявление в 1С. Так и есть, или я просто не могу найти нужную кнопку?
4. MC4RT 19 09.06.25 11:59 Сейчас в теме
(3) Рад, что информация была полезна. Да, со статусом разработчика именно такая ситуация, плюс должны быть права в абоненте на работу с расширениями, если я не ошибаюсь. Статус разработчика я не получал, все делал через свою обслуживающую организацию. Подозреваю, у Вас тоже должна быть обслуживающая организация. Узнать это Вы можете в "Менеджере сервиса". Должно быть поле "Меня обслуживает". Если обслуживающая организация, действительно, есть, то связываетесь с ними и сообщаете, что Вам нужно залить во Фреш свое расширение. Может потребоваться выдача определенных прав их специалистам. Собственно, они уже и отправляют расширение на аудит и уведомляют о результатах.
5. MC4RT 19 09.06.25 12:22 Сейчас в теме
Кстати, стоило описать в статье, но напишу тут, т.к. только вспомнил: аудит не является панацеей от каких то ошибок в коде, он в основном нацелен на проверку соответствия решения требованиям Фреша, т.к. они явно заинтересованы в том, чтобы у них не лег сервис. Один из примеров: из за одной незначительной ошибки я, однажды, положил в базе при тестировании все регламентные задания, от чего аудит не уберег.
Для отправки сообщения требуется регистрация/авторизация