Прыг-Скок…или из MS EXCEL в 1С (8.2) (открытый код)




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

49 Comments

  1. qwinter

    Законченности и оптимальности решений в обработке можно только завидовать)))

    А в тз Вы каким способом читаете?

    Reply
  2. Некто A. Petti

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

    К примеру запомнить шаблоны импорта счетов от разных поставщиков.

    Reply
  3. Yashazz

    Баян лютый, но публикация оформлена хорошо.

    Reply
  4. Tatitutu

    (3) Yashazz, баян в чем и тем более лютый — судить за глаза просто, объяснить трудно

    (1) это скорее всего и фишка данной обработки — она самостоятельно на 98% правильно умеет определять из любого файла — то , что нужно для загрузки в документ

    Reply
  5. doctorov_s

    Тоже понравилась, очень крутая обработина, и описано нормально!

    Reply
  6. Glebis

    Под УФ пойдёт или только обычные формы?

    Reply
  7. Tatitutu

    (6) Glebis, это для обычных форм (не УФ)

    Reply
  8. Snitkovski

    здравствуйте!

    есть вопрос: почему в заголовке написано «бесплатно», а на скачивание требуется 3sm ?

    Reply
  9. Snitkovski

    здравствуйте!

    есть вопрос: планируется ли версия под Управляемые Формы ?

    Reply
  10. Идальго

    Не запускал, но видно, что прикольненько сделано ))

    Reply
  11. dj_serega

    (11) По ссылке увидел очепятку 😉

    «из EXCEL илп ПРЫГ-СКОК 82»

    Reply
  12. Tatitutu

    (12) dj_serega, Спасибо. исправил

    Reply
  13. Alex Star

    (11) Ну, как бы слово «бесплатно» подразумевает получение чего-то за «ничего», а так, это получается обман и надувательство 🙁 Всегда напрягали рекламы которые везде кричат «БЕСПЛАТНО!!!» и тут же звездочка, и мелкий текст под ней…

    Reply
  14. nkp14108

    Прикольненько!!! Думаю скачивать или нет, у меня осталось только одна конфа (из 7) на обычных формах и скорее там не пригодится.Но+

    Reply
  15. ekaruk

    (14) Alex Star, +1

    Уберите «бесплатно» из заголовка.

    Действительно совершенно некорректно слово используется.

    3SM это сейчас около 50руб. Мелочь, но все равно не бесплатно.

    p.s. Верю, что обработка хорошая. И сама публикация отлично оформлена. Приятно смотреть.

    Reply
  16. VladimirKHV

    (8)(14)»Что-то за ничего» бывает только в вымышленном мире халявы. В реальной жизни же нет ничего абсолютно бесплатного. Вы платите за электричество, интернет, тратите свои силы, время и т.д. Поэтому в реальной жизни «бесплатно» означает «без дополнительной оплаты».

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

    Никто вам не запрещает сделать так же, наоборот, это только приветствуется.

    Reply
  17. Tatitutu

    (17) ekaruk, Любой каприз — заголовок исправил , цену скачки снизил с 3 до 1 Sm

    (хотел сделать бесплатно, но уже не дает)

    Reply
  18. Xershi

    По описанию очень бодрая обработина, если понадобится в работе возьму на вооружение!

    Reply
  19. Designer1C

    (18) Минимум — 3sm, А лучше 5-8 sm. Потому что большой труд вложен и в обработку и в описание.

    Reply
  20. Designer1C

    (18) Бесплатно только для статей можно сделать скачиваемый файл, как я понимаю.

    При этом : бесплатное не ценится.. И не используется.

    Бесплатное раздувает гордыню одариваемого. С последствиями дарителю.

    На мой взгляд, 3sm — это минимум для такой разработки. Я бы и 5sm сделал.

    Только время на публикацию заняло часов 8, наверное ?

    И публикация очень хороша ! По полочкам все разложено. Сколько времени экономится для разработчиков !

    Благодарю !

    Reply
  21. Tatitutu

    (21) Designer1C, Спасибо большое очень приятна оценка собственного труда.

    Sm мне не нужны априори(их около 2500 на личном счету) без них раньше было намного продуктивнее для пользователей

    Была бы возможность выложил бы для бесплатного скачивания.

    Тут три месяца была опубликована моя собственная конфигурация для розничного магазина

    Программа платная ! но для пользователей ИС она шла с бесплатной лицензией

    (т.е. скачал и пользуйся на законных основаниях)

    я хотел , взамен диалога — протестировать в рабочем режиме.

    публикация начала приобретать успех… слишком много комментариев и звезд (релиз обновляется по 2-3 раза в неделю)

    и вдруг появился ОН… сказал что нужно обязательно сделать публикацию платной !

    сделал и платную версию и бесплатную

    в ответ прилетело , что я на основании правил должен удалить все упоминания обо мне

    из программы…

    а по теме , было 3 sm — смотри сколько желчи и злости вылезло )))), сделаю 8 никто и качать не будет, а звёздочку поставить

    так это вообще запредельное мечтание.

    Удачи во всех начинаниях.

    Reply
  22. Synoecium

    (22) Не принимайте близко к сердцу придирки насчет платно/бесплатно, просто напишите что обработка открытая и за SM, думаю вопросов ни у кого не будет и все поймут о чем речь. А вообще видно что проделана огромная работа по улучшению юзабилити данной обработки и программы такого уровня обычно продают за рубли на Инфостарте, это к я к тому что вам большой плюс за хорошую публикацию 🙂

    Reply
  23. Tatitutu

    (23) Synoecium, Спасибо за слова поддержки

    (тот кто у тебя на аватарке у меня две таких в банке уже второй год живут)

    Reply
  24. qwinter

    (22)

    и вдруг появился ОН…

    как это знакомо)))))

    Reply
  25. alex_4x

    Отличная обработка, надо будет изучать. Мне кстати очень пригодилась Ваша обработка «счеты» со звуком. На складе пикать когда надо 😉

    А то что некоторые выступают что мол это не бесплатно — прям даже обидно! Честное слово, это как-то прям за гранью добра и зла!

    А Оформление — это просто шедевр! так всё расписано!

    Designer1C

    Только время на публикацию заняло часов 8, наверное ?

    Часов 8… ну не знаю, у меня бы часов 80 заняло, мелочи все эти вылизывать — это только кажется что раз плюнуть.

    Reply
  26. amon_ra

    (14) Alex Star, та вы, сударь, зажрались!

    Какими же все-таки бывают люди жадными и вредными.

    Reply
  27. Tatitutu

    Ну вот, чуток остался до 100

    Reply
  28. Tatitutu

    Полноценную версию можно протестировать в конфигурации

    MAGAZKA & MAGAZKA (NS) — программа для розничного магазина

    На Главном окне — Обработки- Прыг-СКОК

    Доступна для бесплатного скачивания
    Reply
  29. Tatitutu
  30. ljolsen

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

    Лопает все, даже не пришлось к конфе приспосабливать.

    Эту скачать потестить не могу — потому как девушка бедная.

    Reply
  31. vik2006

    А зачем стока букаф в описании и столько наворотов? Есть прекрасная обработка «Загрузка данных из табличного документа» стандартная что под управляемое приложение, что под обычное. Прекрасно ею пользоваться, если умеючи. Зачем еще изобретать велосипед?

    Reply
  32. Tatitutu

    (32) Выбор должен быть всегда!

    Не попробуешь не узнаешь.

    Просто.удрбно.надежно !

    Reply
  33. Snitkovski

    (9)

    есть вопрос: планируется ли версия под Управляемые Формы ?

    Извините, что прерываю вашу высокоинтеллектуальную беседу — повторю свой вопрос про УФ

    Reply
  34. Tatitutu

    (43)Когда появится спрос на MAGAZKA на управляемых формах тогда и ПРЫГ-СКОК переведу.

    Спрос рождает предложение.

    Reply
  35. forbs343

    (32) просто есть деревянный велосипед придуманный в 200 лет назад (Загрузка данных из табличного документа), а есть прыг-скок — современный нормальный велосипед.

    Reply
  36. German_Tagil

    посмотрю

    Reply
  37. user851363

    Прекрасно! БЕСПЛАТНАЯ ОБРАБОТКА!!!! ОТКРЫТЫЙ КОД! Но чтобы скачать — заплати 1500р., потому что она бесплатная!!!

    Reply
  38. Tatitutu

    (47) Она раньше было размещена бесплатно

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

    Пришли почту вышлю

    Reply
  39. progr-2008

    (0)»3 ЭТАП : Загрузка данных в базу

    Вот на этом этапе нужно будет «допилить» загрузку под свою конфигурацию»

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

    Слева — пустое поле.

    Как для УПП, так и для конфигурации MAGAZKA с сайта.

    Reply
  40. Tatitutu

    (50)

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

    Слева — пустое поле.

    Как для УПП,

    Ирина — здесь выложена «РЫБА — ШАБЛОН» — чтобы работало как нужно — допишите под себя

    так и для конфигурации MAGAZKA с сайта.

    ПОЛНОСТЬЮ РАБОЧАЯ ВЕРСИЯ есть в составе конфигурации MAGAZKA ver. 1.0.027

    (не нужно там, эту подгружать и запускать)

    — Главное окно — Обработки — ПРЫГ-СКОК

    запустите и проверьте -все работает ! И сразу поймете к чему нужно стремиться.

    Показать

    Reply
  41. progr-2008

    (51) В описании обработки сказано:

    «3 ЭТАП : Загрузка данных в базу

    Вот на этом этапе нужно будет «допилить» загрузку под свою конфигурацию»

    А это не соответствует действительности!

    Не работает не на этом этапе, а уже намного раньше.

    Reply
  42. Xalmg

    Здравствуйте, для розницы подходит 2.2.7.29?

    Reply
  43. Tatitutu

    (54) «Хорошая новость — данная обработка БЕСПЛАТНАЯ и с ОТКРЫТЫМ КОДОМ



    Плохая в том, что это незаконченное универсальное решение (под свою конфигурацию нужно немного поправить код).

    Так что это скорее всего для программистов шаблон/рыба/заготовка

    Reply
  44. Sector78

    Отличный обработчик, до этого пользовался для версии 7.7

    Reply
  45. user900062

    Обработка востребована для УТ11 (УФ).

    Планируется ли новая обработка?

    Reply
  46. Tatitutu

    (57) «Хорошая новость — данная обработка БЕСПЛАТНАЯ и с ОТКРЫТЫМ КОДОМ

    Плохая в том, что это незаконченное универсальное решение (под свою конфигурацию нужно немного поправить код).

    Так что это скорее всего для программистов шаблон/рыба/заготовка.»

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

    а так все в ваших руках.

    Reply
  47. taul

    (58)

    Будьте добры, если данная обработка действительно бесплатна, не могли бы Вы ей поделиться?

    taul@mail.ru

    Моя благодарность!

    Reply
  48. jimli

    Добрый день

    Права на ошибку нет, накопила 1$M под загрузку данных из УПД в УТ 10.3.49.1 (обычные формы). Случайно нашла описание вашей обработки. Мега-круто! Как думаете, в моей конфигурации она запустится? Допилить под себя я смогу 🙂

    Reply
  49. alexsus26

    (18)любой труд должен оплачиваться хоть как-то. Пускай даже и маленькими бонусами

    Reply

Leave a Comment

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