1C: Библия (конфигурация для поиска по Библии)




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

61 Comments

  1. dummy

    какая ценная приблуда!

    (особенно в программе под названием «1с:предприятие»)

    Reply
  2. dineso

    Я собираюсь написать Борису Нуралиеву, чтобы её включили в Комплект Прикладных Решений.

    Reply
  3. larisab

    И сюда добрались миссионеры… «не хотите поговорить о боге?»…

    Reply
  4. Istur

    (2) советую подождать до 1 апреля)) подарите 1с несколько веселых минут.. хотя вы и так их подарите)))

    А так — нафиг библия в 1с???????? Маловероятно что это кого-то заинтересует.

    Reply
  5. dineso

    (5) Программ с аналогичным функционалом на других языках программирования я не видел.

    Reply
  6. Istur

    Так зачем на других языках. Могу поспорить что библия как электронная книжка есть. И этого вполне достаточно. Кто захочет — библию в инете всегда найдет.

    Reply
  7. dineso

    (7) Ну, попробуй найти в электронной книжке все главы библии, где говорится о ворах. Так, чтобы не было вхождений слов «ворона» и «договор».

    Reply
  8. Istur

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

    Reply
  9. dineso

    (9) Скажу по секрету: работа некоторых людей связана с Библией.

    Reply
  10. Istur

    но работа 1с-ников с библией вообще никак не связана!!!!!

    Reply
  11. dineso

    (11) Ловко ты так за всех программистов высказался, однако. Ладно, не буду разубеждать. Не связана, так не связана.

    Reply
  12. larisab

    Во что сайт превращается? Что дальше? Битва экстрасенсов?

    Споры богословов?

    Или проплюсуем от набожности? Я вообще-то верующая, но не до такой степени… И вообще «…не упоминай имени божьего всуе..»

    Reply
  13. dineso

    (13) Не обманывайте себя: Вы не верующая. Верующий не стал бы сравнивать благородное изучение Библии с экстрасенсорикой. И уж тем более верующий не стал бы писать ересь про «упоминание имени».

    Кстати, конфигурацию эту я сделал по просьбе моего товарища, студента духовной семинарии.

    Reply
  14. Istur

    То что это никто не качает и есть подтверждение!!! Эта фанатическая упорность прям смешна)))

    (13) Если тема не интересна, то ее никто развивать и не будет)) Так что эта расработка просто где-то через сутки канет в пустоту)) Инфостарт живет тем, что интересно народу))

    Reply
  15. dineso

    (15) Вы так пишете, как будто есть что-то позорное в создании новых конфигураций и выкладывании их на Инфостарт.

    Reply
  16. larisab

    (14) «Не обманывайте себя: Вы не верующая»

    Я же говорю — «не хотите поговорить о боге?»!!!!!

    Только зарегился, сходу выложил, очень похоже на иеговов.

    Предлагаю минусовать «разработку» и банить автора.

    Reply
  17. Istur

    ну почему же. Просто то время, которые Вы тратили на создание данной обработки пропало просто так… А если бы делали на delphi или c++ эксешником то это бы кому-нибудь да пригодилось))

    Reply
  18. dineso

    (17) Так уж получилось, я как раз являюсь атеистом. А вот к какой конфессии относится дама, предлагающая банить за упоминание слова Библия, я определить затрудняюсь. Но не к православной точно.

    (18) На мой взгляд, Восьмёрка вполне заслуживает того, чтобы новые приложения разрабатывались именно на ней.

    Reply
  19. Istur

    (19) Вы любите преувеличивать. Она не стремилась ничего запретить, просто высказала свою точку зрения))

    Да, 1с мощная платформа. Но предназначена только для конкретных целей. Ладно, как известно итогом каждой дискуссии должна быть истина, а мы врятли к ней придем(( Так что на этом я ее заканчиваю)) Удачи))

    Reply
  20. larisab

    (19) «А вот к какой конфессии относится дама, предлагающая банить за упоминание слова Библия»

    Однако…

    Банить предлагаю за использование портала в целях пропаганды иеговских трактований Библии. Как известно, православная на старославянском…

    Reply
  21. dineso

    (21) Если мне не изменяет память, ещё император Александр II начал издавать библию именно на русском (а не на церковно-славяноском) языке. Сейчас же используется (насколько я помню) так называемый синодальный перевод. Во всяком случае, православными христианами.

    Впрочем, повторюсь, я атеист. Последнее, что мне хочется делать, это читать «верующим» лекции по библеистике.

    Reply
  22. larisab

    Я не атеист, но и не богослов, и не теолог, а уж тем более не вступаю в разговоры на темы «поговорить о боге»

    Насторожило вот это:

    «Скажу по секрету: работа некоторых людей связана с Библией.»

    и вот это:

    «Ловко ты так за всех программистов высказался»

    Мне приходилось сталкиваться с сектантами и в приведенных цитатах очень похоже… главное затянуть в разговор…

    Упоминание императора тоже из той же кухни…

    На все есть ответ.

    Да еще и платформа старая у тебя, в 8.0 полнотекстового поиска не было, если ты программист, как мог допустить такой ляп?

    Автор, не гневи бога, убери и выложи что-нибудь другое, если ты действительно прибыл сюда не с миссией, тебя не затруднит:)

    Reply
  23. Dimasik2007

    Минусы (– 3):

    Одинец Istur larisab

    Что-то непонятно, за что минусовать.

    > larisab

    «Автор, не гневи бога, убери и выложи что-нибудь другое..»

    Если Вас раздражает обработка, пройдите мимо, что флудить-то?

    Как говорит Арчибальд, любая самописная конфигурация имеет право на существование. Да и многом начинающим программистам будет интересно посмотреть работу с полнотекстовым поиском.

    Reply
  24. dineso

    (24) Спасибо.

    Правда, у меня полнотекстовый поиск самописный, я не знал, что есть стандартная функция такая уже.

    Reply
  25. I_G_O_R

    а что вы хотели? нашего патриарха по телевизору показывают чаще чем тимати, пойду поползаю на коленях перед картинами…

    Reply
  26. WhiteShadow

    dineso, простой вопрос, вы написали обработку для православных людей? Если да, то подталкиваете к нарушению закона Божия, не у всех есть лиц. платформа 1с, так вот у кого ее нет платить денег не смогут, придется ставить пиратку, а это уже воровство…

    Если же не для православных, а для так называемых работников, еще хуже, так как они уводят людей с пути истинного… А вы им содействуете…

    ЗЫ: хотите сделать таковую библию, сделайте на бесплатных библиотеках в exe-шнике и хорошенько убедитесь в источнике информации, часто библия в инете, имеет искожения, для нарушения смысла… Поэтому вопрос данного направления, я все же предложил бы решать или с компетентным батюшкой, или по богословению такового…

    ЗЫ2: ничего личного просто каждый должен работать в своей области…

    Оценки не ставлю, поскольку за саму разработку стоит поставить «+», но за выбор темы и материала «-»

    Reply
  27. Mickl

    А если какой бухгалтер захочет себе поставить?

    Поверьте мне на слово — Бухгалтер с элементами фанатизма — это жесть!

    В своем фанатизме они как бухгалтера максимум на троечку.

    А вообще прикольно. А более прикольно думать — до чего еще народ додумается…..

    Reply
  28. bashta.aleksey

    Конфигурация для полнотекстового поиска? обман !!!!

    Автор — а где он полнотекстовый поиск то?

    Есть только поиск запросом по регистру.

    Reply
  29. bashta.aleksey

    Исправь описание

    Reply
  30. Yashazz

    (25) Вот за такое и минус можно бы поставить.

    Reply
  31. dineso

    (30) объясни разницу, пожалуйста. И на какое правильное словосочетание исправлять.

    Reply
  32. bashta.aleksey

    (32) Разнца в том, что у тебя вполне нормальный пример поиска с помощью запроса с условием вхождения указанной строки.

    Подобный пример в виде обработки «Универсальный поиск объектов» есть в конф. «Управление торговлей».

    А про полнотекстовый поиск легче узнать тут http://v8.1c.ru/overview/fulltext.htm

    С ипользованием полнотекстового поиска очень мало примеров

    Reply
  33. dineso

    (33) Ага, понял теперь идею. Исправил описание. Я тоже думал подключить синонимы, но оказалось, что существующего функционала — вполне достаточно. Под конкретную базу довольно просто заточить.

    Reply
  34. apolon

    Есть у кого-нибудь конфигурация на 8.1, точно расчитывающая календари Майя?

    Срочно нужно до 2012 года.

    Reply
  35. codingone

    Предлагаю дописать CRM модуль общения с Богом — регламентная отправка молитв, напоминания об отпевании сотрудников в указанное время етс.

    П.С. Даешь конфигурацию суммонинг хтонических созданий из морских глубин=)

    Reply
  36. artbear

    Тема прикольная, плюсую.

    ЗЫ народ, чего тут обсуждать-то, ведь тематика программы — Занимательное программирование на 1С 🙂

    Reply
  37. Altair777

    (8) > (7) Ну, попробуй найти в электронной книжке все главы библии, где говорится о ворах. Так, чтобы не было вхождений слов «ворона» и «договор».

    А в инете можно. Гугл, строка поиска

    вор -ворона -договор site:http://biblia.org.ua/

    Кстати, там еще идет поиск по Апокрифам, Паримиям, Чтениям…

    Reply
  38. dineso

    (38) Да, действительно, работает. Нашёл у себя даже один баг сейчас, буду исправлять.

    Reply
  39. dedkov

    Любая работа, имеющая своим основанием желание сделать что-то хорошее, связана с Библией, Которая суть учение о Добре Величайшем. Источник Живого Вдохновения — Бог. Когда я делал обработки, на выполнения которых уходит много времени, то делал субтитры и во время выполнения имел радость читать Богодухновенное Писание.

    Пить можно и из корыта, можно из бокала, можно из бутылки. Это выбор лично каждого человека. Но Вода Живая пребывающая в Жизнь Вечную даеться Богом даром и при желании того, кому надлежит принять ее.

    К Истине приходят желающие к Ней прийти искренне. Идущий идет до конца, т.е. до Цели и не останавливается. Если Цель — Счастье, то промежуточные цели как мишура. Но желающий приблизиться — приближается, только бы не увлекся искушениями и не отпал от стремления.

    Reply
  40. DenisKin

    Зачем накинулись на разработчика? 1с это инструмент, конструктор. У разработчика была задача, он ее реализовал. Ни где не написано, что 1с служит только для учетных задач.

    Reply
  41. v.l.

    (0) многова-то 17 мегабайт тащить… Модули для BibbleQuote «легче», и их много. Например, у меня есть на Старославянском, Греческом, Иврите, Русском, Украинском, современный перевод и перевод «Свидетелей Иеговы». Там же можно подключить и различные энциклопедии и словари, открыть параллельные места и сравнить 2 перевода (в 2 колонки).

    Кстати, буду признателен за возможность отькрыть несколько вкладок, как это сделано в последней версии BibleQuote 6. А еще лучше возможность открыть сразу не 2, а 3 перевода для сравнения (в 3 колонки).

    (5) Я пользуюсь BibleQuote 6, которя написана на FreePascal

    http://www.jesuscrist.ru, на коммуникаторе у меня есть КПК-шная версия Библии со многими модулями и переводами. Удобюно — 100 г в кармане и целая библиотека.

    (11) я — 1С-ник, и моя работа напрямую не связана с Библией, но ей я пользуюсь каждый день. Для поиска, миссионерства и т.д.

    (19) дама относится к православию

    (21) как известно, на оригинале Библия написана частично на иврите, частично на древнегреческом и других языках. Есть у меня и на Старославянском. Православие спрятало Библию на старославянский, Католики на латынь. Еще среди православных ходят байки, что библия непонятна (старославянская? купите на русском/украинском) и что после её прочтения люди сходят с ума.

    Например, мы с сыном (6 лет) сейчас читаем Евангелия и ему всё понятно. Конечно, среди православных и любых других конфессий есть исренне верующие в Бога.

    (23) >Автор, не гневи бога

    Почему Бог с маленькой буквы?

    Сам Иисус говорил «Идите и научите народы», чтобы они шли и рассказывали весть о Мессии, о Христе, о Его смерти за наши грехи и оправданием ко спасению по вере во Христа.

    Reply
  42. v.l.

    (41) подерживаю. Ведь пишут игры на 1С.

    (17) следуя Вашему принципу, нужно забанить все игры на 1С — они мешают работать

    Reply
  43. v.l.

    (0) Автор, выложи, пожалуйста, скриншот обработки поиска, один только текст не раскрывает возможности программы.

    Reply
  44. Greymem

    + За идею, жаль, что только один могу поставить =(

    Reply
  45. dineso

    (42) Несколько вкладок сейчас попытаюсь сделать. А с разными переводами — туго, так как у меня только один текстовый файл был (он в комплекте с дистрибутивом идёт).

    Что касается 17 мегабайт — честно говоря, я не очень понимаю, как так получается. Исходный текстовый файл — 4 мегабайта (несжатый). Кода у меня — совсем чуть-чуть. Откуда берутся эти 17 мегабайт для меня мистика.

    Reply
  46. dineso

    (44) Скриншот прикреплён к описанию. Там чудес особых нет — вводится несколько ключевых слов, задаётся область поиска и близость слов — и всё. Из спецоператоров поиска — решётка и кавычки.

    Reply
  47. v.l.

    (46) возможно, неверно отображает сервер, но лучше сжать.

    Идея на будущее: восьмерка поддерживает работу с HTML, поэтому советую посмотреть в ту сторону. Да и модули к BibleQuote тоже в HTML идут. Например, мне попался один модуль, где слова Христа в Новом Завете выделены цветом. В одщем, поддерживаю, работа громадная и полезная.

    (47) не досмотрел, пардон

    Reply
  48. Кем бы ни был автор (миссионером, атеистом, верующим): он сделал одно маленькое но полезное дело!!! Может не для всех оно было полезно… но никто еще в мире не может сказать что Библия бесполезна! 😉 (если так говорит — значит не читал ее!)

    Не ругайтесь! Может кому-то эта конфа пригодится! )))))

    Имхо, еслиб все бухгалтера читали бы Библию — фанатизма бы в них было по-меньше! И работали бы они по-лучше… ;))))

    Reply
  49. DoctorRoza

    Да что Вы спорите!! Автор сделал интересный продукт, выложил на всеобщее обозрение, а Вы минусы ставите!? Давайте посмотрим как он написал конфигурацию .. вот за это его можно осуждать либо хвалить. Я считаю, за то, что он сам, своей головой написал «Библию», уже стоит поставить «+» .. Конфигурацию скачаю .. посмотрю, как работает!!

    Reply
  50. serezhka87

    +

    Reply
  51. Hazer1

    За идею +

    Reply
  52. st13

    «Скачивая файл, Вы будете благославлены Господом и подтверждаете ответственность за грехи свои» )))))

    Хотелось бы еще лицензионное соглашение для данной конфигурации прочесть, идеально на церковно-славянском 🙂

    p.s.(поиск по *.doc файлу или pdf Библии выглядит куда более практичным. Как по параметру «цена вопроса», так и по параметру «доступность». Благо Adobe Reader есть практически везде, как и Word-like редакторы. В любом случае продвижение 8ки (даже такими методами :)) положительно 🙂 )

    Reply
  53. Lars Ulrich

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

    за это плюс

    Reply
  54. dineso

    (54) Там проблема с поиском сразу по нескольким ключевым словам. Библия большая, поэтому если нет возможности искать два слова, расположенные не подряд, но рядом — поиск превращается в утомительную работу.

    Reply
  55. d.snissarenko

    Аллилуйя

    Reply
  56. Rusik49

    О чем сыр-бор? Не надо — не качайте, а мне интересно читать Библию в 1С — прикольно.

    Reply
  57. v.l.

    (46) HTML тот же текстовый файл, но из тех модулей, что у меня есть в HTML можно достать текст — либо распарсить тэги, либо копипастить из любой программы, открывающей HTML, либо переписать движок для подключения HTML.

    Например, у меня сейчас на работе есть такие переводы (в алфавитном порядке):

    — (LXX) Септуагинта, текст семидесяти толковников;

    — Greek Wescort-Hort;

    — Библия в переводе «нового мира»;

    — Библия. Современный перевод;

    — Греческий НЗ с номерами Стронга и грамматикой;

    — Греческий НЗ «Текст большинства»;

    — Подстрочник Греческий-Русский;

    — Новый Завет. Перевод института перевода Библии в Заокском;

    — Русский синодальный текст (издательство Московской Патриархии);

    — Русский синодальный текст (с номерами Стронга);

    — Современный перевод НЗ на русский язык IBS;

    — Украинская Библия. Перевод Огиенко, 1962 г.

    Дома есть еще на латыни, на иврите (с подключением шрифта), другие книги: словари Даля, Ожегова и т.д., худ. литература в виде модулей.

    Давайте, я Вам вышлю модули, какие Вы хотите, в архивах Новый Завет около 500 килобайт, целиком Библии около 2-2,5 МБ. Их у меня много и вся библиотека на основе программы BibleQuote весит чуть меньше 700 мегабайт, в сжатом виде 120 или 150 МБ.

    Reply
  58. v.l.

    Забыл — еще дома и на КПК Коран есть.

    Reply
  59. dineso

    (60) Спасибо, буду признателен, если вышлете. Вставить в программу не обещаю, но читать буду. dineso@yandex.ru

    Reply
  60. v.l.

    Я выслал, Вы получили?

    Reply
  61. chemezov

    (9) Istur, мне кажется что туева туча бухгалтеров пользуется 1с и кадровиков, может я ошибаюсь :). И они вполне могут юзать эту конфигурацию, если хватит ума прописать путь. На инфостарте много бухгалтеров сидят, я думаю что найдется аудитория поюзать такую конфигурацию.

    Reply

Leave a Comment

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