<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
(1) olesha, очередное обновление сайта от 1с)) обновите процедуру в общем модуле UPD_ЗагрузкаКонфигураций:
Показать
(2) УРЯ заработало
А бесплатно можно скачать обновление или нужен логин и пароль?
(4) maksa2005, нужен логин и пароль.
а обработка скачивает только минимально необходимый набор обновлений от текущей конфигурации (как задать версию?) до актуальной? — например — купил я коробку БП3 корп — в ней диск с весрийе аж в районе февраля — ручками пришлось скачивать все (миниамльно необходимые) обновления — 10 штук (обновлений же гораздо больше…).
???
(6) CheBurator,
программа скачивает с указанной в настройках даты. Для каждой конфигурации можно указать свою дату начала скачивания. Соответственно скачиваться будут только релизы, которые вышли позже указанных дат.
P.S. Данное касается естественно только релизов с users.v8.1c.ru, т.к. на остальных сайтах или нет полного списка релизов.
Как работает скачивание 7.70 конфигураций?
Их нет в списке…
(8) white_sochi, вводите пароль отhttp://techsupp.1c.ru в настройках. Затем обновляете список программ. После можно установить, что будет загружаться.
(10) zato1c, обрадовало нас 1С обновленным сайтом)) Обновление будет сегодня-завтра.
Выложил обновление.
(12) эх только $ потратил, все равно не пашет,https://releases.1c.ru/ да же не показывает Релизы 8x втабл части, хотя выбор в настройках сайт появился!
(13) zato1c, действительно ошибка в получение конфигураций.
В общем модуле: «UPD_ЗагрузкаКонфигураций» в процедуре «РекурсивныйПарсингСпискаКонфигураций»
Показать
Замените на:
Показать
{Справочник.UPD_Программы.Форма.ФормаЭлемента.Форма(37)}: Значение не является значением объектного типа (Ссылка)
http://infostart.ru/public/287082/ видно хозяин пропал, а весЧ не плоха
СтруктураВозвращаемыхДанных = ПолучитьТекстНовогоВВерсии(Элементы.Версии.ТекущиеДанные.Ссылка);
там так и потянется. ладно не замарачивайся, а вот если бы вот это подшаманил (если смог бы), было бы респект
(15) zato1c, замените процедуру.
Показать
(15) zato1c, моя конфа значительно превосходит эту обработку.
блин в предыдущем посте ошибка. Вот правильный код.
Показать
Вроде начал крутится, по наблюдаем, спасибо за ранее!
Скачал пару релизов и сказал, что все задания выполнены, так что увы!
(20) zato1c, а Вы точно все настроили?))) Проверьте даты начала загрузок.
Сутки крутил. Итог бухгалтерия и зуп нет! как 8,2 так 8,3 все перебрал. Было бо не плохо прописывать пути кача релизов. Люди привыкли к определенному порядку. ну и для гурманов) оповещение на @ хотя бы, что вышло и с качалось(это так на всякий))
(22) zato1c, я не понимаю, что именно у вас вызывает такие проблемы с настройкой. У меня все прекрасно скачивается. Да и пути тоже можете прописывать какие хотите.
молодец конечно, что написал. Но как то все живет отдельной жизнью, что качает, сколько качает, ХЗ
Возник такой вопрос:
Я не Франч и общего доступа к сайту обновлений нет.
Есть доступ у различных клиентов к разным конфигурациям. Т.е. к одному и тому же сайту обновлений нужна привязка какую конфигурацию под каким пользователем нужно качать.
Есть такая возможность? Или возможно ли её реализовать?
(25) AvtoBuhgalter, есть возможность ввести несколько пользователей. Для каждого пользователя будут качаться доступные ему обновления.
Обработка UPD_ПостроениеЦепочкиОбновлений
СТР 77
строка «1с» не во всех случаях такая, например у отраслевой БСО, должно быть «IMPULS-IVC»
(27) white_sochi, если подскажите, где это можно в автоматическом режиме взять с сайта релизов 1с буду благодарен.
(28) а вот нигде к сожалению.
Давайте в справочнике просто всем типовым проставим директорию «1С», а остальным, чтобы пользователь сам указывал где искать
(29) white_sochi, так и сделаем) напишите почту свою, я вам обновленную версию вышлю.
Можно добавить еще скачивание релизов КАМИН?
http://www.kaminsoft.ru/component/kaminsupport/?Itemid=50
Сайт:
В отчете по последним версиям не хватает режима, когда выводит только измененные за последние Х дней конфигурации
(31) Snork, у меня нет ни одной учетной записи камина, что бы даже посмотреть как там устроено.
(32) Snork, так можно поставить отбор))
при попытке развернуть с пустой базы 1.0.3.6. пытается вполнить обновление (похоже на то, что там начальное заполнение) выдает ошибку
{ОбщийМодуль.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)
(35) EvgenURNN, странно. Попробуйте на 8.3.5 развернуть начальный вариант.
(36) Поразбирался маленько, ошибка из-за того, что в конфигурации больше реквизитов: ПорядокГруппы, ВыводитьВОтчет и КаталогПоставщика. В макете нет таких реквизитов. Сериализатор валится с ошибкой из-за этого.
Сейчас все работает.
(35) EvgenURNN, Та же ошибка, скачал и установил сегодня…. Автор, исправлять бум?
(38) Alex_E, будем). просто хотел и все версии обновить в начальном заполнении, но все руки не доходят. Если срочно лечится очень просто. У справочника UPD_Программы удаляете реквизит КаталогПоставщика. И в общем модуле UPD_ОбновлениеБазыДанных в функции ВерсияКонфигурации устанавливаете версию 1.0.3.5. Запускаете 1С. Как прошло начальное заполнение накатываете конфигурацию.
(39) спасибо!
(40) Alex_E, все поправил) если еще сами не делали напишите почту, я вам вышлю конфигурацию.
Есть две проблемы в версии 1.0.3.7:
1. У нас не работает обновление справочника версий. Проблема насколько я понял таиться в модуле «UPD_ЗагрузкаОбновленийV8»
Показать
2. Если используется несколько пользователей для загрузки с сайта «releases.1c.ru», то выполнение кода падает с ошибкой неуникальности ключа фоновых заданий. Поэтому ключ нужно или генерировать случайный, или в разрезе пользователей сайта. А вообще лучше сначала построить список доступных ПП по разным пользователям, а уже потом парсить версии. У разных пользователей могут быть одинаковые ПП в списке. Проблемы начинаются при параллельной записи в базу новых ПП, доступ к которым есть у двух пользователей.
(41) qwinter, Павел, Ваша конфигурация сейчас работает или нет, а то что-то не понятно по отзывам, вроде опять что-то поменялось на сайте 1С?
(43) SERJ_1CC, работает, проблемы только у тех, кто использует несколько логинов к сайту релизов.
(44) qwinter, Понял, спасибо, сегодня скачаю посмотрю, а вообще я имел ввиду то что сайт releases.1c.ru сейчас переделали и что теперь скачивание обновлений идет сhttps://dl03.1c.ru
(45) я же Вас правильно понимаю, конфигурация парсит сайт и вытягивает файлы обновлений updsetup.exe без сторонних исполняемых компонент?
(46) SERJ_1CC,
все работает.
исключительно код 1С
Что-то не работает последние 20 дней загрузка. Пароли проверил-ок. Использую иhttps://releases.1c.ru/ , и
http://techsupp.1c.ru/ с одинаковыми логинами и паролями
Куда копать?
(48) пришлите в личку вашу почту, я вам последнюю версию скину.
Здравствуйте. Не всегда скачивает обновления и список текущих релизов не загружает. Как правильно пользоваться данной конфигурацией?
(50) Что значить «не всегда»? Доступ к сайтуhttps://releases.1c.ru/ есть?
1с немного поменяла форму авторизации login.1c.ru и поля Куки на releases.1c.ru
День добрый.
Почему то версии обновлений в справочнике заканчиваются 2016 годом, нет за 2017 и 2018, версия устаревшая?
(54) так добавьте пользователя портала и обновите)
(55) День добрый.
Пользователя конечно что же добавил, под ним на users.v8.1c.ru захожу. Через программу не обновляет версии…
Если же снять галку Использовать фоновые задания то ошибка… как быть, может версия не совсем новая? Установлена Загрузка обновлений 1C 8, 7.7, Айлант ЖКХ (1.0.3.10)
(56) напишите мне в личку от пользователя под которым скачивали. Я вам пришлю обновленный cf
(57) Павел, cf получили, обновили конфу, спасибо. Но что то не пойму как получаются даты обновлений, интересует Бухгалтерия 3.0 обычная, по ней почему то на 2016 году все остановилось, а вот по Бухгалтерии КОРП все ОК, свежее 2018 года. В чем может быть дело?
(58) Похоже долго идут фоновые задания… терпения надо много)))
(59) первый раз действительно не быстро))
Загрузка файлов перестала работать. Вместо файлов сохраняется страница авторизации. На сайте что-то поменялось.
(61) в модуле UPD_СлужебныйКлиентСервер вместо
в модуле UPD_ЗагрузкаОбновленийКлиентСерверПовтИсп вместо
Показать
Показать
(63)
Надо залогиниться на dl03.1c.ru, а вы пытаетесь использовать куки логина на releases.1c.ru. Вам надо JSESSIONID1 получать из соединения с сервером dl03.1c.ru.
(64) как же мне залогиниться на dl03.1c.ru, если на login.1c.ru мы используем форму с логином и паролем и посылаем POST-запрос (Если не ошибаюсь), понимаю, что вам это наверное покажется глупым, но на dl03.1c.ru такой формы то нет…
(65)
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.
(66) спасибо, сейчас попробую! Т.е. хорошо, здесь пока ясно, пробую запросить файл по ссылке, меня перенаправляет, на login.1c.ru, я беру куки которые были в ответе при попытке получить файл с сайта dl03.1c.ru и передаю их на login.1c.ru, на тот адрес куда меня перенаправили. Дальше мне опять получать форму и логиниться с этими куками от dl03.1c.ru?
Это вопрос номер 1.
А второй вопрос залогинился допустим, дальше как? Сразу пробовать получить файл с куками от dl03.1c.ru? Или какие-то ещё промежуточные действия?!))
(67) запрашиваешь страницу по ссылке на скачку на dl03.1c.ru, читаешь с нее куки. С этими куками отправляешь пост запрос к login.1c.ru полностью аналогичный как при логине с releases.1c.ru, т.к. сначала обычный запрос, оттуда читаешь форму и параметры, а затем уже пост запрос. А затем с этими куками запрашиваешь с dl03.1c.ru, там он если правильно помню несколько раз перенаправляет, т.е. если код ответа будет перенаправлением, то по реферальной ссылке надо будет еще запрашивать.
(68) ок, с куками понял, попробую по такому алгоритму!
(62)
Работает 30.03.18
Не работает 04.05.18 🙂
Я правильно понимаю, что конфигурация умеет скачивать файлы update.exe?
(72) да
(73) А скачивать отдельные файлы, выкладываемые на странице конфигурации? Или насколько реалистично самостоятельно реализовать такой функционал на основе имеющегося?
(74) со странице конфигурации ничего не качается, со странице версии качаются файлы описанные в процедуре в одном из общих модулей.
Реализовать загрузку дополнительных материалов со страницы конфигурации не думаю, что будет очень сложно.
Конфигурация не находит релизы, которые вышли в августе при выполнении команды «Обновить версии конфигураций». Для конфигурации БП 3.0 текущий релиз 3.0.64.48 от 15.08.18. В конфигурации только 3.0.64.34 от 24.07.2018. Для конфигурации БГУ 2.0 текущий релиз 2.0.57.26 от 10.08.18, в конфигурации 2.0.57.8 от 09.07.2018.
В базе указал пользователя для проверки и скачивания обновление и каталог обновлений в настройках. Больше ничего не делал.
Скачивание релизов тоже не работает. В настройках указал дату начала скачивания обновлений «01.08.2999», чтобы не скачивались релизы всех конфигураций. Указал каталог обновлений. Добавил пользователя для проверки и скачивания обновлений. Уставонил значение «Загружать полные дистрибутивы» в Истина.
Для одной конфигурации указал свою дату загрузки обновлений «01.01.2018», чтобы скачались обновления только этой конфигурации. Также поставил галочку «Скачивать обновления». Выполняю команду «Загрузить», где-то на десять секунд запускается фоновое задание, выключается, никаких файлов не появляется.
(77) Одно из двух: или у пользователя нет доступа к обновлениям, или у 1С нет доступа в интернет.
P.S. Если база серверная, то пользователь у службы должен быть с доступом в инет.
(78) Права точно есть, постоянно скачиваю под этим пользователем обновления. База файловая. Доступ в интернет должен быть, список релизов в конфигурациях же появился, хоть и не совсем актуальный. Я так понимаю, он скачивается с интернета.
(79) список релизов по конец июля входит в текущую конфигурацию.
(79) Если нет основного пользователя, то обновление версий идет только по конфигурациям где выставлен пользователь.
Вот что смог выяснить, к сожалению, знания не позволяют мне выяснить больше.
Выполнение кода добирается до функции «ЗагрузитьВерсииV8ПоСсылке». Соединение выполняется (см. скриншот), ответ получен (см. скриншот), что говорит о наличии доступа в интернет.
Из функции «ЗагрузитьВерсииV8ПоСсылке» попадаем в процедуру «РекурсивныйПарсингСпискаВерсий». И здесь происходит что-то подозрительное. Выполняется получение первого элемента:
Первое условие не выполняется:
Выполнение цикла тут же прекращается. Условие, которое идет следом за циклом, тоже не выполняется:
Выполнение процедуры «РекурсивныйПарсингСпискаВерсий» заканчивается безрезультатно. Насколько я понимаю произошла неудачная попытка получения списка версий конфигурации.
(82) Код состояния ответа неверный. Запрос возвращает на страницу авторизации. Проверьте еще раз правильность логина и пароля.
(83) Проверил. Логин и пароль набираю не с клавиатуры, а копированием/вставкой. Самостоятельно на сайт по этому логину и паролю я зайти могу. А попытка обновить версии конфигурации неудачная.
Посмотрел функцию «НайтиИдентификаторСессииV8». В ней четыре раза встречается переменная ОтветHTTP. Посмотрел коды состояния в этой переменной: 302, 200, 401, 401. Я так понимаю, что в третий раз как раз происходит неудачная авторизация.
(83) Попробовал под другим логином и паролем. Заработало. Причина непонятна.
(84) может с лишним пробелом копируется?
(84)или с символом переноса.
(86) Если бы все так просто было. Я проверял переменную InviteCode, на всякий случай. В ней логин и пароль правильные. Но пока отложим эту проблему, выявились новые.
Запускаю скачивание файлов обновлений. Иногда скачиваются нужные файлы, но чаще получаются файлы с одинаковым размеров 10КБ. Если это файл htm, то его можно открыть. В нем будет приблизительно следующее:
1C:Обновление программ
Главная Новости Личный кабинет О сервисе
Указанный файл не найден
Внимание!
Выбранный файл не найден
С помощью отладчика прошелся, для файлов самих обновлений получается точно такой же результат, просто он сохраняется в файл с расширением exe.
В результате ни разу все нужные файлы не скачались, сколько бы я не запускал загрузку. Либо какая-то часть скачивается, либо ни одного.
(88) какая то совсем ерунда. Вас опять кидает на страницу авторизации видать при скачивании почему то.
(88) а что пишет в регистре Ошибки при загрузке обновлений?
(88) а у второго пользователя права на эти конфигурации есть?
(90) Ничего не пишет. Случайно нашел этот регистр, сразу полез смотреть. Журнал регистрации смотрел, тоже ничего нет интересного.
А как можно решить, отследить проблему? На стороне 1С я могу самостоятельно разбирать проблемы, но как только дело доходит до взаимодействия с сайтом 1С, тут я ничего не могу сделать. HTTP и внутренности 1совского сайта я не знаю.
(91) Да, конечно. Через сайт без проблем могу скачивать. Плюс, как я уже писал выше, иногда файлы удачно скачиваются. ПРи этом никакой логики не вижу. Совсем необязательно, что скачаются первые два файла, а остальные не скачаются. Я запускал несколько раз, каждый раз разные файлы закачивались удачно. Я установил количество потоков равное нулю, чтобы все в одном потоке выполнялось и чтобы было проще отслеживать выполнение. Поэтому имел возможность наблюдать в режиме реального времени появления файлов.
У пользователя наблюдается внезапное кратковременное пропадание прав)
(86) Похоже определил причину проблемы. Изменил пароль у первого пользователя, оставив только латинские буквы и цифры. Стало работать. До этого в пароле использовались спецсимволы и скобки.
На мысль навели попытки с помощью инструментов разработчика браузера посмотреть как происходит работа с сайтом. Там заметил, что в InviteCode, написание пароля отличается от самого пароля. Некоторые символы заменены. Замена похожа на замену слеша на «%2F», или замену русских букв в адресной строке не похожие наборы символов. По-видимому, из-за отсутствия подобной замены у меня и не происходила авторизация.
Но проблема, что указанный файл не найден осталась. По-прежнему вместо нужных файлов закачиваются 10Кб страницы, как описывал выше.
Не знаю имеет ли это значение, но обратил внимание, что значение возвращаемое функцией «НайтиИдентификаторСессииV8» не кэшируется, а каждый раз вычисляется заново.
(95) серьезно? Он же в модуле с повторным использованием на время сеанса? Не чаще чем раз в 20 минут должен вычисляться.
(96) Абсолютно. Насколько я понимаю, каждый раз когда приходит новая комбинация параметров, выполняется вычисление функции. А новая комбинация получается каждый раз, как меняется значение параметра «АдресРезурса». Задуманное это поведение или нет, я оценить не могу.
Не работает
{ОбщийМодуль.UPD_ЗагрузкаОбновленийКлиентСервер.Модуль(81)}: Значение не является значением объектного типа (Сервер)
(104) работает. Вопросы по не работающей конфигурации задавайте там где вы ее скачали.