<?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='\
Не пользовался мини деньги, а зачем там сканируем а потом все равно в поле ФД вносим код с чека?
При сканировании в поле комментарий попадают ещё два кода ФН и ФП, ФД приходится вводить в ручную.
{ВнешняяОбработка.ЗагрузкаЧеков.Форма.Форма.Форма(20)}: Ошибка при вызове метода контекста (ПрочитатьJSON)
Документ = ПрочитатьJSON(Чтение);
по причине:
Непредвиденный символ при чтении JSON
Ответ сервера: the user was not found or the specified password was not correct
ЧЯДНТ?
Я конечно не с телефона отсканировал данные а вбил информацию с чека, или так не получится?
Отлично! спасибо, всё прекрасно работает
У меня немного другой сценарий ввода документов расхода:
1) сначала автоматическая загрузка выписки банка
2) потом детализация расходов по чеку
для данного сценария доработал обработку следующим образом:
http://infostart.ru/public/359549/
1) поиск существующего документа расхода по дате и сумме документа
2) заполнение всех полей ФН, ФП, ФД сканированием qr кода с веб камеры с помощью программы —
(4)Получеться, пароль логин на закладке настройки вводили?
(6)Да, вводил. А на данный момент у Вас работает получение данных с сервиса? а то может у них там предпразднечная профилактика и т.д
Ооо, я даже зашел на сервис указанный в обработке, через браузер, там вбил логин пароль, таже ошибка «the user was not found or the specified password was not correct «. Видимо проблема с моим логином, но на основной сайт я та захожу
(8)У меня работает, что за парольлогин? Налоговая выпустила мобильное приложение по проверки чеков, нужно зарегистрироваться там, логин номер телефона пароль они присылают в смс.
(5)Интересно, я бы взглянул на обработку.
(9) ааа, просто в описании «в настройках логин пароль с САЙТА налоговой» я его и вбивал ))) Сайт где личный кабинет физического лица. Я думал о нем речь в описании
Пришло обновление на мини деньги. Теперь ФД пишется в комментарий. Так что уже ничего не надо вводить с чека. Для себя уже сделал, плюсом обернул в попытку/исключение ПрочитатьJSON — не красиво работало если чек еще не передан в налоговую
(12)Доработал, добавил загрузку документов за период.
(13) Идея хорошая, для меня это не актуально. Скачивая обработку я просто хотел узнать каким способом получать данные самого чека. Других источников (может плохо искал) не нашел.
Мне кажется обработка будет более универсальной если ей можно будет пользоваться как через файл, так и как обработку заполнения ТЧ.
Массовое заполнение чеков актуально для тех кто не ведет доп. аналитику по статьям. В других чеки лучше заполнять поштучно и из самого документа.
ошибка выходит при загрузке- наименование товара не переносится в документ в поле подробности. Сам код не смотрел
Что за ошибка?
Обработка по конкретному чеку считывает с сайта ФНС названия товаров. Но по кнопке «Перенести в документ» названия товаров в документ не переносятся.
По логике название товара должно переноситься и записываться в поле «подробности» конкретной строчки документа расхода.
Деньги 8, редакция 2.0 (2.0.33.11)
По кнопке «Перенести в документ» происходит поиск строки в регистре сопоставления статей расхода названиям товаров, введённых ранее. Если статья расхода не находится, то строка пустая.
Вас понял. Идет попытка автоматически подобрать статью расхода по товару. Но параллельно было бы неплохо делать запись названия товара именно в подробности строки. Это в качестве идеи.
Не могу представить себе сценарий работы, при котором понадобиться название в колонке подробности.
программа учета расходов на то и программа, чтобы видеть историю покупок. Где же тогда видеть названия товаров, которые были куплены?
У меня статьи расходов соответствуют товарам, ну или группам товаров.
теперь ясно. Можно и так конечно, но список статей расходов сильно распухнет конечно
Зависит от степени детализации, можно просто «молочные продукты», а можно молоко, кефир и т.д.
Подскажите, пожалуйста, как прикрутить эту обработку в базовую версию Денег? Платформа: 1С:Предприятие 8.3 (8.3.13.1809)
Конфигурация: Деньги 8, редакция 2.0 (2.0.34.8)
Режим: Файловый (без сжатия)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
Вариант интерфейса: Такси
Спасибо!