<?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='\
У обработки для 8.1 не назначена основная форма. При открытии ничего не происходит. Поправьте.
(1)
Основная форма не должна быть назначена. Она открывается программно.
Как ты отрываешь обработку, когда ничего не происходит? Через Файл-Открыть?
(2) Да, я лично юзаю обработку как внешнюю, только на своем компе.
В этом случае основная форма, конечно, нужна.
ну и исправить самому несложно 🙂
(3)
Исправить? А смысл?
Суть обработки в том, чтобы получить три параметра из документа и передать их во внешнюю (тестируемую) обработку.
Если назначить основную форму, тогда придется получать эти параметры — контекст документа, имя табличной части и табличное поле другими способами. С последним параметром могут быть проблемы в общем случае.
Так что исправить самому не так уж не несложно…
Дык, нужно ли назначать основную форму?
Обновлена обработка для версии 8.1
Исправлена ошибка. Обработка не работала с документом КорректировкаЗаписейРегистров типовой УТ.
Спасибо, poppy!!!
Очень остроумное, а главное, уместное решение:))))))
Как же пользоваться данной обработкой, если в обработку не передается ссылка на документ и его табличную часть? Или это только шаблон, который требуется доработать под свои нужды? 🙁 Но старания не могу не похвалить! 🙂
Пардон, разобрался.
Ошибка в описании. Ведь нужно указать, что обработка подключается не просто как обработка, а обработка заполнения табличных частей!! А когда открываешь как обычную (пример, «OtladkaVneshnejPechatnojFormy.81», то есть соблазн выбрать документ и его табличную часть. Чего, увы, нет… :(((
Нормалый плюс. Спасибо! Успехов!
Плюс тебе! Так гораздо удобнее!
Полезная обработка
Только ошибка небольшая в строке 59 модуля формы:
ЭлементыФормы.Объект.ОграничениеТипа
заменить надо на
ЭлементыФормы.ОбъектСсылка.ОграничениеТипа
(11) Спасибо. Исправлено.
Отличная вещь. Без нее голову сломаешь пока отладишь вотч…. +
Спс отличная штука. Мне давно её рекомендовали. Всегда торопился и как-то справлялся. Но сейчас я стал крутым и у меня было время посмотреть попользоваться. Сегодня сделал то что надо благодаря этой обработке с толком и с расстановкой. 🙂
В чём может быть дело: при отладке моей внешней обработки заполнения ТЧ документа с помощью этой обработки, если происходит ошибка, то просто останавливается выполнение моей обработки без всяких сообщений. А при повторном запуске моей обработки в этом же сеансе предприятие просто виснет, приходится перезапускать его и заново открывать документ, заново запускать эту обработку отладки и из неё — мою обработку.
не совсем понял как именно «позволяет упростить»
Отличная обработка 🙂 Огромное спасибо! 🙂
Обработка прекрасна!
Спасибо за нее.
— платформа 8.1
— конфигурация бухгалтерия 1.6 с последним обновлением
— скачиваю соответствующую обработку
— добавляю: сервис — дополнительные отчёты и обработки — дополнительные обработки внешних частей
— выскакивает
вопрос снимается.
надо было сразу посмотреть внутренности файла
опера почему то скачивет страницу с просьбой авторизации, вместо самого файла.
хм
Очень пригодилась
(15) Поддержу. У меня тоже самое в 8.2
Обработка хорошая, но не работает с документом «УстановкаЦенНоменклатуры» в УТ10.3.
А как насчет 8.2?
Спасибо большое! Обработка очень помогла! Применяла на 8.2.
Для тех, кто ещё не знает: для того, чтобы обработка, написанная для 8.1 заработала на 8.2, нужно её открыть в конфигураторе 8.2 и на вопрос «Конвертировать?» ответить «да»
Здравствуйте! можете выложить обработку на внешний ресурс?
Спасибо, очень полезная вещь.
Правда есть некоторые глючки, вобщем я закоментировал процедуры при открытии и при закрытии и всё ок. По свободе посботрю чего там не так.
Аффтору вечный РИСПЕКТ И УВАЖУХА.
ееееее сумер штука, очень помогла) автор спасибо!!!)))
Большущее спасибо. Очень не хватало такой обработки.
Весчь хорошая.. теперь ждем реализации под управляемое приложение!
А можно тестировать пошагово выполнение своей обработки без данной обработки? Где находится уже подключенная обработка, чтоб в ней проставить точки остановки.
Спасибо очень удобно!
Спасибо, обработка хорошая, пока не применяли, но думаю в дальнейшем пригодится.
Спасибо, крайне удобно, пользую
Спасибо, очень удобно. Вчера как раз помогла в очередной раз быстро найти ошибку.
Спасибо! Полезная штука! Часто возникает необходимость проверять работу заполнения табличных частей, что было проблематично, особенно если срочно. А сейчас очень удобно!
При изменении имени файла через выбор не происходит типизация Объекта, так как не происходит событие «ПриИзменении» имени файла. Надо вставить в кусок вызов процедуры «ИмяФайлаПриИзменении(«»)»:
Если Диалог.Выбрать() Тогда
ИмяФайла = Диалог.ПолноеИмяФайла;
ИмяФайлаПриИзменении(«»);
Иначе
Не раз ей пользовался, очень помогает
согласен здорово
Очень полезная обработка. Все время приходилось тестировать через Форму, уходило дополнительное время для написания ВПФ. Спасибо автору.
Согласен, можно и так:
При изменении имени файла через выбор не происходит типизация Объекта, так как не происходит событие «ПриИзменении» имени файла. Надо вставить в кусок вызов процедуры «ИмяФайлаПриИзменении(«»)»:
Если Диалог.Выбрать() Тогда
ИмяФайла = Диалог.ПолноеИмяФайла;
ИмяФайлаПриИзменении(«»);
Иначе
платформа 8.1
— конфигурация бухгалтерия 1.6 с последним обновлением
— скачиваю соответствующую обработку
— добавляю: сервис — дополнительные отчёты и обработки — дополнительные обработки внешних частей
— выскакивает окно: «выбранный файл не является внешней обработкой. либо данная обработка не предназначена для запуска в этой конфигурации»
— сообщение:
{Справочник.ВнешниеОбработки.Форма.ФормаЭлемента(189)}: Ошибка при вызове метода контекста (Создать): Ошибка при выполнении файловой операции ‘C: empвнешние обработкиOtladkaObrabotokZTЧ.epf’
Очень пригодилась
Спасибо, обработка хорошая, пока не применяли, но думаю в дальнейшем пригодится.
Спасибо, очень удобный инструмент для отладки
Идея хорошая, но из-за кривости самой 1с — вся работа загублена на корню.
Как раз для тестирования обработок табличных частей и не подходит:
— подцепляется через раз к конфигуратору — требует постоянно закрывать себя и открывать;
— описания ошибок не показывает — просто останавливается;
— может просто зависнуть (видимо, останов на ошибках), и тогда — перегружать снова Предприятие;
Все-таки старый добрый способ — скопировать код обработки ТЧ в обрабатываемый документ, сделать в документе кнопку, и подцепить к ней код, — остается самым надежным и практичным.
Можно еще во внешнюю обработку код скопировать для отладки.
Аналогично, как и в (15)
Скачал. Удобно, когда при отладке у пользователя запрещено открытие внешних обработок.
Большой спасибо, очень удобно при отладке внешних обработок
Хорошая работа!
Как ни странно, полностью соглашусь с AlexO. Неудобства остаются, а менять одни неудобства на другие особого смысла не вижу. Как отлаживал код обработки в другом месте или выводом в файл лога в контрольных точках информацию, так и буду, походу, делать дальше.
И сетовать я предпочитаю не просто на «кривость 1с», а на то что, в общем то, ничего в этом плане с древних времён так и не улучшается. Хотя даже у меня возникали идеи как это можно было бы упростить или хоть немного добавить удобства (в отладке внешних обработок).
Спасибо большое автору, очень удобно пользоваться данной обработкой при отладке программного кода. Сегодня как раз помогла в отладке при создании заполнения табличной части Требования-накладной
Спасибо, нужная вещь оказалась! 🙂
Спасибо большое, очень помогла ваша обработка!
Хорошая вещь этот самый отладчик обработок заполнения табличных частей. Работоспособная. Экстренно пригодилась.
Кстати, возможно глюк на сайте — обработку скачал, стартманьку сняли, а статуса нет.
подскажите, а под 8.3 работать будет?
Какова актуальность обработки?!
(67) (68) Замечательно работает на 8.3.11.Естественно что только с обычными формами.