Может кто идей посоветует?..




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

59 Comments

  1. German

    Вот люди … время у вас есть … у меня идей куча, вот только на их реализацию времени нет… :)… Если что давай в проект по Ei там есть одно перспективное направление.

    Reply
  2. Душелов

    Ну я бы не сказал, что я бездельник… Времени у меня, как у всех, просто многозадачен 😉 Хотя жена гоняет 🙂

    А что за Ei?

    Reply
  3. Свой

    за разработки в сторону free-продуктов народ тебе был бы благодарен

    Reply
  4. Душелов

    Да фри-продукты- эт понятно… Вопрос идей, которые надо воплотить…. И чем сложнее, тем интереснее :))

    Reply
  5. O-Planet

    Охренеть! Мне бы побездельничать. Впрочем, нет, не надо такого счастья. Все-таки, когда работа есть — оно лучше. А идейка есть одна. Таскаю ее уже все лето, да вот только времени нет…

    Reply
  6. kitt

    Я сейчас пытаюсь сделать универсальный отчет по остаткамоборотам регистра на прямых запросах(для ДБФ версии). Нормальный отчет, хотя бы претендующий на универсальность:) Один раз понадобился, перебрал кучу таких уже готовых отчетов, но нормального не нашел. То одного нет, то другое криво реализовано. Сделай тоже, позже сравним

    Reply
  7. luns

    Парсинг GRS файлов… 😉 класс для программного создания карт бизнес-процесов.

    Reply
  8. WiseSnake

    Блин, везет тебе!

    У меня давно такая необходимость:

    Есть универсальная обработка документов и справочников, наверно слышал. Хотелось бы иметь подобную универсальную обработку регистров с отборами и возможностью общего изменения реквизитов и периодов.

    Reply
  9. Свой

    (4) в качестве идеи например — самостоятельное легкое приложение, способное выполнять 1С код (хотя бы часть)

    для удаленной складской/торговой точки чтобы не ставить полноценную УТ или ТиС,

    или если не выполнять код то хотя бы этакий «клиент-сервер» — на «сервере» — обычная 1С-ина с доп «менеджером» запросов к данным и снимающий поведение форм, а на «клиенте» самостоятельное приложение, воспроизводящий все что делается на «сервере» и передающий туда команды мыши/клавы

    Reply
  10. German

    (2) Опа http://groups.google.ru/group/enterprise-integrator

    (8) твой вопрос закрывает Ei в части групповой обработки результатов запроса…

    Reply
  11. Душелов

    (5) А что за идейка? 😉

    (6) ДБФ 7.7 — это не интересно 🙂 Хочется более универсального…

    (7) Интересно… Надо подумать!

    (8) Что-то подобное рисовал я… Надо поискать.

    (9) Вот это уже серьезное дело, я уже задумывался о чем-то подобном…

    (10) Хммм… Интересно… Кинул заявку на вступление…

    Reply
  12. German

    (11) еще бы асю или google Talk включил было бы вобще супер…

    Reply
  13. WiseSnake

    (10) > (8) твой вопрос закрывает Ei в части групповой обработки результатов запроса…

    Что есть Ei?

    Reply
  14. luns

    Дополнение к (7) В принципе можно и не графической схемой делать, а Активекс нарисовать, упрощенную версию Визио.. но естественно с программным созданием элементов схемы (и ручным тоже) и хотя бы основными событиями, типа Клик, ДаблКлик..

    Сам давно хотел нарисовать, да руки не доходят… Чтобы универсально было, должна быть возможность подгрузки спрайтов…

    Reply
  15. coder1cv8

    А где раскраска кода, упоминаемая в теме? Что-то я не вижу… )

    Reply
  16. nikresh

    для 8ки УПП

    есть желание сделать обработку?

    (тема — по документам опер.учёта — движения в учёте по МСФО)

    Reply
  17. Душелов

    (14) А активИкс зачем? Визуально же сама 1С работает с grs.

    (15) А оно кому-то надо? Вроде есть аналоги 🙂 Выложить-то выложу — не вопрос.

    (16) — всякие обработки для типовых — это банально и не интересно

    Reply
  18. Душелов
  19. Valerich

    пока нигде не находил: ВК по поводу разбора картинок, т.е. не просто в хранилище положить и отрисовать, но и возможность получить картинку как матрицу (масив) пискелей (кодов цветов) для дальнейшей математической обработки, преобразований и т.п.

    Reply
  20. luns

    (17) имеется ввиду не grs, а возможность рисовать произвольные блок-схемы для отображения например каких либо процессов..

    Reply
  21. Душелов

    (19) А 1С-а справится с этим? Памяти-то ей хватит?

    (20) А стандартные блок-схемы чем не удобны?

    Reply
  22. Душелов

    (20) Думаю, тут тебе MS Visio поможет, работать с ним через ActiveX

    Reply
  23. luns

    (21) программно не рисуются….

    (22) без визио проще…. (да и дешевле…)

    Reply
  24. BNK

    Вот такая ситуевина: при удаленной поддержке людям требуются в основном дополнительные отчеты и обработки. Каждый раз, при необходимости :-), приходится вставлять обработчики строки со списком значений. Всего штук восемь функций. Возможно ли их вынести во внешнюю компоненту? Нет, конечно уже такие есть, но вкупе с кучей «ненужного». Такие вещи хорошо вставлять в Глобальник. А здесь выгоднее было бы — подключил/отключил прям в отчете/обработке, — просто и незатейливо.

    То же и с Таблицей значений.

    Reply
  25. Koнст

    «Задача об упаковке рюкзака» в 1С, вроде еще не было.

    Reply
  26. Душелов

    (24) что в глобальнике прописывать эти функции, что в глобальнике подключать компоненту — одно и тоже, если я все так понял.

    (25) что за задача?

    Reply
  27. Душелов

    А, понятно. Рюкзак для логистики…

    Reply
  28. Koнст

    Да, для логистики. Контейнеры/фуры/вагоны многие грузят, а эту задачу к тем же документам реализации/отгрузки еще никто не подключал…

    Reply
  29. Pashok

    Форму П-4 для ЗиК 7.7 нигде не нашёл. Есть только старого образца.

    Reply
  30. Душелов

    (29) на такие мелочи не размениваюсь 😉

    Reply
  31. Душелов

    (28) почитал… интересно… но это уже коммерческая разработка должна быть…

    Reply
  32. Kabz

    дея сам хочу реализовать но времини нет

    юерется отбор подсистемы по медаданным и формируется описание всех элементов метаданныв с синонимами и коментариями со всеми реквизитами и предопределенными значениями все ресуется как графическая схема и связи по типам объектов.

    Reply
  33. Свой

    (32) на мисте было похожее http://www.mista.ru/dot/

    Reply
  34. Бедуин

    Может тоже мелочь, но вдруг заинтересует. Работаю с 2-мя конфигурациями 1С:Предприятие7.7 — Зарплата+Кадры, ред. 2.3 и Учет и отчетность предпринимателя, ред.1.2. Данные из ЗиК выгружаются в Предприниматель и там формируется отчетность. Так вот в ЗиК справочник называется «сотрудники», а в предпринимателе — «работники», они между собой не синхронизируются, и данные на вновь принятых работников не выгружаются, приходится вбивать вручную. Может быть есть какой-то выход?

    Reply
  35. Душелов

    (34) Это элементарные вещи, не интересно мне 🙂

    Reply
  36. pavlo

    ИДЕЯ, аля olap.ocx, но:

    1. с возможностью расшифровок 🙂 и т.д. идей хватит, если такой проект оживет 😉 уж очень нужная вещь.

    Reply
  37. Serj1C

    OLE сравнение двух идентичных баз v8

    Reply
  38. DeepDiver

    Ну если от нечего делать уже бегаете и ставите «-«, то позвольте подкинуть идейку.

    В отделе кадров для записи фотографии в карточку ФИЗлица сотрудники сначала её какимто образом получают, в нашем случае подключенной вэбкамерой, сохряняют и вставляют.

    Вот если бы на прямую в 1С универсальный компонент какойто что бы в форме элемента справочника!

    Reply
  39. Душелов

    (36) я думаю над этим вопросом

    (37) скучно

    (38) ну идея в целом ясна…

    Reply
  40. Abadonna

    (0) хитрый ты 😉 Ежели бы я знал чего такого замутить, сам бы уж давно замутил :)))

    Reply
  41. Душелов

    (40) хехе, но пара толковые идеи уже были 🙂

    Reply
  42. Душелов
  43. DeepDiver

    Совсем другое дело!

    Reply
  44. bazavs

    Идей, как мне сейчас кажется — выше крыши. И большинство из них продиктованы недоработками 1С, разумеецца. у нас УТ под 8.1

    Каждую неделю колбасит от недоработок в плане удобства и в плане кривизны.

    Пока придумана одна интересная обработка, её один товарищ исполнил, достаточно добротно. Но есть и там небольшой косячёк, не ясно было даже, можно ли исправить. Если всё это интересно — помогу держаться в форме :)). ася 237589844

    Reply
  45. tchsn

    Здравствуйте

    Я не знаю тема может и закрыта, но пока присутствует попробую спросить. Нельзя ли придумать новую защиту кода от просмотра в 1С8.1, а то конкуренты все обработки воруют с организаций. Стандартная защита уже не работает нашли на неё управу взламывают

    Reply
  46. gineich

    если есть время и желание помочь, опишу нашу проблемку и попрошу помощи.

    у нас УТ. дело обстоит так: постоянно исправления на заказах покупателя и опрераторы долбятся с когда делают реализацию (на основании заказа покупателя)и вечно исправляют.

    задачка такая:

    есть остатки товара на складе все положительные батон городской 8ши и булка городская 8шт, девушка делает 1й заказ покупателя к примеру батон городской 5шт. и будка городская 5шт; второй заказ тоже батон городской 5шт. и будка городская 5шт.

    1. каждой номенклатуре создать справочник (перечень) аналогов продукции

    2. запрос при проведении документа заказа покупателя который будет менять номенклатуру и количество в табличной части сам во втором уже заказе (ну и в 3м и 4м … заказах) на номенклатуру батон городской 3шт и будка городская 3шт. (т.к. остаток минус 1й заказ = по три штуки).

    заранее благодарен

    Reply
  47. i132

    Идея резервоного копирования файловой базы (7,8):

    1. Блокировка записи. (чтение-отчеты доступны ВСЕ ВРЕМЯ)

    2. копирование базы в промежуточный каталог

    3. Разблокирование базы

    4. Архивирование базы из промежуточного каталога

    (обработка не сложная)

    Reply
  48. i132

    идея: Сравнение-перенос по Com 2х баз, если базы разные соотвествие объектов-реквизитов берется из КонвертацииДанных

    Reply
  49. irishka77

    Жаль….Некому будет реализовывать…

    Reply
  50. zhleonid8

    вот те идея! соедини ЗиУ, и БП дабы не плодить базы и ошибки в учете:)

    Reply
  51. AlexSmith

    (50) zhleonid8, 1С Управление предприятием получается 😉

    Автор темы умер

    Reply
  52. Кошки рулят

    Довольно частая задача — рассылка всяких писем (актов сверки клиентам, инф. сообщения об отгрузках/доставках, СФ, ТОРГ-12 и т.п., внутренняя почта фирмы с предупреждениями о критичных действиях пользователей, да мало ли что еще взбредает в головы юзеров).

    V7plus.dll с собственно почтовой частью прекрасно справляется, а вот файл, который присоединяется к письму — проблема.

    С некоторых пор, считаю не правильно и не корректно присоединять к письмам файлы Excel. Хотя и удобно — обычную таблицу mxl пишешь с параметром и почти нет проблем …

    Но, во-первых, получатель не обязан иметь Excel (он еще и денег стОит) или ОпенОфис, а во-вторых, те, кто смотрят почту со смартфонов/планшетов могут не иметь и технической возможности посмотреть офисные файлы.

    Поэтому все файлы присоединяю исключительно в формате PDF.

    При этом, каждый конкретный раз приходится искать чем его сделать. У кого-то есть Excel 2010 — он умеет сохранять в PDF и в VB появился соответствующий метод, у кого-то — зоопарк офисов на компах юзеров или терминал без офиса вовсе.

    Хотелось бы иметь внешнюю компоненту для программной печати в PDF-файл таблиц и текстов из 1С.

    Reply
  53. TMV

    (52) Кошки рулят, походу вы давно с 1с не работали.. она очень даже хорошо сохраняет табличные документы в «Формат файла PDF стандарта ISO 32000-1:2008». инфа из СП..

    Reply
  54. Кошки рулят

    (53) TMV, Ты не в теме …

    Походу, никогда не работал с 1с …

    Reply
  55. TMV

    (54) Кошки рулят, может подробнее?

    Reply
  56. tango

    (55) TMV, см (52):

    V7plus
    Reply
  57. TMV

    (56) tango, однако..

    (54) Кошки рулят, приношу свои соболезнования.

    Reply
  58. trustgros

    внешняя компонента для «ловли» нажатия мышки и клавиатуры. (при нажатии ,при отпускании , ну и.т.д)

    Reply
  59. lev6975

    Присоединяюсь к (58), обработчиков событий у 1С кот наплакал:-)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *