<?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='\
Большой плюс авансом!
Отлично!
Как я понимаю нужна ДБФ база и наличие бух. итогофф
Проверю дома
Нее, от базы не зависит. Там куб создаётся штатными «БухгалтерскимиИтогами»
Ясно, проглядел 🙂
Сначала была идея сделать всё на прямых запросах с помощью класса berezdetsky, но он работает только в SQL, поэтому отказался. Для Торговли всё попроще и реализуемо как в SQL так и в DBF. Ветку, где я начинал осваивать OLAP и пытал steban’a, наверняка читал:http://www.1cpp.ru/forum/YaBB.pl?num=1164626462
За что ему ОГРОМНОЕ СПАСИБО!
Хе-хе… У меня-то побогаче функционал будет (судя по скриншотам). Правда вот не встроенная в 1С сводная получается, а прямо в Excel. Зато измерения произвольные и ресурсы любые 🙂
Вобщем на мой взгляд идея хорошая.
azernot, да, видел, поэтому не спорю. Эту обработку выложил в качестве очередной пропаганды 1с++ и аргументом против тех, кто утверждает, что «семёрке хана».
2(5) Хде оно?
+(7) По-моему нечто подобное выкладывал вроде Steban
Наверное вот это:http://infostart.ru/projects/1076/?ref=1630
А steban делал для ТиСа. Ссылку смотри в (4)
Сеньк, что-то мимо я все гляжу сегодня 🙂
Судя по первому скриншоту, это сделано на основе обработки Максима Головина, впервые опубликованной на hare.ru в 2003 году.
http://mista.ru/articles1c/hare/article.69.html
По наводке Степана немного обновил описание.
К стати сказать, установка офиса не обязательна — OWC 11 можно бесплатно скачать с микрософта:
http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=7287252c-402e-4f72-97a5-e0fd290d4b76
Бесплатно скачать, конечно, можно.
Есть одно «НО»:
Примечание. Если лицензия на программу Office 2003 отсутствует, то лицензия на веб-компоненты Office позволяет использовать их в статическом, автономном режиме на стороне клиента исключительно для просмотра. Если же лицензия на программу Office 2003 имеется, лицензия на веб-компоненты Office позволяет использовать их в интерактивном режиме.
Степ, если это перевести эту фразу на понятный язык применительно к данной обработке, то получается примерно следующее:
«Вы не сможете создать файл куба с помощью этой обработки, а сможете только просматривать ранее сформированный куб».
Так?
to steban
Текст лицензии: «Если вы не являетесь лицензиатом ни одного из лицензируемых продуктов, вы можете установить и использовать только одну (1) копию программного обеспечения исключительно для просмотра и печати статических документов, текста и изображений, созданных с помощью программного обеспечения.»
Т.е. можно создавать, просматривать и печатать.
Для создания куба нужен только OLEDB provider 4 OLAP. Его, кажется, можно использовать без лицензии.
Без лицензии на MS Office не будет работать Design Mode для компонентов OWC (проверено).
«лицензия на веб-компоненты Office позволяет использовать их в интерактивном режиме». насчет этого не знаю. Проверю и отпишусь.
Стёп, ну как проверка?
Очень понравилась разработка. Однозначно плюсую. Ради этого и зарегистрировался. Но есть одна проблемка, при попытке заполнить куб другими данными выводит такое сообщение:
Выгрузка в cub неудалась: Microsoft® OLE DB Provider for OLAP Services: The cube file ‘c: estunloading.cub’ cannot be opened for writing.
Помогает только перезагрузка 1С. Можно ли это как-то решить?
(19) Да, есть такая проблема. Пока могу посоветовать только выбирать другой каталог выгрузки данных.
Выгрузка в cub неудалась: Поставщик Microsoft OLE DB для служб Analysis Services 2005: Ошибка OLE DB: Ошибка OLE DB или ODBC : Вылезла такая ошибка.Использую Офис 2007.
(21) Насколько я понял, 2007 оффис не включает OWC… я решил эту проблемку установив его из комплекта 2003-го.
(22) Это слишком просто.Я тоже установил OWC из 2003 комплекта…В результате имеем:
Выгрузка в cub неудалась.Есть еще какие-то варианты(предположения?)
(21) а у тебя стоит:
4. Драйвер доступа к данным MS Access (находится в ODBC Data Source)?
(24)Да,конечно.
Хорошая тема, если бы было под OpenOffice то цены бы небыло.
(26) а ты прочитай комментарий berezdetsky № 13 и следующий комментарий steban’a. Исходя из этого можно сделать вывод, что это реально использовать и под ОпенОфис, если отчеты будут просматриваться в автономном режиме.
Интересная вещь, спасибо =)
Кстати, вот есть о проблеме, описанной в (19):http://support.microsoft.com/kb/230958
Нужно в него добавть проверку на наличие записей иначе ошибку выдает.
проблему «Microsoft® OLE DB Provider for Analysis Services: Error while processing a partition: ‘Processing error [Source data contains no r» как можно решить ?
скорее, пожелание
Для ВерсияОфис=10 По 12 Цикл
Попытка
Сводная.СоздатьЭУ(«OWC»+ВерсияОфис+».PivotTable»);
Прервать;
Исключение
КонецПопытки;
КонецЦикла;
(32) OWC.12 — нету. 2007-й офис также идет с OWC11
(33) Виноват, пусть будет «По 11». В любом случае, у разных юзеров может быть установлен как ХР, так и 2003
(34) Хозяин — барин. Код открыт 😉
Но я, если честно, Office XP уже давно не встречал
«Неудачная попытка создания объекта (Общие.Форма.Привязка)»
При открытии пишет
Что надо сделать ?
(36) Не прочитал хелп. Сори