К вопросу о регламентном задании – восстановлении последовательности
В связи с тем, что, когда передо мной стояла подобная задача, материала в интернете я нашел очень мало. Попытаюсь немного компенсировать этот пробел.
Заранее предупреждаю – информация для начинающих разработчиков 🙂
- Описание
- Подробнее
Описание
К вопросу о регламентном задании – восстановлении последовательности.
В связи с тем, что, когда передо мной стояла подобная задача, материала в интернете я нашел очень мало. Попытаюсь немного компенсировать этот пробел.
Заранее предупреждаю – информация для начинающих разработчиков 🙂
1. Необходимо создать в конфигурации модуль «ИмяМодуля», со флажками, как показано на рисунке.
2. Создадим процедуру, которая будет восстанавливать последовательность и писать сообщение в лог на диске.
Процедура РоботВосстановлениеПоследовательностей () Экспорт
глТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию("Сис. админ");
ПолныеПрава.УстановитьПараметрыСеанса();
Док = Новый ТекстовыйДокумент;
Док.Вывод = ИспользованиеВывода.Разрешить;
Док.ДобавитьСтроку("Вход в обработку: Восстановление последовательностей: " + ТекущаяДата());
Док.ДобавитьСтроку("Текущее состояние: ");
Док.ДобавитьСтроку("Точка актуальности: " + Последовательности.ПартионныйУчет.ПолучитьГраницу().Дата);
Док.ДобавитьСтроку(Последовательности.ПартионныйУчет.ПолучитьГраницу().Ссылка);
Попытка
Последовательности.Восстановить();
Док.ДобавитьСтроку("Обновлено состояние:");
Док.ДобавитьСтроку("Точка актуальности: " + Последовательности.ПартионныйУчет.ПолучитьГраницу().Дата);
Док.ДобавитьСтроку("Последний правильный документ: " + Последовательности.ПартионныйУчет.ПолучитьГраницу().Ссылка);
Исключение
Док.ДобавитьСтроку("Зафиксирована ошибка: " + ОписаниеОшибки() + Символы.ПС + "Возможно, в базе имеются работающие пользователи");
Док.ДобавитьСтроку("--------------- users -------------------");
МассивС = ПолучитьСоединенияИнформационнойБазы();
Для Каждого тмп Из МассивС Цикл
Док.ДобавитьСтроку(Строка(тмп.ИмяКомпьютера) + " | " +
Строка(тмп.ИмяПриложения) + " | " +
Строка(тмп.НачалоСеанса) + " | " +
Строка(тмп.Пользователь.Имя)
);
КонецЦикла;
КонецПопытки;
Док.ДобавитьСтроку("--------------------------------------------------");
Док.Записать("d:\sms_.txt", "windows-1251");
КонецПроцедуры
Процедура очень проста, большая ее часть занимает текст формирования лога. При желании можно подключить блок выкидывания пользователей из программы, пример есть на сайте 🙂
3. Создаем в конфигурации новое регламентное задание и настраиваем его, в т.ч. указываем расписание выполнения данного регламентного задания.
4. При желании можно настроить отправку сообщения на почту администратору. Я это сделал на базе AutoMate, код скрипта очень прост (файл отправляется в виде вложения, сам скрипт собирается из шаблонов в течении минуты). В результате на почту будем получать подобные файлы:
Вход в обработку: Восстановление последовательностей: 11.01.2009 4:00:07
Текущее состояние:
Точка актуальности: 01.01.2009 08:07:50
Реализация товаров и услуг 1/26077 от 01.01.2009 08:07:50
Обновлено состояние:
Точка актуальности: 10.01.2009 12:09:50
Последний правильный документ: Реализация товаров и услуг 1/26177 от 10.01.2009 12:09:50
Обновлено: По поводу прав пользователя USR1CV81 нашел интересную информацию. (Может кому и пригодиться).
Безопасность каталога данных приложения
В каталоге данных приложения при установке кластера серверов 1С:Предприятия 8.1 создается специальный каталог, предназначенный только для файлов кластера серверов 1С:Предприятия:
Пользователю USR1CV81, от имени которого стартует по умолчанию агент сервера, назначаются полные права на этот каталог. Другим пользователям доступ в этот каталог запрещается. Запуск менеджера кластера выполняет агент сервера от имени того же самого пользователя, от которого запущен он сам.
Пользователь USR1CV81 обладает только одним правом – «Log on as service».
Запуск рабочих процессов также осуществляет агент сервера. По умолчанию рабочий процесс запускается от имени того пользователя, от которого запущен агент сервера. Однако предусмотрена возможность создания дополнительного пользователя операционной системы, от имени которого стартуют только рабочие процессы. Это позволяет предотвратить непосредственный доступ программного кода конфигураций к служебным данным.
Для того, чтобы рабочий процесс запускался не от имени того же пользователя, что и агент сервера, в каталоге данных приложений, относящемся к пользователю агента сервера, может быть размещен файл swpuser.ini следующего формата:
user=<имя пользователя операционной системы>
password=<пароль пользователя операционной системы>
Например, файл swpuser.ini может содержать следующие данные:
user=\\server_comp\uuuu
password=1234567
В этом случае рабочие процессы, запускаемые на данном рабочем сервере, будут запускаться от имени заданного пользователя (\\server_comp\uuuu), зарегистрированного в операционной системе.