<?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='\
Интересно.
Только вот прикол в том, что этот заголово таки можно скрыть 🙂 И сделать запрет поворта экрана только для приожения 1С и много чего еще 🙂
А так — очень интересно вышло. Жду продолжений.
(2) Тогда расскажите как скрыть заголовок, эта проблема достаточно многих волнует…
Добейтесь пожалуйста от 1с чтобы с этим заголовком что нибудь сделали. низкий поклон будет Вам!
(3) Та очень просто, надо всего лишь добавить один тег в андроид манифест в момент компиляции.
Точно не подскажу, лень сейчас ковырять курсы, но тег отвечает за размеры приложения в области экрана, там же можно сделать, что бы приложение было вообще на весь экран, т.е. даже без верхней строки состояния андроида (как при запуске) или же просто убрать верхний дублирующий заголовок.
Та и в свете выхода 8.3.6 — не имеет смысла даже поднимать эти вопросы.
Но если прям очень очень надо, то могу конечно и поковырять это дело и вспомнить.
(3) о, вроде вспомнил по закладкам в браузере 🙂
android:theme=»@android:style/Theme.NoTitleBar»
Вот это вам и надо.
Только вставить это надо в область:
activity
android:name=»com.e1c.mobile.FormImpl»
Что бы применялось оно к формам 1С.
Вообще странно, что 1С не хотят прописать одну строчку в манифест. Но с другой стороны — и самим добавить ее не сложно 🙂 А там еще куча плюшек всяких может быть 🙂
Интересная статья. Только начинаю заниматься мобильной платформой, пишите еще, буду ждать
Я конечно люблю поковырятся, но мне кажется что сейчас проще разобраться в разработке приложений на андроид и создать нормальное мобильное приложение, чем мучатся с огрызками от 1С, ну по крайней мере в ближайшие несколько лет.
Попробуйте в заголовок не пробел впихнуть, а неразрывный пробел — символ с кодом 160 (0160)
Следующее Ваше приложение будет называться — Привоз! 🙂
(8) script, полностью согласен. мобильная платформа это как битрикс для 1с, в том смысле, что продукт негибкий
интересно, а как убрать заголовок то в в десктопной версии ?) вот задумался.. там манифеста как на андроиде нет ))
(6) DitriX, Подскажите, пожалуйста,
где найти файл манифеста, который нужно править. Я знаю что это и зачем, но не могу найти его, чтобы изменить в 1С Моб приложение.что может быть если манифест подправил, собрал apk (в отладчике проверил что сборка идет с нужным манифестом), однако в приложении ничего не изменилось?(13) а вы манифест где правили?
(8) а вы попробуйте для начала 🙂
По моему опыту — я три месяца потратил на обучание джаве, что бы написать хоть что-то, за эти 3 месяца мне не платили, скорость доработки хотелок — раз в 10 больше по времени, тем более что почти все хотят «как в 1С», так что — нет, не легче.
(14) DitriX, Я поправил манифест в архиве с мобильной платформой, запаковал обратно как было и загрузил в сборщик мобильных приложений. Проверил, что сборка идет именно с «моей» версией платформы.
А в какую сторону планируется расширение? Ведь оно же планируется?
Планируется добавить возможность выгрузки в файл, который можно подцепить, скажем, на ПК — в основную версию базы?
Или подгрузка в каком-либо виде файла с закупками от поставщика. Через те же облачные диски…
(16) ок, щас запилю вам свою версию конфы по сборке, и там увидите.
Скажите пожалуйста, а у вас на Контейнерах все только русскоговорящие работают?
Когда я там бывал во времена оны (да-а-авно-о-о дело было…) там было очень много «не наших» среди торговцев…
Собственно, вопрос про многоязычность приложения — на каких языках сегодня имеется интерфейс у «Контейнера» ?
(16) фиг его знает. Я собрал — у меня все вышло. Вот сюда приложу apk — проверите.
Попробуйте тогда в другие секции активити засунуть, та что выше идет той, которую я указал.
(6) Спасибо, будем пробовать…
а для ios как? мне ведь и там надо. за подсказку спасибо!
(9) CheBurator, пробовали, и неразрывный пробел, и символ табуляции, и перенос каретки — эффект тот же самый. Так что решили уже сделать по-простому — обычными пробелами.
(10) DoctorRoza, с фирменной единицей измерения — привозный килограмм.))
(17) Demonic_NEW, Расширение планируется в разные стороны. Если вы спрашиваете конкретно про обмены — то он планируется через универсальный формат, с помощью которого можно будет обмениваться данными как с типовыми конфигурациями, так и с самописными.
(19) Snitkovski, планируется перевод на английский + основные языки обитателей ареала 7км, в число которых входит молдавский, но не входит румынский. Однако мы можем пересмотреть наше решение при определенном уровне лоббирования 😉
(22) flyer, ну вот для iOS пока не нашли способа. Она игнорирует метод, который меняет заголовок — но так как 1С признала это ошибкой, то будем надеяться, что в ближайших версиях поправят.
(20) DitriX, Спасибо, все заработало, в т.ч. запрет смены ориентации экрана в приложении.
(28) ну вот и отлично. Только вы хоть уточните что вы там сделали, для наследия, так сказать 🙂
(26)
«в число которых входит молдавский, но не входит румынский»
скажите пожалуйста, а как вы их различаете? 😎
дело в том, что не все молдаване с румынами различают, а вы знаете какой-то секрет? 8-)))
а если серьезно — готовы не только полоббировать, но и поспособствовать! — обращайтесь!
и ждем с нетерпением следующих постов! 😉
(2) DitriX,
Огромная ошибка повторять десктопный интерфейс на мобильной платформе!
Вся тонкость «взлета» мобильного приложения, как раз и состоит в том, чтобы сделать так, чтобы удобно было
на смартфонах и планшетах работать. В этом успех! Кто этого не понимает, обречен на неудачу! При любом функционале!
Для «чувствительных» пользователей, например, iOS — если приложение вываливается из привычного UI, даже смотреть не
будут!
Для Android пора уже посмотреть в сторону material design, еще чуть чуть и пользователи андрюши перестанут смотреть
на такие вот самоделки.
Набивая шишки и спотыкаясь делюсь лекарством от всего этого:
— Android —> Java
— iOS —> Objective-C, Swift
И только так. Все стальное — потеря времени.
(31) pro1c@inbox.ru, мне лично как пользователю Android в принципе все равно на дизайн и рюшки, для бизнес-приложений.. главное чтобы оно выполняло свои функции, было продумано и быстро
(31) а почему это сообщение адресовано мне?
А в целом — посмотрим что будет с 8.3.6, так как мы сейчас смотрим на продукт, который начал свое развите, когда еще MD и в проекте не было, а стандарты менялись каждый месяц 🙂
(32) и то верно, есть ряд задач которые надо решить, а интерфейс, как бы это пахабно не звучало — не столь важен, во всяком случае — интерфейс служебных программ банков — еще то эпик фейл, но им пофиг как то на все это 🙂 Ибо бизнес-есть бизнес.
(33) DitriX,
речь то не об интерфейсе, а об юзабилити.
http://habrahabr.ru/post/213097/
для бизнеса, так для бизнеса… хотя ориентир все таки, по мне, на конечных пользователей должен быть!
Некоторые прекрасно совмещают эти вещи. (Inbox, Evernote)
(32) AllexSoft,
«…было продумано и быстро…» — это не только логика и функционал.
(35) pro1c@inbox.ru, ну так и причем тут инструмент которым ты напишешь данный функционал? я не говорю что мобильные приложения в 1С это прям идеал, нет,они еще довольно сырые, но отметать 1С как инструмент разработки мобильных приложений ДЛЯ БИЗНЕСА тоже нельзя
(36) AllexSoft,
«…отметать 1С как инструмент разработки мобильных приложений ДЛЯ БИЗНЕСА тоже нельзя…»
так никто и не отметает! естественно, 1С отдает дань моде и предлагает мобильную платформу для ВОЗМОЖНОСТИ реализации!
я только лишь выразил возражение о том, что методы применяемые в разработке для десктопа НЕ ПРИЕМЛЕМЫ в мобильной разработке!
в данном приложении я это увидел!
(33) DitriX,
«А в целом — посмотрим что будет с 8.3.6, так как мы сейчас смотрим на продукт, который начал свое развите, когда еще MD и в проекте не было, а стандарты менялись каждый месяц 🙂 «…
так вот в том то и дело, что мобильная разработка никогда не «устаканется» и будет всегда в стадии развития и совершенствования (сегодня один смартфон, завтра очки, послезавтра часы и т.д.), поэтому первоисточники (Java, Objective-C) выглядят более выгодным инструментом для разработки, т.к. являясь детищем своих же прородителей несут в себе все необходимые новшества. Чтобы за этим успеть, 1С надо клепать мобильную платформу чаще! Что затратно! Поэтому я и считаю реализацию на 1С под мобилы потерей времени.
Ну это так, лирическое отступление!
(38) ну а думаю, иначе, так как 1с таким макаром подкупает весь рынок потенциальный. Вот я разработал приложение 2 года назад и все круто, а теперь выйдет 8.3.6 — и я обновлюсь, у меня повится новый стильный дизайн, и может еще плюшки, но костяк то есть.
А обо все остальном — пусть 1с думает.
А если писать свое, то это значит и самому всегда надо следить за этим и ковырять, обновлять и т.д. А тут то главное — бизнесс логика, а обновление дизайна — не влияет на бизнесс процессы (ну это конечно в идеале, если пересадить с 7.7 на 8.3, то разница будет конечно ощутима).
Я это к чему — наша задача, что бы отчет строился правильный, а красоту пусть 1с нам сама рисует.
Видь для перехода с 8.2 на 8.3 — почти ничего не надо было делать, а столько полюшек получил, и все «на шару», никаких доработок.
Мы когда приложение разрабатывали под мобильник, нам только дизайн стоил около 2к уе, и это только наброски, которые потом еще перепиливали и перепиливали. Так как задачи приложения росли, иконки обновлять надо, и т.д. и т.п. А остановить развитие бизнесс приложений — не реально.
(39) DitriX,
Не, ну с таким подходом, можно вообще сайт замутить на PHP один на всех или
доступ по RDP на сервак выдать… пускай пальчиками там лазят, парятся… функционал ведь! логика!
и работает везде (десктоп, планшеты, смартфоны), где выход в инет имеется! вообще ничего делать не надо!
бизнес же! ничего личного!
(40) Ага, давайте посчитаем лицензии на рдп и 1с, а так же увеличим мощьность серверов на колиество этих пользователей 🙂
Но ничего страшного, работают и так, на 7.7, не маленькие фирмы, а крупные. И те, которые не могут позволить себе простой, поэтому им таки да, не рюшечки главное 🙂
Мало того, только так и работали вообще все, так как были доступны только терминалы на винце. И что? Многие вмс просто так и были заточены.
(40) pro1c@inbox.ru, а если инета нет? у нас например склады здоровые, закрытые как бункер, там с проводным инетом туго, не говоря о мобильном ) вот спасают планшеты с 1С-ками и wifi-сканеры штрихкодов )
ждем исследований версии 8.3.6
https://users.v8.1c.ru/distribution/version_files?nick=mobile&ver=8.3.6.110
у нас появилась аналогичная задача. попробуем решить по вашим следам. спсибо
(31) pro1c@inbox.ru, XAMARIN!!!!
до realtime как до небес…..1с в своем репертуаре..втюхать кому нить свои поделки… есть много технологий которые позволяют делать все это быстрее, стабильнее и главное половина из этих технологий open sourse
годами пишут свои поделки..у меня такое ощущение что 1с большее время тратит на то чтобы целенаправленно писать баги..а потом их исправлять..за ваши деньги
(20) DitriX, Добрый день. не подскажете — как править манифест мобильного приложения. — я его распаковал с помощью APK tools. но там какая то ерунда. мне бы понять направление хотя бы — можно ли править манифест для платформы мобильной без сборки приложения. Спасибо.
(48) так нельзя 🙂 Можно распаковать, но нельзя просто так запаковать, потому что при компиляции — вы должны подписать приложение своим ключем 🙂
http://androidp1.ru/iz-chego-sostoit-prilozhenie-android/
А как распаковать — ищите в инете, даже онлайн сервисы есть, и вот статьи хорошие всякие
пора xamarin юзать