<?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='\
Спасибо! Очень нужная вещь! 🙂
При печати выдаёт ошибку:
Не удалось сформировать внешнюю печатную форму!
Преобразование значения к типу Булево не может быть выполнено
Что у нас не так?( я не программист, рядовой бухгалтер 🙂 ) А так нужна такая обработка. Заранее спасибо.
(2) Возможно в вашу конфигурацию вносились изменения?
Тип Булево может иметь два значения: «истина» или «ложь». Какое-то значение, которое изначально в конфигурации стоит под другим типом, изменено у вас с присвоением типа Булево. Вообще так нельзя сказать, надо смотреть саму конфу.
(2) А у Вас Приходная накладная (стандартная печатная форма) формируется?
Спасибо, всё заработало!
Спасибо! Очень нужная вещь!
Не работает.1С8 бух.ред.1,6. Файл не является внешней печатной формой для данной конфы
(7) Уточните, пожалуйста, полную версию редакции (дана в скобках в справке). Вообще работает на 1.6.25.5 и ниже.
(8) 1С:Предприятие 8.1 (8.1.15.14)
Бухгалтерия предприятия, редакция 1.6 (1.6.24.7)
(9) Должно работать.
(10) Так и пишет ошибку.А очень нужно
Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг)
👿
Полезная вещь. Еще бы печатную форму для счет-фактуры… никому не попадалась случайно?
Спасибо, обработка понравилась. Конвертировала под 8.2 и все. Почему-то параметры авторегистрации хоть и записались в табличную часть, но в документе кнопка не появилась. Пришлось вручную регистрировать. А так — все ОК.
Спасибо. Хорошая и полезная обработка. Работает как в 8.1 так и 8.2.
(15) 897897, Как у вас получилось её внедрить в 8.2, у меня ругается так: «Внешняя обработка не может быть прочитана текущей версией программы»
(2) monolit2, подскажите как вы решили проблему, у меня ту же ошибку выдает
Как у вас получилось её внедрить в 8.2, у меня ругается так: «Внешняя обработка не может быть прочитана текущей версией программы»
попробуй в конфигураторе открыть, должна конвертнуться
Спасибо, актуально
(18) MegaPoster, Спасибо большое, получилось конвертировать, но почему то так и осталась ошибка, которая выдавалась в 8.1 :((
Не удалось сформировать внешнюю печатную форму!
Преобразование значения к типу Булево не может быть выполнено
Случайно не знаете, как с этим бороться :))(конфигурация типовая)
Спасибо, пригодится в работе.
Как раз понадобилось для расчетов с поставщиками, сейчас бухгалтера набивают данный документ в Excel, что при количестве контрагентов болеее 200 делает этот процесс несколько затруднительным. Возможна ли работа в УПП без дополнительных доработок?
Конвертнула на 8.2 и все заработало! Отлично!
версия 1С:Предприятие 8.1 (8.1.13.41)
пишет
Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (СформироватьЗаголовокДокумента)
После конвертации в 8.2, подключилась. Работает. Плюсанул. Большое спасибо!