Программа для маленького магазина (без лишнего….)




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

28 Comments

  1. kompas-dm

    (0) Еще не раскрывал, но за смелость +

    Reply
  2. rotting

    За смелость конечно +, но она, извините, никакая. Хотя бы коды товара где-то участвовали…..

    Reply
  3. costy_admin

    программа делалась для продавца где нужно только это… я же описал что она максимально упрощена!!!!

    Reply
  4. DitriX

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

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

    Reply
  5. uzerdv

    Что то архив битый 🙁

    Reply
  6. SergeyT2006

    Мааааленький магазин и 8-ка…. Оригинально 😉

    Из пушки по воробьям!

    Reply
  7. Abadonna

    (6)

    1С:Торговля и склад 7.7 Проф + ИТС USB 15 200 руб.

    1С Предприятие . Оперативный учет. Конфигурация Торговля и склад 7.7. Cетевая версия на 3-х пользователей + ИТС USB 25 000 руб.

    —————————————————————————————-

    1С Предприятие 8. Управление Торговлей 14500 руб.

    1С Предприятие 8. Управление Торговлей. Базовая версия 600 руб.

    1С:Розница 8 10800 руб.

    1С Предприятие 8. Клиентская лицензия на 1 рабочее место 5200 руб.

    __________________________________

    Ну и кто из них «пушка» по цене?

    Reply
  8. SergeyT2006

    (6)

    Если уж быть точным, то

    1С Предприятие 8. Управление Торговлей 14500 руб.

    Для того, чтоб использовать Вашу конфигурацию, нужна платформа восьмой версии. Стоит ли покупать ее за 15000, чтоб использовать в таком урезанном виде?

    Может стоит посмотреть в сторону бесплатного софта, OpenOffice — как альтернатива.

    Reply
  9. Abadonna

    (8)

    Стоит ли покупать ее за 15000, чтоб использовать в таком урезанном виде?

    Если контора не в состоянии купить продукт стоимостью в ползарплаты программиста в провинции, ей, скорее всего, стоит подумать о закрытии 😀

    Reply
  10. SergeyT2006

    (9)

    Так я не понял, контора или маленький магазин?

    Вы готовы отдать 15000 за то, что можно заменить «бумажной» бухгалтерией?

    Reply
  11. Abadonna

    (10) Если ты вдруг не въехал: автор конфигурации costy_admin, а не Abadonna.

    Abadonna не пишет конфигурации, не царское это дело 😀

    P.S. Я работаю в сфере облегчения жизни «одноэснегам»;)

    Reply
  12. SergeyT2006

    (11) Это что то меняет?

    Reply
  13. Abadonna
    Вы готовы отдать 15000 за то, что можно заменить «бумажной» бухгалтерией?

    Там, где пользуются «бумажной» бухгалтерией и компьютеров-то, как правило, нет ВООБЩЕ. Поэтому вопрос о бесплатного (равно и платного) софта у них не стоит.

    Reply
  14. Abadonna

    +(13) Пример из жизни:

    Подруга работает в пиво-вино-водочном отделе средней руки павильона.

    Каждая проданная бутылка пива — в тетрадочку, в тетрадочку…

    Вот и весь Open Office 😉

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

    Каждая самописная… — ну, дальше известно.

    Reply
  16. SergeyT2006

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

    (14) А у меня держит магазин детской одежды, точнее три магазинчика… Посчитаем? 14500 * 3 = 43500, плюс комп в каждый, да чтоб восьмерку тянул…

    А на…. Пардон ;), зачем такая автоматизация???

    Reply
  17. Abadonna
    Не скажите. Компьютер у нас нынче имеется у многих, дома

    Покажи мне хоть одного, кто дома юзает лицензионный софт! (ну, может, 2%)

    Плюс-минус поломанная восьмерка особой роли не играет;)

    Reply
  18. Abadonna

    +(17) Зайди к какому-нибудь относительно продвинутому знакомому.

    Ну, Винда, может, и лицензионная (при покупке компа)

    А дальше поехало: MS Office, PhotoShop и т.д. и т.п.

    Reply
  19. Ish_2

    (17) Личка работает у меня только на прием сообщений — на передачу никак.

    (15) «Каждая самописная… » — это скучно и затерто.

    «Каждый самописец..» — звучит поинтересней.

    Согласен ?

    Reply
  20. cucuruza

    Покажи мне хоть одного, кто дома юзает лицензионный софт! (ну, может, 2%)

    Плюс-минус поломанная восьмерка особой роли не играет.

    У меня дома весь лиц.софт: win7, опенофис(благо бесплатный) 1с8 проф бухгалтерия и зарплата, неро9, винрар. стараюсь пользоваться бесплатными аналогами дорогих програм. Я бухгалтер и веду учет для нескольких фирм.

    Reply
  21. awk

    (18) Более четырех лет не сижу за виндой… 1С 8 дома лицензионная стоит… Остальное через терминал на рабочем месте… Так что 100% лицензия на домашнем компе…

    Reply
  22. nafa

    Чего вы все к лицензионности прицепились и какое она вообще к этой статье/программе отношение имеет?

    Те, кто не хочет за лицензию платить ставят себе любую базу хоть комплексную, хоть УПП и работают себе спокойно. Таким как раз ни о чем думать не надо.

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

    Насчет цен на 8ку. Для маленького магазина здесь ничего запредельного по ценам нет. 1С Торговля 8ка БАЗОВАЯ имеет рекомендованную цену 4600 руб и при этом бесплатное обновление через Интернет безо всякого гемороя с ИТС. А если еще и немножко ручками по клаве постукать, то можно как и всякий другой продукт по цене, близкой к дилерской купить, например здесь на текущий момент цена 2484 руб. (это не реклама, а просто пример, я к этой фирме никакого отношения не имею.).

    Учитывая то, что даже б/у железо типа ноутбук 12″ на 915 чипсете + сканер ШК более менее приличный обойдется порядка 10 т.р. (это под любую программу, даже полностью бесплатную), доплатить 2,5 т.р. за лицензию на 1С реально не так уж и дорого.

    Reply
  23. esa35
    nafa пишет:

    Чего вы все к лицензионности прицепились и какое она вообще к этой статье/программе отношение имеет?

    Те, кто не хочет за лицензию платить ставят себе любую базу хоть комплексную, хоть УПП и работают себе спокойно. Таким как раз ни о чем думать не надо.

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

    Насчет цен на 8ку. Для маленького магазина здесь ничего запредельного по ценам нет. 1С Торговля 8ка БАЗОВАЯ имеет рекомендованную цену 4600 руб и при этом бесплатное обновление через Интернет безо всякого гемороя с ИТС. А если еще и немножко ручками по клаве постукать, то можно как и всякий другой продукт по цене, близкой к дилерской купить, например здесь на текущий момент цена 2484 руб. (это не реклама, а просто пример, я к этой фирме никакого отношения не имею.).

    Учитывая то, что даже б/у железо типа ноутбук 12″ на 915 чипсете + сканер ШК более менее приличный обойдется порядка 10 т.р. (это под любую программу, даже полностью бесплатную), доплатить 2,5 т.р. за лицензию на 1С реально не так уж и дорого.

    что верно то верно

    Reply
  24. mustakh

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

    Reply
  25. mustakh

    А сколько надо писать чтобы скачать хотя бы одну программку?

    Reply
  26. mustakh

    Я когда то написал конфигурация для склада на 1с 7.7, успешно работали в течении 5 лет, и вот назрела необходимость переписать на 1С 8.2, не знаю даже с какой стороны подойти, надеюсь эта програ мне поможет

    Reply
  27. costy_admin

    немного… если нужно пиши скину лично, admin_bor@mail.ru

    Reply
  28. mitroshkin_boris@mail.ru

    (27) можешь скинуть на rock_b@mail.ru?

    Reply

Leave a Comment

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