<?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С, который нормально и красиво работает на МП? Или там полное приложение ? (с сервером)
(2) Да, это именно клиент для МП. База при этом остается серверной. По поводу нормально и красиво, если была адаптация под запуск веб клиента, то скорее всего взлетит с минимальными правками. Если же писали без оглядки на функционал, править придётся больше.
Но в плане того, что это не отдельное приложение со своими обменами, синхронизацией и прочим — адаптация будет проще.
Хотя здесь понадобится постоянное соединение с веб-сервером.
(3) просто на ойфоне веб-клиент очень качественно работает (в отличие от ведроида, не говоря уж о вФоне), а главным + МП является его автономность: в этой стране временно нет 4Ж, да и даже вай фай не такой и стабильный способ связи в условиях плотной городской застройки (пока не поменял антену дома — его глушили соседсткие вайфаи/микроволновки). Очень часть приходилось решать проблему битых баз из за того что толстый клиент подключался по вай-фаю к файловой базе на другом пк.
=> Вопрос: Как 1С справляется с обрывами связи? Не пробовали отключать на МП интернет на 30,120,300 сек? Есть ли настройки ожидания связи и какова функциональность без оной?
(4) В параметрах запуска поддерживается указание низкой скорости соединения.
При обрывах включает режим ожидания с попыткой повторной отправки запроса, до 2 минут точно переподключает. на больших интервалах не пробовал.
(5) Прикольно, нужно будет попробовать в условиях переменной сети (в селе каком то) затестировать работу. Но все же мобильное приложение оно не заменит: ниже расход трафика/батареи, МП делается или для сотрудника (позволяет закрыть ненужные данные на уровне обмена, не использовать излишнюю детализацию ведения учета в ИБ, например маршрутный лист сократить из 10 заданий в 1 документ с 10 строками заказами покупателей) или для руководителя, которому важны определенные разделы учета + финрезультат.
В любом случае спасибо за статью!! Будем пробовать 🙂
А кто-то пробовал работу с камерой или геопозицией?
(0) Нигде в статьях не сказано о некоторых ньюансах сборки под айфон (возможно этот комментарий для страждущих окажется очень полезным), поделюсь опытом:
1) Вместо мака с икскодом можно использовать VMware с виртуалкой мака (купленной на торрентах, как и сама VMware)
2) Возможна последующая установка на айфон. Для этого надо подключить его к физической машине с VMware и выбрать в xcode режим отладки. Затем на айфоне в настройках нужно утвердить ваш сторонний сертификат и тогда приложением можно будет пользоваться недельку (через неделю сертификат умрет и надо будет повторить). Чтоб пользоваться постоянно — надо уже покупать учетку разработчика.
В общем для сборки сам мак не необходим. А если вам потестировать-начальству показать, то и учетка разработчика не нужна.
ЗЫ: с андроидом, естественно, все проще и дешевле.
Работать — работает.
Как сказали выше — во многих местах надо добавить директиву МобильныйКлиент.
Формы — если вы действительно с чем-то хотите удобно работать — надо расставить приоритеты (новое свойство).
Немного поигравшись с приоритетом или положением элементов — можно добиться нормального показа и на десктопе и на телефоне — платформа приводит вид формы к мобильной версии — то есть формы не будут выглядеть так же как на компе.
У себя пришлось кое-где кодом исправлять положение элементов, точнее пришлось сделать дубли и прятать в зависимости от клиента.
Но эти затраты не сравнимы с написанием полного мобильного приложения.
(9) А еще можно с помощью HTML, CSS и JS верстать нормальный адаптивный дизайн в определенных случаях)
ЗЫ: Как ведет себя JS на мобильниках не проверял, на вскидку WebView поле не понравилось только тем, что его можно маштабировать пальцами (возможно ридонли или обработка кликов решила бы эту проблему, также не проверял).
Могу ли я подключиться к тестовой конфигурации в 1С-облаке?
Такая ошибка:
Лучше один раз увидеть чем 100 раз …https://www.youtube.com/watch?v=6QW2tzqu3Po
Вопрос снимается, просьба удалить.
1. Не понял зачем собирать если клиент и из коробки работает с ЦБ?
2. Если Назначение использования стоит и Приложение для платформы и Приложение для мобильной платформы, то на стороне сервера, платформы, можно использовать COMObject? Может там директивы особые нужно указывать? Синтаксис помощник в 8.2.12.1567 даже о МобильныйКлиент пока не в курсе.
(22)
1. Для публикации в паркете разве что
2.Не смотря на то, что конфигуратор ругается, COM все же работает со стороны сервера. Ура.
А кто знает как дела обстоят с торговым оборудованием (со сканером штрихкода и BT термопринтером)? Будет работать?
У меня взлетело, только когда в адресе веб-сервера написал полный адрес базы. В пример добавить «/demo»
(11)такая же ерунда
Как решить???
(27)Возможно очистить кэш для этого приложения 1с на андройде или переустановить.
(28)неа. оказалось рлатформа не та у меня
(9) А можете описать на каком-нибудь примере как изменить форму списка и документа для мобильного клиента?
(30) Важность поставить ручками у нужных колонок, которые должны быть первыми и видны.
В обычном клиенте всё будет по старому, а в мобильном вы таким образом помогаете платформе понять, что должно быть видно.
(31) Спасибо за ответ, попробовал, но честно говоря, указал в свойстве «Важность» значения «Низкая», «Очень низкая», но данные реквизиты так же отражаются на формах, визуально ничего не поменялось (УТ 11.3.4.67, платформа 8.3.12.1616). Может я что-то не так делаю или ещё что-то нужно сделать.
(32) Так добавьте
#Если МобильныйКлиент Тогда Элементы.ТаблицаКолонка1.Видимость = Ложь; #КонецЕсли
Никто же не запрещает.
Подскажите пож-та не сталкивались ли с такой проблемой?
На сервере IIS , платформа 8.3.12.1567 — в клиенте под андроид все работало отлично
Перенес базу на другой сервер. В iis настройки аналогичные. Платформу установил 8.3.13.1690
Клиент работает, но отчеты все стали подгонятся по ширине мобильного экрана. В отчетах много колонок и если раньше появлялась горизонтальная прокрутка, то теперь все колонки переносятся друг под друга. А графики, которые достаточно широкие вообще невозможно посмотреть. Т.е. видно что он там появился под таблицей, но посмотреть его нельзя, не прокручивается до него отчет.
Не пойму, то ли в платформе дело, то ли надо отчеты подкручивать, то ли IIS как то настраивать.
(35) Нет, к сожалению, не сталкивался. Скорее всего дело явно в платформе, посмотрите что пишут в V8Update по отчетам/табличным полям. Навскидку возможно это (как раз в 8.3.13 добавили):
Высота и ширина страницы табличного документа (свойства ВысотаСтраницы и ШиринаСтраницы) ограничены значением 5000 мм.
В режиме совместимости с версией 8.3.12 поведение не изменилось.
Возможно при большем количестве колонок сжимает
(36) да, Вы правы. Благодарю.
Для табличного документа реализован метод ПолучитьКомпактныйДокумент(), который возвращает компактную версию табличного документа. Для табличного документа реализован метод УстановитьРастягиваниеПоГоризонтали(), который задает режим растягивания колонок табличного документа.
Для табличного документа реализованы методы ПреобразоватьВКомпактныйДокумент() и ОтменитьПреобразованиеДокумента(), которые позволяют в существующем табличном документе создать или удалить копию документа, пригодную для отображения на экране с маленькой шириной. При печати (или сохранении на диск) табличного документа, он печатается в оригинальном, не преобразованном, виде.
Для расширения управляемой формы отчета реализовано свойство РежимОтображенияРезультата, который позволяет управлять трансформацией отчета. Для расширения управляемой формы отчета реализована команда Компактный режим, который позволяет изменить значение свойства РежимОтображенияРезультата.
Информация о режиме отображения отчета сохраняется в хранилище системных настроек отдельно для мобильного клиента и для остальных клиентских приложений.
Источник:http://downloads.v8.1c.ru/content//Platform/8_3_13_1690/1cv8upd_8_3_13_1690.htm#945610f1-0b4a-11e8-a3f7-0050569f678a
Очень уж медленно работает мобильный клиент, прям разочарование.
(25) Да, в статье на скриншоте похоже не рабочий адрес указан, у меня тоже заработало только после указания полного пути (что ожидаемо, просто скриншот в статье сбил с толку).
как работает это мобильное приложение на «нечистом» андройде, например, HiOS на смартфонах Tecno?
Ни как не могу понять почему у меня список баз на смартфоне пустой. Подпись сделал, приложение собрал. А список баз пустой.
Как сделать, чтобы увидеть свою ИБ?
(42) Пункт ниже точно выполнили?
Файл конфигурации необходимо подписать. При этом для каждой конфигурации формируется свой закрытый ключ, а в файл 1cemca.xml выгружается открытый ключ (поле DSAKey), с помощью которого и сравнивается подпись конфигурации.
Чтобы сформировать ключ и подпись, заходим в свойства конфигурации «Подпись мобильного клиента» (сразу под требуемыми разрешениями, если у Вас свойства разделены по категориям, а не по алфавиту) и видим настройки подписи
У всех отладка нормально подключается?
У меня вот такая ошибка в телефоне и эмуляторе:
«Информационная база опубликована на веб-сервере без возможности отладки.
Обратитесь к администратору для публикации информационной базы с указанием параметров отладчика, чтобы иметь возможность отлаживать клиентов, подключающихся через веб-сервер»
Отладку во время публикации включить. Для серверной, насколько я помню, еще нужна отладка по HTTP на уровне сервера
(45)Нашел, в публикации нужно тоже разрешить отладку
(46)Да, спасибо)
(23) суть в том что теперь есть 2 контекста сервера. Оберните его, чтобы не выполнялся на сервер клиента, тогда и ругаться не будет. На сервере андроида какой ком же?) Вот и ругается!
(10) Наоборот плохо, что нельзя масштабировать пальцем в остальных местах.
Если не секрет, как собирать приложение под различные версии Android? Допустим мне надо для старого устройства собрать приложение для версии «Android 4.0 Ice Cream Sandwich»