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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *