Баланс в картинках (основы бухгалтерии без "заморочек") часть I




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

31 Comments

  1. Свой

    «Кто может забрать» — не совсем корректно, как вы объясните, «капитал может забрать у вас» ?

    каноническое «обязательства и капитал» по-моему лучше перевести как «кому мы должны и благодаря чему/кому у нас есть наши активы»

    Reply
  2. WKBAPKA

    КАШМАР!

    Reply
  3. WKBAPKA

    на самом деле капитал — это совсем не то, что может забрать хозяин. Это уже вводит детей в заблуждение! Как раз большая часть капитала (в нормальных странах) «сидит» в необоротных активах, а также в оборотных в виде товара или сырья, но в меньшей степени. Мало того, капитал еще состоит из нераспределенной прибыли, однако наличие прибыли не означает наличия денег! как собственно — убыток в нашей стране не означает отсутствие денег 🙂

    вообщем, туповато… поставлю минус

    Reply
  4. Andry.Boris

    ссылка без картинки

    Reply
  5. Арчибальд

    Комиксы-вещь хорошая, когда надо убедить тупого руководителя. Или ввести в курс дела абсолютного новичка. Но вводить-то надо в КУРС, а не на боковое направление.

    Минус ставить как-то не хочется, но на плюс не тянет.

    Reply
  6. KIF

    Совершенно верно, все немного сложнее . Под «капиталом» в картинке подразумеваются акционеры. Они МОГУТ «забрать»- но это не значит , что они СТАНУТ это делать (зачем-то ведь контру открывали)…

    Но вообще , господа грамотные, придумайте как этот термин объяснить 5 -летнему ребенку…. Ну не так же как WKBAPKA написал…

    Reply
  7. Ish_2

    Господа в (3) , (5) — слишком умные.

    А я только начинаю осваивать Бухучет и , по-моему, отлично.

    Правда , не нашел картинки для 76 счета.

    Reply
  8. Арчибальд

    (6) Ну, не пятилетние же здесь читатели все же…

    (7) Блондинко? 😮

    Reply
  9. Ish_2

    (8) Пусть так.

    Reply
  10. KIF

    Друзья! Всем спасибо за комментарии — учту при обновлении…

    По поводу «бландинок»: ПРОФИ уже придумали «картинку» для КАПИТАЛА? Если по шKWARKE судить- то Сальвадор Дали получается какой-то

    Reply
  11. msk

    (8) Конечно, понятно, что Вы, уважаемый, впервые вздохнув, просветили акушеров о существовании бухучета. Но не стоит поэтому хвастать, что Вы брюнетко. Мы научимся :), в т.ч. благодаря труду автора, за что ему респект.

    Reply
  12. Арчибальд

    (11) Одноэсник, не знающий основ бухучета — это нонсенс. Профанация профессии. Если человек пришел на этот сайт — он по определению не первый день в профессии. А приведенный комикс — уровня первого дня.

    Справедливости ради: если начать с приведенного комикса — значит, первый день прошел не напрасно. Все-таки плюс

    Reply
  13. msk

    (12) А бухгалтер, «не знающий основ бухучета»?! Нормально? 😀

    Периодически день с подобных картинок начинается, причем «вчера» это уже проходили… Образно, конечно, но от этого не менее грустно.

    Может Вы считаете, что не стоит публиковать подобные статьи? Ввод цензуры — это выход. А чтобы на сайт не попадали неподготовленные — тест на знание бухучета при регистрации и закрыть все.

    Предыдущий свой пост писал не стараясь определять уровень подготовки кого-либо, а для того, чтобы Вы, в общении проявляли уважение к остальным… Нехорошо, при Вашем то уровне, хамить, даже если человек менее Вас подготовлен.

    Reply
  14. Арчибальд

    (13) Так это тирады в защиту Ish_2? С ним мы уж как-нибудь сами разберемся.

    P.S. За долгую жизнь как меня только не называли. Вот только хамом не называли ни разу…

    Reply
  15. Ish_2

    (13) Мы ему простим . Наберется опыта — поймет как непросто писать для нас, начинающих.

    Reply
  16. msk

    Без обид, ок? Не хотел никому портить настроение. 🙂

    Reply
  17. WKBAPKA

    я ж не злой… но на самом деле капитал — это не то, что может забрать хозяин… как вариант, часть капитала может сидеть в дебиторке, и как хозяин может взять и забрать… на самом деле, есть очень не плохие книжки по бухучету, где все достаточно популярно расжовувается… но корректно… а на комиксах совсем не корректно!

    Reply
  18. KIF

    Друзья, не надо ругаться.

    Обе стороны правы. За АРЧИБАЛЬДОМ — «ИСТОРИЧЕСКАЯ» правда. За остальными — СОВРЕМЕННОЕ «не хотелось бы в это верить».

    Почему «Историческая»? Во времена 7.7 незнание адинэсником бухучета было…

    Нет , не признаком цвета волос , а «жлобства» (перец настолько крут, что ему даже бухучет не нужен).

    Почему так БЫЛО ? Существовал самонастроенный механизм миграции из бухов во франчи и обратно, они и «выводили средний уровень».

    Мне кажется , сейчас этого механизма нет . Не потому, что народ стал тупее , а потому что 1С-у так выгоднее.

    Не будь так , не стал бы я засорять ресурс своими шедеврами.

    Что до картинок: это не «первый ДЕНЬ», а «первый ЧАС»- главное чтобы в этот час не наступил СТУПОР.

    Картинки собираются дольше , чем переписывается учебник. Но я продолжаю. 21.10.10 на buh4kids.bisnes-plan.ru будет обновленная версия

    .

    Вообще — представление «академических терминов» картинками может выглядеть глупо или даже кощунственно (зависит от уровня цинизма).

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

    Reply
  19. KIF

    Как хозяин может «забрать» дебиторку»?

    До таких «деталей» я не планировал углубляться…

    Все-таки для детей материал (не в последнюю очередь)…

    Забрать можно- предварительно ее продав коллекторам. Меньше получится , но если надо «делать ноги»…

    Reply
  20. KIF

    Выложил обновление на инфостарт. файл называется «баланс в картинках 21.10.10». Пояснил спорные вопросы и добавил примеры: Дядя Федор формирует уставной капитал , покупает корову и начисляет заработную плату коту …

    Reply
  21. Rusk51

    Респект и уважуха. Рисуй дальше. Все прикольно. Это не учебное пособие для бухгалтеров. А по поводу ,что хозяин не может забрать капитал и утечь как вчерашний сугроб, здешние законопослушные форумчане просто не в курсах. Можно не только утечь со своим капиталлом,коровой,дачей ,но еще и велоспед Печкина прихватить… А в остатке ,как всегда — навоз…

    Reply
  22. AnryMc

    (13) Нормально. У него теперь другие функции — правильно оформить документ и сдать налоговую отчетность.

    ОЧЕНЬ ГРУСТНО, но скоро учебник по бухгалтерии станит комиксом.

    Грустно это

    Reply
  23. Spartan

    Спасибо! Улыбнуло… 😀 Не знаю, как насчет учебного пособия, но в юмор — самое то!

    Reply
  24. RayCon

    Наконец-то и я прочёл сей неординарный опус… Так и хочется сказать словами Кисы Воробьянинова: «Да уж…» 😀

    Но, немного подумав, я осознал, что, к сожалению, автор во многом прав: идёт деградация до такого уровня, что человек становится придатком компьютера. 🙁

    И подача материала для такого «винтика», особенно, на самом первом этапе профессионального (если это слово вообще здесь уместно) уровня, не просто имеет право на существование, но, к сожалению, вынужден признать, вполне оправдана и… даже необходима. Молодёжь не читает книги — она играет в игрушки и листает комиксы: поколение next! 😥

    Пожелания автору:

    1. Выложить здесь не ссылку, а весь комикс.

    2. Исправить опечатки

    3. Назвать мультяшных героев их полными именами.

    Reply
  25. cool.clo

    Требую комикса!!! ахаа — картинка отжигает…

    Reply
  26. valek82

    Респект автору, как раз для наших бухов!)

    Reply
  27. Kirina_80

    Довольно любопытно и наглядно. Понравилась идея.

    Reply
  28. warenic

    Америкосы вместо сказок детям тоже комиксы покупают. это ни хорошо и не плохо. Просто у них своего фолклера нету…

    Reply
  29. Alexez

    Отличная вещь, показываю юным 1С-никам

    Reply
  30. Katerina_S

    Прикольно!Идея отличная!

    Reply
  31. slivalilovaya07

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

    Reply

Leave a Comment

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