<?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='\
протестил на УПП
Подробности позже
хранителям подобная вещь экономит вагон времени
почему не по ордерам заполняете?
…вероятно вы очень торопились
Заполняется по тем документам на которые мне пальцем показали бухгалтера. Что за ордер?
Признаться да, как обычно отчет нужен был «еще вчера»…
движения товара на складах при ответственном хранении реализуем через приходный и расходный ордера на товары
С заполнением цен непонятка, ставит не из указанного типа цен 🙁
Насчет цен — к ним добавляется НДС. Результат был нужен быстро, вот и пришлось пожертвовать универсальностью в пользу скорости выполнения. Т.е. заточена под моих пользователей — у нас занесена в базу цена без НДС, а в МХ мы ставим цену с НДС. Почему — я не знаю, тонкости политики работы с нашим хранителем, в которые я не вникаю.
Добавил в настройках галочку во вкладку «Прочие атрибуты» засчет которой можно выбирать — добавлять или нет к ценам НДС.
По просьбе rayson добавил возможность заполнять на основе документов ПриходныйОрдерНаТовары, РасходныйОрдерНаТовары.
Исправил небольшой косяк с перезаполнением цен — не заполняла цены, если номенклатура встречается в табличной части несколько раз.
Уверен, что косяки есть еще, но тестировать самому некогда, поэтому буду шевелится только если будут конкретные багрепорты от моих или тутошних пользователей.
С НДС понятно, но вытаскиваются цены не из того типа цен……
Да, действительно — мой недосмотр. Поправил. Большое спасибо, что подсказали.
И было бы здорово документы списком добавлять 🙂
спасибо
привязывать к справочникам договоров, конт.лиц, номенклатуры в ТЧ, и отбор документа по хранительпоклажедатель не планируете?
Спасибо, проверил на УПП и УТ! А форму МХ-2 не планируете?
К сожалению, сейчас достаточно загружен работой. Браться буду только за исправление косяков. Если мои бухи потребуют МХ-2 — добавлю и выложу здесь. Но без мотивации расширять функционал данного отчета в данный момент не имею возможности…
Работа хорошая, только с ценами замудрил, я под себя переделал.
Хорошо сделано
Спасибо большое.
Спасибо
Спасибо!
Большое спасибо, сэкономил мне кучу времени, сделано на 5+++!!! если мог поставил бы 2 плюса.
Тоже кучу времени сэкономил.. однозначно продумманная вещь (особенно что можно в табличную часть собрать номенклатуры с разных документов, с типами цен немного мудрено.. мне кажется нужно просто брать прямо из документов…), за 15 мин. доработал под своих пользователей и все довольны, и они и я. Спасибо.
Спасибо большое
Cпасибо Вам большое, избавили от необходимости рисовать формы, которые срочно понадобились
сконвертированная на 1с 8.2 и слегка откорректированная обработка, отлично работает и на БП 2.0
Супер.
Благодарю!!!
Очень полезно! перерыл весь сайт все с недоработками и багами. Отличная обработака действительно экономит кучу времени. С типами цен действительно сложно вышло))) В целом очень хорошо. Благодарю!
работает
Cпасибо Вам большое, избавили от необходимости рисовать формы.
простестрировал на УТ 10.3.3.3 и на УТ 10.3.14.3 всё работает, всё устраивает. С НДС правда непонятно немного, но допилю под себя напильником
на 10.3.5.3 то же работает
Жалко, что такой обработки под БП2.0 нету. Очччччень надо!!!
Скажите, пожалуйста,автор, а можно будет для документа «Перемещение товаров» обработку использовать? Не понял из описания? Спасибо заранее)
Это работает для УПП или есть вариант под неё?
добрый день. Не могу подключить Бухгалтерия предприятия (базовая), редакция 3.0 (3.0.61.47). Если поможете — буду признательна.
Добрый день.
Можно ли такую же обработку сделать для документов Перемещение Товаров?