Полезные вкусняшки: Шаблоны для конфигуратора 8.* и 7.7




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

48 Comments

  1. CheBurator

    А как этот шаблон прилепить, чтобы подхватывался конфигуратором?

    Не пинайте, я — неграмотный…

    Reply
  2. Valet

    Сервис->Параметры->Синтакс-Помощник->Файл шаблонов

    Reply
  3. z-alexey

    Свои никак руки не доходили накатать. Спасибо.

    Расширить еше можн

    Reply
  4. GROOVY

    «Свои никак руки не доходили накатать. Спасибо.

    Расширить еше можн»

    Так предлагай! У меня вот со времени поста еще пара шаблонов образовалась…

    Reply
  5. Шёпот теней

    О Великий GROOVY! Искренне восхищаюсь вашими творениями и вашими познаниями и вашей работоспособностью. Удачи!

    Reply
  6. GROOVY

    Обновил чутка шаблоны к 8рке. Изменения в основном касаются русской раскладки для набора символов < > | & [ ]

    Тестим, жалуемся, предлагаем.

    Reply
  7. leontiy

    Спасибо за проделанную работу, рейтингую +

    Reply
  8. oskar

    Спасибо за проделанную работу, рейтингую +

    Reply
  9. Ryukenden

    Спасибо, хорошая подборка.

    Reply
  10. eugeny_g

    Спасибо за проделанную работу, рейтингую +

    Reply
  11. KATPAH

    Спасибо за труд товарищь общественность в моем лице вражает вам благодарнасть

    Reply
  12. grEEn_

    +

    Reply
  13. oyo

    +

    Reply
  14. Sevko

    А как в шаблон добавить текущий номер версии конфигурации (8.1). Думаю — это просто, а вот сделать не получается!

    Reply
  15. GROOVY

    (14) Пока это невозможно.

    Reply
  16. KaZantipA

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

    Reply
  17. Душелов

    (16) В конфигураторе ctrl + shift + T

    Reply
  18. rasul8333

    большой респект и +

    Reply
  19. Rewerz

    ога! ништяГ! +

    Reply
  20. Доня

    Как бы мне хотелось всем этим овладеть!

    То пока туплю.

    Reply
  21. nextua

    Большое Спасибо!!! +

    Reply
  22. den_vladimir

    Спасибо за труд! +1

    Reply
  23. dobrynin.i.s

    Похожая тема:

    Общий файл шаблонов

    http://infostart.ru/public/60366/

    Reply
  24. GROOVY

    (23) В чем она похожа? шаблоны то другие.

    Я вообще считаю что у каждого должны быть свои шаблоны.

    Reply
  25. dobrynin.i.s

    (24) Тематика общая — шаблоны.

    Reply
  26. GROOVY
  27. artbear

    (26) Сослался в своей публикации http://www.infostart.ru/public/65526

    на Вашу работу, т.к. давно использую большинство шаблонов из сабжа.

    Reply
  28. superket_12

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

    Мне это скачанный файлик нужно в каталог базы поставить,а потом подхватить его из конфигуратора? А потом что делать? 😀

    Reply
  29. superket_12

    [IS-QUOTE]superket_12 пишет:

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

    Мне это скачанный файлик нужно в каталог базы поставить,а потом подхватить его из конфигуратора? А потом что делать?

    Я установила всю эту любовь через дополнительные возможности!!! А как теперича и где ими восползоваться?

    Reply
  30. _WinChester_

    (29) В конфигураторе жмешь Ctrl+Shift+T, подгружаешь туда файл, далее в параметрах конфигуратора на закладке Модули нужно включить Автозамену. Первое время для наглядности можно еще там же включить шаблоны в список подсказок (закладка Контекстная подсказка).

    Reply
  31. TrinitronOTV
    GROOVY пишет:

    Обновил чутка шаблоны к 8рке. Изменения в основном касаются русской раскладки для набора символов < > | & [ ]

    Тестим, жалуемся, предлагаем.

    спасибо за шаблоны

    Reply
  32. spryn

    Автору слова искренней благодарности

    Спасибо

    Регулярно использую.

    Reply
  33. be-may

    Спасибо. Я вот не знала, что шаблоны можно загружать файлом.

    Reply
  34. tanekQ

    Действительно «полезные вкусняшки», однозначно плюс!

    Reply
  35. internetname

    Критики не будет. Все супер.

    Reply
  36. sstvit

    Спасибо, отличная подборка.

    Reply
  37. Persempre

    К 8.2 или 8.3 подойдут?

    Reply
  38. GROOVY

    (37) Persempre, 8.* как бы намекает нам…

    Reply
  39. Jon2011

    (38) раздел выбран:

    Тип: Внешняя обработка (ert,epf)

    Платформа: 1C: Предприятие 8.0 / 1С:Бухгалтерский учет 7.7 / 1С:Оперативный учет 7.7 / 1С:Расчет 7.7

    Страна: Россия

    о конфигурациях на платформе 8.2 и 8.3 ничего не сказано.

    файл для скачивания называется: «шаблоны к 8.0/8.1. Версия 1.01 (17.09.2007)» — тоже наводит на размышление.А надо ли скачивать?

    Reply
  40. GROOVY

    (39) Jon2011, может быть раздел выбран был в 2006м году когда собственно о 8.2 и 8.3 никто не слышал.

    А вообще актуальные шаблоны можно взять тут: http://1c.chistov.pro/2009/10/1-8.html

    Reply
  41. ToJIuK

    Большое спасибо. очень помогли данный шаблоны.+

    Reply
  42. nastyY

    огромное спосибо…. е то то о чем я мечтал молодец.

    Reply
  43. soft-servis

    Добрый день, подскажите пожалуйста как прицепить шаблоны к 7.7?

    Reply
  44. dmitry-gr

    Интересно, а существуют такие же шаблоны, но для английского языка?

    Reply
  45. v.l.

    (46) dmitry-gr, легко перевести ключевые слова с русского на английский. Но зачем? Чтобы писать труЪ-кодЪ на английском? А смысл? procedure ОткрытьФайл(File, Folder< Extention) для этого?

    Есть обработка на ИТС, которая меняет ключевые слова русские на английские или наоборот.

    Reply
  46. cargobird

    Коллеги, подскажите пожалуйста…

    Подключил файл шаблонов в конфигуратор 8.2, пользуюсь, большое спасибо автору, но такой вопрос.

    Создаю, например, набор записей регистра сведений. Добавляю запись: пишу «Запись», нажимаю на клавиатуре точку и вместо короткого списка набора измерений и ресурсов получаю полный набор сокращений из файла шаблонов.

    И так, в общем, может быть где угодно.

    Что делаю не так?

    Reply
  47. Mamoru

    Есть еще живые семерочники? Подскажите возможно ли подставить в замену текущую дату? по аналогии с восьмерочным <?»», ДатаВремя, «ДЛФ=DT»>

    Reply
  48. cargobird

    (49) Mamoru, напрямую нельзя, но как вариант:

    http://www.forum.mista.ru/topic.php?id=96847

    Reply

Leave a Comment

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