<?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.2.32 под 8.1 не печатает
«ВНИМАНИЕ!
не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(6,39)}: Поле не найдено
«СчетФактураВыданный.ДокументОснование» ПО
ПоступлениеТоваровУслуг.Ссылка =
<> СчетФактураВыданный.ДокументОснование»
Спасибо указание на ошибку — исправила.
Метод объекта не обнаружен (ОтветственныеЛицаОрганизаций) не печатает!!
(3) У тебя торговля?
В УПП и УТ разные названия методов, отличаются одной буквой. Можно в конфигураторе подправить.
Если не сложно,подскажи как??? У меня УТ
(5) Заходишь в конфигуратор — открываешь форму: в ней находишь строку «ОтветственныеЛицаОрганзаций» и букву «й» меняешь на «и». И все работает.
Не печатает ((( в 8.1. УПП 1.2.32.1
Значение не является значением объектного типа (Метаданные)
СтрокаТаблицы.Параметры.СчетФактура = СФ.СчетФактура.Метаданные().Синоним + » № «+СФ.СчетФактура.Номер+ » от «+СФ.СчетФактура.Дата;
Что нужно исправить?
(7) Странно — посмотри для этой накладной, для которой происходит затык структуру подчиненности документов.
У меня УПП 1,2,31,1 — все работает. на каждый из документов реализации выписана счет-фактура.
Классный акт, а для Бухгалтерии 2.0 как переделать?
Поддерживаю просьбу Asenka2. Очень хотелось бы такую форму для БП 2.0.
и я тоже хочу для БП 8.2!!! НУ пожаааалуйста! 😀
А для Комплексной автоматизации подойдет?
Хорошая форма, только почему то выдает сообщение
{ВнешняяОбработка.АктКорректировкаДолга.МодульОбъекта(198)}: Значение не является значением объектного типа (Метаданные)
СтрокаТаблицы.Параметры.СчетФактура = СФ.СчетФактура.Метаданные().Синоним + » № «+СФ.СчетФактура.Номер+ » от «+СФ.СчетФактура.Дата;
Как быть если входящие документы без счет фактуры (т.е. без НДС)?
(12) для комплексной автоматизации подойдет, там тот же принцип регистров используется.
(13) Если нету счет-фактуры … надо подумать. У меня точно всегда есть. попробую воспроизвести ситуацию.
Буду признателен, если внесете изменения. Очень понравилась форма, только применить не могу, т.к. не всегда формируется. Дело в том, что у вас НДС тоже сразу прописан, т.е. ситуация «Без НДС» не рассматривается в принципе. А сейчас сплошь и рядом все на УСН или на ЕНВД.
Встроенная форма, которую предлагает 1С, очень уж примитивна до нельзя, Ваша же просто отдушина для УПП, но в некоторых ситуациях не применима.
Поддерживаю просьбу Asenka2. Хотелось бы такую форму для БП 2.0.
исправили, доработали (реквизиты сторон и т.д.) и применяем, спасибо большое!
Очень полезная внешняя форма, но у меня при открытии вылетает ошибка. {ВнешняяОбработка.АктКорректировкаДолга.МодульОбъекта(198)}: Значение не является значением объектного типа (Метаданные)
СтрокаТаблицы.Параметры.СчетФактура = СФ.СчетФактура.Метаданные().Синоним + » № «+СФ.СчетФактура.Номер+ » от «+СФ.СчетФактура.Дата;
Причем в торговле пробывал, работает, заменил последние буквы. У меня УПП 1.3. И ситуацию бы без НДС как-нибудь бы разрешить, вообще шикарная форма была бы. Спасибо!
Поддержу, для БП 2.0 такую ищу. Спецы, может кто займется, если есть время и желание.
При выводе на печать ошибка:
{ВнешняяОбработка.КорректировкаДолга.МодульОбъекта(298)}: Значение не является значением объектного типа (Метаданные)
ОбластьМакета.Параметры.Документ2 = ТЗВЗ.Получить(б).СФ2.Метаданные().ПредставлениеОбъекта+» «+ТЗВЗ.Получить(б).СФ2.Номер+» от «+Формат(ТЗВЗ.Получить(б).СФ2.Дата, «ДЛФ=Д»);
Кто как поборол её?
(20) К сожалению основание в виде корректировки долга не обрабатывалось при написании формы.
Нехватает группировки по договорам.
Как черновик вполне себе.
Из крупных косяков — НДС всегда 18%, даже когда использованы иные ставки.
По мелочи:
1. много неоптимального кода, — например обращение к Метаданным документа для выведения синонима, при том что документ иного типа согласно тексту запроса туда прилететь не может в принципе, обращение к номеру и дате документа через ссылку, хотя без потерь для сложности можно выхватить в запросе парой строк выше.
2. Когда счет-фактура как отдельный документ не внесена выкидывает исключение при той же попытке получить метаданные от значения Null
3. жестко вбитый текст «г. Москва» совсем не радует пользователей из Калининграда.
4. Игнорируются поля «НомерВходящегоДокумента» и «ДатаВходящегоДокумента» в случае с поступлениями и входящими счет-фактурами
(23) форма делалась в 2010 году, для упп 1.2, там впомине половины полей не было