Скачивание обновлений 1C 8, 7.7, Айлант ЖКХ
База данных - Инструменты администратора БД
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Данная конфигурация скачивает все доступные обновления с сайтов:
- https://releases.1c.ru/ (Обновления 1С предприятие 8)
- http://techsupp.1c.ru/ (Обновления 1С предприятие 7.7)
- http://ujkh.ru/ (Айлант ЖКХ)
- http://1c-osa.ru/ (Отраслевая сервисная автоматизация)
UPD 1.0.4.2 от 30.07.2018:
- Произведен рефакторинг кода по получению конфигураций и версий. Процедура теперь выполняется в несколько раз быстрее.
- Добавлена возможность для конфигурации указать пользователя для скачивания обновлений.
- Для пользователя добавлен реквизит "Основной", по этому пользователю будут скачиваться обновления для конфигураций где пользователь не указан.
- Ограничено количество месяцев для поиска отзыва релиза. Устанавливается в соответствующей константе.
- В обработке "Построение цепочки обновлений" теперь можно скачать релизы.
- Добавлен модуль для упрощенного встраивания в конфигурации на основе БСП 2.6 и выше.
- Исправление ошибок.
UPD 1.0.3.10 от 10.04.2017:
- Исправление ошибок, рефакторинг.
UPD 1.0.3.8 от 17.11.2016:
- Добавлена поддержка сайта http://1c-osa.ru/.
UPD 1.0.3.7 от 28.10.2016:
- Поддержка обновления сайта https://releases.1c.ru/.
- Отказ от поддержки сайта ВДГБ.
- Отказ от поддержки расширения для БП 3.0.
- Исправление ошибок.
- Добавлена обработка: "Обновление типовых конфигураций".
- В справочник "Конфигурации 1С" добавлен реквизит "Каталог поставщика".

- Добавлены функции для работы с раширение к конфигурации "Бухгалтерия предприятия. Редакция 3.0".
- В конфигурацию добавлена обработка: "Построение цепочки обновлений". Обработка строит цепочку обновлений по принципу максимального релиза. Также в ней отображается какие релизы уже скачаны, и какие уже установлены на компьютер пользователя. В ней можно сразу установить скачанные, но еще не установленные релизы.

- Для упрощения встраивания в конфигурации добавлена подсистема "UPD_ЗагрузкаОбновлений". При сравнение-объединение требуется снять все крыжи, и отметить по данной подсистеме файла. Затем отметить саму подсистему. В пользовательском режиме требуется зайти в настройке и нажать кнопку: "Выполнить обновление".
- Добавлен интерфейс "UPD_ЗагрузкаОбновлений", добавлены роли пользователя и администратора.
- Добавлена проверка на отозванность релизов. Если релиз отозван, то папка с ним переименовывается.
- Реализовано паралельное считываение версий конфигураций. Количество паралельных процессов выставляется в настройках.
- Доработан поиск требуемой версии платформы для конфигурации.
- В начальное заполнение включен полностью спарсенные конфигурации и релизы сайта https://releases.1c.ru
- Исправление ошибок.
- Исправление в связи с обновлением сайта 1С (https://releases.1c.ru).
- Исправление в связи с обновлением сайта 1С (https://releases.1c.ru).
- В форме элемента справочника Программы выводится текст описания изменений в версии (при наличии файлов news.htm или "Новое в версии.htm".
- https://users.v8.1c.ru/ (Обновления 1С предприятие 8)
- Добавлена возможность скачивать тестовые версии.
- Именна файлов присваиваются согласно ссылкам (т.е. "Дистрибутив обновления.exe", "Полный дистрибутив.exe", "Технологическая платформа 1С Предприятия для Windows.rar" и т.д.).
- Режим совместимости выставлен в "Версия 8.3.5".
- Исправление ошибок.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.
24900 руб.
20.08.2024 83192 432 171
WEB-интеграция Рабочее место Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Пользователь 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)
Программный продукт "Управление доставками в 1С" позволяет обмениваться с личным кабинетом Boxberry, СДЭК, Энергия, Почта России, DPD, ПЭК, Grastin, Деловые Линии, КСЕ, Dalli, ЯндексДоставка. Упрощает создание заявок и резервирование заказов прямо в интерфейсе 1С
24400 руб.
10.03.2016 76078 321 100
WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)
Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.
17568 руб.
20.12.2024 7748 35 4
Инструменты администратора БД Роли и права Системный администратор Разработчик Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!
23180 руб.
06.12.2023 25055 85 14
Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
17000 руб.
10.11.2023 28707 103 46
Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)
Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.
42700 руб.
03.08.2020 25815 42 26
Поиск данных Инструменты администратора БД Корректировка данных Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Решение для автоматической сверки данных между любыми конфигурациями 1С. Помогает контролировать и проверять обмены, проверять наличие документов при переносах данных, находить изменения в закрытых периодах
9760 руб.
14.11.2025 6150 28 8
Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)
Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.
6000 руб.
15.04.2026 4152 12 0
Процедура РекурсивныйПарсингСпискаКонфигураций(ДокументHTML)
ТекИмяГруппы = "";
Для Каждого ЭлДок Из ДокументHTML.ДочерниеУзлы Цикл
Если СокрЛП(ЭлДок.ТекстовоеСодержимое) = "Название" Тогда
//количество строк в таблице дистрибутивов
СписокУзловHTML = ЭлДок.РодительскийУзел.РодительскийУзел.РодительскийУзел.ДочерниеУзлы[1].ДочерниеУзлы;
КолЭлементов = СписокУзловHTML.Количество();
Для А=0 По КолЭлементов-1 Цикл
Если СписокУзловHTML[А].ДочерниеУзлы.Количество() = 1 Тогда
ТекИмяГруппы = СокрЛП(СписокУзловHTML[А].ДочерниеУзлы[0].ДочерниеУзлы[0].ТекстовоеСодержимое);
Группа = НайтиСоздатьГруппу(ТекИмяГруппы, Справочники.UPD_Программы.v8, Истина);
ИначеЕсли СписокУзловHTML[А].ДочерниеУзлы.Количество() = 2 Тогда
ТекИмяГруппы = СокрЛП(СписокУзловHTML[А].ДочерниеУзлы[0].ДочерниеУзлы[0].ТекстовоеСодержимое);
Группа = НайтиСоздатьГруппу(ТекИмяГруппы, Справочники.UPD_Программы.v8, Истина);
КонецЕсли;
Если СписокУзловHTML[А].ДочерниеУзлы[0].ДочерниеУзлы.Количество() > 1 Тогда
ТекЯчейка = СписокУзловHTML[А].ДочерниеУзлы[0].ДочерниеУзлы[1];
Если ТипЗнч(ТекЯчейка) = Тип("ЭлементЯкорьHTML") Тогда
Название = СокрЛП(ТекЯчейка.ТекстовоеСодержимое);
ГиперСсылка = НайтиИмяФайлаПоСсылке(ТекЯчейка.ГиперСсылка);
НайтиСоздатьПрограмму(Название, Группа, ГиперСсылка, ,Перечисления.UPD_СайтОбновлений.UsersV81C, ТекИмяГруппы);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат;
КонецЕсли;
Если ЭлДок.ЕстьДочерниеУзлы() Тогда
РекурсивныйПарсингСпискаКонфигураций(ЭлДок);
КонецЕсли;
КонецЦикла;
КонецПроцедуры Показать???
программа скачивает с указанной в настройках даты. Для каждой конфигурации можно указать свою дату начала скачивания. Соответственно скачиваться будут только релизы, которые вышли позже указанных дат.
P.S. Данное касается естественно только релизов с users.v8.1c.ru, т.к. на остальных сайтах или нет полного списка релизов.
В общем модуле: "UPD_ЗагрузкаКонфигураций" в процедуре "РекурсивныйПарсингСпискаКонфигураций"
Если СокрЛП(ЭлДок.ТекстовоеСодержимое) = "Название" Тогда
//количество строк в таблице дистрибутивов
СписокУзловHTML = ЭлДок.РодительскийУзел.РодительскийУзел.РодительскийУзел.ДочерниеУзлы[1].ДочерниеУзлы;
КолЭлементов = СписокУзловHTML.Количество();
Для А=0 По КолЭлементов-1 Цикл
Если СписокУзловHTML[А].ДочерниеУзлы.Количество()=1 ИЛИ СписокУзловHTML[А].ДочерниеУзлы.Количество()=2 Тогда
ТекИмяГруппы = СокрЛП(СписокУзловHTML[А].ДочерниеУзлы[0].ДочерниеУзлы[0].ТекстовоеСодержимое);
Группа = НайтиСоздатьГруппу(ТекИмяГруппы, Справочники.UPD_Программы.v8, Истина); ПоказатьЗамените на:
Если СокрЛП(ЭлДок.ТекстовоеСодержимое) = "Название" Тогда
//количество строк в таблице дистрибутивов
СписокУзловHTML = ЭлДок.РодительскийУзел.РодительскийУзел.РодительскийУзел.ДочерниеУзлы[2].ДочерниеУзлы;
КолЭлементов = СписокУзловHTML.Количество();
Для А=0 По КолЭлементов-1 Цикл
Если СписокУзловHTML[А].ДочерниеУзлы.Количество() = 1 ИЛИ СписокУзловHTML[А].ДочерниеУзлы.Количество() = 2 Тогда
ТекИмяГруппы = СокрЛП(СписокУзловHTML[А].ДочерниеУзлы[0].ТекстовоеСодержимое);
Группа = НайтиСоздатьГруппу(ТекИмяГруппы, Справочники.UPD_Программы.v8, Истина); ПоказатьСтруктураВозвращаемыхДанных = ПолучитьТекстНовогоВВерсии(Элементы.Версии.ТекущиеДанные.Ссылка);
там так и потянется. ладно не замарачивайся, а вот если бы вот это подшаманил (если смог бы), было бы респект видно хозяин пропал, а весЧ не плоха
&НаКлиенте
Процедура ВерсииПриАктивизацииСтроки(Элемент)
ТекДанные = Элементы.Версии.ТекущиеДанные;
Если ТекДанные <> Неопределено Тогда
СтруктураВозвращаемыхДанных = ПолучитьТекстНовогоВВерсии(.Ссылка);
Если СтруктураВозвращаемыхДанных.ФайлНайден Тогда
Элементы.НовоеВВерсии.Видимость = Истина;
НовоеВВерсии = СтруктураВозвращаемыхДанных.ТекстНовоеВВерсии;
Иначе
Элементы.НовоеВВерсии.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать&НаКлиенте
Процедура ВерсииПриАктивизацииСтроки(Элемент)
ТекДанные = Элементы.Версии.ТекущиеДанные;
Если ТекДанные <> Неопределено Тогда
СтруктураВозвращаемыхДанных = ПолучитьТекстНовогоВВерсии(ТекДанные.Ссылка);
Если СтруктураВозвращаемыхДанных.ФайлНайден Тогда
Элементы.НовоеВВерсии.Видимость = Истина;
НовоеВВерсии = СтруктураВозвращаемыхДанных.ТекстНовоеВВерсии;
Иначе
Элементы.НовоеВВерсии.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры ПоказатьЯ не Франч и общего доступа к сайту обновлений нет.
Есть доступ у различных клиентов к разным конфигурациям. Т.е. к одному и тому же сайту обновлений нужна привязка какую конфигурацию под каким пользователем нужно качать.
Есть такая возможность? Или возможно ли её реализовать?
СТР 77
ПутьКФайлу = ЭлементСписка.Значение + "\1c\" + ИмяПапкиШаблона + "\" + ИмяВерсии + "\1cv8.cfu";строка "\1с\" не во всех случаях такая, например у отраслевой БСО, должно быть "\IMPULS-IVC\"
Сайт:
{ОбщийМодуль.UPD_ОбновлениеБазыДанных.Модуль(209)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ЗаписанноеЗначение = ПрочитатьXML(ЧтениеXML);
по причине:
Ошибка преобразования данных XML: [sfile://C:/Users/Evgenu/AppData/Local/Temp/UPD_КонфигурацииИВерсииV8.txt][202566,3]
Версия платформы 1С:Предприятие 8.3 (8.3.8.1933)
Сейчас все работает.
1. У нас не работает обновление справочника версий. Проблема насколько я понял таиться в модуле "UPD_ЗагрузкаОбновленийV8"
Функция ЗагрузитьКонфигурации(ПользовательСайта) Экспорт
ИдентификаторСессии = UPD_ЗагрузкаОбновленийПовтИсп.НайтиИдентификаторСессииV8(ПользовательСайта);
Попытка
Загружено = 0;
Запрос = Новый HTTPЗапрос;
Запрос.Заголовки.Вставить("Cookie", ИдентификаторСессии.JSESSIONID);
Запрос.АдресРесурса = "/total";
Соединение2 = Новый HTTPСоединение("releases.1c.ru",,,,Новый ИнтернетПрокси,,Новый ЗащищенноеСоединениеOpenSSL);
ОтветHTTP = Соединение2.Получить(Запрос);
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(ОтветHTTP.ПолучитьТелоКакСтроку());
Построитель = Новый ПостроительDOM;
ДокументHTML = Построитель.Прочитать(ЧтениеHTML);
ИскатьВерсиюПлатформы = Константы.UPD_ИскатьТребуемуюВерсиюПлатформы.Получить();
Если ИскатьВерсиюПлатформы Тогда
РекурсивныйПарсингСпискаКонфигураций(ДокументHTML, ИскатьВерсиюПлатформы, ПользовательСайта);
Иначе
РекурсивныйПарсингСпискаКонфигураций(ДокументHTML); //АС: Здесь наверное не хватает параметра "ПользовательСайта"
КонецЕсли;
ЗагрузитьВерсииV8(ПользовательСайта);
Исключение
UPD_РегламентныеЗадания.ЗаписатьОшибку(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции Показать2. Если используется несколько пользователей для загрузки с сайта "releases.1c.ru", то выполнение кода падает с ошибкой неуникальности ключа фоновых заданий. Поэтому ключ нужно или генерировать случайный, или в разрезе пользователей сайта. А вообще лучше сначала построить список доступных ПП по разным пользователям, а уже потом парсить версии. У разных пользователей могут быть одинаковые ПП в списке. Проблемы начинаются при параллельной записи в базу новых ПП, доступ к которым есть у двух пользователей.
с одинаковыми логинами и паролями
Куда копать?
Во-первых, при обновлении справочника версий идёт просмотр информации по всем имеющимся версиям ради того, чтобы узнать отозван релиз или нет. Большая часть выполнения, на мой взгляд, это бесполезная процедура. У нас я ограничил глубокий анализ последними пятью версиями. Мне пофиг, если вдруг релиз полугодовалой давности вдруг станет отозванным. На самом деле такого никогда не будет. А чтобы максимально исключить вероятность установки такого релиза нужно строить цепочку обновления с целевого релиза, а не с текущего.
Во-вторых. В данной разработке не оптимально производится многопоточный парсинг версий в случае, когда есть несколько пользователей к одному и тому же сайту, в нашем случае releases.1c, и список доступных ПП у них пересекается. К автору претензий нет, это наша особенность и здесь нужно ещё хорошо подумать как это сделать. Если автору интересно, могу поделиться опытом в реализации.
В-третьих, иногда получаются слишком длинные полные наименования файлов, особенно у каких-нибудь внешних печатных форм. Жёстко ограничивать длину не совсем правильно, так как не всегда есть в этом необходимость. Не ограничивать тоже нельзя, так как файл просто не запишется на диск.Сделал анализ именно полного имени файла и при необходимости пишу имя файла оригинальное, а не русское.
В-четвёртых. 1С постоянно что-то меняет, Поспеть за всем этим сложно. Например, раньше на странице релиза был такой пункт "Новое в версии", а теперь этот пункт называется "Бухгалтерия предприятия, редакция 3.0. Версия 3.0.53.39. Новое в версии". Следовательно просмотр файла в форме программного продукта сломался. Я вышел из ситуации универсиализировав код. Или имя файла на сайте было "news" а стало "Novoe_v_versii". Ой.. а в коде есть ограничение на эту тему. А бывают более серьёзные изменения на сайте.
Короче итог: то что вообще есть данная разработка это хорошо, это хорошая основа для дальнейшего развития. В простых типовых условиях она работает. Если что-то не работает, то попробуйте понять почему, и если это просто исправить, то лучше сами исправьте, и автору напишите что именно не работает.
Что реально хотелось бы увидеть в разработке:
В какой-то момент были реальные косяки с загрузкой, причину установить удалось только у части ПП. 1С имеет свойство ещё и переименовывать ПП на сайте, объединять разные редакции в одну позицию. В автоматическом режиме отследить это нереально. Но если отследить это не сложно, то вот потом выправлять руками данные в базе как-то не айс. К примеру, была конфигурации "Документооборот 2.0", "Документооборот 2.1", а теперь просто ""Документооборот 2" и всё в одном. В базе наплодились версии на все три программных продукта. Для наведения порядка нужно:
1. Удалить все версии ""Документооборот 2".
2. Сменить владельца у двух старых программных продуктов на новый. На этих версиях уже много чего завязано.
3. Сделать замену всех ссылок старых программных продуктов на ссылку нового программного продукта.
Разделил на 3 этапа, так как делается это универсальными обработками. После этого нужно включить загрузку нового ПП.
Было бы неплохо, если бы эти все действия можно было сделать какой-то специальной обработкой, которая будет это делать в фоновом режиме.
Пользователя конечно что же добавил, под ним на users.v8.1c.ru захожу. Через программу не обновляет версии...
Если же снять галку Использовать фоновые задания то ошибка... как быть, может версия не совсем новая? Установлена Загрузка обновлений 1C 8, 7.7, Айлант ЖКХ (1.0.3.10)
ИдентификаторСессии = UPD_ЗагрузкаОбновленийКлиентСерверПовтИсп.НайтиИдентификаторСессииV8(Пользователь, Соединение.Сервер);ИдентификаторСессии = UPD_ЗагрузкаОбновленийКлиентСерверПовтИсп.НайтиИдентификаторСессииV8(Пользователь, Соединение.Сервер, Запрос.АдресРесурса);в модуле UPD_ЗагрузкаОбновленийКлиентСерверПовтИсп вместо
Функция НайтиИдентификаторСессииV8(ПользовательСайта, АдресСайта = "releases.1c.ru") Экспорт
ИдентификаторСессии = Новый Структура("Найден, JSESSIONID, onec_security", Ложь);
Сессии = Новый Соответствие;
Попытка
HTTPЗапрос1 = Новый HTTPЗапрос;
HTTPЗапрос1.Заголовки.Вставить("Connection", "keep-alive"); ПоказатьФункция НайтиИдентификаторСессииV8(ПользовательСайта, АдресСайта = "releases.1c.ru", АдресРезурса = "") Экспорт
ИдентификаторСессии = Новый Структура("Найден, JSESSIONID, onec_security", Ложь);
Сессии = Новый Соответствие;
Попытка
HTTPЗапрос1 = Новый HTTPЗапрос;
HTTPЗапрос1.Заголовки.Вставить("Connection", "keep-alive");
HTTPЗапрос1.АдресРесурса = АдресРезурса; ПоказатьИспользую другую конфигурацию (от автора Alexandr Kuritsyn (hibico)) для скачивания файлов updsetup.exe.
Со скачиванием проблема, немного поправил и сделал так:
HTTPЗапрос1 = Новый HTTPЗапрос;
HTTPЗапрос1.Заголовки.Вставить("Connection", "keep-alive");
// определение для POST-запросов
HTTPЗапрос2 = Новый HTTPЗапрос;
HTTPЗапрос2.Заголовки.Вставить("Connection", "keep-alive");
HTTPЗапрос2.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
// определим соединения
Соединение1 = Новый HTTPСоединение("login.1c.ru",,,,Новый ИнтернетПрокси,,Новый ЗащищенноеСоединениеOpenSSL);
//Соединение2 = Новый HTTPСоединение("portal.1c.ru",,,,Новый ИнтернетПрокси,,Новый ЗащищенноеСоединениеOpenSSL);
Соединение2 = Новый HTTPСоединение("releases.1c.ru",,,,Новый ИнтернетПрокси,,Новый ЗащищенноеСоединениеOpenSSL);
//Соединение3 = Новый HTTPСоединение("downloads.v8.1c.ru",,Логин,Пароль,,,);
Соединение3 = Новый HTTPСоединение("dl03.1c.ru",,,,Новый ИнтернетПрокси,,Новый ЗащищенноеСоединениеOpenSSL);
//Соединение4 = Новый HTTPСоединение("dl03.1c.ru",,Логин,Пароль,,,);
// Запрос 1
HTTPЗапрос1.АдресРесурса = "/total";
ОтветHTTP1 = Соединение2.Получить(HTTPЗапрос1); // =1= releases.1c.ru
JSESSIONID = ОтветHTTP1.Заголовки.Получить("Set-Cookie");
JSESSIONID = Лев(JSESSIONID, Найти(JSESSIONID, ";") - 1);
LOCATION1 = СтрЗаменить(ОтветHTTP1.Заголовки.Получить("Location"), "https://login.1c.ru", "");
// Запрос 2
HTTPЗапрос1.АдресРесурса = LOCATION1;
ОтветHTTP2 = Соединение1.Получить(HTTPЗапрос1); // =2= login.1c.ru
JSESSIONID1 = ОтветHTTP2.Заголовки.Получить("Set-Cookie");
JSESSIONID1 = Прав(JSESSIONID1, СтрДлина(JSESSIONID1) - Найти(JSESSIONID1, "SESSION") + 1);
JSESSIONID1 = Лев(JSESSIONID1, Найти(JSESSIONID1, ";") - 1);
// получим inviteCode
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(ОтветHTTP2.ПолучитьТелоКакСтроку());
Построитель = Новый ПостроительDOM;
ДокументHTML = Построитель.Прочитать(ЧтениеHTML);
loginForm = ДокументHTML.ПолучитьЭлементПоИдентификатору("loginForm");
//inviteCode = "inviteCode=<=" + loginForm.Элементы[1].Значение
// + "&execution=" + loginForm.Элементы[2].Значение
// + "&_eventId=" + loginForm.Элементы[3].Значение
// + "&username=" + Логин
// + "&password=" + Пароль;
inviteCode = "inviteCode=<=" + loginForm.Элементы[0].Значение
+ "&execution=" + loginForm.Элементы[3].Значение
+ "&_eventId=" + loginForm.Элементы[4].Значение
+ "&username=" + Логин
+ "&password=" + Пароль;
//Запрос 3
//LOCATION1 = СтрЗаменить(LOCATION1, "releases", "portal");
HTTPЗапрос2.АдресРесурса = LOCATION1;
HTTPЗапрос2.Заголовки.Вставить("Cookie", JSESSIONID1);
HTTPЗапрос2.УстановитьТелоИзСтроки(inviteCode);
ОтветHTTP3 = Соединение1.ОтправитьДляОбработки(HTTPЗапрос2); // =3= login.1c.ru
LOCATION3 = СтрЗаменить(ОтветHTTP3.Заголовки.Получить("Location"), "https://releases.1c.ru", "");
//Запрос 4
HTTPЗапрос1.АдресРесурса = LOCATION3;
HTTPЗапрос1.Заголовки.Вставить("Cookie", JSESSIONID);
ОтветHTTP4 = Соединение2.Получить(HTTPЗапрос1); // =4=
// инициируем ссылку на файл
HTTPЗапрос2.Заголовки.Вставить("Cookie", JSESSIONID);
HTTPЗапрос2.АдресРесурса = Адрес1;
ОтветHTTP5 = Соединение2.ОтправитьДляОбработки(HTTPЗапрос2); // =5=
Тело = ОтветHTTP5.ПолучитьТелоКакСтроку();
НАдреса = Найти(Тело,"https://dl03.1c.ru");
Адрес = Сред(Тело,НАдреса);
КАдреса = Найти(Адрес,"""")-1;
Адрес = Лев(Адрес,КАдреса);
Адрес = СтрЗаменить(Адрес,"https://dl03.1c.ru","");
СоздатьКаталог(ЛокКаталог);
ОтветHTTP6 = Соединение3.Получить(Адрес,ЛокАдрес); Показатьгде Адрес это ссылка на файл вида "https://dl03.1c.ru/public/file/get/d616d9b8-7e48-11e5-863e-005056910018"
подскажите пожалуйста, как скачать этот файл updsetup.exe?
В ОтветHTTP6: код состояния 302, а в Location:
Можете подсказать в чем загвоздка, что-то пока плохо получается разобраться в запросах, не могу понять, что надо сделать дальше, чтобы скачать файл?!
Заранее благодарю!
Если есть готовое решение, я конечно не откажусь, но одновременно хочется разобраться, хотя бы в общих принципах работы, в данном случае в принципах скачивания файла обновления updsetup.exe.
Почему например, когда я уже залогинился, вроде как, получил ссылку, а скачать по ссылке не получается.
login.1c.ru это login.1c.ru.
releases.1c.ru это releases.1c.ru.
На releases.1c.ru формы ввода логина и пароля тоже нет)))) залогивание на dl03.1c.ru ничем не отличается от ввода логина на releases.1c.ru. Тот же пост запрос к login.1c.ru, только с куками полученными с dl03.1c.ru.
Это вопрос номер 1.
А второй вопрос залогинился допустим, дальше как? Сразу пробовать получить файл с куками от dl03.1c.ru? Или какие-то ещё промежуточные действия?!))
т.е. пробуем запросить по ссылке, получаем куки, передаем их на страницу перенаправления логин1с, получаем форму, тут уже с разными куками пробовал, после залогинивания нас перенаправляют на
и тут опять непонятка, пробовал с полученными куками по перенаправлениям, что-то не то в итоге на главной релизес оказываюсь, а если с этими куками сразу на dl03, тогда опять отправляет на логин1С
// загрузим файл ================================================================================
//СоздатьКаталог(ЛокКаталог);
////ОтветHTTP6 = Соединение3.Получить(Адрес,ЛокАдрес);
HTTPЗапрос1.АдресРесурса = Адрес;
Ответ1 = Соединение3.Получить(HTTPЗапрос1); // =1=
JSESSIONID = Ответ1.Заголовки.Получить("Set-Cookie");
JSESSIONID = Лев(JSESSIONID, Найти(JSESSIONID, ";") - 1);
LOCATION = СтрЗаменить(Ответ1.Заголовки.Получить("Location"), "https://login.1c.ru", "");
HTTPЗапрос1.АдресРесурса = LOCATION;
HTTPЗапрос1.Заголовки.Вставить("Cookie", JSESSIONID);
Ответ2 = Соединение1.Получить(HTTPЗапрос1); // =2= login.1c.ru
JSESSIONID1 = Ответ2.Заголовки.Получить("Set-Cookie");
JSESSIONID1 = Прав(JSESSIONID1, СтрДлина(JSESSIONID1) - Найти(JSESSIONID1, "SESSION") + 1);
JSESSIONID1 = Лев(JSESSIONID1, Найти(JSESSIONID1, ";") - 1);
//HTTPЗапрос1.АдресРесурса = Адрес;
//HTTPЗапрос1.Заголовки.Вставить("Cookie", JSESSIONID1);
//Ответ2 = Соединение3.Получить(HTTPЗапрос1);
// получим inviteCode
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(ОтветHTTP2.ПолучитьТелоКакСтроку());
Построитель = Новый ПостроительDOM;
ДокументHTML = Построитель.Прочитать(ЧтениеHTML);
loginForm = ДокументHTML.ПолучитьЭлементПоИдентификатору("loginForm");
//inviteCode = "inviteCode=<=" + loginForm.Элементы[1].Значение
// + "&execution=" + loginForm.Элементы[2].Значение
// + "&_eventId=" + loginForm.Элементы[3].Значение
// + "&username=" + Логин
// + "&password=" + Пароль;
inviteCode = "inviteCode=<=" + loginForm.Элементы[0].Значение
+ "&execution=" + loginForm.Элементы[3].Значение
+ "&_eventId=" + loginForm.Элементы[4].Значение
+ "&username=" + Логин
+ "&password=" + Пароль;
HTTPЗапрос2.АдресРесурса = LOCATION;
HTTPЗапрос2.Заголовки.Вставить("Cookie", JSESSIONID1);
HTTPЗапрос2.УстановитьТелоИзСтроки(inviteCode);
ОтветHTTP3 = Соединение1.ОтправитьДляОбработки(HTTPЗапрос2); // =3= login.1c.ru
LOCATION3 = СтрЗаменить(ОтветHTTP3.Заголовки.Получить("Location"), "https://releases.1c.ru", "");
//LOCATION3 = СтрЗаменить(ОтветHTTP3.Заголовки.Получить("Location"), "https://dl03.1c.ru", "");
JSESSIONID2 = ОтветHTTP3.Заголовки.Получить("Set-Cookie");
JSESSIONID2 = Прав(JSESSIONID2, СтрДлина(JSESSIONID2) - Найти(JSESSIONID2, "SESSION") + 1);
JSESSIONID2 = Лев(JSESSIONID2, Найти(JSESSIONID2, ";") - 1);
//HTTPЗапрос1.АдресРесурса = LOCATION1;
HTTPЗапрос1.АдресРесурса = LOCATION3;
HTTPЗапрос1.Заголовки.Вставить("Cookie", JSESSIONID2);
//Ответ3 = Соединение3.Получить(HTTPЗапрос1); // =3=
Ответ3 = Соединение2.Получить(HTTPЗапрос1); // =3=
//LOCATION2 = СтрЗаменить(Ответ3.Заголовки.Получить("Location"), "https://dl03.1c.ru", "");
LOCATION4 = СтрЗаменить(Ответ3.Заголовки.Получить("Location"), "https://releases.1c.ru", "");
JSESSIONID3 = Ответ3.Заголовки.Получить("Set-Cookie");
JSESSIONID3 = Прав(JSESSIONID3, СтрДлина(JSESSIONID3) - Найти(JSESSIONID3, "SESSION") + 1);
JSESSIONID3 = Лев(JSESSIONID3, Найти(JSESSIONID3, ";") - 1);
HTTPЗапрос1.АдресРесурса = Адрес;
HTTPЗапрос1.Заголовки.Вставить("Cookie", JSESSIONID3);
Ответ4 = Соединение3.Получить(HTTPЗапрос1); ПоказатьНо в итоге он опять меня на логин.1с.ру отправляет
Реализовать загрузку дополнительных материалов со страницы конфигурации не думаю, что будет очень сложно.
В базе указал пользователя для проверки и скачивания обновление и каталог обновлений в настройках. Больше ничего не делал.
Для одной конфигурации указал свою дату загрузки обновлений "01.01.2018", чтобы скачались обновления только этой конфигурации. Также поставил галочку "Скачивать обновления". Выполняю команду "Загрузить", где-то на десять секунд запускается фоновое задание, выключается, никаких файлов не появляется.
Выполнение кода добирается до функции "ЗагрузитьВерсииV8ПоСсылке". Соединение выполняется (см. скриншот), ответ получен (см. скриншот), что говорит о наличии доступа в интернет.
Из функции "ЗагрузитьВерсииV8ПоСсылке" попадаем в процедуру "РекурсивныйПарсингСпискаВерсий". И здесь происходит что-то подозрительное. Выполняется получение первого элемента:
Для Каждого ЭлДок Из ДокументHTML.ДочерниеУзлы ЦиклЕсли СокрЛП(ЭлДок.ТекстовоеСодержимое) = "Номер версии" ТогдаЕсли ЭлДок.ЕстьДочерниеУзлы() Тогда
Посмотрел функцию "НайтиИдентификаторСессииV8". В ней четыре раза встречается переменная ОтветHTTP. Посмотрел коды состояния в этой переменной: 302, 200, 401, 401. Я так понимаю, что в третий раз как раз происходит неудачная авторизация.
Запускаю скачивание файлов обновлений. Иногда скачиваются нужные файлы, но чаще получаются файлы с одинаковым размеров 10КБ. Если это файл htm, то его можно открыть. В нем будет приблизительно следующее:
1C:Обновление программ
Главная Новости Личный кабинет О сервисе
Указанный файл не найден
Внимание!
Выбранный файл не найден
С помощью отладчика прошелся, для файлов самих обновлений получается точно такой же результат, просто он сохраняется в файл с расширением exe.
В результате ни разу все нужные файлы не скачались, сколько бы я не запускал загрузку. Либо какая-то часть скачивается, либо ни одного.
А как можно решить, отследить проблему? На стороне 1С я могу самостоятельно разбирать проблемы, но как только дело доходит до взаимодействия с сайтом 1С, тут я ничего не могу сделать. HTTP и внутренности 1совского сайта я не знаю.
У пользователя наблюдается внезапное кратковременное пропадание прав)
На мысль навели попытки с помощью инструментов разработчика браузера посмотреть как происходит работа с сайтом. Там заметил, что в InviteCode, написание пароля отличается от самого пароля. Некоторые символы заменены. Замена похожа на замену слеша на "%2F", или замену русских букв в адресной строке не похожие наборы символов. По-видимому, из-за отсутствия подобной замены у меня и не происходила авторизация.
Но проблема, что указанный файл не найден осталась. По-прежнему вместо нужных файлов закачиваются 10Кб страницы, как описывал выше.
Ткнул пальцем в небо, не попал.
1. В описании нигде не указано, что начинают релизы загружаться только тогда, когда в нужной конфигурации на вкладке Настройки будет установлена галочка Скачивать обновления.
2. Повторная загрузка всех конфигураций происходит очень долго. При построении списка обновляемых конфигураций никак не учитывается была ли она загружена ранее или нет. Только когда дело (после рекурсивного разбора страницы) доходит до непосредственной загрузки файлов. Чуть доработал этот момент следующим образом:
- добавил в справочник версий реквизит Все файлы загружены
- в цикле Для каждого ТекСтрока из ТаблицаЗагружаемыхВерсий Цикл функции UPD_ЗагрузкаОбновленийV8.ЗагрузитьОбновления после СкачатьФайлыВерсии8 добавил примерно такой код
текВерсия = ТекСтрока.НомерВерсии.ПолучитьОбъект();
текВерсия.ВсеФайлыЗагружены = Истина;
текВерсия.ОбменДанными.Загрузка = Истина;
текВерсия.Записать();
- в запросе ПолучитьСписокОбновляемыхКонфигураций8 добавил соответствующие условия | И НЕ UPD_Версии.ВсеФайлыЗагружены
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 275151
Создание 27.04.14 00:20
Обновление 14.08.19 10:39
Просмотры 39041
Загрузки 67
Рейтинг
27
Комментарии 108
Код открыт Да
Рубрики WEB-интеграция Инструменты администратора БД
Кому
Системный администратор
,
Разработчик
Тип файла Конфигурация (md, cf)
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
