Особенности разработки расширений для прохождения аудита 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С: Фреш разработка доп. расширения аудит

См. также

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

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

20.03.2026    690    ksnik    4    

5

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

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

17.03.2026    1402    IgorVasilyev    51    

26

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

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

09.02.2026    1563    Eugen-S    10    

4

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

В статье рассказываю, как писать код 1С в VS Code с помощью бесплатных AI-моделей 🤖 Используем GLM-4.7 через Roocode + Cerebras (до 1 миллион токенов в день). Подключаем бесплатные MCP. Генерируем новый код и смотрим, как AI справляется с задачами.

06.02.2026    12851    Ibrogim    77    

48

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

Некоторые задачи можно и нужно делегировать ИИ, а простые задачи можно отдавать бесплатным моделям. В статье коротко рассказываю про расширение roocode для vscode, инструмент openrouter и реальную задачу по рефакторингу кода.

02.02.2026    12157    Ibrogim    54    

48

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

Открываешь код и глаз начинает дёргается? Я собрал личный список ТОП-10 самых раздражающих и опасных ошибок в 1С, с примерами, юмором и практическими рекомендациями, как писать так, чтобы потом не было мучительно больно.

31.01.2026    3525    GarriSoft    89    

6

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

Костыль, рефакторинг или архитектура - делюсь своим видением того, как выбирать правильный инструмент под конкретную задачу. За годы в 1С я выработал алгоритм "трех зон", который помогает мне не только писать код, но и говорить с бизнесом на его языке. В статье рассказываю, когда временное решение оправдано, а когда оно становится миной замедленного действия. Никаких нотаций, только мой опыт принятия решений, где каждая строчка имеет цену. Буду рад, если моя система поможет вам по-новому взглянуть на привычную рутину.

19.12.2025    2504    GarriSoft    14    

17

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

История о легендарном отчете на 11 000 строк, копеечном расхождении и костыле 2014 года, который пережил все обновления. О том, как Василий спас квартальное закрытие, не тронув ни единой строчки кода монолита

15.12.2025    1881    GarriSoft    21    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 1071 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 Сейчас в теме
Кстати, стоило описать в статье, но напишу тут, т.к. только вспомнил: аудит не является панацеей от каких то ошибок в коде, он в основном нацелен на проверку соответствия решения требованиям Фреша, т.к. они явно заинтересованы в том, чтобы у них не лег сервис. Один из примеров: из за одной незначительной ошибки я, однажды, положил в базе при тестировании все регламентные задания, от чего аудит не уберег.
Для отправки сообщения требуется регистрация/авторизация