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

Опубликовал a-novoselov в раздел Администрирование - Архивирование (backup)

Обработка для формирования скрипта, который в SQL версии 1С блокирует базу и через 5 минут разрывает абсолютно все соединения с ИБ. Просто прописываем скрипт в планировщик и наслаждаемся свежим .dt файлом каждый день.

Обработка предназначена только для SQL версии 1С. Чтобы создать резервную копию средствами 1С нужно заблокировать базу и отрубить повисших пользователей через консоль... Но как быть если 200 пользователей не хотят на ночь выходить из базы? Ориентирована обработка на системных администраторов, которым нужно организовать ежедневное автоматическое создание резервной копии. В режиме "1С:Предприятие" она формирует файл vbs скрипта, который можно скомпилировать (чтобы не хранить пароли открытым текстом). Этот скрипт устанавливает блокировку ИБ, ждет 5 минут, после чего жестко отключает все соединения с ИБ. После завершения всех соединений (даже открытого конфигуратора), начинает с кодом доступа выгружать базу. Даже при возникновении ошибок (например появилось регламентное задание после разрыва всех содинений) база все равно будет выгружена.

Запуск скрипта необходимо настроить в планировщике заданий Windows, например на ночь.

Инструкция по установке
1. Скачать обработку с сайта и сохранить, например, на рабочий стол
2. Запустить в режиме "1С:Предприятие" базу данных для которой будет настроено архивирование
3. В 1С:Предприятии через меню "Файл" открыть файл с рабочего стола "Формирование скрипта VBS (VBE).epf"
4. Указать параметры скрипта и нажать кнопку "Сформировать"
5. Дождаться сообщения, об окончании настройки (Создается пользователь Робот для бэкапа с полными правами и 36 значным паролем - каждый раз новый, уникальный, никому неизвестный GUID)

Что делать, если при архивировании произошел сбой и блокировка не снялась?
1. Блокировка автоматически снимается через 1 час после запуска скрипта.

Что делать, если базу перенесли на другой сервер или переименовали?
1. Повторить действия, описанные в "Инструкции по установке"

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

Обработка сделана на основе http://infostart.ru/public/19363/ и доработанного скрипта http://infostart.ru/public/63813/

Файлы

Наименование Файл Дата Размер Кол. Скачив.
Формирование скрипта VBS (VBE) - управляемые формы - для 8.3
.epf 57,43Kb
03.09.15
66
.epf 03.09.15 57,43Kb 66 Скачать
Формирование скрипта VBS (VBE) для 8.2
.epf 54,05Kb
06.07.15
235
.epf 06.07.15 54,05Kb 235 Скачать
Формирование скрипта VBS (VBE) для 8.1
.epf 53,95Kb
06.07.15
225
.epf 06.07.15 53,95Kb 225 Скачать

См. также

Лучшие комментарии

3. a-novoselov 17.02.2010 08:28
(2) Подвох в том, что .dt файл можно развернуть в любом другом сервере БД без проблем, хоть в файловом варианте. Архивы весят в 20 раз меньше, чем бэкап средствами SQL (хранить историю базы в SQL бэкапах никакого места не напасешься, темболее оно ценно на рэйд-массиве), также получается 100% гарантия целостности базы.
У нас бэкапы обоими средствами делаются одновременно (бекап средствами 1С и полный бэкап SQL выполняется примерно одинаковое количество времени), если на время SQL бэкапа база будет заблокирована, то SQL сервер будет только за :)
Ответили: (4) (100)
# Ответить
1. Re:аниматор (файл скачал) 17.02.2010 03:49
При скачивании пишется файл как "Установка"

з.ы. firefox
Ответили: (137)
# Ответить
43. Fuego 17.12.2010 23:13
Я делаю резервирование средствами MS SQL каждый день: полная копия - ночью, и в рабочее время сохраняю цепочки журнала каждые 15 минут. И это конкретно работает. DT-шник мне нужен, чтобы загрузить "свежие" данные в локальные копии баз команды разработчиков. Но даже ради этого я не готов жертвовать стабильностью. Я делаю восстановление полной копии в "тестовую" базу, а из неё выгружаю dt-шник. А также стоит отметить, что это есть и тестовая версия на сервере. DT-шник нужен не каждый день, и насильное отключение пользователей от БД - тоже не дело. Тогда уж выключайте сервера на ночь, и пользователи приучатся завершать все открытые окна... В старых типовых конфах есть "выгонялка" - после доработки очень даже хорошо работает (на случай, когда нужна реструктуризация БД). А копии SQL в лёгкую сжимаются любым архиватором. У меня всё автоматизировано, и архивы 7zip хранятся за последние 3 месяца - постепенно удаляются. Правда, для такой автоматизации скрипты типа js и vbs не помогли - писал прогу на С++ (хотя, больше склонялся к с++ из-за удаления старых резервов в корзину). И ещё раз повторюсь - это конкретно работает, и без ущерба психики пользователей.
Ответили: (44)
+ 2 [ headMade; ГМВ; ]
# Ответить
68. lexeika 19.01.2012 15:57
(66) a-novoselov, да запросто. имея копию в sql я согу создать тестовую базу sql и развернуть ее в бекап. Причем также за любое время (зависит от настроек бекапа).
или в Oracle / Posgres / IBM DB2 - вы это делаете постоянно в рабочее время по 10-20 раз в сутки? До сих пор считаю, что для SQL - лучше использовать бекапы средствами SQL. Если нужно сделать бекап средствами 1с, можете предупредить пользователей чтобы они вышли (можно почтой, можно используя обработки 1с), а можете отключить наглым образом все соединения через серверную консоль 1с. и все.
Ответили: (70)
+ 2 [ ГМВ; Valerich; ]
# Ответить
115. vovanguban 02.09.2015 23:47
Господа, что-то не понимаю

Формирование файлов скриптов по упрощенной схеме...
Определение пользователя базы данных...
Пользователь Робот найден для выгрузки информационной базы
Формирование скрипта...
Формирование скрипта завершено

А где он сам скрипт появиться должен?

------------------------------------

Пардон, в 8.3 запускал обработку 8.2
Ответили: (116)
+ 1 [ a-novoselov; ]
# Ответить

Комментарии

1. Re:аниматор (файл скачал) 17.02.2010 03:49
При скачивании пишется файл как "Установка"

з.ы. firefox
Ответили: (137)
# Ответить
2. hopter (файл скачал) 17.02.2010 04:48
А зачем делать бэкап средствами 1с, если можно сделать средствами sql-сервера?
В чем подвох?
Ответили: (3) (5)
+ 1 [ vdenu; ]
# Ответить
3. a-novoselov 17.02.2010 08:28
(2) Подвох в том, что .dt файл можно развернуть в любом другом сервере БД без проблем, хоть в файловом варианте. Архивы весят в 20 раз меньше, чем бэкап средствами SQL (хранить историю базы в SQL бэкапах никакого места не напасешься, темболее оно ценно на рэйд-массиве), также получается 100% гарантия целостности базы.
У нас бэкапы обоими средствами делаются одновременно (бекап средствами 1С и полный бэкап SQL выполняется примерно одинаковое количество времени), если на время SQL бэкапа база будет заблокирована, то SQL сервер будет только за :)
Ответили: (4) (100)
# Ответить
4. hopter (файл скачал) 17.02.2010 08:57
(3) Спасибо.
# Ответить
5. jkzx 17.02.2010 09:05
-Архивы весят в 20 раз меньше, чем бэкап средствами SQL ...(2)
А вы не пробовали жать бэкап ? У меня жмется тем же раром и вес после этого сопоставим с .dt
Ответили: (6)
+ 1 [ Fuego; ]
# Ответить
6. a-novoselov 17.02.2010 09:27
(5) Понятно, что можно сжимать. Но когда рабочий сервер MS SQL, тестовый PostgreSQL и каждому разработчику нужна еще локальная файловая копия, то без .dt файлов никак не обойтись.
# Ответить
7. imagoman (файл скачал) 17.02.2010 10:13
Спасибо! скачал, сформировал, создал задачу - седня в полночь сделается, утром проверю :)
Ответили: (9)
# Ответить
8. alexchebanenko (файл скачал) 17.02.2010 10:48
Еще бы такое под 7.7 :cry:
Ответили: (21) (95)
# Ответить
9. a-novoselov 17.02.2010 11:04
(7) Проверьте, стоит ли COMConnection на сервере.
# Ответить
10. bulpi (файл скачал) 17.02.2010 14:41
1.Файл скачивается с расширением chm. Пришлось переименовать.
2.Насчет "разрывает абсолютно все соединения" это Вы погрячились. А зависшие фоновые задания?
Ответили: (12)
# Ответить
11. bulpi (файл скачал) 17.02.2010 15:01
А это что еще за творчество :
Процедура ПутьАрхивовОчистка(Элемент, СтандартнаяОбработка)
ПутьАрхивов = "";
КонецПроцедуры


Это к чему ????????
Ответили: (12)
# Ответить
12. a-novoselov 17.02.2010 15:06
(10)
1. Это к Доржи лучше обратиться, выложено все нормально.
2. Все соединения на всех процессах, кроме COM гасятся, фоновые задания в том числе.
(11) Это чтобы кнопка очистки в элементе управления работала)
Ответили: (13)
# Ответить
13. bulpi (файл скачал) 17.02.2010 16:20
(12) "Это чтобы кнопка очистки в элементе управления работала"
Я не понял, это юмор такой , что-ли? Вы уберите эту фигню, а то кто-нибудь на 1с-говнокод запостит.
Ответили: (14)
# Ответить
14. a-novoselov 17.02.2010 16:41
(13) Да, действительно без этого работает. А в Си++ и в Дельфи не работало без кода...)) Изначально было:
Процедура ПутьАрхивовОчистка(Элемент, СтандартнаяОбработка)
ПутьАрхивов = "C:";
КонецПроцедуры
# Ответить
15. sound (файл скачал) 18.02.2010 14:16
Нормально, только надо было предупредить что оно юзера создает
Ответили: (16)
# Ответить
16. alexk-is (файл скачал) 19.02.2010 11:41
(15) Про "юзера" написано тут http://infostart.ru/public/19363/ :)
Ответили: (17)
# Ответить
17. sound (файл скачал) 19.02.2010 11:54
(16) то есть чтобы понять, что там еще может произойти нужно пройтись по всем ссылкам? Да тут каждая четвертая обработка - часть другой, взятой тоже где-то тут :)
# Ответить
18. alexk-is (файл скачал) 19.02.2010 12:09
(0) Алексей, вот видишь. Говорил я тебе: "Поработай над описанием"... :)
+ 1 [ a-novoselov; ]
# Ответить
19. taishy (файл скачал) 20.02.2010 12:20
А не полетят ли сохраненные настройки пользователей, которые обычно слетают, когда 1Ска закрывается не по воле юзера?
Ответили: (22)
# Ответить
20. Legioner39 (файл скачал) 20.02.2010 12:44
Важно: скрипт работает только если на сервере установлен компонент COMСоединение (по умолчанию не ставится). Чтобы проверить, заходим на сервере 1С в панель управления \ Установка удаление программ \ Сервер 1С Предприятие \ Изменить... Если нужно, добавляем COMСоединение.

У меня нет такого пункта в изменить... как можно еще это настроить?
Ответили: (22)
# Ответить
21. Abadonna 22.02.2010 16:19
(8)
Еще бы такое под 7.7

http://infostart.ru/public/66153/
я чего-то в свое время снес её, сейчас опять положил, погляди.
# Ответить
22. a-novoselov 24.02.2010 12:11
(19) Большинство пользователей после установки блокировки успевают отключиться.
(20) Полностью переустановить сервер. Сперва снести, потом выбрать при установке этот компонент. Но что-то с трудом вериться, куда пункт изменить-то мог подеваться? Это помойму стандарт еще со всремен появления "Windows Installer".
Ответили: (24)
# Ответить
23. Garstag (файл скачал) 24.02.2010 12:55
Поддерживаю насчет отсутствия СОМ-соединения в установочном меню. У меня версия платформы 8.2.10.73, похожий скрипт прекрасно отрабатывает интерактивно, но почему-то виснет в момент создания СОМ-соединения под шедулером, даже если у пользователя права Доменного Администратора.
Сервер - 2008 R2 х64. Если кто-то сталкивался с этим, подскажите, плиз, куда копать?
Ответили: (25)
# Ответить
24. taishy (файл скачал) 24.02.2010 13:08
(22) Бэкап и прочие "еженочные" процедуры проходят около 00:10. Много юзеров забывают отключать платформу(да, комп на ночь не выключают).
Ответили: (25)
# Ответить
25. a-novoselov 24.02.2010 15:27
(24) Предлагаете локально на каждый комп заходить и корректно 1С-ку тушить?)) У них будет сообщение, что соединение разорвано администратором.
(23) Да надо пользователю, из-под которого бэкап стартует, дать право выполнения DCOM операций при невыполненном входе в систему в служебной программе "Управление службами компонентов"
Ответили: (26)
# Ответить
26. Garstag (файл скачал) 24.02.2010 17:43
(25) А где бы подробней почитать, в каком конкретно месте мне надо устанавливать права локальному пользователю в "Component Services", а то там можно такого наворотить по незнанию...
:-)
Ответили: (27)
# Ответить
27. a-novoselov 25.02.2010 17:23
(26) В журнале событий Windows посмотрите ошибки по Distributed COM там конкретнее чуть пишется, или http://ru.wikipedia.org/wiki/Component_Object_Model там ссылки на MSDN есть.
Ответили: (28)
# Ответить
28. Garstag (файл скачал) 05.03.2010 15:53
(27) Нет никаких ошибок в журнале событий, а скрипт упорно виснет в момент создания v82.COMConnector
Ответили: (30)
# Ответить
29. I_G_O_R 06.03.2010 13:37
Преимущество бэкапа средствами SQL - не надо выгонять пользователей. А если отключать всех пользователей, на хрена тогда парить сервер? обычным copy копируем файлы и архивируем если надо, развернуть будет тогда вооще быстро, т.к. разархивация несравнено быстрее архивации. А если база большая, можно на выходных делать полный бэкап а всю неделю(и даже в обед, если сильно надо) архивировать журнал транзакций. И вообще выгонять насильно(принудительно отключать) пользователей плохая идея, бывает потом глючит и нужно потом кэш на каждом компе очищать.
Ответили: (30)
# Ответить
30. a-novoselov 07.03.2010 13:25
(29) При бекапе средствами SQL, во-первых нельзя разверноуть базу в файловом варианте либо на другом SQL сервере (IBM, Postgres). Во-вторых замечен глюк при развозворачивании базы из SQL бэкапа теряются пользователи ИБ, т.е. справочник "Пользователи" полный, а список пользователей ИБ наполовину пустой. Хз как лечить...
(28) Не знаю, на 82 не тестировал, но на 81 глюк лечится добавлением пользователя, из под которого запускается скрипт (Администратор) в группу "Пользователи DCOM" и установкой COM-соединения на сервер.
# Ответить
31. Kiber_ (файл скачал) 11.03.2010 17:16
Я вот чего не пойму...
Почему публикация называется "кторый обязательно сделается (без перезапуска сервера)"?...
Если допустим поднять com-соединение к базе, и "забыть" его закрыть, разве бэкап сделается?
Или если места на диске не хватило... Такое тоже ведь возможно, верно?

Если честно, думал здесь какой-то механизм повторных попыток бэкапа реализован...
Но идея со Scripts Encryptor'ом весьма достойна. Хоть какая-никакая, а защита пароля...
Ответили: (32)
+ 1 [ nikitosk; ]
# Ответить
32. a-novoselov 12.03.2010 06:48
(31) Да, чот переборщил чуток сназваньем... Если метеорит в сервер попадет тоже бэкап врядли сделается... Здесь рассчет на то, что пользователи могут конфигуратор открыть и оставить на ночь, или окно с вводом пароля (когда блокировкой не викидывает, а соединение есть), а если программист COM-соединение забыл закрыть или админ за свободным местом на сервере не следит то это уже проблеммы другого уровня и бороться с такими проблемами эффективнее административными мерами а не программными.
# Ответить
33. privet2004444 (файл скачал) 15.03.2010 21:04
Спасибо большое :D Все прекрасно работает
Ответили: (34)
# Ответить
34. a-novoselov 16.03.2010 10:33
(33) А плюсануть, када все прекрасно? 8-)
# Ответить
35. privet2004444 (файл скачал) 17.03.2010 09:52
еле + нашел ;)
# Ответить
36. privet2004444 (файл скачал) 17.03.2010 09:55
еще бы раза три плюсанул, но не дает ... придется другим порекомендовать :D
# Ответить
37. 1vasia1 (файл скачал) 18.03.2010 20:01
Зачёт полный! :) Реально отрубает всех. Я долго маялся с этим, а тут готовое решение.
# Ответить
38. beregnov (файл скачал) 20.09.2010 22:06
Большое спасибо! А как можно реализовать такоеже но с двумя серверами 1С Предприятия? 8.1 ИмяСервера, 8.2 ИмяСервера:1641. Буду очень признателен.
Ответили: (39)
# Ответить
39. a-novoselov 21.09.2010 09:46
(38) В каждой базе запустить обработку - для каждой базы будет свой скрипт vbs.
# Ответить
40. beregnov (файл скачал) 21.09.2010 14:28
Нет не получается! Я думаю проблема в ИмяСервера:1641 (1641 - это порт!!!) это к томуже кластер 1С 8.2
Ответили: (51)
# Ответить
41. fordes (файл скачал) 07.12.2010 08:32
для 8.2 не работает. Если галку не компилировать не ставить выдает ошибку записи файла. win2008 sql2008
# Ответить
42. fordes (файл скачал) 07.12.2010 09:34
гоню...все супер работает!!! огромное спасибо!!! +
# Ответить
43. Fuego 17.12.2010 23:13
Я делаю резервирование средствами MS SQL каждый день: полная копия - ночью, и в рабочее время сохраняю цепочки журнала каждые 15 минут. И это конкретно работает. DT-шник мне нужен, чтобы загрузить "свежие" данные в локальные копии баз команды разработчиков. Но даже ради этого я не готов жертвовать стабильностью. Я делаю восстановление полной копии в "тестовую" базу, а из неё выгружаю dt-шник. А также стоит отметить, что это есть и тестовая версия на сервере. DT-шник нужен не каждый день, и насильное отключение пользователей от БД - тоже не дело. Тогда уж выключайте сервера на ночь, и пользователи приучатся завершать все открытые окна... В старых типовых конфах есть "выгонялка" - после доработки очень даже хорошо работает (на случай, когда нужна реструктуризация БД). А копии SQL в лёгкую сжимаются любым архиватором. У меня всё автоматизировано, и архивы 7zip хранятся за последние 3 месяца - постепенно удаляются. Правда, для такой автоматизации скрипты типа js и vbs не помогли - писал прогу на С++ (хотя, больше склонялся к с++ из-за удаления старых резервов в корзину). И ещё раз повторюсь - это конкретно работает, и без ущерба психики пользователей.
Ответили: (44)
+ 2 [ headMade; ГМВ; ]
# Ответить
44. Diversus (файл скачал) 17.12.2010 23:19
(43) в MS SQL 2008, кстати, появлиась возможность сжатия резервной копии, поэтому можно не делать архив 7z из бэкапа, а настроить, чтобы бэкап сжимался
Ответили: (45)
# Ответить
45. iceflash (файл скачал) 16.02.2011 16:15
(44) А в постгрес давно есть возможность изменения формата бэкапа, сжатия, или вообще перенаправление потока=)
# Ответить
46. iceflash (файл скачал) 16.02.2011 16:18
Но собственно автор говорит просто о возможности более быстрого "обмена" бэкапами между разными СУБД, и это действительно удобнее, в данном случае.
# Ответить
47. Mishka_78 (файл скачал) 27.09.2011 10:09
Спасибо. Использую уже более полугода на 8.1 - все замечательно. +500
# Ответить
48. nikdn (файл скачал) 18.10.2011 11:51
Спасибо, очень помогла в работе!
# Ответить
49. Bolik13 (файл скачал) 31.10.2011 14:49
Спасибо. Пригодилось.
# Ответить
50. StronG-X 13.11.2011 11:30
Давно искал подобное решение, спасибо огромное!
# Ответить
51. a-novoselov 25.11.2011 16:19
(40) Сделал отдельную обработку для 8.2
Ответили: (53)
# Ответить
52. opiumdx (файл скачал) 30.11.2011 18:25
Спасибо! Сейчас скачаю и проверю как отработает в ночное время) у нас в базе постоянно кто-то висит...
# Ответить
53. DanilovaOlga (файл скачал) 01.12.2011 10:39
(51) А где эта обработка? Мне очень надо!!!
# Ответить
54. DanilovaOlga (файл скачал) 01.12.2011 11:10
Извините, разобралась, не туда нажала...
Ответили: (117)
# Ответить
55. DanilovaOlga (файл скачал) 01.12.2011 11:14
Надеюсь она меня выручит .... Оооочень надо ...
# Ответить
56. DanilovaOlga (файл скачал) 01.12.2011 11:43
Скачала теперь для 8.2, но увы... выдается окно:

Ошибка: descr=Сервер недоступен (Не отвечает, завершается аварийно или порт занят другим приложением) line=542
file=Scr\RemoteCreatorImpl.cpp
Код: 80004005
Источник: v82.COMConntctor.1

Помогите, прошу!
Ответили: (58)
# Ответить
57. DanilovaOlga (файл скачал) 01.12.2011 14:35
и ещё вопрос: а можно извлечь информацию из компилированного вашей обработкой файла .vbe, т.е. расшифровать её?
Ответили: (58)
# Ответить
58. a-novoselov 01.12.2011 20:05
(56) Скорее всего проблема с доступом к серверу, если Windows сервер 2008 или 2008 R2 то там сетевым (да и местным тоже) пользователям, по-умолчанию, запрещено использовать COM-соединение с процессами на сервере. Т.е. необходимо пользователю, под которым запускается скрипт, настроить права на работу с DCOM. Если пользователь сетевой, то дать права на RPC(remote procedure call - удаленный вызов процедур).

(57) Извлечь информацию из зашифрованного .vbe файла можно. Точнее при шифровании используется обфускация текста, алгоритм впринципе обратимый. Но сделать это может очень продвинутый человек, который еще сотней других способов, кроме расшифровки, сможет узнать ваш пароль, или вычистить его напрямую в базе данных... Защита кодированием от простых юзеров, которым хочется побаловаться под полными правами в базе данных.
Ответили: (59)
# Ответить
59. DanilovaOlga (файл скачал) 02.12.2011 08:20
(58)Благодарю за ответы. Я не сказала, но под 8.1 у меня работала обработка, пользовалась, потом платформу обновили, я обработку сама исправила под 8.2 и у меня такая же ошибка выходила, как и при использовании Вашей обработки. Да и права на сервере у меня полные ...
# Ответить
60. zzz_natali 09.12.2011 08:58
Fuego пишет:

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

А не проще ли Snapshot делать? Поднимать базу будете дольше, чем частота инкрементов(не по самому времени выполнения подъема бакапа, а разобраться, что к чему и с чего начать)
Ответили: (61)
# Ответить
61. mcb60 (файл скачал) 13.12.2011 19:06
(60) zzz_natali,
Snapshot, насколько я знаю, автоматически не удаляется и при архивации 30 баз (под 2-мя конфигурациями) это не выход.
# Ответить
62. rainstars (файл скачал) 28.12.2011 11:21
спасибо, работает
# Ответить
63. stark.temp 19.01.2012 12:19
Исправь ошибку в названии. А так статья хорошая, ставлю +
Ответили: (64)
+ 1 [ a-novoselov; ]
# Ответить
64. a-novoselov 19.01.2012 12:49
(63) Ахаха статье 2 года, ты первый ошибку заметил...
# Ответить
65. lexeika 19.01.2012 15:34
Некоторые пользователи уже писали, что для SQL версии не нужно ничего придумывать. SQL Server имеет возможность делать бекапы и эта возможность намного луччше чем средства бекапа 1с. Полный бекап, дифференцированный,бекап лога позволяет Вам в случае возникновения проблем откатиться на нужное время (если например сделать бекап лога транзаций каждые 15 минут), то есть возможность откатиться на время кратное 15 минутам). ИМХО это намного лучше. При этом выгонять из базы никого не нужно.
Ответили: (66) (67) (71)
# Ответить
66. a-novoselov 19.01.2012 15:45
(65) Гениально! А свежую файловую копию для разработки / тестирования из .bak файла развернете? или в Oracle / Posgres / IBM DB2 ?
Ответили: (68)
# Ответить
67. a-novoselov 19.01.2012 15:50
(65) Ни кто же не говорит, что средствами SQL бэкап делать не нужно. Даже наоборот, SQL бэкап необходимо делать в первую очередь, и как можно чаще diff и log...
Ответили: (69)
# Ответить
68. lexeika 19.01.2012 15:57
(66) a-novoselov, да запросто. имея копию в sql я согу создать тестовую базу sql и развернуть ее в бекап. Причем также за любое время (зависит от настроек бекапа).
или в Oracle / Posgres / IBM DB2 - вы это делаете постоянно в рабочее время по 10-20 раз в сутки? До сих пор считаю, что для SQL - лучше использовать бекапы средствами SQL. Если нужно сделать бекап средствами 1с, можете предупредить пользователей чтобы они вышли (можно почтой, можно используя обработки 1с), а можете отключить наглым образом все соединения через серверную консоль 1с. и все.
Ответили: (70)
+ 2 [ ГМВ; Valerich; ]
# Ответить
69. lexeika 19.01.2012 16:04
(67) a-novoselov, Ну я также про это и говорю.
# Ответить
70. a-novoselov 19.01.2012 16:14
(68) http://infostart.ru/public/65955/ моя же статья, как мы делаем.
# Ответить
71. zzz_natali 19.01.2012 20:55
(65) lexeika,
Хватит нести бред! Вы б еще бакапили каждые 5 минут!! Найдите мне контору со структурой бизнес-процессов, где обнаружение ЖОПЫ с базой определяется через пол-минуты после ее случения?
Я ВАС УМОЛЯЮ!!!
Да сисадмины/айтишники минимум час будут репу чесать и кормить манагеров/рукотделов/комдиров/гендиров просьбами подождать, прежде, чем въедут в тему(это, если их оперативно найдете в закоулках здания), где и что упало.
Еще столько же, в лучшем случае будут базу поднимать (столько же, потому, что советчиков набежит сразу с пол-дюжины).
Я не видела еще ни одного папика, кто держал бы резервный сервак(за несколько килобаксов) "под парами" где моментально поднималось бы зеркало(кластер) с рабочей базой.
Была одна контора, где фул-бакап делался в обед и вся челядь под роспись при приёме на работу во время ланча ничего в базе не делала(!).
ВСЁ!
Что-то происходит; форс-мажор какой - тупо поднимаем утреннюю/обеденную базу и перебиваем то, что профуфукано.
Да - некошерно, да - противно, да - сизифов труд, но... НО!
Понимаем, что у нас точка восстановления гарантированно вписывается в дальнейшую работу.
А если интенсивность работы такова, что "мама не горюй", то всё, что здесь тредится - детская песочница в соседнем дворе (ну Вы поняли: облака, дата-центры, файловер кластера и проч)
Ответили: (72) (77)
# Ответить
72. a-novoselov 19.01.2012 21:29
(71) Каждые 15 минут это конечно жестко, тем более когда работа интенсивная, блокировки будут жуткие... Но вот в последних двух конторах, где я работал, разностный бэкап каждый час делался, и все довольны были.
Ответили: (74)
# Ответить
73. a-novoselov 19.01.2012 21:38
А если нужна копия базы которая на 15 минут отстает от рабочей базы, то тут конечно без второго Stand-By сервера не обойтись, который будет все транзакции с рабочей базы к себе тянуть... Но на 1С таких решений не встречалось (да и нет необходимости, т.к. при интенсивности работы 3-5 документов в час на пользователя, отставание на час вполне приемлемо), настраивал StandBy только на базах Oracle с 10 000 пользователей.
# Ответить
74. zzz_natali 19.01.2012 21:41
(72) a-novoselov,
Простите, уважаемый, кто был доволен?
Генеральный, у которого железо/софт падало каждую среду/пятницу, а отдел айти бодро рапортовал, что после 555го падения всё было восстановлено за 14,5 мин, что на 3,5% быстрее, чем в после 554го урона.
Есть такое понятие, как стоимость восстановления данных относительно к реальным (прогнозируемым и моральным потерям).
Мы так привыкли в России корчить из себя распальцашек, хотя не понимаем и 10% впитывания в эту тему(хранения, суппорта и восстановления данных), наивно убаюкивая себя прочей бытовухой. Давайте, наконец, наберемся смелости (это я ща ко всем) расписаться в нашей АВОСЬносьтьночности.
Ответили: (75)
# Ответить
75. a-novoselov 20.01.2012 08:04
(74) Да, и генеральный, и пользователи были довольны. Был такой случай: на предпоследнем месте работы купили новенький HP Blade, 6 серверов-лезвий 4х4 ядра (16 виртуальных), 32 ГБ памяти на каждом, и полка с двумя рейд массивами скоростным сас и обычным... Дак вот полка оказалась бракованной, и оборудование действительно валилось раз в 1-2 недели. Специалисты техподдержки HP полгода не могли разобраться в чем проблема, вызвали иностранного спеца, который определил, что полка битая (сказали что в россии это был единственный в своем роде случай). Но дело не в этом, собственно, а в том, что когда после первого падения (попробуйте на сервере SQL во время интенсивной работы жесткий диск выдернуть, увидите какие последствия будут - каждое 3е такое падение приводит к полной неработоспособности и невозможности никакими средствами восстановить базу, кроме поднятия из бэкапа), вобщем когда после первого падения база была восстановлена с потерей данных за сутки - начальство было очень не довольно, и не одна голова АйТишников тогда полетела, даже АйТи-директора уволили. А когда восстановление было с потерей данный за 30-60 минут максимум - все были довольны.
Ответили: (76)
# Ответить
76. zzz_natali 20.01.2012 08:12
(75) a-novoselov,
Ну, не знаю. Под моими словами тут любой бы подписался, что пол-года не надо ждать, когда приедет это $-голландский. Методом исключения этот массив мона было вычислить.
Впрочем, это уже риторика. Спасибо за дискуссию.
# Ответить
77. lexeika 20.01.2012 09:11
(71) zzz_natali, Научитесь изъяснять свои мысли вежливо. Это будет правильно при общении как в глаза, так и за глаза. Особенно при общении с незнакомыми Вам людьми. Мой пример (если например сделать бекап лога транзаций каждые 15 минут) - ЭТО ПРИМЕР! Это не руководство к действию. В связи с чем все то, что вы написали оставьте при себе и читайте внимательнее, то что написано и не делайте вывод по фразам, которые вы выдернули из контекста.
Ответили: (80)
# Ответить
78. aids-ice (файл скачал) 20.01.2012 09:29
OFF
1000 Скачиваний и я 1000-ый
Ответили: (79)
# Ответить
79. a-novoselov 20.01.2012 09:49
(78) Гет засчитан))
# Ответить
80. zzz_natali 20.01.2012 11:05
(77) lexeika, Ничего не ответила золотая рыбка...
(прекрасно знаю упёртость сисадминов/айтишников и мужчин в частности)

Считаю, что продолжать дискуссировать с Вами по данной концепции явно нецелесообразным.
Если Ваше самолюбие чем-то задето, то можете безвоздмездно (то есть, даром) принять мои извинения.
ЗЫ: остаюсь при своем мнении!
Ответили: (81)
# Ответить
81. lexeika 20.01.2012 11:12
(80) zzz_natali, Разговор глухого с немым.
Ответили: (82)
# Ответить
82. zzz_natali 20.01.2012 11:29
(81) lexeika,
преамбула:
Вот раз пошли слепой и одноглазый к девочкам. Дорога лесом, сквозь густой ельник. Одноглазый слепого на себе тащит. Вдруг одноглазый натыкается единственным глазом на сучок, громко восклицает: - Всё приехали! - Здравствуйте, девочки!
фабула:
постеснялись бы себе набирать кредитный статус сообщениями, не несущих смысловую нагрузку
# Ответить
83. lexeika 20.01.2012 11:34
Для администрации форума. Прошу удалить мои сообщения, адресованные zzz_natali с соответствующим удалением кредитного рейтинга. Это сообщение также можете удалить. Заранее благодарен.

p.s. Неспроста говорят, что "человек видит соринку в глазу у собеседника и не замечает бревна у себя"
# Ответить
84. Olfost 25.01.2012 09:50
а с Posgris SQL обработка работает?
Ответили: (85)
# Ответить
85. a-novoselov 25.01.2012 09:58
(84) *PostgreSQL правильно)
Да работает, с любым клиент-серверным вариантом работы, от типа СУБД не зависит.
# Ответить
86. BAPPKAH 01.02.2012 23:18
Спасибо
# Ответить
87. trunix 29.02.2012 10:47
Спасибо. Надо попробовать.
# Ответить
88. ГМВ 07.03.2012 14:10
Возможен еще такой метод: создать две копии рабочей базы и настроить обмен с одной из них. Копия может быть как в файловом варианте, так и в SQL, по вашим потребностям. Обмен вести через файлы, которые нужно хранить столько, на сколько шагов вы предполагаете необходимость отката. Обмен можно проводить как угодно часто, хоть каждые 5 мин. Таким образом, вы будете иметь всегда актуальную копию рабочей базы в вашем монопольном распоряжении. Для обеспечения отката служит вторая копия базы, которая отстает от первой на заданное вами количество шагов (см.выше). Если вы увидели, что вместо светлого будущего ваша база приехала совсем не туда, вы возвращаетесь ко второй копии и последовательно шагаете посредством файлов обмена до требуемой точки. При таком методе потери времени на откат большой базы будут минимальны.
# Ответить
89. dyh (файл скачал) 25.04.2012 09:27
Попробовал скриптик, вроде работает. Раньше год примерно был выкл-вкл 1С сервер и заметных проблем от сих манипуляций не было.
PS База бух перепиленная, до 20ю онлайн.
Ответили: (90)
# Ответить
90. a-novoselov 25.04.2012 09:38
(89) После перезапуска кэш сервера чистится, и он первое время подтупливать начинает. Хотя перезапускать сервер тоже иногда надо, т.к. 1С-ка любит течь по памяти, и рабочие процессы могут необоснованно распухать по объему используемой памяти.
# Ответить
91. yavasilek (файл скачал) 28.05.2012 09:31
то что надо. Теперь работает по уму
# Ответить
92. Alex Prikol 07.06.2012 10:42
Прочитал комменты. Ну чтож, кому нужна под рукой база в dt-формате - обработка ему в помощь.

Но архивировать средствами СУБД нужно обязательно!
По крайней мере базу вы всегда развернете через любое другое хранилище.
Более того, свежую копию можно организовать и только средствами скуля, не прибегая ни к каким дополнительным инструментам.
Просто подумайте, что вам нужно
# Ответить
93. yavasilek (файл скачал) 08.06.2012 18:19
скрипт сформировал.
при запуске вылетает ошибка
скрипт зашифрован и не понятно как исправить ошибку
ТС помоги пожалуйста.
Ответили: (94)
# Ответить
94. a-novoselov 08.06.2012 19:08
(93) Сформируй файл скрипта заново. Возможно не может найти 1c8.exe или dump_log.txt
# Ответить
95. a-novoselov 08.06.2012 19:12
Кусок кода:
	|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" найти не может. Создай файл с таким именем в папке, в которой скрипт выполняется(лежит).
# Ответить
96. shuhard 08.06.2012 20:25
(0) у dt два главных минуса, которые делают использование его в качестве бэкапа бессмысленным:
- выгрузка в DT ни даёт ни какой гарантии обратной загрузки и именно поэтому 1С официально не считает dt бэкапом
- время выгрузки в dt в десятки раз больше, чем бэкап сиквела, про инкрементный бэкап и восстановление на момент времени и говорить не приходится
Ответили: (97)
+ 1 [ sh_max; ]
# Ответить
97. a-novoselov 08.06.2012 22:43
(96) Это кто это и когда такое сказал, что "1С официально не считает dt бэкапом"??? первый раз такое слышу.
Ответили: (98)
# Ответить
98. shuhard 09.06.2012 07:38
(97)
первый раз такое слышу

заметно,
иначе бы ты не стал публиковать в 100500 раз выгонялку из 1С и пропагандировать dt

а подписаться на ИТС настоятельно рекомендуем, там кроме статьи о вреде бэкапа в dt есть много чего полезного
Ответили: (99)
# Ответить
99. a-novoselov 09.06.2012 10:00
(98) Пруфлинк? На какой странице (в какой статье) такое написано?
# Ответить
100. testmode 22.06.2012 15:45
(3) a-novoselov, Мало весят это от того что они сжаты, никто не мешает тебе также сживмать SQL бакап, даже хоть и средствами Сервера
Ответили: (101)
# Ответить
101. a-novoselov 22.06.2012 16:14
(100) Все равно сжатый SQL-бэкап будет б'ольшим по объему, т.к. SQL кладет в бэкап также индексы таблиц, 1С в .dt индексы не кладет, а пересоздает их при разворачивании базы.
# Ответить
103. SergeyGladyshev 28.11.2012 11:49
Очень полезная обработка, автору респект!
# Ответить
104. sergos3331 11.02.2013 10:18
Несомненно, хорошая и полезный скрипт бэкапа, а тоже самое под Db2 есть?
Ответили: (105)
# Ответить
105. a-novoselov 11.02.2013 15:59
(104) Скрипт должен работать под любой базой данных (кроме файловой), т.к. бэкап делается средствами 1С, а не средствами базы данных.
# Ответить
106. Inoiman (файл скачал) 20.08.2013 12:37
При открытии в 1с 8.3, БП 3.0 открывается пустая форма, попробывал сделать всё как описанно здесь http://1c-md.com/stati/obychnoe-prilozhenie-1c.html не помогло, помогите пожалуйста.
Ответили: (107)
# Ответить
107. a-novoselov 20.08.2013 19:00
(106) Управляемая форма в обработке генерации скрипта не сделана.
Чтобы обычная форма в управляемом режиме открывались свойство конфигурации "Использовать обычные формы в управляемом режиме" должно быть включено. Еще нужно поставить режим запуска этой ИБ насильно "Толстый клиент" и тогда все заработает.
Ответили: (109)
# Ответить
108. BTRVODKA (файл скачал) 15.09.2013 04:41
Спасибо автору за публикацию!
# Ответить
109. Mishka_78 (файл скачал) 06.01.2014 23:53
(107) Спасибо. Как раз подумывал данную обработку приспособить к управляемым формам.
# Ответить
110. orkhan.huseynov 07.04.2014 10:53
Странно, что разработчики так и не включили данную возможность в стандартный функционал платформы.
Ответили: (111)
# Ответить
111. a-novoselov 07.04.2014 11:20
(110) Разработчики в клиент-серверном режиме работы рекомендуют делать бэкап средствами SQL, т.к. не могут гарантировать корректного восстановления архива из .dt файла при больших объемах базы. Точнее восстановление может упасть даже при очень большом объеме одной из таблиц.
# Ответить
112. Augustinas 30.06.2015 12:37
Подскажите пожалуйста работает этот бекапер на 1С 8.3 ?
Ответили: (113)
# Ответить
113. a-novoselov 30.06.2015 17:37
(112)
Добавил версию 8.3 на управляемой форме.
# Ответить
114. savostin.alex 16.07.2015 12:57
Доброе время суток, коллеги. Это к вопросу про размер копии базы, сделанной средствами SQL:

{ COMPRESSION | NO_COMPRESSION }
В SQL Server 2008 Enterprise и более поздних версиях указывает необходимость сжатия резервной копии, переопределяя значение уровня сервера по умолчанию.
При установке по умолчанию резервные копии не сжимаются. Это поведение можно изменить с помощью параметра конфигурации сервера сжатие резервной копии по умолчанию. Дополнительные сведения о просмотре текущего значения этого параметра см. в разделе Просмотр или изменение свойств сервера (SQL Server).
COMPRESSION
Явное включение сжатия резервных копий.
NO_COMPRESSION
Явное отключение сжатия резервной копии.
# Ответить
115. vovanguban 02.09.2015 23:47
Господа, что-то не понимаю

Формирование файлов скриптов по упрощенной схеме...
Определение пользователя базы данных...
Пользователь Робот найден для выгрузки информационной базы
Формирование скрипта...
Формирование скрипта завершено

А где он сам скрипт появиться должен?

------------------------------------

Пардон, в 8.3 запускал обработку 8.2
Ответили: (116)
+ 1 [ a-novoselov; ]
# Ответить
116. a-novoselov 03.09.2015 09:53
(115)
Добрый день.
Да, похоже 8.2 обработка под 8.3 не всегда правильно обрабатывает путь файлов. Надо скачать платформу 8.2, поправить обработку.
Спасибо за обратную связь.
# Ответить
117. rnv_ln (файл скачал) 03.09.2015 13:05
Не удалось создать пользователя Робот для выгрузки информационной базы. {ВнешняяОбработка.ФормированиеCкриптаVBSДляSQL.МодульОбъекта(54)}: Значение не является значением объектного типа (Пустая)

Вот что выдает при попытке сформировать скрипт?! Чтобы это значило?
Ответили: (120)
# Ответить
118. rnv_ln (файл скачал) 03.09.2015 13:16
Измени в обработке для 8.3 в модуле объекта, Функция СоздатьПользователя(Имя, Пароль) со строки 53:

С
ТекущийПользователь = Справочники.Пользователи.НайтиПоКоду(Имя);
Если ТекущийПользователь.Пустая() Тогда
ТекущийПользователь = Справочники.Пользователи.СоздатьЭлемент();
ТекущийПользователь.Код = Имя;
ТекущийПользователь.Наименование = Имя;
ТекущийПользователь.Записать();
КонецЕсли;
На
ТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию(Имя);
ТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию(Имя);
Если ТекущийПользователь.Пустая() Тогда
ТекущийПользователь = Справочники.Пользователи.СоздатьЭлемент();
//ТекущийПользователь.Код = Имя;
ТекущийПользователь.Наименование = Имя;
ТекущийПользователь.Записать();
КонецЕсли;

А то пользователь не создается.
Ответили: (120)
+ 1 [ a-novoselov; ]
# Ответить
119. rnv_ln (файл скачал) 03.09.2015 15:11
У меня скрипт не работает, причем на двух разных машинах пробовал, выдает
ошибку:800a01ad
невозможно создание объекта контейнером activex v83.comconnector
Ответили: (120)
# Ответить
120. a-novoselov 03.09.2015 16:39
(117) (118) Спасибо, поправил.

(119) Скрипт необходимо запускать на том же сервере, где расположен сервер 1С с установленной компонентой "COM-соединение", при запуске с других машин вряд ли получится корректно настроить права пользователей Windows.
# Ответить
121. rnv_ln (файл скачал) 03.09.2015 21:44
у меня в установке нет данной компоненты! Где её взять-то?
Ответили: (122)
# Ответить
122. a-novoselov 04.09.2015 10:10
(121)
В описании обработки:
Важно: скрипт работает только если на сервере установлен компонент COM-Соединение (по умолчанию не ставится). Чтобы проверить, заходим на сервере 1С в панель управления \ Установка удаление программ \ Сервер 1С Предприятие \ Изменить... Если нужно, добавляем COM-Соединение.
# Ответить
123. rnv_ln (файл скачал) 08.09.2015 12:08
Нет такого там! Скриншот прилагается. Тыкните пальцем, где вы это нашли?!
Ответили: (124)

Прикрепленные файлы:

1c.jpg
# Ответить
124. a-novoselov 08.09.2015 15:35
(123)
Тогда вручную
regsvr32 "C:\Program Files (x86)\1cv8\N_ver\bin\comcntr.dll"
# Ответить
125. rnv_ln (файл скачал) 08.09.2015 15:50
Так я уже делал, все равно выдает ошибку, смотри в приложении
Ответили: (126)

Прикрепленные файлы:

1c2.jpg
# Ответить
126. a-novoselov 08.09.2015 19:48
(125)
Попробуй права на работу с COM-объектами в Windows проверить или запустить от имени Администратора.
# Ответить
127. rnv_ln (файл скачал) 09.09.2015 11:17
Права на DCOM есть, пользователь один Администратор. Та же петрушка.
Ответили: (128)
# Ответить
128. a-novoselov 10.09.2015 11:14
(127)
В Windows 7 и старше даже у администратора по умолчанию не полные права и запускать с полными правами нужно правым кликом мыши, пункт "Запустить от имени Администратора". Так же посмотрите как создать класс DCOM 1C тут:
http://infostart.ru/public/276794/

Или сделайте так:
1. Заходим в Панель управления - Администрирование - Службы компонентов.
2. Переходим к ветке Компьютеры - Мой компьютер - Приложения COM+.
3. В контекстном меню выбираем Создать - Приложение. Откроется Мастер установки приложений COM+.
4. Нажимаем "Далее".
5. Выбираем "Создать новое приложение".
6. Вводим имя "V83COMConnector". Устанавливаем переключатель "Серверное приложение". Нажимаем "Далее".
7. На следующем шаге устанавливаем "Текущий пользователь". Нажимаем "Далее".
8. Нажимаем "Готово".
9. В появившейся ветке V83COMConnector переходим к подветке Компоненты.
10. В контекстном меню выбираем Создать - Компонент. Откроется Мастер установки компонентов COM+.
11. Нажимаем "Далее".
12. Выбираем "Установка новых компонентов".
13. Выбираем файл <каталог 1С>\bin\comcntr.dll.
14. Нажимаем "Далее" - "Готово".
15. Переходим к ветке V83COMConnector.
16. В контекстном меню выбираем "Свойства". В открывшемся окне переходим на вкладку «Безопасность».
17. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку "Применить политику программных ограничений". Устанавливаем Уровень ограничений - "Неограниченный".
18. Нажимаем "ОК".

Класс V83.COMConnector зарегистрирован и может использоваться для подключения к информационным базам.
# Ответить
129. rnv_ln (файл скачал) 11.09.2015 16:28
Теперь по другому ругается!

Прикрепленные файлы:

Сбой.jpg
# Ответить
130. Jenya78 17.09.2015 21:58
Большое спасибо!
Архив SQL бывает может и не подняться...
# Ответить
131. ketr (файл скачал) 25.09.2015 12:20
спасибо! Качнул, COM соединение установил, поставил задачу в шедуллер. В понедельник посмотрим, как отработает
# Ответить
132. ketr (файл скачал) 28.09.2015 08:51
Чет ничего не отработало... В планировщике вот такая инфа в журнале:
27.09.2015 2:00:00 Обработка созданной задачи
27.09.2015 2:00:00 Задача запущена
27.09.2015 2:00:00 Действие запущено
28.09.2015 2:00:00 Запрос на запуск проигнорирован, экземпляр уже выполняется.

В логе (dump_log.txt) только одна строка:
BEGIN 27.09.2015 2:00:00
# Ответить
133. ketr (файл скачал) 28.09.2015 12:16
Запустил сам скрипт - пишет ошибку:
Строка: 61
Символ: 3
Ошибка: Информационная база не зарегистрирована
Код: 80004005
Источник: (null)
# Ответить
134. ketr (файл скачал) 28.09.2015 12:33
Может это из-за того, что у меня 2 кластера? Но эта база на основном кластере (порт 1541)
# Ответить
135. ketr (файл скачал) 28.09.2015 13:41
Блин, точно, это из-за того, что 2 кластера!! Он пытается на кластере 1542 найти базу, которая расположена на кластере 1541 ! Как решить эту проблему? Что дописать / изменить в скрипте?
# Ответить
136. ketr (файл скачал) 28.09.2015 14:19
Судя по всему нужно править строку
Set Cluster = AgentConnection.GetClusters()(0) только не пойму как?
Ответили: (137)
# Ответить
137. a-novoselov 28.09.2015 17:52
(136)
а) Самое простое поставить AgentConnection.GetClusters()(0) на AgentConnection.GetClusters()(1)
б) Добавить в скрипт обход массива кластеров после AgentConnection.GetClusters() и выбор нужного, например, по порту или имени. Но я уже вряд ли подскажу как это сделать и тем более отладить. Насколько я помню Notepad++ поддерживает работу с vbScript.
Ответили: (138)
+ 1 [ ketr; ]
# Ответить
138. ketr (файл скачал) 29.09.2015 09:07
(137) a-novoselov,
Вариант А) работает! Спасибо
# Ответить
139. 1_C 18.12.2015 16:07
Добрый день. Тестирую обработку на тестовой базе, соединился с нескольких рабочих станций. Создал скрипт, запустил через шедулер. Приложения на рабочих станциях отвалились, но соединения в Консоли кластера остались, и не давали начать архивацию:
Активные сеансы и соединения:
компьютер: 1, пользователь: Администратор, сеанс: 7, начат: 18.12.2015 в 16:50:53, приложение: Тонкий клиент;
компьютер: 2, пользователь: Администратор, сеанс: 11, начат: 18.12.2015 в 16:55:43, приложение: Тонкий клиент
Ошибка исключительной блокировки информационной базы.
И так много раз.
Пока руками не удалил соединения, архивация не пошла. Но для ночного архивирования это не айс. Куда копать, подскажите. Или я поторопился, сеансы сами должны были отвалиться через какое-то время?
Ответили: (140)
# Ответить
140. a-novoselov 22.12.2015 18:32
(139)
Да, сеансы по блокировке должны через 5 минут отвалиться. Если этого не происходит, то нужно попробовать руками увеличить время ожидания (sleep) в скрипте после установки блокировки.
# Ответить
141. oops! 20.04.2016 04:53
Вариант для управляемого приложения. Платформа 8.3.7.2027. База - Бухгалтерия Предприятия 3.0, V83COMConnector зарегистрирован.
Для отладки пока гоняю нескомпилированный vbs-скрипт.
1. Были проблемы с созданием пользователя "Робот" - код пришлось подправить, но и этого оказалось недостаточно.
Похоже, что для управления свойствами информационной базы в кластере пользователя с набором прав "Полные права" недостаточно,
видимо всё же нужен пользователь с набором прав "Администратор системы".
2. Теперь WScript затыкается на строке 113 символ 2 с описанием ошибки "Невозможно найти указанный файл".
В 113-ой строке выполняется запуск 1cv8.exe с параметрами. Содержимое переменной "one1CPath" корректное.
Пока не могу понять куда копать.
Буду благодарен за помощь.
Ответили: (142)

Прикрепленные файлы:

80070002.jpg
# Ответить
142. a-novoselov 20.04.2016 09:37
(141) Добрый день.
Пробовали скрипт от имени администратора запустить? та же ошибка?
Ответили: (143)
# Ответить
143. oops! 20.04.2016 14:52
(142) a-novoselov,
да, ошибка та же - создал cmd-скрипт со ком. строкой "wscript.exe BackUp_bp_mega.vbs" и запустил в контексте от имени администратора.
Ругается на эту строку внутри цикла "делать, пока не создастся"
WshShell.Run one1CPath & " " & Paramters & " /UC""" & LockPermissionCode & """ " & LogPath & " " & BackupPath, 0, True

в переменной one1CPath при этом
one1CPath = """C:\Program Files\1cv8\8.3.7.2027\bin\1cv8.exe"""
# Ответить
144. oops! 20.04.2016 15:05
143 +
забыл сказать - ОС Windows 7 SP1 x64 Ultimate, UAC отключен;
сервер 1С:Предприятие - версия для x64;
версия SQL-сервера, думаю, не важна, - на всякий случай - MS SQL Server 2008 R2 x64 Developer Edition.

После выполнения скрипта блокировка начала сеансов на сервере включена,
блокировка регламентных заданий выключена (псиса не установлена).
# Ответить
145. oops! 20.04.2016 15:27
143++
хе-хе, и всё-таки one1CPath была определена не верно! Должно быть для x64 ОС:
one1CPath = """C:\Program Files (x86)\1cv8\8.3.7.2027\bin\1cv8.exe"""

как я это сразу не заметил - ума не приложу! Старею, однако :)
Скрипт заработал!
+ 1 [ a-novoselov; ]
# Ответить
146. oops! 20.04.2016 15:42
143+++ Функция языка "КаталогПрограммы()" на x64 ОС отрабатывает не верно - надо писать в техподдержку!
Ответили: (150)
# Ответить
147. oops! 20.04.2016 16:09
В общем, вместо "КаталогПрограммы()" пока, в качестве обхода, можно через реестр ОС получать путь к модулю COM объекта v8*.application. Вот пример кода (автор Старых Сергей, 2iS IT):
ПутьКИсполняемомуФайлу = "";
    РеестрОС = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\" + ИмяСервера + "\root\default:StdRegProv");
    Если Не ЗначениеЗаполнено(ВерсияПлатформы) Тогда
        СистемнаяИнформация = Новый СистемнаяИнформация;
        ПолнаяВерсияПриложения = СистемнаяИнформация.ВерсияПриложения;
        МассивФрагментов = ОбщийИис.РазбитьСтрокуРазделителемИис(ПолнаяВерсияПриложения);
        ВерсияПлатформы = Справочники.ВерсииПлатформИис["_" + МассивФрагментов[0] + МассивФрагментов[1]];
    КонецЕсли;
    Если ВерсияПлатформы = Справочники.ВерсииПлатформИис._81 Тогда
        КлючCOMСервера = "\Classes\CLSID\{71CF7C7C-964B-49F1-A507-F1618AF0A7ED}\InprocServer32";
    ИначеЕсли ВерсияПлатформы = Справочники.ВерсииПлатформИис._82 Тогда
        КлючCOMСервера = "\Classes\CLSID\{5CD98F13-1050-4b43-84F2-33AD97CFC287}\LocalServer32";
    ИначеЕсли ВерсияПлатформы = Справочники.ВерсииПлатформИис._83 Тогда
        КлючCOMСервера = "\Classes\CLSID\{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}\LocalServer32";
    КонецЕсли;
    ПутьКИсполняемомуФайлу = Null;
    Если ПутьКИсполняемомуФайлу = Null Тогда
        //x86 ОС
        РеестрОС.GetStringValue(, "SOFTWARE" + КлючCOMСервера, "", ПутьКИсполняемомуФайлу);
    КонецЕсли;
    Если ПутьКИсполняемомуФайлу = Null Тогда
        //x64 ОС
        РеестрОС.GetStringValue(, "SOFTWARE\Wow6432Node" + КлючCOMСервера, "", ПутьКИсполняемомуФайлу);
    КонецЕсли;
    Если ПутьКИсполняемомуФайлу = Null Тогда
        ОписаниеОшибки = "Не удалось определить путь к исполняемому файлу клиента на сервере " + ИмяСервера;
        ВызватьИсключение ОписаниеОшибки;
    КонецЕсли;
    Результат = ПутьКИсполняемомуФайлу;
...Показать Скрыть
+ 1 [ a-novoselov; ]
# Ответить
148. oops! 20.04.2016 20:11
Окончательно добавляем в обработку такую функцию:
// Поучает путь к клиентскому приложению 1cv8.exe
Функция ПолучитьИмяИсполняемогоФайла()
	
	ПутьКИсполняемомуФайлу = "";
	РеестрОС = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv");
	
	СистемнаяИнформация = Новый СистемнаяИнформация;
	ВерсияПлатформы = Лев(СистемнаяИнформация.ВерсияПриложения,3);
	
	Если ВерсияПлатформы = "8.1" Тогда
		КлючCOMСервера = "\Classes\CLSID\{71CF7C7C-964B-49F1-A507-F1618AF0A7ED}\InprocServer32";
	ИначеЕсли ВерсияПлатформы = "8.2" Тогда
		КлючCOMСервера = "\Classes\CLSID\{5CD98F13-1050-4b43-84F2-33AD97CFC287}\LocalServer32";
	ИначеЕсли ВерсияПлатформы = "8.3" Тогда
		КлючCOMСервера = "\Classes\CLSID\{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}\LocalServer32";
	КонецЕсли;
	
	ПутьКИсполняемомуФайлу = Null;
	
	Если ПутьКИсполняемомуФайлу = Null Тогда
		//x86 ОС
		РеестрОС.GetStringValue(, "SOFTWARE" + КлючCOMСервера, "", ПутьКИсполняемомуФайлу);
	КонецЕсли;
	Если ПутьКИсполняемомуФайлу = Null Тогда
		//x64 ОС
		РеестрОС.GetStringValue(, "SOFTWARE\Wow6432Node" + КлючCOMСервера, "", ПутьКИсполняемомуФайлу);
	КонецЕсли;
	Если ПутьКИсполняемомуФайлу = Null Тогда
		ОписаниеОшибки = "Не удалось определить путь к исполняемому файлу клиента на сервере " + ИмяКомпьютера();
		ВызватьИсключение ОписаниеОшибки;
	КонецЕсли;
	Результат = ПутьКИсполняемомуФайлу;
	Возврат Результат;
	
КонецФункции
...Показать Скрыть


И переписываем строку получения пути к исполняемому файлу, вместо
ИмяИсполняемогоФайла = ПолучитьИмяФайла(КаталогПрограммы(), "1cv8.exe");

добавляем
ИмяИсполняемогоФайла = ПолучитьИмяИсполняемогоФайла();


В этом случае у нас всегда будет определён путь именно к клиентскому приложению.
Функция глобального контекста КаталогПрограммы() определяет место расположения запущенного приложения rphost.exe, и, в нашем случае, никуда не годится!
# Ответить
149. oops! 20.04.2016 21:37
с учетом необходимости под платформой 8.3 пользователя с ролью "АдминистраторСистемы" функцию "СоздатьПользователя()" переписываем так:
// Создание пользователя
//
Функция СоздатьПользователя(Имя, Пароль)
	
	УстановитьИнтерфейс = Истина;
	УстановитьРоль = Истина;
	
	Если Метаданные.Интерфейсы.Количество() = 0 Тогда
		УстановитьИнтерфейс = Ложь;
	ИначеЕсли Метаданные.Интерфейсы.Найти("Общий") <> Неопределено Тогда
		ВыбранныйИнтерфейс = Метаданные.Интерфейсы.Общий;
	Иначе
		ВыбранныйИнтерфейс = Метаданные.Интерфейсы[0];
	КонецЕсли;
	
	// Проверка на ограничения шаблона
	НайденнаяРоль = Неопределено;
	Если Метаданные.Роли.Количество() = 0 Тогда
		УстановитьРоль = Ложь;
	ИначеЕсли НЕ (Метаданные.Роли.Найти("АдминистраторСистемы") = Неопределено) Тогда
		НайденнаяРоль = Метаданные.Роли.Найти("АдминистраторСистемы");
	ИначеЕсли НЕ (Метаданные.Роли.Найти("ПолныеПрава") = Неопределено) Тогда
		НайденнаяРоль = Метаданные.Роли.Найти("ПолныеПрава");
	Иначе
		Сообщить("Нет возможности создать пользователя """ + Имя + """. В конфигурации отсутствует требуемая роль");
		Возврат Ложь;
	КонецЕсли;
	
	Попытка
		ПользовательНайден = Ложь;
		ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Имя);
		Если ПользовательИБ = Неопределено Тогда
			ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
		Иначе
			ПользовательНайден = Истина;
		КонецЕсли;
		ПользовательИБ.АутентификацияОС 		 = Ложь;
		ПользовательИБ.АутентификацияСтандартная = Истина;
		ПользовательИБ.Имя 					     = Имя;
		ПользовательИБ.ПолноеИмя			     = Имя;
		ПользовательИБ.Пароль 				     = Пароль;
		ПользовательИБ.ЗапрещеноИзменятьПароль   = Истина;
		ПользовательИБ.ПоказыватьВСпискеВыбора   = Ложь;
		Если УстановитьИнтерфейс Тогда
			ПользовательИБ.ОсновнойИнтерфейс	 = ВыбранныйИнтерфейс;
		КонецЕсли;
		Если УстановитьРоль Тогда
			ПользовательИБ.Роли.Очистить();
			ПользовательИБ.Роли.Добавить(НайденнаяРоль);      
			//ПользовательИБ.Роли.Добавить(Метаданные.Роли.ПолныеПрава);      
		КонецЕсли;
		ПользовательИБ.Записать();
		
		Если Метаданные.Справочники.Найти("Пользователи") <> Неопределено Тогда
			ТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию(Имя);
			Если Не ЗначениеЗаполнено(ТекущийПользователь) Тогда
				ТекущийПользователь = Справочники.Пользователи.СоздатьЭлемент();
				//ТекущийПользователь.Код = Имя;
				ТекущийПользователь.Наименование = Имя;
				ТекущийПользователь.Записать();
			КонецЕсли;
			
			Попытка
				// отключаем вывод панели функций при запуске программы, потому как права полные
				Движение = РегистрыСведений.НастройкиПользователей.СоздатьМенеджерЗаписи();
				Движение.Пользователь = ТекущийПользователь.Ссылка;
				Движение.Настройка 	  = ПланыВидовХарактеристик.НастройкиПользователей.ОткрыватьПриЗапускеПанельФункций;
				Движение.Значение	  = Ложь;
				Движение.Записать();
			Исключение
			КонецПопытки;
			
			Попытка
				// включаем учет по всем организациям, чтобы избежать ошибок при запуске
				Движение = РегистрыСведений.НастройкиПользователей.СоздатьМенеджерЗаписи();
				Движение.Пользователь = ТекущийПользователь.Ссылка;
				Движение.Настройка 	  = ПланыВидовХарактеристик.НастройкиПользователей.УчетПоВсемОрганизациям;
				Движение.Значение	  = Истина;
				Движение.Записать();
			Исключение
			КонецПопытки;
		КонецЕсли;
		
		Если ПользовательНайден Тогда
			Сообщить("Пользователь " + Имя + " найден для выгрузки информационной базы");
		Иначе
			Сообщить("Создан пользователь " + Имя + " для выгрузки информационной базы");
		КонецЕсли;
		
		Возврат Истина;
		
	Исключение
		Сообщить("Не удалось создать пользователя " + Имя + " для выгрузки информационной базы. " + ОписаниеОшибки());
		
		Возврат Ложь;
	КонецПопытки;
	
КонецФункции
...Показать Скрыть
+ 1 [ a-novoselov; ]
# Ответить
150. asved.ru 14.05.2016 13:46
(146) oops!, а нефиг получать каталог программы на сервере, если оперировать им собираетесь на клиенте. Учите матчасть.
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл