С 1 января 2008 года бухгалтеры не смогут распечатывать ПКО и РКО прямо из «1С»




Принцип обмена данными из 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='\

37 Comments

  1. azernot

    Дык это ж для Украины! Фух… отлегло.

    Reply
  2. vladnet

    да придумали они хорошо, нечем занятся наверное )))

    Reply
  3. Abadonna

    Доржи, на фиг так пугаешь?!!!!! Нет чтобы в самом начале написал — УКРАИНА

    Reply
  4. support

    3) чтоб не раслаблялись 🙂

    Reply
  5. vasilykushnir

    (2) Обычно, если собаке нефиг делать — она я…ца лижет. А нашим придуркам даже для этого занятия ума не хватает. Боже! как эти оранжевые гуманоиды уже достали….

    Reply
  6. Abadonna

    >оранжевые гуманоиды уже достали….

    Нормальные гуманоиды — зелёные человечки, а у вас, значит, оранжевые? ;)))

    Reply
  7. MatveyIgor

    Ужас нах, тепер придется все ордерки ручками….. касиры вешайтесь…

    Reply
  8. astonvilla

    У моих знакомых в день может быть 200-300 ордеров.

    То-то они меня в гости приглашают так настойчиво 3-го числа :))

    Reply
  9. ineoosaki

    VasilyKushnir написал:

    Боже! как эти оранжевые гуманоиды уже достали….

    —————————————

    Василий ты не прав.

    Судя по датам постановлений достали все-же «біло-голубі» уроды.

    Reply
  10. O-Planet

    Приколист Доржи!!! Я много чего передумал, пока дочитал до слолв «на Украине»!

    Зря вы говорите, что тема это плоха! Во-первых, лишний раз мы бы удивились изворотливости умишек простых людей, потому что закон этот обошли бы «на местах» как-нибудь. Во-вторых, появились бы заказы на доработку, чтобы печать бланков добавить в 1С. Ну, а на Украине, конечно, будут покупать бланки… 🙂

    Reply
  11. v.l.

    Цитирую из статьи: «бухгалтеры не смогут распечатывать ПКО и РКО прямо из «1С»»

    Смогут, но только на бланк строгой отчетности.

    Reply
  12. v.l.

    2 ineoosaki:

    Пусть оранжевые отменят постановление «вражеского» кабмина, тем более, что у нас, в хохляндии. это запросто. Ан-нет! Они будут торговать своими старыми бланками, выпущенными в 2003 году. И то с оговоркой — «только теми, которые выпущены по лицензии НБУ». А кто их проверять будет?

    Почему-то никто не говорит, что в Украине упростилась процедура регистрации покупки земли иностранными гражданами. А вот про бланки «кошмар». Больше никаких других проблем нет, как бланки. а то, что «ридну нэньку» купян америкосы и иже сними, то ничего, то нормально, потому что это «оранжевым» выгодно. Кудад ели миллиарды от украденной Криворожстали? Я не ощущаю исполнения Юлиных и Витиных (Ющенко) обещаний о возврате вкладов по сберкнижкам. То, что Юлю с пятого раза «вручную» приняли. ибо им система голосования «Рада» «неправильные» результаты давала — так это анекдот на весь мир! Зато всё «прозоро та дэмократычно». Как в Ираке. Кто за Америку, тот и прав.

    Так что, ineoosaki, ты не прав(а).

    Да удалит модератор мой пост.

    Reply
  13. vasilykushnir

    Выборы (справка для не украинцев) абсолютно ничего не поменяли, только спровоцировали сумашедший скачок цен. Нужны были те выборы, как курве ребенок…

    Reply
  14. poppy

    (16)

    в России скачек цен произошел незадолго до выборов. И ничего, одни выборы прошли, другие впереди. Народ псевдопроголосовал. И «выбраны» были те, кого назначили.

    Reply
  15. v.l.

    Публично извиняюсь за свои слова.

    Reply
  16. wolfsoft

    Е-мае, во страсти кипят…

    Reply
  17. ineoosaki

    2 АЛьФ

    А объясниться за минусы.

    Reply
  18. Abadonna

    >Всем неукраинцам советую найти их в нете.

    Некорректно, раз нет такого различия, как «русский» и «россиянин».

    Таки надо писать «не граждане Украины»

    Я, например, по происхождению наполовину щирый, западный хохол, а бывшая жена ваще со Львова

    Reply
  19. ineoosaki

    2 Abadonna

    Согласен, что некорректно. Имелось в виду «не граждане Украины», т.к. граждане Украины имели возможность лицезреть их по 5 каналу ТВ.

    Reply
  20. ineoosaki

    Кому лень искать, то ходим сюда:

    http://blog.meta.ua/communities/nespravedlivosti_boj/posts/@28063/

    Reply
  21. АЛьФ

    Если кто-то хочет поговорить о политической обстановке в Украине то для этого есть много других мест. Например, вот здесь будут очень рады такой теме:

    http://www.abelov.com/forum/f.php

    Reply
  22. Abadonna

    АльФ, я не разговаривал о политической обстановке 😉 Чего ж минус?

    Reply
  23. ineoosaki

    Я так понял, АЛьФ — внештатный модератор.

    Маладеццц.

    Reply
  24. Abadonna

    Насчет «внештатный» — ошибаешься :))))

    Reply
  25. ineoosaki

    Не ошибаюсь. Доржи где-то писал, что инфостарт — портал без модераторства.

    Reply
  26. АЛьФ

    Без модераторства, но у меня есть право поставить минус за постинги, которые я лично считаю внеформатными порталу.

    Reply
  27. ineoosaki

    Право наверное есть, но чего-то другого явно не хватает.

    Я вот думаю чего?

    Может, кто подскажет.

    Reply
  28. АЛьФ

    2(30) Может ты о совести? Так ее у меня отродясь не было.

    Reply
  29. Abadonna

    >Может ты о совести?

    А чё это? ;))))))

    Reply
  30. ineoosaki

    То, что соуса нет — эт и так понятно.

    Я о другом.

    Reply
  31. CheBurator

    А у мну совесть — чистая и прозрачная и ее совсем не видно…

    Reply
  32. ineoosaki

    2 Сhe Burashka и Abadonna

    Не боитесь, что злой эльф посчитает ваши постинги о совести — «внеформатными» порталу? Так и вижу занесенный домоклов курсор над минусом. 🙂

    Кстати. Предыдущий мой пост адресован непосредственно АЛьФу.

    Абадонна немного обогнал меня.

    Reply
  33. MACTEP

    Похоже что это так

    Reply
  34. GIZmo

    Уф, пронесло, это для Украины, хотя жалко их…

    Reply
  35. ineoosaki

    Продолжил исправление статус-кво, начатое Абадонной.

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

    Reply
  36. Abadonna

    ineoosaki, кончай бузить!

    Я тебе компенсировал вся альфовские минусы своими плюсами. И давай на этом завяжем!

    Надоело… 🙁

    Reply
  37. Cifer

    Заголовок в лучших традициях желтой прессы. Надо ж было написать, что это для Украины!

    Reply

Leave a Comment

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