Как учить тесты 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='\

32 Comments

  1. Cifer

    Да но зато бесплатно! (Боремся с кризисом! :)))

    Reply
  2. Cifer

    Хорошая идея! Я подумаю.

    Reply
  3. Cifer

    Я молодой — мне 30 лет. Можно на «ты».

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

    Плюс моего файла в том, что он маленький, не нужно устанавливать отдельную конфу, его можно распечатать или работать с ним как это рекомендует fixin в своем предложении (http://infostart.ru/projects/2912/).

    (4) Конфигурацию, подобную твоей, я видел с полным функционалом (наличие скриншотов), причем бесплатную.

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

    Если твоя разработка помогает людям — замечательно! Удачных продаж! 🙂

    Reply
  4. PavelBaryshev

    Здорова, мне понравилось.

    Reply
  5. Intimatik

    ссылка тут удобнее чем на 1С-pro 🙂

    Reply
  6. GrayT

    Хм….. я автор 🙂

    А что макрос до сих пор актуален и реально работает? В нем насколько я помню три алгоритма «шифрования» ответа. я думал что он в очередной раз поменялся и не работает 🙁

    (2)На момент написания это был первый опыт в макросах — ни когда не обращал на это внимания…..

    Если кто готов дорабатывать пароль — Q73LlF5

    Reply
  7. GrayT
  8. Cifer

    Автору — респект! 🙂

    Reply
  9. GrayT

    Ну а тебе плюсы за реанимацию 🙂 — и приятно и не думал что это еще актуально 🙂

    Reply
  10. marchel

    а пароль то не подходит(

    Reply
  11. GrayT

    (15)CtrlC + CtrlV …… — подойдет — век воли не видать…

    Reply
  12. irinal11

    Спасибо за разработку. Очень помогла.

    Reply
  13. DioSka

    Отличная вещь для подготавливающихся!! Мне очень помогла и тест сдал, скажем так, не без этой обработки!! Все ответы действительно правильны.

    Reply
  14. vl88

    буду стараться учиться по ней!надеюсь мне это поможет!

    Reply
  15. Mell

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

    Reply
  16. VNN21122006

    Отличная работа. ОЧЕНЬ ПОМАГАЕТ при подготовки к сдаче теста на сертификат профессионал. Единственный минус дублирование вопросов. Хорошо было бы доработать чтобы не было дублей. Спасибо разработчику. Жду дальнейше йдоработки.

    Reply
  17. gusteleva

    Спасибо за файл! Не нужно ничего лишнего устанавливать, бери и готовся! Я сдала 🙂

    Reply
  18. Coollerok

    Помогла. Спасибо

    Reply
  19. klad1970@mail.ru

    Мне, наверное, тоже поможет. Только, как файл из Data.cab вытащить? «E:Database1CBudgetStorageData.cab: Архив повреждён или имеет неизвестный формат»

    Reply
  20. Alexey26

    Спасибо. Ваша публикация очень выручила меня.

    Reply
  21. AlekseiLeit

    спасибо. пригодилось

    Reply
  22. HameleonA

    А последний файл не могли бы перезалить?

    Reply
  23. klad1970@mail.ru

    (25) klaus, А мне никто не поможет?

    Reply
  24. HameleonA
    klaus пишет:

    (25) klaus, А мне никто не поможет?

    А вы какой файл пытаетесь распаковать? Не из [18] последний? если его, залейте пожалуйста, вместе попробуем открыть его

    Reply
  25. klad1970@mail.ru

    (30) HameleonA, С бюджетного ИТС тесты по Бухгалтерии Государственного Учреждения 8. И «весит» файл почти 800МБ

    Reply
  26. bazcom

    Спасибо автору

    Reply
  27. trumanl

    классная штука!) нашел ее в одной сборке тестов.

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

    Reply
  28. IceSystem

    Спасибо за подборку. Еще предлагаю посмотреть http://www.1c-test.ru — онлайн подготовка к тестированию.

    Reply
  29. VNN21122006

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

    Reply
  30. AnL24

    (37) Onecprof, спасибо, воспользовался.

    Reply
  31. starik-2005

    А кто-нибудь мне может объяснить, зачем нужны сертификаты? Всегда было интересно…

    Reply
  32. Bukaska

    (40) starik-2005, Для статуса франча.. откроешь если свой франч.. сразу по деньгам почувствуешь наличие или отсутствие сертификатов))))

    Reply

Leave a Comment

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