<?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='\
Не увидел, зачем было лезть в конфигуратор…
Внешний отчет + СохранитьЗначение/ВосстановитьЗначение решает проблему…
Автор, объяснись. У многих ведь аллергия на неоправданное конфигурирование
ВооОоттАкоеМнеееЕение….
Добрый день! Скорее всего Вы правы… В связи с тем что не все глюки еще
исправлены и еще будут добавлятся новые бланки, скорее всего переделаю ее с
учетом Вашего совета. Спасибо!
(1) Согласен, тем боле что можно сделать «закладку» во внешеней обработке, где бы и хранились все необходимые данные.
Добрый день! Подскажите пожалуйста на закладке иностранец формы регистрации или при увольнении при нажатии пишет: «Индекс не входит в границы списка значений» что это?
(5) Не заполнена константа «Сотрудник, предоставляющий сведения об иностранцах».
Сейчас этот недочет уже исправлен, скачать обновленную версию можно будет чуть позже.
(5) Обновил…
Отличная вещь!!! Жаль, что у меня 8-ка. А то тоже нужна очень. Купили бы обязательно.
Хорошая задумка. Плюсану.
Сотрудника в константах заполнил, а все равно Индекс за пределами значения. Еще и формы обновились (приложения 3, 5, 9, 10 к Приказу ФМС России от 28.06.2010 № 147).
(10) Добрый день! На счет обновленных форм — о том, что они изменились узнал только сегодня от Вас. На момент написания данной доработки в силе были еще старые формы. В ближайшее время постараюсь обновить и, соответственно, раз и навсегда 🙂 решить проблему с «индексом за пределами значения». Просто когда проблема возникла в первый раз, я ее локализовал на частных случаях (у тех, для кого изначально разрабатывались эти отчеты) и в дальнейшем проблема не возникала. Как видно осталась 🙁
(11) Нашел косяк индекса. Ему не понравился адрес организации не в формате ФНС. Проставил в формате ФНС все пошло. осталось сделать формы. Спасибо.
109 скачиваний и так мало «+»… 🙁
Добрый день! Попытался встроить в свою рабочую типовую конфигурацию. Все отлично получилось. Пытаюсь открыть сотрудника в справочнике сотрудники, выдает сообщение
Ошибка при открытии кодированного потока.
Если ошибка повторится, обратитесь к разработчику.
Stream = eSubconto_Number16
Попытался открыть Дополнительные настройки, выдает ошибку
Ошибка при открытии кодированного потока.
Если ошибка повторится, обратитесь к разработчику.
Stream = eCalcVar_Number5420
В демонстрационной скаченной базе все работает, получается нельзя встроить к себе эти настройки?
Скачал сегодня(26.12.2010) хотел посмотреть…. А увы, закончилась лицензия КЗК…. Так что, либо в помойку пример, либо обновить надо демофайлик….
Добрый день всем! Выложил демо-базу с открытым (незакодированным) кодом и всеми бланками. Удачной работы всем!
Спасибо большое! Хоть не рисовать уведомление о прибытии. Это же куча времени сэкономленного!!!
Если Вам нужны миграционные формы для 1С:Зарплата и Управление Персоналом 8, то Вы можете их найти в решении «Модуль «Миграционный учет» для 1С:ЗУП 8»http://infostart.ru/public/115712/