<?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) в смысле пустышка? прикреплена обработка
У меня firefox он видимо «глотает» расширение. Обработка-epf, но erf (отчет) открылось.
(4) ну хорошо)
Ошибка в модуле объекта(640) мРежимВводаПериода не являет. объектом
(6) отчет был сделан на основании типового очета конфигурции УТ 10.3.13.2, так же работате в конфигурации УПП. А Вы скорее всего его пытаетесь открыть в другой конфигурации, в которой нет объектка Отчет.УниверсальныйОтчет чем и вызвана такая ошибка.
Так в УПП в каждом документе реализации выводится же задолженность по договору (правда, на уровне плачено-не оплачено, без привязки к срокам).
Просроченная дебиторка, как правильно заметили, не дает отгружать.
Какие нюансы отличий этой обработки? К чему идет привязка — к дате договора и срокам просрочки в нем же?
(8) к сроку просрочки в ней же. Я в описание написал что если конфигурация доработанная таким образом что отгрузки не запрещаются, то отчет очень полезен.
(9) т.е. доработка понимается — достаточно только разблокировать в документах запрет на отгрузку просроченных по задолженности, и все?
Достаточно ли заполнять типовые условия дебиторской задолженности (срок в договоре), или необходимо еще что-то дописывать плюсом по условиям?
И какой ставить учет в договоре — должен стоять «по договору в целом», или для получения результата в вашей обработке это не обязательно?
(10)
Да достаточно.
Да достаточно заполнять срокт и ничего дополнительно дописывать не надо.
не важно какой учет стоит в договоре.
если необходима информация где и что необходимо дописать чтобы разрешить отгрузку могу помочь.
(12) да вроде все понятно, спасибо.
В РТиУ в ПриПроведении убрать блокировку проведения. Так ведь?
(12) Да так, только там в ОбработкеПроведения РТиУ вызывается метод в общем модуле.
По тексту сообщения («Превышено допустимое число дней задолженности по договору«) можно быстро найти необходимую процедуру.
А сохраните, пожалуйста, для Платформы 8.1!
(14) выложил для 8.1
как то все же не правильно он работает…. по контрагенту уже нет задолженности, а он её выдает..
По идее нужно анализировать Взаиморасчеты с учетом дней отсрочки. если в чем-то не прав то поправте меня.
(17) и так анализируются задолженность с учетом дней просрочки!
у вас скорее всего неправильно заполнен регистр «ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов», это значит что в документах в которых выбран договор с включенным признаком «ведения по документам взаиморасчетов» не всегда указываются документы преодоплаты или отгрузки. проверить это можно сформировав универсальный отчет по этому регистру с группировками: контрагени, документ расчетов с контрагентами, документ движения (регистратор). В очтете видна картина за какую отгрузку каким документов оплатили и также за какое постуление мы заплатили за какое нет и тем самым выделить неправильно оформленные документы.
Дело в том, что у нас разрознены филиалы и Платежки от контрагентов вводятся только в одном филиале. Поэтому нет возможности указывать какая платежка к какому документы относится. Есть ли какой-либо способ всё таки получить дебиторку?
(19) Или надо чтобы платежки мигрировали в остальные филиалы, или разносить эту информацию только в одном филиале где офорлмяются платежки и соответвенно отчет сможет работать только в нем. Я выложил обработкуhttp://infostart.ru/public/81141/ которая заполняет необходимую информацию в документах.
P.S.
Только не забывайте деалть копию базы и тестить на копиях. мало ли какая информация может потерятся.
(20) Никто не ждёт испанскую инквизицию!
Собственно обработка тянет на то, чтобы схватить минус. Почему?
1. Куцее описание
2. Минимальное изменение относительно типового отчета.
Что сделать, чтобы минус не появился? Расширить описание отчета(максимально) + накатать статью по правильному ведению учета по документам расчета и его контроля.
Тут в свое время был бум отчетов до дебиторке, которые получали цифры по просроченному долгу при любых условиях ведения учета.
(21) описание немного дописал.
Я и не претендовал на патенты по этому отчету, просто взял типовой немного дописал (вприницпе любой программист мог бы это сделать) и этот отчет очень помог моему клинту.
«Тут в свое время был бум отчетов до дебиторке, которые получали цифры по просроченному долгу при любых условиях ведения учета» если бы дал ссылку думаю люди были бы тебе благодарны.
Мои в порядке публикации (статьи и обработки)
http://infostart.ru/public/20221/
http://infostart.ru/public/20962/
http://infostart.ru/public/21038/
http://infostart.ru/public/21095/
http://infostart.ru/public/21672/
http://infostart.ru/public/58966/
есть опыт доработки под банковские дни, под 8.2 управляемые формы и т.д. Просто сейчас нет времени писать универсальное решение.
Других авторов
http://infostart.ru/public/19049/ -аналог Вашего
http://infostart.ru/public/20074/ — тоже
http://infostart.ru/public/19195/ — тоже
http://infostart.ru/public/21968/
http://infostart.ru/public/75917/
http://infostart.ru/public/19212/
(23) спасибо. щас себе что-нибудь интересное подберу
Спасибо, попробую.
Начал разбираться в отчете. В целом неплохо, но смутило поле интервал, которое заполняется 50000 и больше не меняется. Автор — дай описание этому полю пж. Не понимаю, для чего оно…
(26) artspeed, стоит начать с того что отчет в реквизите «Интервал» использует типовой справочник Настройка интервалов и его значения от отчета не зависят. В нем задаются интервалы дат по которым будет группироваться задолженность. А 50000 это предусмотрено программистами программы УТ как максимальное количество дней в интервале, что равняется ~137 годам. Думаю больше вряд ли Вам понадобится 😉 Мне кажется Вам нужно побольше изучить программу.
Да, но если этот реквизит нужен для разработчика, то думаю нет смысла его делать доступным для открытия. Любого пользователя это смутит. А при открытии автоматическую установку реквизита на это число.
Я бы так сделал.
(28) artspeed, нет вы не поняли, я говорил про ограничение в 50000. А реквизит нужен для формирования интервалов по задолженности.
теперь понял. спасибо.
Подскажите, учитывает ли Ваш отчет кредиторскую задолженность перед контрагентом, или только дебиторскую?
(32) OscarTT, обновил сегодня публикацию, теперь отчет так же учитывает и кредиторскую задолженность.
Нет дебиторской задолженности 8.1 УТ
Как настроить кредиторскую задолженность УТ 10.3 на 8.1
Как настроить ?
Помогите настроить дебиторскую задолженность
(37) extremhelp, что у вас конкретно не получается? Настроить отчет? в договорах стоит признак «вести по документам расчетов» ? смотрели моюпубликацию про заполнение документов?
(34) extremhelp, радовались бы что ее нет ;))
Очень полезная и нужная обработка) Спасибо
Хороший отчет. Но по мне так сильно не хватает вывода Период + Регистратор, общая сумма задолженности видна, а как сформировалась не понятно?
(41) Harry_Joplin, да так оно и есть, потому что отчет показывает именно остатки взаиморасчетов. А для того чтобы увидеть движения надо использовать отчет «Ведомость по взаиморасчетам с контрагентами» там и регистратор и период, но нет просрочки и долгов по периодам. Да конечно было бы классно попробовать их объединить, но не знаю на сколько это возможно и целесообразно. Посмотрите, возможно есть похожие (может быть платные), отчеты показывающие обороты вместе с просрочкой.
скачал и доработал под себя, спасибо
(43) lees, пожалуйста.
Данный отчет очень помог, спасибо!!!