<?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='\
Очень круто.
(1) ardn, спасибо.
Жаль, что мне пока не удается выделить достаточно времени, чтобы рассказать о решениях подробнее и выложить в общий доступ. Пока только проверку данных сделал не платной, а за смартмани, и проверку ведения учета выложил в варианте «как есть». Но я надежды не теряю.
За полгода, прошедших с конференции, появилось еще несколько решений, построенных по тем же принципам.
Например:
1. Расчет, хранение и представление произвольных показателей + интегральные сценарные показатели;
2. Управление произвольными задачами через матрицу Эйзенхауэра;
3. Универсальное рабочее место по формированию документов.
Т.е. тема продолжается. Может, на следующую конференцию удастся попасть в качестве докладчика и рассказать 🙂
Мы регулярно используем различные напоминания как о запланированных бизнес-событиях, так и событиях, сообщающих о наличии проблем. Правда без использования предложенных автором терминов «автоинформатор» и «автозадача».
Просим подсказать автора, каково место механизма бизнес-процессов (как механизма платформы) в предлагаемых им решениях?
(3) miavolas, механизм бизнес-процессов не используется. Используется только карта маршрута бизнес-процесса, просто как средство визуализации в одном из решений.
Можете поподробнее рассказать, в каких конфигурациях и какие механизмы используете для напоминания о запланированных бизнес-событиях, и событиях, сообщающих о наличии проблем? И каков сценарий использования этих напоминаний? Каков сценарий контроля отработки этих напоминаний? Ну и любую информацию по этой теме.
Аналогично работаем. Код бизнес-логики максимально в режим предприятия выводим — в дело идут и произвольные отчеты, и использование справочников для хранения/редактирования исходного кода (пример ). Лет 10 назад консоль отчетов очень помогала пользователям свеже-внедренной УПП отлавливать пустую аналитику, которая не давала закрывать затратные счета. Но автоматическое заполнение все-же не рискую, надо и людям давать подумать. Полная автоматизация — грех 🙂
Также большим подспорьем является «консоль запросов с обработкой результата».
(4)
О конфигурациях и их механизмах:
— в управлении торговлей 10.3 использовали типовой механизм оповещения о задачах;
— в типовом отраслевом решении Альфа-Авто тоже использовали штатный механизм напоминаний (там это отдельный регистр сведений)
Нам очевидно, что использование одиночных извещений, даже об очень важных бизнес-событиях связано с ограничением ресурсов выделяемых на то, чтобы продумать бизнес-процессы комплексно. Также нам видится, что бы хотя бы основные бизнес-процессы предприятия, если они длительные или находятся на стыке зон ответственности разных людей желательно автоматизировать с использованием бизнес-процессов(платформы) и уже с привязкой к задачам использовать извещения.
При использовании типового продукта не редко приходится внедрять, например бизнес-процесс торговли по заказам, с простой картой маршрута (http://www.mailvirtual.ru/images/mapmax.png ), где механизм напоминаний подсказывает пользователю о появлении задачи.
Помню доклад, очень понравился, после конференции скачал Проверку Данных, покопался — действительно интересные решения, спасибо!
Вау!
Статья действительно интересная, прошу автора подсказать где можно скачать материалы для более подробного изучения
Кроме красивых картинок ничего не увидел.
Спасибо за статью!
(10) kasper076, тоже считаю, что ничего принципиально уникального тут нет. Меня удивляет что все так не работают априори ) Пихать сложную бизнес-логику в конфигуратор считаю дикостью. В очередной раз скажу, что верхом безумия и идиотизма является механизм регламентированных отчетов от 1С, когда они его приведут в порядок мне не понятно, развивается в непонятном направлении.
(7) necropunk, спасибо, рад что понравилось.
(5) ИНТЕГРА, все верно пишете, про хранение и настройку бизнес-логики в данных, а не в конфигурации.
Единственная разница — в данной статье сделан упор на решения, хранящие и использующие СКД — там, где это лучше всего подходит.
(9) miavolas, из приведенных в статье выложены 2 решения — «Проверка данных» и «Проверка ведения учета в УПП», они есть в моих публикациях.
Остальные тоже планирую распространить каким-либо способом.
Часть решений распространял на партнерской конференции.
(10) kasper076, это же статья по докладу 🙂
Когда я выбирал тему доклада, то упор сделал не на подробное изложение какого-либо решения, а на обзор. Поэтому получилось кратко.
Я подавал еще несколько тем для докладов, например — отдельный доклад про автозадачи, где все хотел подробно разжевать. Смысл был в том, что автозадачи может реализовать любой программист 1С, в чем я убеждался дважды. На собеседовании рассказывал кандидату о решении, кратко его показывал, а он потом мне писал с новой работы, что сделал такое же, даже лучше.
Другой доклад предлагал по универсальному механизму планирования.
Но люди выбрали именно этот доклад — обзорный. Поэтому только картинки 🙂
Если зададите вопрос по какому-либо решению — с радостью отвечу. По архитектуре, использованным приемам работы, практике использования.
(6) miavolas, спасибо за подробный ответ.
У нас основная конфигурация УПП 1.3, т.е. механизм напоминаний там как в УТ 10.3. Мы его использовали лет 5 назад, но он слишком узкоспециализированный. Нужно было решение, позволяющее информировать о любых событиях, связанных с любыми объектами и состояниями данных,в т.ч. с отсутствием каких-либо данных и состояний. Если на разработку такого решения нужно 1-2 дня, то почему бы и нет. Так было с информатором.
Автозадачи — почти то же самое, только хранимое в системе. Немного похоже на понятие «триггер» в базах данных. Главная фишка, также как и в информаторе — простота запуска конкретной задачи в работу. На запуск уходят минуты — достаточно написать запрос, выбрать ответственного и срок.
(11) dddxddd, рад что понравилось.
Спасибо за полезную статью. Хотелось бы поглядеть на решение «Консолидированные отчеты» и «Расчет, хранение и представление произвольных показателей + интегральные сценарные показатели».
Очень интересные идеи… Спасибо за информацию!
(16) скачалПроверка данных. Теперь за стартмани и с отслеживанием срабатывания , все праздники изучал. Оценил красоту кода, идею решения и реализацию. Нашел даже парочку моментов, которые можно оптимизировать ))) Спасибо.
(21) kasper076, рад что понравилось.
(22) Yashazz, я правильно понял, что ваше руководство — некий авторитет профессиональном плане, в том числе для вас?
Если ваша идея не вызвала у них энтузиазма и вам было объяснено, что подобные навороты от лукавого — это действительно так и есть? Т.е. идея плоха?
Я прошу прощения, просто не знаю, что у вас за руководство — оно же разное бывает.
Про баян — все верно, претензии на уникальность нет. И стремления к ней — тоже.
(20) Amel2010, спасибо, надеюсь пригодится — идеи для разработки и те решения, которые выложены на инфостарте.
(19) psih12, пока только рассказать могу, чтобы идеи решений могли вам пригодиться в собственной разработке.
До публикации этих решений, скорее всего, доберусь не скоро.
Хороший материал.
классная статья. Жаль, что не выкладываете больше разработок
(28) Сергей, а вам какие решения были бы интересны?
(29) В первую очередь интересует решение «Автозадачи», которое перекликается на мой взгляд с решением «Информатор» (наступает событие — система либо оповещает пользователя, либо создает задачу и отслеживает выполнение). Мне кажется больше всего вопросов и одобрительных высказываний на Infostart Event как раз было по автозадачам.
Еще очень интересная тема «Консолидированные отчеты», с ростом числа конфигураций и баз, ощущается потребность в простой консолидации отчетных данных, без выгрузок-загрузок таблиц.
На третьем месте моих интересов «Проверка ведения учета». У нас есть куча разрозненных отчетов, которые просто выводят ошибки, найденные в определенных данных в заданном периоде. Было бы любопытно взглянуть на универсальный инструмент за вашим авторством и, возможно, взять его на вооружение.
(29) Интересуют «Консолидированные отчеты». Планируете ли вы их выложить в открытый доступ? Любопытно бы было взглянуть!
(30) над автозадачами я поработал, уже есть изолированная конфигурация и руководство по внедрению. Осталось собраться с силами и изготовить публикацию.
Единственное, и наверное главное, что меня беспокоит — будет ли кто-то ей пользоваться. Я рассылал эту изолированную версию примерно 10 людям, которые заявились как тестировщики, но пользы ни им, ни мне это не принесло.
Возможно, есть какой-то порог вхождения в такие инструменты для программистов. Невозможно сделать ни одной автозадачи, не создав схему компоновки. Схема компоновки — центральный элемент всех решений кастомизации на лету. А у ребят, почему-то, плохо со схемами компоновки. Код писать — да, мышкой настраивать (как проверка данных) — да, а схему компоновки написать — нет. Даже если на это нужно 5 минут, и результат для бизнес-задачи будет полезный.
Или зря драматизирую?
(32) Зря драматизируете, очень интересно разобраться с вашим механизмом, у меня, например, каждое описанное в статье решение нашло отклик, т.к. при внедрении подобные желания были и у заказчика и у меня. А кому это действительно нужно с СКД разберется.
Меня удивили комментарии, почему никто не рассказал своего подобного опыта?
Практически везде где больше 100 человек в базе работает, какие то подобные системы разрабатывались.
Пакеты каждодневных отчетов, рассылка ошибок по email, рабочие столы (больше актуально для ОП чем для УФ), шаблоны стандартных операций на процессы, тысячи их.
Но у вас тут искорка все реализовано в СКД.
(32)
«А у ребят, почему-то, плохо со схемами компоновки.» — думаю проблема в том, что схема компоновки данных это инструмент программиста, к тому же довольно капризный инструмент. Многие программисты сталкиваясь с граблями и багами в СКД, со временем отказываются от него вовсе, предпочитая надежную связку запрос + табличный документ с оформлением. Но самая ценность подобных подсистем кастомизации, на мой взгляд, заключается в возможности «настроить все мышкой» обычному специалисту/методисту, не прибегая к помощи программиста и в идеале в подсистеме должно быть 2 варианта настройки: 1) простой и быстрый, но с ограничениями 2) гибкий и мощный, но скорее всего слишком сложный для пользователя. Еще одна версия непопулярности схем компоновки данных это их тяжеловесность и избыточность для задач, отличающихся от построения отчета.
(34)
http://infostart.ru/public/464647/
ну вот например у нас используется самодельная автоматическая рассылка отчетов, которая оформилась со временем в эту публикацию
(34) конечно разрабатывались. В моих разработках нет ничего принципиально нового.
Просто немного более систематизировано, выделен ключевой подход — использование СКД в режиме 1С:Предприятие, как средства быстрой кастомизации с учетом данных ИБ.
Возьмите тот же монитор ERP, который есть в типовых конфигурациях. Там тоже есть возможность делать свои показатели через СКД. Много людей делают свои показатели?
(35) видимо мы по-разному смотрим на СКД. Или в разное время смотрели.
Лет 8 назад — да, в СКД были ошибки. Сейчас не припомню ничего критического.
Мне СКД нравится по нескольким причинам:
1. Не нужен конфигуратор, чтобы писать запросы, настраивать вывод и отборы;
2. Раз схема делается в режиме 1С:Предприятие, можно использовать данные ИБ в отборах и параметрах. Это архиважно, когда делаешь именно кастомизацию у конкретного клиента, а не создаешь инструмент, который кто-то потом будет настраивать;
3. СКД хранит в себе все, что нужно — и запрос, и настройку вывода, и отборы, и сортировку, и УО. Другие инструменты такого не позволяют сделать.
4. При этом все, что хранится в СКД, можно разбирать по кускам и использовать. Например, сделать парсер УО, прочитав из схемы только УО. Или взять только текст запроса, или только макет (такой подход использован в Проверке данных).
5. СКД сериализуется, может сохраняться в файл. Отдельно можно сохранить только настройки.
6. СКД имеет несколько инструментов для визуализации своих частей. Например, можно прочитать и вывести на форму только настройки. Можно только отбор. И т.д. Такой подход использован в той же проверке данных.
Наверное, ключевое отличие — во взгляде на СКД. Я смотрю не на как средство построения отчетов, а как на инструмент получения требуемых данных. Своего рода view, как она была в СУБД.
(37) ненене я как раз вами восхищаюсь, систематизировали, написали, применяете в быту, круто!
И то что обернули это все в СКД считаю более положительным решением чем отрицательным. Все таки однообразно лучшем чем зоопарк (пишу как человек руки которого по локоть в зоопарках испачканы).
Немного удивлен другими товарищами, как индиффирентненько как то.
У СКД основной недостаток — оптимизация текста запроса с получением неожидаемых результатов. Обход заводит в такие дебри, что на простых задачах бывает неэффективно.
Просили в партнерском форуме отключение оптимизации… воз как обычно…
(40) в задачах, которые описаны в статье, такие штуки если встречаются, то редко.
Обычно мне от СКД нужна плоская таблица, которую как не обходи — она будет плоской.
Выложил автозадачи —https://infostart.ru/public/656758/
Спасибо
(26) Прошло уже три года.. Надеюсь, что доживу и увижу решения «Консолидированные отчеты» и «Расчет, хранение и представление произвольных показателей + интегральные сценарные показатели».
(44) второй будет в ближайшем релизе флакона