<?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='\
То есть для исправления ошибки нужно запустить эти обработчики по-новой ? А как это сделать ?
(1)
заменить код процедур, указанных на скрине.
затем повторно обновить базу (подразумевается что есть архив не обновленной.)
для случаев когда архива нет. и база уже обновлена. данный вариант НЕ подойдет.
Anatoly Pugin. можете по подробней описать порядок действий. Не пойму, когда нужно заменить код процедуры и что значит повторно обновить базу?.
Порядок действия с обновления 3.1.4.120 на 3.1.4.161.
Спасибо.
— взять не обновленный архив базы,
— обновить , перед тем как применить изменения и запустить 1с в режиме Предприятия.
заменить процедуры, т.к. в них содержиться ошибка,
— после замены процедур, запустить 1с в режиме предприяти
А если зайти в каждый документ и руками удалить эти строки? У нас документов не много. Объясните, пожалуйста: в чем смысл этой задумки разработчиков и почему они все это дописали в закрытых периодах, в закрытых документах? Если мы руками удалим, они не появятся снова?
(5)
удалить не получится, хотя если документов немного, то попробуйте.
если учет велся в 2017 году в ЗУП. то данная ошибка будет во ВСЕХ ! документах межрасчета и нач.зп т.е .это нереально вручную исправить.
ошибка 1с в следующем:
для строк исходных :
№1 Иванов, Налог, КатегорияДохода
№2 Петров Налог, КатегорияДохода
№3 Смирнов Налог, КатегорияДохода
нужно получить строки :
№1 Иванов, Налог, ЗапКатДохода
№2 Петров Налог, ЗапКатДохода
№3 Смирнов Налог, ЗапКатДохода
где ЗапКатДохода = заполненное поле категории дохода, новое в релизе 3.1.4.161
а у 1с получились строки :
ОШИБКА 1С. (!)
№1 Иванов, Налог, КатегорияДохода
№2 Петров Налог, КатегорияДохода
№3 Смирнов Налог, КатегорияДохода
№4 Смирнов Налог, ЗапКатДохода
№5 Смирнов Налог, ЗапКатДохода
№6 Смирнов Налог, ЗапКатДохода
(6) Спасибо! Более менее понятно. У нас учет ведется с октября. Откатывать не хочется: не сразу ошибку заметили. Попробуем вручную исправить.
с такой ошибкой не сталкивались? процедуры на Ваши поставил, но видимо тут что-то другое
(8) нет не сталкивался, но регистр ***Вторичный. это новый регистр релиза 161 .
т.о. он заполняется в момент обновления.
смотрите внимательно вычеты по данному сотруднику.
либо ставьте отладку по ошибке тогда станет ясна причина.
Столкнулся с похожей ситуацией, после обновления на 3.1.4 в ЗУП стали дублироваться НДФЛ при расчете зарплаты.
Тоесть + и — на одну и ту же сумму. И архива не осталось.
Попробовал на копии через «Загрузить конфигурацию из файла» файл cf последней версии 3.1.3.
После чего запустил по новой обновление на 3.1.4.169.
Почти все ошибки из 2017 года пропали.
Это моя попытка, и не совсем правильная, полностью согласен что нельзя отказываться на 3.1.3,
на как не имея другого выхода — мне помогло.
Помогите Зарплата и управление персоналом, редакция 3.1 (3.1.6.6)
Та-же проблема. Никаких архивов нет, устроился недавно и просят исправить.
Вижу что в РН «Учет доходов для исчисления НДФЛ» и «Расчеты налогоплательщиков с бюджетом по НДФЛ» не заполнено измерение «КатегорияДохода». В документах по начислению в таб. части НДФЛ, тоже не заполнен «КатегорияДохода».
Можно какую-то обработку написать для исправления этих строк?
Подскажите, что сделать реально. Распровести все документы и как-то перезаполнить НДФЛ в начислениях. Потом нужно исправить в данные в ведомостях еще?
Или подскажите как 2017 год корректировкой закрыть и 2018 только исправить.