<?php // Полная загрузка сервисных книжек, создан 2025-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='\
С этим проблем не возникает (просто использование разных версий коннектора). А вот проблема когда
С этим проблем не возникает (просто использование разных версий коннектора).
А вот проблему, когда сервер вертится на одной версии например 8.2.1, а на клиенте зарегана версия 8.2.2, вы решили?
(2) Жолтокнижниг,
В общем то в подобных вещах не было необходимости, поэтому сейчас программа просто выбирает последнюю установленную платформу, регит. компоненту этой платформы, если подключение с существующей компонентой провалилось. Если есть потребность, могу добавить возможность указания конкретной платформы под которой выполнять подключение и обновление.
(2) Жолтокнижниг, скоро будет подсистема по обновлению РИБ в автоматическом режиме для любой конфигурации. Следите за публикациями.
(0) про организацию собственного сервера управления обновлениями, про централизованный сервер, можете рассказать?
(5) teflon,
— Центральный сервер, проверяет обновления, если появились сохраняет в указанный каталог на сервере в определенной структуре, для создания собственной библиотеки;
— формирует списки обновлений необходимые клиентам для обновления с переданного номера релиза;
— передает/принимает файлы (в клиентах есть возможность генерировать полные релизы, если стоить соответствующая галочка, это используется чтоб не захламлять собственные сервера типовыми конфигурациями и не нагружать их работой по обновлениям, но в то же время иметь в библиотеке всегда актуальные cf файлы) (в перспективе будет реализовано обновление с полных релизов, тех баз где не разумно обновлять по порядку);
— при включенной галочке на клиенте, сервере принимает информацию о логах прохождения обновления, так же передает в нашу существующую систему на 1С по средствам HTTP сервисов, номер релиза, программный продукт и актуальный релиз, статус архивирование, применения конфигураций (смотря что используется), для последующего визуального отслеживания оператором пропусков в обновлениях, архивированиях или в сбоях на узлах РИБ по которым должно было пройти применение. (Собственно это один из механизмов повышения качества обслуживания)
— прочие функции, которые не относятся на прямую к работе с обновлениями;
Это функционал, который реализован в текущий момент на сервере. Под клиент пользователей. Есть еще клиент мониторинга работы сервера.
Скачали файл, вылетает при попытке обновления базы
(7) lenafV, Отпишитесь более подробно, что пишет в лог файле на момент вылета?
Жаль, но не заработало.
(9) lefthander,В чем именно была проблема?
Просьба, если возникают проблемы в использовании, отписываться о симптомах, для ускорения отладки и устранения не точностей 🙂
Галка подтверждения лицензионности для версий проф при запуске базы после обновления («проверка конфигурации»?) автоматически или вручную? Галка «Отправлять сведения» не затрагивается или есть возможность снимать/устанавливать автоматически?
При запуске задачи «Архивирование» Ошибка: необрабатываемое исключение в приложении….
с sql базами работает?
Можно добавить БП для сельхоз предприятия? И не пойму как в автозагрузку поставить?
(14)работает
попробуем добавить,
На второй закладке указывает логин и пароль для запуска в качестве службы и жмете установить. Должна появиться новая служба. Дальше при необходимости настраиваете саму службу как хотите.
справа два окна логин и пароль в логине пишу пользователя компьютера, ниже пароль, му кнопку установить, выходит первое сообщение об установке службы, во втором — Ошибка при запуске. Служба не установлена. Чего дела не так?
(18)Во-первых обновите до последнего релиза. Во-вторых если пользователь не доменный, тогда указываете .ИмяПользователя ну и само собой программа должна быть запущена от имени администратора.
(15)Эта редакция нужна Бухгалтерия сельскохозяйственного предприятия, редакция 3.0?
да 3.0 сельхоз,
(21)Данная конфигурация, является партнерской, все конфигурации данного партнера, не поддерживают возможность автоматического обновления в связи с отсутствием распакованных обновлений и наличием СЛК, которую надо ставить в ручную и которая поставляется только в определенных релизах. (Например, данная конфигурация пытается автообновиться на стандартные релизы Бухгалтерии предприятия 3.0)
В данной ситуации, в связи с отсутствием массовой необходимости добавление этих архивов, руками с нашей стороны не целесообразно.
Ну и вас должна быть подписка ИТС.Отраслевой. Его проверка не поддержана на текущий момент в данном ПО, что протеворечит лицензионной политике 1С по получению обновлени.
(21) Решение. Могу добавить возможность размещения в ручном режиме обновлений с вашей стороны. Чтоб программа по расписанию сама их устанавливала, т.е. процедура скачивания будет пропущена.
Подписка есть, обновления качаются прямо с сайта, слк редко переставляю, процедуру скачивания нельзя включить? поддержка отраслевого не (авторизация не нужна) качает и так , не могу разобраться со службой — не запускается, где посмотреть?
почему может не запускаться?
Добрый день.
Столкнулся со следующей проблемой, с какого-то момента перестала обновлять базы. Подписка — действительна.
При попытке обновления пишет — Соединение с сервером расположения обновлений провалилось!
Так же не удается добавить новую базу. При выборе «Программный продукт» — возникает ошибка:
Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 79.29.41.27:55900
Обновления находятся у нас на сервере в необходимом упорядоченном виде, т.к. на сервере 1С не все обновления есть. Бывает редко что наш сервер не доступен, но это бывает максимум сутки.
Хм….
вот что пишется в логи
15.03.2018 16:06:11 ; ОБНОВЛЕНИЕ ; 0 ; 0 — 15.03.2018 16:06:11 — Задача поставлена в очередь на выполнение!;
15.03.2018 16:06:12 ; ОБНОВЛЕНИЕ ; 0 ; Обновление запущено!;
15.03.2018 16:06:13 ; Соединение ; 5 ; Код ошибки: 1; Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 78.29.41.27:55900
15.03.2018 16:06:13 ; Скачивание релизов ; 2 ; Соединение с сервером расположения обновлений провалилось!; Выдано исключение типа «System.Exception».
такое поведение с середины февраля 2018
Был в отпуске. Может поздно, но отвечу. В данном случае надо проверить, что у вас есть интернет на ПК где запущен AU и разрешены исходящие соединения по порту 55900.
Добрый день.
А если обновления уже скачены без подключения к ИТС будет работать?