Установка Изображений Номенклатуры




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2025-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='\

46 Comments

  1. wirg

    И где обработка???

    Reply
  2. Abadonna

    (0) Файлы обработки надо контролировать! Убедиться, что он прикрепился. Не появится файл — сниму с публикации

    Reply
  3. Anyxwar

    Извиянюсь.Не посмотрел.Он и картинку не сразу схавал.В общем где то есть недоработка сайта.

    Reply
  4. Abadonna

    (3) Есть, поэтому я и написал (2), а не грохнул сразу 😉

    Reply
  5. Anyxwar

    Обработка теперь умеет работать и с буфером обмена!!!!!

    Reply
  6. voler

    У меня выдал ошибку в ТиС

    {Форма.Форма(246,3)}: Процедура или функция с указанным именем не определена (ОткрытьФормуСпискаФайловИИзображений)

    <<?>>ОткрытьФормуСпискаФайловИИзображений(СтруктураДляСпискаИзображдений,СтруктураДляСпискаДополнительныхФайлов , ОбязательныеОтборы, ЭтаФорма);

    Reply
  7. Anyxwar

    Обработка предназначенна для Ут 10.2

    Reply
  8. Anyxwar

    Теперь если поставить в отборе пометка удаления=ложь он выберет картинки не помеченные на удаление

    Reply
  9. Anyxwar

    Если нужен еще какой функционал пишите!!!

    Reply
  10. Anyxwar

    Не забывайте плюсовать!!!так как это дает стимул выкладываь новые обработки!!

    Reply
  11. Abadonna
    Не забывайте плюсовать!!!так как это дает стимул выкладываь новые обработки!!

    А мне «попрошайство» дает стимул поставить лишний минус. Но пока не буду 😉

    Reply
  12. DMSDeveloper

    За пример работы с буфером обмена огромный плюс.

    Наконец то мне попался рабочий экземпляр Clipboard.dll.

    Reply
  13. TbSasha

    А у меня почему то не вставляет из буфера? Пишет: В буфере обмена нет изображения хотя в буфере оно есть.

    Reply
  14. Поручик

    (13) попробуйте ещё эту http://infostart.ru/public/19932/

    принцип работы одинаков. если ошибка будет повторяться, значит косяк или библиотеке или у вас буфер неправильный.

    Reply
  15. Anyxwar

    Может потому что его там нет?))))Какой вопрос такой ответ,если хотите получить развернутый ответ приводите пример.

    Reply
  16. TbSasha

    Обе обработки попробовал и из буфера не вставляется. В буфере есть так как в другую папку копируется изображение. Еще у меня установлена программка CLCL она тоже показывает что в буфере есть изображение.

    Reply
  17. Anyxwar

    http://www.infostart.ru/public/19932/

    попробуй эту обработку если в ней тоже не будет работать буфер,то с ним что то не так

    Reply
  18. Anyxwar

    еще попробуй открой вордовский документ и вставь в него.Изображение должно быть открыто,т.е не сам файл копируется(рисунок.jpg)в этом случае это просто двоичные даннные, а например с сайта рисунок или с ворда к примеру вставленное изображение

    Reply
  19. TbSasha

    А вот этого я не знал копировал сам файл. Теперь работает спасибо. А будет такая обработка для версии 8.2 и еще для УТ 11?

    Reply
  20. Anyxwar

    возможно будет если сами перейдем на 8.2 а так любой каприз за ваши деньги.пишите в личку решим,у нас цены не московские.Буквально за еду работаем))))

    Reply
  21. anatol517

    SOS!!!

    У меня выдает ошибку в Ут 10.3 и в УПП 10.2

    Что делать ?

    {Форма.Форма(246,3)}: Процедура или функция с указанным именем не определена (ОткрытьФормуСпискаФайловИИзображений)

    <<?>>ОткрытьФормуСпискаФайловИИзображений(СтруктураДляСпискаИзображдений,СтруктураДляСпискаДополнительныхФайлов , ОбязательныеОтборы, ЭтаФорма);

    Reply
  22. Поручик

    (21)

    И чего орать?

    #
    #—— [OPEN] ——-
    #
    Форма
    
    #
    #—— [FIND] ——-
    #
    
    ОткрытьФормуСпискаФайловИИзображений(СтруктураДляСпискаИзображдений,СтруктураДляСпискаДополнительныхФайлов , ОбязательныеОтборы, ЭтаФорма);
    #
    #—— [REPLACE WITH] ——-
    #
    РаботаСФайлами.ОткрытьФормуСпискаФайловИИзображений(СтруктураДляСпискаИзображдений,СтруктураДляСпискаДополнительныхФайлов , ОбязательныеОтборы, ЭтаФорма);
    

    Показать

    Reply
  23. anatol530

    ошибка

    Reply
  24. anatol517

    И чего орать?

    Дэк я не ору у меня просто голос громкий 😀

    Господин поручик!

    Я не программист

    Вас не затруднит поправить код в обработке

    выслать мне исправленный файл

    или подробней объяснить куда эти строки вставить в модуле

    Reply
  25. Поручик

    (24) Куда подробней ещё? И так разжевал, разве что в рот не положил поклал.

    Reply
  26. Поручик

    (26) Господин анатоль517.

    Автор этой обработки Anyxwar. Я-то тут причём?

    Reply
  27. anatol517

    Тогда извени!

    Вопросов нет

    Reply
  28. Поручик

    (0) >>> Не задает много вопросов

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

    Reply
  29. Anyxwar

    Любые доработки сделаю без проблем но за отдельную плату(мои расценки копеечные).Я все же трачу свое время на разработку и делюсь ею для разработчкиво не закрывая код.Ведь правильно я говорю? цены скажу в личке

    Reply
  30. Поручик

    (30) Правильно.

    Reply
  31. kvandr

    НЕ пробовал, только посмотрел код реализации, для себя сделал свою. работает. есть только одно но, не стоит грузить в базу картинки больших размеров, скажем не советую больше 1 мб. Лучше вообще поставить запрет на картинки больше 500 кб, 500 кб хватит за глаза. я все фотки обрабатываю в фотошопе пакетно, есть там такое понятие как action и другое очень удобно. достаточно просто папку с картинками кинуть на экзешничек, все остальное сделается за тебя. Если что обращайтесь, кину ссылочки.

    Reply
  32. sai-2010

    Спасибо! Интересно!

    Попробовал, вобщем работает.

    Надо принять на заметку.

    Конечно придется заточить под нужды

    и задачи фирмы, но вобщем хорошо.

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

    Удачи!

    Reply
  33. net7wolf

    {Форма.Форма(246,3)}: Процедура или функция с указанным именем не определена (ОткрытьФормуСпискаФайловИИзображений)

    <<?>>ОткрытьФормуСпискаФайловИИзображений(СтруктураДляСпискаИзображдений,СтруктураДляСпискаДополнительныхФайлов , ОбязательныеОтборы, ЭтаФорма);

    Reply
  34. net7wolf

    Извиняюсь не тот файл взял.

    Автор +

    Reply
  35. Anyxwar

    Поражаюсь наглости людей

    (26) anatol517,

    Reply
  36. Tur_gad

    Нужная вещь. Может холосо помочь)

    Reply
  37. AlexO

    (31) Поручик,

    неправильно.

    Слишком жадным тоже не надо быть 🙂

    Reply
  38. AlexO

    (30)

    так вы ошибки в обработке правите за деньги?

    Reply
  39. Поручик

    (38) Ты специально такой некромант? Дату поста посмотри, теме уже полтора года. Проснулся, блин.

    Я уже напрочь про неё забыл.

    Reply
  40. Anyxwar

    (38) AlexO, слишком жадным это как? для вас може тубль отдать за упп это жадность а кому то за обработку дать 500 рублей это нормально.Я вообще поражаюсь какие люди иногда встречаются на форуме,по ним псих больница плачет.Начинают спорить доказывать что я им что то должен.Еще раз объясняю для всех ,обработка выкладывается «как есть» и я на свое усмотрение хочу дорабатываю ее хочу нет если нужна помощь по дорабоке пишите в личку а не несите ересь в коментариях. Не нравится не качайте а скачали не понравилась удаляйте.За подобные высказывания «так вы ошибки в обработке правите за деньги? » или «Господин поручик!

    Вас не затруднит исправить ваш косяк в обработке

    и выложить исправленную разработку? » буду минусовать. Халявщики имейте совесть!!!!!

    Reply
  41. Anyxwar

    для тех кто не знает что такое хорошо а что такое плохо в простонародье » имбицил » простите меня за грубости но уже сил нет терпеть тупняк , привожу пример

    «29.

    Поручик

    (файл скачал)

    19.02.11 21:31

    (0) >>> Не задает много вопросов

    Иногда следует задать вопрос. Например, при вставке из буфера обмена происходит безусловное замещение основного изображения. Может быть это и удобно, но можно совершенно случайно затереть рисунок без возможности восстановления. » — это конструктивная критика и это хорошо,»Господин поручик!

    Я не программист

    Вас не затруднит поправить код в обработке

    выслать мне исправленный файл

    или подробней объяснить куда эти строки вставить в модуле » — это наглость невнимательности и желание нажиться на других это плохо.Надеюсь доходчиво объяснил

    Reply
  42. arjuna

    Для полного щастья не хватает подключения веб камеры и моментального присваивания изображению снимка. Есть обработки которые захватывают изображения и сохраняют в файл, есть вот эта обработка, но вот два в одном было бы куда круче 🙂

    Reply
  43. Anyxwar

    Любой каприз за ваши деньги

    Reply
  44. Светлый ум

    (43) arjuna, Сделал такую (для «Розница1″/ «Ут 10.3») обращайтесь о цене договоримся — за бесплатно работать желающих нет

    «Подключение веб камеры и моментального присваивания изображению снимка»

    (публиковать сей механизм вряд ли стану)

    Reply
  45. SkyLink2012

    Надо в 1с вставить картинку из буфера обмена ? Работать с изображением из буфера обмена в 1с версий 8.1 , 8.2 , 8.3 из Windows XP- windows10?

    Пока возможно скачать разработку 2010 года https://infostart.ru/public/19932/ без списания стартмони в 2018, 2019, 2012 году бесплатно. В макете обработки есть dll-ка clipboard.dll 511кб ( 523264б ), версия 1.0.0.5

    Возникает ошибка 80004005 при регистрации ( c:Program Files1cv82>regsvr32 clipboard.dll ) в командной строке?

    Попросту, надо запустить cmd «Командная строка (Администратор)» и зарегистрировать библиотеку

    regsvr32 «c:Program Files1cv82clipboard.dll»

    Очень простой код

    ЗагрузитьВнешнююКомпоненту(«clipboard.dll»); //и не надо вам никаких V8ADD.dll, если только фотки грузить, путем подгрузки через Base64
    Попытка
    КомпонентБО = Новый(«AddIn.clipboard»);
    Исключение
    Сообщить(«Не удалось создать объект компоненты clipboard»);
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    

    Показать

    Тип не определен (Addin.Clipboard) ? Понадобиться запустить cmd «Командная строка (Администратор)» и зарегистрировать библиотеку

    regsvr32 «c:Program Files1cv82clipboard.dll»

    В итоге, в рунете появятся бОльше качественных и полезных фото))

    В целом, для тех кто не в пожизненной теме — C# . Кто с уважением посматривает на кнопку «Заказать установку этой обработки». На дворе 2018год. Уже Python as an Excel scripting language Для 1с+Python from PIL import Image и subprocess.Popen в помощь! 🙂

    Reply
  46. Anyxwar

    Ахренеть.я уже забыл о существовании этой обработки.А она жива

    Reply

Leave a Comment

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