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




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

34 Comments

  1. fishca
    Проект завершен был успешно с незначительным превышением сроков и бюджета!

    Ура! Поздравляю от всей души! Спасибо, статья нужная!

    Reply
  2. poyson

    Очень полезный экспириенс. Во многом пройденый. Спасибо 🙂

    Reply
  3. asved.ru

    Пооффтоплю малость:

    по переходу с Kerio на MSExchange

    Скажите, каковы причины сего странного деяния?

    Reply
  4. pt_olga

    (3) asved.ru, холивар небольшой предлагаете устроить? 🙂 но отвечу

    ИМХО. Kerio, как следующий шаг по развитию почтовых систем после TheBat, однозначно крут и хорошо подходит для небольших компаний до 20-30 человек.

    У нас была цель построить серьезную ИТ систему для более крупной компании и под широкий спектр задач.

    в пользу Exchange

    — полная интеграция Exchange с AD

    — масштабируемость

    — дальнейшее развитие — внедрение MS Sharepoint, корпоративный портал… со всеми вытекающими.

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

    Reply
  5. asved.ru
    — полная интеграция Exchange с AD

    Есть. И прозрачная, и ручная.

    — масштабируемость

    Есть. Distributed domain называется.

    дальнейшее развитие — внедрение MS Sharepoint, корпоративный портал

    Вы так говорите, как будто аутлук работает с Kerio только по POP3.

    небольших компаний до 20-30 человек

    Несколько тысяч не хотите? http://www.kerio.ru/ru/connect/case-studies

    были проблемы по количеству IMAP и объему почты под каждого юзверя

    Сервер стоял на первом пне с винтом на восемь гиг? Тогда понятно.

    отдельные внешние и внутренние почтовые ящики сотрудников

    Если у админа руки из жопы, Kerio в этом не виноваты.

    Reply
  6. Strady

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

    Reply
  7. pt_olga

    (5) asved.ru, давайте договоримся, что затроннутый вопрос сродни религиозному и тут каждый выбирает то, что ему ближе.

    Нам Exchange стал, как родной. Единая платформа Microsoft под разные приложения и задачи(за небольшим исключением), текущие и будущие, с прозрачной интеграцией. Плюс наличие в команде сильного многажды сертифицированного специалиста по продуктам MS. Плюс пожелания топ-менеджмента отказаться от Kerio.

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

    Reply
  8. pt_olga

    (6) Strady, в той компании, о которой статья, запускали комплексную автоматизацию (1С:КА).

    Франч местный белорусский «Центр внедрений» и поныне здравствует, его директору хватало ума давать мой телефон своим потенциальным покупателям… и звонили же! и спрашивали «ну, как Вам работалось с этой компанией?» )))

    Reply
  9. echo77

    (0)У меня два вопроса:

    1. Все эти чудесные картинки(диаграммы), что здесь представлены, нарисованы в word’е или чем? Можно ссылочку на файлы получить — интересно, какими средствами так же хорошо можно нарисовать

    2. Вам за проект все таки заплатили? Судя по рассказу, где собственник жмется на специалистов(1 админ, 1 техник на парк с ~200 машинами) и на оборудование(всяческий зоопарк из рабочих станций и серверов)?

    Reply
  10. Pavl0

    (8)

    Центр внедрений знаком.

    Директор очень гордился своей конфигурацией.

    Внедрение прямо из коробки.

    Тоже рассматривал ее как одну из возможных для продажи.

    Если можно, кратко, какие неприятности с ней были?

    Reply
  11. pt_olga

    (9) echo77,

    1. MS PowerPoint — табличка и схема этапов (красно-зеленая); MS Visio — схемы документооборота; Bizagi Process Modeler (www.bizagi.com) — по справочникам схема. Вообще процессы мне нравится рисовать именно в Bizagi, быстро и удобно. Если хочется украшательств или более сложных схем, то в Visio.

    2. Заплатили. В этом проекте я выступала в роли директора ИТ. Проект сдали, мотивацию проектной команде выплатили.

    3. Еще один админ сидел на филиале, участия в нашем «веселье» практически не принимал, но закрывал вопросы по суппорту удаленных рабочих мест. Больше сотрудников по обслуживанию парка и не нужно. Виртуальные сервера и терминальные клиенты обсулуживать на порядок проще.

    Reply
  12. pt_olga

    (10) Pavl0, возможно сейчас уже спустя н-ное время что-то и изменилось. Эту конфигурацию они слепили из нескольких, одно время в конфе было 2 справочника клиентов, 2 справочника номенклатуры, т.е. в лоб объединили наработки нескольких поставщиков, потом немного подчистили и нам принесли как-будто коробочное готовое решение, хотя на самом деле внутри половина кода не работала из-за сборной солянки. И фактически за счет клиентов, нас и таких, как мы, конфигурация приводилась в рабочее состояние.

    Маркетолог Павел (директор ЦВ) хороший, не отнимешь, втюхивать и пускать пыль в глаза умеет.

    Помимо некачественной, скажем так, стартовой конфигурации, мало внимания уделялось в ЦВ правилам разработки по тем же рекомендациям 1С, каждый разработчик писал свой блок не заморачиваясь, есть ли что-то похожее уже в конфигурации. Выходило, как у Райкина «к пугвицам притензии есть?». Т.е. нам пришлось потратить кучу времени потом, чтобы унифицировать процедуры и функции общего назначения. Сами доработки делались зачастую не качественно, приходилось либо долго воевать, чтобы передедали, причем снова за наши деньги, либо переделывать самим… этакий финансовый пылесос…

    нужно останавливаться, а то я в комментариях еще одну статью выкачу )))

    Reply
  13. gendal

    А почему этот завод сразу к местному франчу не обратился?

    Reply
  14. pt_olga

    (13) gendal, в смысле?

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

    предполагалось, что львиную долю работ франч будет выполнять своими силами, а мы, внутренние специалисты, контролируем, снимаем требования пользователей, выставляем ТЗ на франча…

    Reply
  15. vano-ekt

    7.7 на 8.2?) тогда назовите «как перейти со старой системы на менее старую»

    с 7 апреля даже экзамен по платформе на 8.3

    Reply
  16. pt_olga

    (15) vano-ekt, этой истории уже более 3-х лет (в статье написано)

    и суть её не в том, на какую конфигурацию и какого релиза платформы переходили, важно как переходили 🙂

    кстати комплексную покупали еще под 8.1, сами переводили на 8.2

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

    Reply
  17. gendal

    (14)

    спасибо, просто сразу не сообразил

    Reply
  18. FractonKireyev

    Спасибо за статью! Очень полезная информация. У меня сейчас похожий проект — надо монополиста регионального масштаба разбросанного по нескольким территориям перевести с бухгалтерского учёта (правда, под 8-кой) на УПП. Я уже вижу, что можно взять из данной статьи!!!

    Reply
  19. CheBurator

    Непонятно, чем новая программа отличалась от старой принципиально? (кроме платформы?) были проанализированы и переработаны/причесаны бизнесс-процессы? был проведен кардинальный рефакторинг кода новой системы с мегазаточкой под нужды клиента? в чем принципиальные изменения? — непонятно… статья вроде интересная, а пользы от нее — мизер.

    .

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

    .

    у меня после прочтения статьи сложилось впечатление, что ничего особого по проекту сделано не было. были ликвидированы узкие места путем переноса на новую платформу. насколько быстрее стала работать новая — хз… насколько повысилось удовлетоврение пользователей — хз.. нипанятна!

    Reply
  20. CheBurator

    Перечитал еще раз статью. осталось непонятно. что в итоге-то получилось. Аналог старой системы на новой конфигурации..? Проект оказался успешным. В чем успешность?

    .

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

    .

    хорошо что при этом проект закончился успешно.

    .

    однако фраза «Производство реализовано было укрупненно – разносили пропорционально сырье и затраты на готовую продукцию не по SKU, а на тип/группу продукции, До нормальной полной автоматизации производства при мне в этой компании так и не дошли, были только перспективные планы, но, насколько знаю, и по сей день остались исключительно в виде перспективных планов.»

    — наводит на глубокие размышления…

    .

    интересно, чем сейчас живет этот клиент.. 😉

    Reply
  21. baa50

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

    Reply
  22. MBM89

    (21) baa50, плюсую)))

    Reply
  23. pt_olga

    (19) CheBurator, изменилось и многое, возможно в статье нужно было больше акцентировать на этом внимание

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

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

    В старой системе партионный учет велся путем дублирования элементов номенклатуры со всеми вытекающими, мы поставили нормальный партионный учет,

    ценообразование сделало огромный шаг вперед, т.к. раньше скидки были примитивными — «на всё сразу», а все скидки по акциям вводились операторами вручную(!) в саму накладную и это при документообороте 1000 отгрузок в день (кстати, через полгода работы в новой программе их стало около 3000, если не ошибаюсь), соответственно увеличилась и прибыль, сейчас уже в цифрах не скажу на сколько,

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

    в новой системе наконец-таки появился нормальный управленческий учет, отдельный от бухгалтерского… уф)))

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

    что не говорите, но 1С:7.7 себя изжила, для мелких компаний, только под бух.учет, только в путь, но не более. имхо

    Reply
  24. pt_olga

    (21) baa50, ошибаетесь,

    хотя имеете полное права думать, что угодно 🙂

    знаете, я видела много компаний аки-болото, правда как правило это были госы

    когда все дружно делают вид, что работают, но по большому счету всем все пофиг,

    тут компания была на 100% с частным капиталом и если бы не алкогольная продукция и гос.меры по урезанию импортного ассортимента, плюс удваивание ценника при пересечении границы государства, то компания давно бы вылетела в трубу со старыми кадрами

    а про безопасность старой системы со стороны системного администрирования лучше промолчу)

    Reply
  25. sanek_gk

    (21)baa50,

    Прочитав статью возникло несколько вопросов. Почему не провели нагрузочное тестирование по документообороту покупаемой системы ? Как вообще можно переходить на что то «якобы» сделанное для вас и наступать на те же проблемы от которых пытаетесь уйти?

    В целом прихожу к выводу что основная проблема неудачных или затянутых внедрений в самих внедренцах. Очень плохо когда проектом руководит человек который сам не представляет что внедряет и: как самому разработать данную систему, в чем её преимущество и т.д. Без такого понимания не приходят решения по обходу узких мест и «критические проблемы» всплывают уже во время внедрения или после и требуют оперативной доработки «уже вчера». Работа с франчем как всегда порадовала. Легко валить свои промахи на кого то другого. На будущее хочется сказать что прежде чем запускать что то на «Тыще пользователей» — отладьте хотя бы на 10. Тогда и захлебываться при переходе никто не будет. Как в мультике лучше пол года(или более) готовиться а потом за три дня долететь. Чем переходить на явный тормоз и оперативно дорабатывать кривой велосипед.

    Reply
  26. pt_olga

    (25) sanek_gk, быстродействие не было основной проблемой этого проекта и было решено достаточно быстро переходом на управляемые блокировки, оптимизацией кода и исправлением, например, классического косяка получения цен и остатков в цикле построчно по ТЧ в документах при записи и аналогичный пересчет при проведении.

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

    Согласна, что в проблемах были «виноваты» обе стороны, не только франч, но и мы сами, с этим не поспоришь. 🙂

    Reply
  27. pro-rok

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

    Если не секрет какой бюджет был на внедрение?

    Reply
  28. insurgut

    Неужели предприятие настолько специфичное, что типовые конфигурации ей никак не подходили? Был опыт перехода с Торговли + Склад 7.7 (так же вначале успешно часть «узких» мест оптимизировал под SQL, потом понял, что это сродни борьбе с ветряными мельницами, было принято решение о переходе на 8.2) на Управление торговлей 10.3. После переноса остатков и справочников — успешно запустились, «допилил» интерфейс под заказчика, функционала типовой — выше крыши. Производительность само собой в разы выше.

    Reply
  29. pt_olga

    (27) pro-rok, честно, не вспомню… 3 года прошло 🙁 тем более у нас кризис в стране нагрянул аккурат во второй половине проекта и курсы доллара и евро прыгнули в три раза, если пол-палец-потолок, то что-то около 20-25 тыс $ на лицензии и доработки, без учета стоимости оборудования

    Reply
  30. pt_olga

    (28) insurgut, из особенностей: локализация под законодательство Беларуси, производство и реализация алкогольной продукции

    основные акценты заказчика на упр.учет и движок торговли

    Reply
  31. aimerlive

    интересная статья, и не менее интересные комментарии.На нашем предприятии вот все никак не решаться на подобного рода переход так как еще присутствуют внешние программы сообщающиеся с 1с.

    Reply
  32. rasswet

    отличное оформление, приятно читать, респект!

    Reply
  33. OBEH

    Так и не понял за какой срок удалось сделать аналог на другой платформе?

    И бюджет, все-же, не совсем понятен. «что-то около 20-25 тыс $ на лицензии и доработки, без учета стоимости оборудования» — это без учета зарплаты сотрудников предприятия?

    И еще.

    Соглашусь с высказыванием, что переход с Kerio на MSExchange — более чем странное деяние.

    Руки из задницы растут. Только этим можно объяснить.

    Reply
  34. pt_olga

    (33) OBEH, по сути мы не делали аналог старой системы, а ставили полноценный управленческий учет, которого не было в старой

    Reply

Leave a Comment

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