<?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='\
Еще бы компоненту BARCODE.BarcodeCtrl здесь же вывожить! 💡
Еще бы компоненту BARCODE.BarcodeCtrl здесь же выложить! 💡
(1) Форма предназначена для ТиС и Комплексной 7.7, а в каждом дистрибутиве этих конфигураций эта компонента есть в виде файла barcode.ocx. Если компонента по каким-то причинам не зарегистрирована, то нужно выполнить команду: regsvr32 barcode.ocx
Не работает в 1С:Торговля и склад 7.7 с зарегистрированным баркодом.
Пишет: Возможно существуют штрих-коды на товаре…
Выводит на печать этикетки без штрихкодов.
(4) Проблема скорее всего только в отображении на экране. При печати должно быть все нормально, т.к. у принтеров количество точек на дюйм больше чем на экране. Для просмотра на экране можно изменить масштаб, например, как это сделано на скриншоте. Изменение масштаба на печать никак не влияет.
Уже приколбасил обработку к своей конфе, просто не знал что в ТиС и Комплексной barcode.ocx есть, а сейчас уже реально работает 😀
(6) Ну, и как работает? Быстро?
(5) Да действительно, всё работает, дорабатываю на лист А4 — 10 столбцов, 26 строк, мне видится, что эта обработка будет основной.
Однозначно ПЛЮС.
Обработки можно вызывать из справочника Номенклатура и из документов ПеремещениеТМЦ, ПоступлениеТМЦ, ИнвентаризацияТМЦ, ПереоценкаРозница.
А как их вызвать, где они регистрируются? записал файлы в каталог ExtForms, а как этикетки напечатать не могу понять… в справочнике «номенклатура» как и было до этого этикетку можно напечатать нажав кнопку печать-> этикетки, типовой этикетки которая была до этого, одна на листе, без цены. подскажите как вызвать эту обработку, она мне очень нужна 🙁
(9) Копировать нужно как указано в описании в каталог ExtFormsPrnForms
Отличная обработка, молодец! 😀
в 7-ке есть проблема падения проги при больших плотных мокселях… то есть тупо например 100 листов этиакеток 65 вывести на печать — падает… приходится порциями по 30 листов.. — рекомендую предусмотреть такую возможность
(12) Вот так всегда. Обычно вначале смотрят, а потом комментируют… Там все с самого начала бьется блоками по 10 листов.
Бить по 30 листов это нормально для ценников, а для мелких этикеток уже многовато. Начинает подтормаживать.
(12) Ну, вот. Одной интригой стало меньше.
мы просто разошлись в оценке важности моментов… 😉
в таких обработках зачастую полезно иметь возможность перепечатать часть «пакета»
(16) Порядковый номер набора листов указывается в заголовке. Наверное не совсем корректно будет писать о том, что на моем ПК 10000 этикеток (по 50-ти номенклатурным позициям 200 шт. на каждую позицию) формируются всего за 7 секунд. Ведь это может ввести в некоторое заблуждение — у меня то хороший компьютер. 🙂
Интересно, а многие ли пытаются печатать этикетки с штрих-кодами на языке принтера? Ведь barcode.ocx — это растровая виндовая печать, которая, пусть и чисто теоретически, не может быть быстрее «родной», на кодах, на сколь-нибудь значительных объёмах печати (тысячи этикеток в сутки).
(18) Пробовали для зебры 2824 lp. подключение через COM-порт, скорость возрастает раза в два, т.к. печать идет непрерывно, пауз на позиционирование и переход на новую страницу не требуется. Ну и т.д. Очень рекомендую. Язык простой, формирование этикетки сложностей не вызывает.
Хотел бы попросить Вас доработать на коммерческой основе некоторые Ваши обработки под мою специфику. Это возможно?
Скопировал в C:Program Files1Cv77DBExtFormsPrnForms, но все равно в справочнике открывается только стандартная обработка(
(9)извините за остолопство) все работает, но не вмещается на этикетку шириной 3 см и длиной 1,9 см.
Подскажите пожалуйста как изменить обработку, что бы можно было печатать на этикетках:
30х19 мм и 58х40 мм
(23) Обработки оптимизированы под производительность, поэтому программного изменения размера макета в них нет. Для изменения размера этикетки нужно изменить макет.
+ автору, реально работает быстрее
Вот это офигенная штука должна быть. Давно нечто похожее искал. Спасибо автору.
Автору спасибо. Работает просто супер. Вот только один вопрос, как сделать чтобы на этикетку выводилось ПолнНаименование, а не сокращенное??? Помогите плиз…
(27) Необходимо заменить строку:
Секция.ПечТовар = СокрЛП(Товар);
на строку
Секция.ПечТовар = СокрЛП(Товар.ПолнНаименование);
Добрый день, подключил обработки, все устраивает. Только при отправке на печать в свойствах принтера указаны размеры ширина 76 высота 297, если их выставить по размерам этикетки и напечатать то все нормально, но если выбрать другой товар то настройки слетают на указанные выше, что делать???? прилагаю скриншот
Добрый день, подключил обработки, все устраивает. Только при отправке на печать в свойствах принтера указаны размеры ширина 76 высота 297, если их выставить по размерам этикетки и напечатать то все нормально, но если выбрать другой товар то настройки слетают на указанные выше, что делать???? прилагаю скриншот
(30)В восьмерке есть сохранение настроек, в семерке то же по моему есть припоминаю. Посмотрите код
Размеры этикеток можно любые выводить на печать?