Правила работы программиста 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='\

40 Comments

  1. support

    +1

    Reply
  2. vasilykushnir

    +1 Однозначно

    Reply
  3. Timesoft

    +1

    Reply
  4. mdzen

    +1 Ай молодца!!!

    Reply
  5. snarkelun

    Смешно. Хотя я, не умея программировать, задушил бы этого программера.

    Слава богу, что работая главбухом не приходится звать программиста. Ха-Ха.

    Reply
  6. snarkelun

    +1

    Reply
  7. vovan519

    А я бы немного изменил название. Ибо к программисту 1С можно отнести пункты 4-7, ну и 23 🙂

    Reply
  8. azernot

    ADD: спешл для 1С-программистов. Если у пользователя рально долго формируются отчёты, при этом, видно что сам запрос проходит очень быстро, а тормоза происходят при выводе печатной формы, НИКОГДА НЕ ЧИСТИТЕ КАТАЛОГ ПОЛЬЗОВАТЕЛЯ! Грешите на сеть, на сисадмина, на Касперского, ну и конечно на самих бухгалтеров! 1С — безгрешна по дефолту.

    Reply
  9. vovan519

    Вот это другое дело. Хоть есть ссылки на 1С.

    Хотя ничего не понятно.

    Reply
  10. levnev

    Улыбнуло…

    Reply
  11. большинство пунктов за уши притянуто….

    особенно посмеялся над

    » Неважно, что у вас безлимитный тариф, он же будет на бух. форумах висеть, всякие там законы читать, консультации… Весь трафик забьют»

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

    Reply
  12. azernot

    Недавно читал ребёнку «Приключения Незнайки» Н.Носова. Так вот, был там момент, когда Незнайка учился рисовать, нарисовал портреты всех своих друзей и развешал в доме. Когда друзья видели портреты, они смеялись над другими, пока не видели собственного. Тогда они сразу обижались, и просили свой портрет снять…

    ToR, Я согласен, многое притянуто за уши. Предлагаю рассматривать статью, как «адекватный» ответ на первоначальную (про бухгалтеров). По крайней, мере тогда видны перегибы и там и здесь.

    Reply
  13. v.l.

    Сильно натянуто. Даже беря во внимание «Портреты». А насчёт игрушек — наша бух категорически против не только игрушек, музыки, но и…. против всех тех введений и изменений интерфейса, которые САМА предложила. Маразм. Шеф ей доказывает, что это она хотела, я и сделал. А она: «Я не хочу неового! Я хочу по-старому». Маразм?

    Reply
  14. azernot

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

    Всё, что выше написано — глубокое, субъективное ИМХО.

    Reply
  15. jdo

    Я сам программер с 16-летним стажем, но полностью поддерживаю автора. Компьютеры и программы созданы для упрощения работы бухгалтера (он тоже человек), это щит Родины (предприятия, которое нам платит деньги) от самой Родины (в виде ФНС). И программы должны быть удобные как тапочки, а не недоделанная «халтура». Правда всё это стоит огромных усилий и квалификации, чего не всегда хватает, да и не ценится руководством (в фин. плане). Так что пока им приходится работать с тем, что есть и кто есть. Не может же «программёр» получать больше буха. Да хороший программер может и должет получать достойную з/п за достойный результат. Ставьте защиту в инете и пускайте только на рабочие сайты: бух.форумы, законодательство и не будет проблем.

    Reply
  16. XPU-MY

    Просто супер, живот порвал. У меня всё так и происходит… 🙂

    Reply
  17. das

    Супер!

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

    Однозначно +1

    Reply
  18. v.l.

    для Azernot

    Нет. Всё делалоcm c её консультациями, _особенно_ интерфейс. Она «были не в духе». А конфликт, действительно, есть — на почве она «всю жизнь проработала в тороговле» а я нет. Ну и я молчу, а значит меня можно «клевать». Шеф это видит, но не хочет ни с кем спорить. Мне сказал «не обращай внимания».

    Reply
  19. azernot

    Vladal, ну что я могу сказать? Тут скорее конфликт человека с человеком. Ну такая вот она.. И если бы она работала, не дай бог конечно, программистом, я не думаю, что она была бы верхом совершенства… Люди бывают разные. Может быть следует попробовать «консультациям» в письменном виде? Обычно помогает.

    А вообще, существует старая добрая мудрость, когда учитель ставит двойку ученику, он ставит двойку и себе в какой-то мере — плохо объяснил, не заинтересовал и т.п. Я не провожу абсолютных параллелей, но я всегда рассматриваю негативную реакцию пользователей через эту призму (во всяком случае пытаюсь).. Не всегда, конечно, но помогает!

    Reply
  20. vlad_klg

    прикольно)))

    +1

    Reply
  21. pectopatop

    Поржал, от души

    Reply
  22. ptv

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

    Reply
  23. azza

    ptv

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

    Reply
  24. maljaev

    Франчайзевик или фрилансер с около-десятилетним стажем, обслужившим десятки/сотни разноплановых контор с разной спецификой бухучета знает о бухгалтерии гораздо больше среднестатистического бухгалтера, а иногда и больше некоторых главбухов. И это не мешает быть ему хорошим/отличным программистом. Более того, я считаю хорошим программистом 1С тех людей, которые не только хорошо умеют писать код, но и хорошо знают предметные области решаемых задач.

    Reply
  25. azernot

    (24) Александр! Разделяю твою точку зрения. Однако, в статье речь отнюдь не про тех, кого ты считаешь хорошим программистом. Есть бухгалтера, которые шарят в программировании ничуть не хуже среднестатистического 1С-ника.. (я сам, например). Я вот считаю, что могу судить об уровне бухгалтеров. Могу судить и об уровне 1С-ников. Вцелом уровень бухгалтеров ниже, но и бухгалтеров больше. «Хороший программист» знаком с моими правилами. Во всяком случае с большинством 😉

    Reply
  26. maljaev

    (25) Тогда эта статья скорее про системных администраторов в отсутствие 1С-программистов.

    Кстати на первый взгляд программисты 1С с профильным образованием и программисты 1С с экономико-бухгалтерским образованием очень похожи друг на друга (если одного профессионального уровня), но при более глубокой работе в паре начинаешь замечать различия в подходах к постановке, написанию и отладке программ. К примеру у меня повышенные требования к красоте (лаконичности, практичности, быстродействию, наглядности) программного кода, к строгости диалогов, у тебя — замечаю больше тягу к юзабилити и функциональности. Я работал пару лет в паре с парнем чуть старше себя, талантливым программистом, мир его праху :(, но самоучкой, и тогда научился видеть разницу. Потом еще сталкивался. Конечно, все люди разные, потому под одну гребенку нельзя, но все-таки техническое и гуманитарное образование дает о себе знать. А возможно даже не образование, а склад ума, фиг его знает…

    Reply
  27. maljaev

    (22), (23) Как бы пошло это не звучало, но в рамках современной действительности и специфики частных контор главбух — это человек, ищущий пути для обхода закона. Не потому что ему так хочется, а потому что от него это требуют.

    Reply
  28. maljaev

    (11) Ну на самом деле изменения в релизах мы читаем, так что просветить насчет основных изменений законодательства способны. Меня вот больше бесят клиенты, которые начинают грубо, на повышенных тонах, наезжать по поводу ошибок/недоработок в типовых релизах. Причем мотивируют это тем, что раз я занимаюсь 1С, то должен отвечать за творения этой конторы и бесплатно им все исправить/доработать. Таких я смело посылаю прямо к Нуралиеву и неипет.

    Reply
  29. pirm2

    к 20 п.

    — У меня с английского на русский не переключается!

    — На какие клавиши нажимаете?

    — На белые!

    Reply
  30. maximus88

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

    Reply
  31. salli80

    😀 А я со своим программистом спорила спорила, итог работы оказался удивительным ))) Программу доработали под нужы компании супер,но в итоге оба оказались без работы… Обменяли обоих на молоденькую девченку в мини юбке(((((.

    Reply
  32. tango

    (31) это называется ‘корпоративная культура’

    Reply
  33. okanat

    это можно назвать -руководство к действию))

    Reply
  34. avcherkasov

    Честно не так весело, как про бухов. Быть может потому, что я программёр ))

    Reply
  35. zhenya17

    (34) +1

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

    Но! У каждого бухгалтера на рабочем столе есть доступ к системе «Консультант». Как думаете, сколько из бухгалтеров этой системой пользуются? 95% бухов ответят, что им некогда там что-то смотреть. Работать надо! Какие уж там бухгалтерские форумы в интернете. Для них интернет = одноклассники. Это уже давно проверено. К счастью, есть и 5% тех, кто действительно используют интернет для проф.целей. Для них и лимиты другие. И всегда по просьбе, безо всяких служебок накидываем сотни мегабайт. Потому что знаем, что для дела.

    Reply
  36. azernot

    (36) Памфлет написан в 2003 году… Тогда всё было совсем по-другому (трава зеленей, еда вкусне и полезнее, бзлимитка — мечтой, а одноклассники — это были люди, учившиеся в одном класе). 🙂

    Reply
  37. DrAku1a

    Серия «Вредные советы». Полезно иметь под рукой…

    А вот это:

    21. Старайтесь во все каталоги бухгалтерии положить файлы типа DiskEdit, Format, Sys и т.п. А лучше сделайте bat файлы на рабочем столе, в которых пропишите, скажем «format C:». Назовите bat файлы просто Сапёр, Пасьянс, Doom 3D, Warcraft IV, , и т.п. Только обязательно предупредите бухгалтеров, что эти файлы запускать нельзя! Проверьте бухгалтеров на стойкость!

    классная идея!

    Reply
  38. AlexO

    (38) DrAku1a,

    Назовите bat файлы просто Сапёр

    Иногда люди, бесконечно далекие от компов и проблем, с ними связанных, дают дельные советы 🙂

    Это я про автора.

    Reply
  39. azernot

    (39) Я конечно не супер-мега-кулл-хацкер, но на момент написания статьи был ближе к «компам и проблемам с ними связанным» чем вы это обозначили :).

    Reply
  40. StudentM

    (40) по 1-му пункту «Если на дисках осталось слишком мало места» чаще обратная ситуация: пришла новый бухгалтер и давай удалять все каталоги с сетевого диска компьютера прежнего бухгалтера, гл.бух. и новый бухгалтер решили ПК сами настроить.

    Reply

Leave a Comment

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