<?php // Полная загрузка сервисных книжек, создан 2025-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) удаление помеченных объектов уже не требует монопольного режима.
(Администрирование-Удаление помеченных объектов).
(1) maxis33, Да, действительно уже можно в БП 3.0
(0) Удаление помеченных объектов (немонопольное) для управляемых (UPD: и обычных) формhttp://infostart.ru/public/97936/
(3) Поручик, когда у меня возникла потребность, ни где не мог найти готовой обработки, поэтому стал сам ковырять. А теперь и штатная работает не монопольно, и столько готовых, АБЫДНА!
Интерфейс Такси. Ошибка в строке 832
Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
Переменная не определена (ДлительныеОперации)
(5) ALLES, Видимо вы используете старую платформу, либо нетиповую конфигурацию. Функция «ЗаданиеВыполнено(ИдентификаторЗадания)» вызывается после выполнения основных действий программы, что бы закрыть все активированные процессы. Если не получается обратиться к длительным операциям при завершении, значит они не создавались до этого. Видимо, в вашей конфигурации длительные операции не предусмотрены, Такая ошибка нештатно завершит работу, но не должна помешать выполнить основные действия. Если все так, попробуйте закомментарить строку 832 в коде.
БП 3.0.33.19
Запускаю обработку. На доли секунды что-то открывается и тут же закрывается. И всё.
Скорее всего, вы зарегистрировали ее в программе как внешнюю обработку. Я об этом в говорил в описании: «Запускать обработку следует через меню ФАЙЛ_ОТКРЫТЬ в режиме предприятия, вставить ее в справочник внешних обработок не получится.»
Интерфейсу «такси» менее месяца, старой версией не может быть по определения.
(9) masticore, под интерфейсом такси я не тестировал обработку. Он предназначен для веб клиента. Я пока пользователей на него не переключил. Возможно, экран без графики быстрее крутится, но пользователям прежний привычнее.
Спасибо. Через Файл-Открыть обработка работает.
Но если честно, она нужна была не мне, а главбуху, потому что при переходе на версию 3.0 оказалось, что у неё нет прав на удаление.
Я решила обмануть программу и поставить ей внешнюю.
Но не вышло.
То ли потому что Вы все берете за основу типовую, то ли потому что 1сники внутри прописали какую-то проверку, но обработки внешние, которые я тут скачала, подо мной работают, а под главбухом не даже открываются.
(11) ron1, Никакая обработка не сможет делать то, на что у пользователя не хватает прав. Вы либо давайте своему гл.буху админские права, либо удаляйте сами то, что она вам наотмечает. А вот почему внешняя обработка не стартует после регистрации в базе, но стартует через «открыть файл» я пока не разобрался. Трудность в том, что после помещения в базу, отладчиком уже ее не посмотреть. А когда она живет в виде файла снаружи, она работает и ничего не видно.
Заходим в раздел «Администрирование» и выбираем «Удаление помеченных объектов»
Автоматический способ удаления делает все сам и лишь в конце если нашлись элементы которые ссылаются на другие элементы базы, появиться вот такое окно. Где в левой части показаны элементы, которые невозможно удалить, а в правой части окна объекты которые на них ссылаются. После ознакомления нажимаем кнопку Закрыть.
Объекты, которые не могут быть удалены (те самые что в левой части) удаляются так:
-Просто открываем каждый объект и помечаем его на удаление.
-Если это элемент справочника (например Контрагент или Номенклатура) который используется в документе, тогда:
-Открывает документ и удаляем из него все упоминания справочника.
-Если редактировать документ вы не хотите, то ничего не далаем, и смиримся что удалить его нельзя (т.к. это повлечет за собой изменение документа).
Спасибо! Возму на вооружение
Спасиббо!
А ЗУПе требует монопольного режима
(16) SemenovaMarinaV, Возможно, мы ЗУП на управляемых формах еще не юзали. Мне даже потестировать не на чем. Мои бухгалтеры категорически отказались зарплату переводить на тройку. Марина, положите где-нибудь на FTP копию вашей базы для моих тестов и мне в личку напишите. Попробуем обойти ЗУПовский запрет.
Спасибо. Нашла обработку. И правильно сделали, что отказались. У нас просто новая организация, а начинать на 2.5 нет резона.
Очень неудобно сделали индивидуальные и бригадные наряды. Не видела как в 8.2, а в 7-ке были сделаны изумительно.
Спасибо.
Скачал. У меня платформа 8.3 Конфигурация 2.0. Не работает. Запускаю через файл->открыть. И ничего не происходит.
copti, поправьте характеристики обработки — на конфиге бух 2.0 не работает, даже если платформа 8.3. Чтобы люди зря не скачивали. Мне пришлось другую обработку скачать, для платформы 8.2 и как ни странно вот она немонопольно удаляет у меня.
(20) Ekater, Да, вы правы это только для 3.0 (на управляемых формах), но уже неактуальна, т.к. штатная все это уже умеет делать. Анонс сейчас поправлю. Если пришлете в личку ваш адрес, я вышлю вам такую обработку для 8,2
(21) Почему только для Только для БП 3.0
(21) Почему Только для БП 3.0? В УТ 11 и других конфах на управляемых формах не пройдёт? По-моему ты слишком слабо разбираешься в матчасти.
Большое спасибо !
Подскажите пожалуйста, в чем вообще была причина установки монопольного доступа в стандартной обработке и почему сейчас в типовых установки монопольного режима удалось избежать?
Хочется понять что происходит.
это началось еще в седьмой версии. Удаление выполнялось только монопольно. Надо было выгонять всех пользователей для удаления помеченных. Внешняя обработка могла обходить эти запреты. Первые версии восьмерки основные алгоритмы унаследовали от семерки и тоже могли удалять только монопольно. Теперь не обязательно.
Скачал, проверил, все работает. Спасибо.