<?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='\
а мою обработку по управлению заказами и публикациями выпилили ссылаясь на п 5.2.4, 5.2.9
(2) дык в этой публикации не парсинг, а просто переход по ссылке и работа с локальными файлам
а вообще хорошо бы в git что бы хранилось:
на любом компе открыл обработку, ввел логин пароль гита и имеешь свой каталог ну и версионирование, когда чужие обработки допиливаются.
а потом прекомитом разбирается все это на исходники и поиск контекстный по коду работает)
(4) По поводу git, подумаю)
Достаточно иметь я-диск (или другое хранилище) со структурированными каталогами по номерам публикаций. Искать и пользоваться удобнее на инфостарте (как минимум из-за тегов и фильтров).
P.S. С git интересная идея
Автор явно тяготеет к одной актрисе. 🙂 Жаниться тебе надо, боярин…
(7) 😉
(8) Да вы прям все тут молодцы! И Александра, душенька, хороша как всегда, и обработка просто великолепна!
(9) Спасибо!
(7) С языка снял 🙂
(12)
Если бы движок этого сайта не был бы таким кривым и убогим, то подобный функционал был бы в личном кабинете
Потрясающая вещь! давно искал такой инструмент для порядка своих отчетов и обработок, автору — низкий поклон!
можно добавить группировку обработок помимо избранного?
(17) На данный момент нет
Ждем следующую серию публикацией с обложкой с лысым из браззерс.
(19) спасибо за идею! ТОЧНО!)))
(4) Гит это классно.
Но для приватных репозитариев он платный. А хранить чужие обработки в репозитарии с общим доступом как-то вроде не очень корректно.
Аудитория Инфостарта с аудиторией Гита не очень пересекается, но все-таки.
В битбакете приватные репо бесплатные например
+ законструктор условного оформления
Отличная работа, мне понравилось
(24) спасибо
(21) git бесплатен. Приватные репозитории на github — платные. Приватные репозитории на gitlab — бесплатные
Небольшие комментарии (плюсы, минусы и развитие) после начала использования:
1. Контекстное меню «Переименовать» — не нужно, это лишние клики мышкой. Интуитивно переименование гораздо проще непосредственно в списке, с помощью F2. Для этого нужно снять с колонки Наименование галку «Только просмотр«. А чтобы при этом выбор отрабатывал как положено (без входа в режим редактирования строки) — установить СтандартнуюОбработку=Ложь в событии Выбор.
2. Модальные окна (в том же переименовании) — атавизм… Через ПоказатьВводСтроки кода получается столько же, но работает без ошибок и лишних сообщений о несовместимости.
3. Отсутствие пункта «Изменить форму» в кнопке «Ещё» — непонятно. Возможность кастомизировать форму под себя всегда есть хорошо, это штатная возможность платформы, зачем её отключать?
4. В тонком клиенте работает ничуть не хуже чем в толстом, не понимаю зачем эта приписка («Запуск через толстый клиент»). Полученное ИспользуемоеИмяФайла всё равно используется на клиенте, так что упоминаемый «серверный вызов», использованный для его получения, не мешает работе и в тонком клиенте.
5. Про группировку говорили, я скажу про тэги. Было бы весьма удобно иметь возможность удобного тэгирования обработок и, соответственно, отбора по тэгам. Кажется что применённое хранение данных в XML позволит сделать это с лёгкостью.
6. Жалко что Инфостарт не разрешает парсинг 🙂 возможностей по улучшению было бы гораздо больше (хотя кто мешает доработать, но не выкладывать официально, так ведь?)
7. Непонятно почему не сделан такой, казалось бы, ожидаемый механизм как открытие выбранной обработки.
8. Значение каталога лучше один раз в ПриОткрытии закэшировать в переменной, чтобы не дёргать сервер каждый раз для его получения (при обновлении, при открытии каталога).
Internet Explorer 10 и выше версии, и добавить запись в реестр ОС (благодарю за решение Вадима Стельмаха).
4.1. Идём в реестр: HKCUSoftwareMicrosoftInternet ExplorerMainFeatureControlFEATUR E_BROWSER_EMULATION
4.2. Добавляем 1cv8.exe — REG_DWORD — 11001
Все сделал, но не работает 🙁
У меня Internet Explorer 11
(29) хм… странно, должно работать.
Я подобный глюк словил дома, сделал всё то же самое. И так и сяк, но потом само заработало.
Честно я не понял логику, а на компе где разрабатывал — сразу заработало.
Причем Вадим Стельмах именно для IE 11 давал рекомендации, а у меня стоит 7-ка по этому проверял на IE 10.
(30)Может быть у меня что-то в настройках самого IE 11. Вылезает окно с сообщением — «На этой странице произошла ошибка сценария».
(31) да то же лучше всё разрешить в нём. Я вот искал способ можно ли использовать допустим хром но не чего не нашел. Только IE(((
может помогут ссылки:
http://www.appius.ru/support/faq/31/788/ <- это я точно делал
http://www.forum.mista.ru/topic.php?id=586871
(32)Вроде бы сделал все, что в ссылках, но не помогло 🙁
(33) по любому древняя версия грузится платформой, влить я как понял только через реестр винды.
Почему не отрабатывает… я тут не селён. Но в обработке через контекстное меню можно открыть во внешнем браузере по умолчанию который установлен в винде.
Собственно тема где мне помогли —https://forum.infostart.ru/forum9/topic178893/
(17) Да, группировки очень нужны, у меня каталог уже большой, без дополнительных папок я бы в нем по полчаса рылся отыскивая то или иное.
(34)В реестре у меня то, что на картинке. Кажется все написано правильно.
(21)на gitlab приватные репозитарии бесплатно даются.
(35) Попробую реализовать.
(38) А это справочник? Там недостаточно просто иерархию включить?
(39) нет это список, это внешняя обработка, которая все данные хранит во внешнем xml рядом с собой
(36) Привет, Ильдар. Ну вот и у меня проблема выросла.
Мне установили на работе windows 10, и так же не получилось не чего.
Решение проблемы простое, на windows 10 другое название exe файла.
Не 1cv8.exe а правильно 1cv8с.exe
4.1. Идём в реестр: HKCUSoftwareMicrosoftInternet ExplorerMainFeatureControlFEATUR E_BROWSER_EMULATION
4.2. Добавляем 1cv8с.exe — REG_DWORD — 11001
(41) Спасибо ! Работает.
(0) А можно ли сделать иерархический список ?
(43) я подумаю,чуть позже…
Я как то так и не понял, это обработка, ок, а нужно постоянно коннектиться к сайту инфорстарта ? То есть в данной публикации только идёт закачивание инфы с сайта, базы в которой бы это хранилось тут нет ?
(45) вот допустим есть у вас обработки с сайта. В количестве 20 шт. Хотите иметь к ним удобный доступ, тогда формируете каталог как написано в описание и данную обработку кладёте в корень. База хранения информации об обработках кладётся в XML рядом с обработкой автоматически. Нет зависимости от конфигурации, чисто внешняя обработка со своей «базой» в виде XML и каталога папок windows с вами скаченными обработками. Вы можете отмечать в ней вести свой рейтинг избранного.
То есть нужно в подпапке Инфостарт создать подкаталоги с номерами публикаций ?
«старые не перезатИраются» — поправьте
«дополняется только новыми папками из корНевого каталога»
Не очень понятно в случае того , если я использую не браузер IE, а Гугл Хром, например.
И туда же закинуть сами файлы обработок ? То есть они не качаются с сайта Инфостарт ? А как быть , енсли, например. версия обработки обновилась ?
(48) Если бы они качались, это бы противоречило правилам данного сообщества.
По правилам сообщества вы обработки можете скачивать бесплатно в течение месяца с момента первой скачки.
Моя обработка лишь — обеспечивает порядок, ведения своего личного каталога.
(47) У обработки есть возможно открыть описание внутри обработки (в данном случае использует IE), а так же возможность открыть во внешнем браузере по умолчанию в системе — допустим гугл хром. На скриншоте виден пример в публикации.