<?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) acapulco, неужели вы вообще ничего не оплачиваете наличкой? И доходы тоже наличкой не получаете?
(3) практически нет. Сейчас везде принимают карты к оплате, а семки на улице я не покупаю)) Частично з/п получаю наличкой, которую также кидаю на карту.
(1) acapulco,
и неужели у вас всего одна карта? нет вкладов, карточки для интернет расходов, заначки, жены (расходы ее учету не поддаются правда)
А почему не одним архивом( ради посмотреть чу-там не охото дважды качать.
(6) Akuji, не люблю архивы)) можно скачать и с моего сайта. (он в профиле)
(4) acapulco, побывав в «цивилизованной» Европе, убедился, что карточками можно расплатиться далеко не везде. Италия и Греция. В Финляндии напротив — даже пирожок с лотка на улице можно с карты купить. 🙂 В крупных городах России с картами проблем, обычно, нет. А в небольших городах уже не все так хорошо. Опять же, жене денег на расходы с карты не передать мгновенно, приходится наличные использовать. 🙂
(5) Akuji, верно, карта одна на все (раньше было 3, но смысла в их нет). 2 вклада, которые опять же в личном кабинете отображаются. У жены своя карта, это ее расходы)) Она меня и приучила расплачиваться картой везде))
Возможно, мобильное приложение для кого-то полезная вещь. Здесь каждый решает ждя себя))
Мне лично лень каждый рубль «разносить» вручную, да еще все это самому структурировать и т.д.
(8) Lotar, если у жены есть карта, то сделать перевод через мобильное приложение — элементарно, «в один тап»))
(9) acapulco,
слышал проценты в сбербанке огромные) особенно если открывать через онлайн банк…
для общего учета одним клиент банком не обойтись ИМХО. Вам повезло — что все в одном банке и вас это устраивает.
(11) Akuji, сейчас даже деньги в школе так сдаем, кидают деньги на карту родителя, который закупками занимается, из 30 человек только 7 принесли наличку.
(11) Akuji, верно, процитирую вас еще раз
плюс за конфигурацию . автору спасибо
(14) aleksey.kubovtsov, честно говоря я совсем не ожидал, что она будет настолько интересна пользователям этого ресурса)
Можно вопрос? Я не увидел или нет планового периодического поступления денег?
(7) А какие подсистемы из БСП используются в этой конфигурации ???Внедряли БСП для получения нового опыта ? Или от нечего делать ?
(15) Собираетесь ли вы в последствии выкладывать обновленные версии конфигурации ? Еще было бы замечательно, если вы написали небольшой мануал по пользованию конфиги, чтобы понять, что к чему вообще.
(16) iov, хм, действительно забыл доделать функцию по созданию задач с плановыми доходами, спасибо за замечанию, исправлю в ближайшее время.
(17) sky.xn, используются подсистемы контактная информация, обмен данными и задачи из бизнес-процессов, БСП внедрялась для контактной информации и задач. Сейчас же, она используются для изучения новых версий БСП.
(18) sky.xn, обновления будут. По мануалу сложнее, пока обещать не буду, но вроде как там все интуитивно понятно.
Хорошая разработка, мне понравилась. Со временем скачаю,установлю и буду пользоваться..
(1) acapulco, люди делятся на android и ios. У второво приложение — полностью повторяет возможности сайта, а у первого, только баланс и минивыписку смотреть позволяет
Вопрос: нашел в системе займы/кредиты, я так понимаю, что это я кому-то должен, а когдая мне должны какой документ вносить?
(23) monkbest, там один документ, в следующей версии переназову его, что бы не было таких недопониманий. у видов обязательств есть реквизит: «Категория», который и регламентирует данный факт, должен я или должны мне.
(22) monkbest, люди делятся на android и ios. У второво приложение — полностью повторяет возможности сайта, а у первого, только баланс и минивыписку смотреть позволяет
О каком сайте идеть речь не пойму ?
(25) sky.xn, я догадываюсь, что о сбербанк-онлайн.
(25) sky.xn, я отвечал не Вам, говорю про сайт сбербанк-онлайн и его два приложения для ios и для android. Эти приложения очень сильно отличаются по функционалу. Самы полный функционал на сайте. IOS — почт полностью дублирует сайт, а на андройд нё хёрёна нет
А где же фиксация показаний водомеров, электросчетчиков и расчет оплаты их показаниям? Водомеры еще и поверять надо, а это тоже плановая задача и расход.
Захотел посмотреть работу мобильного приложения и связку его с основной базой. Вот только с обменом между базами что-то ничего не понял… Создал узлы. Пошел в настройку синхронизации — синхронизация данных. Пишет, что «Возможность настройки синхронизации данных не предусмотрена». Это так задумано?
Посмотрел общий модуль ОбменДаннымиПереопределяемый. Все процедуры пустые.
Или я не туда копаю или в чем прикол?
(29) kentavr27, синхронизация идет из мобильного приложения, через стандартный для БСП веб-сервис exchange.
(30) Если не затруднит, опишите пожалуйста, вкратце как вообще с технической точки зрения работает синхронизация ? Мобильное приложение подключается напрямую к информационной базе ? Или выгружает xml ? Или каким образом это вообще работает ?)))
(30) Скачал .cf мобильной конфигурации, как теперь установить ее на смартфон ? Необходимо скачать мобильную платформу и с ее помощью скомпилировать установочный .apk ? Просвяти плз по этому вопросу, до этого не работал с мобильной платформой
(30) БСП так понял внедряли не выборочно, а сразу всю библиотеку ? Уж слишком там много подсистем которые не используются. В целом весьма и весьма дельная конфигурация, так же хочу создать нечто подобное, но с планированием и календарем задач по типу Google календаря, чтобы все было в одной конфиге
(32) sky.xn, да, нужно скомпилировать в apk. Я эту конфу взял тоже для знакомства с мобильным приложением. У меня скомпилировать получилось. На планшете работает.
Но вот с синхронизацией — сплошной затык получается. Потому как непонятно что и как именно должно работать.
(30) присоеденяюсь к (31).
На сервере должен быть поднят Microsoft Exchange? Какой роли Exchange достаточно для синхронизации данных? Версия Exchange значения не имеет? Хотелось бы понять что к чему, но когда до этого не работал ни с МП, ни с Exchange, то без описания как-то тяжело дается 🙂 Приходится только догадываться.
(31) sky.xn, мобильное приложение подключается напрямую, через веб сервер.
(35) kentavr27, на серверве должен быть поднят любой веб сервер (например апач), публикуете на нем веб-сервисы конфигурации, и делаете обмен с мобильного приложения.
(36) c синхронизацией худо-бедно «догнал». Если я правильно понял, адрес сервера синхронизации пишу в таком формате: mysever.com:3232/home_buh/
где 3232 — порт, открытый на маршрутизаторе
home_buh — имя публикации, как задано в конфигураторе
верно?
далее пробую выполнит синхронизацию. Сразу же выпадает окно предупреждения
Pavel:xxxxxxx@myserver.com:3232/home_buh//MyBuh/
ws/Exchange.1cws?wsdl
Не совсем понятно откуда в ответе «Pavel» и откуда «MyBuh»…
Подскажите, куда копать? Как можно вычислить источник этой ошибки.
(37) kentavr27, я глубоко извиняюсь, но видать залил не ту версию cf мобильного приложения. Ошибка в общей команде ВыполнитьСинхронизацию, в функции «ВыполнитьОбменДанными», там жесткая ссылка на создание ws определения, надо ее собирать из констант. Должно быть вот так:
(38) Исправил, но ошибка осталась такой же, но только с моим именем…
Может, конечно я не там и не то делаю?
Мои действия:
Из основной базы опубликовал все что можно было вместе с web сервисами. Публиковал через администрирование-публикация на веб сервере.
Конфигурацию для мобильного приложения скомпилил в *.apk, установил на планшет.
В основной конфигурации в планах обмена прописал узлы «server» и «Mobile» c кодами, добавил пользователя. В настройке синхронизации поставил флаг «синхронизация данных».
На планшете тож выполнил настройку. В имени сервера указал адрес_сервера:порт/Имя_публикации_на_веб_сервере
В итоге получаю вышеуказанную ошибку при попытке синхронизации.
Если я правильно понимаю, то база мобильного приложения на компе в принципе не нужна.
В конфигураторе меню конфигурация-мобильное приложение существует еще «Публиковать»… Может еще нужна какая-то публикация оттуда? Или как или где?
(38) еще вопросик/уточнение… если мобильную конфигурацию запускать на компе и синхронизировать, то результатом должно быть то же самое что и на планшете? Я правильно понимаю?
(39) kentavr27, вроде вы все делаете правильно. А у Вас в браузере если вы зайдете на адрес веб-сервиса, что показывает?
(40) kentavr27, да результат будет идентичный.
(41) пишет такую хрень
спасибо, натолкнули на мысль. С этим разобрался… В политике доступа дал полный доступ к папке с базой группе «ВСЕ».
Синхронизация работать начала, но только до этого момента:
Процедура ПринятьИзменениеПоПлану
Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML);
по причине:
Ошибка преобразования данных XML: [26,9]
(42) kentavr27, попробуйте узлы заново создать.
Взял на тестовое юзанье, посмотрим что получиться, давно хотелось вести учет $..
За синхронизацию с андроидом +
ps.ps. как данный .cf в андроиде юзать? нужно платформу под андроид качать и внем базу создать? напишите плз.
(45) RainyAugust22, установите конфигурацию сборщик мобильных приложений(или установите платформу на мобильный и опубликуйте на веб сервере мобильное приложение), а из этого .cf выгрузите .xml описание конфигурации. Там разберетесь думаю.
Автору плюс за разработку! Есть пожелания:
1. Номенклатурный справочник, чтобы можно было вести аналитику, например, по затратам на сигареты и хлеб.
2. Вид кошелька «Вклады», в котором можно вводить процент по вкладу и тип начисления процентов (ежегодно, ежемесячно).
В остальном функционала мне хватает, отчеты по мере надобности напишу сам, сложного ничего нет.
Удачи в разработке!
(47) Maniac1975,
1. Справочник статьи расходов иерархический, с иерархией элементов. Лично я его использую как например статью продукты, и пару подчиненных статей которые я хочу из продуктов выделить.
2. Планируется, но пока сильная занятость мешает сделать.
Кое как (через отладчик, правку XML и т.п) удалось таки добиться синхронизации между основным и мобильным приложением.
В конфигурации мобильного приложения есть ошибка, которая не позволяет нормально синхронизировать данные. Справочник СтатьиДоходов в МП не имеет иерархи, тогда как в основном приложении этот справочник иерархический. Если статью дохода создать в МП, синхронизация проходит, но если в основном приложении — вываливается с ошибкой
{ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(84)}: Ошибка при вызове метода контекста (ПрочитатьXML)
Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML);
по причине:
Ошибка преобразования данных XML: …….
если в МП сделать справочник доходов иерархическим — ошибка при синхронизации тут же исчезает.
Еще каким-то макаром статья расходов «Перевод между счетами» (предопределенный элемент с кодом 000000001) в основном приложении почему-то задвоился…
(49), та же ошибка: документ «Доходы» в мобильном приложении отсутствует реквизит шапки «Содержание» (в основном — это общий реквизит). Но теперь ругается на реквизит табличной части «Сумма». Этого я пока не поборол… Реквизит одинаковый и там и там 🙁
(0) Быть может есть какие-то другие способы борьбы с неоднородной структурой объектов конфигураций? Как можно побороть подобные ошибки?
Интересно… Из всех скачавших никто не пробовал синхронизироваться? Почему подобных вопросов до сих пор не возникало? Или это только у меня одного такие грабли? 🙂
——————
PS
Доходы поборол… сгоряча удалил реквизит шапки «Ответственный». Вернул — синхронизация пошла. Будем ждать пока еще где-нить выстрелит
а «РЕГЛАМЕНТИРОВАНАЯ» валюта меняється или зашытий рубль? я понимаю что можна создать щета в любой валюте… но курс грузиться относительно рубля. можна ли менять относительно какой валюти хранить курс?
(0). Установил. При запуске вижу «ВВести расход». А как переключиться на экран «Функции» и настроить обмен?
(50) kentavr27,
Повторяю Ваши шаги. Как обмен?
(53) salus, Если исправить несоответствия справочников между основной и мобильной базой, то обмен происходит успешно. Пока больше ничего «не стреляло», кроме описанного
(51) kosmius, если нет сильного желания заморачиваться, то можно просто добавить еще одну валюту (например USD) и курс валюты установить в положение «рассчитывать по формуле»; формула будет типа Я_USD/Я_UAH. Где Я_USD и Я_UAH символьные коды старых валют (которые загружаются относительно рубля).
UAH (вновь заведенная) — курс устанавливается вручную (установить 1). При таком раскладе увидите курс USD относительно UAH и курсы будут продолжать загружаться с сайта
(55) kentavr27, соединение установлена. Получаю ошибку разбора XML[1,1]. Фатальная ошибка Extra content at the end of the document.Вывод. Нужно ставить мобильное приложение и тестировать через него. Кстати, поделиться полученным результатом можешь? Я имею ввиду полученные .cf
И как результат. Связка Деньги + МиниДеньги вполне решает мои вопросы. Вот такой результат использования данной конфигурациию
могу предложить свое решение сканирования и загрузки чеков для интеграции (как к Миниденьги так и к этой публикации):
https://infostart.ru/public/692613/
кто вообще ставил эту связку и запускал? вот я сразу же нашел вшитую, неуниверсальную строку обращения к wsdl ссылке, там вшито название базы MyBuh и логин Pavel, как то неуниверсально и нигде не сказано про такой секрет. кстати сменив эти параметры на свои у меня еще не успех, дальше новая ошибка.
(59) ставил, запускал, работало. Основная проблема, с которой я сталкивался — это несоответствие справочников мобильного и основного приложения. Как только привел поля в соответствие — обмен заработал. После того, как обновил платформу на одну из свежих версий — синхронизация опять потерялась, но с этим никак руки не доходят разобраться…
то есть все справочники должны быть идентичны по структуре реквизитов и их порядку? тут не юзаются правила конвертации данных?
Добрый день!
А можно по подробней про настройки описать, где какой узел надо создать, какой путь на мобильном прописать?
К тому же после первого запуска и ввода начальных остатков при запуске и дальнейшей работе ошибка в процедуре СформироватьОстаткиНаСервере() — «ТекГруппа = Элементы.Добавить(«Группа» + Строка.КлючПоиска, Тип(«ГруппаФормы»), Элементы.Остатки);
«
(61) если не ошибаюсь, порядок реквизитов не важен, а вот структура реквизитов справочника должна быть идентичной.