<?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='\
Добрый день! Подскажите, в чём может быть проблема — тестовое подключение срабатывает нормально, а при нажатии «Подключиться и сформировать» выходит ошибка :
!! «Не удалось подключиться с заданными настройками!{Форма.ФормаОтчета.Форма(63)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.»
или !!»Не удалось подключиться с заданными настройками!{Форма.ФормаОтчета.Форма(63)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (1C:Enterprise 8.2.19.68): Неверные или отсутствующие параметры соединения с информационной базой»
(1) GalinaK, как правило такие ошибки бывают когда не верно указан путь к базе, особенно если база серверная
(2) путь верный и тестовое подключение это подтверждает
(3) GalinaK, тогда нужно больше информации, какая конфигурация, какой тип базы (файловая, серверная), версия платформы
(4) 1С:Предприятие 8.2 (8.2.19.68), Зарплата и Управление Персоналом, редакция 2.5 (2.5.72.2) — базы идентичны, базы файловые
(4) попробовала на ДЕМО, сделала копию — ДЕМО 2, то есть базы 100% одинаковые (и платформа и релиз) и на другом ПК с другой ОС… результат тот же, ошибки те же…
(6) GalinaK, дело в том что я маленько про другое спрашивал, демо базы есть почти у всех конфигураций, версия платформы 8.2… какая конфигурация Зарплата и управление персоналом 2.5..?
(7) Зарплата и Управление Персоналом, редакция 2.5 (2.5.72.2) — проф
как сложно все
(10) dyak84, да там по идее много можно было чего интересного сделать ) просто было очень ограниченное время, поэтому делал под конкретные требования, без творчества ) ничего подобного тут не нашел, подумал может быть кому то полезно как основа ) спасибо за плюс
хочу взять вашу расчетную ведомость за основу сравнения данных в БП и ЗУП,а именно получить данные из подчиненного зуп, но даже на одинаковых базах выскакивает ошибка, ошибка при создании комсоединения(у меня серверные базы). А дело все в:
1)Стр 63 БазаИсточник = V8.Connect(СтрокаСоединения); Синтакс-помошник:
метод Connect (Connect)
Синтаксис:
Connect(<СтрокаСоединения>)
Параметры:
<СтрокаСоединения> (обязательный)
Тип: Строка.
Строка параметров (Строка соединения), используемая 1С:Предприятием для соединения с информационной базой.
Возвращаемое значение:
Тип: Булево.
Истина — инициализация прошла удачно, Ложь — в противном случае.
2) БазаИсточник.NewObject(«Запрос»); -естественно будет ошибка, так как в БазеИсточник записано булевское значение
Поэтому надо возвращать из функции выполнить подключение «V8» ,а не БазаИсточник
(13) sergeyshik, странно конечно, но она до сих пор работает в таком виде, может от платформы зависит?
1С:Предприятие 8.2 (8.2.19.83)
Менеджер COM-соединений (COM connector)
Connect (Connect)
Синтаксис:
Connect(<СтрокаСоединения>)
Параметры:
<СтрокаСоединения> (обязательный)
Тип: Строка.
Строка параметров (Строка соединения), используемая 1С:Предприятием для соединения с информационной базой.
Возвращаемое значение:
Тип: Внешнее соединение.
Описание:
Создает соединение с информационной базой 1С:Предприятия 8.
Устанавливает соединение с информационной базой 1С:Предприятия 8 и возвращает ссылку на объект Внешнее соединение.
Установка соединения выполняется по следующему алгоритму:
1. Внешнее соединение с требуемыми параметрами ищется в пуле соединений. Если найдено, то используется оно.
2. Если Внешнее соединение с требуемыми параметрами не найдено, то анализируется не исчерпан ли лимит по числу одновременно существующих соединений. Если не исчерпан, то создается новое Внешнее соединение.
3. Если лимит исчерпан, но при этом в пуле имеются неиспользуемые Внешнее соединение, то соединение, дольше всех находящееся в пуле, удаляется и создается новое Внешнее соединение.
4. Если никаким способом найти подходящее или создать новое Внешнее соединение не удалось, то происходит ожидание освобождения Внешнее соединение другим потоком, после чего весь процесс повторяется, начиная с пункта 1.
Доступность:
Интеграция.
Пример:
// Создается объект-коннектор
cntr = Новый COMObject(«V82.COMConnector»);
// создается объект COM-соединение
connection = cntr.Connect(«File=»»c:InfoBasesTrade»»;
Usr=»»Director»»;»)
(14) все равно спасибо, все что мне нужно я подчерпнул:)