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




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

18 Comments

  1. amon_ra

    Шикарная реклама! Когда будет готова синхронизация с календарем iOS? по ldap до сих пор не удается подружить календарь.

    Reply
  2. Steelvan

    Конечно реклама, контора владелец Битрикса и Инфостарта ведь теперь одна.

    Reply
  3. Groylov

    А зачем это здесь, если все тоже самое можно на сайте почитать.

    Когда будет готова синхронизация с календарем iOS?

    Кстати, очень актуальный вопрос +1

    Reply
  4. baracuda

    В бесплатной версии очень много ограничений. Отсутствие интеграции с 1с уже сводит ее необходимость на нет.

    Reply
  5. ceramica

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

    Reply
  6. support

    (5) ceramica, так есть же платный вариант без ограничения )))

    Reply
  7. Dimon2005

    Наверное в нынешнее время реклама это и есть какой-нибудь отчет придуманный или обработка )))

    Reply
  8. dfilatkin

    (1) amon_ra, в iOS синхронизация с календарём уже работает.

    Здесь вы можете посмотреть как настроить https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=52&LESSON_ID=3711&LESSON_PATH=3922.5010.5015.3711#mobile_connect

    Если не получится, советую обратиться в службу поддержки. Вам помогут настроить.

    Reply
  9. Lemyyyr

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

    Reply
  10. Cartman

    Как отправить личное сообщение пользователю из 1С?

    Кто нибудь разбирался с API?

    Reply
  11. DoctorRoza
    ««Битрикс24» поможет вам работать более эффективно, получать максимальные результаты от себя и своей компании. Для руководителей «Битрикс24» — это прозрачность компании и всех процессов. Для сотрудников – удобный инструмент для повышения своей эффективности. «

    Так кого же должен любить черт что же такое Битрикс-24?

    Reply
  12. tolX5

    Три раза с интервалом 1-3 месяца пытался приучить себя к этому «чудному» продукту – в результате полное отвращение к продуктам битрикс. PYRUS зашел сразу как родной, еще когда был PAPIRUS и до сих пор радует

    Reply
  13. Yashazz

    Лучший способ повысить эффективность работы компании с помощью поделок Битрикс — это никогда с ними не связываться.

    Reply
  14. hunterok

    (13) Yashazz, Полностью согласен. Пробовали работать в этом массовом бета-тесте — хрень полнейшая. Вроде заявленный функционал впечатляет, но простые вещи нужно делать через задницу. Вики — это вообще отдельная тема. Такой отвратительной реализации я давно не видел. Саппорт — точно так же. На форумах задаешь вопросы и месяцами не получаешь ответы. Если через систему тикетов задавать вопросы, результат не намного лучше. В итоге перешли на Планфикс — да, в чем-то он не дотягивает, нет такого блатного CRM, нет телефонии, соцсети, но зато мы стали РАБОТАТЬ с задачами, а не тратить время на бредни интерфейса Битрикс24. Нам даже не пришлось особо обучать пользователей для работы в Планфикс, даже для полных тугодумов есть режим работы через почту, когда письма автоматом крепятся к задаче.

    Для серьезных разработок я бы использовал продукты Atlassian, для нас это оказался слишком высокий уровень.

    Reply
  15. Camor

    А они уже научились делать обмен заказами со своей родной 1С УТ?

    Reply
  16. serg1974

    (14) hunterok,

    Не соглашусь — работает нормально интерфейс радует.

    Сейчас внедряем внутренний эл. документооборот на Битрикс24, запустили 2 бизнес-процесса «служебные записки» и согласования.

    пока не хватает разработок по интеграции с 1с82 (не у всех же 1с83 !)

    тут есть первые результаты (Мой опыт использования Bitrix24 REST API )— думаю появление на Инфостарте подобных разработок не за горами!

    Нам например очень бы упростила работу интеграция 1с8 и битрикс24.

    Может даже заказывать будем разработку.

    Reply
  17. zels

    Я настроил интеграцию УТ10.3 с битрикс через модуль «1С трекер» как написано https://1c.1c-bitrix.ru/intranet/download.php

    В плане обмена создал узел, настроил, затем выгрузил контрагента. В сообщении и логах все успешно выгружено, но в меню я CRM-Компании контрагент не появился

    Тариф Проект+. Может, со стороны битрикса надо что-то нажать, чтобы выгруженные контрагенты в нем появились?

    Reply
  18. zels

    (17) Заработало. Изменения не зарегистрировались на нужном узле.

    Reply

Leave a Comment

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