Баянец или пример создания не стандартного логотипа (картинки на форме и в печатной форме)




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

74 Comments

  1. Tatitutu

    я не ХУДОжник, я только учусь 😀

    Reply
  2. Ёпрст

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

    Reply
  3. Ёпрст

    Одного ты только не учел — попробуй распечатать теперь свою картинку или шаблон на предварительном просмотре посмотри..

    Reply
  4. vcv

    О боже!

    Ну хотя бы для приличия стоило бы помянуть, что все то же самое лучше сделать в приличном граф.редакторе. Например Paint.NET или GIMP (из бесплатных). «Волшебной палочкой» выделить в один клик, немножко размыть выделение гауссовым фильтром избавившись от некрасивых «жестких» краев изображения, удалить ненужную выделенную часть. Получившееся фигурное выделение можно применить на произвольных картинках.

    Reply
  5. Ёпрст

    (4) не всё так просто — созданная картинка хоть в фотошопе, будет правильно отображаться в пофигураторе, но что на форме, что в мокселе в самом предприятии будет с серым фоном (или черным).. а при предварительном просмотре — либо «уезжать» в размерах, либо фон будет не прозрачным..

    Reply
  6. Ёпрст

    У автора, один из таких вариантов — правильное отображение на форме, но в предварительном просмотре и при печати — болт.

    Reply
  7. vcv

    (5) (6) Потому что 1С накладывает сильные ограничения на палитру картинок. Поддерживаемая 1С палитра поставляется с ней (main.* три штуки в разных форматах). Большинство граф.редакторов позволяют загрузить палитру. Фотошоп, если меня не обманывает мой склероз, поддерживает *.CPL.

    Reply
  8. steep

    Детский сад, если вы умеете кодить, то ретушировать вы точно не умеете.

    Reply
  9. steep

    (9) Я дизайнер и немного дописываю для своей организации отчеты и внешний формы, и выкладываю бесплатно!

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

    Reply
  10. Tatitutu

    (10) А я начальник отдела «К» …

    вообще не пишу на 1С (это хобби для души — стресс хорошо снимает)

    и из более 40 разработок выложенных на данном сайте — только одна платная и видимо она для тебя превратилась в огромную Жабу.

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

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

    Вот напишешь — люди добрые оцените напишите, что не так, прокомментируйте — тишина.

    А выложишь БАЯНЕЦ в виде статьи (незатрагивающая исскуство рисования в графических редакторах !!!) а наглядно показывающая, как быстро подручными средствами можно сделать что — то полезное и свое (а не содранное с Интернета).

    Пожалуйста — обольют с ног до головы и спасибо не скажут.

    Злые мы стали в последнее время, жадные, завистливые…..

    Reply
  11. steep

    (11) Мне совершенно безразлично сколько и чего вы заработали, меня жаба не душит я человек не завистливый.

    Каждый должен заниматься своим делом

    Начальник — командовать

    Программист — писать

    Дизайнер — рисовать

    И когда Программист начинает рисовать это выглядит не мило, а нелепо и глупо.

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

    Reply
  12. Ёпрст

    (11) Да не кипятись. Товарищь просто никогда не делал картинки с прозрачным фоном в 1с-ине вообще.

    И думает, что это просто.

    А вот заставят его сделать форму , например с круглыми печатями и чтоб она еще правильно печаталась, вот тогда и задумается..

    Reply
  13. Ёпрст

    (12) Какой в попу дизайн здесь вы вообще увидели ? Здесь тупо показана технология создания картинки с прозрачным фоном в 1с-ине и всё..

    Сами когда-нить такие делали ? Именно в 1с-ине ?…

    Reply
  14. steep

    (14) готов сделать, проблем нету

    Reply
  15. Tatitutu

    (12)

    Программист — писать

    да нет дорогой ты мой человек, хороший ПРОГРАММИСТ кроме писать, должен уметь практически ВСЕ, но главное ДУМАТЬ и уметь находить решения поставленных задач, любыми доступными средствами.

    И когда Программист начинает рисовать это выглядит не мило, а нелепо и глупо.

    ну не соглашусь с тобой в корне. Я мог бы нарисовать практически в любом дорогом графическом редакторе — очень красивую и качественную картинку с прозрачным фоном

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

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

    вопервых , как многие меня тут поправят , правильно писать воспрИнИмать

    вовторых — где критика, это

    Детский сад, если вы умеете кодить, то ретушировать вы точно не умеете.

    не смешите мои тапочки ))))

    в третьих — где и на кого я кидался с обвинениями ?

    Reply
  16. Tatitutu

    (15) В шапке написано

    Для работы нам потребуется установленный MS Word (или MS EXCEL)

    выйдет тот же результат.

    понимаешь — на компьютере бухгалтера вероятнее всего будет EXCEL или WORD , чем

    Photoshop с нужными плагинами.

    Reply
  17. steep

    (17) Предлагаю потереть весь офтоп. К нечему конструктивному это не привело а привело к непонятным обвинениям некомпетентности и выставлением на посмешище

    Reply
  18. Ёпрст

    тест

    Reply
  19. Tatitutu

    и вообще исходный вид статьи был такой

    но ее решили удалить как политнекорректную на этом сайте.

    Вот я ее и пределал, чтобы вообще не удалять.

    Reply
  20. Ёпрст

    (16) выкладывай ert-ник с любой круглой синеней печатью (с прозрачным фоном) положенной сверху на произвольный текст в макете, чтоб она правильно отображалась в предварительном просмотре и правильно печаталась.

    Время пошло.

    Reply
  21. Ёпрст

    +22 посмотрим, какой из вас дизайнер.

    Reply
  22. Serj1C

    (22) PNG использовать можно?

    или в 7.7 такого нет?

    Reply
  23. Ёпрст

    (24) Да пофик что использовать — главное чтоб работало 🙂

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

    Reply
  24. vcv

    (25) В принципе, не такие уж и извраты. Просто 1С использует странные обрезанные палитры цветов. Да не одну, а минимум две. Или больше. В разных местах разные. Отступление от палитры карается обычно превращением всего в глубоко черный цвет.

    Reply
  25. vcv

    +(26) Обычная проблема с рисованием картинок для 1С в том, что не пользуются 1Сной палитрой, а редактируют картинку в редакторе при стандартной палитре. И в картинку попадают цвета, визуально не отличимые от палитры 1С (результат банального сглаживания пр

    Reply
  26. GSoft

    (27) а в paint net палитру от клюшек подключить мона?

    Reply
  27. Ёпрст

    (27) дело еще не только в палитре.

    Например, как у автора в обработке — на форме и в пофигураторе — всё супер, в предварительном просмотре и при печати — картинка «уехала» …

    Reply
  28. vcv

    (28) не знаю, я его видел последний раз года два назад. Кажется еще будут проблемы эти палитры использовать. Несколько лет назад пробовал на фотошопе, было все нормально, делал картинки. Сейчас попробовал загрузить палитры ГИМПом — одни рыжие цвета. Непонятно. Может у кого есть фотошоп? Проверьте ради интереса, плиз.

    Reply
  29. Tatitutu

    (30) у steep наверняка есть, обещал сделать

    Ёпрст , я заметил еще одну хрень в 1С

    например на форме есть реквизит Картинка, идетификатор Логотип

    код

    Логотип.УстановитьКартинку (Объект); срабатывает на ура

    Логотип.Сохранить(<Имяфайла>) тоже работает, но то что сохраняет имеет размер, но не открывается никаким редактором…

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

    ДругаяКартинка.Загрузить(<ИмяФайла>) все чих-пых )))

    Reply
  30. Ёпрст

    (31) там неправильный заголовок будет у сохраненной картинки.. так сказать, кастрированный bmp — вот и не отображает.

    Я не помню, был где-то конвертер, чтоб 1с-ные картинки в нормальный bmp сохранять

    Reply
  31. Dolly_EV

    Прочитал топик…дааа, господа дизайнеры — уж поверьте 1с и фотошоп несовместимы))), и действительно приходится извращаться чтобы получить приемлемый результат картинки на мокселе.

    Я в свое время опытным путем пришел к такому решению:

    картинку вставляем в Excel, там из стандартного набора берем инструмент «Установить прозрачный цвет» и убираем им белый (или какой другой) фон.

    Естественно, чтобы результат был более-менее приемлемым, картинка должна быть достаточно однородной по цветам.

    Далее через клипбоард копируем-вставляем картинку из Excel в 1С.

    Еще можно вспомнить такое «чудесное» поведение 1С. Просто открытый моксель с картинкой (что в Предприятии, что в Конфигураторе) просто бессовестно начинает отжирать память (отжираемая память увеличивается!)

    Так что автору за простой способ — респект!

    Reply
  32. Tatitutu

    (33) Спасибо за комментрарий, очень приятно

    Reply
  33. Ёпрст

    (33) на предварительном просмотри и при печати , при таком способе, картинка либо будет иметь непрозрачный фон, либо «уедет» в размерах.

    Я пока знаю только 1 способ нормальной печати картинки с прозрачным фоном..

    но он слишком громоздкий.

    Reply
  34. Dolly_EV

    (35) и на предпросмотре и при печати — все ок — прозрачность остается и цвета нормальные.

    Я постоянно этим способом вставляю всякие поздравлялки к праздникам на печ. форму отгрузочного документа. Правда картинку в grayscale перевожу, ибо печатается все-равно на черно-белом принтере, и серая картинка на форме меньше весит

    Reply
  35. Ёпрст

    (36) тест прикрепи — не верю.

    Reply
  36. Dolly_EV

    (37) ну ёбтить…. 😉

    лови…

    Еще, если мне не изменяет память, для сей процедуры подходит ТОЛЬКО Excel 95 — 2003 (2007 не катит, Word не катит)

    Reply
  37. Tatitutu

    (37) ну для вывода на печать можно немного «извратится» и дописать процедуру

    таблица сохранить как Excel сохраняет правильно и красиво

    распечать лист , а потом его удалить — пользователь и не заметит разницы (если только у него нет EXCEL)

    Reply
  38. Ёпрст

    (38) с цветной картинкой такой фокус не прокатит..

    Reply
  39. Tatitutu

    А я нашел способ как и в цвете выложить чтобы печатало — стандартным способом !! Сейчас выложу

    Reply
  40. Ёпрст

    твою мать..

    Этот способ я и так знаю — ЭТО — внедренный Объект от мелкософта, ЭТО — не КАРТИНКА.

    Reply
  41. Ёпрст

    +42 и весит такой моксель — будь здоров… а ты в (33) утверждал, что это обычная картинка, скопированная с офиса, а не внедренный OLE- объект

    Reply
  42. Tatitutu

    Выложил — комментируем )))

    Reply
  43. Ёпрст

    +43 и память тебе изменяет.. там пофик, что это за ole-объект.

    ЗЫ: на данный момент, это единственный способ печати картинки с прозрачным фоном, без искажений..

    Даже всякие ocx-ы, типа activemmp и 1сbmp не дают нужного результ

    Reply
  44. Ёпрст

    (44) и.. где оно ?

    Reply
  45. Tatitutu

    (43) «просто» скопирована из ОФИСА — все сделано по инструкции , за одним маленьким исключением. И все чих-пых

    Reply
  46. Ёпрст

    (44) комментирую — размер уехал, что в предварительном просмотре, что на печати.

    Reply
  47. Tatitutu

    (47) но уже лучше , намного лучше — можно подогнать один раз и все будет и ОТОБРАЖАТЬСЯ и ПЕЧАТАТЬСЯ как нужно.

    Reply
  48. Ёпрст

    +47 сделать такую картинку — как 2 пальца об асфальт — в открытом офисе (ворд это или эксель — пофик) копировать сразу 2 объекта, в 1с-ине вставлять … вставится 1 картинка, но размер её уезжает при печате/просмотре.

    Reply
  49. Ёпрст

    (49) затрахаешься..это пройденный этап.

    Reply
  50. Tatitutu

    (51) Не будь таким злым. Для тебя это пройденный этап, а для кто — то вообще не понимает о чем речь. «Затрахаешся » — ну и хорошо, если долго мучится , что нибудь получится.

    Reply
  51. Ёпрст

    +52 и «полностью рабочий» убери из заголовка — это не правда..

    🙂

    Reply
  52. Ёпрст

    (52) я просто константирую факты..

    У тебя сейчас картика «уехала» + изменила пропорции…

    если картинок несколько и нужна точность — например, если картинка — это бланк/печать и т.д, то упаришься подгонять таким способом…и потратишь кучу времени.

    А результат всё равно будет плачевным.

    Reply
  53. Dolly_EV

    (42) в моем примере ЭТО именно КАРТИНКА, а не внедренный объект!

    (40) да, с цветным куском принт-скрина экрана — не получается, но я и раньше в (33) говорил про однородность изображения 😀

    Reply
  54. Dolly_EV

    (40) Да, с цветом сходу (кусок принт-скрина экрана) не получается

    (42) в моем примере это именно КАРТИНКА, вставленная с офиса

    Ёпрст, ты никак бъешься (или недавно бился) над задачей типа: «Автоматизация печати документов с синей печатью контрагента»? 😀

    Reply
  55. Dolly_EV

    (56) ПОЛНОСТЬЮ СОГЛАСЕН!!!! 👿 поэтому два раза запостил… первый раз не увидел, подумал, что не дошло

    Reply
  56. Ёпрст

    (55) В твоём примере — ЭТО OLE-ОБЪЕКТ MS Word

    Reply
  57. Ёпрст

    (57) не, я эту задачу еще решал году в 2001-ом …потом в 2005-ом, когда релиз сменился..

    и вот недавно опять — нужно моксель в pdf запихать с картинкой с прозрачным фоном, теперь жду УжастаБухгалтера, когда он в йокселе реализует конвертацию в pdf

    Reply
  58. Ёпрст

    +60 Просто есть засада, если такую форму отправить на любой pdf принтер (хоть от Adobe, хоть на PDFCreator, или еще какой, неважно) — то картинка будет с белым фоном..в pdf…

    Тут-то и ж….

    Единственный выход пока, конвертить йокселем в

    Reply
  59. Dolly_EV

    (59) вот ведь ёпрст…)) 😳 щас с серым еще посмотрю…

    (60) и как решил в 2001-м -5-м, если вкратце ?

    Reply
  60. Ёпрст

    тест

    Reply
  61. Ёпрст

    (61) только новыми сообщениями можно увидеть, что напечаталось 🙂

    В старых релизах, достаточно было в экселе выставить картинки прозрачный фон и скопипастить в 1с-ину.. + всякие ocx были (вот это

    http://1c.proclub.ru/modules/mydownloads/personal.php?cid=115&lid=1244

    или это

    http://1c.proclub.ru/modules/mydownloads/personal.php?cid=111&lid=2725)

    В новых релизах — болт: картинка становилась с серым фоном в предприятии… А потом, на кубани Uho показал, как делать с помощью OLE-объектов… это тоже самое, что и у вас.. на форму кладешь OLE-объект ворда или экселя, в открытом офисе втыкаешь картинку ну и т.д..

    Reply
  62. Dolly_EV

    (59) А вот это посмотри — тоже ОБЪЕКТ? у меня как картинка

    Reply
  63. Ёпрст

    (65) да блин. Создать картинку , именно картинку — не проблема. И у вас это — картинка.

    Только вот проблема — её правильно распечатать — нажми на предпросмотр в самом пофигураторе — поймешь, о чем я.

    Reply
  64. Dolly_EV

    (66) да все нормально на предпросмотре!!! в работу уже запустил — на туже счет-фактуру, что с дедом морозом была!

    Reply
  65. Dolly_EV

    (66) Трабла в том, что сей … ммм … фокус НЕ ВСЕГДА удается повторить! я к этой картинке в дополнение хотел георгиевкую ленту еще в другое место прилепить — не получается — черный фон вместо прозрачности при вставке 😥

    Reply
  66. Dolly_EV

    (66) ActiveBmp и bmp_1C из (64) поста — сейчас (27-й релиз) имеет смысл попробовать?

    Reply
  67. Ёпрст

    (67)>>>да все нормально на предпросмотре!!!

    Это нормально — по твоему ?

    Reply
  68. Ёпрст

    +70 картинка обрезается, при печати — тоже.

    Reply
  69. Ёпрст

    (68) повторить легко — копируй 2 объекта одновременно в открытом ворде/экселе.

    Reply
  70. Dolly_EV

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

    Но цвет — прозрачный! 😉

    Reply
  71. Dolly_EV

    (71) и, кстати, с 2007-го офиса — не получается никак — вместо прозрачности — белый фон

    на (69) ответь

    Reply
  72. Ёпрст

    (73) Попробуй подогнать печать таким способом — умаешься..

    Проще уж OLE-объект воткнуть — там и пропорции правильные и всё печатается как надо.

    Размер только — ого-го..

    Reply
  73. Ёпрст

    (69) размеры плавают… можешь скачать — сам увидишь — при печати ж..а

    🙂

    Reply
  74. Dolly_EV

    (76) ну тогда и качать не буду 😉 вобщем проблема открыта…

    Reply

Leave a Comment

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