Решения задач по расчету зарплаты для подготовки к экзамену 1С : Специалист 8.х по платформе




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

31 Comments

  1. Serjik78

    Подскажите, уважаемые, здесь можно подобное выкладывать? 😉

    Reply
  2. Serjik78

    Надо же, только выложил, а как активно качают 😀 😀 😀

    Reply
  3. Orland

    А чё за формат ❓

    Reply
  4. Monolit

    (2)Извини,хотел на плюс нажать. 😥 Такие штуки нужны.

    Reply
  5. Serjik78

    (3) Формат rar, прошу прощения. Напишу комментарий.

    Reply
  6. Serjik78

    (4) Нет проблем, но вроде можно минус забрать 😉

    Reply
  7. Nuuq
  8. Amali

    А есть сборник «Решения задач по расчету зарплаты для подготовки к экзамену 1С : Специалист 8.х по платформе.» в электронном виде ?

    Reply
  9. Source

    Может есть у кого сборник задач по Управлению торговлей???? Уж очень хочу сдать торговлю 🙂

    Reply
  10. Serjik78

    (8) Есть сборник как на картинке в обеих редакциях (апрель и сентябрь 2009). Там все задачи для подготовки к экзамену по БУ, ОУ, Расчету, БП. Вторая редакция почти не отличается, до сих пор остались перлы вида: «Если водитель в месяце наездил более 1000 часов». Скажите, если я выложу тут ссылку на сборник задач, то не забанят?

    Reply
  11. RailMen

    По зиуп решебника вроде как нет. Я выложил свои варианты решения по зиуп. Эта тема тож актуальная.

    Reply
  12. Vass

    а я сдал его и забыл как страшный сон 😀

    Reply
  13. Serjik78

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

    Reply
  14. Hokum

    А есть ли в природе решения других задач из сборника?

    Reply
  15. Serjik78

    ( 14 ) Выложил решения задач по БУ, жаль пока не все. В свободное время прорешаю и дополню, пока выложил 6 решений по БУ из сборника.

    Reply
  16. shootnik

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

    Reply
  17. WKBAPKA

    уважаемые, за что плюсы???? за пиратство 😮

    Reply
  18. larisab

    Вроде нет пиратства. Просто решение задач, причем задачи в сборниках 1с учебные. Обмен опытом. 8)

    Reply
  19. Serjik78

    ( 17 ) В чем пиратство? Сборник официально продается 1С за 1000р. Решаете задачи и идете сдавать экзамен по платформе 8.х. Я выкладываю решения из этого сборника. Кто-то помотрит и скажет, вдруг я ошибся или наоборот ему это будет полезно для самообучения. Мое мнение не безапелляционное, но как человек, который сдавал много экзаменов 1С таково, что нужно самому прорешать много задач прежде чем сдать экзамен. Что плохого если выкладывать решения, чтобы люди научились, а при случае меня самого ткнули носом в неоптимальное / неверное решение?

    Reply
  20. elizarovs

    (17) Ну, насколько я понимаю в авторском праве, авторство предлагаемых решений принадлежит уважаемому Serjik78. И если решения он не «списал», то какие могут быть претензии? Распространять чужой сборник, конечно, не стоит, во всяком случае воткрытую. А наличие готовых решений огромный плюс при подготовке к экзамену, что бы кто ни говорил.

    Reply
  21. elizarovs

    (16) Все мы учимся на ошибках. Но, говорят, что на чужих как-то приятнее.

    Reply
  22. Requiem

    Задача 3.11

    Нет расчета больничных

    Reply
  23. Serjik78

    Выложил окончательный вариант по всем видам учета: http://infostart.ru/public/59045/

    Reply
  24. Serjik78
    Reply
  25. Serjik78

    ( 22 ) Все расчеты вынесены в Общий модуль, возможно не заметили 😉 На экзамене могут чуток сбавить за «неоптимальное» решение.

    Reply
  26. Requiem

    (25) Сорри, с общем модуле смотрел, но не обратил внимание что разнесено в 2 процедуры, куда смотрел не понятно.

    Reply
  27. Serjik78

    ( 26 ) Все ОК 🙂

    Reply
  28. EvgeniuXP

    вы бы хотя бы к решенной задаче и текст прилагали бы… теперь надо искать и сборник задач…

    Reply
  29. rvk68

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

    Reply
  30. DanilovaOlga

    Вы гений!

    Reply
  31. SSO

    Спасибо за публикацию. Очень полезная вещь. В свое время не сдал экзамен по спецу, так как сам разбирался и программировал. Соответственно идеологии 1с не придерживался. Даже за рабочее решение были сняты балы и экзамен провален. Так что сдача должна быть строго так как хочет экзаменатор. Выучить все решения и воспроизвести.

    Reply

Leave a Comment

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