<?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='\
Добавлен выбор соглашения с клиентом и вида цены при создании реализации
как сделать чтобы цена для реализации автоматически заполнялась из табличной части поступления. Цена поступления у нас в любом случае цена продажи. И т.к цены все время меняются цену поступления заполнять нет смысла
Обработка супер, всем рекомендую
Спасибо, хорошая обработка.
(2) Только сейчас увидел. Попозже сделаю.
Обнаружена ошибка при создании документа «перемещение товаров и услуг». Если в документе поступления есть одна и та же позиция, но в каждой строчке стоит разное количество. Пример: Строка 1 — Нож — 7 шт, Строка 2- нож — 12 шт. То при создания перемещения в табличной части будут следующие строки: Строка 1 — нож — 19 шт, Строка 2 — нож 19 шт. Реализается создаётся без проблем
(11) Это уже ваши проблемы. Сами следите за заполнением исходных документов.
Добавлен вариант для УТ 11.0.7.8
После последнего обновления УТ будет работать?
(16) да, для 11.0.7.13 тестировалось? а то там изменений много….
(16)(17) Скачайте да посмотрите сами.
Спасибо за обработку. Очень помогла! С ее помощью разобрался как перепроводить документы из управляемой формы.
В релизе 11.0.7.13 при формировании документов по некоторым позициям увеличивается количество товаров. Некорректное заполнение количества происходит и в расходной накладной и в перемещении.
(21) Может быть. Заполнение идёт исходя из количества товаров на складе. Финансирование доработки решит проблему.
Обновление
[+] Исправлены некоторые ошибки для обработки релизов УТ 11.0.7.8 и позднее.
[+] Учтены требования локализации.
Версия обработки для УТ 11.0.7.2 и ранее не поддерживается, оставлена для любителей
старьяантиквариата.Спасибо за работу! Уважаю ! Мало специалистов такого уровня выкладывающих свои обработки бесплатно !
11.0.8.11
ошибочка вышла:
(25) Значит, для управления торговлей 11.0.8.11 нужен свой вариант.
(25) Добавлена обработка для Управления торговлей 11.0.8
Офигеть! Почему для такой стандартной в прошлых версиях функции надо писать внешнюю обработку!?! Почему её нет в стандартной поставке?!
(28) Сам не понял. Логику 1С тут трудно понять. В УТ 10.3 мы такую операцию очень часто проделывали, товар пришёл и быстро ушёл в том же составе.
Существует возможность добавления документа реализации в структуру подчиненности поступлению?
Кто-нибудь пробовал?
Существует. Курочьте конфигурацию, если есть способности.
Вариант для УТ 11.0.8 адаптирован для использования в УТ 11.0.9
Что за дебилы, обязательно надо в приват переться, вопросы задавать.
Добавлен вариант для Управления торговлей 11.1
Для версии РеализацияПеремещениеТоваровОснованииПоступленияУТ11078.epf автоматом количество не заполняется во вновь созданном документе Реализация!
(39) Значит, нет остатков на складе. С этим вариантом я разбираться уже не буду, потому что нет базы с УТ 11.0
Было бы замечательно что бы документ Реализация создавалась на основе нескольких документов Поступления, при выделении этих документов в списке. Пока что для версии УТ1108, если выбрать мышкой несколько поступлении, и нажать — создать на основании — создается документ Реализация с данными только по последнему документу Поступления.
(41) 600 рублей и сделаю.
(41) Какая-то ошибка. Реализации формируются для каждого выделенного документа поступления. Сейчас проверил.
(41) То есть для трёх поступлений создаются три реализации. Делал несколько раз на типовой конфигурации. Где-то на вашей стороне косяк.
Странно. А нельзя что бы для 3-х поступлении создавалась одна реализация?
(45) Тогда надо переделывать обработку с группировкой по складу, если поступления на разные склады.
В версии УТ 11.3.4 не работает авторегистрация. 🙁
вместо ДополнительныеОтчетыИОбработки.НазначаемыеОбъектыМетаданныхПоВидуВнешнегоОбъекта теперь ДополнительныеОтчетыИОбработки.ПолучитьВидОбработкиПоСтроковомуПредставлениюВида
(47) Будет время, портирую под поздние релизы.