<?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='\
А почему для скачки предоставлено два файла? Один, похоже, erf-файл — отчет. А во втором что? Довесок к первому?
(1) b1958,
Основной файл (Материальный отчет бух 3.0.erf), второй не смог удалить.
Хотелось бы видеть отбор по организациям.
Все красиво работает, но почему-то не могу подключить к дополнительным отчетам и обработкам. Открываю через файл.
Необходимо в модуле объекта добавить функцию
Показать
При добавлении Функции куча ошибок. Не получается скопировать-вставить. Очень бы хотелось чтоб работало при добавлении в дополнительные отчеты.
Проблема тут..
строкаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = «1»;
строкаКоманды.Представление = «команда «»Материальный отчет»» (ОткрытиеФормы)»;
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = «ОткрытиеФормы»;
Как корректно написать?
(7) ppotap, исправил добавил возможность регистрации в программе
(7) ppotap,
должно быть так..
Проблема тут..
строкаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = «1»;
строкаКоманды.Представление = «команда «»Материальный отчет»» (ОткрытиеФормы)»;
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = «ОткрытиеФормы»;
А за повторную скачку опять снимет Sm ???
Все равно отчет не добавляется. Ругается на ХранилищеВариантов
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2277)}: Поле объекта не обнаружено (ХранилищеВариантов)
Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
(12) 1c-kt, Сейчас только что скачал и проверил отчет все нормально подключается.
{ОбщаяФорма.ФормаОтчета.Форма(1548)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
по причине:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(24, 80)}: Не задано значение параметра «Счет»
РегистрБухгалтерии.Хозрасчетный.Ос
{ОбщаяФорма.ФормаОтчета.Форма(1548)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
по причине:
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(25, 78)}: Не задано значение параметра «ТипЦен»
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = <<
как бы за что 1 доллар?
(16) Slovar, Эта ошибка появляется, если не выбрали тип цен или можно просто поставить галочку тип цен, аналогичная ситуация со счетом.
это понятно…но при указании всего что Вы указали, результат пустая таблица.
Зачем вообще указание типов цен?
простите за тавтологию
(19) Slovar, Изменил немножко отчет ставить галочку тип цен и места хранения необязательно, но если стоить галочка места хранения , тогда обязательно нужно выбрать склад иначе отчет пустой будет
Отбор по мат.отв.лицу есть?
(21) lesna, Добавил в отчет (Материалный отчет. За основу взят запрос ОСВ посчету) отбор по МОЛ
сторнирующие проводки учитываются этим отчетом как приходы и расходы?
(23) Brawler, все движение.
Очень нужный отчет, но обновила до БП 3.0.30.12 и выходит ошибка при открытии
ОбщаяФорма.ФормаОТчета.Форма(144,3):Недостаточно фактических параметров(БыстрыеНастрйокиЗаполнить).. Если исправите, буду очень балгодарна
(25) JLaikova, Обновите платформу
(26) AT_Kam, платформа стоит 8.3.4.389
а релиз был 27 — все работало, как поставила 3.0.30.12.. так ошибка.. В этом релизе интерфейс визуально сильно отличается
(28) JLaikova, У меня тоже самое было пока не обновил платформу до 8.3.4.437 из-за этого сделал материальный отчет без СКД, вым отправил ссылку.
У вас какая платформа?
(29) AT_Kam, Платформа 8.3.4.389
(29) AT_Kam, За ссылку отдельное спасибо! Без СКД отчет намного лучше и цена есть и период стандартный формируется, не надо с временем мудрить..
Скачал оба отчета. Какой-то развод. Во-первых то что на картинке в описании и реально отличается.Во-вторых нет выбора нескольких счетов. В-третьих отчет не формирует ничего, он пустой. ОСВ результаты дает, а отчет нет. У меня стоит Бухгалтерия 3.0.30.14 и платформа 8.3.4.437. Автор прошу Вашего ответа.
Ну и дайте ссылку на отчет без СКД
(33) Старый, отправил
(34) AT_Kam, Спасибо получил. Пока особо не разбирался, но сразу видно если галку ставлю галку по всем складам, то все хорошо, если выбираю какой-то склад отчет пустой. Оборотно-сальдовая ведомость не пустая цифры есть
Если в Свойствах отчета (Действия-Свойства) заполнить Хранилище вариантов, то отчет можно будет разместить на панели отчетов
(24) AT_Kam, я имел ввиду что сторно прихода должно трактоваться в отчете как расход и пихаться в колонку расход, обратная ситуация для сторно расхода, должно быть как приход на склад. Если в лоб учитывать просто обороты, то гандурас получается, когда есть сторно проводки.
Ранее скачивал ваш отчет. После очередного обновления у Бухгалтеров у которых стоит стандартная роль «Бухгалтер» при попытке открать отчет выдается сообщение «Недостаточно прав»
БП 3.0.33.20 СКД версия отчета, полет нормальный,примите благодарности
poctak, в колонке «Цена» — какая цена — поступления или средняя?
(40) M.Nikitin,
в отчете «МатериальныйОтчет3МОЛ» цена средняя
отчет который без СКД косячит (меньше показывает), если на одном складе одна номенклатура висит на разных субсчетах… это ошибка бухгалтера конечно, но все же…
(42) kauksi, Попробуйте вот это прикрепленный файл.