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