<?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='\
Упрощённый ввод новых серийных номеров. Типовая форма ввода доработана поиском по серийным номерам.
Контроль ввода серийных номеров для товара, по которому ведется учет серийных номеров. (Документ нельзя провести, если количество товара в операции расходится с количеством введенных серийных номеров)
Контроль списания серийных номеров, присутствующих на складах организации.
Изменения типовой конфигурации минимальны.
Перейти к публикации
(0) Если не секрет, это где нибудь применяется?
Интернет магазинам, торгующим электроникой вполне подходит.
подходит ли для 1с УТ 10.3?
Да, при обновлении не нужно обновлять типовые документы. Они присутствуют в конфигурации «Учет серийных номеров» только для сохранения типизации реквизитов.
А ошибка появилась из-за того, что обновился модуль объекта документа.
Верните все назад, и повторите только уже типовые объекты не обновляйте.
Пожалуйста укажите что именно не надо обновлять а то я не профи в этих понятиях, Спасибо
Я ОБНОВИЛ ТАК КАК ВЫ СКАЗАЛИ НО ВЫДАЕТ ОШИБКУ ПРИ ПРОВЕДЕНИЕ ПОСТУПЛЕНИЕ ТОВАРОВ И УСЛУГ
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{ОбщийМодуль.dmn_УчетСерийныхНомеров.Модуль(186)}: Поле объекта не обнаружено (dmn_УчетСерийныхНомеров)
Добавил краткое описание обновления в статью.
(7) dynamite, прошу прощения за введение в заблуждение относительно процедуры обновления. Думаю скриншоты должны помочь.
Спасибо Димон, все настроил.
Есть еще вопрос, а в отчетах нельзя найти кому продана… там показывают только остатки.
+ (9) Если можно было сделать отчет типа ведомость по товарам на складах было бы супер, можно было бы найти всю историю товар… или подскажите как можно добавит в «отчет ведомость по товарам на складах» в отборах по серийному номеру
Да так и есть.
Обычно чтобы узнать документы прихода или продажи менеджеры используют обработку «Поиск данных» которая есть в любой типовой конфигурации. Вбивают туда серийник и получают отчет, где этот серийник светился в базе.
Поэтому а отчете и не планировалась такая информация. Он показывает только наличие для сверки.
Спасибо за ответ (11)
Еще один вопрос, когда оприходована несколько товаров по разным с серийниками при продаже получается можно смешать серийники и реализация проводится без проблем
Пример; Делаю Поступления товаров: Ручка 3 шт под серийниками 1,2,3
Карандаш 3шт под серийниками 5,6,7
И проводим закрываем
Делаю Реализацию товаров: Ручка 2шт под серийниками 6,7 (то что является серийником для Карандаша)
И потом проводим закрываем ( И без проблем проводится)
Получается что когда реализация проводится он не проверяет что серийник является ли серийником именно этой номенклатуры
(12) Для ввода серийных номеров используете поставленную с конфигурацией «Учет серийных номеров» обработку «Ввод серийных номеров.epf»? Если да, то эта обработка не должна была позволить вам «перепутать» товары и серийники между собой.
Идея интересная. Скачал, но не могу самостоятельно переписать под УТ 10.3 на 8.2. Обновление не планируете?
А что представляет собой упрощенный ввод серийных номеров в данной обработке?
Так эта обработка работает в УТ10.3 в 8.2 или нет? Еще вопрос — в списке для скачивания три файла, нужно качать их все или обработка и отчет есть внутри прилагаемой конфигурации?
А в УПП будет работать?
(18) umnica2, почему нет. Может. только смотря какая версия. Там в УПП и свои серийки есть. Так что эту обработку брать не обязательно. Просто в УТП все было сложно с ними
проще самому накатать свою обработку!
Конечно проще! Накатывайте !
а будет ли работать с 1С Управление Торговым Предприятием для Украины? какой алгоритм работы? Сможет ли работать по схеме менеджер выписал реализацию, передал на склад, там выписали расходный ордер и заполнили серийные номера?
напрасно потратил старбакс, хорошо что только cf скачал. не указано для какой версии УТ, для новых это совсем не подходит. конечно виноват сам не посмотрел когда файл опубликован, но всё же комменты свежие более менее.
(23) GrafB, ну как же, все указано
Платформа
1C: Предприятие 8.1
Конфигурация
1С:Управление торговлей 8
да разработка старая, и уже мало кому нужна
1С:Управление торговлей 8
По моему такой конфигурации не бывало.
Есть: Управление торговлей, редакция 11.х или 1Управление торговлей, редакция 10.х
1С:Управление торговлей 8
По моему такой конфигурации не бывало.
Есть: Управление торговлей, редакция 11.х или Управление торговлей, редакция 10.х
Возможно в «Управлении торговлей для Украины» есть редакция 8?
Интересно конечно — у меня к примеру такая вот ошибка выскакивает:
РегистрНакопления.НДСАвансыПоДоговорамКомиссии: Ни один из документов не является регистратором для регистра…При чем тут регистр накопления? Регистратор я к нему конечно прикручу — но почему такая ошибка выскакивать стала…