<?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='\
+ за просьбу не плюсовать 😀
Поставил плюсhttp://www.infostart.ru/public/15688/ .
http://www.infostart.ru/public/15688/ , или попроси coder1cv8 сделать ссылку на твою публикацию. Иначе потеряется твоя полезняшка, и
Но раз уж так — дай ссылку на свою доработку на форуме
— останется лишь мечтой
Ах да, есть ещё всякие мелочи. Например, если дата начала сессии не сегодняшняя, то подсветится красным, так «висяки» сразу видно. Возможно, прикручу и время бездействия для каждого юзверя…
Плюсанул и там и тут… весчь полезная — доработки нужные )))
Было бы не плохо скриншотик какой-нить, и описание по лучше…
http://infostart.ru/public/21475/
ЗЫ: Мой давнишний вариант обработки coder1cv8 (за что ему спасибо!):
Замечательная штука — возьму на вооружение. Правда, на работе пользователи через терминальный клиент citrix’a подключаются — обработка не работает 😥
(5) Ага, хорошо, что ты проявился — я что-то не сумел откопать прямой линк на твой вариант. Тебе спасибо тоже!
Плюс за полезности и отсутствие наглости.
просьба
на 7.7 что-то подобное.
Скачал… запустил.. «Только клиент-серверный вариант»…. лимит скачиваний исчерпан. спасибо! 👿
(10) Упс, поправлю, конечно. Виноват. 🙁
+1. Немного подработал под свои нужды.
Не работает когда предприятие запущено на сервере терминалов.
Интересно, почему 1с штатно в системе этого не реализует. Вещь то незаменимая
рахмет за штуку такую, очень полезная вещь!
Поленая вещь! У меня не работает в файлом варианте!
Хочется скачать, а не могу балов не хватает 🙂
а есть ли такая фитча для файлового варианта?
Не работает через сервер терминалов. А вообщем вещь полезная.
Выдаёт ошибку (клиент-сервер):
{Форма.Форма.Форма(221)}: Ошибка при вызове метода контекста (ConnectAgent): Произошла исключительная ситуация (V81.COMConnector.1): Различаются версии клиента и сервера (8.1.15.14 — 8.2.14.519), клиентское приложение: COM-администратор
Что может быть ?
Выдаёт ошибку (клиент-сервер):
{Форма.Форма.Форма(221) }: Ошибка при вызове метода контекста (ConnectAgent): Произошла исключительная ситуация (V81.COMConnector.1): Различаются версии клиента и сервера (8.1.15.14 — 8.2.14.519), клиентское приложение: COM-администратор
Что может быть ?
Пришлось на форуме пофлудить чтоб скачать, и тож самое)
Решение было на поверхности V82.COMConnector.1
На 8.2 пойдет?
на 8,2 подойдет Управление Торговлей
Спасибо! Вещь очень полезная, много функций, которых так не хватает в штатной конфигурации!
на 8,2 подойдет Управление Торговлей
Что значат ваши слова? На 8.2 УТ 10.3 внешняя обработка не может быть прочитана текущей версией программы.
Очень полезная вещь.
Спасибо, пригодится. Будет ли доработана?
🙂 вот это вещь
Спасибо, пригодилось!
Чтобы сообщение передавалось по локальной сети, на компьютере с Windows XP пользователя должна быть включена служба Messenger — некоторые умельцы-олптимизаторы отключают ее. 🙂
Хорошее дополнение для вот этой обработки:
http://infostart.ru/public/21475/
Автору спасибо за хорошую обработку!
У меня все заработало в 1С 8.2.14 КА. Сообщения отправляются, пользователи выгоняются…
Автор молодец, очень социально-ответственный человек =) Весьма нужная обработка!
(26) Гость, Это означает, что отличается версия программы 1С. Решение: открыть в своем конфигураторе и сохранить.
спасибо. выручает периодически.
На 1С:Предприятие 8.2 (8.2.14.540) не заводится. После конвертации выдает:
Ошибка при прерывании соединений: {Форма.ФормаСписка.Форма(263)}: Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса: Недопустимая строка с указанием класса
(35) Знаю. У себя переделал, а выложить обновлённую забыл, замотался. Извиняюсь. Выложу на днях.
(36) отпишись плиз в теме — чтоб люди по подписке увидели обновление
Эта штука выгоняет не важно из sql или файловых баз?
Что то не могу понять, клиент — северный режим это что?
Вот у меня база лежит на одном компе,а на других стоят клиенты в которых прописан сетевой путь к базе. В каком режиме у меня работает?
(39) nick_e, файловый.
Короче говоря, времени у меня нетути, поэтому, кому нужно, поправляйте строку V81.ComConnector на V82.ComConnector соответственно. Там есть ещё тонкости, но это точно не сейчас. Приношу извинения, но я и так работаю по 14 часов в сутки.
Спасибо за обработку
Автор понимаю что занят скажи пожалуйста твоя обработка будет работать в кластерной системе с 10 рабочими процесами, будет выгонять активных пользователей. Большинство обработок етого не умеют. Зарание спасибо за ответ.
(44) Честно сказать — не пробовал. Уже не помню. 🙁
(41) Очень жаль, что у автора нет времени на доработку обработки под платформу 8.2. Предложенный вариант с заменой строки почему то не сработал, может есть еще какие тонкости?..
Для 8.2 выгонялка хорошо описана здесь:http://infostart.ru/public/77671/
а есть уже готовый вариант чтоб опробовать на деле?
кстати этотhttp://infostart.ru/public/90241/ вариант еще никто не пробовал?
Если надо отключить всех, кроме себя, то код ниже подойдет:
Показать
С чем может быть связана вот такая ошибка:
Ошибка при прерывании соединений: {Форма.ФормаСписка.Форма(263)}: Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса: Недопустимая строка с указанием класса
(51) Ну как я могу сказать навскидку, не видя саму строку с указанием класса?
Скорее всего не установлена COM-компонента 1с.
Либо вызываете не ту версию коннектора.