<?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) tormozit,
Да нет, не думаю. Хотя эту обработку я писал годами (только для себя). Сейчас же я был вынужден опубликовать её, потому что понадобились SMы «прямочас». У меня (как у человека, стремящегося к лучшему) просьба: если найдете какие-нибудь недоработки или недостатки в обработках — пожалуйста, напишите об этом в комментариях. Особенно это касается обработки для управляемых форм (3.0), которая оттачивалась и тестировалась значительно меньшее время, чем версия для обычных форм.
(2) Я писал свой пост в надежде получить информацию о преимуществах этого инструмента по сравнению с десятками уже опубликованных.
Добрый день.
Бухгалтерия 3.0 Бухгалтерия предприятия, редакция 3.0 (3.0.42.54)
Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.
Метод объекта не обнаружен (СведенияОВнешнейОбработке)
В чем может быть проблема? Спасибо!
(4) Интерьер-Маркет, Для подключения через Дополнительные отчеты и обработки, обработки должны писаться специально. Открывайте эту обработку через меню Файл
(5) lopatin,
Вот так открывается через файл (
Скачали для УФ…
переменная «Соб» не определена (208,13)
не порядок
Я прошу у всех прощения. Из-за технических проблем никак не мог ответить раньше. Изменил редакцию обработки для УФ до 3.1 (проблема с переменной «соб» решена) Я писал обработку для сильно устаревшей конфигурации тройки (двухгодичной давности). И не было возможности протестировать на современных релизах тройки. Я намерен сделать все, чтоб у всех все работало.
Если для скачивания исправленной редакции снова требуют SM, то я могу выслать обработку по почте напрямую.
(8)
За перезагрузку СМ не требует, Запускается, НО… не работает в УНФ.
Вы позиционируете обработку как
Конфигурация
Все для 1C:8
но не заработало.
в частности в УНФ у спр Контрагенты нет реквизита «ЮридическоеФизическоеЛицо», а есть «ЮрФизЛицо». тоже и с «ДокументУдостоверяющийЛичность.»
Исправьте в описании для какой конфигурации сея поделка.
(6) Интерьер-Маркет,
Я специально для вас скачал установочную версию бухгалтерии 3.0.42.54.
Версия 3.1 запускается в этой версии конфигурации (в том числе и в интерфейсе «такси», правда только через «Файл»). Перепроверил все функции. Возникли проблемы с переносом ссылок типа «Регистр сведений ключ записи». Исправил в версии 3.2
(9) serpent,
Исправил в версии 3.3. Сколько найдете ошибок, столько буду исправлять.
Данная публикация еще раз доказывает, что людям гораздо проще написать свой велосипед, чем ознакомиться с уже имеющимися разработками. Присоединяюсь к комментарию (1), чем ваша разработка отличается от других, может поиск дублей или замена ссылок проходят гораздо быстрее, замена ссылок производится ли в регистрах, пока все что я вижу, это какая-то урезанная версия стандартного поиска дублей. Если не знаете как воспользоваться поиском, то вот ссылкаПоиск дублей , а также разработка автора Tormozit, в которую уже включен более универсальный поиск дублей Инструменты разработчика
Если бы в Вашей обработке существовал внятный алгоритм обработки подчиненных объектов… Если бы Ваша обработка корректно расхлёбывала некоторые узкие места (например проблема с Установка цен номенклатуры при замене Номенклатуры)…
А в таком виде — проблематичный способ зарабатывать Sm!
(13) V.Nikonov,
Это уже ближе к вменяемой критике. Ваше замечание по поводу «Установок цен номенклатуры» принято к сведению и исправлено (в обоих обработках). Если найдете ещё узкие места — укажите мне их — буду их исправлять.
По поводу «внятного алгоритма обработки подчиненных объектов» — суть претензии не понятна. Если это возможно, раскройте, пожалуйста её более подробно.
(13) Частично эта проблема решена в ИР 3.46
Добрый день, сможете выслать файл напрямую, ранее уже оплачивали m. Спасибо! tev2609@mail.ru
отличная обработка (особенно для изменения док. Установка цен), была бы еще супер если
для номенклатуры ;
1. находила по не полностью одинаковым наименованиям (возможность выбора)
2. переносила штрих код удаляемого оставляемому (возможность выбора)
3. показывала цену (как родителя) выбранных объектов.
тогда обработку можно использовать при объединении баз
спасибо!!!
попробовал на УТ 11.4 не заменяет в документах номенклатуру, на Рознице 2 все норм. ?