<?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)Поиск сказал, что перенумератора справочников для v7 нету
(3)как то не увидел антологичных…
Я написал, мне понравилось, я выложил.
Почему минусы, разве не работает?
нету????? минусы потому что перенумераторов уже просто превеликое множество. И многих просто уже выворачивает от них… Ибо перенумератор это как hello word
а что, можно в качестве тестовых заданий при приеме на работу задавать! «Набросайте свой перенумератор»
(0) а чем отличается от штатной обработки с ИТС?
как то не увидел антологичных…
😀
http://infostart.ru/public/22044/
http://infostart.ru/public/14058/
http://infostart.ru/public/14519/
вот первые попавшиеся
(4) Надо? Пиши. Жалоб по работе нет.
(6)… да так, что бы он сам угадывал, что нам надо, а что не надо? Действительно, у всех, здесь собравшихся, есть своя модель (и у меня в т.ч.), а самое главное, чтобы после одобрения мог вернуть назад!
Хехе, ребят, у если вы профи и для вас это слишком пустая обработка, то не стоит так горячиться!
А вот за отсутствие поиска… тут да )
Спасибо!
Автор прав у каждого свой подход и я считаю нет предела совершенству поэтому интересно посмотреть как получилось вдруг какая нибудь свежая идея так что как бы то ни было автору спасибо за свой вариант 🙂
Отличная обработка,очень помогла
Добрый день. Спасибо автору. Обработка помогла
обработка работает корректно…
Да таких обработок много, однако не все они работают достойно, если их не перетачивать или править.
Эта вроде даже без правок нормально отрабатывает.
Автору +
Так и нажали бы на +
Да попробуем щас
За столько времени не научили отпирать по владельцу. На подчиненных справочниках не работает. «-«
(18) vat-74,
в строку 62
добавь ноль в скобки
и будут тебе подчиненные.
(19) А владельца-то где выбирать?
Длину кода можно указать?
К примеру у нас в зависимости от региона ставится префикс, к примеру «MSK00000001».
Если префикс указать код региона, а нумерацию к примеру поставить «00000001», как в этом случаее отработает обработка?
PS.А так полезняшка.
Молодец.
(21) firuzji,
Вообще-то длина кода задается в конфигураторе, как и тип (цифровой или текстовый), в обработке показывается во второй секции информационно.
В конкретном примере если Вы введете в поле префикс буквы MSK и оставите 1 в поле номера то все получите как надо.
(20) vat-74,
Практически все подчиненные справочники имеют серии кодов и контроль уникальности в пределах справочника, а не в пределах подчинения, поэтому не вижу никакого смысла в перенумерации справочника в пределах подчинения. Если кто-то внятно объяснит, зачем это ему нужно, я добавлю возможность перенумерации подчиненного справочника в пределах подчинения (при условии, что в конфигурации серии кодов этого справочника установлены в пределах подчинения).
(23) Да не хотите не делайте. Но подчиненные справочники не нумерует. Ноль, дак поствьте.
(24) vat-74,
Добавил, перезалил.
(1)
Давно пора статью в УК ввести
Статья ХХХ. Использование 1С 7.7
Часть1. Использование 7.7 без отягчающих обстоятельств.
Часть2. Использование 7.7 с отягчающими обстоятельствами.
К отягчающим относятся: перенумераторы, списки дней рождения сотрудников, поздравлялки.
Бурная реакция на публикацию: Сколько можно? Чем отличается?
«Юпитер, ты сердишься? Значит ты не прав!»
Хотелось бы видеть, за что конкретно поставлен МИНУС!
Немного подробнее.
1. Сколько можно? А сколько появляется публикаций, столько и можно! Как говорили в известном сериале:
«Скока нунно, стока и монно!»
2. Сложнее, чем отличается. Ответ может появиться после скачивания автором опубликованных нумераторов и их анализа. В науке это называется «литературный обзор», из которого делается вывод о нерешенных задачах и необходимости данной работы. Все ли авторы в состоянии сделать это? Сколько потребуется времени?
Недостаток публикации — низкая информативность о методе предлагаемого нумератора.
Полагаю, что те кто скачал публикацию и поставил ПЛЮС не всегда искали нумераторы на Инфостарте, просто выбрали последный в надежде, что он учитывает опыт предыдущих нумераторов!
(27)
Все ли авторы постыдятся такой «проходняк» выкладывать?
Любой дебил может написать перенумератор, если только он дебил не законченный
(28) Инфостартом пользуются не только авторы, но и пользователи! Им проще скачать перенумератор, чем включить поиск и анализировать, чем они отличаются!
(29)
Вот это как раз и печально. А еще печально, что такой юзверь наперенумерует, что не следовало
Если хотя-бы одному человеку помогло, значит уже не зря.
Забавная закономерность, благодарят в основном пользователи, а критикуют/хают «программеры» ….
что не нравится программерам, я сам программирую. К тому же пользователь перед тем как запустить ту или иную обработу, программу, или еще что то, понимает чем ему это гроизит. В публикации все четко ясно написано. Кому не нужна обработка, может не пользоватся.
Если пользователь не пониммет что делает, как можно вообще ему доверять работу.
(32) firuzji,
Дело не в том, понимает он или нет. Он просто не знает, (да и не может знать), что, например, какой-то кусок кода завязан на код элемента.
(31)
Хочешь эксперимент провести? Месяца через 3-4 опубликуй эту же разработку, слегка изменив название. Или под другим логином. И можешь не сомневаться, что опять попрут плюсы и благодарности. Просто потому, что она окажется в рубрике «новые» и будет на виду.
http://infostart.ru/public/14639/ такой эксперимент проводил. Даже после того, как в ней написал, что это была шутка, указал ссылку на оригинал, народ с маньячным упорством продолжал плюсовать копию. Пока не удалил. Около 40 плюсов накидали на копию!!!
Я вот с этой
P.S. Я тебе даже больше скажу: опубликуй обработку с диска ИТС, модеры просохатят (100%!!!), а юзвери тебе плюсов накидают
Были, были такие задачи в 7.7, помню
Доброго времени суток!
Поможет ли данная обработка перенумеровать справочник номенклатура в иерархии???
Номера будут тупо заменяться, или заменяться будут только дубли?
Заранее спасибо!
Будут заменены все номера в пределах справочника как на папки так и на позиции.
Обязательно сначала сделайте копию базы и пробуйте на ней.
Первый проход с каким нибудь уникальным префиксом, чтобы точно не совпал с имеющимся номером, а во второй уже как угодно.
Есть стандартная обработка на диске ИТС и всегда ей пользовалась.
Но в одной базе эта обработка выдает ошибку.
Огромное-огромное спасибо.
Выручили !!!