<?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='\
Увидел УТ 8.2, подумал про УТ 11. Оказывается для УТ 10.3
Написано для УТ 10.3.
Не давно только начал разбираться с 1с8
В основном работал с 7.7 комплексная
За доработками подобными вашим обычно пользователи обращаются к автору и он делает доработки и обновления. ( тем более что публикация первоисточник коммерческая)
]
А с каких пор первоисточник стал коммерческим. Печать этикеток 1С УТ 8.1 и автор её Alexsisit.
Я указал кто автор первоисточника, а потом переделал под свои нужды.
Вам минус за распространение не принадлежащей вам программы и попытке набить себе рейтинг
А интересно для чего создавался это ресурс, как не для свободного обмена информацией. Или Вы его используете только в комерческих целях и для поднятия своего рейтинга. Я понял бы если Alexsisit написал и сказал что нужно убрать эту обработку, то я её снял бы. Я про набивание рейтинга даже в мыслях небыло, а вот у Вас это наверно главное.
Ребята, давай жить дружно!!!
Если бы я хотел, то разместил её коммерческой и закрыл код на изменение. Претензий не имею никаких. Тем более на 8.2 написана.
Доброе время суток! Обработка отличная, НО не могли бы указать как получить в обработке то количество товара, которое в табличной части документа. Конкретно интересует Поступление ТиУ, но для остальных тоже очень актуально. Заранее спасибо!
Вроде написано что печать ценников и этикеток а открывается только печать этикеток. Да и какой путь к сетевому принтеру нужно указать?
хорошая обработка, очень довольны!
В следующей версии хотелось бы видеть в списке документов реализация товаров. т.е. отгружаем товар со склада вместе с этикетками.
(7) Ivan_82,
В обработке есть настройка.
Укажи в этой настройке принтер этикеток и размер этикетки и допустимые поля.
Чтобы напечатать ценник или этикетку заполни табличную часть и установи V против нужного товара.
Сформируй ценники и выбери элемент печати. При печати цеников печать пойдет на принтер, а этикетки на принтер ШК
(6) Yan-1986@mail.ru,
Если вопрос актуален напишите.
Есть иправленная с количеством. Могу выложить.
Плюс, вообще информации по настройке принтеров печати этикеток с 1С практически нет, только эмоции в основном, да и сам намучился, подбирая под каждую этикетку 2.65*0.5 или что то умножить на что то, кстати нигде не нашел описания, что это за загадочные 2.65, для TLP 2824 пришлось вообще разделить высоту этикетки на 0.4, а не умножить, чтоб влезть в размер. в этой обработке попадает размер, но если заполняю из документа, вообще выводит на печать пустую таблицу, какой бы макет не выбрал, ну и количество бы, типа кнопкой «установить для всех»
Упс…Вот, поторопился, с документа не устанавливается количество, поэтому не выводит на печать.
у меня артикли не выдает, что может быть? и на печать не формирует
Добавил реквизит ТипЦены и немножко изменил запрос на:
Если Склад.ВидСклада=Перечисления.ВидыСкладов.Розничный Тогда
Рег=»ЦеныАТТ»;
Фильтр=»Склад В (&Склад)»;
Иначе
Рег=»ЦеныНоменклатуры»;
Фильтр=»ТипЦен В (&ТипЦены)»;
КонецЕсли;
и можно выбирать по типу цен, а (15) с артикулом, там если в константах 1С выводить, не код, то артикул и нужно исправить Процедура ДОбавитьЦенник………
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Область.параметры.КодТов = СокрЛП(Строка.Номенклатура.Артикул);
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Область.параметры.КодТов = СокрЛП(Строка.Номенклатура.Код);
Иначе…………..
а это заремировать //Область.параметры.КодТов=СокрЛП(Строка.Номенклатура.Код);
если не так, что, пусть уж автор поправит
Спасибо пригодилось!
Рабочая обработка. Спасибо автору!
Не работает.
У Вас возможно неустановлена программа 1CBarCode.exe
вот так спасибо
спасибо. все работает!
Неплохая обработка. Нужно было организовать для клиента печать сразу несколько форматов этикеток. Скачав эту получилось допилить ее под себя. Спасибо большое автору.
в ценниках не отображается штрих-код, а в этикетках цена. Выбор сетевого принтера из обработки? — весьма сомнительная фича. Зачем? Их что? так часто меняют? Сетевые принтеры. А так , , задумка хорошая. А мои претензии, возможно только мои глюки программы. Хотя 1С-8.2.15.294 а УТ-10.3.18.3
Не вовсех макетах ценников выводиться штрихкод. В этикетках не когда не выводил цену. Считаю что это не нужно. На этикетке не кто небудет смотреть цену. В основном используем 20х30 мм этикетку. Принтера Штрихкода в основном использую сетевые так как работаем под RDP. Печать этикеток с нескольких рабочих мест на один принтер. Хотя в настройку принтера можно ни чего неписать всеравно будет пработать.
Отлично работает у меня в УТ для Украины. Но хотелось бы исправить шаблоны этикеток. Попробовал шаблон «маленький со ШК», это же то что надо, но почему-то штрихкоду выделили ну очень мало места. С удовольствием бы исправил этот недочет, да что-то не могу взять в толк где и как?!
Разобрался. Настраиваются макеты прямо в конфигураторе. Единственное но, штрихкод печатается не на всю ширину этикеты, а всего на две трети, хотя в макете в когнфигураторе картинка растянута от края до края. Штрихкод и так читается, но хотелось бы побороть.
Спасибо авторам за отличную работу.
Оказывается я могу нормально печатать только по одной этикетке. Если вывести на печать несколько этикеток, то они печатаются все на одной этикетке, две, три в ряд. Это тоже в макете в конфигураторе настраивать или есть какой-то более прямой путь?
Нужно выбрать принтер этикеток в обработке. У Вас выставлен принтер A4. Чтобы напечатать нужное количество этикеток в форме заполните поле количество.Настройте права пользователя
(32) ага, спасибо, теперь понятно, попробую. Правда я уже наловчился печатать этикетки как на стандартный Windows-принтер. Исправил шаблон с маленьким ценником со ШК, подогнал его макет под размеры моей этикетки, сделал так чтобы в шаблоне выводились все ценники в одну колонку и печатаю на принтер этикеток 🙂
Несколько костыльный подход, зато работает 🙂
Очень долго искала подобную обработку, спасибо большое автору!
Я почитала отзывы, а энуюти этикетки распечатываются на формате А4? И еще как я понимаю нужно привязывать как внешнюю печатную форму, этот так?
Спасибо автору еще раз, очень пригодилась обработка.
(35) bes-kkm,
Да. Её нужно привязать как внешнюю обработку
Топикстартер Андрей, участники — прошу прощения за наглость, неподобающую новичку, большая человеческая просьба: может ли кто-нибудь кинуть сабжевой внешней формой в почту? sova-2002@mail.ru
Извиняйте, ежели чего не так. «Сами мы не местные» (с) 🙂
(38) sova-kupda, просьба в силе?
(39) mehkkt, и даже очень! 🙂
Буду премного благодарен.
А то купил-скачал похожую обработку с другого сайта, но она выводит этикетки только вертикально в 1 ряд и не отображает на этикетке розничную цену, а мне допилить ее самостоятельно по-любому не судьба — нет таких талантов 🙂
(2) как указать количество этикеток для вывода на печать на А4? В графе кол-во указываю количество (например, 10), а формирует 1 шт.
Добрый день! Не устанавливается цена в данной обработке. 8.2 УТ 10.3. Подскажите, в чем может быть причина. Спасибо!
Цены берутся из справочника номенклатуры.
Ну это понятно, у меня оптовые и розничные цены заведены, установки цен сделаны, а цена не встает в обработке. Может где-то есть настройка, выбор типа цен или т.п.
{Форма.Форма.Форма(429)}: Ошибка при вызове метода контекста (Выполнить)
СписокШт=Запрос.Выполнить().Выгрузить();
по причине:
по причине:
{(4, 12)}: Поле не найдено «Штрихкоды.ПредставлениеШтрихкода»
Штрихкоды.<<?>>ПредставлениеШтрихкода
У меня такая же проблема. 1сbarcode.exe установлен. что делать?
Пожалуйста, кто-нибудь скиньте на мыло макет этикетки из конфига, у меня его деятель удалил! b_rom@inbox.ru
Нашел другую не плохую обработку, на мой взгляд, более гибкую, много макетов ценников, не сложно самому перекроить под себя: ПечатьЦенниковИЭтикетокПРОФ.
(48) stoun2010, ну так делись) раз нашел.
ПечатьЦенниковИЭтикетокПРОФ — на инфостаре есть!
(50) stoun2010, а ссылку?
{Форма.Форма.Форма(429)}: Ошибка при вызове метода контекста (Выполнить)
СписокШт=Запрос.Выполнить().Выгрузить();
по причине:
по причине:
{(4, 12)}: Поле не найдено «Штрихкоды.ПредставлениеШтрихкода»
Штрихкоды.
та же ошибка.. при коментировании этой строчки в запросе другая ошибка выскакивает : синтаксическая ошибка использования «ИЗ»
Есть ссылка на 1CBarCode.exe?
Здравствуйте!
Обработка отличная, но у меня при подборе товара, не заполняется поле Цены. Как быть и почему, что нужно подправить?
Заранее спасибо за ответ!
Добрый день!
При выборе значения (Установка цен номенклатуры) выдаёт (Поле объекта не обнаружено (количество)).
Как исправить?
{ВнешняяОбработка.ПечатьЦенников.Форма.Форма.Форма(79)}: Ошибка при установке значения атрибута контекста (РазмерСтраницы)
Табл.РазмерСтраницы = РазмерЭтикетки;
по причине:
Несоответствие типов
Не как не могу понять что указывать в «РазмерЭтикетки»?
указываю 30*20 или 30х20 не подходит пишет ошибку при печати этикетки(