Загрузка данных


# --- НАСТРОЙКИ ---
$csvPath = "docs.csv"
$downloadDir = ".\downloads"
$baseUrl = "https://main.atb.su/normdocs/Lists/Docs/ByCategory.aspx"
$baseDomain = "https://main.atb.su"

if (!(Test-Path $downloadDir)) { New-Item -ItemType Directory -Path $downloadDir }

# Читаем CSV с разделителем ";"
$data = Import-Csv -Path $csvPath -Delimiter ";" -Encoding UTF8

foreach ($row in $data) {
    $title = $row.Название
    $category = $row.Категория
    if (-not $title) { continue }

    Write-Host "`nПоиск: $title... ($category)" -ForegroundColor Cyan

    # Формируем URL для фильтрации
    $searchUrl = "$baseUrl?FilterField1=Title&FilterValue1=$([uri]::EscapeDataString($title))&FilterField2=DocCategory&FilterValue2=$([uri]::EscapeDataString($category))"

    try {
        # Главная магия: -UseDefaultCredentials заходит под вашей учеткой Windows
        $page = Invoke-WebRequest -Uri $searchUrl -UseDefaultCredentials
        
        # Ищем ссылку на вложение через регулярное выражение
        if ($page.Content -match 'href="([^"]*?Attachments/[^"]+)"') {
            $relativeUrl = $matches[1]
            $fileUrl = "$baseDomain$relativeUrl"
            $fileName = [System.Web.HttpUtility]::UrlDecode($fileUrl.Split('/')[-1])
            $savePath = Join-Path $downloadDir $fileName

            # Проверяем наличие текста "Действителен" на странице
            if ($page.Content -like "*Действителен*") {
                Write-Host "  [+] Найдено! Скачиваю: $fileName" -ForegroundColor Green
                Invoke-WebRequest -Uri $fileUrl -OutFile $savePath -UseDefaultCredentials
            } else {
                Write-Host "  [!] Пропуск: документ не в статусе 'Действителен'" -ForegroundColor Yellow
            }
        } else {
            Write-Host "  [-] Файл не найден в этой категории." -ForegroundColor Red
        }
    } catch {
        Write-Host "  [!] Ошибка доступа или сети: $($_.Exception.Message)" -ForegroundColor Red
    }
}
Write-Host "`nГотово!" -ForegroundColor White