Как убить 1С




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

66 Comments

  1. anbxp

    И не только каспер такой ерундой занимается:) Вывод — настраивать надо не только 1С:)

    Reply
  2. WiseSnake

    > И не только каспер такой ерундой занимается

    Ну да это как пример.

    Суть не в том что настраивать. Меня например устраивала скорость работы с такими настройками каспера и я именно такие бы хотел, НО!!.

    1с не работает с такими настройками и самое плохое, что так погано вылетает.

    Reply
  3. anbxp

    (2) Ну, все же просто. Или исключение на каталог, а еще лучше исключение по маске

    Reply
  4. WiseSnake

    (3)Ну, не все так просто, это временный каталог, именно там создается всякая лабуда, которую стоило бы проверять. Маска (.tmp) у всех файлов

    Reply
  5. WiseSnake

    (3) +4 И не прошу совета как избавиться от этого… Конечно же я знаю как это сделать.

    Reply
  6. Dimasik2007

    (5) Вот и славненько 🙂 Сам, когда столкнулся с такой проблемой, долго репу чесал, пока на каспера не обратил внимание…

    Reply
  7. anbxp

    Странно. Создаются 2 файла по килобайту и один 7 килобайт. Неужели каспер так долго их проверяет? Самому качать триалку и ставить лень:)

    Reply
  8. CheBurator

    для 7.7:

    1. http://infostart.ru/blogs/1131/

    2. ТЗ.Заполнить(«Количество»,,,0);

    Reply
  9. larisab

    Прикол: Установила вот это:

    1С:Предприятие — Работа с файлами

    Copyright © ЗАО «1С», 1996-2008. Все права защищены.

    Распространяется свободно. Программа предназначена для просмотра

    файлов 1С:Предприятия 8.0, 8.1.

    Теперь все базы и в 8.1 и в 8.2 — открываются без ключа;))

    Устанавливала в папку на рабочем столе.

    Reply
  10. fishca

    (9) а добавить новую базу дает?

    Reply
  11. larisab

    аха

    Reply
  12. fishca

    😀

    Reply
  13. CheBurator

    (9) срочно попроси саппорта потереть это творе сообщение!!!! буду дома проверять… 😉 сомневаюсь я что-то…

    Reply
  14. WiseSnake

    (9) А почему тут написали непонятно но в тему что пипец… Я 2 минуты назад скачал именно «1С:Предприятие — Работа с файлами»

    Reply
  15. larisab

    (14) Ну не знаю как не в тему, но…

    С ног сбилась, не могу найти причину такого поведения 1с 8.1, чот в реестре прописала видимо. Как проверите отпишите да-нет, я тоже сомневаюсь, в Работе с файлами ли дело.

    Reply
  16. larisab

    была версия, что проблема в этом: http://ru.wikipedia.org/wiki/Гибернация_(информатика)

    Убрала, перезагрузила, выключила -включила, все так же

    Reply
  17. WiseSnake

    (15) А как до этого 1с ка открывалась? Только с ключом?

    Reply
  18. larisab

    (17) А то!

    Reply
  19. Rusk51

    (17)Змей зайди в аську 254232902 поболтать нужно

    Reply
  20. larisab

    (17) У тебя как?

    Reply
  21. Rusk51

    Кстати ,сообщения в личку ,как я понял ,уже не информирутся

    Reply
  22. anbxp

    Ага. Получается, тема полностью звучит «Как убить ЗАО «1С» ее же оружием»?:)

    Reply
  23. larisab

    (22) Ну если подтвердится, даже если не ее оружием, то гибернацией висты:)))

    Reply
  24. Tatitutu

    )))

    на диске C: создать пустую папку Program

    полнуй путь C:Program (раньше не запускалась 1С)

    в каталоге базы — папку SYSLOG зделать только для чтения ))))

    (у меня программно делало когда-то) долго будешь искать если не знаешь

    Reply
  25. WiseSnake

    (20) Тссс….

    Reply
  26. WiseSnake

    (24) Вот нифига если честно не понял…

    Reply
  27. Tatitutu

    (26) открой ручками каталог базы (для 7.7) там есть папка SYSLOG

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

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

    а если это делать программно )))

    Reply
  28. WiseSnake

    (27) Аааа «ясный-красный», с одной стороны это косяк того кто устанавливал, но то что 1Ска не умеет выдать нормальную ошибку это «вери бед», согласен хрен поймешь чего она тупит…))))

    Reply
  29. Tatitutu

    (28) «с одной стороны это косяк того кто устанавливал»

    это «шутка» того кто знает.

    У меня пример был — внешний отчет создавал макрос и убивал себя

    раз в месяц при запуске ЕXCEL тот читатал реестр и выборочно таким образом убивал несколько баз — вызывали «спеца» тот за 2 часа !!! востанавливал рабоспособность….

    Reply
  30. WiseSnake

    (29) Аяяяяйй !!! Аяяяяй!!! Не делайте так больше (это я тому кто такие макросы пишет), я к таким «программистам» очень плохо отношусь. Сам находил в коде такие бяки, тип условия при загрузке. Это не наш метод…

    Reply
  31. Tatitutu

    (30) правильно по рукам и ногам. сам пока нашел причину….вспотел. но кто предупреджден — тот вооружен. для этого и делимся знаниями

    Reply
  32. larisab

    (27) Первое, что делается при любых жалобах по телефону — 1с не открывается — снос папки SYSLOG, снос cdx файлов, если не помогает, тогда уж кто-то едет (опыт работы во франче):)))

    > читатал реестр и выборочно таким образом убивал несколько баз.

    ссылки на базы, надеюсь;))

    Reply
  33. Tatitutu

    (32) опыт все с опытом…. и смотря где и кто , а еще бывает и зачем

    «снос папки SYSLOG» — может сначала журнал регистрации сохранить (так чтобы потом «посмеятся»)

    — да нет, находил в реестре ссылки и уже по ним…»делал плохое»

    Reply
  34. larisab

    (33) Журнал регистрации — это когда уже на месте, а по телефону — так, особенно если в анамнезе выключение света было:)))

    — а как же потом люди базы восстанавливали, бекапы то хоть были? Или ты клиентов на инфаркт микарда (вот такой рубец) обрекал?

    Reply
  35. seermak

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

    Reply
  36. larisab

    (35) ну если есть NEW_STRU, то не страшно.

    Reply
  37. Tatitutu

    (34) я помог «найти причину умирания» баз.

    Базы были не тронутыми, меняется только признак у папки записьчтение.

    (35) Это немного не по теме и грубо….

    видел «красивее» 1cv7.md переименовывался в 1cv7.md

    разницы никакой на вид

    (ан не скажите если вместо С английской написать С русскую )

    все наместе и размеры совпадают — вот только маленький ньюас.

    Кто в тем тот понял меня )))

    Reply
  38. Tatitutu

    (36) да и (37) про NEW_STRU тоже незабывал… внимательный был

    Reply
  39. IP43

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

    Reply
  40. WiseSnake

    (39) Возьмем Вас на заметочку….

    Reply
  41. IP43

    (40) Возмите возмите. 🙂 а что остается делать? Или что другое подскажете? Только один случай: С ноября одна контора должна порядка 20 т.р. недавно звонят, извиняются, обещают начать закрывать долг, просят решить проблемы с программой, слезно умоляют, приехал, все что просили сделал, твердо уверили, что как минимум половину долга завтра же закроют, в результате перечислили 2 т.р. как коворится и смех и грех… На вопросы по телефону отвечают, что типа это недоразумение, что завтра точно все закроют, и снова динамо…

    Хотя наверно данное обсуждение достойно отдельной ветри в форуме 🙂

    Reply
  42. Tatitutu

    (39) что бы УМЕТЬ ЗАЩИЩАТЬ ПРОГРАММЫ- ты ДОЛЖЕН ЗНАТЬ И УМЕТЬ ИХ ВЗЛАМЫВАТЬ — а иначе никак.

    помнишь ВЗЛОМАЛ САМ — покажи ДРУГОМУ

    Reply
  43. Tatitutu

    (41) Да уж лучше заведи эту тему (думаю она актуальна)

    «Что делать — если не платят тебе за твою работу» и народ тебя поддержит.

    Reply
  44. IP43

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

    Reply
  45. WiseSnake

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

    А опускаться до уровня мошенников, ИМХО, не стоит это того.

    Reply
  46. Tatitutu

    Так давайте не уходить от темы:

    Вопрос Как убить 1С:

    — отключить электропитание

    — выключить компьютер

    — Программы- Пуск -Удаление программ- Удалить 1С

    — форматировать жесткий диск

    — позвонить по телефоны 737-92-57 и сказать все что думаешь о них

    — запрет на исполнение 1cv7*.ехе

    это не предлагать !!! Собираем фичи и баги.

    Reply
  47. IP43

    (45) согласен, так и поступаем, только едем, с приложением к договору о повышении цен, и актом на флэшке, что сразу распечатать и подписать 🙂

    (46) убийство 1С в одной фирме произошло со сменой главбуха, она просто категорически отказаласть на ней работать и поставила себе … блин забыл уже вроде Парус. 🙂

    Недавно поставил 2009 касперяна 8-ка стала вылетать при открытии Синтакс-помоцник, а на 7-ом вроде не вылетала. Хотя надо протестить.

    А еще вызывают меня как то проконсультировать по Бухгалтерии, и заодно вопросик на засыпку, типа мы вот скопировали со старой работы базу, только она не запускается. Оказалось там на всем каталоге базы стояло только для чтения. И как догадался это посмотреть не представляю и сдх грохал, и суслог 🙂

    Reply
  48. larisab

    (48) Когда целиком папку на CD-ROM копируют, потом оттуда — на диск, она становится — для чтения. Тоже сталкивалась с этим.

    Reply
  49. WiseSnake

    (47) > Оказалось там на всем каталоге базы стояло только для чтения

    Скорее всего на болванку писали….

    > Недавно поставил 2009 касперяна 8-ка стала вылетать при открытии Синтакс-помоцник, а на 7-ом вроде не вылетала. Хотя надо протестить.

    Как раз с этого бага я и начал 🙂 Читаем тему… а не только посты к ней 😉

    Reply
  50. IP43

    (49) А я и прочитал, и поделился тем же «горем» 🙂

    Reply
  51. larisab

    Так все-таки, про 8 и висту. Все работает без ключей.

    Мой вывод: дело в висте — во время включения гибернации, стоял ключ и соарон25 в активном состоянии (вынужденно — нет LPT-порта), виста, видимо, где-то в реестре эти ключи прописала. После я убрала гибернизацию, 8-ку переустановила, снесла HASP — ключ требует, опять установила — работает, выходила из висты аварийно, чтобы она самовосстанавилась из аварийного диска — и все без толку — 1с запускаются без ключей и соарона. платформа 8 — 8.1.13.41, 77 — 25релиз. На висте отключен UAC, стоит NOD32, ради него отключены сервисы MSAffe, но давно. Последние обновления на HP установлены (нотка HP, виста бизнес SP1). Обновления висты последние.

    Reply
  52. Altair777

    (47)-(50)

    У меня стал вылетать СП, когда нажимаю Ctrl+F1 на ключевом слове.

    Т.е. он все равно открывается, но выскакивают сообщения типа — «Нарушена структура….».

    Мне кажется, что это появилось после укстановки Norton 360.

    XP SP3, 1Сv7.7

    Reply
  53. anbxp

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

    Reply
  54. larisab

    (53) саорон25 2004 года — на восьмеру никогда не влиял, это раз.

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

    Reply
  55. WiseSnake

    (54) Ненавижу висту… (51) Может в закрытый форум перебраться хотя бы?

    Reply
  56. Altair777

    (55) Для разработчиков? Можно.

    Reply
  57. WiseSnake

    (56) Наверно можно, надо у Доржи уточнить 🙂

    Reply
  58. IP43

    2009 Касперян, не только может убить 1С:8, но и может не довести до убийства 🙂

    Он просто не дает ставить обновление коныигурации. Запускаю сетап, а мне в ответ «Файл комплекта установки 1cv8.efd поврежден или не предназначен для этой программы установки». Отключил касперяна все установилось. Попробовал с включенным, то запускает, то снова данное сообщение.

    Reply
  59. WiseSnake

    (58) Ты наверно хотел сказать что Каспер может довести до САМОубийства 😉

    Reply
  60. IP43

    Это скорее на аборт похоже, на ранних сроках беременности 🙂

    Reply
  61. daniahaki

    Блиин… целый день убил на установку 1с Бух, причем 1с предприятие установилось хорошо. Сейчас отключил Каспера и все путем!

    P.S. Тупил)))

    Reply
  62. bns

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

    Reply
  63. WiseSnake

    Всем, всем всем…. Новое убийство 1С 😀

    Reply
  64. nsm

    Можно открыть вручную каталог базы (для 7.7) там есть папка SYSLOG

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

    И попробовать зайти в конфигурацию.

    Reply
  65. WiseSnake

    (64) Это в статье уже давно написано (от Tatitutu)

    Reply
  66. Wert220482

    Инструция по убийству 1 С 7.7. с помощью *.mxl:

    Для получения данного «желаемого» результата выполняем следующие действия: на файле в формате *.mxl кликаем правой кнопкой мыши и выбираем «открыть с помощью…», далее «Обзор», находим 1cv7s.exe (как правило находится в C:Program Files1Cv77BIN) и … воуля — Программа 1 С 7.7. успешно удалена !

    Так что лучше сразу сис-админам пальцы в дверь что-бы все-таки устанавливали EXCEL и давали возможность с ним работать, а также научить его (имею ввиду EXCEL) открывать *.mxl, дабы пользователям не приходили в голову подобные бредовые идеи.

    Reply

Leave a Comment

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