<?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='\
Где взять Новый COMОбъект(«GFLAx.GFLAx«) ?очень интересная разработка. есть аналогичная, но немного недоделанная по решению задач анализа и обобщения информации.
нужно учесть, что используемый обработкой компонент имеет лицензию
If you enjoy using GFL SDK, Don’t hesitate to help the developer with a small donation.
т.е. использование в коммерческих компаниях не будет обладать лицензионной чистотой
Механизмы рейронных сетей необходимо включать в конфигурации 1С, где есть регл учет, чтобы понимать пользователей и их действия!
(3) andrewks, Да Вы правы.Но это решаемая проблема, есть другие компоненты, просто с этой было проще работать — там всего несколько строчек — пиксели в массив записываются и все.
(4) kiv82, Интересная мысль))
Какая сеть используется? я так понял, что многослойный персептрон?
Сколько на выходе нейронов?
Если возможно, напишите краткие тех. характеристики сети. Меня давно интересует данный вопрос. Уже вторая статья подряд на инфостарте попадает в в зону моего интереса (после штудирования инфо в инете выходит статья на ИС :-))
и еще вопрос в догонку…
я так понимаю что GFLAx как раз-таки используется для «выделения» букв перед отправкой на входной слой нейронной сети.
(7) MarSeN, Используется однослойный перцептрон типа самоорганизующихся карт Кохонена но по своему алгоритму. Многослойные медленнее на этапе распознавания. Упор сделан на обучение и организацию карт чтобы при распознавании бысрее находился нужный вариант.
(8) MarSeN, GLAfx используется только для того чтобы пиксели в массив записать и все. Вся работа с изображением полностью на 1С ну и далее распознавание и обучение тоже.
(10) informa1555,
Спасибо.
На выходе сколько нейронов?
Сколько обучите столько и будет. Идея заключается в том что на один значащий выход на одном слое может быть много нейронов. Например я цифру 7 могу писать с палочкой посередине и без, поэтому у меня накапливается опыт по обоим вариантам,но все они ведут в итоге к 7ке
здОрово и любопытно! респект!
Великая и могучая 1С… Ну и, конечно, универсальная. Что еще не делали на 1С?
Круть! +
Особенно понравилось
внушает!
Простите за французский, но… реально ах-ре-неть- задумка крутая! Плюс однозначнейший! А для чего-нибудь еще нейросеть можно «натаскать»? Где можно почитать про «вот это все»?
(17) CheBurator, Спасибо!
(18) SunShinne, Спасибо за внимание. С помощью нейронных сетей можно распознавать вообще все — любое изображение, звук(распознавание речи), реализовать любую нечеткую логику — принятие решений например при изменяющих факторах окружающего мира и т.д. Это по сути ассоциативное мышление. У меня не совсем типичные сети(частный случай) — это самоорганизующаяся карта — вот она подходит больше для изображений — т.е. объектов с непрерывной структурой (грубо говоря каких то реальных точек которые в физическом объекте если он физический стоят вместе друг с другом).Что почитать сложный вопрос — я читал либо книжки советского периода либо англоязычные, у нас почему то про это забыли сейчас — хороших книг сейчас не выходит только лекции (например в электронном виде Интуит).
Плюсую. Напоминает мою ККР по дисциплине нейросетевые технологии, когда учился в магистратуре. Только писалась она на старом добром Delphi и без сторонних библиотек. Project не тяжело переписать под 1С, только пока не требовалось.
(20) а можно пристегнуть к примерно такой задаче — нахождение похожих картинок?
например: пришел товар (чехлы для телефонов). вопрос: есть ли у меня такой товар в базе? идентификации никакой нет, кроме внешнего вида.. делаем типа: фотографируем (весь товар фотографируется в примерно одинаковом ракурсе/размере), жмакаем кнопку — выдает список(картинки) похожих товаров..?
(22) CheBurator, можно сделать без какой-либо сторонней библиотеке с небольшими оговорками:
1) все фото будут одного не большого разрешения, например, 400х600 (очень большое разрешение потребует некоторые усложнения мат модели персептрона);
2) черные чехлы фоткать на белом фоне для большей контрастности, чтобы снизить полную ошибку нейросети.
Ну и главное, надо понимать, что любая нейросеть не может являться инструментом для 100% принятия решения в какой-либо области, особенно в рег учете или точных расчетных задачах. Ее надо рассматривать как некий «советчик»/»помощник»/»консультант». Многое зависит от методов обучения сети, ее базы знаний и т.д.
Применимо к вашей задачи, при поступлении очередного чехла для телефона ответ ситемы будет какой: «Возможно у нас есть похожие чехлы: (далее список с картинками с порядке убывания схожести):
1) чехол №1 — картинка чехла №1 — ошибка сети при вычислении схожести чехла №1
2) чехол №2 — картинка чехла №2 — ошибка сети при вычислении схожести чехла №2
…
«
1. да, так и есть, картинки небольшого формата, для визуального контроля в основном, но вполне разборчивые…
2. это нормальное требование
.
остальное тоже нормально.
.
думаю такая программулинка будет представлять интерес. и не только для чехлов 😉
.
(12) informa1555,
спасибо за ответ. увидел случайно, так как он не был «адресован» мне
Интересное решение. Напомнило мне дипломный проект. На досуге посмотрю.
(19) informa1555,
поделитесь ссылкой, если не трудно. Очень интересна эта тема.
Плохо, что «инновационные» статьи всегда проигрывают в плюсах.
(27) Makushimo, В качестве базы(тем более там разные подходы) что то из этого неплохо, Барский например:http://www.intuit.ru/studies/courses?service=0&option_id=17&service_path=1
Круто, но не до конца уловил, а что, собственно, делает компонента GFLAx?
(30) Evil Beaver, Компонента просто считывает цвета пикселей картинки в двумерный массив- там буквально 5 строчек. Т.е. переводит картинку в матрицу. Средствами 1С вроде картинку не прочитать попиксельно. По крайней мере я не знаю как… А само распознавание и прочая сопутствующая работа с изображением на 1С сделана — уже с массивом точек.
А можно при помощи нейросетей сделать прогнозирование курса евро/доллара на несколько дней вперед? Потом привязать это все к какой-либо торговой платформе…
(32) Йожкин Кот, Думаю нет, там вроде традиционно теханализ используется, матстатистика там.
(32) Нейросеть она больше угадывает чем прогнозирует.
(28) MarSeN, я заплюсил. А проигрывают потому, что практической ценности меньше. Если поизгаляться, так и 3D графику можно сделать, обсчет матриц, там, и прочее. Но зачем?
Хммм, не думал, что найду подобное решение. Довольно интересное решение, поподробнее ознакомлюсь!
ОФФ. подписался.
Отличная вещь! Я так понимаю, можно взять стопку документов, например счет-фактура входящие, положить в сканер и 1с от сканирует, распознает и создаст такой же!
(39) 3762515, Да можно приспособить под печатный текст тем более что распознавание печатных букв гораздо проще чем рукописных и в данном примере реализовано распознавание ячеек, а в накладных, с/фактурах и т.д. как раз надо читать инфу из таблиц документа например колонка «Товар» — строка 1,2,3 и т.д. Как раз то, что мешает привинтить файнридер это то что связь таблиц и полей с реальными реквизитами должна обрабатываться на стороне 1С.Без такой связи толку от распознавания нет,а если делать на 1С как раз все доступно. Но «привинчивать» придется долго — это не тиражный продукт, а просто демка алгоритма.
Чего то не могу понять, что именно надо скачать отсюда:http://www.xnview.com/en/GFL/#downloads
Ничего похожего на GFLAx там нет, поиска нет. Обработка ругается:
(41) 3762515, Вот ссылка на прямую скачку с их сайтаhttp://download.xnview.com/GflSDK-win.zip
(42) informa1555, спасибо
(33) informa1555, Ну неправда. Нейросети как раз для прогнозирования — самое то. Используют для этого специальную структуру сети — с обратными связями. И обучают до стабилизации ответа.
(14) DAnry,
В 1с нет объектно-ориентированного подхода.
Это огромный минус, который ведет к сложному коду.
На любом объектно-ориентированном языке подобные задачи выглядят в коде изящнее и проще в понимании.
Не пойму, что нужно что бы оно заработало. Такая ошибка у меня:
GFLAx = Новый COMОбъект(«GFLAx.GFLAx»);
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса
(46) 3762515, Не установлен GFLAx или не зарегистрирован. Зарегистрировать : Regsvr32 c:WINDOWSsystem32GflAx.dll
А развитие есть ?
(48) VLMedvedev, Есть но в виде совсем другого собственного мат аппарата (еще меньше похожего на сети — больше на био) и не на 1С)) 1С хороша чтобы чето быстро наваять — увидеть воплощение идеи, не задумываясь над типизацией и т..д. но это несерьезно для развития.
Как посмотреть ?
(50) VLMedvedev, Это не так просто к сожалению. Коммерческого решения пока нет. Мат аппарат я постоянно перерарбатываю и модули кластреризации, разпознавания и т.д. непрезентабельные хоть и рабочие))
Приглашаю в проект:
https://infostart.ru/project/795704/
Необходимо разработать движок для работы со смыслами.
Вот простая задача для понимания направления работы:
Система должна уметь составлять осмысленные предложения из набора слов, например:
— пустыня, озеро, река.
Можно добавлять любые слова, чтобы получилось предложение имеющее смысл.
Например: В пустыне нет озера и реки.
Обновление данной разработки будет?
(53) На 1С нет — слишком тормозная. Я ее использовал чтобы поэкспериментировать с алгоритмами, нащупать решение, так как на 1С это делать проще всего — нет типизации и т.д. Сам я ML пишу на питоне (бек) + на java или c# фронты и прочую инфраструктуру.