Печать ценников по документам для "Торговля и склад 9.2"




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2025-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='\

47 Comments

  1. STs28

    Нужная вещь! Попробуем…

    Reply
  2. wolfsoft

    Не забудьте оставить отзыв, когда попробуете 🙂

    Также жду информацию об ошибках, если таковые будут найдены в процессе тестирования.

    Reply
  3. berghouse

    Работает отлично. Кстати под ТИС 9.0 тоже с небольшим изменением.+1

    Reply
  4. Serg-Arm

    Спасибо! Долго искал и вот теперь нашел именно то что надо!!! Супер!! Немного под себя обработаю и все… Еще раз СПАСИБО!

    Reply
  5. wolfsoft

    Рад, что пригодилось 🙂 Спасибо за отзывы.

    Reply
  6. antonioll

    Спасибо. Понравилось.

    Reply
  7. Класс!!!!!+5

    Reply
  8. Нет печати кода…

    Reply
  9. wolfsoft

    2 Борода: Нет, и не будет. Зачем он там нужен, если есть артикул? 😉

    2 ALL: Что-то голосовать плохо стали, будем закрывать доступ? При закрытом доступе голосовали лучше 😉

    Reply
  10. MACTEP

    Про тестирую скажу, некоторые годами такое ищут

    Reply
  11. director

    Супер!!!!

    Reply
  12. iukl

    Еще бы туда штрихкод .И тогда было бы классно.

    Reply
  13. wolfsoft

    Дамы и Господа! Печатные формы ценников очень легко доделать. Любой нормальный спец по 1С возьмет за это совсем чуть-чуть грошей 🙂 Но невозможно создать обработку печати ценников, которая бы удовлетворяла потребности ВСЕХ потенциальных клиентов 😉 Это просто не реально 🙂 Мои координаты указаны в описании всех моих обработок. В случае, если Вы находитесь в моем регионе, можете обращаться ко мне — доработаю/разработаю для Вас конфигурации/обработки за разумные деньги.

    Reply
  14. nikolayfis

    Отлично

    Reply
  15. tujhjd

    Согласен штрихкод немешало-бы

    Reply
  16. wolfsoft

    Видимо одного раза не достаточно, повторю:

    «Дамы и Господа! Печатные формы ценников очень легко доделать. Любой нормальный спец по 1С возьмет за это совсем чуть-чуть грошей 🙂 Но невозможно создать обработку печати ценников, которая бы удовлетворяла потребности ВСЕХ потенциальных клиентов 😉 Это просто не реально 🙂 Мои координаты указаны в описании всех моих обработок. В случае, если Вы находитесь в моем регионе, можете обращаться ко мне — доработаю/разработаю для Вас конфигурации/обработки за разумные деньги.»

    Reply
  17. Д_К

    Очень удобно, понравилось 🙂

    1-Еще бы устанавливать кол-во ценников (импортировать его из накладной с возможностью корректировки)

    2-Добавить Страну производителя

    3-Количество ценников на листе (для принтера этикеток удобно)

    Сколько будут стоить данные дополнения?

    Reply
  18. wolfsoft

    2 ДмКн: Вы находитесь в моем регионе? Стоимость зависит от многих факторов. Ничего сложного в том, что Вы хотите, нет.

    Reply
  19. cadet

    Спасибо!

    Reply
  20. wolfsoft

    Доброе слово и кошке приятно 🙂 (с) народная мудрость

    Reply
  21. SorEZH

    нормальная прога, а что говорят про штрих и недоделки, то это все фигня, пишется быстро

    Reply
  22. cs25

    Плюсую !!! Пригодилась обработка. «Заточил» чуть-чуть под людей с 873 релизом и работает. Молодца wolfsoft — Нижний это сила !!! Привет wolfsoft-у с ул.Опочной от cs25 с пр.Гагарина !!!

    Reply
  23. wolfsoft

    Земляк? 😉 Приветствую 🙂 Случайно не в фирме «АТ» работаешь? Знакомы? 🙂

    Reply
  24. cs25

    Если ты про «Активные …», то я не там …

    Reply
  25. wolfsoft

    Ясно. Просто подумал, что мы были знакомы 🙂

    Reply
  26. webdriver

    Спасибо. Пригодилось.

    Reply
  27. wolfsoft

    2 webdriver: Спасибо за коммент! 🙂

    Reply
  28. wolfsoft

    Голосуем плохо…

    Комментарии не оставляем…

    Ну что, переходим тогда на «коммерцию»?

    Установим символическую плату и посмотрим, как изменится «настроение» посетителей? 😉

    Reply
  29. Happyjack

    весьма понравилось. Вот бы еше ШК добавить в ценник.

    Reply
  30. Bod

    класная штука

    Reply
  31. wolfsoft

    (30) Спасибо, конечно 🙂 А почему «плюсик» не в том месте?! 😉

    Reply
  32. saa05

    Самая реальная утилитка из выложенных на сайтев разделе печать ценников! Respect

    С точки зрения простого пользователя неплохо бы добавить кол-во ценников в печать на каждый товар

    Reply
  33. wolfsoft

    (32) Спасибо, подумаем 🙂

    Reply
  34. chev

    Спасибо. Я ставлю «плюс»

    Reply
  35. wolfsoft

    Будут вопросы, благодарности прошу к нам на сайт.

    Reply
  36. simans

    Гут! буду пробовать! спасиБО!

    Reply
  37. glazko

    Большое спасибо, очень помогло

    Reply
  38. Струнин

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

    Reply
  39. alexick

    Хорошая и доступная, написана понятным языком — что куда и откуда!!!

    Спасибо…. пригодилась, немного переделанная…

    Reply
  40. gugal

    >>В противном случае — при несоответствии рейтинга количеству скачиваний — доступ к обработке будет ограничен.

    А что, если я скачал, а оказалась фигня, то я тоже должен «+» ставить?

    Reply
  41. olga1512

    Очень понравилось, удобная обработка постоянно ей теперь пользуемся

    Reply
  42. olga1512

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

    Reply
  43. wolfsoft

    olga1512, спасибо за спасибо 🙂

    Reply
  44. m818rt

    Очень удобно, понравилось

    Reply
  45. shustrij74

    thanks for work [/FONT]

    Reply
  46. dimonsky

    Спасибо за утилиту. Будем пробовать.

    Reply
  47. denn15

    Понравилось, спасибо.

    Reply

Leave a Comment

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