ERT Starter v1.0 Beta




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

46 Comments

  1. tahir.akchurin

    У меня всегда возникало желание открыть ERT-шку как EXE -шку, видно что и тебя тоже)). Супер, просто супер прога!. Не сомневаюсь, что по крутизне твоя прога встанет рядом с OpenConf-ом. Написано от души. Спасибо за творение.

    Reply
  2. andrey995

    Требуется ли наличие платформы 1С 77 на компе ?

    Reply
  3. nikitan

    Однозначный плюс. Но так же интересует вопрос (2).

    Reply
  4. Pari

    Попрошу автора дать более подробное описание назначения программы. Непонятно, что означает «… открывать файлы … независимо…» или » Программа, позволяющая открывать файлы … в выбранной конфигурации». Какие ограничения у версии «Beta»?

    Reply
  5. hogik

    Выдает: “Данный тип обработки не поддерживается!”.

    А какой тип поддерживается?

    Reply
  6. O-Planet

    Ага. Выдает, и причем выборочно. А потом начинает просить переустановку. Ясное дело, с использованием 1С++ В общем, чистил реестр после этого…

    Reply
  7. PaRaDoX

    2 andrey995, NikitaN

    В данной версии требуется наличие платформы 1С 77, но в дальнейшем есть желание сделать приложение автономным и включить необходимые файлы для запуска в установочный пакет.

    Reply
  8. PaRaDoX

    2 Pari

    После установки данной программы, появляется возможноть открывать ert файлы по двойному клику, т.е. в независимости какой либо конфигурации пользователя. Так же есть возможность при правом клике на ert файл выбрать режим «Выбрать конфигурацию», после этого для пользователя откроется стандартный выбор кон-ций 1с, тама выбираем нужную нам кон-фу и данный ert файл открывается в выбранной пользователем кон-фе.

    Reply
  9. PaRaDoX

    2 hogik

    Данное предупреждение возникает если открываемая вами обработка при открытии, сслыается на несуществующие ресурсы конф-ции, например справочники, документы, регистры и.т.п…Данный тип обработок можно успешно открыть в выбранной вами кон-фе, правый клик по файлу «Выбрать конфигурацию».

    Reply
  10. PaRaDoX

    2 O-Planet

    «после этого… чистить реестр» не нужно, стоит всего лишь сделать анинсталл, программа успешно удалит все что создала как на лок. дисках так же и в реестре.

    Reply
  11. Abadonna

    >Не сомневаюсь, что по крутизне твоя прога встанет рядом с OpenConf-ом

    Ну ты и загнул! Кстати, где-то тут на сайте уже есть подобная…

    Reply
  12. PaRaDoX

    2 Abadonna

    1. Приятно правда за ОпенКонф, но парнишка загнул, ты прав…)))

    2. Не видел честно говоря подобную, но всетаки, если что то увидешь в этом роде, скидывай линк…

    Reply
  13. Abadonna
  14. Abadonna

    +(13) Кстати, в http://infostart.ru/projects/1580/ artbear руку приложил, а это не хухры-мухры 😉

    Сразу оговорюсь: я сам не

    Reply
  15. PaRaDoX

    2 Abadonna 13,14

    Да ты прав, тематика та же, но цель написании данной проги не было, изобрести велосипед, а всего лишь набратся опыта, думаю это некому не помешает…

    Reply
  16. Abadonna

    (15) У меня претензий — ноль 😉 Наоборот — одобряю

    Reply
  17. hogik

    (9) (PaRaDoX)

    “если открываемая вами обработка при открытии, сслыается на несуществующие ресурсы конф-ции,”

    Я запускаю обработку, написанную для своей конфигурации, и все ресурсы существуют.

    (PaRaDoX)

    “Так же есть возможность при правом клике на ert файл выбрать режим «Выбрать конфигурацию», после этого для пользователя откроется стандартный выбор кон-ций 1с, тама выбираем нужную нам кон-фу и данный ert файл открывается в выбранной пользователем кон-фе.”

    А просто запустить 1Су, выбрать конфигурацию и запустить ERTшку не короче будет? Чего данная разработка автоматизирует, упрощает, облегчает, улучшает и т.д.? Что надо сделать, что бы действия пользователя соответствовали названию разработки?

    Reply
  18. Abadonna

    2 hogik. Юзай Утилита для открытия файлов в 1С (http://infostart.ru/projects/1580/) и будет тебе полное счастье.

    При необходимости подправь в реестре [HKEY_CURRENT_USERSoftwareOpenIn1C] с полным именем экзюка 1С

    Reply
  19. hogik

    (18) (Abadonna)

    Спасибо за информацию. У меня нет необходимости в таком запуске ERTшек. Меня “смутило” громкое название данной разработки. И полное отсутствие, каких либо описаний-пояснений от автора. Скачал 5 мегабайт (хорошо, что не по модему), развернул в виртуальной машине, потыкал, удалил путем восстановления файла образа виртуальной машины. Потратил пол часа своего времени и мозгов впустую… А можно было бы почитать описание и не напрягаться.

    Reply
  20. Abadonna

    (19)>Скачал 5 мегабайт

    Блин, а я один разряд просмотрел, мне показалось полметра 😉

    5 мег — это жесть

    Reply
  21. O-Planet

    > Я запускаю обработку, написанную для своей конфигурации, и все ресурсы существуют.

    Тоже

    > «после этого… чистить реестр» не нужно, стоит всего лишь сделать анинсталл

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

    В общем, я очень «за» эту разработку, но явно там сидит какой-то невыявленный глюк.

    Reply
  22. artbear

    Тем, кто любит работать из командной строки (например, Фар 🙂 ), рекомендую 🙂 «Утилиту для открытия файлов в 1С (http://infostart.ru/projects/1580/)» и будет вам полное счастье.

    Остальные могут не беспокоиться 🙂

    Reply
  23. PaRaDoX

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

    Опять таки повторяюсь, версия бета, если в ней и наблюдаются какие любо глюки то пожалуйста пишите, для этого я ее и вывесил на сайт… Вместо содействия, я получил колкие реплики по бесмысленноси и нефункциональности проги…

    Reply
  24. Abadonna

    (23) Да не горячись 😉 Это нормально….

    Reply
  25. O-Planet

    Нет негодования никакого. Просто хочется, чтобы в полезной разработке исчез глюк.

    Reply
  26. hogik

    “…хочется, чтобы в полезной разработке исчез глюк” и появилось описание. Например, зачем в дистрибутив разработки включена база данных на 5 мегабайт? 🙁

    Reply
  27. PaRaDoX

    (25)

    Можно поконкретнее о глюке?

    Reply
  28. PaRaDoX

    (26)

    Объем великоват т.к. упакован InstallShield-ом, для удобства установки. После установки дистрибутив весит не более 3 мб: сама прога — 691 кб (ERTStarter.exe), БД для независимого открытия 1.86 мб (db + 1С++ и FormEx).

    Reply
  29. Pari

    (25) Глюк в том, как мне кажется, что если нужный ресурс не находится, запущенная прогой 1С-ка продолжает висеть в процессах и не дает деинсталировать прогу (и удалить «БД для независимого открытия»). Негодования нет, просто есть интерес к программе, но нет желания тестировать «черный ящик».

    Reply
  30. PaRaDoX

    (29)

    Тестил как у себя на машине, так и по офису… После вывода ошибки «Данный тип обработки не поддерживается» нажимаем «OK», завершается процесс ERTStarter.exe и 1cv7X.exe…

    Reply
  31. DEEP_TM

    Вот хто бы рассказал, как это всё запустить. Буду очень благодарен.

    Reply
  32. PaRaDoX

    (31)

    Инсталлируем программу и см. скриншоты…

    Reply
  33. O-Planet

    Про глюк могу сказать, что после 10-15 вываливаний с сообщением «Данный тип обработки не поддерживается» вдруг стало поститься сообщение «Программа требует переустановки». Это — первое. Второе — сообщение «Данный тип обработки не поддерживается» выдается и тогда, когда база для обработки — родная. Возможно, на компах автора что-то настроено не так, как у меня. Но факт остается фактом. Запускаю, например, обработку PTr92_Tr.ert из демо базы Торговли. Вылетает сообщение. И как это не глюк?

    Reply
  34. romul_666

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

    Reply
  35. PaRaDoX

    (33)

    Нет ничего странного, что обработка PTr92_Tr.ert из демо базы ТиС-а, выдает предупреждение «Данный тип обработки не поддерживается». При открытии обработки в режиме «Открыть», т.е. по двойному клику, она, т.е. обработка, открывается в БД из дистрибутива ERT Starter-а, а в этой базе нет нужных ресурсов для открытия данной обработки. БД из дистрибутива ERT Starter-а создана, для осуществления открытия обработок общего назначения (например, конвертер xls->mxl), не заточенных под определенные конфигурации и не пользующиеся специфическими ресурсами. Обработки типа PTr92_Tr.ert нужно открывать режимом «Выбрать конфигурацию» и выбирать ту конфигурацию, под которую заточена обработка.

    Reply
  36. PaRaDoX

    (34)

    см. 35…

    Reply
  37. O-Planet

    (35) Да… Тогда смысл двойного щелчка мышью? Я с таким же успехом открою конфигурацию 1С и запущу нужную обработку. А нельзя ли привязать запускаемую обработку к каталогу ИБ, в котором она лежит, автоматом?

    Reply
  38. hogik

    (37)

    “А нельзя ли привязать запускаемую обработку к каталогу ИБ…”

    Ага, а потом ввести имя пользователя и пароль. 🙂

    Я уже задавал аналогичный вопрос автору в (17) – ответа не получил. 🙁

    Reply
  39. O-Planet

    Хм… И мне он не отвечает. По ходу, этот вопрос для автора с чем-то связан на подсознательном уровне 🙂

    Reply
  40. hogik

    (39)

    Это вопрос?

    Reply
  41. O-Planet

    Догадка 🙂

    Reply
  42. PaRaDoX

    4all

    Не было времени на ответ, рассмотрю предложения O-Planet и hogik… Скоро вывешу обновления с новым режимом открытия «Открыть из каталога ИБ»…

    Reply
  43. hogik

    (42)

    А может быть имеет смысл сделать средства “настройки иконки” на каталог, имя пользователя и пароль. Например, у нас есть пользователи, которым надо дать возможность запускать один – два отчета, и они ничего более знать не хотят…

    Reply
  44. brr

    (43) Скорее нужен ярлычек на рабочий стол, и а нем все указания: какая обработка , какая база, пользователь, пароль. Было бы хорошо. Прям мечта.

    Reply
  45. денис9955

    у меня не получилось установить, он что то иероглифами написал

    Reply
  46. yuyu1

    А защищенные ЕРТшки она открывает?

    Reply

Leave a Comment

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