<?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='\
И как она работает?
Убирает из движений всё, относящееся к задолженности клиента перед нашей организацией, и ставит флаг ручной корректировки.
Выложена как образец работы с открытой формой объекта при наличии только ссылки.
У меня не работает(((
Что именно не работает? Версия конфигурации?
Не очищает проводки! Ни бухгалтерски ни регистры по ндс. Подключил как внешнюю печатную форму, создал документ реализации, запустил. Вне зависимости от ответа ДА или НЕТ никаких действий не происходит. У меня Элит-Строительство. Бухгалтерский учет, редакция 2.1 (2.1.5.1) — последняя. Но это врядли имеет значение, тк все документы реализации не отличаются от типовых.
На самом деле у меня стоит задача оставить только бухгалтерские проводки по реализации, а все остальные регистры для данного документа очистить.
У меня нет доступа к такой конигурации, ничем помочь не могу, смотрите сами. В типовой бухии у нас всё работает. Учтите, что в модуле «зашито» условие на определённое субконто: «Если ТипЗнч(стро.СубконтоКт1)=Тип(«СправочникСсылка.ПрочиеДоходыИРасходы»)
И ЗначениеЗаполнено(стро.СубконтоКт1) И НРег(стро.СубконтоКт1.Наименование)=»безвозмездная передача» Тогда»
У меня все тоже самое, что и у (5):
Не очищает проводки! Ни бухгалтерски ни регистры по ндс. Подключил как внешнюю печатную форму, создал документ реализации, запустил. Вне зависимости от ответа ДА или НЕТ никаких действий не происходит.
Конфигурация БП 1.6.14.4
Смотрите внимательнее, он очищает только те суммы, что по субконто с наименованием «Безвозмездная передача» из справочника «Прочие доходы и расходы».
(8) в табличную часть включил материал со счета 10.09, счет учета доходов
91.01 субконто ставил и «Доходы (расходы), связанные с безвозмездным получением имущества, работ, услуг или имущественных прав» и «Доходы (расходы), связанные с безвозмездной реализацией имущества, работ, услуг или имущественных прав». Результат все тот же, см. (5), (7), либо надо более конкретную инструкцию.
(9) У субконто наименование «Безвозмездная передача» или какое? Завязано специально по просьбе наших бухов на наименование.
(10) После того, как я создал новый доход/расход с наименованием «Безвозмездная передача», то, наконец, все получилось.
Только об этом существенном условии надо написать в описании (в шапке), т.к. есть наименование дохода/расхода, которое, порой, каждый пишет как хочет, а есть у каждрого наименования дохода/расхода «Вид прочих доходов и расходов», которые предлагает фирма 1С, которые едины для всех, встроены в ВК, их нельзя изменить, и именно они используются (учитываются) при налогообложении и отражениии разных хоз. операций в учете. Посему, предложение, сделать привязку не к наменованию, которое у всех разное, а к виду прочих доходов и расходов, но и в любом случае указать это в описании к обработке.
Кроме того, совсем не согласен с проводками, которые после проведения проводки остаются в налоговом учете, не буду писать какие есть, но напишу какие должны быть:
91.02.7 (ПР) — 41.хх или 10.хх (НУ) — 1000 рублей (на сумму списанных ТМЦ, товара)
91.02.7 (ПР) — хххххххххххххххххххх — 180 рублей (выделен НДС)
НЕ.03 (НУ) — хххххххххххххххххххх — 1000 рублей.
В этом случае все будет корректно отражено и работать.
P.S.: вместо счета 91.02.7 м.быть любой другой, например 91.02.4, … и т.д., главное не этом самом счете, а в этой системе отражения проводок с этими суммами по соответствующим видам налогового учета (НУ, ПР, ВР).
(11) Эта обработка НЕ ЯВЛЯЕТСЯ универсальной для всех фирм. Выложена исключительно по причине, указанной в описании. Если кому-то что-то от неё надо — пишите сами, нашим бухгалтерам требовалось именно то, что есть, а на финтифлюшки под всех у меня времени нет.
Я не скачивал, не смотрел, просто напоминаю, что не во всех типовых есть галочка «Ручная корректировка». Автор, там этот случай нормально описан ПопыткамиИсключениями, либо каким-нибудь другим образом?
(13) Ещё раз напоминаю, что обработка выложена как пример работы с открытой формой объекта, на который есть только ссылка. Она никоим образом не претендует на универсальность.