Организация адресного хранения на складе с помощью 1С




Принцип обмена данными из 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='\

33 Comments

  1. CheBurator

    Автор непреднамеренно или умышленно сузил круг программ 1С исключительно «типовыми» коробками 1С. Это понятно если говорить о решениях типа ЕРП (и производных — КА, УТ). Серьезную автоматизацию ограничивать же решениями упомянув только «1С-Логистика» — крайне некузяво.

    Следует упомянуть, что решений на 1С (разного уровня) для реализации задач, описанных автором — вполне достаточно и помимо 1С-Логистики: навскидку можно упомянуть такие решения на 1С как Toplog WMS, Penta WMS, Arena WMS, YARUS WMS, Кортес, Кронос и еще прочие — разной степени навороченности и распространенности.

    Reply
  2. nytlenc

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

    Reply
  3. CheBurator

    (2) ну как сказать…

    Автор — из франча. Публикует статьи — это плюс в карму.

    Ссылаясь на узкоспециализированные решения (каковыми является 1С-логистика) — и не упомянуть, что есть альтернативы такого же класса — это минус в карму. Можно было 1С-логистику вообще не упоминать (сказав, типа. что есть альтернативные решения, а не только КА, УТ, ЕРП) — тады ок. А так — у несведущих пользователей может сложится впечатление, что ничего другого и нет.. 😉

    Reply
  4. nytlenc

    (3) Вынужден плюсануть за Ваш ответ. Вы совершенно правы Сергей.

    Reply
  5. CheBurator

    (4) Это, вообще-то, важно (с точки зрения противодействия монополизму), но не сильно принципиально 😉

    Важнее то, что концепция адресного хранения — это один из шагов к смене парадигмы работы «бардачного» склада. И это шаг — для многих оказывается ступенькой непреодолимой высоты.

    Reply
  6. d4rkmesa

    Насчет «более простой» 3-й Логистики я бы поспорил… Сколько-нибудь значимые изменения там упрутся в закрытый код или спорную архитектуру, свое там нужно «рядом» дописывать. Да и с точки зрения клиента спорное позиционирование продукта, если бы на презентации в свое время упомянули про «полубумажное» функционирование, брать бы не стали.

    Reply
  7. CheBurator

    (6) ну если какие-то тсд шные процессы-обработки есть — то недостающее можно и дописать — если это кому-то реально надо

    Reply
  8. rpgshnik

    Как-то очень сжато и не раскрыта тема.

    Пример показан и освещен не для всех видов складского хранения.

    Визуализация карты склада есть в 1C:WMS? (раз упомянули)

    Бесшовная интеграция 1C:WMS и 1C:КА2, реализована? (раз упомянули)

    На ТСД можно установить 1С:Мобильная платформа, про это не написано. Причём многие решения имеют свои клиенты.

    Reply
  9. alis112358

    (8) Дмитрий, визуализация склада есть в 1С:Логистика управление складом.

    Бесшовную интеграцию нужно писать. У разработчика типовые обмены и интеграции не предусмотрены.

    На ТСД можно написать приложение, как с помощью мобильной платформы 1С, так и просто написать обработку и работать в терминальном режиме не ТСД.

    Либо если готовы подгонять свои бизнес процессы под типовой функционал у 1С:Логистика управление складом уже есть готовые приложения на ТСД

    Reply
  10. Aleskey_K

    (6) там закрытого кода — один модуль. функциональность развивать они нисколько не мешают.

    «WMS 4» — это развитие и замена «логистики 3» не стоит их сравнивать.

    Не совсем понятно выражение «полубумажное». Вроде как система работает по безбумажной технологии или без ТСД — в зависимости от требований бизнеса.

    Reply
  11. KazanKokos

    (3) плюсую. имхо рекламная статья. девушку сделали автором для пущего маркетингового эффекта. Лучшеб на UT11.3 все показали.

    Reply
  12. KazanKokos

    (8)

    На ТСД можно установить 1С:Мобильная платформа

    Оффтоп от этой темы: А где это можно прочитать поподробнее? Я так полагаю на мобильной платформе написать формы и кидать в программу через вебсервисы. Как сам сканер(Лазер) при этом работает? Как клавиатура(тогда придется постоянно тыкать пальцем на экран) или как стандартный сканер? Можно ли работать с ТСД непосредственно из web-клиента центр-базы запущенной на ТСД? Из последнего что читал тут по мобильной платформе — текущей реализации для ТСД недостаточно. там вроде с оборудованием какието нестыковки

    Reply
  13. Aleskey_K

    (8) типовые обмены есть с УТ11 и ERP2

    да и в целом, там несложно через конвертацию сделать любой обмен. тем более спектр возможностей большой: хочешь файловый, хочешь веб-сервис, с конвертацией или прямой, через подсистему либо через шину данных.

    Reply
  14. d4rkmesa

    (10)

    (6) там закрытого кода — один модуль. функциональность развивать они нисколько не мешают.

    «WMS 4» — это развитие и замена «логистики 3» не стоит их сравнивать.

    Не совсем понятно выражение «полубумажное». Вроде как сист

    Насчет термина «полубумажное» — это к автору статьи. У нас да, везде используются ТСД, но некоторые операции пришлось допиливать, чтобы не делать их вручную в режиме оператора в «обычном» 1С предприятии «с бумажки», потому как из начальников смен пользователи 1С посредственные. Насчет закрытости, я имел в виду что там повсеместно что-то вроде:

    Функция СтрокиДокументаОтборСохранитьИПровести(текФорма, текДокумент, текЗакрыть = Ложь, текНазначитьЦвет = Истина, тбзДопСтроки = Неопределено) Экспорт
    Возврат глЗащита.глзСтрокиДокументаОтборСохранитьИПровести(текФорма, текДокумент, текЗакрыть, текНазначитьЦвет, тбзДопСтроки);
    КонецФункции // СтрокиДокументаОтборСохранитьИПровести()
    

    С другой стороны, ограничения скорее на пользу — хоть какие-то рамки для фантазий заказчика.

    Reply
  15. Aleskey_K

    (14)

    Это просто закрытая функция, которая пропускает через себя все переданные параметры.

    Если нужна помощь с доработкой, стукните в личку

    Reply
  16. alis112358

    (11)Анатолий, в следующий раз покажу на УТ 11.3 🙂 Просто в компании внедряем на Акселоте.

    Автором я себя сама сделала)

    Reply
  17. zarucheisky

    (16) Леша Лустин тоже после внедрежа Акселотовской WMS таким крутым стал 😉

    Reply
  18. CheBurator

    (8) в нормальной ВМС системе визуализация склада это скорее красивый бантик, чем реально нужная вещь. Визуализация склада востребована там, где либо генералам надо показать ИБД, либо с помощью визуализации склада выполняется ручное управление складом — такие системы на звание wms по серьезному претендовать не могут

    Reply
  19. CheBurator

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

    В ВМС системе закрытый код может быть примерно такого же типа — на уровне ядра конфигурации не позволяющий делать ересь. А навесить на ядро любой алгоритм приемки, подбора и прочих складских операций, модифицировать тсд обработки под нужды/особенности конкретных процессов — для этого в ядро нормальной системы лезть не надо.

    Reply
  20. CheBurator

    вот, например, кусочек схемы склада на хоббихомячке недоавтоматизации -;)



    Начсклада изредка использует на посмотреть типа 😉

    40 тысяч паллет прокрутило нормально… по пищевике… и обслуживание Транспортной-экспедиционной компании тоже нормуль — на ТЭК вообще интересно получается

    Reply
  21. rpgshnik

    (12) У нас сорвался проект. Я лично не специалист по мобильной платформе, по мне она имхо крайне глючная, по крайней мере на апаче пробывал, посточнное падение и кривая отладка.

    Но мой коллега (http://infostart.ru/profile/621724/, возможно он вам и ответит да же подробнее), использовал ТСД с андроидом, и написал приложение которое работало со сканером полноценно (крайне черной вариант конечно), с его слов главное разобраться с драйверами (которые были китайскими). Но тут одного программирования 1С не достаточно.

    Проект должен был быть примерно следующего характера:

    На ТСД должна стоять Мобильная платформа.

    Которая в любой момент может получить актуальную базу через веб-сервисы.

    Так же через ТСД можно было бы подтверждать приемку/отгрузку и т.п.

    Да и вообще функционал можно было очень сделать широким.

    Но бюджет порезали.

    Reply
  22. rpgshnik

    (18) Эта ваше личное имхо. Я не согласен.

    Так же можно сказать, что в отчетах нельзя использовать диаграммы, иначе ИБД.

    Reply
  23. CheBurator
    Reply
  24. rpgshnik

    (23) Всё круто, я понимаю ваше возмущение касаемо «таких» складов. Но как и автору статьи, говорю — есть другие склады, есть другие сотрудники, руководство.

    Наш пример, номенклатуры меньше, характеристик нету, есть только партии (дата выпуска). В частности это касается уличных складов хранения готовой продукции на заводах по производству газобетонных блоков (а так же торговых площадок распределенных по регионам, на которые перемещается потом этот товар). Площадь хранения огромная (сами понимаете что это не мелочевка для ячеек), номенклатура храниться зачастую одна строго в одном ряду. И вот тут крайне удобно «не квалифицированному» быстро и наглядно понимать (взглядом охватывает весь склад как бы с высоты птичьего полета) — как заполняются ряды (причём карта склада в данном варианте может реализована да же в 3D с точностью расстановки, хоть с привязкой к GPS). Ну вы хоть сколько можете доказывать мне обратное, но здесь визуализация упрощает жизнь, а не усложняет как в вашем варианте. В вашем примере — визуализация бессмысленна.

    Reply
  25. user621724_Dimav1979

    (23) Визуализация это первое что нужно делать для низшего звена рабочего персонала (печально, конечно, но я столкнулся с этим на практике) . С 9 классами образования и нежеланием развиваться нынешнее поколение смотрит на таблицы отчетов с широко раскрытыми глазами. А вот картинки понимают на УРА! Что где стоит, в какой зоне в каком ряду.

    Более того, директор завода пользуется визуальной картой склада и гуляет по ней в 3D!

    Также бухгалтерия по ней проводит инвентаризацию. При смене персонала — водителя погрузчика например, данная карта у него на планшете отображена — и он сразу знает что куда везти.

    Когда на продукцию наложены RFid метки и карта склада привязана к GPS координатам — это полный контроль за выпущенной продукцией и перемещения ее внутри склада.

    Reply
  26. KazanKokos

    а 3D на чем отрисовано?

    Reply
  27. CheBurator

    (24) да я ж не возражаю против использования схем. я говорю о том, что такая «автоматизация» это по сути недоавтоматизация. Да, многих это вполне устраивает. Потому что никто у нас не готов считать на далеко. Платить 10-ку лишних бегунков по 30 тыс в месяц на протяжении пяти лет — это типа нормально, а вложить 2-3 ляма, через пару месяцев сократить персонал процентов на 25% (или поднять с тем же персоналом грузооборот) — это страшное западло… 😉

    Все эти недоавтоматизации — там где бардак и на складах и в управлении складами. если физический порядок еще удается наветси, то барадак в упарвлении с таким нелдоавтоматизационным подходом — выпилить очень трудно…

    хотя я не настаиваю на своей точке зрения… говорю по совему неединичному опыту.

    ПЫСЫ: такая площадка хранения с нормальной автоматизацией на нормальной WMS — устроит? 😉

    Reply
  28. CheBurator

    (25) «Визуализация это первое что нужно делать для низшего звена рабочего персонала»

    — да, конечно. тоже с этим столкнулся. у нас же любят экономить на всем. в том числе и на песроанле. а потом ай, млин, неграмотный персонал паллету в полторы тонны на 4 ярус пытался поставить… и случилось ..ц! ай вэй там была свободная ячейка на схеме склада, а в дальний ряд куда правильно было поставить — лень было тащиться…

    когда схема склада используется с целью определения своего положения на территории склада — чтобы знать куда ехать к нужной ячейке/зоне — это совсем другое. здесь управленческие решения на основе визуальной схемы склада глазками не принимаются. И справедливо когда жпс и координаты навесили и техника без всякой схемы склада разруливается куда что едет… когда человек на складе долго ищет на схеме куда идти — что-то в консерватории не то. ТСД в руках — стартанул и пошел по маршруту от а до я… а когда пипл почемуто хочет стартануть маршрут не в я или в а гдето около П — встает вопрос — он там как оказался что система не знает где он был…

    конечно, яч говорю о складах где ведется постоянная регулярная работа по обслуживанию товаропотоков. где небольшие склады, или персонала человек 5 на один большой участок — там хватит карты склада начальнику, и бумажек сборщиком. и будет это эффективнее чем тсд и жпс.

    Каждому решению — всое место и время.

    Reply
  29. CheBurator

    На однйо совей самописке человек с ТСД мог заходить из многих точек старта на маршрут. и не определял куд ими идти, тупо заходил в ряды где оказался «мимоходом» 😉 жмакал две ячейки возле которых стоял — вот тебе и «карта склада» без всяких палнешетов и карт — система далее сама напрвляла куда и что…

    Reply
  30. CheBurator

    Вообще, конечно, вся эта складская автоматизация вещь занимательная…

    Reply
  31. CheBurator

    … интересно, что именно делал директор гуляя по 3D-схеме склада…?

    Reply
  32. CheBurator

    Для любителей «схемы склада» нате вам:

    правда когда я начинал выяснять предметно — в эту схему склада чтобы по ней что-нить понять — надо засунуть почти весь оперативный массив информации WMS (собственно что я говорил выше)

    Reply
  33. user621724_Dimav1979

    (26) OpenGL

    Reply

Leave a Comment

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