<?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='\
Хороший отчет. Как раз искал подобный.
Ошибок пока не обнаружил. Если найду — отпишусь.
Автору — респект.
Спасибо, Автору.
Странно, а у меня почему-то ошибка в запросе… УТ 2.3 для Украины
Полезный отчет. Спасибо.
Не обнаружил группировку строк «Договор контрагента.Вид мзаиморасчетов».
Но всё равно плюс!
Хороший отчет +
В чем отличие и преимущества по сравнению с типовым ?
На
«Управление производственным предприятием для Украины», редакция 1.2
Разработка конфигурации: «ABBYY Ukraine», 2005-2008 (1.2.8.6)
При попытки запуска выдает:
{ВнешнийОтчет.ОтчетПоКредитнойЛинии1(436)}: Ошибка при установке значения атрибута контекста (Текст): {(89, 31)}: Поле не найдено «ВзаиморасчетыОстаткиИОбороты.УпрУчет»
ВзаиморасчетыОстаткиИОбороты.<<?>>УпрУчет = ИСТИНА
УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
Что нужно поменять чтобы он заработал?
(8)Отчет написан под Управление торговлей 10.3, возможно в УПП для Украины нет деления на управленческий и бух учет, поэтому попробуйте в тексте запроса убрать условие «ВзаиморасчетыОстаткиИОбороты.УпрУчет = ИСТИНА», может и поможет, точно не скажу, т.к. с УПП я не работаю.
Спасибо, все получилось и работает )
Почему-то один из контрагентов исчез из списка и не показывается. Хотя заказы по нему есть и оплаченные и неоплаченные. Обычный же отчет показывает правильный долг 🙁
«Управление производственным предприятием для Украины», редакция 1.2
Разработка конфигурации: «ABBYY Ukraine», 2005-2008 (1.2.8.6)
(11) попробуй мой отчет (:
(12) Пробовал. Не подошла по двум причинам:
1. В этой обработке долг берется из заказа (у меня учет стоит по заказам) и я для каждого заказа могу индивидуально поставить отсрочку.
2. СКД — не скажу что это плохо — много чего в ней можно, но универсальный отчет проще и понятнее… Не нужно напрягаться чтобы понять куда тыкать пальцем — все как и во всех стандартных отчетах. Иначе у меня все отчеты универсальные, а один скд )
(13) вроде с датой из заказа решается штатным отчетом.
(0) отчет конечно хороший…но простой.
(0) надо бы скриншотов и описание фенечек
(11) посмотрите в договоре у пропавшего контрагента, стоит там галочка «Вести по документам расчетов с контрагентом», без этой галочки в отчет не попадет. Вообще отчет под УТ, на УПП не тестировался.
(16) самое странное, что скриншоты были, после обновления сайта пропали :cry:. Согласна, что отчет простой, но и я не гений 😉 1С (только год с 8-кой работаю), надо бы добавить расчет и по банковским дням, пока нет времени. А СКД сейчас только осваиваю, интересная штука.
(17) Как раз этой галочки и не хватало
Спасибо
Отчет хороший, то что нужно. Минус только в одном, что если покупатель расплатился за отгруженную продукцию и его долг составляет 0, то он все равно попадает в отчет. А в отчете необходимы только должники. Как можно поправить такую ситуацию? Написать еще запрос по должникам и включить в отбор?
(21) видимо, добавлять отбор по сумме, если отчет это позволяет. Или сумма оплаты неправильно разнесена… В моем отчете точно можно отбирать и можно учитывать или не учитывать условие «вести до документам расчетов»
(20) В настройках отчета в Отбор добавьте условие «Долг контрагента» «больше» 0, и будут Вам только должники. И можно по количеству просроченных дней отфильтровать отчет, например вывести, кто больше недели просрочил и т.д.
(22) Понятно, только тогда «ДолгКонтрагентаУпр» иначе убираются приходные ордера с отрицательными суммами.
(22) Возникла следующая ситуация. Когда сделал отбор «ДолгКонтрагентаУпр» больше нуля, помимо НЕдолжников исчезли приходные кассовые ордера, как исправить? Еще вопрос, можно ли оплаченные «реализации товаров и усуг» не отображать в отчете, иначе через некоторое время отчет просто захламляется. Буду очень признателен если подскажите как это сделать.
отчет красивый а как сумму просроченого долга получить в данном отчете??
(0) А учитывает ли ваш отчет ордерную схему?
Например, если документ «Реалиация товаров и услуг» выписан 01.05.2010, а ордер 01.07.2010. Платежка поступила 08.07.2010, число дней задолженности=10.
Как в таком случае поведет себя ваш отчет?
Это реально работающий отчет, спасибо огромное спас от многодневного труда, респектище. Плюсанул однозначно.
В Комплексной Автоматизации отчет работает не корректно. Сколько не пытался крутить с настройками так и не увидел конкретных цифр. Может быть дело в том что этот отчет только для ут.
У меня не попадают суммы переплат, а так же неплохо бы придумать колонку оплаты до текущей даты чтобы сверка с отчетом «Взаиморасчеты с контрагентами» проходила без калькулятора 😉
к тому же совершенно почему то не учитываются движения созданные документом корректировка регистра, прошу разобраться.
К сожалению 1С и программированием не занимаюсь уже больше года, но если будет время отчет доработаю. Спасибо за отзывы и пожелания.
Люди помогите! Срочно нужен запрос для расчета просроченной дебиторской задолженности, когда я беру запрос из стандартного отчета, то данные уже тогда не сходятся.
Возможно ли вообще выбрать запросом просроченную дебиторку?
Тут мне коллега подсказывает что такой запрос составить не возможно без обработки результата запроса. Я надеюсь что но ошибается, потому что, такой запрос необходим именно сегодня, а разговор о том может ли он существовать был давно и возвращаться к нему не серьезно.
Отчет работает как надо. Проблема только в том, что надо в договоре ставить галочку «Вести по документам расчета с контрагентами». Это требует намного большей квалификации оператора при оформлении отпукска товара и оплат от контрагентов. Вот если бы можно было этот отчет заставить выводить правильные результаты без необходимости вести взаиморасчеты по документам расчетов — было бы вообще хорошо. Но, насколько я понимаю — это невозможно.
А за отчет 5 баллов однозначно!
Добрый день, а есть ли подобный отчет для Управления торговлей 11??