<?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='\
в бп 3.0 не работает
(1) aykcion@, Конечно не работает, БП 3.0 вы запускаете в управляемом режиме, а эта обработка на обычных формах.
Всегда радовал нездоровый интерес почти всех одинэсников написать свой собственный велосипед на 1С.
Начинается всё с «перенумераторов» документов и заканчивается собственной системой баг-трекинга. Практически в любой средне-крупной конторе, где есть собственные программисты, имеется своя «База заявок». Зачем? Фор фан?
(3) JohnyDeath, почему «нездоровый»? Сам-то чем пользуешься? Или тебе это не надо. ИМХО, автор постарался. В любом случае, интересно в качестве примера.
(3) JohnyDeath, 1С как единая точка входа довольно удобно.
Заставить пользователей делать что-то в сторонней программе сложнее, чем допилить 1С.
(3) JohnyDeath,
Полностью согласен, что велосипед.
В организации есть и sharepoint и tfs, и более того к ним организовано подключение через 1с. Даже с инструментами на Trello организована какая-никакая связь. Но в любом случае для получения более детальной информации в них приходится переключаться. Для привыкших — легко. а вот для новых пользователей мало того что доступ надо организовывать, логины, пароли настраивать, так еще и обучать как в них работать.
Прежде чем писать свое, я поискал на просторах инета да и инфостарта аналогичные обработки, но не нашел, поэтому и возник «нездоровый» интерес
(1) aykcion@,
А для каких целей предполагаете использовать в Бухгалтерии 3.0
В планах есть Перевести на управляемые.
Могу держать в курсе
(4) ИМХО, 1С не предназначена для таких вещей, как интерактивная работа с графикой. Для этого есть много более удобных инструментов (от github до kaiten).
К тому же карточки должны быть привязаны к задачам, которые, внезапно, тоже захочется учитывать. И вот тут нарисовывается очередная своя-родная «база заявок».
Автор безусловно постарался и как пример, наверное, очень интересно.
(3) JohnyDeath, придя на работу открываешь Outlook. открываешь 1С, открываешь sharePoint… и весь день щелкаешь между окошками с разными интерфейсами и принципами работы..
1С имеет единую методологию работы с данными и единый внешний вид, что облегчает работу мозгу пользователя. Если уж основная корпоративная система на 1С, то туда все и надо пихать. Если основная система MS Office, то тут календарики и задачки в Outlook делай. Но единообразие — гуд.
У меня вот на работе учет рабочего времени в 1С, а табеля мы сдаем в бухгалтерию через портал sharepoint. Каждый раз плююсь от того, что попадаю в недружественную среду.
Вопрос автору, в какой сущности (в каких метаданных) хранятся задачи, доски и связь задач с досками?
(9) А зачем вы outlook открываете? Почему его не впихнули в 1С? Какой-нибудь фотошоп тоже в 1С будете пихать?
Для разных задач подходят разные инструменты. И не надо пытаться впихнуть невпихуемое.
(11) JohnyDeath, все, что органично можно впихнуть в одно место. надо впихивать!
Вы вот утрируете, а такой вопрос: если на предприятии ERP стоит от 1С, то хорошо ли ставить документооборот на SharePoint?
(12) Я ж выше написал свое мнение — 1С не предназначена для интерактивной работы с картинками и прочими интерфейсными прелестями.
SharePoint я не очень люблю, но когда-то просто не было другого выбора и возможно на нем уже много чего завязано.
(10) monkbest,
В данной обработке Доска — это таблица значений ячейками которой служат элементы «Структуры». По сути дела каждая карточка это отдельная структура со своим набором характеристик
Наименование, дата время, Описание, Цвет, таблицы с комментариями и путями к вложению.
Вносится изменение в карточку, обновляется структура, заносится в определенную ячейку таблицы.
Сейчас думаю над тем как обеспечить многопользовательский доступ к таблице
Пока пробую хранить ее в регистре сведений в виде «хранилища значений» смотреть кто и когда ее редактировал и обновлять форму табличного документа
(14) т.е. текущая версия не завязана на метаданных и каждый раз при открытии открывает пустую доску?
(15) monkbest,
Не совсем верно
Используется стандартный механизм сохранения восстановления. так что если есть сохраненная настройка, то она подтягивает последнюю открытую таблицу значений, которая отображалась в момент закрытия обработки.
Кроме стандартного механизма прописаны процедуры ручного сохранения доски на компьютер. По нажатию на кнопку [Доски] в левом верхнем углу, обработка сначала предлагает сохранить текущую таблицу в файл, а затем восстановить уже сохраненную таблицу из файла.
Формат файла — это переведенная во внутреннюю строку структура с таблицей значения. Файл имеет расширение *.str
Прикольно, а когда на управляемых планируете запилить?
(17) mulla1979,
Сейчас планирую сделать ее многопользовательской и привязать к CRM думаю займет недели 2-3, а потом попробую на управляемые перенести
А в какой конфигурации и для каких целей хотите использовать обработку?
(18) мы тестируем взятую с ИС конфигурациюService Desk FREE , хотелось бы для наглядности работы нашего ИТ отдела видеть такую штуку в данной конфигурации.
А я пока в процессе добавления вhttp://infostart.ru/public/556514/ интеграции с электронной почтой. Но зато драг-дроп работает уже сейчас 🙂
Еще один аналог канбан доскиhttp://infostart.ru/public/552480/ и управление задачами.
А мне понравилась реализация.
С точки зрения функционала — всё вполне юзабельно. Да, вероятно можно было нарисовать и покрасивее (черный шрифт на темно синем — не самое лучшее сочетание), но это я уже придираюсь.
Что касается функционала — не хватает автоматического сохранения и автоматической загрузки из файла при открытии. Кстати, думаю этот функционал можно без особых усилий спереть из типовой обработки «Консоль запросов» (обработчики ПриОткрытии, ПередЗакрытием).
(22)
Благодарю за отзыв, Евгений.
Автоматическое сохранение и загрузка реализованы уже в текущей версии через стандартный функционал Сохранения/Восстановления настроек
Ну емае. Выглядит грамотно и привлекательно, но не завязано на метаданных это для меня жирный минус.
Нельзя прикрутить для отдела разработки, где нужно связывать с деревом метаданных и справочной документацией.
По сути нужно все переписывать/дописывать заново.
Решение пригодно только в тех случаях, когда:
1. Все сотрудники работают в одной и той же базе.
2. ВСЕ сотрудники работают в 1С.
3. Не требуется какой-то более продвинутый функционал.
По этой причине в большинстве случаев проще использовать стороннее решение и интегрировать его в «привычную среду». Доска в 1С прикольно, но кто этой доской пользуется? Если только для своего отдела, то странно. Если для всех, то там будет куча вопросов по управлению проектами. Доска это только малая часть.
(24)
Наоборот ) Можешь прикрутить ее к любой конфигурации.
Я ее уже использую в конфигурации CRM
Элементами карточек стали электронные письма
(25)
С 1 и 2 пунктами полностью согласен. А вот по функциональности — это в любом случае вопрос «допиливания» функционала под конкретные нужды. В текущей реализации доработанная версия используется в отделе технической поддержкой для управления сроками ответов на вопросы пользователей.
(27)
Ну да, ТП, пожалуй, самое то, раз там же CRM. Было очень интересно, как это завязано (если завязано) на работу сотрудников других отделов. Т.е. если ТП работает с «собственными» сотрудниками (не «внешние» клиенты), то было бы интересно заморочиться в сторону совместной работы. Потому что в данном варианте нет обратной связи (сами себе ведем план работ, сами себя контролируем). В таком разе весь функционал можно получить в любой другой «доске» и интегрировать в 1С только ее отображение. Т.е. тот же Документооборот может выдать нужный результат, редмайн опять же, да что угодно. Или не уловил фишку?
(9)
А если нужно создать собрание? Пилить в 1С? или может быстрее, удобней создать задачу в Аутглюке?
Так что «все пихать в 1С» это не вариант. Можно конечно, но только если нечем заняться 😉