<?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='\
Здравствуйте. У меня на счету остаток 4$m. Пополнить не могу. Сбавьте цену, сразу куплю.
Поддерживаю. за 4$
(0) Добрый день. Обратился ко мне один знакомый, скачавший вашу разработку. Но так как сам он не программист, попросил меня помочь с внедрением.
Вопрос 1: При попытке открыть ответ на запрос номенклатуры производителя, выскакивает сообщение об ошибке:
Curl — в папку Windows скопирован. С ответами на запросы, обрабатываемыми без Curl-а , проблем нет.
Пробовал гуглить эту библиотеку, но ссылки на скачивание ведут на какие-то не очень внушающие доверия сайты, поэтому сперва решил спросить здесь.
На компе с УТМ Windows server 2008 standart, УТМ боевой.
Вопрос 2: Вы добавили 2 реквизита в Справочник «Партии», которые заполняются, если Поступление загружать через обработку (судя по коду, проверить пока не могу — тестового ключа нет, а в боевом УТМ еще нет ни одного прихода).
Но больше в конфигурации нигде они не используются. Это задел на будущее и вообще планируется дальнейшее развитие обработки? Тем более с пивом до сих пор толком не ясно как поступать
что-то картинка не вставилась
1. Нужен Curl соответствующий версии ОС.http://curl.haxx.se/download.html
2. Реквизиты используются при отправке документов покупателям.
Обработка будет дописывается по мере личной эксплуатации.
При отправке любого запроса полчаю предупреждение «Не удалось загрузить документ. Возможно он удален или служба УТМ не запущена»
Прверила статус 500 ( Server Error). В чем проблема?
(6) psfond, Проблема в УТМ.
(5) Пардон вопрос № 1 решился. Просто пробовал на вашей тестовой базе, а в ней уже присутвует curl. А в папку Windows скопировал уже оригинналный скачанный с оффсайта. В боевой все ОК.
(5) Про реквизиты в справочнике Партии…
Что-то отправку я еще не смотрел. Они при продаже в розницу или при возврате поставщику тоже используются(то бишь в акте расхождения)?
(7)
Если я получаю список документов от УТМ, и запросы командой curl -F отравляются из той же 1с, то мне кажется что проблема все таки не в УТМ! Но попробую установить заново…
(10) psfond, Тогда не УТМ, проверьте в настройках «УТМ URL».
(11)
утм url указан правильно, утм открывается по этому адресу
все это установила уже на другой машине, так же не отправляется ни один запрос
(12) psfond,http://localhost:8080/opt/out — по этой ссылке чего возвращает УТМ?
Такая же фигня, запрос по остаткам только работает, по остальным выдает сообщение «Не удалось загрузить документ. Возможно он удален или служба УТМ не запущена», потом если Curl-ом сгенерированый файл post.xml без BOUNDARY по заданному адресу URL выгрузить, то все уходит в УТМ без проблем. Тестировал уже на боевом.
(14) ProIT, В процедуре «Инициализация()» установите переменную «ВсегдаИспользоватьCurl» = 1;
Если ошибка останется разбирайтесь с Curl-ом из каталога Windows. Иначе проблема в этом «WinHttp=СоздатьОбъект(«WinHttp.WinHttpRequest.5.1″);», похоже не получается создать объект.
Запустите 1с с правами администратора.
Проверялось на тестовом и рабочем УТМ.
Та(14) ProIT, Возможно чего-то не заполнено в документах к отправки.
Подскажите, уже реализован Чек ККМ ?