<?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='\
Пока работает только для настройки конфигурации «Ведение взаиморасчетов с контрагентами «дополнительно по документам расчетов»»…..
Теперь работает и с двумя субконто на счете 60 (без документов расчетов).
Очень жду ваших замечаний и… жалоб на ошибки. Буду оперативно исправлять.
Вообще неплохо было-бы файлы объедининить в 1 архив по известной всем причине
(3) По правилам форума при этом теряются все бонусы. К чему? Они в свое время заработаны за дело….. )))). Для вновь скачавших поясняю: Второй файл (Помощник) содержит в своем составе и первый.
Автору: кроме расшифровки отчётами, сделайте, пожалуйста, открытие текущего значения.
И ещё: там, где описание ошибки пусто — пусть пользователь сам догадается?
(5)Блин, хотя бы один плюсик поставил…. А уже требует.
(7) Если вы не заметили, я:
а) женского пола
б) не «требую», а прошу и задаю вопросы.
(6) — скринШот прислать можно? hotel_ur@mail.ru
(8) Выслала.
(9) Ну если женского (хотя я феминист) , то сделаю….
(6) Исправлено. Вроде бы…. ))))) А почему, скриншот без фото?
(12) Что было, то и осталось, если вы имеете в виду Помощник.
(13) Без вашей базы видимо не обойтись
(14) В таком случае сама разберусь.
(5) — сделано
(16) Спасибо. Теперь буду смотреть пустые комментарии.
(17) Жду ваш резюме по ошибке в коментарии….
(17) чем закончилось? не понял пофиксено Ваше предложение или нет?
(19) Пока занимаюсь другим, времени не было.
(19) У меня не воспроизводится….
Задумка хорошая, для проверки реализации и тестирования (если это нужно) прошу скинуть помошника на майл tines@mail.ru
Премного благодарен
Обработка очень полезная как для аудитора так и для бухгалтера. Спасибо Автору.
(23) присоединяюсь к указанному выше отзыву.
—
…только смотреть обработку буду после отпуска
Оптимизирован алгоритм перепроведения документов: удален отбор по 3-му субконто (документы расчетов) на счетах расчетов с контрагентами.
Данная доработка незначительно увеличивает время на перепроведение документов, но устраняет ошибку неполного охвата задействованных по данному контрагенту документов.
Очень нужная обработка, завтра попробую…
Ставлю плюс за саму идею.
В бух 7.7 штатный программист сделал очень хорошую обработку «Сверка счетов», в ней можно было сверить и с-до начальное и обороты и с-до конечное по 62.1 с 62.2 , 60.1 с 60.2, и главное сумму 62.2 *18/118 с суммой на 76.АВ.
Сечас новая работа, новая программа 1С 8.1, я ее знаю плохо и пока что часами сижу и визуально сверяю 62.02 и 62.01 , да еще смотрю, через сколько дней (5 или более) отгрузка , а значит и зачет Д 62.02 К 62.01, чтобы знать делать или не делать счет-фактуру на аванс.
Подскажите, есть ли для 8.1 обработка для сверки 62.02 с 76.АВ.
И обработка, которая сама считает прошло 5 дней с даты аванса до отгрузки или нет. Например, выписка от 01.12.09, бухгалтер ждет 5 дней, затем на основании платежного поручения входящего делает «ввести счф на аванс», а программа ему , если была уже за эти 5 дней отгрузка не даст ввести такой счф, сообщив, что уже есть отгрузка номер ? от 04.12.09.
Вот было бы здорово!!!
(26)Ну данная обработка не только показывает ошибочно сформированные сальдо, но и активно (самостоятельно) исправляет их.
Что касается «отслеживания» 5 дней с момента оплаты для учета НДС: в программе имеется прекрасный помощник по учету НДС, и обработка по формированию счетов-фактур на авансы. При этом, существует возможность гибкой настройки: формировать счета — фактуры на аванс в течение 5 дней или не формировать (если аванс закрыт до конца учетного периода). Так что рекомендую просто сходить на курсы по Конфигурации Бухгалтерия Предприятия. Но учиться скорее всего нужно будет после нового года — выходит Бухгалтерия 2.0.
По поводу дальнейшего развития функционала моей разработки: можно конечно анализировать сальдовку на счетах 60 62 и 76. Но некоторая трудность заключается в наличии валютных остатков. Я с этими счетами неработал. Если найдется грамотный (подчеркиваю еще раз слово ГРАМОТНЫЙ) постановщик задачи, то тогда доработаю и это функционал…
Желаю удачи.
(27) спасибо за понимание, буду изучать и конретно выставление сч-ф на аванс, т.к. я пока что делаю их вручную на основании п/п входящего,
и другие тонкости 1С 8
Как раз сегодня была на едином семинаре 1С БИТ, чтобы поучиться , заодно купила книгу Д.Чистов С. Харитонов «Хоз операции в 1С: Бух 8 Задачи, решения, результаты»
(27) как я Вас понимаю!!! в связи с тем, что в 1С часто формируются ошибочные данные, я также веду учет в формате Excel авансам полученным + 5 дней = счф на аванс (менее 5 дней нет счф на аванс), зачет аванса при отгрузке.
(26) «При этом, существует возможность гибкой настройки: формировать счета — фактуры на аванс в течение 5 дней или не формировать (если аванс закрыт до конца учетного периода).»
В теории возможность существует.
Но при том, что в нашей 1С настройках стоит «не регистрировать счета-фактуры на авансы, зачтенные в течение 5 дней», программа неправильно понимает эту фразу в случае частичного зачета:
1. если есть аванс 01.04.2010 сумма 100 000 руб , отгрузка 15.04.2010 на всю сумму 100 000 руб, то хотя аванс закрыт до конца налогового периода, 1С правильно в этом случае создает счет-фактуру на аванс в сумме 100 000 руб., а потом при отгрузке, как положено , в книге покупок будет зачет НДС
2. если есть аванс 01.04.2010 сумма 100 000 руб , отгрузка 15.04.2010 на сумму 40 000 руб, то в этом случае 1С создает счет-фактуру на аванс только на сумму НЕЗАКРЫТЫТОГО АВАНСА на конец периода, то есть на сумму 60 000 руб. ЭТО НЕПРАВИЛЬНО. ТАК ДЕЛАТЬ НЕЛЬЗЯ, могут быть претензии налорганов. СЧЕТ-ФАКТУРА на аванс ДОЛЖЕН БЫТЬ НА ВСЮ СУММУ 100 000 РУБ, ПОТОМУ ЧТО ОТГРУЗКА ПОЗЖЕ 5 ДНЕЙ, а в момент отгрузки должен быть зачет аванса на 40 000 руб.
Вот я вручную исправляю такие «косяки» 1С и , конечно, «незлым тихим словом» вспоминаю при этом разработчиков 1С.
За Вашу разработку, конечно, плюс.
(29)
Я бы советовал поступать более продуктивно — сотрудничать с разработчиками. Нужна обязательная обратная связь. Поверьте, в группе разработчиков БП собрались вполне вменяемые и позитивные люди. Озвучте проблему (на форуме разработчиков или через ХотЛайн) и будете непременно услышаны.
Если честно и объективно, то я не очень доволен этой своей работой. В частности: я сперва не понял, что для рядового пользователя методика работы с этой обработкой не вполне понятна и очевидна. Во-вторых, имеется пара очень принципиальных ошибок, которые сильно снижают ее эффективность.
Поэтому готовится к выходу версия помощника 2.0 для конфигураций БП КОРП (и всех ее производных).
В данной разработке будут учтены все выявленные ошибки данной версии, разработан новый, более дружелюбный интерфейс с очень подробными комментариями. Повышена производительность работы. А так же, наконец-то будет добавлен механизм анализа взаимозачетов.
Огромное Вам спасибо!!! 😀
на УПП будет работать?
(32) Не знаю, не пробовал. Кто-то по-моему писал, что дорабатывал. Почитайте в постах. Стоит ли? На новой редакции все равно работать не будет. Посмотрите лучше Анимированный помощник для редакции 2.0
Возможно ли использование в УПП 1.2.38.11 ?
(34) В УПП не проверялось. Есть платная разработка:http://infostart.ru/public/80171/ , ее готов попробовать доточить (если будет ваше желание)
При запуске «ПомощникПоПроверкеВзаиморасчетовСКонтрагентами_8_2» выдает ошибку «{Форма.Форма.Форма(453)}: Поле объекта не обнаружено (НДСНалоговыйПериод)
ПериодичностьПериодаРегистрации = ?(ОшибкаПолученияУчетнойПолитики,?(ПериодРегистрации<‘20080101’,Перечисления.Периодичность.Месяц,Перечисления.Периодичность.Квартал),УчетнаяПолитика.НДСНалоговыйПериод);»
Открывал через 1С:Предприятие 8.2 (8.2.19.83), редакция 2.0 (2.0.64.39)
Подскажите а для 3.0 бухгалтерия, где можно найти обработку ?