<?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='\
Спасибо большое! Мы решили с НГ перейти на восьмерку, и теперь многое приходится осваивать «на лету».
Я в Ваш счет добавила логотип нашего предприятия. Бухгалтерам понравилось, и клиенты тоже похвалили.
Еще раз спасибо.
а что значит «в одном каталоге»? т.е это так и оставлено внешним файлом, в справочник доп.обработок не подгружается?
Плюсанул, но Увы( не работает (УПП 1.3.6.2)
Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(19, 5)}: Неоднозначное поле «ЗаказПокупателя.Ссылка» <>ЗаказПокупателя.Ссылка = &ТекущийДокумент
Ответ на 2.
В «одном каталоге» означает на момент установки (подключения) внешней обработки. Дальше оно прописывается в 1С. Но честно говоря, не пробовал экспериментировать с тем где находится ПОТОМ графический файл. Просто столкнулся с проблемой, что при установке внешней обработки файл логотипа болтался совсем в другом месте и при печати счета он не появлялся. А когда положил их вместе и провел добавление внешней обработки, всё получилось. Поэтому и присоветовал СРАЗУ «ложить» логотип ВМЕСТЕ с внешней обработкой в одно место.
Ответ на 3.
Обработка писалась под 1С Предприятие 8.2 Проф. Бухгалтерия 2.0. Возможно какая-то несовместимость, но я в дебри не лазил. Программы или работает или не работает. Если она у кого-то работает без ошибок и всё нормально, то встает вопрос при каких условиях она НЕ работает. Но это надо вычислять.
Прошу подробнее описать процедуру добавления логотипа.
Прошу подробнее описать процедуру добавления логотипа.
1. Открываем Конфигуратор
2. Файл-Открыть-Выбрать скачанный файл внешней обработки- и нажать кнопку «Открыть»
3. В появившемся окне идем в Макеты и дважды кликаем по макету СчетЗаказ.
4. В появившемся макете отчета выбираем ячейку в которой приблизительно должен находиться рисунок-логотип
5. Меню Таблица-Рисунки-Картинка… в появившемся окне выбрать вкладку Из файла-Кнопку «Выбрать файл» найти свой файл логотипа и нажать Открыть
Лучше чтобы к этому моменту файл уже находился в папке рабочей базы с файлом внешней обработки или папке самой 1С (не принципиально). Главное чтобы с файлом внешней обработки в одном месте.
6. Сохранить-Ок
7. Появившийся логотип можем точно переместить в нужное место на макете, при необходимости можно его масштабировать.
8. Жмём иконку с диском «Сохранить (Ctrl+S)» и закрываем макет.
9. Сохраняем файл внешней обработки нажатием на иконку с диском «Сохранить (Ctrl+S)»
10. Закрыть конфигуратор.
Интересное решение!
Скачал, пойду смотреть, как в печатную форму выводятся графические файлы!
Спасибо!