<?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 все это делает в фоновом…
Если ошибаюсь, будте добры поправьте
(3), что 8.1 делает в фоновом? Проводит документы и/или восстанавливает последовательности? 8.1 — это платформа (а вернее — версия платформы). Платформа фоном ничего не делает.
(1.4.Fuego ) К сожалению у меня сейчас мало времени, конец года.
Я попозже этот вопрос изучу.
А Вам (Fuego) хочу заметить, что Вы не объективны и пристрастны.
Зами задаете вопрос и сами на него даете не однозначный и пристрастный ответ.
Нет ссылки на конкретику.
Вы рассуждаете как юзер, как потребитель низшего уровня.
Отсюда, очевидна грубая логическая ошибка
и О-Ч-Е-Н-Ь странный логический вывод
с еще более странным обобщением.
А мой вопрос был обращен к разработчику.
(3) (5) В конфигурациях 1С есть обработка «Проведение по партиям», которая может работать в фоновом режиме. Но по работе этой обработки в конференциях проходит много нареканий. Кроме этого проведение проходит только по документам связанным с учетом ТМЦ, но в УПП есть и другие последовательности. А в случае, когда в учетной полите определено, что определение аванса происходит при проведении документа, для учета НДС проведения по партиям уже не достаточно.
(2) > В многопользовательском режиме проводить документы — это просто извращение.
Развивая тему, можно продолжить, что пакетная обработка документов — это еще большее извращение, т.к. неизвестно, что бесконтрольно делает программа и какие решения она принимает. И вообще программы и компьютеры от лукавого 🙂
Порядок применения и использования каждый определяет для себя самостоятельно. Есть организации, которые не ведут активной выписки документов в течении для, например, которые оказывают услуги производственного характера. Проведение может выполняться во время обеда, после смены или в выходной день. При этом некоторые пользователи забывают выходить из программы или даже переходят в режим временной блокировки. В этом случае многопользовательский режим становится весьма актуальным.
Конечно, такая обработка не всем нужна. И не всем кому она нужна она подойдет. Нам она подходит и мы пользуемся ей 3 года.
(6) Пакетная обработка документов в моём понимании — это довольно широкое понятие. А вообще, я работаю с УТ, БП и ЗУП и ещё парой (далеких от типовых) монстров. Я провожу документы для того, чтобы выявить ошибки операторов, менеджеров, бухгалтеров и т.д. А вообще разговор начал только от того, что не понятно было, что и зачем и от чего. В заголовке не написано и по сей момент, что эта обработка под УПП заточена.
Постарался учесть все «замечания»…
Использую обработку в Бухгалтерии. При восстановлении границы последовательности — всегда пишет ошибку «Восстановление последовательности завершено с ошибками.».Хотя последовательность вроде восстанавливается! Что за странный цикл «Для Номер = 1 По 10 Цикл» ? а потом: «Если Номер > 10 Тогда
Сообщить(«Восстановление последовательности завершено с ошибками.», СтатусСообщения.Важное);» …в этом случае Номер всегда будет больше 10 , т.е. равен 11 ! …так и должно быть? …как исправить?
(9) Исправил…
очень удобная штука, благодарю!
а можно как-нить запускать ее автоматически по шедулеру в определенное время?
и еще одоно замечание. в группу «реализация» еще нужно добавить корректировка записей регистров
(11) Можно, но для этого должна быть соответствующим образом переработана конфигурация. Т.е. при запуске программы должен обрабатываться параметр запускающий в свою очередь обработку. Обработка может быть включена в состав конфигурации. Ведение протокола можно организовать при помощи прилагающегося ярлыка.
(12) Перепроведение документа «Корректировка записей регистров» не имеет смысла, т.к. в отличие от других документов результат сформированных двидений не изменится. При восстановлении последовательностей данный документ будет перепроведен.
Есть предложение восстанавливать последовательности с шагом не 1 день, а произвольным, например час. У нас документов за день бьется много и терять день в случае прерывания восстановления последовательности не хотелось бы
Обработка проводит непроведённые документы — это минус.
(16) Какая версия? Еще раз проверил, в 1.3.1.3 к проведению включаются только проведенные документы.
Версии не видно, но скачивал 07.04.09, 1.3.1.3 не запускал.
У v1.3.1.3 есть «подводные камни», какие ?
(19) Наверное есть, но я о них не знаю. 🙂
Найдете, пишите, исправлю…
торговля 10.3.1.17.
при попытке запуска восстановления последовательности на живой базе, с работающими пользователями пишет:
{ВнешняяОбработка.ПроведениеДокументов(191)}: Значение не является значением объектного типа (Имя)
Если Соединение.Пользователь.Имя <> «Регламент» Тогда
это после нажатия кнопки «выполнить».
если никого нет или кто-то есть но ничего не делает, то запускается нормально.
(21) Да, действительно. Подобная ошибка возникала в случае, если при восстановлении последовательности кто-то из пользователей начал подключаться к базе данных, но еще не закончил процедуру регистрации. Т.е. висит диалог с выбором имени пользователя и пароля.
Ошибка исправлена в версии 1.3.1.5
т.к. Ваша обработка предназначена для работы в НЕ монопольном режиме, быть может, стоит внедрить механизм ожидания при ошибке блокировки? на данный момент если таблица заблокирована, обработка просто завершается с ошибкой в сообщениях. Как вариант, если произошла ошибка блокировки, подождать 5 секунд, потом 6 и т.д. а в настройках где-нибудь указать максимальное время ожидания. Ну или жестко прописать минуту или пять минут, например.
(23) Добавил в версии 1.4.1.1.
(0) 1. Привычнее бы звучало «Перепроведение», а не «Повторное проведение»
2. Если бы еще условия на отбор (в случае выбора одного вида документа) по любому реквизиту шапки — было бы здорово
(25) «Повторное проведение» — это 10 попыток повторного проведения в случае ошибки при проведении проведенных документов. 😉 Ошибка при проведении может быть любая: блокировка или отсутвие остатков. Подробнее описано тутhttp://www.infostart.ru/public/18394/blog/post/918/
Над отборами я подумаю…
А можно добавить отбор по измерению последовательности?
(14) Переделал на почасовое восстановление последовательности.
Добавил индикатор прогресса.
В версии 1.5.0.2 исправил ошибку, которая возникала, если прервать восстановление последовательности по Ctrl+Break и после этого снова запустить восстановление последовательности. Ошибка была связана с тем, что после прерывания восстановления последовательности не обновлялись данные о текущем состоянии последовательностей. Ошибку можно было обойти обновив данные о последовательностях по кнопке.
(19) Нашелся ещё один камешек 🙂
Плюс поставил . Но пришлось переписать блок восстановления посл-ти — взял из обработки Проведение по партиям , блок Проведение документов — убрал число попыток в 1.
— добавил возможность автозапуска в файловом варианте с подхватом сохраненых настроек
— если нужно настройки поменять, то прога теперь задает вопрос «Запустить в ручном режиме ?»
Использую для автовосстановления последовательности на сервере ночью из назначенного задания Виндовс. Кстати скорость раза в 3 быстрее, чем в ручном режиме, так как АПИшный интерфейс не используется, а прога запускается в фоне, а на фон у меня кэш в винде 2003.
Может выложить со ссылкой на исходного автора ?
(31) Выкладывай. Я потом ещё что-нибудь добавлю. Например, как в (25)
Может вы лучше скоопериреуетесь и тут выложите общую версию с указанием соавторов? а то потом за двумя следить сразу, и вспоминать, что эта умеет вот так, а другая умеет вот эдак 🙂
Было бы здорово добавить отбор по принципу: проведён, не проведён, и проводить все. Как в стандартной обработке.
еще было бы здорово добавить отбор по подразделению.
нам тоже пригодился бы отбор по подразделению, можете добавить?
(34)(35)(36) Да. В планах есть сделать режим работы с универсальным отбором в версии 2.х. Т.е. отбор по любым реквизитам шапок документов. Но к сожалению пока приходится сдвигать планы.
при скачивании качает версию 1.7.1.1. а в 1с говорит что есть более новая версия и ведет на ту же страницу.
советую добавить что бы вначале доки делались не проведеными
что бы видеть в журнале проблемные доки
Вот так кашернее для сохранения значений: (при этом таблицу видов документов добавить в сохряняемые значения)
Показать
у меня вопрос по восстановлению последовательностей.
возможно ли реализовать установку строгой даты выполнения нужного восстановления последовательностей?
например бухгалтеру требуется за последний квартал и только! но во всех обработках что я видел и имеющихся встроенных решениях есть только конечная дата.
1С УПП 8.1.
p.s.: а за обработку огромная благодарность. такие вещи всегда пригодятся.
(41) Методически всё правильно. Последовательность восстанавливается с той даты с которой она сбилась.
http://infostart.ru/public/18394/files/ и затем восстановить её до нужной, но это методически неверно.
Можно конечно установить последовательность на любую дату
alexk-is, благодарю. я уже прочитал про это, но все равно огромное спасибо.
объяснил это главбуху и она согласилась.
alexk-is, у меня к вам такой вопрос, я конечно не особо может и понимаю но почему бы не добавить возможность восстановить последовательность до определенного документа? а не только даты?
(44) Можно всё. Ну, или почти всё. 🙂
alexk-is, хотелось бы уточнить, вот если в момент восстановления последовательностей, любой из пользователей зашел в документ (датой ранее актуальной восстановленной последовательности) в этот момент и внес какие либо изменения. Чем это чревато? Заранее спасибо.
(46) Последовательность продолжит восстанавливаться с этого документа.
Добавил обработку «Установка дат расчета итогов»
а мне класс
Использую в УТ 10.3. Все устраивает. Немного тормознее штатной — ДА. Но в целом очень даже удобно. Особенно если настроено в базе автоматом закрытие периода (допиливал сам). А один из ответственных пользователей восстанавливает последовательность данной обработкой в закрытом периоде.
Использую . спасибо! очень полезно.
очень удобная обработочка, пользуемся.
спасибо пользуюсь. все устраивает
и установка последовательности на выбранную дату тоже выручает часто, мой главбух любит лазить в закрытом периоде и «нечайно» перепроводить документы
спасибо.очень помогло.
спасибо,пригодилась обработка.
спасибо пользуюсь. все устраивает
и установка последовательности на выбранную дату тоже выручает часто, мой главбух любит лазить в закрытом периоде и «нечайно» перепроводить документы
Насколько я понял, ставите принудительно дату последовательности без перепроведения документов, если не сложно чиркните как, вроде в данной обработке только с проведением…
(56) Вот такhttp://infostart.ru/public/18394/files/
Спасибо, не приметил «слона»: в одной публикации несколько линков…
Удобная и полезная обработка, но требует доработки
А мне понравилась (КА 8.2). Удобно разделение по проведению на организации.
Неплохая обработочка, но для восстановления по партиям все же требуется проводить в монопольном режиме. Плюс ставлю)
(61) В данном случае не требуется. См. (46) (47)
Спасибо большое за обработку.
Могу сказать одно, обработка нужна, если у вас типовая конфа и вы не программист… Обычно такие обработки пишутся для конкретных конфигураций… Но за обработку +, очень хорошая, хотя некоторые моменты под вопросом.
(64) Какие?
Спасибо за обработку. Я «прикрутил» к ней возможность допроводить выбранные типы документов, а также сохранять список документов, которые не провелись, например из-за конфликта блокировок. После перепроведения можно нажать на кнопку и провести только пропущенные документы. Очень помогает после ночного перепроведения)))
добавь проведение по расписанию срочно:)
Спасибо, все работает.
Буду дорабатывать под свою задачу и использовать. Добавлю остановку по времени, чтобы можно было останавливать утром если не успело завершиться перепроведение, отключать регистрацию для обмена.
отличная обработка.
Вначале для восстановления писал свою обработку, но посмотрев вашу понял, что изобретаю велосипед.
Спасибо за обработку пригодилась в работе
Спасибо за обработку. Пригодилась.
Спасибо
помогло
Помоему тоже ничего +1
А на платформе 8.2 будет работать, если конвертировать?
(66) Farsis, а можно потестировать вашу «докрученную» версию?
(77) Так работает же
Прошу прощения — не проверил перед тем, как задать вопрос
Вопрос автору — Планируется ли доработка под версия 8.2 в режиме «Управляемое приложение».
А то, что то с такими обработками для Управляемого приложения туго. Или я не нашел или не туда смотрел. (
(81) Нет. Пока не планируется.
Большое спасибо! Лично мне очень пригодится.
спасиб
alexk-is,
Большое спасибо!!! Очень нужная обработка, особенно когда месяц закрывают :).
Пользуюсь пол года!
Спасиоб!
что то не совсем понятно как ей пользоватся,
все отличии от типовой в возможности не монопольного проведения ??
(93) Достаточно заглянуть во внутрь и сразу будут видны все 143 отличия 🙂
Спасибо. Давно пользуюсь
Большое спасибо за полезную вещь! Перешли на 8-ку и столкнулись с такой необходимостью. Плюсую.
Хотелось бы доработку под версию 8.2 в режиме «Управляемое приложение». Но, в любом случае, и за то, что есть, большое спасибо. Очень, думаю, пригодиться в работе.
Спасибо. Очень полезная и нужная вещь. Давно искал что-то подобное
Очень удобная и практична я обработка спасибо автору
Пригодился бы отбор по подразделению, сделайте пожалуйста…
То что не в монопольном ето хорошо а то запустишь и все не могут работать
Спасибо за создание этой подсистемы ,очень полезная ,особенно для тех кто занимается просто конфигурирование
Спасибо большое автору за обработку, как раз то что нужно.
Актуально для 1С 8.2 УПП?
(105) Да, конечно.
Чет не работает.
открываю установку границ последовательностей, выставляю дату. Все меняет красиво.
открываю проведение по партиям, а там все как было раньше. Может руки у меня кривые? Подскажите уважаемые Доны.
Плюсую, мне нравится