<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Серега, за название +1000 :)))))))))))))))))))))))))))
За название +.
Не, название можно сделать еще однозначней.
Просмотр и установка привязки товар-изображение (за лупой).
А если убрать скобки и пробел в них, то разработка безоговорчный номинант конкурса на лучшее название.
Прочитал название — хохотнул…
А где кнопка с лупой? 🙂 +1
Можно бы расширить список форматов, не только .jpg
🙂
для бесплатного — неплохо
для «за 1000р» — дерьмо
(5) бесплатно, т.е. ДАРОМ — то что есть.
(6) скажем так — я не видел аналогичного ни за за 2000 руб., ни за 500, ни за 1000…
а цену я устанавливаю просто: новизна разработки (т.е. доступность аналогов) + потраченное мною время…
да ладно тебе Че. как нет аналогов??? Если ты имеешь ввиду способ идентификации картинки по элементу, то да, конечно.
Такой подход не прокатит для УРБД и иже сним. Там картинки должны хранится в самой базе. Есть несколько компонент, которые реализуют это (абсолютно бесплатно)
(8) Почему это для УРБД картинки должны храниться в базе? не вижу необходимости в этом…
Единственное, при сливе картинок из филиалов надо обеспечить уникальность имен файлов для каждого филиала — добавляем в имя файла префикс ИБ
..и вообще — там где есть УРБД, как правило, есть свой программер — эта обработка (если он ее заюзает) — будет только как «мясо», а не как готовый бифштекс…
(9) ну и как ты себе представляешь обмен? проходимся по товарам, цепляем картинки, отправляем изменения и каритнки, распихиваем картинки???
(10) читаем выше
«Несколько лично моих постулатов:
— изображения товаров не являются необходимым условием торговли/учета товаров;»
..поэтому нефиг их гонять туда-сюда… там где надо — ну и пусть лежат в филиалах… нафига они в центре?
.. если сильно нужны — ради бога, как справедливо отмечено вами ранее, — организуем хранение унутри базы…
(10),(11) унутри не надо. Обмен «снаружи» можно сделать проще, исходя из того, что «цеплять» к базе картинки не нужно — они должны просто быть в наличии в каталоге, обработка их сама найдет, т.е. решение — синхронизировать удаленные каталоги с «превосходством» центрального.
— шлем из центра обновленные и новые с командой «замещать все»
— шлем обратно с периферии с командой «замещать старые».
Ну, а чтобы каждый раз не перебирать все файлы каталога, а по номенклатуре их м.б. много — можно в маску имени добавить формат даты, и перебирать с маской «???????»+ТекущаяДата(), соответственно, для перебора «имиджей» одной номенклатуры используем уже маску на дату.
(12) Ну и я про то же — докрутить как нужно самому…
(6) не обижай Серегу, он хороший……. девелопер 😉
блин, и главное — 40 чел качнули и хоть бы один отозвался… плохо или хорошо…
blow job for image назови, еще плюс поставлю
(15) Да как бы помягче — обыкновенно.
А вот хранить картинки в базе это интереснее. Задача несложная, но эффектная.
А Чебур спец из обычного сделать тоже обычное, но не очень. Андрей, мы с тобой механики (!), а с Чебуром мы горнолыжники (!).
(16) Так именно я ж и сделал — именно чтоб обыкновенно, без выкрутасов, по принципу «поставил — юзай»… сегодня положу еще и РМ сборщика, для которого эта прога собственно является подготовителоьной, как я это упоминал…
картинки в базе хранить — да, интересно, решаемо… но смысл… — база рухнет — рухнут и картинки.. а так — вот они… отдельно лежат… бэкапы же до сих пор не все делают…
А за постоянный топик с Чебура отказ от Far-а ;)))
Я тебя тОплю, все время вверху, кричи «грехи осознал, буду юзать Тотал и плагин к нему Абадонновский» 😉
(16)(20) Пробовали уже хранить в базе.
1. База пухнет до невообразимых размеров, тем более если к номенклатуре 2 и более картинок привинчены.
2. Чебур прав — база рухнула считай пропало ( конечно есть бэкапы, но сливать в архив такую туеву хучу гигов запаришься).
>база рухнула считай пропало
мляяя, о чём вы говорите??? Если база рухнула, а у вас нет бэкапов, то тут уже не до картинок номенклатуры. Или не так?
конечно есть бэкапы, но сливать в архив такую туеву хучу гигов запаришься
Отвечу вашими же методами: а вдруг каталог с картинками упадёт? а у вас нет их бэкапов? что тогда? )))
И вообще это же просто привязка картинок к номенклатуре — привязал, а там делай с файлом что хочешь — хоть ссылку храни на него, хоть в базу засовывай.
Тогда просто вместо картинки типа «NO Photo. Sorry!». Хе-хе
(22) Это смотря КАКИЕ картинки и смотря КАК хранить.
Сдуру можно и [вырезано цензурой] сломать.
Ну бросте вы. Что касается элементанраных действий, Чебур всегда молодец. У него проколов не бывает. Он самый лучший девелопер и самый лучший beta-tester из всех, мне знакомых. Far его погубит, а так он находится под протекцией Abadonna, если трогать — начинать с меня! Беру Чеба под своё крыло, кто (хотел ведь напписать!) недооволегн — писать мне
Илите флеймить в форум!
просьба высказываться по сути обработки!
(22)1. База пухнет до невообразимых размеров, тем более если к номенклатуре 2 и более картинок привинчены.
А бывает и 5…
А кто мешает их хранить в отдельной скульной базе? Собственно это сейчас планирую с переходом на скуль (на стадии осмысления): будет основная база и парочка вспомогательных. На ДБФах, конечно такое не выкрутишь…
И еще: к каждому товару не 5 (к примеру) картинок (у меня сертификаты в виде графики), а только 3, если больше — однозначно из расчета 2 картинки на лист.
А что касается собственно темы: у Чебура всегда оббалденные интерфейсы — ничего лишнего и аляповатистого, но максимум удобств для юзеров. Кстати, а где обещанный скрин сканирования сертификатов?…
(29) у меня сертификаты качетсва, гигенические сертификаты и отказные письма храняться аналогичным образом — в карточке только номер, который однозначно определяет изображение, изображения — в папочке отдельно от базы…
Для швейника организовал аналогичное еще лет 5 назад. Хранит 10000 картинок, все хорошо. В момент привязки картинки изодражение пропорциональное, без искажений… Но как только начинается следующий цикл просмотра при оьбращении к карточке номенклатуры: «Стройные дамы превращаются в толстушек и наоборот..» Вомущается гад! На примере у Che искажение тоже присутствует. Может в 1С кто умеет подгонять динамически окно по картинку… Просто сильно этой проблеммой не занимался, а тут вдруг — родственные души… Подскажите плз…
(32) >Может в 1С кто умеет подгонять динамически окно по картинку…
это может делать FormEx. Класс «РасширениеФормы», свойства на чтение и запись:
Высота / Height
Ширина / Width
(33) + или делаешь окно «типа портрет», на нем — картинка, а дальше — штатно
РежимРисования(<?>);
Синтаксис:
РежимРисования(<Режим>)
Назначение:
Установить режим рисования картинки.
Возвращает:
Текущее числовое значение режима рисования картинки (на момент до исполнения метода).
Параметры:
<Режим> -:
1 — растягивать;
2 — рисовать по центру с оригинальным размером;
3 — рисовать, сохраняя оригинальное соотношение размеров.
Подробнее см. в документации, глава »Работа с Картинками»
Пример смотрите в конфе 1C ДЕНЬГИ
Обработка — даром, за название — 1000
Cnfylfhnyfz конфа 1с:Деньги давненько имеет в своем арсенале вызов изображения, так что велосипед батенька, велосипед!
(37) Что, позволяет привязывать по аналогичному алгоритму? Предоставляет такой же интерфейс?
Неплохо придумано! Молодец!
Можно выводить весть товар и которого нет на складе ,скажем по галочке «Все товары» ?
Да, название того стОит! Нарочито-нецензурное пополам с неприличным.
(37) Ну что вы все так до этого велосипеда докопались? Если бы его не изобретали — так бы и ездили на том монстре с огромными колесами. А сейчас, однако, и горные, и т.д….
Интересный вариант, а как с ним ознакомиться. Давно ищу, что нибудь для 1С, что бы менеджеры могли выписывая счета видеть, что продают
Ознакомиться и использовать можно просто: скачать с этой страницы и пользоваться. Если интересует «встраивание» картинок в процесс продажи — это отдельная маленькая задачка
Как сделать так чтобы во врема подажи в ТиС 9.2 по документам Чек ККМ; Реализация; Реализация(розница); В справочниках номенклатура и т.д. когда водишь курсором по позициям то же появлялась картинка???
Как в 8-ке.
(44) примерно как и здесь…
Интересная статья. По поводу привязывания к процессу продажи: есть ли смысл в форму подбора номенклатуры добавить картинку, чтобы менеджер при выписке счета видел картинку ,например?
(46) Имхо картинки в процессе именно подбора номенклатуры — необходимости нет… чем картинка поможет манагеру…? если он не знает номенклатуры — то и картинки не помогут… В специфических случаях надо рассматривать отдельно
(47) Прекрасная идея, но использовать не возможно.
Идею с изображением товара можно применить, например, при продаже в помощь и менеджеру (для быстрого предложения товара) и покупателю (для выбора)
Это и есть помощь менеджеру, таким образом, можно ознакомить весь персонал, с новым товаром, и очень даже изображение поможет, если товар не известен.
Номенклатуру в обработке искать можно Ctrl+F3 > поиск > Справочник номенклатуры > F7… быстрее, если расположена по алфавиту.
Да и изображение получается корявое.
Жаль
Идея отличная +
Но без «маленьких задач» …
Да, у меня, например, ассортимент идет большой и ротация товара постоянная.
http://infostart.ru/blogs/330/
насчет
> Да и изображение получается корявое. Жаль
— не понял.. что плохо/не устраивает?
.
данная обработочка для установки привязки.
сама работа с изображениями в карточке товара описана здесь:
.
при желании применить данный подход к раположению картинки на форме списка — нужны незначительные модификации
у меня просмотр картинки в любых списках товаров происходит по Ф4 — потому что постонно держать картинку на форме в моем случае — нецелесообразно
(49) Например фото: диск алмазный (круглый) — в миниатюре всё нормально, а в текущем изображении товара — эллипс (круг вытянут вверх, низ), к стати заметил, если вставлять фото в — не ландшафт, а портрет, то проблема уходит.
Вытянуты так же и фото квадратной формы.
За ссылку по привязке картинки благодарю, попробую прикрутить сам (опыта нет), но описание на первый взгляд доступное.
(51) ну… обычно пропорции картинки не так критичны, поэтому картинка умолчательно масштабируется на все доступное поле… можно смасштабировать с соблюдением пропорций…
Советую посмотреть вот это:http://infostart.ru/projects/2188/
(53)Посмотрел, отмасштабировал, давлю на кнопку «выбрать» > выдаёт окно: «Нет данных о том, в какое место выбрать указанную картинку…
В выборе отказано!»
Т.е. пардон, как сохранить?
(54) данный диалог просмотра/масштабирования может:
http://infostart.ru/projects/2439/
— вызываться интерактивно пользовтелем самостоятельно: тогда картинку выбранную некуда «передавать» (вам хочется сохранить, а кому-то захочеться распечатать — на всех не угодишь…);
— вызываться программно из какой-нибудь «родительской» обработки, тогда при выборе «выбранная» картинка возвращается/передается в родлительскую обработку и та уже делает что нужно программисту/юзеру — сохраняет в другую папку, отправляет по почте, печтатет и т.д.
..
возможно для ваших нужд (пока мне непонятно каких) следует воспользоваться вот этим:
(55) «воспользоваться вот этим:http://infostart.ru/projects/2439/ »
Воспользовался, так же, нет возможности сохранить — при нажатии кнопки «Выбрать текущее изображение и закрыть форму» — ничего видимого не происходит, во всяком случае, форма не закрывается. Этот вопрос скорей Малееву Александру.
А нужды наши — солидарны с (44)
(56) читаем (49) последнее предложение
(57) Отражённые здесь:http://infostart.ru/blogs/330/ или несколько иначе?
практически 1 в 1…
убегаю домой буду на связи +1.5 часа
(52) Странно, как пропорции предлагаемого, тем более «обычно», могут быть не критичны, тогда и предложения не эффективны, на сколько некритичны.
Как изменить все доступное поле, на которое картинка умолчательно масштабируется.
> Как изменить все доступное поле, на которое картинка умолчательно масштабируется.
— не имеет смысла, потому что другие картинки будут криво… надо просто в коде при назначении картинки на предназначенное ей место задать соответсвующий режим пропроциональности…
..
сорри, но более подробное преподавание основ и приемов/методов программирования не входит в мои ближайшие планы… 😉 Если вам надо «докрутить» — обратитесь в раздел «заказы»..
клевая прога очень помогла, спасибо автору!!!!!(=
Спасибо то что нужно !
Отлично, применил на практике
спасибо
(66) Пожалуйста