<?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='\
А в версии Супер-ЛайтЛайт будут сняты ограничения по дате … 😉
хочется сабж для 7.7!!!
Как обкатаю Lite для 8.0 — займусь 7.7
Схема ее работы будет аналогичной для Lite версии 8.0 (т.е. использование MXL файлов).
На данный момент интересует отзывы по производительности при сколь нибудь большом числе контактов (более 10)
По дате, по мере выхода бета версий срок ограниченния будет сдвигаться, т.е.срок «жизни» беты около 1,5 месяца
Сhe Burashka, а что ты так навязчево хочешь себе «болтушку» именно в 1с? ИМХО, пихать всё подряд в 1С не есть хорошо. В данном случае можно найти себе абсолютно бесплатную «аську» для локальной сети.
Конечно есть множество софта для общения в локальной сети. Но в свете его использования с 1С у сервисов интегрированных в конфигурацию есть явное приемущество:
1. Возможность в сообщениях передавать ссылки на объекты базы данных (именно ссылки, а не номера и коды справочников с последующим их поиском)
2. Отсутствие необходимости установки дополнительного софта на рабочие места пользователей (ведь зачастую админы это запрещают делать)
3. Возможность генерации сообщений алгоритмами конфигурации (например оповещение об оплате или сборке товара)
Проект Служба мгновенных сообщений (Lite) закрыт!
http://www.infostart.ru/projects/341/?ref=1510
Если кому нужен подобный сервис — используйте
А что так? Почему закрыт?
под 1С — это не болталка и много не сожрет. нужно некое пространство общения не выходя из 1Сины — прикрепить арточку клиента, послать манагера на реализацию посмтреть…
Для ЧеБурашки:
А в чём проблема с болтушкой?
У Митичкина в учебнике написана сообщалка с прикреплением объектов базы.
Ну, и… написать такую по учебнику?
Скажите, а не-бету купить можно? Нужна именно внешняя обработка.
(6) Мне он стал не интересен.
(9) Поскольку проект закрыт, то «не-беты» нет. Можно ничего не покупать 🙂
Если есть желение самостоятельно что-то доработать — дерзайте, модкль обаботки для платформы 8.1 без пароля. Если кому потребуется ее довести до ума — обращайтесь…
Спасибо ещё раз за удобную штуку!
А как бы её на серверную УТ8.1 зацепить, а то ругается :{ВнешняяОбработка.СлужбаМгновенныхСообщений(132)}: Ошибка при вызове метода контекста (СоздатьКаталог): Ошибка создания каталога
СоздатьКаталог(КаталогДанных + ?(Владелец = Неопределено, Идентификатор, Владелец));
по причине:
Ошибка создания каталога
по причине:
Ошибка при выполнении файловой операции ‘\Belfort-srv’
(12) Поскольку обработка для хранения своих данных не использует БД конфигурации, то ей нужен каталог для хранения.
Вам необходимо в макете обработки «КаталогДанных» указать путь к общему каталогу, доступному на запись для всех пользователей. По умолчанию там указан каталог \Belfort-srvwork1CСМС, у вас такого ресурса в сети нет — вот и выдается сообщение об ошибке.
у нас есть общий для всей компании диск «Z» (виден с любого компьютера) как прописатьпуть к папке SMS на этом диске? «Z:SMS» Так?
да
исправил строку в текстовом макете на: \Наш_серверНаш_каталог\r
все равно выдает :Ошибка при выполнении файловой операции ‘\Belfort-srv’
Довел до ума под свои нужды и удачно заинтегрячил в рабочую конфу:
1. Путь к данным храню в константе.
2. При закрытии обработки удаляю файл сообщений, чтобы не забивать место на винте.
3. Добавил возможность созадние задачи для пользователя.
Так что однозначно +!
(16)
Нужно перед закрытием дописать:
ОтключитьОбработчикОжидания(«ИмяПроцедуры»);
Там при открытии они подключаются, и остаются висеть после закрытия обработки, т.е. фактически обработка остается открыта в фоне.
Кроме того рекомендую переделать чтение статусов из файлов на регистр сведений, т.к. при большом кол-ве пользователей очень сильно тормозит работу системы вцелом.
К сожалению, не совсем ясен принцип работы.
Я открыл 2 окна 1С, зашел под разными пользователями, общую папку прописал.
И там и там пустое окно без имен пользователей.
Смотрю он как то странно в папке создал еще подпапки и в каждом положил файл Статус.
При этом обращается за этим файлом Статус совсем в другую папку.
Опишите принцип работы данной обработки. Спасиьо!