<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Нужная штука
Альтернатива:http://infostart.ru/projects/3178/
(может, не со всей функциональностью)
Из основных фич:
………
4) Изменение времени документов с возможность выбора вида в начало дня в заданном интервале.
Можно к учойсу прикрутить как плагин, см.:
Скачивать не буду. Но вещь, несомненно, нужная.
(3) Спасибо за идею, возможно воспользуюсь.
Добавлена возможность изменять дату документов
Точно пригодится
Спасибо, очень хорошая обработка. Для себя сделала фильтры по заполнению:проведенные, непроведенные, все, и ограничение по времени документов
(8) Приятно осознавать, что можешь облегчить труд коллегам. Удачи.
Хорошая обработка.
Пригодилася 🙂
(11 🙂 )
Спасибо за вашу работу.
Но воспользоваться не представилось возможным, т.к. требовалось изменить время некоторых документов в значительном временном интервале — за несколько месяцев. Ваша обработка позволяет работать лишь в пределах выбранной даты, что в моем случае было, конечно же, неприемлемо.
Если вам это еще интересно, может быть подумаете над «усовершенствованием» обработки? Чтобы было возможно изменять время документов внутри дня в произвольном интервале дат.
Удачи в ваших делах!
поставлю плюс, хотя и бяка… — отсутствует работа с документами, подчиненными обрабатываемому… отсутствует функционал ограничени явыборки документов…
Спасибо коллеги за ваши высказывания, однако дорабатывать функционал на данный момент не планирую, т.к. уже давно на 8-ке.
Обработка классная!
К сожалению в описании обработки не сказано, что она подходит только для конфигураций на Оперативном учёте.
Скачал в надежде использовать в «Бухгалтерии» — и обломился 🙁
Может кто подскажет обработку для бухгалтерии (или универсальную) с похожим функционалом — с выбором вида документа внутри дня и перемещением в начало/конец дня ?
А вот если в исходном тексте обработки заменить строку 112 :
ТабДок.Имя=СокрЛП(глНазваниеДокументаВЖурнале(Док.ТекущийДокумент()));
на что-то вроде
ТабДок.Имя=СокрЛП(Док.ТекущийДокумент().ПредставлениеВида());
то все работает и в Бухгалтерии… 😀
(18) vkr, теперь её раз спасибо !
С изменённой строкой заработало и в бухгалтерии.
А то, прочитав в личке первоначальный вариант ответа, собирался тестировать на десятый раз в нескольких базах и пытаться доказывать, что все «бухгалтерии» у меня типовые 🙂
Очень нужная штучка.Спасибо
Спасибо!
http://infostart.ru/public/97711/
Пригодилась.
Надо было один из первых январей «зачистить» от всех документов.
Своей бы обработкой довольно долго провозился. Она больше для «точечного», оперативного вмешательства.
Сделал ссылку на вашу обработку в своей публикации
(21) спасибо за ссылку.
пажалуста! ;)))
Вещь просто необходимая… Почему раньше не нашёл?
Большое спасибо! Обработка очень помогла!
Сипасиб!! Пригодится… А кто нечто подобное для 8-ки видел????
Обработка зачетная.Но было бы супер,если бы была выведена возможность задать определенный период вывода документов,а не конкретную дату.Плюс возможность отсортировать по комментариям,номеру договора,контрагенту.
То что доктор прописал супер!!!!
Помогите пожалуйста! как подгрузить данную обработку к 1с? Я не программист, а обработка очень нужна. Надо изменить время проведения документов за три года.
перебрасываю приходные документы из фармпрограммы, и банк разношу позже. поэтому и поступление товара, и списание с расчетного счета проводятся временем 23:59:59. Неправильно закрывается 60 счет, нужно весь приход перебить ранним временем.
(29) Kontora_pishet, не анализируя правильность решения описанной вами задачи, «подгрузить» очень просто: распаковать архив, а в 1С «Файл» — «Открыть» и выбираете извлеченный из архива ERT.
Так просто? 🙂 Спасибо, я попробую
не получается
я — тормоз.. у меня 1с 8.2..
выходит, не подойдет мне эта обработка((
/
Нашла обработку для восьмерки) Спасибо за внимание ответившим)
Шикарная штука! Такую бы года три назад… но и сейчас пригодилась! Спасибо!
(34). Пожалуйста.Сам уже года три как в семерку не заглядывал. Рад, что мои поделки
еще приносят пользу.
Спасибо. Эта штука спасла меня
(36) Пожалуйста