<?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='\
Вот нашел у себя в «архивах», возможно кому-то пригодится… )
Хитрый, однако…
ты продемонстрируй как заказать уведомление о доставке и уведомление о прочтении — разными своими методами…
вот будет тебе тогда почет и уважение…
(3) Уведомления есть в «Почта» и «ИнтернетПочта», а так же через «Outlook Express»…
Как сделать в CDO и MAPI не знаю, не интересовался как-то…
ЗЫ: Что значит «своими методами»?… ) Это не мои методы, это просто примеры! ) Я CDO предпочитаю, если что… )
(3)>Я CDO предпочитаю, если что… )
Да Чебур и сам CDO-шит направо и налево 😉
Для коллекции стоит упомянуть ROM-Mail.dll. Еще DialMail.dll есть, но с ней я не работал.
(0) Добавь еще мою, для отправки через SSL 🙂
(5) А я ни с той, ни с другой не работал… )
(6) У тебя АктивИксы, конечно, суперские! Но ВК я стараюсь избегать по мере сил… )
(5) > Еще DialMail.dll есть, но с ней я не работал.
А ты поработай и забудешь про Rom-Mail
(7) Ю Но ВК я стараюсь избегать по мере сил
Почему?!
(8) А есть еще «Mozilla Thunderbird» — ваще крутяк ;))))))
(8) Ну как почему? Во-первых пишу на восьмерке, а тут уже кое-что и без ВК можно сделать (привык обходиться), это 7.7 без ВК полный ноль. Во-вторых от ВК страдает «переносимость», так сказать, разработки, длл-ку зарегить, файлик положить куда-надо и т.д.
(9) Вот поставил себе это чудо, в целях искоренения не лицензионного софта! 🙂 Пока не копался особо, но возник уже вопрос: а что как в Bat-е несколько ящиков сделать можно, али как?…
(3) В cDo — уведомление о доставке — можно, а вот уведомление о прочтении — не нашел как..
(9) Тандеберд — какой-то гадкий выкормыш.. вроде и нормально все… но что-то не то…
Я себе Бат купил домой и не парюсь…
(10) в Тандеберде — можно несколько ящиков
(13) Да, спасибо, нашел уже… ) А вот пароль на просмотр содержимого ящика похоже не поставить как Бат-е…
(14) с паролем в тандеберде тяжело — я пока поставил глобальный пароль.. При этом в Бате такой пароль не дает посмотреть ничего — пока не пройдешь окно авторизации, в тандеберде — это филькина грамота — горит главное окно программы с перечнем ящиком, листом сообщений и на фоне этого — окно авторизации… имхо — бред полнейший…
(15) Плохо. А подскажи где этот пароль устанавливается?…
Сейчас…
Меню-Инструменты-Найстроки-Приватность — про мастер пароль.. но это, е-мае, не пароль на ящики… это немного другое… как оказалось
(18) Странно, вроде лазил туда, а не заметил… Ок. Спасибо. Гляну на досуге…
+ идиология и как приммеры для своих разработок очень пригодиться!
(15) 2 Che Burashka :
Хочу Вас сильно огорчить — увы, в обычном Бат-е пароль — ето тоже ГЛОБАЛЬНАЯ ФИКЦИЯ !!! :-(((
Он ни от чего не защищает, а обойти его — 2-3 клика мышкой в нужном месте…
Это я Вам, как программер и сисадмин, говорю… Ж8-)))
Есть вариант — The Bat! Voyager — тот работает с ЗАКРИПТОВАННЫМИ базами, уже что-то… 🙂
Так что, будьте осторожны — даже дома ! 🙂
(22) > Так что, будьте осторожны — даже дома ! 🙂
Особенно дома!!! 😉
Вот как тут легализовать домашний софт? ) Тандерберт — действительно фигня какая-то… (
(24) Пока не выйдет Тандерберд v3.0 — купить Бат домой и не мучиться —
дешевле выйдет, сэкономите на таблетках от головной боли… :)))
А кто-нить это проверял? У меня задача — отправить на лист.ру е-майл. В принципе, делаю все правильно. Сравнил — тут тоже такой же код, как у меня. Но не отправляется, собака через Интернет почту 🙁
(26) «Отправителя» поставь.
Да ставил. Скорее всего, что-то в настройках ящика нужно делать.
(2) В 1С8 есть такие свойства у объекта «ПочтовоеСообщение»:
Если (флУведомитьОДоставке = Истина) Тогда
ПочтовоеСообщение.УведомитьОДоставке = Истина;
КонецЕсли;
Если (флУведомитьОПрочтении = Истина) Тогда
ПочтовоеСообщение.УведомитьОПрочтении = Истина;
КонецЕсли;
Большое спасибо, очень помогло
Спасибо большое. 😀
у меня почеемуто через аутлук Експресс не работает —
Недопустимая строка с указанием класса
Может нужен Просто аутлук ?(Не экспресс)
Доработайте плиз, чтобы не пытался пустое вложение добавлять. А то поле «Вложение» не заполнено, а обработка всё-равно пытается вложить какой-то файл
Спасибо за примерчик! как раз то что мне нужно было)
Помогла мне когда писал собственную обработку, посмотрел методы и способы работы с почтой
(12) Руки прочь от Mozilla! Гадкий выкормыш это бат, — лучше чем в thunderbird imap никто не поддерживает, — а также можно писать плагины, зная xul, а что можно в бат-е?
модеры, а какого черта x u l отображается как xxx?
Мне помогло очень ! Когда стандартными методами 1С настроить SMTP не получилось. Понравилось что реализованы разные методы отправки в одной обработке.
Зачетная вещь! Еще бы закачку для красоты. Понять бы еще в чем плюсы/минусы и отличия технологий и я был бы счастлив
очень пригодилась обработка для обмена центрального офиса с кассой штрих лайт. до этого использовал фтп синхронизатор и никак не удавалось приучить пользователей выгружать товары в определённое время, чтобы синхронизатор не слал пустые письма, а теперь обработку внедрил и 1с сама при проведении отправляет нужный файл
зачет!
Хорошим дополнением будет мойпример отправки почты через Lotus Notes .
спасибо большое автору. очень пригодилась Ваша обработка!
Мне обработка очень пригодилась для организации переписки разных отделов с прикреплением отчетов не выходя из 1С. В результате в два-три клика менеджер формирует и отправляет отчет.
Помогло для организации уведомления по e-mail менеджеров о необходимости согласования различных документов.
Полгода мучался искал, чем заменить blat.exe для гугл-почты. Спасибо, подсказали, что существует CDO.
В строке 37 модуля объекта нужно вместо
написать
а так — спасибо, выручило.
Спасибо работает 🙂
Эта обработка как готовое решение имеет ряд минусов, но как шаблон для чего своего очень даже. Хорошо написано
Хороший шаблон. Прикрутил с доработками к самописной конфе. Работает на УРА!
При использовании smtp от mail.ru, думаю и многих других, надо
При тухлом соединении еще и
Спасибо! Скачал и буду использовать. Очень полезная обработка!
а как с помощью вашего подхода можно реализовать работу например с GMail. Там идет шифрование, которое не реализвано в стандартных объектах 1С Почта и ИнтернетПочта. Опять использовать stunnel?
Обработка отчеты отправляет?
подскажите, каким образом можно с помощью этой обработки отправлять печатные формы документов или отчётов, что для этого нужно сделать
Здравствуйте!
Столкнулся с интересной проблемой при отправке почты используя MAPI. При отправке почты появляется сообщение «Неустановлен элемент управления Msmapi32.ocx. Установить?» попытка установить не удаётся. ОС Windows 7 x64. сам файл есть Msmapi32.ocx находится в папке C:WindowsSysWOW64. в реестре папраметр «899B3E80-6AC6-11cf-8ADB-00AA00C00905» такой есть и что интересно и раздел с таким же названием есть тоже. Подскажите как быть?
Регистрация в ручную regsvr32.exe C:WindowsSysWOW64Msmapi32.ocx — проходит на «ура». но при попытке отправить возникает такая же ошибка
Спасибо. Помогла отправка через CDO.
Очень классная обработка. Настроил отправку через аутлук и CDO. Спасибо!
Большое спасибо! Как раз искал возможность проверить различные способы отправки письма с сервера, так как встроенный почтовый клиент не хочет работать.
Спасибо, только благодаря этому получилось настроить отправку в mail.ru с SSL шифрованием.
Спасибо!!!
Как раз была проблема с отправкой через Vbs (CDO). Теперь все работает! :))
Огромное спасибо! Это прям то, что нужно!
Спасибо!
Пробую настроить отправку через встроенный клиент, из-за безопасности закрыт 25 и 110 порты… Думаю взять часть кода и добавить функцию отправки почты прямо из отчетов и документов (чтобы сразу печатную форму можно было в письмо воткнуть)
Та же фигня что и у (57) isn,
Рас комментировал попытку и получил вот эту ошибку:
{ВнешняяОбработка.ОтправкаПочты.МодульОбъекта(26)}: Ошибка при вызове конструктора (COMОбъект)
Сессия=Новый COMОбъект(«MSMAPI.MAPISession»);
по причине:
Класс не лицензирован для использования
Еще один +, лайк, респект и просто спасибо!
Иначе SSL + 8.2 просто погрузило в грусть. Взял схему работы с CDO. Для успешной работы с mail.ru и полагаю с яндексом надо добавить
Письмо.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpusessl»).Value=1;
Еще раз СПАСИБО!
Спасибо за обработку. То что нужно!
(67) valvit, с маилом и яндексом сработало ?
(69) kare, да, работает с яндексом
(70) basta-one2007, методом проб и ошибок получилось) спасибо!
Спасибо, настроила отправку расч листков из 1с 7 в Лотус с помощью CDO. одна беда- как бы еще в лотус encrypt передавать…