<?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='\
опер.Записать();
{C:BUHTRANSTONEWPERIOD.ERT(441)}: Номер не уникальный!
замечательно 🙁 информация исчерпывающая :((
— Для успешного переноса переведите дату на компьютере на предыдущий год.
еще вопросы ?
( {C:BUHTRANSTONEWPERIOD.ERT(441)}: Номер не уникальный! ) — Для успешного переноса переведите дату на компьютере на предыдущий год. Читай внимательней
А для ПУБа покатит?
А с комплексной работать будет?
Для любой конфигурации где есть компонента бухгалтерском учет.
Данная обработка переносит остатки в бухгалтерском учете, и формирует операции по каждому счету на котором они фактически есть.
Удл.ДобавитьЗначение(Да<<?>>,»Да»);
{Обработка.новый1.Форма.Модуль(578)}: Переменная не определена (Да)
Удл.ДобавитьЗначение(Нет<<?>>,»Нет»);
{Обработка.новый1.Форма.Модуль(579)}: Переменная не определена (Нет)
ПерСпр.ДобавитьЗначение(Да<<?>>,»Да»);
{Обработка.новый1.Форма.Модуль(581)}: Переменная не определена (Да)
ПерСпр.ДобавитьЗначение(Нет<<?>>,»Нет»);
{Обработка.новый1.Форма.Модуль(582)}: Переменная не определена (Нет)
HELP!
Возьми в кавычки сорри косячок 🙁
Удл.ДобавитьЗначение(«Да»,»Да»);
Удл.ДобавитьЗначение(«Нет»,»Нет»);
ПерСпр.ДобавитьЗначение(«Да»,»Да»);
ПерСпр.ДобавитьЗначение(«Нет»,»Нет»);
Или скачай еще раз
Обработка запустилась, НО сальдо на начало периода и на конец увеличено в 2 раза. (оборотно-сальдовая ведомость за 1 кв. 2008)
Видимо не стоял признак удалять документы ….
Неплохо, быстрее стандартной (может показалось).
НО! Обнулило 10 счёт, к сожалению.
Пришлось воспользоваться стандартной.
А так же статьи затрат по 20.1 не перешли постатейно, а легли общей суммой (как и в стандартной обработке).
Ну не знаю у кого как, но у меня все легло нормально.
Необходимо было также перейти на НГ, наачал кучу вариантов «сверток» и «перебросов», но эта суперовская. Простая до безобразия, но работает четко и уверенно быстро.
Честно-говоря скачал чисто из любопытства. Одна обработка и все. Я засомневался. Тут народ целые конфы выкладывает для переброса, а это ert-шник и все.
KOCMOC™ — та красавец. Спасибо выручил!
(12)
>>Неплохо, быстрее стандартной (может показалось).
>>НО! Обнулило 10 счёт, к сожалению.
>>Пришлось воспользоваться стандартной.
>>А так же статьи затрат по 20.1 не перешли постатейно, а легли общей суммой >>(как и в стандартной обработке).
Очень странно, такое возможно только если счет оборотный и не имеет остатка, если же все впрорядке с планом счетов попробуйте проверить конфигурацию.
Если ничего не поможет пришлите пустую конфигурацию, покопаю.
(13)
>>Ну не знаю у кого как, но у меня все легло нормально.
>>Необходимо было также перейти на НГ, наачал кучу вариантов «сверток» и >>»перебросов», но эта суперовская. Простая до безобразия, но работает четко и уверенно быстро.
……
И вам спасибо за отзыв.
Обработка замечательная, тО что нужно!
Всё собрала на 87 операциях со всей аналитикой.
обработка супер! все забалансовые перенесены!!! ура.
Полезнейшая вещь меня спасла от смерти!!! база не типовая свернулась четко, все перенеслось просто супер. Спасибо тебе КОСМОС, я уже по привычке хотел стандартной свернуть и всю кривоту руками править, а тут никаких усилий запустил на ночь утром все готово!!!
А у меня не вышло. У нас бюджетная организация и при свертке создались операции без балансодержателя и не было бы проблем если он один, а у нас их 47 и какая проводка к какому учреждению относится неизвестно, только гадать приходится. И у 105 и 101 счетов нет МОЛ. Может подскажете как решить проблему.
подскажите, что делаю не так. Надо свернуть данные за 2007 год. Установил дату в системе 19.03.2007. Запустил. Выставил дату в обработке 31.12.2007. Завершилось нормально. Удалил все документы за 2007 год. Пересчитал итоги (двигал ТА на 1.1.2008 и на последний документ). Делаю оборотно-сальдовую ведомость по любому счету за период с 1.1.2008. Везде сальдо на начало 0. Помогите новичку.
(20)
Все не нужно, а только те которые помечены уже.
31/12/2007 г . в конце дня должны были быть операции с остатками. Если Вы удалили все как пишете, то видимо и их тоже. Поэтому и сальдо 0.
(20)
ТА в бух. учете значения не имеет.
обязательно ли менять дату машины на год назад? может достаточно поменять рабочую дату в эске? я так понял, дату изменять необходимо только для корректной нумерации операций, и если передвинуть рабочую дату самой эски на год назад, то все неплохо работает. просто, грабля в том, что машина введеная в домен периодически синхронизирует дату время с контроллером домена и в середине обработки год 2008 ВНЕЗАПНО становится годом 2009 г.
22
Да именно для корректной нумерации операций в прошлом периоде (год), если обрезается в текущем году то изменять дату не нужно.
(23) если перед
Опер.Записать();
добавить строку
Опер.Документ.УстановитьНовыйНомер();
то менять дату не понадобится 😉
Обработкой очень доволен. Но…
скажем так, не учтено , что может быть много остатков с суммой, равной нулю и количеством больше нуля. Поэтому обработка может работать до 10 -15 часов, перебирая саму себя столько раз, сколько в ней строк (естественно, я не стал ждать).
Если перед циклом, который убирает минусовые остатки по суммам, сортирнуть таблицу по количеству по возрастанию сначала. Потом поставить условие, чтобы он не возвращался в начало выборки при этом, он не будет перебирать таблицу так долго. Ну вобщем, оптимизировать здесь данный цикл можно и нужно. Это экономит при данной ситуации (если есть много остатков с нулевой суммой и ненулевым кол-вом ) полдня.
Еще раз спасибо.
25
Если у вас есть остатки с отрицательным количеством, я бы посоветовал перед переносом провести инвентаризацию и избавиться от ненужного балласта, видимо у вас в бухгалтерии данный параметр как количество не принимается всерьез ….
Добрый день.
Дату перевел на год назад. 23.11.08
Сворачиваю по 31.12.07
Бух Учет для Украины 7.7
опер.СодержаниеПроводки=»Перенос остатков»;
{BUHTRANSTONEWPERIOD.ERT(440)}: Поле агрегатного объекта не обнаружено (СодержаниеПроводки)
27
Проверьте реквизиты проводки. В стандартной конфигурации 4,5 есть «СодержаниеПроводки»
Если у Вас нет этого реквизита 2 выхода, либо добавить его , либо закомментировать в обработке.
спасибо классная вещь
Обработка замечательная, то что нужно. Немнжко внес исправления для своей конкретной задачи.