<?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='\
Тот факт, что эта статья вышла сразу после моей — совпадение?
Статья интересная. Не практичная, но именно — интересная!
(1) По Вашей статье нужно уже обзор 3Д делать. Однозначно, велосипед изобретаете, через матрицы проще. Кроме того я бы отметил невидимые грани пунктиром, опять же в вашем случае, т.к. у Вас нет уменьшения координат x, y с возрастанием координаты Z, видимость грани определить очень просто — умножаем 2 вектора, получаем перпендикулярно направленный, и по координате Z определяем, где лицевая часть плоскости.
(3) Вы не ответили на вопрос. Мою статью можно обсудить в моей статье.
(4) Конечно совпадение. Я уже указал по поводу какой статьи написал свою «Продвинутая графика». Когда я отправлял на модерацию статью, а делал я это неоднократно, Вашей статьи еще не было.
(5)Да, с модерацией тут проблема: моя статья проходила её 7 часов из-за разницы во времени и на момент публикации она появилась в конце первой страницы статей т.к. ставится дата отправки на модерацию, а не одобрения статьи. В итоге она почти сразу утонула во второй странице и осталась незамеченной, но дело не в этом. У нас пересекаются темы, а моя предыдущая статья (про часы) была продублирована другим пользователем, вот мне и стало интересно, совпадение ли это всё. Но раз так, то всё ок.
Автор продолжает считать матрицу поворота не частным случаем проецирования, а первоосновой преобразований. А свои заблуждения фундаментальными знаниями.
«Дальше новатор заявил, что подобное преобразование классическим способом сделать невозможно.»
Еще и лжец, вдобавок.
(7) Я же вам предоставил ссылку на теорию, читайте, проверяйте, сравнивайте.
Реализация в коде уже тоже выложена. Все вертится, крутится, перемещается, масштабируется во всех вариантах.
Я, конечно, понимаю что для Вас волшебство, преобразовать единичные векторы по X, Y, а потом утверждать, что вот это чудо теперь вы знаете смещение и коэффициенты по X, Y.
Но даже тот минимум, что я реализовал вы не сможете повторить, со своим волшебным подходом, т.к. он в принципе ограничен.
Это самое тупое что я когда-нибудь читал. После умножения на матрицу требуется домножить.
Статья по книге Шилова от 1961. Странно, что вы называете меня новатором.
Просвещайтесь. Там среди вариантов так хорошо знакомая Вам матрица поворота.
Или вы считаете своим волшебством, недоступным каждому, комбинацию преобразований в одну матрицу? Тогда вынужден вас разочаровать…
(11) Доступно, не доступно, но Вы то пошли каким-то другим путем.
Ну даже банальное, как вращается у меня квадрат вокруг окружности. Это перемещение, с дальнейшим вращением. Интересно как вы это со своим подходом сделаете.
Я уже писал «и это еще детский сад компьютерной графики, т.е. совсем ни о чем»
(10)
Просвещайтесь. Там среди вариантов так хорошо знакомая Вам матрица поворота.
Статья как противоречит теории которую я кратко изложил? Все те же матрицы преобразований, и никакого бреда про векторы, базисы.
Если не обратили внимания, матрица преобразований там 2х2, и у меня самое интересное до определенного этапа она была 2х2, затем была дополнена. Да по-любому совпадение.
Чукча не читатель?
Из статьи на вики:
«Матрица линейного оператора — матрица, выражающая линейный оператор в некотором базисе. Для того, чтобы её получить, необходимо подействовать оператором на векторы базиса и координаты полученных векторов (образов базисных векторов) записать в столбцы матрицы.»
Матрица 2×2 это векторы базиса, Совпадение? Не думаю.
Просто вы невнимательно прочитали мою публикацию, прочитайте её еще раз и сравните с тем что написано в статье на вики. Может быть даже ошибку найдете, а она есть.
(12)
Вы понимаете различие между сферой и окружностью?
Чтобы реализовать Ваше волшебство, мне достаточно добавить в обработку функцию переможения матриц. Функция создания преобразования по заданному углу уже есть. Будет время продемонстрирую.
(15) Сделайте обработку подобную моей своим мегаспособом, вот тогда и подискутируем.
Разово переместить и повернуть (или исказить) — это проще некуда.
Да даже то, что я сделал это крайне просто, но сомневаюсь, что даже такое Вам под силу.
И статьи небанальные, и читать интересно, но почему комментарии постоянно сводятся к взаимным подковыркам? Грустно.
Автору спасибо за статью.
(17) Да, автор, вроде, пишет умные статьи про комп графику, но в комментах ведет себя совсем по-другому.
(19) Я нашёл только одну его статью про графику, поэтому на всякий случай хочу заметить что он пишет ещё и в моих статьях и я не хочу чтобы нас спутали.
(20) А, ну да. Просто он по всюду оставляет свои едкие комменты, как будто он главный спец по графике на ИС
(21) Вам никто не говорил, что некоторые вещи нужно приватно делать? Есть у Вас тут небольшой кружок, соберитесь приватно, и делайте там друг с другом что хотите. Зачем же это выставлять на общее обозрение? Это не культурно.
Комментарий я написал к двум статьям. «Непределено» сам зашел ко мне в статью, и сам же предложил оставить комментарий в его статье, а сейчас негодует.
Второй автор меня действительно поразил своим особым мнением на основы компьютерной графики, у него то конечно графика продвинутая. Он же и предложил написать мне свою статью. А я взял и не поленился, может у меня не настолько подвешенный язык, но с теорией компьютерной графики я знаком.
А что конкретно едкого я написал: «Я всего лишь указал, что авторы некоторых статей изобрели велосипед, притом на квадратных колесах». Почему это вдруг, так в душу запало? Так ведь оно и есть на самом деле, чего тут обидного?
Я уже пример приводил, это то же самое, что заявить, да ну эти запросы, объекты, смотрите как я напрямую с двоичным файлом работаю, какую я БД придумал. А потом еще и обижаться, когда укажут, что так уже никто не работает.
(21) Хотите изменить культуру общения? Начните с себя. Ни одного ведь комментария по содержанию, сами же и разводите: «А ты, а он, а я».
Мало того еще и кучкой гавкаете, а я человек эмоциональный, уподобляюсь вам.
(22)
Я вас ни о чём не просил, просто написал что обсуждать мою статью за её пределами — это странно. По поводу велосипеда, вот эта статья — тоже велосипед, но я об этом молчу. И все молчат, хотя тут нет ничего нового. Вы как и я описали как можно сделать то, чего никто не делает в 1С, но делают в других языках уже не один десяток лет. И обидного действительно ничего нет. Я вполне спокойно ответил на все ваши комментарии не считая себя оскорблённым.
Как я уже писал, я выбрал эту тему потому что так в 1С ещё никто не работает. Да, эта технология сильно отстала от реальности, но если смотреть на эту реальность через призму 1С, здесь она в принципе не получила развития и я просто хотел подтолкнуть людей в данном направлении. Да, топорными средствами, потому что в начале изобрели топор, а только потом появились станки и топора я до этого не видел.
Нет здесь никакого кружка. Я тут никого не знаю и меня никто не знает. У меня к вам нет претензий и не было. Кому-то могла не понравиться ваша критика, но не мне. Я её спокойно принял и всё.
(24)
Сначала вы вырвали фразу из контекста, а теперь и вовсе изменили фразу. Одно дело рассказывать про велосипед, а совсем другое дело изобретать велосипед.
Я уже давно не понимаю с чем Вы спорите. Вы написали что учитесь работать с компьютерной графикой, я Вам посоветовал почитать литературу по компьютерной графике. Я Вас ни к чему не принуждаю.
(25) Как же с вами трудно вести диалог. Начали спор вы, пытаясь выставить меня идиотом, в котором я с вами соглашался. Выдумали какой-то сговор против себя, а теперь пытаетесь выставить себя жертвой. Какую фразу я изменили, когда вы цитируете сами себя?
Я не придумал ничего нового и обозначил это. Вы тоже не придумали, но ничего об этом не сказали. Но вас никто не ткнул в это носом, а вы это сделали, а теперь пытаетесь всё переиначить, будто агрессор здесь я.
(26) Вы слишком много приняли на свой счёт.
Высказывания у меня местами действительно чересчур резкие. «Я солдат и красивых слов не знаю…»
Я обобщил (причесал всех под одну гребенку), но резкие высказывания относятся в большей части совсем не к Вам, а к другому человеку. Именно к тому у которого «продвинутая графика».
Странная какая-то позиция, если говорят, что можно сделать лучше, значит назвали идиотом.
Я выкладывал свою выгрузку из ЗУП3 в КА1.1, сделана она была по принципам ЗИК. В тех же комментариях мне указали, что это уже пройденный этап, и сейчас уже реализовано лучше. Я ознакомился как сейчас реализована выгрузка, и действительно лучше, и переписал свою выгрузку. И не считаю себя от этого идиотом.
При этом я не стал писать, что да Вы ничего не понимаете, я сделал как сделал, и вобще я написал статью как можно реализовать обмен через XML, не используя, конвертацию данных.
(23) Никакого кружка и кучки нет, я знаю других авторов также как и вас, т.е. почти не знаю. Просто у вас было много резких некрасивых высказываний в комментариях, об этом я и сказал.
(28)
И поэтому Вы решили добавить свое резкое и некрасивое высказывание, на что я Вам уже ответил, что в Вашем случае самое адекватное — с себя начать, а не в других пальчиком тыкать.
Автор просто считает себя очень умным. Обычно так делают глупые люди.
(30) Ну что за детский сад? «А вот он считает себя самым умным, но он глупый» Я уже далеко не в том возрасте, чтобы мерять людей подобными категориями. Давно уже убедился, что если один человек силен в одном, например, отлично учился в институте, это еще вовсе не означает, что он лучше во всем.
Странный Вы. Эту часть я у Вас уже видел, что такие преобразования можно сделать «продвинутым» методом.
Вращение рыбы добавьте вокруг собственной оси + масштабирование рыбы и всего результата.
После этого посмотри на Ваш код.
(30) Есть такое выражение «упертый как баран»
Не видно, что Ваш «продвинутый» метод — это танцы с бубном?
Уже сейчас Вам приходится вымучивать расчет базиса, а это пока всего два вектора. А когда дойдет до 3 координаты, что делать будете?
Да фигня сейчас третий вектор дорисуем?
И это только еще начало, а у Вас там уже полная каша.
(31) Если не заметили, рыба не растягивается как сопля подобно Вашему квадрату по ходу движения. Это сделано специально обратными преобразованиями.
Посмотрите на код.
(32) Когда дойдет до третьей координаты будем дальше делать плагин для unity по конструированию дорожных развязок с плавной адаптацией террэйна. Вот там реальные вопросы вполне успешно решаются. Векторами и кватернионами. Не через синус и косинус. А этот бессмысленный спор крадет у меня время на него. Посему позволю себе откланяться.
p/s про кашу на Вашем месте я бы стал распространяться, я видел Ваш код.
(34) Согласен с вами.
https://habr.com/post/183908/
Автору советую почитать про квартенионы
и применять их на практике.
Эти классы давно и успешно применяются в 3 мерной графике и в 2 мерной тоже.
Я считаю так: в 1с надо интегрировать то что наработано в других языках программирования годами, а не изобретать велосипеды и играть в песочницах.
Автор, интересуетесь графикой? Возьмите Unity, найдите там нужные вам технологии, почитайте теорию и переносите все на 1с.
Общие подходы переносятся на любой язык, так как это математика.
А нафига бухгалтеру компьютерная графика ? Платежки рисовать ?
(36) Почти 10 лет только на инфостарте, и до сих пор только платежки бухгалтерам рисуете?
Ничем Вам помочь могу.
Я так понимаю все что в остальных статях написано, Вы широко используете в практике автоматизации работы бухгалтеров, или как минимум планируете использовать.
(37) Hammer — компьютерная графика это отдельная отрасль в IT индустрии и я думаю что нефиг натягивать это на 1С или переубедите меня — скажите как практически ( и в каких случаях ) конечному пользователю будет удобно и полезно использовать ваше решение в своей работе