Как убить 1С




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *