<?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='\
не работает 🙁
Прекрипила к справочнику сотрудник , печатает, тольго пишет г. Уфа
И в низу Название организации вместо названия
В HTML печатается жестоко, но подход как минимум забавный.
Только запрос бы еще параметрами нагрузить — и красота.
Обработочка понравилась. Вот только у меня небольшая проблема. В виде расчета «Оклад по дням» стоит требовать ввода тарифного разряда. Хотелось бы сумму получить из разряда, только как запрос обработать. Что то никак не выходит. Может поможете?
Для Бухгалтерии прдприятия сгодится?
Никто не пробовал?
Думаю нужно скачать и попробовать, вот только не хватает денег на скачивание, сейчас напишу, скачаю наверное и попробую. Спасибо за обработку, буду пробовать!
интересное решение, но:
необходимо вручную менять город, дату. И вообще убивают колонтитулы, коих быть в договоре просто не может.
колонтитулы убираются при печати, город и дата — были требования под них оформил.
Идеальный вариант, использование Поля форматированного документа, но оно только для УФ, поэтому использовать как внешнюю печатную форму не получится, но на печать в итоге тоже выводится html с колонтитулами.
По крайней мере все работает и есть возможность допилить до почти идеального варианта! Спасибо! =)
А на 1с 8.2 конфигурация Комплексная автоматизация 1.1.12.1 будет работать ?
Конечно.
Спасибо больное за печатную форму она мне сейчас очень пригодилась!
Очень хороший отчетик!
А как убрать колонтитулы?
При изменении текста договора происходит что то чудесное. На сколько я понимаю, Договор может быть любого содержания, нужно лишь в нужных местах ставить записи типа [#ВидДоговора] [#МестоРаботы] и т.д. . Но при внесении изменений данные теги не обрабатываются, вопрос «Почему?».
Я думаю нужно в коде посмотреть, т.е. если вы их вставляете в текст договора , то в коде должно быть что-то, типа
СтрЗаменить (ТекстДоговора, «[#ВидДоговора]», Ссылка.ВидДоговора)
Спасибо!
Пригодилась
(16) так и есть. Все без ошибок, точно так же как в коде. Но иногда данную переменную не обрабатывает. Заметил закономерность, а точнее зависимость от шрифта. То есть, если переменная написана шрифтом как во всем документа и таким же размером, то все нормально обрабатывается. Но если изменить размер или просто дописать еще 1 такую переменную, то она не обрабатывается (заменяется). Вот такие чудеса. А в целом обработка архинужная!
еще раз спасибо! очень пригодилась!
Спасибо за обработку, на ее основе удалось решить локальную проблему по формированию доп.соглашений к договорам для УТ, рекомендовать могу только расширение функций отбора и параметров.
Основной или дополнительный отпуск можно подтягивать с должности. А так для упрощения формирования договора с «нуля» подойдет. Скачал, но в итоге все сделал по своему ). Автору спасибо.
(0) позабавило из описания «обновлены ошибки» — дескать, кто забыл, а вот они, снова воспроизведены :)))
По обработке — она полностью «ручная» что ли? т.е. все поля заполнять ручками?
просто использован html-документ, и все?
автору спасибо за труд в выкладывание обработки сюда,а надо заментить это не все так просто.но давайте будем объективны , действительно тут получаеться полностью ручное заполнение что надо заметить не являеться положительными характеристиками для данной обработки. но как уже сказли выше для оформление договоря с нуля обработка можно сказать нужна…, так что еще раз повторюсь автору спасибо за труд…)))))))))))))))))))))))))))))!!!!!