<?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='\
Если есть полноценная БСП, то зачем нужна данная обработка?
Если используется программа «до эпохи БСП», то работать не будет?
Эта обработка будет работать на любой конфигурации, главное чтобы платформа подходила.
Именно то, что искал — минималистичный пример вывода штрихкода с использованием встроенной компоненты без привязки к конфигурации.
Проще было бы даже не завязываться на номенклатуру — напрямую от штрихкода плясать.
спасибо за эту строчку!
Спасибо! Обработка очень пригодилась!
В типовой Бухгалтерия предприятия, редакция 3.0 (3.0.53.39) кажись эта же компонента!
Только нет там описания функции «ПолучитьПараметрыПечатиШтрихкода».
(6) Да, компонента та же. Функцию я сам писал и реализована она в приложенной обработке. Целью обработки была простая печать штрихкода в любой конфигурации. Так уж вышло что у меня используется конфигурация на обычных формах, где работа с этой компонентой не реализована. Для себя делал в первую очередь для печати штрихкодов в Linux.
(7) я думал что решение с компонентой только для винды, но погуглив понял, что компонента нейтив и для линукса тоже сгодится!
Функцию я не писал, просто сформировал структуру по параметрам, которые используются! В любом случае спасибо за публикацию!
А где можно скачать компоненту печать штрихкодов под x64 клиент?
(9) На Linux X64 все работает. Последнюю версию компоненты можно посмотреть в Библиотеке стандартных подсистем.
ПодключениеВыполнено возвращает Ложь, соответственно:
{ВнешняяОбработка.ОбработкаПечатиШтрихкода.МодульОбъекта(206)}: Ошибка подключения внешней компоненты печати штрихкода!
ВызватьИсключение НСтр(«ru = ‘Ошибка подключения внешней компоненты печати штрихкода!'»);
Я что-то упустил?
На линуксе подключаете? Если да, то проверьте установку всех необходимых модулей (Требования к рабочему месту)
Подскажите, где найти требования к рабочему месту по необходимым модулям для Linux?
(13) В справке 1С есть раздел с системными требованиями в котором описаны необходимые библиотеки.
Из основных библиотек понадобятся:
Webkitgtx 1.2.5 и выше;
ImageMagick 6.2.8 и выше;
Freetype 2.1.9 и выше;
Libgsf 1.10.1 и выше;
Glib 2.124 и выше;
Kerberos 1.4.2 и выше;
GSS-API Kerberos 1.4.2 и выше;
Microsoft Core Fonts;
UnixODBC 2.2.11 и выше для использования внешних источников данных на сервере «1С:Предприятие».
Прикрутили для вывода штрихкода на торг12. Стало раз в 5 дольше формировать по сравнению с Элемент управления 1С:Печать штрихкодов. Но нам нужно универсальное решение как для linux так и для windows. Есть рекомендации по ускорению?
Странно, у нас пользователи не жалуются на скорость. Мы уже давно перешли на этот способ формирования во всех печатных формах.
почему ьл только для EAN128 отрабатывает…на другом с ошибка вывода штрихкода
(17) Напишите с какими данными вышел такой штрихкод?