Автоматический бэкап средствами 1С, который обязательно сделается (без перезапуска сервера).




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

98 Comments

  1. Re:аниматор

    При скачивании пишется файл как «Установка»

    з.ы. firefox

    Reply
  2. hopter

    А зачем делать бэкап средствами 1с, если можно сделать средствами sql-сервера?

    В чем подвох?

    Reply
  3. a-novoselov

    (2) Подвох в том, что .dt файл можно развернуть в любом другом сервере БД без проблем, хоть в файловом варианте. Архивы весят в 20 раз меньше, чем бэкап средствами SQL (хранить историю базы в SQL бэкапах никакого места не напасешься, темболее оно ценно на рэйд-массиве), также получается 100% гарантия целостности базы.

    У нас бэкапы обоими средствами делаются одновременно (бекап средствами 1С и полный бэкап SQL выполняется примерно одинаковое количество времени), если на время SQL бэкапа база будет заблокирована, то SQL сервер будет только за 🙂

    Reply
  4. hopter

    (3) Спасибо.

    Reply
  5. jkzx

    -Архивы весят в 20 раз меньше, чем бэкап средствами SQL …(2)

    А вы не пробовали жать бэкап ? У меня жмется тем же раром и вес после этого сопоставим с .dt

    Reply
  6. a-novoselov

    (5) Понятно, что можно сжимать. Но когда рабочий сервер MS SQL, тестовый PostgreSQL и каждому разработчику нужна еще локальная файловая копия, то без .dt файлов никак не обойтись.

    Reply
  7. imagoman

    Спасибо! скачал, сформировал, создал задачу — седня в полночь сделается, утром проверю 🙂

    Reply
  8. alexchebanenko

    Еще бы такое под 7.7 😥

    Reply
  9. a-novoselov

    (7) Проверьте, стоит ли COMConnection на сервере.

    Reply
  10. bulpi

    1.Файл скачивается с расширением chm. Пришлось переименовать.

    2.Насчет «разрывает абсолютно все соединения» это Вы погрячились. А зависшие фоновые задания?

    Reply
  11. bulpi

    А это что еще за творчество :

    Процедура ПутьАрхивовОчистка(Элемент, СтандартнаяОбработка)

    ПутьАрхивов = «»;

    КонецПроцедуры

    Это к чему ????????

    Reply
  12. a-novoselov

    (10)

    1. Это к Доржи лучше обратиться, выложено все нормально.

    2. Все соединения на всех процессах, кроме COM гасятся, фоновые задания в том числе.

    (11) Это чтобы кнопка очистки в элементе управления работала)

    Reply
  13. bulpi

    (12) «Это чтобы кнопка очистки в элементе управления работала»

    Я не понял, это юмор такой , что-ли? Вы уберите эту фигню, а то кто-нибудь на 1с-говнокод запостит.

    Reply
  14. a-novoselov

    (13) Да, действительно без этого работает. А в Си++ и в Дельфи не работало без кода…)) Изначально было:

    Процедура ПутьАрхивовОчистка(Элемент, СтандартнаяОбработка)

    ПутьАрхивов = «C:»;

    КонецПроцедуры

    Reply
  15. sound

    Нормально, только надо было предупредить что оно юзера создает

    Reply
  16. alexk-is

    (15) Про «юзера» написано тут http://infostart.ru/public/19363/ 🙂

    Reply
  17. sound

    (16) то есть чтобы понять, что там еще может произойти нужно пройтись по всем ссылкам? Да тут каждая четвертая обработка — часть другой, взятой тоже где-то тут 🙂

    Reply
  18. alexk-is

    (0) Алексей, вот видишь. Говорил я тебе: «Поработай над описанием»… 🙂

    Reply
  19. taishy

    А не полетят ли сохраненные настройки пользователей, которые обычно слетают, когда 1Ска закрывается не по воле юзера?

    Reply
  20. Legioner39

    Важно: скрипт работает только если на сервере установлен компонент COMСоединение (по умолчанию не ставится). Чтобы проверить, заходим на сервере 1С в панель управления Установка удаление программ Сервер 1С Предприятие Изменить… Если нужно, добавляем COMСоединение.

    У меня нет такого пункта в изменить… как можно еще это настроить?

    Reply
  21. Abadonna

    (8)

    Еще бы такое под 7.7

    http://infostart.ru/public/66153/

    я чего-то в свое время снес её, сейчас опять положил, погляди.

    Reply
  22. a-novoselov

    (19) Большинство пользователей после установки блокировки успевают отключиться.

    (20) Полностью переустановить сервер. Сперва снести, потом выбрать при установке этот компонент. Но что-то с трудом вериться, куда пункт изменить-то мог подеваться? Это помойму стандарт еще со всремен появления «Windows Installer».

    Reply
  23. Garstag

    Поддерживаю насчет отсутствия СОМ-соединения в установочном меню. У меня версия платформы 8.2.10.73, похожий скрипт прекрасно отрабатывает интерактивно, но почему-то виснет в момент создания СОМ-соединения под шедулером, даже если у пользователя права Доменного Администратора.

    Сервер — 2008 R2 х64. Если кто-то сталкивался с этим, подскажите, плиз, куда копать?

    Reply
  24. taishy

    (22) Бэкап и прочие «еженочные» процедуры проходят около 00:10. Много юзеров забывают отключать платформу(да, комп на ночь не выключают).

    Reply
  25. a-novoselov

    (24) Предлагаете локально на каждый комп заходить и корректно 1С-ку тушить?)) У них будет сообщение, что соединение разорвано администратором.

    (23) Да надо пользователю, из-под которого бэкап стартует, дать право выполнения DCOM операций при невыполненном входе в систему в служебной программе «Управление службами компонентов»

    Reply
  26. Garstag

    (25) А где бы подробней почитать, в каком конкретно месте мне надо устанавливать права локальному пользователю в «Component Services», а то там можно такого наворотить по незнанию…

    🙂

    Reply
  27. a-novoselov

    (26) В журнале событий Windows посмотрите ошибки по Distributed COM там конкретнее чуть пишется, или http://ru.wikipedia.org/wiki/Component_Object_Model там ссылки на MSDN есть.

    Reply
  28. Garstag

    (27) Нет никаких ошибок в журнале событий, а скрипт упорно виснет в момент создания v82.COMConnector

    Reply
  29. I_G_O_R

    Преимущество бэкапа средствами SQL — не надо выгонять пользователей. А если отключать всех пользователей, на хрена тогда парить сервер? обычным copy копируем файлы и архивируем если надо, развернуть будет тогда вооще быстро, т.к. разархивация несравнено быстрее архивации. А если база большая, можно на выходных делать полный бэкап а всю неделю(и даже в обед, если сильно надо) архивировать журнал транзакций. И вообще выгонять насильно(принудительно отключать) пользователей плохая идея, бывает потом глючит и нужно потом кэш на каждом компе очищать.

    Reply
  30. a-novoselov

    (29) При бекапе средствами SQL, во-первых нельзя разверноуть базу в файловом варианте либо на другом SQL сервере (IBM, Postgres). Во-вторых замечен глюк при развозворачивании базы из SQL бэкапа теряются пользователи ИБ, т.е. справочник «Пользователи» полный, а список пользователей ИБ наполовину пустой. Хз как лечить…

    (28) Не знаю, на 82 не тестировал, но на 81 глюк лечится добавлением пользователя, из под которого запускается скрипт (Администратор) в группу «Пользователи DCOM» и установкой COM-соединения на сервер.

    Reply
  31. Kiber_

    Я вот чего не пойму…

    Почему публикация называется «кторый обязательно сделается (без перезапуска сервера)»?…

    Если допустим поднять com-соединение к базе, и «забыть» его закрыть, разве бэкап сделается?

    Или если места на диске не хватило… Такое тоже ведь возможно, верно?

    Если честно, думал здесь какой-то механизм повторных попыток бэкапа реализован…

    Но идея со Scripts Encryptor’ом весьма достойна. Хоть какая-никакая, а защита пароля…

    Reply
  32. a-novoselov

    (31) Да, чот переборщил чуток сназваньем… Если метеорит в сервер попадет тоже бэкап врядли сделается… Здесь рассчет на то, что пользователи могут конфигуратор открыть и оставить на ночь, или окно с вводом пароля (когда блокировкой не викидывает, а соединение есть), а если программист COM-соединение забыл закрыть или админ за свободным местом на сервере не следит то это уже проблеммы другого уровня и бороться с такими проблемами эффективнее административными мерами а не программными.

    Reply
  33. privet2004444

    Спасибо большое 😀 Все прекрасно работает

    Reply
  34. a-novoselov

    (33) А плюсануть, када все прекрасно? 😎

    Reply
  35. privet2004444

    еле + нашел 😉

    Reply
  36. privet2004444

    еще бы раза три плюсанул, но не дает … придется другим порекомендовать 😀

    Reply
  37. 1vasia1

    Зачёт полный! 🙂 Реально отрубает всех. Я долго маялся с этим, а тут готовое решение.

    Reply
  38. beregnov

    Большое спасибо! А как можно реализовать такоеже но с двумя серверами 1С Предприятия? 8.1 ИмяСервера, 8.2 ИмяСервера:1641. Буду очень признателен.

    Reply
  39. a-novoselov

    (38) В каждой базе запустить обработку — для каждой базы будет свой скрипт vbs.

    Reply
  40. beregnov

    Нет не получается! Я думаю проблема в ИмяСервера:1641 (1641 — это порт!!!) это к томуже кластер 1С 8.2

    Reply
  41. garaevilnur

    для 8.2 не работает. Если галку не компилировать не ставить выдает ошибку записи файла. win2008 sql2008

    Reply
  42. garaevilnur

    гоню…все супер работает!!! огромное спасибо!!! +

    Reply
  43. Fuego

    Я делаю резервирование средствами MS SQL каждый день: полная копия — ночью, и в рабочее время сохраняю цепочки журнала каждые 15 минут. И это конкретно работает. DT-шник мне нужен, чтобы загрузить «свежие» данные в локальные копии баз команды разработчиков. Но даже ради этого я не готов жертвовать стабильностью. Я делаю восстановление полной копии в «тестовую» базу, а из неё выгружаю dt-шник. А также стоит отметить, что это есть и тестовая версия на сервере. DT-шник нужен не каждый день, и насильное отключение пользователей от БД — тоже не дело. Тогда уж выключайте сервера на ночь, и пользователи приучатся завершать все открытые окна… В старых типовых конфах есть «выгонялка» — после доработки очень даже хорошо работает (на случай, когда нужна реструктуризация БД). А копии SQL в лёгкую сжимаются любым архиватором. У меня всё автоматизировано, и архивы 7zip хранятся за последние 3 месяца — постепенно удаляются. Правда, для такой автоматизации скрипты типа js и vbs не помогли — писал прогу на С++ (хотя, больше склонялся к с++ из-за удаления старых резервов в корзину). И ещё раз повторюсь — это конкретно работает, и без ущерба психики пользователей.

    Reply
  44. Diversus

    (43) в MS SQL 2008, кстати, появлиась возможность сжатия резервной копии, поэтому можно не делать архив 7z из бэкапа, а настроить, чтобы бэкап сжимался

    Reply
  45. iceflash

    (44) А в постгрес давно есть возможность изменения формата бэкапа, сжатия, или вообще перенаправление потока=)

    Reply
  46. iceflash

    Но собственно автор говорит просто о возможности более быстрого «обмена» бэкапами между разными СУБД, и это действительно удобнее, в данном случае.

    Reply
  47. Mishka_78

    Спасибо. Использую уже более полугода на 8.1 — все замечательно. +500

    Reply
  48. nikdn

    Спасибо, очень помогла в работе!

    Reply
  49. Bolik13

    Спасибо. Пригодилось.

    Reply
  50. Dethmond

    Давно искал подобное решение, спасибо огромное!

    Reply
  51. a-novoselov

    (40) Сделал отдельную обработку для 8.2

    Reply
  52. opiumdx

    Спасибо! Сейчас скачаю и проверю как отработает в ночное время) у нас в базе постоянно кто-то висит…

    Reply
  53. DanilovaOlga

    (51) А где эта обработка? Мне очень надо!!!

    Reply
  54. DanilovaOlga

    Извините, разобралась, не туда нажала…

    Reply
  55. DanilovaOlga

    Надеюсь она меня выручит …. Оооочень надо …

    Reply
  56. DanilovaOlga

    Скачала теперь для 8.2, но увы… выдается окно:

    Ошибка: descr=Сервер недоступен (Не отвечает, завершается аварийно или порт занят другим приложением) line=542

    file=ScrRemoteCreatorImpl.cpp

    Код: 80004005

    Источник: v82.COMConntctor.1

    Помогите, прошу!

    Reply
  57. DanilovaOlga

    и ещё вопрос: а можно извлечь информацию из компилированного вашей обработкой файла .vbe, т.е. расшифровать её?

    Reply
  58. a-novoselov

    (56) Скорее всего проблема с доступом к серверу, если Windows сервер 2008 или 2008 R2 то там сетевым (да и местным тоже) пользователям, по-умолчанию, запрещено использовать COM-соединение с процессами на сервере. Т.е. необходимо пользователю, под которым запускается скрипт, настроить права на работу с DCOM. Если пользователь сетевой, то дать права на RPC(remote procedure call — удаленный вызов процедур).

    (57) Извлечь информацию из зашифрованного .vbe файла можно. Точнее при шифровании используется обфускация текста, алгоритм впринципе обратимый. Но сделать это может очень продвинутый человек, который еще сотней других способов, кроме расшифровки, сможет узнать ваш пароль, или вычистить его напрямую в базе данных… Защита кодированием от простых юзеров, которым хочется побаловаться под полными правами в базе данных.

    Reply
  59. DanilovaOlga

    (58)Благодарю за ответы. Я не сказала, но под 8.1 у меня работала обработка, пользовалась, потом платформу обновили, я обработку сама исправила под 8.2 и у меня такая же ошибка выходила, как и при использовании Вашей обработки. Да и права на сервере у меня полные …

    Reply
  60. zzz_natali
    Fuego пишет:

    Я делаю резервирование средствами MS SQL каждый день: полная копия — ночью, и в рабочее время сохраняю цепочки журнала каждые 15 минут.

    А не проще ли Snapshot делать? Поднимать базу будете дольше, чем частота инкрементов(не по самому времени выполнения подъема бакапа, а разобраться, что к чему и с чего начать)

    Reply
  61. mcb60

    (60) zzz_natali,

    Snapshot, насколько я знаю, автоматически не удаляется и при архивации 30 баз (под 2-мя конфигурациями) это не выход.

    Reply
  62. rainstars

    спасибо, работает

    Reply
  63. stark.temp

    Исправь ошибку в названии. А так статья хорошая, ставлю +

    Reply
  64. a-novoselov

    (63) Ахаха статье 2 года, ты первый ошибку заметил…

    Reply
  65. lexeika

    Некоторые пользователи уже писали, что для SQL версии не нужно ничего придумывать. SQL Server имеет возможность делать бекапы и эта возможность намного луччше чем средства бекапа 1с. Полный бекап, дифференцированный,бекап лога позволяет Вам в случае возникновения проблем откатиться на нужное время (если например сделать бекап лога транзаций каждые 15 минут), то есть возможность откатиться на время кратное 15 минутам). ИМХО это намного лучше. При этом выгонять из базы никого не нужно.

    Reply
  66. a-novoselov

    (65) Гениально! А свежую файловую копию для разработки / тестирования из .bak файла развернете? или в Oracle / Posgres / IBM DB2 ?

    Reply
  67. a-novoselov

    (65) Ни кто же не говорит, что средствами SQL бэкап делать не нужно. Даже наоборот, SQL бэкап необходимо делать в первую очередь, и как можно чаще diff и log…

    Reply
  68. lexeika

    (66) да запросто. имея копию в sql я согу создать тестовую базу sql и развернуть ее в бекап. Причем также за любое время (зависит от настроек бекапа).

    или в Oracle / Posgres / IBM DB2 — вы это делаете постоянно в рабочее время по 10-20 раз в сутки? До сих пор считаю, что для SQL — лучше использовать бекапы средствами SQL. Если нужно сделать бекап средствами 1с, можете предупредить пользователей чтобы они вышли (можно почтой, можно используя обработки 1с), а можете отключить наглым образом все соединения через серверную консоль 1с. и все.

    Reply
  69. lexeika

    (67) Ну я также про это и говорю.

    Reply
  70. a-novoselov

    (68) http://infostart.ru/public/65955/ моя же статья, как мы делаем.

    Reply
  71. a-novoselov

    (71) Каждые 15 минут это конечно жестко, тем более когда работа интенсивная, блокировки будут жуткие… Но вот в последних двух конторах, где я работал, разностный бэкап каждый час делался, и все довольны были.

    Reply
  72. a-novoselov

    А если нужна копия базы которая на 15 минут отстает от рабочей базы, то тут конечно без второго Stand-By сервера не обойтись, который будет все транзакции с рабочей базы к себе тянуть… Но на 1С таких решений не встречалось (да и нет необходимости, т.к. при интенсивности работы 3-5 документов в час на пользователя, отставание на час вполне приемлемо), настраивал StandBy только на базах Oracle с 10 000 пользователей.

    Reply
  73. zzz_natali

    (72)

    Простите, уважаемый, кто был доволен?

    Генеральный, у которого железо/софт падало каждую среду/пятницу, а отдел айти бодро рапортовал, что после 555го падения всё было восстановлено за 14,5 мин, что на 3,5% быстрее, чем в после 554го урона.

    Есть такое понятие, как стоимость восстановления данных относительно к реальным (прогнозируемым и моральным потерям).

    Мы так привыкли в России корчить из себя распальцашек, хотя не понимаем и 10% впитывания в эту тему(хранения, суппорта и восстановления данных), наивно убаюкивая себя прочей бытовухой. Давайте, наконец, наберемся смелости (это я ща ко всем) расписаться в нашей АВОСЬносьтьночности.

    Reply
  74. a-novoselov

    (74) Да, и генеральный, и пользователи были довольны. Был такой случай: на предпоследнем месте работы купили новенький HP Blade, 6 серверов-лезвий 4х4 ядра (16 виртуальных), 32 ГБ памяти на каждом, и полка с двумя рейд массивами скоростным сас и обычным… Дак вот полка оказалась бракованной, и оборудование действительно валилось раз в 1-2 недели. Специалисты техподдержки HP полгода не могли разобраться в чем проблема, вызвали иностранного спеца, который определил, что полка битая (сказали что в россии это был единственный в своем роде случай). Но дело не в этом, собственно, а в том, что когда после первого падения (попробуйте на сервере SQL во время интенсивной работы жесткий диск выдернуть, увидите какие последствия будут — каждое 3е такое падение приводит к полной неработоспособности и невозможности никакими средствами восстановить базу, кроме поднятия из бэкапа), вобщем когда после первого падения база была восстановлена с потерей данных за сутки — начальство было очень не довольно, и не одна голова АйТишников тогда полетела, даже АйТи-директора уволили. А когда восстановление было с потерей данный за 30-60 минут максимум — все были довольны.

    Reply
  75. zzz_natali

    (75)

    Ну, не знаю. Под моими словами тут любой бы подписался, что пол-года не надо ждать, когда приедет это $-голландский. Методом исключения этот массив мона было вычислить.

    Впрочем, это уже риторика. Спасибо за дискуссию.

    Reply
  76. lexeika

    (71) zzz_natali, Научитесь изъяснять свои мысли вежливо. Это будет правильно при общении как в глаза, так и за глаза. Особенно при общении с незнакомыми Вам людьми. Мой пример (если например сделать бекап лога транзаций каждые 15 минут) — ЭТО ПРИМЕР! Это не руководство к действию. В связи с чем все то, что вы написали оставьте при себе и читайте внимательнее, то что написано и не делайте вывод по фразам, которые вы выдернули из контекста.

    Reply
  77. aids-ice

    OFF

    1000 Скачиваний и я 1000-ый

    Reply
  78. a-novoselov

    (78) Гет засчитан))

    Reply
  79. zzz_natali

    (77) lexeika, Ничего не ответила золотая рыбка…

    (прекрасно знаю упёртость сисадминов/айтишников и мужчин в частности)

    Считаю, что продолжать дискуссировать с Вами по данной концепции явно нецелесообразным.

    Если Ваше самолюбие чем-то задето, то можете безвоздмездно (то есть, даром) принять мои извинения.

    ЗЫ: остаюсь при своем мнении!

    Reply
  80. lexeika

    (80) zzz_natali, Разговор глухого с немым.

    Reply
  81. zzz_natali

    (81) lexeika,

    преамбула:

    Вот раз пошли слепой и одноглазый к девочкам. Дорога лесом, сквозь густой ельник. Одноглазый слепого на себе тащит. Вдруг одноглазый натыкается единственным глазом на сучок, громко восклицает: — Всё приехали! — Здравствуйте, девочки!

    фабула:

    постеснялись бы себе набирать кредитный статус сообщениями, не несущих смысловую нагрузку

    Reply
  82. lexeika

    Для администрации форума. Прошу удалить мои сообщения, адресованные zzz_natali с соответствующим удалением кредитного рейтинга. Это сообщение также можете удалить. Заранее благодарен.

    p.s. Неспроста говорят, что «человек видит соринку в глазу у собеседника и не замечает бревна у себя»

    Reply
  83. Olfost

    а с Posgris SQL обработка работает?

    Reply
  84. a-novoselov

    (84) *PostgreSQL правильно)

    Да работает, с любым клиент-серверным вариантом работы, от типа СУБД не зависит.

    Reply
  85. a-novoselov

    Кусок кода:

    |Sub SaveToLog(file,msg)
    | Set FSO = CreateObject(«»Scripting.FileSystemObject»»)
    | Set File = FSO.GetFile(file)
    | Set TextStream = File.OpenAsTextStream(8) ——-171 строка, не может файл записать
    | TextStream.Write msg
    | TextStream.Close
    |End Sub»;
    

    Показать

    «dump_log.txt» найти не может. Создай файл с таким именем в папке, в которой скрипт выполняется(лежит).

    Reply
  86. testmode

    (3) Мало весят это от того что они сжаты, никто не мешает тебе также сживмать SQL бакап, даже хоть и средствами Сервера

    Reply
  87. a-novoselov

    (100) Все равно сжатый SQL-бэкап будет б’ольшим по объему, т.к. SQL кладет в бэкап также индексы таблиц, 1С в .dt индексы не кладет, а пересоздает их при разворачивании базы.

    Reply
  88. rnv_ln

    Не удалось создать пользователя Робот для выгрузки информационной базы. {ВнешняяОбработка.ФормированиеCкриптаVBSДляSQL.МодульОбъекта(54)}: Значение не является значением объектного типа (Пустая)

    Вот что выдает при попытке сформировать скрипт?! Чтобы это значило?

    Reply
  89. a-novoselov

    (117) (118) Спасибо, поправил.

    (119) Скрипт необходимо запускать на том же сервере, где расположен сервер 1С с установленной компонентой «COM-соединение», при запуске с других машин вряд ли получится корректно настроить права пользователей Windows.

    Reply
  90. kozlovvp

    Не удалось создать пользователя Робот для выгрузки информационной базы. {ВнешняяОбработка.ФормированиеCкриптаVBSДляSQL.МодульОбъекта(56)}: Поле объекта недоступно для записи (Код)

    Reply
  91. M.Shalimov

    (151) kozlovvp, 56-ю строку в модуле объекта закомментируйте.

    (0) 1. Не проверки что длина кода для пользователя не «0».

    2. Запись файлов происходит на сервере, у пользователя от имени которого работает сервер может не быть прав на каталог с бекапами и валятся ошибки.

    Переписал обработку для сохранения файлов на клиенте, но платить 3sm за обработку, которую нужно допиливать напильником как-то не весело.

    Reply
  92. AlexO

    (6)

    Но когда рабочий сервер MS SQL, тестовый PostgreSQL и каждому разработчику нужна еще локальная файловая копия, то без .dt файлов никак не обойтись.

    DT-файлы — не надежный контейнер, база может и не восстановиться.

    Да и сама 1С давно признала — DT-архивирование не может применяться в качестве основного бэкапирования.

    Reply
  93. slavikss

    (160) Новая для меня информация. В чем ненадежность? Где они такое признали, можно ссылочку?

    Reply
  94. a-novoselov

    (161)

    Если размер одной из таблиц превышает 4 ГБ (например хранилище файлов какое-нибудь), то вы не сможете сделать выгрузку в DT файл из-за ограничений внутреннего формата хранения файлов 1С. Так же при работе с очень большими таблицами наблюдаются падения платформы 1С при восстановлении с ошибкой «Недостаточно памяти».

    (160)

    Да, бэкап средствами SQL нужно настраивать в первую очередь. Средствами 1С только как дополнительный механизм. К счастью, оба бэкапа могут выполняться одновременно.

    Reply
  95. glog

    (3) Боюсь огорчить, но .dt не 100% гарантия. Был у меня случай, когда она отказалась разворачиваться из-за ошибки в платформе, она не переваривала некоторую последовательность символов в двоичных данных справочника «Вложения электронной почты». Тогда спас только SQL-бэкап. Потом эту конкретную ошибку поправили, но где гарантия, что новых не наделают? Банальность скажу, но надо бэкапы делать всеми возможными способами.

    Reply
  96. asved.ru

    (3) SQL-серверу глубоко пофиг, заблокирована ли база. Он бэкапит снапшот.

    А dt — не бэкап, а транспортный формат. В общем случае гарантий его восстановимости 1С не дает, и это русским по белому написано в руководстве администратора.

    Reply
  97. Sartinsky

    (6)Соглашусь с предшественниками:

    1. dt не гарантирует восстановление базы в другом месте

    2. Размер практически одинаковый, если пользоваться сжатием

    3. Скорость несравнима — в dt долговастенько

    4. Базу в 150-200 гб вы будете бекапить в dt ооооочень долго, да с ограничениями по размеру файлов, да с ограничениями по размеру таблиц,д а с ограничениями по длине индексов.

    Хотя по самой генерации скрипта вопросов нет.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *