КЛОНИРОВАНИЕ БУХГАЛТЕРА — ОТ ФАНТАСТИКИ К НАУКЕ




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

54 Comments

  1. director04

    Российско-японской группе учёных удалось найти в ископаемых останках мамонта необходимый генетический материал, который требуется для клонирования доисторического животного.

    Насколько данная методика подходит для клонирования человека?

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

    См. так же «Создание документов поступлений по отгрузке»

    Перейти к публикации

    Reply
  2. Ish_2

    (1) Здесь люди отдыхают , а не зарабатывают. Чем это плохо ?

    Reply
  3. director04

    (1) Критика учтена, поправил. 😀

    Reply
  4. Ish_2

    (4) Ай-яй-яй ! Женя , у тебя с логикой нелады.

    Из фразы «здесь люди отдыхают» , не следует вовсе , что » я отдыхаю за работой».

    Reply
  5. anig99

    (4)(5) логичнее было бы утверждении «Получаешь деньги за отдых»

    Reply
  6. Ish_2

    (4),(6) Вы там посоветуйтесь и попробуйте сформулировать вопрос.

    Reply
  7. Ish_2

    Автор ! не слушай продавца Женю ! Не ходи в мир чистогана .

    Я назову тебя тоже «кросавчег!» , а ты возвертай обработку в бесплатные !

    Всех плюсовавших бесплатную обработку ты выставил идиотами и бесплатными рекламными агентами.

    Возвертай по — честному !

    Reply
  8. Ish_2

    (10) Евгений зарабатывает на ИС , а ИС зарабатывает на Евгении .

    Именно это даёт возможность всем остальным пользователям совершенно бесплатно использовать ИС как соцсеть ( в частности, совершенно свободно ругать Евгения).

    Другое дело , что в своих попытках профессинализировать ИС он и Сергей(Поручик) действуют очень неуклюже, топорно. И отталкивают от себя других пользователей.

    Короче, здесь нужны совсем не программисты.

    Reply
  9. Alraune

    Снова завелись на вечную тему 🙂

    Reply
  10. anig99

    (13) а что ты думаешь о ценах на бензин? О Газпроме? Борщить тоже не надо.

    Reply
  11. director04

    (9)

    Ish_2 пишет:

    Автор ! не слушай продавца Женю ! Не ходи в мир чистогана .

    Я назову тебя тоже «кросавчег!» , а ты возвертай обработку в бесплатные !

    Всех плюсовавших бесплатную обработку ты выставил идиотами и бесплатными рекламными агентами.

    Возвертай по — честному !

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

    Reply
  12. Ish_2

    (38) Ок. Проехали.

    Reply
  13. n949eo

    Не ссорьтесь)

    Reply
  14. director04

    (42) Артур, извините за нескромный вопрос, а вы сколько берете за час?

    Данная обработка, чтоб была отточена до блеска, писалась и тестировалась недели две, то есть часов 80.

    62 руб 50 коп. в час, для программиста 1с — это дорого?

    По поводу «ЗЫ» «….ЗЫ да и на совсем деле как-то не очень честно получилось — народ-то плюсовал за бесплатную разработку :(»

    Когда народ плюсовал за «бесплатность», то он и получал обработку, стоимость кот. 5000 руб. — бесплатно.

    Один «+» = 5000 руб. это дорого?

    В качестве резюме: Кто пользует эту обработку уже давно — купили и новую ее версию (согласно прейскуранта). Выходит, считают данную цену абсолютно справедливой.

    В конечном итоге, цену определяет клиент.

    Reply
  15. DoctorRoza

    И правильно .. всякий труд должен оплачиваться. Этот не исключение!

    Reply
  16. scape

    Во расписали, как пасхальное яйцо.

    Reply
  17. director04

    (45) scape, ну так это так и есть )))). Скачайте — попробуйте. Понравится. Бухи будут рады

    Reply
  18. EarlyBird

    Однозначно плюс за презентацию.

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

    PPS. Хотя… 5000 за такую поделку — конечно дороговато. Я бы ни в коем случае не отдал таких денег, не стоит оно того.

    Не верю я, что автор две недели корпел над этой штукой по 8 часов в день (итого 80 человекочасов).

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

    Вот я понимаю, человек всего за 2000 продаёт цельную компоненту для прямого чтения файлов XLS ! (http://infostart.ru/public/125392/)

    Вот здесь реально, человек продаёт по себестоимости трудозатрат!

    Эта работа стоит своих денег, и за неё ему большой респект

    (Да и то, вряд ли будут раскупать, дороговато для конечных пользователей.)

    Reply
  19. director04

    (47) EarlyBird, во-первых, огромное спасибо за позитивный коментарий! Это всегда приятно автору.

    Но вот по цене и продажам — позвольте с вами не согласиться.

    Да, мои разработки не самые дешевые на этом сайте, но это не мешает им хорошо продаваться. Люди понимают, что 8 строчка рейтинга (из 3479 конкурсантов) — это заслуживает доверия.

    Просто вы смотрите на проблему со стороны разработчика, а клиент — смотрит на нее, всегда, с другой стороны прилавка.

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

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

    Из опыта работы нашей ОЧЧЧень крупной конторы, скажу, что это одна из самых востребованных доработок.


    А вот, скольких бухгалтеров можно заставить просто подойти к «цельной копоненте для прямого чтения файлов ХLS» , которую упоминаете вы? Думаю, что таких бухгалтеров вы найдете единицы. Потому и цена на нее не высока. Прошу правильно понять — это не плевок в адрес разработчика, а просто попытка взглянуть на проблему глазами бухгалтера.

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

    Reply
  20. dyh

    Скачали что-то и зачем-то отсюда и сняли вм в минус… еее

    Reply
  21. director04

    (49) dyh,

    Скачали что-то и зачем-то отсюда и сняли вм в минус… еее

    Можно пояснить фразу поподробнее? Что скачали, зачем скачали, что и за что в минус… 🙂

    Может я смогу чем-то помочь?

    Reply
  22. bulas

    Есть еще на эту тему, бесплатная, обработка — http://infostart.ru/public/100015/. Из Клона в Кланы.

    Reply
  23. director04

    (51) bulas, Да, только она для УТ, а не для БП….. )))

    Reply
  24. bulas

    Да, для УТ поэтому я и подчеркнул — «на эту тему». Но конфигурации 1с — как ЛЕГО.

    Reply
  25. graphbuh

    Согласен с авторам в оценках трудозатрат — такую работу для холдинга сделать — можно и больше двух недель различные нюансы оттачивать. Мне клиенты за такую поддержку платили абон два года. Причем было несколько случаев — сделаешь что нибудь хорошее — хочешь улучшить перед тем как выложить на инфостарт за деньги…

    Глядь — нашлась добрая душа, которая выкладывает примерно то же (или лучше) бесплатно. С моей точки зрения все более или менее профессиональные разработки (от 20 часов работы) должны быть платными. Пусть они конкурируют между собой по цене. Допустим, я писал аналогичных обработок несколько вариаций — они объективно хуже данной разработки. Но я их выставлю за 500 руб. — и , если клиент не гониться за универсальностью и интерфейсом, вполне может купить. Но ведь меня сразу начнут пинать 100 халявщиков или людей с не вполне рыночной психологией. Сидит такой человек на хорошем окладе и деньги ему не нужны в принципе. Это же психология начала 90х, то что страна создавала годами — продать за 100$ или вообще просто так, чтобы потусоваться красиво. Ну надо же взрослеть уже, ребята.

    Reply
  26. CaSH_2004

    (54) Действительно так и происходит, именно поэтому тут нету кучи разработок, у меня так скопилось десяток-другой универсальных обработок при помощи которых можно протестировать и причесать любую типовую базу вдоль и поперек, но выкладывать их смысла не вижу, если выложить платно — заплюют, скажут тут «3 вечера посидеть, причем в основном на форумах», а если бесплатно то нафиг мне время тратить на нормальное описание и приведение в удобоваримый вид если это оценят плюсом? Мне и так хватает их, 90% я делаю все сам или перерабатываю идеи, т.к. хорошие разработчики работу выкладывают редко, а качать всякие «велосипеды» нет смысла

    Reply
  27. Alex Prikol

    Мда, чем у нас страна Москва занимается.

    Ну видать те, кто ворует, те и купят такой, с позволения сказать, продукт.

    Reply
  28. director04

    (56) Alex Prikol, может ознакомите нас со своим обширным топ-списком публикаций?

    Или это был разовый выплеск нереализованных амбиций?

    Reply
  29. Alex Prikol

    (57)

    нет, Валерий, такого рода обработку, безусловно, осилю. а то сразу агрессия — топ, вип, гоп…

    просто яркий пример того, чем у нас народ занимается.

    конечно, спрос рождает предложение, к автору-то вопросов нет. если у тебя этим бухи занимаются — почему не автоматизировать. но посмотрев, чем они занимаются…

    Reply
  30. director04
    просто яркий пример того, чем у нас народ занимается.

    конечно, спрос рождает предложение, к автору-то вопросов нет. если у тебя этим бухи занимаются — почему не автоматизировать. но посмотрев, чем они занимаются…

    Спасибо за пояснение… Иначе, непонятна была причина скепсиса 🙂

    Reply
  31. Den_D

    Мне тоже не понятно возмущение некоторых пользователей.

    Если вы считаете, что это проще написать, чем купить — пишите и не покупайте.

    Я пока читал описание сабо самой представил, что смотрю телевизор — магазин на диване. Улыбнуло.

    Reply
  32. Jonny_wk

    Не осилил

    Reply
  33. sanek_gk

    Непропадающее ощущение просмотра телемагазина купи обработку ….

    Reply
  34. Alex_Japanese_Student

    да как-то рекламы много, и забавной, а описания функционала как-то немного, что настораживает (

    Reply
  35. director04

    (63) Alex_Japanese_Student,

    да как-то рекламы много, и забавной, а описания функционала как-то немного, что настораживает (

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

    Лучше один раз пощупать, чем сто раз произнести слово «Сахар». ))))

    Скачайте демо версию и опробуйте сами.

    ps: основной недостаток — отсутствие описания — оно просто не потребуется вам. Все понятно с первого взгляда.

    Reply
  36. 1C82

    Поставил + за описание.Ну для чего же еще мы работаем, как не для облегчения труда пользователей!

    Reply
  37. dryms

    Автор! Делайте универсальную обработку, а не только для Бух, это поднимет продажи

    Reply
  38. hanio

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

    Reply
  39. cucuruza

    Извините, если что-то не так делаю, но я просто бухгалтер. Скачала демо-обработку. Установила, пытаюсь разобраться в работе. Есть несколько вопросов:

    1. Для работы продавец и покупатель должен быть в одной базе (т.е. в одной базе ведется учет нескольких предприятий)? Соответственно документы отгрузки и поступления тоже?

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

    3. В какой форме Продавец должен передать Покупателю данные для загрузки? Будет ли это экселевский файл или еще какой-то формат?

    Reply
  40. NAKIS

    Как все сложно…

    Reply
  41. dock

    Описание просто порадовало 🙂

    Непропадающее ощущение просмотра телемагазина купи обработку …. 

    Пока таких «описаний» мало, не напрягает.

    Прочитал с удовольствием, хотя обработка мне и не нужна.

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

    ИМХО, правильный подход: больше продаж -> меньше цена.

    Reply
  42. Мать Тереза

    Согласен с авторам в оценках трудозатрат — такую работу для холдинга сделать — можно и больше двух недель различные нюансы оттачивать. Мне клиенты за такую поддержку платили абон два года. Причем было несколько случаев — сделаешь что нибудь хорошее — хочешь улучшить перед тем как выложить на инфостарт за деньги…

    Глядь — нашлась добрая душа, которая выкладывает примерно то же (или лучше) бесплатно. С моей точки зрения все более или менее профессиональные разработки (от 20 часов работы) должны быть платными. Пусть они конкурируют между собой по цене. Допустим, я писал аналогичных обработок несколько вариаций — они объективно хуже данной разработки. Но я их выставлю за 500 руб. — и , если клиент не гониться за универсальностью и интерфейсом, вполне может купить. Но ведь меня сразу начнут пинать 100 халявщиков или людей с не вполне рыночной психологией. Сидит такой человек на хорошем окладе и деньги ему не нужны в принципе. Это же психология начала 90х, то что страна создавала годами — продать за 100$ или вообще просто так, чтобы потусоваться красиво. Ну надо же взрослеть уже, ребята.

    Reply
  43. Фред

    (68) cucuruza, Скажите, Вы получили ответы на свои вопросы? Сейчас некогда заниматься проверкой, хотя и вижу возможность использования этой разработки в своей практике. Спасибо заранее!

    Reply
  44. director04

    (72) Фред, Извините, не заметил, в свое время, поста 68.

    Отвечу с опозданием.

    1.

    Для работы продавец и покупатель должен быть в одной базе (т.е. в одной базе ведется учет нескольких предприятий)? Соответственно документы отгрузки и поступления тоже?

    Да, совершенно верно. Если учет ведется в разных базах, то это уже задача подсистемы «Конвертация данных». Это несколько иная тема, хотя у меня есть и такие наработки.

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

    В этом случае, как правило, заказчик сам определяет критерии идентификации данных. Обычно — это либо код номенклатуры (код по классификатору), либо наименование. В любом случае, это издержки ведения учета в различных базах.

    При новом подходе к конвертации данных (новая БСП), задаются соответствия номенклатур разных баз. И данная информация хранится в специальном регистре сведений.

    3. В какой форме Продавец должен передать Покупателю данные для загрузки? Будет ли это экселевский файл или еще какой-то формат?

    В случае ведения учета в различных информационных базах, я обычно использую прямое Com соединение и получаю данные прямыми запросами. Но, подчеркну еще раз — это отдельная тема. А данная обработка предназначена для работы в одной базе данных.

    Reply
  45. Nebiros777

    Интересно, будем попробовать.

    Reply
  46. Adoms

    Добрый день. Под Бухгалтерию 3,0 не планируете переделку? Обработка замечательная, спасибо!

    Reply
  47. AlexanderKai

    (62) sanek_gk,

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

    Reply
  48. AlexanderKai

    (55) CaSH_2004,

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

    Reply
  49. AlexanderKai

    (48)

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

    Вот, ребята, запомните это. Тем кто хочет зарабатывать сам.

    Вообще меня умиляет постановка вопроса. Это дело автора устанавливать цену. Если программа решает проблемы человека ее купившего, и ее покупают — значит цена адекватная. Мы в конце концов не на базаре, это вы там можете поторговаться. Придя в магазин вы видите цену, оцениваете полезность продукта для вас — и решаете покупать этот товар или нет. Все. Никаких торгов.

    Reply
  50. director04

    (75) Adoms,

    Добрый день. Под Бухгалтерию 3,0 не планируете переделку? Обработка замечательная, спасибо!

    Прошу прощения, заметил вопрос не сразу.

    Да, для своих нужд такая обработка уже имеется. Пользуемся год. Есть желание — обращайтесь, буду выкладывать.

    Reply
  51. yelena-ppm

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

    Reply
  52. director04

    (80) yelena-ppm, теоретически это возможно. Написать такое ни сколько не сложнее. Но, это не представляется логичным. Чаще мы привыкли к тому, что покупателю представляется номер документов поставщика. И было бы не совсем понятно, как покупатель называет номер счета-фактуры поставщику. А что, если данный номер у поставщика ни как не лезет?

    Reply
  53. Adoms

    (79) Буду признателен! Выложите пожалуйста для Бух.3.0 демо-версию. Спасибо

    Reply
  54. director04

    (82) Adoms, Добрый день.

    Демо версии под БП 3.0 я не делал. Хлопот много. Функционал полностью повторяет возможности под БП 2.0.

    За исключением: делаю ее не как внешнюю, а встроенной (это гораздо удобнее для пользователя).

    Будет желание посмотреть, пишите в личку. Я сделаю презентацию на своем компьютере.

    Reply

Leave a Comment

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