Free Office




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

    Super !!!

    Reply
  2. WiseSnake

    > Молчуны-халявщики надоели конкретно!

    Абсолютно согласен.

    + За идеи и за возможность поучится. Такие системы мало написать их еще надо отладить. Спасибо!

    Вопросы возникшие сразу:

    Почему на 7ке? Потому что давно начали писать или по другой причине? Очень огорчает что на 7ке (на ней уже скушно писать).

    Планируется ли со временем перевод на 8ку?

    ПС: Посмотрю подробней буду отписываться конкретней.

    Reply
  3. СергейКа

    За идею +, но скачал зря, ибо на 7-ке пользоваться уже не вариант 🙂

    Reply
  4. zzz86

    +1

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

    Очень приятная конфа. И совсем не проигрывает от семерочной платформы. По крайней мере, можно не опасаться глюков от движка. +!

    Особенно картинки понравились. 😉

    Reply
  6. МишуткаЛМ

    Система хороша, особенно тем, что на семёрке. Всё-таки в провинции ещё немногие перешли на 8-ку.

    Reply
  7. O-Planet

    Вообще, писать начал в 2006, когда на «Белке» работало несколько менеджеров. Надо было срочно организовать их работу. А вот недавно нужно было сделать Open Billing и Cherry Mailer. Подумал, и решил объединить, потому что просто так их не выложишь. А про систему поиска поиска давно думал, по крайней мере, алгоритм разработал давно, а реализовать руки не доходили.

    Портировать под 8 не буду в ближайшее время. Это продукт для фрилансеров прежде всего, а их на 7.7 больше.

    Reply
  8. WiseSnake

    (7) Несогласен. Любой фрилансер(я кстати фрилансер) может использовать 8ку. Если не умеет на ней кодить так может ее использовать как пользователь, а так же возможно и как обучающий инструмент.

    Не сомневаюсь что все замечательно работает но пользоваться конфой как и СергейКа не буду, принципиально.

    P.S. от семерки коробит (от 8.0 тоже), если будет необходимость в такой конфе напишу свою с нуля. Не в обиду. ИМХО

    Reply
  9. WiseSnake

    (6) МишуткаЛМ А какая разница в провинции ты или нет? Интернет по моему сейчас везде есть. Я кстати из самой глубокой провинции 🙂

    Reply
  10. O-Planet

    Если тема станет восстребованной, то можно будет перевести.

    Reply
  11. iddqdidkfa

    Бегло глянул. Нужная вещь!

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

    Сначала только хотелось бы собрать требования к системе…

    Reply
  12. O-Planet

    С восьмеркой связаны и еще кое-какие сложности. Я использую, если кто заметил, две ВК: для мониторинга баз с адресами, и в частности, интернет ресурсов, и ВК «monika». Не хотелось бы это делать на базе платформы, потому что будет тормозить. А использование ВК в 8 несет определенные неудобства.

    Reply
  13. WiseSnake

    (11) У каждого будут свои требования и пожелания.

    Как идея Олег (O-Planet) может создать отдельную ветку в которой можно организовать коллективный перевод данного продукта на 8ку. Каждый сможет внести вклад оставить пожелания, идеи в разработку.

    ПС: З

    Reply
  14. WiseSnake

    ПС: За коллективно разработкой будущее :)… сложность в организации сего процесса 😉

    Reply
  15. iddqdidkfa

    (13) Было бы неплохо. Кроме того, может образуется группа разработчиков.

    Reply
  16. O-Planet

    Организовать не сложно. Сложно найти участников. Люди не постоянны. Мало тех, кто начинает и тупо доводит что-то до конца.

    Reply
  17. anbxp

    monica — сила. Сейчас попробую в рабочую конфу ее встроить

    Reply
  18. iddqdidkfa

    (16) «тупо» доводить до конца. Это многие как раз могут 🙂

    Reply
  19. СергейКа

    Поясняю свой предыдущий коммент:

    Пользоваться не буду не принципиально, а потому что нет 7-ки уже 🙂 А ставить ломаную — в лом.

    Не вижу проблем использования 8-ки для фриланса ибо: нормальный спец, как правило, имеет хоть один сертификат. А если есть сертификат, то с учебной версией 8-ки проблем тоже нет. Для личного пользования её достаточно.

    Reply
  20. TimVG

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

    Reply
  21. WiseSnake

    (16) Но они есть. И обязательно найдутся если не забрасывать. Пару энтузиастов хватит, чтобы все размножалось и двигалось :).

    (20) А почему с 8кой это не должно получиться? ))))

    Reply
  22. WiseSnake

    Посмотрел, оценил )))))))

    Сорри, но на какую либо платную версию это не тянет.

    На самом деле, если честно, то сильно разочаровался…

    ПС: Реклама двигатель торговли 😉 и плюсов тоже…

    Reply
  23. O-Planet

    (17) не забудь взять файл words.dat 🙂

    Reply
  24. O-Planet

    (22) Не содержательный коммент. Все-таки важно узнать ЧТО не тянет, или тянет. Конфа простая, но вроде не она главная в этой разработке 😉 Т.е. законный вопрос: что должно быть, чтобы на твой взгляд стало крутью?

    Reply
  25. qwerty_xxx

    Ставлю + за мысль.

    А 7-ка — это есть карашо:

    -портативнай версия на флешке

    -отлаженая платформа

    -мало места занимает

    Reply
  26. O-Planet

    (26) В доках. Тебе явно понравится Моника…

    Reply
  27. Свой

    Спасибо, я как раз 7-рочник, вещь нужная, но видимо требующая некоторого освоения. К сожалению смогу посмотреть лишь после эпопеи со сдачей годовой отчетности.

    Reply
  28. Yexel

    Клёвая конфа — мне понравилась. Плюспиццот — за идею 🙂

    Поэкспериментировал и понял, что некоторую часть своих дел можно там вести. Но, к сожалению, не все, так что Excel — остаётся 🙁

    Хотел было уже лезть в конфигуратор, но немного поостыл, ознакомившись с комментами.

    Действительно — а почему на 7-ке? Ведь уже вроде как УП будет скоро-скоро…

    Может сразу на ней? Тогда и на флэшках ничего таскать не надо будет 🙂

    Я здесь нерегулярно бываю, но по этим моим нерегулярным ощущения — потенциал у сообщества Инфостарта — очень велик. Что действительно не получится организовать коллективное творчество по переводу этого продукта на 8-ку?

    Менеджеры проектов — здесь присутствуют, я видел 🙂

    Заинтересованность у народа — тоже имеется.

    Что еще надо для успешности проекта? 🙂

    Reply
  29. maksimz

    + за идею

    Reply
  30. marekbell

    Могу потвердить выше сказанное, что в провинции досих пор используют 7-ку, так что мне конфа действительно в помощь.

    Reply
  31. lereve

    спасибо. Сейчас посмотрим что за зверь!

    Reply
  32. Krasnyj

    Искренне понравилось 🙂 Молодцы. Хотя отладить бы надо

    Reply
  33. O-Planet

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

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

    (34)Какие пинки, когда больше сотни плюсиков? Ежели кто из целевой аудитории не способен под себя подкрутить, так он случайно туда затесался. Снобизм «чистопородных» восьмерочников и вовсе не в счет.

    Reply
  35. skyp

    Идея классная!

    Попробую для себя сделать аналог в 8-ке 🙂

    Reply
  36. O-Planet

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

    Reply
  37. Токарь

    Сумма=?(Работа.Выбран()=1,Сумма<<?>>=?((Работа.Бесплатно=1)или(ТипЗаказа=Перечисление.ТипыЗаказов.Демо),0,Количество*Работа.Цена),0)

    Ожидается символ ‘,’

    В табл.часть почему-то группы можно занести?

    Reply
  38. O-Planet

    (38) Исправил. Выложил отдельно md-файл, чтобы не качать все.

    Reply
  39. O-Planet

    (35) Снобизм «чистопородных» восьмерочников — это сильно сказано. Я уже начинал было чувствовать себя Мерлином, пытающимся спасти язычество… :))

    Reply
  40. NataliK

    Прикольная нужная вещь — спасибо

    Reply
  41. iddqdidkfa

    Ну так что там с разработкой конфы для фрилансеров на 1С 8?

    Кто-нибудь из «зубров» возьмется за руководство проектом?

    Кто-нибудь хочет поучастовать в разработке?

    Reply
  42. O-Planet

    (42) Обсудить функционал, по крайней мере, можно было бы.

    Reply
  43. iddqdidkfa

    (43) Например, в ветке на форуме

    Reply
  44. start2000

    19.СергейКа 24.02.2009 14:26:32:

    «Пользоваться не буду не принципиально, а потому что нет 7-ки уже 🙂 А ставить ломаную — в лом.»

    Эта проблема уже давно решена добрыми людьми, которые сделали portable версию семерки.

    Автору Свободного офиса большое спасибо!

    Reply
  45. WiseSnake

    (24) > Не содержательный коммент. Все-таки важно узнать ЧТО не тянет

    Комментарий содержательный, но не для Вас. Я же не буду Вам писать все что

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

    (45) Эта проблема уже давно решена добрыми людьми, которые сделали portable версию семерки.

    start2000 portable версия это и есть ломанная версия. Думаю СергейКа не ставит не потому что это сложно, а из-за самого факта взломанной 7ки.

    (42) Я уже начал разработку подобной вещи. Возможно в ближайшем будущем выложу саму концепцию идеи, может и выстрелит.

    Reply
  46. O-Planet

    (46) >> Я же не буду Вам писать все что мне хотелось бы

    И зря 🙂

    Reply
  47. WiseSnake

    Неее, мога быть, со временем, буду пожелания оставлять 😉 по мере возможностей. Дело то все равно хорошее. Мне не подойдет, зато другие будут счастливы. Удачи!

    Reply
  48. ash2015

    СПАСИБО

    Reply
  49. zakazchik

    Класс, отлично что на семерке, 8-ка — бред для свободного ЛАНСЕРА !

    Reply
  50. RayCon

    Времени особо не было, поэтому посмотрел вскользь, да и только Free Office. Как говорится, просто и со вкусом!

    Впрочем, наши вкусы на цветовую палитру и девушек явно не совпадают. 🙂

    Но это никак не может мне помешать влепить жирный плюс за элегантность решений! 🙂

    Ну, а теперь — минусы (не пугайся — не инфостартовские).

    1. Это, конечно, не CRM, если, конечно, не считать название должности «менеджер» 🙂

    2. Есть баги.

    3. В мануалах есть опечатки (правда, надо отдать должное, очень мало) и нет конца в предложении «Программа автоматически считает все адреса с этой странице и выполнит проверку на то, не были ли» (кстати, в этом предложении тоже опечатка)

    (42) Пожалуй, мог бы внести посильное участие в части постановки и обеспечения юзабилити. Потенциал разработки — налицо!

    Reply
  51. O-Planet

    (51) У меня есть солидный кусок, который позволяет вести учет по заключенным договорам и работам по этим договорам специалистов фирмы. Точнее, это не кусок, а отдельная разработка. Делал когда-то для одного франча. Там фишка — в том, чтобы задать параметры договоров, сотры бы просто отчитывались о работе, а прога сама бы эти работы по договорам разносила и сотрам считала чаевые, а фирмам выставляла счета по факту работ. Как думаешь, стоит сюда подцепить?

    Reply
  52. RayCon

    (52) Обычно сотрудник (или тот же фрилансер) ведёт несколько проектов одновременно, а часто и в коллаборации с другими сотрудниками => это очень важный кусок в автоматизации работы по различным проектам. Как для самих сотрудников, так и для их фирмы-работодателя. Я бы, например, такою грамотно написанною прогой пользовался бы с удовольствием. К сожалению, на мои вопросы о неком аналогичном функционале среди уже существующих разработок для фирм-франчайзи, я получал от всех своих знакомых 1С-ников приблизительно один и тот же ответ: «запрашиваемых денег это не стоит».

    Поэтому — цепляй однозначно!

    Но проблему CRM это не решит :)))))

    Reply
  53. WiseSnake

    (50) Ну кто же Вам всем такую чушь сказал??? ))))))

    Reply
  54. pj

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

    Reply
  55. Oleg1977

    Вариант с семеркой хорош, хотелось бы и на 8. Попробую сам покудесничать на 8

    Reply
  56. Draconus

    Искал на 8ку, но и то, что на 7.7 тоже хорошо. Пасиб!

    Reply
  57. tvd

    Спасибо, полезный пакет программ

    Reply
  58. pikin

    СПАСИБО

    Reply
  59. RandomDV

    Не качаю, не плюсую, ибо 7.7.

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

    Если такой функционал есть, прошу меня простить, из скринов непонятно. Отпишитесь — плюсану 🙂

    Reply
  60. DD_1975

    Отлично!Вещь хорошая!!!

    Reply
  61. witch

    Мощно очень нравится)

    Reply
  62. AhtungG

    нет слов .. отлично что на семерке!

    Reply
  63. oleg57

    + за идею

    Reply
  64. warenic

    Старая гвардия все еще в строю! и это радует. Идея сама по себе тоже хороша.

    Но какой-же он free, если на платной платформе, да еще и снятой с продаж. Дальнейшее развитие как пойдет?

    Reply
  65. Мустафа

    любой продукт на платформе 1С free не бывает, соглашусь с этим с предыдущим автором.

    Идея хороша, но не более.

    Reply
  66. Nado2010

    интересная штуяка..мнепонравилась….пробовал…

    Reply
  67. Nado2010

    иньереснаяя щтчка…обязательно попробую

    Reply
  68. nirbolz

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

    Reply
  69. eigen20

    Приятная конфигурация, правда очень ограниченный функционал, но пару идей для себя подчеркнул!

    Reply
  70. eugen91

    Спасибо, полезнаяя разработка!

    Reply
  71. user604812_miron25

    Спасибо за разработку. Попробуем в работе и отпишемся.

    Reply

Leave a Comment

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