<?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С по определению нельзя сделать
(1) что вы под этим понимаете?
(2) Дмитрий! Вот у Вас есть коллеги, друзья 1С-программисты. Сколько из них, в процентах, могут вести разработку и в 1С, и в Android? 🙂 Да и когда будет обзор 8.3.6.182?
(3) В смысле? Так совпало, что в последнее время, у меня круг знакомых таков — каждый пишет решения под мобильную 1С и мы вместе помогаем друг другу с тонкостями андроида 🙂 Но я думаю — так не везде.
Ну и конечно есть знакомые программисты андроид — которые помогают.
(4) а курс по мобильной разработке будет дополнятся? Например работой с http сервисами, json и тд или там это есть и я просто не дошёл ещё до этого? Я на 3 модуле пока 🙂
(5) сейчас новый модуль выйдет, там будет немного про сервисы, json пока не доступен на мобильной.
Та и в целом — ws перевести на http — дело 5 минут, тоже самое и xml на json 🙂
Там есть более важные темы — это защита соединения от митм атак, т.д. вот про это в новом модуле будет.
(6) Да защита то же очень интересует. Что бы из вне никто не смог подключаться…
Или DDoSить мой веб сервис. А то будут к нему запросы строить базу нагружать.
Почему выбран именно такой способ для получения фотографии? Ведь есть же специальный вызов в 1С для этих целей.
еще один мелкий нюанс 🙂 . при открытии видим всплывающую заставку 1с. некоторые клиенты просили ее убрать. хотят видеть свой логотип. а так все супер! 1с на рынке моб.приложений сделали бомбу!!!
(9) flyer,
Что то пока не заметил как бомбануло… что бомбануло то у 1с с мобильной платформой?
(10) TODD22, скорость разработки и тем самым стоимость решения для бизнес приложений уменьшена.
Кто бы сделал инструмент для программного показа/скрытия виртуальной клавиатуры.
У меня этот момент важен, приходится до сих пор на версии 4.17 сидеть.
(7) ну это делает немного по другому. А тут все таки интересует вопрос — что бы не уперли пароли подключения. И касается это не только мобильной платформы.
(8) потому что каждая программа обрабатывает фотографии по своему — попробуйте в 1с выбрать гамму. разрешение, формат, HDR, уровень освещенности и т.д.
(9) ну так заставку можно свою сделать, по бокам конечно внизу будет 1с написано, но 90% заставки — в вашем распоряжении.
(12) а зачем это вам? Какая цель? Вдруг подскажу.
(10) прям слова 5 летней давности про УФ, еще ранее про 8, и т.д. 🙂
(13) я вот про эти маленькие заставки и говорю а то например заказчик пиццерия попросили сделать программу Заказа их продукции. заставку им при открытии наваял а вот любимые слова 1с Предприятие нельзя убрать. вот и получается двоякая ситуация как бы программа от Пиццерии а тут еще каким то боком 1с.
(14) если я не ошибаюсь, то 1С позволяет менять заставки, во всяком случае на стационарной, но для этого надо писать им. Напишите им и узнайте, вдруг они вам подскажут?
(13) Для удобной работы пользователей.
Упрощенно: Открываешь форму — у тебя курсор стоит уже в нужном поле и услужливо клавиатура открыта, лишний тап по полю делать не надо.
(16) ну тут да, разве только в настройках манифаста полазить
Тестировал пару раз мобильную платформу под Android, ни чего в ней не меняется в своей основе, apk файл как весил минимум 30 Мбайт, так и продолжает набирать свой «вес», а это всего лишь «hello world»!!! Больше похоже на ковыряние в песочнице, нежели на промышленно-эксплуатируемое приложение.
(18) это тоже самое, что винить Excel, что он весит 500Мб, а вам всего то и надо — открывать файлы.
Если вы не знаете, какие там механизмы заложены, то лучше и не говорить про это, ибо знаю на своем опыте — делал когда то приложение под андроид, и библиотека ksoap, которая позволяет работать с веб сервисами — весит 200кБ. и это только одна функция, по сути.
В итоге, элементарное приложение, которое может подключаться к 1с и забирать данные — весило 3Мб, с ресурсами, с нужными библиотеками и т.д.
Так что вы попробуйте реализовать хоть 10% возможности 1С и сразу увидите, что приложение будет весить овер 10Мб, минимум.
Так что вес не такой уж и большой.
И кстати, есть поучительная история, про борьбу Microsoft Office и Lotus 1-2-3, почитайте, как лотус оптимизировал свои решения до идеального блеска, которые работали отлично на машинах того времени, а Microsoft тупо выпускали глючный софт, с оглядкой на то, что технологии развиваются очень быстро, и в оптимизации такого уровня — нет никакого смысла, ибо через год=два, появятся компы в несколько раз сильнее. В итоге — lotus затормозил на год, и выпустил идеальный софт, который идеально работал, но на этом рынке была уже MS, а за это время — компы стали мощнее, и в итоге — все приимущества лотуса — ушло в никуда.
Тоже самое и тут. У меня сейчас есть планшет Nokia N1, там стоит Intel x64 проц, и 1С по скорости проигрывает компу с SSD дисками — в два раза.
К примеру, на моем смартфоне — Moto G, 1С медленнее работает в 20 раз, чем на компе. Не хилый прирост всего за два года?
К чему я — хватить гундеть про размер и про скорость 🙂 У меня есть мобильные базы, которые весят 500Мб, из них — само приложение занимает 50. При таком раскладе — мне пофиг, будет оно занимать 50Мб, или 5Мб.
если они пройдут, то писать на 1С под Android не будут!! :))))
с iOS с такими подходами загнется все еще на этапе публикации….
как правило, по статистике, руководители чаще пользуются Apple и архаичные интерфейсы, которые предлагает мобильная платформа 1C — не прокатит!
(20) почему это? Я могу кодить под андроид, но все равно остаюсь в 1С, почему это?
Ответ прост — я не создаю игры, или социальные клиенты, я работаю с бизнес приложениями.
И у моей команды есть ряд готовых решений, которые мы забросили, после 2 лет разработки, о некоторых — мы писали тут. О некоторых — нет.
А забросили по очень простой причине — вышла мобильная платформа.
Вы пробовали разработать до конца хоть одно тиражное решение а потом его поддерживать?
Мне вот просто интересно, очень похоже — что нет, отсюда вы и делаете ваши выводы.
(21) Как правило — используется экосистема, например, в бизнес приложениях ее нет. Т.е. тупо нет.
Вот если мы возьмем все приложения от гугла, рукалицо, контакта и т.д., то вы увидите — они используют интерфейсы своих экосистем, и слать они хотели куда дальше все остальное. Посмотрите на PowerBi, от MS, и что?Каким оно паттернам подчиняется? Эпла? Винфона? Андроида? Нет, оно идентично везде, и вписывается в экосистемы остальных приложений от MS.
Все эти паттерны, стили и т.д. — это все для автономных приложений, и просто общие мысли и соображения, например, решили что меню будет слева, все. Дальше че хочешь то и делай. Решили отказаться вообще от кнопки меню — та не проблема. Но опять таки — есть просто общие соображения и рекомендации.
Вот и 1С — точно также, работает в своей экосистеме. И вашему директору — привычней будет работать именно с идеологией интерфейса 1С.
Почему? Та все просто — вы спросите этих своих директоров, кто из них глубоко сидит в экосистеме приложений эпла? 90% используют только будильник и почту, ну и позвонить. Вот вам и вся экосистема.
Интерефейс, в конце концов, пишет программист, а не 1С. А если у этого программиста нет опыта дизайна интерфейсов, ну так кто ему доктор? Вы посмотрите какие люди формы рисуют в стационарной 1С, это же пипец просто.
Теперь давайте возьмем приложение Viber, очень популярное, расскажите — оно подчиняется патернам интерфейса на iOS? И чем оно отличается от нового интерфейса мобильной 1С?
Поэтому давайте в очередной раз не поднимать пыль на ровном месте.
Сейчас 1С еще подтупливает, тут не поспоришь, но как только эти проблемы решат — я думаю 1С будет вне конкуренции.
Но это мое мнение.
Воспользовался кодом для фотографии родным приложением. Но есть одно НО…. Помимо файла, который я указываю создаётся ещё копия файла самим приложением. Это раз. Во-вторых, если просто удалить этот «дублированный файл» из мобильного приложения 1С, то остаются «следы» пустая пиктограмма при просмотре фотографии в Галерее. Как это можно обойти?
(23)А код вы можете привести?
(24) в результате в папке камеры оказыывается 2 файла: с моим именем и именем камеры типа 20115101_6587.jpg
вот код,
Показать
(25) maxx, а чем вы делаете фото? Как называется программа? Так как воспроизвести не смог .
(26) приложение , стандартное Камера (других нет). Планшет Dexp
Поэкпериментировали, на телефонах к примеру не создаётся дубликаты. Но все равно если из 1С удалить файл, то ссылку на фотографию в виду пуcтой пиктограммы в Галерее остаётся. Если перезагрузить устройство, то ссылки пустые убираются.
(27) это да, там кэшируются пиктограммы, т.е. привьюшки. Их надо удалять отдельно, а вы попробуйте делать фото не в папку с фотографиями, а в другую какую то папку.
Когда делаем фотографию мы знаем путь к файлу. Как получить превью файл небольшого размера одновременно с нормальным файлом?
В НовВз.Данные пустая строка. Можете помочь?
«Кроме этого, приложение вам возвращает сразу же маленькую превью этой фотографии (320х320) и путь к полноценной фотографии (той, которую вы сделали, с теми настройками, которые вам нужны). И это сделать реально.» — как?
(29) как оказалось — не на всех устройствах. На большенстве устройств — вы делаете либо это либо другое. Т.е. или получаете полноценную картинку или ее привью. Увы.
Доброго времени суток.
Возникла такая проблема.
Пытаюсь запустить данный код на устройствах:
Показать
На Huawey MediaPad всё отрабатывает хорошо с 5.1.1 андроидом, а на Samsung Galaxy S7 с андроидом 7.0 вылетает с ошибкой на моменте НовВз.Запустить(Истина).
С чем может быть связана данная проблема?
На обоих устройствах стоит мобильная платформа 8.3.10.51.
Если я вместо «file:///storage/emulated/0/Download/MobileMKFoto.jpg» указываю:
всё-равно вылетает с ошибкой.
(31)
КаталогДокументов() — это песочница только для 1с, другие туда доступ по полному пути не имеют.
А вот сюда имеют:
ФайлКартинки = «file:///storage/emulated/0/Download/MobileMKFoto.jpg»;
Но тут в зависимости от прошивки — путь может отличаться, например, быть:
ФайлКартинки = «file:///sdcard1/Download/MobileMKFoto.jpg»;
Откройте ES Explorer и посмотрите полный путь к папке Download.
(32)Спасибо, Дмитрий!!! Разобрался. У меня на телефоне путь к папке с закачками это «file:///sdcard/Download/MobileMKFoto.jpg» (я искал изначально путь к корневой папке по принципу Сообщить(КаталогДокументов()) и оттуда потом выдернул путь к корню … но проверял я это дело только на Huawey, априори считая что и на Самсунге будет аналогично … нахождение ещё одних граблей засчитан ))) ); Спасибо за подсказку о программе! Хотя она конечно же изобилует рекламой, но работает хорошо 🙂
Дмитрий, огромное спасибо за ваши статьи, они мне принесли премию на работе за разработку тиражного решения, для мерчендайзеров 🙂
Хотел уточнить кое-что.
Т.к. нет возможности заставить всех пользователей не пользоваться устройствами под IOS.
Приходиться делать фото(и не только) именно средствами 1С т.е.
не
НовФото= Новый ЗапускПриложенияМобильногоУстройства(«android.media.action.IMAGE_CAPTURE»);
а
ДанныеФото=СредстваМультимедиа.СделатьФотоснимок(ТипКамерыУстройства.Авто,Разрешение,70);
Нет ли у вас какой-нибудь секретной статьи как учитывать особенности IOS при разработке мобильных приложений?
(34)
А где мое пиво? 🙂
так на курсах же говорю про это, и не только.
А вообще — просто получайте системную информацию, и там написано — это андроид или ios.
(35)
Я на самом деле подумываю над записью на курсы.
Но я нашёл только видео курс на этом сайте + возможность задавать вопросы на сайте.
А видео курс обновляется с такой же скоростью как платформа?
А самый большой вопрос это откуда брать свежую платформу для IOS чтобы это было без извратов, для загрузки туда конфигурации.
Для андроида я могу apk файл скачать вместе со сборщиком с официального сайта 1С.
А для IOS только искать что есть в апп сторе, там либо старая версия, либо версии с уже загруженной чужой конфой, в которую теоретически я могу перезалить свою. Но это же изврат!
Теоретически правильно было бы собрать своё пустое приложение под IOS (я правда собирал пока только под андроид и не пустое, но наверное можно как-то разобраться), но что потом?
Публиковать его в апп сторе самому и при желании обновлять версию платформы? Но разве это не нарушает что-нибудь про лицензирование?
(36) на iOS — вы просто регистрируете бесплатный аккаунт и вперед 🙂
Публиковать ничего не надо. Публиковать можно только на платном аккаунте.
Но нужен Мак, тем более вроде как 1с уже запилили образ для эмулятора.
Ну или можно хакинтош, но там возня и эмулятор будет глючить дико, т.е. нужно устройство реальное.
Смотрите курсы тут http:// /courses/, там раздел по мобильной платформе.
А как тогда приложение попадёт на кучу других айфонов, если ничего не публиковать?
(38) вы можете делать так называемые инхаус приложения, для конкретной компании. Но это еще тот геммор 🙂