<?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='\
Не Даная … Но всё равно плюсик ! Главное — девушке приятно. 🙂
>»плюсаните» рейтинг
Обнажись махом — плюсану :))))))))))
(2) Она уже обнаженная Махом….
Ну очень творческий подход к программированию :))))
Прикольно!!!
Маха, почему опять без картинок? Как посмотреть «оригинальный дизайн» не скачивая?…
(6) Правильно — у женщины всегда должна быть загадка.
Е-мае!
А на 7-ке я остался без сюрприза….
(8) Аналогично… Затр сделал девушке приятно…
затр = зато
(10) Ой, чую, под «»затр» вовсе не «зато» подразумевалось 😉 А то я Кушнира не знаю 😛
Ну а что? Если бы еще свою фотку на форму кинула, можно было бы и два плюсика поставить 😉
(11) Чисто на автомате оговорился…
Во! И я про автомат 😉
(12) Да еще в виде, соответствующем нику… (я аж замурлыкал…)
Развеселились, старые пердуны :)))
Гойя в 1С — круто 😉
(16) можно подумать он — пердун молодой ;)))))))))))
не работает. при тестовой перенумерации справочника. когда в списке 1 элемент и он номером отличным от 000001. обработка стирает номер и не присваевает другой
(19) Да что ты — работает/неработает…. Видишь — здесь совсем другие проблемы решаются: всем вдруг захотелось обнажить Маху.
Шутка конечно.(без обид).
А если серъезно — разве код закрыт? религия не позволяет его подшаманить? Или жди, когда Маха подправит.
Маха, простите пожалуйста, минусанул случайно…. ээээххх….
(23) Переплюсуй :))
Афигеть, не знал, что можно переголосовать =)
Позор мне…..
> Уникальность кода гарантирована, если в справочнике нет элементов,
> код которых содержит какие-либо символы (не буквы и не цифры 🙂 ).
Уникальность не гарантирована, даже если в коде используются только цифры… 🙁
(27)
> Позвольте вам не поверить. Уникальность кода
> гарантирована, если используются только цифры.
Ну-ну… Возьми любой справочник с двумя элементами. У одного элемента код «0». У другого — «00000000» (количество нулей = длине кода). Чем не цифры?
> По другому в силу используемого алгоритма быть не может…
Ты выполняла верификацию своего алгоритма, чтоб так утверждать?
(27) Мария, с кем угодно можешь спорить, только не с poppy 😉 Она всегда права
Жесть какая-то… Даж Чебурашка очарованию поддался и молчит. Все знают его особый интерес к разным перенумерациям…
Но, по делу… Алгоритм не понравился. Посколько разработка сравнительно простая, то должна просто блистать оптимальностью. То, что Счетчик1 не используется — это чтобы врагов запутать? И ни что не мешает обойтись без запроса…
Оформление — тоже не понравилось. Все должно быть в тему. Если интересен пример идиально-оригинального оформления обработки, то воть:http://infostart.ru/projects/454/ 😉
poppy, все решается просто:
Показать полностью
Кстати, дополнение очень правильное. У меня у клиентов часто бывают товары с кодом по 6, 7 и 8 символов.
ПС Так вот простые обработки тут выкладывать! 😉
… а вот еще пример «оформления». Почти Гойя 😉
ПС по определенным причинам, выложить ЭТО сюда не могу…
(30)
> poppy, все решается просто:
Спасибо, Планет, я в курсе. Только ты неправильно код написал. Внутри попытки должна быть запись элемента, но не только присваивание кода.
Я пользуюсь почти штатной обработкой с диска ИТС. Она работет практически на всем наборе исходных данных и в меру универсальная.
Поэтому, кустарные перенумераторы, рассматриваю как попытку авторов научиться составлять изощренные алгоритмы. И обсуждать их со своими коллегами.
На сайте полно перенумераторов, но ни один из них толком не работает. 🙁
(32)
поскольку писалось в 6 утра, то можно сказать, что оно — правильно.
А в каких случаях требуется “перенумерация” элементов справочника?
(37) Когда мат уже не помогает…
(36) >> счетчик1 используется
не нашел 🙁 6 утра…
(38)
Не про мат, а про “перенумерацию”.
Долго пытался вспомнить в своем 35 летнем пребывании около АСУпа такой случай – не вспомнил. Склероз… :-(((
(30)
> То, что Счетчик1 не используется — это чтобы врагов запутать?
Похоже, что запутала… 😉
Вероятно, Маха не подозревает о существовании цикла "ДЛЯ".
Показать полностью
(41)
Точно!
Еще можно так написать:
Показать полностью
Но, я бы написала:
Cтрока = "00…всего тридцать восемь нулей…00";
Так букавак и строк меньше.
Poppy, любишь погорячее? Тогда уж так:
Показать полностью
Нет, девушки, вы мне объясните, нупу, популярно, для поднятия уровня общего развития: зачем вообще это делать в любой интерпретации?
Показать полностью
Что мешает просто вот так написать:
ЭлементСправочника.Код = Прав(("0000000000000000000000000000000000" + Строка(Формат(счетчик, "ЧГ = 0; ЧН = ‘0’"))), (Справочник.Метаданные().ДлинаКода));
А! О!!! Об этом уже писалось в (42)…
(46)
Не, 100 — не окажется, максимум — 50. Поэтому в (42) и (44) должно быть по пятьдесят нулей в строке.
(43)
Люблю погорячее. Хороший вариант. К счастью, в практическом программировании, рекурсия используется редко…
(36)
> Однако такая ситуация возникает только если в кодах двух или более
> элементов одни нули. Интуиция и здравый смысл подсказывают, что подобные случаи
> возникают достаточно редко (сказала бы даже — очень редко, вероятность их
> возникновения, очевидно, близка к нулю…).
> Ну, будем считать, что уникальность кода гарантирована на 99,99%
У блондинки спрашивают:
— какова вероятность встретить живого динозавра на улице?
— 50%
— почему?
— я его либо встречу, либо не встречу…
Имхо при работе с конечным пользователем, очевидность не так очевидна, как кажется. А интуиция и здравый смысл стоят в сторонке и нервно курят. 😉
> Уникальность кода гарантирована.
Во втором издании уникальность гарантирована скорее платформой. Просто обработка перестала вываливаться в ошибку.
Однако, последовательность нумерации не гарантирована даже на множестве чисел, хотя такое ограничение изъято из описания…?
> Код естественно не запаролен (в силу своей чрезвычайной простоты)
Во втором издании код стал не такой простой и однозначный, лучшеб он был запоролен…
Кстати, ни кто не задумывался о том, насколько замедляется работа цикла при дерганьи индикатора на каждой итерации? 😉
(50)
> Потому и изъято, что во втором издании последовательность
> и уникальность гарантирована.
Я не смогла обнаружить ни один справочник в типовой демо-бухгалтерии 1.6, c которым смогла бы справиться обработка.
Это так и должно быть?
> А что до юмора о блондинках — так мир все равно вертится вокруг них.
Я бы сказала — вокруг нас с тобой.
>> А что до юмора о блондинках — так мир все равно вертится вокруг них.
>> Я бы сказала — вокруг нас с тобой.
Возможно, в данный момент вы просто сидите с ноутбуками на каруселе…
Как можно стоить отношения с блондинкой? Она — впечатлительна, ранима, боится кошек и мышей, считает, что умеет хорошо готовить, и может просто взять и потолстеть ради прикола, а через месяц снова стать прежней. Похоже, это блондинок особо забавляет. Блондинка может просто взять и отключиться, задумавшись о чем-то своем, и тогда к ней не пробьешься и пушками. Она может прохохотать весь вечер в компании, а потом признаться, что ей там было скучно. Но по большому счету, она не умеет скрывать чувства. Если в ней и есть рациональное зерно, то оно спрятано очень глубоко. Я встречал, пожалуй, лишь одну или двух блондинок, которые заставляли меня ими восхищаться. Остальные — симпотичные, оригинальные, неповторимые, милые, но лучше, чтобы это было где-то далеко… Короче, все боятся блондинок! 🙂
Ипать…
Млин файл не открылся. Надо… надо переходить на 8.1 🙂
Ого!
Щас так модно? Выкладывать неработающие разработки? Песец! 🙁
Интересно, за что голосовали восемьдесят лузеров? За то, чтобы Маха публично обнажилась? Или за то что она позировала известному художнику?
(53)
> Возможно, в данный момент вы просто сидите с ноутбуками на каруселе…
Иногда сидим с ноутбуками, иногда — в карусели.
Все в мире относительно. Смотря какую систему координат взять за основу.
Все видят, что солнце вертится вокруг земли, но никто не осмелится оспорить обратное. 😉
> Я встречал, пожалуй, лишь одну или двух блондинок, которые заставляли меня ими восхищаться.
Таже фигня. Я встречала лишь трех-четырех грамотных бухгалтеров. Остальные (бухгалтеры) — ну полные блондинки. 😉
Я в шоке… Теперь понимаю почему Abadonna положил свой … на все это дело.
Алгоритм — пипец! Жаль, не хватает рейтинга минусануть
я бы тоже минусанул за такое исполнение
Красиво!!!!!!!!!
Код потряс. Кто-то выше писал, что лучше он бы был запоролен и я с ним полностью согласен. К тому же не учтена возможность ведения префиксации справочников. При таком подходе вся нумерация слетит, а если она достаточно сложная (у меня префикс строится из кода узла РИБ и префикса организации), то можно попрощаться с хоть
какой-либо информативностью.
Что б перенумеровать справочник, пришлось раз 10-15 запустить обработку. Т.е. обработка не доработана.
кошмар… 183 плюса… правду женщины говорят, что над мужиком, при виде голой женщины, контроль имеет явно не та голова!
Иппическая сила, отсыпте травки, кто плюсовал..
Что-то обработочка не подошла, 😀 но за оригинальность +
Не думала, что понадобится, но пригодилась. Оказывается какие только номера не присваивают бухгалтера бедным контрагентам
Пригодилось, спасибо!
ОТличная мне очень понравилось. большое спасибо
Большое спасибо! В своё время очень даже помогло ))))
ОТличная мне очень понравилось. большое спасибо
мне так хочется иметь такую обработку, но нет пока возможности скачать с сайта, пожалуйста, пришлите на почту tanya160577@mail.ru/ спасибо!!!
Спасибо. Необходимо было срочно перенумерацию сделать, а писать было неохото и некогда. Возпользовалась вашей.
стоит 1С 8.2
«Управление торговлей», редакция 10.3 (10.3.26.1)
в базе только справочники перенесенные из 7.7
в справочнике Номенклатура в поле Код у элементов могут быть пробелы и точки, данная обработка не справляется, посоветуйте может есть другие варианты?
В УТ 10.3.32.1 не работает