Приколись: Лучший подарок для бухгалтера — счёты 7.7




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

71 Comments

  1. Tatitutu

    Вам еще не надоели калькуляторы, кпк и мобильники ?

    Универсальный калькулятор (ретро) всех времен и народов.

    Reply
  2. Ish_2

    (1) Всё жду , когда у Юры поутихнет фонтан. Зря жду ?

    Reply
  3. Ёпрст

    Картинки сделай с прозрачным фоном, а то не очень смотрится..

    Reply
  4. Ёпрст

    +3 да и всё лишнее с формы повыкидывать стоит, типа флажков..

    Reply
  5. XXXL

    (2) А надо?

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

    Однозначно буду своим бухам впаривать 😀

    Reply
  7. OFF

    Считается! 😀

    Reply
  8. 1v7

    за идею-зачет.

    Reply
  9. ЗАК

    Как всегда, зачет 🙂

    Reply
  10. CheBurator

    мегаидея! только сделать по горячей кнопке переключение костяшек — слева направо или справа налево

    Reply
  11. Tatitutu

    (2) Наверное да, не дождешся, занимай другую очередь 😀

    я еще раз говорю 1С это — мое любимое хобби.

    хорошо успокаивает…

    на днях просто видел картинку сидит бабуля (она с Лениным наверное вместе училась)

    принимают товар

    — считает на счетах

    — записывает на бумажку

    — с бумажки в ексель

    — в екселе (итоги на счетах подбиваются) она мне «А вдруг вирусы, сынок ?»

    — и потом в 1С забивается

    — распечатывается

    — и вручную заносится приход в амбарную книгу

    но порядок !!!! знает где какая мышь заначку на складе сделала.

    вот и я ехал и думал — счеты, простой и одновременно сложно удобный инструмент

    захотелось повторить программно

    честно — на написание от а до я ушло около 2 х часов (со всеми бантиками)

    (3) ты не поверишь, картинки с прозрачным фоном — могу оригинал скинуть, раза три переделывал никак, и флажки спрятал — прятал ручками а их там много и что то видно очень далеко спрятал за 2000 , перестали работать.

    — пока думал перепробовал три алгоритма перещения костяшек

    — проблема с перерисовкой была (тормозило чуток)

    — выявление черных костяшек

    — придумать как лучше и правильнее получить значение, какую костяшку и где тронули

    — нумерация реквизитов на форме.

    Но бабушке понравилось ))))

    (10) хорошее предложение , только ножно тогда 4 кнопки управления сделать как минимум

    — выбор ряда вверх вниз

    — выбор костяшки влево вправо

    Reply
  12. Димча

    Очередной шедевр. Поймал себя на мысли, что не помню как пользоваться счётами 🙂 Ты просто молодец. Интересно, а молоденькие бухгалтерши могут ???

    Reply
  13. Ёпрст

    (11) завтра кину исправленый вариант… где усё красивенько

    Reply
  14. Ёпрст

    +14 прикрепи картинки с прозрачным фоном, чтоб самому не лепить.. лень понимашь

    Reply
  15. Muhin555

    зачОт !!! 😀 😀 😀

    Reply
  16. Шёпот теней

    … очередная ТА-Ти-Ту-Ту-товская дУрррь … вот …

    Reply
  17. Serj1C

    А как на них умножать?

    Reply
  18. Tatitutu
    Reply
  19. Ish_2

    (11) Уговорил. Фонтанируй.

    А со счетами ты того… силён.

    Reply
  20. Шёпот теней

    … ещЁ БЫ логарифмическую линеЙку кто визуализировал …

    … вот была бы игрушка … весь день можно играться …

    производительсность возросла бы наверное процентов на 50% … но это уже для интеллектуальных складских работников … уффф …

    … вот …

    Reply
  21. XXXL

    (16) Это не дурь, это гениальность ))))). Автор, похоже, может любое жизненное явление (в данном случае впечатление) запрограммировать!

    (18) таки да, 1boy ❗

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

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

    Reply
  23. Tatitutu

    (23) Ну ты спросил 😀 — яндекс нервно курит в сторонке.

    Ждем ответ (вариант извлечение корня столбиком)

    Reply
  24. Alraune

    (22) Это же для бухгалтера счеты, а зачем ему извлекать корни? Это что за единица в итоге получится — квадратный корень из рубля? Или рубль в квадрате?

    Reply
  25. Ёпрст

    Апгрейд от меня:

    Reply
  26. Ёпрст

    перезалил новый релиз..

    Reply
  27. e.kogan

    Б-же мой, какая прелесть 🙂

    Reply
  28. Шёпот теней

    … опять Язвую … может на палочки перейти … или на узелки … вот …

    … а с учЁтом «качества» нашей бухии можно и кости прицепить … пусть бросают — сколько выпало столько и записали … а то квКорень … квКорень …

    … уффф … вот …

    Reply
  29. Tatitutu

    Вот , что я забыл, спасибо хорошем людям подсказали )))

    нарукавники

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



    Reply
  30. L_B

    А где нарукавники то добыл? Тоже хочу ))))

    Reply
  31. Tatitutu

    (30) Так забирай (правой кнопкой сохранить изображение) можешь считать подарком

    Reply
  32. L_B

    (31) Спасибо за подарок и за первого парня на деревне с деревянной медалью — прекрасный рисунок 🙂

    Reply
  33. ILM

    Хочу такие же на 8-ке, но в типовой 😥 😥 😥

    Reply
  34. Tatitutu

    Что сегодня за праздник ? Чем вызван такой резкий скачок

    с 10.06.10 17:00 по 15.06.10 23:00 всего скачало 166 раз

    за сегодня — только за сегодня 133 раза !

    Reply
  35. Alraune

    (34) Среда. По средам рассылки на почту за неделю.

    Reply
  36. jhfrek

    Прикольно!

    Reply
  37. Myti

    рэспектт!!!

    Reply
  38. ValeryZ

    Классно!

    Завтра своим бухам покажу, может кто-то и вспомнит, как на счётах щёлкать. 😀

    Reply
  39. Tatitutu

    Вчера приходил парень на собеседование

    говорю у тебя есть что посмотреть из твоего написанного

    да, есть штук 6 обработок с ИСа и среди них мои счеты

    — ты писал ?

    — да конечно. на досуге

    — а что в комментарии кода обозначает слово Tatitutu

    …. под столом !!!

    Reply
  40. Ish_2

    (39) Ты всё о себе да о себе . Взял парня -то ?

    Reply
  41. Abadonna

    (40) Если он сразу нагло врёт, то что потом будет? Нисся 😉

    Reply
  42. Ish_2

    (41) Ну вранье, Аркадий , не самый большой грех.

    Мы все врём в меру сил и терпим чужое враньё.

    Так что… лишь бы человек хороший был (в смысле, программист).

    Reply
  43. Abadonna

    (42) А зачем хорошему программисту чужое за своё выдавать? Допускаю, конечно, что для красного словца… но, помнишь поговорку: не то он украл, не то у него украли, но что-то такое всё-таки было… 😉

    Reply
  44. Tatitutu

    (40) Он пообещал мне в понедельник !!! (а понедельник знаете какая дата?) принести обработку «Длинные нарды» http://infostart.ru/public/72798/ полностью рабочую 😮

    короче — будет два варианта

    Reply
  45. wumka

    (44) Дурите бедных бухов 🙁 Подсовываете им неправильные счёты, наверное, они дают неправильный мёд счёт 😳

    Reply
  46. ufimowaswetlana

    😀 Под столом, еще бы звук костяшек был бы полный отпад

    Reply
  47. Abadonna

    (46)

    еще бы звук костяшек был бы полный отпад

    В 95% случаев — бесполезно. Обычно у юзверей колонок нема…

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

    Должен заметить, что на профессиональных счетах фиксируются (первой черной костяшкой) каждый третий разряд рублей… 😐

    Reply
  49. wumka

    (48) 😉

    (47) и колонки у бухов отобрали, и счёты подсовывают ненастоящие… сплошные утеснения творят бухам 🙁

    Reply
  50. Abadonna

    (47)

    и колонки у бухов отобрали

    На моей памяти ни разу не отбирали, ибо как можно отобрать то, чего нет? 😉

    Да и я сам на работе сначала использовал наушники (просто на столе обычно лежали), а потом за свои собственные денежки.. и т.д..

    Reply
  51. panteranew

    а всё равно спасибо!))))

    Reply
  52. Tatitutu

    Музыки…не забывайте Женщин поздравить.

    Хороший подарок — налетай, разбирай. халява.

    Reply
  53. Tatitutu
  54. Altair777

    (0) пожелание — хорошо бы добавить визуальный разделитель копеек и триад (для костяшек и Итого)

    Reply
  55. lookindenis

    Прикольно =))

    тока разрешение … жесть…

    у меня на 23 монитор не влезли счеты )

    ща подрехтую… и втюхаю в 3 базы… пусь вспоминают правила ))))

    Reply
  56. bazil795

    Красивые счеты. Только есть пару неточностей — первая кость на тысячах, должна быть черная, и должна быть проволока-разделитель с четырьмя костяшками — собственно на фотке всё показано верно. Про функционал проволоки-разделителя ничего не знаю. Даже в детстве, когда счеты применялись реально, никто не мог толком это объяснить. Видимо чтобы просто бросался в глаза разделитель рублей и копеек. Когда-то тоже умел умножать на счетах, но сейчас совсем ничего не помню.

    Reply
  57. bazil795

    Помню на практике в институте, работал неделю в отделе погрузки, на отделении Октябрьской железной дороги. Все данные пересчитывались на обычных электрических калькуляторах, типа современных бухгалтерских, только с питанием от сети и на зеленых цифровых индикаторах. Но сбоку СТРОГО у каждого стола, на крючке, висели большие счеты. Они быди не гламурными как на фотографии, а настоящие рабочие — значительно больше по размеру и большей «разрядности». И по легкому износу, было видно, что на них иногда реально считали.

    p.s. На фотографии видно, что человек держащий в руке счеты, видит их в первый раз или это какай-то «праворульный» человек, вроде китайца. Кости должны лежать по умолчанию справа, а значащие «цифры» слева. Ну а нарукавники должны быть черными, это даже не обсуждается… 🙂

    Reply
  58. gia2011

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

    Reply
  59. Master07

    Прикольно!

    Reply
  60. Rockman

    Меня расчетчик за такой калькулятор зарплаты лишит 🙂

    Reply
  61. Tatitutu

    (60) Скажи ей это не калькулятор, а Бухгалтерские счеты — может , наоборот премию выпишет 🙂

    Reply
  62. Rockman

    (61) Ну расчетчик вообщето еще застала времена когда на счетах считали — так что просто затаит мелкую обиду 🙂 , а вот главбух такая затейница (я уже заколебался корректировать базу под ее нужды)- просто кино и немцы, за счеты порвет мне на британский флаг и скажет чтоб не занимался фигней 🙂

    Reply
  63. Tatitutu

    (63) Подари ей с приветом от меня лично. Увидишь она тебя расцелует )))

    Reply
  64. antares_of

    отлично, у меня многие привыкли именно к такому способу счёта)

    Reply
  65. tanekQ

    Прикольная штука! Поставили своим бухгалтерам, так все в округе захотели сие чудо, теперь сидят все хором учатся — перепроверяют правда на калькуляторах, а вот бы еще в уме заставить хотя бы по-складывать — вообще стали бы все как вУтки!

    Reply
  66. ~gekK@~

    ахахаха вот этооо тема. обязательно своим тетенькам на 7ке подгоню)

    Reply
  67. treedo

    а че эт ваще такое??? Сколько шума, вокруг каких-то пуговицах на нитках??? И при чем тут 1С??? =)

    Reply
  68. revril

    Охохохо!!Красота какая))спасибо за доработку, оочень интересно!! думаю забавно будет поставить расчетчику такую доработку

    Reply
  69. Shrek2015

    красивая штуковина. повеселило 🙂

    Reply
  70. sikuda

    реализация под 8.3 http://infostart.ru/public/248770/

    Reply
  71. mt111

    блин, поздно увидел я бы своим бухгалтерам 16 числа сего месяца внедрил в 1с. Ато мы им виндосовский меняли на такой

    Reply

Leave a Comment

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