<?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='\
Вот бы еще по кредиторской такую.
ПО кредиторке есть подобие
http://infostart.ru/public/172119/
Задолженность поставщикам по срокам долга (УПП 1.3/БП 2.0)
Да,забыл спросить — а чем этот отчет отличается от стандартного в УПП ?
(3) webcisp, думаю можете сравнить со стандартным:
Там без учета отсрочки по договору
попробовал открыть в ут 10.3
{Форма.Форма.Форма(32)}: Поле объекта не обнаружено (мДействиеФормыВыполнитьВнешнююОбработку)
УниверсальныйОтчет.мДействиеФормыВыполнитьВнешнююОбработку = Новый Действие(«ДействияФормыВыполнитьВнешнююОбработку»);
Скачал в надежде, что этот отчет будет учитывать «Допустимое число дней задолженности», выставляемое в договоре контрагента. Запустил, сравнил со встроенным. Все тоже самое. Отчет не работает на заявленный функционал.
Группировки строк: Контрагент, Договор, Документ расчетов с контрагентом (реализация)
UPD. Сорри, оказывается там дальше еще один ряд колонок. В нем как раз таки все правильно.
Спасибо.
UPD2. Колонки хоть и есть, а вот данных в них нет. Не работает. Пруф в аттаче
(7) WellMaster, свойство в договоре нужно добавить «Количество дней отсрочки» (код 00000000027) и «Лимит ДЗ» (код 00000000038). Скорее всего из-за этого. Честно говоря уже не помню, но думаю если текст запроса помотрите будет понятно чего не хватает в Вашей базе. Скорее всего какого-то совйства нет или в договоре или у контрагента.
(8) Да, вчера ковырялся в коде. Действительно нету этих свойств. Ну добавлю я их, а их еще и заполнять придется? А зачем, если есть реквизит договора «Допустимое число дней отсрочки»?
(9) WellMaster, ну придется заполнить конечно. У нас в УПП 1.3.34.1 нету такого реквизита (.
Пытаюсь отчет прикрутить у УТ 10.3 свойства у договора заполнил, проверил даже в дебагере, находит их. НО в отчете графа лимит ДЗ напротив соответствующего договора не заполняется. Ну и просрочку не обсчитывает.
Что не так могу делать?
(7) Если разобрался как с ним работать, отпиши пожалуйста
(12) manoff, нет, написал свой отчет )
(13) WellMaster, Поделись :))
(14) manoff, уже поделился судя по всему 🙂
(105) Gazza,
С каких это пор в УПП нет реквизита «Допустимое число дней отсрочки»? Этот реквизит существовал еще с первых редакций УПП. То же самое и с суммой задолженности.
(13) WellMaster, если есть возможность поделись отчетом Дебиторская задолженность по срокам долга с учетом дней отсрочки
(17) Mx00, Так вроде скачивается нормально. Или нету SM? Могу кинуть, если не в минусах.
(18) Скачать я скачал, но там нужно заводить свойства, а ты писал про «Допустимое число дней отсрочки», вот мне как раз по этому реквизиту нужно, если у тебя именно так, то буду очень благодарен 🙂
mx(аt)mail.ru
(19) Mx00, Так скачай в моих публикациях:http://infostart.ru/public/178020/
Неплохо было бы систематизировать все отчеты по дебиторской/кредиторской задолженности
Скачал. Запустил в УТ 10.3. Ошибка
{Форма.Форма.Форма(32)}: Поле объекта не обнаружено (мДействиеФормыВыполнитьВнешнююОбработку)
УниверсальныйОтчет.мДействиеФормыВыполнитьВнешнююОбработку = Новый Действие(«ДействияФормыВыполнитьВнешнююОбработку»);
ЗАмечательно! Спасибо за супер отчет с небольшими ошибочками…
Коли отчет не тестировали для всех типовых конф, то хоть напишите в описании, в каких конфах отчет железно работает.
Получается я скачиваю, и потом оказывается что автор не тестировал свою работу на типовой конфе Ут 10.3
Зашел в конфигураторе в вашу обработку. В процедуре ПриОткрытии закомментировал строки:
Процедура ПриОткрытии()
УниверсальныйОтчет.мДействиеПолеВводаВидСравненияПриИзменении = Новый Действие(«ПолеВводаВидСравненияПриИзменении»);
УниверсальныйОтчет.мДействиеПолеВводаЗначениеПриИзменении = Новый Действие(«ПолеВводаЗначениеПриИзменении»);
УниверсальныйОтчет.мДействиеКоманднаяПанельФормыПечать = Новый Действие(«КоманднаяПанельФормыПечать»);
//УниверсальныйОтчет.мДействиеФормыВыполнитьВнешнююОбработку = Новый Действие(«ДействияФормыВыполнитьВнешнююОбработку»);
//УниверсальныйОтчет.мДействиеКоманднаяПанельФормыСправкаФормы = Новый Действие(«КоманднаяПанельФормыСправкаФормы»);
//УниверсальныйОтчет.мДействиеВстроеннаяСправкаonclick = Новый Действие(«ВстроеннаяСправкаonclick»);
//УниверсальныйОтчет.мДействиеВстроеннаяСправкаonmouseout = Новый Действие(«ВстроеннаяСправкаonmouseout»);
//УниверсальныйОтчет.мДействиеВстроеннаяСправкаonmouseover = Новый Действие(«ВстроеннаяСправкаonmouseover»);
УниверсальныйОтчет.ФормаПриОткрытии(УниверсальныйОтчет, ЭтотОбъект, ЭтаФорма);
КонецПроцедуры // ПриОткрытии()
После этого отчет стал работать.
Спасибо! Все ок вроде, будем проверять с менеджерами.
Если какие-то проблемы будут возникать, напишу.
Просьба в процедуре ПриОткрытии сделать проверку на имя конфигурации, вот код ниже:
Процедура ПриОткрытии()
УниверсальныйОтчет.мДействиеПолеВводаВидСравненияПриИзменении = Новый Действие(«ПолеВводаВидСравненияПриИзменении»);
УниверсальныйОтчет.мДействиеПолеВводаЗначениеПриИзменении = Новый Действие(«ПолеВводаЗначениеПриИзменении»);
УниверсальныйОтчет.мДействиеКоманднаяПанельФормыПечать = Новый Действие(«КоманднаяПанельФормыПечать»);
Если не (Метаданные.Имя = «УправлениеТорговлей» и лев(Метаданные.Версия, 4) = «10.3») тогда
УниверсальныйОтчет.мДействиеФормыВыполнитьВнешнююОбработку = Новый Действие(«ДействияФормыВыполнитьВнешнююОбработку»);
УниверсальныйОтчет.мДействиеКоманднаяПанельФормыСправкаФормы = Новый Действие(«КоманднаяПанельФормыСправкаФормы»);
УниверсальныйОтчет.мДействиеВстроеннаяСправкаonclick = Новый Действие(«ВстроеннаяСправкаonclick»);
УниверсальныйОтчет.мДействиеВстроеннаяСправкаonmouseout = Новый Действие(«ВстроеннаяСправкаonmouseout»);
УниверсальныйОтчет.мДействиеВстроеннаяСправкаonmouseover = Новый Действие(«ВстроеннаяСправкаonmouseover»);
КонецЕсли;
УниверсальныйОтчет.ФормаПриОткрытии(УниверсальныйОтчет, ЭтотОбъект, ЭтаФорма);
КонецПроцедуры // ПриОткрытии()
В моей УТ 10.3 стало работать!
Уважаемые коллеги, небольшое дополнение. Указанные автором свойства должны иметь тип значений «Число».
а в чем отличие от типового?
Добрый день
Если можно дайте ссылку на отчет Дебиторская задолженность по срокам долга с учетом дней отсрочки, у меня SM пока не хватает. Очень нужен.
Свойство завел, заполнил.
Что я делаю не так?
(29) попросите деньги вернуть 🙂 с меня автор 1SM трясет за рабочий продукт
(30)если бы этот с позволения сказать «продукт» был рабочий не тряс бы.
(31) странно, никому не отвечаете, а мне быстро время нашли. Хотя это понятно, с какой скоростью бегаете к техподдержке. Ладно, не берите близко к сердцу.
(32) я не зарабатываю сидя тут все время поэтому некогда отвечать, если мог бы сделал бы бесплатным этот отчет, т.к. он очень старый и разбираться в нем уже нет возможности