<?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='\
Добрый день!
Поясните пожалуйста, а что мешает просто привести все в соответствие?
Спасибо.
День добрый!
По словам бухгалтерии, данное требование обусловлено сбором затрат по подразделениям в БУ в производстве..
В ~ 90 % есть соответствие «кадрового» прикрепления сотрудников и распределения затрат по подразделениям… работаем «стандартно».
Оставшиеся 10 % «отклонений» это сотрудники принятые в подразделение, отличное от подразделение отнесения затрат (выполняют работы для других подразделений временно/постоянно).
Идей интересная, но я пошел другим путем.
И у меня не корпоративная бухгалтерия и зарплата, т.е встроенный механизм работы с подразделениями отсутствует.
(2) если брать зуп 2.5, то там такая ситуация решалась просто: для каждого подразделения задавался свой способ отражения затрат. Если нужно относить на определенные статьи только определенных сотрудников. то можно задать способ отражения для определенного сотрудника. Если на определенную статью должно ложиться только какая-то выплата, например «Сдельный наряд», то задаем конкретно для нее способ. также в зуп 2.5 можно задавать и процентное соотношение как зп сотрудника распределяется по счетам и статьям. Не думаю, что в зуп 3 этого нет.
В ЗУП 30 (в отличие от ЗУП25) нет очень важного момента — нельзя задать в сбособе отражения затрат
на какое подразделение относить затраты. В результате — нельзя в Бухгалтерию отправить проводки
на Основное подразделение, если в ЗУП 30 много мелких подразделений, детализация которых
не нужна в Бухгалтерии!
(4) karpik666,
«Сдельный наряд» нашу ситуацию не решит… Данная «затычка» используется для «постоянных работников». LeoSoft прав, ЗУП 3.0 уступает 2.5 в этой части функционала
В 2.5 делаем сейчас так:
1. Добавили в подразделения организации ветку подразделений из БП (коды для подразделений ЗУП сделали для наглядности с префиксами ЗП, коды в этой дополнительной ветке как в БП).
2. Добавили в ЗУП регистр сведений, в котором назначили соответствия подразделений ЗУП подразделениям БП.
3. При переносе отражения из ЗУП в БП подменяем подразделения ЗУП на подразделения БП.
Аналогично поступим после перехода на 3.0.
Замену можно сделать и в самом документе отражения в ЗУП (сделав копию дока после заполнения). Так можно проверить всем ли подразделениям назначили соответствия.
(7) KoshkinSM,
т.ж. нормальное решение
В нашем случае, в приоритете было внесение минимальных изменений, оставить конфигурацию на поддержке.
Уточнение:
Можно было-бы обойтись без изменения конфигурации, (все засунуть в «расширение») если бы справочник «способы отражения» в конфигурации поставщика был включен в подсистемы «доп.реквизитов» / «доп.свойств».