<?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='\
Спасибо!
Вещь знакомая по мисте. Но поскольку там не принято оценивать — ставлю плюсик с чувством исполненного долга. Вещь оббалденная!
Дельно. Плюсуем !!!
Плюсую сразу, без проверки. Где ж ты был раньше!! точнее, чегож я раньше не был на infostarte…
помню эту штуку еще по Мисте. Успешно пользую.
Большое спасибо!
Спасибо, romix.
Успехов в этом и в Новом!
Ваще молодец! Некоторые пытаются паролить дешевые отчетики из 15 строчек, а тут солидные исходники. +1
Столкнулся с описанной проблемой, попробовал плагин. Проблему решает 🙂 Однако все же есть замечание — выгрузка требует наличие человека чтобы нажать кнопочку «Да». А если выгрузка выполняется ночью в пакетном режиме? Хотелось бы иметь возможность настройки выполнения плагина в диалоговом или автоматическом режиме. А в остальном супер! плюсую.
Респект!!
(nemchenko) На праздниках я обновил разработку — теперь она не останавливается при выгрузке, а выдает все сообщения не окном с кнопкой ОК, а в трее. Я несколько раз потестил, но прошу отозваться у кого все хорошо заработает.
Также обновил индикацию при загрузке — она тоже в трее (так кажется лучше — иначе пропадало отображение на белом экране).
А можно, что бы то же самое работало для выгрузки УРБД?
Плюсую. Помогло при создании новой периферийной БД. Выгрузку сделать удалось без помощи посторонних средств (перехватил файл 1Cv77.dat) , а вот загрузку я бы без плагина не сделал.
При загрузке данных в DBF версию зависает на 2 009Мб. Выгрузка проходит нормально!
(jlab13) Так и должно быть — потому что DBF-версия 1С содержит ограничение в 2 гига в расчете на каждый файл DBF.
То есть каждый файл DBF не может быть больше двух гигов.
Есть и еще одно ограничение — один гиг при многопользовательской работе (адреса свыше 1 гига 1С использует для блокировок).
Снятием такого рода ограничений занимался Hogik (на данном сервере есть его разработки и патчи для улучшения DBF-версии).
В SQL версии размер базы не ограничен.
(romix) Проверил на SQL базе созданной с нуля! Застряло на 2 038 из 2 113 (96,42%)!
(romix) Сори все отработало только очень долго после (96,42%) около двух часов!
Есть ли какое — то решение для УРБД?
Пользуюсь уже полгода,СПАСИБО!! А можно ли сделать чтоб в имени файла romix.dat была дата? чтобы не переименовывать его вручную
Выгрузил базу из SQL файл дат получился больше 2 Гб
не могу базу загрузить в дбф. помогите, плиз!
К сожалению не могу скачать, приведенные ссылки все битые, а опробовать очень хочеться, может кто-нибудь поделиться? Заранее благодарен…
Просто дуже класна утилітка.Дякую!!!!
«Также обновил индикацию при загрузке — она тоже в трее (так кажется лучше — иначе пропадало отображение на белом экране).»
А не можете индикацию при выгрузке в трее отображать, а то 1С при переключении на другое приложение перестает в статусной строке что либо отображать.
(+)
При установленном плагине, при завершении конфигуратора, происходит сворачивание 1С-ки в коврик.
Это только у меня одного ? (нет ни одного сообщения на эту тему)
Посмотрел исходники.
ИМХО
Это происходит из-за того, что при загрузке плагина, перехватываются функции из kernel32.dll, а при завершении конфигуратора, ни какого обратного действия не происходит.
Думаю нужно отменить перехват.
Подскажите, пожалста, как можно получить управление в плагине при завершении работы конфигуратора ?
Спасибо
В Windows7 плагин не работает, или я что-то не так сделал? Может какие-то другие действия нужны, или 1С надо как-то по другому запускать — режим совместимости и т.д.
Никто не встречал ошибку перед загрузкой = «Ошибка чтения из архива»?
а то я даже демо базу не смог прогрузить, а очень надо .
(13hohol) При загрузке указывай архив zip, который указывал при выгрузке. Там конфигурация и пустой .dat. После загрузки конфы плагин у тебя спросит, откуда брать romix.dat
(29)
http://infostart.ru/public/77617/?PAGEN_1=1#comm398883
А вот тут я поставлю минус под сообщением!
Т.к. на аналогичное («бредовое») сообщение под своей разработкой ставить минус не очень тактично.
Спасибо. Очень спасло.
Вчера была рутина, обновлял бух. 77 типовую, перед обновлением (почти случайно 🙂 сделал копию методом «выгрузить данные»). Сегодня звонит бух. и говорит «полетел мол справочник такой-то, что делать?». Ну сильно не заморачиваясь отвечаю: «восстановите данные из копии которую вчера делали». Админ местный начинает восстанавливать сразу в рабочую. Звонят через часа два: все висит, база не восстановилась. Ищем с администратором ближайшие резервные копии, их есть за октябрь месяц прошлого года. Забираю архив к себе начинаю танцы с бубном. Есть архив -не восстанавливается, была рабочая база с битым справочником — и уже нету. Гружу на сервер с SQL — висит. Загрузил восстановлением два сервера — ничего. Ближе к обеду нашел публикацию на ИС, запустил, и случилось, можно сказать, чудо — база восстановлена.
Еще раз спасибо.
ПОставили Винду 2008 x64 и SQL 2008 x64 на старом серваке спасибо плагину всё выгрузи, а вот в новом загрузить не можем не работает плагин x64 может что подскажете?
Идея и воплощение выше всяких похвал!
Только возникла маленькая загвоздка: для выгрузки террабайтной базы, надо где-то радобыть ещё террабайт свободного места на том же диске 🙂
Нельзя ли добавить выбор места для *.dat файла?
Отличная штука. В последнем релизе отключено предупреждение и по умолчанию файл остается в каталоге в виде romix.dat, а можно ли как нить сделать, чтобы он всё таки запаковывался и удалялся из каталога — т.е. штатно
планируется ли поддержка windows 7 и/или windows 2008?
Спасибо, скачал для подстраховки. К счастью помогло удаление помеченных на удаление объектов, выгрузил штатным способом.
планируется ли поддержка windows 7 и/или windows 2008?
Проблему с Win7 решил. Как только получу разрешение автора — опубликую здесь, или рядом…..
Если это конечно еще актуально.
Очень-очень актуально!!!
Никак не могу на win 2008 загрузить большую базу выгруженную!
Очень-очень актуально!!!
Никак не могу на win 2008 загрузить большую базу выгруженную!
Сейчас пытаюсь выложить. Оформил публикацию — модераторы завернули «из-за отсутствия картинки, описания» и внимание!!!! — «СКРИНШОТОВ». Сделать им снимок окна конфигуратора что-ли? 🙂
О блин! Не прошло и пол-года 🙂http://infostart.ru/public/96481/
ОООО, спасибо тебе, добрый человек!!! Всю ночь промучкался. Причем выгрузка у меня прошла. А загрузка не работает. Я пытаюсь файл подпихивать — он начинает грузить, а когда доки грузит — вылетаяет с ошибкой «Ошибка в поиске в неизвестном файле». Вылечится это , как думаете?
(41) ZabbaZabba, А как ты умудрился выгрузить и при загрузке файл подкинуть? 1С ведь там паузы не делает. Ну выгрузку чисто теоретически можно поймать на том, когда он начала архивировать но еще не удалил DAT. Хотя это нужно еще тем терпением запастись. А при загрузке как? Тоже «ловить момент»?
А вылечится или нет ….. у меня выгрузка нормально проходила и загрузка тоже. Но загрузку я пробовал еще под WiinXP. Хотя теперь разницы быть не должно — принцип там один и не зависит от версии ОС.
выгрузил я с помощью плагина.
а на новом сервере винда 2008. там плагин не работал. а когда делаешь загрузить данные — указываешь откуда, он спрашивает «что все данные будут замещены» итп. Так в этот момент — оказывается 1с уже zip файл распаковала в каталог иб/uz0000 — там 3 файла — md, dat и usr. Так вот здесь то я его и подменял.
все сработало, спасибо
Молодец! Некоторые пытаются паролить дешевые отчетики из 15 строчек, а тут солидные исходники. +1
Здравствуйте уважаемые!
Столкнулся со следующей проблеммой: База ДБФ 12Гиг комплексная (это не я ее довел, я только три недели работаю в этой конторе). Выгружаю с помощью плагина от Romix. Получается дат файл 5.5 гиг. Гружу в SQL базу (SQL 2005 enterprise). Загрузка проходит нормально, без ошибок, файл mdf получается 12 гиг (как бы маловато будет). ЗАхожу в загруженную 1С — а там пусто. Ни документов, ни итогов, ни справочников. Смотрю таблицы в SQL — записи есть. Сейчас запустил ТиИ, но ждать результата часов 10-15.
Может кто сталкивался с подобной ситуацией и подскажет куда копать?
(46)
Вячеслав (Kurya).
Попробуйте загрузить в пустую DBF-ную базу. Чего получится?
Спс. Проблемма решена. Как говорится сам дурак. Скопирорвал в папку с загруженной конфигурацией различные папки и файлы из старой. В том числе и cfg 🙂
Естественно при запуске 1С создались пустые файлы ДБФ.
Добрый день
Дайте ссылку на публикацию
Где скачать плагин Ромикса?
Подгружала плагин Romix. Загрузка в пробную базу прошла. У меня Win2008 64, sql 2008 64. 1с v7.7 релиз 27. bkend пропатченный, но выгрузка не работает, так же дает ошибку — ошибка при чтении файла, вообщем как и без плагина. Ваш плагин еще не опробовала, так как хочется услышать мнение тех, у кого этот плагин заработал.
Пришёл и мой час 🙂 — буду пробовать обойти гограничение в 2 Гб для файла .DAT
Спасибо romix за информацию — а то я уж думал, что иначе как обрезать базу других вариантов не будет…
У меня не получается выгрузить переферийную базу первый раз (большая выгрузка). Плагин кажись не срабатывает в этом случае. Так ли это? Кто то пробовал выгружать базу не из меню «Администрирование/Выгрузка данных», а из «Администрирование/Распределенная ИБ/Управление/Выгрузить данные» для конкретной переф. базы ??
Отлично! Спасибо, все работает. Windows Server 2008 R2 x64 база 6 гигов!
Замечательно плагин работает, правда, ускорения процесса по причине отказа от архивирования не заметил, но это и не важно…
Спасибо за разработку…
(53) vadimlp77:
У меня не получается выгрузить переферийную базу первый раз (большая выгрузка). Плагин кажись не срабатывает в этом случае. Так ли это? Кто то пробовал выгружать базу не из меню «Администрирование/Выгрузка данных», а из «Администрирование/Распределенная ИБ/Управление/Выгрузить данные» для конкретной переф. базы ??
Та же проблема. Может кто-нить уже разобрался? Жутко не хочется ставить дельфи и ковырять исходники…
те на выгрузку в периферийную базу этот плагин не распространяется?
(knight)
Меня несколько раз спрашивали, можно ли применить к созданию периферийной базы УРБД, но мне как-то не удавалось сосредоточиться как следует на этой теме, да и пользователи обходили проблему другими средствами (как вариант — можно отгружать в первой выгрузке не все метаданные сразу).
По хорошему эту проблему нужно один раз решить на уровне фирмы 1С, со своей стороны я готов предоставить фирме 1С все свои наработки по этой теме, если потребуется, — безвозмездно, а для этого нужно от кого-то из пользователей (например от Вас) с этой проблемой письмо с идентификационным номером в линию поддержки hline@1c.ru. Там изменение таково: убрать через ини-файл архивирование файла дат и заменить функции чтения-записи текстовой строки в файл на простые системные, где нет ограничения 2 или 4 Гб.
(58) Вряд ли они станут заморачиваться. Они развивают 8.3, а с 7.7 связываться не будут, имхо.
(59) Решение именно этой проблемы поспособствует развитию обеих систем, т.к. выгружают большие базы обычно в SQL, а где SQL там и 8.3. Альтернативой являются ежегодные обрезания базы, а обрезанные базы не создают благоприятных предпосылок к переходу на более мощное аналитическое ПО.
romix,
спасибо Вам большое за все Вашы труды — очень помогли в сложных ситуациях. Слава Богу, что есть такой человек. 🙂
Не могу понять ,почему то при загрузке вылетает конфигуратор… 🙁 мож кто знает в чем причина?
(61) Спасибо 🙂
(62) Ну может константу там нужно в пустой базе создать (как написано в инструкции). Или попробовать на более старой версии ОС выполнить загрузку (у меня тестировалось на Windows XP).
Самый большой недостаток этой библиотеки в том, что ее нельзя запустить опционально. У нас наряду с большой зарплатной базой есть куча мелких баз. И очень неудобно каждый раз выгрузку переделывать. Переименовывать romix.dat и сохранять файл в архив выгрузки под именем 1cv77.dat
у меня тоже база весит 10 гигов, при выгрузке получилось 4,3 гига, в SQL сначала пробовал в связке секретный релиз 7.7.027.1, не получалось, после 3% просто процесс загрузки базы останавливался. ПО на котором пытался загружать базу (выгрузка из DBF базы прошла без проблем) Win 7 + 1C 7.7.27.1 + MS SQL 2014 (2008 совместимость).
я решил что в пропатченом BkEnd.dll дело, поднял виртуалку с WinXP + MS SQL 2000 PE + 1C 7.7.025 (потому как разработчик использовал именно 25 релиз при тестировании), но и тут не выходило ничего приложение 1С просто вылетало на том же самом месте.
и только благодаря комментам в этой ветке я нашел решение своей проблемы загрузки.
у меня был добавлен еще один общий реквизит (строковый реквизит ограниченной длины 50 символов), который как раз оказался последним.
и как только опустил общий реквизит Комментарий и сделал его последним. выгрузка пошла дальше
Сделал все по иструкции не выгружается в dat ! в чем проблема , выгружается база в простой стд ZIP , не могу понять куда копать , файл патчил , др файл подкладывал , папку плагин создавал , по идее плагин запускается , проверял подменой пути , он сразу ругается , но при выгрузке получаю на выходе стд ZIP…. помогите ….
(67) в этой папке вы получаете zip, а в папки с базой у вас лежит файл romix.dat.
на 7-винде плагин не запускается(не задет вопросов)
(69) на 7 винде работает при правильной установке, проверено
(70)
так вроде, двоякой установки файл редми который идет вместе с плагином не подразумевает, релиз 27 sql 2008, винда 7-я и ничего не спрашивает(((( ПРОВЕРЕНО!!!!
Восстановил файловую базу из dat файла! Обычная загрузка данные поднимала не полностью. Просто громадное спасибо! Прога отработала под windows 10.