<?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='\
это напоминает статью с мисты, вот зачем справочники чистить, на мой взгляд многие справочники должны остаться, как и регистры сведений
(1) Очищаются только объекты которых НЕТ В СОСТАВЕ ПЛАНА ОБМЕНА, как правило там находятся настройки обменов, настройки пользователей и т.д. Для каждого узла они разные и Вам все равно понадобилось бы их изменять и удалять.
К примеру у меня база ведется уже 2 года, весит 3гига, на ней 20 распределеннок, так вот, я жду часа полтора — два (сервер стоит на i7) на каждый образ, и что самое интересное, образ конфы создается минуты 3 — 5, а вот данные перегружаются два часа.
Вопрос — как это спасет например меня, если придется ждать тех же 2 часа пока перегрузятся данные?
(3) Копирование файла базы данных занимает минуты 🙂
(4) кажется понял принцип, жаль мне не подходит 🙁
😀 Наименования узлов порадовали. Москва у вас не центр? Заграница?
Интересная мысль.
Наверное, это можно было бы и вручную сделать, но в любом случае — обработка проще.
Но самое интесное — это сама мысль — не создавать образ стандартным способом, что, действительно, может быть долго, а просто скопировать центральную базу данных, и из нее сделать периферийную.
Плюсанул.
(1) ага… статья УРБД в 4 шага более подробная, а обработки по управлению узлами тут публиковали более удобные….По незачет….
Комментатор в (8) прав.
(8) Во первых в статье «УРБД в 4 шага» о данном способе ни слова не сказано, во вторых покажите мне здесь такую же обработку с данным функционалом.
(10) Ага…по поводу названия статьи сорь… Не та статья, где-то видимо перепечатку видел с дополнением… Там и УРБД в 4 шага и вот эта статья были вместе
http://www.kb.m***a.ru/article.php?id=325&
Альтернативное создание начального образа в УРБД
А по поводу обработки …Вот напримерhttp://infostart.ru/public/20819/
(11) Я делал обработку по методике из ИТС, она несколько отличается от той, что в статье. Странно сравнивать готовую обработку со статьей, которую надо найти, разобраться в ней и еще ручками поработать. По приведенной Вами ссылке на обработку, нет даже упоминания на альтернативный способ создания узла.
(12) а я и не говорил, что в обработке есть ссылка…просто имея статьи и данную обработку (если лень самому писать) можно сделать всё то же самое + гибкость для сложных случаев… Вот не люблю я обработки с одной «волшебной» кнопкой…Не прочитай эту статью, я нифига бы не понял, а что собственно делает это замечательная обработка с куцым описанием… И менее опытные пользователи тем более не поймут, а чего они там делают этой кнопкой. Поэтому и незачет… Если будете упорствовать — влеплю минус за отсутствие описания…
Ещё раз. Дайте внятное описание ЧТО и ЗАЧЕМ делает обработка, а не просто инструкцию куда ткнуть.
(13) Подробное описание действий обработки, которые можно повторить ручками находится в … — правильно в самой обработке, только нажмите кнопку Help. Вот Вам вторая «волшебная» кнопка. 🙂
(14) И правда, описал бы проблему при обычном тормозном и монопольном создании.
Намного было бы легче воспринимать непродвинутым пользователям.
(14) которую нужно скачать потратив рейтинг
(15)(16) Проблема только одна, она написана в моем заголовке «ждать часами». Приводить здесь полную методику с ИТС считаю нарушением копирайта 1с и правил инфостарта.
Хотел бы отписать пару комментариев и был бы рад если поделитесь своими мыслями.
Есть база размер 6ГБ. есть 8 подчиненных узлов. При попытки создания подчиненного узла(как описано выше), с помощью данной обработки, проходит 45 минут после чего выдается ошибка (Внутренняя ошибка компоненты DBENG8 ).
При повторной попытки, прошел час и выскочила ошибка с просьбой завершить работу.
Начал создавать начальный образ стандартным способом, после 50 мин РИБ была готова.
Пробовал данную обработку на другой базе, размером 400 мб. Все работает и создается образ довольно быстро.
Вопрос: в чем может быть проблема? чтобы избежать в дальнейшем такой проблемы. И почему обработка в одной базе создает распределенный узел за пару минут, а в другой тратиться на это час?, Проблема с обработкой или базой?
(18) Скорее всего вам нужно вложения электронных писем и база станет поменьше
(18) Вероятно, сбой происходит при чистке объектов не участвующих в обмене. Попробовать отловить отладчиком на каком объекте возникает сбой или в обработке закомментировать код удаления этих объектов.
Спасибо всем. Помогло внутреннее тестирование и исправление. при тестировании вылезли ошибки в плане обмена.
(18) встроенный почтовый клиент не используется. Просто база такая большая, ведется с 7 года.
Помогло и не раз!!!!
Благабдарю…. ))))
у меня база весит 4.5 гига и браз создается часов 14 после чего пишется что конфигурация не соответствует…
а с этой обработкой все сразу взлетело за минуты :)))
PS +
Хорошая обработка.
Но есть небольшие недочеты.
1. в случае каких-то ошибок при работе обработки (см.ниже) остается включенным монопольный режим 🙁
ИМХО нужно
а) либо через попытку ловить ошибки и отключать монопольный режим
б) либо просто добавтиь кнопку на форму для отключения монопольного режима.
2. возможны ошибки при работе обработки
а) если конфа подключена к хранилищу, то создать главный узел нельзя, и обработка вылетит и далее п.1
б) если у пользователя нет прав на удаление узлов в плане обмена, также будет выдана ошибка в процессе работы и снова п.1
для исправления можно до начало основной работы проанализировать права на удаление объектов и сообщить пользователю
3. далее после ошибок удалены прочие узлы и данный узел уже является главным. Соответственно создание начального образа невозможно 🙁
Приходится опять загружать копию и все по-новой.
т.е. скорость работы все-таки слабая получается на самом деле.
(24+) к п.2б
// — Артур — 11.06.2010
Если НЕ ПравоДоступа(«Удаление», ПодчиненныйУзел.Метаданные()) Тогда
Предупреждение(«Нет прав на удаление узлов для данного плана обмена <«+ТекПланОбмена+»> «);
Возврат;
КонецЕсли;
// —завершение
А что делать если центральная база весит более 20 Гб? 😮
(26) Вот для таких баз и предназначена эта обработка 🙂
Обработачка интересная. Вопросик. В данный момент столкнулся с проблемкой. Главная база 55 гигов, распределенка 32 узла, мне нужно из главной базы зделать еще одну но вышестоящую, воть…
(28) Попробую с ходу ответить не думая :)…
1.Делаешь узел, далее копию базы.
2.Эту обработку применяешь для одной из баз.(только ее — обработку модифицировать придется — она чистит другие планы обмена и параметры обмена — их надо убрать)
3.В другой базе ручками вычищаешь старые обмены и оставляешь только твой один.
А есть такая же только под 8.2 ?
Очень помогает! Спасибо.
создание УРИБ в восьмерке стало ещё интереснее, начали работать в октябре с базой, перенесли все документы из 7.7 с начала года, дописали программу, а потом решили сделать удалённую базу, и столкнулся с проблемой что при создании базы программа вываливается с ошибкой и закрывается. Надеюсь поможет данная обработка решить проблему.
на 8,2 заработает? и если план обмена полный что поудаляет?
на 8.2.14.519 и КА 1.1.14 отработала нормально,правда долго,часа 4 чего-то шуршала,но в итоге сделала узел, что считаю приемлемым результатом,т.к. сама 1с при создании образа вылетала с ошибкой рантайм с++. спасибо за обработку
Автору респект! Обработка сводит создание подчиненного узла к мизерным временным затратам: база весит 4 гига — 3-4 минуты и вуаля!
Годная, хорошая обработка, а то два дня убил на штатные методы создания периферийки
Обработка создает узел быстро но дело в том что он оставляет доки с остальных узлов и получается что узел с мусорам.
А как насчет доработки обработки? В принципе обработка очень нужная и полезная.
спасибо автору!
а у меня вываливается:
ТекУзел.Записать();
{ПланОбмена.ПоМагазину(155)}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер ‘1’)
ПланыОбмена.ЗарегистрироватьИзменения(Ссылка, Метаданные.РегистрыСведений.ИнформативныеОстаткиТоваровПоМагазинам);
очень помогла обработка, даже спасла. Спасибо огромное автору
Большое спасибо за обработку.
На дописанной базе УТ 10.3.18.3 (8.2.14.540) отработала примерно за 30 минут. Размер базы 2,5 Гб.
Отработала нормально после проведения тестировани и исправления конфигурации с удалением ссылок на несуществующие объекты.
Очень помогла Ваша обработка. Спасибо за труд!
Очень помогла Ваша обработка. Спасибо
Помогло внутреннее тестирование и исправление. при тестировании вылезли ошибки в плане обмена.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++
Буду проверять . По коментах вижу что все ок. Я ведь обычными средствами выгружаю , база весит не много , 500 МБ , но все равно до кон
(47)Вероятно, сбой происходит при чистке объектов не участвующих в обмене. Попробовать отловить отладчиком на каком объекте возникает сбой или в обработке закомментировать код удаления этих объектов.
В следующей версии сделаю эту возможность опциональной.
У меня не работает на ЗиУП 2.5.60.1 (8.2.14.540) Пишет внешняя обработка не может быть прочитана текущей версией программы, хотя посты сверху убедили меня что все будет работать, в чем может быть причина?
Я не понимаю, что мешает держать специальный подчиненный узел в виде файловой базенки? Можно периодически обменивать ее, а когда возникает необходимость — копировать, добавляя в центре новый узел и перенастраивая в в полученной копии номера узлов и изменив номера сообщений встроенной обработкой. Это реально быстро. Добавлю — спасибо мисте за столь ценный совет.
Вот если бы кто сделал что-то подобное по Организации. 🙂
База УТ 10.3.6.8 протестирована и исправлена. Весит 5 ГБ. Узел создался за 1 минуту. Очистились: лишние планы обмена, история обменов, настройки обменов и лишние пользователи. Создать нужных пользователей, их настройки и настроить их дополнительные права, а также настроить обмены — пара пустяков (кстати, при стандартном создании узла эту работу тоже надо сделать!). Отличная работа. Респект!
Отличная обработка, просто чудовищно выручила, с огромной базой просто нереально было создать образ, чего только не предпринимал, какие только ошибки эска не выдавала, убита напрочь ночь, и тут такая замечательная обработка, решила мою проблему за секунды. Все прекрасно работает! Человеческое спасибо автору.
Добрый день.
Обработка подзависла на какое-то время. База УПП, 120Гб.
Я бы предложил доработать:
1 Сделать чистку, чего-либо, опциональной на форме.
2 Т.к. обработка может отрабатывать продолжительное время, то необходимо, обязательно, Выводить сообщения вида:
«….Удаляются записи плана обмена, справочника и т.п.»
…..Удаляются записи справочника… »
и т.п.
Перед началом обработки, необходимо отключить конфигурацию от хранилища! Иначе обработка прерывается с ошибкой.
обработка хорошая, создать РИБ удалось — движок 8.3, конфигурация УТ 10.3 (да-да)
Обработка при удалении данных регистра сведений вывалилась с ошибкой «недостаточно прав доступа».
Но узел вроде создала… будем смотреть дальше.
Респект автору!
Обработка реально экономит время и нервы.
Скачал и опробовал при создании узлов по магазину — все ОК.
Однако при создании узла обмена «Синхронизация данных через универсальный формат»
вывалился с ошибкой: «Ошибка исключительной блокировки информационной базы.»
1С:Предприятие 8.3 (8.3.7.1917)
Розница, редакция 2.2 (2.2.2.12)
Права все есть…
Прошу посмотреть что не так…
С уважением,
rimbo
(59) такое может быть, если не отключено выполнение фоновых задач.
(59)
На фоновое задание попал. Обмен скорее всего по расписанию настроен и в этот момент запустил обмен в ручную.
Статью с Мисты это конечно напоминает, но……
Вроде все просто в статье, поменяй местами узлы и будет счастье, а у меня никак не получилось изменить код и название текущего узла. отсюда траблы с обменом.
Скачал обработку и за 3 минуты настроил подчиненный узел в Рознице 2.2, все поет все летает, а я целый день убил на танцы с бубном.
Полезная обработка.
Народ подскажите пожалуйста, сам не могу вспомнить где ковырять.
После создания этой обработкой подчиненного узла, надо изменить реквизиты базы, а то вверху продолжает висеть надпись из главного узла. да и в документах поступления автоматом вбивается не текущий магазин а другой, приходится ручками много править.
помню что где то в настройках надо подправить, а забыл где ?
Ошибка исключительной блокировки информационной базы. постоянно такая ошибка фоновые отключены. база файловая.
(64) а в списке активных пользователей никого лишнего нету?
Вылетает на ошибке: РЕГЛАМЕНТНОЕ ЗАДАНИЕ НЕ НАЙДЕНО, ВОЗМОЖНО УДАЛЕНО ДРУГИМ ПОЛЬЗОВАТЕЛЕМ
{ВнешняяОбработка.СозданиеПодчиненногоУзла.МодульОбъекта(56)}: Ошибка при вызове метода контекста (Удалить)
Узлы.Ссылка.ПолучитьОбъект().Удалить();
по причине:
Ошибка при выполнении обработчика — ‘ПередУдалением’
по причине:
{Справочник.СценарииОбменовДанными.МодульМенеджера(238)}: Ошибка при вызове метода контекста (Записать)
СценарийОбменаДанными.Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине:
{ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(837)}: Регламентное задание не найдено.
Возможно, оно удалено другим пользователем.
ВызватьИсключение( НСтр(«ru = ‘Регламентное задание не найдено.
База файловая Розница — 2.2.6. — все синхронизации удалены. Фоновые отключены
вываливается ошибка при очистке
Доступ. Отказ в доступе
Регистр сведений. Версии подсистем областей данных
Право изменение.
а так все ок
Не работает в рознице 2.2.7.42
(70)
Происходит дополнительно обработка данных при создании узла в которой и происходит ошибка.
Вероятно эта обработка вызывается при условии заполнения определенных реквизитов. Попробуйте не заполнять эти реквизиты, например там есть «Дата свертки» (Розница 2.2) или если не дает сохранить узел из формы — очистить эти реквизиты потом, можно PowerTools. И только потом запустить Создание узла.
Вываливается ошибка, нарушение прав доступа..
Правда запускал обработку на серверной базе, может в этом дело..
Для того чтобы отладить ошибку нужен режим отладки, но если войти конфигуратор то обработка требует монопольного доступа…
в общем добавил в место ошибки Попытку-Исключение. По итогу имеем вроде бы образ, но в нем полно данных. Как документов всех магазинов так и заполненных регистров. Автору спасибо за то что дал хоть какую то альтернативу.
(75) если нетрудно, а в каком месте нужно добавить попытку-исключение?
(76) в модуле обработку, в процедуре суСоздатьОбразПодчиненногоУзла
править следующий код, в приложении скрин
Правда узел я создал из файловой базы, но более слабом пк, чем сервер на котором крутилась серверная база.
(77) спасибо, пригодится
также полезным может быть отк/подкл узлаhttps://infostart.ru/public/706733/
)60)Приветствую.Нужна эта обработка.Смысла нет покупать подписку из за одной обработки.Не могли бы вы скинуть на почту koop-kruf96@mail.ru.Буду очень признателен.