<?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='\
надо сразу признаваться:
а) чем отличается от ИТС
б) чем лучше, чем с ИТС
с) чем отличается от других имеющих место быть
(0,1) По ходу путь к звездам у семерочника начинается с перенумераторов, а у восьмерочника с консоли запросов ;))))
+(2) В общем так:
— Ваш любимый полонез?
— Огинского
— Ваше любимое произведение Огинского
— Полонез
:))))))))))))))))
кансоль эта наша вабще всё
Потренировался на приходниках и расходниках — понравилось 🙂
To: tango
Честно сказать, никогда не видел обработку перенумерации с дисков ИТС, поэтому признаться, чем эта отличается от обработки с диска ИТС, сказать не могу 🙂
А вот по поводу отличается от других:
эта обработка написана на базе разработок другого человека (см. контекстное описание обработки), но добавлены следующие возможности:
— перенумерация сразу всех справочников и документов
— исключения из обработки (как справочников, так и документов). Исключения используются толюко при перенумерации всех справочников/документов.
Вот 🙂
работает, но хотелось бы только изменить префикс, не меняя номера. Получить существующий префикс из базы и заменить на новый (например для расходной накладной) с возможностью сдвига (например ближайший ноль к последней букве префикса заменить на букву) — Было ПП-0000123 Стало ППШ0000123 либо ППШ-000123
перенумерация кодов в справочнике Номенклатура делает?
чем это чревато? в документах хранятся коды товаров и получается, что все документы уже не будут отображать нужные товары, которые в них были?
или всё же использование этой обработки не повредит целостности данных
(ссылки останутся правильные)?
Изменение наименования и кода никак не влияет на ссылку, если только в коде явно не прописано «НайтиПоКоду»…
Работает… Искал,искал… и нашел именно то, что мне нужно было!!! Самому уже совсем ничего писать не хочется… СПС за обработку! Просто это действительно вещь стоящая, не то что мне попадались… грохнутые…. недописанные…
Обработка то что надо.
Спасибо! Помогло!
Спасибо! Отлично перенумровалось!
Спасибо! то что надо!
какой перенумератор скачать для 1с предприятие 7.7 виста!
(15) любой!
а порядок куда дальше этот файл вставить не подскажите? я сделала следующее:
скорировала этот файл в базу в папку ExtForms
потом зашла в 1с сервис-доп.возможности
выбрала внизу кнопку «изменить» -> «внести в список»
там этого файла нет. что-то не то сделала?
а все справилась. спасибо ))
Не работает в случае если справочник подчиненный
а на 8,1 можете сделать?
прошу прощенья, нашла 😀
ЗафиксироватьТранзакцию();
{\…..EXTFORMSSDRENUM.ERT(471)}: Ошибка при выполнении процедуры ЗафиксироватьТранзакцию
перенумерацию за период не делает, сразу за весь год. если бы не копия-хана бы базе! 😮
Ещё трабла:
Есть документ с числом номеров в номере документа 5
Нумерация документа была без периодичности и подошла уже к 99999
Последние есть, но нет уже в базе первых.
Что думалось произойдёт — документы станут с номера 1 и до сколько их там сейчас в базе
Вышло — ошибка транзакции, почему — вначале обработка пытается задать номера 100001 и т.д..Естественно, 1С не дала задать такие номера документам.
при типовой конфе работает стабильно и довольно шустро, что порадовало очень
Обработка помогла, единственное я сначала выбрал все справочники и все БИКи банков у меня заменились на порядковые номера.
Спасибо.Отличная вещь
Спасибо. Хорошая вещица. Должна пригодится. Бухи часто портят нумерацию.
спасибо за обработку, то что нужно!
Хорошая обработка,но нужно быть внимательным при выборе объектов, чтобы не захватить те, где номера имеют значение — вроде РТУ или СФ.
Как увидеть хотя бы скриншот. Была у меня хорошая обработка, но скачана еще до введения внутренней валюты, а теперь качаю не глядя все подряд…
Мне понравилась обработка, пригодилась, спасибо =)
Спасибо, помогло.
мне нужно поменять нумерацию чтобы проставились новые префиксы.. Поможет?)
Спасибо! То что нужно нам было. Бухгалтера совсем а то с ума сходят, постоянно сами ручками номера меняют, а потом жалуются, что у следующего документа номер левый.
Теперь с этой проблемой покончено, в конце рабочего дня запускаю обработку и все!!!