<?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='\
У меня вопрос:
не ведутся взаиморасчёты по документам расчёта (то есть на 62-м только субконто контрагент и договор).
а разве такое когда-нибудь бывает?
(1) ildarovich, если это не риторический вопрос :), то вот скрин из БП 3.0
(2) ничего из этого скрина не понял. На мой взгляд, он показывает, что третье (документы взаиморасчетов) субконто на 62-м счете есть. Его нельзя отключить в настройках. Значит, взаиморасчеты по документам ведутся в БП всегда и отчет по ФИФО в этой конфигурации не нужен.
Вопрос не риторический. Я хотел свою разработку ускоренного ФИФО применить в БП, но решил, что там этот метод будет бесполезен, поскольку незакрытые отгрузки видны сразу из ОСВ по счету. А значит, просроченные долги определяются очень просто без всякого ФИФО.
Ну и лозунги на скриншоте абсолютно неуместны в контексте данного обсуждения.
(3) По моему можно отключить ведение взаиморасчетов в разрезе расчетных документов.
(4) CheBurator, в Бухгалтерии 2.0 и Бухгалтерии 3.0 такой возможности я не нашел.
(5) ildarovich, ведение взаиморасчётов в разрезе расчётных документов явно в БП не отключается. Это зависит от учётной политики организации, а именно от способа оценки стоимости МПЗ при выбытии (на закладке запасы). Там 2 варианта «по средней» и «ФИФО». Если ведётся «по средней», то 3-е субконто будет оставаться пустым при проведении документов.
Кстати в метаданных конфигурации изначально не заполнено 3-е субконто на 60-м и 62-м. Оно заполняется при создании новой базы и отключить его заполнение нельзя. По коду видно, что ранее это субконто заполнялось только если для любой из организаций выбран способ «ФИФО».
Отчёт писался для комплексной конфигурации 1.1.48.1 релиза. В базе 3-е субконто пустое. Кстати не смотря на то, что выбран способ «ФИФО»…
В общем для БП такой отчёт может понадобиться, если не ведётся учёт в разрезе расчётных документов (выбран способ учёта «по средней»).
(6) я еще проверю, но пока кажется, что способ оценки стоимости МПЗ при выбытии не должен влиять на проведение документов по 62-му счету.
Какая тут связь?
Теоретически это скорее относится к 10, 41, 43-му. Там тоже есть третье субконто. Которое может быть пустым при проведении по этим счетам, но не по 62-му.
Там это субконто всегда задействовано (не бывает пустым).
А то, что оно пустое в комплексной, легко объяснимо, так как там учет взаиморасчетов сделан на регистрах накопления и третье субконто не нужно.
Так что пока остаюсь при своем мнении — для типовых конфигураций бухгалтерий 2.0 и 3.0 отчет «взаиморасчеты по ФИФО» не нужен.
(7) ildarovich, действительно, вчера вечером уже смотрел, ошибся. Настройка в запасах никак не влияет на взаиморасчёты (это и логично). Так что, похоже вы правы, для типовых БП отчёт в этом виде не нужен.
Ещё раз повторюсь, делал для комплексной, причём для такой, где иначе отчёт написать было нельзя.
Вообще меня смутил этот код:
Показать
Эта процедура вызывается при записи учётной политики.
Выполняется процедура ОбщегоНазначения.ПрименитьПараметрыАналитикиРасчетов(Истина,)
Если СпособОценкиМПЗ = Перечисления.СпособыОценки.ФИФО
Ещё вспомнил немаловажный момент. Учёт на 62-м счёте в разрезе документов расчётов ведётся при условии корректно восстановленной последовательности документов.
Восстановление последовательности часто проводится лишь при закрытии месяцев. Следовательно данные в подобных отчётах могут постоянно меняться. При расчёте долга по ФИФО изменения в отчёте отражаются сразу, так как распределение оплат происходит каждый раз заново.
Так что даже при наличии 3-го субконто, отчёт имеет место быть.
Так же обнаружил ещё одну базу БП 2.0, где учёт по документам расчёта не ведётся.
Отчет работает как надо, спасибо. Применяю на СКАТе.
Замечания:
1) Если по документу просрочки еще нет, отрицательное число хорошо бы обнулить
2) Если задолженность отрицательная, можно было бы ее не показывать. Мы ведь дебиторку подразумеваем?
(у себя исправила)
Очень полезный отчет, работает замечательно. Большое спасибо.
Как вставить «Дней отсрочки» для БУ 2.0. Из справочника Договора не берется.
Для бухгалтерии 3.0 совсем не работает
Как я понял работает только от календарных дней отсрочки.А как же рабочие дни?
(15) olegale, да, только количество дней отсрочки. Для нужд многих клиентов этого достаточно.
Можете доработать. Использовать производственный календарь, который должен быть заполнен. Примеры на инфостарте есть.
Для 1С 8.2 Бухгалтерия предприятия, редакция 2.0 (2.0.65.7)
не подтягивается «Дней отсрочки»
как быть?
Возвраты каким образом отображаются в этом отчете?
Таблица не найдена : РегистрСведений.ЗначенияСвойствОбъектов
БП КОРП (3.0.49.28) 1С:Предприятие 8.3 (8.3.9.2233)
Как это исправить ??