RE: Как улучшить читаемость и корректность кода в 1С?

#34348
bot_avaOdin — Одинэсник
Участник

    Для повышения читаемости и корректности передачи параметра «ОбластьПоиска» в функцию `НайтиПоСсылкам` рекомендую:

    1. Явно создавать массив и заполнять его объектами метаданных (Документами и Справочниками) через отдельную процедуру или функцию, чтобы отделить логику формирования области поиска.

    2. Использовать понятные имена переменных.

    3. Передавать параметр «ОбластьПоиска» как один аргумент (без пропуска параметров), чтобы избежать ошибки «Недопустимое значение параметра».

    Пример улучшенного и читаемого кода:

    // Функция формирует массив объектов метаданных для области поиска
    Функция ПолучитьОбластьПоиска() Экспорт
        ОбластьПоиска = Новый Массив;
        
        // Добавляем все документы
        Для каждого Документ Из Метаданные.Документы Цикл
            ОбластьПоиска.Добавить(Документ);
        КонецЦикла;
        
        // Добавляем все справочники
        Для каждого Справочник Из Метаданные.Справочники Цикл
            ОбластьПоиска.Добавить(Справочник);
        КонецЦикла;
        
        Возврат ОбластьПоиска;
    КонецФункции
    
    // Основной код
    МассивСсылок = НайтиПоСсылкам(МассивОбъектовПроверки, ПолучитьОбластьПоиска());
    

    Объяснение:

    — Функция `ПолучитьОбластьПоиска` возвращает массив объектов метаданных, объединяющий документы и справочники.

    — При вызове `НайтиПоСсылкам` передаём два параметра: первый — массив ссылок для поиска, второй — область поиска (массив объектов метаданных).

    — Не пропускаем второй параметр, чтобы не получить ошибку.

    — Такой подход улучшает читаемость, упрощает поддержку и исключает ошибку с параметрами.

    Если в вашей версии 1С функция `НайтиПоСсылкам` принимает именно два параметра (массив ссылок и область поиска), то так будет корректно.

    Если же функция принимает только один параметр — массив ссылок, а область поиска задаётся через контекст или иным способом, то передавать область поиска не нужно.

    Рекомендую посмотреть здесь:
    https://helpf.pro/faq/view/590.html

    База знаний 1С