<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Полезная. Теперь можно обмениваться картами даже с теми у кого нет MindMapper-а.
Ментальные карты очень полезная штука, все никак не могу дочитать книжечку до конца… плюс, адназначна
Отличная вещь!! Спасибо, давно искал нечто подобное.
Прикольно. И код открыт. Спасибо, будем юзать.
Выделяю все объекты на схеме (ctrl+A), хочу передвинуть все (стрелка влево), 1С-ка вылетает (8.1.13.37), как победить?
Спасибо всем за отзывы!
По поводу ошибки, то на версии 8.1.13.41 не удалось воспроизвести. Будет время — поставлю 8.1.13.37 — посмотрю. В любом случае, думаю, что это ошибка платформы (сам несколько раз замечал ее падения, например, при попытке сохранить схему в виде картинки).
чувствую пора уже на 41-ю версию, все руки не доходят блин, а косяков на 13.37 уже реально много навалилось
Очень полезная вещь для структурирования мысли. Особенно, если что-то глобалить.
«Смотрит, все понимает, а сказать не может…» 😀
Напишем русский ARIS в 1С! 🙂
(0) Отличная работа. Не знаю, будет ли кто делать в 1С ментальные карты, но схемки для пользователей рисовать можно.
1. Не хватает комбинации клавиш для создании «соседнего» узла.
2. Не хватает удобной навигации по узлам, например, стрелками.
3. Хорошо бы при создании нового узла сразу переключаться в режим ввода текста.
В качестве фантазии на тему развития: можно добавить элементам функциональность. Например, по двойному клику мог бы открываться документ, форма списка справочника и т. п. Или выполняться произвольный код. Не знаю, насколько это реализуемо, но я заметил у всех элементов поле «Подсказка», в которое можно запихнуть во внутреннем текстовом формате всё, что угодно.
P.S. Сам для ментальных карт всегда пользуюсь FreeMind.
(11)
Спасибо!
По поводу замечаний:
1. Сам думал над этим. Но, к сожалению, графическая схема не хранит в себе информации об иерархии структуры элементов. Т.е. понятие «соседнего» узла нужно как-то самому отслеживать. Как вариант, вышестоящим по иерархии элементом можно считать тот, из которого выходит стрелка, входящая в текущий узел.
2. По поводу передвижения по схеме: стрелками так просто точно не получится (их нажатия перехватывает платформа). А вот какой-то другой комбинацией можно попробовать.
3. А вот переключаться на ввод текста сразу после создания нового элемента — это сделать совсем нетяжело.
(12)
Угу. Я так и предполагал.
Если можно сделать стрелки с Ctrl или Alt, то будет вполне приемлемо.
Создать узел не получается, хоть убейте (( никак. И горячими клавишами, и кнопкой пробовала. Платформа 41.
А ещё хотелось бы создание нового элемента перетаскиванием соответствующей кнопки на поле.
(14)
Чтобы создать первый узел новой схемы нужно нажать «Новая схема» (в левом верхнем углу).
Понимаю, что, может, не удобно и не совсем логично, но уже работаю над тем, чтобы в обработке были вкладки, и там, наверное, при открытии новой вкладки сразу будет создаваться корневой узел. А сейчас создание первых и последующих узлов — немного разные операции с точки зрения логики работы обработки, поэтому я сделал две разные кнопки.
А по поводу перетаскивания — даже не знаю… По моему, в текущей конфигурации обработки (кардинально ее не переписывая) это сделать невозможно. Может у кого-то есть мысли по этому поводу?
(15) Первый создаётся. А остальные — никак.
(16)
Даже не знаю…
Пробовал тоже на 8.1.13.41. Все получается. Единственная мысль, которая приходит на ум, это то, что при попытке добавить новый узел самый первый не является активным. В таком случае обработка не находит активного элемента и не знает, куда добавлять новый.
(17) Да, дело оказалось именно в этом.
вроде прикольная штука. Вот если еще добавить:
1. добавление объектов из метаданных (как при этом отрисовывать пока смутно представляю.. как минимум в качестве текста синоним объекта. наверно круто было бы и внутренности (реквизиты, таб.части) показывать но с возможностью скрыть/свернуть
2. возможность выбора картинки из стандартной библиотеки 1С и из общих картинок конфиги
Использую MindManager, уже на девятую версию переехал
плюс за интересность. Идея вобще не новая, но реализация — неплохая. здесь главное понять логику записей в grs-файле — и можно творить чудеса.
Попробовала, понравилось, буду пользоваться. Очень хорошая идея. Благодарю!
Интересно, реально ли из 1С создавать в MM графы подобно
http://www.graphviz.org/Download.php
и возможно ли передавать события в 1С при клике в ММ например на узел?
Большое спасибо! Здорово, только после 60 узлов рисует с задержками. На какое количество узлов она расчитана?
(24) klen_2007, Проблема может быть из-за того, что при добавлении каждого узла вся графическая схема переформировывается и перерисовывается заново. Может, можно как-то более оптимально сделать, но пока руки не дошли придумать.
Добрый день!
Обработка зависла наглухо при создании очередного (примерно 10-го) узла.
Хотел уточнить, для каких целей создавался этот инструмент?
1) Чтобы можно было нарисовать mind-карту в 1С руками
или
2) чтобы был API, чтобы можно было нарисовать mind катру программно в 1С?
Если 1, то зачем? Чем не устроил xmind
http://philogb.github.io/jit/
https://github.com/kennethkufluk/js-mindmap
Если 2, то чем не устроили, например,
В них можно сотворить что-то наподобие этого:
http://kenneth.kufluk.com/google/js-mindmap/
http://philogb.github.io/jit/demos.html
После некоторых танцев с бубнами поле HTML-документа перестаёт притворяться IE6 и начинает дружить с канвой.
Автор молодец, что хотя бы попытался…
Интерес делать это внутри 1С в том, что можно было бы прикреплять объекты данных 1С, сохранять саму схему в справочниках — а потом из неё (например) формировать инструкции. А на «управляемых формах» — вообще бы могло выглядеть очень красиво ( со ссылками на конкретные документы). Да и возможность влиять на код — тоже достаточно важно
Но юзобилити на самом деле очень посредственное получилось. Видать платформа не позволяет делать то же, что в специализированных программах. Жаль.
Скачал, автору благодарность.
Есть ли опыт после такого произвольного создания схем привязывать к ним бизнес процессы?