<?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.6.11.7
При открытии обработки:
{Форма.Форма(302,2)}: Переменная не определена (Интеграция)
<<?>>Интеграция.ЗаполнитьПравила(БазаЗагрузки);
{Форма.Форма(325,27)}: Переменная не определена (Интеграция)
ПравилоЗагрузки = <<?>>Интеграция.НайтиПравило(БазаЗагрузки,ИмяПравила);
{Форма.Форма(330,41)}: Переменная не определена (Интеграция)
Если НЕ ПравилоЗагрузки.ВидЗагрузки = <<?>>Интеграция.ПолучитьПредопределенноеЗначение(ВидПравила)
{Форма.Форма(333,34)}: Переменная не определена (Интеграция)
ПравилоЗагрузки.ВидЗагрузки = <<?>>Интеграция.ПолучитьПредопределенноеЗначение(ВидПравила);
{Форма.Форма(340,22)}: Переменная не определена (Интеграция)
РеквизитЗагрузки = <<?>>Интеграция.НайтиРеквизит(ПравилоЗагрузки,ИмяРеквизита,ИмяТабличнойЧасти);
{Форма.Форма(354,48)}: Переменная не определена (Интеграция)
А, сорри, в режиме конфига нашел описание…
а новые Используемые объекты конфигурации:
— справочник «Базы загрузки» (НОВЫЙ);
— справочник «Правило загрузки» (НОВЫЙ);
— справочник «Правило загрузки реквизитов» (НОВЫЙ);
— общий модуль «Интеграция» (НОВЫЙ);
— перечисление «Виды загрузки объектов» (НОВЫЙ);
— перечисление «Виды загрузки реквизитов» (НОВЫЙ);
— регистр сведений «Соответствие загруженных объектов» (НОВЫЙ);
где можно взять чтобы посмотреть работу данной разработки, без них непонятно зачем сама обработка выложена, достаточно было бы выложить описание.
Скорее всего понадобится в скором времени нечто подобное, только для украинской бухгалтерии и неизвестно еще какой конфигурации Microsoft Navision хотелось бы не с нуля все придумавать, а хоть немного использовать имеющийся уже у людей опыт.
Интересно…к чему сама обработка, если нет даже описания структуры новых объектов конфы? В документации — руководство пользователя, но не программера…
а примера из 1с в навижин нет?
из 1с в Навижн нет
Уважаемый Автор, а как с вами связаться?
Наша компания принимает решение о покупке как раз такого решения. Пишите если что на a.isupov НужныйСимвол medisorb.ru
Добрый день.
Интересует сама конфигурация 1С, ну или хотя бы более подробное описание внесенных изменений.
Как можно ее получить, если это возможно?
Заранее спасибо.