<?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='\
Документация оформлена в стиле MSDN
Скриншот , хоть один, стоит добавить.
(2) А скриншот чего выкладывать? Гугла? Или проверочной обработки с 1 кнопкой?
А что тут смешного ? Я , например, первый раз вижу такую картинку.
И первый раз слышу ,что в Гугле есть календарь.
Пока даже не могу понять как это использовать в 1с .
Ты того.. ты нас не обижай. Не знающих, не ведающих про ВК и для чего они вообще нужны. «Нас тьмы и тьмы и тьмы..».
хорошая штука
А есть что-то для интеграции с MS Outlook?
(6) А что именно? Список событий оутлука получать?
Какая шикарная документация! Чем такое можно сделать?
(8) Это только для .NET проектов — Sandcastle.
Добавил описание самого сервиса 🙂
Штука прикольная, но пока нету идей для чего бы интересного ее использовать.
(9) Такое можно сделать далеко не только для .NET-проектов и не только Sandcastle 🙂
(11) Можно, но надо писать 😉
А для автоматической генерации в 1С — тут совсем тяжко 🙂
Спасибо, буду иметь в виду.
Хотя мне вот однажды пришлось еврейский религиозный календарь делать, на Гугле всё равно такого нету.
народ как освоить эту тему? где почитать азы про ВК?
ПолучитьСобытия() Возвращаемое значение
Массив объектов
Значит в 7.7 его получить нельзя?
(14) Какую именно тему? Может это поможет?http://infostart.ru/community/groups/8/
(15) ComSafeArray — можно, 1С++ что ли умеет.
(16) Пробовал с помощью OLEExSuphttp://infostart.ru/public/20041/ ,выдает тип данных VT_UNKNOWN
http://www.1cpp.ru/forum/YaBB.pl?num=1234282554/30 .
Подобная проблема обсуждалась в
«Да, Андрей, расскажи. Я так понимаю, ты получаешь фигурки от компоненты Душелова?
Пральна.
И по подсказке trad’а Василий наладил компоненту.
Теперь все возвращается правильно, VT_DISPATCH»
Можно ли это решить подобным образом?
Пробовал создать событие по примеру.
Код:
АтрФормы=СоздатьОбъект(«АтрибутФормы»);
АтрФормы.УстановитьАтрибут(Форма,»Календ»);
ТекКалендарь=СоздатьОбъект(«АктивИкс»);
ОбъектФорма.СоздатьЭлементУправления(ТекКалендарь, «Календ»);
ТекКалендарь.СоздатьЭУ(«Душелов.GoogleCalendar»);
Календарь=ТекКалендарь.Объект;
Логин = «бла бла бла»;
Пароль=»бла бла бла»;
Календарь.Идентификация(Логин, Пароль);
НовыйКалендарь = Календарь.Новый(«Календарь»);
НовыйКалендарь.Заголовок = «График платежей»;
СозданныйКалендарь = Календарь.ДобавитьКалендарь(НовыйКалендарь);
//изменяем заголовок
СозданныйКалендарь.Заголовок = «График поставок»;
СозданныйКалендарь.Обновить();
Календарь.УстановитьТекущийКалендарь(СозданныйКалендарь);
НовоеСобытие = Календарь.Новый(«НовоеСобытие»);
НовоеСобытие.Заголовок = «Встреча с поставщиком»;
НовоеСобытие.Текст = «Не забыть захватить презентации»;
Местоположение = Календарь.Новый(«Местоположение»);
Местоположение.Значение = «Москва, ресторан Дурдин»;
НовоеСобытие.Местоположения.Добавить(Местоположение);
Период = Календарь.Новый(«Период»);
Период.Начало = Дата(‘20091127’);
Период.Окончание = Дата(‘20091127’);
Напоминание = Календарь.Новый(«Напоминание»);
Напоминание.Минуты = 1;
Напоминание.Метод = «email»;
Период.Напоминания.Добавить(Напоминание);
НовоеСобытие.Периоды.Добавить(Период);
СозданноеСобытие = Календарь.ДобавитьНовоеСобытие(НовоеСобытие);
СозданноеСобытие.Обновить();
Новый календарь создается, а вот событие нет. Что не так?
А есть ли планы на развитие компоненты?
(19) Пока нет.
(20) Не удаляются события
На Эл.Удалить() вылетает Exception
http://www.google.com/calendar/feeds/default/private/full/hid0sgc2r8tnobpfo81l 6e64a8/63403920840 »
«{ОбщийМодуль.GАвтоматическиеОповещения(31)}: Ошибка при вызове метода контекста (УДалить): Произошла исключительная ситуация (Dushelov.GoogleCalendar): Execution of request failed:
Василий подскажи в чем дело.
(21) Видимо, гугл изменил API.
Будем время — посмотрю.
Объясните новичку, можно ли работать с сервисом, если у нас инет через прокси? И как это сделать?
не перестают меня удивлять такие штуки 🙂
круто ❗
конфигурация УТ 11.1, запустил тестВК в обычном приложении, логин пароль по датам все события и в результате:
{Форма.Форма.Форма(50)}: Ошибка при вызове метода контекста (ПолучитьСобытия): Произошла исключительная ситуация (Dushelov.GoogleCalendar): Execution of authentication request returned unexpected result: 407
{Форма.Форма.Форма(19)}: Ошибка при вызове метода контекста (ПолучитьСобытияЗаПериод): Произошла исключительная ситуация (Dushelov.GoogleCalendar): Execution of authentication request returned unexpected result: 407
пароль проверил верен. может из-за прокси? но вроде где-то в настройках конфигурации указывал.
(22) dushelov, получается вообще не было смысла качать? компонента не актуальна и не работоспособна?