<?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='\
А мне понравился 😀 , Только вот параметр УчитыватьКорректировки я бы вынес пользователю.
Мне показалось логичным учитывать корректировки всегда — это позволяет при существующем закрытии месяца правильно учитывать себестоимость товаров/продукции. Если есть практическая необходимость сделать этот параметр настраиваемым, просьба описать в комментариях в каких случаях это может быть полезно — я прикреплю в комментариях редакцию отчета с такой возможностью.
Можно было бы вынести параметр: учитывать или не учитывать закрытие месяца.
Пожалуй лучшее решение из бесплатных аналогов. Автору плюс.
Что-то у меня странное скачалось. Файл «анализ» без расширения. Я попробовала ему присвоить расширение epf, он не открывется. zip та же история. Подскажите, пожалуйста, что делать?
(5) LN,
Могу предположить, что у вас работает фаервол, который меняет расширения файлов на безопасные.
Т.к. это внешний отчет, то расширение файла должно быть erf. Попробуйте установить такое расширение.
Спасибо. Теперь открылся. Век живи, век учись.
По поводу работы отчета. Никто не сталкивался с ситуацией, когда в БУ прибыль считается правильно, а в НУ отчёт показывает какие-то дикие цифры?
(8) segen, У меня подобной ситуации не было. А какие именно колонки отображают такие цифры по БУ? Пробовали смотреть ОСВ данные НУ, там все нормально отображается?
(9)
У меня ситуация такая: ВыручкаНУ и СебестоимостьНУ отображает реальные цифры, но вот разница этих показателей, т.е. ВыручкаНУ- СебестоимостьНУ показывает какие-то фантастические цифры. Если будет необходимость, могу выслать скриншот.
(10) segen,
Если можно — прикрепите скриншот здесь, в комментариях. Т.е. неправильные данные отображаются в колонке «Валовая прибыль НУ»?
(11)
Т.е. неправильные данные отображаются в колонке «Валовая прибыль НУ»?
Поняли правильно.
Еще пожелание автору: добавить возможность детализации по номенклатуре, тогда отчет вообще стал бы волшебным.
только у меня себестоимость нереально считает?
(12) segen,
Попробуйте использовать редакцию отчета, прикрепленную к данному комментарию.
(13) segen,
Я согласен, что вывод анализа продаж был бы удобнее в разрезе конкретной номенклатуры. Но это невозможно по причине следующих ограничений типовой конфигурации:
1. В стандартном плане счетов не предусмотрено субконто «Номенклатура» на счете «Себестоимость продаж» (90.02). В результате получить корректную себестоимость(с учетом корректировок, которые делает закрытие месяца) не представляется возможным.
2. Также отсутствует аналогичное субконто на счете «Налог на добавленную стоимость» (90.03).
Таким образом отчет позволяет получить корректные данные по себестоимости и суммам НДС, но за это приходится расплачиваться обобщенной информацией в разрезе номенклатурных групп, а не номенклатуры.
(14) dakinder,
Сам отчет не считает себестоимость — это делает документ закрытия месяца. Отчет только выводит информацию об уже посчитанной себестоимости, учитывая корректировки, которые сделало закрытие. Можно построить ОСВ по счету себестоимости продаж (90.02) и проверить суммовые обороты за тот же период, за который строился отчет по анализу продаж.
Попробуйте использовать редакцию отчета, прикрепленную к данному комментарию.
Эта версия отчета прибыль по налоговому учету считает правильно, спасибо.
(18) segen,
Пожалуйста.
Лучший отчет!!! Просмотрел несколько аналогов только время потратил(((
А чтоб еще обработка учитывала продажи на счете 91 можно сделать?
(24) RPV,
Нет, в данном отчете нельзя учитывать данные по продажам по 91 счету, т.к. аналитика данного счета не содержит номенклатурную группу. Также в стандартном плане счетов отсутствуют отдельные субсчета на 91 счете для учета НДС и себестоимости продаж.
Учет продаж по 91 счету нужен Вам для продаж материалов с 10 счета или для анализа оказания услуг?
(25)
для анализа продаж материалов с 91 счета
(26) RPV,
К сожалению в данном отчете вывести информацию по продажам материалов не представляется возможным ввиду причин, описанных выше. Код данного отчета открыт для внесения изменений, поэтому можно создать отдельный отчет на базе текущего, который будет анализировать продажи материалов в разрезе номенклатуры (для этого можно использовать субконто «Реализуемые активы» на счетах прочих доходов/расходов). При этом потеряется возможность вычленить НДС, т.к. в стандартном плане счетов не предусмотрен отдельный субсчет для такого учета.
файл в публикации заменен на тот, что в (15) ?
(28) Уже не помню, лучше использовать вариант из комментария (15).
В ближайшее время планирую выложить версию отчета для третьей редакции бухгалтерии, проведу ревизию приложенных файлов.
корректировка не учитывается. См. на скриншоте: документом Реализация списано 6 руб., данные по корректировке стоимости списания в отчет не попадают
(30) Максим2, такая ситуация по всем номенклатурным группам или по некоторым сумма корректировки отражается корректно? Я правильно понял из скриншота, что в настройках параметров учета установлено ведение складского учета только в количественном выражении?
(31)
Такая ситуация по всем ном. группам, включая товары, не только по продукции. Учет по складам ведется только по количеству. Получается в этой настройке причина отсутствия корректировок в отчете?
(32) Максим2, да думаю причина такого поведения отчета в этом. При расчете суммы корректировки учитывается аналитика с которой выполняется корректировка (номенклатура, склад, партия). Т.е. при реализации субконто «Склад» заполнено, а при корректировке нет.
Думаю, что эту ситуацию можно устранить, проанализировав признак суммового учета у данного субконто и изменив текст запроса. К сожалению, в данный момент не имею свободного времени, чтобы этим заняться. Если у вас есть возможность, то можете подкорректировать текст запроса, чтобы он работал при ваших настройках учета (если не получится — пишите в личку, постараюсь помочь).
simargle,добрый день! попытался сформировать отчет, но вот то, что выручка от оказания услуг(товаров нет) не попадает в отчет, это факт!! Хотя автор и указал, что отчет формируется на основании документов РТиУ. Отсюда вытекает вопрос автору разработки,а можно сделать так ,чтобы в отчет попадали и документы РТиУ,где только услуги??
(34) geffest, добрый день.
Да, все верно — отчет строится только по продажам товаров/продукции (в одном из комментариев выше обсуждался этот момент).
Отчет строится не по документам, а по регистру бухгалтерии (в частности по счету «Себестоимость продаж»). Возможно в текст описания закралась ошибка — напишите где написано про реализации — я поправлю.
Доработка данного отчета в части услуг не планируется. Кроме того, отчет строится по номенклатурным группам, а вам скорее всего нужна аналитика номенклатуры.
Если цель — просто вывести услуги основываясь на данных документа «Реализация товаров и услуг», то можно воспользоваться типовым универсальным отчетом (по регистрам, справочникам, документам). В данном отчете можно выбрать все услуги из реализаций с произвольными отборами. Примеры настройки универсального отчета можно посмотреть например в этой публикации —http://infostart.ru/public/177927/
ОШИБКА В СХЕМЕ КОМПОНОВКИ ДАННЫХ!!!
ЧТО ДЕЛАТЬ???
(36) yanker,
напишите полную версию конфигурации в которой вы пытаетесь открыть отчет.