<?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='\
Судя по скриншоту реквизиты из «Контактных лиц» не выводит, а жаль 😥
(gutentag) Прикручу скоро, раз так необходимо….)
Не нашел? А это:http://infostart.ru/public/19387/ ?
http://infostart.ru/search/?q=%CF%E5%F7%E0%F2%FC+%EA%EE%ED%F2%E0%EA%F2%ED%EE%E9+%E8%ED%F 4%EE%F0%EC%E0%F6%E8%E8+%EA%EE%ED%F2%F0%E0%E3%E5%ED%F2%EE%E2& s=%CD%E0%E9%F2%E8
просто поиском:
и все находится.
Мда.
Какая популярная идея, однако …
(larisab) Читай внимательно !
«Искал стандартную печать справочника Контрагенты»
т.е. в стандартной конфигурации, а не на инфостарте.
В предложенной тобой обработке данные не группируются по контраенту, а выводятся в несколько строк — не удобно !!! В твоей обработке нет фильтров по незаполненному юр. и физ. адресу, смысл моей именно офильтровать не правильно заполненных контрагентов и разбираться почему какой-то конкретный реквизит не заполнен в базе. А так обработка хорошая, плюс тебе.
koliaff — я и не говорила, что она лучше, я говорила, что она есть. То что ее надо улучшить — знаю, (все как то не до нее). Речь о том, что до тебя кто-то сделал, то есть увидел эту проблему первый. На Инфостарте много чего плодится в геометрической прогресии, приходят новые авторы и пытаются заявить о себе. Вот при этом заявлении желательно перед выкладыванием «нетленки», провести некое небольшое «патентное исследование» и сослаться на аналоги. Так делают в научном обществе. Одинэсники чаще всего далеки от этого, но это не значит, что стремиться к этому не надо.
Не хотелось бы, чтобы Инфостарт превращался в банальный файлообменник.
А твоя обработка мне понравилась — я поставила тебе плюс.
(larisab) Я проблему не искал, мне заказчик её нашёл. ) На счет сравнения — ты права. Будем проводить 😉
На счёт поиска на инфострарте я его тоже делал перед тем, как написать обработку, но не нашёл твоей обработки. Попробуй задать вот такие слова для поиска : «Печать справочника контрагентов». В этом запросе твоей обработки не будет. Тебе надо добавить слово «Справочник» в ОПИСАНИЕ чтобы такие же поисковые запросы находили твою обработку. Удачи.
(7) Для поиска я взяла название твоей обработки «Печать контактной информации Контрагентов» и он мне выдал 2 наши обработки 😀 😀 😀
Так что не надо отмазываться 😉
(8) Название своей обработки я уже придумывал, когда её написал и выложил. Сама понимаешь, что когда посидел над обработкой, повникал в проблему, уже другие слова подбираешь для названия (поиска), не те, которые бы использовал в самом начале… 😀
То есть ссылок не будет?
Тогда замени название на настоящее:
«Печать справочника Контрагенты для конфигурации Бухгалтерия предприятия 1.6. С наложенными фильтрами.» 😀 Тем более, что из контактной информации взят только адрес.
(larisab) Ссылок на твою обработку ? Добавил в описание своей.
На счет контактной информации — добавлю контактных лиц и телефоны, как обещал gutentag во втором посту.
(11) Вот и молодец! Теперь будем улучшать каждый свою :). Удачи!
(larisab) Я добавил телефоны организации, контактных лиц и их телефоны, твой ход 😉
А если меня интересуют только телефоны? Мне обзвонить всех надо?
Тогда это всё надо к универсальному отчету прилаживать, чтобы выбирать реквизиты которые надо выводить, или воспользоваться твоим отчетом 😉
(15) Не так все просто в этом соединении справочника и регистра «Контактная информация» и простым отчетом оно не решается 😉
(larisab) Согласен, информации много и хранится она в разных местах. Как минимум надо обработать два справочника и регистр сведений…
Посмотрел запустится ли отчёт в конфигурации УТ 10.3 — не запустился. Там немного другая структура конфигурации. Поэтому пришлось для УТ отдельный отчет написать, выложил отдельным файлом здесь же….
Что то ваш отчет не сильно отличается от штатного УТ. Если уж делать так более развернутый. Добавить в отдельную колонку email, ген.дир.
(voler) Отчет изначально предназначался для конфигурации БП, потому что в этой конфигурации воообше нет штатного отчета для печати списка контрагентов с контактной информацией. Я его просто попробовал запустить и в УТ — он не запустился, переделал не много и выложил. Ваше пожелание видеть всё в отдельных колонках реализуется за две минуты. Если действительно надо — сделаю, а если просто для того чтобы отличался от штатного чем-нибудь, то не вижу смысла, т.к. отчет сам писал, внешняя схожесть с типовым — случайность. ) Я типовой в УТ даже не видел 😉
Так держать, Коля !
недавно аналогичную выкладывал 😉
(ivan_luzinov) Посмотрел, понравился, плюс поставил 😉 А возможно в твоём отчете сгруппировать по контрагенту так, чтобы все реквизиты его в одну строчку выводились ? А то бумагу жалко 😀
отличная обработка. Целый час разбирался самостоятельно, потом плюнул и нашел на инфостарте. 😉
(22) не задавался вопросом… думаю СКД позволяет и не такое.. попробуйте поиграться настройками оформления
ввава
спс) чуток переделал, совсем хорошо стало
хороший отчетик, нам пригодился, когда понадобилось всех контрагентов распечатать с реквизитами для дальнейшего изъятия задолженности
Спасибо, отчет полезный.
Не понятен принцип сортировки списка.
Не хватает контактной информации контактных лиц…
А еще бы подбор списка контрагентов…
В общем, нам сколько не дай — все мало!))) Совершенства хочется!