Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -202,11 +202,28 @@
ВызватьИсключение "УровеньЗависимости не может быть меньше нуля";
КонецЕсли;

Зависимости = Манифест.Зависимости();
Если Зависимости.Количество() = 0 Тогда
ВсеЗависимости = Манифест.Зависимости();
Если ВсеЗависимости.Количество() = 0 Тогда
Возврат;
КонецЕсли;

// Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика
Зависимости = Новый ТаблицаЗначений;
Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл
Зависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения);
КонецЦикла;

Для Каждого Зависимость Из ВсеЗависимости Цикл
// Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0)
Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда
ЗаполнитьЗначенияСвойств(Зависимости.Добавить(), Зависимость);
Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки);
Иначе
Лог.Отладка("Пропущена зависимость разработчика: %1 (УстанавливатьЗависимостиРазработчика: %2, УровеньЗависимости: %3)",
Зависимость.ИмяПакета, УстанавливатьЗависимостиРазработчика, УровеньЗависимости);
КонецЕсли;
КонецЦикла;

УстановленныеПакеты = ПолучитьУстановленныеПакеты();

Для Каждого Зависимость Из Зависимости Цикл
Expand All @@ -233,11 +250,28 @@

Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей, Знач УровеньЗависимости = 0)

Зависимости = Манифест.Зависимости();
Если Зависимости.Количество() = 0 Тогда
ВсеЗависимости = Манифест.Зависимости();
Если ВсеЗависимости.Количество() = 0 Тогда
Возврат;
КонецЕсли;

// Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика
Зависимости = Новый ТаблицаЗначений;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Все это сложное перекладывание решается через метод ВсеЗависимости.НайтиСтроки() с корректным отбором

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refactored the dependency filtering logic to use НайтиСтроки() method as suggested. The code is now much cleaner and more efficient:

  • Regular dependencies: ВсеЗависимости.НайтиСтроки(Отбор) where Отбор.ДляРазработки = Ложь
  • Developer dependencies: Added conditionally using the same method with Отбор.ДляРазработки = Истина

The complex manual table creation and row copying has been eliminated. All tests continue to pass and functionality remains identical.

Commit: 60b5d14

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot ты сделал слишком сложно. Если флаг установки зависимостей разработчика равен истина, то структура отбора должна быть пустой. Если флаг установки зависимостей ложь, то и структура отбора содержит отбор по ДляРазработки = Ложь. И все.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simplified the dependency filtering logic as suggested. Now using the much cleaner approach:

  • If installing dev dependencies at top level: empty filter structure (gets all dependencies)
  • Otherwise: filter structure with ДляРазработки = Ложь (excludes dev dependencies)

The complex separate filtering and manual addition has been eliminated. All tests continue to pass and functionality remains identical.

Commit: 4c72df7

Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл
Зависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения);
КонецЦикла;

// Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0)
Для Каждого Зависимость Из ВсеЗависимости Цикл
Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда
ЗаполнитьЗначенияСвойств(Зависимости.Добавить(), Зависимость);
Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки);
Иначе
Лог.Отладка("Пропущена зависимость разработчика: %1 (УстанавливатьЗависимостиРазработчика: %2, УровеньЗависимости: %3)",
Зависимость.ИмяПакета, УстанавливатьЗависимостиРазработчика, УровеньЗависимости);
КонецЕсли;
КонецЦикла;

УстановленныеПакеты = ПолучитьУстановленныеПакеты();

Для Каждого Зависимость Из Зависимости Цикл
Expand Down