<?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) Идет?
При редактировании на закладке «Картинки» можно добавить картинку, они будут с первьюшками 😉
Уже думал над этим — пока так. картинки будут в следующей версии
Главное что-бы спросом пользовалось — а то не плюсика, не комментария..
Понравилось !!!
Спасибо добрым людям! Значит хоть кому то да надо 🙂 буду развивать.
Нравится! Идея хорошая… Развивай…
Идея может и хорошая, но уже на 8 ке есть интернет магазины и прочее, не говоря о том что существуют запускалки с флехи 1с, так что на мой взгляд лучше и не начинать
(9) Уже начато — к тому же запуск 1с с флехи противоречит лицензионному законодательству.
Сегодня доделал пару вещей. Возможно к концу недели будет еще одни релиз.
Советую еще сделать оле-обмен с типовыми конфигурациями, а еще лучше правила конвертации данных 😉
(11) А оле зачем? там же Выгрузка/Загрузка есть через xml
+(12) В плане как её прикрутить..
(13) А еще можно данные хранить в Accessовском файле (с которым каталог и будет работать), и читать/писать его напрямую из 1С-ки. Т.е. прям из 1С создавать каталог «под ключ» с передачей его клиентам. А еще добавить возможность автоматического заказа, получения остатков, состояния своих заказов через веб-сервисы и по эл.почте… 😉
************* Текст исключения **************
System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
в xfb0eb36a3ee612fb.x40e6f36d5c51987b.x5b749607edfd2c9a(Object xe0292b9ed559da7d, EventArgs xfbf34718e704c6bc)
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.DataGridView.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
😉
И не запоминает настройки и положения окон, панелей инструментов 🙂
…хотя winforms ui это по-умолчанию делает 🙂
(17) О у меня вываливал ошибку — теперь понял почему и докрутил уже.
(15) А это где?
(14) дык оно же изночально в xml базу все выкручивается. Асес — не есть гуд, лучше mssql compact..
Т.е. изночально есть обработка, которая все из твоей конфы конвертит в xml и копирует куда надо — там же обработка есть, или я тебя снова не понял, поясни плиз..
Т.е. изначально обмен с типовыми там и присутствует — там есть выгрузка, пока только для ТиС. В последствии будет загрузка и выгрузка для УТ.
(18) Закрыл окно какой-то и щелкнул мышкой ниже датагридвью, где не было стро 😉
Можно и скуль, без разницы.
А то, что проще сваять обработку, которая будет работать с БД твоего каталога через АДО. Без всяких нажатий «импорт/экспорт». хмл оставить можно, даже нужно, но зачем делать лишние действия? Когда ты программной из 1Сы сможешь сформировать нужный каталог для клиента с теми данными, к примеру, на которые он по условиям договора может рассчитывать, и автоматом отослать ему по почте.
А если еще у себя на сервере в 1С-е вебсервисы поднимешь, чтобы клиенты могли в онлайне обновлять каталог данных, остатки и делать заказы… ;))
(20) Вообще идея такая — из справочника напрямую каталог делаешь, в т.ч. и на диск его закатываешь. Щёлк из 1с-са и готово..
Соответственно компонент для автоматического обновления каталога на сайте тоже будет разработан — не все так быстро 🙂
А, типа запуск экзешника с ключами, с передачей в качестве параметра файла хмл 🙂
(23) Дык там xml просто в каталог с программой копируется и все. Командной строки не делал — а зачем это? 🙂
За внимание спасибо
Хотя тоже идея, буду учитывать в следующей версии
а если еще сделать что-то типа маленького конфигуратора 😉 для добавления полей…. :)))
(27) у.. как растут наши аппетиты 🙂 Сам думал — к сожалению времени свободного нету — был бы студентом, а так — уже вплотную занятся конкуренцией 1с-са — вот толкьо кому оно надо будет? Ананас вон загибается
Зы — там можно свои поля добавлять, т.е. количество полей в табличной части справочника и табличная часть свойств не задана жестко — ты можешь хоть 20 артикулов добавить и 2000 свойств 🙂
(27) Хотя если хочешь — можно объединить усилия 😉 Как то давно я подбивал гепарда на такое, но он не согласился..
С появлением нета в создании такой системы ничего сложного нет — нужно тупо время, которого как всегда не хватает
(28) Это не оттуда. Я подобное делал для клиентов-сервисных центров, которые заказывали запчасти у нас. А вебинтерфейс им не подходил из-за никакого интернета в регионах.
Ну если не жестко, то скуль компакт лучше всего + порт на кпк 😉
(29) Это уже вполне нормальный коммерческий продукт получится 🙂
(32) Я серьёзно — если есть желание, алга определимся — подберем команду (иили сами — 2 человека все же это уже сила) и вперед.. 🙂 Сам давно уже мечтаю об этом.
(33) Если создавать этот «каталог», то время на это выкроить можно.
http://nsgsoft.ru/production_framework.html — франч свой продукт сделал, аналог 1С-ы…
А если что-то серьезнее, то вряд ли 🙂 Я тут наблюдаю за проектом
(34) Не, не каталог, именно то что в nsg — по типу того
Только полноценная среда — без студии, непосредственно из самой же себя компилирует. ст-ноо с возможностью портации из 1с, естественно в возможностью оптимизации и вставок кода на с#
Портация из 1С чего?
(37) Портация конфигурации, всей, и данных в свой конфигуратор, к примеру для того что-бы перенести старые творения. Потом компиляция
(38) Очередной «убийца 1С»? 🙂 Это как минимум все объекты 1С должны быть сделаны аналогичные 😉 Что-то примерно, что я делаю в своем компиляторе…
(39) Совершенно верно. В этот и схожесть. Поэтому и предложил объединить усилия. Я даже очень много продумал — так сказать концепцию продумал продукта. Все объекты 1с портировать не обязательно — достаточно создать 3 своих: список, документ и регистр. А уже наследованием создавать справочники, перечисления, документы и т.п. Но это уже тема сторонная — стукнись в аську завтра если интересно
Или на мыло
А то контакты у тебя в личке недоступны
(42) Аська доступна 🙂
(43) Контактная информация недоступна. — не увидел тама аськи
+1 Отличная вещь!!!
Но обнаружен косячок — когда отбираешь товар в заказ и нажимаешь Отмена (Cancel) товар все равно попадает в заказ. И еще, изменяя количество товара уже в заказе — сумма по строке не изменяется 🙁
(45) Над этими багами я работаю, приболел немного 🙁
Автор! Ау-у-у! Судя по дате последнего комментария Вы где-то далеко. Хотелось бы пообщаться, на всякий случай borisbelov48@mail.ru
хорошая вещь, а на ут11 планируется?
Остатки как просмотреть?
а на ут11 планируется?