Отчет по документам "Поступление товаров и услуг" для БП 3.0




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

39 Comments

  1. remix950

    За что 2000 руб ? Такой отчет может любой пользователь (бухгалтер) в Excel сделать из ОСВ. Цена Вашему отчету 1 руб. или 0,00001 $m

    Reply
  2. rinik88

    (1) remix950, делай,я тебе не запрещаю

    Reply
  3. Anchoret

    что-то я даже не знаю, у меня совсем нет опыта работы с отчетами, но схожий отчет я собрал минут за 30, если еще часок посидеть, то можно и идентичный сделать, в чем прикол?

    Reply
  4. rinik88

    Нету здесь приколов,какие приколы.ещё раз повторяю , кому не надо это, то и не надо писать что не надо, как будто вас тут заставляют.

    Reply
  5. EugenLiquor

    Цена за сей отчет слишком неадекватна, лично мое мнение.

    Reply
  6. tolyan_ekb

    Зато, не не имеет аналогов ))

    Reply
  7. tolyan_ekb

    (1) remix950, пусть стоит, думаете купят его?

    Reply
  8. tolyan_ekb

    (2) в чем заключается оптимизация для БП 3.0 ?

    Reply
  9. rinik88

    вот вы товарищи реально достали, все вам не так, месяц пускай повисит, купят не купят, дорого не дорого, адекватно не адекватно, какая вам разница, живем в век капитализма и псевдодемократии, зарплаты маленькие, че вы хотите, значит деньги человеку нужны срочно, появился вариант, вот вам на лицо, а купят его хотя бы один человек ну и ладно, не купят ну дай бог, значит по другому буду работать, что же вы все такие жестокие то, сниму я ее с продажи, выставлю на обычное скачивание.

    Reply
  10. AHDP

    А почему два файла для скачивания?

    Reply
  11. rinik88

    (10) AHDP, вопрос к модератарам, файл один должен быть.

    Reply
  12. tolyan_ekb

    (9) имхо, в корне неправильный подход, который преобладает в «век капитализма». Сделать «вату» и попробовать срубить денег. Можно же сделать качественную и нужную вещь, за нее и брать деньги, но большинство почему-то предпочитает первый вариант. Думаю в этом причина негодования отписавшихся.

    Reply
  13. rinik88

    (12) tolyan_ekb, возможно, согласен с вами, но знаете, бесит то, что все кто присылают сообщения в которых из меня хотят сделать циничного жлоба который хочет обманным путем отжать деньжат, могут заметить соринку в глазу у другого, но при этом бревна не заметят в своем, все честны и добропорядочны, если ребята хотят поговорить о нравственности, то с радостью можем обсудить, но уже в личке, дабы не засорять сдешний сайт.

    Reply
  14. TMV

    (13)

    дабы не засорять сдешний сайт

    Собственно чем вы и занимаетесь, выкладывая подобные поделки.

    Reply
  15. husky

    Это капец, за что 2 косаря — скажите мне, за реестр документов? Тот, кто обработку выкладывал, с головй-то дружит, она бестплатно-то не нужна.

    Reply
  16. fierylions

    rinik88 рекомендую просто отключать возможность комментировать. Мне это частенько помогает.

    Reply
  17. tolyan_ekb

    (16) fierylions, я за такое обычно сразу минус ставлю. Это значит что автор не готов к критике и его поделка скорее всего «не айс» .

    Reply
  18. fierylions

    tolyan_ekb право выслушивать комментарии как лестные так и критичные остается за автором публикации. По этому эта настройка и дается на усмотрение автора… Если с этим согласны администраторы сайта (т.к дают возможность выбора) то о чем говорить?

    Reply
  19. elvis1917

    Особенно умиляет колонка «НДС» с вариантами значений «БезНДС» и «НДС»(!!!).

    Ну а вообще — хоть бы предмодерацию делали что ли. Такая откровенная халтура, да еще и в платных разработках.

    Reply
  20. CaptainMorgan

    Ну наконец-то, как долго я ждал выхода в свет этого отчета. А то уже надоело смотреть в стандартный журнал документов.

    Reply
  21. arr

    +1 За сарказм.

    Reply
  22. denis_aka_wolf

    Бред…

    Reply
  23. denis_aka_wolf

    А вопрос то какой, чтобы получить вознаграждение в размере 69.52 $m.???????

    Reply
  24. adva

    (23) а хто бы Вам его дал? Человек жеж зарабатывает. Набросилась стая 🙂 , прикольный такой отчетик, даже кнопки выбор периода нет, очень удобно 🙂

    Reply
  25. KillHunter

    Человек старался 🙂 на халяву по быстрому отчет сварганить а вы его хаите 🙂

    Reply
  26. denis_aka_wolf

    Скорее для поднятия рейтинга по публикациям была выложена эта обработка, больше народа прокомментирует, больше рейтинг будет…

    Reply
  27. adva

    (26) а где про такие нюансы почитать, тоже так хочу 🙂

    Reply
  28. tolyan_ekb

    (26) denis_aka_wolf, рейтинг дают за плюсы, а не за комментарии.

    Reply
  29. tolyan_ekb

    (9) вознаграждение мне отдай. А я за это следующую платную обработку покритикую перед публикацией. Это убережет от негативных отзывов.

    Reply
  30. SaschaL

    Ну сложного в тако отчете нет ни чего, можно собрать на СКД минут за 10-15. Но опять таки если есть опыт.

    А для те у кого его нет может и цена и функцииональность устроит.

    Те кому не нужен данный отчет и с ценой не согласен либо будуи искать у кого уже такое есть, либо попросту откажутся от затеи получить данный отчет.

    Reply
  31. remix950

    (2) Ждал пока пройдет модерацию. С Вашим аналогом «»»конечно не сравнится»»», но все таки конкуренция должна быть :))) http://infostart.ru/public/263667/ Отчет по документам «Поступление товаров и услуг» для БП 3.0

    Reply
  32. rinik88

    теперь все рады и довольны, я надеюсь, или еще что то предложите, как будете еще хаить и оскорблять.

    Reply
  33. rinik88

    ах да, совсем забыл, товарищи, не молчим, начинайте комментить остальные мои платные халтурки и подделки, не айсы, вату и неадекватности.

    Reply
  34. tolyan_ekb

    (33) вознаграждение ты объявлял?

    Reply
  35. rinik88

    (34) tolyan_ekb, какое ещё вознаграждение,где вы его нашли, покажите, за что награда?

    Reply
  36. tolyan_ekb

    (35) в теме отображается вознаграждение «за решение вопроса», подозреваю, что только вы можете отдать его

    Reply
  37. rinik88

    сайт глючит, незнаю, что тут решать, у меня вопросов не было, кого вознаграждать, все меня тут пооскорбляли за это чтоли.

    Reply
  38. Bazil

    Народ, а что вы негодуете. Хочет автор продавать отчет — пусть продает, его право.

    Комментарии напомнили мне, я был свидетелем как магазине тетка скандалила «Что это у вас тут такие плохие помидоры, да еще и за 100 рублей, им красная цена 10 рублей, спекулянты проклятые, сволочи..» и далее по тексту, на что ей резонно ответили, что никто никому ни чего не должен, не хочешь — не покупай, иди в другой магазин.

    Reply
  39. kser87

    (30) SaschaL, (19) elvis1917, Все такие умные, но не понимают одну простую вещь: конечному пользователю абсолютно неважно, сколько времени разраб потратил на отчет и как он реализовал его технически. Для юзеров главное наличие отчета, который выводит нужные им данные и при этом работает без ошибок.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *