<?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) добавил скрин и описание….
🙁 ну вот а я обрадовалась…. {Форма.Форма(38)}: Поле объекта не обнаружено (ДокументыРасчетовСКонтрагентами)
ВестиРасчетыПоДокументам = НЕ (ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами, «ВидСубконто») = Неопределено);
(4) какая конфигурация ? Работает на БУХ, Возможно взлетит на УПП, никаких УТ и ЗУП 🙂
аааа……вот оно че….а у меня комплексная (((
Какой ужас.. а топором не пробовали?
(7) Ты о чем?
О том, что нельзя перебросить недостающую сумму с дебета на кредит или наоборот. Устранять нужно причину, а не следствие.
(9) Для этого предусмотрена галка «Этап 3» которую если не ставить то сворачиватся не будет, и как исправить причину если она была в прошлом году? или документов и контрагентов более 1000 …. а перебрасывать недостающую сумму можно, тк это своего рода взаимозачет, только в разрезе одного контрагента/договора. Многие бухгалтера просили меня об этом, для этого и написана обработка. (Кроме того иногда причина — кривые руки, это к сожалению с помощью обработки не исправить 😀 )
Подскажите а нет ли такой же у Вас для 1С:Предприятие 8.2 (8.2.12.96) конфигурация Бухгалтерия предприятия, редакция 1.6 (1.6.25.6). Спасибо.
а если УСН, то почему не двигаются регистры по результатам корректировок?
(12) Потомучто эта обработка для бухгалтерского учета, для налогового нет такой… так как для начала необходимо чтоб эти регистры «шли» между собой, и т.д. и т.п., в общем для бухгалтерского она…
Спасибо пригодилась ваша обработка в работе.
необходимо сделать свертку в разрезе документов по счету 76.05, в принципе обработка справилась, но т.к. счет АП, то она «задвоила» обороты по всем субконто, и по тем с которыми все в порядке… не можете быстро подсказать как проще избавиться от задвоенных движений
интересная обработка, жаль что рейтинга не хватает
спс
спсб
Для 1с БП 2.0.29 Подходит???
Поспотрел, но не пользовался
После загрузки остатков в 2.0 из 1.6 образовались некоторые суммы которые не закрываются по текущей деятельности, надеюсь спасет обработка, а то НГ начался уже.
не зачитываются авансы в бухе 2.0 после переноса остатков.. надеюсь обработка поможет)
Спасибо, пригодилась!
(4) Маруся66, У меня тоже КА. Закомментировал эту строку, где ругался и вроде заработало. И даже вроде бухгалтер сказала, что цифры вроде верные получились (но досканально ещё не проверила она:)).
Похоже автор забросил данную обработку. Жаль. Хотелось бы гарантированно рабочую версию под КА. Плюсану для рейтинга: может что и сдвинется.
попробую сейчас эту скачать, так как эту не получается допилитьhttp://forum.infostart.ru/forum24/topic38706/
до требуемого
нет в жизни счастья. у нас Корректировка реализации в сторону уменьшения, аванс естественно не восстановит. скачала обработку, по описанию должна поставить на кредит пассивного субсчета 62.02 с дт 62.01 разницу по Корректировке реализации например 100 руб
т е д.б. дт 62,01 кт 62,02 100 руб
в операции после обработки же:
дт 62,01 кт 62,02 -100 руб
дт 62,01 кт 62,02 100 руб
что это значит? прокрутилось и ничего не изменилось. убирать вручную например все красные проводки?
это тоже проблемы не решило, разбегается по третьему субконто
наконец то в последнем релизе БП 2.0.43.6 в корректировке поступления и реализации сделали зачет и восстановление аванса. это радует!
Плюсону! Хорошая обработка
спасибо. очень помогло.
но! второй этап не работает для 62 счета. а всё потому, что попутано правое с левым в
…
ИначеЕсли Прав(Счет01.Код,2)=»62″ тогда
…
+рекомендация: добавить еще один этап — нулевой, в котором третье субконто сворачивается в один служебный «документ расчетов с контрагентами»
а для совсем запущенных случаев — еще и в один договор. (да — такое тоже встречается…)
Спасибо за поиск ошибки, поправил!
Правильно понимаю — обрабатываются все выбранные счета по всем контрагентам?
И нельзя выбрать контрагента — в коде:
Обработка полезная, работа проделана- видно. Спасибо.
Но есть замечания-пожелания автору на будущую доработку (у себя переделал) — вынести запись движений у документа операция из процедур, которые выполняются в цикле, и сделать запись один раз за циклом. На логику это никак не влияет, а скорость возрастает в разы (записать 3000 раз по одной записи или 1 раз 3000 записей)
(33) fokin, Да, в текущей версии почему-то автор поставил заглушку на Контрагента. Но в принципе добавить выбор контрагента на форму, закомментировать эту строку и раскомментировать установку параметра Контрагент в запросах и должно работать с отбором по контрагенту (причем по группе тоже можно)
ну я то так и сделал)
просто вопрос — зачем автор убрал сей функционал