<?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='\
Спасибо за обзор! Хотелось бы дополнить что после Ввода остатков предоставляется возможность изменять структуру склада в процессе работы — разделить существующий склад на помещения и/или внедрить на складе/помещении систему адресного хранения остатков. Для разделения остатков товаров на складе по помещениям используется типовой документ «Переход на использование складских помещений». Используя данный документ можно сначала заполнить информацию о товарах в одном помещении, а затем заполнить остатками товаров в другом помещении.
Для перевода склада (помещения) на режим адресного хранения используется документ «Переход на использование адресного хранения остатков». Все товары склада (помещения) перемещаются в зону приемки, а затем обычным образом распределяются по ячейкам в соответствии со структурой адресного хранения товаров в ячейках.
В «общих чертах» — да. Но не более.
Нигде не отмечено, что для торговых компаний складская перевалка товара является одной из самых ресурсоемких/трудозатратных операций (это менеджер может одним плевком заявку на 10 тонн передвинуть на 3 часа пораньше отгрузить, наплевав что склад просто (__о__) порвет — он то эти 10 тонн не двигает…) Поэтому утверждение что блок адресного хранения «…довольно объемный и покрывает 90% потребностей торговых и производственных предприятий, имеющих свой склад». Если под адресным хранением рассматривать только возможности задания топологии склада — то, возможно, да. Во всем остальном, существенном, — процентов 20% (особенно в принципах управления работой на таком складе — все только вручную, генерация заданий и отметки о их выполнении). Конечно, надо отметить, что эти 20% действительно, могут покрывать 80-90% первоначальных потребностей склада.
Автор постоянно путает «области хранения» и «зоны хранения» — вообще-то в складской логистике это немножко разные сущности (да и устоявшейся терминологии до сих пор — нет). Обычно под «зоной хранения» понимают ЛОГИЧЕСКУЮ совокупность ячеек. А «область хранения» — совокупность физически связных ячеек. Поэтому обычно ячейка входит в какую-то одну область (ряд, проход), но запросто может входить в несколько логических зон (или наоборот если поменять терминологию когда Область — это логически связанные, а Зоны — физические — тут кто как.. 😉
Как-то, давным-давно, когда появились джинсы на одной комсомольской конференции кто-то из старшеклассников у нас в школе с трибуны постоянно упоминал «барона Вранглера». Так и здесь — одну ошибку я принял бы за опечатку, но автор почему-то работает с «приходными орденами».. 😉
(2)генерация заданий может формироваться автоматически, отметки об их исполнении при использовании тсд с мрм тоже. В общем что вы что автор с оценкой впадаете в крайности по моему нескромному мнению. Успешный опыт автоматизации на УТ небольшого склада на пару тысяч европоддонов говорит о том что основные проблемы в перечисленных конфигурациях с логистикой склада
Подскажите, где в ERP распечатывается штрихкод серии товара?
(3) Только вот если склад отличается от того, что теоретически представляют себе методологи ERP, не видевшие реальных складов — дорабатывать придётся серьёзно.
(1)
Вы уверены? Я что-то не слышал о таком документе. И в дереве документов тоже его не вижу УТ 11.4.5.129. Может быть он как-то по другому называется, или это обработка?
(5) дорабатывать придется в любом случае, «из коробки» не работает, однако мы обошлись небольшими доработками при нескольких оговорках: при отборе сделать обход склада по нашим правилам не представляется возможным (слишком убогий функционал) и отказ от автоматического размещения в ячейках с заменой его на свободное размещение с тсд (взял задание на размещение пропикал товары переложил в ячейку пикнул ячейку подтвердил)
если вы про топологию склада то все решается либо фантазией либо небольшими доработками, если про процессы на складе, то либо их меняем либо не используем эти конфигурации иначе получите велосипед по цене мерседеса который не факт что поедет.
(4)в erp незнаю в ут приходный ордер на товары-показать серии-печать
(3) Если может автоматически и то и то — почему не включить эту возможность сразу?
(9)никто вам не запретит включайте, но я выбрал ручную генерацию заданий и автоматическое их закрытие. Там все на регламентных заданиях и если что-то где-то не так то … в общем автоматизация склада в пределах 200т.р. за ПО и его настройку накладывает некоторые ограничения )) все остальное на рынке от нескольких миллионов вот там уже можно развернуться по полной и предъявлять претензии из серии «почему мои дроны при инвентаризации склада по rfid меткам пропускают третий ярус второго ряда и не учитывают работу погрузчиков»
когда внедрите адресное хранение в одной конфигурации (на 7-ке, в самописной, в отраслевой) — тогда поймете принципы внедрения такой подсистемы, принципы учета складских операций, взгляните на склад в разрезе протекающих в нем процессов, и тогда вас уже не остановить в вашей фантазии реализовать ту или иную функциональность с помощью ШК, ТСД, голосовых команд и других будущих фишек (ботов телеграмм, http-сервисов), gps-навигацией.
https://infostart.ru/public/940623/
прошу любить и жаловать мою публикацию на эту тему:
(5) а чем реальный склад отличается от того, что себе представляют методологи ERP? Имею успешный опыт внедрения складского учета без доработок на неторговом предприятии.
(7)
Мы тоже отказывалист от автоматического размещения. Я вообще не уверен, что в средних/крупных предприятиях можно достаточно точно описать условия отборов и прочего для склада.
(9) Главный принцип ЕРП — «мы всё можем сделать автоматически, но если вам не нравится, вы всегда можете изменить значение по умолчанию». Так что заполнение — это, скорее, помощь и подсказка, а не руководство к действию.
Подальше положишь поближе возьмешь. Иногда подсказки мешают. Без связи с реальной моторикой человека они бывают даже вредны.
(4) В меню выбора серии во всех документах. Прямо под реквизитами находится кнопка «Печать этикетки» — это этикетка серии
(15) У меня 2 случая опыта работы со складом. Оба раза сперва делали авттоматическое заполнение, потом отказались, переложили это на работника склада.
(12) На реальном складе оперировать документами с табличными частями очень грустно, операции на складе на самом деле атомарны.
(18) м-м-м, а что мешает не писать 50 строк? Напишите 1, да и всё.
(19) В типовой УТ11? Это возможно?
(20)Конечно!!! Это из строчки нельзя сделать таблицу. А из таблицы строку очень просто.
Приходный ордер
Спасибо за статью, познавательно
Спасибо. Подскажите, пожалуйста, каким групповым способом можно определить места хранения товара, если использовать ячейки только справочно, Стандартная групповая обработка реквизитов этого сделать не позволяет.