<?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='\
Здравствуйте, Автор!
Я еще не пробовал разрабатывать расширения, но хочу начать.
Знаю, что в свежих версиях платформы возможностей уже много.
Мне нужно поменять расширением периодичность номера документа Реализация из типовой БП 3.0 (ну вот так сложилось исторически, номер начинается сначала раз в квартал).
Это помогло бы отказаться от ручного обновления.
Можно ли это сделать в принципе?
Да. Для этого очень удобно использовать механизм расширений.
В ЗУП несколько организаций со своими префиксами. Нужно дорабатывать Ваше расширение для сохранения префиксов?
(3)Думаю нет, Префикс ставится до знака «-«, а тут судя по скрину префикс типа документа добавляется в номер уже)
У меня кадры просили на сковзную нумерацию для этих документов по каждой организации.
(3) Мне кажется проще воспользоваться типовым функционалам и для каждой организации задать свой префикс в настройках.
(5) Для этого можно по ссылке перейти в исходную публикацию, я давал ее в описании. Она как раз дает возможность сквозной нумерации.
(6)
Префикс уже стоит. Меня интересуют не затрутся ли префиксы при использовании расширения
(8) Юрий, Расширения назначет свои номера для новых документов, префикс организации в них не учитывается, префикс добавить можно, вам необходимо внести изменения в код расширения.
а подскажи почему не срабатывает, я подключил расширение, платформа 8.3.12.1440, релиз конфы 3.1.5.171, вот только перехвата номера не происходит уходит в типовой механизм определения префиксов.
(10) Для какого вида документа Вы это смотрите?
да для любого хоть прием хоть увольнение хоть перевод
(12)
Если есть тим вьювер я могу посмотреть. Собственно расширение и сделано для этого. Напишите пожалуйста в скайп s.matyukin_visma, решим.
По ряду документов были действительно моменты, что номера не назначались корректо, вероятно зависит от среды запуска (платформа/версия ЗУП 3.1 до конца не ясно). Я внес изменения.
Добрый день! Помогите пожалуйста! Мы обновились до версии ЗУП 3.1.8.216 и у нас перестало работать расширение. Выдает ошибку: Значение контролируемого свойства РежимСовместимости у объекта не совпадает со значением в расширяемой конфигурации. Есть ли обновленная версия под этот релиз?
(15) Николай, обновляю свою конфигурацию до указанного релиза, по результатам напишу.
Коллеги, обновил расширение, а именно убрал контроль режима совместимости, чтобы работало на поздних релизах ЗУП.
Добрый день!
Нумерация отпусков не работает, если документ отпуск вводится из документа График отпусков. Что надо изменить?
(18) Добрый день! В личку написал.
Извините, не знаю, как посмотреть, то, что в личке.
С Юлей вопрос в личной переписке закрыли.