<?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='\
Доброго времени!
Через файл-открыть, открывает.
При попытке добавить во внешние отчеты, ошибка:
Невозможно подключить дополнительный отчет из файла.
Возможно, он не подходит для этой версии программы.
Метод объекта не обнаружен (СведенияОВнешнейОбработке)
Проверяли на релизе 3.0.49.28 и 3.0.50.21
Спасибо
Доброе время! Отчет доработал . Теперь можно подключать как внешний отчет.
Ошибка на предОпределенный элемент справочника СтатьиДвиженияДенежныхСредств РозничнаяВыручка
В конфигураторе проверил, элемент есть. на другой базе запустил отчет — работает. Странно…
В типовой ошибка не обнаруживается. Поправил код , (отошел от привязки розничных продаж к элементу справочника статьи затрат). файл для скачивания обновил.
Спасибо все заработало, сейчас буду под себя его делать) Необходимо добавить вес в этот отчет (доп. реквизит). Для нужд производства нужно 2 ед.цы измерения
Жаль, что только по 41 счету себестоимость берет «ЦенаЗакупиБезНдс». Можно добавить 43 счет, чтобы так же себестоимость готовой продукции учитывалась при расчете «НаценкаЕдБезНдс» и «Рентабельность»??? Было бы очень хорошо!
Я посмотрю.
В отчет попадают проводки (Себестоимость продаж) ДТ 90 .02.1 — КТ любой корреспондирующий счет. 41, 43, 10 . Сейчас проверил. все работает.
Наменклатура написано в одном из вариантов
и не хватает отборов по номенклатуре и контрагентам.
Добрый день!
Отбор по номенклатуре и контрагентам устанавливается в настройках отчете . Вкладка «Отборы» добавить отбор. Выбираете контрагент или номенклатуру . Проверил работает.
(9) Ок. Исправлю.
(11) неудобно, что нужно выбирать значение = номенклатура, а только потом, выбирать саму номенклатуру.
Добрый день
1С:Предприятие 8.3 (8.3.12.1529) будет работать?
(14) Добрый день! Да, будет работать на 1С:Предприятие 8.3 (8.3.12.1529) проверил.
Отборы не то что не удобно, но и не всегда работает. Добавил контрагента. Приходится еще раз выбирать что именно мне нужно в значениях. Ладно выбрал, открыл. Потребовался договор, его нет, ладно попробую Документ.Договор. Открываю значения, нет выбора типа и видны ТОЛЬКО ДВА договора. Открыл (через изменить). Один договор одного контрагента, второй другого. В отчете таких нет. Откуда взял непонятно. Совсем выкинул отборы. Добавляю только договор. Вижу те же два договора. Никаких выборов типа нет, возможность выбрать другой договор, нет. Выбрал Документ.Грузополучатель, контрагенты открываются нормально, без вопросов о типе. Неудобно выбирать дважды контрагента и что за фокус с договорами. Посмотрите пожалуйста. В целом отчет нравится, но это здорово портит.
(16) Хорошо, посмотрю .
Добрый день. Заинтересовался вашим вариантом отчета. Можно ли его приобрести каки-либо привычным способом? (за рубли)?
Конфигурация 3.0.70.61. Могу забросить на карту
С ув.
Добрый день! Подскажите почему не считает со ставкой НДС20, НДС18 все показывает, а после перехода на НДС20 нет.
(19) с 24.06.2019 внесены изменения в алгоритм , ставка 20% корректно отражается в отчете.