<?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='\
Предлагаемое решение изменяет типовую конфу, хотя есть решения которые используют штатные функции современных типовых конфигураций 7.7.
http://infostart.ru/forum/read.php?21,16144
Например здесь находиться одно из таких решений:
Кстати, одна из удачных реализаций привязки изображений к объектам в базе реализована в типовой конфе 1С:Деньги.
(1) Полностью согласен, в своей конфигурации у меня через внешние печатные формы почти все делается…
А данная статья — в первую очередь как пример, «разжевывание» как это сделать…
(2) а в чем там «фишка» удачной реализации…?
Насчет «удачной», то я конечно немного загнул. 🙂
Но, в приниципе, довольно удобно, ИМХО.
Можно сделать всё изложенное, совсем не трогая стандартную конфу
и без ВК!!
Мде… Если рейтинг этой
Я балдею!!! А почему по табуляции срабатывает «Добавить комментарий!? 0_о
Хотел сказать, что совсем не удивлюсь, если рейтинг этой статьи будет 500 и выше 🙂 А что? Суть и «урок» предельно ясны, так что каждый может почувствовать себя гением:
Имя файла = код товара . bmp
Короче, оскудение нравов — налицо! Зря не назвал «Финт ушами с кодом товаров» 😉
Я вообще не понял прикола…
а… эта наверна автар от скуки пожестил …
ясен пень…
>// ДОБАВЛЕНО НЕТИПОВОЕ
>_сруЗагрузитьКартинку()
_ссуЗагрузитьКартинку() — может по приличнее бы было ;)))))
Аркадий, жжош!!!! )))))
а у меня чето не выходит. я не волшебник и только учусь, и не выходит
Что-то подобное реализовано тут:
http://infostart.ru/projects/1528/
А тут в доках:
http://infostart.ru/projects/1527/
2Venger: да, схожие задачи порождают схожие решения, как правило… Целью данной статьи были пошаговые инструкции одного из методов привязки номенклатуры…
Сhe Burashka, если ты к своему просмотру изображений прикрутишь еще эту вещьhttp://infostart.ru/projects/1747/ то круче решения для 1С 7.7 не найдешь наверное. 🙂 А вот вопрос о том, как хранить картинки — спорный, т.к. в некоторых случаях (УРБД) картинки лучше хранить в базе, а не в файлах.
2Maljaev: cgc, за ценныую ссылку.. прошла мимо меня
Обмен при УРБД, обработка FTP — обмена, когда надо обновит каталог картинок! А хранить картинки на форме при наличии 22 000 наименований позиций, база может стать неподъемной!
невтыкнул… это про что? тут как раз картинки нигде в базе не храняться…
Все хорошо, _no.bmp отображается, но вот только не понятно как загружать картинку для товара?
(24) «…в качестве имени картинки используется код номенклатуры из справочника товаров.»
«…изображения товаров будем хранить в отдельной папочке типа КаталогИБIMAGES.DIR»
…все сделала как написано..но что то не получаеся????? папка IMAGE.DIR должна содержать файл no.bmp?????
Вылазиет ошибка
_имТовар.Загрузить(_глПутьКартинок+»_no.bmp»);
{Справочник.Номенклатура.Форма.Модуль(14)}: Общая файловая ошибка при доступе к C:Программы1СБазыОсновнаяIMAGE.DIR\_no.bmp
(26) Вам же полный путь до файла картинки написан
«C:Программы1СБазыОсновнаяIMAGE.DIR\_no.bmp»
соответственно файло «_no.bmp «
А что надо сделать, чтобы картинки выводились не по Коду, а по Артикулу?
Простите, может это глупый вопрос, но у меня не выходит. С кодом все работает отлично, а с Артикулом нет 😥
Сделал все как написано, скинул пару файлов *.png (00000047.png) в папку IMAGE.DIR но при открытии данных кодов в справочнике номенклатуры вывод картинку _no.bmp
(29) Формат PNG штатно 7.7 не поддерживается, в примере вставлен, так сказать, на будущее. Так что картинки в формате jpg размещать придется… Если очень критично и до зарезу надо в png — то придется допрограммить немного…
разместил в jpg, все равно отображается только пустая картинка (_no.bmp)
не могу понять 😳 , виставь плиз весь прогр. модуль.
(32) что именно непонятно?
(33) при исп. примера появляются ошибки, виставь плиз весь код
код ошибки? — скорее всего недословно скопипастили…
Не могли бы ответить копипастеру о том, как можно вывести в печати прайс-листа эти картинки?
(36) как обычно.. вставляешь объект «картинка» и при выводе назначаешь на объект текущую картинку.. что не получается?
Я слабый специалист, как вставить картинку в печатную форму, чтобы её вывело на печать? нельзя ли поподробнее …
P.S. Ваш метод понравился и желание большое настроить для использования у себя, хотелось бы самому…
создаешь печатную форму типа
кладешь в печатную форму в ячейку объект «картинка», растягиваешь под нужный «типовой» размер, на обьекте правой кнопкой мыши, свойства, пишешь в закладке «Текст» так:
ИзображениеЗагрузить(Таб.ТекущийОбъект)
.
в коде пишешь функцию:
.
перед выводом секции печатной формы определяешь содержание глобальной переменной ТекущийФайлС — должна содержать полный путь к файлу изображения.
Забыл уточнить, применяю для ТиС 960
Так вот вопрос и возникает как определить перед печатью путь к файлу картинки,
ТекущийФайлС= _глПутьКартинок+ТекЭлем.Код+_глИерархияТиповКартинок.Получить(«»+_ТипКартинки<<?>>);
{}: Переменная не определена (_ТипКартинки)
При проверке модуля обнаружены синтаксические ошибки!
Понимаю что неправильно делаю что-то, а не могу понять что…
(40) тебе система написала: переменная не определена. ищи
Спасибо, все получилось…
Спасибо, тема супер, оч помогла!!!
Что-то не соображаю, я новечек сдесь, и не представляю как описть эту функцию для отображения в подборе!! Оч буду рад в Помощи!!
Всё сделал, получилось очень красиво
вот только сохраненный прайс с картинками при открытии картинку искажает
Yuvilon,
ты сделал то что хотел?
ребят, сделал все как на картинках но почему то ничегоне получилось( пишет одни ошибки.
Инструкция работает реально, провозился весь день… были непонятные моменты, т.к. я чайник в 1с’е (а хочется, что бы удобно было работать и мозги на всякую ерунду не парить, ни себе — ни другим).
Прошу продолжения банкета на предмет прикрепления нескольких изображений.
P.S. — это вообще вторая инструкция, которая запустилась и заработала; и нормально заработала только эта… возможно, платные модули, но честно говоря — уже натыкался на то, что и за деньги получаешь дохлого кота в мешке и ничего не вернешь. вставил в ТиС 7.7
Для программера и знатоков — проблем конечно нет, но для средних пользователей с «интуицией» вполне; для новичков — конечно непонятно будет что куда вставлять.
Спасибо.
Как скачать можно это решение?
Вопрос. Тут описано как сохранить фото. А есть ли обратный способ, то есть загрузить в каталог IMAGE.DIR? Спасибо.
(49) меню файл броузера, сохранить как: «[ОБУЧАЛОВКА] Каким макаром к номенклатуре привязать картинку.htm»
(50) есть. Смотри мою обраьотку распихивания картинок по номенклатуре.
http://infostart.ru/public/15239/
А описать всего одну процедуру в публику, религия не позволяет?!..
(53) видимо, не позволяет…
Нравится самобытность автора. Я не намекаю на неграммотность. Сам люблю оригинальные решения. Данный топик и приведенный код обилует подобными решениями. Подчеркнул для себя много полезного. Спасибо!
(55) ну хоть кому-то еще 7.7 пригодилась…
у меня этих всяких форм/обработок по манипуляции с картинками — вагон и тележка.
есть даже подбор в документ поступления не по списку товаров, а по картинкам…