<?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='\
может просто расширение меняется с скажем .erf на .epf?
Или наоборот. Так можно и руками сделать.
Берем любой внешний отчет меняем расширение. Он работать будет, но в конфигураторе не будет видно ни форм ни кода.
И просьба убрать комментарий про 1с — слишком много экспрессии. 😉
Помнится на диске ИТС была обработка КонвертацияВнешнихОбработок.epf. Она кривая?
(1) расширение не меняется, его кривой код написанный в 1С меняет — оно ВСЕ что есть в справочнике ВнешниеОбработки сохраняет с расширением .epf
re: Берем любой внешний отчет меняем расширение. Он работать будет, но в конфигураторе не будет видно ни форм ни кода.
===
У меня, на версии платформы 8.2.12.92, оно не работает (может потому, что после конвертации).
(2) У нас в саму конфигурацию встроена обработка Конвертиция внешних обработок 8.2.. на ИТС даже не смотрел. Но конфигурация обновляется почти каждый месяц — запарились уже.. по моему разумению, она тоже должна быть свежей (последнее обновление в конце прошлого месяца делал)
А зачем обработка эта нужна — чтобы сохранился код во внешних отчетах при переходе из 8.1 в 8.2?
(5) Да.
(6) Я сначала долго парился с этими конвертациями, внешние отчеты тоже умирали напрочь после стандартной конвертации как рекомендует делать 1С (кстати, у них косяк — если админская учетка с паролем обработка виснет напроч, если пароль админа временно убрать — запускается и конвертирует), но потом сделал следующее — в конфигураторе просто открыл внешнюю обработку, конфигуратор спросил «Конвертировать?», я ему ответил «да, фигли…». И все! Наступило чудо! Подключаю этот сконвертированный отчет как обычно, и он работает…
З.Ы. Мне повезло, конвертить надо было только один внешний отчет, как сделать это быстро и для кучки отчетов не знаю, но если кому не лень и делать не много — тогда этот способ оптимальный, имхо…
Присоединяюсь к (7). Внешних отчетов у меня хватает,а типовая обработка их криво конвертирует. Опробовал предложенный вариант. Респект и уважуха разработчику, избавил от гемороя 😀 .
Спасибо! очень удобная вещь!
Нужная штука. Спасибо!
Очень хорошая обработка, она у меня конвертирует и отчеты из 8.0 в 8.2. Я как бухгалтер, не обладаю знаниями программиста, но с этим отчетом подружилась. 5+
11. madamonika, прошу подсказать, поскольку Вы «подружились» с этой обработкой. А я не такой кпродвинутый пользователь, несколько раз прочитала и ничего не поняла как нужно делать . Я попробую «перевести» аннотацию к обработке, подскажите что не так.
1. «Восстанавливаем архив 81» — то есть попросту запускаем 1С 8.1 ?
2. «там открываем обработку заканчивающуюся на 81» — у меня , например, в 1С 8.1 нет ни одной обработки, которая бы заканчивались на 81, расширение у них у всех.epf — видимо имелось ввиду, что открываем обработку с расширением «epf » для 8.1 ?
3. «ВЫГРУЖАЕМ все обработки и отчеты» — ВСЕ по очереди, наверное? Т.к. если выше читаем «открываем обработку»,значит ее одну, которую открыли и выгружаем, и так с каждой последующей?
4. «в УКАЗАННЫЙ НА ФОРМЕ КАТАЛОГ» — где указанный и в какой форме?
А может быть автор хотел сказать, что нужно сначала загрузить его обраьотку в 8.1, там ее открыть и через указанный в ней КАТАЛОГ выгрузить все обработки из 1С 8.1?
5. «Все выгруженные обработки/отчеты открываем в конфигураторе 82» — как именно это нужно сделать?
6. «Открывает обработку заканчивающуюся на 82 в СООТВЕТСТВУЮЩЕй сконвертированной БД (режим пользователя) и указываем ТОТ ЖЕ КАТАЛОГ» — кто открывает? где открывает? в какой соответствующей сконвертироыванной БД ? Что специально для этого нужно еще одну базу конвертировать?
(12) Для того, что бы понимать, как использовать эту обработку, нужно, для начала, понять, как использовать стандартную обработку 1С (та, что встроена в конфигурацию — меню Сервис, если не ошибаюсь).
Если нет понимания там — здесь тоже ничего не получится понять.
PS Простите за мой албанский.. Объяснил, как умею
13, я пользуюсь обработками ИНФОСТАРТ уже года три, всегда сразу все понимала. А эту не понимаю.
Солидарен с (12) на 100%
Не обработка, а полная фигня. Сырьё, полуфабрикат. Выкладывать такое на ИС — совсем пользователей не уважать.
Ни справки, ни защиты от ошибки, ни показа хода действий — ничего.
bearcat совершенно права, без вдумчивого разглядывания кода понять, как этой обработкой правильно пользоваться, просто невозможно.
Я вот запустил и получил фигню — свалку из файлов в каталоге, где лежала эта, запущенная. И после — ни конвертация не срабатывает, ни даже открыть эти файлы под 8.2 не выходит. Тупик на полдороге.
Ладно, я-то разобрался, но что будет делать нормальный юзверь, кроме как плеваться и приглашать франчей?
А делов-то — пройти по справочнику, выгрузить двоичные данные в файлы, запустить пакетную конвертацию, загрузить обратно; ну или просто отработать каталог. Почему, ну по-че-му нельзя было сделать эти элементарные операции по-человечески, в виде действительно достойного продукта? И почему за эту сомнительную поделку без зазрения совести принимаются плюсы, я искренне не понимаю.
p.s. Возможно, автору неведомо, но designer — это устаревший, хотя и ещё поддерживаемый, ключ. Уж давно используется config.
UPD: В Бухгалтерии 1.6, по крайней мере, в табличной части тоже есть ХранилищеВнешнейОбработки, про это автор вообще благополучно забыл.
Столкнулся с аналогичной проблемой, требовалось быстрое решение, и эта обработка просто спасла, с тем как ее использовать, разобрался сразу, не изучая кода, так что автору большое-пребольшое спасибо!
Хорошая обработка! очень помогла при переходе на 8.2
(16) Мне главное проблему решить было — просто ситуация была очень западлянская.. «прочувствовал всеми фибрами», аж проснулся от прилива адреналина, как обнаружил, что все самопальные отчеты просто перестали работать!:) Потом как то собрался и решил проблему таким вот образом.. как то не до дизайнерских изысков было, простите уж..
Да, а почему бы Вам не доделать её — как надо, и не порадовать народ новым шедевром?? Я не против — берите и допиливайте..
(19) если бя могла допилить…
Понятно, что Вы для себя сделали и решили с народом поделиться. Прошу понять меня правильно. У меня много обработок, которые я с июля 2009 года не просто тупо скачивала из Инфостарт, а вела учет какие скачала, какие нужно скачать и протестировать. И когда создала уже для 7.7 хорошую подборку, решили перейти на 8.1
cтала заново искать аналогичные , но для 8.1
Создала подборочку для 8.1, а тут и на 8.2 нужно переходить.
Поэтому очень обрадовалась, когда увидела вашу обработку.
yо я не могу понять как ею пользоваться.
Ведь обычно как : в 1С 8.2 входишь в журнал внешних обработок ( или внешних отчетов), заливаешь обработку, затем просто открываешь обрботку и пользуйся.
А вашу обработку как пользовать? Также из 1С предприятие? Или нужно открыть конфигуратор 1С 8.2, затем что? и как? Пожалуйста, набросайте миниинструкцию, очень Вас прошу.
У меня была проблема с конвертацией обработок с 8.1 на 8.2.
Я прочитал много постов на форумах — но ничего не помогло .
А суть решения была в следующем на 8.1 можно было неявно назначить форму для обработки а в 8.2 нужно обязательно чтобы в поле форма была — определенная форма — и после создания и указания формы в КАЖДОЙ обработке они стали открываться и работать под 8.2
Я не программист , но отчетом воспользовалась. Спасибо.
Подскажите, у меня есть обработка с расширение ert, чтобы открыть ее в 8.2 что нужно сделать? Данная конвертация обработок поможет или искать другую?
хотелось бы иметь такую отбработку
(23) Ваша обработка не может быть конвертирована — она для платформы 1С:7.7 предназначена. Во вторых — она написана для конфигурации на 7ке, а эти конфигурации не конвертированы, строго говоря, на 8ю платформу.. они с нуля написаны — поэтому конвертировать Вашу обработку все равно не имеет смысла.
Обработка во многом была полезна, но вот самое важное (увы!) не удалось сконвертировать. Внешнюю обработку для банка-клиента никаким способом спасти не удалось. Пришлось править ручками(((
Я тоже не смогла конвертнуть
Когда у меня была проблема с конвертацией такие обработки мне не помогли . У меня проблема была в форме разработанной под 8.1
А чем не устраивает режим запуска конфигуратора:
<имя файла|путь> — имя фала или каталога (обязательный параметр)
Если задан каталог, осуществляется конвертация всех доступных документов в указанном каталоге и вложенных каталогах. Для успешной конвертации файлы должны быть доступны для записи. Если указанный в качестве параметра файл недоступен для записи, выдается сообщение об ошибке.
В случае режима работы с каталогом, недоступные для записи файлы пропускаются без выдачи сообщений об ошибке.
Для работы данного механизма должен быть запущен режим «Конфигуратор» и открыта конфигурация, в среде которой будет производиться конвертация. Имя информационной базы и параметры авторизации можно указать через стандартные параметры командной строки. В случае отсутствия таких параметров, будут выданы соответствующие запросы, как и в других аналогичных механизмах командной строки, работающих в режиме «Конфигуратор».
Примеры:
Конвертация файла:
1cv8.exe /ConvertFilesd:/base/ExtProcessing.epf
Конвертация каталога:
1cv8.exe /ConvertFilesd:/base
Показать
«И просьба убрать комментарий про 1с — слишком много экспрессии.» я бы сказпл жестче. Автор, убери эту фразу про 1с.
Мне понравилась — спасибо большое