<?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='\
Потестируем (:
Но вот расчет ставок НДС можно производить, а не тупо константу 18 забивать.
очень полезно, спасибо
Закладка «Производство» — «Продукция списывается на затраты подразделения …». Выдает ошибку: «Поле не найдено «ДокументОснование»
Спасибо.Очень удобно
Обработка неплохая. Предложили бухгалтерам. Пользуются периодически
Моим пользователям очень пригодится. До этого они руками все проверки делали, может не стоит им показывать автоматическую диагностику, а использовать самому для их контроля?!
(6) proger1c81, наша задача — нести разумное, доброе, вечное, а ты — «не показывать»))
(3) Рамзес, спасибо за замечание, исправил.
(7) обработка полезна продвинутым пользователям. А непродвинутые вообще думать не хотят, хотят только, чтобы за них программа всё делала. На досуге думают не о работе, а думают, что у них не автоматизировано и что ДОЛЖЕН им программист
А она тестирует базу до закрытия месяца или после????
буду тестировать, посмотрим что из этого получится, месяц первый раз закрывать буду…
По авансам сам думал написать подобную проверку, как раз подвернулась данная обработка. Из замечаний пока: не сохраняются отборы в анализах и в запросах не используются РАЗРЕШЕННЫЕ.
(13) ageres, спс за конструктивное замечание, поправим
Подскажите, а подойдет для КА?
(15) irapronira, Вообще я на КА не тестировал, но думаю некоторые из отчетов (не все) подойдут — проверьте, отпишитесь)
надо будет попробовать протестировать эту обработку,очень интересно что получиться.
В отчете «Закрытие авансов по покупателям(в разрезе контрагентов)» сбивается отбор. Выводит только колонку с контрагентами, а самые интересности опускает. По идее отчет должен выглядеть также как и «Закрытие авансов по покупателям(в разрезе договоров)» только без разреза договоров.
Не хватает заголовка в форме отчета — какой именно отрыт сейчас. Такое изобилие, не трудно заблудиться. Спасибо за работу.
В отчете «Проверка начисления НДС с авансов полученных» период отчета никакой роли не играет. Конфигурация 1.3.11.
(21) SergeyD, спасибо за конструктивные замечания, поправим! Если еще что обнаружится — пиши)
Интересно бы посмотреть ))) Жаль смарт-денежек не хватает.
В любом случае, комментарий-то в моем файле останется,
найду потом этот отчетец
(23) mamanelli, дык это, на сайт на мой перейдите, там есть. Если понравится — с вас плюсик)
Отличная обработка!!! Нужна для проверки пользователям, что бы сами себя еще проверили. Для их спокойствия!!! Спасибо.
На 8.1 будет работать?
(26) firevii, версия под платформу 8.2. Но если есть необходимость — переделывайте под 8.1. Код останется тем же самым.
а РАУЗ проверяет? )
Я бы взял, если б проверяла.. Иначе придется самому писать..
(28) AlX0id, РАУЗ не проверяет) можем скооперироваться, кстати, для РАУЗа сделать, я тогда в общую тоже добавлю
Спасибо за разработку, думаю в будущем очень будет нужна, после перевода БУ на 1с 8 в конфигурацию на базе УПП.
пригодилась! Спасибо огромное! Очень удобно!
Вроде что-то показывает, а ошибок в этом документе не вижу
Очередной тестировщик — почти все пригодилось и показывает правду, пока замечаний не выявлено. УПП 1.3
Респект за разработку…также в УПП 1.3 крутится.
Скачал обработку буду тестировать результат напишу. Автору спасибо за труды.
(36) sumixam, какие результаты тестов?
В общем посмотрел отчет, дал бухам потестировать, но у нас для проверки сделан свой, этот бухов не утроил. Мне в приципе все понравилось, оставил, может и пригодится.
Спасибо! Очень удобная вещь!
Огромное спасибо. Очень удобная обработка. Даже когда УПП пишет что в бух. учете все супер, она находит минусы, которые при большой номенклатуре в жизни «с кандачка» не найти
(11) Сам разобрался и другим напиши)
irapronira, для КА 1.1 все процедуры отрабатывают?
Что-то какой-то бред у меня выдает данная обработка. Например, проверка документов с выделенным НДС без с/ф, выдает документы, где с/ф есть и проведена.
Проверки по партионному учету тоже врут, в частности по отрицательным остаткам на складах.
Может стоит расшифровку нормальную сделать, чтобы хоть показывала обработка, где она такое увидела?
Партии должны выводиться как минимум в разрезе организаций, иначе это филькина грамота.
Документы, которые обработка в партионном учете выдала, якобы неправильные, вообще по БУ не проходят.
Но название красивое — Диагностика УПП 🙂
(43) Salty, если честно, на последних релизах обработка не тестировалась, может в этом дело? Если что, можем помочь с проверками, стучитесь в личку.
irapronira, для КА 1.1 все процедуры отрабатывают?
Скачал. Стал проверять в своей организации. Не учитывает разрез организаций. У нас несколько организаций и мы между ними передаем, оприходуем и списываем. Обработка показывает отрицательные остатки. Сели разбираться. Оказалось что никаких отрицательных остатков нет. Просто обработка берет по складу. И не учитывает организацию
А автор не будет выкладывать руководство к обработке? Ну или пример ее использования? Что в каком порядке проверять. Как именно ? Или эта обработка только для программистов которые полезут в СКД и по запросу будут разбираться?
Добрый день! Обработку в свое время делал «под себя». До уровня типового решения она, конечно, не дотягивает, но тем не менее может быть полезна. Можно еще аналоги посмотреть — возможно, есть более «продвинутые».